summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2022-09-26 11:49:46 -0400
committerChet Ramey <chet.ramey@case.edu>2022-09-26 11:49:46 -0400
commit74091dd4e8086db518b30df7f222691524469998 (patch)
treeebe89d8f0ed44b7f79aa3c759d3f85e15996eaee
parent9439ce094c9aa7557a9d53ac7b412a23aa66e36b (diff)
downloadbash-74091dd4e8086db518b30df7f222691524469998.tar.gz
bash-5.2 distribution sources and documentationbash-5.2
-rw-r--r--CHANGES554
-rw-r--r--COMPAT54
-rw-r--r--CWRU/changelog11250
-rw-r--r--[-rwxr-xr-x]CWRU/misc/bison0
-rw-r--r--[l---------]ChangeLog3953
-rw-r--r--INSTALL120
-rw-r--r--MANIFEST81
-rw-r--r--Makefile.in88
-rw-r--r--NEWS175
-rw-r--r--POSIX130
-rw-r--r--RBASH11
-rw-r--r--README13
-rw-r--r--aclocal.m4891
-rw-r--r--alias.c2
-rw-r--r--array.c75
-rw-r--r--array.h67
-rw-r--r--array2.c1374
-rw-r--r--arrayfunc.c383
-rw-r--r--arrayfunc.h54
-rw-r--r--assoc.c26
-rw-r--r--assoc.h3
-rw-r--r--bashansi.h5
-rw-r--r--bashhist.c15
-rw-r--r--bashjmp.h3
-rw-r--r--bashline.c333
-rw-r--r--bashline.h2
-rw-r--r--builtins.h3
-rw-r--r--builtins/Makefile.in50
-rw-r--r--builtins/bashgetopt.c17
-rw-r--r--builtins/bashgetopt.h3
-rw-r--r--builtins/bind.def4
-rw-r--r--builtins/cd.def4
-rw-r--r--builtins/command.def4
-rw-r--r--builtins/common.c128
-rw-r--r--builtins/common.h46
-rw-r--r--builtins/complete.def12
-rw-r--r--builtins/declare.def946
-rw-r--r--builtins/enable.def54
-rw-r--r--builtins/evalstring.c156
-rw-r--r--builtins/exec.def13
-rw-r--r--builtins/exit.def4
-rw-r--r--builtins/fc.def7
-rw-r--r--builtins/gen-helpfiles.c3
-rw-r--r--builtins/hash.def6
-rw-r--r--builtins/help.def5
-rw-r--r--builtins/history.def46
-rw-r--r--builtins/mapfile.def42
-rw-r--r--builtins/mkbuiltins.c45
-rw-r--r--builtins/printf.def125
-rw-r--r--builtins/read.def192
-rw-r--r--builtins/reserved.def12
-rw-r--r--builtins/set.def34
-rw-r--r--builtins/setattr.def21
-rw-r--r--builtins/shopt.def47
-rw-r--r--builtins/suspend.def21
-rw-r--r--builtins/trap.def7
-rw-r--r--builtins/ulimit.def13
-rw-r--r--builtins/wait.def36
-rw-r--r--command.h14
-rw-r--r--config-bot.h4
-rw-r--r--config-top.h10
-rw-r--r--config.h.in55
-rwxr-xr-xconfigure13389
-rw-r--r--configure.ac242
-rw-r--r--doc/FAQ6
-rw-r--r--doc/Makefile.in30
-rw-r--r--doc/article.txt4
-rw-r--r--doc/bash.03105
-rw-r--r--doc/bash.1909
-rw-r--r--doc/bash.html956
-rw-r--r--doc/bash.info2330
-rw-r--r--doc/bash.pdfbin381560 -> 401989 bytes
-rw-r--r--doc/bash.ps15370
-rw-r--r--doc/bashbug.02
-rw-r--r--doc/bashbug.ps4
-rw-r--r--doc/bashref.dvibin789640 -> 823680 bytes
-rw-r--r--doc/bashref.html5629
-rw-r--r--doc/bashref.info2329
-rw-r--r--doc/bashref.pdfbin769844 -> 795771 bytes
-rw-r--r--doc/bashref.ps16842
-rw-r--r--doc/bashref.texi1381
-rw-r--r--doc/builtins.01723
-rw-r--r--doc/builtins.110
-rw-r--r--doc/builtins.ps4781
-rw-r--r--doc/rbash.07
-rw-r--r--doc/rbash.12
-rw-r--r--doc/rbash.ps10
-rw-r--r--doc/version.texi12
-rw-r--r--error.c28
-rw-r--r--error.h9
-rw-r--r--eval.c11
-rw-r--r--examples/functions/autoload.v44
-rw-r--r--examples/functions/csh-compat2
-rw-r--r--examples/loadables/Makefile.in25
-rw-r--r--examples/loadables/Makefile.inc.in9
-rw-r--r--examples/loadables/Makefile.sample.in44
-rw-r--r--examples/loadables/README14
-rw-r--r--examples/loadables/accept.c41
-rw-r--r--examples/loadables/cat.c26
-rw-r--r--examples/loadables/csv.c14
-rw-r--r--examples/loadables/cut.c8
-rw-r--r--examples/loadables/dsv.c300
-rw-r--r--examples/loadables/fdflags.c4
-rw-r--r--examples/loadables/getconf.c1163
-rw-r--r--examples/loadables/getconf.h136
-rw-r--r--examples/loadables/head.c3
-rw-r--r--examples/loadables/mkdir.c2
-rw-r--r--examples/loadables/perl/bperl.c17
-rw-r--r--examples/loadables/perl/iperl.c16
-rw-r--r--examples/loadables/print.c3
-rw-r--r--examples/loadables/realpath.c104
-rw-r--r--examples/loadables/rm.c6
-rw-r--r--examples/loadables/seq.c12
-rw-r--r--examples/loadables/sleep.c98
-rw-r--r--examples/loadables/stat.c78
-rw-r--r--examples/loadables/tee.c7
-rw-r--r--examples/loadables/tty.c3
-rw-r--r--[-rwxr-xr-x]examples/misc/aliasconv.bash0
-rw-r--r--[-rwxr-xr-x]examples/misc/aliasconv.sh0
-rw-r--r--[-rwxr-xr-x]examples/misc/cshtobash0
-rw-r--r--examples/scripts/bcalc104
-rw-r--r--[-rwxr-xr-x]examples/scripts/inpath0
-rw-r--r--[-rwxr-xr-x]examples/scripts/shprompt0
-rw-r--r--[-rwxr-xr-x]examples/scripts/xterm_title0
-rw-r--r--[-rwxr-xr-x]examples/scripts/zprintf0
-rw-r--r--examples/shellmath/LICENSE677
-rw-r--r--examples/shellmath/README.md166
-rw-r--r--examples/shellmath/assert.sh85
-rw-r--r--examples/shellmath/faster_e_demo.sh68
-rw-r--r--examples/shellmath/image.pngbin0 -> 48779 bytes
-rw-r--r--examples/shellmath/runTests.sh124
-rw-r--r--examples/shellmath/shellmath.sh1068
-rw-r--r--examples/shellmath/slower_e_demo.sh55
-rw-r--r--examples/shellmath/testCases.in142
-rw-r--r--examples/shellmath/timingData.txt42
-rw-r--r--execute_cmd.c315
-rw-r--r--expr.c48
-rw-r--r--externs.h18
-rw-r--r--findcmd.c60
-rw-r--r--flags.c2
-rw-r--r--general.c11
-rw-r--r--general.h3
-rw-r--r--hashcmd.c2
-rw-r--r--include/chartypes.h26
-rw-r--r--include/posixdir.h2
-rw-r--r--include/posixtime.h41
-rw-r--r--include/shmbchar.h2
-rw-r--r--include/shmbutil.h14
-rw-r--r--include/stdc.h2
-rw-r--r--include/timer.h64
-rw-r--r--include/typemax.h20
-rw-r--r--input.c2
-rw-r--r--jobs.c119
-rw-r--r--jobs.h8
-rw-r--r--lib/glob/Makefile.in3
-rw-r--r--lib/glob/glob.c153
-rw-r--r--lib/glob/glob.h3
-rw-r--r--lib/glob/sm_loop.c55
-rw-r--r--lib/glob/smatch.c23
-rw-r--r--lib/glob/strmatch.h3
-rw-r--r--lib/intl/VERSION2
-rw-r--r--[-rwxr-xr-x]lib/intl/ref-add.sin0
-rw-r--r--[-rwxr-xr-x]lib/intl/ref-del.sin0
-rw-r--r--lib/malloc/Makefile.in5
-rw-r--r--lib/malloc/imalloc.h5
-rw-r--r--lib/malloc/malloc.c216
-rw-r--r--lib/malloc/mstats.h4
-rw-r--r--lib/readline/Makefile.in3
-rw-r--r--lib/readline/bind.c169
-rw-r--r--lib/readline/callback.c22
-rw-r--r--lib/readline/chardefs.h31
-rw-r--r--lib/readline/colors.c23
-rw-r--r--lib/readline/compat.c22
-rw-r--r--lib/readline/complete.c96
-rw-r--r--lib/readline/display.c132
-rw-r--r--lib/readline/doc/Makefile26
-rw-r--r--lib/readline/doc/history.texi2
-rw-r--r--lib/readline/doc/hstech.texi2
-rw-r--r--lib/readline/doc/hsuser.texi22
-rw-r--r--lib/readline/doc/rlman.texi2
-rw-r--r--lib/readline/doc/rltech.texi96
-rw-r--r--lib/readline/doc/rluser.texi110
-rw-r--r--lib/readline/doc/rluserman.texi2
-rw-r--r--lib/readline/doc/version.texi13
-rw-r--r--lib/readline/examples/excallback.c4
-rw-r--r--lib/readline/examples/histexamp.c3
-rw-r--r--lib/readline/examples/rl-callbacktest.c27
-rw-r--r--lib/readline/examples/rl.c8
-rw-r--r--lib/readline/examples/rlcat.c8
-rw-r--r--lib/readline/examples/rltest.c8
-rw-r--r--lib/readline/funmap.c6
-rw-r--r--lib/readline/histexpand.c45
-rw-r--r--lib/readline/histfile.c14
-rw-r--r--lib/readline/histlib.h11
-rw-r--r--lib/readline/history.c13
-rw-r--r--lib/readline/history.h79
-rw-r--r--lib/readline/histsearch.c6
-rw-r--r--lib/readline/input.c321
-rw-r--r--lib/readline/isearch.c25
-rw-r--r--lib/readline/keymaps.h18
-rw-r--r--lib/readline/kill.c46
-rw-r--r--lib/readline/macro.c2
-rw-r--r--lib/readline/mbutil.c36
-rw-r--r--lib/readline/misc.c68
-rw-r--r--lib/readline/nls.c96
-rw-r--r--lib/readline/parens.c8
-rw-r--r--lib/readline/posixdir.h2
-rw-r--r--lib/readline/posixtime.h84
-rw-r--r--lib/readline/readline.c119
-rw-r--r--lib/readline/readline.h603
-rw-r--r--lib/readline/rldefs.h8
-rw-r--r--lib/readline/rlmbutil.h38
-rw-r--r--lib/readline/rlprivate.h326
-rw-r--r--lib/readline/rlshell.h12
-rw-r--r--lib/readline/rltty.c40
-rw-r--r--lib/readline/rltypedefs.h56
-rw-r--r--lib/readline/search.c90
-rw-r--r--lib/readline/shell.c4
-rw-r--r--lib/readline/signals.c73
-rw-r--r--lib/readline/terminal.c110
-rw-r--r--lib/readline/text.c38
-rw-r--r--lib/readline/tilde.h22
-rw-r--r--lib/readline/undo.c6
-rw-r--r--lib/readline/util.c7
-rw-r--r--lib/readline/vi_mode.c123
-rw-r--r--lib/readline/xmalloc.h8
-rw-r--r--lib/sh/Makefile.in28
-rw-r--r--lib/sh/casemod.c10
-rw-r--r--lib/sh/fmtullong.c2
-rw-r--r--lib/sh/input_avail.c2
-rw-r--r--lib/sh/oslib.c14
-rw-r--r--lib/sh/setlinebuf.c27
-rw-r--r--lib/sh/shmatch.c17
-rw-r--r--lib/sh/shquote.c7
-rw-r--r--lib/sh/snprintf.c20
-rw-r--r--lib/sh/strdup.c1
-rw-r--r--lib/sh/strftime.c9
-rw-r--r--lib/sh/strtoimax.c10
-rw-r--r--lib/sh/strtol.c2
-rw-r--r--lib/sh/strtoll.c4
-rw-r--r--lib/sh/strtoull.c4
-rw-r--r--lib/sh/strtoumax.c10
-rw-r--r--lib/sh/strvis.c154
-rw-r--r--lib/sh/timers.c262
-rw-r--r--lib/sh/unicode.c2
-rw-r--r--lib/sh/winsize.c10
-rw-r--r--lib/sh/zgetline.c3
-rw-r--r--lib/sh/zmapfd.c2
-rw-r--r--lib/sh/zread.c6
-rw-r--r--lib/termcap/termcap.c7
-rw-r--r--lib/tilde/Makefile.in5
-rw-r--r--lib/tilde/tilde.h22
-rw-r--r--locale.c18
-rw-r--r--m4/gettext.m410
-rw-r--r--m4/strtoimax.m435
-rw-r--r--m4/threadlib.m46
-rw-r--r--make_cmd.c31
-rw-r--r--nojobs.c11
-rw-r--r--parse.y1281
-rw-r--r--parser-built186
-rw-r--r--parser.h6
-rw-r--r--patchlevel.h4
-rw-r--r--pathexp.c57
-rw-r--r--pathexp.h7
-rw-r--r--pcomplete.c11
-rw-r--r--pcomplib.c4
-rw-r--r--po/af.gmobin1321 -> 1280 bytes
-rw-r--r--po/af.po818
-rw-r--r--po/bash.pot813
-rw-r--r--po/bg.gmobin247873 -> 248812 bytes
-rw-r--r--po/bg.po845
-rw-r--r--po/ca.gmobin143614 -> 183474 bytes
-rw-r--r--po/ca.po1861
-rw-r--r--po/cs.gmobin184535 -> 185301 bytes
-rw-r--r--po/cs.po845
-rw-r--r--po/da.gmobin72064 -> 70624 bytes
-rw-r--r--po/da.po823
-rw-r--r--po/de.gmobin94744 -> 125828 bytes
-rw-r--r--po/de.po1258
-rw-r--r--po/el.gmobin74685 -> 83800 bytes
-rw-r--r--po/el.po1179
-rw-r--r--po/en@boldquot.gmobin173562 -> 164675 bytes
-rw-r--r--po/en@boldquot.po830
-rw-r--r--po/en@quot.gmobin171914 -> 163043 bytes
-rw-r--r--po/en@quot.po830
-rw-r--r--po/eo.gmobin170966 -> 162418 bytes
-rw-r--r--po/eo.po1205
-rw-r--r--po/es.gmobin183210 -> 183966 bytes
-rw-r--r--po/es.po851
-rw-r--r--po/et.gmobin12197 -> 12156 bytes
-rw-r--r--po/et.po819
-rw-r--r--po/fi.gmobin74465 -> 73116 bytes
-rw-r--r--po/fi.po823
-rw-r--r--po/fr.gmobin189158 -> 190057 bytes
-rw-r--r--po/fr.po913
-rw-r--r--po/ga.gmobin117387 -> 115689 bytes
-rw-r--r--po/ga.po825
-rw-r--r--po/gl.gmobin55254 -> 53798 bytes
-rw-r--r--po/gl.po824
-rw-r--r--po/hr.gmobin177664 -> 178369 bytes
-rw-r--r--po/hr.po929
-rw-r--r--po/hu.gmobin161293 -> 152745 bytes
-rw-r--r--po/hu.po827
-rw-r--r--po/id.gmobin87778 -> 98266 bytes
-rw-r--r--po/id.po1028
-rw-r--r--po/it.gmobin85368 -> 83883 bytes
-rw-r--r--po/it.po824
-rw-r--r--po/ja.gmobin116233 -> 114809 bytes
-rw-r--r--po/ja.po831
-rw-r--r--po/ko.gmobin52646 -> 185602 bytes
-rw-r--r--po/ko.po3320
-rw-r--r--po/lt.gmobin28987 -> 28770 bytes
-rw-r--r--po/lt.po821
-rw-r--r--po/nb.gmobin152862 -> 172246 bytes
-rw-r--r--po/nb.po1780
-rw-r--r--po/nl.gmobin180525 -> 181276 bytes
-rw-r--r--po/nl.po861
-rw-r--r--po/pl.gmobin183466 -> 184164 bytes
-rw-r--r--po/pl.po842
-rw-r--r--po/pt.gmobin179490 -> 170400 bytes
-rw-r--r--po/pt.po1932
-rw-r--r--po/pt_BR.gmobin182906 -> 173420 bytes
-rw-r--r--po/pt_BR.po2579
-rw-r--r--po/ro.gmobin13361 -> 190030 bytes
-rw-r--r--po/ro.po6911
-rw-r--r--po/ru.gmobin130820 -> 128229 bytes
-rw-r--r--po/ru.po3579
-rw-r--r--po/sk.gmobin84939 -> 83429 bytes
-rw-r--r--po/sk.po824
-rw-r--r--po/sl.gmobin82089 -> 80665 bytes
-rw-r--r--po/sl.po824
-rw-r--r--po/sr.gmobin231699 -> 232614 bytes
-rw-r--r--po/sr.po843
-rw-r--r--po/sv.gmobin176238 -> 176963 bytes
-rw-r--r--po/sv.po850
-rw-r--r--po/tr.gmobin126804 -> 130291 bytes
-rw-r--r--po/tr.po2521
-rw-r--r--po/uk.gmobin236260 -> 237263 bytes
-rw-r--r--po/uk.po844
-rw-r--r--po/vi.gmobin138318 -> 133752 bytes
-rw-r--r--po/vi.po826
-rw-r--r--po/zh_CN.gmobin149832 -> 170166 bytes
-rw-r--r--po/zh_CN.po3201
-rw-r--r--po/zh_TW.gmobin152061 -> 168812 bytes
-rw-r--r--po/zh_TW.po1311
-rw-r--r--print_cmd.c85
-rw-r--r--quit.h8
-rw-r--r--redir.c55
-rw-r--r--redir.h5
-rw-r--r--shell.c37
-rw-r--r--shell.h21
-rw-r--r--sig.c2
-rw-r--r--sig.h12
-rw-r--r--siglist.c3
-rw-r--r--stringlib.c20
-rw-r--r--subst.c1439
-rw-r--r--subst.h14
-rw-r--r--support/Makefile.in10
-rw-r--r--support/bashbug.sh2
-rw-r--r--support/bashbug.sh.in10
-rw-r--r--support/bashversion.c2
-rw-r--r--[-rwxr-xr-x]support/config.guess1272
-rw-r--r--[-rwxr-xr-x]support/config.sub111
-rwxr-xr-xsupport/shobj-conf12
-rw-r--r--support/signames.c6
-rw-r--r--test.c42
-rw-r--r--test.h5
-rw-r--r--tests/alias.right3
-rw-r--r--tests/alias.tests9
-rw-r--r--tests/alias6.sub13
-rw-r--r--tests/arith.right4
-rw-r--r--tests/arith.tests4
-rw-r--r--[-rwxr-xr-x]tests/array-at-star0
-rw-r--r--tests/array.right60
-rw-r--r--tests/array.tests2
-rw-r--r--tests/array15.sub15
-rw-r--r--tests/array27.sub8
-rw-r--r--tests/array29.sub86
-rw-r--r--tests/array30.sub46
-rw-r--r--tests/assoc.right184
-rw-r--r--tests/assoc.tests24
-rw-r--r--tests/assoc11.sub2
-rw-r--r--tests/assoc12.sub74
-rw-r--r--tests/assoc13.sub44
-rw-r--r--tests/assoc14.sub35
-rw-r--r--tests/assoc15.sub92
-rw-r--r--tests/assoc16.sub56
-rw-r--r--tests/assoc17.sub58
-rw-r--r--tests/assoc18.sub59
-rw-r--r--tests/assoc9.sub29
-rw-r--r--tests/builtins.right13
-rw-r--r--tests/builtins.tests4
-rw-r--r--tests/builtins5.sub11
-rw-r--r--tests/case.right1
-rw-r--r--tests/case.tests4
-rw-r--r--tests/complete.right44
-rw-r--r--tests/comsub-eof.right18
-rw-r--r--tests/comsub-eof0.sub2
-rw-r--r--tests/comsub-eof5.sub6
-rw-r--r--tests/comsub-posix.right28
-rw-r--r--tests/comsub-posix.tests29
-rw-r--r--tests/comsub-posix1.sub2
-rw-r--r--tests/comsub-posix5.sub70
-rw-r--r--tests/comsub-posix6.sub43
-rw-r--r--tests/comsub.right22
-rw-r--r--tests/comsub.tests9
-rw-r--r--tests/comsub5.sub51
-rw-r--r--tests/comsub6.sub40
-rw-r--r--tests/cond.right8
-rw-r--r--tests/cond.tests18
-rw-r--r--tests/cprint.right2
-rw-r--r--[-rwxr-xr-x]tests/dollar-at-star19
-rw-r--r--tests/dollar-at-star10.sub66
-rw-r--r--tests/dollar-at-star11.sub80
-rw-r--r--tests/dollar.right67
-rw-r--r--tests/dynvar.tests26
-rw-r--r--tests/errors.right170
-rw-r--r--tests/errors.tests12
-rw-r--r--tests/errors7.sub2
-rw-r--r--tests/errors9.sub14
-rw-r--r--tests/exec.right41
-rw-r--r--tests/exec14.sub17
-rw-r--r--tests/exec3.sub33
-rw-r--r--tests/exp.right15
-rw-r--r--tests/exp.tests1
-rw-r--r--tests/exp13.sub34
-rw-r--r--tests/exp8.sub3
-rw-r--r--tests/exportfunc.right2
-rw-r--r--tests/exportfunc.tests10
-rw-r--r--tests/extglob.right76
-rw-r--r--tests/extglob.tests6
-rw-r--r--tests/extglob2.sub26
-rw-r--r--tests/extglob6.sub43
-rw-r--r--tests/extglob7.sub97
-rw-r--r--tests/func.tests6
-rw-r--r--tests/getopts10.sub4
-rw-r--r--tests/glob.right6
-rw-r--r--tests/glob.tests1
-rw-r--r--tests/glob10.sub32
-rw-r--r--tests/glob2.sub8
-rw-r--r--tests/glob5.sub2
-rw-r--r--tests/glob6.sub1
-rw-r--r--tests/heredoc.right37
-rw-r--r--tests/heredoc.tests7
-rw-r--r--tests/heredoc6.sub50
-rw-r--r--tests/heredoc7.sub29
-rw-r--r--tests/herestr.tests6
-rw-r--r--tests/history.right37
-rw-r--r--tests/history.tests1
-rw-r--r--tests/history6.sub55
-rw-r--r--tests/intl.tests2
-rw-r--r--tests/intl2.sub22
-rw-r--r--tests/jobs.right2
-rw-r--r--tests/jobs4.sub2
-rw-r--r--tests/jobs5.sub10
-rw-r--r--tests/jobs7.sub2
-rw-r--r--tests/lastpipe.right2
-rw-r--r--tests/lastpipe.tests1
-rw-r--r--tests/lastpipe3.sub11
-rw-r--r--tests/mapfile.right1
-rw-r--r--tests/mapfile.tests7
-rw-r--r--[-rwxr-xr-x]tests/misc/run-r2.sh0
-rw-r--r--[-rwxr-xr-x]tests/misc/sigint-1.sh0
-rw-r--r--[-rwxr-xr-x]tests/misc/sigint-2.sh0
-rw-r--r--[-rwxr-xr-x]tests/misc/sigint-3.sh0
-rw-r--r--[-rwxr-xr-x]tests/misc/sigint-4.sh0
-rw-r--r--tests/nameref.right75
-rw-r--r--tests/nameref15.sub10
-rw-r--r--tests/nameref18.sub16
-rw-r--r--tests/nameref19.sub9
-rw-r--r--tests/nameref22.sub97
-rw-r--r--tests/nameref23.sub82
-rw-r--r--tests/new-exp.right74
-rw-r--r--tests/new-exp.tests4
-rw-r--r--tests/new-exp10.sub7
-rw-r--r--tests/new-exp14.sub19
-rw-r--r--tests/new-exp16.sub120
-rw-r--r--tests/nquote.right16
-rw-r--r--tests/nquote.tests9
-rw-r--r--tests/nquote4.sub6
-rw-r--r--tests/nquote5.sub36
-rw-r--r--tests/posix2.right6
-rw-r--r--tests/posix2.tests8
-rw-r--r--tests/posixexp.right26
-rw-r--r--tests/posixexp7.sub69
-rw-r--r--[-rwxr-xr-x]tests/precedence.tests0
-rw-r--r--tests/printf1.sub2
-rw-r--r--tests/printf2.sub8
-rw-r--r--tests/quotearray.right152
-rw-r--r--tests/quotearray.tests164
-rw-r--r--tests/quotearray1.sub131
-rw-r--r--tests/quotearray2.sub107
-rw-r--r--tests/quotearray3.sub117
-rw-r--r--tests/quotearray4.sub116
-rw-r--r--tests/quotearray5.sub124
-rw-r--r--tests/read.right25
-rw-r--r--tests/read.tests6
-rw-r--r--tests/read1.sub1
-rw-r--r--tests/read2.sub39
-rw-r--r--tests/read3.sub1
-rw-r--r--tests/read7.sub66
-rw-r--r--tests/read8.sub15
-rw-r--r--tests/rsh.right2
-rw-r--r--tests/run-all4
-rw-r--r--tests/run-execscript17
-rw-r--r--tests/run-intl3
-rw-r--r--tests/run-minimal4
-rw-r--r--tests/run-quotearray2
-rw-r--r--tests/shopt.right14
-rw-r--r--tests/test.right4
-rw-r--r--tests/test.tests3
-rw-r--r--tests/tilde.tests4
-rw-r--r--tests/tilde2.right4
-rw-r--r--tests/tilde2.tests2
-rw-r--r--tests/tilde3.sub26
-rw-r--r--tests/type.right4
-rw-r--r--tests/unicode1.sub16
-rw-r--r--tests/varenv.right13
-rw-r--r--tests/varenv.tests1
-rw-r--r--tests/varenv13.sub1
-rw-r--r--tests/varenv22.sub17
-rw-r--r--tests/vredir.right1
-rw-r--r--tests/vredir.tests1
-rw-r--r--tests/vredir8.sub13
-rw-r--r--trap.c134
-rw-r--r--trap.h3
-rw-r--r--unwind_prot.c9
-rw-r--r--variables.c432
-rw-r--r--variables.h8
-rw-r--r--version.c4
-rw-r--r--y.tab.c3176
-rw-r--r--y.tab.h19
532 files changed, 95005 insertions, 74452 deletions
diff --git a/CHANGES b/CHANGES
index 7a47c7c5..e4e0124f 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,549 @@
+This document details the changes between this version, bash-5.2-release, and
+the previous version, bash-5.2-rc4.
+
+1. Changes to Bash
+
+2. Changes to Readline
+
+a. When replacing a history entry, make sure the existing entry has a non-NULL
+ timestamp before copying it; it may have been added by the application, not
+ the history library.
+
+3. New Features in Bash
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.2-rc4, and
+the previous version, bash-5.2-rc3.
+
+1. Changes to Bash
+
+a. Changed how the compatibility mode enabling of extglob works in conjunction
+ with parsing conditional commands.
+
+b. Fixed a problem with aliases containing command substitutions.
+
+2. Changes to Readline
+
+3. New Features in Bash
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.2-rc3, and
+the previous version, bash-5.2-rc2.
+
+1. Changes to Bash
+
+a. Added a compatibility mode feature that causes the parser to parse command
+ substitutions as if extglob were enabled. If it is enabled before execution,
+ parse at execution will succeed. If not, the subsequent execution parse will
+ fail.
+
+b. Fixed an issue with handling a `return' executed in a trap action if the
+ trap is executed while running in a shell function.
+
+2. Changes to Readline
+
+3. New Features in Bash
+
+4. New Features in Readline
+
+a. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG)
+ each time it is called, and modifies the appropriate locale-specific display
+ and key binding variables when the locale changes.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.2-rc2, and
+the previous version, bash-5.2-rc1.
+
+1. Changes to Bash
+
+a. Fixed a bug that could disable history saving after a compound array
+ assignment in an interactive shell.
+
+b. Fixed a bug that could cause incorrect error messages when running a DEBUG
+ trap during a conditional or arithmetic command.
+
+c. Fixed a bug that caused test to print an error message when given ! ! arg
+ as arguments.
+
+d. Fixed a bug that resulted in incorrect error messages when completing a
+ backquoted command substitution.
+
+e. Changed command substitution parsing to reproduce the original text more
+ closely when reconsituting the command string from the parsed command.
+
+f. Fixed a bug that could cause an EXIT trap to use the wrong variable context
+ when the errexit option is set.
+
+g. Fixed a bug that could cause the parser to incorrectly delimit a token when
+ an alias expansion ended with a multibyte character.
+
+2. Changes to Readline
+
+3. New Features in Bash
+
+a. Since there is no `declare -' equivalent of `local -', make sure to use
+ `local -' in the output of `local -p'.
+
+b. Null anchored matches in pattern substitution now process `&' in the
+ replacement string, like sed.
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.2-rc1, and
+the previous version, bash-5.2-beta.
+
+1. Changes to Bash
+
+a. Changes to `wait -p' and how it sets the variable name in the presence of
+ valid and invalid PID arguments.
+
+b. Fixed a bug that caused compgen to dump core if the completion engine was
+ not initialized.
+
+c. Fixed a memory leak in the variable name programmable completion code.
+
+d. Here-documents and here-strings use tempfiles if the shell compatibility
+ level is 50 or lower.
+
+e. Non-interactive shells exit on a syntax error encountered while parsing a
+ command substitution.
+
+f. Fixed a bug with inherited parser state while parsing a command substitution.
+
+g. Fixed a bug that caused the shell not to check for terminating signals
+ after executing the command_string supplied with `-c' and before executing
+ the exit trap.
+
+h. Changes to avoid a make race condition while generating builtins.c.
+
+i. Make it explicit that BASH_REMATCH is always a global variable, and that
+ local copies are (currently) ignored.
+
+j. Fixed a bug that caused an ambiguous redirection (>&word) to be printed
+ incorrectly (>&word) if no file descriptor was supplied.
+
+2. Changes to Readline
+
+a. Fixed a bug that caused rl_eof_found to be set prematurely while reading a
+ multi-character key sequence in callback mode.
+
+3. New Features in Bash
+
+a. In posix mode, the `printf' builtin checks for the `L' length modifier and
+ uses long double for floating point conversion specifiers if it's present,
+ double otherwise.
+
+b. The `globbing' completion code now takes the `globstar' option into account.
+
+c. `suspend -f' now forces the shell to suspend even if job control is not
+ currently enabled.
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.2-beta, and
+the previous version, bash-5.2-alpha.
+
+1. Changes to Bash
+
+a. Fixed a problem with command-oriented history and multi-line commands that
+ caused embedded blank lines to be run together.
+
+b. Changed the way `&' is quoted when performing pattern substitution and
+ `patsub_replacement' is enabled.
+
+c. Fixed some integer overflows when expanding strings or reading the output
+ of command substitution larger than 2GB.
+
+d. `wait -p' without the `-n' option now does something useful if there are no
+ jobs.
+
+e. Fixed an issue with read timeouts in posix mode.
+
+f. Changed here-document processing to process $'...' and $"..." only when they
+ appear in the WORD portion of ${PARAM OP WORD} in the here-document body
+ and the body is being expanded.
+
+g. Changed alias expansion in command substitution to be posix-conformant
+ (performed while initially parsing the command substitution) when in posix
+ mode.
+
+h. Bash optimizes away more forks in subshells.
+
+i. Here-document construction now performs quote removal on the here-document
+ delimiter only if it's marked as quoted, which prevents quote characters in
+ command substitutions from being removed.
+
+j. Prompt string expansion now gives invisible characters in the expansion of
+ the \w, \W, and \s escape sequences a visible representation to avoid
+ problems with redisplay.
+
+k. Fixed a problem with SIGINT during the execution of a command bound with
+ `bind -x' affecting the saved terminal settings.
+
+l. Fixed an inconsistency with how $@ expands in a construct like ${@:+set}
+ or ${array[@]:+set} in the presence of null positional parameters or
+ array elements.
+
+2. Changes to Readline
+
+a. Prevent some display problems when running a command as the result of a
+ trap or one bound using `bind -x' and the command generates output.
+
+b. Fixed an issue with multi-line prompt strings that have one or more
+ invisible characters at the end of a physical line.
+
+c. Fixed an issue that caused a history line's undo list to be cleared when
+ it should not have been.
+
+3. New Features in Bash
+
+a. There is a new bindable readline command name: `vi-edit-and-execute-command'.
+
+4. New Features in Readline
+
+a. Two new bindable string variables: active-region-start-color and
+ active-region-end-color. The first sets the color used to display the
+ active region; the second turns it off. If set, these are used in place
+ of terminal standout mode.
+
+b. New readline state (RL_STATE_EOF) and application-visible variable
+ (rl_eof_found) to allow applications to detect when readline reads EOF
+ before calling the deprep-terminal hook.
+
+c. There is a new configuration option: --with-shared-termcap-library, which
+ forces linking the shared readline library with the shared termcap (or
+ curses/ncurses/termlib) library so applications don't have to do it.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.2-alpha, and
+the previous version, bash-5.1-release.
+
+1. Changes to Bash
+
+a. Fixed a bug that assigned a value to the variable name supplied as an
+ argument to `wait -p' when there were no jobs.
+
+b. Fixed a bug that resulted in performing incorrect word expansion on the
+ key/value pairs in a compound array assignment.
+
+c. Fixed a bug that could put the child forked to run a command substitution
+ into the wrong process group.
+
+d. Fixed a problem that could cause the lastpipe option to work incorrectly if
+ file descriptor 0 was closed.
+
+e. Bash tries to suppress traps if a forked child receives a trapped signal
+ before it has a chance to reset its signal handlers.
+
+f. Fixed several memory leaks in compound array assignments.
+
+g. Fixed a problem with performing an assignment with `+=' to an array element
+ that was the value of a nameref.
+
+h. Fixed a bug that could cause a nameref containing an array reference using
+ `@' or `*' not to expand to multiple words.
+
+i. Fixed a bug where extended glob functions could match `.' or `..' when it
+ wasn't explicitly specified, even if dotglob was set.
+
+j. Fixed a bug that caused non-interactive posix-mode shells not to exit on a
+ variable assignment error while assigning into the temporary environment.
+
+k. Fixed a bug that caused parsing errors if an alias contained a compound
+ array assignment.
+
+l. Fixed a couple of instances where bash checked syntax too aggressively when
+ trying to determine how to add a partial command to command-oriented
+ history.
+
+m. Fixed a parser problem that caused it not to allow reserved words to follow
+ the `((' and `[[' commands.
+
+n. Fixed a bad offset calculation when using negative offsets to `history -d'.
+
+o. Fixed an off-by-one error that caused a read past the end of a buffer when
+ reading a multibyte character from the output of a command substitution.
+
+p. Fixed a problem with a failed `exec' command not setting $? to the right
+ value for an exit trap.
+
+q. Fixed a problem that caused bash not to unlink FIFOs created as part of
+ expanding redirections for an external command.
+
+r. Fixed a bug that could cause aliases not to be expanded in case statements.
+
+s. Fixed a bug that could cause word completion to attempt programmable
+ completion for the target of a redirection, instead of filename completion.
+
+t. Fixed a bug that could result in errors after rebinding a key sequence with
+ `bind -x' multiple times.
+
+u. Fixed a problem that could result in not quoting the result when performing
+ command name completion with a glob pattern in the command name.
+
+v. `mapfile' now uses fully-buffered reads in more cases, which should improve
+ bulk read performance.
+
+w. Fixed a bug that caused `wait -n' to not reset its internal state when
+ interrupted by a signal, resulting in subsequent calls failing.
+
+x. Fixed a bug with parsing numeric arguments to readline key sequences
+ installed with `bind -x'.
+
+y. Bash suppresses forking in several additional cases, including most uses
+ of $(<file).
+
+z. If there are multiple `!' tokens in a [[ command, toggle the invert state
+ instead of setting it unconditionally.
+
+aa. Fixed a bug where running `fc' on an empty history list would cause the
+ shell to crash.
+
+bb. Word completion now checks whether or not a quote character closes a
+ quoted string begun on a previous line, so readline doesn't interpret the
+ quote as starting a new quoted string.
+
+cc. Fixed a typo that translated \UNNNNNNNN characters that were not valid in
+ the current locale encoding as \uNNNNNNNN.
+
+dd. Fixed an issue that could cause bash to print timing statistics for the
+ wrong command when `set -e' causes a command to fail.
+
+ee. Bash now runs the exit trap in function context if a failed command in
+ the function causes the shell to exit.
+
+ff. Some fixes to how subshells modify $SHLVL.
+
+gg. Fixed a bug that caused `mapfile -t' not to remove the delimiter when the
+ delimiter is > 128 in the current encoding.
+
+hh. Fixed a problem that could cause the shell to attempt to free unallocated
+ memory if an expansion error occurred.
+
+ii. Fixed a bug in the bash malloc implementation of malloc_usable_size. Bash
+ did not use it, but it could cause problems with library functions that
+ did.
+
+jj. If the `exec' builtin fails, and the shell does not exit, it restores
+ trapped signals to their trapped state.
+
+kk. Fixed a bug that could cause variable assignment arguments to `declare' to
+ expand variables using attributes that the call to declare was turning off.
+
+ll. Fixed a bug with LINENO and arithmetic for commands.
+
+mm. Fixed a posix-mode bug that caused tildes not to be expanded after an
+ unquoted colon on the right side of an assignment statement.
+
+nn. Fixed a problem with `caller' and line numbers when executing an ERR trap.
+
+oo. Fixed a problem that could make the value returned by ${a:=b} not be the
+ final value assigned to a (e.g., if `a' has an attribute that modifies
+ the value on assignment).
+
+pp. Fixed a problem with saving multi-line here-documents to the history list
+ where the here-document delimiter does not appear on the first line.
+
+qq. Fixed a bug with using += to assign to dynamic variables like RANDOM.
+
+rr. Fixed a bug that caused `set -n' to modify $? if set after execution had
+ started.
+
+ss. Builtins like printf/read/wait now behave more consistently when assigning
+ arbitrary keys to associative arrays (like `]'. when appropriately quoted).
+
+tt. Fixed a problem with here-document collection printing the wrong prompt
+ when parsing a compound list in an interactive shell.
+
+uu. Fixed a problem with quoting shell expansion characters (like `$') when
+ they appear in a tab-completed word along with characters that do need
+ quoting (e.g.. $HOME/VirtualBox VMs).
+
+2. Changes to Readline
+
+a. Fixed a problem with cleaning up active marks when using callback mode.
+
+b. Fixed a problem with arithmetic comparison operators checking the version.
+
+c. Fixed a problem that could cause readline not to build on systems without
+ POSIX signal functions.
+
+d. Fixed a bug that could cause readline to crash if the application removed
+ the callback line handler before readline read all typeahead.
+
+e. Added additional checks for read errors in the middle of readline commands.
+
+f. Fixed a redisplay problem that occurred when switching from the digit-
+ argument prompt `(arg: N)' back to the regular prompt and the regular
+ prompt contained invisible characters.
+
+g. Fixed a problem with restoring the prompt when aborting an incremental
+ search.
+
+h. Fix a problem with characters > 128 not being displayed correctly in certain
+ single-byte encodings.
+
+i. Fixed a problem with unix-filename-rubout that caused it to delete too much
+ when applied to a pathname consisting only of one or more slashes.
+
+j. Fixed a display problem that caused the prompt to be wrapped incorrectly if
+ the screen changed dimensions during a call to readline() and the prompt
+ became longer than the screen width.
+
+k. Fixed a problem that caused the \r output by turning off bracketed paste
+ to overwrite the line if terminal echo was disabled.
+
+l. Fixed a bug that could cause colored-completion-prefix to not display if
+ completion-prefix-display-length was set.
+
+m. Fixed a problem with line wrapping prompts when a group of invisible
+ characters runs to the right edge of the screen and the prompt extends
+ longer then the screen width.
+
+n. Fixed a couple problems that could cause rl_end to be set incorrectly by
+ transpose-words.
+
+3. New Features in Bash
+
+a. The bash malloc returns memory that is aligned on 16-byte boundaries.
+
+b. There is a new internal timer framework used for read builtin timeouts.
+
+c. Rewrote the command substitution parsing code to call the parser recursively
+ and rebuild the command string from the parsed command. This allows better
+ syntax checking and catches errors much earlier. Along with this, if
+ command substitution parsing completes with here-documents remaining to be
+ read, the shell prints a warning message and reads the here-document bodies
+ from the current input stream.
+
+d. The `ulimit' builtin now treats an operand remaining after all of the options
+ and arguments are parsed as an argument to the last command specified by
+ an option. This is for POSIX compatibility.
+
+e. Here-document parsing now handles $'...' and $"..." quoting when reading the
+ here-document body.
+
+f. The `shell-expand-line' and `history-and-alias-expand-line' bindable readline
+ commands now understand $'...' and $"..." quoting.
+
+g. There is a new `spell-correct-word' bindable readline command to perform
+ spelling correction on the current word.
+
+h. The `unset' builtin now attempts to treat arguments as array subscripts
+ without parsing or expanding the subscript, even when `assoc_expand_once'
+ is not set.
+
+i. There is a default value for $BASH_LOADABLES_PATH in config-top.h.
+
+j. Associative array assignment and certain instances of referencing (e.g.,
+ `test -v') now allow `@' and `*' to be used as keys.
+
+k. Bash attempts to expand indexed and associative array subscripts only
+ once when executing shell constructs and word expansions.
+
+l. The `unset' builtin allows a subscript of `@' or `*' to unset a key with
+ that value for associative arrays instead of unsetting the entire array
+ (which you can still do with `unset arrayname'). For indexed arrays, it
+ removes all elements of the array without unsetting it (like `A=()').
+
+m. Additional builtins (printf/test/read/wait) do a better job of not
+ parsing array subscripts if array_expand_once is set.
+
+n. New READLINE_ARGUMENT variable set to numeric argument for readline commands
+ defined using `bind -x'.
+
+o. The new `varredir_close' shell option causes bash to automatically close
+ file descriptors opened with {var}<fn and other styles of varassign
+ redirection unless they're arguments to the `exec' builtin.
+
+p. The `$0' special parameter is now set to the name of the script when running
+ any (non-interactive) startup files such as $BASH_ENV.
+
+q. The `enable' builtin tries to load a loadable builtin using the default
+ search path if `enable name' (without any options) attempts to enable a
+ non-existent builtin.
+
+r. The `printf' builtin has a new format specifier: %Q. This acts like %q but
+ applies any specified precision to the original unquoted argument, then
+ quotes and outputs the result.
+
+s. The new `noexpand_translations' option controls whether or not the translated
+ output of $"..." is single-quoted.
+
+t. There is a new parameter transformation operator: @k. This is like @K, but
+ expands the result to separate words after word splitting.
+
+u. There is an alternate array implementation, selectable at `configure' time,
+ that optimizes access speed over memory use (use the new configure
+ --enable-alt-array-implementation option).
+
+v. If an [N]<&WORD- or [N]>&WORD- redirection has WORD expand to the empty
+ string, treat the redirection as [N]<&- or [N]>&- and close file descriptor
+ N (default 0).
+
+w. Invalid parameter transformation operators are now invalid word expansions,
+ and so cause fatal errors in non-interactive shells.
+
+x. New shell option: patsub_replacement. When enabled, a `&' in the replacement
+ string of the pattern substitution expansion is replaced by the portion of
+ the string that matched the pattern. Backslash will escape the `&' and
+ insert a literal `&'.
+
+y. `command -p' no longer looks in the hash table for the specified command.
+
+z. The new `--enable-translatable-strings' option to `configure' allows $"..."
+ support to be compiled in or out.
+
+aa. The new `globskipdots' shell option forces pathname expansion never to
+ return `.' or `..' unless explicitly matched. It is enabled by default.
+
+bb. Array references using `@' and `*' that are the value of nameref variables
+ (declare -n ref='v[@]' ; echo $ref) no longer cause the shell to exit if
+ set -u is enabled and the array (v) is unset.
+
+4. New Features in Readline
+
+a. There is now an HS_HISTORY_VERSION containing the version number of the
+ history library for applications to use.
+
+b. History expansion better understands multiple history expansions that may
+ contain strings that would ordinarily inhibit history expansion (e.g.,
+ `abc!$!$').
+
+c. There is a new framework for readline timeouts, including new public
+ functions to set timeouts and query how much time is remaining before a
+ timeout hits, and a hook function that can trigger when readline times
+ out. There is a new state value to indicate a timeout.
+
+d. Automatically bind termcap key sequences for page-up and page-down to
+ history-search-backward and history-search-forward, respectively.
+
+e. There is a new `fetch-history' bindable command that retrieves the history
+ entry corresponding to its numeric argument. Negative arguments count back
+ from the end of the history.
+
+f. `vi-undo' is now a bindable command.
+
+g. There is a new option: `enable-active-region'. This separates control of
+ the active region and bracketed-paste. It has the same default value as
+ bracketed-paste, and enabling bracketed paste enables the active region.
+ Users can now turn off the active region while leaving bracketed paste
+ enabled.
+
+h. rl_completer_word_break_characters is now `const char *' like
+ rl_basic_word_break_characters.
+
+i. Readline looks in $LS_COLORS for a custom filename extension
+ (*.readline-colored-completion-prefix) and uses that as the default color
+ for the common prefix displayed when `colored-completion-prefix' is set.
+
+------------------------------------------------------------------------------
This document details the changes between this version, bash-5.1-rc3, and
the previous version, bash-5.1-rc2.
@@ -4024,7 +4570,7 @@ l. There is a new configuration option (in config-top.h) that forces bash to
m. A new variable $BASHOPTS to export shell options settable using `shopt' to
child processes.
-n. There is a new confgure option that forces the extglob option to be
+n. There is a new configure option that forces the extglob option to be
enabled by default.
o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
@@ -4065,7 +4611,7 @@ d. New bindable function: skip-csi-sequence. Can be used as a default to
to bind all keys.
e. New application-settable function: rl_filename_rewrite_hook. Can be used
- to rewite or modify filenames read from the file system before they are
+ to rewrite or modify filenames read from the file system before they are
compared to the word to be completed.
f. New bindable variable: skip-completed-text, active when completing in the
@@ -4147,7 +4693,7 @@ and the previous version, bash-4.0-beta2.
1. Changes to Bash
a. Fixed a bug that caused parsing errors when a $()-style command
- substitution was follwed immediately by a quoted newline.
+ substitution was followed immediately by a quoted newline.
b. Fixed a bug that caused extended shell globbing patterns beginning with
`*(' to not work when used with pattern substitution word expansions.
@@ -9083,7 +9629,7 @@ gg. `alias' and `unalias' now print error messages when passed an argument
not interactive, as POSIX.2 specifies.
hh. `alias' and `alias -p' now return a status of 0 when no aliases are
- defined, as POSIX.2 specifes.
+ defined, as POSIX.2 specifies.
ii. `cd -' now prints the pathname of the new working directory if the shell
is interactive.
diff --git a/COMPAT b/COMPAT
index 5cfb8360..9fda7fb8 100644
--- a/COMPAT
+++ b/COMPAT
@@ -2,11 +2,11 @@ Compatibility with previous versions
====================================
This document details the incompatibilities between this version of bash,
-bash-5.1, and the previous widely-available versions, bash-3.2 (which is
+bash-5.2, and the previous widely-available versions, bash-3.2 (which is
still the `standard' version for Mac OS X), 4.2/4.3 (which are still
-standard on a few Linux distributions), and bash-4.4/bash-5.0, the current
-widely-available versions. These were discovered by users of bash-2.x
-through 5.x, so this list is not comprehensive. Some of these
+standard on a few Linux distributions), and bash-4.4/bash-5.0/bash-5.1,
+the current widely-available versions. These were discovered by users of
+bash-2.x through 5.x, so this list is not comprehensive. Some of these
incompatibilities occur between the current version and versions 2.0 and
above.
@@ -419,6 +419,14 @@ above.
options that posix mode modifies to the state they had before enabling
posix mode. Previous versions restored these options to default values.
+66. Bash-5.2 attempts to prevent double-expansion of array subscripts under
+ certain circumstances, especially arithmetic evaluation, by acting as if
+ the `assoc_expand_once' shell option were set.
+
+67. The `unset' builtin in bash-5.2 treats array subscripts `@' and `*'
+ differently than previous versions, and differently depending on whether
+ the array is indexed or associative.
+
Shell Compatibility Level
=========================
@@ -542,7 +550,43 @@ compat50 (set using BASH_COMPAT)
printed an informational message to that effect even when writing
output in a format that can be reused as input (-l). Bash-5.1
suppresses that message if -l is supplied
-
+ - Bash-5.1 and later use pipes for here-documents and here-strings if
+ they are smaller than the pipe capacity. If the shell compatibility
+ level is set to 50 or lower, it reverts to using temporary files.
+
+compat51 (set using BASH_COMPAT)
+ - The `unset' builtin will unset the array a given an argument like
+ `a[@]'. Bash-5.2 will unset an element with key `@' (associative
+ arrays) or remove all the elements without unsetting the array
+ (indexed arrays)
+ - arithmetic commands ( ((...)) ) and the expressions in an arithmetic
+ for statement can be expanded more than once
+ - expressions used as arguments to arithmetic operators in the [[
+ conditional command can be expanded more than once
+ - indexed and associative array subscripts used as arguments to the
+ operators in the [[ conditional command (e.g., `[[ -v') can be
+ expanded more than once. Bash-5.2 behaves as if the
+ `assoc_expand_once' option were enabled.
+ - the expressions in substring parameter brace expansion can be
+ expanded more than once
+ - the expressions in the $(( ... )) word expansion can be expanded
+ more than once
+ - arithmetic expressions used as indexed array subscripts can be
+ expanded more than once;
+ - `test -v', when given an argument of A[@], where A is an existing
+ associative array, will return true if the array has any set
+ elements. Bash-5.2 will look for a key named `@';
+ - the ${param[:]=value} word expansion will return VALUE, before any
+ variable-specific transformations have been performed (e.g.,
+ converting to lowercase). Bash-5.2 will return the final value
+ assigned to the variable, as POSIX specifies;
+ - Parsing command substitutions will act as if extended glob is
+ enabled, so that parsing a command substitution containing an extglob
+ pattern (say, as part of a shell function) will not fail. This
+ assumes the intent is to enable extglob before the command is
+ executed and word expansions are performed. It will fail at word
+ expansion time if extglob hasn't been enabled by the time the
+ command is executed.
-------------------------------------------------------------------------------
diff --git a/CWRU/changelog b/CWRU/changelog
index 27f62c02..da6d4aa1 100644
--- a/CWRU/changelog
+++ b/CWRU/changelog
@@ -1,9182 +1,3952 @@
- 9/15/2016
+ 12/6/2020
---------
-[bash-4.4 released]
- 9/17
- ----
-builtins/common.c
- - display_signal_list: if 0 is supplied as an argument to kill -l,
- display a signal-out-of-range error. Fixes bug reported by
- Martijn Dekker <martijn@inlv.org>
-
- 9/18
- ----
-print_cmd.c
- - print_heredoc_bodies: take a list of redirections, all here documents,
- and print the here-document bodies including the ending delimiter,
- followed by a newline
- - print_redirection_list: print the heredoc headers the first time
- through the list of redirections so we print them in the same left-
- to-right order they're supplied; print the bodies and delimiters with
- print_heredoc_bodies after we print all the redirections if we're
- not printing a list of commands (printing_connection == 0). Fix for
- problem reported by Isabella Parakiss <izaberina@gmail.com>
- - print_deferred_heredocs: don't print heredoc headers, since they're
- now printed in print_redirection_list
- - print_deferred_heredocs: use print_heredoc_bodies
-
- 9/20
- ----
-builtins/mapfile.def
- - readarray: update usage synopsis to include -d delim. Report and
- fix from jhankins@homewood.k12.al.us
-
-test.c
- - test_binop: if op[0] == '-', make sure op[1] != 0 before checking
- op[2] or op[3]. Fixes out-of-bounds read reported by Franco
- Costantini <franco.costantini.20@gmail.com>
-
-parse.y
- - cond_term: if yylval.word->word[0] == '-' make sure word[1] != 0
- before checking word[2] and calling test_unop. Fixes out-of-bounds
- read reported by Franco Costantini <franco.costantini.20@gmail.com>
- - make sure to check all instances of the return value of the
- simple_command production before trying to hook redirections onto it,
- since it can potentially return NULL.
- Reported by Franco Costantini <franco.costantini.20@gmail.com>
-
- 9/21
- ----
-parse.y
- - token_is_assignment: make sure to check that the return value from
- assignment() finds the `=' we just added at index I to avoid false
- positives from g=g=g=g=g=g=(). Reported by Franco Costantini
- <franco.costantini.20@gmail.com>
-
- 9/22
- ----
-parse.y
- - token_is_assignment: if we're not using the bash malloc (which has
- guard bytes after the requested allocation size), use a new
- buffer so we can make sure it's big enough to hold the current
- token and at least two additional characters. Reported by
- Franco Costantini <franco.costantini.20@gmail.com>
-
- 9/23
- ----
-execute_cmd.c
- - execute_in_subshell: call without_job_control for both job control
- and non-job-control builds to avoid waiting for last_made_pid
- inherited from parent shell. Related to fix from 8/4 to
- initialize_subshell. Fixes bug reported by Martijn Dekker
- <martijn@inlv.org>
-
-builtins/declare.def
- - local_builtin: allow `local --help' to work even when not executing
- a function. Suggestion from Norm Abramovitz <norm@starkandwayne.com>
+[bash-5.1 released]
- 9/25
+ 12/7
----
-builtins/printf.def
- - bexpand: if passed a null or empty string, return a newly-allocated
- empty string (so the return value can always be freed) instead of
- NULL.
- - printstr: if passed a null string, treat it as if it were an empty
- string so any precision or fieldwidth arguments are handled
- correctly. Report from isabella parakiss <izaberina@gmail.com>
+Makefile.in
+ - bashline.o: add dependency on ${DEFDIR}/builtext.h. Report from
+ Fazal Majid <fazal@majid.org>
-subst.c
- - skip_matched_pair: make the flags argument of 1 affect whether or
- not backslash can quote characters in the string, so it affects
- all quoting mechanisms
+ 12/11
+ -----
+builtins/wait.def
+ - wait_builtin: don't assign the variable given with -p if there are no
+ jobs to wait for. Report and fix from OÄuz <oguzismailuysal@gmail.com>
arrayfunc.c
- - unbind_array_element: now takes a third (flags) argument; flags&1
- means to not expand an associative array index. This is only called
- from a shell builtin context, which means the argument should have
- already undergone word expansion, so it should be ok. Will still
- be a problem for uses like "unset -v 'var[$ind]'", quoted to avoid
- globbing
- - valid_array_reference: pass second flags argument to skipsubscript;
- still set to 0 by all callers
+ - kvpair_assignment_p: return non-zero if argument L appears to be a
+ key-value pair associative array compound assignment
+ - expand_and_quote_kvpair_word: run a single word in a key-value pair
+ associative array compound assignment through the appropriate
+ expansions and single-quote the result
arrayfunc.h
- - unbind_array_element: updated prototype
+ - kvpair_assignment_p, expand_and_quote_kvpair_word: extern declarations
-builtins/set.def
- - unset_builtin: add third argument of 1 to unbind_array_element calls
- [TEMPORARILY DISABLED]
- - unset_builtin: call valid_array_reference with second arg of 1 to
- handle unmatched pairs of quotes and [/]
-
-array.c
- - array_reference: optimize access locality as well as sequential
- access by adding ability to start from last-accessed element and move
- backwards or forwards depending on the desired index. Inspired by
- report from Tom McCurdy <tom.j.mccurdy@gmail.com> and followup from
- Christian Franke <Christian.Franke@t-online.de>
-
-variables.c
- - all_array_variables: include associative arrays, not just indexed
- arrays. Reported by Grisha Levit <grishalevit@gmail.com>
-
-execute_cmd.c
- - execute_disk_command: if we're optimizing out the fork (CMD_NO_FORK),
- decrement the shell level so we don't end up incrementing it twice.
- We should decrement the shell level for an implicit exec like an
- explicit one. Reported by Stephane Chazelas
- <stephane.chazelas@gmail.com>
-
-builtins/exec.def
- - exec_builtin: don't bother to decrement the shell level if we are
- already in a `(command)' subshell. Reported by Stephane Chazelas
- <stephane.chazelas@gmail.com>
-
-lib/readline/macro.c
- - macro_level: count of macro nesting level, maintained by
- _rl_push_executing_macro and _rl_pop_executing macro
- - _rl_with_macro_input: if current nesting level exceeds
- MAX_MACRO_LEVEL, abort the current command line with _rl_abort_internal
- and return to the top level. Reported by Christian Klomp
- <christianklomp@gmail.com>
-
-lib/readine/history.c
- - add_history: if allocating the history list for the first time,
- make sure the max history list size isn't so large that it will
- cause allocation errors. Cap it at MAX_HISTORY_INITIAL_SIZE
- (8192). Reported by Sean Zha <freeman_cha@hotmail.com>
-
-jobs.c
- - wait_for: if a foreground job with job control enabled is killed by a
- SIGINT and sourcelevel != 0, act as if we received the SIGINT so the
- file sourcing can be terminated. Reported by PePa
- <peterkelly@passchier.net>
-
- 9/26
- ----
subst.c
- - read_comsub: only warn once for null bytes in command substitution
- output, instead of once for every null byte
+ - expand_oneword: detect whether VALUE appears to be a key-value
+ pair compound assignment and call the appropriate function to expand
+ each word in the resulting list. Fixes inconsistency reported by
+ oguzismailuysal@gmail.com
-arrayfunc.c
- - array_variable_part: now takes a `flags' argument; changed all callers
- to initially pass 0
- - array_variable_name: now takes a `flags' argument; changed all callers
- to initially pass 0
- - array_variable_name: pass `flags' argument to skipsubscript instead
- of just passing 0
-
-arrayfunc.h
- - array_variable_{name,part}: added new argument to prototypes
-
- 9/29
- ----
-bashline.c
- - bash_directory_completion_hook: don't bother to try and expand a
- ${ or $( that isn't complete; expand_prompt_string will complain.
- Fixes reports from John Passaro <john.a.passaro@gmail.com> and
- Valentin Bajrami <valentin.bajrami@gmail.com>
-
-lib/readline/history.c
- - _hs_append_history_line: use a strategy that attempts to avoid
- realloc copying memory to a newly-allocated block if the history
- line we're appending to gets `too long' (currently 256 bytes).
- We reallocate in powers of 2 starting at 512, and rely on realloc
- not allocating a new block and copying into it if the size is the
- same as the last call to realloc. Addresses issue raised by
- Hubert Schmid <h.schmid@gmx.de>
-
-trap.h
- - check_signals: new extern declaration
- - trapped_signal_received: new extern declaration
-
-builtins/read.def
- - read_builtin: if one of the zread* functions returns < 0 (which
- usually only happens in Posix mode), make sure we call check_signals()
- before eventually calling run_pending_traps() because zread() isn't
- going to call it
- - include trap.h for correct extern functions and variable declarations
-
-lib/sh/zread.c
- - zread: if executing a builtin, call check_signals_and_traps() for
- backwards compatibility. If not, call check_signals() only, because
- we don't want to run traps during, for instance, reading command
- substitution output. Fixes race condition bug reported by Luiz Angelo
- Daros de Luca <luizluca@gmail.com>
-
- 9/30
- ----
+ 12/12
+ -----
subst.c
- - command_substitute: reset parse_and_execute_level to 0 in the child
- process, since it's independent of the other parse_and_execute
- calls. Adds command substitution inside other parse_and_execute
- calls optimizations to suppress forks, as suggested by
- Martijn Dekker <martijn@inlv.org>
-
- 10/3
- ----
-configure.ac
- - SHOBJ_STATUS: make sure it defaults to unsupported and is substituted
- if the shobj-conf script isn't run. Fixes `make install' bug with
- a minimal config reported by Andrew Tomazos <andrewtomazos@gmail.com>
-
- 10/5
- ----
-support/shobj-conf
- - darwin: set compatibility_version for a shared build of the readline
- library (the standalone readline distribution shares this file) to
- $(SHLIB_MAJOR)$(SHLIB_MINOR). Recommendation from Max Horn
- <max@quendi.de>
+ - command_substitute: don't reset pipeline_pgrp to shell_pgrp if we
+ are already forked to run a command (SUBSHELL_FORK). Fixes SIGINT
+ in command substitution in here-document in forked child issue
+ reported by oguzismailuysal@gmail.com
- 10/6
- ----
-array.h
- - array_first_index: new convenience define
-
-array.c
- - ADD_AFTER: new define, complement of ADD_BEFORE
- - UNSET_LASTREF: now takes an array as an argument, prepping for move
- of lastref pointer into the array struct
- - array_insert: check whether we are adding at the beginning of the
- array and take a fast path if so
- - array_insert: use same strategy as array_reference to find the place
- to insert, starting from the last-referenced element and moving
- forward or back from there; use ADD_AFTER if moving backward
- - array_insert: if replacing an existing element, just replace the
- value with new->value instead of the entire element
- - array_reference: short-circuit quickly if looking for an element
- before the first assigned index
- - array_reference: if we don't find the element, leave lastref pointing
- to the closest element under the assumption we will be assigning or
- looking for something close
- - array_reference: take advantage of ordered indexes to short-circuit
- when looking for element that is not set
-
- 10/7
- ----
-array.c
- - array_remove: short-circuit if asked to remove index after max
- index or before first index
-
- 10/10
+ 12/18
-----
-lib/malloc/malloc.c
- - internal_realloc: if we are requesting reallocation to the same size
- as the block's current size, short-circuit and return `mem' right
- after doing bounds check
- - internal_realloc: if we are reducing the size of an allocation, and
- the new size fits in the next lower bin, just keep the same block
- and adjust the size, so we can avoid some copies
-
-parse.y
- - set_line_mbstate: keep track of the allocated size of
- shell_input_line_property, only request reallocation if the size
- increases, but don't let it get too big
+execute_cmd.c
+ - execute_pipeline: execute the lastpipe code even if prev == 0. It
+ can only be 0 here if stdin was closed when this function was
+ executed
+ - execute_pipeline: if prev == 0, set lstdin to a sentinel (-1) that
+ means to close fd 0 after executing the command, and call close(prev)
+ before restoring stdin. restore_stdin now understands -1, and closes
+ fd 0. Fixes issue reported by Tomas Janousek <tomi@nomi.cz>
- 10/11
+ 12/21
-----
-jobs.c
- - wait_for_background_pids: make sure we wait for pid in
- last_procsub_child since it's not found in any job -- still needs
- more work to wait for multiple process substitutions
-
-subst.c
- - process_substitute: if make_child fails, make sure we call
- restore_pipeline to undo the previous save_pipeline()
+doc/bashref.texi
+ - PROMPT_COMMANDS: clean up a couple of remaining instances of this
+ name. Report from Eli Schwartz <eschwartz@archlinux.org>
- 10/15
+ 12/26
-----
subst.c
- - process_substitute,command_substitute: leave subshell_level (reflected
- as $BASH_SUBSHELL) intact for any exit trap instead of decrementing
- it. Suggested by Martijn Dekker <martijn@inlv.org>
+ - command_substitute: make sure that the child process always has
+ pipeline_pgrp == shell_pgrp: if pipeline_pgrp is non-zero when we
+ get to the child, meaning that we're part of an already-forked
+ child that is, for instance, running redirections, we need to reset
+ shell_pgrp to it to preserve the invariant. Fixes bug with terminal
+ being set to the incorrect pgrp reported by oguzismailuysal@gmail.com
-builtins/evalstring.c
- - optimize_subshell_command: new function, framework for optimizing
- out forks for command that have already forked and are executing
- in a subshell. Not used yet
-
-expr.c
- - readtok: if we have a post-increment or post-decrement, and the
- previous token is not a string, check whether the previous token is
- a number that results from a pre-increment or pre-decrement, and
- make that an error. Report from Conrad Hoffmann <ch@bitfehler.net>
-
- 10/16
- -----
-aclocal.m4
- - BASH_JOB_CONTROL_MISSING: convert from AC_TRY_RUN to AC_TRY_COMPILE
- with existing set of preprocessor defines, so it can work when
- cross-compiling. Suggested by Felix Janda <felix.janda@posteo.de>
-
- 10/19
+ 12/29
-----
-variables.c
- - get_bashpid: BASHPID is no longer readonly; assignments to it are
- just ignored.
+configure.ac,builtins/shobj-conf,m4/threadlib.m4
+ - midnightbsd: update auto-configuration to treat MidnightBSD like
+ FreeBSD. From https://savannah.gnu.org/patch/?10006
-doc/{bash.1,bashref.texi}
- - BASHPID: note that assignments are ignored and unsetting BASHPID
- causes it to lose its special properties
-
- 10/28
+ 12/30
-----
-builtins/pushd.def
- - popd_builtin: make sure to check the normalized stack offset
- (i.e., negatives counting back from the end of the stack) is within
- bounds before trying to free that stack entry. Report from
- Fernando Muñoz <fernando@null-life.com>
-
-lib/readline/histfile.c
- - chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from
- J. Peter Mugaas <jpmugaas@suddenlink.net>
-
-lib/readline/colors.c
- - S_ISDIR: add define if missing
- - S_ISUID, S_ISGID, S_ISLNK, S_ISSOCK: don't use unless defined.
- Fixes for MinGW{64,32} from J. Peter Mugaas <jpmugaas@suddenlink.net>
-
-bashhist.c
- - current_command_line_comment: set to the most recent line in a
- possibly multi-line command that contains a shell comment; set in
- maybe_add_history and bash_add_history to either the current
- command number or -2
- - maybe_add_history: set current_command_line_comment for first line
- of command
- - bash_add_history: chars_to_add set to "\n" if the current command line
- is one greater than the previous line containing a comment
- (current_command_line_comment). Fixes complaint from back in
- January, 2016 from Dave Rutherford <dave@evilpettingzoo.com>
+examples/loadables/stat.c
+ - stattime: use strftime with a default format or the format supplied
+ with the -F option to format the file time information
+ - stat_builtin: now takes a -F fmt option for a strftime format string;
+ change to function calling sequences to pass the format down to
+ stattime
-array.h
- - lastref: move last-referenced pointer into each array struct, so all
- arrays can have reference locality
-
-array.c
- - array_create: set lastref element to 0
- - array_copy: if copying the lastref in array a, set the new lastref
- in the copy to the same element
- - IS_LASTREF, LASTREF_START, LASTREF, INVALIDATE_LASTREF, SET_LASTREF,
- UNSET_LASTREF: change to use new array `lastref' member
-
-pathexp.c
- - quote_string_for_globbing: if quoting for a regexp, make sure to
- skip and copy a leading `^' in a bracket expression, and skip and
- copy a subsequent `]' (after an optional `^'), so that leading
- bracket doesn't close the bracket expression. Report from
- Stephane Chazelas <stephane.chazelas@gmail.com>
+examples/loadables/Makefile.in
+ - stat: now built and installed by default
- 10/29
- -----
-subst.c
- - extract_delimited_string: add calls to CHECK_STRING_OVERRUN for
- $( inside $((, nested OPENERs, nested ALT_OPENERs, and backquotes
- - skip_to_delim: add calls to CHECK_STRING_OVERRUN for $(, ${,
- process substitution
- - extract_dollar_brace_string: add calls to CHECK_STRING_OVERRUN for
- $(
- - extract_dollar_brace_string: use skipsubscript to skip over the
- array subscript in ${var[sub]} (non-quoted case uses string_extract,
- which already uses skipsubscript). Tagged for bash-5.0
-
- 10/30
+ 12/31
-----
-variables.c
- - EPOCHSECONDS: new dynamic variable, time in seconds since Unix
- epoch; assignments are ignored. Can be used on systems where
- strftime() doesn't support '%s'
- - EPOCHREALTIME: new dynamic variable, time in seconds since Unix
- epoch with microsecond granularity
+command.h
+ - SUBSHELL_IGNTRAP: new flag value
-doc/{bash.1,bashref.texi}
- - EPOCHSECONDS documentation
- - EPOCHREALTIME documentation
+jobs.c
+ - make_child: set SUBSHELL_IGNTRAP in subshell_environment in the
+ child process, meaning that we should not execute trap handlers for
+ trapped signals
execute_cmd.c
- - decpoint: moved to locale.c, renamed locale_decpoint; changed callers
-
-{bashintl,externs}.h
- - locale_decpoint: extern declaration or #define if support for
- localeconv() not there
+ - execute_in_subshell, execute_simple_command, execute_disk_command:
+ make sure to unset SUBSHELL_IGNTRAP after a child process restores
+ the original signal dispositions
+ - execute_simple_command: make sure to set SUBSHELL_IGNTRAP after
+ make_child returns and we're setting subshell_environment directly
- 10/31
- -----
-lib/malloc/malloc.c
- - posix_memalign: add new posix-mandated interface
-
-examples/loadables/rm.c
- - rm: minimal loadable builtin, removes files and directories, only
- handles -r and -f options. Original from Tim Ruehsen
- <tim.ruehsen@gmx.de>, heavily rewritten for inclusion as loadable
+subst.c
+ - command_substitute,process_substitute: unset SUBSHELL_IGNTRAP after
+ the child process has reset the trapped signal dispositions
-examples/loadables/Makefile.in
- - rm: add rules to build rm as one of the `other' targets
+trap.c
+ - trap_handler: if we get a signal for which we have set a trap, but
+ SUBSHELL_IGNTRAP is set in subshell_environmnent, make sure we
+ restore the original signal disposition and resend the signal to
+ ourselves. Fixes issue reported by Nikolay Borisov <nborisov@suse.com>
+ (or at least makes the race window much smaller)
-examples/loadables/stat.c
- - stat: new loadable builtin that takes a filename and loads the info
- returned by stat(2) into an associative array specified by the -A
- argument (default STAT)
+sig.c
+ - initialize_terminating_signal: set the original signal handler from
+ the return value from sigaction; a minor optimization that saves a
+ system call or two
- 11/1
- ----
-variables.c
- - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets
- $0 on assignment. From a suggestion from Rocky Bernstein <rocky@gnu.org>
- a few years ago
+ 1/5/2021
+ --------
+builtins/declare.def
+ - declare_internal: make some option combinations that don't make
+ sense errors (e.g., -f and -a/-A/-i/-n)
+ - declare_internal: if we build a new variable name by expanding the
+ value of a nameref variable, make sure to chop the `+' in a `+='
+ off before going on
+ 1/7
+ ---
doc/{bash.1,bashref.texi}
- - BASH_ARGV0: document
+ - bind: add an example to the synopsis making it clear that you can
+ use any readline command line as a non-option argument, as it says
+ in the text. From a report from Dan Jacobson <jidanni@jidanni.org>
- 11/2
+ 1/12
----
-lib/glob/sm_loop.c
- - parse_collsym: make sure to not return an out-of-bounds read if a
- collating symbol is unterminated. Fixes OOB read reported by
- Jerzy Kramarz <op7ica@gmail.com>
- - brackmatch: after incrementing p, before checking whether it's a
- character range, check whether *p was NULL before the increment
- and short-circuit the bracket expression if it is
-
-jobs.c
- - discard_last_procsub_child: new function, safely discards
- last_procsub_child and sets it to NULL
+locale.c
+ - local_shiftstates -> locale_shiftsates in the non-multibyte code
+ branch. Reported by Henry Bent <henry.r.bent@gmail.com>
subst.c
- - process_substitute: call discard_last_procsub_child instead of
- calling discard_pipeline directly. Fixes bug reported by
- Christian Weisgerber <naddy@mips.inka.de>
+ - expand_compound_assignment_word: make sure to call dispose_words on
+ the WORD_LIST * returned from expand_oneword after turning it back
+ into a string. Fixes memory leak reported by Alexander Mescheryakov
+ <alexander.s.m@gmail.com>
- 11/3
+ 1/13
----
-shell.h
- - EX_DISKFALLBACK: new special return status available to builtins;
- means to attempt to execute a disk command with the same name as
- the builtin
-
-examples/loadables/rm.c
- - if we see the -i option, return EX_DISKFALLBACK
-
-execute_cmd.c
- - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK,
- try running execute_disk_command instead
-
-bashline.c
- - shell_expand_line: use expand_word to expand the readline line
- buffer, which allows us to pass flags with the word. If a numeric
- argument is supplied, do not perform quote removal (pass
- Q_HERE_DOCUMENT since here-doc quoting does the right thing) and
- do not perform command or process subsitution. From a suggestion
- by Dabrien 'Dabe' Murphy <dabe@dabe.com> based on an old bug-bash
- discussion
-
-subst.c
- - expand_word_internal: note that we have added a quoted IFS char to
- istring by setting sentinel has_quoted_ifs. Usually we only add
- one if we are not going to be performing word splitting, but we
- will not perform word splitting if there's no expansion, so we need
- to take care of that case
- - expand_word_internal: when performing final word split, if there are
- no expansions but has_quoted_ifs is non-zero, call remove_quoted_ifs()
- to remove any quoted ifs characters we added while processing
- - remove_quoted_ifs: new function, removes CTLESC chars preceding
- (single-byte) chars in IFS. Used when we are not performing word
- splitting. Fixes bug reported by Martijn Dekker <martijn@inlv.org>
+variables.c
+ - bind_variable_internal: when performing an assignment to a subscripted
+ array variable that was the value of a nameref (used in the original
+ assignment), don't call make_variable_value on the value, since that
+ messes up +=. Just call assign_array_element and let that take care
+ of calling make_variable_value appropriately. Fixes bug reported by
+ Oguz <oguzismailuysal@gmail.com>
- 11/4
+ 1/14
----
-lib/readline/macro.c
- - _rl_peek_macro_key: return the next character from the current
- keyboard macro; the next character from the `next' keyboard macro,
- if there is one, if at the end of the current macro; or 0 to
- indicate that we are at the end of a keyboard macro sequence
-
-lib/readline/rlprivate.h
- - _rl_peek_macro_key: extern declaration
-
-lib/readline/readline.c
- - _rl_dispatch_subseq: add test for ESC at the end of a keyboard macro,
- which should cause the keyboard timeout for ESC to kick in. The
- previous test didn't run the timeout code if executing from a macro,
- even if we had read the last character of the macro. Fixes bug
- reported by Clark Wang <clarkw@vmware.com>
+findcmd.c
+ - search_for_command: if `checkhash' is set, don't add non-executable
+ files to the command hash table, since we will just remove them
+ later
-lib/glob/sm_loop.c
- - GMATCH: allow trailing backslash in pattern to explicitly match a
- backslash that is the last character in the string. Bug report from
- Stephane Chazelas <stephane.chazelas@gmail.com>
+lib/sh/winsize.c
+ - get_new_window_size: set *rp and *cp even if READLINE is not defined
- 11/5
+ 1/15
----
-builtins/common.c
- - display_signal_list: if displaying a signal name corresponding to an
- exit status > 128, don't display the SIG prefix at all. Old code
- made displaying the SIG prefix dependent on JOB_CONTROL define.
- Report and fix from Martijn Dekker <martijn@inlv.org>
+lib/sh/winsize.c
+ - get_new_window_size: call rl_set_window_size only if we can determine
+ we're using readline: an interactive shell without no-line-editing,
+ or if we've already initialized readline, presumably in a non-
+ interactive shell
-execute_cmd.c
- - execute_subshell_builtin_or_function: call without_job_control even
- if JOB_CONTROL is not defined. Similar to fix from 9/23.
- Report from Martijn Dekker <martijn@inlv.org>
+support/Makefile.in
+ - man2html: add LDFLAGS_FOR_BUILD to the recipe. Report from
+ Jeffrey Walton <noloader@gmail.com>
-execute_cmd.c
- - execute_simple_command: free memory allocated and passed to
- make_child in the child process if JOB_CONTROL is defined
- - execute_command_internal: free memory allocated and passed to
- make_child in the child process created to run a () subshell or a
- compound command within a pipeline if JOB_CONTROL is defined
- - execute_coproc: free memory allocated and passed to make_child in
- the child process if JOB_CONTROL is defined
- - execute_disk_command: free memory allocated and passed to
- make_child in the child process if JOB_CONTROL is defined. This
- series of fixes is the result of reports from
- Eduardo A. Bustamante López <dualbus@gmail.com>
-
- 11/6
+ 1/17
----
-lib/sh/unicode.c
- - u32toutf16: fix to prevent outputting broken surrogate pairs for
- Japanese locales (ja_JP.UTF-8) on cygwin (which uses UTF-16 natively).
- Report and fix from Koichi MURASE <myoga.murase@gmail.com>
-
-builtins/trap.def
- - trap_builtin: if OP is `-' (revert), set the SIGINT signal handler
- to sigint_sighandler if the shell is interactive and sourcing a
- file (interactive_shell && sourcelevel) or running a trap
- (interactive_shell && running_trap) even if it's not currently
- interactive. Report from Martijn Dekker <martijn@inlv.org>
-
-builtins/read.def
- - check for and read multibyte characters in all cases, not just when
- we are reading a specific number of characters, as long as
- mb_cur_max > 1
+lib/readline/misc.c
+ - rl_operate_and_get_next: fix old K&R function declaration. Report
+ from Tom Tromey <tom@tromey.com>
-subst.c
- - expand_word_internal: some improvements to code that converts istring
- into a WORD_LIST * to avoid multiple allocations and copies of
- istring, which is already malloc'ed memory -- reduce number of malloc
- and free calls
+lib/readline/readline.c
+ - _rl_internal_char_cleanup: move code that cleans up the active region
+ and deactivates the mark inside this function so callback mode
+ applications get the intended functionality. Report and fix from
+ sparrowhawk996@gmail.com
-test.c
- - unary_test: make sure if we test -v array[@] or array[*] that we
- free the return value from array_value
+lib/readline/bind.c
+ - rl_parse_and_bind: when using the arithmetic comparison operators on
+ the version, make sure to invert the tests so that we stop parsing
+ if the test fails. Report and fix from Tom Tromey <tom@tromey.com>
- 11/8
+ 1/19
----
-expr.c
- - expcond: make sure to set `noeval' before reading tokens depending on
- the result of the conditional test, since readtok() can evaluate
- identifiers (and recursively those containing expressions). Report
- and fix from Koichi MURASE <myoga.murase@gmail.com>
-
-builtins/evalstring.c
- - should_suppress_fork: make sure to check for traps on EXIT and
- ERR, since any_signals_trapped() only checks for `real' signals,
- not the fake shell ones. Fixes bug reported by Werner Fink
- <werner@suse.de>
- - optimize_subshell_command: ditto
+Makefile.in
+ - pipesize.h: add dependency on ${BUILTINS_LIBRARY} to avoid parallel
+ makes trying to create it twice. Report and fix from
+ Richard Purdie <richard.purdie@linuxfoundation.org>
- 11/9
+ 1/21
----
-eval.c
- - reader_loop: change so that we don't reset the SIGINT handler every
- time through the command loop in an interactive shell if the signal
- is trapped (as the comment noted). Reported by Report from Martijn
- Dekker <martijn@inlv.org>
-
subst.c
- - parameter_brace_{patsub,remove_pattern,transform,casemod}: save and
- restore this_command_name while temporarily setting it for use in
- error messages. Fixes use-after-free error reported by
- Jerzy Kramarz <op7ica@gmail.com>
- - string_extract_verbatim: make sure when we increment i by 2 due to
- a CTLESC or CTLESC-CTLNUL that we don't read past the end of the
- string. This can happen if the string ends with an odd number of
- CTLESC chars. Fixes oob-read error reported by
- Jerzy Kramarz <op7ica@gmail.com>
-
- 11/11
- -----
-configure.ac,aclocal.m4
- - BASH_FUNC_SBRK: make sure sbrk actually works, instead of being just
- a stub function like on several Linux distributions
-
-lib/malloc/malloc.c
- - malloc_usable_size: return the maximum number of bytes available for
- a particular memory allocation (size of block allocated for it)
-
- 11/12
- -----
-configure.ac
- - changes to make --enable-profiling work on Linux (-pg, no static link,
- no -static in LDFLAGS)
+ - param_expand: if a nameref expands to array[@] or array[*], make sure
+ to call chk_atstar so the right variables are set to split the
+ result. Report from Oguz <oguzismailuysal@gmail.com>
-Makefile.in
- - changes to make --enable-profiling work on Linux (take
- ${PROFILE_FLAGS} out of BASE_CCFLAGS, add to CCFLAGS instead; add
- BASE_LDFLAGS define that doesn't include -pg or -static; use
- BASE_LDFLAGS in LDFLAGS; move ${PROFILE_FLAGS} and ${STATIC_LD} to
- LDFLAGS)
-
-tests/run-gprof
- - changes to make profiling test suite with gprof work on Linux (set
- GMON_OUT_PREFIX to handle multiple profiled processes per test;
- change default filename to gmon.out from bash.gmon; look for
- gprof output files in ${TMPDIR} instead of /tmp; handle multiple
- profiling files starting with $GMON_OUT_PREFIX)
-
-locale.c
- - locale_isutf8: use locale_charset() if it's available and nl_langinfo
- isn't
- - locale_isutf8: add code to parse a locale specification and determine
- whether the encoding is UTF-8 (or utf8) in the absence of
- nl_langinfo and locale_charset
- - set_default_locale: make sure to set locale_utf8locale early on
- - locale_utf8locale: set via call to locale_isutf8 wherever LANG,
- LC_ALL, or LC_CTYPE is set
-
- 11/13
- -----
-lib/readline/display.c
- - rl_redisplay: handle report of potential integer overflow in
- horizontal display mode from Mateusz Lenik <mlen@mlen.pl>
-
-lib/sh/mbschr.c
- - mbschr: if in a UTF-8 locale (locale_utf8locale) and we are looking
- for an ASCII character, use (essentially) strchr as a shortcut
+ 1/22
+ ----
+builtins/declare.def
+ - Rewrote to reduce complexity. Still needs some work.
-lib/sh/shmbchar.c
- - utf8_{mbstrlen,mblen,mbsmbchar,mbsnlen}: UTF-8-specific replacement
- functions (should also be able to use utf8_mblen in subst.c:
- string_extract_verbatim)
- - mbsmbchar: if locale_utf8locale is true, call utf8_mbsmbchar
- - mbsmbchar: in UTF-8 locale, use utf8_mblen instead of mbrlen (not
- used if earlier shortcut taken)
+lib/readline/*.h, lib/tilde/tilde.h
+ - PARAMS: remove, rely on compilers understanding function prototypes
-lib/sh/unicode.c
- - u32cconv: don't use nl_langinfo early to call u32toutf8()
- - u32cconv: use locale_utf8locale to set utf8locale
- - u32cconv: when initializing (u32init == 0), use locale_charset, then
- nl_langinfo, then stub_charset to determine the charset
- - u32cconv: even if we don't have iconv, if locale_utf8locale is non-
- zero, return u32toutf8
-
- 11/15
- -----
-lib/readline/nls.c
- - _rl_init_locale: new function, split off code that determines current
- locale from _rl_init_eightbit, use it to set _rl_utf8locale
-
-lib/readiline/rlprivate.h
- - _rl_init_locale: new extern declaration
+lib/readline/{undo.c,histlib.h}
+ - _hs_replace_history_data: move extern declaration to histlib.h
lib/readline/readline.c
- - rl_initialize: if not initializing everything the first time, call
- _rl_init_locale to check current locale and set _rl_utf8locale
-
-lib/readline/text.c
- - _rl_insert_char: optimize cases where we are inserting a single-byte
- character in a locale with multibyte characters
- - _rl_insert_char: check whether character is single byte if we know
- we are in a UTF-8 locale, optimize single-byte case to avoid calls
- to mbrtowc and memmove/memcpy
-
-lib/readline/mbutil.c
- - _rl_char_value: if we are in a UTF-8 locale (_rl_utf8locale) and the
- current character does not have the eighth bit set ((c & 0x80) == 0),
- return that char without bothering to call mbrtowc
- - _rl_adjust_point: don't bother calling mbrlen if we are in a UTF-8
- locale and the current character is not a multibyte character
- - _rl_find_next_mbchar_internal: if we are in a UTF-8 locale, use that
- to avoid calls to mbrtowc
-
-lib/readline/display.c
- - _rl_col_width: if in a UTF-8 locale, take advantage of that to avoid
- calls to mbrlen and mbrtowc
- - rl_redisplay: if in a UTF-8 locale, take advantage of that to avoid
- calls to mbrtowc
-
- 11/17
- -----
-lib/readline/histlib.h
- - PATTERN_SEARCH: new flag for history search interfaces, means to
- search for a pattern as Posix specifies
-
-lib/readline/histsearch.c
- - history_search_internal: now takes a `flags' argument instead of just
- an `anchored' argument to accommodate PATTERN_SEARCH
- - _hs_history_patsearch: new internal interface to use when flags
- specify PATTERN_SEARCH
-
-lib/readline/rlprivate.h
- - SF_PATTERN: new flag for non-incremental search contexts, means to
- treat search string as a pattern (maps to PATTERN_SEARCH)
-
-lib/readline/search.c
- - noninc_dosearch: takes an additional `flags' argument for SF_PATTERN
- - noninc_search_from_pos: takes an additional `flags' argument for
- SF_PATTERN
- - noninc_dosearch: pass flags argument through to noninc_search_from_pos
- - _rl_nsearch_init: if we are in vi command mode, and `pchar' (key used
- to invoke the search) is `?' or `/', add SF_PATTERN to the flags
- to conform to Posix spec for vi-mode editing
- - _rl_nsearch_dosearch: if cxt->sflags indicates that we should do a
- pattern search, pass SF_PATTERN to noninc_search_from_pos
- - rl_noninc_forward_search_again: if in vi command mode and key == `N',
- make sure flags arg passed to noninc_dosearch includes SF_PATTERN
- - rl_noninc_reverse_search_again: if in vi command mode and key == `n',
- make sure flags arg passed to noninc_dosearch includes SF_PATTERN
- - rl_history_search_internal: pass extra flags arg to noninc_search_from_pos
-
- 11/18
- -----
-lib/readline/search.c
- - noninc_search_from_pos: takes a new argument, a pointer to int where
- it stores the offset of the match in the history line (if non-NULL),
- modified callers
- - rl_history_search_internal: pass newcol pointer to
- noninc_search_from_pos to avoid having to recompute the match offset
- in the matching history entry
-
-config.h.in
- - define HAVE_FNMATCH if we have the fnmatch function (configure was
- already checking for it)
-
-lib/readline/histsearch.c
- - _hs_history_patsearch: transform the pattern into one ending in a
- `*' to avoid having to perform multiple match attempts from each
- index in the history line
- - history_search_internal: changes to handle pattern matching if
- PATTERN_SEARCH is in the flags and HAVE_FNMATCH is defined. This
- makes vi-mode history searching treat the user-specified search
- string as an fnmatch pattern, as Posix requires. Fixes issue
- reported by <jwdevel@gmail.com>
-
- 11/19
- -----
-builtins/shopt.def
- - shopt_enable_hostname_completion: only declare this if READLINE
- defined, since that's the only time it's used. Reported by
- isabella parakiss <izaberina@gmail.com>
-
- 11/20
- -----
-builtins/common.c
- - display_signal_list: make `kill -l 0' print `EXIT', modifying change
- from 9/17
-
- 11/21
- -----
-subst.c
- - expand_word_internal: when the shell encounters a backslash as the
- last character of the string, don't try to add a '\'0' to the end
- of the string if the string is quoted, just add a <CTLESC><\> and
- skip to the end of string processing. Fixes oob-read error
- reported by Jerzy Kramarz <op7ica@gmail.com>
-
-test.c
- - two_arguments: check argv[pos][1] before checking argv[pos][2] when
- looking for a unary argument. Fixes oob-read error on single `-'
- in unary operator position reported by Jerzy Kramarz
- <op7ica@gmail.com>
- - ANDOR: check s[1] before checking s[2] in case s[1] == end of string.
- Fixes oob-read error reported by Jerzy Kramarz <op7ica@gmail.com>
-
-subst.c
- - command_substitute: now takes additional flags argument, changed one
- caller (param_expand) to pass through PF_ASSIGNRHS flag; other callers
- pass 0
- - command_substitute: pass through flags argument to read_comsub
- - read_comsub: now takes additional new flags argument to indicate
- whether or not the word is in a context where word splitting will
- eventually be performed
- - read_comsub: if we are running in a context where word splitting
- will not take place (PF_ASSIGNRHS), we read a CTLESC, and CTLESC is
- in $IFS, add a CTLESC to make sure it gets through a round of
- dequoting
-
- 11/23
- -----
-parse.y
- - xparse_dolparen: since reset_parser frees the pushed string list,
- and this is supposed to be a separate parsing context, we need to
- save and restore pushed_string_list around the call to parse_string
- and reset_parser. Fixes bug reported by Dan Douglas
- <ormaaj@gmail.com>
-
-bashhist.h
- - HISTEXPAND_DEFAULT: default value of history_expansion, moved here
- from flags.c
-
-flags.[ch]
- - histexp_flag: new variable, this is what set -H/set -o histexpand
- sets; history_expansion set to value of this variable; defaults to 0
- - history_expansion: now set to HISTEXPAND_DEFAULT
-
-bashhist.c
- - bash_history_reinit: if interact == 0, set history_expansion to the
- value of histexp_flag, to allow -H option to enable history
- expansion
- - bash_history_reinit: if interact == 0, make sure
- history_expansion_inhibited is set opposite of histexp_flag, so
- enabling history expansion with -H invocation option turns off
- inhibited expansion. If interactive shell, we turn it off so
- history_expansion controls whether or not history expansion takes
- place. In practice, this function is always called with interact == 0,
- and -c command still doesn't perform history expansion
-
-shell.c
- - init_interactive: make sure histexp_flag and history_expansion are
- identical in an interactive shell; allows both -H/+H option and
- default compilation options (HISTEXPAND_DEFAULT) to work
-
- 11/24
- -----
-subst.c
- - get_word_from_string: take advantage of the fact that SEPARATORS is
- always a (possibly local) copy of IFS, so build a local charmap of
- separators and use it instead of the (cached and possibly stale)
- ifs_cmap map and isifs macro. Fixes bug with -N stripping leading
- whitespace reported by Clark Wang <clarkw@vmware.com>
+ - _rl_parse_colors: instead of an extern declaration for this, include
+ "parse-colors.h" for it
- 11/25
- -----
-builtins/read.def
- - read_builtin: make `i' volatile, since auto variables are technically
- undefined after a longjmp, and a timeout on SIGALRM causes one.
- Fix suggested by Dmitry Goncharov <dgoncharov@users.sf.net>
-
- 11/27
- -----
-parse.y
- - shell_getc: if we are reading input from a string, and we get the
- ending '\0', and we are not expanding an alias, return EOF right
- away. It might be an eval'ed string that has a syntax error.
- Fixes bug reported by Dan Douglas <ormaaj@gmail.com>
+lib/readline/{histfile.c,histlib.h}
+ - _hs_append_history_line: move extern declaration to histlib.h
- 11/28
- -----
-subst.c
- - expand_word_internal: if we're expanding a quoted string containing
- a tilde as the first character of a word, only expand the tilde if
- we're expanding an array subscript (Q_ARRAYSUB), not if we're
- expanding any arithmetic expression (Q_ARITH). This fixes a
- backwards compatibility issue with expressions like ~0 reported by
- Bize Ma <binaryzebra@gmail.com>
-
-subst.c
- - parameter_brace_expand_indir: if the variable is not special and
- the indirect variable is unset (!variable where variable is unset),
- report an error. This is a slight incompatibility with previous
- versions, which did not differentiate between indirecting an unset
- variable and an indirect expansion resulting in an unset variable.
- Fixes omission reported by otenba@protonmail.com
-
- 11/30
- -----
-lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
- - do-uppercase-version: since this doesn't actually exist, replace it
- with do-lowercase-version, with the caveat that do-lowercase-version
- results in undefined behavior if bound to a character that's
- already lowercase. Suggested by Branden Robinson
- <g.branden.robinson@gmail.com>
-
-lib/readline/doc/rluser.texi
- - history-substring-search-forward: was misspelled as "substr-search";
- ditto for search-backward
-
-doc/bash.1
- - history-substring-search-{backward,forward}: add documentation, text
- straight from readline.3
+lib/readline/history.h
+ - HS_HISTORY_VERSION: define to 0x0801 (current library version) if
+ it's not already defined. We conditionally define it in case an
+ application has (unwisely) chosen to use it, since the history
+ library doesn't do anything with it yet
-jobs.c
- - initialize_job_control: if the terminal's process group is valid,
- but the shell is not the foreground process, check for terminating
- signals (like SIGHUP, which the kernel would send if the process
- group were orphaned) during the loop where we try to stop the shell
- if it's not in the foreground. Not a perfect solution; the kernel
- might not send SIGHUP
+lib/readine/{rlprivate.h,{search,misc,readline}.c}
+ - _rl_free_history_entry: add extern declaration to rlprivate.h, remove
+ extern declaration from c source files. Use HS_HISTORY_VERSION as a
+ sentinel that it's ok to use HIST_ENTRY in rlprivate.h
- 12/1
- ----
-jobs.c
- - initialize_job_control: only go through the SIGTTIN loop 16 times at
- most before deciding we're in the background and probably a member of
- an orphaned process group; set original_pgrp to the terminal's pgrp
- (so the eventual give_terminal_to doesn't leave the terminal in the
- wrong pgrp); and bail on job control initialization
-
-tests/run-all
- - unset SHELLOPTS to avoid its options `polluting' the test
- environment. Suggestion from Vladimir Marek
- <Vladimir.Marek@oracle.com>
-
-tests/execscript
- - use $PWD/exec8.sub to protect against someone who has a cd command
- in his bashrc. Report from Vladimir Marek
- <Vladimir.Marek@oracle.com>
+lib/readline/{rlprivate.h,{isearch,search,undo}.c}
+ - _rl_saved_line_for_history: add extern declaration to rlprivate.h,
+ remove extern declaration from c source files, using HS_HISTORY_VERSION
+ in the same way
- 12/2
- ----
-shell.c
- - open_shell_script: call end_job_control before exiting the shell in
- case we were run as `bash -i script' and there is a problem with
- executing `script'. If we don't, the terminal ends up in the wrong
- process group. Fix from Clark Wang <clarkw@vmware.com>
-
- 12/3
+ 1/24
----
-parse.y
- - read_comsub: if we look for a character following a `<' and it's
- not `<' (indicating that we don't have to read a here-document),
- make sure we push that character back and go through the loop again
- so we note the right word start location. Fixes bug reported by
- parasite parasite <42parasite@gmail.com>
-
-subst.c
- - parameter_brace_expand_indir: clean up checks for unset variables to
- minimize incompatibilities with previous versions
+lib/readline/signals.c
+ - _rl_handle_signal: make sure that all sigprocmask calls are protected
+ by HAVE_POSIX_SIGNALS. Report and fix from Tom Tromey <tom@tromey.com>
- 12/5
+ 1/26
----
-lib/readline/history.c
- - add_history: don't update history_length until all of the updates to
- the_history are complete, so history_length is always consistent.
- Report and fix from Hong Cho <hong.cho@citrix.com>
-
-bashline.c
- - bash_backward_shellword: fix to work better at the end of the line,
- with multiple trailing whitespace characters. Inspired by report
- from Kirill Timofeev <kt97679@gmail.com>
-
-Makefile.in
- - bashbug: use `^' as the sed delimiter instead of `%'; some compilers
- use `%' in CFLAGS. Report from Vladimir Marek
- <Vladimir.Marek@oracle.com>
+lib/readline/callback.c
+ - rl_callback_read_char: make sure rl_linefunc is non-NULL before
+ calling through the pointer. The line function could have been
+ removed by the application before readline processes any typeahead
+ input. Bug reported by Matthias Klose <doko@debian.org>, pointer
+ to root cause from Koichi Murase <myoga.murase@gmail.com>
- 12/6
- ----
-test.c
- - test_unop: make sure op[1] != 0 before testing op[2]
- - term: make sure argv[pos][1] != 0 before testing argv[pos][2]. Fixes
- oob-read reported by Jerzy Kramarz <op7ica@gmail.com>
+lib/glob/glob.c
+ - skipname,wskipname: put in some additional checks for `.' to ensure
+ that we don't get false positives (or incomplete tests) that can
+ affect the results of extglob patterns. Reported by
+ gregrwm <rhn-users@greatlakedata.com>
- 12/7
+ 1/27
----
lib/glob/glob.c
- - glob_filename: assign the return value of realloc (results, ...) to
- a temp pointer, so if realloc returns NULL, we make sure we free
- results. Report from Kirill Timofeev <kt97679@gmail.com>
-
- 12/12
- -----
-lib/sh/shquote.c
- - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte
- characters that are in the current locale's <blank> character class
-
-builtins/printf.def
- - printf_builtin: when processing the `%q' format, make sure to
- backslash quote all <blank> characters by making sure that FLAGS
- passed to sh_backslash_quote includes 2. Fixes issue for certain
- iso-8859-1 locales where character 160 (octal 240, hex 0xa0) is a
- non-breaking space. Report from Stephane Chazelas
- <stephane.chazelas@gmail.com>
-
-lib/sh/eaccess.c
- - sh_stat: if DEV_FD_STAT_BROKEN is defined, take /dev/fd/N and turn
- it into a stat on file descriptor N, as if /dev/fd were not
- available. This is the case on some old versions of SunOS. Report
- and patch from Dmitry Goncharov <dgoncharov@users.sf.net>
-
-config.h.in
- - DEV_FD_STAT_BROKEN: add define
-
-configure.ac
- - --enable-dev-fd-stat-broken: new command-line option, defines
- DEV_FD_STAT_BROKEN if supplied at configure time
-
-doc/bashref.texi
- - --enable-dev-fd-stat-broken: document new command-line option for
- configure
-
-arrayfunc.c
- - assoc_expand_once: new variable, declared here just because
-
-arrayfunc.h
- - assoc_expand_once: extern declaration
- - AV_NOEXPAND: new flag value for the array_value family of functions:
- means to not run associative array subscripts through word expansion
-
-builtins/set.def
- - unset_builtin: call unbind_array_element with assoc_expand_once as
- third arg, controls whether we expand associative array subscripts
- (if 1, we suppress the usual expansion). With accompanying shopt,
- provides backwards compatible option to solve problem with quotes
- and other characters in associative array subscripts pointed out
- most recently by Mingye Wang (Arthur2e5) <arthur200126@gmail.com>
-
-builtins/shopt.def
- - assoc_expand_once: new option, controls value of internal variable
- with the same name. Currently undocumented because I'm not completely
- sold on the name
-
-expr.c
- - evalexp: now takes a second argument, flags. Changed all callers in
- multiple other files (builtins/let.def,execute_cmd.c,arrayfunc.c,
- subst.c,test.c,variables.c)
-
-externs.h
- - EXP_EXPANDED, new flag for second argument to evalexp
-
-builtins/let.def
- - let_builtin: add EXP_EXPANDED to flags passed to evalexp
+ - extglob_skipname,wextglob_skipname: fixed an off-by-one error (SE
+ was being set to one character before the end of the pattern string,
+ not the null character at the end of the pattern string like other
+ callers of glob_patscan) that caused the last character of the last
+ subpattern to be cut off when calling skipname
+ - extglob_skipname,wextglob_skipname: some cleanups so the code is
+ closer to identical for the single-byte and wide character versions
+ 2/1
+ ---
execute_cmd.c
- - execute_arith_command: add EXP_EXPANDED to flags passed to evalexp,
- since the command string is run through expand_words_no_vars before
- being evaluated
-
-expr.c
- - set expression-global variable already_expanded if flags arg to
- evalexp contains EXP_EXPANDED
- - if assoc_expand_once option set and already_expanded flag set, pass
- 1 in flags to array_variable_part to skip over quotes and expansions
- in the subscript
- - if those two variables set, pass AV_NOEXPAND as flag to
- get_array_value to prevent word expansions on the subscript
-
-arrayfunc.c
- - if flags passed to unbind_array_element includes 1, pass flag on to
- skipsubscript so we don't expect matched quotes or process
- expansions in the subscript
- - if flags to array_value_internal include AV_NOEXPAND, pass 1 as flag
- to array_variable_part to pass along to skipsubscript
- - if flags to array_value_internal include AV_NOEXPAND, don't call
- expand_assignment_string_to_string; just use the unexpanded subscript
- to produce the key [THIS IS A WORK IN PROGRESS]
-
- 12/14
- -----
-subst.h
- - ASS_NOEXPAND: assignment flag that inhibits expansion of associative
- array subscripts
-
-variables.c
- - bind_int_variable: takes new flags arg; flags are taken from the
- ASS_ set of assignment flags, changed callers (bashline.c, expr.c,
- pcomplete.c)
- - bind_int_variable: if flags includes ASS_NOEXPAND, pass 1 as flag to
- valid_array_reference and array_variable_part to pass along to
- skipsubscript, so we don't try to skip over quoted strings in the
- subscript
- - bind_int_variable: pass flags along to assign_array_element
-
-variables.h
- - bind_int_variable: updated extern declaration with new flags arg
-
-expr.c
- - expr_bind_variable: if the assoc_expand_once option is enabled, and
- the flags to evalexp indicate that we have already run the expression
- through word expansion, pass ASS_NOEXPAND as flag to bind_int_variable
-
-arrayfunc.c
- - assign_array_element: if flags includes ASS_NOEXPAND, pass 1 as flag
- to array_variable_name to pass along to skipsubscript
- - assign_array_element: if flags includes ASS_NOEXPAND, don't run an
- associative array subscript through word expansion, just use as-is
+ - execute_simple_command: in posix mode, if we have a variable
+ assignment error while assigning into the temporary environment (e.g.,
+ assigning to a readonly variable), a non-interactive shell running a
+ special builtin exits; a non-interactive shell running anything else
+ jumps back to the top level. A shell compiled with -DSTRICT_POSIX
+ exits unconditionally.
+ - execute_simple_command: make sure posix mode sets $? to non-zero
+ if a variable assignment error occurs preceding a non-special builtin
subst.c
- - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic
- substitution because the string has already been expanded with
- expand_arith_string
-
- 12/15
- -----
-builtins/read.def
- - read_builtin: use value of assoc_expand_once for valid_array_reference
- as with other uses
- - bind_read_variable: if assoc_expand_once is set, pass ASS_NOEXPAND
- to assign_array_element
+ - do_assignment_statements: take the code from expand_word_list_internal
+ that performs assignment statements, either standalone or preceding
+ simple command names, and factor it out into this function
+ - expand_word_list_internal: call do_assignment_statements where
+ appropriate
-general.c
- - assignment: instead of checking whether flags == 0 to allow a `[',
- explicitly check for (flags&1) to disallow it. This leaves the door
- open for additional flag values
+ 2/2
+ ---
+lib/glob/glob.c
+ - dequote_pathname: fix function definition for non-multibyte systems.
+ Report and fix from Marc Aurèle La France <tsi@tuyoix.net>
-builtins/printf.def
- - printf_builtin: use value of assoc_expand_once for
- valid_array_reference as with other uses
- - bind_printf_variable: if assoc_expand_once is set, pass ASS_NOEXPAND
- to assign_array_element
+Makefile.in,doc/Makefile.in
+ - for certain targets, remove files before creating them to deal with
+ symlinked build trees.
+ Report and fix from Marc Aurèle La France <tsi@tuyoix.net>
- 12/16
- -----
-builtins/history.def
- - change history -d option to handle negative arguments; negative
- arguments offset from the end of the history list (last_position + 1
- so history -d -1 deletes the history -d command that just got
- added). Original patch from Piotr Grzybowski <narsil.pl@gmail.com>
+examples/loadables/accept.c
+ - include limits.h before typemax.h
+ Report and fix from Marc Aurèle La France <tsi@tuyoix.net>
-doc/bash.1,lib/readline/doc/hsuser.texi
- - documented new behavior of negative offsets for `history -d'
+builtins/gen-helpfiles.c
+ - if USING_BASH_MALLOC is defined, make sure to undefine malloc as well
+ as free. Fixes bug reported by George R Goffe <grgoffe@yahoo.com>
- 12/17
- -----
-lib/readline/history.c
- - remove_history: use memmove to move the history list around instead
- of a loop that copies pointers one at a time, similar to add_history
+builtins/Makefile.in
+ - install-help: now depends on $(HELPFILES_TARGET) so we make sure the
+ separate helpfiles are created before we try to install them if we
+ don't go through the `all' makefile target
- 12/19
- -----
configure.ac
- - linux: make sure PGRP_PIPE is defined unconditionally for all kernel
- versions greater than 2.3.*
+ - HELPDIR: now ${datadir}/bash/helpfiles
-lib/readline/history.c
- - clear_history: when clearing the history, reset history_base to 1
- (its default)
- - remove_history_range: new function, removes a set of history entries
- and returns them all for deallocation
-
-lib/readline/history.h
- - remove_history_range: extern declaration
-
- 12/20
- -----
-execute_cmd.c
- - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the
- expression through expand_words_no_vars
-
- 12/21
- -----
-input.c
- - b_fill_buffer: when read returns EOF or error, and we reset the
- buffer and pointers, reset the input pointer to 0. Fixes issue
- reported by Stephane Chazelas <stephane.chazelas@gmail.com>
-
- 12/22
- -----
-arrayfunc.[ch],subst.c
- - array_expand_index: added new FLAGS argument, reserved for future use,
- changed callers
-
-
- 12/24
- -----
-variables.c
- - can_optimize_assignment,optimized_assignment: see if we can detect
- whether or not we're trying to append a string to a string variable,
- and optimize that using realloc/strcpy. Based on a log-ago
- suggestion from Aharon Robbins <arnold@skeeve.com>
-
- 12/27
- -----
-builtins/help.def
- - help_builtin: don't pass return value from ngettext() directly to
- printf
-
- 12/28
- -----
-sig.c
- - set_signal_handler: set SA_RESTART for SIGWINCH, so window size
- changes don't interrupt open/read/write. Suggested by
- Andriy Prystupa <andriy.prystupa@globallogic.com> back in 10/2016
+ 2/3
+ ---
+parse.y
+ - parse_string_to_word_list: before expanding a compound assignment
+ statement body, make sure to save any alias that's currently being
+ expanded. Restore the alias after the compound assignment is parsed.
+ Reported back in 11/2020 by Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com>
- 12/30
- -----
-execute_cmd.c
- - coproc_pidchk: if MULTIPLE_COPROCS, call cpl_search to find coproc
- associated with pid, don't remove it from the list with cpl_delete.
- Just mark as dead and wait for coproc_reap/cpl_reap to take care
- of disposing it
- - execute_coproc: NEW FEATURE: run the coproc name through word
- expansion before creating the coproc; this allows unique coprocs
- to be created in loops. Originally requested way back in 2012 by
- Erik Brandsberg <ebrandsberg@juniper.net>
+ 2/4
+ ---
+lib/readline/histexpand.c
+ - history_expand_internal: when calling the history_inhibit_expansion
+ function, make sure to call it using the string as we've expanded it
+ to that point (RESULT), adding the expansion and next characters
+ temporarily, since we make expansion decisions based on what we've
+ accumulated, not what we started with. This makes things like
+ echo abc!$!$ work, where before the second `!' inhibited expansion
+ because bash_history_inhibit_expansion mistakenly took it as the
+ second character in a `$!' word expansion. Fixes bug reported back
+ in 10/2020 by Paul Fox <paul.d.fox@gmail.com>
-command.h
- - subshell_com: now has a line number member: line
+array.h
+ - array_pop: instead of calling array_dispose_element from this macro,
+ just call array_shift with the AS_DISPOSE flag
-make_cmd.c
- - make_subshell_command: assign current line number (line number of the
- ending right paren) to `line' member
-
-copy_cmd.c
- - copy_subshell_command: copy the `line' member
-
-execute_command.c
- - execute_command_internal: when executing a user subshell (`(command)'),
- set the line number and line number for the ERR trap from the line
- number saved in the subshell command struct. Fix from
- Eduardo A. Bustamante López <dualbus@gmail.com>
- - execute_arith_command: set line number for ERR trap from line number
- saved in the arith command struct. Fix from
- Eduardo A. Bustamante López <dualbus@gmail.com>
- - execute_cond_command: set line number for ERR trap from line number
- saved in the cond command struct. Fix from
- Eduardo A. Bustamante López <dualbus@gmail.com>
+ 2/5
+ ---
+bashhist.c
+ - shell_comment: move condition to return 0 if the delimiter stack is
+ not empty or the shell is parsing a here document into the function
+ itself, don't have the callers check so the check is in one place.
+ Fixes bug reported by Oguz <oguzismailuysal@gmail.com>
-variables.c
- - bind_variable_internal: move can_optimize_assignment call to the
- right place
+array.h,variables.c
+ - ARRAY_ELEMENT_REPLACE: convenience define for modifying an array
+ element's value
- 12/31
- -----
variables.c
- - find_variable_nameref: treat a circular variable reference as
- referring to a variable of that name in the global scope (for now),
- if one exists. PROVISIONAL change: inspired by suggestion back in
- 6/2016 by Grisha Levit <grishalevit@gmail.com>
-
- 1/2/2017
- --------
-{expr,general,hashcmd}.c
- - include flags.h for flag values
-
-make_cmd.c
- - include shell.h instead of the files it includes
-
-flags.h
- - new extern declarations for want_pending_command, read_from_stdin
-
-subst.h
- - add extern declaration for expanding_redir, assigning_in_environment
-
-trap.h
- - add extern declaration for running_trap
-
-execute_cmd.h
- - added extern declarations for variables declared in execute_cmd.c,
- changed files that declare lots of extern variables
-
-shell.h
- - added extern declarations for variables declared in shell.c,
- changed files that declare lots of extern variables
-
-parser.h
- - added extern declarations for variables declared in parse.y,
- changed files that declare lots of extern variables
+ - pop_args: a couple of code simplifications
-[lots of changes to reduce the number of extern declarations in C and DEF files]
-
-parse.y
- - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to
- use STRING_SAVER
-
- 1/3
+ 2/7
---
-sig.c
- - termsig_handler: don't call end_job_control if subshell_environment
- indicates that we're in a command or process substitution.
- Provisional fix for bug reported by Russell King <rmk@armlinux.org.uk>
-
-jobs.c
- - end_job_control: only attempt to give the terminal back to
- original_pgrp if job_control != 0; don't test interactive_shell
-
-execute_cmd.c
- - execute_disk_command: call QUIT after search_for_command, since
- the only time QUIT gets called is when the path is actually
- searched. It doesn't happen for an absolute pathname. Fix for
- bug reported by Russell King <rmk@armlinux.org.uk>
-
- 1/16
- ----
-lib/glob/glob.c
- - extglob_skipname,wextglob_skipname: if we don't find a reason to
- not skip the name in any subpattern (r returns 0 for any subpattern),
- return 1 because we should skip the name
- - extglob_skipname,wextglob_skipname: if we don't find a reason to
- not skip the name in any subpattern, but the first part of the extglob
- pattern is a wildcard (`*(pat)'), check the rest of the pattern, if
- any, to decide whether or not to skip the name. Fixes bug reported
- by Grisha Levit <grishalevit@gmail.com>
-
-lib/glob/glob_loop.c
- - CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR
-
-lib/glob/glob.c
- - wchkname -> wskipname
- - wskipname: now takes a third `flags' argument, like the other variants
- of skipname
+lib/malloc/malloc.c
+ - pagesz: at least MALLOC_PAGESIZE_MIN (4096) bytes
+ - union mhead: now 16-byte aligned on all systems, 32-bit and 64-bit
+ pointers
+ - binsizes: since the smallest allocation overhead is now 16 bytes,
+ redo the buckets so binsizes[0] == 32; adjust the thresholds for
+ split/coalesce/prepopulate/mmap (NBUCKETS = 28; STARTBUCK = 0).
+ Sizes stay pretty much the same; indices change
+ - consistently use MALLOC_SIZE_T instead of long/unsigned int/int
+ - use MAGIC8_NUMBYTES as the length of the mh_magic8 buffer, in case
+ it changes later for alignment
+ - internal_remap: new function, calls mremap to reallocate a chunk of
+ memory allocated using mmap(); called from internal_realloc if the
+ old size and new size are both bigger than the mmap threshold
+ - internal_realloc: call internal_remap if the old size and new size
+ are both above the threshold where we use mmap for allocation
- 1/17
+ 2/10
----
-redir.c
- - here_document_to_fd: set the file descriptor open for writing to the
- here document to be close-on-exec. Fixes bug reported by
- Siteshwar Vashisht <svashisht@redhat.com>
+include/timer.h
+ - new file, declaration for a timer struct to be used by a set of
+ functions to implement timers using SIGALRM or select/pselect
- 1/18
- ----
-{gmisc,gm_loop}.c
- - match_pattern_char,match_pattern_wchar: moved to gm_loop.c (new file),
- compile twice for single and wide characters as with the rest of
- the functions
- - umatchlen,wmatchlen: ditto
- - extglob_pattern_p: move to gm_loop.c, generalize for regular and
- wide-char versions
+lib/sh/timers.c
+ - new file, set of functions to manipulate timer objects and timeouts
+ using SIGALRM or select/pselect. Inspired by a patch from
+ Koichi Murase <myoga.murase@gmail.com>. Not used yet
- 1/19
+ 2/11
----
-lib/readline/complete.c
- - stat_char: fix small memory leak if stat/lstat returns -1
+builtins/read.def
+ - read_builtin: if there is a timeout set, block SIGCHLD around calls
+ to zread and its siblings, or calls to readline for `read -e', so
+ SIGCHLD (and the consequent waitpid) doesn't interrupt the read.
+ Fixes bug reported by Koichi Murase <myoga.murase@gmail.com>, but
+ there may be a different fix coming
-bashline.c
- - bash_filename_stat_hook,bash_directory_completion_hook: make sure
- expand_prompt_string is caled wth W_NOPROCSUB flag
- - directory_exists: don't dequote the filename passed as an argument;
- this function should never get quoted pathnames
+Makefile.in,builtins/Makefile.in
+ - fix up dependencies, especially on builtins.h and builtext.h
-subst.c
- - expand_word_internal: when calling expand_word_internal recursively
- after reading a double-quoted string, make sure the W_NOCOMSUB and
- W_NOPROCSUB flags make it to the recursive invocation. Fixes bug
- reported by Jens Heyens <jens.heyens@cispa.saarland>
- 1/23
+ 2/12
----
-lib/readline/signals.c
- - _rl_orig_sigset: original signal mask, set and restored by
- rl_set_signals (rl_clear_signals doesn't block signals). If we
- are not installing signal handlers, just save signal mask each
- time rl_set_signals is called
-
lib/readline/input.c
- - rl_getc: use _rl_orig_sigmask in the call to pselect(), so we block
- the set of signals originally blocked by the calling application.
- Fixes bug reported by Frédéric Brière <fbriere@fbriere.net>
-
-parse.y
- - yy_readline_get: try to unset NONBLOCK mode on readline's input
- file descriptor before calling readline(). Inspired by report from
- Siteshwar Vashisht <svashisht@redhat.com>
-
- 1/30
- ----
-parse.y
- - parse_comsub: don't unconditionally set the LEX_WASDOL flag when we
- see a `$'; we should toggle it to accommodate things like $$.
- Fixes bug reported by Christian Weisgerber <naddy@mips.inka.de>
- - parse_matched_pair: do the same thing with LEX_WASDOL
-
- 2/1
- ---
-jobs.h
- - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of
- functions
-
-jobs.c
- - wait_for_job, wait_for_any_job: take new flags argument for use by
- the wait builtin
- - wait_for_job: if JWAIT_FORCE flag supplied, loop waiting for job to
- terminate instead of change state
- - wait_for_single_pid: if JWAIT_FORCE flag supplied, loop waiting for
- child process to terminate instead of change state
+ - rl_read_key: if we set rl_done == 1, set RL_STATE_DONE as well
+ Reported by Koichi Murase <myoga.murase@gmail.com>
-builtins/wait.def
- - takes a new `-f' option, signifying to wait until the specified job
- or process terminates, instead of changes state
-
-doc/{bash.1,bashref.texi}
- - wait: document the new -f option and its behavior when job control
- is enabled
- - job control: add a paragraph describing how the wait builtin changes
- behavior when job control is enabled: it returns when a job changes
- state
-
- 2/2
- ---
-examples/loadables/fdflags.c
- - fdflags: new loadable builtin to set and unset file descriptor flags
- (such as non-blocking, though bash undoes that) for descriptors bash
- has open. Developed in consultation with Christos Zoulas
- <christos@zoulas.com>
+lib/readline/isearch.c
+ - _rl_search_getchar: only call _rl_read_mbstring if rl_read_key returns
+ >= 0, avoid some work
- 2/3
- ---
+lib/readline/vi_mode.c
+ - _rl_vi_callback_change_char,_rl_vi_change_char: don't overwrite the
+ last replacement string if _rl_vi_callback_getchar returns -1.
+ It will likely make no difference, since the next read will return
+ an error or EOF, but being careful
+ - rl_vi_overstrike: if _rl_overwrite_char doesn't return 0, break out
+ of the loop
lib/readline/text.c
- - rl_previous_screen_line: attempt to move to the same column on the
- previous screen line of the current readline buffer by moving back
- a number of characters equal to the screen width
- - rl_next_screen_line: attempt to move to the same column on the
- next screen line of the current readline buffer by moving forward
- a number of characters equal to the screen width. Both originally
- suggested by Hans Ginzel <hans@matfyz.cz>
+ - _rl_overwrite_char: return 1 if _rl_read_mbstring returns < 0 so
+ we don't try to insert garbage
-lib/readline/readline.h
- - rl_{next,previous}_screen_line: extern declarations
-
-lib/readline/funmap.c
- - {next,previous}-screen-line: new bindable command names
-
-lib/readline/doc/{rluser.texi,readline.3}
- - {next,previous}-screen-line: document behavior, including limitations
-
- 2/5
- ---
-lib/readline/input.c
- - rl_read_key: when reading input from a macro, make sure to return
- the next character as an unsigned char, so we handle multibyte
- character sequences correctly. Report and fix from Grisha Levit
- <grishalevit@gmail.com>
-
- 2/6
- ---
-shell.c
- - --pretty-print: new invocation option, currently undocumented, dumps
- a pretty-printed version of a shell script given as an argument to
- stdout
- - main: call pretty_print_loop() if we're in pretty-printing mode in
- a non-interactive shell
-
-eval.c
- - pretty_print_loop: new function, similar to reader_loop, reads
- commands and prints them by displaying the result from
- make_command_string()
-
-externs.h
- - pretty_print_loop: new extern declaration
-
- 2/9
- ---
-doc/{bash.1,bashref.texi}
- - here strings: correct documentation to note they do not undergo
- brace expansion. Report from Conor McCarthy <mr.spuratic@gmail.com>
-
- 2/9
- ---
-lib/readline/display.c
- - expand_prompt: instead of recomputing the line break offsets for
- prompts that span multiple screen lines on every call to rl_redisplay,
- do it here. Manage a local array local_prompt_newlines; set an offset
- every time `physchars' hits a multiple of the screen width. Inspired
- by https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=843819
- - rl_redisplay: don't calculate multi-line prompt line break indices
- here; use the values calculated by expand_prompt
- - rl_{save,restore}_prompt: save and restore local_prompt_newlines
+bashline.c
+ - posix_edit_macros: handle rl_read_key() returning <= 0
- 2/11
+ 2/15
----
-lib/readline/mbutil.c
- - _rl_find_prev_mbchar_internal: since we're traversing the string
- from the beginning, shortcut non-multibyte characters in a UTF-8
- locale
-
parse.y
- - parse_comsub: if we are parsing a here document with a quoted
- delimiter (LEX_QUOTEDDOC), we should not remove <backslash><newline>
- pairs from the body of the here document. Need to add LEX_QUOTEDDOC
- to the values in tflags when calling shell_getc. Fixes bug reported
- by Michael Homer <michael.homer@ecs.vuw.ac.nz>, patch was originally
- contributed by Geir Hauge <geir.hauge@gmail.com>
+ - read_comsub: make sure to turn on the LEX_RESWDOK flag if we are in
+ a case statement and read a `)', since we can get a valid `esac'.
+ Fixes bug reported by Oguz <oguzismailuysal@gmail.com>
+ - read_comsub: if we're in a case statement, recognize `}' as a
+ reserved word and set the LEX_RESWDOK flag for the next word, since
+ we can get an esac (or another reserved word) after it
- 2/15
+ 2/16
----
-jobs.c
- - bgp_add: if hashed pid collides with bgpids.head index, print a
- warning and move to the next index. Attempt to avoid collision
- problem reported by Graham Northup <northug@clarkson.edu>
+parse.y
+ - reserved_word_acceptable: add ARITH_CMD and COND_END to the list of
+ tokens that can precede a reserved word, so you can use reserved
+ words after ((...)) and [[...]].
+ Reported by Koichi Murase <myoga.murase@gmail.com>
2/17
----
-subst.c
- - process_substitute: call remove_quoted_escapes on the command string
- like command substitution does, since the string will be run through
- the parser again. Fixes bug reported by David Simmons
- <bug-bash@tmp.davidsimmons.com>
-
-config-top.h
- - STATIC_PATH_VALUE: new config variable, undefined by default
-
-variables.c
- - shell_initialize: if STATIC_PATH_VALUE is defined, use it to set the
- PATH variable at shell startup, overriding the environment and any
- value for DEFAULT_PATH_VALUE. Based on a suggestion from
- Lonnie Abelbeck <lonnie@abelbeck.com>
-
- 2/18
- ----
-shell.c
- - maybe_make_restricted: clear the hash table before making the PATH
- variable read-only by calling stupidly_hack_special_variables.
- Suggestion from Lonnie Abelbeck <lonnie@abelbeck.com>
-
-subst.c
- - expand_string_for_pat: change expansion of WORD in ${param[%[%]][#[#]]word}
- to use this new function, initially identical to
- expand_string_for_rhs
- - getpattern: use expand_string_for_pat to expand the pattern
+parse.y
+ - parse_comsub: use new LEX_CASEWD flag to track when we are reading
+ the WORD in `case WORD in' and turn on the LEX_RESWDOK flag when
+ that word ends. This allows $(case x in esac), which no one uses.
+ - parse_comsub: use LEX_PATLIST flag to track when we are reading a
+ case pattern list so `|' doesn't turn on the LES_RESWDOK flag
+ - parse_comsub: case_level: simple counter to count the number of esacs
+ we need to see before we're no longer in a case statement; analog of
+ esacs_needed_count from the lexer
2/19
----
-subst.c
- - expand_string_for_rhs: now that this is only used to expand the RHS
- of the various non-pattern ${paramOPword} expansions, set
- expand_no_split_dollar_star depending on whether or not the entire
- brace expansion is going to be subjected to word splitting: if it's
- quoted or if IFS is set but null, we will not be splitting so we set
- this to 1 and let $* expand to separate fields separated by a space.
- This was heavily debated back in October 2014 and resulted in Posix
- interp 888. Reported by Martijn Dekker <martijn@inlv.org>
-
- 2/20
- ----
-subst.c
- - expand_string_for_rhs: now takes `op' (brace expansion operator) as
- an additional argument; changed call in parameter_brace_expand_rhs
- - expand_string_for_rhs: make sure to set expand_no_split_dollar_star
- if `op' is `=', since we are supposed to preserve the assignment
- statement expansion semantics on the RHS of ${param=word}
-
-jobs.c
- - bgp_delindex: make sure to set ps->pid to NO_PID so we more
- effectively remove it from the hash table. It shouldn't matter as
- long as nothing in pidstat_table points to it, but better to be safe
- - bgp_delete,bgp_search: generalize previous collision detection to
- loop detection: abort search if we are going to go back to the
- first index we tried
-
- 2/21
- ----
-lib/readline/vi_mode.c
- - rl_vi_bword: if we're trying to move backward to non-whitespace
- in a line that begins with whitespace, make sure we don't move
- point to 0 and test memory locations before the start of the
- buffer. Report and fix from Jason Hood <jadoxa@yahoo.com.au>
-
-lib/readline/display.c
- - expand_prompt: if _rl_screenwith == 0, call rl_reset_screen_size to
- initialize it. If it's still 0 after that, guess that the screen
- width is 80 and use that to guess how many screen lines the prompt
- consumes
-
-lib/readline/readline.c
- - readline_internal_setup: if in emacs editing mode, and we are
- showing the editing mode in the prompt, call _rl_reset_prompt() to
- make sure that the updated setting of _rl_show_mode_in_prompt
- (presumably set in an inputrc file) is reflected in the redisplay
- performed by rl_callback_newline via readline_internal_setup.
- Fix from Jason Hood <jadoxa@yahoo.com.au>
-
- 2/22
- ----
-builtins/complete.def
- - print_one_completion,print_compopts: make sure to display the
- `nosort' and `noquote' options if they've been set for a particular
- compspec. Fix from Grisha Levit <grishalevit@gmail.com>
-
-builtins/read.def
- - read_builtin: if -e is supplied, read needs to free rlbuf before
- returning, since it uses discard_unwind_frame at that point. Bug
- and fix from ZhangXiao <xiao.zhang@windriver.com>
-
-execute_cmd.c
- - execute_for_command: when using a nameref as the for loop control
- variable, make sure we check for readonly namerefs and make sure
- that we force bind_variable to enforce restrictions on nameref
- assignments. Fix from Grisha Levit <grishalevit@gmail.com>
-
- 2/23
- ----
-general.c
- - make_absolute: convert deprecated cygwin_conv_to_full_posix_path
- to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...)
-
-{shell,variables}.c,config-top.h
- - modify change from 2/17: rename STATIC_PATH_VALUE to RBASH_STATIC_PATH_VALUE;
- don't use it in shell_initialize; set PATH to it just before
- imposing restricted shell restrictions
+parse.y
+ - CHECK_FOR_RESERVED_WORD: don't return ESAC if we read `esac' after a
+ left paren in a case pattern list. From an austingroup-bugs discussion
+ about https://www.austingroupbugs.net/view.php?id=1454
+ - parse_comsub: if we read a `(' while looking for a case pattern list
+ and LEX_CKESAC is set, we have a leading left paren in the pattern
+ list and should turn off LEX_CKESAC so (esac) doesn't prematurely
+ terminate the case command. From an austingroup-bugs discussion
+ about https://www.austingroupbugs.net/view.php?id=1454
- 2/24
+ 2/26
----
-subst.c
- - expand_string_for_rhs: revert change from 2/19 concerning setting
- expand_no_split_dollar_star so we are consistent with the Posix
- examples. This anticipates Martijn Dekker initiating an austin
- group discussion about this case
+builtins/history.def
+ - history_builtin: when checking negative offsets to -d, which are
+ supposed to count back from the end of the history list, check the
+ range against 0 instead of history_base, because the calculation is
+ done against history_length, which is independent of history_base.
+ Report and fix from Christopher Gurnee <chris@gurneeconsulting.net>
- 2/25
+ 2/28
----
-pcomplete.c
- - gen_shell_function_matches: if COMPREPLY is an associative array,
- don't coerce it to an indexed array, which will fail to produce any
- matches anyway. Report from Grisha Levit <grishalevit@gmail.com>
- - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore
- the nameref attribute. Report from Grisha Levit
- <grishalevit@gmail.com>
+doc/bashref.texi
+ - replaced a number of uses of @var with a mixture of @env and @dfn
+ to better match up with the texinfo standards
-subst.c
- - parameter_brace_expand: if expand_no_split_dollar_star is set, make
- sure chk_atstar treats ${var[*]} as quoted by passing Q_DOUBLE_QUOTES
- as the second argument. Fixes differing treatment of $* and ${v[*]}
- reported by Grisha Levit <grishalevit@gmail.com>, because otherwise
- *contains_dollar_at gets set to 1 and the word is inappropriately
- split
+doc/{bash.1,bashref.texi}
+ - clarify some aspects of the coproc description, especially the
+ use of NAME and when it's optional
3/1
---
subst.c
- - expand_word_list_internal: if a variable assignment fails (e.g., due
- to a readonly variable) in a non-interactive posix mode shell, don't
- abort the shell if the assignment is being performed by the command
- builtin, even if it's something like `command eval v=1'. Fixes
- RedHat bug https://bugzilla.redhat.com/show_bug.cgi?id=1389838
- (reported by Denys Vlasenko)
+ - read_comsub: fix off-by-one error in mbrtowc that causes a read one
+ character past the end of buf. Report and fix from
+ Platon Pronko <platon7pronko@gmail.com> in
+ https://savannah.gnu.org/patch/?10035
3/3
---
-builtins/shopt.def
- - set_compatibility_level: make sure that changing the compatibility
- level sets or modifies BASH_COMPAT. Fixes bug reported by
- Stephane Chazelas <stephane.chazelas@gmail.com>
-
-lib/glob/smatch.c
- - is_cclass: broke into two functions: is_valid_cclass and cclass_test,
- for future expansion. No functionality change
-
-lib/glob/sm_loop.c
- - BRACKMATCH: when testing a character against a character class name,
- use the unfolded (original) character, since we're not performing a
- comparison. This is what glibc does. Fixes bug reported by
- Lukáš BaÅinka <lukas.barinka@boxtrap.net>
+builtins/ulimit.def
+ - ulimit_builtin: Posix compatibility: if the last command specified
+ by an option does not have an option argument, but there is an
+ operand remaining after all the options are parsed, treat the
+ operand as an argument to that last command. From an austin-group
+ discussion and a Geoff Clare suggestion back in November, 2020.
+ Austin Group interpretation 1418
+
+examples/shellmath
+ - a package of shell functions to perform floating-point math entirely
+ in bash. Contributed by Michael Wood <mawood20@gmail.com>. Available
+ at https://github.com/clarity20/shellmath
3/4
---
-doc/{bash.1,bashref.texi}
- - note that the arguments to -eq and the rest of the arithmetic
- operators are evaluated as expressions when using [[. Report from
- Rob la Lau <rob@ohreally.nl>
+support/shobj-conf
+ - darwin: take out the -arch-only option in SHOBJ_XLDFLAGS and
+ SHOBJ_ARCHFLAGS; no longer needed
+doc/{bash.1,bashref.texi}
+ - coprocesses: suggested changes from rms@gnu.org; recommend the
+ `coproc NAME { commands; }' form as the simplest and most flexible
- 3/7
+ 3/5
---
-lib/readline/display.c
- - update_line: completely rewrote the code that handles line wrapping
- in the presence of multibyte/double-width characters; punts to a
- dumb update in cases where the number of screen positions doesn't
- match
- - update_line: in one case, where we are deleting characters from the
- line, if we are writing a non-space into the last screen character
- position, note that we are no longer using a space as a placeholder
- for a line wrap where there is a multi-width character that won't
- fit on the screen line (wrapped_line[current_line+1] = 0)
+builtins/exec.def
+ - exec_builtin: set last_command_exit_value before calling exit_shell
+ so any exit trap gets the right value for $?. From Matthew Bauer
+ <mjbauer95@gmail.com> via https://savannah.gnu.org/patch/?10039
- 3/10
- ----
-lib/readline/readline.c
- - bind_arrow_keys_internal: add default key bindings for control-
- arrow keys, suggested by Per Bothner <per@bothner.com>
+ 3/8
+ ---
+include/timer.h
+ - SHTIMER_ALRMSET: new flag, indicates that there is an active alarm
+ associated with this timer (falarm() was called)
- 3/13
- ----
-doc/{bash.1,bashref.texi}
- - clarify the prompt strings the undergo expansion (PS0, PS1, PS2, and
- PS4) before being displayed. Based on a report from Grisha Levit
- <grishalevit@gmail.com>
+lib/sh/timers.c
+ - shtimer_set: set the SHTIMER_ALRMSET flag after calling falarm
+ - shtimer_unset: don't call falarm(0,0) unless the SHTIMER_ALRMSET flag
+ is set
- 3/14
- ----
-input.c
- - bufstream_ungetc: return EOF if being asked to unget a character to
- a NULL buffer
- - buffered_getchar: check buffered_fd is valid and buffers[buffered_fd]
- is non-NULL before trying to dereference. Fixes bug reported by
- floyd <floyd@floyd.ch>
+ 3/9
+ ---
+include/posixtime.h
+ - added some BSD convenience defines if they are not present
-execute_cmd.c
- - execute_null_command: if we fork to execute the command, the subshell
- is not interactive
- - execute_null_command: for safety's sake, if a redirection attached
- to a null command affects fd 0 or the fd the shell is reading for
- input, and the redirection can potentially change or close that file
- descriptor, force a fork so the redirection is done in a subshell
+parse.y,shell.h
+ - {save,restore}_parser_state: save and restore shell_eof_token and
+ pushed_string_list; change callers (e.g., xparse_dolparen) so they
+ don't have to manage them
- 3/15
+ 3/10
----
-lib/readline/display.c
- - update_line: if we have to output some bytes, and we are outputting
- the prompt string, make sure we correct _rl_last_c_pos if we are
- at the wrap offset -- what if all of the characters in the prompt
- are invisible, so the visible length is 0? Fixes display bug
- reported by Grisha Levit <grishalevit@gmail.com>
+builtins/common.h
+ - extern declarations for moving to timers (sh_timer) for read builtin
+ timeouts
-execute_cmd.c
- - undo_partial_redirects: new function, performs redirections specified
- in redirection_undo_list and disposes of them. Intended to be used
- to unwind redirections performed before a redirection error
- - dispose_partial_redirects: new function, disposes of
- redirection_undo_list and nulls the list
- - execute_command_internal: use undo_partial_redirects
+quit.h
+ - CHECK_ALRM: remove, no longer used
-execute_cmd.h
- - undo_partial_redirects: extern declaration
- - dispose_partial_redirects: extern declaration
+trap.c
+ - check_signals: call check_read_timeout instead of CHECK_ALRM
-subst.c
- - exp_jump_to_top_level: if we are throwing an expansion error while
- expanding a redirection (expanding_redir != 0), undo any undoable
- redirections by calling undo_partial_redirects() so we don't leave
- any in place
+bashline.c
+ - bash_event_hook: use read_timeout instead of checking `sigalrm_seen';
+ that no longer exists
+ - bash_event_hook: accommodate readline timing out (not used yet)
-variables.c
- - initialize_shell_variables: if SHELLOPTS is in the environment,
- unset the readonly attribute on any existing variable with that
- name. It may have been created by processing a -o option on the
- command line. Fixes issue reported by Stephane Chazelas
- <stephane.chazelas@gmail.com>
+lib/sh/zread.c
+ - zread: call read_builtin_timeout() to check for a timeout before
+ calling a blocking read()
+
+builtins/read.def
+ - sigalrm,reset_timeout,check_read_timeout,read_builtin_timeout: new
+ and modified functions to use sh_timers for timeouts instead of
+ SIGALRM. Based on work contributed by Koichi Murase
+ <myoga.murase@gmail.com>
+ - read_builtin: use sh_timers for read timeouts (-t N) instead of
+ using SIGALRM
+ - edit_line: simulate receiving SIGALRM if readline times out (not
+ used yet)
- 3/16
+ 3/11
----
-lib/readline/histfile.c
- - read_history_range: short-circuit and do nothing if the history file
- is of 0 size
- - read_history_range: make sure the buffer is zero-terminated so the
- timestamp tests work right for history files of 1 character. Report
- and recommended fix from Denis Martinez <denis.martinez@gmx.com>
-
-lib/readline/complete.c
- - compute_lcd_of_matches: when trying to compute the common prefix
- of a set of matches while performing case-insensitive completion
- matching, don't sort the match list unless rl_sort_completion_matches
- is non-zero. Fixes problem reported by Roee Bar <roee@arista.com>
+lib/readline/readline.c
+ - rl_initialize: call _rl_timeout_init to set things up for any timeout
+ that was set with rl_set_timeout
+ - readline_internal_charloop: if we longjmped because of a timeout,
+ make sure to set rl_done/RL_STATE_DONE and return; we are
+ abandoning this call to readline(). The readline timeout changes
+ were based on work contributed by Koichi Murase
+ <myoga.murase@gmail.com>
- 3/18
- ----
-subst.c
- - extract_dollar_brace_string: handle process substitution embedded in
- a ${...} expansion in the same way as command substitution. Reported
- by D630 <d630@posteo.net>
+lib/readline/readline.h
+ - extern declarations for new timeout functions and hook
+ - rl_clear_timeout: new define
-parse.y
- - LEX_GTLT: new flag, set by parse_matched_pair when a `<' or '>' is
- read
- - parse_matched_pair: handle an embedded process substitution like an
- embedded command substitution if we are parsing an array index or
- a dollar-brace expansion. Reported by D630 <d630@posteo.net>
+lib/readline/callback.c
+ - rl_callback_read_char: if we longjmped because of a timeout,
+ make sure to set rl_done/RL_STATE_DONE and return; we are
+ abandoning this call to readline()
- 3/21
- ----
-subst.h
- - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by
- make_variable_value
+lib/readline/util.c
+ - _rl_abort_internal: if we time out, don't ring the bell; let the
+ caller handle it
-variables.c
- - make_variable_value: ASS_NOEVAL: if this is set, don't attempt
- arithmetic evaluation or case modification, just produce the value
- (still honor ASS_APPEND)
- - make_variable_value: ASS_NOLONGJMP: don't longjmp back to top_level
- if arithmetic evaluation fails due to a syntax error
- - bind_variable_internal: make sure aflags is passed to all calls to
- make_variable_value
- - push_temp_var: add ASS_NOLONGJMP to the flags passed to
- bind_variable_internal. Fixes bug reported by D630 <d630@posteo.net>
+lib/readline/input.c
+ - extern declarations for public and readline-library-private functions
+ and hooks to implement timeouts
+ - rl_set_timeout,rl_timeout_remaining: new public functions
+ - _rl_timeout_select: new function, uses select/pselect to implement
+ read timeouts that take timeouts set with rl_set_timeout into account;
+ calling hook function if a timeout occurs
+ - rl_gather_tyi, _rl_input_available: use _rl_timeout_select, taking
+ any existing timeout into consideration if it expires before the
+ timeout passed as an argument
+ - rl_getc: use _rl_timeout_select and handle any timeouts by calling
+ _rl_timehout_handle
+ - set_alarm,reset_alarm: new functions to implement timeouts using
+ SIGALRM for systems that lack a working select/pselect
+ - _rl_timeout_init: new function, sets things up for reading input
+ with a specified timeout
+ - _rl_timeout_handle: a timeout handler; calls any event hook and
+ sets up to abort the current readline() call
+ - _rl_timeout_handle_sigalrm: a timeout handler for systems using
+ SIGALRM to implement timeouts
+
+lib/readline/parens.c
+ - rl_insert_close: use _rl_timeout_select to take timeouts into account
-bashline.c
- - bash_execute_unix_command: don't bother to attempt optimization by
- checking whether the call to parse_and_execute changes $READLINE_LINE;
- it can be defeated by the new code that optimizes appends to string
- variables. Bug reported by Grisha Levit <grishalevit@gmail.com>
+lib/readline/rlprivate.h
+ - extern declarations for readline-library-private timeout functions
- 3/22
- ----
-subst.c
- - expand_string_for_rhs: re-apply change from 2/19 based on discussion
- on the austin-group mailing list about how unquoted ${var-$*}
- expands when IFS is null. Originally reported by Martijn Dekker
- <martijn@inlv.org>
+lib/readline/rltty.c
+ - rl_deprep_terminal: don't print a newline after the bracketed paste
+ disable sequence if we timed out
- 3/25
- ----
-parse.y
- - read_token_word: if we read a WORD immediately after a CASE, FOR, or
- SELECT, increment `expecting_in_token' to note that we're going to
- be reading IN as the next non-newline token
- - special_case_tokens: if we're expecting an IN (expecting_in_token > 0)
- and we have an "in", return IN and decrement expecting_in_token. This
- is a better implementation of Posix grammar rule 6 than the previous
- code in that function (which is still there for posterity, but should
- eventually be removed). Fixes bug reported by Torka Noda
- <kanito.tasoga@gmail.com>
+lib/readline/signals.c
+ - _rl_handle_signal: if sig is SIGALRM, call _rl_timeout_handle_sigalrm()
-subst.c
- - string_list_pos_params: if the expansion is not quoted, and IFS is
- null, return a string containing the quoted positional parameters
- separated by spaces. Callers know what to do with the string
- - parameter_brace_substring,parameter_brace_remove_pattern,
- parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod:
- for the VT_POSPARMS case, after calling the operator-specific
- expansion function, which eventually calls string_list_pos_params,
- leave the returned string alone, since it's already quoted properly
- - parameter_brace_expand: after calling the above functions to perform
- expansions, if the expansion is being performed on an unquoted $*
- when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC
- so that splitting on spaces is performed on the already-quoted word.
- Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
-
- 3/28
- ----
-subst.c
- - process_substitute: change so the subshell doesn't inherit the 'v'
- option, like command substitution now does (as of bash-4.4).
- Suggested by Grisha Levit <grishalevit@gmail.com>
+lib/readline/doc/rltech.texi
+ - rl_set_timeout,rl_timeout_remaining: document new public functions
+ - RL_STATE_TIMEOUT: document new possible state value for rl_readline_state
+ - rl_timeout_event_hook: document new hook function, called when
+ readline times out
- 3/30
- ----
-subst.c
- - parameter_brace_casemod: now takes a pflags parameter, like
- parameter_brace_patsub; changed callers
- - parameter_brace_transform: now takes a pflags parameter, like
- parameter_brace_patsub; changed callers
- - pos_params_pat_subst,pos_params_modcase: if mflags indicates we're
- on the rhs of an assignment statement and not going to perform
- word splitting, we're expanding $*, and $IFS is null, make sure
- string_list_pos_params treats the expansion as double-quoted, so
- the positional parameters will be concatenated. Fixes bug reported
- by Grisha Levit <grishalevit@gmail.com>
+builtins/read.def
+ - read_builtin: changes to use the readline timeout functions to
+ implement timeouts with `read -e'; these use rl_set_timeout and
+ sh_timer structs together
- 3/31
+ 3/12
----
-doc/{bash.1,bashref.texi}
- - add notes to the description of pipelines emphasizing that each
- element of a pipeline is executed in a subshell, referring to the
- description of a command execution environment, and that the
- lastpipe option can modify that behavior. From a discussion with
- Jean Delvare <jdelvare@suse.de>
-
- 4/1
- ---
-subst.c
- - expand_word_internal: set had_quoted_null to note for later if we
- expand '', "", or "$x" when x is unset
- - expand_word_internal: if we expand "$param" (or "${param}") and we
- come back with a single word with the W_HAVEQUOTEDNULL flag set,
- make sure we set had_quoted_null to remember it for later. In this
- case, if we already have seen a quoted null and we expanded $@ in
- this (sub)string expansion, we don't want to do any of the special
- $@ handling. In particular, we don't want to set *expanded_something,
- because that will result in word splitting and quoted null removal.
- Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
- - parameter_brace_patsub: when expanding ${*/pat/sub} in the case
- where ifs_is_null != 0 and (pflags & PF_NOSPLIT2) (meaning we aren't
- going to be doing word splitting), pass MATCH_ASSIGNRHS so we do
- the right thing in this case. Part of a set of cases inspired by
- Grisha Levit <grishalevit@gmail.com>
- - param_expand: case '*': if we are on the rhs of an assignment
- (PF_ASSIGNRHS) and ifs is unset, and $1 == " ", we need to make sure
- string_list_dollar_at gets called with Q_DOUBLE_QUOTES so it quotes
- the positional parameters before joining them into a string with
- string_list_internal. Otherwise, that first space gets removed by
- the implicit word splitting that gets performed. Reported by
- Grisha Levit <grishalevit@gmail.com>
-
-array.c
- - array_patsub,array_modcase: handle ${A[*]} identically to $* when
- not quoted and IFS is null (separate with spaces). Makes things
- like ${A[*]/x/y} behave the same as ${*/x/y} when IFS is null
-
subst.c
- - parameter_brace_patsub,parameter_brace_casemod: if expanding ${A[*]}
- when the match is on the rhs of an assignment statement (PF_ASSIGNRHS)
- and ifs is null, make sure the match is performed as if it were
- quoted
- - parameter_brace_substring: now takes a PFLAGS argument
- - parameter_brace_substring: if expanding $* in a context where we
- don't want to do word splitting (expand_no_split_dollar_star &&
- PF_NOSPLIT2), make sure we expand $* as if it were quoted
- - parameter_brace_substring: if expanding an unquoted $* on the rhs of
- an assignment statement when IFS is null, make sure we expand the $*
- as if it were quoted
-
- 4/4
- ---
-doc/{bash.1,bashref.texi}
- - read: document that a delim argument of '' terminates each line when
- a NUL character appears
+ - expand_string_dollar_quote: new function, expands $'...' and $"..."
+ in a string for those code paths that don't expand it themselves
- 4/5
- ---
-subst.c
- - parameter_brace_expand_word: handle case where unquoted $@ is
- expanded in a context where word splitting is not performed (PF_NOSPLIT2)
- and IFS is not equal to the standard value
- - param_expand: handle case where unquoted $@ is expanded in a context
- where word splitting is not performed (PF_NOSPLIT2) and IFS is not
- equal to the standard value. Fixes bug with IFS == $1 when expanding
- unquoted $@ reported by Grisha Levit <grishalevit@gmail.com>
+subst.h
+ - expand_string_dollar_quote: extern declaration
- 4/7
- ---
-subst.c
- - pos_params_pat_subst: if MATCH_ASSIGNRHS is set, don't expand $*
- as quoted unless expand_no_split_dollar_star is also set. Fixes
- expansion bug reported on 4/4 by Grisha Levit <grishalevit@gmail.com>
- - parameter_brace_transform: if we transform unquoted A[@] or A[*]
- when IFS is null, don't quote the result of array_transform in the
- same way we don't quote the result of parameter_list_transform,
- since it will come back quoted. Fixes bug reported by
- Grisha Levit <grishalevit@gmail.com>
- - list_transform: if we transform unquoted $* or ${a[*]} when IFS is
- null and expand_no_split_dollar_star is non-zero, call
- string_list_pos_params with Q_DOUBLE_QUOTES to inhibit splitting.
- We do this in all cases except @Q, which is inconsistent but more
- intuitive.
- Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
+parse.y
+ - read_secondary_line: if $'...' or $"..." appears in the line, call
+ expand_string_dollar_quote to expand them. This now returns new
+ memory, need to change callers
- 4/8
- ---
-builtins/read.def
- - read_mbchar: if unbuffered == 2, we are running read -N and need to
- use zreadn to read the rest of the multibyte char, since the
- previous call to zreadn may have buffered characters. Fixes bug
- reported by Stephane Chazelas <stephane.chazelas@gmail.com>
-
-pathexp.h
- - QGLOB_CTLESC: new flag for quote_string_for_globbing: means to turn
- CTLESC CTLESC (quoted CTLESC that's usually removed as part of
- word splitting or quote removal) into CTLESC
-
-pathexp.c
- - quote_string_for_globbing: if QGLOB_CTLESC is present in flags,
- turn CTLESC CTLESC into CTLESC, even if the first CTLESC is preceded
- by a backslash. Callers can't do this because the remaining CTLESC
- will be treated as a quoting character and turned into a backslash
+make_cmd.c
+ - make_here_document: account for read_secondary_line returning newly
+ allocated memory, free `full_line' appropriately
-execute_cmd.c
- - execute_case_command: if the pattern is not quoted, make sure to tell
- quote_string_for_globbing to turn CTLESC CTLESC into CTLESC by
- passing QGLOB_CTLESC. Fixes bug reported 4/2 by Martijn Dekker
- <martijn@inlv.org>
+bashline.c
+ - shell_expand_line,history_and_alias_expand_line: expand $'...' and
+ $"..." in the line by calling expand_string_dollar_quote, since
+ that happens after history expansion and before alias expansion in
+ normal processing
- 4/9
- ---
+ 3/15
+ ----
subst.c
- - string_transform: after calling ansiexpand for the `E' transformation,
- need to call dequote_escapes because ansiexpand assumes it is being
- called by the parser and arranges for ansicstr to quote CTLESC and
- CTLNUL with CTLESC. Reported by Grisha Levit <grishalevit@gmail.com>
-
-variables.c
- - mk_env_string: when exporting functions, run them through
- dequote_escapes because any strings containing CTLESC or CTLNUL are
- still quoted with CTLESC. Reported by Grisha Levit
- <grishalevit@gmail.com>
+ - expand_string_dollar_quote: fix out-of-order initialization
-subst.[ch]
- - quote_escapes,dequote_escapes: now take const char * argument
+Makefile.in
+ - {TAGS,tags}: add ETAGS/ETAGSFLAGS/CTAGS/CTAGS flags; make sure to
+ cd to the source directory before running them to get source files
+ that don't have absolute paths. Fix from Mike Jonkmans
+ <bashbug@jonkmans.nl>
-execute_cmd.c
- - execute_intern_function: if the function name contains CTLESC, run
- it through dequote_escapes just in case it got CTLESC quoting
- CTLESC or CTLNUL from the parser
+parse.y
+ - xparse_dolparen: don't longjmp if FLAGS includes SX_NOLONGJMP. From
+ a report by Xu Lu <oliver_lew@outlook.com>
- 4/11
+ 3/16
----
-eval.c
- - reader_loop: make sure PS0 is expanded and displayed before
- incrementing the command number
+subst.c
+ - process_substitute: set startup_state and parse_and_execute_level
+ to see if we can avoid a fork()
-parse.y
- - prompt_history_number: function to make history number as reported
- by \!, or posix mode !!, be the same index that the (possibly multi-
- line) command will be stored with. The history library increments
- history_offset as soon as a new line is entered, and it's up to the
- history code to store the second and subsequent lines of a command
- in the same history entry. If we are expanding PS0 or PS4, or
- a ${var@P} expansion, we're already past the history entry no
- matter what. Inspired by patch from Grisha Levit
- <grishalevit@gmail.com>
- - decode_prompt_string: call prompt_history_number
- - decode_prompt_string: if expanding PS4 or ${var@P}, make the
- command number the same as reported by PS0/PS1/PS2
+bashline.c
+ - bash_spell_correct_word: bindable command (spell-correct-word) to
+ perform spelling correction on the current `shellword', using the
+ same code as the `cdspell' option and directory spelling correction
+ during completion. Feature suggested by in 10/2020 by
+ Karl Kleinpaste <karl@kleinpaste.org>
+ - bash_spell_correct_word: bound to "C-x s" by default in emacs mode
- 4/12
- ----
-support/Makefile.in
- - clean: remove man2html.o as part of this production instead of
- waiting until `distclean'. Reported by chrlis <chrlis@sbrella.com>
+lib/readline/display.c
+ - rl_redisplay: fix redisplay problem that occurs when switching from
+ the rl-digit-argument prompt "(arg: N)" back to the regular prompt,
+ and the regular prompt contains invisible characters
-subst.c
- - string_list_pos_params: if we are expanding $* in a context where
- IFS is null and expand_no_split_dollar_star is set (no word
- splitting), use string_list_dollar_star to force the positional
- parameters to be joined without first separating them into a list
- and attempting to join them later. Fixes problem with constructs
- like ${var=${*:1}}, pointed out by Grisha Levit
- <grishalevit@gmail.com>. This undoes change to @Q from 4/7, so
- list_transform change reverted
+doc/bash.1,lib/readline/doc/rluser.texi
+ - spell-correct-word: document new function and its default binding
- 4/19
+ 3/17
----
-builtins.h
- - added BUILTINS_H include guard
-
-examples/loadables/Makefile.in
- - install loadables.h as sample include file, along with Makefile.inc
+doc/{bash.1,bashref.texi}
+ - cd: slight changes to specify that it sets PWD and OLDPWD
+ - {pushd,popd}: make it clear that these builtins use cd to change
+ the current working directory; change wording to simplify the
+ description and clarify the exit status
- 4/23
+ 3/18
----
-bashline.c
- - maybe_make_readline_line: don't try to do anything if the passed
- NEW_LINE is NULL. Report from Jaren Stangret <sirjaren@gmail.com>,
- fix from Eduardo Bustamante <dualbus@gmail.com>
+execute_cmd.c
+ - execute_disk_command: after performing redirections, call
+ unlink_all_fifos() to remove the FIFOs created as part of
+ expanding redirections. They should have been opened by then, and
+ we're going to call shell_execve right away anyway, so we won't be
+ around to remove the FIFOs. From a report from
+ Michael Felt <aixtools@gmail.com>
- 4/24
+ 3/22
----
parse.y
- - xparse_dolparen: if the current token (the last thing read_token
- returned to yylex) is shell_eof_token, assume that it is the new
- bison lookahead token and clear it. Fixes bug reported by
- Werner Fink <werner@suse.de>
+ - alias_expand_token: slight tweak to check for alias expansion: perform
+ expansion unconditionally if PST_ALEXPNEXT is set, and disable it
+ in case statement pattern lists if the previous token indicates a
+ command name is acceptable.
+ From a report by Oguz <oguzismailuysal@gmail.com>
- 4/25
- ----
-doc/{bash.1,bashref.texi}
- - cmdhist: clarify that this option only has an effect if history is
- enabled. Suggested by Matthew Braun <matthew@powerplug.com>
+config-bot.h
+ - HAVE_MKDTEMP: fix typo
- 4/26
+ 3/25
----
-jobs.c
- - wait_for: if a non-interactive shell with job control enabled (set -m)
- detects that a foreground job died due to SIGINT, act as if the shell
- also received the SIGINT. Prompted by an austin-group-l discussion
- - waitchld: run SIGCHLD trap for each child exited even if job control
- is not enabled when in Posix mode. Prompted by an austin-group-l
- discussion
+lib/readline/terminal.c
+ - look in terminfo for key sequences for page up (kP) and page down
+ (kN) and bind them to history-search-{backward,forward},
+ respectively. From a patch from Xose Vazquez Perez
+ <xose.vazquez@gmail.com>
- 4/27
+ 3/30
----
-lib/readline/histfile.c
- - read_history_range: if the history file is empty, free the history
- filename before returning. Report and fix from Eduardo Bustamante
- <dualbus@gmail.com>
-
-lib/readline/bind.c
- - rl_parse_and_bind: make sure there is something, even if it's a
- quoted empty string, before the `:' in a key binding. Report from
- Eduardo Bustamante <dualbus@gmail.com>
- - rl_parse_and_bind: if the right side of a key binding starts with a
- quote, make sure there's a matching close quote before treating it
- as a macro definition
- - rl_translate_keyseq: if a key sequence ends with \C- or \M- (or
- \C-\M-) make sure we break out of the loop if moving to the character
- to be translated is a NUL. Old code did this only in the \C-\M-
- case. Report from Eduardo Bustamante <dualbus@gmail.com>
+doc/bashref.texi
+ - expand the node describing $"..." string translation with additional
+ details and examples
- 4/28
+ 3/31
----
-lib/glob/sm_loop.c
- - GMATCH: implement a clever technique from glibc that avoids
- backtracking past a `*' if we've already chosen to use it and need
- matches beyond it. Look at https://research.swtch.com/glob for a
- longer explanation. This results in a significant speedup for globs
- with multiple instances of `*', especially with more than 4.
-
- 5/2
- ---
-lib/readline/bind.c
- - rl_translate_keyseq: make sure a trailing backslash in the key
- sequence is preserved. Report from Eduardo Bustamante
- <dualbus@gmail.com>
+misc.c
+ - rl_fetch_history: moved here from vi_mode.c
+ - rl_fetch_history: negative arguments count back from the end of
+ the history, instead of taking you to the beginning of the history
+ list
+ - rl_fetch_history: in vi mode, an out-of-range argument rings the
+ bell and doesn't change the line
- 5/3
- ---
-builtins/builtin.def
- - builtin_builtin: make sure to set this_shell_builtin to the builtin
- command being executed, overwriting `builtin'. Leave
- last_shell_builtin alone. Fixes bug reported by Luiz Angelo Daros
- de Luca <luizluca@gmail.com>
+vi_mode.c
+ - rl_vi_fetch_history: call rl_fetch_history
-jobs.c
- - waitchld: modify change of 4/26 to run SIGCHLD traps even if job
- control is not enabled
+readline.h
+ - rl_fetch_history: new extern declaration
-lib/readline/misc.c
- - rl_get_previous_history: if we didn't find a previous history entry
- to use, call rl_maybe_unsave_line before returning because we
- aren't going to use the saved line, and it has the same undo list
- as rl_undo_list. Fixes fuzzing bug reported by Eduardo Bustamante
- <dualbus@gmail.com>
- - rl_get_{next,previous}_history: if there is no history list, don't
- bother doing anything
+doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
+ - rl_fetch_history: add description
- 5/4
- ---
-expr.c
- - popexp: if we error out due to stack underflow, make sure to zero out
- expression and lasttp; they may contain undefined values we don't
- want evalerror to print
- - expr_unwind: handle expr_depth decrementing below zero
- - evalexp: restore the old value of evalbuf even if we error and
- longjmp; we may have called evalexp recursively
- - evalerror: make sure expression is non-NULL before trying to print it.
- These fix fuzzing bug reported by Eduardo Bustamante
- <dualbus@gmail.com>, happens only in cases where we don't longjmp on
- a fatal expansion error
+builtins/setattr.def
+ - show_var_attributes: if a variable's value indicates that it should
+ be ANSI-C quoted, use ansic_quote instead of sh_double_quote to
+ format the value string. From proposal by Greg Wooledge
+ <greg@wooledge.org>
- 5/5
+ 4/5
---
-parse.y
- - read_token_word: when checking for a word that's a target of a
- redirection, we can potentially call valid_array_reference, which
- can end up calling the parser recursively. If it does that, we
- need to make sure that yylval.word doesn't change, so we set it back
- to the_word. Fixes another fuzzing bug
-
-parse.y
- - arith_for_command: make syntax errors in the arithmetic for command
- (signaled by make_arith_for_command returning NULL) more like
- language syntax errors by calling YYERROR. Avoids complicated
- attempts at error recovery and dealing with NULL returns from
- command productions. Pointed out by Eduardo Bustamante
- <dualbus@gmail.com>
+arrayfunc.c
+ - unbind_array_element: if FLAGS includes VA_ONEWORD, don't use
+ skipsubscript to parse the subscript, just assume the entire SUB is
+ the subcript and that it contains the closing `]', so we just want
+ everything in SUB except the last character.
-lib/readline/kill.c
- - _rl_copy_to_kill_ring: make sure the current slot in the kill ring
- has something in it, even if the last command was a kill, before
- trying to modify it. Another fuzzing bug
+parse.y:
+ - select_command: use compound_list instead of list, like for_command.
+ Report by Greywolf <greywolf@starwolf.com>
+ - list: move this into compound_list (replacing the instance of `list'
+ in the compound_list production), remove from the grammar
- 5/6
+ 4/6
---
-builtins/read.def
- - read_builtin: if we see a backslash when not in raw mode (not -r),
- only back up `i' when we read the next character if we know we added
- a CTLESC the last time through the loop (skip_ctlesc == 0),
- especially if i == 0. Another fuzzing bug from Eduardo Bustamante
- <dualbus@gmail.com>
+arrayfunc.c
+ - unbind_array_element: use VA_NOEXPAND instead of literal 1
- 5/8
+ 4/7
---
-builtins/read.def
- - read_mbchar: handle zreadn/zreadc/zread returning EOF in the middle
- of an incomplete multibyte sequence. Fixes another fuzzing bug
- - read_builtin: use mb_cur_max instead of constant 4 when deciding
- whether the next character can exceed the number of bytes available
- in input_string
-
-lib/readline/input.c
- - MinGW: include <conio.h> before <io.h>. Fix from Eli Zaretskii
- <eliz@gnu.org>
-
-builtins/read.def
- - read_builtin: if we get input from readline, we need to get the
- remainder of a multibyte character from rlbuf instead of calling
- read_mbchar. Bug reported by Eduardo Bustamante <dualbus@gmail.com>
+lib/readline/funmap.c
+ - default_funmap: add missing `vi-undo' to the list of vi-mode bindable
+ functions. Reported by Xirui Zhao <quinean@icloud.com>
- 5/9
+ 4/8
---
-parse.y
- - token_is_assignment: use the allocated buffer approach in all cases,
- not just if we're not using bash malloc. This avoids the assignment
- to t[i+1] writing beyond the end of the allocated token if
- i == token_buffer_size - 1. Another fuzzing bug
- - xparse_dolparen: if parse_string returns < 0, we clear out the
- current shell_input_line before performing a longjmp, since we're
- abandoning parsing of this command. This is consistent with how
- the parser resynchronizes after other syntax errors
- - GRAMMAR: add 'error yacc_EOF' production to handle a syntax error
- that's immediately followed by an EOF after resynchronization.
- Fixes another fuzzing bug
-
- 5/10
- ----
-lib/readline/text.c
- - _rl_set_mark_at_pos: don't let the mark be set to a position < 0.
- Fixes a fuzzing bug
- - rl_exchange_point_and_mark: don't do anything if the mark is already
- less than 0
- 5/12
- ----
-lib/readline/rlmbutil.h
- - wchar_t: make sure this is defined as int if multibyte characters
- aren't supported
-
-lib/readline/text.c
- - _rl_change_case: don't force use of ascii toupper and tolower if
- isascii returns true; it's not defined to work on characters outside
- the 0..255 (really 0..127) range. Bug reported by
- Eduardo Bustamante <dualbus@gmail.com>
+config-top.h
+ - DEFAULT_LOADABLE_BUILTINS_PATH: default value for BASH_LOADABLES_PATH
- 5/14
- ----
-lib/readline/text.c
- - rl_change_case: handle case where the old and new characters (after
- the case change) are not the same number of bytes. Pointed out in
- http://lists.gnu.org/archive/html/bug-bash/2015-01/msg00091.html
+doc/{bash.1,bashref.texi}
+ - enable: note that it uses $BASH_LOADABLES_PATH, and that the default
+ is system-dependent
-lib/readline/display.c
- - expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar
- since that needs the base of the array. Bug from fuzzing reported by
- Eduardo Bustamante <dualbus@gmail.com>
+variables.c
+ - initialize_shell_variables: initialize BASH_LOADABLES_PATH to the
+ default given in DEFAULT_LOADABLE_BUILTINS_PATH
- 5/15
+ 4/12
----
-execute_cmd.c
- - execute_simple_command, execute_arith_command, execute_cond_command,
- execute_arith_for_command: adjust the line number when executing a
- function interactively so that the first command in the function is
- line 1, not line 0, as Posix requires. Reported by Robert Elz
- <kre@bmunnari.OZ.AU>
- - execute_simple_command, execute_arith_command, execute_cond_command,
- execute_arith_for_command: ony adjust the line number when executing
- a function interactively if we are not sourcing a file
- (sourcelevel == 0), so this is consistent everywhere we adjust the
- line number
+doc/{bash.1,bashref.texi}
+ - add link to git master tar file as a place to get the current version
- 5/16
+ 4/14
----
bashline.c
- - bash_directory_completion_hook: when calling split_at_delims to see
- whether a ${ or $( is closed, use the right value for `start' relative
- to the substring beginning at `$'. Bug from fuzzing reported by
- Eduardo Bustamante <dualbus@gmail.com>
-
-expr.c
- - expassign: if the call to expcond generates a syntax error in a
- context when the shell won't longjmp (like when evaluating $PS1),
- it will end up NULL and we need to catch it before calling strlen.
- Bug from fuzzing reported by Eduardo Bustamante <dualbus@gmail.com>
-
-examples/bash-completion/
- - new place to include a current or recent version of the
- bash-completion package
-
- 5/19
- ----
-lib/readline/display.c
- - CHECK_INV_LBREAKS: new versions for multibyte and single-byte chars,
- so the multibyte version can check and increase the size of
- line_state_invisible->wbsize and line_state_invisible->wrapped_line,
- callers who call CHECK_INV_LBREAKS must update
- wrapped_line[newlines] when in HANDLE_MULTIBYTE mode. Fuzzing bug
- reported by Eduardo Bustamante <dualbus@gmail.com>
+ - attempt_shell_completion: use -1 as a sentinel value for
+ in_command_position indicating that we cannot be in a command position
+ (e.g., because we're the target of a redirection) and should not
+ check for a programmable command completion or tell the programmable
+ completion code to use command completion. Report and fix from
+ Marc Aurèle La France <tsi@tuyoix.net>
- 5/24
- ----
-lib/readline/search.c
- - _rl_nsearch_callback,noninc_search: handle _rl_search_getchar
- returning -1 (EOF or read error) by aborting the search.
- Fuzzing bug reported by Eduardo Bustamante <dualbus@gmail.com>
-
- 5/25
- ----
-variables.c
- - localvar_inherit: new variable, controlled by shopt localvar_inherit
- option
- - make_local_variable: if localvar_inherit is set, the new local
- variable inherits a previous scope's variable's value, attributes
- (except nameref), and dynamic variable information. If a local
- variable inherits a value, the local is not invisible
-
-builtins/shopt.def
- - localvar_inherit: new option
-
-doc/{bash.1,bashref.texi}
- - localvar_inherit: document new shopt option
-
- 5/29
+ 4/16
----
-lib/readline/readline.c
- - _rl_subseq_result: only return -1 and back up the chain if we are
- dealing with a result (r) that's already < 0 and we are at the end
- of a multi-key sequence. Otherwise, a failing readline command (e.g.,
- delete-char at the end of a line) could cause this code to be
- executed. Report from Nuzhna Pomoshch <nuzhna_pomoshch@yahoo.com>
+builtins/bind.def
+ - bind_builtin: reverse sense of strvec_search return value when
+ deciding whether or not to remove a unix-command binding from the
+ cmd keymap. Bug report by Dale Sedivec <dale@codefu.org>
-lib/readline/histfile.c
- - read_history_range: if the file isn't a regular file, return an
- error. Bug report from Eduardo Bustamante <dualbus@gmail.com>,
- relaying from IRC
+lib/readline/doc/rltech.texi
+ - RL_PROMPT_{START,END}_IGNORE: document current values of \001 and
+ \002. Report from Mingye Wang <arthur200126@gmail.com>
- 5/30
+ 4/19
----
-variables.c
- - set_pwd: if in Posix mode, and PWD appears in initial environment as
- an absolute pathname to the current directory, set PWD to the result
- of canonicalizing the environment value, or to the physical path if
- canonicalization fails. From a suggestion by Eduardo Bustamante
- <dualbus@gmail.com>
+arrayfunc.c
+ - assign_assoc_from_kvlist: fix memory leak reported by konsolebox
+ <konsolebox@gmail.com>
- 5/31
+ 4/20
----
-builtins/read.def
- - read_builtin: if -n or -N option is supplied with a 0 argument,
- don't attempt to read any characters; bail out right away. Reported
- by Eduardo Bustamante <dualbus@gmail.com>, relaying from IRC
+command.h,subst.c
+ - W_ITILDE: remove, replace with a variable since it's only used inside
+ a single call to expand_word_internal
- 6/3
- ---
-config.h.in
- - HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC: add define, used by stat-time.h
- to construct a timespec from struct stat. Report and fix from
- Siteshwar Vashisht <svashisht@redhat.com>
-
-variables.h
- - att_regenerate: new internal variable attribute: if set, regenerate
- dynamic variable's value when it's exported and we are creating the
- export environment
-
-variables.c
- - init_dynamic_variables: LINENO, EPOCHSECONDS, EPOCHREALTIME: set
- internal regenerate attribute for these dynamic variables
- - make_env_array_from_var_list: if a dynamic variable has the
- regenerate attribute set, call the dynamic value function to generate
- an updated value before placing it in the environment. From a report
- about exporting LINENO from Robert Elz <kre@bmunnari.OZ.AU>
-
- 6/4
- ---
-lib/glob/sm_loop.c
- - BRACKMATCH: at the matched: label, make sure we get the bracket
- character we're looking for (char class, collating symbol. etc.)
- before we decrement the count of braces we're looking for. Eventually
- we could do something about badly-formed bracket expressions
-
- 6/7
- ---
-lib/readline/histlib.h
- - strchr: only declare if __STDC__ is not defined, since we already
- include <string.h>. Report from Chi-Hsuan Yen <yan12125@gmail.com>
-
- 6/9
- ---
-lib/readline/display.c
- - update_line: when wrapping lines with multibyte chars at the end of
- the new line being wrapped, make sure we copy the NULL byte in old
- when moving the contents of old around. Fuzzing bug reported by
- Eduardo Bustamante <dualbus@gmail.com>
-
-lib/readline/mbutil.c
- - _rl_get_char_len: use MB_CUR_MAX in the call to mbrlen; there's no
- need to look at the rest of the string when we're just interested in
- the length of a single character
-
- 6/12
+ 4/21
----
-jobs.c
- - wait_for: when waiting for the next child to exit (ANY_PID), make
- sure to restore the old SIGINT handler before returning. Fixes
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864649
+{subst.c,make_cmd.c,parse.y}
+ - W_DQUOTE: no longer used, use W_NOPROCSUB and W_NOTILDE directly
+ (for arithmetic commands and words in arithmetic for commands)
- 6/14
+ 4/24
----
-lib/readline/display.c
- - expand_prompt: make sure `ret' is NULL-terminated before calling
- _rl_prev_mbchar_internal, since that calls strlen, which requires
- the passed string to be NULL-terminated. Another fuzzing bug.
+bashline.c
+ - executable_completion: since this function gets an unquoted filename
+ from rl_filename_completion_function, we need to quote special
+ characters before passing it to bash_directory_completion_hook.
+ Report from Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com>
- 6/15
+ 4/26
----
-lib/readline/isearch.c
- - _rl_isearch_fini: use rl_replace_line instead of strcpy so rl_end
- gets set right
- - _rl_isearch_fini: after restoring rl_point, call _rl_fix_point so
- we don't set rl_point > rl_end. Fixes a fuzzing bug
-
-lib/readline/mbutil.c
- - _rl_find_next_mbchar_internal: if _rl_adjust_point returns < 0,
- just punt, treat the value as a byte, and advance point by 1
+lib/readline/search.c
+ - _rl_nsearch_abort: move function calls around so _rl_restore_prompt
+ happens before rl_clear_message, like when aborting an incremental
+ search. Suggested by sparrowhawk996@gmail.com
-lib/readline/util.c
- - rl_tilde_expand: rearrange code in the whitespace loop so that
- `start' gets tested first and we don't try to dereference
- rl_line_buffer[-1]. Another fuzzing bug from dualbus@gmail.com
+subst.h
+ - ASS_ALLOWALLSUB: new assignment flag value, means to allow @ and * as
+ valid array subscripts when assigning to existing associative arrays
-bashline.c
- - bash_dequote_filename: make sure that pointers that are used as
- indices into sh_syntaxtab are cast to unsigned char first, to
- avoid problems with signed chars > 128. Fixes a fuzzing bug.
+arrayfunc.c
+ - assign_array_element: allow assignment of key `@' to an existing
+ associative array if the caller passes ASS_ALLOWALLSUB
+ - assign_compound_array_list: allow ( [@]=value ) to an existing
+ associative array
-lib/readline/kill.c
- - _rl_copy_to_kill_ring: when reallocating the kill ring, make sure to
- allocate one more than the max number of kills so the loop that
- copies the kill ring entries down runs right (and to mirror the
- initial allocation). Fixes a fuzzing bug.
+builtins/declare.def
+ - declare_internal: allow assignment of key `@' to an existing
+ associative array by passing ASS_ALLOWALLSUB to assign_array_element
+ as part of local_aflags. This affects declare, local, and typeset
-lib/readline/isearch.c
- - _rl_isearch_dispatch: make sure that cxt->sline_index never goes < 0
- even when searching a line in reverse. Fixes a fuzzing bug
+subst.c
+ - do_assignment_internal: allow a[@]=value to an existing associative
+ array by passing ASS_ALLOWALLSUB to assign_array_element
- 6/16
+ 4/27
----
-parse.y
- - xparse_dolparen: short-circuit immediately if passed a empty string
-
-lib/readline/display.c
- - update_line: when wrapping multibyte characters, make sure we deal
- with WCWIDTH returning -1. Fixes a fuzzing bug
+builtins/common.[ch]
+ - builtin_bind_var_to_int: wrapper for bind_var_to_int to be used by
+ builtin commands; placeholder for future work
- 6/17
- ----
-execute_cmd.c
- - execute_coproc: make sure `invert' is set before trying to use it
- when returning failure on invalid coproc name. Report and fix from
- Eduardo Bustamante <dualbus@gmail.com>
- - execute_command_internal: make sure execute_coproc sets
- last_command_exit_value if it returns failure, so an invalid name
- can set $? = 1. Report and fix from Eduardo Bustamante
- <dualbus@gmail.com>
+builtins/wait.def
+ - builtin_bind_var_to_int: use instead of bind_var_to_int
-lib/readline/display.c
- - update_line: make sure all references to `wrapped_line' are wrapped
- with #ifdef HANDLE_MULTIBYTE. Report and fix from Eduardo Bustamante
- <dualbus@gmail.com>
+builtins/common.c
+ - builtin_bind_variable: allow assignment of key `@' to an existing
+ associative array by passing ASS_ALLOWALLSUB to assign_array_element.
+ This affects printf and read
-lib/readline/vi_mode.c
- - _rl_vi_change_char: don't use rl_point++ when you mean to move
- forward a character; use _rl_vi_append_forward to account for
- multibyte characters and take vi end of line handling into account
- - _rl_vi_last_replacement: now an array of chars whether we are
- using multibyte chars or not. If we're not, the character we read
- to use as the replacement is saved as the first element of the array
- - rl_vi_change_char,_rl_vi_callback_change_char: changes to deal with
- _rl_vi_last_replacement being an array. Fixes bug reported by
- Eduardo Bustamante <dualbus@gmail.com>
-
-lib/readline/mbutil.c
- - _rl_get_char_len: look at at most MB_CUR_MAX characters, but maybe
- fewer if the length of the string is less
+builtins/variables.[ch]
+ - bind_var_to_int: add third `flags' argument to pass to bind_variable
+ instead of always passing 0
-builtins/bind.def
- - unbind_keyseq: new function for the -r option; checks whether the
- key sequence is actually bound before trying to bind it to NULL.
- Partial fix for https://savannah.gnu.org/support/?109329
+redir.c,builtins/common.c,builtins/printf.def
+ - bind_var_to_int: change callers, add third flags argument
-parse.y
- - augment `error yacc_EOF' production to call YYABORT in non-interactive
- shells or calls to parse_and_execute (eval, command substitution,
- etc.) Fixes bug reported by Martijn Dekker <martijn@inlv.org>
+builtins/common.c
+ - builtin_bind_var_to_int: pass ASS_ALLOWALLSUB to bind_var_to_int so
+ builtins like wait can assign to assoc[@] and assoc[*]
- 6/19
+ 4/28
----
bashline.c
- - edit_and_execute_command: don't add rl_line_buffer to the history
- list if it's empty; consistent with how other code treats an empty
- line
-
-execute_cmd.c
- - execute_builtin: make sure to preserve the temporary env across the
- execution of the `read' builtin or `fc' builtin if HISTORY is
- defined, in case `read -e' calls edit-and-execute-command. Should
- have no side effects. Reported by Eduardo Bustamante
- <dualbus@gmail.com>
-
-general.c
- - line_isblank: new function: returns true if passed string is composed
- entirely of blanks
-
-general.h
- - line_isblank: new extern declaration
-
-parse.y
- - history_delimiting_chars: return "" for a blank line, since there's
- nothing to delimit with `;'
-
- 6/21
- ----
-jobs.c
- - wait_for: make sure to call restore_sigint_handler before returning
- if we return out of the loop due to no children. Report from
- Eduardo Bustamante <dualbus@gmail.com>
-
-subst.c
- - expand_word_internal: if split_on_spaces is set, and the word is
- unquoted, and IFS is null, split the results of the previous steps
- on $' \t\n' instead of just ' '. This relies on the previous steps
- quoting the portions of the word that should not be split. Fixes
- bug reported by Kevin Brodsky <corax26@gmail.com>
+ - command_word_completion_function: make sure to initialize
+ old_glob_ignore_case before trying to restore from it
+ - command_word_completion_function: if we are completing a glob
+ pattern, make sure to set rl_filename_completion_desired, so we get
+ quoting and appending -- we are completing a filename, after all.
+ From a report from Manuel Boni <ziosombrero@gmail.com>
-expr.c
- - evalexp: after running expr_unwind, make sure we reset expr_depth
- to 0 for the next call
- - expr_streval: if after a call to get_array_value (which can call
- the expression evaluator recursively) we discover that expr_depth
- is less than it was before we called it, we assume there has been
- some kind of error and an expr_unwind, so we treat it as an
- error and either longjmp back to the expression top level or return
- 0 immediately. Fixes bug reported by Eduardo Bustamante
- <dualbus@gmail.com>
+lib/readline/bind.c
+ - enable-active-region: separate control of the active region and
+ bracketed paste. Still set to the same default value as bracketed
+ paste, and enabling bracketed paste enables the active region.
+ Now you can enable bracketed paste and then turn off the active
+ region.
- 6/23
- ----
-doc/{bash.1,bashref.texi}
- - add text noting that $* and ${array[*]} (unquoted) can also expand
- to multiple words
+doc/bash.1,lib/readline/doc/{readline.3,rltech.texi}
+ - enable-active-region: document new bindable readline variable and
+ its effects
- 6/29
+ 4/30
----
-general.[ch]
- - default_columns: new function, returns the value of COLUMNS, or
- refreshes it if check_window_size is set and COLUMNS is unset. By
- default, it returns 80
-
-execute_cmd.c
- - select_query: use default_columns() instead of fetching value of
- COLUMNS directly
+command.h
+ - W_ARRAYREF: new flag, meaning the word is a valid array reference
+ with subscript, replaces W_DOLLARSTAR, which was unused
-builtins/help.def
- - show_builtin_command_help: use default_columns() instead of fetching
- value of COLUMNS directly
+subst.c
+ - expand_subscript_string,expand_array_subscript: new functions to
+ parse and expand-and-quote array subscripts. For future use
- 6/30
- ----
-builtins/read.def
- - read_builtin: call QUIT during the read loop, just in case we get a
- signal we should act on that didn't cause read to be interrupted.
- Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1466737
- - read_builtin: if -n or -N is supplied with a 0 argument, try a zero-
- length read to detect errors and return failure if that read returns
- a value < 0. Suggested by dualbus@gmail.com
-
- 7/4
+ 5/3
---
-bashhist.c
- - maybe_add_history: keep track of whether the current line is a shell
- comment, even if we're not adding it because it's in a multi-line
- command, so we use appropriate delimiters between it and any
- subsequent lines. Fixes bug reported by Grisha Levit
- <grishalevit@gmail.com> back on 2/28/2017
+builtins/mapfile.def
+ - mapfile: if the delimiter is a newline, set unbuffered_read = 1
+ for any file descriptor that isn't seekable and lseek sets errno
+ to ESPIPE (pipes, FIFOs, maybe terminal devices). If it's not a
+ newline, only allow buffered reads if the file descriptor is a
+ regular file. Report from Koichi Murase <myoga.murase@gmail.com>
-bashline.c
- - operate_and_get_next: if given an explicit argument, use that to
- choose which line in the history to use.
+builtins/read.def
+ - read_builtin: only set unbuffered_read = 1 if the input is coming
+ from a pipe (which we can't seek on) or the input is a terminal and
+ we want to read a specified number of characters or we're using a
+ non-standard delimiter
-lib/readline/doc/rluser.texi,doc/bash.1
- - operate-and-get-next: document new effect of explicit numeric arg
+ 5/4
+ ---
-lib/readline/complete.c
- - fnprint: make sure print_len is initialized before using it on
- systems without multibyte character support. Report and fix from
- Juan Manuel Guerrero <juan.guerrero@gmx.de>
+builtins/mapfile.def
+ - mapfile: call zsyncfd before calling the callback. Suggested by
+ Koichi Murase <myoga.murase@gmail.com>; we'll see how it goes
- 7/6
+ 5/5
---
-builtins/printf.def
- - PRETURN,printf_builtin: check variable returned by bind_printf_variable,
- return failure if that indicates we can't perform an assignment
- because the variable is marked readonly or noassign. Fixes bug
- reported by Arnaud Gaillard <arnaud.mgaillard@gmail.com>
+subst.h
+ - expand_subscript_string: extern declaration
- 7/7
- ---
-lib/readline/text.c
- - rl_quoted_insert: new feature: a negative argument means to insert
- the next -COUNT characters using quoted-insert. Original feature
- from Jason Hood <jadoxa@yahoo.com.au>. Still needs work on
- redisplay
- - _rl_insert_next_callback: implement support for negative arguments
- similar to rl_quoted_insert: we just insert one at a time and keep
- increasing the count until it hits 0
+{arrayfunc,subst}.c
+ - expand_subscript_string: replace expand_assignment_string_to_string
+ with calls to this when expanding array subscripts
-lib/readline/misc.c
- - _rl_arg_callback: if the return value from _rl_arg_dispatch indicates
- we should keep reading a numeric argument, update the message with
- the new arg value
+subst.c
+ - cond_expand_word: call expand_word_internal with Q_ARITH if `special'
+ says we should quote for an arithmetic expression context
+ - expand_word_internal: call expand_array_subscript when we see `[' in
+ arithmetic or array subscript contexts, make conditional on the
+ compatibility level later
+ - expand_word_internal: make sure W_ARRAYREF makes it through this
+ function and into the returned word
- 7/8
+ 5/6
---
-lib/readline/signals.c
- - _rl_handle_signal: make sure all uses of any of the job control
- signals are protected by a check for SIGTSTP being defined. Report
- from Juan Manuel Guerrero <juan.guerrero@gmx.de>
- 7/11
- ----
-lib/readline/vi_mode.c
- - rl_vi_replace: when making the new keymap for vi replacement mode,
- make sure that ANYOTHERKEY is set correctly, otherwise some input
- will cause _rl_dispatch to return -2 to the top level. Fixes fuzzing
- bug reported by Ben Wong <benjamin.a.wong@gmail.com>
+arrayfunc.c
+ - array_expand_index: call evalexp with a flag of 0 since we call
+ expand_arith_string with Q_ARITH and we want evalexp to remove
+ the quotes
+
+execute_cmd.c
+ - eval_arith_for_expr,execute_arith_command: now that Q_ARITH has an
+ effect on array subscripts (it quotes the special expansion
+ characters), call evalexp with 0 as the flags arg so quote removal
+ is performed on this quoted argument. Make this conditional on the
+ shell compatibility level later
+ - execute_cond_command: make sure to expand the argument to -v by
+ calling cond_expand_node with Q_ARITH, and correspondingly turn off
+ assoc_expand_once when calling unary_test with that argument, since
+ we want it to be expanded again to remove the quotes
+ - execute_cond_command: expand the arguments to the arithmetic operators
+ with Q_ARITH and pass TEST_ARITHEXP to binary_test to ensure that
+ it lets evalexp expand the arguments to remove the quoting
- 7/19
- ----
-builtins/read.def
- - struct ttsave: make the attrs member a struct, not a pointer, to force
- a structure copy that will survive a longjmp to another context.
- Leaving it as a pointer to a local struct is not portable
+test.c
+ - arithcomp: if TEST_ARITHEXP is in FLAGS, call evalexp with a flag
+ if 0 to force evalexp to expand the arguments to remove the quoting
+
+subst.c
+ - param_expand: since we call expand_arith_string with Q_ARITH, we need
+ to call evalexp with 0 instead of EXP_EXPANDED for $((...)) expansion
+ - expand_word_internal: if we recursively call expand_word_internal to
+ expand the contents of a double-quoted string, make sure we pass
+ through Q_ARITH if it appears in QUOTED
+ - verify_substring_values: call expand_arith_string with Q_ARITH and
+ correspondingly call evalexp with 0 instead of EXP_EXPANDED
- 9/10
- ----
execute_cmd.c
- - execute_builtin: make sure that we set up the unwind-protect for
- pop_scope (temporary_env is non-zero) so that the temporary env
- is propagated to the current environment only for special builtins
- (source/eval/unset) not run by the command builtin
- (flags & CMD_COMMAND_BUILTIN == 0). Fixes bug reported by
- Martijn Dekker <martijn@inlv.org>
+ - execute_cond_node: if -v is the operator, and the operand is a valid
+ array reference, pass TEST_ARRAYEXP flag to unary_test
- 9/17
- ----
-builtins/printf.def
- - asciicode: don't use mblen to check whether or not a character is a
- valid multibyte character; use mbtowc right away and then inspect
- the return value. Fixes bug reported by Stephane Chazelas
- <stephane.chazelas@gmail.com>
+ 5/7
+ ---
+builtins/common.[ch]
+ - set_expand_once: set array_expand_once to the value passed as the
+ first argument, returning the original value
- 9/27
- ----
-{jobs,subst}.h
- - move declaration of last_command_subst_pid to subst.h, since it's
- declared in subst.c and doesn't depend on job control. Reported by
- Martijn Dekker <martijn@inlv.org>
+builtins.h
+ - ARRAYREF_BUILTIN: new flag for shell builtins, means that the builtin
+ can take array references, with subscripts, as arguments
-builtins/read.def,variables.c
- - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented
- the minimal config from building
+builtins/mkbuiltins.c
+ - set ARRAYREF_BUILTIN flag on builtins given in the arrayvar_builtins
+ array
- 10/1
- ----
-parse.y
- - special_case_tokens: if we are returning DO in a case where the last
- two tokens read are `FOR' and `WORD' make sure we decrement
- expecting_in_token. Fixes bug reported by Martijn Dekker
- <martijn@inlv.org>
+execute_cmd.c
+ - execute_cond_node: use set_expand_once to set array_expand_once to 0
+ before calling unary_test with -v (see change from 5/6)
- 10/4
- ----
-subst.c
- - expand_string_for_rhs: now takes an additional PFLAGS argument from
- its caller (one so far); passes that through to call_expand_word_internal
- as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker
- <martijn@inlv.org>
- - expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if
- b were the rhs of an assignment statement. This means that splitting
- isn't done, but tilde expansion is performed as if the statement
- were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker
- <martijn@inlv.org>
+arrayfunc.c
+ - unbind_array_element: allow the caller to choose whether or not a
+ subscript of `*' or `@' unsets the entire array by passing
+ VA_ALLOWALL in FLAGS. Right now, since the unset builtin doesn't
+ pass VA_ALLOWALL, those subscripts unset individual elements for
+ associative arrays. We preserve the old behavior of unsetting
+ indexed arrays for the time being with new indexed-array-specific
+ code
-command.h
- - W_NOASSNTILDE: new word flag, means to not perform tilde expansion
- following a `:' even if the word has the W_ASSIGNRHS flag enabled
+ 5/9
+ ---
-subst.c
- - expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag
- set, just add the character and inhibit any subsequent tilde
- expansion. Currently not set anywhere, but it could be set in
- expand_string_for_rhs to satisfy its peculiar semantics
+builtins/shopt.def
+ - expand_once_flag: "assoc_expand_once" option now sets this flag,
+ calls set_assoc_expand on change
+ - set_assoc_expand: sets assoc_expand_once to mirror expand_once_flag;
+ placeholder for future changes
- 10/6
- ----
-lib/sh/casemod.c
- - sh_modcase: convert even single-byte wide characters to wide upper
- or lowercase equivalents to accommodate locales where single-byte
- characters have multibyte upper and lower case conversions. Bug
- reported by Stephane Chazelas <stephane.chazelas@gmail.com>
+builtins/common.h
+ - expand_once_flag: extern declaration
- 10/7
+ 5/10
----
doc/{bash.1,bashref.texi}
- - slight changes to the description of command_not_found_handle to
- clarify that it's executed in a separate execution environment,
- just like if the command was found. Reported by Martijn Dekker
- <martijn@inlv.org>
+ - note that case patterns undergo quote removal. Reported by
+ AlvinSeville7cf <alvinseville7cf@gmail.com>
- 10/8
+ 5/11
----
-lib/readline/doc/{history.3,hstech.texi}
- - history_get: clarify the range of valid values for the OFFSET
- argument. From a report by Kevin Ryde <user42_kevin@yahoo.com.au>
- 10/21
- -----
-subst.c
- - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `='
- for backwards compatibility with bash-4.4
+builtins/bashgetopt.c
+ - list_optflags: flags associated with the word corresponding to
+ list_optarg, assuming list_optarg is a separate argument
-shell.c
- - main: set positional parameters before running the startup files,
- so the startup files can inspect $@. Often-requested feature,
- most recently from Stephane Chazelas <stephane.chazelas@gmail.com>
+builtins/bashgetopt.h
+ - list_optflags: extern declaration
- 10/27
- -----
-doc/{bash.1,bashref.texi}
- - Arrays: add some clarifying language to make it clear that array
- references that don't use the ${a[s]} syntax are subject to
- globbing when passed as arguments to commands such as unset, and
- should be quoted for safety. Change prompted by a report from
- Eli Barzilay <eli@barzilay.org>
-
-parse.y
- - parse_comsub: make sure we don't run off the end of the `ret'
- buffer when checking for the here doc delimiter. Report from
- Jakub Wilk <jwilk@jwilk.net>, the result of a fuzzing test. Pointer
- to place for the fix from Eduardo Bustamante <dualbus@gmail.com>
-
- 10/30
- -----
-builtins/pushd.def
- - get_directory_stack: make sure the current directory (element 0 of
- the stack) is passed to polite_directory_format under the same
- conditions as the rest of the stack entries (flags & 1). Otherwise
- something like `cd ${DIRSTACK[0]}' will fail. Fixes bug reported
- by Steve Jones <sjml@slohj.org>
-
-builtins/declare.def
- - declare_internal: when checking for a `[' to see whether or not this
- is an array variable declaration (declare -a foo[12]), make sure
- we don't do the check if we're just dealing with shell functions.
- Bug and pointer to fix from PJ Eby <pje@telecommunity.com>
+builtins/set.def
+ - unset_builtin: set VFLAGS each time through the loop, since we take
+ whether or not the word has W_ARRAYREF set into account
+ - unset_builtin: don't pass VA_ALLOWALL to unbind_array_element for
+ now
- 11/1
- ----
-parse.y
- - parse_comsub: if we read a four-character word followed by a break
- character, and that word is not one of the reserved words, set
- lex_rwlen to 0 since we are no longer in a reserved word. It only
- hurts if another break character immediately follows, so that test
- succeeds again. Turn off the RESWDOK flag only if it's not a shell
- metacharacter, too. Fixes bug reported by Kjetil Torgrim Homme
- <kjetilho@scribus.ms.redpill-linpro.com>
+test.c
+ - unary_test: in the -v case, use assoc_expand_once in the first call
+ to valid_array_reference ()
- 11/3
- ----
-lib/readline/isearch.c
- - _rl_isearch_dispatch: if we are searching in reverse order, let
- sline_index go to -1 to avoid searching the same line twice. It
- gets reset right after that, so there's no danger of indexing into
- the history line with a negative index.
+builtins/printf.def
+ - printf_builtin: only set VA_ONEWORD if the option argument to -v has
+ W_ARRAYREF set (look at list_optflags)
- 11/7
+ 5/12
----
-execute_cmd.c
- - time_command: only restore command->flags if CODE indicates we didn't
- perform a longjmp back to top_level. If we did, `command' has already
- been freed. Fixes bug reported on savannah by
- ukuvbu oibws <xyzdr4gon333@googlemail.com>
- https://savannah.gnu.org/support/?109403
-
- 11/10
- -----
-lib/sh/unicode.c
- - u32cconv: make sure to initialize localconv to -1 (error) in case
- we switch from a utf-8 locale to something else and call
- iconv_close. Report from Egmont Koblinger <egmont@gmail.com>; fix
- from Eduardo Bustamante <dualbus@gmail.com>
- 11/16
- -----
subst.c
- - parse_comsub: istring_index should be a size_t to avoid integer
- overflow when allocating large pieces of memory. Report and fix
- from Siteshwar Vashisht <svashisht@redhat.com>, originally based on
- http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html
-
- 11/24
- -----
-lib/readline/bind.c
- - rl_empty_keymap: new public function, returns non-zero if there are
- no keys bound in the keymap passed as an argument
-
-lib/readline/readline.h
- - rl_empty_keymap: new public extern declaration
-
-lib/readline/doc/rltech.texi
- - rl_empty_keymap: document new function
-
-lib/readline/bind.c
- - rl_generic_bind: keep track of the previous keymap and previous
- index in a multi-key key sequence so we can remove an empty terminal
- keymap and remove a previous override to ANYOTHERKEY. Right now,
- this only works for one previous keymap level. Inspired by a report
- from Clark Wang <dearvoid@gmail.com>
-
- 11/25
- -----
-lib/readline/display.c
- - _rl_update_final: make sure that computing the length of the visible
- bottom line (botline_length) takes any invisible characters in the
- prompt into account (woff). This value is used as part of the check
- whether or not we want to remove the line-wrapping indicator on
- terminals like xterm
- - _rl_update_final: when removing the line-wrapping indicator on xterm,
- make sure we take invisible characters in the prompt (woff) into
- account when computing the character in the rightmost physical
- screen position. Fixes cosmetic line-wrapping issue reported by
- Egmont Koblinger <egmont@gmail.com>
-
- 11/27
- -----
-lib/sh/ufuncs.c
- - fsleep: if using select to implement sleep, use restart after
- a signal interrupts the select and handle pending signals. If
- pselect is available, use that instead and block SIGCHLD while
- pselect is executing.
- Fixes report from Thiruvadi Rajaraman <trajaraman@mvista.com>
-
- 11/28
- -----
-lib/readline/signals.c
- - rl_check_signals: new public function: a wrapper for RL_CHECK_SIGNALS
- that can be used by applications that install a wrapper for
- rl_getc (rl_getc_function) so they can respond to signals that
- arrive while waiting for input in the same way as rl_getc. The app
- can use rl_pending_signal() to get the most recently-received
- signal. From a discussion about Gnuplot initiated by
- Rin Okuyama <rokuyama@rk.phys.keio.ac.jp>
-
-lib/readline/readline.h
- - rl_check_signals: new extern declaration
+ - expand_array_subscript: don't quote @ or * in the expanded subscript
+ at all, even when they are the only character in the subscript. See
+ how this works out -- it might uncover places where we need to allow
+ `*' and `@' as subscripts where they are not allowed now
-lib/readline/doc/rltech.texi
- - rl_check_signals: document new public function
-
-variables.c
- - set_pwd: test for and force an inherited OLDPWD to be a directory
- if OLDPWD_CHECK_DIRECTORY is defined in config-top.h (it is by
- default). Issue raised by Mikulas Patocka <mikulas@twibright.com>
+expr.c
+ - expr_bind_variable: pass ASS_ALLOWALLSUB to bind_int_variable so we
+ can allow (( A[@]=value )) when A is an existing associative array
-config-top.h
- - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default
+arrayfunc.h
+ - AV_ATSTARKEYS: new flag value, means to accept a[@] and a[*] but
+ treat them as keys/expressions and not special values
- 11/29
- -----
-Makefile.in
- - pathexp.o: add dependencies on libintl.h. Reported by
- Ross Burton <ross@burtonini.com>
+arrayfunc.c
+ - array_value_internal: check AV_ATSTARKEYS and don't treat them as
+ ALL_ELEMENT_SUB values; they fall through to use as keys/indices
- 12/1
- ----
-lib/sh/ufuncs.c
- - fsleep: add blocking and releasing SIGCHLD using sigprocmask
- around call to select(2) even if pselect(2) is not available
+test.c
+ - unary_test: if -v is passed an array reference, add AV_ATSTARKEYS to
+ the flags passed to array_value so we treat @ and * as keys for an
+ existing associative array
- 12/3
+ 5/13
----
-execute_cmd.c
- - coproc_setstatus: new utility function, take a pointer to a coproc
- and a status and mark the coproc as dead and having been reaped
- with that status. Used by child processes who want to invalidate
- the coproc's pid
- 12/5
- ----
subst.c
- - process_substitute: instead of just having a flag to denote that a
- file descriptor is connected to a process substitution, store the
- pid of the child process (still needs work)
- - find_procsub_child,set_procsub_status,reap_procsubs: utility
- functions to allow the job control code to detect that a process
- substitution child has died and deallocate the file descriptors
- or pathname
-
-subst.h
- - find_procsub_child,set_procsub_status,reap_procsubs: extern
- declarations
-
-nojobs.c
- - set_pid_status: if we are reaping a process substitution, call
- set_procsub_status to record the fact
-
-jobs.c
- - waitchld: if we are reaping a process substitution, call
- set_procsub_status to record the fact. Doesn't really do anything
- yet
+ - expand_cond_word: if SPECIAL == 3 (arithmetic expression), dequote the
+ resulting WORD_LIST * as if special == 0, because we don't want to
+ quote the list for pattern matching. Report from
+ Adjudicator Darren <adjudicatordarren@protonmail.com>
- 12/6
- ----
-execute_cmd.c
- - execute_command: don't call unlink_fifo_list if we're in the
- middle of executing a list of commands (executing_list != 0).
- Partial fix for bug reported by Stephane Chazelas
- <stephane.chazelas@gmail.com>
- - execute_simple_command: don't close process substitution file
- descriptors in the parent after forking children in a pipeline;
- defer until pipeline completes, since parent may have inherited
- fds from a calling scope (e.g., via `.'). EXPERIMENTAL
- - execute_disk_command: don't close process substitution file
- descriptors in the parent after forking the child. EXPERIMENTAL
-
- 12/7
- ----
-doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
- - show-mode-in-prompt: clarify that this must be enabled before the
- vi and emacs mode strings are prefixed to the prompt. Report from
- Rob Foehl <rwf@loonybin.net>
-
- 12/8
+ 5/14
----
-execute_cmd.c
- - execute_coproc: don't warn about an existing coproc if the write and
- read file descriptors are unusable (-1), as they will be after a
- call to coproc_closeall in a subshell. Fixes spurious warning
- reported by Tobias Hoffmann <lfile-list@thax.hardliners.org>
-
-jobs.c
- - bgp_resize: avoid overflow when calculating the new size if the
- child process limit is something ridiculously large. Report and
- fix from Natanael Copa <ncopa@alpinelinux.org>
-
-execute_cmd.c
- - execute_builtin_or_function: if we return via the return builtin, we
- don't get a chance to free the saved fifo list, so add an unwind-
- protect to make sure it happens. Part of fix for leak reported by
- Oyvind Hvidsten <oyvind.hvidsten@dhampir.no>
- - execute_command_internal: if we unwind via the return builtin (e.g.,
- we execute a function which then returns via the return builtin to
- a previous function), we don't free the saved fifo list, so add an
- unwind-protect to make sure the free happens. Rest of fix for leak
- reported by Oyvind Hvidsten <oyvind.hvidsten@dhampir.no>
-
subst.c
- - add_fifo_list: for the FIFO case (no /dev/fd), make sure we
- initialize the new members of the fifo list after xrealloc
+ - expand_array_subscript: add double quote (") to the list of characters
+ that are backslash-quoted in subscripts after word expansion.
+ skipsubscript treats them specially, so you have to quote them to
+ do things like `key='"' ; array[$key]=1 ; [[ -v array[$key] ]]'
- 12/9
+ 5/16
----
-subst.c
- - dev_fd_list: now a list of type `pid_t' so we can store process
- associated with the pipe fd into the right element; change all
- necessary functions (copy_fifo_list, add_fifo_list)
- - process_substitute: store pid of child process into the right
- index in dev_fd_list after opening the pipe. Process ID of -1 means
- process has been reaped and fd needs to be closed (or FIFO needs to
- be unlinked); value of 0 means slot is unused
-
-jobs.c
- - wait_for_background_pids: call reap_procsubs to make sure we clean
- up all reaped process substitutions before trying to wait for
- everything (still needs work)
-tests/{run-procsub,procsub.{tests,right}}
- - new file, tests of process substitution that have failed in the past
-
- 12/10
- -----
-jobs.c
- - wait_for_background_pids: warn if one of the jobs is stopped
-
-subst.c
- - wait_procsubs: new function, call wait_for for every "live" process
- substitution
+builtins/wait.def
+ - wait_builtin: if we longjmp to wait_intr_buf, call unset_waitlist if
+ we have called set_waitlist (wflags & JWAIT_WAITING). Fixes bug with
+ wait -n interrupted by a trapped signal (not SIGINT) reported by
+ Jonas Alfredsson <jonas.alfredsson@protonmail.com>
jobs.c
- - wait_for_background_pids: call wait_procsubs to reap any living
- process subsitutions
-
- 12/13
- -----
-lib/readline/bind.c
- - parser_if: add support for testing the readline version, using the
- full set of arithmetic comparison operators (and supporting both
- = and ==), using version numbers of the form major[.[minor]]
-
- 12/14
- -----
-subst.[ch]
- - string_list_dollar_star: now takes QUOTED and PFLAGS arguments like
- string_list_dollar_at, changed all callers. Not used yet.
-
- 12/16
- -----
-subst.c
- - param_expand: broke out cases of expanding unquoted (quoted == 0)
- $* on the rhs of an assignment statement (pflags & PF_ASSIGNRHS)
- with various values of IFS (unset, null, set to non-null value) to
- capture the expansion subtleties. From a report back on 11/24 by
- Martijn Dekker <martijn@inlv.org>
-
- 12/17
- -----
-array.h
- - set_element_value: new define, sets array element AE to VALUE
-
-variables.c
- - set_pipestatus_array: use set_element_value where appropriate
-
- 12/18
- -----
-subst.c
- - parameter_brace_find_indir: when expanding the indirect parameter
- to find the eventual variable name, we don't perform word splitting.
- Make sure this does the right thing for * and @. Fixes bug
- reported by isabella parakiss <izaberina@gmail.com>
-
- 12/19
- -----
-doc/{bash.1,bashref.texi}
- - indirect expansion: make sure to note that the value of the indirect
- variable does not undergo word splitting as one of its expansions,
- as in fix from 12/18
-
- 12/22
- -----
-subst.c
- - parameter_brace_expand_rhs: make sure the value this function returns
- when OP is `=' is quoted appropriately, as the callers expect. More
- changes from Posix interp 221. Fixes report from Martijn Dekker
- <martijn@inlv.org>
-
-variables.c
- - assign_hashcmd: if running in a restricted shell, make sure the
- target of the hash assignment can be found via a $PATH search, to
- prevent users assigning commands to the hash table they would not
- ordinarily have access to. Fixes issue raised by Drew Parker
- <andrew.s.parker2@gmail.com>
-
-builtins/hash.def
- - hash_builtin: if running in a restricted shell, make sure the
- pathname target of `hash -p' can be found via a $PATH search, to
- prevent users assigning commands to the hash table they would not
- ordinarily have access to.
-
- 12/27
- -----
-array.c,arrayfunc.c,...
- - many changes to clean up unused variables and functions. From a
- report from Siteshwar Vashisht <svashisht@redhat.com>
-
- 12/28
- -----
-lib/readline/terminal.c
- - _rl_term_clrscroll: save the `E3' termcap capability, which clears
- the scrollback buffer where supported. Unused right now
-
-lib/readline/rlprivate.h
- - _rl_term_clrscroll: extern declaration
-
-lib/readline/bind.c
- - parser_if: added simple variable comparison capability. Allowable
- operators are `=', `==', and `!='; boolean variables must be
- compared to either `on' or `off'; variable names must be separated
- from the operator by whitespace
-
-doc/bash.1,lib/readline/doc/{rluser.texi,readline.3}
- - document new `if variable comparison value' construct
-
- 1/2/2018
- --------
-lib/glob/sm_loop.c
- - EXTMATCH: when matching against !(patlist), if a filename beginning
- with a `.' does not match any of the patterns in patlist, don't
- return it as a match if leading dots need to be matched explicitly
- (flags & FNM_PERIOD). Report from Eric Cook <llua@gmx.com>
-
- 1/3
- ---
-variables.[ch]
- - bind_function_def: takes an additional flags argument. If FLAGS&1,
- overwrite any existing function_def hash table entry; if FLAGS==0,
- leave any existing function_def alone.
-
-make_cmd.c
- - make_function_def: call bind_function_def with flags == 0
+ - wait_sigint_cleanup: restore the old sigint handler before we longjmp
+ out by calling restore_sigint_handler()
-execute_cmd.c
- - execute_intern_function: call bind_function_def with flags == 1 so
- we have function_def information that's correct for where the
- function is defined, not just where it's last parsed. Fixes report
- from Bruno Vasselle <bruno.vasselle@laposte.net>; final piece of
- fix from 12/15/2011
-
- 1/4
- ---
-subst.c
- - param_expand: deal with string_list_dollar_star returning NULL.
- Fixes bug reported by Martijn Dekker <martijn@inlv.org>
-
-builtins/history.def
- - history_builtin: enabled code that performs range deletion
-
- 1/5
- ---
-subst.c
- - do_assignment_internal: if performing a compound assignment, make
- sure to pass ASS_CHKLOCAL flag to do_compound_assignment if the
- assignment word has the W_CHKLOCAL flag set
- - do_compound_assignment: honor ASS_CHKLOCAL flag and check for an
- existing local variable before creating or modifying a global
- variable
-
-builtins/declare.def
- - declare_internal: new (undocumented so far) option: -G. Means to
- act on global variables (create, modify) if no local variable is
- found with the specified name
- - declare_find_variable: new declare-specific wrapper functon for
- declare builtin; obeys -g and -G options in one place
- - declare_internal: if no variable is found after following any nameref
- chain, look up the variable using declare_find_variable to honor the
- -G option. XXX - so far, this is the only place that function is used
-
-subst.c
- - shell_expand_word_list: before calling make_internal_declare, add
- 'G' to the options list if W_CHKLOCAL is set in the word's flags.
- This makes builtins like `readonly' that modify local variables in
- a function behave the same for scalar and array variables
-
- 1/11
- ----
-parse.y
- - shell_getc: move code that decides whether to append a space to an
- alias expansion here from mk_alexpansion, so we can inhibit adding
- a space if we're currently parsing a single or double quoted string
-
- 1/12
+ 5/17
----
+builtins/read.def
+ - bind_read_variable: now takes an additional argument, flags to pass
+ to builtin_bind_variable; change callers
+ - SET_VFLAGS: set vflags and bindflags
+ - read_builtin: call SET_VFLAGS to set vflags and bindflags from each
+ word before calling valid_array_reference and bind_read_variable
-parse.y
- - clear_string_list_expander: take a pointer to an alias that's about
- to be freed and make sure there aren't any pointers to it in the
- list of pushed strings. If there are, zero it out in the pushed
- string list to avoid referencing freed memory in pop_string()
+builtins/common.c
+ - builtin_bind_variable: set vflags (for valid_array_reference) and
+ bindflags (for bind_variable/assign_array_element) separately for
+ clarity
-alias.c
- - free_alias_data: if an alias being freed is currently being expanded,
- call clear_string_list_expander to remove references to it from the
- list of pushed strings
+arrayfunc.c
+ - assign_array_element: sanity check: make sure that the subscript
+ returned by array_variable_name consumes the entire NAME, otherwise
+ flag it as a subscript error. This keeps things like
+ `KEY=' ]'; read assoc[$KEY] <<< hello' from assigning to incomplete
+ subscripts
- 1/14
- ----
-pcomplib.c
- - progcomp_search: add code to look up an alias for the CMD argument
- and return the completions for the first word of that alias if one
- is found. Just a start at completing aliases, a much-requested
- feature
-
-pcomplete.h
- - COPT_LASTUSER: last flag value used by user-settable completion
- options
- - PCOMP_RETRYFAIL, PCOMP_NOTFOUND: new #defines, possible return values
- from programmable_completions in FOUNDP argument. Moved RETRYFAIL
- define here from pcomplete.c to avoid collisions with user-settable
- option values (COPT_*)
+builtins/printf.def
+ - printf_builtin: if LIST_OPTFLAGS includes W_ARRAYREF, set VA_NOEXPAND
+ in VFLAGS
- 1/15
+ 5/17
----
-pcomplete.c
- - programmable_completions: if we don't find any completions for a
- command, and RETRY is 0, see if the command is a defined alias,
- expand it, and try to expand the first word of the value as a
- command, and find any programmable completions for it. Here right
- now, could be moved to attempt_shell_completion later if we need
- to do more analysis of the expanded line. We'll see how it works
- in practice. (Disabled for now.)
- 1/16
- ----
-parse.y
- - grammar: when timing the null command, make sure to turn off the
- flags in parser_state (PST_REDIRLIST) that make_simple_command sets
- when given a NULL second argument, since it assumes that it's going
- to turn those off when it gets the next word of the simple command
- (which it never gets in this case). Fixes bug reported by
- Anti Räis <antirais@gmail.com>
+lib/readline/complete.c
+ - compute_lcd_of_matches: move a couple of strlen calls out of a loop
+ in calls to mbrtowc; performance improvement only. Report and fix
+ from sparrowhawk996@gmail.com
- 1/19
- ----
-lib/readline/rltty.c
- - prepare_terminal_settings (termios/termio): if there is a function
- bound to the VDISCARD character in the current keymap, set VDISCARD
- to _POSIX_VDISABLE while readline is active. From a report from
- Rhialto <rhialto@falu.nl>
+lib/readline/bind.c
+ - rl_trim_arg_from_keyseq: take a key sequence and its length and
+ return the index into the key sequence following any initial numeric
+ argument. Return -1 if there is no numeric argument (the caller is
+ expected to make sure) or if the key sequence consists *only* of
+ the numeric argument. The caller should use the remainder of the
+ key sequence to look up the desired key binding.
- 1/22
- ----
-builtins/history.def
- - histtime: check whether or not localtime() returns NULL, and make
- sure we only call strftime() with a valid struct tm. This can happen
- when the timestamps in the history file overflow a time_t. Fixes bug
- reported by Luke Dashjr <luke@dashjr.org>
+lib/readline/readline.h
+ - rl_trim_arg_from_keyseq: extern declaration
bashline.c
- - edit_and_execute_command: if we're in vi editing mode, make sure
- we end up in insert mode after executing the commands from the
- edited file. This seems to be what other shells do. Report from
- Stan Marsh <gazelle@xmission.com>
+ - bash_execute_unix_command: if the argument count is > 1 or we have
+ an explicit argument, call rl_trim_arg_from_keyseq to get past the
+ numeric argument and deal with the rest of the key sequence. We still
+ need a way to pass it to the invoked program or function. From
+ a report from Jesper Nygards <jesper.nygards@gmail.com>
- 1/26
+ 5/18
----
-bashline.c
- - command_word_completion_function: match alias and shell function
- names case-insensitively if the readline completion-ignore-case
- variable is set. Inspired by report from <odnehel@gmail.com>
-
-lib/readline/display.c
- - update_line: when performing a dumb update after wrapping the line
- (usually due to printing the prompt), make sure we adjust
- _rl_last_c_pos if there are invisible characters in prompt lines
- other than the first (we assume those invisible characters are in
- the last line, which is nearly always the case). We adjust by the
- total number of invisible chars less the number of invisible chars
- in the first prompt line. From a report in
- https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1745273
-
-execute_cmd.c
- - execute_command_internal: if redirections attached to a compound
- command fail, make sure we discard the `internal_fifos' unwind-
- protect frame after freeing the copied fifo_list and before returning
- 1/30
- ----
-lib/readline/rlprivate.h
- - BRACK_PASTE_FINI: add \r to the end of the string to avoid problems
- with the tty driver thinking the cursor was in the wrong position.
- Fixes issue reported by Egmont Koblinger <egmont@gmail.com>
+bashline.c
+ - bash_execute_unix_command: if the user supplied a numeric argument
+ when invoking bash_execute_unix_command, pass it to the command in
+ the READLINE_ARGUMENT variable
- 1/31
- ----
-lib/sh/zread.c
- - zread,zreadintr: call check_signals() before calling read() to
- minimize the race window between signal delivery, signal handling,
- and a blocking read(2). Partial fix for FIFO read issue reported by
- Oyvind Hvidsten <oyvind.hvidsten@dhampir.no>
+lib/readline/readline.[ch]
+ - _rl_del_executing_keyseq: convenience function to `delete' the last
+ character added to the executing key sequence. Intended to be used
+ before calling rl_execute_next or similar functions that push input
+ back to be re-read
doc/{bash.1,bashref.texi}
- - shopt: document `assoc_expand_once' shell option
-
- 2/1
- ---
-config-top.h
- - DONT_REPORT_SIGTERM: define, so non-interactive shells will no
- longer print termination messages for child processes killed by
- SIGTERM
-
- 2/6
- ---
-lib/readline/text.c
- - rl_insert: don't attempt to optimize typeahead if we are only reading
- a fixed number of characters (rl_num_chars_to_read > 0)
-
-redir.c
- - redir_special_open: if the shell is restricted, return a
- RESTRICTED_REDIRECT error for attempts to open /dev/tcp and /dev/udp
- sockets. Inspired by report from Blake Burkhart <bburky@bburky.com>
- - do_redirection_internal: if redir_open returns RESTRICTED_REDIRECT,
- return that right away (instead of errno) so we can print a better
- error message
-
- 2/11
- ----
-jobs.c
- - bgp_resize: fix problems with (pid_t) overflow when calculating new
- size for table when js.c_childmax is near the limit of a pid_t
- (e.g., 2**31 - 1 on a 32-bit system, or 2**63-1 on a system with
- 32-bit pid_t). Fixes hang reported by Natanael Copa
- <ncopa@alpinelinux.org> based on his patch from 12/8.
- - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768)
-
-include/typemax.h
- - TYPE_MINIMUM, TYPE_MAXIMUM: updated definitions from coreutils-8.29,
- silences some compiler warnings
-
- 2/14
- ----
-Makefile.in
- - maybe-clean: use cd and pwd -P to test whether or not two directory
- names identical, since topdir = '.' and BUILD_DIR = full pathname
- when you use something like `bash ./configure'. Problem reported by
- Michael Felt <aixtools@gmail.com>
+ - READLINE_ARGUMENT: documented new variable available for commands
+ defined using `bind -x' keybindings
-subst.c
- - split_at_delims: if SD_NOQUOTEDELIM is in the flags argument, don't
- treat `'' and `"' as candidates for possible sequences of delimiters,
- even if they're part of the delimiter set (the delims argument).
- Fixes problem with completing lines like `foo --bar='quux baz' xx'
- reported by Nick Patavalis <npat@efault.net>
+lib/readline/doc/rltech.texi
+ - rl_trim_arg_from_keyseq: documented new function
- 2/15
+ 5/19
----
-copy_cmd.c
- - copy_word_list: build the list in the right order, avoiding having
- to reverse it at the end. Helps with long argument lists
-
-shell.c
- - bind_args: build the argument list in the right order, avoiding
- having to reverse it at the end.
- - bind_args: only call push_args to save argc and argv as BASH_ARGC
- and BASH_ARGV if debugging mode is enabled (debugging_mode != 0).
- Inspired by report from Ambrose Feinstein <ambrose@google.com>
- - bind_args: note that we've saved BASH_ARGC and BASH_ARGV by setting
- bash_argv_initialized
- - shell_reinitialize: reset bash_argv_initialized back to 0 so
- BASH_ARGV and BASH_ARGC will be recreated if we're in debugging mode
-variables.c
- - save_bash_argv: new function, initializes BASH_ARGV and BASH_ARGC
- from the saved positional parameters
- - init_bash_argv: initialize BASH_ARGV and BASH_ARGC if
- bash_argv_initialized == 0
+builtins/evalstring.c
+ - should_suppress_fork: suppress the fork if we're in a process
+ substitution subshell, in addition to being a simple command
+ without redirections. From a report back in 10/2020 from
+ Hyunho Cho <mug896@gmail.com>
-builtins/shopt.def
- - shopt_set_debug_mode: if we're turning on debug mode, initialize
- BASH_ARGC and BASH_ARGV if bash_argv_initialized == 0
+bashline.c
+ - command_word_completion_function: if we're trying to complete an
+ absolute program (one containing a slash), don't run strcmp or
+ strcasecmp on the return value from rl_filename_completion_function,
+ since that duplicates work the filename completion function already
+ does. From a report back in 1/2021 by awa54@cdak.net
- 2/16
+ 5/22
----
-execute_cmd.c
- - execute_function: make sure BASH_ARGV and BASH_ARGC are initialized
- before calling push_args (and before calling remember_args)
-
-builtins/source.def
- - source_builtin: make sure BASH_ARGV and BASH_ARGC are initialized
- before calling push_args (and before calling remember_args)
-
-builtins/evalfile.c
- - _evalfile: if the shell compatibility level is 44 or lower, make
- sure BASH_ARGV and BASH_ARGC are initialized before calling
- array_push
-
-builtins/shopt.def
- - compat44: new shell option. This will be the last compatXX option
+parse.y
+ - CHECK_FOR_RESERVED_WORD: if we are returning an ESAC and unsetting
+ PST_CASESTMT, decrement esacs_needed_count
-doc/{bash.1,bashref.texi}
- - compat44: document new shell option
+parse.y,shell.h
+ - sh_parser_state_t: save and restore esacs_needed_count and
+ expecting_in_token in the shell parser state struct and
+ save_parser_state/restore_parser_state
- 2/21
- ----
-builtins/common.h
- - ISOPTION: check s[1] before s[2] to avoid out of bound reads. Fixes
- bug reported by jeremy@feusi.co
-
-input.h
- - B_SHAREDBUF: new flag for buffered input fds, indicates that this
- fd shares its b_buffer with another fd
-
-input.c
- - duplicate_buffered_stream: when duplicating *from* the buffer
- corresponding to bash input, make sure the new buffer has B_SHAREDBUF
- in the flags, because copy_buffered_stream copies pointers
- - duplicate_buffered_stream: if the buffer being copied to has the
- B_SHAREDBUF flag set, make sure the b_buffer doesn't get freed.
- Fixes use-after-free bug reported by jeremy@feusi.co
- - save_bash_input,close_buffered_stream: make sure a buffer with
- B_SHAREDBUF set has its b_buffer set to NULL before calling
- free_buffered_stream
+print_cmd.c
+ - print_simple_command: don't bother to call command_print_word_list
+ with an empty list
+ - print_simple_command: don't print a space before a redirection list
+ if there weren't any command words to print
- 2/24
+ 5/24
----
-subst.c
- - parameter_brace_expand_error: add parameter saying whether or not
- we are checking whether value is null, so we can have different
- error messages for ${x:?} and ${x?}. Report and fix from
- don fong <dfong@dfong.com>
- 3/5
- ---
-lib/readline/bind.c
- - _rl_read_file: instead of calling stat/open on the passed filename,
- use open/fstat to avoid one possible filename translation and close
- a small (benign) race condition. Report and fix from Roy Ivy
- <roy.ivy.iii@gmail.com>
+lib/sh/input_avail.c
+ - nchars_avail: make sure SET and OSET are declared on systems with
+ select(2). Reported by Larkin Nickle <me@larbob.org>
- 3/11
- ----
-variables.c
- - makunbound: if new variable localvar_unset is non-zero, mark local
- vars in previous scopes as invisible and unset so they will show
- up as unset until that previous scope returns (similar to how local
- variables in the current local scope are handled). localvar_unset
- is currently set to 0 with no way for a script to change its value.
- Eventually there will be an option to modify it. From a bug-bash
- discussion started by Nikolai Kondrashov <spbnick@gmail.com> back
- on 2/11/2018
-
- 3/13
- ----
-subst.c
- - expand_word_list_internal: short-circuit and exit right away if a
- variable assignment preceding a special builtin fails in posix mode
- - expand_word_list_internal: if a variable assignment precedes an
- empty command name (after expansion), fix to exit right away when
- the shell is in posix mode
+parse.y
+ - cond_term: if we read a `!' toggle CMD_INVERT_RETURN instead of
+ setting it unconditionally. Report and patch from
+ Vincent Menegaux <vincent.menegaux@gmail.com> via
+ https://savannah.gnu.org/patch/?10070
- 3/15
+ 5/25
----
doc/{bash.1,bashref.texi}
- - Add text to Pathname Expansion clarifying that a slash must be
- matched by a slash in the pattern when matching pathnames, but
- not in other matching contexts. Suggested by <stormy1777@yahoo.com>
-
-builtins/common.c
- - read_octal: allow octal numbers greater than 777 to accommodate
- modes and umasks that include sticky/setuid/setgid bits. Report
- and fix from Martijn Dekker <martijn@inlv.org>
+ - test: add the ( $2 $3 ) case to the description of the four-argument
+ behavior. Inspired by a discussion with Christoph Anton Mitterer
+ <calestyo@scientia.net>
- 3/19
+ 5/27
----
-lib/readline/bind.c
- - rl_generic_bind: make sure we only assign to prevkey in the loop
- if the key sequence index is > 0, so ic is valid. Fixes bug
- reported by Koichi Murase <myoga.murase@gmail.com>
+doc/bashref.texi
+ - replace most of the GNU parallel section with a reference to the
+ tutorial on gnu.org
-builtins/read.def
- - read_builtin: be slightly less aggressive checking for timeouts and
- SIGALRM: if we successfully read a character, don't check for a
- timeout until we store or process it. Fixes timing problem
- reported by Rob Foehl <rwf@loonybin.net>
+lib/glob/glob.h
+ - GX_NEGATE: new flag; indicates whether the pattern is being negated
+ as part of an extglob pattern. Not used yet
- 3/22
- ----
-sig.c
- - termsig_handler: add a call to exit(1) after the kill, just in case
- there are circumstances where the SIG_DFL signal handler is
- ignored. Report from Andrei Vagin <avagin@gmail.com>
+lib/glob/glob.c
+ - extglob_skipname,wextglob_skipname: pass GX_NEGATE to the skipname
+ functions if the pattern is being negated. Not checked yet
- 3/25
+ 5/28
----
-lib/readline/bind.c
- - _rl_function_of_keyseq_internal: new internal function that takes a
- length parameter to accommodate NUL in the key sequence. Patch from
- Koichi Murase <myoga.murase@gmail.com>
- - rl_function_of_keyseq_len: new application-callable function that
- takes a length parameter; otherwise equivalent to rl_function_of_keyseq.
-
-lib/readline/readline.h
- - rl_function_of_keyseq_len: add extern declaration for new function
-
-lib/readline/doc/rltech.texi
- - rl_function_of_keyseq_len: document new function interface
-
-bashline.c
- - bash_execute_unix_command: use rl_function_of_keyseq_len to handle
- key sequences with embedded NULs (\C-@). Fix from Koichi Murase
- <myoga.murase@gmail.com>
-
-lib/readline/bind.c
- - rl_bind_key_if_unbound,rl_bind_key_if_unbound_in_map: run the KEY
- argument through rl_untranslate_keyseq to produce a symbolic sequence
- that can encode \C-@.
- - rl_bind_keyseq_if_unbound_in_map: translate the key sequence in order
- to accommodate symbolic key sequences; should be a no-op for `raw'
- key sequences such as the arrow key seqeunces from terminfo. Change
- from Koichi Murase <myoga.murase@gmail.com>
-
- 4/2
- ---
-jobs.c
- - wait_for: when setting the SIGINT signal handler to wait_sigint_handler
- make sure we're not setting old_sigint_handler recursively, as we
- can when running an external command in a trap we took after a
- command exited due to SIGINT. We don't want to overwrite
- old_sigint_handler here. Fixes bug reported by Dr. Werner Fink
- <werner@suse.de>
-
-execute_cmd.c
- - execute_disk_command: when there is a command_not_found_hook, make
- sure the subshell turns off job control before running it, in case
- it runs processes. We don't want it to manipulate process groups.
- Fixes bug reported by ÐиÑиллов Ðима <dk.1997-fast@yandex.ru>
- - execute_command_internal: make sure the command run by the `command'
- builtin doesn't cause the ERR trap to be executed; wait for the
- status to be returned by the command builtin. Fixes bug reported by
- Martijn Dekker <martijn@inlv.org>
-
- 4/4
- ---
-subst.c
- - process_substitute: handle longjmp back to top_level and function
- returns (return_catch) in the child process, like command
- substitution, so we don't longjmp back to some arbitrary spot from
- the `exit' or `return' builtins, or on an expansion error, like
- the command timing code. Fixes bug reported by Basin Ilya
- <basinilya@gmail.com>
+doc/{bash.1,bashref.texi}
+ - dotglob: add text to clarify that `.' and `..' have to be matched by
+ a pattern beginning with `.' or -- and this is the sketchy part --
+ that a pattern beginning with `.' has to be one of the patterns in
+ an extended glob expression
- 4/6
- ---
-parse.y
- - read_token_word: when reading a matched pair of backquotes as part
- of a word, treat it as quoted so the characters are read as a single
- word, but do not let the presence of the backquote mark the word as
- quoted. Fixes here-document delimiter bug reported by Denys Vlasenko
- <dvlasenk@redhat.com>
+lib/glob/glob.c
+ - skipname,wskipname: perform the special checks for `.' only if the
+ pattern is not being negated
- 4/7
+ 6/3
---
-execute_cmd.c
- - execute_case_command: call quote_string_for_globbing with the
- QGLOB_CTLESC flag for both quoted and unquoted words, so it will
- remove CTLESC/CTLESC in all cases while converting other quoted
- characters to use a preceding backslash. Bug reported by
- Martijn Dekker <martijn@inlv.org>
+parse.y,shell.h
+ - eol_ungetc_lookahead: save and restore as part of the parser state
+ included in {save,restore}_parser_state
- 4/9
+ 6/7
---
-smatch.c
- - posix_cclass_only: helper function that checks whether a pattern has
- only posix single-byte character classes ([:alpha:], etc.) or has
- none at all
- - xstrmatch: if running in a multibyte locale, make sure to short-
- circuit to the single-byte matching code only if there are no
- unrecognized character class names, since the wide character ctype
- functions allow locales to define their own character class names
- (e.g., "hyphen"). Fixes issue reported by yangyajing <yyj_cqu@163.com>
-
- 4/10
- ----
-configure.ac,cross-build/qnx.cache
- - qnx: add a configure cache file for cross-building, treat qnx 7 like
- qnx 6 in terms of cpp options. Fix from Brian Carnes
- <bcarnes@google.com>
-
-aclocal.m4
- - BASH_CHECK_DEV_STDIN: experimental change to test for /dev/stdin
- independently of /dev/fd or /proc/self/fd. Suggested for QNX by
- Brian Carnes <bcarnes@google.com>
+lib/readline/display.c
+ - puts_face: make sure to cast each member of STR to unsigned char, so
+ it's not misinterpreted as EOF, which putc_face does not display.
+ Report and fix from Volodymyr Prodan <vovcat@gmail.com> in
+ https://savannah.gnu.org/patch/?10076
+examples/shobj-conf
+ - aix*gcc: change SHOBJ_LD to ${CC}, prefix the SHOBJ_LDFLAGS flags
+ with -Wl, so gcc will pass them to the linker. Report from
+ lehel@maxer.hu in https://savannah.gnu.org/support/?110505
- 4/11
+ 6/11
----
+doc/{bash.1,bashref.texi}
+ - cd: additional arguments are not ignored; they raise an error.
+ Report from Douglas McIlroy <douglas.mcilroy@dartmouth.edu>
+
+lib/glob/strmatch.h
+ - FNM_DOTDOT: enable special handling for `.' and `..': if FNM_PERIOD
+ is not set, `.' and `..' at the start of a string or as a pathname
+ component need to be matched by a `.' in the pattern and cannot be
+ matched by `?', `*', or a bracket expression
+
lib/glob/glob.c
- - glob_testdir: return -2 if DIR is a symlink, to differentiate it from
- any other kind of non-directory file
- - glob_vector: if we have GX_ALLDIRS (globstar), we want to skip over
- symlinks to directories, since we will pick up the real directory
- later. Fixes incompatibility reported by Murukesh Mohanan
- <murukesh.mohanan@gmail.com>
-
-bashline.c
- - bash_execute_unix_command: changes to make READLINE_POINT apply to
- characters instead of bytes when in a multibyte locale. Report and
- fix from Koichi Murase <myoga.murase@gmail.com>
+ - glob_vector: pass FNM_DOTDOT to strmatch() if noglob_dot_filenames
+ is not set to enable special handling of `.' and `..'. Prompted by a
+ discussion with Nora Platiel <nplatiel@gmx.us>
+ - skipname,wskipname: remove special checks for `.' and (disabled)
+ checks for `..'
- 4/12
- ----
-builtins/evalstring.c
- - parse_and_execute_cleanup: now takes an argument which is the value
- of running_trap at some point before parse_and_execute was called;
- changed callers in sig.c, builtins/evalfile.c
+lib/glob/sm_loop.c
+ - GMATCH: implement special handling for FNM_DOTDOT and `.' and `..':
+ make sure they can't be matched by any special glob characters at
+ the start of the string or as a pathname component (if FNM_PATHNAME
+ is set). This also means that !(pattern) won't return `.' or `..'
+ if dotglob is set
+ - GMATCH,EXTMATCH: don't pass FNM_DOTDOT down to recursive calls, like
+ FNM_PERIOD, once we process the first character in the string or
+ pathname component
-builtins/common.h
- - parse_and_execute_cleanup: changed prototype
+lib/glob/smatch.c
+ - ISDIRSEP,PATHSEP,SDOT_OR_DOTDOT,PDOT_OR_DOTDOT: provide definitions
+ for single-byte or wide character strings for sm_loop.c to use
- 4/13
+ 6/16
----
-builtins/evalstring.c
- - parse_and_execute_cleanup: if the argument holding the previous state
- of running_trap is the same value as the current running_trap state,
- don't call run_trap_cleanup: assume that there is a caller who will
- take care of the cleanup after this returns. Fixes recursive trap
- call on "eval return" reported by Martijn Dekker <martijn@inlv.org>
-
-parse.y
- - read_a_line: if remove_quoted_newline is non-zero, indicating the
- here-document delimiter is unquoted, we will be running the contents
- of the here-document through word expansion and need to quote CTLESC
- and CTLNUL in the input. Fixes bug with ^A in here document reported
- by Jorge Alberto Baca Garcia <bacagarcia@me.com>
- 4/18
- ----
-pathexp.c
- - quote_string_for_globbing: make sure the QGLOB_CTLESC code handles
- both CTLESC CTLESC and CTLESC CTLNUL in the same way. Fixes bug
- reported by Martijn Dekker <martijn@inlv.org>
+doc/{bash.1,bashref.texi},lib/readline/doc/{rluser,rltech}.texi
+ - slight wording changes to rewrite gender-specific language. From a
+ report by Vipul Kumar <kumar+bug-bash@onenetbeyond.org>, suggested
+ language from G. Branden Robinson <g.branden.robinson@gmail.com>,
+ Lawrence Velázquez <vq@larryv.me>,
+ and Andrew Church <achurch+bash@achurch.org>
- 4/19
- ----
-execute_cmd.c
- - execute_command_internal: before executing any command in the current
- shell, and before copying any existing FIFO list, call
- reap_procsubs to unlink or close any process substitution pipes
- associated with processes that have exited. Fixes hang in test suite
- when trying to open a FIFO with no process having it open for
- reading
+builtins/fc.def
+ - fc_builtin: make sure an entry in the history list is non-null
+ before trying to write it to stdout or the temporary file. From a
+ report from Sibo Dong <sibo.dong@outlook.com>
- 4/26
- ----
-parse.y
- - read_token_word: if returning REDIR_WORD for a {id}>foo construct,
- for example, make sure to assign the_word to yylval.word before
- returning, in case a recursive call to the parser overwrites it
- (e.g., when evaluating array indexes). From a message to
- austin-group-l from Stephane Chazelas <stephane.chazelas@gmail.com>
+builtins/common.[ch]
+ - builtin_arrayref_flags: given a WORD_DESC * (which includes flags)
+ and a base set of flags, return a set of flags to pass to
+ valid_array_reference and similar functions
-lib/glob/sm_loop.c
- - BRACKMATCH: if we have an invalid character class in an otherwise
- well-formed bracket expression, don't try to match each character
- of the (invalid) class individually; just skip over the class and
- move on. From a message on the austin-group list from
- Stephane Chazelas <stephane.chazelas@gmail.com>
+builtins/set.def
+ - unset_builtin: call builtin_arrayref_flags to set vflags
- 4/27
+ 6/19
----
-variables.c
- - push_exported_var,push_func_var,push_temp_var: make sure to set the
- context correctly in the variable we bind in the previous (non-temp)
- scope. Report from Martijn Dekker <martijn@inlv.org>
-pathexp.c
- - unquoted_glob_pattern_p: a pattern that contains a backslash can
- have it removed by the matching engine (since backslash is special
- in pattern matching), so if the pattern contains a backslash, and
- does not end in a backslash, we need to return true. Fixes bug
- reported by Robert Elz <kre@bmunnari.OZ.AU>
-
-lib/glob/glob_loop.c
- - INTERNAL_GLOB_PATTERN_P: same change to return TRUE for a backslash
- that doesn't end the pattern
+parse.y
+ - parse_comsub: rewrite to recursively call the parser (yyparse()) and
+ return a string constructed from the resulting parse tree. Probably
+ will only work with bison. Error reporting is more accurate about
+ line numbers and invalid tokens, and command substitution errors
+ are caught earlier, before expansion
+ - DOLPAREN: new token, never created by yylex; only ever set by
+ parse_comsub and xparse_dolparen to indicate we're recursively
+ calling the parser for a command substitution
+ - comsub: new grammar production that's triggered by DOLPAREN and
+ parses a command substitution, returning a <command>. It's one of
+ the possible end states for the top-level parser
+ - grammar: only call rewind_input_string if the shell's input is
+ coming from a string
+ - shell_ungets: push a string back onto the shell input; only used by
+ make_here_document for backwards compatibility -- allowing a here-
+ document to be terminated by a token at the end of a command
+ substitution
+ - yylex: don't need any more special handling when returning
+ shell_eof_token, but we keep the clause for future work
+ - read_token_word: don't handle backslashes (leave them in the input
+ stream) if we are reading a command substitution (PST_NOEXPAND)
+ - reserved_word_acceptable: allow reserved words after DOLPAREN
+ - report_syntax_error: better error handling if we hit EOF while
+ looking for the ending right paren in a command substitution
+ - parse_string_to_word_list,parse_compound_assignment: make sure to
+ turn off parse_comsub sentinel temporarily
-lib/sh/timeval.c
- - print_timeval: use locale_decpoint() instead of fixed `.' to print
- decimal point. Bug report in austin-group email from Joerg Schilling
- <Joerg.Schilling@fokus.fraunhofer.de>
+make_cmd.c
+ - make_here_document: backwards compatibility: if we end a here
+ document on the same line as the end of a command substitution,
+ allow the token to terminate the here document (without requiring
+ a newline) and push the remainder of the line back for the parser
+ to consume and terminate the command substitution
-lib/sh/clock.c
- - print_clock_t: use locale_depoint() in the same way as print_timeval
+builtins/evalstring.c
+ - parse_string: if we read shell_eof_token and use it to terminate a
+ command, rewind the input string here before returning, instead of
+ guessing where to rewind it in the caller
- 4/29
+ 6/22
----
-subst.c
- - expand_cond_node: if special != 0, make sure to add QGLOB_CTLESC
- to the flags passed to quote_string_for_globbing. Same issue as the
- one with `case' fixed on 4/7, report from Martijn Dekker
- <martijn@inlv.org>
- 4/30
- ----
redir.c
- - do_redirection_internal: r_close_this: if the file descriptor is
- already closed before the shell is asked to close it, make sure to
- add an undo list redirect to make sure it stays closed. Report from
- Martijn Dekker <martijn@inlv.org>
-
- 5/2
- ---
-variables.c
- - push_posix_temp_var: new function, takes the SHELL_VAR * passed as
- an argument and uses the name and value to create a global variable
- - merge_temporary_env: if posixly_correct is set, call
- push_posix_temp_var to create global variables, otherwise call
- push_temp_var to preserve the old behavior. Right now, it's only
- called when in posix mode, but that might change. This undoes the
- change from 4/27 when in posix mode
+ - do_redirection_internal: if VARASSIGN_REDIR_AUTOCLOSE is non-zero,
+ add a redirect to automatically close {var}<fn and other styles of
+ varassign redirection. It's zero by default
- 5/3
- ---
-sig.c
- - struct that holds the terminating signal information has a new
- field: whether that signal is expected to cause a core dump
- - termsig_handler: if the call to kill(2) doesn't kill the process,
- we have a problem. If our pid is not 1, we just exit with status
- 128+sig (fake the sig exit status). If the pid is 1, we assume
- we're in a Linux pid namespace and aren't allowed to send a signal
- to ourselves. If we need to generate a core dump, we try to get
- the kernel to SIGSEGV us by dereferencing location 0. If not, we
- just exit with 128+sig. From a report and patch from Andrei Vagin
- <avagin@virtuozzo.com>
-
- 5/4
- ---
-bashline.c
- - bash_execute_unix_command: make sure that parse_and_execute is called
- with newly-allocated memory to avoid prematurely freeing the
- command. Report and fix from Koichi Murase <myoga.murase@gmail.com>
-
- 5/7
- ---
builtins/shopt.def
- - syslog_history: a shell option to control whether history is logged
- to syslog; can be modified at runtime. Original patch from
- Siteshwar Vashisht <svashisht@redhat.com>
-
-config-top.h
- - SYSLOG_SHOPT: new configurable option, determines whether there is a
- shell option to control syslogging history lines at runtime and sets
- the default value of the option
-
-bashline.c
- - syslog_history: new variable to control whether history lines are
- sent to syslog; default value is the value of SYSLOG_SHOPT (or 1
- if that's not defined)
- - bash_add_history: send history lines to syslog if syslog_history is
- non-zero
-
- 5/10
- ----
-
-variables.c
- - push_var_context: if we are in Posix mode and manipulating the
- temporary environment (temporary_env), implement behavior specified
- in Posix interp 1009 and make sure that temporary assignments
- preceding function calls modify the current environment *before*
- the function is executed.
-
-[bash-5.0-alpha frozen]
+ - varredir_close: new shell option, mirrors the value of
+ varassign_redir_autoclose. Suggested multiple times by multiple
+ people
- 5/12
- ----
-execute_cmd.c
- - execute_in_subshell: subshells should set loop_level == 0, since
- they are no longer "enclosed" by the loop, according to posix.
- Report from Aeron.E. Wang <aeron.e.wang@gmail.com>
-
- 5/24
- ----
-Makefile.in
- - pkgconfigdir: don't fail installing bash.pc if this directory doesn't
- exist or isn't writable -- there's no error in failing to install
- something nothing will use
- - install-headers-dirs: creat $(pkgconfigdir) if it doesn't exist
-
-lib/sh/shmbchar.c
- - utf8_mblen: replace with version from gnulib
- - utf8_mbstrlen: reimplement using utf8_mblen so it handles invalid
- multibyte sequences in the same way as mbstrlen
-
-lib/readline/mbutil.c
- - _rl_utf8_mblen: utf-8 specific version of mblen from gnulib
-
-include/shmbutil.h
- - ADVANCE_CHAR,COPY_CHAR_P: do better job detecting end of string in
- UTF-8 locales (should not be called with an empty string, but to
- be safe)
+doc/{bash.1,bashref.texi}
+ - varredir_close: document new shell option (the name is tentative)
- 5/25
+ 6/24
----
-lib/sh/utf8.c
- - new file, utf-8-specific functions collected from other files
-
-externs.h
- - extern declarations moved around for utf8.c
-include/shmbutil.h
- - SADD_MBCHAR, SADD_MBQCHAR_BODY, ADVANCE_CHAR_P: if the locale is a
- UTF-8 locale, don't bother with a call to mbrlen if the current
- character cannot start a multibyte character
-
-variables.c
- - push_var_context: only merge the temporary environment in posix mode
- if we are executing a shell function (flags & VC_FUNCENV). Report
- from Martijn Dekker <martijn@inlv.org>
+parse.y
+ - yylex: if read_token returns a value < 0, return YYerror to the
+ parser
+ - parse_comsub: if the current_token is not shell_eof_token when
+ yyparse returns, return an error to read_token_word instead of
+ trying to keep parsing. Fixes interactive-only (?) bug reported by
+ Koichi Murase <myoga.murase@gmail.com>
-lib/readline/mbutil.c
- - _rl_get_char_len: don't call mbrlen if we are in a UTF-8 locale and
- the character cannot start a multibyte sequence
+parser.h
+ - PST_NOERROR: don't print error messages in yyerror(), just reset
+ the parser and return
-builtins/read.def
- - read_builtin: if mb_cur_max > 1, call read_mbchar only if we're not
- in a utf-8 locale or, if we are, the character we just read indicates
- the start of a multibyte sequence
+parse.y
+ - yyerror: if parser_state & PST_NOERROR, don't print an error message
+ - xparse_dolparen: if the flags includes SX_COMPLETE, add PST_NOERROR
+ to parser_state, to inhibit error messages. Fixes bug with adding
+ lines with incomplete command substitutions to the history list
+ reported by Koichi Murase <myoga.murase@gmail.com>
subst.c
- - string_extract_verbatim: don't call MBRLEN if we're in a utf-8
- locale and the current character can't start a multibyte sequence
- - setifs: don't call MBRLEN if we're in a utf-8 locale and the first
- character of $IFS can't start a multibyte sequence
+ - skip_matched_pair: make sure to pass the SX_COMPLETE flag to
+ extract_delimited_string
-lib/readline/kill.c
- - rl_bracketed_paste_begin: make sure we return 0 here if rl_insert_text
- returns the right number of characters inserted to be consistent
- with other functions. Returns 1 otherwise. Report and fix from
- Gabe Krabbe <gabe@rtfs.de> back in March, 2018
-
-lib/readline/readline.c
- - rl_subseq_result: make sure r is < 0 before checking map[ANYOTHERKEY]
- to see if we shadowed a key that should now be tried
-
- 5/27
- ----
-variables.c
- - assign_aliasvar: perform same validity check on subscript assignment
- as alias builtin performs on name argument. Bug report from
- Mike Jonkmans <bashbug@jonkmans.nl>
-
- 5/29
+ 6/28
----
-builtins/setattr.def
- - set_var_attribute: we should not propagate a variable assignment
- preceding a builtin back to the calling environment unless the
- shell is in posix mode. Since previous versions of the shell do
- this, setting the shell compatibility level to 44 or less will
- continue the propagation behavior
-
- 6/1
- ---
-lib/readline/histexpand.c
- - history_tokenize_word: as part of teaching history tokenization more
- and more about shell syntax, allow command and process subsitution
- and extended globbing patterns to appear within a word being
- tokenized and not just at the beginning. Fixes bug reported back in
- 2/2017 by ecki@tofex.de
-bashhist.c
- - load_history: use HISTSIZE_DEFAULT (still defaults to "500") to set
- the initial value of $HISTSIZE. HISTSIZE_DEFAULT can be overridden
- in config-top.h
-
- 6/4
- ---
-configure.ac
- - make sure we link against an external readline library that's at
- least version 8
-
- 6/8
- ---
-pcomplete.h
- - INITIALWORD: internal compspec name for programmable completion on
- the initial (usually the command) word
+lib/readline/bind.c
+ - rl_trim_arg_from_keyseq: handle rl_vi_arg_digit if VI_MODE is
+ defined. Report and fix from Koichi Murase <myoga.murase@gmail.com>
+ - rl_trim_arg_from_keyseq: rework to handle case where the digit
+ argument is given as a discrete sequence of multiple rl_digit_argument
+ commands (e.g, "M-1 M-2" instead of "M-1 2"). Report and fix from
+ Koichi Murase <myoga.murase@gmail.com>
-bashline.c
- - attempt_shell_completion: if we are in a command position and the
- user has defined a compspec for INITIALWORD, use programmable
- completion to complete command words. Original patch from
- Luca Boccassi <bluca@debian.org>
+subst.c
+ - pat_subst: avoid calling RESIZE_MALLOCED_BUFFER with STRLEN(s) as an
+ argument, since it ends up going into a loop. Report and fix from
+ Koichi Murase <myoga.murase@gmail.com>
-lib/readline/doc/rluser.texi,builtins/complete.def,doc/bash.1
- - make it clearer that -D takes precedence over -E when supplied as
- options to `complete', not when they are applied during completion
+lib/sh/casemod.c
+ - cval: take the string length as an argument, to avoid having to call
+ strlen every time (in HANDLE_MULTIBYTE mode). The caller already has
+ this info. Report and fix from Koichi Murase <myoga.murase@gmail.com>
builtins/complete.def
- - complete_builtin,compgen_builtin: add support for -I option
- - print_one_completion,print_compopts: display -I when appropriate
-
-lib/readline/doc/rluser.texi,doc/bash.1
- - complete,compgen: document new -I option and its effect
-
- 6/10
- ----
-lib/readline/histfile.c
- - read_history_range: don't apply the heuristic and try to append a
- history line to an existing history entry if we don't have any
- history entries. Bug and fix from Edward Huff <ejhuff@gmail.com>
-
- 6/12
- ----
-bashline.c
- - attempt_shell_completion: don't all the programmable completion for
- INITIALWORD if programmable completion is disabled
- - attempt_shell_completion: make sure in_command_position remains set
- for an empty command word on an otherwise blank line, making the
- presence of assignment statements optional. Report from
- Luca Boccassi <bluca@debian.org>
-
- 6/20
- ----
-lib/malloc/malloc.c
- - morecore,internal_malloc,internal_free: requests for more than
- 128K bytes (defined as MMAP_THRESHOLD and saved in the new
- malloc_mmap_threshold variable) are now satisfied via mmap and
- freed via munmap. We only use mmap if we have mmap and MAP_ANON
- (or MAP_ANONYMOUS). These blocks are not available for splitting
- or coalescing, so every request for 128K bytes or smaller is
- satisfied via sbrk(). We don't use mremap for realloc yet, but
- we could in the future
-
-lib/malloc/mstats.h
- - malloc_stats: the malloc stats now include the number of calls to
- mmap and the total number of bytes requested via mmap. The number
- of calls to munmap is captured in each bucket's lesscore count
-
-lib/malloc/stats.c
- - print_malloc_stats: now prints an indication of where the change from
- sbrk to mmap takes place, and prints number of mmap calls and total
- number of bytes allocated using mmap
+ - print_cmd_name: single-quote the command name if it contains any
+ shell metacharacters
+ - print_one_completion: call print_arg with a second arg of 1 if the
+ function name contains shell metacharacters. Report and fix from
+ Koichi Murase <myoga.murase@gmail.com>
- 6/22
+ 6/30
----
-variables.c
- - get_bashargcv: new dynamic "fetch" variable for BASH_ARGV and
- BASH_ARGC, for backwards compatibility: if a script makes a
- reference to either variable at the top level (not in a shell
- function) without enabling debugging mode and not having initialized
- the variable previously (using a simple semaphore), create the
- variables
- 6/25
- ----
configure.ac
- - opt_bash_malloc: bash malloc no longer disabled for systems that
- require eight-bit alignment; the bash malloc has had this for a
- long time
-
- 7/4
- ---
-bashline.c
- - pre_process_line: if command-oriented history is enabled, and the
- line being expanded is the second or later in a multi-line command,
- and we know the command is being saved as the current history entry,
- decrease history_length before calling history_expand so references
- like !! refer to the previous history entry as usual
-
-lib/readline/histexpand.c
- - history_quoting_state: new variable, can be set by calling
- application before calling history_expand to note that the string
- being expanded is part of a quoted string. Can be set to a single
- quote, a double quote, or 0 (no quoting)
- - history_expand: look at history_quoting_state and honor the
- single-quote setting by not expanding any initial portion of the
- line before the closing single quote. This allows history expansions
- to be performed on a line containing a closing single quote if they
- appear after the single quote
-
-lib/readline/history.h
- - history_quoting_state: extern declaration
-
-bashhist.c
- - bash_history_inhibit_expansion: if history_quoting_state indicates
- that this string is single-quoted, skip over the single-quoted
- portion and determine whether or not the portion after the
- quoted string needs to be inhibited from history expansion
+ - substitute BASE_CFLAGS_FOR_BUILD and STYLE_CFLAGS into Makefile
+ targets
+ - take STYLE_CFLAGS out of the CFLAGS_FOR_BUILD variable that gets
+ substituted
+ - remove STYLE_CFLAGS from CFLAGS
+ - use `:+' expansion to set variables based on whether $GCC is set
+ or null, since configure can do GCC=
-parse.y
- - shell_getc: set history_quoting_state based on the contents of the
- current delimiter before calling pre_process_line
-
- 7/6
- ---
-lib/readline/doc/hsuser.texi
- - describe the default behavior of backslash and single and double
- quotes
+support/Makefile.in
+ - man2html: remove CCFLAGS_FOR_BUILD from the recipe, leaving only
+ LDFLAGS_FOR_BUILD. Report from Jay K <jayk123@hotmail.com>
+ - gen-helpfiles: remove CCFLAGS_FOR_BUILD from the recipe, leaving
+ only LDFLAGS_FOR_BUILD
+ - man2html: use $(STYLE_CFLAGS) in BASE_CCFLAGS variable for C file
+ compilation options
-lib/readline/doc/hstech.texi
- - history_quoting_state: describe effect of setting this variable
- - history_quotes_inihibit_expansion: expand the description to include
- the default quoting behavior that setting this variable enables
+{,builtins}/Makefile.in, lib/{sh,readline,malloc,glob}/Makefile.in
+ - use STYLE_CFLAGS so specifying CFLAGS=-g to make doesn't clutter the
+ output with warnings about parens and format strings
7/9
---
-support/man2html.c
- - unescape: use memmove instead of strcpy to handle overlapping strings
- Report and fix from Bernhard M. Wiedemann <bwiedemann@suse.de>
+lib/readline/search.c
+ - make_history_line_current: call _rl_free_saved_history_line to clean
+ up _rl_saved_line_from_history and get all the code that frees it
+ into one place
-lib/sh/getenv.c
- - getenv: check that environ is non-NULL before looking through it.
- Report and fix from Keeley Hoek <keeley@hoek.io>
+lib/readline/misc.c
+ - _rl_free_saved_history_line: if rl_undo_list points to the data
+ member of _rl_saved_line_from_history, set it to NULL to avoid having
+ it point to freed memory, since the next thing we do now is to free
+ the undo list the data member points to
+ - _rl_start_using_history: call _rl_free_saved_history_line instead of
+ calling _rl_free_history_entry directly. Fixes memory leak reported
+ by Trung Dam <trungdam@yahoo.com>
7/12
----
-braces.c
- - mkseq: use better integer overflow handling for systems with 32-bit
- ints and 64-bit intmax_ts. Bug reported by Simon Wörner
- <mail@simon-woerner.de> as the result of fuzzing
-
-builtins/declare.def
- - declare_internal: make sure bind_variable returns non-NULL when
- setting attributes for a variable named as an argument to declare
- that also appears in the temporary environment (and is a nameref).
- Bug reported by Simon Wörner <mail@simon-woerner.de as the
- result of fuzzing
-
-variables.c
- - bind_variable_internal: if we're assigning through a nameref, don't
- create a variable with an invalid name under any circumstances
+lib/readline/search.c
+ - make_history_line_current: free rl_undo_list before replacing the
+ current line with the line from history, since it is a private
+ undo list from reading the search string
-builtins/common.c
- - get_job_spec: make sure to return NO_JOB if atoi() returns < 0 due
- to integer overflow.
- Bug reported by Simon Wörner <mail@simon-woerner.de as the
- result of fuzzing
+lib/readline/rlmbutil.h
+ - Since wchar_t/mbrtowc/wcrtomb are limited to 16 bits on Windows
+ with MSVC, start abstracting the differences using WCHAR_T/
+ MBRTOWC/WCRTOMB
7/13
----
-execute_cmd.c
- - execute_in_subshell: don't call set_sigint_handler if the subshell
- is asynchronous, since it undoes the signal handler installed by
- setup_async_signals. Fixes bug reported by Daniel Mills
- <danielmills1@gmail.com>
-
-parse.y,externs.h
- - reset_readahead_token: new convenience function for the rest of
- the shell, resets token_to_read if it's a newline (as it will be
- after reset_parser is called)
-eval.c
- - reader_loop: if we're just going to execute one command, make sure
- the read-ahead token isn't set to something that will result in a
- NULL command (by calling reset_readahead_token), since the code
- will take that as the one command and set EOF_Reached
+lib/readline/{complete,display,input,text,util,vi_mode}.c
+ - use WCHAR_T/MBRTOWC/WCRTOMB. Part of a set of Windows MSVC fixes
+ from sparrowhawk996@gmail.com
- 7/15
- ----
-doc/{bash.1,bashref.texi}
- - indirect expansion: clarify that the expansion works on parameters,
- not just variables (NAMEs). Suggested by konsolebox
- <konsolebox@gmail.com>
+builtins/{enable,hash,help}.def
+ - enable_builtin: use sh_chkwrite after output to check for write errors
7/16
----
-doc/{bash.1,bashref.texi}
- - INSIDE_EMACS: document its effect on line editing
-
- 7/17
- ----
-lib/readline/{readline.c,rlprivate.h}
- - _rl_eof_found: new variable, private to the readline library, that
- indicates whether the current call to readline() will return NULL
- because we read EOF
-
-lib/readline/rltty.c
- - rl_deprep_terminal: if bracketed paste mode is active, the last
- character of the string to disable it is \r (to avoid confusing
- the terminal driver about where the cursor is). In this case,
- output a newline before returning so subsequent text (like the
- `exit' bash prints) doesn't overwrite the prompt. Bug from
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903936
-
-variables.c
- - make_local_assoc_variable: add second argument like corresponding
- local array function, to allow this function to return an existing
- local array variable to the caller for the caller to handle
-
-variables.h
- - make_local_assoc_variable: change function prototype to add second
- arg
-
-{subst.c,variables.c}
- - make_local_assoc_variable: change callers
+arrayfunc.c
+ - quote_compound_array_word: free SUB and VALUE after assigning from
+ sh_single_quote(). From a coverity report from
+ Siteshwar Vashisht <svashisht@redhat.com>
-builtins/declare.def
- - declare_internal: call make_local_assoc_variable with a non-zero
- second arg to have it return an existing local array variable to be
- flagged as an error. Fixes bug reported by Grisha Levit
- <grishalevit@gmail.com>
- - declare_internal: call make_local_array_variable with unconditional
- second argument of 1 for the same reason as above
+bashhist.c
+ - bash_remove_history_range: free DISCARD_LIST after freeing its
+ elements
- 7/18
- ----
-variables.c
- - bind_invalid_envvar: new function, takes invalid names from the
- initial environment (names that are not valid shell identifiers) and
- stores them in a separate hash table (invalid_env)
- - maybe_make_export_env: make sure to add names from invalid_env to
- the export env
- - assign_in_env: for now, prevent variable names that aren't shell
- identifiers from being added to the temporary environment. Addresses
- issue raised by Grisha Levit <grishalevit@gmail.com>
+bashline.c
+ - bash_directory_expansion: add code to free D as a separate branch,
+ though it's never hit in practice
-test.c
- - unary_test: rearrange code slightly to avoid a wasted variable lookup
- if the argument to -v is a subscripted array reference
+builtins/trap.def
+ - showtrap: free T even if show_default == 1 if it's a non-default
+ trap string
- 7/19
+ 7/17
----
-variables.c
- - nameref_transform_name: if a name doesn't resolve to a shell variable,
- this function will check whether it resolves to a nameref that
- points to a variable that hasn't been created yet
-
-variables.h
- - nameref_transform_name: extern declaration
-
-subst.c
- - do_compound_assignment: make sure that we follow any nameref chain
- if the name passed resolves to a nameref that points to a variable
- that doesn't exist. Fixes issue raised by Grisha Levit
- <grishalevit@gmail.com>
+execute_cmd.c
+ - execute_coproc: free NAME on invalid identifier error
-builtins/declare.def
- - declare_internal: before calling any variant of make_local_variable,
- make sure to perform any transformation of the name indicated by an
- existing nameref. Fixes issue raised by Grisha Levit
- <grishalevit@gmail.com>
+lib/glob/glob.c
+ - glob_vector: make sure NEXTLINK is allocated using malloc before
+ passing it to free()
+ - glob_filename: free RESULT before returning glob_error_return when
+ there is only a filename
- 7/20
- ----
-builtins/declare.def
- - declare_internal: if we are creating a global variable with -g, even
- if we're not giving it a value, check for namerefs at the global
- scope to avoid confusion with namerefs at the local (function) scope.
+print_cmd.c
+ - indirection_level_string: make sure we free PS4 after calling
+ decode_prompt_string if *ps4 == 0
subst.c
- - expand_word_internal: if a double-quoted string expands to nothing,
- make sure we note that for later by setting had_quoted_null, just
- as we do for single-quoted empty strings
+ - parameter_brace_transform: if vtype == VT_VARIABLE, we need to free
+ a non-null VAL
-subst.[ch]
- - W_SAWQUOTEDNULL: new flag (replaces W_HASCTLESC, which is unused),
- means that we saw a possibly-discarded quoted null while expanding
- this word
+variables.c
+ - assign_in_env: if NAME is not a valid shell identifier, free it
+ after printing the error message and before returning. These are
+ the rest of the fixes from Siteshwar Vashisht <svashisht@redhat.com>
-subst.c
- - expand_word_internal: if expansion results in a non-empty word but
- we saw a quoted null during expansion (had_quoted_null == 1), set
- W_SAWQUOTED_NULL in the returned word
- - expand_word_internal: if a recursive call to param_expand comes back
- with W_SAWQUOTEDNULL set in the resulting word, set had_quoted_null
- to note it
- - parameter_brace_expand_rhs: if a recursive call to expand_word_internal
- returns a non-quoted-null string (after an optional call to
- string_list) make sure we pass the W_SAWQUOTEDNULL flag back to the
- caller
- - word_list_split: if a word expands to nothing after expansion and
- splitting, but we saw a quoted null during the expansion
- (W_SAWQUOTEDNULL), return an empty word
-
- 7/25
+ 7/22
----
+shell.c
+ - main: set dollar_vars[0] to shell_script_filename before calling
+ run_startup_files() in the non-interactive case. Restore it after
+ run_startup_files returns so we can get better error messages if
+ we can't open a script file. Suggested by several people, originally
+ by Marc Aurèle La France <tsi@tuyoix.net> back in 2/2021 (in a
+ different form) and most recently by Tapani Tarvainen
+ <bash@tapanitarvainen.fi>
-subst.c
- - do_compound_assignment: if creating a local variable, make sure to
- set `newname' to the name of the variable returned from find_variable,
- since that follows namerefs. Fixes issue raised by Grisha Levit
- <grishalevit@gmail.com>
-
- 7/29
+ 7/28
----
-subst.c
- - get_var_and_type: if VALUE is NULL, check before calling dequote_string.
- Report and fix from Grisha Levit <grishalevit@gmail.com>
+trap.c
+ - any_signals_trapped: return that a signal is trapped only if it's
+ not ignored. This is an additional opportunity for optimization,
+ reported in https://bugzilla.redhat.com/show_bug.cgi?id=1981926
7/30
----
-variables.c
- - make_local_{array,assoc}_variable: make sure we're not trying to
- inherit a value from an incompatible array type. Fixes issue raised
- by Grisha Levit <grishalevit@gmail.com>
- - nameref_transform_name: if we're trying to resolve a nameref that
- will be used to create a local variable, make sure the nameref is
- at the same variable scope. Report from Grisha Levit
- <grishalevit@gmail.com>
-
- 8/2
- ---
-array.c
- - array_subrange: change to use string_list_pos_params after creating a
- WORD_LIST from the array slice, like assoc_subrange does
+examples/loadables/sleep.c
+ - main: if the uconvert conversion fails, but the argument appears to
+ contain a GNU-like interval specifier like "1m30s", return
+ EX_DISKFALLBACK so the execute_builtin code tries to run the
+ external version
-subst.c
- - parameter_brace_substring: since assoc_subrange and array_subrange
- both call string_list_pos_params now, treat the results the same as
- the VT_POSPARAMS case (pos_params also calls string_list_pos_params).
- Fixes behavior difference between ${a[@]:sub} and ${@:sub} reported
- by Ilkka Virta <itvirta@iki.fi>
+builtins/enable.def
+ - enable_shell_builtin: if the builtin isn't found, return EX_NOTFOUND
+ to allow the caller (enable_builtin) to react differently if it
+ wants to
+ - dyn_load_builtin: if the shared object isn't found, return EX_NOTFOUND,
+ change enable_builtin to deal with it
+ - enable_builtin: if there are no supplied options, and we attempt to
+ enable a non-existent builtin, try modifying `enable name' to the
+ equivalent of `enable -f name name' and return success if we
+ successfully load a builtin from a shared object. Proposed several
+ times, most recently by Robert Elz <kre@munnari.OZ.AU>
+
+doc/{bash.1,bashref.texi}
+ - enable: document new behavior of `enable NAME' when NAME is not a
+ current shell builtin
8/3
---
-array.c
- - array_patsub: rewrite to work in terms of a WORD_LIST * and call
- string_list_pos_params on the result to be consistent with the
- expansions of ${@/pat/rep} and ${*/pat/rep}
-
-assoc.c
- - assoc_patsub: rewrite to work in terms of a WORD_LIST * and call
- string_list_pos_params on the result to be consistent with the
- expansions of ${@/pat/rep} and ${*/pat/rep}
-
-subst.c
- - parameter_brace_patsub: change how return value of {array,assoc}_patsub
- is treated to make it identical to pos_params_pat_subst, since they
- all call string_list_pos_params now
- - expand_string_for_pat: make sure we preserve the value of
- expand_no_split_dollar_star instead of just unconditionally setting
- it back to 0 in case it was 1 before this function was called
+lib/glob/sm_loop.c
+ - GMATCH: check for interrupts or terminating signals each time through
+ the loop and return FNM_NOMATCH immediately if received. Let the
+ higher layers deal with interrupting the match and jumping out.
+ Inspired by a report from andrej@podzimek.org
8/6
---
-array.c
- - array_modcase: rewrite to work in terms of a WORD_LIST * and call
- string_list_pos_params on the result to be consistent with the
- expansions of ${@,,} and ${*,,}
+subst.c
+ - {parameter_brace_remove_pattern,parameter_brace_transform,
+ parameter_brace_substring,parameter_brace_casemod,
+ parameter_brace_patsub}: make sure the IND argument is of type
+ arrayind_t to handle the full range of subscripts. Reported by
+ felix@f-hauri.ch
-assoc.c
- - assoc_modcase: rewrite to work in terms of a WORD_LIST * and call
- string_list_pos_params on the result to be consistent with the
- expansions of ${@,,} and ${*,,}
+builtins/printf.def
+ - printf_builtin: take new format specifier: %Q. This acts like %q
+ but applies any supplied precision to the original unquoted
+ argument, then quotes that result and outputs the entire quoted
+ string, preserving the original field width. Originally suggested
+ back in 4/2020 by Sam Liddicott <sam@liddicott.com>
subst.c
- - parameter_brace_casemod: change how return value of {array,assoc}_modcase
- is treated to make it identical to pos_params_modcase, since they
- all call string_list_pos_params now
-
- 8/8
- ---
-builtins/declare.def
- - declare_internal: if we are making local variables, and not dealing
- with the nameref attribute, make sure that any nameref variable we
- followed when resolving the name given was at the same variable
- context. If not, we just want to make or use a local variable with
- the name passed; if so, we want to use the nameref value as the
- variable name. Report from Grisha Levit <grishalevit@gmail.com>
+ - char_is_quoted: check whether or not we are on the second or later
+ line of a command with an unclosed quoted string from a previous
+ line. If we are, see if it's closed before the character we're
+ checking, so we don't interpret a closing quote as starting a new
+ quoted string. Reported several times, most recently by
+ Phi Debian <phi.debian@gmail.com> in 6/2021.
8/9
---
-configure.ac
- - globasciiranges: RRI now on by default, must be turned off explicitly
- at configure time or runtime with `shopt -u globasciiranges'
+parse.y,subst.c
+ - locale_expand: if the variable SINGLEQUOTE_TRANSLATIONS is non-zero,
+ single-quote the translated result of $"..." (if it's different from
+ the untranslated string)
- 8/14
- ----
-variables.c
- - dispose_saved_dollar_vars: decrement stack pointer before looking
- for saved positional parameters to dispose; stack pointer always
- points to the first unused slot
+builtins/shopt.def
+ - noexpand_translation: new option to expose the value of
+ SINGLEQUOTE_TRANSLATIONS
- 8/15
+ 8/10
----
-variables.c
- - dollar_arg_stack: now a stack of struct saved_dollar_vars, which has
- an array for the first ten (dollar_vars) and a WORD_LIST * for the
- remaining (rest_of_args). Fixes performance issue with function calls
- and large numbers of positional parameters raised by
- Bize Ma <binaryzebra@gmail.com>
- - {save,restore,free,free_saved}_dollar_vars: new functions to manage
- dollar_vars and dollar_arg_stack members. Need to keep these in sync
- with whatever remember_args does
- - push_dollar_vars: use save_dollar_vars, which just copies pointers,
- and directly assign rest_of_args, without copying the words, to the
- dollar_arg_stack entry. Have to clear dollar_vars and rest_of_args
- with the assumption that callers will call remember_args(args, 1)
- immediately following
- - pop_dollar_vars: free current positional parameters and restore old
- ones from pointers saved in dollar_arg_stack, making sure to
- invalidate any cached value for "$@"
- - dispose_saved_dollar_vars: free saved pointers from current index
- into dollar_arg_stack
-
doc/{bash.1,bashref.texi}
- - POSIXLY_CORRECT: make sure to note that bash makes sure this variable
- is set when posix mode is enabled
-
- 8/17
- ----
-{jobs,nojobs}.c
- - set_jobs_list_frozen: set jobs_list_frozen to a particular value.
- Intended to save and restore the value around code sections instead
- of unconditionally unfreezing it.
-
-jobs.h
- - set_jobs_list_frozen: extern declaration
+ - noexpand_translation: add description of new option
-execute_cmd.c
- - execute_pipeline: if lastpipe is enabled, save and restore the
- value of jobs_list_frozen using freeze_jobs_list/set_jobs_list_frozen
- to avoid problems with race conditions and nested pipelines
- causing jobs to be removed from the jobs table. Fixes savannah issue
- https://savannah.gnu.org/support/index.php?109541 reported by
- Björn Kautler <vampire0>
-
- 8/24
+ 8/16
----
-execute_cmd.c
- - lastpipe_cleanup: call set_jobs_list_frozen instead of
- unfreeze_jobs_list
- - execute_pipeline: set up lastpipe_cleanup with old value of
- jobs_list_frozen
-
- 9/3
- ---
builtins/printf.def
- - getuintmax,getfloatmax: on a conversion error, return as much of the
- value as we were able to convert instead of 0. Fixes bug reported
- by Robert Elz <kre@bmunnari.OZ.AU>
+ - printf_builtin: initialize retval after parsing arguments, since we
+ use it for the `v' option. Bug report from Keith Thompson
+ <Keith.S.Thompson@gmail.com>
- 9/4
- ---
-lib/readline/text.c,lib/readline/rlprivate.h
- - _rl_backward_char_internal: new function, guts of rl_backward_char
- and rl_backward_byte, not currently used there
-
-lib/readline/vi_mode.c
- - _rl_vi_advance_point: new function, move point forward by one
- character, handling multibyte locales and characters and the end
- of line semantics
- - _rl_vi_backup_point: new function, move point backward by one
- character, handling multibyte locales and characters
- - rl_vi_eword,rl_vi_eWord: use rl_vi_advance_point instead of a simple
- increment to handle multibyte characters. Fixes bug reported by
- Enrico Maria De Angelis <enricomaria.dean6elis@gmail.com>
-
- 9/5
- ---
-lib/readline/vi_mode.c
- - rl_vi_fword,rl_vi_fWord: use rl_vi_advance_point instead of a simple
- increment to handle multibyte characters
- - rl_vi_bword,rl_vi_bWord: use rl_vi_backup_point instead of a simple
- decrement (and _rl_vi_advance_point where necessary) to handle
- multibyte characters
- - rl_vi_complete,_rl_vi_change_mbchar_case,_rl_vi_domove_motion_cleanup:
- use _rl_vi_advance_point instead of simple rl_point increment
- - vi_delete_dispatch,vi_change_dispatch,vi_yank_dispatch: use
- INCREMENT_POS instead of a simple increment to rl_mark to handle
- multibyte characters
- - rl_vi_column: use _rl_forward_char_internal, starting with
- rl_point == 0, to handle multibyte characters (Posix says `character
- position', not index)
-
- 9/7
- ---
-configure.ac
- - changed release status to `beta'
-
- 9/9
- ---
-lib/readline/display.c
- - _rl_update_final: if the bottom line has zero characters and we are
- on that line at column 0, don't bother with an additional \r\n.
- Fixes redisplay nit reported by Per Bothner <per@bothner.com>
-
-
-configure.ac
- - openbsd needs DEV_FD_STAT_BROKEN defined
-
-[bash-5.0-beta frozen]
+lib/sh/unicode.c
+ - u32tocesc: fix typo that returned \uXXXXXXXX instead of \UXXXXXXXX.
+ From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992257 by
+ <nabijaczleweli@nabijaczleweli.xyz>
- 9/11
+ 8/17
----
-builtins/exec.def
- - exec_builtin: make sure to sync the buffered stream where bash is
- reading input (especially if it's fd 0) so a command exec'd by the
- script can read the rest of stdin after the exec
+siglist.c
+ - include command.h before general.h for PARAMS and prototypes. Report
+ from Osipov, Michael (LDA IT PLM) <michael.osipov@siemens.com>
- 9/15
+ 8/18
----
-lib/readline/histexpand.c
- - history_tokenize_internal: if the event contains embedded newlines
- (e.g., bash with command-oriented history and lithist), use them as
- word delimiters, equivalent to space and tab, so they don't end up
- as separate words. Fixes issue pointed out by Viktor Dukhovni
- <ietf-dane@dukhovni.org>
- - history_tokenize_word: don't break if we get a newline (though we
- shouldn't get one due to the loop in history_tokenize_internal
- - history_expand_internal: use newline as a whitespace character when
- expanding by words, as we do with history_tokenize_internal
-
-jobs.h
- - J_PIPEFAIL: new flag for `flags' element of job struct
-
-jobs.c
- - stop_pipeline: if pipefail_opt set, newjob gets J_PIPEFAIL in its
- flags word
- - raw_job_exit_status: use J_PIPEFAIL (setting of pipefail when job
- created) instead of current setting of pipefail status to determine
- how to compute exit status of pipeline. Tentative implementation of
- Posix proposal
+lib/readline/colors.c
+ - S_ISBLK: make sure it's defined before we use it, like in complete.c
-expr.c
- - exp0: don't call expr_bind_variable with a NULL string. Fixes
- fuzzing bug reported by Eduardo Bustamante <dualbus@gmail.com>
- - expr_bind_variable: don't try to do anything with a NULL or empty
- LHS
+lib/readline/complete.c,{bashline,variables}.c
+ - minor changes to prep for making rl_completer_word_break_characters
+ `const'
- 9/16
- ----
-lib/readline/undo.c
- - rl_do_undo: before we release the undo list entry we've just
- processed, make sure we avoid any pointer aliasing issues caused
- by having the entry being removed as part of the undo list in
- _rl_saved_line_for_history. Fixes fuzzing bug reported by
- Eduardo Bustamante <dualbus@gmail.com>
+subst.[ch],pcomplete.c
+ - split_at_delims: the DELIMS argument is now `const'; change callers
- 9/17
- ----
-[bash-5.0-beta released]
+lib/readline/rlmbutil.h
+ - _rl_wcwidth: add function prototype for inline function declaration
- 9/18
- ----
lib/readline/bind.c
- - name_and_keymap: new struct for keymap names and maps
- - builtin_keymap_names: static array of builtin keymap names and
- maps; preparing for allowing applications to set the names of
- keymaps they create; keymap_names is initially a pointer to
- this array
- - _rl_get_keymap_by_name,_rl_get_keymap_by_map: new functions for
- searching the keymap_names array and returning an index
- - rl_get_keymap_by_name, rl_get_keymap_name: rewritten in terms of
- new functions above
- - rl_set_keymap_name (char *name, Keymap map): new function, set
- name of MAP to NAME. NAME must not be builtin; MAP must not be one
- of the builtin keymaps. Request and initial implementation from
- Tom Tromey <tom@tromey.com>
-
-lib/readline/readline.h
- - rl_set_keymap_name: new extern declaration for new public function
-
-lib/readline/doc/rltech.texi
- - rl_set_keymap_name: add documentation
-
-lib/readline/doc/rluser.texi
- - add text to `set keymap' description to note that applications
- can add keymap names that can be used there
-
- 9/20
- ----
-parse.y
- - shell_getc: don't execute the alias hack (returning a space at the
- end of the string) if we are parsing a command substitution that
- starts with a double paren (subshell inside a comsub), in which
- case the flags are PSH_DPAREN. Fixes fuzzing bug reported by
- Eduardo Bustamante <dualbus@gmail.com>
-
-lib/readline/isearch.c
- - _rl_isearch_dispatch: default case: make sure we check multibyte
- char length when deciding whether to enlarge the search string
- buffer, instead of using the old assumption. Fixes fuzzing bug
- reported by Eduardo Bustamante <dualbus@gmail.com>
-
-builtins/fc.def,execute_cmd.c
- - fixed some missing free()s uncovered by coverity. Report from
- Siteshwar Vashisht <svashisht@redhat.com>
-
-lib/glob/glob.c
- - glob_vector: make sure name_vector is initialized to NULL
+ - _rl_get_keyname: print keys greater than 160 (which are valid UTF-8)
+ as octal escape sequences
-lib/sh/{pathcanon,pathphys}.c
- - {pathcanon,pathphys}: use memmove instead of strcpy on a possibly-
- overlapping region of memory
-
-subst.c
- - parameter_list_transform: make sure to dispose the word list in all
- cases before returning
- - parameter_brace_expand_rhs: make sure t1 is freed before returning
- due to an invalid name resulting from an indirect expansion
-
-support/man2html.c
- - fixed a couple of memory leaks
+lib/readline/text.c
+ - do_lowercase_version: return 99999 to prevent the linker from
+ combining it with _rl_null_function and optimizing away the separate
+ copy. That messes with function pointer comparisons. Part of this
+ batch of fixes from sparrowhawk996@gmail.com
- 9/21
+ 8/19
----
-subst.c
- - process_substitute: if we are part of a job control process chain
- (pipeline_pgrp != shell_pgrp), have the child shell forked to run
- the process substitution set pipeline_pgrp to its own PID,
- effectively becoming a process group leader without changing
- its own process group. Fixes stray SIGHUP issue reported by
- Jeremy Townshend <jeremy.townshend@gmail.com>
-
- 9/23
- ----
-arrayfunc.c
- - assign_array_element: if we are assigning to an existing associative
- array, and assoc_expand_once is set, allow `*' and `@' as subscripts.
- Partial fix for report from Grisha Levit <grishalevit@gmail.com>
-
-variables.c
- - bind_int_variable: if valid_array_reference (lhs) is not true,
- make sure that the lhs is a valid identifier before assigning the
- value
-
-arrayfunc.c
- - valid_array_reference: allow blank subscripts. They are treated as
- `normal' keys for associative arrays and evaluate to 0 for indexed
- arrays. More of fix for report from Grisha Levit
- <grishalevit@gmail.com>
+complete.c,readline.c,readline.h
+ - rl_completer_word_break_characters: now const char * like
+ rl_basic_word_break_characters; element of readline state struct
+ used to save it also const. THIS IS AN API CHANGE
- 9/24
- ----
bashline.c
- - restore_tilde: if the expanded length (xl) is longer than vl
- we end up requesting a negative amount of memory (an extremely
- large unsigned number). Just punt and return val in this case.
- Fuzzing bug reported by Eduardo Bustamante <dualbus@gmail.com>
- - restore_tilde: make sure we return what the user typed if tilde
- expansion fails
-
- 9/29
- ----
-builtins/shopt.def
- - uncomment `localvar_unset' option definition
-
-doc/{bash.1,bashref.texi}
- - document `localvar_unset' shell option
-
-arrayfunc.c
- - valid_array_reference: if we are parsing a subscript for an existing
- associative array, the `assoc_expand_once' option is set, and the
- VA_ONEWORD flag is set in FLAGS (meaning there should be nothing
- following the closing `]'), don't call skipsubscript to find the
- closing `]', use one that is at the end of the word. Part of fix for
- issue reported by Grisha Levit <grishalevit@gmail.com>
-
-builtins/{printf,set}.def
- - pass VA_ONEWORD as part of flags value everywhere valid_array_reference
- is used
-
-config-top.h
- - CHECKWINSIZE_DEFAULT: now 1, so check_window_size is on by default
- - HISTEXPAND_DEFAULT: new define, allows builder to enable or disable
- history expansion by default at build time
-
-doc/{bash.1,bashref.texi}
- - checkwinsize: document new default value
-
-bashhist.h
- - HISTEXPAND_DEFAULT: don't define if it's already defined. Strict
- POSIX mode continues to default to off
-
- 9/30
- ----
-lib/readline/input.c
- - win32_isatty: win32-specific changes from GDB. Patch submitted by
- Tom Tromey <tom@tromey.com>, originally from Eli Zaretskii
- <eliz@gnu.org>
-
- 10/1
- ----
-lib/readline/vi_mode.c
- - rl_vi_start_inserting: start an undo group so we can grab the text
- inserted here as a single unit, avoiding any insert coalescing
- performed by rl_insert_text. Report and fix from Richard Todd
- <richard.w.todd@outlook.com>
-
- 10/3
- ----
-subst.c
- - parameter_brace_transform: if we're asked to display the attributes
- of an unset variable, check that the variable exists even if
- get_var_and_type returns NULL (it checks invisible_p). Requested by
- Michal Pesa <pesathem@gmail.com>
-
-lib/readline/kill.c
- - _rl_bracketed_text: new function, collects the text pasted in
- bracketed paste mode and consumes the bracketed paste end marker;
- returns the pasted text and its length
- - rl_bracketed_paste_begin: call _rl_bracketed_text to collect the
- text
-
-lib/readline/isearch.c
- - _rl_isearch_dispatch: set cxt->lastc to -7 if the input resolves to
- rl_bracketed_paste_begin
- - _rl_isearch_dispatch: if cxt->lastc == -7, call _rl_bracketed_text
- to collect the pasted text and add it to the accumulating search
- string. Only works if ESC is not one of the isearch terminators.
- Fixes issue reported in Debian bug report 891780,
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=891780
-
- 10/5
- ----
-variables.c
- - push_posix_tempvar_internal: new function, body of push_func_var
- with additional argument saying whether it's being called from a
- function or (special) builtin code path
- - push_builtin_var: new function, calls push_posix_tempvar_internal
- with second argument indicating builtin code path
- - push_func_var: now a stub that calls push_posix_tempvar_internal
- with second argument indicating function code path
- - pop_scope: if called from a special builtin, call push_builtin_var
- instead of push_func_var to do the right variable propagation
-
-builtins/shopt.def
- - progcomp_alias: uncomment, make available to users
-
-doc/{bash.1,bashref.texi},lib/readline/doc/rluser.texi
- - progcomp_alias: document shopt option, describe its use in
- the section on programmable completion
-
-trap.c
- - decode_signal: handle SIGRTMIN+n at runtime, with the `SIG' prefix
- or without, case-insensitively if requested, and return SIGRTMIN+n.
- These values could be different than what was available at compile
- time. Report and patch from Rasmus Villemoes <rv@rasumsvillemoes.dk>
-
- 10/8
- ----
-execute_cmd.c
- - execute_command_internal: only set line_number from command->value.Subshell
- if the type == cm_subshell; otherwise defer and set later
-
- 10/10
- -----
-examples/loadables/seq.c
- - seq: new loadable builtin, derived originally from coreutils:seq.c
- but with very little of that code remaining
-
- 10/12
- -----
-trap.c
- - run_pending_traps,_run_trap_internal: honor evalnest_max and
- increment/decrement evalnest accordingly, since trap actions
- are processed as if run by `eval'. Feature suggsted by Mike
- Gerwitz <mtg@gnu.org>
-
- 10/16
- -----
-expr.c
- - expr_skipsubscript: new function, calls skipsubscript with flags
- similar to arrayfunc.c:valid_array_subscript if assoc_expand_once
- is set and it looks like we've already expanded the subscript of
- an associative array. Reported back on 8/27 by Grisha Levit
- <grishalevit@gmail.com>
- - readtok: call expr_skipsubscript instead of skipsubscript
-
-arrayfunc.c
- - valid_array_reference: call skipsubscript with a third arg computed
- from the VA_NOEXPAND flag only if we're expanding an associative
- array subscript -- we already figure out whether or not we are
-
-[bumped release status to beta2]
-
- 10/20
- -----
-builtins/setattr.def
- - set_or_show_attributes: after isolating NAME, make sure to restore
- the "[+]=" in case we need the word later. Issue pointed out by
- Grisha Levit <grishalevit@gmail.com>
-
- 10/21
- -----
-lib/readline/search.c
- - noninc_search_from_pos: if we are supposed to be searching for a
- pattern (vi mode), make sure to pass S to _hs_history_patsearch,
- since that has any leading `^' stripped
-
-lib/readline/histsearch.c
- - _hs_history_patsearch: if the search isn't anchored, put a `*' at
- the beginning to force fnmatch to match anywhere in the line (could
- look at this later to make a change to history_search_internal that
- would avoid the need to add the leading `*')
-
-subst.c
- - parameter_brace_expand_rhs: treat a failure to assign a variable with
- a ${param:=value} expansion as an expansion error, and, in a non-
- interactive posix-mode shell, exit the shell
- - param_expand: don't set W_SPLITSPACE for $* unless IFS is NULL;
- consistent with other uses of W_SPLITSPACE
-
- 10/22
- -----
-doc/{bash.1,bashref.texi}
- - tweak description of bash conditional expressions to note that the
- test and [ commands determine their behavior based on the number of
- arguments. Suggested by Ilkka Virta <itvirta@iki.fi>
-
- 10/24
- -----
-execute_cmd.c
- - execute_simple_command: don't set $_ to NULL when executing a
- command that forks; just leave it unchanged. Tweaked the documentation
- slightly as a result. Inspired by report from Ricky Tigg
- <ricky.tigg@gmail.com>
-
- 10/28
- -----
-redir.c
- - here_document_to_fd: make sure the temp files used to store here
- documents are readable (and writable, where necessary) by the user.
- This can happen in the unlikely case that someone decides to shoot
- himself in the foot by setting the umask to 400. Issue originally
- raised back in March by Stephane Chazelas
- <stephane.chazelas@gmail.com>; fix inspired by Martijn Dekker
- <martijn@inlv.org>
-
- 10/29
- -----
-lib/readline/terminal.c
- - bind_termcap_arrow_keys: bind the "kI" capability (what the Insert
- keypad key outputs) to overwrite mode. Patch from Xose Vazquez Perez
- <xose.vazquez@gmail.com>
-
- 10/30
- -----
-braces.c
- - mkseq: make sure to terminate result array before passing it to
- strvec_dispose on an interrupt. Report and fix from Corbin Souffrant
- <corbin.souffrant@gmail.com>
-
- 11/6
- ----
-trap.c
- - _run_trap_internal: if the signal shows up as SIG_CHANGED after
- running the trap handler, check for terminating signals and run any
- terminating signal handler indicates. Fixes issue reported by
- Owen Stephens <owen@owenstephens.co.uk>
-
- 11/7
- ----
-execute_cmd.c
- - execute_builtin: don't merge the temporary environment when the
- `return' builtin is being executed if it's being executed by the
- `command' builtin, since that's supposed to inhibit the special
- builtin properties. Part of POSIX conformance problems reported
- by Martin Rehak <martin.rehak@oracle.com>
-
-builtins/cd.def
- - bindpwd: if canonicalization fails when -P is specified (e.g. if the
- directory name length exceeds PATH_MAX), reset dirname ($PWD value) =
- to the_current_working_directory (Posix cd description, step 10.)
- Part of POSIX conformance problems reported by Martin Rehak
- <martin.rehak@oracle.com>
-
-builtins/kill.def
- - kill_builtin: support -sSIG and -nSIG without requiring them to be
- separate arguments. POSIX says a "conforming implementation" should
- accept them.
- Part of POSIX conformance problems reported by Martin Rehak
- <martin.rehak@oracle.com>
+ - orig_rl_completer_word_break_characters: now const char * like
+ rl_completer_word_break_characters
- 11/8
+ 8/20
----
-arrayfunc.c
- - array_value_internal: return NULL for invisible array variables.
- Fixes issue with FUNCNAME sometimes returning invalid value reported
- by Great Big Dot <greatbigdot@gmail.com>
-
-builtins/cd.def
- - change_to_directory: if we are in posix mode, and the chdir to the
- absolute pathname ($PWD/dirname) fails, return an error without
- trying to use just `dirname' (posix cd step 10).
- Part of POSIX conformance problems reported by Martin Rehak
- <martin.rehak@oracle.com>
-
-execute_cmd.c
- - execute_case_command: use expand_word_leave_quoted to expand the
- word, then dequote the resulting string. This performs the
- expansions in the order posix specifies.
- Part of POSIX conformance problems reported by Martin Rehak
- <martin.rehak@oracle.com>
-
-subst.c
- - expand_word_unsplit: rewrite in terms of expand_word_leave_quoted
- - ifs_whitespace: new macro, Posix ifs whitespace (ISSPACE; member
- of current locale's space char class)
- - ifs_whitesep: new macro, whitespace that is a member of $IFS; used
- by list_string and get_word_from_string
- - list_string: use ifs_whitesep instead of spctabnl in case $IFS
- contains whitespace characters that are not space, tab, or newline
- - get_word_from_string: use ifs_whitesep instead of spctabnl in case
- $IFS contains whitespace characters that are not space, tab, or
- newline.
- Part of POSIX conformance problems reported by Martin Rehak
- <martin.rehak@oracle.com>
-
- 11/9
- ----
-general.c
- - posix_initialize: enable the shift_verbose option when turning on
- posix mode, and disable it when posix mode is disabled. From a
- report by Eric Blake <eblake@redhat.com>
-
-doc/bashref.texi
- - posix mode: note the effect of posix mode on shift_verbose
-
- 11/12
- -----
-subst.c
- - parameter_brace_expand: if parameter_brace_expand_word returns an
- error, make sure to set TEMP = 0 (to note that the variable is unset).
- From a report by Grisha Levit <grishalevit@gmail.com>
- - param_expand: if expanding $! when set -u is enabled, honor the
- PF_IGNUNBOUND flag and just return NULL, relying on the caller to
- take care of understanding that the variable is unset
- From a report by Grisha Levit <grishalevit@gmail.com>
- - parameter_brace_expand: if we are checking nullness, and we have a
- valid array expansion, a quoted null string resulting from the array
- expansion of a * or @ subscript satisfies the nullness check.
- From a report by Grisha Levit <grishalevit@gmail.com>
-
- 11/14
- -----
-aclocal.m4
- - BASH_CHECK_LIB_TERMCAP: add last-ditch check for libncursesw, since
- it's apparently the only curses library on some distributions.
- Report from John Frankish <john.frankish@outlook.com>
-
- 11/16
- -----
bashline.c
- - attempt_shell_completion: allow an initial word completion to
- complete a partial first word (point appears in the middle of
- the word) before resorting to command completion. Report and fix
- from Luca Boccassi <bluca@debian.org>
+ - bash_directory_completion_hook: if direxpand and dirspell are both
+ set while trying to complete an absolute pathname as a command, don't
+ take a spell-corrected directory name that is shorter than the
+ original hint. https://bugzilla.redhat.com/show_bug.cgi?id=1782809
-[bash-5.0-beta2 frozen]
+builtins/common.[ch]
+ - sh_noassign: convenience function to print an error message when a
+ user attempts an assignment to a "noassign" variable. Not used yet
- 11/27
- -----
-bashline.c
- - attempt_shell_completion: better fix for problems with fix from
- 11/16. Report and fix from Tom Ryder <tom@sanctum.geek.nz>
+assoc.[ch]
+ - assoc_to_kvpair_list: new function, returns a WORD_LIST containing
+ key-value pairs as separate words
-expr.c
- - expr_skipsubscript: fix return type. Report and fix from
- Andreas Schwab <schwab@linux-m68k.org>
+array.[ch]
+ - array_to_kvpair_list: new function, returns a WORD_LIST containing
+ index-value pairs as separate words
- 11/29
- -----
subst.c
- - quote_escapes_internal: refactored quote_escapes into a function
- that takes an additional flag saying whether or not we are going
- to split the result. If we are not, and CTLESC is in IFS, we quote
- the CTLESC (ditto for CTLNUL) to prevent it being removed when the
- string is dequoted.
- - quote_escapes: call quote_escapes_internal with FLAGS == 0
- - quote_rhs: new function, calls quote_escapes with FLAGS == PF_NOSPLIT2
- so that a CTLESC will be quoted if CTLESC is in $IFS
- - parameter_brace_expand_word: call quote_rhs on the value of a variable
- if PFLAGS includes PF_ASSIGNRHS, indicating that we will not be
- splitting the word, but we will be dequoting it. Fixes bug reported
- by Martijn Dekker <martijn@inlv.org>
- - param_expand: same change as for parameter_brace_expand_word
-
-execute_cmd.c
- - execute_in_subshell: if we are running a trap (running_trap > 0),
- turn off the SIG_INPROGRESS and SIG_CHANGED flags for that signal
- by calling run_trap_cleanup and reset running_trap to 0 (watch the
- second part!). Tagged for bash-5.1.
+ - string_transform: handle '@k' transform like '@K'
+ - valid_parameter_transform: 'k' is a valid transform operator
+ - array_transform: handle '@k' transformation by calling one of
+ array_to_kvpair_list or assoc_to_kvpair_list and treating the
+ result as if expanding the array depending on whether the index is
+ `@' or `*' with the usual meanings
- 11/30
- -----
-lib/readline/doc/rltech.texi
- - rl_set_keymap_name: correct typo in the name; some updates to the
- description that clarify usage. Report from <hirooih@gmail.com>
-
- 12/4
- ----
-aclocal.m4
- - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: a test of whether fnmatch(3)
- understands bracket equivalence classes ([=c=]) for characters
- that collate with equal weights but are not identical
-
-configure.ac,config.h.in
- - call BASH_FUNC_FNMATCH_EQUIV_FALLBACK and define
- FNMATCH_EQUIV_FALLBACK to 1 if it can be used for equivalence
- classes
-
- 12/5
- ----
-execute_cmd.c
- - eval_arith_for_expr,execute_arith_command,execute_cond_command: make
- sure running_trap == 0 before we reset the_printed_command_except_trap
- Report from Peng Yu <pengyu.ut@gmail.com>
-
-lib/glob/smatch.c
- - _fnmatch_fallback_wc: new function, takes two wide characters c1 and
- c2, converts them to a pattern ([[=c2=]]) and a string (c1) for
- fnmatch to determine whether or not they are members of the same
- equivalence class
- - collequiv_wc: call _fnmatch_fallback_wc if rangecmp_wc returns
- non-zero if FNMATCH_EQUIV_FALLBACK is defined, so we know that
- fnmatch understands equivalence classes. Another Posix test suite
- issue from Martin Rehak <martin.rehak@oracle.com>
+doc/{bash.1,bashref.texi}
+ - document new '@k' parameter transformation operator
- 12/6
+ 8/27
----
-redir.c
- - add missing cases to switch statements to shut up gcc
-
- 12/7
- ----
-builtins/set.def
- - find_minus_o_option: new helper function, returns index into
- o_options given option name
- - minus_o_option_value,set_minus_o_option: use find_minus_o_option
-
-general.c
- - new table of variables (currently all shopt options) that are
- modified by going into and out of posix mode; num_posix_options()
- returns the number of variables
- - get_posix_options: fill in a bitmap passed as an argument (or return
- a new one) of values of posix-mode-modified variables in the table
- - set_posix_options: set values of posix-mode-modified variables from
- the table using the passed bitmap for values
-
-builtins/set.def
- - get_current_options: make the bitmap large enough to hold the options
- in the set table and the table of posix-mode-modified variables; call
- get_posix_options to fill in those values after the values from the
- o_options table
- - set_current_options: call set_posix_options to reset the values of
- the posix-mode-modified variables at the end of the bitmap, after
- the o_options values. Fixes issue reported by PJ Eby
- <pje@telecommunity.com>
+lib/readline/kill.c
+ - rl_unix_filename_rubout: handle pathnames that consist only of one
+ or more slashes. The old code went too far and deleted the previous
+ word as well. From dabe@dabe.com
- 12/9
+ 8/31
----
parse.y
- - select_command: add two additional productions to support select
- commands without a word_list following the `in'. Fixes omission
- reported by Martijn Dekker <martijn@inlv.org>
+ - STRING_SAVER: now save and restore shell_input_line_len; not sure
+ why it wasn't done before; fix push_string and pop_string accordingly
+ - prompt_again: now takes a parameter FORCE; not used yet (every
+ caller passes 0), needs more thought
- 12/11
- -----
-variables.c
- - assign_in_env: don't allow namerefs in temporary environment
- assignments to create variables with invalid names for export. Fixes
- bug reported by Grisha Levit <grishalevit@gmail.com>
+builtins/evalstring.h
+ - open_redir_file: broke code that expands the redirection and opens
+ the resultant filename into a new function, called from cat_file
- 12/14
- -----
-parse.y
- - don't change last_command_exit_value in the 'error yacc_EOF' production
- if the parser sets it to something non-zero; just make sure it
- indicates an error. Fixes problem with unexpected EOF in eval
- reported by Martijn Dekker <martijn@inlv.org>
-
- 12/17
- -----
-expr.c
- - exp2 -> expmuldiv
-
-lib/sh/smatch.c
- - fnmatch: add extern declaration if FNMATCH_EQUIV_FALLBACK is being
- used
-
-hashlib.c
- - hash_string: add FNV offset as initial value for hash instead of
- starting at 0, changes hash for associative arrays and requires a
- bunch of changes to the "right" test suite files
-
-variables.c
- - rseed: make it explicitly 32 bits; that's all we're interested in
- anyway
-
- 12/18
- -----
+redir.h
+ - open_redir_file: extern declaration here for now
-variables.c
- - brand: add some comments, make the constants explicitly 32 bits;
- use signed 32-bit values for the intermediate calculations. The
- algorithm is still minstd
-
-[bash-5.0-rc1 frozen]
-
- 12/21
- -----
-doc/bash.1
- - }1: remove macro definition; it's outlived its bugfix purpose.
- Report from Derek Schrock <dereks@lifeofadishwasher.com>
-
- 12/22
- -----
-subst.c
- - expand_arith_string: set W_NOTILDE in the flags so we don't perform
- tilde expansion at all, even for the previously-special-case array
- subscript expansion. Report from Bize Ma <binaryzebra@gmail.com>
- - expand_word_internal: take out Q_ARRAYSUB check for tilde expansion
-
- 12/26
- -----
builtins/evalstring.c
- - parse_and_execute: if the eval builtin gets a parser error while
- parsing a string in posix mode, don't exit the shell if the eval
- was run by the command builtin. report from Martijn Dekker
- <martijn@inlv.org>
-
-examples/loadables/{basename,dirname}.c
- - dirname_builtin: skip over any `--' ending the options. Report from
- Peng Yu <pengyu.ut@gmail.com>
-
- 12/27
- -----
-examples/loadables/mkdir.c
- - make_path: add argument noting whether or not the user specified -m;
- only attempt the chmod on an existing directory if the user did so
- - make_path: when creating intermediate directories, perform the
- mkdir (path, 0) and chmod separately as the posix text recommends
-
- 12/28
- -----
-parser.h
- - PST_COMMENT: new state, set when the shell is reading characters
- until newline as part of comment processing
+ - parse_string: takes a new argument: COMMAND **cmdp; if non-null, saves
+ the parsed command to *cmdp and lets the caller manage it itself.
+ global_command is still not modified. Changed callers in parse.y
+ 9/1
+ ---
parse.y
- - shell_getc: don't return a space at the end of a token if the parser
- is consuming a comment. Fixes bug reported by Harald van Dijk
- <harald@gigawatt.nl>
+ - parse_string_to_command: stripped-down version of xparse_dolparen
+ that takes a string, runs it through the parser, and returns the
+ resultant COMMAND *; uses parse_string with the new argument
- 12/31
- -----
-lib/glob/glob_loop.c
- - INTERNAL_GLOB_PATTERN_P: revert change from 4/27 that makes this
- function return non-zero for a backslash in the string. Based on a
- report from Tom Ryder <tom@sanctum.geek.nz>
+externs.h
+ - parse_string_to_command: extern declaration
-[bash-5.0 frozen]
+builtins/evalstring.c
+ - can_optimize_cat_file: new function, takes a COMMAND * argument and
+ returns true if the command can be optimized like $(<file); changed
+ parse_and_execute to call it
-[bash-5.0 released]
+subst.c
+ - optimize_cat_file: new function, optimizes $(<file) without creating
+ a new process. Uses redir_open to open the redirection file, after
+ expansion, and calls read_comsub to read from it directly
+ - read_comsub: now reads into a 4096 byte buffer (COMSUB_PIPEBUF)
+ - command_substitute: if the string begins with a `<' and isn't followed
+ by any of "<>&", see if we can optimize the command and call
+ optimize_cat_file to do it if we can.
- 1/6/2019
- --------
+ 9/2
+ ---
+configure.ac,config.h.in,lib/sh/setlinebuf.c
+ - SETVBUF_REVERSED: remove all references
-examples/loadables/basename.c
- - make sure to include bashgetopt.h. Reported by Angel
- <angel@16bits.net>
+configure.ac,aclocal.m4
+ - AC_OUTPUT: move created files and commands to AC_CONFIG_FILES and
+ AC_CONFIG_COMMANDS; call AC_OUTPUT without any arguments
+ - require autoconf version 2.63
+ - AC_HELP_STRING -> AS_HELP_STRING
+ - replace references to $ac_cv_prog_gcc with $GCC
+ - AC_C_LONG_DOUBLE -> AC_TYPE_LONG_DOUBLE
+ - enable-alt-array-implementation: new configure option, placeholder
+ for later
-lib/malloc/malloc.c
- - stdlib.h: include if botch isn't defined to provide a declaration
- for abort()
+unwind_prot.c
+ - stddef.h: include if HAVE_STDDEF_H is defined, not STDC_HEADERS
-hashlib.c,Makefile.in
- - fixes to make hash library testing work for others from
- Eduardo Bustamante <dualbus@gmail.com>
+bashansi.h
+ - memory.h: don't include any more; assume <string.h> has all the
+ necessary defines
-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>
+aclocal.m4
+ - AC_HEADER_STDC: remove AC_REQUIRE calls to this; change tests to use
+ appropriate checks instead of STDC_HEADERS
- 1/8
+ 9/3
---
+configure.ac,config.h.in
+ - AC_TYPE_SIGNAL,BASH_TYPE_SIGHANDLER: remove calls, remove mention of
+ RETSIGTYPE and VOID_SIGHANDLER
+ - AC_USE_SYSTEM_EXTENSIONS: use this instead of AC_ISC_POSIX (which is
+ well and truly obsolete) and AC_MINIX (which just calls it anyway).
+ All the right defines are already present
+ - AC_HEADER_TIME: removed
+ - AC_HEADER_STDC: removed
+ - AC_DECL_SYS_SIGLIST: replaced with BASH_DECL_SYS_SIGLIST
+ - BASH_FUNC_CTYPE_NONASCII: removed
+
+sig.h,lib/readline/signals.c
+ - RETSIGTYPE -> void, SIGHANDLER_RETURN -> return
+
+include/posixtime.h
+ - don't bother with TIME_WITH_SYS_TIME, just include <sys/times.h> if
+ we have it and include <time.h> unconditionally
+
+include/chartypes.h,lib/readline/chardefs.h
+ - IN_CTYPE_DOMAIN: no longer uses STDC_HEADERS define, checks against
+ CHAR_MAX for non-C89 systems, still a no-op on C89 systems
+
+lib/readline/chardefs.h
+ - memory.h: don't include, no need for STDC_HEADERS; assume the mem*
+ functions are defined in <string.h> as in C89
+ - now that we assume IN_CTYPE_DOMAIN bounds its argument to unsigned
+ chars, we don't need NON_NEGATIVE checks at all
+
+lib/readline/chardefs.h,util.c
+ - ALPHABETIC -> _rl_alphabetic_p
-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
+ 9/8
---
-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
+lib/sh/strftime.c
+ - include <posixtime.h> after reworking above; include <sys/types.h>
+ unconditionally in case it defines time_t. From a report by
+ Ori Sky Farrell <bash@ori.mx>
-arrayfunc.c
- - array_expand_index: call evalexp with EXP_EXPANDED flag, since we
- have run the string through expand_arith_string already
+ 9/9
+ ---
+lib/readline/search.c
+ - rl_history_search_internal: set rl_undo_list to NULL after calling
+ rl_maybe_save_line, since it will be restored one way or another
+ after the search completes, and we don't want it to be freed twice
+ - rl_history_search_internal: leave the current history offset at the
+ position of the last matching history entry. This means that things
+ like ^P will start back from that history entry, ^N will move
+ forward from there, and operate-and-get-next will work like it does
+ with incremental searches. Reported by Vandrus Zoltán
+ <vandrus.zoltan@gmail.com>
- 1/11
+ 9/10
----
-parser.h
- - PST_ENDALIAS: new state, means we just consumed the last character
- of an alias expansion and returned the fake space
+aclocal.m4
+ - BASH_C_LONG_LONG: removed
+ - BASH_TYPE_LONG_DOUBLE: removed
+ - BASH_TYPE_LONG_LONG,BASH_TYPE_UNSIGNED_LONG_LONG: removed
+ - BASH_FUNC_CTYPE_NONASCII: removed
+ - BASH_SYS_SIGNAL_VINTAGE,BASH_SYS_REINSTALL_SIGHANDLERS: don't
+ require AC_TYPE_SIGNAL, use void instead of RETSIGTYPE
+ - BASH_TYPE_SIGHANDLER: removed
+
+configure.ac,aclocal.m4,config.h.in
+ - BASH_TYPE_LONG_LONG: removed, call AC_TYPE_LONG_LONG_INT directly,
+ change #define to HAVE_LONG_LONG_INT
+ - BASH_TYPE_UNSIGNED_LONG_LONG: removed, call AC_TYPE_UNSIGNED_LONG_LONG_INT
+ directly, change #define to HAVE_UNSIGNED_LONG_LONG_INT
+
+externs.h,include/typemax.h,lib/sh/{fmtullong,snprintf,strtoimax,strtoll,
+strtoull,strtoumax}.c
+ - HAVE_LONG_LONG -> HAVE_LONG_LONG_INT
+ - HAVE_UNSIGNED_LONG_LONG -> HAVE_UNSIGNED_LONG_LONG_INT
-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>
+configure.ac
+ - AC_TRY_COMPILE -> AC_COMPILE_IFELSE
+ - BASH_CHECK_TYPE (intmax_t) -> AC_TYPE_INTMAX_T
+ - BASH_CHECK_TYPE (uintmax_t) -> AC_TYPE_UINTMAX_T
+ - BASH_CHECK_TYPE (sig_atomic_t): removed
- 1/12
+aclocal.m4
+ - BASH_FUNC_STRSIGNAL: changed to use AC_LINK_IFELSE
+ - BASH_FUNC_LSTAT: changed to use AC_LINK_IFELSE
+ - BASH_FUNC_SBRK: changed to use AC_LINK_IFELSE and AC_RUN_IFELSE,
+ fixed typo
+ - BASH_CHECK_SPEED_T: changed to use AC_COMPILE_IFELSE
+ - BASH_TYPE_SIG_ATOMIC_T: use BASH_CHECK_TYPE instead of AC_CHECK_TYPE
+ - BASH_STRUCT_DIRENT: new macro, like _AC_STRUCT_DIRENT but public and
+ sets a different bash-specific shell variable
+ - BASH_STRUCT_DIRENT_D_{INO,FILENO,NAMLEN}: call BASH_STRUCT_DIRENT
+ with a different first argument instead of using inline code and
+ AC_TRY_COMPILE
+
+ 9/11
----
-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.
+[prayers for the victims of 9/11/2001]
-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>
+aclocal.m4
+ - BASH_CHECK_DECL: just call AC_CHECK_DECLS and use the default
+ includes, which includes the files we used to specify
+ - BASH_FUNC_INET_ATON: changed to use AC_LINK_IFELSE
+ - BASH_STRUCT_WEXITSTATUS_OFFSET: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_OPENDIR_CHECK: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_ULIMIT_MAXFDS: changed to use AC_RUN_IFELSE
+ - BASH_UNDER_SYS_SIGLIST: changed to use AC_RUN_IFELSE
+ - BASH_SYS_SIGLIST: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_DUP2_CLOEXEC_CHECK: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_GETENV: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_GETCWD: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_FNMATCH_EXTMATCH: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_POSIX_SETJMP: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_STRCOLL: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_PRINTF_A_FORMAT: changed to use AC_RUN_IFELSE
+ - BASH_SYS_PGRP_SYNC: changed to use AC_RUN_IFELSE
+ - BASH_SYS_SIGNAL_VINTAGE: changed to use AC_RUN_IFELSE
+ - BASH_SYS_NAMED_PIPES: changed to use AC_RUN_IFELSE
+ - BASH_CHECK_RTSIGS: changed to use AC_RUN_IFELSE
+ - BASH_CHECK_MULTIBYTE: changed to use AC_RUN_IFELSE
+ - RL_LIB_READLINE_VERSION: changed to use AC_RUN_IFELSE
+ - BASH_CHECK_WCONTINUED: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_SNPRINTF: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_VSNPRINTF: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: changed to use AC_RUN_IFELSE
+ - BASH_DECL_PRINTF: changed to use AC_RUN_IFELSE
+ - BASH_TYPE_RLIMIT: rewrote to avoid quad_t, now uses AC_COMPILE_IFELSE
+ to determine whether rlim_t is available, otherwise determines the
+ value of RLIMTYPE based on sizeof(rlim.rlim_cur): int, long, or
+ long long
+ - BASH_SIZEOF_RLIMIT,BASH_SIZEOF_QUAD_T: helper macros for
+ BASH_TYPE_RLIMIT in the case that rlim_t is not present
- 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
+configure.ac
+ - BASH_CHECK_DECL -> AC_CHECK_DECLS
+ - quad_t: use AC_CHECK_TYPE (new style) instead of BASH_CHECK_TYPE
- 1/17
+
+ 9/14
----
-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>
+execute_cmd.c
+ - time_command: if we longjmp back to the top_level we saved, make sure
+ we're in the same subshell environment before printing the timing
+ stats. We could have longjmped back from a child process of the
+ command or pipeline we want to time. From a report by
+ Sergej Alikov <sergej@alikov.com>
+ - time_command: restore command->flags even if we longjmp back
- 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>
+ - check_binary_file: if the first line of the ENOEXEC file starts with
+ a `#!', check the rest of the buffer for NULs to determine whether
+ this is a binary file. Since we only check the first line, a #! line
+ followed by binary data could be confused for a shell script
- 1/22
+ 9/16
----
-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>
+bashjmp.h
+ - EXITBLTIN: new longjmp `code' value: used by the exit builtin
- 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>
+{execute_cmd,shell,subst,trap}.c,builtins/evalstring.c
+ - treat EXITBLTIN exactly the same as EXITPROG (for now)
- 1/25
- ----
-command.h
- - CMD_TRY_OPTIMIZING: new command flag, means this (simple) command is
- a candidate for fork optimization (suppression)
+builtins/exit.def
+ - exit_builtin: jump_to_top_level with value EXITBLTIN
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()
+ - parse_and_execute: EXITBLTIN has its own case, with the same contents
+ as EXITPROG
-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
+ 9/17
----
builtins/evalstring.c
- - can_optimize_connection,optimize_fork: add the last command in lists
- separated by `;' to the list of candidates for fork optimization
+ - parse_and_execute: change EXITBLTIN case to avoid running the
+ unwind-protect stack to the `pe_dispose' tag (which has the effect
+ of running all the unwind-protects installed by the commands in
+ the string) if we're executing in a function and EXIT is trapped.
+ This has the effect of running the EXIT trap in the function context,
+ which is what we do when we're not in parse_and_execute (eval,
+ bash -c, command substitution, etc.)
- 1/30
+ 9/18
----
-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>
+arrayfunc.c
+ - expand_and_quote_kvpair_word,quote_compound_array_word,
+ expand_and_quote_assoc_word,quote_compound_array_list: make sure
+ the value has CTLESC characters doubled even when being single-
+ quoted, since that's what the parser does with standalone assignment
+ statements. From https://savannah.gnu.org/support/?110538
- 1/31
+ 9/19
----
-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
+aclocal.m4
+ - AC_TRY_COMPILE -> AC_COMPILE_IFELSE (AC_TRY_LINK calls left to
+ modify to avoid obsolete warnings)
+ - BASH_STRUCT_WINSIZE: broke out checks for separate headers into new
+ macros, call them and work with the results; needed to avoid two
+ calls to AC_TRY_COMPILE
+ - BASH_CHECK_KERNEL_RLIMIT: avoid multiple calls to AC_TRY_COMPILE by
+ breaking basic test for RLIMIT_ defines into a separate test and
+ calling the HPUX-specific _KERNEL test only if that fails
+
+m4/gettext.m4,configure.ac
+ - AM_GNU_GETTEXT -> BASH_GNU_GETTEXT: remove deprecation warning, since
+ [no-libtool] is how we use this; rename to avoid someone's local
+ copy from overriding ours
- 2/11
+ 9/20
----
-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>
+aclocal.m4
+ - BASH_CHECK_MULTIBYTE: take out code that checks for nl_langinfo(CODESET)
+ since that's already provided by AM_LANGINFO_CODESET, which is
+ called by BASH_GNU_GETTEXT. We AC_REQUIRE it here, though, to avoid
+ problems from future changes
+ - BASH_SYS_SIGNAL_VINTAGE: broke the code that checks for the different
+ signal vintages into different AC_DEFUNed macros, changed
+ BASH_SYS_SIGNAL_VINTAGE to stitch them together with shell code
+ testing the cached variables
+ - AC_TRY_LINK -> AC_LINK_IFELSE: there are no more autoconf warnings
- 2/12
+ 9/21
----
-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.
+array.[ch]
+ - array_from_argv: new convenience function
- 2/13
- ----
-examples/loadables/Makefile.in
- - CCFLAGS: add $(CPPFLAGS) to value, based on a report from
- Christian Weisgerber <naddy@mips.inka.de>
+array.h
+ - num_elements: now an arrayind_t, since that's the type of indices, it
+ makes sense to allow that many elements
- 2/15
+ 9/22
----
-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>
+lib/readline/terminal.c
+ - rl_term_kP: fix typo. Fix from Koichi Murase <myoga.murase@gmail.com>
- 2/17
+ 9/25
----
-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>
+lib/readline/display.c
+ - rl_clear_visible_line: call _rl_clear_to_eol with _rl_screenwidth as
+ the argument so we clear out the entire line even if the terminal
+ doesn't have a clear-to-eol sequence; make sure to add a call to
+ rl_cr after that so we know we're always in column 0
+ - _rl_redisplay_after_sigwinch: just call rl_clear_visible_line instead
+ of erasing the last line of the display
+ - _rl_redisplay_after_sigwinch: if the prompt is longer than the screen
+ width, make sure to call _rl_reset_prompt to recalculate the
+ local_prompt_newlines array. Should fix issue from
+ https://savannah.gnu.org/support/index.php?110543
-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>
+redir.c
+ - do_redirection_internal: if given [N]<&WORD- or [N]>&WORD- and WORD
+ expands to null, make it identical to <&- or >&- and close file
+ descriptor N (default 0). From a discussion back in 5/2021
- 2/19
+ 9/27
----
+arrayfunc.c
+ - expand_compound_array_assignment: since we run the string through
+ the parser to turn it into a list (so we can make sure all shell
+ metacharacters are properly quoted), we need to remove the CTLESC
+ the parser uses to quote CTLESC and CTLNUL in *unquoted* words.
+ The rest of the code assumes this has been done, and assumes that
+ any CTLESC characters passed to expansion are part of the original
+ word and should themselves be quoted, doubling the number of CTLESCs
-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
+ 9/28
----
-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
+arrayfunc.c
+ - expand_and_quote_kvpair_word,quote_compound_array_word,
+ expand_and_quote_assoc_word,quote_compound_array_list: if we are
+ single-quoting associative array subscripts and associative and
+ indexed array values, we need to quote CTLESC characters, because
+ that's how they come out of the parser and how the assignment
+ statement code expects to see them.
+ Fixes https://savannah.gnu.org/support/index.php?110538
- 2/21
+ 9/29
----
-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
+ - parameter_brace_transform: invalid transformation operators are now
+ fatal errors in non-interactive shells, as with the other word
+ expansions. Reported by Martin Schulte <gnu@schrader-schulte.de> in
+ https://lists.gnu.org/archive/html/bug-bash/2020-10/msg00026.html
-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
+execute_cmd.c
+ - execute_disk_command: if we're optimizing out the fork (nofork) and
+ not directly in a pipeline (pipe_in == pipe_out == NO_PIPE), only
+ modify shell_level if subshell_environment says we're not already in
+ a pipeline. Reported by Paul Smith <psmith@gnu.org> 10/11/2020
+ against GNU make
- 2/22
+evalstring.c
+ - should_suppress_fork: remove #if 1 for code that tries to suppress
+ the fork in a process substitution subshell
+
+ 9/30
----
-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>
+builtins/mapfile.def
+ - do_chop: make sure we're comparing unsigned chars when checking
+ whether the delim is the last character on the line. Reported by
+ Greg Wooledge <greg@wooledge.org>
- 2/23
+ 10/1
----
-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>
+lib/readline/rltty.c
+ - rl_deprep_terminal: if we're not echoing to the terminal
+ (_rl_echoing_p == 0), and we just output the bracketed paste end
+ sequence, output a newline to compensate for the \r at the end of
+ BRACK_PASTE_FINI, since redisplay didn't do it for us. Reported by
+ Siteshwar Vashisht <svashisht@redhat.com>
-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>
+shell.h
+ - MATCH_EXPREP: new matching flag, understood only by pattern
+ substitution; means to expand unquoted `&' in the replacement
+ STRING to the match of PATTERN
- 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
+subst.c
+ - shouldexp_replacement: uncommented
+ - pat_subst: we expand & in the replacement string if MATCH_EXPREP
+ appears in MFLAGS
+ - parameter_brace_patsub: push call to shouldexp_replacement out here,
+ after the replacement string is expanded; set MATCH_EXPREP if there
+ is an unquoted `&' (by backslash) in the expanded replacement
+ string
- 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>
+ - pattern substitution: overhauled the description, moved each of the
+ possible forms to be tags in the tagged paragraph. The description
+ now specifies the expansions that the replacement string undergoes
+ - pattern substitution: documented new behavior of unquoted & in the
+ replacement string
- 2/27
+ 10/4
----
shell.c
- - init_interactive: assignment to histexp_flag should be protected by
- #ifdef BANG_HISTORY. https://savannah.gnu.org/patch/?9759
+ - include <malloc/shmalloc.h> if we're debugging malloc (MALLOC_DEBUG)
+ so we can get an extern declaration of trace_malloc_stats
-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
+ 10/5
----
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>
+ - expand_subscript_string: allocate new memory for td.word, copying
+ STRING, in case it gets freed on error by expand_word_internal.
+ Report and fix from Koichi Murase <myoga.murase@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
+lib/malloc/malloc.c
+ - malloc_usable_size: return the allocated size instead of the chunk
+ size, since writing over the bounds checking will cause fatal errors.
+ Reported by Julien Moutinho <julm+bash@sourcephile.fr>, fix from
+ Dominique Martinet <asmadeus@codewreck.org>
-{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
+arrayfunc.c
+ - unbind_array_elememnt: pass (flags&VA_NOEXPAND) to skipsubscript(),
+ instead of unconditionally passing 1 if we're operating on an
+ associative array. This is consistent with how valid_array_reference
+ determines the length of the subscript.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
- 3/14
+ 10/6
----
-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
+ - skip_to_delim: add a new value for FLAGS. If FLAGS&2, we assume that
+ START is one character after the opening OPEN. If not, we assume that
+ START is at OPEN, and needs to be incremented past it. Part of fix
+ from Koichi Murase <myoga.murase@gmail.com>
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
+ - unbind_array_element: make sure to pass FLAGS to skipsubscript with
+ bit 2 set, since we are passed a SUB index that's one past the
+ opening bracket. Rest of fix from
+ Koichi Murase <myoga.murase@gmail.com>
+ - array_variable_name: make sure we pass (FLAGS&1) to skipsubscript, so
+ we don't inadvertently pass a value with bit 2 set, which would
+ cause an off-by-one error in subscript parsing
- 3/18
+ 10/8
----
-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>
+trap.c
+ - restore_traps: inverse of reset_signal_handlers. This understands
+ how reset_signal_handlers changes the signal disposition while
+ leaving the trap string in place, and knows how to restore flags
+ and state based on that preserved trap string and whether or not
+ the signal is "special" to the shell.
- 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
+builtins/exec.def
+ - exec_builtin: instead of using restore_original_signals to completely
+ cancel the traps, call reset_signal_handlers so the trap strings are
+ preserved. Then if the exec fails (and we're not exiting) we can
+ look at the trap strings and see how to restore the trap state.
+ This calls restore_traps after reinitializing the shell signal
+ handlers, using the trap strings saved by reset_signal_handlers.
+ Fixes issue with not exiting after a failed exec clearing the EXIT
+ trap reported by Mark March <march@systempad.org>, using the
+ approach suggested by Robert Elz <kre@munnari.OZ.AU>
+
+subst.c
+ - expand_declaration_argument: when parsing options that modify
+ attributes that affect how the value is handled (i, c, u, etc.),
+ make sure to create an option string and call make_internal_declare
+ with options that start with a `+' so the attribute is off when
+ the assignment is performed and changes how the value is expanded.
+ From a report by Léa Gris <lea.gris@noiraude.net>
- 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>
+lib/readline/complete.c
+ - rl_display_match_list: even if _rl_completion_prefix_display_length
+ is set to a non-zero value, pass the common prefix length to
+ fnprint if we've turned on colored completion prefixes; passes
+ through to fnprint via print_filename
+ - fnprint: add the ellipsis if prefix_bytes exceeds the
+ _rl_completion_prefix_display_length, add explicit check for
+ prefix_bytes being longer since print_filename passes it through
+ if colored-completion-prefix is set. This means that while
+ completion-prefix-display-length still has precedence over
+ colored-completion-prefix, it doesn't override it if both are set
+ and the common prefix length is shorter than
+ completion-prefix-display-length. From a report by
+ Christoph Anton Mitterer <calestyo@scientia.net>
-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
+ 10/10
+ -----
+parse.y
+ - parse_dparen: if the last token is FOR, increment word_top and assign
+ word_lineno like for other for loops. Fixes bug with LINENO after
+ arithmetic for commands reported by
+ Tom Coleman <thomas.james.coleman@gmail.com>
+ 10/11
+ -----
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
+ - shell_execve: if execve fails with ENOENT, but executable_file()
+ succeeds, display a slightly more descriptive error message. Prompted
+ by a report from Andrea Monaco <andrea.monaco@autistici.org>
-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
+stringlib.c
+ - strcreplace: allow backslash to escape a backslash, since we allow it
+ to escape a `&'
-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
+ 10/14
+ -----
+pcomplib.c
+ - COMPLETE_HASH_BUCKETS: double to 512
- 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>
+stringlib.c
+ - strcreplace: the last argument is now a flags argument. 1 has its
+ previous meaning (glob); 2 means to allow backslash to escape a
+ backslash (as added on 10/11)
- 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>
+ - pat_subst: call strcreplace with 2 as the flags value
-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
- ----
+ 10/15
+ -----
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
+ - updates to Installation section
- 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
+doc/{mkposix,mkinst,mkrbash},doc/Makefile.in
+ - changes to allow scripts to be run outside the source directory
- 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
+ 10/18
+ -----
+subst.c
+ - patsub_replacement: controls whether pattern substitution expands `&'
+ in the replacement string. Initialized to 1 by default
- 5/20
- ----
+ 10/19
+ -----
doc/{bash.1,bashref.texi}
- - SRANDOM: document new special variable
+ - document bash's WCE SIGINT behavior when job control is not enabled
+ and the shell receives a SIGINT while waiting for the foreground
+ command to complete. Added at Red Hat's request. A complete
+ discussion is at https://www.cons.org/cracauer/sigint.html
- 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>
+ 10/25
+ -----
+builtins/shopt.def
+ - patsub_replacement: new shell option, exposes patsub_replacement
+ variable controlling whether pattern substitution expands `&' in
+ the replacement string. Still enabled by default.
-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>
+doc/{bash.1,bashref.texi}
+ - patsub_replacement: document new shopt option
- 5/23
- ----
+ 10/26
+ -----
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>
+ - expand_prompt: group runs of invisible characters at the right edge
+ of the screen with the previous physical characters when setting
+ local_prompt_newlines, since that's how update_line() expects to
+ get it. Fix from sparrowhawk996@gmail.com.
- 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
+lib/readline/macro.c
+ - rl_end_kbd_macro: make sure current_macro_index is > 0 after
+ subtracting the key sequence length, clamp it to 0 before writing
+ the ending NULL. From a fuzzing report by
+ Tillmann Osswald <tosswald@ernw.de>
-jobs.h
- - wait_for_job, wait_for_background_pids: add additional argument to
- declaration
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: in the bracketed paste case, don't assume the
+ pasted text is null-terminated, so use memcpy instead of strcpy for
+ the length of the pasted text, then make sure the search string is
+ null-terminated. From a fuzzing report by
+ Tillmann Osswald <tosswald@ernw.de>
-builtins/wait.def
- - wait_builtin: set pstat.{pid,status} each time through the pid-or-job
- loop and for wait without arguments
+lib/readline/text.c
+ - rl_transpose_words: make sure to preserve the value of rl_end from
+ the beginning to the end of the function. From a fuzzing report by
+ Tillmann Osswald <tosswald@ernw.de>
- 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>
+lib/readline/vi_mode.c
+ - rl_vi_delete_to,rl_vi_change_to,rl_vi_yank_to: if we are redoing a
+ command (_rl_vi_redoing == 1), save the old _rl_vimvcxt, allocate a
+ new one, and restore the old one before returning. Prevents some
+ pointer aliasing problems. From a fuzzing report by
+ Tillmann Osswald <tosswald@ernw.de>
-config-top.h
- - CASEMOD_CAPCASE: no longer defined by default
+ 10/29
+ -----
+arrayfunc.c
+ - tokenize_array_reference: take valid_array_reference and add a third
+ argument (char **SUBP), which, if non-NULL, gets the null-terminated
+ subscript parsed from the NAME argument. If it's NULL, the caller
+ gets the old valid_array_reference behavior. Fix from
+ Koichi Murase <myoga.murase@gmail.com>
+ - valid_array_reference: just call tokenize_array_reference with a
+ NULL third argument
+ - unbind_array_element: assume the caller (unset_builtin) passes a
+ null-terminated SUB that's already been validated by a call to
+ tokenize_array_reference so we don't need to call skipsubscript() or
+ check VA_ONEWORD. Fix from Koichi Murase <myoga.murase@gmail.com>
- 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
+arrayfunc.h
+ - tokenize_array_reference: extern declaration
- 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
+builtins/set.def
+ - unset_builtin: use tokenize_array_reference to figure out T and pass
+ that to unbind_array_element. Fix from
Koichi Murase <myoga.murase@gmail.com>
+ - unset_builtin: pass non-null argument to array_variable_part to get
+ the length of the subscript (T), then cut off any final `]' before
+ passing it to unbind_array_element, since that's what it now
+ expects
-execute_cmd.c
- - execute_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
+subst.c
+ - expand_string_for_rhs,expand_string_for_pat: assign td.word from
+ newly-allocated memory in case it gets freed on error during the
+ call to call_expand_word_internal(); free it manually when that
+ call returns
- 6/12
+ 11/1
----
-jobs.c
- - wait_for_background_pids: wait for the last procsub only if it's the
- same as last_asynchronous_pid
+findcmd.c
+ - search_for_command: if FLAGS includes CMDSRCH_STDPATH, don't look in
+ the hash table for the command name. Prompted by a report from
+ Roger Morris <roger.morris@gmail.com>
-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>
+aclocal.m4
+ - BASH_FUNC_POSIX_SETJMP: add a check by fetching the signal mask
+ after the siglongjmp and making sure that SIGINT is not blocked,
+ indicating we restored the original signal mask
- 6/13
+ 11/2
----
-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
+subst.c
+ - expand_string_assignment: make sure to add W_TILDEEXP to the flags so
+ expand_word_internal performs the right tilde expansion on tildes
+ following an unquoted colon. Report from Anders Kaseorg
+ <andersk@mit.edu>
-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
+ 11/3
----
-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
+aclocal.m4
+ - BASH_FUNC_POSIX_SETJMP: if cross-compiling, default to `present' if
+ we've determined we have posix signal functions
- 6/15
+ 11/4
----
-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.
+ - SET_LINE_NUMBER: set line_number, but don't set line_number_for_err_trap
+ if we're already running the ERR trap
+ - GET_LINE_NUMBER: evaluates to line_number_for_err_trap if we're
+ running the ERR trap and executing_line_number() otherwise
+ - execute_function: use GET_LINE_NUMBER to push the value for the line
+ number into the BASH_LINENO array
+ - execute_command_internal,execute_arith_command,execute_cond_command:
+ use SET_LINE_NUMBER to avoid overwriting line_number_for_err trap
+ while executing the ERR trap. Tentative fix for `caller' problem
+ reported by Quinn Grier <quinn@quinngrier.com>
+
+configure.ac,patchlevel.h
+ - set bash version to 5.2-devel, meaning shell_compatibility_level = 52,
+ which required updating tests (array.tests, array21.sub,
+ quotearray3.sub, new-exp10.sub, history2.sub). The first three are
+ because bash-5.2 flushes an indexed array but does not unset the
+ variable when given `unset a[@]' or `unset[*]' (that is, it acts
+ like `a=()' instead of `unset a'); the other two are because the
+ version number changed
- 6/20
+ 11/8
----
-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
+doc/Makefile.in
+ - bash.info: use `makeinfo -o' instead of calling infopost.sh to edit
+ the filename, since the tags table includes absolute byte offsets to
+ nodes. From https://savannah.gnu.org/support/?110557
-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
+ 11/15
+ -----
+examples/loadables/realpath.c
+ - add -a NAME argument to put canonicalized pathnames into an indexed
+ array instead of displaying them on stdout. Suggested by
+ felix@f-hauri.ch
- 6/27
- ----
-{config.h.in,configure.ac}
- - setresuid,setresgid: check and set HAVE_{DECL,}_SETRES[UG]ID as
- appropriate
+lib/readline/colors.c
+ - _rl_custom_readline_prefix: new function, looks in $LS_COLORS for a
+ custom extension (*.readline-colored-completion-prefix) and uses that,
+ if found, as the default color for the common prefix displayed when
+ `colored-completion-prefix' is set. Suggested by
+ Christoph Anton Mitterer <calestyo@scientia.net>
+ - _rl_print_prefix_color: try the return value from _rl_custom_readline_prefix
+ before defaulting to the C_PREFIX (C_SOCK) color. Suggested by
+ Christoph Anton Mitterer <calestyo@scientia.net>
-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
+lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
+ - readline-colored-completion-prefix: document new custom suffix for
+ readline's colored-completion-prefix color
- 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>
+ 11/16
+ -----
+doc/{bash.1,bashref.texi},builtins/set.def
+ - set: modify usage synopsis slightly, based on
+ https://bugzilla.redhat.com/show_bug.cgi?id=2022324
-bashline.c
- - completion_glob_pattern: just call glob_pattern_p and make sure it
- returns 1 (non-backslash globbing characters)
+builtins/set.def
+ - unset_builtin: add shell compatibility level check <= bash-5.1 to
+ force `unset a[@]' to unset array variable `a', like in previous
+ versions, instead of unsetting associative array element `@' or
+ removing all elements of an indexed array without unsetting the
+ variable itself
-builtins/help.def
- - help_builtin: don't try pattern matching the help topic argument
- unless glob_pattern_p returns 1
+builtins/common.c
+ - set_expand_once: now a no-op if the shell compatibility level is
+ <= bash-5.1, preserving the previous versions' behavior for [[ -v
+ (dependent on assoc_expand_once instead of forcing it)
-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>
+subst.c
+ - parameter_brace_expand_rhs: make sure that the final value assigned
+ is always returned from ${a:=b}, even when `a' has a variable
+ attribute that modifies the value on assignment. Reported back on
+ 1/20/2021 by oguzismailuysal@gmail.com; bash-5.2 tag removed
- 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>
+ 11/22
+ -----
+doc/{bashref.texi,bash.1}
+ - unset: change the description of `unset name[@]' (unset name[*])
+ to reflect the new behavior (unset associative array subscripts or
+ remove all elements from an indexed array) and the difference from
+ previous versions
+ - set: document -r for restricted shell mode
+ - restricted shell: change occurrences of `set +o restricted' to
+ `shopt -u restricted_shell'. From a report from
+ Jin Xiang <jxiang.sd@gmail.com>
+ - read: note that read -t0 may return 0 if a subsequent read will
+ return EOF. From a suggestion by Dale R. Worley
+ <worley@alum.mit.edu>
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
+ - execute_arith_command,eval_arith_for_expr: don't pass EXP_EXPANDED
+ to evalexp if shell_compatibility_level > 5.1, assuming that the
+ expression has been quoted by Q_ARITH handling
- 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>
+ - test_arithcomp: if we're being called by the conditional command
+ code and treating the arguments to the arithmetic operators as
+ expressions, don't pass EXP_EXPANDED to evalexp if the shell
+ compatibility level is > 5.1, assuming that the expression has been
+ quoted by Q_ARITH handling
-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>
+ 11/29
+ -----
+examples/loadables/getconf.[ch]
+ - getconf: new implementation of loadable builtin, based on glibc
+ getconf
-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>
+examples/loadables/sleep.c
+ - parse_gnutimefmt: parse GNU interval format (2m30s), returning
+ seconds and microseconds like uconvert
+ - sleep: use parse_gnutimefmt if uconvert can't parse the format right
+ away and "dhms" appears in the format string. Don't return
+ EX_DISKFALLBACK under any circumstances
- 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
+ 11/30
+ -----
- 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
+builtins/wait.def
+ - wait_builtin: refer to unset_waitlist only if JOB_CONTROL is enabled.
+ Report from Joel Ebel <jbebel@google.com>
-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>
+parse.y,builtins/set.def
+ - changes for minimal config restrictions
- 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>
+configure.ac,config.h.in
+ - --enable-translatable-strings: new configuration option to allow
+ $"..." support to be compiled in or out; not included in the minimal
+ shell configuration
shell.c
- - set_exit_status: set last_command_exit_value to the argument and make
- sure to set PIPESTATUS from that exit value
+ - main: don't include any of the dump-strings options if
+ TRANSLATABLE_STRINGS is not defined
-shell.h
- - set_exit_status: extern declaration
+lib/sh/shquote.c
+ - sh_backslash_quote_for_double_quotes: needed for translatable strings
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
+ - support for translating $"..." strings now conditional on
+ TRANSLATABLE_STRINGS
-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
+locale.c
+ - locale_expand: now conditional on TRANSLATABLE_STRINGS
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
+ - expand_string_dollar_quote: support for $"..." now conditional on
+ TRANSLATABLE_STRINGS
- 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
+doc/bashref.texi
+ - --enable-translatable-strings: document new configuration option
- 9/18
+ 12/2
----
-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>
+ - verify_substring_values: now that the default compatibility level is
+ 52, and the Q_ARITH code is enabled, make the EXP_EXPANDED flag for
+ evalexp() dependent on the compatibility level
+ - param_expand: arithmetic substitution: make EXP_EXPANDED flag
+ for evalexp() dependent on the compatibility level
+ - expand_word_internal: don't call expand_array_subscript if the
+ shell compatibility level is 51 or below (Q_ARITH)
- 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
+test.c
+ - test_unop: if the shell compatibility level is > 51, using [@] with
+ an existing associative array will report on a key of `@'
-doc/{bash.1,bashref.texi}
- - remove references to the `posixglob' shell option
+arrayfunc.c
+ - array_expand_index: if the compatibility level is > 51, Q_ARITH is
+ used and we don't pass EXP_EXPANDED to evalexp()
- 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
+COMPAT,doc/bashref.texi
+ - shell compatibility mode: document effects of setting the
+ compatibility mode to 51
- 9/30
+ 12/3
----
-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>
+lib/malloc/malloc.c
+ - mremap: only use if MREMAP_MAYMOVE is defined, since we use the Linux
+ version of the function signature
- 10/1
+ 12/6
----
-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
+bashhist.c
+ - bash_add_history: if we're parsing a here-document (PST_HEREDOC), only
+ suppress adding the newline between lines if we're not at the first
+ line of the here-document (here_doc_first_line != 0). From a report
+ by S0AndS0 <strangerthanbland@gmail.com>
- 10/3
+ 12/8
----
-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
+lib/readline/colors.c
+ - _rl_custom_readline_prefix: use STREQN to check for the extension
+ string in $LS_COLORS, since it's not necessarily null-terminated.
+ From https://savannah.gnu.org/patch/?10158
- 10/4
- ----
+ 12/10
+ -----
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
+ - set_int_value,set_string_value: broke common code for setting int
+ and string dynamic variable values out into separate functions;
+ changed all callers to use them where appropriate. set_int_value
+ takes a flags argument saying whether or not to force the integer
+ attribute on
+ - assign_random: store the value assigned as the variable value so
+ things like RANDOM=42; RANDOM+=7 generate consistent sequences
+ like in ksh93
+ - assign_seconds: store the value assigned as the variable value so
+ things like SECONDS=42 ; SECONDS+=7 generate what's expected
+
+doc/Makefile.in
+ - changes to allow man pages that include others (.so FN) to be built
+ outside the source tree
-lib/glob/glob.c
- - wcdequote_pathname: new function, actual backslash quote removal code
- from wdequote_pathname; wdequote_pathname calls it
+ 12/13
+ -----
+arrayfunc.c
+ - assign_array_element_internal: take an additional argument: char **NVALP.
+ If non-null, it gets the value eventually assigned to the array
+ element
+ - assign_array_element: take an additional NVALP argument; pass it to
+ assign_array_element_internal
-lib/glob/glob.c
- - {udequote,wcdequote}_pathname: now public void functions
+arrayfunc.h
+ - assign_array_element: new extern function declaration
-lib/glob/smatch.c
- - DEQUOTE_PATHNAME: defined appropriately to udequote_pathname or
- wcdequote_pathname
+{subst,variables}.c,builtins/{common.c,declare.def}
+ - assign_array_element: change callers
-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>
+subst.c
+ - parameter_brace_expand_rhs: for the ${param:=value}, use the value
+ returned by assign_array_element in NVALP as the return value, since
+ it's the value ultimately assigned to the variable after possible
+ modification (e.g., arithmetic evaluation). Reported by
+ oguzismailuysal@gmail.com after flawed fix applied 11/16
- 10/10
+ 12/14
-----
-execute_cmd.[ch]
- - async_redirect_stdin: now a global function
+arrayfunc.h
+ - array_eltstate_t: an object that encapsulates an array element's
+ state (type, index, key, value) whether it's an indexed or
+ associative array
-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
+arrayfunc.c
+ - {init,flush}_eltstate: new functions to initialize and flush any
+ allocated memory from array_eltstate_t objects. No allocation/
+ deallocation functions yet; the only use is with a static instance
+ - assign_array_element_internal: take an array_eltstate_t * instead of
+ a char ** as the final argument, so we can return keys/indices and
+ values depending on the type of array; populates it with the
+ appropriate values
+ - assign_array_element: take array_eltstate_t * as final argument
+ instead of a char **; pass it to assign_array_element_internal
+
+{subst,variables}.c,builtins/{common.c,declare.def}
+ - assign_array_element: change callers to modify final argument
- 10/11
+ 12/15
-----
-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>
+arrayfunc.c
+ - array_value_internal: now takes an array_eltstate_t * as the final
+ argument; there is no more `rtype' argument in favor of the
+ `subtype' member; returns the appropriate values in its members
+ - array_value: changed to pass array_eltstate_t to array_value_internal,
+ saves and fetches its `ind' member into *indp; saves `subtype'
+ member into *rtype
+ - get_arrary_value: changed to take array_eltstate_t as third argument,
+ passes it to array_value_internal
+
+{redir,expr}.c
+ - get_array_value: changed callers; initializing the array_eltstate_t
+ argument as necessary
-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
+test.c
+ - test_builtin: changed to use get_array_value, adding AV_ALLOWALL to
+ the flags, since it didn't use any QUOTED argument. Pass
+ array_eltstate_t * as final argument and get subtype from it (the
+ only thing we're interested in, to deallocate memory)
- 10/30
+ 12/16
-----
-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>
+arrayfunc.c
+ - array_value: now takes a final argument of array_eltstate_t *, which
+ it passes to array_value_internal; no more rtype and indp args.
+ Callers are responsible for marshalling values into estatep
-doc/{bash.1,bashref.texi}
- - BASH_REMATCH: document that it's no longer set to readonly
+arrayfunc.h
+ - array_value: changed function signature
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
+ - get_var_and_type,parameter_brace_expand_word: changed calls to
+ array_value to use array_eltstate_t argument and initialize it
+ appropriately. Copy values back from it to the parameters we need
+ to modify
- 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>
+variables.c
+ - assign_lineno: call set_int_value to store the value, like with
+ RANDOM and SECONDS (from 12/10)
- 11/11
+ 12/17
-----
-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>
+{eval,execute_cmd}.c
+ - when bypassing a parsed command because read_but_dont_execute is
+ set, don't modify last_command_exit_value. From a report by
+ Robert Elz <kre@munnari.OZ.AU>
- 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
+parse.y
+ - parse_comsub: make sure the first call to shell_getc to check whether
+ or not it's an arithmetic expansion skips a quoted newline. From a
+ report by Robert Elz <kre@munnari.OZ.AU>
-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
+ 12/21
-----
-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>
+ - parameter_brace_remove_pattern,parameter_brace_patsub,parameter_brace_casemod,
+ parameter_brace_transform,parameter_brace_substring: now take an
+ array_eltstate_t * argument in place of the arrayind_t argument, pass
+ it to get_var_and_type; this generalizes the indexed array behavior
+ of expanding array subscripts once to associative arrays via an
+ eventual call to array_value_internal with a non-null KEY member
+ - get_var_and_type: now takes an array_eltstate_t * argument in place
+ of the arrayind_t argument; use it in calls to array_value so we
+ can only expand array subscripts once whether they are indexed or
+ associative arrays
+ - parameter_brace_expand_word: take an array_eltstate_t * argument in
+ place of the arrayind_t * argument; pass it to array_value; use a
+ static version (which we init and flush) if the argument passed is
+ NULL so we can get the right state passed back and forth
+ - parameter_brace_expand: pass a pointer to a static array_eltstate_t
+ to parameter_brace_expand_word, and use that in the various calls to
+ parameter_brace_XXX functions that perform specific expansions in
+ place of the old arrayind_t argument; make sure to flush it before
+ returning, even on errors
- 11/22
+ 12/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
+{trap,variables}.c
+ - internal_warning: calls changed to use translatable strings
+ consistently
-builtins/wait.def
- - interrupt_immediately: remove any uses, no longer used anywheren
+error.[ch]
+ - internal_debug: new function, prints a message like internal_warning,
+ no-op if DEBUG is not defined
+ - INTERNAL_DEBUG: macro that expands to internal_debug when DEBUG is
+ defined, and nothing otherwise
-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)
+{jobs,trap}.c
+ - changed some internal_warning and internal_inform calls to use
+ internal_debug, since they were active only when DEBUG is defined
-builtins/common.[ch]
- - builtin_unbind_variable: identical to check_unbind_variable but calls
- builtin_error; for use by builtin commands
+parse.y
+ - parse_comsub: add internal_debug call when a command substitution
+ ends with unterminated here-documents
-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)
+builtins/common.c
+ - number_of_args: unconditionally return posparam_count
-doc/{bash.1,bashref.texi}
- - wait: document new -p option
+{jobs,execute_cmd,subst}.c,parse.y,builtins/{command.def,evalstring.c}
+ - INTERNAL_DEBUG: use instead of calls to itrace protected by #ifdef
+ DEBUG
- 11/25
+ 12/26
-----
-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
+lib/glob/glob.c
+ - glob_always_skip_dot_and_dotdot: initialize to 1 (enabled)
-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>
+builtins/shopt.def
+ - globskipdots: new shell option, exposes glob_always_skip_dot_and_dotdot
- 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>
+ - globskipdots: document new shell option
- 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
+execute_cmd.c
+ - fix_arrayref_words: call valid_array_reference with 0 for third arg
+ because the words have not undergone any word expansions yet and
+ the quotes are still present. This makes things like
+ A=[\[]=set
+ unset A[\[]
+ work
- 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
+subst.c
+ - word_list_split: if a word undergoes word splitting but is not
+ changed, preserve any W_ARRAYREF flag into the new word. This makes
+ things like
+ rkey=']'
+ unset A[$rkey]
+ work because the unset builtin sees the W_ARRAYREF flag on its
+ argument
- 12/13
+ 12/29
-----
-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>
+builtins/common.h
+ - SET_VFLAGS: take a set of word flags, and set flags for use with
+ valid_array_reference (vflags) and assign_array_element/bind_int_variable
+ (bindflags) based on those flags and the setting of assoc_expand_once
+ (moved from read.def and generalized)
-bashline.[ch]
- - bash_execute_unix_command: no longer static, available for other
- parts of the shell to use
+arrayfunc.c
+ - array_variable_name: now exclusively takes AV_xxx flags; understands
+ how to translate AV_NOEXPAND to the right flag for skipsubscript;
+ understands AV_ONEWORD and AV_NOEXPAND
+ - array_variable_part: just passes the FLAGS arg to array_variable_name
+ - assign_array_element: translates ASS_ flags to AV_ flags for
+ array_variable_name
+ - array_value_internal: now just passes flags straight through to
+ array_variable_part (which sends them to array_variable_name)
-bashline.c
- - unbind_unix_command: take a key sequence as an argument, and unbind
- it in the appropriate unix command keymap
+builtins/common.[ch]
+ - builtin_bind_var_to_int: now takes a new FLAGS third argument; passes
+ it to bind_var_to_int
-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>
+builtins/printf.def
+ - printf_builtin: use SET_VFLAGS to set flags for builtin_bind_variable
+ (bindflags); makes things like
+ declare -A A; key=']' ; printf -v A[$key] "foo"
+ work without a subscript error as long as assoc_expand_once is defined
- 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>
+builtins/read.def
+ - read_builtin: use new common version of SET_VFLAGS instead of
+ private version; changed to use new calling sequence; makes things like
+ declare -A A; key=']' ; read A[$key] <<<"foo"
+ work without a subscript error as long as assoc_expand_once is defined
-lib/readline/signals.c
- - _rl_signal_handler: set RL_STATE_SIGHANDLER around SIGWINCH code,
- like _rl_handle_signal does
+builtins/wait.def
+ - wait_builtin: use SET_VFLAGS for variable name with -p option
+ - wait_builtin: call builtin_bind_var_to_int with new bindflags third
+ argument
- 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
+expr.c
+ - expr_streval: just pass TFLAG (AV_xxx flags) straight through to
+ array_variable_part
-pathexp.c
- - shell_glob_filename: call strvec_sort with the flag value to be
- posix conformant
+variables.c
+ - bind_int_variable: translate the assignment flags (ASS_xxx) to
+ VA_xxx flags for valid_array_reference calls (ASS_ONEWORD); translate
+ assignment flags to AV_xxx flags for array_variable_part
-lib/sh/stringlist.c
- - strvec_sort: change callers
+ 12/30
+ -----
+subst.c
+ - parameter_brace_expand: when expanding an indirect variable, extend
+ the special case for array[@] and array[*] (set -u/no positional
+ parameters, obeying the baroque quoting rules) to the value of the
+ indirection. Report and fix from konsolebox <konsolebox@gmail.com>
- 12/29
+ 12/31
-----
-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>
+parse.y
+ - compound_list: when parsing a compound_list production, collect any
+ pending here-documents after reading a newline, not after reading
+ any command terminator. Fixes interactive-only prompting bug
+ reported back in 8/2021 by Hyunho Cho <mug896@gmail.com>
- 1/14/2020
- ---------
+ 1/1/2022
+ --------
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
+ - set_filename_quote_chars: break code that modifies
+ rl_filename_quote_characters based on whether DIRNAME needs to be
+ expanded from bash_directory_completion_hook into its own function
+ - bash_check_expchar: break code that checks whether DIRNAME will be
+ word expanded from bash_directory_completion_hook into its own
+ function
+ - bashline_reset,attempt_shell_completion: make sure complete_fullquote
+ is set to 1 (as it is by default) in case a completion modifies it
+ - bash_quote_filename: if we are completing (but not expanding --
+ direxpand is unset) and backslash-quoting a filename with expansion
+ characters as determined by bash_check_expchar, make sure
+ filename_bstab is set not to include the expansion char (and any
+ following char and closer) and set complete_fullquote to 0 so
+ sh_backslash_quote uses filename_bstab. Fixes the longstanding issue
+ of quoting a `$', for instance, if the rest of the filename contains
+ any characters that need quoting in filenames. This assumes that the
+ filename is unquoted (*QCP == 0) so the word will be expanded and is
+ not part of the filename (if needed, we can use file_exists to check
+ whether the expansion characters are actually part of the filename)
+
+ 1/7
+ ---
+examples/loadables/accept.c
+ - new -b bindaddr option to bind to a specific IP address
+ - move setsockopt calls before bind() to avoid TIME_WAIT issues. Fixes
+ from Dzogovic Vehbo <dzove855@gmail.com>
- 1/15
+ 1/10
----
-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>
+configure.ac
+ - bumped version to 5.2-alpha.
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
+
+tests/{unicode1,glob2,intl2}.sub, tests/run-intl
+ - minor changes to add warnings for missing locales that cause test
+ failures
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
+parse.y
+ - history_delimiting_chars: if we have a blank line by the time we
+ hit the end of the tests, return a semicolon for the first blank
+ line to avoid running lines of a multi-line command together.
+ Fixes bug reported by Joakim Lindblad <joakim@cb.uu.se>
+
+subst.c
+ - expand_string_for_patsub: expand the replacement string for pattern
+ substitution assuming that it will eventually be passed to
+ strcreplace to replace `&' with the matched portion of the string.
+ This calls expand_string_for_pat(), which leaves the string quoted
+ and does not perform word splitting, then calls
+ quote_string_for_repl to post-process the expanded string.
+ - quote_string_for_repl: perform quote removal on passed string while
+ replacing CTLESC escaping a `&' or a backslash with a backslash. The
+ result must be passed to strcreplace
+ - parameter_brace_patsub: call expand_string_for_patsub if
+ patsub_replacement is set to quote
1/18
----
-test.c
- - for the `-v' operator, use a clever trick from Martijn Dekker and
- just test whether N is between 0 and $#.
+subst.c
+ - read_comsub: make istring_index a size_t to avoid overflow with very
+ large values of istring_size.
+ From https://savannah.gnu.org/support/index.php?110596
+ - expand_word_internal: make istring_index a size_t
+
+ 1/20
+ ----
+buitins/cd.def
+ - add a description of `cd -' to the help text. Suggested by
+ Rob Landley <rob@landley.net>
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/glob/glob.c
+ - glob_vector: if we allocate NEXTLINK using malloc, and free it due to
+ some allocation failure, reset FIRSTMALLOC to avoid duplicate frees
+ later on
-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
+subst.[ch]
+ - sub_append_string: the INDX parameter is now a size_t to avoid
+ overflow
- 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
+parse.y
+ - decode_prompt_string: RESULT_INDEX is now a size_t to pass to
+ sub_append_string
-lib/readline/text.c
- - rl_delete_text: if deleting text leaves the mark past rl_end, adjust
- it to rl_end
+jobs.[ch],nojobs.c
+ - wait_for_background_pids: now returns the number of jobs/processes
+ reaped
-lib/readline/vi_mode.c
- - _rl_vi_goto_mark: make sure to call _rl_fix_point after setting
- rl_point to rl_mark
+builtins/wait.def
+ - wait_builtin: if -p pid supplied without -n, make sure we do something
+ useful if no job/pid arguments are supplied and there are no jobs.
+ Reported by Oguz <oguzismailuysal@gmail.com>
+
+builtins/read.def
+ - read_builtin: if we have a timeout, use SIGALRM instead of select
+ when in posix mode, since we use read instead of zread. Fixes bug
+ reported by Andreas Schwab <schwab@linux-m68k.org>
+
+subst.c
+ - expand_string_dollar_quote: handle single-quoted and double-quoted
+ strings that might include $' and $" without attempting translation;
+ do more error checking for unterminated $' and $" that leaves those
+ characters unmodified. This is for use by readline's various line
+ expansion functions (shell_expand_line)
1/23
----
-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
+parse.y,make_cmd.c
+ - revert change that unconditionally processes $'...' and $"..." in
+ here-document bodies; there are only a couple of cases where they
+ should be processed in a double-quote environment
1/24
----
-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
+
+subst.c
+ - extract_dollar_brace_string: if we see another `${' on the rhs of
+ the operator, reset the dolbrace_state to DOLBRACE_PARAM while we
+ read this new ${...} string
+ - extract_heredoc_dolbrace_string: new function, variant of
+ extract_dollar_brace_string, to process the WORD in ${PARAM OP WORD}
+ while expanding lines of here-document data. It's complicated by the
+ requirement to add to the result string as we go along, since we
+ need to change the contents of the input string with ansi expansion
+ or locale translation.
+ - string_extract_single_quoted: take a new third argument: ALLOWESC.
+ This allows backslash to escape an embedded single quote, needed by
+ extract_heredoc_dolbrace_string to process $'...'; changed callers
+
+ 1/25
----
-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
+parse.y
+ - parse_matched_pair: ansi-expand $'...' in WORD for ${PARAM OP WORD}
+ and single-quote the result if dolbrace_state == DOLBRACE_QUOTE
+ (posix pattern removal operators) even if extended_quote == 0
-doc/{bash.1,bashref.texi}
- - READLINE_MARK: document new variable set by the shell
+subst.c
+ - extract_heredoc_dolbrace_string: add logic to align with parse.y:
+ parse_matched_pair and its $'...' expansion, including handling
+ extended_quote
+
+ 1/27
+ ----
+builtins/evalstring.c
+ - should_optimize_fork: broke conditions for optimizing away the fork
+ for a simple command out of optimize_fork into new function, call
+ from should_suppress_fork and optimize_subshell_command. Call from
+ optimize_fork if (subshell_environment & SUBSHELL_PAREN), relying
+ on fact that CMD_TRY_OPTIMIZING is only set in a couple of specific
+ conditions
+ - optimize_fork: call should_suppress_fork only if startup_state == 2;
+ it does the extra checks for that specific case
+ - optimize_fork: call should_optimize_fork if we're in a (list)
+ subshell (subshell_environment & SUBSHELL_PAREN)
+ - optimize_subshell_command: set CMD_TRY_OPTIMIZING on the right side
+ of a `&&', `||', or `;' list as long as it's a simple command so
+ we can check with optimize_fork() when it's time to execute it
+
+execute_cmd.c
+ - execute_in_subshell: call optimize_subshell_command for (list)
+ subshells to either set CMD_NO_FORK for simple commands or set
+ CMD_TRY_OPTIMIZING for likely candidates for later optimization
+
+builtins/common.h,builtins/evalstring.c
+ - optimize_fork: renamed to optimize_connection_fork; changed callers
1/31
----
-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>
+include/shmbutil.h
+ - COPY_CHAR_I,SCOPY_CHAR_I: add check for locale_utf8locale and
+ (c & 0x80) as in other macros
- 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>
+lib/sh/shquote.c
+ - sh_backslash_quote_for_double_quotes: rewrote to use array indexing
+ and COPY_CHAR_I to make it easier to drop in future calls to
+ charvis() to make `unsafe' characters visible if FLAGS == 1
- 2/3
+ 2/1
---
-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
+parse.y
+ - parse_comsub: if we are currently expanding aliases, temporarily
+ turn off alias expansion if we are not in posix mode so we defer
+ alias expansion until command_substitute(). Fixes double-expansion
+ bug reported by Martijn Dekker <martijn@inlv.org> and aligns with
+ https://www.austingroupbugs.net/view.php?id=1342
+ - xparse_dolparen: turn off alias expansion entirely while running the
+ parser: either we do it in parse_comsub (posix mode) or in
+ command_substitute (default mode)
+ - parse_string_to_command: ditto
+
+subst.c
+ - command_substitute: if we are expanding aliases, temporarily turn
+ off alias expansion if we are in posix mode, since we already
+ performed it in parse_comsub() and are using the command string
+ reconstituted from the parse result
-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
+doc/bashref.texi
+ - bash posix mode: add description of alias expansion and command
+ substitution parsing and execution
2/4
---
-examples/loadables/mkfifo.c
- - mkfifo: new loadable builtin
+lib/readline/rltty.c
+ - rl_deprep_terminal: set _rl_last_c_pos to 0 after outputting
+ BRACK_PASTE_FINI, since the last character in that is \r. Partially
+ address issue raised by Markus Schwarzenberg <markus.schwarzenberg@freenet.de>
+ in https://lists.gnu.org/archive/html/bug-bash/2022-02/msg00056.html
- 2/6
+ 2/5
---
-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
+doc/{bash.1,bashref.texi}
+ - minor typo fixes from Helge Kreutzmann <debian@helgefjell.de>
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
+{arrayfunc,variables}.c
+ - ARRAY_EXPORT: changes to encode array and assoc variables using a
+ scheme similar to shell functions so we can export arrays and
+ differentiate them from scalar variables and differentiate array
+ and assoc variables. Still not enabled by default.
-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
+variables.c
+ - mk_env_string: third argument is now the variable's attributes or 0,
+ with all the attributes we can export arrays
-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>
+lib/readline/bind.c
+ - active-region-start-color,active-region-end-color: new bindable
+ string variables, one to set the active region color (instead of
+ standout mode) and one to turn it off (instead of the "se" terminal
+ capability). They set _rl_active_region_start_color and
+ _rl_active_region_end_color variables via functions
- 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)
+lib/readline/display.c
+ - putc_face: if setting standout mode, check for both the start color
+ and end color variables and output the start color string. If turning
+ off standout mode (normal face), output the end color string. Both
+ variables must be set
-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
+lib/readline/{readline.c,rlprivate.h}
+ - declarations for _rl_active_region_start_color and
+ _rl_active_region_end_color
- 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
+ 2/8
+ ---
+bashline.c
+ - initialize_readline: add bindable name `vi-edit-and-execute-command'
-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>
+shell.c
+ - subshell_exit: make sure to set last_command_exit_value before
+ calling the exit trap. Fixes bug reported by Greg Edwards
+ <gedwards@ddn.com>
-builtins/getopts.def
- - dogetopts: use number_of_args() to compute the number of positional
- parameters
+ 2/9
+ ---
+lib/readline/{terminal.c,rlprivate.h}
+ - _rl_region_color_on,_rl_region_color_off: functions to output the
+ _rl_active_region_start_color and _rl_active_region_end_color
+ - _rl_reset_region_color: function to encapsulate setting the region
+ color to an arbitrary string, including doing memory management
-{findcmd,variables,subst,trap,sig}.h,builtins/common.h
- - __P --> PARAMS
+lib/readline/display.c
+ - putc_face: call _rl_region_color_on and _rl_region_color_off instead
+ of _rl_standout_on and _rl_standout_off
-builtins/shift.def,builtins/common.c
- - shift_builtin: moved code that modifies dollar_vars and rest_of_args
- to common.c:shift_args(int times), part of move to localize changes
- to positional parameters
+lib/readline/terminal.c
+ - _rl_init_terminal_io: initialize _rl_active_region_start_color and
+ _rl_active_region_end_color from _rl_term_so and _rl_term_se,
+ respectively; reset every time the terminal is changed
+ - _rl_init_terminal_io: turn off the active region for a dumb terminal
-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
+lib/readline/bind.c
+ - sv_region_{start,end}_color: call _rl_reset_region_color with the
+ appropriate value for WHICH
- 2/12
+ 2/10
----
-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
+lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
+ - active-region-start-color,active-region-end-color: documented new
+ bindable readline variables
+ - enable-active-region: document using active-region-start-color to
+ highlight the text in the region
-subst.[ch],builtins/common.[ch]
- - number_of_args: moved to builtins/common.c
+ 2/11
+ ----
+parse.y
+ - read_token,read_token_word: make sure characters read by shell_getc
+ are protected by appropriate calls to MBTEST when testing for shell
+ metacharacters and operators
2/14
----
-subst.c
- - clear_fifo_list: when using named pipes, clear out the FIFO list
- without unlinking anything and set NFIFO to 0
+builtins/shopt.def
+ - set_compatibility_level: if the current compatibility level is outside
+ the range of the compatNN options, just leave it alone when
+ unsetting one of the options (which by definition was already
+ unset). Fixes issue reported by Mihai Moldovan <ionic@ionic.de>
-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
+ 2/16
+ ----
+lib/readline/search.c
+ - rl_history_search_{pos,len,flags}: rename to have a leading `_'
+ - _rl_history_search_pos: no longer static so other parts of readline
+ can see it
-parse.y
- - special_case_tokens: allow `time -- command'
+lib/readline/rlprivate.h
+ - _rl_history_search_pos: extern declaration
- 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
+lib/readline/readline.c
+ - readline_internal_teardown: don't run the undo list against the
+ current history entry if the non-incremental search functions have
+ set _rl_history_search_pos to it, since it doesn't reflect the
+ current contents of the line buffer. Fixes issue reported by
+ Andreas Schwab <schwab@linux-m68k.org>
-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>
-
+lib/readline/misc.c
+ - _rl_start_using_history: initialize _rl_history_search_pos to
+ something invalid so it doesn't match where_history()
- 2/23
+ 2/17
----
-trap.c
- - first_pending_trap: generalize into first_pending_trap and
- next_pending_trap
+lib/readline/callback.c
+ - rl_callback_read_char: make sure _rl_eof_found is set to the value
+ of eof before calling the deprep terminal function, so it can do
+ different things based on whether the input code read EOF (or the
+ user entered the EOF character). From a gdb discussion started by
+ Andrew Burgess <aburgess@redhat.com> (still more to do, since this
+ is not part of the public API)
-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
+ 2/18
+ ----
+lib/readline/readline.h
+ - RL_STATE_EOF: new readline state value; set when readline reads an
+ EOF character on an empty line or a read returns an error
+ - rl_eof_found: new public variable
-trap.c
- - trap_handler: longjmp to wait_intr_buf unconditionally if
- wait_intr_flag is set; don't bother with interrupt_immediately any
- more
+lib/readline/rprivate.h
+ - _rl_eof_found: renamed to rl_eof_found, so not declared here
-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
+lib/readline/{callback,readline}.c
+ - RL_STATE_EOF: set appropriately when readline gets an EOF. Suggested
+ by Andrew Burgess <aburgess@redhat.com>
+ - RL_STATE_EOF: make sure it's not set when readline starts
+ - rl_eof_found: set appropriately when readline gets an EOF
-variables.h
- - all_local_variables: change extern function declaration
+lib/readline/{callback,readline,rltty}.c
+ - rl_eof_found: new name for _rl_eof_found
-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
+lib/readline/doc/rltech.texi
+ - RL_STATE_EOF: document
-builtins/common.h
- - show_local_var_attributes, show_localname_attributes: new extern
- declarations
+ 2/19
+ ----
+parse.y
+ - parse_comsub: turn off parser state flags we don't want to inherit
+ into this call to the parser (PST_REGEXP, PST_EXTPAT, PST_CONDCMD,
+ PST_CONDEXPR for now). Fixes bug reported by konsolebox
+ <konsolebox@gmail.com>
-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>
+ 2/23
+ ----
+findcmd.c,builtins/hash.def
+ - replace calls to is_directory with file_isdir, which only performs a
+ stat and doesn't do the eaccess call to check for an executable file
-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>
+findcmd.c
+ - find_in_path_element: takes a new RFLAGSP argument, an int * where
+ the status flags for the returned pathname are returned; saves
+ additional calls to stat/eaccess
+ - search_for_command: get the returned flags from
+ find_user_command_in_path so we don't need any additional calls to
+ file_status after we find the command in $PATH
2/24
----
-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"
+doc/{bash.1,bashref.texi}
+ - FUNCTIONS: some small changes to the description of local variables
+ and dynamic scoping, with emphasis on how that affects `unset'
+ behavior. Inspired by a discussion with
+ Christoph Anton Mitterer <calestyo@scientia.net>
2/25
----
-general.c
- - interrupt_immediately: remove all references to this that are
- already commented out
+examples/loadables/realpath.c
+ - renamed -s option to -q to align with other versions
+ - perform array assignment for `-a varname' even if -q option supplied
+ - renamed -S option to -s for Linux compatibility
+
+ 2/28
+ ----
+lib/readline/misc.c
+ - _rl_free_saved_history_line: call rl_free_undo_list, saving and
+ setting rl_undo_list to the saved history line's data, so the right
+ call to _hs_replace_history_data happens and we don't end up with
+ a pointer aliasing problem. Fixes core dump reported by
+ Andreas Schwab <schwab@linux-m68k.org>, but does not make his
+ scenario equivalent to incremental search
+
+ 3/1
+ ---
+lib/readline/search.c
+ - make_history_line_current: save the current line before replacing it
+ with the found history entry using rl_maybe_save_line
+ - noninc_dosearch: we don't want the saved history line, so free it
+ after calling make_history_line_current
+ - _rl_history_search_internal: call rl_maybe_replace_line after making
+ changes to the line buffer with make_history_line_current so we can
+ save the undo list we constructed before we set the history position
3/2
---
-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
+lib/readline/display.c
+ - expand_prompt: add missing piece to patch from 10/26/2021: if we are
+ recalculating the number of invisible characters on the first line
+ of the prompt, we need to update INVFL, even if we already set it
+ when we hit the number of physical characters. This ends up being
+ assigned to prompt_invis_chars_first_line, and is used in several
+ subsequent calculations. Reported by
+ Andreas Schwab <schwab@linux-m68k.org>
-trap.c
- - clear_pending_traps: new function, just clears the pending traps flag
- for all signals
+lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
+ - enable-bracketed-paste: add some language making it clearer that
+ bracketed paste prevents the pasted text from being interpreted as
+ editing commands. Suggested by Karl O. Pinc <kop@karlpinc.com>
- 3/6
+ 3/4
---
-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)
+make_cmd.c
+ - make_here_document: perform quote removal on the here-doc delimiter
+ only if it's marked as quoted, which prevents quotes from inside a
+ command substitution from being removed (they're supposed to begin a
+ new quoting context) when the word itself isn't flagged as quoted
+ (which means the body of the here-document gets expanded). You can't
+ perform quote removal *and* expand the here-document lines. From an
+ austin-group discussion back in early February
+
+lib/sh/strvis.c
+ - charvis -> sh_charvis; change caller
+ - sh_charvis: now take an additional SLEN argument to avoid having to
+ compute the string length every time; change callers
+ - sh_charvis: add a utf-8 locale-specific check before calling
+ COPY_CHAR_I (in practice, doesn't make any real difference)
3/10
----
-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>
+arrayfunc.c
+ - convert_var_to_array: if we're being asked to create an associative
+ array (flags & 2), and we have an existing variable that is not an
+ assoc array (and not an existing indexed array), call
+ convert_var_to_assoc to make it one
- 3/17
+ 3/11
----
-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
+jobs.c
+ - wait_for: don't call get_tty_state() if readline is dispatching
+ (RL_STATE_DISPATCHING) with the terminal settings changed
+ (RL_STATE_TERMPREPPED), the same way we don't if we are running a
+ command for programmable completion. Fixes bug with SIGINT reverting
+ to the saved readline terminal settings reported by
+ Markus Napierkowski <markus.napierkowski@cyberus-technology.de>
-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
+parse.y
+ - decode_prompt_string: make sure the expansion of \w, \W, and \s
+ are all run through sh_strvis before calling
+ sh_backslash_quote_for_double_quotes or just through sh_strvis if
+ we're not running the prompt string through word expansions.
+ Fixes issue reported by Josh Harcome <joshharc@gmail.com> back
+ in mid-January
- 3/18
+ 3/16
----
-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
+bashline.c
+ - bash_quote_filename: if we have a word to complete that contains
+ characters that introduce a word expansion, make sure the passed
+ string does *not* exist as a filename before removing those
+ characters from the set that must be backslash-quoted. See change
+ from 1/1/2022
- 3/19
+ 3/18
----
-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>
+lib/readline/search.c
+ - make_history_line_current: don't free rl_undo_list or
+ _rl_saved_line_for_history; don't unconditionally save the history
+ line. This reverts some of the changes to support setting the
+ history position in history-search-backward
+ - rl_history_search_internal: only free the saved history line if we
+ were the ones who created it
- 3/20
+ 3/21
----
-syntax.h
- - slashify_in_here_document: add `"' to this list, since POSIX says
- that backslashes in here documents behave like backslashes in
- double quotes, and backslash can quote a double quote in a double-
- quoted string. This means that given P=A,
+lib/readline/nls.c
+ - xmalloc.h: include for systems without setlocale(), so xfree has a
+ prototype. Report and fix from András Kucsma <r0maikx02b@gmail.com>
- cat <<EOF
- ${P+\"$P\"}
- EOF
+lib/readline/search.c
+ - _rl_history_search_internal: use previous-history/next-history to
+ move to the found history line instead of directly calling
+ history_set_pos. This makes the behavior more similar to incremental
+ search
+ - rl_history_search_internal: make sure to set rl_undo_list to the
+ current history undo list around the calls to rl_get_previous_history
+ or rl_get_next_history, in order to fool the call to
+ maybe_replace_line they make
- and
+lib/readline/readline.c
+ - _rl_executing_func: the currently-executing readline command function
- echo "${P+\"$P\"}"
+lib/readline/rlprivate.h
+ - _rl_executing_func: extern declaration
- should output the same thing. From a report from Dan Jacobson
- <jidanni@jidanni.org> back in 1/2019.
+lib/readline/search.c
+ - _rl_history_search_internal: removed (commented out) code that sets
+ the current history entry to the found history entry, too much
+ assumes that the current undo list should be applied to the current
+ history entry (where_history())
3/23
----
subst.c
- - 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
+ - parameter_brace_expand_word: if we have double-quoted ${*} or ${@},
+ make sure we are setting W_HASQUOTEDNULL in the flags we return to
+ the caller if we are returning QUOTED_NULL(word)
+ - parameter_brace_expand_word: if we have a double-quoted associative
+ array reference using `*' or `@', make sure we are setting
+ W_HASQUOTEDNULL in the flags we return to the caller if we are
+ returning QUOTED_NULL(word)
+ - parameter_brace_expand: if we're using the `[:]+' word expansion
+ operator, we need to note a quoted null string and pass the
+ W_QUOTEDNULL flag back to the caller
+ - expand_word_internal: make sure to return a QUOTED_NULL
+ (word[0] == CTLNUL) back to the caller if HAD_QUOTED_NULL is set,
+ regardless of whether or not we see a quoted dollar at. Fix for bug
+ reported by Andreas Luik <andreas.luik@innovative-navigation.de>
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
+ - array_value_internal: fix typo and set estatep->type to ARRAY_INDEXED
+ for indexed arrays
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
+lib/readline/{history.c,histlib.h}
+ - _hs_at_end_of_history: convenience function to tell whether or not
+ the current history position is at the end of the history list
- 4/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
+ 4/1
---
-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
+lib/readline/search.c
+ - make_history_line_current: don't free rl_undo_list if it is equal to
+ _rl_saved_line_for_history->data, since we will need to restore it
+ later if we got it from a history entry. Fixes issue dating back to
+ 7/2021 and changes to _rl_free_saved_line_for_history, current issue
+ reported by Andreas Schwab <schwab@linux-m68k.org>
- 4/6
+ 4/5
---
-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>
+lib/readline/{complete,histfile,histsearch,isearch,terminal}.c
+ - xfree: use instead of free
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
+configure.ac
+ - bumped version to bash-5.2-beta
-lib/readline/readline.c
- - _rl_enable_bracketed_paste: enabled by default for the time being
+[bash-5.2-beta frozen]
- 4/9
+ 4/8
---
-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
+lib/readline/input.c
+ - _rl_orig_sigset: need extern declaration if HAVE_SELECT is defined.
+ From https://savannah.gnu.org/support/?110634
-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)
+examples/loadables/seq.c
+ - PRIdMAX: redefine if PRI_MACROS_BROKEN is defined.
+ From https://savannah.gnu.org/support/index.php?110635
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
+configure.ac
+ - BASH_FUNC_STRTOIMAX: replace strtoimax if the system doesn't provide
+ a declaration in a standard header file. Uses new m4/strtoimax.m4.
+ From https://savannah.gnu.org/support/index.php?110633
- 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>
+builtins/printf.def
+ - getdouble: new function, parses string into `double' using strtod
+ - printf_builtin: check for the `L' length modifier and use long
+ doubles for the floating point conversion specifiers. If it's not
+ supplied, use `double' when in posix mode (as posix specifies) and
+ long double (if it's available, double if not) in default mode.
+ From a report from Paul Eggert <eggert@cs.ucla.edu>
- 4/13
+ 4/12
----
-
-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
+lib/sh/oslib.c
+ - bzero: update function signature to modern BSD version
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
+lib/sh/oslib.c
+ - bcopy, gethostname, mkfifo: update function signatures to modern
+ versions
-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
+ 4/15
----
-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)
+jobs.c,nojobs.c
+ - wait_for_single_pid: if the pid or job argument is invalid -- isn't
+ a child of this shell -- return 257, which is out of the range of
+ valid 8-bit status values
- 4/17
- ----
-jobs.h
- - FORK_SYNC,FORK_ASYNC,FORK_NOJOB: new flag values for the second
- argument to make_child
+execute_cmd.c
+ - execute_pipeline: if wait_for_single_pid returns > 256, set it to
+ 127 (invalid process)
jobs.c
- - make_child: now takes a set of flags as the second argument
+ - wait_for_background_pids: if wait_for_single_pid returns > 256, set
+ the status we return in PS to 127 (what it was before)
-execute_cmd.c
- - make_child: change callers to pass FORK_ASYNC instead of a non-zero
- value as the second argument
+builtins/wait.def
+ - wait_builtin: if wait_for_single_pid returns > 256, treat it as an
+ error and set pstat.pid to NO_PID
+ - wait_builtin: if -p supplied, and we get to the end of the argument
+ list with PSTAT.PID != NO_PID (which we assume means that the return
+ value is set from PSTAT.STATUS), set the variable name to PSTAT.PID.
+ From a report by Robert Elz <kre@munnari.OZ.AU>
+ - wait_builtin: for compatibility with the netbsd sh, leave the variable
+ name specified with `-p' unset if there are no PID arguments.
+ From a report by Robert Elz <kre@munnari.OZ.AU>
-subst.c
- - make_child: change callers to pass FORK_ASYNC instead of a non-zero
- value as the second argument
+ 4/17
+ ----
+parse.y
+ - xparse_dolparen: if (flags & SX_NOLONGJMP), don't call
+ jump_to_top_level() on errors
-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>
+bashline.c
+ - bash_quote_filename: don't call quote_word_break_chars() unless we
+ have word break chars initialized. Fixes bug reported by
+ Sam James <sam@gentoo.org>
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
+pcomplete.c
+ - gen_globpat_matches: call glob_filename with the GX_GLOBSTAR flag if
+ the `globstar' shell option is enabled. From a report by
+ Steve <bash@lonetwin.net>
-jobs.c
- - wait_for: if JWAIT_NOTERM is set in the flags argument, don't call
- give_terminal_to
+lib/malloc/malloc.c
+ - internal_free: remove the GLIBC21 code (!)
+ - internal_free: make the code that tests against memtop and calls
+ lesscore depend on USE_LESSCORE being defined, which it is by
+ default
- 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>
+lib/malloc/imalloc.h
+ - USE_LESSCORE: define
-hashcmd.h
- - FILENAME_HASH_BUCKETS: increase to 256
+parse.y,shell.h
+ - token_buffer_size and its corresponding saved value in the shell's
+ parser state are now size_t instead of int
-assoc.h
- - ASSOC_HASH_BUCKETS: new define, set to 1024
+stringlib.c
+ - strsub,strcreplace: use size_t instead of int for local length and
+ indexing variables
-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)
+lib/sh/zmapfd.c
+ - zmapfd: use size_t instead of int for local length and indexing
+ variables
-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>
+lib/sh/zgetline.c
+ - zgetline: use size_t instead of int for local length and indexing
+ variables
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
+pcomplete.c
+ - init_itemlist_from_varlist: free VLIST after assigning it from
+ *SVFUNC and after we get the variable names and values out of it.
+ Report from Robert E. Griffith <bobg@junga.com>
- 4/22
+ 4/25
----
-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
+redir.c
+ - here_document_to_fd: if the shell compatibility level is bash-5.0 or
+ earlier, use tempfiles for all here-documents and here-strings. From
+ a bug-bash discussion started by Sam Liddicott <sam@liddicott.com>
- 4/23
+ 4/26
----
-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>
+ - parse_comsub: non-interactive shells exit on a syntax error while
+ parsing the command substitution
+ - parse_comsub: unset additional PARSER_STATE flags before calling
+ yyparse(). Inspired by https://bugs.gentoo.org/837203; unsetting
+ PST_COMPASSIGN is the fix for that bug
+ - parse_string_to_word_list: use save_parser_state/restore_parser_state
+ instead of saving pieces of the shell state in individual variables
+ - parse_compound_assignment: use save_parser_state/restore_parser_state
+ instead of saving pieces of the shell state in individual variables
+ - parse_compound_assignment: unset additional PARSER_STATE flags before
+ calling read_token(); set esacs_needed_count and expecting_in_token
+ to 0 like in parse_comsub() since read_token can use them
4/27
----
-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
+lib/sh/strvis.c
+ - sh_charvis: changes to handle being compiled without multibyte support
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
+lib/readline/callback.c
+ - rl_callback_read_char: don't set rl_eof_found unless eof is > 0,
+ since it can be -3 if we need to read more input in a multi-key
+ sequence. Report from Andrew Burgess <aburgess@redhat.com>
-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
+examples/loadables/Makefile.sample.in
+ - new file, containing the rules to build the example shared object
+ - includes Makefile.inc from wherever it's installed. Suggested by
+ Robert E. Griffith <bobg@junga.com>
-arrayfunc.h
- - expand_and_quote_assoc_word,quote_compound_array_list: new extern
- declarations
+examples/loadables/Makefile.inc.in
+ - remove rules that create the example shared object
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
+builtins/evalstring.c
+ - parse_and_execute: check for terminating signals before returning,
+ after any longjmp, to improve responsiveness and fix the -c code
+ path before running any exit trap. Report from
+ Emanuele Torre <torreemanuele6@gmail.com>
- 5/23
+ 5/17
----
-doc/bash.1
- - added Shell Compatibility mode section
+builtins/suspend.def
+ - suspend_builtin: the -f option now forces a suspend even if job
+ control is not enabled. Inspired by a discussion with
+ Robert Elz <kre@munnari.OZ.AU>
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
+ - suspend: updated description to include expanded -f behavior
- 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
+ 5/25
----
-lib/malloc/malloc.c
- - __P -> PARAMS
- - union mhead: now 16 bytes to force 16-byte alignment; extra 8 bytes
- at the end of struct minfo to use for guard bytes. Enabled if
- pointers are 64 bits (SIZEOF_CHAR_P == 8)
- - if we have 64-bit pointers, prepopulate the 64-byte bin first instead
- of the 32-byte bin (pointers and WORD_DESCs still fit into 32 bytes,
- but WORD_LISTs are now 36 bytes with malloc overhead). We can still
- split 64-byte blocks to satisfy 32-byte requests
- - internal_malloc: fill in the new 8 mh_magic8 bytes with MAGIC1 guard
- bytes
- - internal_malloc: print a warning message if the returned pointer is
- not aligned according to MALIGN_MASK
- - internal_free: detect underflow by checking that mh_magic8 is full
- of MAGIC1 bytes
- - internal_realloc: detect underflow by checking that mh_magic8 is full
- of MAGIC1 bytes
-
-lib/malloc/stats.c
- - _print_malloc_stats: slight adjustment for better column alignment
-
- 6/1
+builtins/mkbuiltins.c
+ - -includefile: new argument, specifies extern filename to insert
+ into the #include statement in the structfile (builtins.c) and
+ the filename in the comment in the extern file (builtext.h).
+ From Alexander Kanavin <alex.kanavin@gmail.com> via
+ https://savannah.gnu.org/patch/?10210
+
+builtins/Makefile.in
+ - builtins.c: change call to mkbuiltins to add -includefile option
+ - builtins.c: change recipe to run all the commands in the same shell
+ invocation
+ - builtins.c: change recipe to specify new filenames in the call to
+ mkbuiltins and move them onto builtins.c/builtext.h if the new ones
+ are different; make the new filenames use the current make recipe
+ shell pid in the filename ($$RECPID).
+ Inspired by Alexander Kanavin <alex.kanavin@gmail.com> via
+ https://savannah.gnu.org/patch/?10210
+
+ 6/2
---
-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>
+builtins/common.c
+ - builtin_find_indexed_array: new function, factored common code out
+ of mapfile and read builtins to find an in-scope indexed array or
+ create one
-general.h,parse.y
- - __P -> PARAMS
+builtins/common.h
+ - builtin_find_indexed_array: extern declaration
-shell.c
- - shellstart: struct timeval used to initialize shell starting time;
- shell_start_time now initialized from shellstart.tv_sec
+builtins/{mapfile,read}.def
+ - change callers to use builtin_find_indexed_array
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
+ - unbind_global_variable, unbind_global_variable_noref: new functions
+ that remove variables from the global_variables table
-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
+lib/sh/shmatch.c
+ - sh_regmatch: use unbind_global_variable_noref to make sure we act on
+ the copy of BASH_REMATCH in the global scope all the time, ignoring
+ any local variables that might exist. Tentative fix for memory leak
+ report from Emanuele Torre <torreemanuele6@gmail.com>
doc/{bash.1,bashref.texi}
- - SECONDS: clarify that the number of seconds is always determined by
- querying the system clock
+ - BASH_REMATCH: add caveat about making it a local variable
- 6/8
+ 6/6
---
-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
+print_cmd.c
+ - print_redirection: if the redirectee for r_duplicating_output_word
+ (r_duplicating_input_word) is 1 (0), don't print it; only print a
+ non-default file descriptor number
+ - print_redirection_list: remove the code that tries to temporarily
+ translate a >&word redirection to >&word now that we won't print a
+ non-default file descriptor number. Fixes issue with `declare -f' and
+ function export reported by Namikaze Minato <lloydsensei@gmail.com>
- 6/11
+ 6/13
----
-redir.c
- - limit HEREDOC_PIPESIZE to 4096 on FreeBSD; that is where it can
- handle atomic writes without hanging. Tested on FreeBSD 13
+configure.ac
+ - bumped version to bash-5.2-rc1
-[bash-5.1-alpha frozen]
+[bash-5.2-rc1 released]
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>
+parse.y
+ - parse_string_to_word_list: save the parser state before any state-
+ changing functions like bash_history_disable(). Reported by
+ Clark Wang <dearvoid@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>
+doc/bash.1
+ - play tricks with the value of the zZ number register to refer to
+ `bash(1)' instead of `above' or `below' when creating the builtins
+ man page
6/17
----
-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
+doc/{bash.1,bashref.texi}
+ - wait: note that wait will return > 128 if interrupted by a signal.
+ Reported by AA <aathan_github@memeplex.com>
-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
+execute_cmd.c
+ - {execute_cond_node,execute_arith_command,eval_arith_for_expr}: make
+ sure to reset this_command_name after running any DEBUG trap so the
+ DEBUG trap doesn't overwrite it.
+ Reported by Emanuele Torre <torreemanuele6@gmail.com>.
+ - execute_select_command: set this_command_name to NULL after running
+ any DEBUG trap like execute_for_command does
- 6/22
+ 6/23
----
-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)
+test.c
+ - three_arguments: when given [ ! ! arg ], make sure to advance POS
+ after calling two_arguments to avoid a `too many arguments' error.
+ Report from Steffen Nurpmeso <steffen@sdaoden.eu>
- 6/29
+ 6/27
----
-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>
+subst.c
+ - expand_word_internal: when expanding backquoted command substitution,
+ call string_extract with the SX_REQMATCH flag (closing backquote
+ required) only if the word flags don't contain W_COMPLETE,
+ indicating that we're doing this for completion, probably to
+ determine whether or not to append something to the word. Fixes bug
+ reported by Emanuele Torre <torreemanuele6@gmail.com>.
- 7/1
+ 7/5
---
-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>
+execute_cmd.c
+ - execute_connection: treat a connector of '\n' the same as ';'
- 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>
+print_cmd.c
+ - print_comsub: new function, sets flag noting we are printing a
+ command substitution and calls make_command_string
+ - make_command_string_internal: add '\n' to the ';' case; print command
+ list with newline connector appropriately
- 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>
+parse.y
+ - parse_comsub: call print_comsub instead of make_command_string
+ - list1 production (part of compound_list): if a list is separated by
+ newlines, and the parser is parsing a command substitution, make
+ the connection command with a '\n' connector. Makes the text
+ output of parse_comsub closer to the original source text. From a
+ report from Martijn Dekker <martijn@inlv.org>
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
+doc/bash.1,lib/readline/doc/rluser.texi
+ - complete: add note about arguments passed to command specified by
+ `complete -C'; suggested by Mark Chandler <mcp@synq.so>
-builtins/evalstring.c
- - optimize_shell_function: try to optimize away the fork in the last
- command in a shell function body, under certain conditions
+builtins/setattr.def
+ - show_local_var_attributes: special-case `local -', since there is
+ no `declare -' equivalent.
+ Reported by Emanuele Torre <torreemanuele6@gmail.com>.
+ - show_all_var_attributes: use `local -' when printing a variable named
+ `-' at the current non-zero variable context
-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
+parse.y
+ - shell_getc: if we are at the end of an alias, returning a space,
+ make sure we mark the previous character as single-byte by modifying
+ shell_input_line_property so the space we return is properly
+ recognized. This would fail before if the last character of the
+ alias was a multi-byte character. Reported by
+ Vangelis Natsios <vnatsios@gmail.com>
- 7/8
- ---
-{jobs,nojobs,trap,unwind_prot}.c,lib/malloc/{malloc,table}.c
- - interrupt_immediately: remove, no longer used
+ 7/12
+ ----
+lib/readline/isearch.c
+ - rl_display_search: don't call rl_redisplay_function before returning;
+ rl_message already calls it. Reported by
+ Frédéric Moulins <frederic@moulins.org>
+
+configure.ac
+ - bumped version to bash-5.2-rc2
+ 7/18
+ ----
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>
+ - set_job_control: don't bother calling tcgetpgrp if shell_tty < 0,
+ since it will just fail
- 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
+variables.c
+ - reset_local_contexts: new function, delete all context tables
+ associated with shell functions and set variable_context to 0.
+ Called when we want to stop executing in a shell function without
+ going through the pop_context chain with its side effects
- 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>
+variables.h
+ - reset_local_contexts: extern declaration
- 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
+builtins/evalstring.c
+ - parse_and_execute: call reset_local_contexts instead of setting
+ variable_context to 0
+
+eval.c
+ - reader_loop: call reset_local_contexts in cases where the shell has
+ longjmped for a fatal error and errexit is enabled (ERREXIT), but
+ not for other cases, and especially not for the exit builtin,
+ instead of just setting variable_context to 0. Fixes issue originally
+ reported by Robert Stoll <robert.stoll@tegonal.com>
- 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>
+ - pat_subst: implement sed-like behavior when presented with a null
+ pattern that's anchored at the start or end of the string, or when
+ presented with a null string: process the replacement string for `&'
+ and `\&' and substitute in the result as before. Patch from
+ Koichi Murase <myoga.murase@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>
+
+[bash-5.2-rc2 frozen]
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>
+parse.y
+ - reset_parser: set need_here_doc, esacs_needed_count, expecting_in_token
+ all to 0, since jumping back to a top-level parse needs that
+ - parse_comsub: make sure to reset expand_aliases and shell_eof_token
+ if we're not going to exit immediately out of this function
7/28
----
-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>
+ - parse_comsub: if the compatibility level is <= 51, set extglob while
+ parsing the command substitution, so bad pattern errors can still be
+ caught but valid patterns are let through and can be evaluated at
+ runtime, when extglob may have been set. If it isn't set, it will
+ still be a parser error when the command substitution is executed.
+ Fixes report from Sam James <sam@gentoo.org> about gentoo scripts.
+ - reset_parser: set extended_glob from global_extglob if the parser
+ state includes PST_CMDSUBST
+ - xparse_dolparen: set global_extglob but don't modify extended_glob,
+ so parse errors can be caught before forking a child for command
+ substitution, as part of word expansion, but after extglob may have
+ been set by command execution (e.g., in a shell function)
- 8/4
+ 8/5
---
-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>
+[bump version to bash-5.2-rc3]
-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/6
+ ---
+trap.c
+ - run_pending_traps: move code from evalstring() so we call
+ parse_and_execute() directly and handle any `return' invocations so
+ we can restore the value of running_trap. Otherwise, if we longjmp
+ past this function, we will think we're running a trap after we
+ finish. Prompted by post from Koichi Murase <myoga.murase@gmail.com>
- 8/5
+ 8/9
---
-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>
+lib/readline/nls.c
+ - _rl_current_locale: private variable, stores the value of the
+ LC_CTYPE locale category, as determined by _rl_init_locale; set
+ to allocated memory in _rl_init_locale()
+ - _rl_set_localevars: new function, code from _rl_init_eightbit that
+ checks the current locale (passed as an argument) and sets the
+ various locale-aware variables based on it. It accepts a second
+ argument: FORCE. If non-zero, it means to restore the default "C"
+ locale values if the locale is "C" or "POSIX", now that this
+ function can be called multiple times
+ - _rl_init_eightbit: now just calls _rl_init_locale and
+ _rl_set_localevars
+ - _rl_reset_locale: new function, checks whether our the locale has
+ changed since we last called _rl_init_locale to set our internal
+ idea of its value. If it has changed, call _rl_set_localevars with
+ the new locale and a FORCE argument of 1 to change the
+ locale-dependent variables.
- 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>
+lib/readline/rlprivate.h
+ - _rl_reset_locale: extern declaration
- 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
+lib/readline/readline.c
+ - rl_initialize: call _rl_reset_locale instead of _rl_init_locale so
+ the internal readline variables get set when we move from a non-
+ multibyte locale ("C") to a multibyte one ("en_US.UTF-8"). Report
+ from Alan Coopersmith <alan.coopersmith@oracle.com>
- 8/14
+ 8/16
----
-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>
+lib/sh/setlinebuf.c
+ - sh_setlinebuf: allocate buffers for line-buffering stdout and stderr
+ only once, the first time it is requested. Only allocate memory if
+ we're using setvbuf (we usually are). Double the buffer size to 2016
+ if we're using the bash malloc. Otherwise, let stdio handle it.
8/17
----
-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>
+builtins/exec.def
+ - exec_builtin: make sure to initialize orig_job_control in case the
+ command is not found by search_for_command. Report and fix from
+ Xiami <i@f2light.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>
+[bash-5.2-rc3 frozen]
- 8/25
+ 8/27
----
-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>
+parse.y
+ - parse_comsub: restore extended_glob to a local copy (local_extglob)
+ only if we changed it; a safer way to do it. Fixes extglob change
+ issue reported by Kerin Millar <kfm@plushkava.net>
+ - cond_term: restore extended_glob to a local copy; safer than using
+ global_extglob, which we will reserve for error recovery
- 8/26
+ 8/30
----
-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>
+parse.y
+ - parse_comsub: don't clear the pushed string list; we might need it to
+ consume additional input to satisfy this command substitution. When
+ we restore the parser state, don't restore the pushed string list in
+ case we used it. From
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1018727
+ - parse_comsub: don't modify extended_glob if parser_state includes
+ PST_EXTPAT, in which case we've already set extended_glob and
+ global_extglob appropriately. Only matters in compatibility mode.
8/31
----
-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>
+subst.c
+ - parameter_brace_transform: make sure we return an error if *xform
+ is '\0'. Report from Ivan Kapranov <koltiradw@yandex.ru>
9/7
---
-[bash-5.1-beta frozen]
+[bump version to bash-5.2-rc4]
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>
+[bash-5.2-rc4 frozen]
- 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
+ 9/20
----
-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>
+lib/readline/history.c
+ - replace_history_entry: check for a NULL timestamp before trying to
+ copy it. Report from nov.ondrej@gmail.com
9/23
----
-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]
+[bash-5.2 frozen]
diff --git a/CWRU/misc/bison b/CWRU/misc/bison
index 58aae79e..58aae79e 100755..100644
--- a/CWRU/misc/bison
+++ b/CWRU/misc/bison
diff --git a/ChangeLog b/ChangeLog
index 12c9a285..da6d4aa1 120000..100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1 +1,3952 @@
-CWRU/changelog \ No newline at end of file
+
+ 12/6/2020
+ ---------
+
+[bash-5.1 released]
+
+ 12/7
+ ----
+Makefile.in
+ - bashline.o: add dependency on ${DEFDIR}/builtext.h. Report from
+ Fazal Majid <fazal@majid.org>
+
+ 12/11
+ -----
+builtins/wait.def
+ - wait_builtin: don't assign the variable given with -p if there are no
+ jobs to wait for. Report and fix from OÄuz <oguzismailuysal@gmail.com>
+
+arrayfunc.c
+ - kvpair_assignment_p: return non-zero if argument L appears to be a
+ key-value pair associative array compound assignment
+ - expand_and_quote_kvpair_word: run a single word in a key-value pair
+ associative array compound assignment through the appropriate
+ expansions and single-quote the result
+
+arrayfunc.h
+ - kvpair_assignment_p, expand_and_quote_kvpair_word: extern declarations
+
+subst.c
+ - expand_oneword: detect whether VALUE appears to be a key-value
+ pair compound assignment and call the appropriate function to expand
+ each word in the resulting list. Fixes inconsistency reported by
+ oguzismailuysal@gmail.com
+
+ 12/12
+ -----
+subst.c
+ - command_substitute: don't reset pipeline_pgrp to shell_pgrp if we
+ are already forked to run a command (SUBSHELL_FORK). Fixes SIGINT
+ in command substitution in here-document in forked child issue
+ reported by oguzismailuysal@gmail.com
+
+ 12/18
+ -----
+execute_cmd.c
+ - execute_pipeline: execute the lastpipe code even if prev == 0. It
+ can only be 0 here if stdin was closed when this function was
+ executed
+ - execute_pipeline: if prev == 0, set lstdin to a sentinel (-1) that
+ means to close fd 0 after executing the command, and call close(prev)
+ before restoring stdin. restore_stdin now understands -1, and closes
+ fd 0. Fixes issue reported by Tomas Janousek <tomi@nomi.cz>
+
+ 12/21
+ -----
+doc/bashref.texi
+ - PROMPT_COMMANDS: clean up a couple of remaining instances of this
+ name. Report from Eli Schwartz <eschwartz@archlinux.org>
+
+ 12/26
+ -----
+subst.c
+ - command_substitute: make sure that the child process always has
+ pipeline_pgrp == shell_pgrp: if pipeline_pgrp is non-zero when we
+ get to the child, meaning that we're part of an already-forked
+ child that is, for instance, running redirections, we need to reset
+ shell_pgrp to it to preserve the invariant. Fixes bug with terminal
+ being set to the incorrect pgrp reported by oguzismailuysal@gmail.com
+
+ 12/29
+ -----
+configure.ac,builtins/shobj-conf,m4/threadlib.m4
+ - midnightbsd: update auto-configuration to treat MidnightBSD like
+ FreeBSD. From https://savannah.gnu.org/patch/?10006
+
+ 12/30
+ -----
+examples/loadables/stat.c
+ - stattime: use strftime with a default format or the format supplied
+ with the -F option to format the file time information
+ - stat_builtin: now takes a -F fmt option for a strftime format string;
+ change to function calling sequences to pass the format down to
+ stattime
+
+examples/loadables/Makefile.in
+ - stat: now built and installed by default
+
+ 12/31
+ -----
+command.h
+ - SUBSHELL_IGNTRAP: new flag value
+
+jobs.c
+ - make_child: set SUBSHELL_IGNTRAP in subshell_environment in the
+ child process, meaning that we should not execute trap handlers for
+ trapped signals
+
+execute_cmd.c
+ - execute_in_subshell, execute_simple_command, execute_disk_command:
+ make sure to unset SUBSHELL_IGNTRAP after a child process restores
+ the original signal dispositions
+ - execute_simple_command: make sure to set SUBSHELL_IGNTRAP after
+ make_child returns and we're setting subshell_environment directly
+
+subst.c
+ - command_substitute,process_substitute: unset SUBSHELL_IGNTRAP after
+ the child process has reset the trapped signal dispositions
+
+trap.c
+ - trap_handler: if we get a signal for which we have set a trap, but
+ SUBSHELL_IGNTRAP is set in subshell_environmnent, make sure we
+ restore the original signal disposition and resend the signal to
+ ourselves. Fixes issue reported by Nikolay Borisov <nborisov@suse.com>
+ (or at least makes the race window much smaller)
+
+sig.c
+ - initialize_terminating_signal: set the original signal handler from
+ the return value from sigaction; a minor optimization that saves a
+ system call or two
+
+ 1/5/2021
+ --------
+builtins/declare.def
+ - declare_internal: make some option combinations that don't make
+ sense errors (e.g., -f and -a/-A/-i/-n)
+ - declare_internal: if we build a new variable name by expanding the
+ value of a nameref variable, make sure to chop the `+' in a `+='
+ off before going on
+
+ 1/7
+ ---
+doc/{bash.1,bashref.texi}
+ - bind: add an example to the synopsis making it clear that you can
+ use any readline command line as a non-option argument, as it says
+ in the text. From a report from Dan Jacobson <jidanni@jidanni.org>
+
+ 1/12
+ ----
+locale.c
+ - local_shiftstates -> locale_shiftsates in the non-multibyte code
+ branch. Reported by Henry Bent <henry.r.bent@gmail.com>
+
+subst.c
+ - expand_compound_assignment_word: make sure to call dispose_words on
+ the WORD_LIST * returned from expand_oneword after turning it back
+ into a string. Fixes memory leak reported by Alexander Mescheryakov
+ <alexander.s.m@gmail.com>
+
+ 1/13
+ ----
+variables.c
+ - bind_variable_internal: when performing an assignment to a subscripted
+ array variable that was the value of a nameref (used in the original
+ assignment), don't call make_variable_value on the value, since that
+ messes up +=. Just call assign_array_element and let that take care
+ of calling make_variable_value appropriately. Fixes bug reported by
+ Oguz <oguzismailuysal@gmail.com>
+
+ 1/14
+ ----
+findcmd.c
+ - search_for_command: if `checkhash' is set, don't add non-executable
+ files to the command hash table, since we will just remove them
+ later
+
+lib/sh/winsize.c
+ - get_new_window_size: set *rp and *cp even if READLINE is not defined
+
+ 1/15
+ ----
+lib/sh/winsize.c
+ - get_new_window_size: call rl_set_window_size only if we can determine
+ we're using readline: an interactive shell without no-line-editing,
+ or if we've already initialized readline, presumably in a non-
+ interactive shell
+
+support/Makefile.in
+ - man2html: add LDFLAGS_FOR_BUILD to the recipe. Report from
+ Jeffrey Walton <noloader@gmail.com>
+
+ 1/17
+ ----
+lib/readline/misc.c
+ - rl_operate_and_get_next: fix old K&R function declaration. Report
+ from Tom Tromey <tom@tromey.com>
+
+lib/readline/readline.c
+ - _rl_internal_char_cleanup: move code that cleans up the active region
+ and deactivates the mark inside this function so callback mode
+ applications get the intended functionality. Report and fix from
+ sparrowhawk996@gmail.com
+
+lib/readline/bind.c
+ - rl_parse_and_bind: when using the arithmetic comparison operators on
+ the version, make sure to invert the tests so that we stop parsing
+ if the test fails. Report and fix from Tom Tromey <tom@tromey.com>
+
+ 1/19
+ ----
+Makefile.in
+ - pipesize.h: add dependency on ${BUILTINS_LIBRARY} to avoid parallel
+ makes trying to create it twice. Report and fix from
+ Richard Purdie <richard.purdie@linuxfoundation.org>
+
+ 1/21
+ ----
+subst.c
+ - param_expand: if a nameref expands to array[@] or array[*], make sure
+ to call chk_atstar so the right variables are set to split the
+ result. Report from Oguz <oguzismailuysal@gmail.com>
+
+ 1/22
+ ----
+builtins/declare.def
+ - Rewrote to reduce complexity. Still needs some work.
+
+lib/readline/*.h, lib/tilde/tilde.h
+ - PARAMS: remove, rely on compilers understanding function prototypes
+
+lib/readline/{undo.c,histlib.h}
+ - _hs_replace_history_data: move extern declaration to histlib.h
+
+lib/readline/readline.c
+ - _rl_parse_colors: instead of an extern declaration for this, include
+ "parse-colors.h" for it
+
+lib/readline/{histfile.c,histlib.h}
+ - _hs_append_history_line: move extern declaration to histlib.h
+
+lib/readline/history.h
+ - HS_HISTORY_VERSION: define to 0x0801 (current library version) if
+ it's not already defined. We conditionally define it in case an
+ application has (unwisely) chosen to use it, since the history
+ library doesn't do anything with it yet
+
+lib/readine/{rlprivate.h,{search,misc,readline}.c}
+ - _rl_free_history_entry: add extern declaration to rlprivate.h, remove
+ extern declaration from c source files. Use HS_HISTORY_VERSION as a
+ sentinel that it's ok to use HIST_ENTRY in rlprivate.h
+
+lib/readline/{rlprivate.h,{isearch,search,undo}.c}
+ - _rl_saved_line_for_history: add extern declaration to rlprivate.h,
+ remove extern declaration from c source files, using HS_HISTORY_VERSION
+ in the same way
+
+ 1/24
+ ----
+lib/readline/signals.c
+ - _rl_handle_signal: make sure that all sigprocmask calls are protected
+ by HAVE_POSIX_SIGNALS. Report and fix from Tom Tromey <tom@tromey.com>
+
+ 1/26
+ ----
+lib/readline/callback.c
+ - rl_callback_read_char: make sure rl_linefunc is non-NULL before
+ calling through the pointer. The line function could have been
+ removed by the application before readline processes any typeahead
+ input. Bug reported by Matthias Klose <doko@debian.org>, pointer
+ to root cause from Koichi Murase <myoga.murase@gmail.com>
+
+lib/glob/glob.c
+ - skipname,wskipname: put in some additional checks for `.' to ensure
+ that we don't get false positives (or incomplete tests) that can
+ affect the results of extglob patterns. Reported by
+ gregrwm <rhn-users@greatlakedata.com>
+
+ 1/27
+ ----
+lib/glob/glob.c
+ - extglob_skipname,wextglob_skipname: fixed an off-by-one error (SE
+ was being set to one character before the end of the pattern string,
+ not the null character at the end of the pattern string like other
+ callers of glob_patscan) that caused the last character of the last
+ subpattern to be cut off when calling skipname
+ - extglob_skipname,wextglob_skipname: some cleanups so the code is
+ closer to identical for the single-byte and wide character versions
+
+ 2/1
+ ---
+execute_cmd.c
+ - execute_simple_command: in posix mode, if we have a variable
+ assignment error while assigning into the temporary environment (e.g.,
+ assigning to a readonly variable), a non-interactive shell running a
+ special builtin exits; a non-interactive shell running anything else
+ jumps back to the top level. A shell compiled with -DSTRICT_POSIX
+ exits unconditionally.
+ - execute_simple_command: make sure posix mode sets $? to non-zero
+ if a variable assignment error occurs preceding a non-special builtin
+
+subst.c
+ - do_assignment_statements: take the code from expand_word_list_internal
+ that performs assignment statements, either standalone or preceding
+ simple command names, and factor it out into this function
+ - expand_word_list_internal: call do_assignment_statements where
+ appropriate
+
+ 2/2
+ ---
+lib/glob/glob.c
+ - dequote_pathname: fix function definition for non-multibyte systems.
+ Report and fix from Marc Aurèle La France <tsi@tuyoix.net>
+
+Makefile.in,doc/Makefile.in
+ - for certain targets, remove files before creating them to deal with
+ symlinked build trees.
+ Report and fix from Marc Aurèle La France <tsi@tuyoix.net>
+
+examples/loadables/accept.c
+ - include limits.h before typemax.h
+ Report and fix from Marc Aurèle La France <tsi@tuyoix.net>
+
+builtins/gen-helpfiles.c
+ - if USING_BASH_MALLOC is defined, make sure to undefine malloc as well
+ as free. Fixes bug reported by George R Goffe <grgoffe@yahoo.com>
+
+builtins/Makefile.in
+ - install-help: now depends on $(HELPFILES_TARGET) so we make sure the
+ separate helpfiles are created before we try to install them if we
+ don't go through the `all' makefile target
+
+configure.ac
+ - HELPDIR: now ${datadir}/bash/helpfiles
+
+ 2/3
+ ---
+parse.y
+ - parse_string_to_word_list: before expanding a compound assignment
+ statement body, make sure to save any alias that's currently being
+ expanded. Restore the alias after the compound assignment is parsed.
+ Reported back in 11/2020 by Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com>
+
+ 2/4
+ ---
+lib/readline/histexpand.c
+ - history_expand_internal: when calling the history_inhibit_expansion
+ function, make sure to call it using the string as we've expanded it
+ to that point (RESULT), adding the expansion and next characters
+ temporarily, since we make expansion decisions based on what we've
+ accumulated, not what we started with. This makes things like
+ echo abc!$!$ work, where before the second `!' inhibited expansion
+ because bash_history_inhibit_expansion mistakenly took it as the
+ second character in a `$!' word expansion. Fixes bug reported back
+ in 10/2020 by Paul Fox <paul.d.fox@gmail.com>
+
+array.h
+ - array_pop: instead of calling array_dispose_element from this macro,
+ just call array_shift with the AS_DISPOSE flag
+
+ 2/5
+ ---
+bashhist.c
+ - shell_comment: move condition to return 0 if the delimiter stack is
+ not empty or the shell is parsing a here document into the function
+ itself, don't have the callers check so the check is in one place.
+ Fixes bug reported by Oguz <oguzismailuysal@gmail.com>
+
+array.h,variables.c
+ - ARRAY_ELEMENT_REPLACE: convenience define for modifying an array
+ element's value
+
+variables.c
+ - pop_args: a couple of code simplifications
+
+ 2/7
+ ---
+lib/malloc/malloc.c
+ - pagesz: at least MALLOC_PAGESIZE_MIN (4096) bytes
+ - union mhead: now 16-byte aligned on all systems, 32-bit and 64-bit
+ pointers
+ - binsizes: since the smallest allocation overhead is now 16 bytes,
+ redo the buckets so binsizes[0] == 32; adjust the thresholds for
+ split/coalesce/prepopulate/mmap (NBUCKETS = 28; STARTBUCK = 0).
+ Sizes stay pretty much the same; indices change
+ - consistently use MALLOC_SIZE_T instead of long/unsigned int/int
+ - use MAGIC8_NUMBYTES as the length of the mh_magic8 buffer, in case
+ it changes later for alignment
+ - internal_remap: new function, calls mremap to reallocate a chunk of
+ memory allocated using mmap(); called from internal_realloc if the
+ old size and new size are both bigger than the mmap threshold
+ - internal_realloc: call internal_remap if the old size and new size
+ are both above the threshold where we use mmap for allocation
+
+ 2/10
+ ----
+include/timer.h
+ - new file, declaration for a timer struct to be used by a set of
+ functions to implement timers using SIGALRM or select/pselect
+
+lib/sh/timers.c
+ - new file, set of functions to manipulate timer objects and timeouts
+ using SIGALRM or select/pselect. Inspired by a patch from
+ Koichi Murase <myoga.murase@gmail.com>. Not used yet
+
+ 2/11
+ ----
+builtins/read.def
+ - read_builtin: if there is a timeout set, block SIGCHLD around calls
+ to zread and its siblings, or calls to readline for `read -e', so
+ SIGCHLD (and the consequent waitpid) doesn't interrupt the read.
+ Fixes bug reported by Koichi Murase <myoga.murase@gmail.com>, but
+ there may be a different fix coming
+
+Makefile.in,builtins/Makefile.in
+ - fix up dependencies, especially on builtins.h and builtext.h
+
+
+ 2/12
+ ----
+lib/readline/input.c
+ - rl_read_key: if we set rl_done == 1, set RL_STATE_DONE as well
+ Reported by Koichi Murase <myoga.murase@gmail.com>
+
+lib/readline/isearch.c
+ - _rl_search_getchar: only call _rl_read_mbstring if rl_read_key returns
+ >= 0, avoid some work
+
+lib/readline/vi_mode.c
+ - _rl_vi_callback_change_char,_rl_vi_change_char: don't overwrite the
+ last replacement string if _rl_vi_callback_getchar returns -1.
+ It will likely make no difference, since the next read will return
+ an error or EOF, but being careful
+ - rl_vi_overstrike: if _rl_overwrite_char doesn't return 0, break out
+ of the loop
+
+lib/readline/text.c
+ - _rl_overwrite_char: return 1 if _rl_read_mbstring returns < 0 so
+ we don't try to insert garbage
+
+bashline.c
+ - posix_edit_macros: handle rl_read_key() returning <= 0
+
+ 2/15
+ ----
+parse.y
+ - read_comsub: make sure to turn on the LEX_RESWDOK flag if we are in
+ a case statement and read a `)', since we can get a valid `esac'.
+ Fixes bug reported by Oguz <oguzismailuysal@gmail.com>
+ - read_comsub: if we're in a case statement, recognize `}' as a
+ reserved word and set the LEX_RESWDOK flag for the next word, since
+ we can get an esac (or another reserved word) after it
+
+ 2/16
+ ----
+parse.y
+ - reserved_word_acceptable: add ARITH_CMD and COND_END to the list of
+ tokens that can precede a reserved word, so you can use reserved
+ words after ((...)) and [[...]].
+ Reported by Koichi Murase <myoga.murase@gmail.com>
+
+ 2/17
+ ----
+parse.y
+ - parse_comsub: use new LEX_CASEWD flag to track when we are reading
+ the WORD in `case WORD in' and turn on the LEX_RESWDOK flag when
+ that word ends. This allows $(case x in esac), which no one uses.
+ - parse_comsub: use LEX_PATLIST flag to track when we are reading a
+ case pattern list so `|' doesn't turn on the LES_RESWDOK flag
+ - parse_comsub: case_level: simple counter to count the number of esacs
+ we need to see before we're no longer in a case statement; analog of
+ esacs_needed_count from the lexer
+
+ 2/19
+ ----
+parse.y
+ - CHECK_FOR_RESERVED_WORD: don't return ESAC if we read `esac' after a
+ left paren in a case pattern list. From an austingroup-bugs discussion
+ about https://www.austingroupbugs.net/view.php?id=1454
+ - parse_comsub: if we read a `(' while looking for a case pattern list
+ and LEX_CKESAC is set, we have a leading left paren in the pattern
+ list and should turn off LEX_CKESAC so (esac) doesn't prematurely
+ terminate the case command. From an austingroup-bugs discussion
+ about https://www.austingroupbugs.net/view.php?id=1454
+
+ 2/26
+ ----
+builtins/history.def
+ - history_builtin: when checking negative offsets to -d, which are
+ supposed to count back from the end of the history list, check the
+ range against 0 instead of history_base, because the calculation is
+ done against history_length, which is independent of history_base.
+ Report and fix from Christopher Gurnee <chris@gurneeconsulting.net>
+
+ 2/28
+ ----
+doc/bashref.texi
+ - replaced a number of uses of @var with a mixture of @env and @dfn
+ to better match up with the texinfo standards
+
+doc/{bash.1,bashref.texi}
+ - clarify some aspects of the coproc description, especially the
+ use of NAME and when it's optional
+
+ 3/1
+ ---
+subst.c
+ - read_comsub: fix off-by-one error in mbrtowc that causes a read one
+ character past the end of buf. Report and fix from
+ Platon Pronko <platon7pronko@gmail.com> in
+ https://savannah.gnu.org/patch/?10035
+
+ 3/3
+ ---
+builtins/ulimit.def
+ - ulimit_builtin: Posix compatibility: if the last command specified
+ by an option does not have an option argument, but there is an
+ operand remaining after all the options are parsed, treat the
+ operand as an argument to that last command. From an austin-group
+ discussion and a Geoff Clare suggestion back in November, 2020.
+ Austin Group interpretation 1418
+
+examples/shellmath
+ - a package of shell functions to perform floating-point math entirely
+ in bash. Contributed by Michael Wood <mawood20@gmail.com>. Available
+ at https://github.com/clarity20/shellmath
+
+ 3/4
+ ---
+support/shobj-conf
+ - darwin: take out the -arch-only option in SHOBJ_XLDFLAGS and
+ SHOBJ_ARCHFLAGS; no longer needed
+
+doc/{bash.1,bashref.texi}
+ - coprocesses: suggested changes from rms@gnu.org; recommend the
+ `coproc NAME { commands; }' form as the simplest and most flexible
+
+ 3/5
+ ---
+builtins/exec.def
+ - exec_builtin: set last_command_exit_value before calling exit_shell
+ so any exit trap gets the right value for $?. From Matthew Bauer
+ <mjbauer95@gmail.com> via https://savannah.gnu.org/patch/?10039
+
+ 3/8
+ ---
+include/timer.h
+ - SHTIMER_ALRMSET: new flag, indicates that there is an active alarm
+ associated with this timer (falarm() was called)
+
+lib/sh/timers.c
+ - shtimer_set: set the SHTIMER_ALRMSET flag after calling falarm
+ - shtimer_unset: don't call falarm(0,0) unless the SHTIMER_ALRMSET flag
+ is set
+
+ 3/9
+ ---
+include/posixtime.h
+ - added some BSD convenience defines if they are not present
+
+parse.y,shell.h
+ - {save,restore}_parser_state: save and restore shell_eof_token and
+ pushed_string_list; change callers (e.g., xparse_dolparen) so they
+ don't have to manage them
+
+ 3/10
+ ----
+builtins/common.h
+ - extern declarations for moving to timers (sh_timer) for read builtin
+ timeouts
+
+quit.h
+ - CHECK_ALRM: remove, no longer used
+
+trap.c
+ - check_signals: call check_read_timeout instead of CHECK_ALRM
+
+bashline.c
+ - bash_event_hook: use read_timeout instead of checking `sigalrm_seen';
+ that no longer exists
+ - bash_event_hook: accommodate readline timing out (not used yet)
+
+lib/sh/zread.c
+ - zread: call read_builtin_timeout() to check for a timeout before
+ calling a blocking read()
+
+builtins/read.def
+ - sigalrm,reset_timeout,check_read_timeout,read_builtin_timeout: new
+ and modified functions to use sh_timers for timeouts instead of
+ SIGALRM. Based on work contributed by Koichi Murase
+ <myoga.murase@gmail.com>
+ - read_builtin: use sh_timers for read timeouts (-t N) instead of
+ using SIGALRM
+ - edit_line: simulate receiving SIGALRM if readline times out (not
+ used yet)
+
+ 3/11
+ ----
+lib/readline/readline.c
+ - rl_initialize: call _rl_timeout_init to set things up for any timeout
+ that was set with rl_set_timeout
+ - readline_internal_charloop: if we longjmped because of a timeout,
+ make sure to set rl_done/RL_STATE_DONE and return; we are
+ abandoning this call to readline(). The readline timeout changes
+ were based on work contributed by Koichi Murase
+ <myoga.murase@gmail.com>
+
+lib/readline/readline.h
+ - extern declarations for new timeout functions and hook
+ - rl_clear_timeout: new define
+
+lib/readline/callback.c
+ - rl_callback_read_char: if we longjmped because of a timeout,
+ make sure to set rl_done/RL_STATE_DONE and return; we are
+ abandoning this call to readline()
+
+lib/readline/util.c
+ - _rl_abort_internal: if we time out, don't ring the bell; let the
+ caller handle it
+
+lib/readline/input.c
+ - extern declarations for public and readline-library-private functions
+ and hooks to implement timeouts
+ - rl_set_timeout,rl_timeout_remaining: new public functions
+ - _rl_timeout_select: new function, uses select/pselect to implement
+ read timeouts that take timeouts set with rl_set_timeout into account;
+ calling hook function if a timeout occurs
+ - rl_gather_tyi, _rl_input_available: use _rl_timeout_select, taking
+ any existing timeout into consideration if it expires before the
+ timeout passed as an argument
+ - rl_getc: use _rl_timeout_select and handle any timeouts by calling
+ _rl_timehout_handle
+ - set_alarm,reset_alarm: new functions to implement timeouts using
+ SIGALRM for systems that lack a working select/pselect
+ - _rl_timeout_init: new function, sets things up for reading input
+ with a specified timeout
+ - _rl_timeout_handle: a timeout handler; calls any event hook and
+ sets up to abort the current readline() call
+ - _rl_timeout_handle_sigalrm: a timeout handler for systems using
+ SIGALRM to implement timeouts
+
+lib/readline/parens.c
+ - rl_insert_close: use _rl_timeout_select to take timeouts into account
+
+lib/readline/rlprivate.h
+ - extern declarations for readline-library-private timeout functions
+
+lib/readline/rltty.c
+ - rl_deprep_terminal: don't print a newline after the bracketed paste
+ disable sequence if we timed out
+
+lib/readline/signals.c
+ - _rl_handle_signal: if sig is SIGALRM, call _rl_timeout_handle_sigalrm()
+
+lib/readline/doc/rltech.texi
+ - rl_set_timeout,rl_timeout_remaining: document new public functions
+ - RL_STATE_TIMEOUT: document new possible state value for rl_readline_state
+ - rl_timeout_event_hook: document new hook function, called when
+ readline times out
+
+builtins/read.def
+ - read_builtin: changes to use the readline timeout functions to
+ implement timeouts with `read -e'; these use rl_set_timeout and
+ sh_timer structs together
+
+ 3/12
+ ----
+subst.c
+ - expand_string_dollar_quote: new function, expands $'...' and $"..."
+ in a string for those code paths that don't expand it themselves
+
+subst.h
+ - expand_string_dollar_quote: extern declaration
+
+parse.y
+ - read_secondary_line: if $'...' or $"..." appears in the line, call
+ expand_string_dollar_quote to expand them. This now returns new
+ memory, need to change callers
+
+make_cmd.c
+ - make_here_document: account for read_secondary_line returning newly
+ allocated memory, free `full_line' appropriately
+
+bashline.c
+ - shell_expand_line,history_and_alias_expand_line: expand $'...' and
+ $"..." in the line by calling expand_string_dollar_quote, since
+ that happens after history expansion and before alias expansion in
+ normal processing
+
+ 3/15
+ ----
+subst.c
+ - expand_string_dollar_quote: fix out-of-order initialization
+
+Makefile.in
+ - {TAGS,tags}: add ETAGS/ETAGSFLAGS/CTAGS/CTAGS flags; make sure to
+ cd to the source directory before running them to get source files
+ that don't have absolute paths. Fix from Mike Jonkmans
+ <bashbug@jonkmans.nl>
+
+parse.y
+ - xparse_dolparen: don't longjmp if FLAGS includes SX_NOLONGJMP. From
+ a report by Xu Lu <oliver_lew@outlook.com>
+
+ 3/16
+ ----
+subst.c
+ - process_substitute: set startup_state and parse_and_execute_level
+ to see if we can avoid a fork()
+
+bashline.c
+ - bash_spell_correct_word: bindable command (spell-correct-word) to
+ perform spelling correction on the current `shellword', using the
+ same code as the `cdspell' option and directory spelling correction
+ during completion. Feature suggested by in 10/2020 by
+ Karl Kleinpaste <karl@kleinpaste.org>
+ - bash_spell_correct_word: bound to "C-x s" by default in emacs mode
+
+lib/readline/display.c
+ - rl_redisplay: fix redisplay problem that occurs when switching from
+ the rl-digit-argument prompt "(arg: N)" back to the regular prompt,
+ and the regular prompt contains invisible characters
+
+doc/bash.1,lib/readline/doc/rluser.texi
+ - spell-correct-word: document new function and its default binding
+
+ 3/17
+ ----
+doc/{bash.1,bashref.texi}
+ - cd: slight changes to specify that it sets PWD and OLDPWD
+ - {pushd,popd}: make it clear that these builtins use cd to change
+ the current working directory; change wording to simplify the
+ description and clarify the exit status
+
+ 3/18
+ ----
+execute_cmd.c
+ - execute_disk_command: after performing redirections, call
+ unlink_all_fifos() to remove the FIFOs created as part of
+ expanding redirections. They should have been opened by then, and
+ we're going to call shell_execve right away anyway, so we won't be
+ around to remove the FIFOs. From a report from
+ Michael Felt <aixtools@gmail.com>
+
+ 3/22
+ ----
+parse.y
+ - alias_expand_token: slight tweak to check for alias expansion: perform
+ expansion unconditionally if PST_ALEXPNEXT is set, and disable it
+ in case statement pattern lists if the previous token indicates a
+ command name is acceptable.
+ From a report by Oguz <oguzismailuysal@gmail.com>
+
+config-bot.h
+ - HAVE_MKDTEMP: fix typo
+
+ 3/25
+ ----
+lib/readline/terminal.c
+ - look in terminfo for key sequences for page up (kP) and page down
+ (kN) and bind them to history-search-{backward,forward},
+ respectively. From a patch from Xose Vazquez Perez
+ <xose.vazquez@gmail.com>
+
+ 3/30
+ ----
+doc/bashref.texi
+ - expand the node describing $"..." string translation with additional
+ details and examples
+
+ 3/31
+ ----
+misc.c
+ - rl_fetch_history: moved here from vi_mode.c
+ - rl_fetch_history: negative arguments count back from the end of
+ the history, instead of taking you to the beginning of the history
+ list
+ - rl_fetch_history: in vi mode, an out-of-range argument rings the
+ bell and doesn't change the line
+
+vi_mode.c
+ - rl_vi_fetch_history: call rl_fetch_history
+
+readline.h
+ - rl_fetch_history: new extern declaration
+
+doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
+ - rl_fetch_history: add description
+
+builtins/setattr.def
+ - show_var_attributes: if a variable's value indicates that it should
+ be ANSI-C quoted, use ansic_quote instead of sh_double_quote to
+ format the value string. From proposal by Greg Wooledge
+ <greg@wooledge.org>
+
+ 4/5
+ ---
+arrayfunc.c
+ - unbind_array_element: if FLAGS includes VA_ONEWORD, don't use
+ skipsubscript to parse the subscript, just assume the entire SUB is
+ the subcript and that it contains the closing `]', so we just want
+ everything in SUB except the last character.
+
+parse.y:
+ - select_command: use compound_list instead of list, like for_command.
+ Report by Greywolf <greywolf@starwolf.com>
+ - list: move this into compound_list (replacing the instance of `list'
+ in the compound_list production), remove from the grammar
+
+ 4/6
+ ---
+arrayfunc.c
+ - unbind_array_element: use VA_NOEXPAND instead of literal 1
+
+ 4/7
+ ---
+lib/readline/funmap.c
+ - default_funmap: add missing `vi-undo' to the list of vi-mode bindable
+ functions. Reported by Xirui Zhao <quinean@icloud.com>
+
+ 4/8
+ ---
+
+config-top.h
+ - DEFAULT_LOADABLE_BUILTINS_PATH: default value for BASH_LOADABLES_PATH
+
+doc/{bash.1,bashref.texi}
+ - enable: note that it uses $BASH_LOADABLES_PATH, and that the default
+ is system-dependent
+
+variables.c
+ - initialize_shell_variables: initialize BASH_LOADABLES_PATH to the
+ default given in DEFAULT_LOADABLE_BUILTINS_PATH
+
+ 4/12
+ ----
+doc/{bash.1,bashref.texi}
+ - add link to git master tar file as a place to get the current version
+
+ 4/14
+ ----
+bashline.c
+ - attempt_shell_completion: use -1 as a sentinel value for
+ in_command_position indicating that we cannot be in a command position
+ (e.g., because we're the target of a redirection) and should not
+ check for a programmable command completion or tell the programmable
+ completion code to use command completion. Report and fix from
+ Marc Aurèle La France <tsi@tuyoix.net>
+
+ 4/16
+ ----
+builtins/bind.def
+ - bind_builtin: reverse sense of strvec_search return value when
+ deciding whether or not to remove a unix-command binding from the
+ cmd keymap. Bug report by Dale Sedivec <dale@codefu.org>
+
+lib/readline/doc/rltech.texi
+ - RL_PROMPT_{START,END}_IGNORE: document current values of \001 and
+ \002. Report from Mingye Wang <arthur200126@gmail.com>
+
+ 4/19
+ ----
+arrayfunc.c
+ - assign_assoc_from_kvlist: fix memory leak reported by konsolebox
+ <konsolebox@gmail.com>
+
+ 4/20
+ ----
+command.h,subst.c
+ - W_ITILDE: remove, replace with a variable since it's only used inside
+ a single call to expand_word_internal
+
+ 4/21
+ ----
+{subst.c,make_cmd.c,parse.y}
+ - W_DQUOTE: no longer used, use W_NOPROCSUB and W_NOTILDE directly
+ (for arithmetic commands and words in arithmetic for commands)
+
+ 4/24
+ ----
+bashline.c
+ - executable_completion: since this function gets an unquoted filename
+ from rl_filename_completion_function, we need to quote special
+ characters before passing it to bash_directory_completion_hook.
+ Report from Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com>
+
+ 4/26
+ ----
+lib/readline/search.c
+ - _rl_nsearch_abort: move function calls around so _rl_restore_prompt
+ happens before rl_clear_message, like when aborting an incremental
+ search. Suggested by sparrowhawk996@gmail.com
+
+subst.h
+ - ASS_ALLOWALLSUB: new assignment flag value, means to allow @ and * as
+ valid array subscripts when assigning to existing associative arrays
+
+arrayfunc.c
+ - assign_array_element: allow assignment of key `@' to an existing
+ associative array if the caller passes ASS_ALLOWALLSUB
+ - assign_compound_array_list: allow ( [@]=value ) to an existing
+ associative array
+
+builtins/declare.def
+ - declare_internal: allow assignment of key `@' to an existing
+ associative array by passing ASS_ALLOWALLSUB to assign_array_element
+ as part of local_aflags. This affects declare, local, and typeset
+
+subst.c
+ - do_assignment_internal: allow a[@]=value to an existing associative
+ array by passing ASS_ALLOWALLSUB to assign_array_element
+
+ 4/27
+ ----
+builtins/common.[ch]
+ - builtin_bind_var_to_int: wrapper for bind_var_to_int to be used by
+ builtin commands; placeholder for future work
+
+builtins/wait.def
+ - builtin_bind_var_to_int: use instead of bind_var_to_int
+
+builtins/common.c
+ - builtin_bind_variable: allow assignment of key `@' to an existing
+ associative array by passing ASS_ALLOWALLSUB to assign_array_element.
+ This affects printf and read
+
+builtins/variables.[ch]
+ - bind_var_to_int: add third `flags' argument to pass to bind_variable
+ instead of always passing 0
+
+redir.c,builtins/common.c,builtins/printf.def
+ - bind_var_to_int: change callers, add third flags argument
+
+builtins/common.c
+ - builtin_bind_var_to_int: pass ASS_ALLOWALLSUB to bind_var_to_int so
+ builtins like wait can assign to assoc[@] and assoc[*]
+
+ 4/28
+ ----
+bashline.c
+ - command_word_completion_function: make sure to initialize
+ old_glob_ignore_case before trying to restore from it
+ - command_word_completion_function: if we are completing a glob
+ pattern, make sure to set rl_filename_completion_desired, so we get
+ quoting and appending -- we are completing a filename, after all.
+ From a report from Manuel Boni <ziosombrero@gmail.com>
+
+lib/readline/bind.c
+ - enable-active-region: separate control of the active region and
+ bracketed paste. Still set to the same default value as bracketed
+ paste, and enabling bracketed paste enables the active region.
+ Now you can enable bracketed paste and then turn off the active
+ region.
+
+doc/bash.1,lib/readline/doc/{readline.3,rltech.texi}
+ - enable-active-region: document new bindable readline variable and
+ its effects
+
+ 4/30
+ ----
+command.h
+ - W_ARRAYREF: new flag, meaning the word is a valid array reference
+ with subscript, replaces W_DOLLARSTAR, which was unused
+
+subst.c
+ - expand_subscript_string,expand_array_subscript: new functions to
+ parse and expand-and-quote array subscripts. For future use
+
+ 5/3
+ ---
+builtins/mapfile.def
+ - mapfile: if the delimiter is a newline, set unbuffered_read = 1
+ for any file descriptor that isn't seekable and lseek sets errno
+ to ESPIPE (pipes, FIFOs, maybe terminal devices). If it's not a
+ newline, only allow buffered reads if the file descriptor is a
+ regular file. Report from Koichi Murase <myoga.murase@gmail.com>
+
+builtins/read.def
+ - read_builtin: only set unbuffered_read = 1 if the input is coming
+ from a pipe (which we can't seek on) or the input is a terminal and
+ we want to read a specified number of characters or we're using a
+ non-standard delimiter
+
+ 5/4
+ ---
+
+builtins/mapfile.def
+ - mapfile: call zsyncfd before calling the callback. Suggested by
+ Koichi Murase <myoga.murase@gmail.com>; we'll see how it goes
+
+ 5/5
+ ---
+subst.h
+ - expand_subscript_string: extern declaration
+
+{arrayfunc,subst}.c
+ - expand_subscript_string: replace expand_assignment_string_to_string
+ with calls to this when expanding array subscripts
+
+subst.c
+ - cond_expand_word: call expand_word_internal with Q_ARITH if `special'
+ says we should quote for an arithmetic expression context
+ - expand_word_internal: call expand_array_subscript when we see `[' in
+ arithmetic or array subscript contexts, make conditional on the
+ compatibility level later
+ - expand_word_internal: make sure W_ARRAYREF makes it through this
+ function and into the returned word
+
+ 5/6
+ ---
+
+arrayfunc.c
+ - array_expand_index: call evalexp with a flag of 0 since we call
+ expand_arith_string with Q_ARITH and we want evalexp to remove
+ the quotes
+
+execute_cmd.c
+ - eval_arith_for_expr,execute_arith_command: now that Q_ARITH has an
+ effect on array subscripts (it quotes the special expansion
+ characters), call evalexp with 0 as the flags arg so quote removal
+ is performed on this quoted argument. Make this conditional on the
+ shell compatibility level later
+ - execute_cond_command: make sure to expand the argument to -v by
+ calling cond_expand_node with Q_ARITH, and correspondingly turn off
+ assoc_expand_once when calling unary_test with that argument, since
+ we want it to be expanded again to remove the quotes
+ - execute_cond_command: expand the arguments to the arithmetic operators
+ with Q_ARITH and pass TEST_ARITHEXP to binary_test to ensure that
+ it lets evalexp expand the arguments to remove the quoting
+
+test.c
+ - arithcomp: if TEST_ARITHEXP is in FLAGS, call evalexp with a flag
+ if 0 to force evalexp to expand the arguments to remove the quoting
+
+subst.c
+ - param_expand: since we call expand_arith_string with Q_ARITH, we need
+ to call evalexp with 0 instead of EXP_EXPANDED for $((...)) expansion
+ - expand_word_internal: if we recursively call expand_word_internal to
+ expand the contents of a double-quoted string, make sure we pass
+ through Q_ARITH if it appears in QUOTED
+ - verify_substring_values: call expand_arith_string with Q_ARITH and
+ correspondingly call evalexp with 0 instead of EXP_EXPANDED
+
+execute_cmd.c
+ - execute_cond_node: if -v is the operator, and the operand is a valid
+ array reference, pass TEST_ARRAYEXP flag to unary_test
+
+ 5/7
+ ---
+builtins/common.[ch]
+ - set_expand_once: set array_expand_once to the value passed as the
+ first argument, returning the original value
+
+builtins.h
+ - ARRAYREF_BUILTIN: new flag for shell builtins, means that the builtin
+ can take array references, with subscripts, as arguments
+
+builtins/mkbuiltins.c
+ - set ARRAYREF_BUILTIN flag on builtins given in the arrayvar_builtins
+ array
+
+execute_cmd.c
+ - execute_cond_node: use set_expand_once to set array_expand_once to 0
+ before calling unary_test with -v (see change from 5/6)
+
+arrayfunc.c
+ - unbind_array_element: allow the caller to choose whether or not a
+ subscript of `*' or `@' unsets the entire array by passing
+ VA_ALLOWALL in FLAGS. Right now, since the unset builtin doesn't
+ pass VA_ALLOWALL, those subscripts unset individual elements for
+ associative arrays. We preserve the old behavior of unsetting
+ indexed arrays for the time being with new indexed-array-specific
+ code
+
+ 5/9
+ ---
+
+builtins/shopt.def
+ - expand_once_flag: "assoc_expand_once" option now sets this flag,
+ calls set_assoc_expand on change
+ - set_assoc_expand: sets assoc_expand_once to mirror expand_once_flag;
+ placeholder for future changes
+
+builtins/common.h
+ - expand_once_flag: extern declaration
+
+ 5/10
+ ----
+doc/{bash.1,bashref.texi}
+ - note that case patterns undergo quote removal. Reported by
+ AlvinSeville7cf <alvinseville7cf@gmail.com>
+
+ 5/11
+ ----
+
+builtins/bashgetopt.c
+ - list_optflags: flags associated with the word corresponding to
+ list_optarg, assuming list_optarg is a separate argument
+
+builtins/bashgetopt.h
+ - list_optflags: extern declaration
+
+builtins/set.def
+ - unset_builtin: set VFLAGS each time through the loop, since we take
+ whether or not the word has W_ARRAYREF set into account
+ - unset_builtin: don't pass VA_ALLOWALL to unbind_array_element for
+ now
+
+test.c
+ - unary_test: in the -v case, use assoc_expand_once in the first call
+ to valid_array_reference ()
+
+builtins/printf.def
+ - printf_builtin: only set VA_ONEWORD if the option argument to -v has
+ W_ARRAYREF set (look at list_optflags)
+
+ 5/12
+ ----
+
+subst.c
+ - expand_array_subscript: don't quote @ or * in the expanded subscript
+ at all, even when they are the only character in the subscript. See
+ how this works out -- it might uncover places where we need to allow
+ `*' and `@' as subscripts where they are not allowed now
+
+expr.c
+ - expr_bind_variable: pass ASS_ALLOWALLSUB to bind_int_variable so we
+ can allow (( A[@]=value )) when A is an existing associative array
+
+arrayfunc.h
+ - AV_ATSTARKEYS: new flag value, means to accept a[@] and a[*] but
+ treat them as keys/expressions and not special values
+
+arrayfunc.c
+ - array_value_internal: check AV_ATSTARKEYS and don't treat them as
+ ALL_ELEMENT_SUB values; they fall through to use as keys/indices
+
+test.c
+ - unary_test: if -v is passed an array reference, add AV_ATSTARKEYS to
+ the flags passed to array_value so we treat @ and * as keys for an
+ existing associative array
+
+ 5/13
+ ----
+
+subst.c
+ - expand_cond_word: if SPECIAL == 3 (arithmetic expression), dequote the
+ resulting WORD_LIST * as if special == 0, because we don't want to
+ quote the list for pattern matching. Report from
+ Adjudicator Darren <adjudicatordarren@protonmail.com>
+
+ 5/14
+ ----
+subst.c
+ - expand_array_subscript: add double quote (") to the list of characters
+ that are backslash-quoted in subscripts after word expansion.
+ skipsubscript treats them specially, so you have to quote them to
+ do things like `key='"' ; array[$key]=1 ; [[ -v array[$key] ]]'
+
+ 5/16
+ ----
+
+builtins/wait.def
+ - wait_builtin: if we longjmp to wait_intr_buf, call unset_waitlist if
+ we have called set_waitlist (wflags & JWAIT_WAITING). Fixes bug with
+ wait -n interrupted by a trapped signal (not SIGINT) reported by
+ Jonas Alfredsson <jonas.alfredsson@protonmail.com>
+
+jobs.c
+ - wait_sigint_cleanup: restore the old sigint handler before we longjmp
+ out by calling restore_sigint_handler()
+
+ 5/17
+ ----
+builtins/read.def
+ - bind_read_variable: now takes an additional argument, flags to pass
+ to builtin_bind_variable; change callers
+ - SET_VFLAGS: set vflags and bindflags
+ - read_builtin: call SET_VFLAGS to set vflags and bindflags from each
+ word before calling valid_array_reference and bind_read_variable
+
+builtins/common.c
+ - builtin_bind_variable: set vflags (for valid_array_reference) and
+ bindflags (for bind_variable/assign_array_element) separately for
+ clarity
+
+arrayfunc.c
+ - assign_array_element: sanity check: make sure that the subscript
+ returned by array_variable_name consumes the entire NAME, otherwise
+ flag it as a subscript error. This keeps things like
+ `KEY=' ]'; read assoc[$KEY] <<< hello' from assigning to incomplete
+ subscripts
+
+builtins/printf.def
+ - printf_builtin: if LIST_OPTFLAGS includes W_ARRAYREF, set VA_NOEXPAND
+ in VFLAGS
+
+ 5/17
+ ----
+
+lib/readline/complete.c
+ - compute_lcd_of_matches: move a couple of strlen calls out of a loop
+ in calls to mbrtowc; performance improvement only. Report and fix
+ from sparrowhawk996@gmail.com
+
+lib/readline/bind.c
+ - rl_trim_arg_from_keyseq: take a key sequence and its length and
+ return the index into the key sequence following any initial numeric
+ argument. Return -1 if there is no numeric argument (the caller is
+ expected to make sure) or if the key sequence consists *only* of
+ the numeric argument. The caller should use the remainder of the
+ key sequence to look up the desired key binding.
+
+lib/readline/readline.h
+ - rl_trim_arg_from_keyseq: extern declaration
+
+bashline.c
+ - bash_execute_unix_command: if the argument count is > 1 or we have
+ an explicit argument, call rl_trim_arg_from_keyseq to get past the
+ numeric argument and deal with the rest of the key sequence. We still
+ need a way to pass it to the invoked program or function. From
+ a report from Jesper Nygards <jesper.nygards@gmail.com>
+
+ 5/18
+ ----
+
+bashline.c
+ - bash_execute_unix_command: if the user supplied a numeric argument
+ when invoking bash_execute_unix_command, pass it to the command in
+ the READLINE_ARGUMENT variable
+
+lib/readline/readline.[ch]
+ - _rl_del_executing_keyseq: convenience function to `delete' the last
+ character added to the executing key sequence. Intended to be used
+ before calling rl_execute_next or similar functions that push input
+ back to be re-read
+
+doc/{bash.1,bashref.texi}
+ - READLINE_ARGUMENT: documented new variable available for commands
+ defined using `bind -x' keybindings
+
+lib/readline/doc/rltech.texi
+ - rl_trim_arg_from_keyseq: documented new function
+
+ 5/19
+ ----
+
+builtins/evalstring.c
+ - should_suppress_fork: suppress the fork if we're in a process
+ substitution subshell, in addition to being a simple command
+ without redirections. From a report back in 10/2020 from
+ Hyunho Cho <mug896@gmail.com>
+
+bashline.c
+ - command_word_completion_function: if we're trying to complete an
+ absolute program (one containing a slash), don't run strcmp or
+ strcasecmp on the return value from rl_filename_completion_function,
+ since that duplicates work the filename completion function already
+ does. From a report back in 1/2021 by awa54@cdak.net
+
+ 5/22
+ ----
+parse.y
+ - CHECK_FOR_RESERVED_WORD: if we are returning an ESAC and unsetting
+ PST_CASESTMT, decrement esacs_needed_count
+
+parse.y,shell.h
+ - sh_parser_state_t: save and restore esacs_needed_count and
+ expecting_in_token in the shell parser state struct and
+ save_parser_state/restore_parser_state
+
+print_cmd.c
+ - print_simple_command: don't bother to call command_print_word_list
+ with an empty list
+ - print_simple_command: don't print a space before a redirection list
+ if there weren't any command words to print
+
+ 5/24
+ ----
+
+lib/sh/input_avail.c
+ - nchars_avail: make sure SET and OSET are declared on systems with
+ select(2). Reported by Larkin Nickle <me@larbob.org>
+
+parse.y
+ - cond_term: if we read a `!' toggle CMD_INVERT_RETURN instead of
+ setting it unconditionally. Report and patch from
+ Vincent Menegaux <vincent.menegaux@gmail.com> via
+ https://savannah.gnu.org/patch/?10070
+
+ 5/25
+ ----
+doc/{bash.1,bashref.texi}
+ - test: add the ( $2 $3 ) case to the description of the four-argument
+ behavior. Inspired by a discussion with Christoph Anton Mitterer
+ <calestyo@scientia.net>
+
+ 5/27
+ ----
+doc/bashref.texi
+ - replace most of the GNU parallel section with a reference to the
+ tutorial on gnu.org
+
+lib/glob/glob.h
+ - GX_NEGATE: new flag; indicates whether the pattern is being negated
+ as part of an extglob pattern. Not used yet
+
+lib/glob/glob.c
+ - extglob_skipname,wextglob_skipname: pass GX_NEGATE to the skipname
+ functions if the pattern is being negated. Not checked yet
+
+ 5/28
+ ----
+doc/{bash.1,bashref.texi}
+ - dotglob: add text to clarify that `.' and `..' have to be matched by
+ a pattern beginning with `.' or -- and this is the sketchy part --
+ that a pattern beginning with `.' has to be one of the patterns in
+ an extended glob expression
+
+lib/glob/glob.c
+ - skipname,wskipname: perform the special checks for `.' only if the
+ pattern is not being negated
+
+ 6/3
+ ---
+parse.y,shell.h
+ - eol_ungetc_lookahead: save and restore as part of the parser state
+ included in {save,restore}_parser_state
+
+ 6/7
+ ---
+lib/readline/display.c
+ - puts_face: make sure to cast each member of STR to unsigned char, so
+ it's not misinterpreted as EOF, which putc_face does not display.
+ Report and fix from Volodymyr Prodan <vovcat@gmail.com> in
+ https://savannah.gnu.org/patch/?10076
+
+examples/shobj-conf
+ - aix*gcc: change SHOBJ_LD to ${CC}, prefix the SHOBJ_LDFLAGS flags
+ with -Wl, so gcc will pass them to the linker. Report from
+ lehel@maxer.hu in https://savannah.gnu.org/support/?110505
+
+ 6/11
+ ----
+doc/{bash.1,bashref.texi}
+ - cd: additional arguments are not ignored; they raise an error.
+ Report from Douglas McIlroy <douglas.mcilroy@dartmouth.edu>
+
+lib/glob/strmatch.h
+ - FNM_DOTDOT: enable special handling for `.' and `..': if FNM_PERIOD
+ is not set, `.' and `..' at the start of a string or as a pathname
+ component need to be matched by a `.' in the pattern and cannot be
+ matched by `?', `*', or a bracket expression
+
+lib/glob/glob.c
+ - glob_vector: pass FNM_DOTDOT to strmatch() if noglob_dot_filenames
+ is not set to enable special handling of `.' and `..'. Prompted by a
+ discussion with Nora Platiel <nplatiel@gmx.us>
+ - skipname,wskipname: remove special checks for `.' and (disabled)
+ checks for `..'
+
+lib/glob/sm_loop.c
+ - GMATCH: implement special handling for FNM_DOTDOT and `.' and `..':
+ make sure they can't be matched by any special glob characters at
+ the start of the string or as a pathname component (if FNM_PATHNAME
+ is set). This also means that !(pattern) won't return `.' or `..'
+ if dotglob is set
+ - GMATCH,EXTMATCH: don't pass FNM_DOTDOT down to recursive calls, like
+ FNM_PERIOD, once we process the first character in the string or
+ pathname component
+
+lib/glob/smatch.c
+ - ISDIRSEP,PATHSEP,SDOT_OR_DOTDOT,PDOT_OR_DOTDOT: provide definitions
+ for single-byte or wide character strings for sm_loop.c to use
+
+ 6/16
+ ----
+
+doc/{bash.1,bashref.texi},lib/readline/doc/{rluser,rltech}.texi
+ - slight wording changes to rewrite gender-specific language. From a
+ report by Vipul Kumar <kumar+bug-bash@onenetbeyond.org>, suggested
+ language from G. Branden Robinson <g.branden.robinson@gmail.com>,
+ Lawrence Velázquez <vq@larryv.me>,
+ and Andrew Church <achurch+bash@achurch.org>
+
+builtins/fc.def
+ - fc_builtin: make sure an entry in the history list is non-null
+ before trying to write it to stdout or the temporary file. From a
+ report from Sibo Dong <sibo.dong@outlook.com>
+
+builtins/common.[ch]
+ - builtin_arrayref_flags: given a WORD_DESC * (which includes flags)
+ and a base set of flags, return a set of flags to pass to
+ valid_array_reference and similar functions
+
+builtins/set.def
+ - unset_builtin: call builtin_arrayref_flags to set vflags
+
+ 6/19
+ ----
+
+parse.y
+ - parse_comsub: rewrite to recursively call the parser (yyparse()) and
+ return a string constructed from the resulting parse tree. Probably
+ will only work with bison. Error reporting is more accurate about
+ line numbers and invalid tokens, and command substitution errors
+ are caught earlier, before expansion
+ - DOLPAREN: new token, never created by yylex; only ever set by
+ parse_comsub and xparse_dolparen to indicate we're recursively
+ calling the parser for a command substitution
+ - comsub: new grammar production that's triggered by DOLPAREN and
+ parses a command substitution, returning a <command>. It's one of
+ the possible end states for the top-level parser
+ - grammar: only call rewind_input_string if the shell's input is
+ coming from a string
+ - shell_ungets: push a string back onto the shell input; only used by
+ make_here_document for backwards compatibility -- allowing a here-
+ document to be terminated by a token at the end of a command
+ substitution
+ - yylex: don't need any more special handling when returning
+ shell_eof_token, but we keep the clause for future work
+ - read_token_word: don't handle backslashes (leave them in the input
+ stream) if we are reading a command substitution (PST_NOEXPAND)
+ - reserved_word_acceptable: allow reserved words after DOLPAREN
+ - report_syntax_error: better error handling if we hit EOF while
+ looking for the ending right paren in a command substitution
+ - parse_string_to_word_list,parse_compound_assignment: make sure to
+ turn off parse_comsub sentinel temporarily
+
+make_cmd.c
+ - make_here_document: backwards compatibility: if we end a here
+ document on the same line as the end of a command substitution,
+ allow the token to terminate the here document (without requiring
+ a newline) and push the remainder of the line back for the parser
+ to consume and terminate the command substitution
+
+builtins/evalstring.c
+ - parse_string: if we read shell_eof_token and use it to terminate a
+ command, rewind the input string here before returning, instead of
+ guessing where to rewind it in the caller
+
+ 6/22
+ ----
+
+redir.c
+ - do_redirection_internal: if VARASSIGN_REDIR_AUTOCLOSE is non-zero,
+ add a redirect to automatically close {var}<fn and other styles of
+ varassign redirection. It's zero by default
+
+builtins/shopt.def
+ - varredir_close: new shell option, mirrors the value of
+ varassign_redir_autoclose. Suggested multiple times by multiple
+ people
+
+doc/{bash.1,bashref.texi}
+ - varredir_close: document new shell option (the name is tentative)
+
+ 6/24
+ ----
+
+parse.y
+ - yylex: if read_token returns a value < 0, return YYerror to the
+ parser
+ - parse_comsub: if the current_token is not shell_eof_token when
+ yyparse returns, return an error to read_token_word instead of
+ trying to keep parsing. Fixes interactive-only (?) bug reported by
+ Koichi Murase <myoga.murase@gmail.com>
+
+parser.h
+ - PST_NOERROR: don't print error messages in yyerror(), just reset
+ the parser and return
+
+parse.y
+ - yyerror: if parser_state & PST_NOERROR, don't print an error message
+ - xparse_dolparen: if the flags includes SX_COMPLETE, add PST_NOERROR
+ to parser_state, to inhibit error messages. Fixes bug with adding
+ lines with incomplete command substitutions to the history list
+ reported by Koichi Murase <myoga.murase@gmail.com>
+
+subst.c
+ - skip_matched_pair: make sure to pass the SX_COMPLETE flag to
+ extract_delimited_string
+
+ 6/28
+ ----
+
+lib/readline/bind.c
+ - rl_trim_arg_from_keyseq: handle rl_vi_arg_digit if VI_MODE is
+ defined. Report and fix from Koichi Murase <myoga.murase@gmail.com>
+ - rl_trim_arg_from_keyseq: rework to handle case where the digit
+ argument is given as a discrete sequence of multiple rl_digit_argument
+ commands (e.g, "M-1 M-2" instead of "M-1 2"). Report and fix from
+ Koichi Murase <myoga.murase@gmail.com>
+
+subst.c
+ - pat_subst: avoid calling RESIZE_MALLOCED_BUFFER with STRLEN(s) as an
+ argument, since it ends up going into a loop. Report and fix from
+ Koichi Murase <myoga.murase@gmail.com>
+
+lib/sh/casemod.c
+ - cval: take the string length as an argument, to avoid having to call
+ strlen every time (in HANDLE_MULTIBYTE mode). The caller already has
+ this info. Report and fix from Koichi Murase <myoga.murase@gmail.com>
+
+builtins/complete.def
+ - print_cmd_name: single-quote the command name if it contains any
+ shell metacharacters
+ - print_one_completion: call print_arg with a second arg of 1 if the
+ function name contains shell metacharacters. Report and fix from
+ Koichi Murase <myoga.murase@gmail.com>
+
+ 6/30
+ ----
+
+configure.ac
+ - substitute BASE_CFLAGS_FOR_BUILD and STYLE_CFLAGS into Makefile
+ targets
+ - take STYLE_CFLAGS out of the CFLAGS_FOR_BUILD variable that gets
+ substituted
+ - remove STYLE_CFLAGS from CFLAGS
+ - use `:+' expansion to set variables based on whether $GCC is set
+ or null, since configure can do GCC=
+
+support/Makefile.in
+ - man2html: remove CCFLAGS_FOR_BUILD from the recipe, leaving only
+ LDFLAGS_FOR_BUILD. Report from Jay K <jayk123@hotmail.com>
+ - gen-helpfiles: remove CCFLAGS_FOR_BUILD from the recipe, leaving
+ only LDFLAGS_FOR_BUILD
+ - man2html: use $(STYLE_CFLAGS) in BASE_CCFLAGS variable for C file
+ compilation options
+
+{,builtins}/Makefile.in, lib/{sh,readline,malloc,glob}/Makefile.in
+ - use STYLE_CFLAGS so specifying CFLAGS=-g to make doesn't clutter the
+ output with warnings about parens and format strings
+
+ 7/9
+ ---
+lib/readline/search.c
+ - make_history_line_current: call _rl_free_saved_history_line to clean
+ up _rl_saved_line_from_history and get all the code that frees it
+ into one place
+
+lib/readline/misc.c
+ - _rl_free_saved_history_line: if rl_undo_list points to the data
+ member of _rl_saved_line_from_history, set it to NULL to avoid having
+ it point to freed memory, since the next thing we do now is to free
+ the undo list the data member points to
+ - _rl_start_using_history: call _rl_free_saved_history_line instead of
+ calling _rl_free_history_entry directly. Fixes memory leak reported
+ by Trung Dam <trungdam@yahoo.com>
+
+ 7/12
+ ----
+lib/readline/search.c
+ - make_history_line_current: free rl_undo_list before replacing the
+ current line with the line from history, since it is a private
+ undo list from reading the search string
+
+lib/readline/rlmbutil.h
+ - Since wchar_t/mbrtowc/wcrtomb are limited to 16 bits on Windows
+ with MSVC, start abstracting the differences using WCHAR_T/
+ MBRTOWC/WCRTOMB
+
+ 7/13
+ ----
+
+lib/readline/{complete,display,input,text,util,vi_mode}.c
+ - use WCHAR_T/MBRTOWC/WCRTOMB. Part of a set of Windows MSVC fixes
+ from sparrowhawk996@gmail.com
+
+builtins/{enable,hash,help}.def
+ - enable_builtin: use sh_chkwrite after output to check for write errors
+
+ 7/16
+ ----
+arrayfunc.c
+ - quote_compound_array_word: free SUB and VALUE after assigning from
+ sh_single_quote(). From a coverity report from
+ Siteshwar Vashisht <svashisht@redhat.com>
+
+bashhist.c
+ - bash_remove_history_range: free DISCARD_LIST after freeing its
+ elements
+
+bashline.c
+ - bash_directory_expansion: add code to free D as a separate branch,
+ though it's never hit in practice
+
+builtins/trap.def
+ - showtrap: free T even if show_default == 1 if it's a non-default
+ trap string
+
+ 7/17
+ ----
+execute_cmd.c
+ - execute_coproc: free NAME on invalid identifier error
+
+lib/glob/glob.c
+ - glob_vector: make sure NEXTLINK is allocated using malloc before
+ passing it to free()
+ - glob_filename: free RESULT before returning glob_error_return when
+ there is only a filename
+
+print_cmd.c
+ - indirection_level_string: make sure we free PS4 after calling
+ decode_prompt_string if *ps4 == 0
+
+subst.c
+ - parameter_brace_transform: if vtype == VT_VARIABLE, we need to free
+ a non-null VAL
+
+variables.c
+ - assign_in_env: if NAME is not a valid shell identifier, free it
+ after printing the error message and before returning. These are
+ the rest of the fixes from Siteshwar Vashisht <svashisht@redhat.com>
+
+ 7/22
+ ----
+shell.c
+ - main: set dollar_vars[0] to shell_script_filename before calling
+ run_startup_files() in the non-interactive case. Restore it after
+ run_startup_files returns so we can get better error messages if
+ we can't open a script file. Suggested by several people, originally
+ by Marc Aurèle La France <tsi@tuyoix.net> back in 2/2021 (in a
+ different form) and most recently by Tapani Tarvainen
+ <bash@tapanitarvainen.fi>
+
+ 7/28
+ ----
+trap.c
+ - any_signals_trapped: return that a signal is trapped only if it's
+ not ignored. This is an additional opportunity for optimization,
+ reported in https://bugzilla.redhat.com/show_bug.cgi?id=1981926
+
+ 7/30
+ ----
+examples/loadables/sleep.c
+ - main: if the uconvert conversion fails, but the argument appears to
+ contain a GNU-like interval specifier like "1m30s", return
+ EX_DISKFALLBACK so the execute_builtin code tries to run the
+ external version
+
+builtins/enable.def
+ - enable_shell_builtin: if the builtin isn't found, return EX_NOTFOUND
+ to allow the caller (enable_builtin) to react differently if it
+ wants to
+ - dyn_load_builtin: if the shared object isn't found, return EX_NOTFOUND,
+ change enable_builtin to deal with it
+ - enable_builtin: if there are no supplied options, and we attempt to
+ enable a non-existent builtin, try modifying `enable name' to the
+ equivalent of `enable -f name name' and return success if we
+ successfully load a builtin from a shared object. Proposed several
+ times, most recently by Robert Elz <kre@munnari.OZ.AU>
+
+doc/{bash.1,bashref.texi}
+ - enable: document new behavior of `enable NAME' when NAME is not a
+ current shell builtin
+
+ 8/3
+ ---
+lib/glob/sm_loop.c
+ - GMATCH: check for interrupts or terminating signals each time through
+ the loop and return FNM_NOMATCH immediately if received. Let the
+ higher layers deal with interrupting the match and jumping out.
+ Inspired by a report from andrej@podzimek.org
+
+ 8/6
+ ---
+subst.c
+ - {parameter_brace_remove_pattern,parameter_brace_transform,
+ parameter_brace_substring,parameter_brace_casemod,
+ parameter_brace_patsub}: make sure the IND argument is of type
+ arrayind_t to handle the full range of subscripts. Reported by
+ felix@f-hauri.ch
+
+builtins/printf.def
+ - printf_builtin: take new format specifier: %Q. This acts like %q
+ but applies any supplied precision to the original unquoted
+ argument, then quotes that result and outputs the entire quoted
+ string, preserving the original field width. Originally suggested
+ back in 4/2020 by Sam Liddicott <sam@liddicott.com>
+
+subst.c
+ - char_is_quoted: check whether or not we are on the second or later
+ line of a command with an unclosed quoted string from a previous
+ line. If we are, see if it's closed before the character we're
+ checking, so we don't interpret a closing quote as starting a new
+ quoted string. Reported several times, most recently by
+ Phi Debian <phi.debian@gmail.com> in 6/2021.
+
+ 8/9
+ ---
+parse.y,subst.c
+ - locale_expand: if the variable SINGLEQUOTE_TRANSLATIONS is non-zero,
+ single-quote the translated result of $"..." (if it's different from
+ the untranslated string)
+
+builtins/shopt.def
+ - noexpand_translation: new option to expose the value of
+ SINGLEQUOTE_TRANSLATIONS
+
+ 8/10
+ ----
+doc/{bash.1,bashref.texi}
+ - noexpand_translation: add description of new option
+
+ 8/16
+ ----
+builtins/printf.def
+ - printf_builtin: initialize retval after parsing arguments, since we
+ use it for the `v' option. Bug report from Keith Thompson
+ <Keith.S.Thompson@gmail.com>
+
+lib/sh/unicode.c
+ - u32tocesc: fix typo that returned \uXXXXXXXX instead of \UXXXXXXXX.
+ From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=992257 by
+ <nabijaczleweli@nabijaczleweli.xyz>
+
+ 8/17
+ ----
+siglist.c
+ - include command.h before general.h for PARAMS and prototypes. Report
+ from Osipov, Michael (LDA IT PLM) <michael.osipov@siemens.com>
+
+ 8/18
+ ----
+lib/readline/colors.c
+ - S_ISBLK: make sure it's defined before we use it, like in complete.c
+
+lib/readline/complete.c,{bashline,variables}.c
+ - minor changes to prep for making rl_completer_word_break_characters
+ `const'
+
+subst.[ch],pcomplete.c
+ - split_at_delims: the DELIMS argument is now `const'; change callers
+
+lib/readline/rlmbutil.h
+ - _rl_wcwidth: add function prototype for inline function declaration
+
+lib/readline/bind.c
+ - _rl_get_keyname: print keys greater than 160 (which are valid UTF-8)
+ as octal escape sequences
+
+lib/readline/text.c
+ - do_lowercase_version: return 99999 to prevent the linker from
+ combining it with _rl_null_function and optimizing away the separate
+ copy. That messes with function pointer comparisons. Part of this
+ batch of fixes from sparrowhawk996@gmail.com
+
+ 8/19
+ ----
+complete.c,readline.c,readline.h
+ - rl_completer_word_break_characters: now const char * like
+ rl_basic_word_break_characters; element of readline state struct
+ used to save it also const. THIS IS AN API CHANGE
+
+bashline.c
+ - orig_rl_completer_word_break_characters: now const char * like
+ rl_completer_word_break_characters
+
+ 8/20
+ ----
+bashline.c
+ - bash_directory_completion_hook: if direxpand and dirspell are both
+ set while trying to complete an absolute pathname as a command, don't
+ take a spell-corrected directory name that is shorter than the
+ original hint. https://bugzilla.redhat.com/show_bug.cgi?id=1782809
+
+builtins/common.[ch]
+ - sh_noassign: convenience function to print an error message when a
+ user attempts an assignment to a "noassign" variable. Not used yet
+
+assoc.[ch]
+ - assoc_to_kvpair_list: new function, returns a WORD_LIST containing
+ key-value pairs as separate words
+
+array.[ch]
+ - array_to_kvpair_list: new function, returns a WORD_LIST containing
+ index-value pairs as separate words
+
+subst.c
+ - string_transform: handle '@k' transform like '@K'
+ - valid_parameter_transform: 'k' is a valid transform operator
+ - array_transform: handle '@k' transformation by calling one of
+ array_to_kvpair_list or assoc_to_kvpair_list and treating the
+ result as if expanding the array depending on whether the index is
+ `@' or `*' with the usual meanings
+
+doc/{bash.1,bashref.texi}
+ - document new '@k' parameter transformation operator
+
+ 8/27
+ ----
+lib/readline/kill.c
+ - rl_unix_filename_rubout: handle pathnames that consist only of one
+ or more slashes. The old code went too far and deleted the previous
+ word as well. From dabe@dabe.com
+
+ 8/31
+ ----
+parse.y
+ - STRING_SAVER: now save and restore shell_input_line_len; not sure
+ why it wasn't done before; fix push_string and pop_string accordingly
+ - prompt_again: now takes a parameter FORCE; not used yet (every
+ caller passes 0), needs more thought
+
+builtins/evalstring.h
+ - open_redir_file: broke code that expands the redirection and opens
+ the resultant filename into a new function, called from cat_file
+
+redir.h
+ - open_redir_file: extern declaration here for now
+
+builtins/evalstring.c
+ - parse_string: takes a new argument: COMMAND **cmdp; if non-null, saves
+ the parsed command to *cmdp and lets the caller manage it itself.
+ global_command is still not modified. Changed callers in parse.y
+
+ 9/1
+ ---
+parse.y
+ - parse_string_to_command: stripped-down version of xparse_dolparen
+ that takes a string, runs it through the parser, and returns the
+ resultant COMMAND *; uses parse_string with the new argument
+
+externs.h
+ - parse_string_to_command: extern declaration
+
+builtins/evalstring.c
+ - can_optimize_cat_file: new function, takes a COMMAND * argument and
+ returns true if the command can be optimized like $(<file); changed
+ parse_and_execute to call it
+
+subst.c
+ - optimize_cat_file: new function, optimizes $(<file) without creating
+ a new process. Uses redir_open to open the redirection file, after
+ expansion, and calls read_comsub to read from it directly
+ - read_comsub: now reads into a 4096 byte buffer (COMSUB_PIPEBUF)
+ - command_substitute: if the string begins with a `<' and isn't followed
+ by any of "<>&", see if we can optimize the command and call
+ optimize_cat_file to do it if we can.
+
+ 9/2
+ ---
+configure.ac,config.h.in,lib/sh/setlinebuf.c
+ - SETVBUF_REVERSED: remove all references
+
+configure.ac,aclocal.m4
+ - AC_OUTPUT: move created files and commands to AC_CONFIG_FILES and
+ AC_CONFIG_COMMANDS; call AC_OUTPUT without any arguments
+ - require autoconf version 2.63
+ - AC_HELP_STRING -> AS_HELP_STRING
+ - replace references to $ac_cv_prog_gcc with $GCC
+ - AC_C_LONG_DOUBLE -> AC_TYPE_LONG_DOUBLE
+ - enable-alt-array-implementation: new configure option, placeholder
+ for later
+
+unwind_prot.c
+ - stddef.h: include if HAVE_STDDEF_H is defined, not STDC_HEADERS
+
+bashansi.h
+ - memory.h: don't include any more; assume <string.h> has all the
+ necessary defines
+
+aclocal.m4
+ - AC_HEADER_STDC: remove AC_REQUIRE calls to this; change tests to use
+ appropriate checks instead of STDC_HEADERS
+
+ 9/3
+ ---
+configure.ac,config.h.in
+ - AC_TYPE_SIGNAL,BASH_TYPE_SIGHANDLER: remove calls, remove mention of
+ RETSIGTYPE and VOID_SIGHANDLER
+ - AC_USE_SYSTEM_EXTENSIONS: use this instead of AC_ISC_POSIX (which is
+ well and truly obsolete) and AC_MINIX (which just calls it anyway).
+ All the right defines are already present
+ - AC_HEADER_TIME: removed
+ - AC_HEADER_STDC: removed
+ - AC_DECL_SYS_SIGLIST: replaced with BASH_DECL_SYS_SIGLIST
+ - BASH_FUNC_CTYPE_NONASCII: removed
+
+sig.h,lib/readline/signals.c
+ - RETSIGTYPE -> void, SIGHANDLER_RETURN -> return
+
+include/posixtime.h
+ - don't bother with TIME_WITH_SYS_TIME, just include <sys/times.h> if
+ we have it and include <time.h> unconditionally
+
+include/chartypes.h,lib/readline/chardefs.h
+ - IN_CTYPE_DOMAIN: no longer uses STDC_HEADERS define, checks against
+ CHAR_MAX for non-C89 systems, still a no-op on C89 systems
+
+lib/readline/chardefs.h
+ - memory.h: don't include, no need for STDC_HEADERS; assume the mem*
+ functions are defined in <string.h> as in C89
+ - now that we assume IN_CTYPE_DOMAIN bounds its argument to unsigned
+ chars, we don't need NON_NEGATIVE checks at all
+
+lib/readline/chardefs.h,util.c
+ - ALPHABETIC -> _rl_alphabetic_p
+
+ 9/8
+ ---
+
+lib/sh/strftime.c
+ - include <posixtime.h> after reworking above; include <sys/types.h>
+ unconditionally in case it defines time_t. From a report by
+ Ori Sky Farrell <bash@ori.mx>
+
+ 9/9
+ ---
+lib/readline/search.c
+ - rl_history_search_internal: set rl_undo_list to NULL after calling
+ rl_maybe_save_line, since it will be restored one way or another
+ after the search completes, and we don't want it to be freed twice
+ - rl_history_search_internal: leave the current history offset at the
+ position of the last matching history entry. This means that things
+ like ^P will start back from that history entry, ^N will move
+ forward from there, and operate-and-get-next will work like it does
+ with incremental searches. Reported by Vandrus Zoltán
+ <vandrus.zoltan@gmail.com>
+
+ 9/10
+ ----
+aclocal.m4
+ - BASH_C_LONG_LONG: removed
+ - BASH_TYPE_LONG_DOUBLE: removed
+ - BASH_TYPE_LONG_LONG,BASH_TYPE_UNSIGNED_LONG_LONG: removed
+ - BASH_FUNC_CTYPE_NONASCII: removed
+ - BASH_SYS_SIGNAL_VINTAGE,BASH_SYS_REINSTALL_SIGHANDLERS: don't
+ require AC_TYPE_SIGNAL, use void instead of RETSIGTYPE
+ - BASH_TYPE_SIGHANDLER: removed
+
+configure.ac,aclocal.m4,config.h.in
+ - BASH_TYPE_LONG_LONG: removed, call AC_TYPE_LONG_LONG_INT directly,
+ change #define to HAVE_LONG_LONG_INT
+ - BASH_TYPE_UNSIGNED_LONG_LONG: removed, call AC_TYPE_UNSIGNED_LONG_LONG_INT
+ directly, change #define to HAVE_UNSIGNED_LONG_LONG_INT
+
+externs.h,include/typemax.h,lib/sh/{fmtullong,snprintf,strtoimax,strtoll,
+strtoull,strtoumax}.c
+ - HAVE_LONG_LONG -> HAVE_LONG_LONG_INT
+ - HAVE_UNSIGNED_LONG_LONG -> HAVE_UNSIGNED_LONG_LONG_INT
+
+configure.ac
+ - AC_TRY_COMPILE -> AC_COMPILE_IFELSE
+ - BASH_CHECK_TYPE (intmax_t) -> AC_TYPE_INTMAX_T
+ - BASH_CHECK_TYPE (uintmax_t) -> AC_TYPE_UINTMAX_T
+ - BASH_CHECK_TYPE (sig_atomic_t): removed
+
+aclocal.m4
+ - BASH_FUNC_STRSIGNAL: changed to use AC_LINK_IFELSE
+ - BASH_FUNC_LSTAT: changed to use AC_LINK_IFELSE
+ - BASH_FUNC_SBRK: changed to use AC_LINK_IFELSE and AC_RUN_IFELSE,
+ fixed typo
+ - BASH_CHECK_SPEED_T: changed to use AC_COMPILE_IFELSE
+ - BASH_TYPE_SIG_ATOMIC_T: use BASH_CHECK_TYPE instead of AC_CHECK_TYPE
+ - BASH_STRUCT_DIRENT: new macro, like _AC_STRUCT_DIRENT but public and
+ sets a different bash-specific shell variable
+ - BASH_STRUCT_DIRENT_D_{INO,FILENO,NAMLEN}: call BASH_STRUCT_DIRENT
+ with a different first argument instead of using inline code and
+ AC_TRY_COMPILE
+
+ 9/11
+ ----
+[prayers for the victims of 9/11/2001]
+
+aclocal.m4
+ - BASH_CHECK_DECL: just call AC_CHECK_DECLS and use the default
+ includes, which includes the files we used to specify
+ - BASH_FUNC_INET_ATON: changed to use AC_LINK_IFELSE
+ - BASH_STRUCT_WEXITSTATUS_OFFSET: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_OPENDIR_CHECK: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_ULIMIT_MAXFDS: changed to use AC_RUN_IFELSE
+ - BASH_UNDER_SYS_SIGLIST: changed to use AC_RUN_IFELSE
+ - BASH_SYS_SIGLIST: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_DUP2_CLOEXEC_CHECK: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_GETENV: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_GETCWD: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_FNMATCH_EXTMATCH: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_POSIX_SETJMP: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_STRCOLL: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_PRINTF_A_FORMAT: changed to use AC_RUN_IFELSE
+ - BASH_SYS_PGRP_SYNC: changed to use AC_RUN_IFELSE
+ - BASH_SYS_SIGNAL_VINTAGE: changed to use AC_RUN_IFELSE
+ - BASH_SYS_NAMED_PIPES: changed to use AC_RUN_IFELSE
+ - BASH_CHECK_RTSIGS: changed to use AC_RUN_IFELSE
+ - BASH_CHECK_MULTIBYTE: changed to use AC_RUN_IFELSE
+ - RL_LIB_READLINE_VERSION: changed to use AC_RUN_IFELSE
+ - BASH_CHECK_WCONTINUED: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_SNPRINTF: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_VSNPRINTF: changed to use AC_RUN_IFELSE
+ - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: changed to use AC_RUN_IFELSE
+ - BASH_DECL_PRINTF: changed to use AC_RUN_IFELSE
+ - BASH_TYPE_RLIMIT: rewrote to avoid quad_t, now uses AC_COMPILE_IFELSE
+ to determine whether rlim_t is available, otherwise determines the
+ value of RLIMTYPE based on sizeof(rlim.rlim_cur): int, long, or
+ long long
+ - BASH_SIZEOF_RLIMIT,BASH_SIZEOF_QUAD_T: helper macros for
+ BASH_TYPE_RLIMIT in the case that rlim_t is not present
+
+configure.ac
+ - BASH_CHECK_DECL -> AC_CHECK_DECLS
+ - quad_t: use AC_CHECK_TYPE (new style) instead of BASH_CHECK_TYPE
+
+
+ 9/14
+ ----
+execute_cmd.c
+ - time_command: if we longjmp back to the top_level we saved, make sure
+ we're in the same subshell environment before printing the timing
+ stats. We could have longjmped back from a child process of the
+ command or pipeline we want to time. From a report by
+ Sergej Alikov <sergej@alikov.com>
+ - time_command: restore command->flags even if we longjmp back
+
+general.c
+ - check_binary_file: if the first line of the ENOEXEC file starts with
+ a `#!', check the rest of the buffer for NULs to determine whether
+ this is a binary file. Since we only check the first line, a #! line
+ followed by binary data could be confused for a shell script
+
+ 9/16
+ ----
+bashjmp.h
+ - EXITBLTIN: new longjmp `code' value: used by the exit builtin
+
+{execute_cmd,shell,subst,trap}.c,builtins/evalstring.c
+ - treat EXITBLTIN exactly the same as EXITPROG (for now)
+
+builtins/exit.def
+ - exit_builtin: jump_to_top_level with value EXITBLTIN
+
+builtins/evalstring.c
+ - parse_and_execute: EXITBLTIN has its own case, with the same contents
+ as EXITPROG
+
+ 9/17
+ ----
+builtins/evalstring.c
+ - parse_and_execute: change EXITBLTIN case to avoid running the
+ unwind-protect stack to the `pe_dispose' tag (which has the effect
+ of running all the unwind-protects installed by the commands in
+ the string) if we're executing in a function and EXIT is trapped.
+ This has the effect of running the EXIT trap in the function context,
+ which is what we do when we're not in parse_and_execute (eval,
+ bash -c, command substitution, etc.)
+
+ 9/18
+ ----
+arrayfunc.c
+ - expand_and_quote_kvpair_word,quote_compound_array_word,
+ expand_and_quote_assoc_word,quote_compound_array_list: make sure
+ the value has CTLESC characters doubled even when being single-
+ quoted, since that's what the parser does with standalone assignment
+ statements. From https://savannah.gnu.org/support/?110538
+
+ 9/19
+ ----
+aclocal.m4
+ - AC_TRY_COMPILE -> AC_COMPILE_IFELSE (AC_TRY_LINK calls left to
+ modify to avoid obsolete warnings)
+ - BASH_STRUCT_WINSIZE: broke out checks for separate headers into new
+ macros, call them and work with the results; needed to avoid two
+ calls to AC_TRY_COMPILE
+ - BASH_CHECK_KERNEL_RLIMIT: avoid multiple calls to AC_TRY_COMPILE by
+ breaking basic test for RLIMIT_ defines into a separate test and
+ calling the HPUX-specific _KERNEL test only if that fails
+
+m4/gettext.m4,configure.ac
+ - AM_GNU_GETTEXT -> BASH_GNU_GETTEXT: remove deprecation warning, since
+ [no-libtool] is how we use this; rename to avoid someone's local
+ copy from overriding ours
+
+ 9/20
+ ----
+aclocal.m4
+ - BASH_CHECK_MULTIBYTE: take out code that checks for nl_langinfo(CODESET)
+ since that's already provided by AM_LANGINFO_CODESET, which is
+ called by BASH_GNU_GETTEXT. We AC_REQUIRE it here, though, to avoid
+ problems from future changes
+ - BASH_SYS_SIGNAL_VINTAGE: broke the code that checks for the different
+ signal vintages into different AC_DEFUNed macros, changed
+ BASH_SYS_SIGNAL_VINTAGE to stitch them together with shell code
+ testing the cached variables
+ - AC_TRY_LINK -> AC_LINK_IFELSE: there are no more autoconf warnings
+
+ 9/21
+ ----
+array.[ch]
+ - array_from_argv: new convenience function
+
+array.h
+ - num_elements: now an arrayind_t, since that's the type of indices, it
+ makes sense to allow that many elements
+
+ 9/22
+ ----
+lib/readline/terminal.c
+ - rl_term_kP: fix typo. Fix from Koichi Murase <myoga.murase@gmail.com>
+
+ 9/25
+ ----
+lib/readline/display.c
+ - rl_clear_visible_line: call _rl_clear_to_eol with _rl_screenwidth as
+ the argument so we clear out the entire line even if the terminal
+ doesn't have a clear-to-eol sequence; make sure to add a call to
+ rl_cr after that so we know we're always in column 0
+ - _rl_redisplay_after_sigwinch: just call rl_clear_visible_line instead
+ of erasing the last line of the display
+ - _rl_redisplay_after_sigwinch: if the prompt is longer than the screen
+ width, make sure to call _rl_reset_prompt to recalculate the
+ local_prompt_newlines array. Should fix issue from
+ https://savannah.gnu.org/support/index.php?110543
+
+redir.c
+ - do_redirection_internal: if given [N]<&WORD- or [N]>&WORD- and WORD
+ expands to null, make it identical to <&- or >&- and close file
+ descriptor N (default 0). From a discussion back in 5/2021
+
+ 9/27
+ ----
+arrayfunc.c
+ - expand_compound_array_assignment: since we run the string through
+ the parser to turn it into a list (so we can make sure all shell
+ metacharacters are properly quoted), we need to remove the CTLESC
+ the parser uses to quote CTLESC and CTLNUL in *unquoted* words.
+ The rest of the code assumes this has been done, and assumes that
+ any CTLESC characters passed to expansion are part of the original
+ word and should themselves be quoted, doubling the number of CTLESCs
+
+ 9/28
+ ----
+arrayfunc.c
+ - expand_and_quote_kvpair_word,quote_compound_array_word,
+ expand_and_quote_assoc_word,quote_compound_array_list: if we are
+ single-quoting associative array subscripts and associative and
+ indexed array values, we need to quote CTLESC characters, because
+ that's how they come out of the parser and how the assignment
+ statement code expects to see them.
+ Fixes https://savannah.gnu.org/support/index.php?110538
+
+ 9/29
+ ----
+subst.c
+ - parameter_brace_transform: invalid transformation operators are now
+ fatal errors in non-interactive shells, as with the other word
+ expansions. Reported by Martin Schulte <gnu@schrader-schulte.de> in
+ https://lists.gnu.org/archive/html/bug-bash/2020-10/msg00026.html
+
+execute_cmd.c
+ - execute_disk_command: if we're optimizing out the fork (nofork) and
+ not directly in a pipeline (pipe_in == pipe_out == NO_PIPE), only
+ modify shell_level if subshell_environment says we're not already in
+ a pipeline. Reported by Paul Smith <psmith@gnu.org> 10/11/2020
+ against GNU make
+
+evalstring.c
+ - should_suppress_fork: remove #if 1 for code that tries to suppress
+ the fork in a process substitution subshell
+
+ 9/30
+ ----
+builtins/mapfile.def
+ - do_chop: make sure we're comparing unsigned chars when checking
+ whether the delim is the last character on the line. Reported by
+ Greg Wooledge <greg@wooledge.org>
+
+ 10/1
+ ----
+lib/readline/rltty.c
+ - rl_deprep_terminal: if we're not echoing to the terminal
+ (_rl_echoing_p == 0), and we just output the bracketed paste end
+ sequence, output a newline to compensate for the \r at the end of
+ BRACK_PASTE_FINI, since redisplay didn't do it for us. Reported by
+ Siteshwar Vashisht <svashisht@redhat.com>
+
+shell.h
+ - MATCH_EXPREP: new matching flag, understood only by pattern
+ substitution; means to expand unquoted `&' in the replacement
+ STRING to the match of PATTERN
+
+subst.c
+ - shouldexp_replacement: uncommented
+ - pat_subst: we expand & in the replacement string if MATCH_EXPREP
+ appears in MFLAGS
+ - parameter_brace_patsub: push call to shouldexp_replacement out here,
+ after the replacement string is expanded; set MATCH_EXPREP if there
+ is an unquoted `&' (by backslash) in the expanded replacement
+ string
+
+doc/{bash.1,bashref.texi}
+ - pattern substitution: overhauled the description, moved each of the
+ possible forms to be tags in the tagged paragraph. The description
+ now specifies the expansions that the replacement string undergoes
+ - pattern substitution: documented new behavior of unquoted & in the
+ replacement string
+
+ 10/4
+ ----
+shell.c
+ - include <malloc/shmalloc.h> if we're debugging malloc (MALLOC_DEBUG)
+ so we can get an extern declaration of trace_malloc_stats
+
+ 10/5
+ ----
+subst.c
+ - expand_subscript_string: allocate new memory for td.word, copying
+ STRING, in case it gets freed on error by expand_word_internal.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+
+lib/malloc/malloc.c
+ - malloc_usable_size: return the allocated size instead of the chunk
+ size, since writing over the bounds checking will cause fatal errors.
+ Reported by Julien Moutinho <julm+bash@sourcephile.fr>, fix from
+ Dominique Martinet <asmadeus@codewreck.org>
+
+arrayfunc.c
+ - unbind_array_elememnt: pass (flags&VA_NOEXPAND) to skipsubscript(),
+ instead of unconditionally passing 1 if we're operating on an
+ associative array. This is consistent with how valid_array_reference
+ determines the length of the subscript.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+
+ 10/6
+ ----
+
+subst.c
+ - skip_to_delim: add a new value for FLAGS. If FLAGS&2, we assume that
+ START is one character after the opening OPEN. If not, we assume that
+ START is at OPEN, and needs to be incremented past it. Part of fix
+ from Koichi Murase <myoga.murase@gmail.com>
+
+arrayfunc.c
+ - unbind_array_element: make sure to pass FLAGS to skipsubscript with
+ bit 2 set, since we are passed a SUB index that's one past the
+ opening bracket. Rest of fix from
+ Koichi Murase <myoga.murase@gmail.com>
+ - array_variable_name: make sure we pass (FLAGS&1) to skipsubscript, so
+ we don't inadvertently pass a value with bit 2 set, which would
+ cause an off-by-one error in subscript parsing
+
+ 10/8
+ ----
+trap.c
+ - restore_traps: inverse of reset_signal_handlers. This understands
+ how reset_signal_handlers changes the signal disposition while
+ leaving the trap string in place, and knows how to restore flags
+ and state based on that preserved trap string and whether or not
+ the signal is "special" to the shell.
+
+builtins/exec.def
+ - exec_builtin: instead of using restore_original_signals to completely
+ cancel the traps, call reset_signal_handlers so the trap strings are
+ preserved. Then if the exec fails (and we're not exiting) we can
+ look at the trap strings and see how to restore the trap state.
+ This calls restore_traps after reinitializing the shell signal
+ handlers, using the trap strings saved by reset_signal_handlers.
+ Fixes issue with not exiting after a failed exec clearing the EXIT
+ trap reported by Mark March <march@systempad.org>, using the
+ approach suggested by Robert Elz <kre@munnari.OZ.AU>
+
+subst.c
+ - expand_declaration_argument: when parsing options that modify
+ attributes that affect how the value is handled (i, c, u, etc.),
+ make sure to create an option string and call make_internal_declare
+ with options that start with a `+' so the attribute is off when
+ the assignment is performed and changes how the value is expanded.
+ From a report by Léa Gris <lea.gris@noiraude.net>
+
+lib/readline/complete.c
+ - rl_display_match_list: even if _rl_completion_prefix_display_length
+ is set to a non-zero value, pass the common prefix length to
+ fnprint if we've turned on colored completion prefixes; passes
+ through to fnprint via print_filename
+ - fnprint: add the ellipsis if prefix_bytes exceeds the
+ _rl_completion_prefix_display_length, add explicit check for
+ prefix_bytes being longer since print_filename passes it through
+ if colored-completion-prefix is set. This means that while
+ completion-prefix-display-length still has precedence over
+ colored-completion-prefix, it doesn't override it if both are set
+ and the common prefix length is shorter than
+ completion-prefix-display-length. From a report by
+ Christoph Anton Mitterer <calestyo@scientia.net>
+
+ 10/10
+ -----
+parse.y
+ - parse_dparen: if the last token is FOR, increment word_top and assign
+ word_lineno like for other for loops. Fixes bug with LINENO after
+ arithmetic for commands reported by
+ Tom Coleman <thomas.james.coleman@gmail.com>
+
+ 10/11
+ -----
+execute_cmd.c
+ - shell_execve: if execve fails with ENOENT, but executable_file()
+ succeeds, display a slightly more descriptive error message. Prompted
+ by a report from Andrea Monaco <andrea.monaco@autistici.org>
+
+stringlib.c
+ - strcreplace: allow backslash to escape a backslash, since we allow it
+ to escape a `&'
+
+ 10/14
+ -----
+pcomplib.c
+ - COMPLETE_HASH_BUCKETS: double to 512
+
+stringlib.c
+ - strcreplace: the last argument is now a flags argument. 1 has its
+ previous meaning (glob); 2 means to allow backslash to escape a
+ backslash (as added on 10/11)
+
+subst.c
+ - pat_subst: call strcreplace with 2 as the flags value
+
+ 10/15
+ -----
+doc/bashref.texi
+ - updates to Installation section
+
+doc/{mkposix,mkinst,mkrbash},doc/Makefile.in
+ - changes to allow scripts to be run outside the source directory
+
+ 10/18
+ -----
+subst.c
+ - patsub_replacement: controls whether pattern substitution expands `&'
+ in the replacement string. Initialized to 1 by default
+
+ 10/19
+ -----
+doc/{bash.1,bashref.texi}
+ - document bash's WCE SIGINT behavior when job control is not enabled
+ and the shell receives a SIGINT while waiting for the foreground
+ command to complete. Added at Red Hat's request. A complete
+ discussion is at https://www.cons.org/cracauer/sigint.html
+
+ 10/25
+ -----
+builtins/shopt.def
+ - patsub_replacement: new shell option, exposes patsub_replacement
+ variable controlling whether pattern substitution expands `&' in
+ the replacement string. Still enabled by default.
+
+doc/{bash.1,bashref.texi}
+ - patsub_replacement: document new shopt option
+
+ 10/26
+ -----
+lib/readline/display.c
+ - expand_prompt: group runs of invisible characters at the right edge
+ of the screen with the previous physical characters when setting
+ local_prompt_newlines, since that's how update_line() expects to
+ get it. Fix from sparrowhawk996@gmail.com.
+
+lib/readline/macro.c
+ - rl_end_kbd_macro: make sure current_macro_index is > 0 after
+ subtracting the key sequence length, clamp it to 0 before writing
+ the ending NULL. From a fuzzing report by
+ Tillmann Osswald <tosswald@ernw.de>
+
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: in the bracketed paste case, don't assume the
+ pasted text is null-terminated, so use memcpy instead of strcpy for
+ the length of the pasted text, then make sure the search string is
+ null-terminated. From a fuzzing report by
+ Tillmann Osswald <tosswald@ernw.de>
+
+lib/readline/text.c
+ - rl_transpose_words: make sure to preserve the value of rl_end from
+ the beginning to the end of the function. From a fuzzing report by
+ Tillmann Osswald <tosswald@ernw.de>
+
+lib/readline/vi_mode.c
+ - rl_vi_delete_to,rl_vi_change_to,rl_vi_yank_to: if we are redoing a
+ command (_rl_vi_redoing == 1), save the old _rl_vimvcxt, allocate a
+ new one, and restore the old one before returning. Prevents some
+ pointer aliasing problems. From a fuzzing report by
+ Tillmann Osswald <tosswald@ernw.de>
+
+ 10/29
+ -----
+arrayfunc.c
+ - tokenize_array_reference: take valid_array_reference and add a third
+ argument (char **SUBP), which, if non-NULL, gets the null-terminated
+ subscript parsed from the NAME argument. If it's NULL, the caller
+ gets the old valid_array_reference behavior. Fix from
+ Koichi Murase <myoga.murase@gmail.com>
+ - valid_array_reference: just call tokenize_array_reference with a
+ NULL third argument
+ - unbind_array_element: assume the caller (unset_builtin) passes a
+ null-terminated SUB that's already been validated by a call to
+ tokenize_array_reference so we don't need to call skipsubscript() or
+ check VA_ONEWORD. Fix from Koichi Murase <myoga.murase@gmail.com>
+
+arrayfunc.h
+ - tokenize_array_reference: extern declaration
+
+builtins/set.def
+ - unset_builtin: use tokenize_array_reference to figure out T and pass
+ that to unbind_array_element. Fix from
+ Koichi Murase <myoga.murase@gmail.com>
+ - unset_builtin: pass non-null argument to array_variable_part to get
+ the length of the subscript (T), then cut off any final `]' before
+ passing it to unbind_array_element, since that's what it now
+ expects
+
+subst.c
+ - expand_string_for_rhs,expand_string_for_pat: assign td.word from
+ newly-allocated memory in case it gets freed on error during the
+ call to call_expand_word_internal(); free it manually when that
+ call returns
+
+ 11/1
+ ----
+findcmd.c
+ - search_for_command: if FLAGS includes CMDSRCH_STDPATH, don't look in
+ the hash table for the command name. Prompted by a report from
+ Roger Morris <roger.morris@gmail.com>
+
+aclocal.m4
+ - BASH_FUNC_POSIX_SETJMP: add a check by fetching the signal mask
+ after the siglongjmp and making sure that SIGINT is not blocked,
+ indicating we restored the original signal mask
+
+ 11/2
+ ----
+subst.c
+ - expand_string_assignment: make sure to add W_TILDEEXP to the flags so
+ expand_word_internal performs the right tilde expansion on tildes
+ following an unquoted colon. Report from Anders Kaseorg
+ <andersk@mit.edu>
+
+
+ 11/3
+ ----
+aclocal.m4
+ - BASH_FUNC_POSIX_SETJMP: if cross-compiling, default to `present' if
+ we've determined we have posix signal functions
+
+ 11/4
+ ----
+execute_cmd.c
+ - SET_LINE_NUMBER: set line_number, but don't set line_number_for_err_trap
+ if we're already running the ERR trap
+ - GET_LINE_NUMBER: evaluates to line_number_for_err_trap if we're
+ running the ERR trap and executing_line_number() otherwise
+ - execute_function: use GET_LINE_NUMBER to push the value for the line
+ number into the BASH_LINENO array
+ - execute_command_internal,execute_arith_command,execute_cond_command:
+ use SET_LINE_NUMBER to avoid overwriting line_number_for_err trap
+ while executing the ERR trap. Tentative fix for `caller' problem
+ reported by Quinn Grier <quinn@quinngrier.com>
+
+configure.ac,patchlevel.h
+ - set bash version to 5.2-devel, meaning shell_compatibility_level = 52,
+ which required updating tests (array.tests, array21.sub,
+ quotearray3.sub, new-exp10.sub, history2.sub). The first three are
+ because bash-5.2 flushes an indexed array but does not unset the
+ variable when given `unset a[@]' or `unset[*]' (that is, it acts
+ like `a=()' instead of `unset a'); the other two are because the
+ version number changed
+
+ 11/8
+ ----
+doc/Makefile.in
+ - bash.info: use `makeinfo -o' instead of calling infopost.sh to edit
+ the filename, since the tags table includes absolute byte offsets to
+ nodes. From https://savannah.gnu.org/support/?110557
+
+ 11/15
+ -----
+examples/loadables/realpath.c
+ - add -a NAME argument to put canonicalized pathnames into an indexed
+ array instead of displaying them on stdout. Suggested by
+ felix@f-hauri.ch
+
+lib/readline/colors.c
+ - _rl_custom_readline_prefix: new function, looks in $LS_COLORS for a
+ custom extension (*.readline-colored-completion-prefix) and uses that,
+ if found, as the default color for the common prefix displayed when
+ `colored-completion-prefix' is set. Suggested by
+ Christoph Anton Mitterer <calestyo@scientia.net>
+ - _rl_print_prefix_color: try the return value from _rl_custom_readline_prefix
+ before defaulting to the C_PREFIX (C_SOCK) color. Suggested by
+ Christoph Anton Mitterer <calestyo@scientia.net>
+
+lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
+ - readline-colored-completion-prefix: document new custom suffix for
+ readline's colored-completion-prefix color
+
+ 11/16
+ -----
+doc/{bash.1,bashref.texi},builtins/set.def
+ - set: modify usage synopsis slightly, based on
+ https://bugzilla.redhat.com/show_bug.cgi?id=2022324
+
+builtins/set.def
+ - unset_builtin: add shell compatibility level check <= bash-5.1 to
+ force `unset a[@]' to unset array variable `a', like in previous
+ versions, instead of unsetting associative array element `@' or
+ removing all elements of an indexed array without unsetting the
+ variable itself
+
+builtins/common.c
+ - set_expand_once: now a no-op if the shell compatibility level is
+ <= bash-5.1, preserving the previous versions' behavior for [[ -v
+ (dependent on assoc_expand_once instead of forcing it)
+
+subst.c
+ - parameter_brace_expand_rhs: make sure that the final value assigned
+ is always returned from ${a:=b}, even when `a' has a variable
+ attribute that modifies the value on assignment. Reported back on
+ 1/20/2021 by oguzismailuysal@gmail.com; bash-5.2 tag removed
+
+ 11/22
+ -----
+doc/{bashref.texi,bash.1}
+ - unset: change the description of `unset name[@]' (unset name[*])
+ to reflect the new behavior (unset associative array subscripts or
+ remove all elements from an indexed array) and the difference from
+ previous versions
+ - set: document -r for restricted shell mode
+ - restricted shell: change occurrences of `set +o restricted' to
+ `shopt -u restricted_shell'. From a report from
+ Jin Xiang <jxiang.sd@gmail.com>
+ - read: note that read -t0 may return 0 if a subsequent read will
+ return EOF. From a suggestion by Dale R. Worley
+ <worley@alum.mit.edu>
+
+execute_cmd.c
+ - execute_arith_command,eval_arith_for_expr: don't pass EXP_EXPANDED
+ to evalexp if shell_compatibility_level > 5.1, assuming that the
+ expression has been quoted by Q_ARITH handling
+
+test.c
+ - test_arithcomp: if we're being called by the conditional command
+ code and treating the arguments to the arithmetic operators as
+ expressions, don't pass EXP_EXPANDED to evalexp if the shell
+ compatibility level is > 5.1, assuming that the expression has been
+ quoted by Q_ARITH handling
+
+ 11/29
+ -----
+examples/loadables/getconf.[ch]
+ - getconf: new implementation of loadable builtin, based on glibc
+ getconf
+
+examples/loadables/sleep.c
+ - parse_gnutimefmt: parse GNU interval format (2m30s), returning
+ seconds and microseconds like uconvert
+ - sleep: use parse_gnutimefmt if uconvert can't parse the format right
+ away and "dhms" appears in the format string. Don't return
+ EX_DISKFALLBACK under any circumstances
+
+ 11/30
+ -----
+
+builtins/wait.def
+ - wait_builtin: refer to unset_waitlist only if JOB_CONTROL is enabled.
+ Report from Joel Ebel <jbebel@google.com>
+
+parse.y,builtins/set.def
+ - changes for minimal config restrictions
+
+configure.ac,config.h.in
+ - --enable-translatable-strings: new configuration option to allow
+ $"..." support to be compiled in or out; not included in the minimal
+ shell configuration
+
+shell.c
+ - main: don't include any of the dump-strings options if
+ TRANSLATABLE_STRINGS is not defined
+
+lib/sh/shquote.c
+ - sh_backslash_quote_for_double_quotes: needed for translatable strings
+
+parse.y
+ - support for translating $"..." strings now conditional on
+ TRANSLATABLE_STRINGS
+
+locale.c
+ - locale_expand: now conditional on TRANSLATABLE_STRINGS
+
+subst.c
+ - expand_string_dollar_quote: support for $"..." now conditional on
+ TRANSLATABLE_STRINGS
+
+doc/bashref.texi
+ - --enable-translatable-strings: document new configuration option
+
+ 12/2
+ ----
+subst.c
+ - verify_substring_values: now that the default compatibility level is
+ 52, and the Q_ARITH code is enabled, make the EXP_EXPANDED flag for
+ evalexp() dependent on the compatibility level
+ - param_expand: arithmetic substitution: make EXP_EXPANDED flag
+ for evalexp() dependent on the compatibility level
+ - expand_word_internal: don't call expand_array_subscript if the
+ shell compatibility level is 51 or below (Q_ARITH)
+
+test.c
+ - test_unop: if the shell compatibility level is > 51, using [@] with
+ an existing associative array will report on a key of `@'
+
+arrayfunc.c
+ - array_expand_index: if the compatibility level is > 51, Q_ARITH is
+ used and we don't pass EXP_EXPANDED to evalexp()
+
+COMPAT,doc/bashref.texi
+ - shell compatibility mode: document effects of setting the
+ compatibility mode to 51
+
+ 12/3
+ ----
+lib/malloc/malloc.c
+ - mremap: only use if MREMAP_MAYMOVE is defined, since we use the Linux
+ version of the function signature
+
+ 12/6
+ ----
+bashhist.c
+ - bash_add_history: if we're parsing a here-document (PST_HEREDOC), only
+ suppress adding the newline between lines if we're not at the first
+ line of the here-document (here_doc_first_line != 0). From a report
+ by S0AndS0 <strangerthanbland@gmail.com>
+
+ 12/8
+ ----
+lib/readline/colors.c
+ - _rl_custom_readline_prefix: use STREQN to check for the extension
+ string in $LS_COLORS, since it's not necessarily null-terminated.
+ From https://savannah.gnu.org/patch/?10158
+
+ 12/10
+ -----
+variables.c
+ - set_int_value,set_string_value: broke common code for setting int
+ and string dynamic variable values out into separate functions;
+ changed all callers to use them where appropriate. set_int_value
+ takes a flags argument saying whether or not to force the integer
+ attribute on
+ - assign_random: store the value assigned as the variable value so
+ things like RANDOM=42; RANDOM+=7 generate consistent sequences
+ like in ksh93
+ - assign_seconds: store the value assigned as the variable value so
+ things like SECONDS=42 ; SECONDS+=7 generate what's expected
+
+doc/Makefile.in
+ - changes to allow man pages that include others (.so FN) to be built
+ outside the source tree
+
+ 12/13
+ -----
+arrayfunc.c
+ - assign_array_element_internal: take an additional argument: char **NVALP.
+ If non-null, it gets the value eventually assigned to the array
+ element
+ - assign_array_element: take an additional NVALP argument; pass it to
+ assign_array_element_internal
+
+arrayfunc.h
+ - assign_array_element: new extern function declaration
+
+{subst,variables}.c,builtins/{common.c,declare.def}
+ - assign_array_element: change callers
+
+subst.c
+ - parameter_brace_expand_rhs: for the ${param:=value}, use the value
+ returned by assign_array_element in NVALP as the return value, since
+ it's the value ultimately assigned to the variable after possible
+ modification (e.g., arithmetic evaluation). Reported by
+ oguzismailuysal@gmail.com after flawed fix applied 11/16
+
+ 12/14
+ -----
+arrayfunc.h
+ - array_eltstate_t: an object that encapsulates an array element's
+ state (type, index, key, value) whether it's an indexed or
+ associative array
+
+arrayfunc.c
+ - {init,flush}_eltstate: new functions to initialize and flush any
+ allocated memory from array_eltstate_t objects. No allocation/
+ deallocation functions yet; the only use is with a static instance
+ - assign_array_element_internal: take an array_eltstate_t * instead of
+ a char ** as the final argument, so we can return keys/indices and
+ values depending on the type of array; populates it with the
+ appropriate values
+ - assign_array_element: take array_eltstate_t * as final argument
+ instead of a char **; pass it to assign_array_element_internal
+
+{subst,variables}.c,builtins/{common.c,declare.def}
+ - assign_array_element: change callers to modify final argument
+
+ 12/15
+ -----
+arrayfunc.c
+ - array_value_internal: now takes an array_eltstate_t * as the final
+ argument; there is no more `rtype' argument in favor of the
+ `subtype' member; returns the appropriate values in its members
+ - array_value: changed to pass array_eltstate_t to array_value_internal,
+ saves and fetches its `ind' member into *indp; saves `subtype'
+ member into *rtype
+ - get_arrary_value: changed to take array_eltstate_t as third argument,
+ passes it to array_value_internal
+
+{redir,expr}.c
+ - get_array_value: changed callers; initializing the array_eltstate_t
+ argument as necessary
+
+test.c
+ - test_builtin: changed to use get_array_value, adding AV_ALLOWALL to
+ the flags, since it didn't use any QUOTED argument. Pass
+ array_eltstate_t * as final argument and get subtype from it (the
+ only thing we're interested in, to deallocate memory)
+
+ 12/16
+ -----
+arrayfunc.c
+ - array_value: now takes a final argument of array_eltstate_t *, which
+ it passes to array_value_internal; no more rtype and indp args.
+ Callers are responsible for marshalling values into estatep
+
+arrayfunc.h
+ - array_value: changed function signature
+
+subst.c
+ - get_var_and_type,parameter_brace_expand_word: changed calls to
+ array_value to use array_eltstate_t argument and initialize it
+ appropriately. Copy values back from it to the parameters we need
+ to modify
+
+variables.c
+ - assign_lineno: call set_int_value to store the value, like with
+ RANDOM and SECONDS (from 12/10)
+
+ 12/17
+ -----
+{eval,execute_cmd}.c
+ - when bypassing a parsed command because read_but_dont_execute is
+ set, don't modify last_command_exit_value. From a report by
+ Robert Elz <kre@munnari.OZ.AU>
+
+parse.y
+ - parse_comsub: make sure the first call to shell_getc to check whether
+ or not it's an arithmetic expansion skips a quoted newline. From a
+ report by Robert Elz <kre@munnari.OZ.AU>
+
+ 12/21
+ -----
+subst.c
+ - parameter_brace_remove_pattern,parameter_brace_patsub,parameter_brace_casemod,
+ parameter_brace_transform,parameter_brace_substring: now take an
+ array_eltstate_t * argument in place of the arrayind_t argument, pass
+ it to get_var_and_type; this generalizes the indexed array behavior
+ of expanding array subscripts once to associative arrays via an
+ eventual call to array_value_internal with a non-null KEY member
+ - get_var_and_type: now takes an array_eltstate_t * argument in place
+ of the arrayind_t argument; use it in calls to array_value so we
+ can only expand array subscripts once whether they are indexed or
+ associative arrays
+ - parameter_brace_expand_word: take an array_eltstate_t * argument in
+ place of the arrayind_t * argument; pass it to array_value; use a
+ static version (which we init and flush) if the argument passed is
+ NULL so we can get the right state passed back and forth
+ - parameter_brace_expand: pass a pointer to a static array_eltstate_t
+ to parameter_brace_expand_word, and use that in the various calls to
+ parameter_brace_XXX functions that perform specific expansions in
+ place of the old arrayind_t argument; make sure to flush it before
+ returning, even on errors
+
+ 12/22
+ -----
+{trap,variables}.c
+ - internal_warning: calls changed to use translatable strings
+ consistently
+
+error.[ch]
+ - internal_debug: new function, prints a message like internal_warning,
+ no-op if DEBUG is not defined
+ - INTERNAL_DEBUG: macro that expands to internal_debug when DEBUG is
+ defined, and nothing otherwise
+
+{jobs,trap}.c
+ - changed some internal_warning and internal_inform calls to use
+ internal_debug, since they were active only when DEBUG is defined
+
+parse.y
+ - parse_comsub: add internal_debug call when a command substitution
+ ends with unterminated here-documents
+
+builtins/common.c
+ - number_of_args: unconditionally return posparam_count
+
+{jobs,execute_cmd,subst}.c,parse.y,builtins/{command.def,evalstring.c}
+ - INTERNAL_DEBUG: use instead of calls to itrace protected by #ifdef
+ DEBUG
+
+ 12/26
+ -----
+lib/glob/glob.c
+ - glob_always_skip_dot_and_dotdot: initialize to 1 (enabled)
+
+builtins/shopt.def
+ - globskipdots: new shell option, exposes glob_always_skip_dot_and_dotdot
+
+doc/{bash.1,bashref.texi}
+ - globskipdots: document new shell option
+
+execute_cmd.c
+ - fix_arrayref_words: call valid_array_reference with 0 for third arg
+ because the words have not undergone any word expansions yet and
+ the quotes are still present. This makes things like
+ A=[\[]=set
+ unset A[\[]
+ work
+
+subst.c
+ - word_list_split: if a word undergoes word splitting but is not
+ changed, preserve any W_ARRAYREF flag into the new word. This makes
+ things like
+ rkey=']'
+ unset A[$rkey]
+ work because the unset builtin sees the W_ARRAYREF flag on its
+ argument
+
+ 12/29
+ -----
+builtins/common.h
+ - SET_VFLAGS: take a set of word flags, and set flags for use with
+ valid_array_reference (vflags) and assign_array_element/bind_int_variable
+ (bindflags) based on those flags and the setting of assoc_expand_once
+ (moved from read.def and generalized)
+
+arrayfunc.c
+ - array_variable_name: now exclusively takes AV_xxx flags; understands
+ how to translate AV_NOEXPAND to the right flag for skipsubscript;
+ understands AV_ONEWORD and AV_NOEXPAND
+ - array_variable_part: just passes the FLAGS arg to array_variable_name
+ - assign_array_element: translates ASS_ flags to AV_ flags for
+ array_variable_name
+ - array_value_internal: now just passes flags straight through to
+ array_variable_part (which sends them to array_variable_name)
+
+builtins/common.[ch]
+ - builtin_bind_var_to_int: now takes a new FLAGS third argument; passes
+ it to bind_var_to_int
+
+builtins/printf.def
+ - printf_builtin: use SET_VFLAGS to set flags for builtin_bind_variable
+ (bindflags); makes things like
+ declare -A A; key=']' ; printf -v A[$key] "foo"
+ work without a subscript error as long as assoc_expand_once is defined
+
+builtins/read.def
+ - read_builtin: use new common version of SET_VFLAGS instead of
+ private version; changed to use new calling sequence; makes things like
+ declare -A A; key=']' ; read A[$key] <<<"foo"
+ work without a subscript error as long as assoc_expand_once is defined
+
+builtins/wait.def
+ - wait_builtin: use SET_VFLAGS for variable name with -p option
+ - wait_builtin: call builtin_bind_var_to_int with new bindflags third
+ argument
+
+expr.c
+ - expr_streval: just pass TFLAG (AV_xxx flags) straight through to
+ array_variable_part
+
+variables.c
+ - bind_int_variable: translate the assignment flags (ASS_xxx) to
+ VA_xxx flags for valid_array_reference calls (ASS_ONEWORD); translate
+ assignment flags to AV_xxx flags for array_variable_part
+
+ 12/30
+ -----
+subst.c
+ - parameter_brace_expand: when expanding an indirect variable, extend
+ the special case for array[@] and array[*] (set -u/no positional
+ parameters, obeying the baroque quoting rules) to the value of the
+ indirection. Report and fix from konsolebox <konsolebox@gmail.com>
+
+ 12/31
+ -----
+parse.y
+ - compound_list: when parsing a compound_list production, collect any
+ pending here-documents after reading a newline, not after reading
+ any command terminator. Fixes interactive-only prompting bug
+ reported back in 8/2021 by Hyunho Cho <mug896@gmail.com>
+
+ 1/1/2022
+ --------
+bashline.c
+ - set_filename_quote_chars: break code that modifies
+ rl_filename_quote_characters based on whether DIRNAME needs to be
+ expanded from bash_directory_completion_hook into its own function
+ - bash_check_expchar: break code that checks whether DIRNAME will be
+ word expanded from bash_directory_completion_hook into its own
+ function
+ - bashline_reset,attempt_shell_completion: make sure complete_fullquote
+ is set to 1 (as it is by default) in case a completion modifies it
+ - bash_quote_filename: if we are completing (but not expanding --
+ direxpand is unset) and backslash-quoting a filename with expansion
+ characters as determined by bash_check_expchar, make sure
+ filename_bstab is set not to include the expansion char (and any
+ following char and closer) and set complete_fullquote to 0 so
+ sh_backslash_quote uses filename_bstab. Fixes the longstanding issue
+ of quoting a `$', for instance, if the rest of the filename contains
+ any characters that need quoting in filenames. This assumes that the
+ filename is unquoted (*QCP == 0) so the word will be expanded and is
+ not part of the filename (if needed, we can use file_exists to check
+ whether the expansion characters are actually part of the filename)
+
+ 1/7
+ ---
+examples/loadables/accept.c
+ - new -b bindaddr option to bind to a specific IP address
+ - move setsockopt calls before bind() to avoid TIME_WAIT issues. Fixes
+ from Dzogovic Vehbo <dzove855@gmail.com>
+
+ 1/10
+ ----
+configure.ac
+ - bumped version to 5.2-alpha.
+
+ 1/16
+ ----
+
+tests/{unicode1,glob2,intl2}.sub, tests/run-intl
+ - minor changes to add warnings for missing locales that cause test
+ failures
+
+ 1/17
+ ----
+parse.y
+ - history_delimiting_chars: if we have a blank line by the time we
+ hit the end of the tests, return a semicolon for the first blank
+ line to avoid running lines of a multi-line command together.
+ Fixes bug reported by Joakim Lindblad <joakim@cb.uu.se>
+
+subst.c
+ - expand_string_for_patsub: expand the replacement string for pattern
+ substitution assuming that it will eventually be passed to
+ strcreplace to replace `&' with the matched portion of the string.
+ This calls expand_string_for_pat(), which leaves the string quoted
+ and does not perform word splitting, then calls
+ quote_string_for_repl to post-process the expanded string.
+ - quote_string_for_repl: perform quote removal on passed string while
+ replacing CTLESC escaping a `&' or a backslash with a backslash. The
+ result must be passed to strcreplace
+ - parameter_brace_patsub: call expand_string_for_patsub if
+ patsub_replacement is set to quote
+
+ 1/18
+ ----
+subst.c
+ - read_comsub: make istring_index a size_t to avoid overflow with very
+ large values of istring_size.
+ From https://savannah.gnu.org/support/index.php?110596
+ - expand_word_internal: make istring_index a size_t
+
+ 1/20
+ ----
+buitins/cd.def
+ - add a description of `cd -' to the help text. Suggested by
+ Rob Landley <rob@landley.net>
+
+ 1/21
+ ----
+lib/glob/glob.c
+ - glob_vector: if we allocate NEXTLINK using malloc, and free it due to
+ some allocation failure, reset FIRSTMALLOC to avoid duplicate frees
+ later on
+
+subst.[ch]
+ - sub_append_string: the INDX parameter is now a size_t to avoid
+ overflow
+
+parse.y
+ - decode_prompt_string: RESULT_INDEX is now a size_t to pass to
+ sub_append_string
+
+jobs.[ch],nojobs.c
+ - wait_for_background_pids: now returns the number of jobs/processes
+ reaped
+
+builtins/wait.def
+ - wait_builtin: if -p pid supplied without -n, make sure we do something
+ useful if no job/pid arguments are supplied and there are no jobs.
+ Reported by Oguz <oguzismailuysal@gmail.com>
+
+builtins/read.def
+ - read_builtin: if we have a timeout, use SIGALRM instead of select
+ when in posix mode, since we use read instead of zread. Fixes bug
+ reported by Andreas Schwab <schwab@linux-m68k.org>
+
+subst.c
+ - expand_string_dollar_quote: handle single-quoted and double-quoted
+ strings that might include $' and $" without attempting translation;
+ do more error checking for unterminated $' and $" that leaves those
+ characters unmodified. This is for use by readline's various line
+ expansion functions (shell_expand_line)
+
+ 1/23
+ ----
+parse.y,make_cmd.c
+ - revert change that unconditionally processes $'...' and $"..." in
+ here-document bodies; there are only a couple of cases where they
+ should be processed in a double-quote environment
+
+ 1/24
+ ----
+
+subst.c
+ - extract_dollar_brace_string: if we see another `${' on the rhs of
+ the operator, reset the dolbrace_state to DOLBRACE_PARAM while we
+ read this new ${...} string
+ - extract_heredoc_dolbrace_string: new function, variant of
+ extract_dollar_brace_string, to process the WORD in ${PARAM OP WORD}
+ while expanding lines of here-document data. It's complicated by the
+ requirement to add to the result string as we go along, since we
+ need to change the contents of the input string with ansi expansion
+ or locale translation.
+ - string_extract_single_quoted: take a new third argument: ALLOWESC.
+ This allows backslash to escape an embedded single quote, needed by
+ extract_heredoc_dolbrace_string to process $'...'; changed callers
+
+ 1/25
+ ----
+parse.y
+ - parse_matched_pair: ansi-expand $'...' in WORD for ${PARAM OP WORD}
+ and single-quote the result if dolbrace_state == DOLBRACE_QUOTE
+ (posix pattern removal operators) even if extended_quote == 0
+
+subst.c
+ - extract_heredoc_dolbrace_string: add logic to align with parse.y:
+ parse_matched_pair and its $'...' expansion, including handling
+ extended_quote
+
+ 1/27
+ ----
+builtins/evalstring.c
+ - should_optimize_fork: broke conditions for optimizing away the fork
+ for a simple command out of optimize_fork into new function, call
+ from should_suppress_fork and optimize_subshell_command. Call from
+ optimize_fork if (subshell_environment & SUBSHELL_PAREN), relying
+ on fact that CMD_TRY_OPTIMIZING is only set in a couple of specific
+ conditions
+ - optimize_fork: call should_suppress_fork only if startup_state == 2;
+ it does the extra checks for that specific case
+ - optimize_fork: call should_optimize_fork if we're in a (list)
+ subshell (subshell_environment & SUBSHELL_PAREN)
+ - optimize_subshell_command: set CMD_TRY_OPTIMIZING on the right side
+ of a `&&', `||', or `;' list as long as it's a simple command so
+ we can check with optimize_fork() when it's time to execute it
+
+execute_cmd.c
+ - execute_in_subshell: call optimize_subshell_command for (list)
+ subshells to either set CMD_NO_FORK for simple commands or set
+ CMD_TRY_OPTIMIZING for likely candidates for later optimization
+
+builtins/common.h,builtins/evalstring.c
+ - optimize_fork: renamed to optimize_connection_fork; changed callers
+
+ 1/31
+ ----
+include/shmbutil.h
+ - COPY_CHAR_I,SCOPY_CHAR_I: add check for locale_utf8locale and
+ (c & 0x80) as in other macros
+
+lib/sh/shquote.c
+ - sh_backslash_quote_for_double_quotes: rewrote to use array indexing
+ and COPY_CHAR_I to make it easier to drop in future calls to
+ charvis() to make `unsafe' characters visible if FLAGS == 1
+
+ 2/1
+ ---
+parse.y
+ - parse_comsub: if we are currently expanding aliases, temporarily
+ turn off alias expansion if we are not in posix mode so we defer
+ alias expansion until command_substitute(). Fixes double-expansion
+ bug reported by Martijn Dekker <martijn@inlv.org> and aligns with
+ https://www.austingroupbugs.net/view.php?id=1342
+ - xparse_dolparen: turn off alias expansion entirely while running the
+ parser: either we do it in parse_comsub (posix mode) or in
+ command_substitute (default mode)
+ - parse_string_to_command: ditto
+
+subst.c
+ - command_substitute: if we are expanding aliases, temporarily turn
+ off alias expansion if we are in posix mode, since we already
+ performed it in parse_comsub() and are using the command string
+ reconstituted from the parse result
+
+doc/bashref.texi
+ - bash posix mode: add description of alias expansion and command
+ substitution parsing and execution
+
+ 2/4
+ ---
+lib/readline/rltty.c
+ - rl_deprep_terminal: set _rl_last_c_pos to 0 after outputting
+ BRACK_PASTE_FINI, since the last character in that is \r. Partially
+ address issue raised by Markus Schwarzenberg <markus.schwarzenberg@freenet.de>
+ in https://lists.gnu.org/archive/html/bug-bash/2022-02/msg00056.html
+
+ 2/5
+ ---
+doc/{bash.1,bashref.texi}
+ - minor typo fixes from Helge Kreutzmann <debian@helgefjell.de>
+
+ 2/7
+ ---
+{arrayfunc,variables}.c
+ - ARRAY_EXPORT: changes to encode array and assoc variables using a
+ scheme similar to shell functions so we can export arrays and
+ differentiate them from scalar variables and differentiate array
+ and assoc variables. Still not enabled by default.
+
+variables.c
+ - mk_env_string: third argument is now the variable's attributes or 0,
+ with all the attributes we can export arrays
+
+lib/readline/bind.c
+ - active-region-start-color,active-region-end-color: new bindable
+ string variables, one to set the active region color (instead of
+ standout mode) and one to turn it off (instead of the "se" terminal
+ capability). They set _rl_active_region_start_color and
+ _rl_active_region_end_color variables via functions
+
+lib/readline/display.c
+ - putc_face: if setting standout mode, check for both the start color
+ and end color variables and output the start color string. If turning
+ off standout mode (normal face), output the end color string. Both
+ variables must be set
+
+lib/readline/{readline.c,rlprivate.h}
+ - declarations for _rl_active_region_start_color and
+ _rl_active_region_end_color
+
+ 2/8
+ ---
+bashline.c
+ - initialize_readline: add bindable name `vi-edit-and-execute-command'
+
+shell.c
+ - subshell_exit: make sure to set last_command_exit_value before
+ calling the exit trap. Fixes bug reported by Greg Edwards
+ <gedwards@ddn.com>
+
+ 2/9
+ ---
+lib/readline/{terminal.c,rlprivate.h}
+ - _rl_region_color_on,_rl_region_color_off: functions to output the
+ _rl_active_region_start_color and _rl_active_region_end_color
+ - _rl_reset_region_color: function to encapsulate setting the region
+ color to an arbitrary string, including doing memory management
+
+lib/readline/display.c
+ - putc_face: call _rl_region_color_on and _rl_region_color_off instead
+ of _rl_standout_on and _rl_standout_off
+
+lib/readline/terminal.c
+ - _rl_init_terminal_io: initialize _rl_active_region_start_color and
+ _rl_active_region_end_color from _rl_term_so and _rl_term_se,
+ respectively; reset every time the terminal is changed
+ - _rl_init_terminal_io: turn off the active region for a dumb terminal
+
+lib/readline/bind.c
+ - sv_region_{start,end}_color: call _rl_reset_region_color with the
+ appropriate value for WHICH
+
+ 2/10
+ ----
+lib/readline/doc/{rluser.texi,readline.3},doc/bash.1
+ - active-region-start-color,active-region-end-color: documented new
+ bindable readline variables
+ - enable-active-region: document using active-region-start-color to
+ highlight the text in the region
+
+ 2/11
+ ----
+parse.y
+ - read_token,read_token_word: make sure characters read by shell_getc
+ are protected by appropriate calls to MBTEST when testing for shell
+ metacharacters and operators
+
+ 2/14
+ ----
+builtins/shopt.def
+ - set_compatibility_level: if the current compatibility level is outside
+ the range of the compatNN options, just leave it alone when
+ unsetting one of the options (which by definition was already
+ unset). Fixes issue reported by Mihai Moldovan <ionic@ionic.de>
+
+ 2/16
+ ----
+lib/readline/search.c
+ - rl_history_search_{pos,len,flags}: rename to have a leading `_'
+ - _rl_history_search_pos: no longer static so other parts of readline
+ can see it
+
+lib/readline/rlprivate.h
+ - _rl_history_search_pos: extern declaration
+
+lib/readline/readline.c
+ - readline_internal_teardown: don't run the undo list against the
+ current history entry if the non-incremental search functions have
+ set _rl_history_search_pos to it, since it doesn't reflect the
+ current contents of the line buffer. Fixes issue reported by
+ Andreas Schwab <schwab@linux-m68k.org>
+
+lib/readline/misc.c
+ - _rl_start_using_history: initialize _rl_history_search_pos to
+ something invalid so it doesn't match where_history()
+
+ 2/17
+ ----
+lib/readline/callback.c
+ - rl_callback_read_char: make sure _rl_eof_found is set to the value
+ of eof before calling the deprep terminal function, so it can do
+ different things based on whether the input code read EOF (or the
+ user entered the EOF character). From a gdb discussion started by
+ Andrew Burgess <aburgess@redhat.com> (still more to do, since this
+ is not part of the public API)
+
+ 2/18
+ ----
+lib/readline/readline.h
+ - RL_STATE_EOF: new readline state value; set when readline reads an
+ EOF character on an empty line or a read returns an error
+ - rl_eof_found: new public variable
+
+lib/readline/rprivate.h
+ - _rl_eof_found: renamed to rl_eof_found, so not declared here
+
+lib/readline/{callback,readline}.c
+ - RL_STATE_EOF: set appropriately when readline gets an EOF. Suggested
+ by Andrew Burgess <aburgess@redhat.com>
+ - RL_STATE_EOF: make sure it's not set when readline starts
+ - rl_eof_found: set appropriately when readline gets an EOF
+
+lib/readline/{callback,readline,rltty}.c
+ - rl_eof_found: new name for _rl_eof_found
+
+lib/readline/doc/rltech.texi
+ - RL_STATE_EOF: document
+
+ 2/19
+ ----
+parse.y
+ - parse_comsub: turn off parser state flags we don't want to inherit
+ into this call to the parser (PST_REGEXP, PST_EXTPAT, PST_CONDCMD,
+ PST_CONDEXPR for now). Fixes bug reported by konsolebox
+ <konsolebox@gmail.com>
+
+ 2/23
+ ----
+findcmd.c,builtins/hash.def
+ - replace calls to is_directory with file_isdir, which only performs a
+ stat and doesn't do the eaccess call to check for an executable file
+
+findcmd.c
+ - find_in_path_element: takes a new RFLAGSP argument, an int * where
+ the status flags for the returned pathname are returned; saves
+ additional calls to stat/eaccess
+ - search_for_command: get the returned flags from
+ find_user_command_in_path so we don't need any additional calls to
+ file_status after we find the command in $PATH
+
+ 2/24
+ ----
+doc/{bash.1,bashref.texi}
+ - FUNCTIONS: some small changes to the description of local variables
+ and dynamic scoping, with emphasis on how that affects `unset'
+ behavior. Inspired by a discussion with
+ Christoph Anton Mitterer <calestyo@scientia.net>
+
+ 2/25
+ ----
+examples/loadables/realpath.c
+ - renamed -s option to -q to align with other versions
+ - perform array assignment for `-a varname' even if -q option supplied
+ - renamed -S option to -s for Linux compatibility
+
+ 2/28
+ ----
+lib/readline/misc.c
+ - _rl_free_saved_history_line: call rl_free_undo_list, saving and
+ setting rl_undo_list to the saved history line's data, so the right
+ call to _hs_replace_history_data happens and we don't end up with
+ a pointer aliasing problem. Fixes core dump reported by
+ Andreas Schwab <schwab@linux-m68k.org>, but does not make his
+ scenario equivalent to incremental search
+
+ 3/1
+ ---
+lib/readline/search.c
+ - make_history_line_current: save the current line before replacing it
+ with the found history entry using rl_maybe_save_line
+ - noninc_dosearch: we don't want the saved history line, so free it
+ after calling make_history_line_current
+ - _rl_history_search_internal: call rl_maybe_replace_line after making
+ changes to the line buffer with make_history_line_current so we can
+ save the undo list we constructed before we set the history position
+
+ 3/2
+ ---
+lib/readline/display.c
+ - expand_prompt: add missing piece to patch from 10/26/2021: if we are
+ recalculating the number of invisible characters on the first line
+ of the prompt, we need to update INVFL, even if we already set it
+ when we hit the number of physical characters. This ends up being
+ assigned to prompt_invis_chars_first_line, and is used in several
+ subsequent calculations. Reported by
+ Andreas Schwab <schwab@linux-m68k.org>
+
+lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
+ - enable-bracketed-paste: add some language making it clearer that
+ bracketed paste prevents the pasted text from being interpreted as
+ editing commands. Suggested by Karl O. Pinc <kop@karlpinc.com>
+
+ 3/4
+ ---
+make_cmd.c
+ - make_here_document: perform quote removal on the here-doc delimiter
+ only if it's marked as quoted, which prevents quotes from inside a
+ command substitution from being removed (they're supposed to begin a
+ new quoting context) when the word itself isn't flagged as quoted
+ (which means the body of the here-document gets expanded). You can't
+ perform quote removal *and* expand the here-document lines. From an
+ austin-group discussion back in early February
+
+lib/sh/strvis.c
+ - charvis -> sh_charvis; change caller
+ - sh_charvis: now take an additional SLEN argument to avoid having to
+ compute the string length every time; change callers
+ - sh_charvis: add a utf-8 locale-specific check before calling
+ COPY_CHAR_I (in practice, doesn't make any real difference)
+
+ 3/10
+ ----
+arrayfunc.c
+ - convert_var_to_array: if we're being asked to create an associative
+ array (flags & 2), and we have an existing variable that is not an
+ assoc array (and not an existing indexed array), call
+ convert_var_to_assoc to make it one
+
+ 3/11
+ ----
+jobs.c
+ - wait_for: don't call get_tty_state() if readline is dispatching
+ (RL_STATE_DISPATCHING) with the terminal settings changed
+ (RL_STATE_TERMPREPPED), the same way we don't if we are running a
+ command for programmable completion. Fixes bug with SIGINT reverting
+ to the saved readline terminal settings reported by
+ Markus Napierkowski <markus.napierkowski@cyberus-technology.de>
+
+parse.y
+ - decode_prompt_string: make sure the expansion of \w, \W, and \s
+ are all run through sh_strvis before calling
+ sh_backslash_quote_for_double_quotes or just through sh_strvis if
+ we're not running the prompt string through word expansions.
+ Fixes issue reported by Josh Harcome <joshharc@gmail.com> back
+ in mid-January
+
+ 3/16
+ ----
+bashline.c
+ - bash_quote_filename: if we have a word to complete that contains
+ characters that introduce a word expansion, make sure the passed
+ string does *not* exist as a filename before removing those
+ characters from the set that must be backslash-quoted. See change
+ from 1/1/2022
+
+ 3/18
+ ----
+lib/readline/search.c
+ - make_history_line_current: don't free rl_undo_list or
+ _rl_saved_line_for_history; don't unconditionally save the history
+ line. This reverts some of the changes to support setting the
+ history position in history-search-backward
+ - rl_history_search_internal: only free the saved history line if we
+ were the ones who created it
+
+ 3/21
+ ----
+lib/readline/nls.c
+ - xmalloc.h: include for systems without setlocale(), so xfree has a
+ prototype. Report and fix from András Kucsma <r0maikx02b@gmail.com>
+
+lib/readline/search.c
+ - _rl_history_search_internal: use previous-history/next-history to
+ move to the found history line instead of directly calling
+ history_set_pos. This makes the behavior more similar to incremental
+ search
+ - rl_history_search_internal: make sure to set rl_undo_list to the
+ current history undo list around the calls to rl_get_previous_history
+ or rl_get_next_history, in order to fool the call to
+ maybe_replace_line they make
+
+lib/readline/readline.c
+ - _rl_executing_func: the currently-executing readline command function
+
+lib/readline/rlprivate.h
+ - _rl_executing_func: extern declaration
+
+lib/readline/search.c
+ - _rl_history_search_internal: removed (commented out) code that sets
+ the current history entry to the found history entry, too much
+ assumes that the current undo list should be applied to the current
+ history entry (where_history())
+
+ 3/23
+ ----
+subst.c
+ - parameter_brace_expand_word: if we have double-quoted ${*} or ${@},
+ make sure we are setting W_HASQUOTEDNULL in the flags we return to
+ the caller if we are returning QUOTED_NULL(word)
+ - parameter_brace_expand_word: if we have a double-quoted associative
+ array reference using `*' or `@', make sure we are setting
+ W_HASQUOTEDNULL in the flags we return to the caller if we are
+ returning QUOTED_NULL(word)
+ - parameter_brace_expand: if we're using the `[:]+' word expansion
+ operator, we need to note a quoted null string and pass the
+ W_QUOTEDNULL flag back to the caller
+ - expand_word_internal: make sure to return a QUOTED_NULL
+ (word[0] == CTLNUL) back to the caller if HAD_QUOTED_NULL is set,
+ regardless of whether or not we see a quoted dollar at. Fix for bug
+ reported by Andreas Luik <andreas.luik@innovative-navigation.de>
+
+arrayfunc.c
+ - array_value_internal: fix typo and set estatep->type to ARRAY_INDEXED
+ for indexed arrays
+
+ 3/31
+ ----
+lib/readline/{history.c,histlib.h}
+ - _hs_at_end_of_history: convenience function to tell whether or not
+ the current history position is at the end of the history list
+
+ 4/1
+ ---
+lib/readline/search.c
+ - make_history_line_current: don't free rl_undo_list if it is equal to
+ _rl_saved_line_for_history->data, since we will need to restore it
+ later if we got it from a history entry. Fixes issue dating back to
+ 7/2021 and changes to _rl_free_saved_line_for_history, current issue
+ reported by Andreas Schwab <schwab@linux-m68k.org>
+
+ 4/5
+ ---
+lib/readline/{complete,histfile,histsearch,isearch,terminal}.c
+ - xfree: use instead of free
+
+ 4/7
+ ---
+configure.ac
+ - bumped version to bash-5.2-beta
+
+[bash-5.2-beta frozen]
+
+ 4/8
+ ---
+lib/readline/input.c
+ - _rl_orig_sigset: need extern declaration if HAVE_SELECT is defined.
+ From https://savannah.gnu.org/support/?110634
+
+examples/loadables/seq.c
+ - PRIdMAX: redefine if PRI_MACROS_BROKEN is defined.
+ From https://savannah.gnu.org/support/index.php?110635
+
+ 4/11
+ ----
+configure.ac
+ - BASH_FUNC_STRTOIMAX: replace strtoimax if the system doesn't provide
+ a declaration in a standard header file. Uses new m4/strtoimax.m4.
+ From https://savannah.gnu.org/support/index.php?110633
+
+builtins/printf.def
+ - getdouble: new function, parses string into `double' using strtod
+ - printf_builtin: check for the `L' length modifier and use long
+ doubles for the floating point conversion specifiers. If it's not
+ supplied, use `double' when in posix mode (as posix specifies) and
+ long double (if it's available, double if not) in default mode.
+ From a report from Paul Eggert <eggert@cs.ucla.edu>
+
+ 4/12
+ ----
+lib/sh/oslib.c
+ - bzero: update function signature to modern BSD version
+
+ 4/14
+ ----
+lib/sh/oslib.c
+ - bcopy, gethostname, mkfifo: update function signatures to modern
+ versions
+
+ 4/15
+ ----
+jobs.c,nojobs.c
+ - wait_for_single_pid: if the pid or job argument is invalid -- isn't
+ a child of this shell -- return 257, which is out of the range of
+ valid 8-bit status values
+
+execute_cmd.c
+ - execute_pipeline: if wait_for_single_pid returns > 256, set it to
+ 127 (invalid process)
+
+jobs.c
+ - wait_for_background_pids: if wait_for_single_pid returns > 256, set
+ the status we return in PS to 127 (what it was before)
+
+builtins/wait.def
+ - wait_builtin: if wait_for_single_pid returns > 256, treat it as an
+ error and set pstat.pid to NO_PID
+ - wait_builtin: if -p supplied, and we get to the end of the argument
+ list with PSTAT.PID != NO_PID (which we assume means that the return
+ value is set from PSTAT.STATUS), set the variable name to PSTAT.PID.
+ From a report by Robert Elz <kre@munnari.OZ.AU>
+ - wait_builtin: for compatibility with the netbsd sh, leave the variable
+ name specified with `-p' unset if there are no PID arguments.
+ From a report by Robert Elz <kre@munnari.OZ.AU>
+
+ 4/17
+ ----
+parse.y
+ - xparse_dolparen: if (flags & SX_NOLONGJMP), don't call
+ jump_to_top_level() on errors
+
+bashline.c
+ - bash_quote_filename: don't call quote_word_break_chars() unless we
+ have word break chars initialized. Fixes bug reported by
+ Sam James <sam@gentoo.org>
+
+ 4/18
+ ----
+pcomplete.c
+ - gen_globpat_matches: call glob_filename with the GX_GLOBSTAR flag if
+ the `globstar' shell option is enabled. From a report by
+ Steve <bash@lonetwin.net>
+
+lib/malloc/malloc.c
+ - internal_free: remove the GLIBC21 code (!)
+ - internal_free: make the code that tests against memtop and calls
+ lesscore depend on USE_LESSCORE being defined, which it is by
+ default
+
+lib/malloc/imalloc.h
+ - USE_LESSCORE: define
+
+parse.y,shell.h
+ - token_buffer_size and its corresponding saved value in the shell's
+ parser state are now size_t instead of int
+
+stringlib.c
+ - strsub,strcreplace: use size_t instead of int for local length and
+ indexing variables
+
+lib/sh/zmapfd.c
+ - zmapfd: use size_t instead of int for local length and indexing
+ variables
+
+lib/sh/zgetline.c
+ - zgetline: use size_t instead of int for local length and indexing
+ variables
+
+ 4/20
+ ----
+pcomplete.c
+ - init_itemlist_from_varlist: free VLIST after assigning it from
+ *SVFUNC and after we get the variable names and values out of it.
+ Report from Robert E. Griffith <bobg@junga.com>
+
+ 4/25
+ ----
+redir.c
+ - here_document_to_fd: if the shell compatibility level is bash-5.0 or
+ earlier, use tempfiles for all here-documents and here-strings. From
+ a bug-bash discussion started by Sam Liddicott <sam@liddicott.com>
+
+ 4/26
+ ----
+parse.y
+ - parse_comsub: non-interactive shells exit on a syntax error while
+ parsing the command substitution
+ - parse_comsub: unset additional PARSER_STATE flags before calling
+ yyparse(). Inspired by https://bugs.gentoo.org/837203; unsetting
+ PST_COMPASSIGN is the fix for that bug
+ - parse_string_to_word_list: use save_parser_state/restore_parser_state
+ instead of saving pieces of the shell state in individual variables
+ - parse_compound_assignment: use save_parser_state/restore_parser_state
+ instead of saving pieces of the shell state in individual variables
+ - parse_compound_assignment: unset additional PARSER_STATE flags before
+ calling read_token(); set esacs_needed_count and expecting_in_token
+ to 0 like in parse_comsub() since read_token can use them
+
+ 4/27
+ ----
+lib/sh/strvis.c
+ - sh_charvis: changes to handle being compiled without multibyte support
+
+ 4/29
+ ----
+lib/readline/callback.c
+ - rl_callback_read_char: don't set rl_eof_found unless eof is > 0,
+ since it can be -3 if we need to read more input in a multi-key
+ sequence. Report from Andrew Burgess <aburgess@redhat.com>
+
+examples/loadables/Makefile.sample.in
+ - new file, containing the rules to build the example shared object
+ - includes Makefile.inc from wherever it's installed. Suggested by
+ Robert E. Griffith <bobg@junga.com>
+
+examples/loadables/Makefile.inc.in
+ - remove rules that create the example shared object
+
+ 4/30
+ ----
+builtins/evalstring.c
+ - parse_and_execute: check for terminating signals before returning,
+ after any longjmp, to improve responsiveness and fix the -c code
+ path before running any exit trap. Report from
+ Emanuele Torre <torreemanuele6@gmail.com>
+
+ 5/17
+ ----
+builtins/suspend.def
+ - suspend_builtin: the -f option now forces a suspend even if job
+ control is not enabled. Inspired by a discussion with
+ Robert Elz <kre@munnari.OZ.AU>
+
+doc/{bash.1,bashref.texi}
+ - suspend: updated description to include expanded -f behavior
+
+ 5/25
+ ----
+builtins/mkbuiltins.c
+ - -includefile: new argument, specifies extern filename to insert
+ into the #include statement in the structfile (builtins.c) and
+ the filename in the comment in the extern file (builtext.h).
+ From Alexander Kanavin <alex.kanavin@gmail.com> via
+ https://savannah.gnu.org/patch/?10210
+
+builtins/Makefile.in
+ - builtins.c: change call to mkbuiltins to add -includefile option
+ - builtins.c: change recipe to run all the commands in the same shell
+ invocation
+ - builtins.c: change recipe to specify new filenames in the call to
+ mkbuiltins and move them onto builtins.c/builtext.h if the new ones
+ are different; make the new filenames use the current make recipe
+ shell pid in the filename ($$RECPID).
+ Inspired by Alexander Kanavin <alex.kanavin@gmail.com> via
+ https://savannah.gnu.org/patch/?10210
+
+ 6/2
+ ---
+builtins/common.c
+ - builtin_find_indexed_array: new function, factored common code out
+ of mapfile and read builtins to find an in-scope indexed array or
+ create one
+
+builtins/common.h
+ - builtin_find_indexed_array: extern declaration
+
+builtins/{mapfile,read}.def
+ - change callers to use builtin_find_indexed_array
+
+variables.c
+ - unbind_global_variable, unbind_global_variable_noref: new functions
+ that remove variables from the global_variables table
+
+lib/sh/shmatch.c
+ - sh_regmatch: use unbind_global_variable_noref to make sure we act on
+ the copy of BASH_REMATCH in the global scope all the time, ignoring
+ any local variables that might exist. Tentative fix for memory leak
+ report from Emanuele Torre <torreemanuele6@gmail.com>
+
+doc/{bash.1,bashref.texi}
+ - BASH_REMATCH: add caveat about making it a local variable
+
+ 6/6
+ ---
+print_cmd.c
+ - print_redirection: if the redirectee for r_duplicating_output_word
+ (r_duplicating_input_word) is 1 (0), don't print it; only print a
+ non-default file descriptor number
+ - print_redirection_list: remove the code that tries to temporarily
+ translate a >&word redirection to >&word now that we won't print a
+ non-default file descriptor number. Fixes issue with `declare -f' and
+ function export reported by Namikaze Minato <lloydsensei@gmail.com>
+
+ 6/13
+ ----
+configure.ac
+ - bumped version to bash-5.2-rc1
+
+[bash-5.2-rc1 released]
+
+ 6/15
+ ----
+parse.y
+ - parse_string_to_word_list: save the parser state before any state-
+ changing functions like bash_history_disable(). Reported by
+ Clark Wang <dearvoid@gmail.com>
+
+ 6/16
+ ----
+doc/bash.1
+ - play tricks with the value of the zZ number register to refer to
+ `bash(1)' instead of `above' or `below' when creating the builtins
+ man page
+
+ 6/17
+ ----
+doc/{bash.1,bashref.texi}
+ - wait: note that wait will return > 128 if interrupted by a signal.
+ Reported by AA <aathan_github@memeplex.com>
+
+execute_cmd.c
+ - {execute_cond_node,execute_arith_command,eval_arith_for_expr}: make
+ sure to reset this_command_name after running any DEBUG trap so the
+ DEBUG trap doesn't overwrite it.
+ Reported by Emanuele Torre <torreemanuele6@gmail.com>.
+ - execute_select_command: set this_command_name to NULL after running
+ any DEBUG trap like execute_for_command does
+
+ 6/23
+ ----
+test.c
+ - three_arguments: when given [ ! ! arg ], make sure to advance POS
+ after calling two_arguments to avoid a `too many arguments' error.
+ Report from Steffen Nurpmeso <steffen@sdaoden.eu>
+
+ 6/27
+ ----
+subst.c
+ - expand_word_internal: when expanding backquoted command substitution,
+ call string_extract with the SX_REQMATCH flag (closing backquote
+ required) only if the word flags don't contain W_COMPLETE,
+ indicating that we're doing this for completion, probably to
+ determine whether or not to append something to the word. Fixes bug
+ reported by Emanuele Torre <torreemanuele6@gmail.com>.
+
+ 7/5
+ ---
+execute_cmd.c
+ - execute_connection: treat a connector of '\n' the same as ';'
+
+print_cmd.c
+ - print_comsub: new function, sets flag noting we are printing a
+ command substitution and calls make_command_string
+ - make_command_string_internal: add '\n' to the ';' case; print command
+ list with newline connector appropriately
+
+parse.y
+ - parse_comsub: call print_comsub instead of make_command_string
+ - list1 production (part of compound_list): if a list is separated by
+ newlines, and the parser is parsing a command substitution, make
+ the connection command with a '\n' connector. Makes the text
+ output of parse_comsub closer to the original source text. From a
+ report from Martijn Dekker <martijn@inlv.org>
+
+ 7/6
+ ---
+doc/bash.1,lib/readline/doc/rluser.texi
+ - complete: add note about arguments passed to command specified by
+ `complete -C'; suggested by Mark Chandler <mcp@synq.so>
+
+builtins/setattr.def
+ - show_local_var_attributes: special-case `local -', since there is
+ no `declare -' equivalent.
+ Reported by Emanuele Torre <torreemanuele6@gmail.com>.
+ - show_all_var_attributes: use `local -' when printing a variable named
+ `-' at the current non-zero variable context
+
+parse.y
+ - shell_getc: if we are at the end of an alias, returning a space,
+ make sure we mark the previous character as single-byte by modifying
+ shell_input_line_property so the space we return is properly
+ recognized. This would fail before if the last character of the
+ alias was a multi-byte character. Reported by
+ Vangelis Natsios <vnatsios@gmail.com>
+
+ 7/12
+ ----
+lib/readline/isearch.c
+ - rl_display_search: don't call rl_redisplay_function before returning;
+ rl_message already calls it. Reported by
+ Frédéric Moulins <frederic@moulins.org>
+
+configure.ac
+ - bumped version to bash-5.2-rc2
+
+ 7/18
+ ----
+jobs.c
+ - set_job_control: don't bother calling tcgetpgrp if shell_tty < 0,
+ since it will just fail
+
+variables.c
+ - reset_local_contexts: new function, delete all context tables
+ associated with shell functions and set variable_context to 0.
+ Called when we want to stop executing in a shell function without
+ going through the pop_context chain with its side effects
+
+variables.h
+ - reset_local_contexts: extern declaration
+
+builtins/evalstring.c
+ - parse_and_execute: call reset_local_contexts instead of setting
+ variable_context to 0
+
+eval.c
+ - reader_loop: call reset_local_contexts in cases where the shell has
+ longjmped for a fatal error and errexit is enabled (ERREXIT), but
+ not for other cases, and especially not for the exit builtin,
+ instead of just setting variable_context to 0. Fixes issue originally
+ reported by Robert Stoll <robert.stoll@tegonal.com>
+
+subst.c
+ - pat_subst: implement sed-like behavior when presented with a null
+ pattern that's anchored at the start or end of the string, or when
+ presented with a null string: process the replacement string for `&'
+ and `\&' and substitute in the result as before. Patch from
+ Koichi Murase <myoga.murase@gmail.com>
+
+ 7/20
+ ----
+
+[bash-5.2-rc2 frozen]
+
+ 7/27
+ ----
+parse.y
+ - reset_parser: set need_here_doc, esacs_needed_count, expecting_in_token
+ all to 0, since jumping back to a top-level parse needs that
+ - parse_comsub: make sure to reset expand_aliases and shell_eof_token
+ if we're not going to exit immediately out of this function
+
+ 7/28
+ ----
+parse.y
+ - parse_comsub: if the compatibility level is <= 51, set extglob while
+ parsing the command substitution, so bad pattern errors can still be
+ caught but valid patterns are let through and can be evaluated at
+ runtime, when extglob may have been set. If it isn't set, it will
+ still be a parser error when the command substitution is executed.
+ Fixes report from Sam James <sam@gentoo.org> about gentoo scripts.
+ - reset_parser: set extended_glob from global_extglob if the parser
+ state includes PST_CMDSUBST
+ - xparse_dolparen: set global_extglob but don't modify extended_glob,
+ so parse errors can be caught before forking a child for command
+ substitution, as part of word expansion, but after extglob may have
+ been set by command execution (e.g., in a shell function)
+
+ 8/5
+ ---
+[bump version to bash-5.2-rc3]
+
+ 8/6
+ ---
+trap.c
+ - run_pending_traps: move code from evalstring() so we call
+ parse_and_execute() directly and handle any `return' invocations so
+ we can restore the value of running_trap. Otherwise, if we longjmp
+ past this function, we will think we're running a trap after we
+ finish. Prompted by post from Koichi Murase <myoga.murase@gmail.com>
+
+ 8/9
+ ---
+
+lib/readline/nls.c
+ - _rl_current_locale: private variable, stores the value of the
+ LC_CTYPE locale category, as determined by _rl_init_locale; set
+ to allocated memory in _rl_init_locale()
+ - _rl_set_localevars: new function, code from _rl_init_eightbit that
+ checks the current locale (passed as an argument) and sets the
+ various locale-aware variables based on it. It accepts a second
+ argument: FORCE. If non-zero, it means to restore the default "C"
+ locale values if the locale is "C" or "POSIX", now that this
+ function can be called multiple times
+ - _rl_init_eightbit: now just calls _rl_init_locale and
+ _rl_set_localevars
+ - _rl_reset_locale: new function, checks whether our the locale has
+ changed since we last called _rl_init_locale to set our internal
+ idea of its value. If it has changed, call _rl_set_localevars with
+ the new locale and a FORCE argument of 1 to change the
+ locale-dependent variables.
+
+lib/readline/rlprivate.h
+ - _rl_reset_locale: extern declaration
+
+lib/readline/readline.c
+ - rl_initialize: call _rl_reset_locale instead of _rl_init_locale so
+ the internal readline variables get set when we move from a non-
+ multibyte locale ("C") to a multibyte one ("en_US.UTF-8"). Report
+ from Alan Coopersmith <alan.coopersmith@oracle.com>
+
+ 8/16
+ ----
+lib/sh/setlinebuf.c
+ - sh_setlinebuf: allocate buffers for line-buffering stdout and stderr
+ only once, the first time it is requested. Only allocate memory if
+ we're using setvbuf (we usually are). Double the buffer size to 2016
+ if we're using the bash malloc. Otherwise, let stdio handle it.
+
+ 8/17
+ ----
+builtins/exec.def
+ - exec_builtin: make sure to initialize orig_job_control in case the
+ command is not found by search_for_command. Report and fix from
+ Xiami <i@f2light.com>
+
+[bash-5.2-rc3 frozen]
+
+ 8/27
+ ----
+parse.y
+ - parse_comsub: restore extended_glob to a local copy (local_extglob)
+ only if we changed it; a safer way to do it. Fixes extglob change
+ issue reported by Kerin Millar <kfm@plushkava.net>
+ - cond_term: restore extended_glob to a local copy; safer than using
+ global_extglob, which we will reserve for error recovery
+
+ 8/30
+ ----
+parse.y
+ - parse_comsub: don't clear the pushed string list; we might need it to
+ consume additional input to satisfy this command substitution. When
+ we restore the parser state, don't restore the pushed string list in
+ case we used it. From
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1018727
+ - parse_comsub: don't modify extended_glob if parser_state includes
+ PST_EXTPAT, in which case we've already set extended_glob and
+ global_extglob appropriately. Only matters in compatibility mode.
+
+ 8/31
+ ----
+subst.c
+ - parameter_brace_transform: make sure we return an error if *xform
+ is '\0'. Report from Ivan Kapranov <koltiradw@yandex.ru>
+
+ 9/7
+ ---
+[bump version to bash-5.2-rc4]
+
+ 9/8
+ ---
+[bash-5.2-rc4 frozen]
+
+ 9/20
+ ----
+lib/readline/history.c
+ - replace_history_entry: check for a NULL timestamp before trying to
+ copy it. Report from nov.ondrej@gmail.com
+
+ 9/23
+ ----
+[bash-5.2 frozen]
diff --git a/INSTALL b/INSTALL
index 91f1dd9a..2033143a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -20,20 +20,28 @@ The simplest way to compile Bash is:
3. Optionally, type 'make tests' to run the Bash test suite.
4. Type 'make install' to install 'bash' and 'bashbug'. This will
- also install the manual pages and Info file.
+ also install the manual pages and Info file, message translation
+ files, some supplemental documentation, a number of example
+ loadable builtin commands, and a set of header files for developing
+ loadable builtins. You may need additional privileges to install
+ 'bash' to your desired destination, so 'sudo make install' might be
+ required. More information about controlling the locations where
+ 'bash' and other files are installed is below (*note Installation
+ Names::).
The 'configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a 'Makefile' in each directory of the package
-(the top directory, the 'builtins', 'doc', and 'support' directories,
-each directory under 'lib', and several others). It also creates a
-'config.h' file containing system-dependent definitions. Finally, it
-creates a shell script named 'config.status' that you can run in the
-future to recreate the current configuration, a file 'config.cache' that
-saves the results of its tests to speed up reconfiguring, and a file
-'config.log' containing compiler output (useful mainly for debugging
-'configure'). If at some point 'config.cache' contains results you
-don't want to keep, you may remove or edit it.
+(the top directory, the 'builtins', 'doc', 'po', and 'support'
+directories, each directory under 'lib', and several others). It also
+creates a 'config.h' file containing system-dependent definitions.
+Finally, it creates a shell script named 'config.status' that you can
+run in the future to recreate the current configuration, a file
+'config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file 'config.log' containing compiler output
+(useful mainly for debugging 'configure'). If at some point
+'config.cache' contains results you don't want to keep, you may remove
+or edit it.
To find out more about the options and arguments that the 'configure'
script understands, type
@@ -64,7 +72,7 @@ considered for the next release.
The file 'configure.ac' is used to create 'configure' by a program
called Autoconf. You only need 'configure.ac' if you want to change it
or regenerate 'configure' using a newer version of Autoconf. If you do
-this, make sure you are using Autoconf version 2.50 or newer.
+this, make sure you are using Autoconf version 2.69 or newer.
You can remove the program binaries and object files from the source
code directory by typing 'make clean'. To also remove the files that
@@ -101,7 +109,7 @@ need to supply the '--srcdir=PATH' argument to tell 'configure' where
the source files are. 'configure' automatically checks for the source
code in the directory that 'configure' is in and in '..'.
-If you have to use a 'make' that does not supports the 'VPATH' variable,
+If you have to use a 'make' that does not support the 'VPATH' variable,
you can compile Bash for one architecture at a time in the source code
directory. After you have installed Bash for one architecture, use
'make distclean' before reconfiguring for another architecture.
@@ -122,10 +130,13 @@ Installation Names
==================
By default, 'make install' will install into '/usr/local/bin',
-'/usr/local/man', etc. You can specify an installation prefix other
-than '/usr/local' by giving 'configure' the option '--prefix=PATH', or
-by specifying a value for the 'DESTDIR' 'make' variable when running
-'make install'.
+'/usr/local/man', etc.; that is, the "installation prefix" defaults to
+'/usr/local'. You can specify an installation prefix other than
+'/usr/local' by giving 'configure' the option '--prefix=PATH', or by
+specifying a value for the 'prefix' 'make' variable when running 'make
+install' (e.g., 'make install prefix=PATH'). The 'prefix' variable
+provides a default for 'exec_prefix' and other variables used when
+installing bash.
You can specify separate installation prefixes for architecture-specific
files and architecture-independent files. If you give 'configure' the
@@ -133,11 +144,35 @@ option '--exec-prefix=PATH', 'make install' will use PATH as the prefix
for installing programs and libraries. Documentation and other data
files will still use the regular prefix.
+If you would like to change the installation locations for a single run,
+you can specify these variables as arguments to 'make': 'make install
+exec_prefix=/' will install 'bash' and 'bashbug' into '/bin' instead of
+the default '/usr/local/bin'.
+
+If you want to see the files bash will install and where it will install
+them without changing anything on your system, specify the variable
+'DESTDIR' as an argument to 'make'. Its value should be the absolute
+directory path you'd like to use as the root of your sample installation
+tree. For example,
+
+ mkdir /fs1/bash-install
+ make install DESTDIR=/fs1/bash-install
+
+will install 'bash' into '/fs1/bash-install/usr/local/bin/bash', the
+documentation into directories within
+'/fs1/bash-install/usr/local/share', the example loadable builtins into
+'/fs1/bash-install/usr/local/lib/bash', and so on. You can use the
+usual 'exec_prefix' and 'prefix' variables to alter the directory paths
+beneath the value of 'DESTDIR'.
+
+The GNU Makefile standards provide a more complete description of these
+variables and their effects.
+
Specifying the System Type
==========================
There may be some features 'configure' can not figure out automatically,
-but need to determine by the type of host Bash will run on. Usually
+but needs to determine by the type of host Bash will run on. Usually
'configure' can figure that out, but if it prints a message saying it
can not guess the host type, give it the '--host=TYPE' option. 'TYPE'
can either be a short name for the system type, such as 'sun4', or a
@@ -235,16 +270,20 @@ the Bash 'configure' recognizes.
subdirectories of that directory (include files in PREFIX/'include'
and the library in PREFIX/'lib').
-'--with-purify'
- Define this to use the Purify memory allocation checker from
- Rational Software.
+'--with-libintl-prefix[=PREFIX]'
+ Define this to make Bash link with a locally-installed version of
+ the libintl library instead of the version in 'lib/intl'.
+
+'--with-libiconv-prefix[=PREFIX]'
+ Define this to make Bash look for libiconv in PREFIX instead of the
+ standard system locations. There is no version included with Bash.
'--enable-minimal-config'
This produces a shell with minimal features, close to the
historical Bourne shell.
-There are several '--enable-' options that alter how Bash is compiled
-and linked, rather than changing run-time features.
+There are several '--enable-' options that alter how Bash is compiled,
+linked, and installed, rather than changing run-time features.
'--enable-largefile'
Enable support for large files
@@ -257,6 +296,10 @@ and linked, rather than changing run-time features.
This builds a Bash binary that produces profiling information to be
processed by 'gprof' each time it is executed.
+'--enable-separate-helpfiles'
+ Use external files for the documentation displayed by the 'help'
+ builtin instead of storing the text internally.
+
'--enable-static-link'
This causes Bash to be linked statically, if 'gcc' is being used.
This could be used to build a version to use as root's shell.
@@ -265,14 +308,21 @@ The 'minimal-config' option can be used to disable all of the following
options, but it is processed first, so individual options may be enabled
using 'enable-FEATURE'.
-All of the following options except for 'disabled-builtins',
-'direxpand-default', and 'xpg-echo-default' are enabled by default,
-unless the operating system does not provide the necessary support.
+All of the following options except for 'alt-array-implementation',
+'disabled-builtins', 'direxpand-default', 'strict-posix-default', and
+'xpg-echo-default' are enabled by default, unless the operating system
+does not provide the necessary support.
'--enable-alias'
Allow alias expansion and include the 'alias' and 'unalias'
builtins (*note Aliases::).
+'--enable-alt-array-implementation'
+ This builds bash using an alternate implementation of arrays (*note
+ Arrays::) that provides faster access at the expense of using more
+ memory (sometimes many times more, depending on how sparse an array
+ is).
+
'--enable-arith-for-command'
Include support for the alternate form of the 'for' command that
behaves like the C language 'for' statement (*note Looping
@@ -292,7 +342,7 @@ unless the operating system does not provide the necessary support.
'--enable-casemod-attributes'
Include support for case-modifying attributes in the 'declare'
- builtin and assignment statements. Variables with the UPPERCASE
+ builtin and assignment statements. Variables with the 'uppercase'
attribute, for example, will have their values converted to
uppercase upon assignment.
@@ -351,7 +401,7 @@ unless the operating system does not provide the necessary support.
described above under *note Pattern Matching::.
'--enable-extended-glob-default'
- Set the default value of the EXTGLOB shell option described above
+ Set the default value of the 'extglob' shell option described above
under *note The Shopt Builtin:: to be enabled.
'--enable-function-import'
@@ -360,10 +410,10 @@ unless the operating system does not provide the necessary support.
enabled by default.
'--enable-glob-asciirange-default'
- Set the default value of the GLOBASCIIRANGES shell option described
- above under *note The Shopt Builtin:: to be enabled. This controls
- the behavior of character ranges when used in pattern matching
- bracket expressions.
+ Set the default value of the 'globasciiranges' shell option
+ described above under *note The Shopt Builtin:: to be enabled.
+ This controls the behavior of character ranges when used in pattern
+ matching bracket expressions.
'--enable-help-builtin'
Include the 'help' builtin, which displays help on shell builtins
@@ -414,10 +464,6 @@ unless the operating system does not provide the necessary support.
Include the 'select' compound command, which allows the generation
of simple menus (*note Conditional Constructs::).
-'--enable-separate-helpfiles'
- Use external files for the documentation displayed by the 'help'
- builtin instead of storing the text internally.
-
'--enable-single-help-strings'
Store the text displayed by the 'help' builtin as a single string
for each help topic. This aids in translating the text to
@@ -427,6 +473,10 @@ unless the operating system does not provide the necessary support.
'--enable-strict-posix-default'
Make Bash POSIX-conformant by default (*note Bash POSIX Mode::).
+'--enable-translatable-strings'
+ Enable support for '$"STRING"' translatable strings (*note Locale
+ Translation::).
+
'--enable-usg-echo-default'
A synonym for '--enable-xpg-echo-default'.
diff --git a/MANIFEST b/MANIFEST
index 54f327cf..a45b3cfc 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -22,6 +22,7 @@ examples/startup-files d
examples/misc d
examples/loadables d
examples/loadables/perl d
+examples/shellmath d
include d
lib d
lib/glob d
@@ -40,7 +41,7 @@ support d
tests d
tests/misc d
ABOUT-NLS f
-ChangeLog s CWRU/changelog
+ChangeLog c CWRU/changelog
CHANGES f
COMPAT f
COPYING f
@@ -61,6 +62,7 @@ config-bot.h f
config.h.in f
aclocal.m4 f
array.c f
+array2.c f
arrayfunc.c f
assoc.c f
eval.c f
@@ -146,10 +148,11 @@ redir.h f
bashtypes.h f
mailcheck.h f
xmalloc.h f
-y.tab.c f
-y.tab.h f
-parser-built f
pathnames.h.in f
+# order is important here
+y.tab.c F
+y.tab.h F
+parser-built F
builtins/Makefile.in f
builtins/alias.def f
builtins/bind.def f
@@ -203,11 +206,11 @@ builtins/umask.def f
builtins/wait.def f
builtins/psize.c f
builtins/psize.sh f
-builtins/inlib.def f
+#builtins/inlib.def f
builtins/bashgetopt.c f
builtins/common.h f
builtins/bashgetopt.h f
-cross-build/cygwin32.cache f
+#cross-build/cygwin32.cache f
cross-build/x86-beos.cache f
cross-build/opennt.cache f
cross-build/qnx.cache f
@@ -230,6 +233,7 @@ include/shtty.h f
include/stat-time.h f
include/stdc.h f
include/systimes.h f
+include/timer.h f
include/typemax.h f
include/unionwait.h f
lib/glob/Makefile.in f
@@ -366,6 +370,7 @@ lib/readline/posixdir.h f
lib/readline/posixjmp.h f
lib/readline/posixselect.h f
lib/readline/posixstat.h f
+lib/readline/posixtime.h f
lib/readline/ansi_stdlib.h f
lib/readline/rlstdc.h f
lib/readline/rlprivate.h f
@@ -449,6 +454,8 @@ lib/sh/strtoul.c f
lib/sh/strtoull.c f
lib/sh/strtoumax.c f
lib/sh/strtrans.c f
+lib/sh/strvis.c f
+lib/sh/timers.c f
lib/sh/times.c f
lib/sh/timeval.c f
lib/sh/tmpfile.c f
@@ -477,6 +484,7 @@ lib/tilde/Makefile.in f
lib/tilde/tilde.c f
lib/tilde/tilde.h f
lib/tilde/shell.c f
+m4/strtoimax.m4 f
m4/stat-time.m4 f
m4/timespec.m4 f
m4/codeset.m4 f
@@ -631,7 +639,6 @@ doc/bashref.info f
doc/bash.info f
doc/article.ms f
doc/htmlpost.sh f 755
-doc/infopost.sh f 755
doc/fdl.texi f
doc/fdl.txt f
#
@@ -710,6 +717,7 @@ examples/loadables/template.c f
examples/loadables/loadables.h f
examples/loadables/Makefile.in f
examples/loadables/Makefile.inc.in f
+examples/loadables/Makefile.sample.in f
examples/loadables/necho.c f
examples/loadables/hello.c f
examples/loadables/asort.c f
@@ -721,12 +729,13 @@ examples/loadables/setpgid.c f
examples/loadables/sleep.c f
examples/loadables/strftime.c f
examples/loadables/truefalse.c f
-#examples/loadables/getconf.h f
-#examples/loadables/getconf.c f
+examples/loadables/getconf.h f
+examples/loadables/getconf.c f
examples/loadables/fdflags.c f
examples/loadables/finfo.c f
examples/loadables/cat.c f
examples/loadables/csv.c f
+examples/loadables/dsv.c f
examples/loadables/cut.c f
examples/loadables/logname.c f
examples/loadables/basename.c f
@@ -819,6 +828,7 @@ examples/functions/which f
#examples/scripts/adventure.sh f
#examples/scripts/bash-hexdump.sh f
#examples/scripts/bcsh.sh f
+examples/scripts/bcalc f
examples/scripts/cat.sh f
examples/scripts/center f
#examples/scripts/dd-ex.sh f
@@ -862,6 +872,16 @@ examples/startup-files/bashrc f
examples/misc/aliasconv.sh f
examples/misc/aliasconv.bash f
examples/misc/cshtobash f
+examples/shellmath/LICENSE f
+examples/shellmath/README.md f
+examples/shellmath/assert.sh f
+examples/shellmath/faster_e_demo.sh f
+examples/shellmath/image.png f
+examples/shellmath/runTests.sh f
+examples/shellmath/shellmath.sh f
+examples/shellmath/slower_e_demo.sh f
+examples/shellmath/testCases.in f
+examples/shellmath/timingData.txt f
tests/README f
tests/COPYRIGHT f
tests/test-glue-functions f
@@ -871,6 +891,7 @@ tests/alias2.sub f
tests/alias3.sub f
tests/alias4.sub f
tests/alias5.sub f
+tests/alias6.sub f
tests/alias.right f
tests/appendop.tests f
tests/appendop1.sub f
@@ -918,6 +939,8 @@ tests/array25.sub f
tests/array26.sub f
tests/array27.sub f
tests/array28.sub f
+tests/array29.sub f
+tests/array30.sub f
tests/array-at-star f
tests/array2.right f
tests/assoc.tests f
@@ -933,6 +956,13 @@ tests/assoc8.sub f
tests/assoc9.sub f
tests/assoc10.sub f
tests/assoc11.sub f
+tests/assoc12.sub f
+tests/assoc13.sub f
+tests/assoc14.sub f
+tests/assoc15.sub f
+tests/assoc16.sub f
+tests/assoc17.sub f
+tests/assoc18.sub f
tests/attr.tests f
tests/attr.right f
tests/attr1.sub f
@@ -971,6 +1001,8 @@ tests/comsub1.sub f
tests/comsub2.sub f
tests/comsub3.sub f
tests/comsub4.sub f
+tests/comsub5.sub f
+tests/comsub6.sub f
tests/comsub-eof.tests f
tests/comsub-eof0.sub f
tests/comsub-eof1.sub f
@@ -985,6 +1017,8 @@ tests/comsub-posix.right f
tests/comsub-posix1.sub f
tests/comsub-posix2.sub f
tests/comsub-posix3.sub f
+tests/comsub-posix5.sub f
+tests/comsub-posix6.sub f
tests/cond.tests f
tests/cond.right f
tests/cond-regexp1.sub f
@@ -1010,6 +1044,8 @@ tests/dollar-at-star6.sub f
tests/dollar-at-star7.sub f
tests/dollar-at-star8.sub f
tests/dollar-at-star9.sub f
+tests/dollar-at-star10.sub f
+tests/dollar-at-star11.sub f
tests/dollar-at1.sub f
tests/dollar-at2.sub f
tests/dollar-at3.sub f
@@ -1044,6 +1080,7 @@ tests/errors5.sub f
tests/errors6.sub f
tests/errors7.sub f
tests/errors8.sub f
+tests/errors9.sub f
tests/execscript f
tests/exec.right f
tests/exec1.sub f 755
@@ -1074,6 +1111,7 @@ tests/exp9.sub f
tests/exp10.sub f
tests/exp11.sub f
tests/exp12.sub f
+tests/exp13.sub f
tests/exportfunc.tests f
tests/exportfunc.right f
tests/exportfunc1.sub f
@@ -1091,6 +1129,8 @@ tests/extglob3.tests f
tests/extglob3.right f
tests/extglob4.sub f
tests/extglob5.sub f
+tests/extglob6.sub f
+tests/extglob7.sub f
tests/func.tests f
tests/func.right f
tests/func1.sub f
@@ -1119,6 +1159,7 @@ tests/glob6.sub f
tests/glob7.sub f
tests/glob8.sub f
tests/glob9.sub f
+tests/glob10.sub f
tests/glob.right f
tests/globstar.tests f
tests/globstar.right f
@@ -1132,6 +1173,8 @@ tests/heredoc2.sub f
tests/heredoc3.sub f
tests/heredoc4.sub f
tests/heredoc5.sub f
+tests/heredoc6.sub f
+tests/heredoc7.sub f
tests/herestr.tests f
tests/herestr.right f
tests/herestr1.sub f
@@ -1152,6 +1195,7 @@ tests/history2.sub f
tests/history3.sub f
tests/history4.sub f
tests/history5.sub f
+tests/history6.sub f
tests/ifs.tests f
tests/ifs.right f
tests/ifs1.sub f
@@ -1183,6 +1227,7 @@ tests/lastpipe.right f
tests/lastpipe.tests f
tests/lastpipe1.sub f
tests/lastpipe2.sub f
+tests/lastpipe3.sub f
tests/mapfile.data f
tests/mapfile.right f
tests/mapfile.tests f
@@ -1212,6 +1257,8 @@ tests/nameref18.sub f
tests/nameref19.sub f
tests/nameref20.sub f
tests/nameref21.sub f
+tests/nameref22.sub f
+tests/nameref23.sub f
tests/nameref.right f
tests/new-exp.tests f
tests/new-exp1.sub f
@@ -1229,12 +1276,15 @@ tests/new-exp12.sub f
tests/new-exp13.sub f
tests/new-exp14.sub f
tests/new-exp15.sub f
+tests/new-exp16.sub f
tests/new-exp.right f
tests/nquote.tests f
tests/nquote.right f
tests/nquote1.sub f
tests/nquote2.sub f
tests/nquote3.sub f
+tests/nquote4.sub f
+tests/nquote5.sub f
tests/nquote1.tests f
tests/nquote1.right f
tests/nquote2.tests f
@@ -1285,6 +1335,13 @@ tests/quote1.sub f
tests/quote2.sub f
tests/quote3.sub f
tests/quote4.sub f
+tests/quotearray.right f
+tests/quotearray.tests f
+tests/quotearray1.sub f
+tests/quotearray2.sub f
+tests/quotearray3.sub f
+tests/quotearray4.sub f
+tests/quotearray5.sub f
tests/read.tests f
tests/read.right f
tests/read1.sub f
@@ -1293,6 +1350,8 @@ tests/read3.sub f
tests/read4.sub f
tests/read5.sub f
tests/read6.sub f
+tests/read7.sub f
+tests/read8.sub f
tests/redir.tests f
tests/redir.right f
tests/redir1.sub f
@@ -1385,6 +1444,7 @@ tests/run-precedence f
tests/run-printf f
tests/run-procsub f
tests/run-quote f
+tests/run-quotearray f
tests/run-read f
tests/run-redir f
tests/run-rhs-exp f
@@ -1421,6 +1481,7 @@ tests/tilde.tests f
tests/tilde.right f
tests/tilde2.tests f
tests/tilde2.right f
+tests/tilde3.sub f
tests/trap.tests f
tests/trap.right f
tests/trap1.sub f 755
@@ -1463,6 +1524,7 @@ tests/varenv18.sub f
tests/varenv19.sub f
tests/varenv20.sub f
tests/varenv21.sub f
+tests/varenv22.sub f
tests/version f
tests/version.mini f
tests/vredir.tests f
@@ -1474,6 +1536,7 @@ tests/vredir4.sub f
tests/vredir5.sub f
tests/vredir6.sub f
tests/vredir7.sub f
+tests/vredir8.sub f
tests/misc/dev-tcp.tests f
tests/misc/perf-script f
tests/misc/perftest f
diff --git a/Makefile.in b/Makefile.in
index 3e3a5d48..0b4df73a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,6 +1,6 @@
-# Makefile for bash-5.0, version 4.30
+# Makefile for bash-5.2, version 5.1
#
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -87,6 +87,11 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALLMODE= -m 0755
INSTALLMODE2 = -m 0555
+CTAGS = ctags
+CTAGSFLAGS = -x
+ETAGS = etags
+ETAGSFLAGS =
+
TESTSCRIPT = @TESTSCRIPT@
DEBUGGER_START_FILE = @DEBUGGER_START_FILE@
@@ -132,6 +137,7 @@ CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@
CPPFLAGS = @CPPFLAGS@
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG} ${MALLOC_DEBUG}
+STYLE_CFLAGS = @STYLE_CFLAGS@
DEFS = @DEFS@
LOCAL_DEFS = @LOCAL_DEFS@
@@ -147,7 +153,7 @@ LOCAL_LDFLAGS = @LOCAL_LDFLAGS@
SYSTEM_FLAGS = -DPROGRAM='"$(Program)"' -DCONF_HOSTTYPE='"$(Machine)"' -DCONF_OSTYPE='"$(OS)"' -DCONF_MACHTYPE='"$(MACHTYPE)"' -DCONF_VENDOR='"$(VENDOR)"' $(LOCALE_DEFS)
BASE_CCFLAGS = $(SYSTEM_FLAGS) $(LOCAL_DEFS) \
- $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES)
+ $(DEFS) $(LOCAL_CFLAGS) $(INCLUDES) $(STYLE_CFLAGS)
CCFLAGS = $(ADDON_CFLAGS) $(BASE_CCFLAGS) ${PROFILE_FLAGS} $(CPPFLAGS) $(CFLAGS)
@@ -170,7 +176,8 @@ GCC_LINT_FLAGS = -O -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wno-parentheses
-Wcast-align -Wstrict-prototypes -Wconversion -Wformat \
-Wformat-nonliteral -Wmissing-braces -Wuninitialized \
-Wmissing-declarations -Winline \
- -Wmissing-prototypes -Wtraditional -Wredundant-decls -pedantic
+ -Wmissing-prototypes -Wtraditional -Wredundant-decls \
+ -Wformat-security -pedantic
GCC_LINT_CFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(GCC_LINT_FLAGS)
@@ -232,7 +239,8 @@ SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \
${SH_LIBSRC}/fnxform.c ${SH_LIBSRC}/unicode.c \
${SH_LIBSRC}/wcswidth.c ${SH_LIBSRC}/wcsnwidth.c \
${SH_LIBSRC}/shmbchar.c ${SH_LIBSRC}/utf8.c \
- ${SH_LIBSRC}/random.c ${SH_LIBSRC}/gettimeofday.c
+ ${SH_LIBSRC}/random.c ${SH_LIBSRC}/gettimeofday.c \
+ ${SH_LIBSRC}/timers.c ${SH_LIBSRC}/strvis.c
SHLIB_LIB = -lsh
SHLIB_LIBNAME = libsh.a
@@ -420,11 +428,12 @@ BASHINCFILES = $(BASHINCDIR)/posixstat.h $(BASHINCDIR)/ansi_stdlib.h \
$(BASHINCDIR)/shtty.h $(BASHINCDIR)/typemax.h \
$(BASHINCDIR)/ocache.h
-LIBRARIES = $(GLOB_LIB) $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) $(TERMCAP_LIB) \
- $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LIBICONV) $(LOCAL_LIBS)
+LIBRARIES = $(GLOB_LIB) $(SHLIB_LIB) $(READLINE_LIB) $(HISTORY_LIB) \
+ $(TERMCAP_LIB) $(TILDE_LIB) $(MALLOC_LIB) $(INTL_LIB) $(LIBICONV) \
+ $(LOCAL_LIBS)
-LIBDEP = $(GLOB_DEP) $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) $(TERMCAP_DEP) \
- $(TILDE_DEP) $(MALLOC_DEP)
+LIBDEP = $(GLOB_DEP) $(SHLIB_DEP) $(INTL_DEP) $(READLINE_DEP) $(HISTORY_DEP) \
+ $(TERMCAP_DEP) $(TILDE_DEP) $(MALLOC_DEP)
LIBRARY_LDFLAGS = $(READLINE_LDFLAGS) $(HISTORY_LDFLAGS) $(GLOB_LDFLAGS) \
$(TILDE_LDFLAGS) $(MALLOC_LDFLAGS) $(SHLIB_LDFLAGS)
@@ -460,7 +469,8 @@ INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \
make_cmd.h subst.h sig.h externs.h builtins.h \
bashtypes.h xmalloc.h config-top.h config-bot.h \
bashintl.h bashansi.h bashjmp.h alias.h hashlib.h \
- conftypes.h unwind_prot.h jobs.h siglist.h
+ conftypes.h unwind_prot.h jobs.h siglist.h \
+ execute_cmd.h
INSTALLED_BUILTINS_HEADERS = bashgetopt.h common.h getopt.h
INSTALLED_INCFILES = posixstat.h ansi_stdlib.h filecntl.h posixdir.h \
memalloc.h stdc.h posixjmp.h posixwait.h posixtime.h systimes.h \
@@ -475,12 +485,14 @@ JOBS_O = @JOBS_O@
SIGLIST_O = @SIGLIST_O@
SIGNAMES_O = @SIGNAMES_O@
+ARRAY_O = @ARRAY_O@
+
# Matching object files.
OBJECTS = shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o $(GLOBO) \
dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o \
expr.o flags.o $(JOBS_O) subst.o hashcmd.o hashlib.o mailcheck.o \
trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o \
- alias.o array.o arrayfunc.o assoc.o braces.o bracecomp.o bashhist.o \
+ alias.o $(ARRAY_O) arrayfunc.o assoc.o braces.o bracecomp.o bashhist.o \
bashline.o $(SIGLIST_O) list.o stringlib.o locale.o findcmd.o redir.o \
pcomplete.o pcomplib.o syntax.o xmalloc.o $(SIGNAMES_O)
@@ -560,7 +572,7 @@ CREATED_MAKEFILES = Makefile builtins/Makefile doc/Makefile \
lib/readline/Makefile lib/glob/Makefile \
lib/sh/Makefile lib/tilde/Makefile lib/malloc/Makefile \
lib/termcap/Makefile examples/loadables/Makefile \
- examples/loadables/Makefile.inc \
+ examples/loadables/Makefile.inc examples/loadables/Makefile.sample \
examples/loadables/perl/Makefile support/Makefile \
lib/intl/Makefile po/Makefile po/Makefile.in
CREATED_HEADERS = signames.h config.h pathnames.h version.h y.tab.h \
@@ -578,13 +590,13 @@ LOADABLES_DIR = ${top_builddir}/examples/loadables
.made: $(Program) bashbug $(SDIR)/man2html$(EXEEXT)
@echo "$(Program) last made for a $(Machine) running $(OS)" >.made
-$(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP)
+$(Program): $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) .build
$(RM) $@
$(PURIFY) $(CC) $(BUILTINS_LDFLAGS) $(LIBRARY_LDFLAGS) $(LDFLAGS) -o $(Program) $(OBJECTS) $(LIBS)
ls -l $(Program)
-$(SIZE) $(Program)
-.build: $(SOURCES) config.h Makefile version.h $(VERSPROG)
+.build: $(SOURCES) config.h Makefile $(DEFDIR)/builtext.h version.h $(VERSPROG)
@echo
@echo " ***********************************************************"
@echo " * *"
@@ -604,16 +616,18 @@ strip: $(Program) .made
-$(SIZE) $(Program)
lint:
- ${MAKE} ${MFLAGS} CFLAGS='${GCC_LINT_FLAGS}' .made
+ ${MAKE} ${MFLAGS} ADDON_CFLAGS='${GCC_LINT_FLAGS}' .made
asan:
${MAKE} ${MFLAGS} ADDON_CFLAGS='${ASAN_XCFLAGS}' ADDON_LDFLAGS='${ASAN_XLDFLAGS}' .made
+valgrind:
+ ${MAKE} ${MFLAGS} ADDON_CFLAGS='-DDISABLE_MALLOC_WRAPPERS' ADDON_LDFLAGS= .made
+
# cheating
gcov:
${MAKE} ${MFLAGS} CFLAGS=-g ADDON_CFLAGS='${GCOV_XCFLAGS}' ADDON_LDFLAGS='${GCOV_XLDFLAGS}' .made
-
# have to make this separate because making tests depend on $(PROGRAM)
asan-tests: asan $(TESTS_SUPPORT)
@-test -d tests || mkdir tests
@@ -649,6 +663,7 @@ ${GRAM_H}: y.tab.h
y.tab.c: parse.y
# -if test -f y.tab.h; then mv -f y.tab.h old-y.tab.h; fi
$(YACC) -d $(srcdir)/parse.y
+ $(RM) parser-built
touch parser-built
# -if cmp -s old-y.tab.h y.tab.h; then mv old-y.tab.h y.tab.h; else cp -p y.tab.h ${GRAM_H}; fi
@@ -733,7 +748,7 @@ syntax.c: mksyntax${EXEEXT} $(srcdir)/syntax.h
$(RM) $@
./mksyntax$(EXEEXT) -o $@
-$(BUILTINS_LIBRARY): $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h $(DEFDIR)/builtext.h version.h
+$(BUILTINS_LIBRARY): $(DEFDIR)/builtext.h $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h version.h
@(cd $(DEFDIR) && $(MAKE) $(MFLAGS) DEBUG=${DEBUG} targets ) || exit 1
# these require special rules to circumvent make builtin rules
@@ -746,7 +761,7 @@ ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c
${DEFDIR}/builtext.h: $(BUILTIN_DEFS)
@(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1
-${DEFDIR}/pipesize.h:
+${DEFDIR}/pipesize.h: ${BUILTINS_LIBRARY}
@(cd $(DEFDIR) && $(MAKE) $(MFLAGS) pipesize.h ) || exit 1
$(SDIR)/man2html$(EXEEXT): ${SUPPORT_SRC}/man2html.c
@@ -807,10 +822,10 @@ force:
# unused
TAGS: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)
- etags $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)
+ ( cd $(topdir) && $(ETAGS) $(ETAGSFLAGS) $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) )
tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)
- ctags -x $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@
+ ( cd $(topdir) && $(CTAGS) $(CTAGSFLAGS) $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE) > $@ )
# Targets that actually do things not part of the build
@@ -986,6 +1001,7 @@ hashtest: hashlib.c
# Files that depend on the definitions in config-top.h, which are not meant
# to be changed
array.o: $(srcdir)/config-top.h
+array2.o: $(srcdir)/config-top.h
bashhist.o: $(srcdir)/config-top.h
shell.o: $(srcdir)/config-top.h
input.o: $(srcdir)/config-top.h
@@ -1204,7 +1220,7 @@ trap.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h arra
trap.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h parser.h
trap.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h
trap.o: signames.h $(DEFSRC)/common.h
-trap.o: ${DEFDIR}/builtext.h jobs.h
+trap.o: ${DEFDIR}/builtext.h builtins.h jobs.h
unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h
unwind_prot.o: general.h xmalloc.h unwind_prot.h quit.h sig.h
unwind_prot.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h error.h
@@ -1249,6 +1265,13 @@ array.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
array.o: make_cmd.h subst.h sig.h pathnames.h externs.h
array.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h
array.o: $(DEFSRC)/common.h
+array2.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
+array2.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
+array2.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
+array2.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
+array2.o: make_cmd.h subst.h sig.h pathnames.h externs.h
+array2.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h
+array2.o: $(DEFSRC)/common.h
arrayfunc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
@@ -1281,18 +1304,24 @@ alias.o: ${BASHINCDIR}/chartypes.h
pcomplib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h
pcomplib.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h
-pcomplib.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h
+pcomplib.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h
+pcomplib.o: arrayfunc.h conftypes.h quit.h
pcomplib.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h
pcomplib.o: externs.h ${BASHINCDIR}/maxpath.h assoc.h array.h
pcomplib.o: ${BASHINCDIR}/posixjmp.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h
pcomplete.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h
pcomplete.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h
-pcomplete.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h
+pcomplete.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h
+pcomplete.o: execute_cmd.h pathexp.h arrayfunc.h conftypes.h quit.h trap.h
+pcomplete.o: jobs.h siglist.h bashline.h alias.h
+pcomplete.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h
+pcomplete.o: ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/posixstat.h
pcomplete.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h
pcomplete.o: externs.h ${BASHINCDIR}/maxpath.h execute_cmd.h
pcomplete.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
-pcomplete.o: ${DEFDIR}/builtext.h
+pcomplete.o: builtins.h ${DEFDIR}/builtext.h ${DEFSRC}/common.h
+pcomplete.o: ${GLOB_LIBSRC}/glob.h ${GLOB_LIBSRC}/strmatch.h
# library support files
@@ -1350,6 +1379,10 @@ variables.o: $(RL_LIBSRC)/rltypedefs.h
jobs.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h
jobs.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h
jobs.o: $(RL_LIBSRC)/rltypedefs.h
+pcomplete.o: $(RL_LIBSRC)/rlconf.h
+pcomplete.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/rlstdc.h
+pcomplete.o: $(RL_LIBSRC)/chardefs.h $(RL_LIBSRC)/readline.h
+pcomplete.o: $(RL_LIBSRC)/rltypedefs.h ${RL_LIBSRC}/rlmbutil.h
shell.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
variables.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
@@ -1357,12 +1390,14 @@ subst.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
bashline.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
bashhist.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
y.tab.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
+pcomplete.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
bashline.o: $(TILDE_LIBSRC)/tilde.h
bracecomp.o: $(TILDE_LIBSRC)/tilde.h
execute_cmd.o: $(TILDE_LIBSRC)/tilde.h
general.o: $(TILDE_LIBSRC)/tilde.h
mailcheck.o: $(TILDE_LIBSRC)/tilde.h
+pcomplete.o: $(TILDE_LIBSRC)/tilde.h
shell.o: $(TILDE_LIBSRC)/tilde.h
subst.o: $(TILDE_LIBSRC)/tilde.h
variables.o: $(TILDE_LIBSRC)/tilde.h
@@ -1435,7 +1470,7 @@ builtins/evalstring.o: ${BASHINCDIR}/memalloc.h variables.h arrayfunc.h conftype
builtins/evalstring.o: quit.h unwind_prot.h ${BASHINCDIR}/maxpath.h jobs.h builtins.h
builtins/evalstring.o: dispose_cmd.h make_cmd.h subst.h externs.h
builtins/evalstring.o: jobs.h builtins.h flags.h input.h execute_cmd.h
-builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h pathnames.h
+builtins/evalstring.o: bashhist.h $(DEFSRC)/common.h pathnames.h redir.h
builtins/evalstring.o: ${DEFDIR}/builtext.h
builtins/getopt.o: config.h ${BASHINCDIR}/memalloc.h
builtins/getopt.o: shell.h syntax.h bashjmp.h command.h general.h xmalloc.h error.h
@@ -1486,6 +1521,7 @@ builtins/declare.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.
builtins/declare.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
builtins/declare.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
builtins/declare.o: $(DEFSRC)/bashgetopt.h pathnames.h flags.h
+builtins/declare.o: ${DEFDIR}/builtext.h
builtins/echo.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
builtins/echo.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
builtins/echo.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
@@ -1510,6 +1546,7 @@ builtins/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h x
builtins/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
builtins/exit.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
builtins/exit.o: pathnames.h execute_cmd.h
+builtins/exit.o: ${DEFDIR}/builtext.h
builtins/fc.o: bashtypes.h ${BASHINCDIR}/posixstat.h
builtins/fc.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h builtins.h command.h ${BASHINCDIR}/stdc.h
builtins/fc.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
@@ -1568,6 +1605,7 @@ builtins/pushd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h
builtins/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
builtins/pushd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
builtins/pushd.o: $(DEFSRC)/common.h pathnames.h
+builtins/pushd.o: ${DEFDIR}/builtext.h
builtins/read.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
builtins/read.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
builtins/read.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
diff --git a/NEWS b/NEWS
index a6170be8..62d22127 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,174 @@
+This is a terse description of the new features added to bash-5.2 since
+the release of bash-5.1. As always, the manual page (doc/bash.1) is
+the place to look for complete descriptions.
+
+1. New Features in Bash
+
+a. The bash malloc returns memory that is aligned on 16-byte boundaries.
+
+b. There is a new internal timer framework used for read builtin timeouts.
+
+c. Rewrote the command substitution parsing code to call the parser recursively
+ and rebuild the command string from the parsed command. This allows better
+ syntax checking and catches errors much earlier. Along with this, if
+ command substitution parsing completes with here-documents remaining to be
+ read, the shell prints a warning message and reads the here-document bodies
+ from the current input stream.
+
+d. The `ulimit' builtin now treats an operand remaining after all of the options
+ and arguments are parsed as an argument to the last command specified by
+ an option. This is for POSIX compatibility.
+
+e. Here-document parsing now handles $'...' and $"..." quoting when reading the
+ here-document body.
+
+f. The `shell-expand-line' and `history-and-alias-expand-line' bindable readline
+ commands now understand $'...' and $"..." quoting.
+
+g. There is a new `spell-correct-word' bindable readline command to perform
+ spelling correction on the current word.
+
+h. The `unset' builtin now attempts to treat arguments as array subscripts
+ without parsing or expanding the subscript, even when `assoc_expand_once'
+ is not set.
+
+i. There is a default value for $BASH_LOADABLES_PATH in config-top.h.
+
+j. Associative array assignment and certain instances of referencing (e.g.,
+ `test -v' now allow `@' and `*' to be used as keys.
+
+k. Bash attempts to expand indexed array subscripts only once when executing
+ shell constructs and word expansions.
+
+l. The `unset' builtin allows a subscript of `@' or `*' to unset a key with
+ that value for associative arrays instead of unsetting the entire array
+ (which you can still do with `unset arrayname'). For indexed arrays, it
+ removes all elements of the array without unsetting it (like `A=()').
+
+m. Additional builtins (printf/test/read/wait) do a better job of not
+ parsing array subscripts if array_expand_once is set.
+
+n. New READLINE_ARGUMENT variable set to numeric argument for readline commands
+ defined using `bind -x'.
+
+o. The new `varredir_close' shell option causes bash to automatically close
+ file descriptors opened with {var}<fn and other styles of varassign
+ redirection unless they're arguments to the `exec' builtin.
+
+p. The `$0' special parameter is now set to the name of the script when running
+ any (non-interactive) startup files such as $BASH_ENV.
+
+q. The `enable' builtin tries to load a loadable builtin using the default
+ search path if `enable name' (without any options) attempts to enable a
+ non-existent builtin.
+
+r. The `printf' builtin has a new format specifier: %Q. This acts like %q but
+ applies any specified precision to the original unquoted argument, then
+ quotes and outputs the result.
+
+s. The new `noexpand_translations' option controls whether or not the translated
+ output of $"..." is single-quoted.
+
+t. There is a new parameter transformation operator: @k. This is like @K, but
+ expands the result to separate words after word splitting.
+
+u. There is an alternate array implementation, selectable at `configure' time,
+ that optimizes access speed over memory use (use the new configure
+ --enable-alt-array-implementation option).
+
+v. If an [N]<&WORD- or [N]>&WORD- redirection has WORD expand to the empty
+ string, treat the redirection as [N]<&- or [N]>&- and close file descriptor
+ N (default 0).
+
+w. Invalid parameter transformation operators are now invalid word expansions,
+ and so cause fatal errors in non-interactive shells.
+
+x. New shell option: patsub_replacement. When enabled, a `&' in the replacement
+ string of the pattern substitution expansion is replaced by the portion of
+ the string that matched the pattern. Backslash will escape the `&' and
+ insert a literal `&'.
+
+y. `command -p' no longer looks in the hash table for the specified command.
+
+z. The new `--enable-translatable-strings' option to `configure' allows $"..."
+ support to be compiled in or out.
+
+aa. The new `globskipdots' shell option forces pathname expansion never to
+ return `.' or `..' unless explicitly matched. It is enabled by default.
+
+bb. Array references using `@' and `*' that are the value of nameref variables
+ (declare -n ref='v[@]' ; echo $ref) no longer cause the shell to exit if
+ set -u is enabled and the array (v) is unset.
+
+cc. There is a new bindable readline command name:
+ `vi-edit-and-execute-command'.
+
+dd. In posix mode, the `printf' builtin checks for the `L' length modifier and
+ uses long double for floating point conversion specifiers if it's present,
+ double otherwise.
+
+ee. The `globbing' completion code now takes the `globstar' option into account.
+
+ff. `suspend -f' now forces the shell to suspend even if job control is not
+ currently enabled.
+
+gg. Since there is no `declare -' equivalent of `local -', make sure to use
+ `local -' in the output of `local -p'.
+
+2. New Features in Readline
+
+a. There is now an HS_HISTORY_VERSION containing the version number of the
+ history library for applications to use.
+
+b. History expansion better understands multiple history expansions that may
+ contain strings that would ordinarily inhibit history expansion (e.g.,
+ `abc!$!$').
+
+c. There is a new framework for readline timeouts, including new public
+ functions to set timeouts and query how much time is remaining before a
+ timeout hits, and a hook function that can trigger when readline times
+ out. There is a new state value to indicate a timeout.
+
+d. Automatically bind termcap key sequences for page-up and page-down to
+ history-search-backward and history-search-forward, respectively.
+
+e. There is a new `fetch-history' bindable command that retrieves the history
+ entry corresponding to its numeric argument. Negative arguments count back
+ from the end of the history.
+
+f. `vi-undo' is now a bindable command.
+
+g. There is a new option: `enable-active-region'. This separates control of
+ the active region and bracketed-paste. It has the same default value as
+ bracketed-paste, and enabling bracketed paste enables the active region.
+ Users can now turn off the active region while leaving bracketed paste
+ enabled.
+
+h. rl_completer_word_break_characters is now `const char *' like
+ rl_basic_word_break_characters.
+
+i. Readline looks in $LS_COLORS for a custom filename extension
+ (*.readline-colored-completion-prefix) and uses that as the default color
+ for the common prefix displayed when `colored-completion-prefix' is set.
+
+j. Two new bindable string variables: active-region-start-color and
+ active-region-end-color. The first sets the color used to display the
+ active region; the second turns it off. If set, these are used in place
+ of terminal standout mode.
+
+k. New readline state (RL_STATE_EOF) and application-visible variable
+ (rl_eof_found) to allow applications to detect when readline reads EOF
+ before calling the deprep-terminal hook.
+
+l. There is a new configuration option: --with-shared-termcap-library, which
+ forces linking the shared readline library with the shared termcap (or
+ curses/ncurses/termlib) library so applications don't have to do it.
+
+m. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG)
+ each time it is called, and modifies the appropriate locale-specific display
+ and key binding variables when the locale changes.
+
+-------------------------------------------------------------------------------
This is a terse description of the new features added to bash-5.1 since
the release of bash-5.0. As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.
@@ -916,7 +1087,7 @@ l. There is a new configuration option (in config-top.h) that forces bash to
m. A new variable $BASHOPTS to export shell options settable using `shopt' to
child processes.
-n. There is a new confgure option that forces the extglob option to be
+n. There is a new configure option that forces the extglob option to be
enabled by default.
o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
@@ -963,7 +1134,7 @@ d. New bindable function: skip-csi-sequence. Can be used as a default to
to bind all keys.
e. New application-settable function: rl_filename_rewrite_hook. Can be used
- to rewite or modify filenames read from the file system before they are
+ to rewrite or modify filenames read from the file system before they are
compared to the word to be completed.
f. New bindable variable: skip-completed-text, active when completing in the
diff --git a/POSIX b/POSIX
index 24114af1..4e78dbb7 100644
--- a/POSIX
+++ b/POSIX
@@ -33,203 +33,219 @@ The following list is what's changed when 'POSIX mode' is in effect:
7. Reserved words appearing in a context where reserved words are
recognized do not undergo alias expansion.
- 8. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
+ 8. Alias expansion is performed when initially parsing a command
+ substitution. The default mode generally defers it, when enabled,
+ until the command substitution is executed. This means that
+ command substitution will not expand aliases that are defined after
+ the command substitution is initially parsed (e.g., as part of a
+ function definition).
+
+ 9. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
and '!!' to '!' are enabled, and parameter expansion is performed
on the values of 'PS1' and 'PS2' regardless of the setting of the
'promptvars' option.
- 9. The POSIX startup files are executed ('$ENV') rather than the
+ 10. The POSIX startup files are executed ('$ENV') rather than the
normal Bash files.
- 10. Tilde expansion is only performed on assignments preceding a
+ 11. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
- 11. The default history file is '~/.sh_history' (this is the default
+ 12. The default history file is '~/.sh_history' (this is the default
value of '$HISTFILE').
- 12. Redirection operators do not perform filename expansion on the
+ 13. Redirection operators do not perform filename expansion on the
word in the redirection unless the shell is interactive.
- 13. Redirection operators do not perform word splitting on the word in
+ 14. Redirection operators do not perform word splitting on the word in
the redirection.
- 14. Function names must be valid shell 'name's. That is, they may not
+ 15. Function names must be valid shell 'name's. That is, they may not
contain characters other than letters, digits, and underscores, and
may not start with a digit. Declaring a function with an invalid
name causes a fatal syntax error in non-interactive shells.
- 15. Function names may not be the same as one of the POSIX special
+ 16. Function names may not be the same as one of the POSIX special
builtins.
- 16. POSIX special builtins are found before shell functions during
+ 17. POSIX special builtins are found before shell functions during
command lookup.
- 17. When printing shell function definitions (e.g., by 'type'), Bash
+ 18. When printing shell function definitions (e.g., by 'type'), Bash
does not print the 'function' keyword.
- 18. Literal tildes that appear as the first character in elements of
+ 19. Literal tildes that appear as the first character in elements of
the 'PATH' variable are not expanded as described above under *note
Tilde Expansion::.
- 19. The 'time' reserved word may be used by itself as a command. When
+ 20. The 'time' reserved word may be used by itself as a command. When
used in this way, it displays timing statistics for the shell and
its completed children. The 'TIMEFORMAT' variable controls the
format of the timing information.
- 20. When parsing and expanding a ${...} expansion that appears within
+ 21. When parsing and expanding a ${...} expansion that appears within
double quotes, single quotes are no longer special and cannot be
used to quote a closing brace or other special character, unless
the operator is one of those defined to perform pattern removal.
In this case, they do not have to appear as matched pairs.
- 21. The parser does not recognize 'time' as a reserved word if the
+ 22. The parser does not recognize 'time' as a reserved word if the
next token begins with a '-'.
- 22. The '!' character does not introduce history expansion within a
+ 23. The '!' character does not introduce history expansion within a
double-quoted string, even if the 'histexpand' option is enabled.
- 23. If a POSIX special builtin returns an error status, a
+ 24. If a POSIX special builtin returns an error status, a
non-interactive shell exits. The fatal errors are those listed in
the POSIX standard, and include things like passing incorrect
options, redirection errors, variable assignment errors for
assignments preceding the command name, and so on.
- 24. A non-interactive shell exits with an error status if a variable
+ 25. A non-interactive shell exits with an error status if a variable
assignment error occurs when no command name follows the assignment
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
- 25. A non-interactive shell exits with an error status if a variable
+ 26. A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a
- special builtin, but not with any other simple command.
+ special builtin, but not with any other simple command. For any
+ other simple command, the shell aborts execution of that command,
+ and execution continues at the top level ("the shell shall not
+ perform any further processing of the command in which the error
+ occurred").
- 26. A non-interactive shell exits with an error status if the
+ 27. A non-interactive shell exits with an error status if the
iteration variable in a 'for' statement or the selection variable
in a 'select' statement is a readonly variable.
- 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not
+ 28. Non-interactive shells exit if FILENAME in '.' FILENAME is not
found.
- 28. Non-interactive shells exit if a syntax error in an arithmetic
+ 29. Non-interactive shells exit if a syntax error in an arithmetic
expansion results in an invalid expression.
- 29. Non-interactive shells exit if a parameter expansion error occurs.
+ 30. Non-interactive shells exit if a parameter expansion error occurs.
- 30. Non-interactive shells exit if there is a syntax error in a script
+ 31. Non-interactive shells exit if there is a syntax error in a script
read with the '.' or 'source' builtins, or in a string processed by
the 'eval' builtin.
- 31. While variable indirection is available, it may not be applied to
+ 32. While variable indirection is available, it may not be applied to
the '#' and '?' special parameters.
- 32. When expanding the '*' special parameter in a pattern context
- where the expansion is double-quoted does not treat the '$*' as if
- it were double-quoted.
+ 33. Expanding the '*' special parameter in a pattern context where the
+ expansion is double-quoted does not treat the '$*' as if it were
+ double-quoted.
- 33. Assignment statements preceding POSIX special builtins persist in
+ 34. Assignment statements preceding POSIX special builtins persist in
the shell environment after the builtin completes.
- 34. The 'command' builtin does not prevent builtins that take
+ 35. The 'command' builtin does not prevent builtins that take
assignment statements as arguments from expanding them as
assignment statements; when not in POSIX mode, assignment builtins
lose their assignment statement expansion properties when preceded
by 'command'.
- 35. The 'bg' builtin uses the required format to describe each job
+ 36. The 'bg' builtin uses the required format to describe each job
placed in the background, which does not include an indication of
whether the job is the current or previous job.
- 36. The output of 'kill -l' prints all the signal names on a single
+ 37. The output of 'kill -l' prints all the signal names on a single
line, separated by spaces, without the 'SIG' prefix.
- 37. The 'kill' builtin does not accept signal names with a 'SIG'
+ 38. The 'kill' builtin does not accept signal names with a 'SIG'
prefix.
- 38. The 'export' and 'readonly' builtin commands display their output
+ 39. The 'export' and 'readonly' builtin commands display their output
in the format required by POSIX.
- 39. The 'trap' builtin displays signal names without the leading
+ 40. The 'trap' builtin displays signal names without the leading
'SIG'.
- 40. The 'trap' builtin doesn't check the first argument for a possible
+ 41. The 'trap' builtin doesn't check the first argument for a possible
signal specification and revert the signal handling to the original
disposition if it is, unless that argument consists solely of
digits and is a valid signal number. If users want to reset the
handler for a given signal to the original disposition, they should
use '-' as the first argument.
- 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL
+ 42. 'trap -p' displays signals whose dispositions are set to SIG_DFL
and those that were ignored when the shell started.
- 42. The '.' and 'source' builtins do not search the current directory
+ 43. The '.' and 'source' builtins do not search the current directory
for the filename argument if it is not found by searching 'PATH'.
- 43. Enabling POSIX mode has the effect of setting the
+ 44. Enabling POSIX mode has the effect of setting the
'inherit_errexit' option, so subshells spawned to execute command
substitutions inherit the value of the '-e' option from the parent
shell. When the 'inherit_errexit' option is not enabled, Bash
clears the '-e' option in such subshells.
- 44. Enabling POSIX mode has the effect of setting the 'shift_verbose'
+ 45. Enabling POSIX mode has the effect of setting the 'shift_verbose'
option, so numeric arguments to 'shift' that exceed the number of
positional parameters will result in an error message.
- 45. When the 'alias' builtin displays alias definitions, it does not
+ 46. When the 'alias' builtin displays alias definitions, it does not
display them with a leading 'alias ' unless the '-p' option is
supplied.
- 46. When the 'set' builtin is invoked without options, it does not
+ 47. When the 'set' builtin is invoked without options, it does not
display shell function names and definitions.
- 47. When the 'set' builtin is invoked without options, it displays
+ 48. When the 'set' builtin is invoked without options, it displays
variable values without quotes, unless they contain shell
metacharacters, even if the result contains nonprinting characters.
- 48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname
+ 49. When the 'cd' builtin is invoked in logical mode, and the pathname
constructed from '$PWD' and the directory name supplied as an
argument does not refer to an existing directory, 'cd' will fail
- instead of falling back to PHYSICAL mode.
+ instead of falling back to physical mode.
- 49. When the 'cd' builtin cannot change a directory because the length
+ 50. When the 'cd' builtin cannot change a directory because the length
of the pathname constructed from '$PWD' and the directory name
- supplied as an argument exceeds PATH_MAX when all symbolic links
+ supplied as an argument exceeds 'PATH_MAX' when all symbolic links
are expanded, 'cd' will fail instead of attempting to use only the
supplied directory name.
- 50. The 'pwd' builtin verifies that the value it prints is the same as
+ 51. The 'pwd' builtin verifies that the value it prints is the same as
the current directory, even if it is not asked to check the file
system with the '-P' option.
- 51. When listing the history, the 'fc' builtin does not include an
+ 52. When listing the history, the 'fc' builtin does not include an
indication of whether or not a history entry has been modified.
- 52. The default editor used by 'fc' is 'ed'.
+ 53. The default editor used by 'fc' is 'ed'.
- 53. The 'type' and 'command' builtins will not report a non-executable
+ 54. The 'type' and 'command' builtins will not report a non-executable
file as having been found, though the shell will attempt to execute
such a file if it is the only so-named file found in '$PATH'.
- 54. The 'vi' editing mode will invoke the 'vi' editor directly when
+ 55. The 'vi' editing mode will invoke the 'vi' editor directly when
the 'v' command is run, instead of checking '$VISUAL' and
'$EDITOR'.
- 55. When the 'xpg_echo' option is enabled, Bash does not attempt to
+ 56. When the 'xpg_echo' option is enabled, Bash does not attempt to
interpret any arguments to 'echo' as options. Each argument is
displayed, after escape characters are converted.
- 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
+ 57. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
and '-f' options.
- 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
+ 58. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
interrupt the 'wait' builtin and cause it to return immediately.
The trap command is run once for each child that exits.
- 58. The 'read' builtin may be interrupted by a signal for which a trap
+ 59. The 'read' builtin may be interrupted by a signal for which a trap
has been set. If Bash receives a trapped signal while executing
'read', the trap handler executes and 'read' returns an exit status
greater than 128.
- 59. Bash removes an exited background process's status from the list
+ 60. The 'printf' builtin uses 'double' (via 'strtod') to convert
+ arguments corresponding to floating point conversion specifiers,
+ instead of 'long double' if it's available. The 'L' length
+ modifier forces 'printf' to use 'long double' if it's available.
+
+ 61. Bash removes an exited background process's status from the list
of such statuses after the 'wait' builtin is used to obtain it.
There is other POSIX behavior that Bash does not implement by default
diff --git a/RBASH b/RBASH
index 9732c769..7d0a5e8d 100644
--- a/RBASH
+++ b/RBASH
@@ -29,7 +29,8 @@ with the exception that the following are disallowed or not performed:
* Using the 'enable' builtin command to enable disabled shell
builtins.
* Specifying the '-p' option to the 'command' builtin.
- * Turning off restricted mode with 'set +r' or 'set +o restricted'.
+ * Turning off restricted mode with 'set +r' or 'shopt -u
+ restricted_shell'.
These restrictions are enforced after any startup files are read.
@@ -40,10 +41,10 @@ spawned to execute the script.
The restricted shell mode is only one component of a useful restricted
environment. It should be accompanied by setting 'PATH' to a value that
allows execution of only a few verified commands (commands that allow
-shell escapes are particularly vulnerable), leaving the user in a
-non-writable directory other than his home directory after login, not
-allowing the restricted shell to execute shell scripts, and cleaning the
-environment of variables that cause some commands to modify their
+shell escapes are particularly vulnerable), changing the current
+directory to a non-writable directory other than '$HOME' after login,
+not allowing the restricted shell to execute shell scripts, and cleaning
+the environment of variables that cause some commands to modify their
behavior (e.g., 'VISUAL' or 'PAGER').
Modern systems provide more secure ways to implement a restricted
diff --git a/README b/README
index 70b7a851..90d0be5b 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
Introduction
============
-This is GNU Bash, version 5.1. Bash is the GNU Project's Bourne
+This is GNU Bash, version 5.2. Bash is the GNU Project's Bourne
Again SHell, a complete implementation of the POSIX shell spec,
but also with interactive command line editing, job control on
architectures that support it, csh-like features such as history
@@ -15,8 +15,8 @@ See the file POSIX for a discussion of how the Bash defaults differ
from the POSIX spec and a description of the Bash `posix mode'.
There are some user-visible incompatibilities between this version
-of Bash and previous widely-distributed versions, bash-4.4 and
-bash-5.0. For details, see the file COMPAT. The NEWS file tersely
+of Bash and previous widely-distributed versions, bash-4.4, bash-5.0,
+and bash-5.1. For details, see the file COMPAT. The NEWS file tersely
lists features that are new in this release.
Bash is free software, distributed under the terms of the [GNU] General
@@ -25,7 +25,7 @@ version 3 of the License (or any later version). For more information,
see the file COPYING.
A number of frequently-asked questions are answered in the file
-`doc/FAQ'.
+`doc/FAQ'. (That file is no longer updated.)
To compile Bash, type `./configure', then `make'. Bash auto-configures
the build process, so no further intervention should be necessary. Bash
@@ -94,12 +94,13 @@ Other Packages
This distribution includes, in examples/bash-completion, a recent version
of the `bash-completion' package, which provides programmable completions
for a number of commands. It's available as a package in many distributions,
-and that is the first place from which to obtain it. If it's not a package
-from your vendor, you may install the included version.
+and that is the first place from which to obtain it.
The latest version of bash-completion is always available from
https://github.com/scop/bash-completion.
+If it's not a package from your vendor, you may install the included version.
+
Enjoy!
Chet Ramey
diff --git a/aclocal.m4 b/aclocal.m4
index 6899e820..cc97bd4b 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -3,55 +3,8 @@ dnl Bash specific tests
dnl
dnl Some derived from PDKSH 5.1.3 autoconf tests
dnl
-
-AC_DEFUN(BASH_C_LONG_LONG,
-[AC_CACHE_CHECK(for long long, ac_cv_c_long_long,
-[if test "$GCC" = yes; then
- ac_cv_c_long_long=yes
-else
-AC_TRY_RUN([
-#include <stdlib.h>
-int
-main()
-{
-long long foo = 0;
-exit(sizeof(long long) < sizeof(long));
-}
-], ac_cv_c_long_long=yes, ac_cv_c_long_long=no)
-fi])
-if test $ac_cv_c_long_long = yes; then
- AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.])
-fi
-])
-
+dnl Copyright (C) 1987-2021 Free Software Foundation, Inc.
dnl
-dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX
-dnl (< changed to <=) added.
-dnl
-AC_DEFUN(BASH_C_LONG_DOUBLE,
-[AC_CACHE_CHECK(for long double, ac_cv_c_long_double,
-[if test "$GCC" = yes; then
- ac_cv_c_long_double=yes
-else
-AC_TRY_RUN([
-#include <stdlib.h>
-int
-main()
-{
- /* The Stardent Vistra knows sizeof(long double), but does not
- support it. */
- long double foo = 0.0;
- /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
- /* On IRIX 5.3, the compiler converts long double to double with a warning,
- but compiles this successfully. */
- exit(sizeof(long double) <= sizeof(double));
-}
-], ac_cv_c_long_double=yes, ac_cv_c_long_double=no)
-fi])
-if test $ac_cv_c_long_double = yes; then
- AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.])
-fi
-])
dnl
dnl Check for <inttypes.h>. This is separated out so that it can be
@@ -72,13 +25,14 @@ dnl
dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
AC_DEFUN(BASH_CHECK_TYPE,
[
-AC_REQUIRE([AC_HEADER_STDC])dnl
AC_REQUIRE([BASH_HEADER_INTTYPES])
AC_MSG_CHECKING(for $1)
AC_CACHE_VAL(bash_cv_type_$1,
[AC_EGREP_CPP($1, [#include <sys/types.h>
-#if STDC_HEADERS
+#if HAVE_STDLIB_H
#include <stdlib.h>
+#endif
+#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#if HAVE_INTTYPES_H
@@ -106,32 +60,14 @@ dnl AC_CHECK_DECL
dnl
AC_DEFUN(BASH_CHECK_DECL,
[
-AC_REQUIRE([AC_HEADER_STDC])
AC_REQUIRE([BASH_HEADER_INTTYPES])
-AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1,
-[AC_TRY_LINK(
-[
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-],
-[return !$1;],
-bash_cv_decl_$1=yes, bash_cv_decl_$1=no)])
-bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-if test $bash_cv_decl_$1 = yes; then
- AC_DEFINE_UNQUOTED($bash_tr_func, 1)
-else
- AC_DEFINE_UNQUOTED($bash_tr_func, 0)
-fi
+AC_CHECK_DECLS([$1])
])
AC_DEFUN(BASH_DECL_PRINTF,
[AC_MSG_CHECKING(for declaration of printf in <stdio.h>)
AC_CACHE_VAL(bash_cv_printf_declared,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#ifdef __STDC__
typedef int (*_bashfunc)(const char *, ...);
@@ -146,7 +82,7 @@ _bashfunc pf;
pf = (_bashfunc) printf;
exit(pf == 0);
}
-], bash_cv_printf_declared=yes, bash_cv_printf_declared=no,
+]])], [bash_cv_printf_declared=yes], [bash_cv_printf_declared=no],
[AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes)
bash_cv_printf_declared=yes]
)])
@@ -173,13 +109,13 @@ dnl
AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST,
[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h])
AC_CACHE_VAL(bash_cv_decl_under_sys_siglist,
-[AC_TRY_COMPILE([
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <signal.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif], [ char *msg = _sys_siglist[2]; ],
- bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no,
+#endif]], [[ char *msg = _sys_siglist[2]; ]])],
+ [bash_cv_decl_under_sys_siglist=yes], [bash_cv_decl_under_sys_siglist=no],
[AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl
AC_MSG_RESULT($bash_cv_decl_under_sys_siglist)
if test $bash_cv_decl_under_sys_siglist = yes; then
@@ -191,7 +127,7 @@ AC_DEFUN(BASH_UNDER_SYS_SIGLIST,
[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
AC_MSG_CHECKING([for _sys_siglist in system C library])
AC_CACHE_VAL(bash_cv_under_sys_siglist,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
#include <signal.h>
#ifdef HAVE_UNISTD_H
@@ -206,21 +142,34 @@ main()
{
char *msg = (char *)_sys_siglist[2];
exit(msg == 0);
-}],
- bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no,
+}
+]])],
+ [bash_cv_under_sys_siglist=yes], [bash_cv_under_sys_siglist=no],
[AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)
- bash_cv_under_sys_siglist=no])])
+ bash_cv_under_sys_siglist=no]
+)])
AC_MSG_RESULT($bash_cv_under_sys_siglist)
if test $bash_cv_under_sys_siglist = yes; then
AC_DEFINE(HAVE_UNDER_SYS_SIGLIST)
fi
])
+dnl this defines HAVE_DECL_SYS_SIGLIST
+AC_DEFUN([BASH_DECL_SYS_SIGLIST],
+[AC_CHECK_DECLS([sys_siglist],,,
+[#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h. */
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+])
+])
+
AC_DEFUN(BASH_SYS_SIGLIST,
-[AC_REQUIRE([AC_DECL_SYS_SIGLIST])
+[AC_REQUIRE([BASH_DECL_SYS_SIGLIST])
AC_MSG_CHECKING([for sys_siglist in system C library])
AC_CACHE_VAL(bash_cv_sys_siglist,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
#include <signal.h>
#ifdef HAVE_UNISTD_H
@@ -235,10 +184,11 @@ main()
{
char *msg = sys_siglist[2];
exit(msg == 0);
-}],
- bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no,
+}
+]])], [bash_cv_sys_siglist=yes], [bash_cv_sys_siglist=no],
[AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no)
- bash_cv_sys_siglist=no])])
+ bash_cv_sys_siglist=no]
+)])
AC_MSG_RESULT($bash_cv_sys_siglist)
if test $bash_cv_sys_siglist = yes; then
AC_DEFINE(HAVE_SYS_SIGLIST)
@@ -263,11 +213,15 @@ dnl Check for sys_errlist[] and sys_nerr, check for declaration
AC_DEFUN(BASH_SYS_ERRLIST,
[AC_MSG_CHECKING([for sys_errlist and sys_nerr])
AC_CACHE_VAL(bash_cv_sys_errlist,
-[AC_TRY_LINK([#include <errno.h>],
-[extern char *sys_errlist[];
- extern int sys_nerr;
- char *msg = sys_errlist[sys_nerr - 1];],
- bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <errno.h>
+]],[[
+extern char *sys_errlist[];
+extern int sys_nerr;
+char *msg = sys_errlist[sys_nerr - 1];
+]] )],
+[bash_cv_sys_errlist=yes], [bash_cv_sys_errlist=no]
+)])
AC_MSG_RESULT($bash_cv_sys_errlist)
if test $bash_cv_sys_errlist = yes; then
AC_DEFINE(HAVE_SYS_ERRLIST)
@@ -280,7 +234,7 @@ dnl
AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK,
[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag)
AC_CACHE_VAL(bash_cv_dup2_broken,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
#include <fcntl.h>
#include <stdlib.h>
@@ -298,10 +252,10 @@ main()
/* fl will be 1 if dup2 did not reset the close-on-exec flag. */
exit(fl != 1);
}
-], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no,
+]])], [bash_cv_dup2_broken=yes], [bash_cv_dup2_broken=no],
[AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no)
- bash_cv_dup2_broken=no])
-])
+ bash_cv_dup2_broken=no]
+)])
AC_MSG_RESULT($bash_cv_dup2_broken)
if test $bash_cv_dup2_broken = yes; then
AC_DEFINE(DUP2_BROKEN)
@@ -311,11 +265,12 @@ fi
AC_DEFUN(BASH_FUNC_STRSIGNAL,
[AC_MSG_CHECKING([for the existence of strsignal])
AC_CACHE_VAL(bash_cv_have_strsignal,
-[AC_TRY_LINK([#include <sys/types.h>
+[AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[#include <sys/types.h>
#include <signal.h>
-#include <string.h>],
-[char *s = (char *)strsignal(2);],
- bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
+#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)
if test $bash_cv_have_strsignal = yes; then
AC_DEFINE(HAVE_STRSIGNAL)
@@ -327,7 +282,7 @@ AC_DEFUN(BASH_FUNC_OPENDIR_CHECK,
[AC_REQUIRE([AC_HEADER_DIRENT])dnl
AC_MSG_CHECKING(if opendir() opens non-directories)
AC_CACHE_VAL(bash_cv_opendir_not_robust,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
@@ -370,7 +325,8 @@ dir = opendir("bash-aclocal/not_a_directory");
unlink("bash-aclocal/not_a_directory");
rmdir("bash-aclocal");
exit (dir == 0);
-}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no,
+}
+]])], [bash_cv_opendir_not_robust=yes], [bash_cv_opendir_not_robust=no],
[AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no)
bash_cv_opendir_not_robust=no]
)])
@@ -381,26 +337,6 @@ fi
])
dnl
-AC_DEFUN(BASH_TYPE_SIGHANDLER,
-[AC_MSG_CHECKING([whether signal handlers are of type void])
-AC_CACHE_VAL(bash_cv_void_sighandler,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-void (*signal ()) ();],
-[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl
-AC_MSG_RESULT($bash_cv_void_sighandler)
-if test $bash_cv_void_sighandler = yes; then
-AC_DEFINE(VOID_SIGHANDLER)
-fi
-])
-
-dnl
dnl A signed 16-bit integer quantity
dnl
AC_DEFUN(BASH_TYPE_BITS16_T,
@@ -487,82 +423,98 @@ else
fi
])
-AC_DEFUN(BASH_TYPE_LONG_LONG,
-[
-AC_CACHE_CHECK([for long long], bash_cv_type_long_long,
-[AC_TRY_LINK([
-long long ll = 1; int i = 63;],
-[
-long long llm = (long long) -1;
-return ll << i | ll >> i | llm / ll | llm % ll;
-], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')])
-if test "$bash_cv_type_long_long" = 'long long'; then
- AC_DEFINE(HAVE_LONG_LONG, 1)
-fi
+AC_DEFUN(BASH_SIZEOF_RLIMIT,
+[AC_MSG_CHECKING(for size of struct rlimit fields)
+AC_CACHE_VAL(bash_cv_sizeof_rlim_cur,
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#include <stdlib.h>
+#include <sys/resource.h>
+main()
+{
+struct rlimit r;
+exit(sizeof (r.rlim_cur));
+}
+]])], [bash_cv_sizeof_rlim_cur=$?], [bash_cv_sizeof_rlim_cur=$?],
+ [AC_MSG_WARN(cannot check size of rlimit fields if cross compiling -- defaulting to long)
+ bash_cv_sizeof_rlim_cur=$ac_cv_sizeof_long]
+)])
+AC_MSG_RESULT($bash_cv_sizeof_rlim_cur)
])
-AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG,
-[
-AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long,
-[AC_TRY_LINK([
-unsigned long long ull = 1; int i = 63;],
-[
-unsigned long long ullmax = (unsigned long long) -1;
-return ull << i | ull >> i | ullmax / ull | ullmax % ull;
-], bash_cv_type_unsigned_long_long='unsigned long long',
- bash_cv_type_unsigned_long_long='unsigned long')])
-if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
- AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1)
-fi
+AC_DEFUN(BASH_SIZEOF_QUAD_T,
+[AC_MSG_CHECKING(for size of quad_t)
+AC_CACHE_VAL(bash_cv_sizeof_quad_t,
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#include <sys/types.h>
+#include <stdlib.h>
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+main()
+{
+#if HAVE_QUAD_T
+quad_t x;
+exit(sizeof (x));
+#else
+exit (0);
+#endif
+}
+]])], [bash_cv_sizeof_quad_t=$?], [bash_cv_sizeof_quad_t=$?],
+ [AC_MSG_WARN(cannot check size of quad_t if cross compiling -- defaulting to 0)
+ bash_cv_sizeof_quad_t=0]
+)])
+AC_MSG_RESULT($bash_cv_sizeof_quad_t)
])
dnl
-dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0)
-dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use
-dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify
-dnl matters, this just checks for rlim_t, quad_t, or long.
+dnl Type of struct rlimit fields: updated to check POSIX rlim_t and
+dnl if it doesn't exist determine the best guess based on sizeof(r.rlim_cur)
dnl
AC_DEFUN(BASH_TYPE_RLIMIT,
-[AC_MSG_CHECKING(for size and type of struct rlimit fields)
+[AC_MSG_CHECKING(for type of struct rlimit fields)
AC_CACHE_VAL(bash_cv_type_rlimit,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/resource.h>],
-[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
-AC_TRY_RUN([
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <stdlib.h>
-int
-main()
-{
-#ifdef HAVE_QUAD_T
- struct rlimit rl;
- if (sizeof(rl.rlim_cur) == sizeof(quad_t))
- exit(0);
-#endif
- exit(1);
-}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long,
- [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long)
- bash_cv_type_rlimit=long])])
-])
-AC_MSG_RESULT($bash_cv_type_rlimit)
-if test $bash_cv_type_rlimit = quad_t; then
-AC_DEFINE(RLIMTYPE, quad_t)
-elif test $bash_cv_type_rlimit = rlim_t; then
-AC_DEFINE(RLIMTYPE, rlim_t)
+#include <sys/resource.h>]],
+[[rlim_t xxx;]]
+)],
+ [bash_cv_type_rlimit=rlim_t], [
+BASH_SIZEOF_RLIMIT
+BASH_SIZEOF_QUAD_T
+if test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long; then
+ bash_cv_type_rlimit='unsigned long'
+elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long_long; then
+ bash_cv_type_rlimit='unsigned long long'
+elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_int; then
+ bash_cv_type_rlimit='unsigned int'
+elif test $bash_cv_sizeof_rlim_cur = $bash_cv_sizeof_quad_t; then
+ bash_cv_type_rlimit='quad_t'
+else
+ bash_cv_type_rlimit='unsigned long'
fi
+]
+)])
+AC_MSG_RESULT($bash_cv_type_rlimit)
+AC_DEFINE_UNQUOTED([RLIMTYPE], [$bash_cv_type_rlimit])
])
AC_DEFUN(BASH_TYPE_SIG_ATOMIC_T,
[AC_CACHE_CHECK([for sig_atomic_t in signal.h], ac_cv_have_sig_atomic_t,
-[AC_TRY_LINK([
-#include <signal.h>
-],[ sig_atomic_t x; ],
-ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)])
+[AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[ #include <signal.h> ]],
+ [[ sig_atomic_t x; ]])],
+ [ac_cv_have_sig_atomic_t=yes],[ac_cv_have_sig_atomic_t=no])])
if test "$ac_cv_have_sig_atomic_t" = "no"
then
- AC_CHECK_TYPE(sig_atomic_t,int)
+ BASH_CHECK_TYPE(sig_atomic_t, [#include <signal.h>], int)
fi
])
@@ -570,11 +522,13 @@ AC_DEFUN(BASH_FUNC_LSTAT,
[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an
dnl inline function in <sys/stat.h>.
AC_CACHE_CHECK([for lstat], bash_cv_func_lstat,
-[AC_TRY_LINK([
-#include <sys/types.h>
-#include <sys/stat.h>
-],[ lstat(".",(struct stat *)0); ],
-bash_cv_func_lstat=yes, bash_cv_func_lstat=no)])
+[AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ ]],
+ [[ lstat(".",(struct stat *)0); ]])],
+ [bash_cv_func_lstat=yes],[bash_cv_func_lstat=no])])
if test $bash_cv_func_lstat = yes; then
AC_DEFINE(HAVE_LSTAT)
fi
@@ -583,12 +537,12 @@ fi
AC_DEFUN(BASH_FUNC_INET_ATON,
[
AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton,
-[AC_TRY_LINK([
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
-struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ],
-bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)])
+struct in_addr ap;]], [[ inet_aton("127.0.0.1", &ap); ]])],
+[bash_cv_func_inet_aton=yes], [bash_cv_func_inet_aton=no])])
if test $bash_cv_func_inet_aton = yes; then
AC_DEFINE(HAVE_INET_ATON)
else
@@ -599,7 +553,7 @@ fi
AC_DEFUN(BASH_FUNC_GETENV,
[AC_MSG_CHECKING(to see if getenv can be redefined)
AC_CACHE_VAL(bash_cv_getenv_redef,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
@@ -632,7 +586,7 @@ exit(1);
s = getenv("ABCDE");
exit(s == 0); /* force optimizer to leave getenv in */
}
-], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no,
+]])], [bash_cv_getenv_redef=yes], [bash_cv_getenv_redef=no],
[AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes)
bash_cv_getenv_redef=yes]
)])
@@ -645,12 +599,13 @@ fi
# We should check for putenv before calling this
AC_DEFUN(BASH_FUNC_STD_PUTENV,
[
-AC_REQUIRE([AC_HEADER_STDC])
AC_REQUIRE([AC_C_PROTOTYPES])
AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv,
-[AC_TRY_LINK([
-#if STDC_HEADERS
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#if HAVE_STDLIB_H
#include <stdlib.h>
+#endif
+#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#ifndef __STDC__
@@ -663,9 +618,8 @@ extern int putenv (char *);
#else
extern int putenv ();
#endif
-],
-[return (putenv == 0);],
-bash_cv_std_putenv=yes, bash_cv_std_putenv=no
+]], [[return (putenv == 0);]] )],
+[bash_cv_std_putenv=yes], [bash_cv_std_putenv=no]
)])
if test $bash_cv_std_putenv = yes; then
AC_DEFINE(HAVE_STD_PUTENV)
@@ -675,12 +629,13 @@ fi
# We should check for unsetenv before calling this
AC_DEFUN(BASH_FUNC_STD_UNSETENV,
[
-AC_REQUIRE([AC_HEADER_STDC])
AC_REQUIRE([AC_C_PROTOTYPES])
AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv,
-[AC_TRY_LINK([
-#if STDC_HEADERS
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#if HAVE_STDLIB_H
#include <stdlib.h>
+#endif
+#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#ifndef __STDC__
@@ -693,9 +648,8 @@ extern int unsetenv (const char *);
#else
extern int unsetenv ();
#endif
-],
-[return (unsetenv == 0);],
-bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no
+]], [[return (unsetenv == 0);]] )],
+[bash_cv_std_unsetenv=yes], [bash_cv_std_unsetenv=no]
)])
if test $bash_cv_std_unsetenv = yes; then
AC_DEFINE(HAVE_STD_UNSETENV)
@@ -705,7 +659,7 @@ fi
AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS,
[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize)
AC_CACHE_VAL(bash_cv_ulimit_maxfds,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdlib.h>
#ifdef HAVE_ULIMIT_H
#include <ulimit.h>
@@ -716,7 +670,7 @@ main()
long maxfds = ulimit(4, 0L);
exit (maxfds == -1L);
}
-], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no,
+]])], [bash_cv_ulimit_maxfds=yes], [bash_cv_ulimit_maxfds=no],
[AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no)
bash_cv_ulimit_maxfds=no]
)])
@@ -729,7 +683,7 @@ fi
AC_DEFUN(BASH_FUNC_GETCWD,
[AC_MSG_CHECKING([if getcwd() will dynamically allocate memory with 0 size])
AC_CACHE_VAL(bash_cv_getcwd_malloc,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@@ -743,7 +697,7 @@ main()
xpwd = getcwd(0, 0);
exit (xpwd == 0);
}
-], bash_cv_getcwd_malloc=yes, bash_cv_getcwd_malloc=no,
+]])], [bash_cv_getcwd_malloc=yes], [bash_cv_getcwd_malloc=no],
[AC_MSG_WARN(cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no)
bash_cv_getcwd_malloc=no]
)])
@@ -756,7 +710,7 @@ fi
dnl
dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every
-dnl system, we can't use AC_PREREQ
+dnl system, we can't use AC_PREREQ. Only called if we need the socket library
dnl
AC_DEFUN(BASH_FUNC_GETHOSTBYNAME,
[if test "X$bash_cv_have_gethostbyname" = "X"; then
@@ -766,11 +720,14 @@ AC_MSG_CHECKING(for gethostbyname in socket library)
_bash_needmsg=
fi
AC_CACHE_VAL(bash_cv_have_gethostbyname,
-[AC_TRY_LINK([#include <netdb.h>],
-[ struct hostent *hp;
- hp = gethostbyname("localhost");
-], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)]
-)
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <netdb.h>
+]], [[
+struct hostent *hp;
+hp = gethostbyname("localhost");
+]] )],
+[bash_cv_have_gethostbyname=yes], [bash_cv_have_gethostbyname=no]
+)])
if test "X$_bash_needmsg" = Xyes; then
AC_MSG_CHECKING(for gethostbyname in socket library)
fi
@@ -783,7 +740,7 @@ fi
AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH,
[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH)
AC_CACHE_VAL(bash_cv_fnm_extmatch,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <fnmatch.h>
int
@@ -795,10 +752,10 @@ main()
return (1);
#endif
}
-], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no,
+]])], [bash_cv_fnm_extmatch=yes], [bash_cv_fnm_extmatch=no],
[AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no)
- bash_cv_fnm_extmatch=no])
-])
+ bash_cv_fnm_extmatch=no]
+)])
AC_MSG_RESULT($bash_cv_fnm_extmatch)
if test $bash_cv_fnm_extmatch = yes; then
AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH)
@@ -809,7 +766,7 @@ AC_DEFUN(BASH_FUNC_POSIX_SETJMP,
[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp)
AC_CACHE_VAL(bash_cv_func_sigsetjmp,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@@ -826,21 +783,30 @@ exit (1);
#else
int code;
-sigset_t set, oset;
+sigset_t set, oset, nset;
sigjmp_buf xx;
/* get the mask */
sigemptyset(&set);
sigemptyset(&oset);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
+
sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
+/* paranoia -- make sure SIGINT is not blocked */
+sigdelset (&oset, SIGINT);
+sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
/* save it */
code = sigsetjmp(xx, 1);
if (code)
- exit(0); /* could get sigmask and compare to oset here. */
+{
+ sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &nset);
+ /* could compare nset to oset here, but we just look for SIGINT */
+ if (sigismember (&nset, SIGINT))
+ exit(1);
+ exit(0);
+}
-/* change it */
+/* change it so that SIGINT is blocked */
sigaddset(&set, SIGINT);
sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
@@ -848,9 +814,14 @@ sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
siglongjmp(xx, 10);
exit(1);
#endif
-}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
- [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing)
- bash_cv_func_sigsetjmp=missing]
+}
+]])], [bash_cv_func_sigsetjmp=present], [bash_cv_func_sigsetjmp=missing],
+ [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals)
+ if test "$bash_cv_posix_signals" = "yes" ; then
+ bash_cv_func_sigsetjmp=present
+ else
+ bash_cv_func_sigsetjmp=missing
+ fi]
)])
AC_MSG_RESULT($bash_cv_func_sigsetjmp)
if test $bash_cv_func_sigsetjmp = present; then
@@ -859,10 +830,9 @@ fi
])
AC_DEFUN(BASH_FUNC_STRCOLL,
-[
-AC_MSG_CHECKING(whether or not strcoll and strcmp differ)
+[AC_MSG_CHECKING(whether or not strcoll and strcmp differ)
AC_CACHE_VAL(bash_cv_func_strcoll_broken,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#if defined (HAVE_LOCALE_H)
#include <locale.h>
@@ -900,7 +870,7 @@ char *v[];
in the default locale. */
exit (r1 > 0 && r2 > 0);
}
-], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no,
+]])], [bash_cv_func_strcoll_broken=yes], [bash_cv_func_strcoll_broken=no],
[AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no)
bash_cv_func_strcoll_broken=no]
)])
@@ -913,7 +883,7 @@ fi
AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT,
[AC_MSG_CHECKING([for printf floating point output in hex notation])
AC_CACHE_VAL(bash_cv_printf_a_format,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -927,7 +897,7 @@ main()
sprintf(abuf, "%A", y);
exit(strchr(abuf, 'P') == (char *)0);
}
-], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no,
+]])], [bash_cv_printf_a_format=yes], [bash_cv_printf_a_format=no],
[AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no)
bash_cv_printf_a_format=no]
)])
@@ -964,12 +934,10 @@ AC_DEFUN(BASH_STRUCT_ST_BLOCKS,
[
AC_MSG_CHECKING([for struct stat.st_blocks])
AC_CACHE_VAL(bash_cv_struct_stat_st_blocks,
-[AC_TRY_COMPILE(
-[
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/stat.h>
-],
-[
+]], [[
int
main()
{
@@ -977,7 +945,7 @@ static struct stat a;
if (a.st_blocks) return 0;
return 0;
}
-], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no)
+]])], [bash_cv_struct_stat_st_blocks=yes], [bash_cv_struct_stat_st_blocks=no])
])
AC_MSG_RESULT($bash_cv_struct_stat_st_blocks)
if test "$bash_cv_struct_stat_st_blocks" = "yes"; then
@@ -1022,7 +990,8 @@ elif test $bash_cv_termcap_lib = libc; then
TERMCAP_LIB=
TERMCAP_DEP=
else
-TERMCAP_LIB=-lcurses
+# we assume ncurses is installed somewhere the linker can find it
+TERMCAP_LIB=-lncurses
TERMCAP_DEP=
fi
])
@@ -1077,11 +1046,12 @@ if test $bash_cv_have_socklib = yes; then
fi
])
-AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,
-[AC_REQUIRE([AC_HEADER_DIRENT])
-AC_MSG_CHECKING(for struct dirent.d_ino)
-AC_CACHE_VAL(bash_cv_dirent_has_dino,
-[AC_TRY_COMPILE([
+dnl like _AC_STRUCT_DIRENT(MEMBER) but public
+AC_DEFUN(BASH_STRUCT_DIRENT,
+[
+AC_REQUIRE([AC_HEADER_DIRENT])
+AC_CHECK_MEMBERS(struct dirent.$1, bash_cv_dirent_has_$1=yes, bash_cv_dirent_has_$1=no,
+[[
#include <stdio.h>
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
@@ -1101,11 +1071,15 @@ AC_CACHE_VAL(bash_cv_dirent_has_dino,
# include <ndir.h>
# endif
#endif /* HAVE_DIRENT_H */
-],[
-struct dirent d; int z; z = d.d_ino;
-], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)])
-AC_MSG_RESULT($bash_cv_dirent_has_dino)
-if test $bash_cv_dirent_has_dino = yes; then
+]])
+])
+
+AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,
+[AC_REQUIRE([AC_HEADER_DIRENT])
+AC_MSG_CHECKING(for struct dirent.d_ino)
+AC_CACHE_VAL(bash_cv_dirent_has_d_ino, [BASH_STRUCT_DIRENT([d_ino])])
+AC_MSG_RESULT($bash_cv_dirent_has_d_ino)
+if test $bash_cv_dirent_has_d_ino = yes; then
AC_DEFINE(HAVE_STRUCT_DIRENT_D_INO)
fi
])
@@ -1113,30 +1087,7 @@ fi
AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO,
[AC_REQUIRE([AC_HEADER_DIRENT])
AC_MSG_CHECKING(for struct dirent.d_fileno)
-AC_CACHE_VAL(bash_cv_dirent_has_d_fileno,
-[AC_TRY_COMPILE([
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-],[
-struct dirent d; int z; z = d.d_fileno;
-], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)])
+AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, [BASH_STRUCT_DIRENT([d_fileno])])
AC_MSG_RESULT($bash_cv_dirent_has_d_fileno)
if test $bash_cv_dirent_has_d_fileno = yes; then
AC_DEFINE(HAVE_STRUCT_DIRENT_D_FILENO)
@@ -1146,30 +1097,7 @@ fi
AC_DEFUN(BASH_STRUCT_DIRENT_D_NAMLEN,
[AC_REQUIRE([AC_HEADER_DIRENT])
AC_MSG_CHECKING(for struct dirent.d_namlen)
-AC_CACHE_VAL(bash_cv_dirent_has_d_namlen,
-[AC_TRY_COMPILE([
-#include <stdio.h>
-#include <sys/types.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#if defined(HAVE_DIRENT_H)
-# include <dirent.h>
-#else
-# define dirent direct
-# ifdef HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* SYSNDIR */
-# ifdef HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* SYSDIR */
-# ifdef HAVE_NDIR_H
-# include <ndir.h>
-# endif
-#endif /* HAVE_DIRENT_H */
-],[
-struct dirent d; int z; z = d.d_namlen;
-], bash_cv_dirent_has_d_namlen=yes, bash_cv_dirent_has_d_namlen=no)])
+AC_CACHE_VAL(bash_cv_dirent_has_d_namlen, [BASH_STRUCT_DIRENT([d_namlen])])
AC_MSG_RESULT($bash_cv_dirent_has_d_namlen)
if test $bash_cv_dirent_has_d_namlen = yes; then
AC_DEFINE(HAVE_STRUCT_DIRENT_D_NAMLEN)
@@ -1213,16 +1141,47 @@ if test $bash_cv_struct_timezone = yes; then
fi
])
+AC_DEFUN(BASH_CHECK_WINSIZE_IOCTL,
+[AC_CACHE_VAL(bash_cv_struct_winsize_ioctl,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+#include <sys/ioctl.h>
+]],
+[[
+struct winsize x;
+if (sizeof (x) > 0) return (0);
+]] )], [bash_cv_struct_winsize_ioctl=yes], [bash_cv_struct_winsize_ioctl=no])
+])
+])
+
+AC_DEFUN(BASH_CHECK_WINSIZE_TERMIOS,
+[AC_CACHE_VAL(bash_cv_struct_winsize_termios,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+#include <sys/termios.h>
+]],
+[[
+struct winsize x;
+if (sizeof (x) > 0) return (0);
+]] )], [bash_cv_struct_winsize_termios=yes], [bash_cv_struct_winsize_termios=no])
+])
+])
+
AC_DEFUN(BASH_STRUCT_WINSIZE,
[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h)
AC_CACHE_VAL(bash_cv_struct_winsize_header,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [struct winsize x;],
- bash_cv_struct_winsize_header=ioctl_h,
- [AC_TRY_COMPILE([#include <sys/types.h>
-#include <termios.h>], [struct winsize x;],
- bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other)
-])])
+[
+BASH_CHECK_WINSIZE_IOCTL
+BASH_CHECK_WINSIZE_TERMIOS
+
+if test $bash_cv_struct_winsize_ioctl = yes; then
+ bash_cv_struct_winsize_header=ioctl_h
+elif test $bash_cv_struct_winsize_termios = yes; then
+ bash_cv_struct_winsize_header=termios_h
+else
+ bash_cv_struct_winsize_header=other
+fi
+])
if test $bash_cv_struct_winsize_header = ioctl_h; then
AC_MSG_RESULT(sys/ioctl.h)
AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL)
@@ -1234,35 +1193,68 @@ else
fi
])
-dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
-AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE,
-[AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_MSG_CHECKING(for type of signal functions)
-AC_CACHE_VAL(bash_cv_signal_vintage,
-[
- AC_TRY_LINK([#include <signal.h>],[
+AC_DEFUN(BASH_HAVE_POSIX_SIGNALS,
+[AC_CACHE_VAL(bash_cv_posix_signals,
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <signal.h>
+]], [[
sigset_t ss;
struct sigaction sa;
sigemptyset(&ss); sigsuspend(&ss);
sigaction(SIGINT, &sa, (struct sigaction *) 0);
sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
- ], bash_cv_signal_vintage=posix,
- [
- AC_TRY_LINK([#include <signal.h>], [
- int mask = sigmask(SIGINT);
- sigsetmask(mask); sigblock(mask); sigpause(mask);
- ], bash_cv_signal_vintage=4.2bsd,
- [
- AC_TRY_LINK([
- #include <signal.h>
- RETSIGTYPE foo() { }], [
- int mask = sigmask(SIGINT);
- sigset(SIGINT, foo); sigrelse(SIGINT);
- sighold(SIGINT); sigpause(SIGINT);
- ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7
- )]
- )]
-)
+]] )],
+[bash_cv_posix_signals=yes], [bash_cv_posix_signals=no]
+)])
+])
+
+AC_DEFUN(BASH_HAVE_BSD_SIGNALS,
+[AC_CACHE_VAL(bash_cv_bsd_signals,
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <signal.h>
+]], [[
+int mask = sigmask(SIGINT);
+sigsetmask(mask); sigblock(mask); sigpause(mask);
+]] )],
+[bash_cv_bsd_signals=yes], [bash_cv_bsd_signals=no]
+)])
+])
+
+AC_DEFUN(BASH_HAVE_SYSV_SIGNALS,
+[AC_CACHE_VAL(bash_cv_sysv_signals,
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <signal.h>
+void foo() { }
+]], [[
+int mask = sigmask(SIGINT);
+sigset(SIGINT, foo); sigrelse(SIGINT);
+sighold(SIGINT); sigpause(SIGINT);
+]] )],
+[bash_cv_sysv_signals=yes], [bash_cv_sysv_signals=no]
+)])
+])
+
+dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
+AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE,
+[AC_MSG_CHECKING(for type of signal functions)
+AC_CACHE_VAL(bash_cv_signal_vintage,
+[
+BASH_HAVE_POSIX_SIGNALS
+if test $bash_cv_posix_signals = yes; then
+ bash_cv_signal_vintage=posix
+else
+ BASH_HAVE_BSD_SIGNALS
+ if test $bash_cv_bsd_signals = yes; then
+ bash_cv_signal_vintage=4.2bsd
+ else
+ BASH_HAVE_SYSV_SIGNALS
+ if test $bash_cv_sysv_signals = yes; then
+ bash_cv_signal_vintage=svr3
+ else
+ bash_cv_signal_vintage=v7
+ fi
+ fi
+fi
])
AC_MSG_RESULT($bash_cv_signal_vintage)
if test "$bash_cv_signal_vintage" = posix; then
@@ -1279,7 +1271,7 @@ AC_DEFUN(BASH_SYS_PGRP_SYNC,
[AC_REQUIRE([AC_FUNC_GETPGRP])
AC_MSG_CHECKING(whether pgrps need synchronization)
AC_CACHE_VAL(bash_cv_pgrp_pipe,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
@@ -1332,10 +1324,10 @@ main()
wait(&status);
exit(ok ? 0 : 5);
}
-], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
+]])], [bash_cv_pgrp_pipe=no], [bash_cv_pgrp_pipe=yes],
[AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
- bash_cv_pgrp_pipe=no])
-])
+ bash_cv_pgrp_pipe=no]
+)])
AC_MSG_RESULT($bash_cv_pgrp_pipe)
if test $bash_cv_pgrp_pipe = yes; then
AC_DEFINE(PGRP_PIPE)
@@ -1343,18 +1335,17 @@ fi
])
AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS,
-[AC_REQUIRE([AC_TYPE_SIGNAL])
-AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
+[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <signal.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <stdlib.h>
-typedef RETSIGTYPE sigfunc();
+typedef void sigfunc();
volatile int nsigint;
@@ -1376,7 +1367,7 @@ set_signal_handler(sig, handler)
#define set_signal_handler(s, h) signal(s, h)
#endif
-RETSIGTYPE
+void
sigint(s)
int s;
{
@@ -1392,7 +1383,7 @@ main()
kill((int)getpid(), SIGINT);
exit(nsigint != 2);
}
-], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes,
+]])], [bash_cv_must_reinstall_sighandlers=no], [bash_cv_must_reinstall_sighandlers=yes],
[AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no)
bash_cv_must_reinstall_sighandlers=no]
)])
@@ -1407,7 +1398,7 @@ AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,
[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
AC_MSG_CHECKING(for presence of necessary job control definitions)
AC_CACHE_VAL(bash_cv_job_control_missing,
-[AC_TRY_COMPILE([
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
@@ -1448,7 +1439,8 @@ AC_CACHE_VAL(bash_cv_job_control_missing,
#error
#endif
-], , bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing
+]], [[ int x; ]] )],
+[bash_cv_job_control_missing=present], [bash_cv_job_control_missing=missing]
)])
AC_MSG_RESULT($bash_cv_job_control_missing)
if test $bash_cv_job_control_missing = missing; then
@@ -1461,7 +1453,7 @@ dnl this requires a previous check for mkfifo, but that is awkward to specify
AC_DEFUN(BASH_SYS_NAMED_PIPES,
[AC_MSG_CHECKING(for presence of named pipes)
AC_CACHE_VAL(bash_cv_sys_named_pipes,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
#include <sys/stat.h>
#ifdef HAVE_UNISTD_H
@@ -1501,7 +1493,8 @@ close(fd);
unlink ("bash-aclocal/sh-np-autoconf");
rmdir ("bash-aclocal");
exit(0);
-}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing,
+}
+]])], [bash_cv_sys_named_pipes=present], [bash_cv_sys_named_pipes=missing],
[AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing)
bash_cv_sys_named_pipes=missing]
)])
@@ -1533,9 +1526,11 @@ AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir")
AC_DEFUN(BASH_HAVE_TIOCGWINSZ,
[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h)
AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
- bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)])
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+#include <sys/ioctl.h>]], [[int x = TIOCGWINSZ;]] )],
+ [bash_cv_tiocgwinsz_in_ioctl=yes], [bash_cv_tiocgwinsz_in_ioctl=no]
+)])
AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl)
if test $bash_cv_tiocgwinsz_in_ioctl = yes; then
AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
@@ -1545,9 +1540,11 @@ fi
AC_DEFUN(BASH_HAVE_TIOCSTAT,
[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h)
AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [int x = TIOCSTAT;],
- bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)])
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+#include <sys/ioctl.h>]], [[int x = TIOCSTAT;]] )],
+ [bash_cv_tiocstat_in_ioctl=yes], [bash_cv_tiocstat_in_ioctl=no]
+)])
AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl)
if test $bash_cv_tiocstat_in_ioctl = yes; then
AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL)
@@ -1557,9 +1554,11 @@ fi
AC_DEFUN(BASH_HAVE_FIONREAD,
[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h)
AC_CACHE_VAL(bash_cv_fionread_in_ioctl,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/ioctl.h>], [int x = FIONREAD;],
- bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)])
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+#include <sys/ioctl.h>]], [[int x = FIONREAD;]] )],
+ [bash_cv_fionread_in_ioctl=yes], [bash_cv_fionread_in_ioctl=no]
+)])
AC_MSG_RESULT($bash_cv_fionread_in_ioctl)
if test $bash_cv_fionread_in_ioctl = yes; then
AC_DEFINE(FIONREAD_IN_SYS_IOCTL)
@@ -1575,8 +1574,11 @@ dnl
AC_DEFUN(BASH_CHECK_SPEED_T,
[AC_MSG_CHECKING(for speed_t in sys/types.h)
AC_CACHE_VAL(bash_cv_speed_t_in_sys_types,
-[AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;],
- bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)])
+[AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>]],
+ [[speed_t x;]])],
+ [bash_cv_speed_t_in_sys_types=yes],[bash_cv_speed_t_in_sys_types=no])])
AC_MSG_RESULT($bash_cv_speed_t_in_sys_types)
if test $bash_cv_speed_t_in_sys_types = yes; then
AC_DEFINE(SPEED_T_IN_SYS_TYPES)
@@ -1646,31 +1648,41 @@ if test $bash_cv_dev_stdin = "present"; then
fi
])
+
+AC_DEFUN(BASH_CHECK_RLIMIT,
+[AC_CACHE_VAL(bash_cv_rlimit,
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+#include <sys/resource.h>
+]],
+[[
+ int f;
+ f = RLIMIT_DATA;
+]] )],
+[bash_cv_rlimit=yes], [bash_cv_rlimit=no]
+)])
+])
+
dnl
dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions
dnl
AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT,
[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
AC_CACHE_VAL(bash_cv_kernel_rlimit,
-[AC_TRY_COMPILE([
-#include <sys/types.h>
-#include <sys/resource.h>
-],
-[
- int f;
- f = RLIMIT_DATA;
-], bash_cv_kernel_rlimit=no,
-[AC_TRY_COMPILE([
+[BASH_CHECK_RLIMIT
+if test $bash_cv_rlimit = no; then
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#define _KERNEL
#include <sys/resource.h>
#undef _KERNEL
-],
-[
- int f;
- f = RLIMIT_DATA;
-], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)]
-)])
+]],
+[[
+ int f;
+ f = RLIMIT_DATA;
+]] )], [bash_cv_kernel_rlimit=yes], [bash_cv_kernel_rlimit=no] )
+fi
+])
AC_MSG_RESULT($bash_cv_kernel_rlimit)
if test $bash_cv_kernel_rlimit = yes; then
AC_DEFINE(RLIMIT_NEEDS_KERNEL)
@@ -1685,14 +1697,15 @@ dnl sizeof(off_t) is > 4.
dnl
AC_DEFUN(BASH_CHECK_OFF_T_64,
[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64,
-AC_TRY_COMPILE([
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include <sys/types.h>
-],[
+]],[[
switch (0) case 0: case (sizeof (off_t) <= 4):;
-], bash_cv_off_t_64=no, bash_cv_off_t_64=yes))
+]] )], [bash_cv_off_t_64=no], [bash_cv_off_t_64=yes]
+))
if test $bash_cv_off_t_64 = yes; then
AC_DEFINE(HAVE_OFF_T_64)
fi])
@@ -1700,7 +1713,7 @@ fi])
AC_DEFUN(BASH_CHECK_RTSIGS,
[AC_MSG_CHECKING(for unusable real-time signals due to large values)
AC_CACHE_VAL(bash_cv_unusable_rtsigs,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
#include <signal.h>
#include <stdlib.h>
@@ -1720,7 +1733,8 @@ main ()
#endif
exit(rtmin < n_sigs);
-}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no,
+}
+]])], [bash_cv_unusable_rtsigs=yes], [bash_cv_unusable_rtsigs=no],
[AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes)
bash_cv_unusable_rtsigs=yes]
)])
@@ -1767,48 +1781,43 @@ fi
AC_CHECK_FUNCS(iswlower iswupper towlower towupper iswctype)
-AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset,
-[AC_TRY_LINK(
-[#include <langinfo.h>],
-[char* cs = nl_langinfo(CODESET);],
-bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)])
-if test $bash_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET)
-fi
+AC_REQUIRE([AM_LANGINFO_CODESET])
dnl check for wchar_t in <wchar.h>
AC_CACHE_CHECK([for wchar_t in wchar.h], bash_cv_type_wchar_t,
-[AC_TRY_COMPILE(
-[#include <wchar.h>
-],
-[
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+[#include <wchar.h>]],
+[[
wchar_t foo;
foo = 0;
-], bash_cv_type_wchar_t=yes, bash_cv_type_wchar_t=no)])
+]] )], [bash_cv_type_wchar_t=yes], [bash_cv_type_wchar_t=no]
+)])
if test $bash_cv_type_wchar_t = yes; then
AC_DEFINE(HAVE_WCHAR_T, 1, [systems should define this type here])
fi
dnl check for wctype_t in <wctype.h>
AC_CACHE_CHECK([for wctype_t in wctype.h], bash_cv_type_wctype_t,
-[AC_TRY_COMPILE(
-[#include <wctype.h>],
-[
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+[#include <wctype.h>]],
+[[
wctype_t foo;
foo = 0;
-], bash_cv_type_wctype_t=yes, bash_cv_type_wctype_t=no)])
+]] )], [bash_cv_type_wctype_t=yes], [bash_cv_type_wctype_t=no]
+)])
if test $bash_cv_type_wctype_t = yes; then
AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here])
fi
dnl check for wint_t in <wctype.h>
AC_CACHE_CHECK([for wint_t in wctype.h], bash_cv_type_wint_t,
-[AC_TRY_COMPILE(
-[#include <wctype.h>],
-[
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+[#include <wctype.h>]],
+[[
wint_t foo;
foo = 0;
-], bash_cv_type_wint_t=yes, bash_cv_type_wint_t=no)])
+]] )], [bash_cv_type_wint_t=yes], [bash_cv_type_wint_t=no]
+)])
if test $bash_cv_type_wint_t = yes; then
AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here])
fi
@@ -1816,7 +1825,7 @@ fi
dnl check for broken wcwidth
AC_CACHE_CHECK([for wcwidth broken with unicode combining characters],
bash_cv_wcwidth_broken,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
@@ -1835,8 +1844,9 @@ char **v;
w = wcwidth (0x0301);
exit (w == 0); /* exit 0 if wcwidth broken */
}
-],
-bash_cv_wcwidth_broken=yes, bash_cv_wcwidth_broken=no, bash_cv_wcwidth_broken=no)])
+]])], [bash_cv_wcwidth_broken=yes], [bash_cv_wcwidth_broken=no],
+ [bash_cv_wcwidth_broken=no]
+)])
if test "$bash_cv_wcwidth_broken" = yes; then
AC_DEFINE(WCWIDTH_BROKEN, 1, [wcwidth is usually not broken])
fi
@@ -1886,7 +1896,7 @@ CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}"
LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}"
AC_CACHE_VAL(ac_cv_rl_version,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#include <readline/readline.h>
#include <stdlib.h>
@@ -1907,10 +1917,11 @@ main()
fclose(fp);
exit(0);
}
-],
-ac_cv_rl_version=`cat conftest.rlv`,
-ac_cv_rl_version='0.0',
-ac_cv_rl_version='8.0')])
+]])],
+[ac_cv_rl_version=`cat conftest.rlv`],
+[ac_cv_rl_version='0.0'],
+[ac_cv_rl_version='8.0']
+)])
CFLAGS="$_save_CFLAGS"
LDFLAGS="$_save_LDFLAGS"
@@ -1973,57 +1984,11 @@ AC_MSG_RESULT($ac_cv_rl_version)
fi
])
-AC_DEFUN(BASH_FUNC_CTYPE_NONASCII,
-[
-AC_MSG_CHECKING(whether the ctype macros accept non-ascii characters)
-AC_CACHE_VAL(bash_cv_func_ctype_nonascii,
-[AC_TRY_RUN([
-#ifdef HAVE_LOCALE_H
-#include <locale.h>
-#endif
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-
-int
-main(c, v)
-int c;
-char *v[];
-{
- char *deflocale;
- unsigned char x;
- int r1, r2;
-
-#ifdef HAVE_SETLOCALE
- /* We take a shot here. If that locale is not known, try the
- system default. We try this one because '\342' (226) is
- known to be a printable character in that locale. */
- deflocale = setlocale(LC_ALL, "en_US.ISO8859-1");
- if (deflocale == 0)
- deflocale = setlocale(LC_ALL, "");
-#endif
-
- x = '\342';
- r1 = isprint(x);
- x -= 128;
- r2 = isprint(x);
- exit (r1 == 0 || r2 == 0);
-}
-], bash_cv_func_ctype_nonascii=yes, bash_cv_func_ctype_nonascii=no,
- [AC_MSG_WARN(cannot check ctype macros if cross compiling -- defaulting to no)
- bash_cv_func_ctype_nonascii=no]
-)])
-AC_MSG_RESULT($bash_cv_func_ctype_nonascii)
-if test $bash_cv_func_ctype_nonascii = yes; then
-AC_DEFINE(CTYPE_NON_ASCII)
-fi
-])
-
AC_DEFUN(BASH_CHECK_WCONTINUED,
[
AC_MSG_CHECKING(whether WCONTINUED flag to waitpid is unavailable or available but broken)
AC_CACHE_VAL(bash_cv_wcontinued_broken,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
@@ -2044,7 +2009,7 @@ main()
else
exit (0);
}
-], bash_cv_wcontinued_broken=no,bash_cv_wcontinued_broken=yes,
+]])], [bash_cv_wcontinued_broken=no], [bash_cv_wcontinued_broken=yes],
[AC_MSG_WARN(cannot check WCONTINUED if cross compiling -- defaulting to no)
bash_cv_wcontinued_broken=no]
)])
@@ -2060,7 +2025,7 @@ dnl
AC_DEFUN([AM_PATH_LISPDIR],
- [AC_ARG_WITH(lispdir, AC_HELP_STRING([--with-lispdir], [override the default lisp directory]),
+ [AC_ARG_WITH(lispdir, AS_HELP_STRING([--with-lispdir], [override the default lisp directory]),
[ lispdir="$withval"
AC_MSG_CHECKING([where .elc files should go])
AC_MSG_RESULT([$lispdir])],
@@ -2097,7 +2062,7 @@ AC_DEFUN([BASH_FUNC_SNPRINTF],
AC_CHECK_FUNCS_ONCE([snprintf])
if test X$ac_cv_func_snprintf = Xyes; then
AC_CACHE_CHECK([for standard-conformant snprintf], [bash_cv_func_snprintf],
- [AC_TRY_RUN([
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#include <stdlib.h>
@@ -2108,7 +2073,7 @@ main()
n = snprintf (0, 0, "%s", "0123456");
exit(n != 7);
}
-], bash_cv_func_snprintf=yes, bash_cv_func_snprintf=no,
+]])], [bash_cv_func_snprintf=yes], [bash_cv_func_snprintf=no],
[AC_MSG_WARN([cannot check standard snprintf if cross-compiling])
bash_cv_func_snprintf=yes]
)])
@@ -2127,7 +2092,7 @@ AC_DEFUN([BASH_FUNC_VSNPRINTF],
AC_CHECK_FUNCS_ONCE([vsnprintf])
if test X$ac_cv_func_vsnprintf = Xyes; then
AC_CACHE_CHECK([for standard-conformant vsnprintf], [bash_cv_func_vsnprintf],
- [AC_TRY_RUN([
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
#if HAVE_STDARG_H
#include <stdarg.h>
#else
@@ -2165,7 +2130,7 @@ main()
n = foo("%s", "0123456");
exit(n != 7);
}
-], bash_cv_func_vsnprintf=yes, bash_cv_func_vsnprintf=no,
+]])], [bash_cv_func_vsnprintf=yes], [bash_cv_func_vsnprintf=no],
[AC_MSG_WARN([cannot check standard vsnprintf if cross-compiling])
bash_cv_func_vsnprintf=yes]
)])
@@ -2182,7 +2147,7 @@ main()
AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET,
[AC_MSG_CHECKING(for offset of exit status in return status from wait)
AC_CACHE_VAL(bash_cv_wexitstatus_offset,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdlib.h>
#include <unistd.h>
@@ -2216,7 +2181,7 @@ main(c, v)
exit (254);
}
-], bash_cv_wexitstatus_offset=0, bash_cv_wexitstatus_offset=$?,
+]])], [bash_cv_wexitstatus_offset=0], [bash_cv_wexitstatus_offset=$?],
[AC_MSG_WARN(cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0)
bash_cv_wexitstatus_offset=0]
)])
@@ -2232,13 +2197,15 @@ AC_DEFUN([BASH_FUNC_SBRK],
[
AC_MSG_CHECKING([for sbrk])
AC_CACHE_VAL(ac_cv_func_sbrk,
- [AC_TRY_LINK([#include <unistd.h>],
- [ void *x = sbrk (4096); ],
- ac_cv_func_sbrk=yes, ac_cv_func_sbrk=no)])
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#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([
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdlib.h>
#include <unistd.h>
@@ -2250,10 +2217,9 @@ main(int c, char **v)
x = sbrk (4096);
exit ((x == (void *)-1) ? 1 : 0);
}
-], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk,
- [AC_MSG_WARN([cannot check working sbrk if cross-compiling])
- bash_cv_func_sbrk=yes]
-)])
+]])],[bash_cv_func_sbrk=yes],[bash_cv_func_sbrk=no],[AC_MSG_WARN([cannot check working sbrk if cross-compiling])
+ bash_cv_func_sbrk=yes
+])])
if test $bash_cv_func_sbrk = no; then
ac_cv_func_sbrk=no
fi
@@ -2267,7 +2233,7 @@ main(int c, char **v)
AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK,
[AC_MSG_CHECKING(whether fnmatch can be used to check bracket equivalence classes)
AC_CACHE_VAL(bash_cv_fnmatch_equiv_fallback,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
@@ -2287,8 +2253,7 @@ main (int c, char **v)
exit (0);
exit (1);
}
-
-], bash_cv_fnmatch_equiv_fallback=yes, bash_cv_fnmatch_equiv_fallback=no,
+]])], [bash_cv_fnmatch_equiv_fallback=yes], [bash_cv_fnmatch_equiv_fallback=no],
[AC_MSG_WARN(cannot check fnmatch if cross compiling -- defaulting to no)
bash_cv_fnmatch_equiv_fallback=no]
)])
diff --git a/alias.c b/alias.c
index cd5e99b7..23f967fa 100644
--- a/alias.c
+++ b/alias.c
@@ -1,7 +1,7 @@
/* alias.c -- Not a full alias, but just the kind that we use in the
shell. Csh style alias is somewhere else (`over there, in a box'). */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/array.c b/array.c
index 6d3554bf..910bbaad 100644
--- a/array.c
+++ b/array.c
@@ -9,7 +9,7 @@
* chet@ins.cwru.edu
*/
-/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -84,7 +84,6 @@ array_create()
ARRAY_ELEMENT *head;
r = (ARRAY *)xmalloc(sizeof(ARRAY));
- r->type = array_indexed;
r->max_index = -1;
r->num_elements = 0;
r->lastref = (ARRAY_ELEMENT *)0;
@@ -134,7 +133,6 @@ ARRAY *a;
if (a == 0)
return((ARRAY *) NULL);
a1 = array_create();
- a1->type = a->type;
a1->max_index = a->max_index;
a1->num_elements = a->num_elements;
for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) {
@@ -161,7 +159,6 @@ ARRAY_ELEMENT *s, *e;
arrayind_t mi;
a = array_create ();
- a->type = array->type;
for (mi = 0, p = s, i = 0; p != e; p = element_forw(p), i++) {
n = array_create_element (element_index(p), element_value(p));
@@ -796,6 +793,27 @@ ARRAY *a;
return (REVERSE_LIST(list, WORD_LIST *));
}
+WORD_LIST *
+array_to_kvpair_list(a)
+ARRAY *a;
+{
+ WORD_LIST *list;
+ ARRAY_ELEMENT *ae;
+ char *k, *v;
+
+ if (a == 0 || array_empty(a))
+ return((WORD_LIST *)NULL);
+ list = (WORD_LIST *)NULL;
+ for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) {
+ k = itos(element_index(ae));
+ v = element_value(ae);
+ list = make_word_list (make_bare_word(k), list);
+ list = make_word_list (make_bare_word(v), list);
+ free(k);
+ }
+ return (REVERSE_LIST(list, WORD_LIST *));
+}
+
ARRAY *
array_assign_list (array, list)
ARRAY *array;
@@ -835,6 +853,55 @@ int *countp;
*countp = i;
return (ret);
}
+
+ARRAY *
+array_from_argv(a, vec, count)
+ARRAY *a;
+char **vec;
+int count;
+{
+ arrayind_t i;
+ ARRAY_ELEMENT *ae;
+ char *t;
+
+ if (a == 0 || array_num_elements (a) == 0)
+ {
+ for (i = 0; i < count; i++)
+ array_insert (a, i, t);
+ return a;
+ }
+
+ /* Fast case */
+ if (array_num_elements (a) == count && count == 1)
+ {
+ ae = element_forw (a->head);
+ t = vec[0] ? savestring (vec[0]) : 0;
+ ARRAY_ELEMENT_REPLACE (ae, t);
+ }
+ else if (array_num_elements (a) <= count)
+ {
+ /* modify in array_num_elements members in place, then add */
+ ae = a->head;
+ for (i = 0; i < array_num_elements (a); i++)
+ {
+ ae = element_forw (ae);
+ t = vec[0] ? savestring (vec[0]) : 0;
+ ARRAY_ELEMENT_REPLACE (ae, t);
+ }
+ /* add any more */
+ for ( ; i < count; i++)
+ array_insert (a, i, vec[i]);
+ }
+ else
+ {
+ /* deleting elements. it's faster to rebuild the array. */
+ array_flush (a);
+ for (i = 0; i < count; i++)
+ array_insert (a, i, vec[i]);
+ }
+
+ return a;
+}
/*
* Return a string that is the concatenation of the elements in A from START
diff --git a/array.h b/array.h
index 189d646f..4214e8b4 100644
--- a/array.h
+++ b/array.h
@@ -1,7 +1,7 @@
/* array.h -- definitions for the interface exported by array.c that allows
the rest of the shell to manipulate array variables. */
-/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -27,33 +27,55 @@
typedef intmax_t arrayind_t;
-enum atype {array_indexed, array_assoc}; /* only array_indexed used */
-
typedef struct array {
- enum atype type;
arrayind_t max_index;
- int num_elements;
+ arrayind_t num_elements;
+#ifdef ALT_ARRAY_IMPLEMENTATION
+ arrayind_t first_index;
+ arrayind_t alloc_size;
+ struct array_element **elements;
+#else
struct array_element *head;
struct array_element *lastref;
+#endif
} ARRAY;
typedef struct array_element {
arrayind_t ind;
char *value;
+#ifndef ALT_ARRAY_IMPLEMENTATION
struct array_element *next, *prev;
+#endif
} ARRAY_ELEMENT;
+#define ARRAY_DEFAULT_SIZE 1024
+
typedef int sh_ae_map_func_t PARAMS((ARRAY_ELEMENT *, void *));
/* Basic operations on entire arrays */
+#ifdef ALT_ARRAY_IMPLEMENTATION
+extern void array_alloc PARAMS((ARRAY *, arrayind_t));
+extern void array_resize PARAMS((ARRAY *, arrayind_t));
+extern void array_expand PARAMS((ARRAY *, arrayind_t));
+extern void array_dispose_elements PARAMS((ARRAY_ELEMENT **));
+#endif
extern ARRAY *array_create PARAMS((void));
extern void array_flush PARAMS((ARRAY *));
extern void array_dispose PARAMS((ARRAY *));
extern ARRAY *array_copy PARAMS((ARRAY *));
+#ifndef ALT_ARRAY_IMPLEMENTATION
extern ARRAY *array_slice PARAMS((ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *));
+#else
+extern ARRAY *array_slice PARAMS((ARRAY *, arrayind_t, arrayind_t));
+#endif
+
extern void array_walk PARAMS((ARRAY *, sh_ae_map_func_t *, void *));
+#ifndef ALT_ARRAY_IMPLEMENTATION
extern ARRAY_ELEMENT *array_shift PARAMS((ARRAY *, int, int));
+#else
+extern ARRAY_ELEMENT **array_shift PARAMS((ARRAY *, int, int));
+#endif
extern int array_rshift PARAMS((ARRAY *, int, char *));
extern ARRAY_ELEMENT *array_unshift_element PARAMS((ARRAY *));
extern int array_shift_element PARAMS((ARRAY *, char *));
@@ -81,10 +103,12 @@ extern char *array_reference PARAMS((ARRAY *, arrayind_t));
extern WORD_LIST *array_to_word_list PARAMS((ARRAY *));
extern ARRAY *array_from_word_list PARAMS((WORD_LIST *));
extern WORD_LIST *array_keys_to_word_list PARAMS((ARRAY *));
+extern WORD_LIST *array_to_kvpair_list PARAMS((ARRAY *));
extern ARRAY *array_assign_list PARAMS((ARRAY *, WORD_LIST *));
extern char **array_to_argv PARAMS((ARRAY *, int *));
+extern ARRAY *array_from_argv PARAMS((ARRAY *, char **, int));
extern char *array_to_kvpair PARAMS((ARRAY *, int));
extern char *array_to_assign PARAMS((ARRAY *, int));
@@ -96,22 +120,42 @@ extern ARRAY *array_from_string PARAMS((char *, char *));
#define array_num_elements(a) ((a)->num_elements)
#define array_max_index(a) ((a)->max_index)
+#ifndef ALT_ARRAY_IMPLEMENTATION
#define array_first_index(a) ((a)->head->next->ind)
#define array_head(a) ((a)->head)
+#define array_alloc_size(a) ((a)->alloc_size)
+#else
+#define array_first_index(a) ((a)->first_index)
+#define array_head(a) ((a)->elements)
+#endif
#define array_empty(a) ((a)->num_elements == 0)
#define element_value(ae) ((ae)->value)
#define element_index(ae) ((ae)->ind)
+
+#ifndef ALT_ARRAY_IMPLEMENTATION
#define element_forw(ae) ((ae)->next)
#define element_back(ae) ((ae)->prev)
+#else
+extern arrayind_t element_forw PARAMS((ARRAY *, arrayind_t));
+extern arrayind_t element_back PARAMS((ARRAY *, arrayind_t));
+#endif
+
#define set_element_value(ae, val) ((ae)->value = (val))
+#ifdef ALT_ARRAY_IMPLEMENTATION
+#define set_first_index(a, i) ((a)->first_index = (i))
+#endif
+
+#define set_max_index(a, i) ((a)->max_index = (i))
+#define set_num_elements(a, n) ((a)->num_elements = (n))
+
/* Convenience */
#define array_push(a,v) \
do { array_rshift ((a), 1, (v)); } while (0)
#define array_pop(a) \
- do { array_dispose_element (array_shift ((a), 1, 0)); } while (0)
+ do { array_shift ((a), 1, AS_DISPOSE); } while (0)
#define GET_ARRAY_FROM_VAR(n, v, a) \
do { \
@@ -119,6 +163,17 @@ extern ARRAY *array_from_string PARAMS((char *, char *));
(a) = ((v) && array_p ((v))) ? array_cell (v) : (ARRAY *)0; \
} while (0)
+#define ARRAY_ELEMENT_REPLACE(ae, v) \
+ do { \
+ free ((ae)->value); \
+ (ae)->value = (v); \
+ } while (0)
+
+#ifdef ALT_ARRAY_IMPLEMENTATION
+#define ARRAY_VALUE_REPLACE(a, i, v) \
+ ARRAY_ELEMENT_REPLACE((a)->elements[(i)], (v))
+#endif
+
#define ALL_ELEMENT_SUB(c) ((c) == '@' || (c) == '*')
/* In eval.c, but uses ARRAY * */
diff --git a/array2.c b/array2.c
new file mode 100644
index 00000000..fa8be00d
--- /dev/null
+++ b/array2.c
@@ -0,0 +1,1374 @@
+/*
+ * array.c - functions to create, destroy, access, and manipulate arrays
+ * of strings.
+ *
+ * Arrays are structs containing an array of elements and bookkeeping information.
+ * An element's index is stored with it.
+ *
+ * Chet Ramey
+ * chet@ins.cwru.edu
+ */
+
+/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "config.h"
+
+#if defined (ARRAY_VARS)
+
+#if defined (HAVE_UNISTD_H)
+# ifdef _MINIX
+# include <sys/types.h>
+# endif
+# include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include "bashansi.h"
+
+#include "shell.h"
+#include "array.h"
+#include "builtins/common.h"
+
+#define ARRAY_MAX_DOUBLE 16777216
+
+static ARRAY_ELEMENT **array_copy_elements PARAMS((ARRAY *));
+static char *array_to_string_internal PARAMS((ARRAY *, arrayind_t, arrayind_t, char *, int));
+
+static char *spacesep = " ";
+
+void
+array_alloc (a, n)
+ARRAY *a;
+arrayind_t n;
+{
+ arrayind_t i;
+
+ if (a == 0)
+ return; /* for now */
+ a->elements = (ARRAY_ELEMENT **)xmalloc (n * sizeof (ARRAY_ELEMENT *));
+ for (i = 0; i < n; i++)
+ a->elements[i] = 0;
+ a->alloc_size = n;
+}
+
+void
+array_resize (a, n)
+ARRAY *a;
+arrayind_t n;
+{
+ ARRAY_ELEMENT **e, *ae;
+ arrayind_t i, nsize;
+
+ if (a == 0)
+ return;
+ if (a->alloc_size > 0 && n >= a->max_index && n <= a->alloc_size)
+ return;
+
+ e = (ARRAY_ELEMENT **)xrealloc (a->elements, n * sizeof (ARRAY_ELEMENT *));
+ a->elements = e;
+
+ for (i = a->alloc_size; i < n; i++)
+ a->elements[i] = (ARRAY_ELEMENT *)NULL;
+
+ a->alloc_size = n;
+}
+
+void
+array_expand (a, n)
+ARRAY *a;
+arrayind_t n;
+{
+ arrayind_t nsize;
+
+ if (n >= a->alloc_size) {
+ nsize = a->alloc_size ? a->alloc_size : ARRAY_DEFAULT_SIZE;
+ while (n >= nsize)
+ nsize <<= 1;
+ if (nsize > ARRAY_MAX_DOUBLE)
+ nsize = n + ARRAY_DEFAULT_SIZE;
+ array_resize (a, nsize);
+ }
+}
+
+ARRAY *
+array_create()
+{
+ ARRAY *r;
+
+ r = (ARRAY *)xmalloc(sizeof(ARRAY));
+ r->max_index = r->first_index = -1;
+ r->num_elements = 0;
+ r->alloc_size = 0;
+ r->elements = (ARRAY_ELEMENT **)NULL;
+ return(r);
+}
+
+void
+array_flush (a)
+ARRAY *a;
+{
+ int r;
+
+ if (a == 0)
+ return;
+ if (array_empty(a)) {
+ a->max_index = a->first_index = -1; /* paranoia */
+ return;
+ }
+ for (r = a->first_index; r <= a->max_index; r++)
+ if (a->elements[r]) {
+ array_dispose_element(a->elements[r]);
+ a->elements[r] = 0;
+ }
+ a->max_index = a->first_index = -1;
+ a->num_elements = 0;
+}
+
+void
+array_dispose_elements(elist)
+ARRAY_ELEMENT **elist;
+{
+ arrayind_t i;
+
+ if (elist == 0)
+ return;
+ for (i = 0; elist[i]; i++)
+ array_dispose_element(elist[i]);
+ free(elist);
+}
+
+void
+array_dispose(a)
+ARRAY *a;
+{
+ if (a == 0)
+ return;
+ array_dispose_elements (a->elements);
+ a->alloc_size = 0;
+ free(a);
+}
+
+static ARRAY_ELEMENT **
+array_copy_elements (a)
+ARRAY *a;
+{
+ ARRAY_ELEMENT **ret;
+ arrayind_t i;
+
+ if (a == 0 || a->num_elements == 0)
+ return (ARRAY_ELEMENT **)NULL;
+ ret = (ARRAY_ELEMENT **)xmalloc (a->alloc_size * sizeof (ARRAY_ELEMENT *));
+ for (i = 0; i < a->alloc_size; i++)
+ ret[i] = a->elements[i] ? array_copy_element (a->elements[i]) : 0;
+ return ret;
+}
+
+ARRAY *
+array_copy(a)
+ARRAY *a;
+{
+ ARRAY *a1;
+
+ if (a == 0)
+ return((ARRAY *) NULL);
+ a1 = array_create();
+ a1->max_index = a->max_index;
+ a1->first_index = a->first_index;
+ a1->num_elements = a->num_elements;
+
+ a1->alloc_size = a->alloc_size;
+ a1->elements = array_copy_elements (a);
+
+ return(a1);
+}
+
+/*
+ * Make and return a new array composed of the elements in array A from
+ * S to E, inclusive. The callers do the bounds checking.
+ */
+ARRAY *
+array_slice(array, s, e)
+ARRAY *array;
+arrayind_t s, e;
+{
+ ARRAY *a;
+ ARRAY_ELEMENT *p, *n;
+ arrayind_t i, ni;
+ arrayind_t mi, nsize;
+
+ a = array_create ();
+
+ nsize = ARRAY_DEFAULT_SIZE;
+ while (nsize < array->alloc_size)
+ nsize <<= 1;
+ if (nsize > ARRAY_MAX_DOUBLE)
+ nsize = array->alloc_size + ARRAY_DEFAULT_SIZE;
+
+ array_resize (a, nsize);
+
+ for (i = s; i < e; i++) {
+ p = array->elements[i];
+ n = p ? array_create_element (element_index(p), element_value(p)) : (ARRAY_ELEMENT *)NULL;
+ a->elements[i] = n;
+ }
+ a->num_elements = e - s;
+ a->max_index = e;
+ a->first_index = s;
+
+ return a;
+}
+
+/*
+ * Walk the array, calling FUNC once for each element, with the array
+ * element as the argument.
+ */
+void
+array_walk(a, func, udata)
+ARRAY *a;
+sh_ae_map_func_t *func;
+void *udata;
+{
+ arrayind_t i;
+ register ARRAY_ELEMENT *ae;
+
+ if (a == 0 || array_empty(a))
+ return;
+ for (i = array_first_index (a); i <= array_max_index(a); i++) {
+ if ((ae = a->elements[i]) == 0)
+ continue;
+ if ((*func)(ae, udata) < 0)
+ return;
+ }
+}
+
+/*
+ * Shift the array A N elements to the left. Delete the first N elements
+ * and subtract N from the indices of the remaining elements. If FLAGS
+ * does not include AS_DISPOSE, this returns a null-terminated array of
+ * elements so the caller can dispose of the chain. If FLAGS includes
+ * AS_DISPOSE, this function disposes of the shifted-out elements and
+ * returns NULL.
+ */
+ARRAY_ELEMENT **
+array_shift(a, n, flags)
+ARRAY *a;
+int n, flags;
+{
+ ARRAY_ELEMENT **r, *ae;
+ register arrayind_t ni, ri;
+ int i, j;
+
+ if (a == 0 || array_empty(a) || n <= 0)
+ return ((ARRAY_ELEMENT **)NULL);
+
+ r = (ARRAY_ELEMENT **)xmalloc ((n + 1) * sizeof (ARRAY_ELEMENT *));
+
+ /* Easy case; shifting out all of the elements */
+ if (n >= a->num_elements) {
+ if (flags & AS_DISPOSE) {
+ array_flush (a);
+ return ((ARRAY_ELEMENT **)NULL);
+ }
+ for (ri = 0, i = a->first_index; i <= a->max_index; i++)
+ if (a->elements[i]) {
+ r[ri++] = a->elements[i];
+ a->elements[i] = 0;
+ }
+
+ a->first_index = a->max_index = -1;
+ a->num_elements = 0;
+ r[ri] = (ARRAY_ELEMENT *)NULL;
+ return r;
+ }
+
+ /* Shift out the first N elements, return them in R. Handle sparse
+ arrays by skipping over NULL array elements. */
+ for (i = a->first_index, ri = 0, j = 0; j < n; i++) {
+ if ((ae = a->elements[i]) == 0)
+ continue;
+ if (i > a->max_index)
+ break;
+ ni = i + n;
+ j++;
+ if (ae)
+ r[ri++] = a->elements[i];
+ a->elements[i] = a->elements[ni];
+ if (a->elements[i])
+ element_index(a->elements[i]) = i;
+ }
+ r[ri]= (ARRAY_ELEMENT *)NULL;
+
+#ifdef DEBUG
+if (j < n)
+ itrace("array_shift: short count: j = %d n = %d", j, n);
+#endif
+
+ /* Now shift everything else, modifying the index in each element */
+ for (; i <= a->max_index; i++) {
+ ni = i + n;
+ a->elements[i] = (ni <= a->max_index) ? a->elements[ni] : (ARRAY_ELEMENT *)NULL;
+ if (a->elements[i])
+ element_index(a->elements[i]) = i;
+ }
+
+ a->num_elements -= n; /* modify bookkeeping information */
+ if (a->num_elements == 0)
+ a->first_index = a->max_index == -1;
+ else {
+ a->max_index -= n;
+ for (i = 0; i <= a->max_index; i++)
+ if (a->elements[i])
+ break;
+ a->first_index = i;
+ }
+
+ if (flags & AS_DISPOSE) {
+ for (i = 0; i < ri; i++)
+ array_dispose_element(r[i]);
+ free (r);
+ return ((ARRAY_ELEMENT **)NULL);
+ }
+
+ return r;
+}
+
+/*
+ * Shift array A right N indices. If S is non-null, it becomes the value of
+ * the new element 0. Returns the number of elements in the array after the
+ * shift.
+ */
+int
+array_rshift (a, n, s)
+ARRAY *a;
+int n;
+char *s;
+{
+ register ARRAY_ELEMENT *ae, *new;
+ arrayind_t ni, nsize;
+
+ if (a == 0 || (array_empty(a) && s == 0))
+ return 0;
+ else if (n <= 0)
+ return (a->num_elements);
+
+ if (n >= a->alloc_size)
+ array_expand(a, n);
+
+ /* Shift right, adjusting the element indexes as we go */
+ for (ni = a->max_index; ni >= 0; ni--) {
+ a->elements[ni+n] = a->elements[ni];
+ if (a->elements[ni+n])
+ element_index(a->elements[ni+n]) = ni + n;
+ a->elements[ni] = (ARRAY_ELEMENT *)NULL;
+ }
+ a->max_index += n;
+
+#if 0
+ /* Null out all the old indexes we just copied from */
+ for (ni = a->first_index; ni >= 0 && ni < n; ni++)
+ a->elements[ni] = (ARRAY_ELEMENT *)NULL;
+#endif
+ a->first_index += n;
+
+ if (s) {
+ new = array_create_element(0, s);
+ a->elements[0] = new;
+ a->num_elements++;
+ a->first_index = 0;
+ if (array_num_elements(a) == 1) /* array was empty */
+ a->max_index = 0;
+ }
+
+ return (a->num_elements);
+}
+
+ARRAY_ELEMENT *
+array_unshift_element(a)
+ARRAY *a;
+{
+ ARRAY_ELEMENT **r, *ret;
+
+ r = array_shift (a, 1, 0);
+ ret = r[0];
+ free (r);
+ return ret;
+}
+
+int
+array_shift_element(a, v)
+ARRAY *a;
+char *v;
+{
+ return (array_rshift (a, 1, v));
+}
+
+ARRAY *
+array_quote(array)
+ARRAY *array;
+{
+ register arrayind_t i;
+ ARRAY_ELEMENT *a;
+ char *t;
+
+ if (array == 0 || array_head(array) == 0 || array_empty(array))
+ return (ARRAY *)NULL;
+ for (i = array_first_index(array); i <= array_max_index(array); i++) {
+ if ((a = array->elements[i]) == 0)
+ continue;
+ t = quote_string (a->value);
+ FREE(a->value);
+ a->value = t;
+ }
+ return array;
+}
+
+ARRAY *
+array_quote_escapes(array)
+ARRAY *array;
+{
+ register arrayind_t i;
+ ARRAY_ELEMENT *a;
+ char *t;
+
+ if (array == 0 || array_head(array) == 0 || array_empty(array))
+ return (ARRAY *)NULL;
+ for (i = array_first_index(array); i <= array_max_index(array); i++) {
+ if ((a = array->elements[i]) == 0)
+ continue;
+ t = quote_escapes (a->value);
+ FREE(a->value);
+ a->value = t;
+ }
+ return array;
+}
+
+ARRAY *
+array_dequote(array)
+ARRAY *array;
+{
+ register arrayind_t i;
+ ARRAY_ELEMENT *a;
+ char *t;
+
+ if (array == 0 || array_head(array) == 0 || array_empty(array))
+ return (ARRAY *)NULL;
+
+ for (i = array->first_index; i <= array->max_index; i++) {
+ if ((a = array->elements[i]) == 0)
+ continue;
+ t = dequote_string (a->value);
+ FREE(a->value);
+ a->value = t;
+ }
+ return array;
+}
+
+ARRAY *
+array_dequote_escapes(array)
+ARRAY *array;
+{
+ register arrayind_t i;
+ ARRAY_ELEMENT *a;
+ char *t;
+
+ if (array == 0 || array_head(array) == 0 || array_empty(array))
+ return (ARRAY *)NULL;
+ for (i = array->first_index; i <= array->max_index; i++) {
+ if ((a = array->elements[i]) == 0)
+ continue;
+ t = dequote_escapes (a->value);
+ FREE(a->value);
+ a->value = t;
+ }
+ return array;
+}
+
+ARRAY *
+array_remove_quoted_nulls(array)
+ARRAY *array;
+{
+ register arrayind_t i;
+ ARRAY_ELEMENT *a;
+
+ if (array == 0 || array_head(array) == 0 || array_empty(array))
+ return (ARRAY *)NULL;
+ for (i = array->first_index; i <= array->max_index; i++) {
+ if ((a = array->elements[i]) == 0)
+ continue;
+ a->value = remove_quoted_nulls (a->value);
+ }
+ return array;
+}
+
+/*
+ * Return a string whose elements are the members of array A beginning at
+ * index START and spanning NELEM members. Null elements are counted.
+ * Since arrays are sparse, unset array elements are not counted.
+ */
+char *
+array_subrange (a, start, nelem, starsub, quoted, pflags)
+ARRAY *a;
+arrayind_t start, nelem;
+int starsub, quoted, pflags;
+{
+ ARRAY *a2;
+ arrayind_t s, e;
+ int i;
+ char *t;
+ WORD_LIST *wl;
+
+ if (array_empty (a) || start > array_max_index(a))
+ return ((char *)NULL);
+
+ /*
+ * Find element with index START. If START corresponds to an unset
+ * element (arrays can be sparse), use the first element whose index
+ * is >= START. If START is < 0, we count START indices back from
+ * the end of A (not elements, even with sparse arrays -- START is an
+ * index).
+ */
+ for (s = start; a->elements[s] == 0 && s <= a->max_index; s++)
+ ;
+
+ if (s > a->max_index)
+ return ((char *)NULL);
+
+ /* Starting at S, take NELEM elements, inclusive. */
+ for (i = 0, e = s; e <= a->max_index && i < nelem; e++) {
+ if (a->elements[e]) /* arrays are sparse */
+ i++;
+ }
+
+ a2 = array_slice(a, s, e);
+
+ wl = array_to_word_list(a2);
+ array_dispose(a2);
+ if (wl == 0)
+ return (char *)NULL;
+ t = string_list_pos_params(starsub ? '*' : '@', wl, quoted, pflags); /* XXX */
+ dispose_words(wl);
+
+ return t;
+}
+
+char *
+array_patsub (a, pat, rep, mflags)
+ARRAY *a;
+char *pat, *rep;
+int mflags;
+{
+ char *t;
+ int pchar, qflags, pflags;
+ WORD_LIST *wl, *save;
+
+ if (a == 0 || array_head(a) == 0 || array_empty(a))
+ return ((char *)NULL);
+
+ wl = array_to_word_list(a);
+ if (wl == 0)
+ return (char *)NULL;
+
+ for (save = wl; wl; wl = wl->next) {
+ t = pat_subst (wl->word->word, pat, rep, mflags);
+ FREE (wl->word->word);
+ wl->word->word = t;
+ }
+
+ pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
+ qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+ pflags = (mflags & MATCH_ASSIGNRHS) ? PF_ASSIGNRHS : 0;
+
+ t = string_list_pos_params (pchar, save, qflags, pflags);
+ dispose_words(save);
+
+ return t;
+}
+
+char *
+array_modcase (a, pat, modop, mflags)
+ARRAY *a;
+char *pat;
+int modop;
+int mflags;
+{
+ char *t;
+ int pchar, qflags, pflags;
+ WORD_LIST *wl, *save;
+
+ if (a == 0 || array_head(a) == 0 || array_empty(a))
+ return ((char *)NULL);
+
+ wl = array_to_word_list(a);
+ if (wl == 0)
+ return ((char *)NULL);
+
+ for (save = wl; wl; wl = wl->next) {
+ t = sh_modcase(wl->word->word, pat, modop);
+ FREE(wl->word->word);
+ wl->word->word = t;
+ }
+
+ pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
+ qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+ pflags = (mflags & MATCH_ASSIGNRHS) ? PF_ASSIGNRHS : 0;
+
+ t = string_list_pos_params (pchar, save, qflags, pflags);
+ dispose_words(save);
+
+ return t;
+}
+
+/*
+ * Allocate and return a new array element with index INDEX and value
+ * VALUE.
+ */
+ARRAY_ELEMENT *
+array_create_element(indx, value)
+arrayind_t indx;
+char *value;
+{
+ ARRAY_ELEMENT *r;
+
+ r = (ARRAY_ELEMENT *)xmalloc(sizeof(ARRAY_ELEMENT));
+ r->ind = indx;
+ r->value = value ? savestring(value) : (char *)NULL;
+ return(r);
+}
+
+ARRAY_ELEMENT *
+array_copy_element(ae)
+ARRAY_ELEMENT *ae;
+{
+ return(ae ? array_create_element(element_index(ae), element_value(ae))
+ : (ARRAY_ELEMENT *) NULL);
+}
+
+void
+array_dispose_element(ae)
+ARRAY_ELEMENT *ae;
+{
+ if (ae) {
+ FREE(ae->value);
+ free(ae);
+ }
+}
+
+/*
+ * Add a new element with index I and value V to array A (a[i] = v).
+ */
+int
+array_insert(a, i, v)
+ARRAY *a;
+arrayind_t i;
+char *v;
+{
+ register ARRAY_ELEMENT *new, *old;
+ arrayind_t nsize;
+
+ if (a == 0)
+ return(-1);
+ if (i >= a->alloc_size)
+ array_expand(a, i);
+ old = a->elements[i];
+ if (i > array_max_index(a))
+ a->max_index = i;
+ if (array_first_index(a) < 0 || i < array_first_index(a))
+ a->first_index = i;
+
+ if (old) { /* Replacing an existing element. */
+ free(element_value(old));
+ old->value = v ? savestring (v) : (char *)NULL;
+ old->ind = i;
+ return(0);
+ } else {
+ a->elements[i] = array_create_element(i, v);
+ a->num_elements++;
+ }
+
+ return (-1); /* problem */
+}
+
+/*
+ * Delete the element with index I from array A and return it so the
+ * caller can dispose of it.
+ */
+ARRAY_ELEMENT *
+array_remove(a, i)
+ARRAY *a;
+arrayind_t i;
+{
+ register ARRAY_ELEMENT *ae;
+ arrayind_t ind;
+
+ if (a == 0 || array_empty(a))
+ return((ARRAY_ELEMENT *) NULL);
+ if (i > array_max_index(a) || i < array_first_index(a))
+ return((ARRAY_ELEMENT *)NULL);
+ ae = a->elements[i];
+ a->elements[i] = 0;
+ if (ae) {
+ a->num_elements--;
+ if (a->num_elements == 0)
+ a->first_index = a->max_index == -1;
+ if (i == array_max_index(a)) {
+ for (ind = i; ind >= array_first_index(a); ind--)
+ if (a->elements[ind])
+ break;
+ a->max_index = ind;
+ }
+ if (i == array_first_index(a)) {
+ for (ind = i; ind <= array_max_index(a); ind++)
+ if (a->elements[ind])
+ break;
+ a->first_index = ind;
+ }
+ }
+ return (ae);
+}
+
+/*
+ * Return the value of a[i].
+ */
+char *
+array_reference(a, i)
+ARRAY *a;
+arrayind_t i;
+{
+ register ARRAY_ELEMENT *ae;
+
+ if (a == 0 || array_empty(a))
+ return((char *) NULL);
+ if (i > array_max_index(a) || i < array_first_index(a))
+ return((char *)NULL);
+ ae = a->elements[i];
+
+ return(ae ? element_value(ae) : (char *)NULL);
+}
+
+/* Convenience routines for the shell to translate to and from the form used
+ by the rest of the code. */
+
+WORD_LIST *
+array_to_word_list(a)
+ARRAY *a;
+{
+ register arrayind_t i;
+ WORD_LIST *list;
+ ARRAY_ELEMENT *ae;
+
+ if (a == 0 || array_empty(a))
+ return((WORD_LIST *)NULL);
+ list = (WORD_LIST *)NULL;
+
+ for (i = array_first_index(a); i <= array_max_index(a); i++) {
+ if ((ae = a->elements[i]) == 0)
+ continue;
+ list = make_word_list (make_bare_word(element_value(ae)), list);
+ }
+ return (REVERSE_LIST(list, WORD_LIST *));
+}
+
+ARRAY *
+array_from_word_list (list)
+WORD_LIST *list;
+{
+ ARRAY *a;
+
+ if (list == 0)
+ return((ARRAY *)NULL);
+ a = array_create();
+ return (array_assign_list (a, list));
+}
+
+WORD_LIST *
+array_keys_to_word_list(a)
+ARRAY *a;
+{
+ arrayind_t ind;
+ WORD_LIST *list;
+ ARRAY_ELEMENT *ae;
+ char *t;
+
+ if (a == 0 || array_empty(a))
+ return((WORD_LIST *)NULL);
+ list = (WORD_LIST *)NULL;
+ for (ind = array_first_index(a); ind <= array_max_index(a); ind++) {
+ if ((ae = a->elements[ind]) == 0)
+ continue;
+ t = itos(element_index(ae));
+ list = make_word_list (make_bare_word(t), list);
+ free(t);
+ }
+ return (REVERSE_LIST(list, WORD_LIST *));
+}
+
+WORD_LIST *
+array_to_kvpair_list(a)
+ARRAY *a;
+{
+ arrayind_t ind;
+ WORD_LIST *list;
+ ARRAY_ELEMENT *ae;
+ char *k, *v;
+
+ if (a == 0 || array_empty(a))
+ return((WORD_LIST *)NULL);
+ list = (WORD_LIST *)NULL;
+ for (ind = array_first_index(a); ind <= array_max_index(a); ind++) {
+ if ((ae = a->elements[ind]) == 0)
+ continue;
+ k = itos(element_index(ae));
+ v = element_value (ae);
+ list = make_word_list (make_bare_word(k), list);
+ list = make_word_list (make_bare_word(v), list);
+ free(k);
+ }
+ return (REVERSE_LIST(list, WORD_LIST *));
+}
+
+ARRAY *
+array_assign_list (array, list)
+ARRAY *array;
+WORD_LIST *list;
+{
+ register WORD_LIST *l;
+ register arrayind_t i;
+
+ for (l = list, i = 0; l; l = l->next, i++)
+ array_insert(array, i, l->word->word);
+ return array;
+}
+
+char **
+array_to_argv (a, countp)
+ARRAY *a;
+int *countp;
+{
+ char **ret, *t;
+ int i;
+ arrayind_t ind;
+ ARRAY_ELEMENT *ae;
+
+ if (a == 0 || array_empty(a)) {
+ if (countp)
+ *countp = 0;
+ return ((char **)NULL);
+ }
+ ret = strvec_create (array_num_elements (a) + 1);
+ i = 0;
+ for (ind = array_first_index(a); ind <= array_max_index(a); ind++) {
+ if (a->elements[ind])
+ ret[i++] = savestring (element_value(a->elements[ind]));
+ }
+ ret[i] = (char *)NULL;
+ if (countp)
+ *countp = i;
+ return (ret);
+}
+
+ARRAY *
+array_from_argv(a, vec, count)
+ARRAY *a;
+char **vec;
+int count;
+{
+ arrayind_t i;
+ char *t;
+
+ if (a == 0 || array_num_elements (a) == 0) {
+ for (i = 0; i < count; i++)
+ array_insert(a, i, vec[i]);
+ return a;
+ }
+
+ /* Fast case */
+ if (array_num_elements (a) == count && count == 1) {
+ t = vec[0] ? savestring (vec[0]) : 0;
+ ARRAY_VALUE_REPLACE(a, 0, t);
+ } else if (array_num_elements (a) <= count) {
+ /* modify in array_num_elements members in place, then add */
+ for (i = 0; i < array_num_elements (a); i++) {
+ t = vec[i] ? savestring (vec[i]) : 0;
+ ARRAY_VALUE_REPLACE(a, i, t);
+ }
+
+ /* add any more */
+ for ( ; i < count; i++)
+ array_insert(a, i, vec[i]);
+ } else {
+ /* deleting elements. replace the first COUNT, free the rest */
+ for (i = 0; i < count; i++) {
+ t = vec[i] ? savestring (vec[i]) : 0;
+ ARRAY_VALUE_REPLACE(a, i, t);
+ }
+
+ for ( ; i <= array_max_index (a); i++) {
+ array_dispose_element(a->elements[i]);
+ a->elements[i] = (ARRAY_ELEMENT *)NULL;
+ }
+
+ /* bookkeeping usually taken care of by array_insert */
+ set_max_index(a, count - 1);
+ set_first_index(a, 0);
+ set_num_elements(a, count);
+ }
+ return a;
+}
+
+/*
+ * Return the next non-null array element after A[IND]
+ */
+arrayind_t
+element_forw(a, ind)
+ARRAY *a;
+arrayind_t ind;
+{
+ register arrayind_t i;
+
+ for (i = ind + 1; i <= array_max_index(a); i++)
+ if (a->elements[i])
+ break;
+ if (a->elements[i])
+ return i;
+ return (array_max_index(a));
+}
+
+/*
+ * Return the previous non-null array element before A[IND]
+ */
+arrayind_t
+element_back (a, ind)
+ARRAY *a;
+arrayind_t ind;
+{
+ register arrayind_t i;
+
+ for (i = ind - 1; i >= array_first_index(a); i--)
+ if (a->elements[i])
+ break;
+ if (a->elements[i] && i >= array_first_index(a))
+ return i;
+ return (array_first_index(a));
+}
+
+/*
+ * Return a string that is the concatenation of the elements in A from START
+ * to END, separated by SEP.
+ */
+static char *
+array_to_string_internal (a, start, end, sep, quoted)
+ARRAY *a;
+arrayind_t start, end;
+char *sep;
+int quoted;
+{
+ arrayind_t i;
+ char *result, *t;
+ ARRAY_ELEMENT *ae;
+ int slen, rsize, rlen, reg;
+
+ slen = strlen(sep);
+ result = NULL;
+ for (rsize = rlen = 0, i = start; i <= end; i++) {
+ if ((ae = a->elements[i]) == 0)
+ continue;
+ if (rsize == 0)
+ result = (char *)xmalloc (rsize = 64);
+ if (element_value(ae)) {
+ t = quoted ? quote_string(element_value(ae)) : element_value(ae);
+ reg = strlen(t);
+ RESIZE_MALLOCED_BUFFER (result, rlen, (reg + slen + 2),
+ rsize, rsize);
+ strcpy(result + rlen, t);
+ rlen += reg;
+ if (quoted)
+ free(t);
+ /*
+ * Add a separator only after non-null elements.
+ */
+ if (element_forw(a, i) <= end) {
+ strcpy(result + rlen, sep);
+ rlen += slen;
+ }
+ }
+ }
+ if (result)
+ result[rlen] = '\0'; /* XXX */
+ return(result);
+}
+
+char *
+array_to_kvpair (a, quoted)
+ARRAY *a;
+int quoted;
+{
+ arrayind_t ind;
+ char *result, *valstr, *is;
+ char indstr[INT_STRLEN_BOUND(intmax_t) + 1];
+ ARRAY_ELEMENT *ae;
+ int rsize, rlen, elen;
+
+ if (a == 0 || array_empty (a))
+ return((char *)NULL);
+
+ result = (char *)xmalloc (rsize = 128);
+ result[rlen = 0] = '\0';
+
+ for (ind = array_first_index(a); ind <= array_max_index(a); ind++) {
+ if ((ae = a->elements[ind]) == 0)
+ continue;
+ is = inttostr (element_index(ae), indstr, sizeof(indstr));
+ valstr = element_value (ae) ?
+ (ansic_shouldquote (element_value (ae)) ?
+ ansic_quote (element_value(ae), 0, (int *)0) :
+ sh_double_quote (element_value (ae)))
+ : (char *)NULL;
+ elen = STRLEN (is) + 8 + STRLEN (valstr);
+ RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize);
+
+ strcpy (result + rlen, is);
+ rlen += STRLEN (is);
+ result[rlen++] = ' ';
+ if (valstr) {
+ strcpy (result + rlen, valstr);
+ rlen += STRLEN (valstr);
+ } else {
+ strcpy (result + rlen, "\"\"");
+ rlen += 2;
+ }
+
+ if (ind < array_max_index (a))
+ result[rlen++] = ' ';
+
+ FREE (valstr);
+ }
+ RESIZE_MALLOCED_BUFFER (result, rlen, 1, rsize, 8);
+ result[rlen] = '\0';
+
+ if (quoted) {
+ /* This is not as efficient as it could be... */
+ valstr = sh_single_quote (result);
+ free (result);
+ result = valstr;
+ }
+ return(result);
+}
+
+char *
+array_to_assign (a, quoted)
+ARRAY *a;
+int quoted;
+{
+ arrayind_t ind;
+ char *result, *valstr, *is;
+ char indstr[INT_STRLEN_BOUND(intmax_t) + 1];
+ ARRAY_ELEMENT *ae;
+ int rsize, rlen, elen;
+
+ if (a == 0 || array_empty (a))
+ return((char *)NULL);
+
+ result = (char *)xmalloc (rsize = 128);
+ result[0] = '(';
+ rlen = 1;
+
+ for (ind = array_first_index(a); ind <= array_max_index(a); ind++) {
+ if ((ae = a->elements[ind]) == 0)
+ continue;
+ is = inttostr (element_index(ae), indstr, sizeof(indstr));
+ valstr = element_value (ae) ?
+ (ansic_shouldquote (element_value (ae)) ?
+ ansic_quote (element_value(ae), 0, (int *)0) :
+ sh_double_quote (element_value (ae)))
+ : (char *)NULL;
+ elen = STRLEN (is) + 8 + STRLEN (valstr);
+ RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize);
+
+ result[rlen++] = '[';
+ strcpy (result + rlen, is);
+ rlen += STRLEN (is);
+ result[rlen++] = ']';
+ result[rlen++] = '=';
+ if (valstr) {
+ strcpy (result + rlen, valstr);
+ rlen += STRLEN (valstr);
+ }
+
+ if (ind < array_max_index(a))
+ result[rlen++] = ' ';
+
+ FREE (valstr);
+ }
+ RESIZE_MALLOCED_BUFFER (result, rlen, 1, rsize, 8);
+ result[rlen++] = ')';
+ result[rlen] = '\0';
+ if (quoted) {
+ /* This is not as efficient as it could be... */
+ valstr = sh_single_quote (result);
+ free (result);
+ result = valstr;
+ }
+ return(result);
+}
+
+char *
+array_to_string (a, sep, quoted)
+ARRAY *a;
+char *sep;
+int quoted;
+{
+ if (a == 0)
+ return((char *)NULL);
+ if (array_empty(a))
+ return(savestring(""));
+ return (array_to_string_internal (a, array_first_index(a), array_max_index(a), sep, quoted));
+}
+
+#if defined (INCLUDE_UNUSED) || defined (TEST_ARRAY)
+/*
+ * Return an array consisting of elements in S, separated by SEP
+ */
+ARRAY *
+array_from_string(s, sep)
+char *s, *sep;
+{
+ ARRAY *a;
+ WORD_LIST *w;
+
+ if (s == 0)
+ return((ARRAY *)NULL);
+ w = list_string (s, sep, 0);
+ if (w == 0)
+ return((ARRAY *)NULL);
+ a = array_from_word_list (w);
+ return (a);
+}
+#endif
+
+#if defined (TEST_ARRAY)
+/*
+ * To make a running version, compile -DTEST_ARRAY and link with:
+ * xmalloc.o syntax.o lib/malloc/libmalloc.a lib/sh/libsh.a
+ */
+int interrupt_immediately = 0;
+
+int
+signal_is_trapped(s)
+int s;
+{
+ return 0;
+}
+
+void
+fatal_error(const char *s, ...)
+{
+ fprintf(stderr, "array_test: fatal memory error\n");
+ abort();
+}
+
+void
+programming_error(const char *s, ...)
+{
+ fprintf(stderr, "array_test: fatal programming error\n");
+ abort();
+}
+
+WORD_DESC *
+make_bare_word (s)
+const char *s;
+{
+ WORD_DESC *w;
+
+ w = (WORD_DESC *)xmalloc(sizeof(WORD_DESC));
+ w->word = s ? savestring(s) : savestring ("");
+ w->flags = 0;
+ return w;
+}
+
+WORD_LIST *
+make_word_list(x, l)
+WORD_DESC *x;
+WORD_LIST *l;
+{
+ WORD_LIST *w;
+
+ w = (WORD_LIST *)xmalloc(sizeof(WORD_LIST));
+ w->word = x;
+ w->next = l;
+ return w;
+}
+
+WORD_LIST *
+list_string(s, t, i)
+char *s, *t;
+int i;
+{
+ char *r, *a;
+ WORD_LIST *wl;
+
+ if (s == 0)
+ return (WORD_LIST *)NULL;
+ r = savestring(s);
+ wl = (WORD_LIST *)NULL;
+ a = strtok(r, t);
+ while (a) {
+ wl = make_word_list (make_bare_word(a), wl);
+ a = strtok((char *)NULL, t);
+ }
+ return (REVERSE_LIST (wl, WORD_LIST *));
+}
+
+GENERIC_LIST *
+list_reverse (list)
+GENERIC_LIST *list;
+{
+ register GENERIC_LIST *next, *prev;
+
+ for (prev = 0; list; ) {
+ next = list->next;
+ list->next = prev;
+ prev = list;
+ list = next;
+ }
+ return prev;
+}
+
+char *
+pat_subst(s, t, u, i)
+char *s, *t, *u;
+int i;
+{
+ return ((char *)NULL);
+}
+
+char *
+quote_string(s)
+char *s;
+{
+ return savestring(s);
+}
+
+print_element(ae)
+ARRAY_ELEMENT *ae;
+{
+ char lbuf[INT_STRLEN_BOUND (intmax_t) + 1];
+
+ printf("array[%s] = %s\n",
+ inttostr (element_index(ae), lbuf, sizeof (lbuf)),
+ element_value(ae));
+}
+
+print_array(a)
+ARRAY *a;
+{
+ printf("\n");
+ array_walk(a, print_element, (void *)NULL);
+}
+
+main()
+{
+ ARRAY *a, *new_a, *copy_of_a;
+ ARRAY_ELEMENT *ae, *aew;
+ char *s;
+
+ a = array_create();
+ array_insert(a, 1, "one");
+ array_insert(a, 7, "seven");
+ array_insert(a, 4, "four");
+ array_insert(a, 1029, "one thousand twenty-nine");
+ array_insert(a, 12, "twelve");
+ array_insert(a, 42, "forty-two");
+ print_array(a);
+ s = array_to_string (a, " ", 0);
+ printf("s = %s\n", s);
+ copy_of_a = array_from_string(s, " ");
+ printf("copy_of_a:");
+ print_array(copy_of_a);
+ array_dispose(copy_of_a);
+ printf("\n");
+ free(s);
+ ae = array_remove(a, 4);
+ array_dispose_element(ae);
+ ae = array_remove(a, 1029);
+ array_dispose_element(ae);
+ array_insert(a, 16, "sixteen");
+ print_array(a);
+ s = array_to_string (a, " ", 0);
+ printf("s = %s\n", s);
+ copy_of_a = array_from_string(s, " ");
+ printf("copy_of_a:");
+ print_array(copy_of_a);
+ array_dispose(copy_of_a);
+ printf("\n");
+ free(s);
+ array_insert(a, 2, "two");
+ array_insert(a, 1029, "new one thousand twenty-nine");
+ array_insert(a, 0, "zero");
+ array_insert(a, 134, "");
+ print_array(a);
+ s = array_to_string (a, ":", 0);
+ printf("s = %s\n", s);
+ copy_of_a = array_from_string(s, ":");
+ printf("copy_of_a:");
+ print_array(copy_of_a);
+ array_dispose(copy_of_a);
+ printf("\n");
+ free(s);
+ new_a = array_copy(a);
+ print_array(new_a);
+ s = array_to_string (new_a, ":", 0);
+ printf("s = %s\n", s);
+ copy_of_a = array_from_string(s, ":");
+ free(s);
+ printf("copy_of_a:");
+ print_array(copy_of_a);
+ array_shift(copy_of_a, 2, AS_DISPOSE);
+ printf("copy_of_a shifted by two:");
+ print_array(copy_of_a);
+ ae = array_shift(copy_of_a, 2, 0);
+ printf("copy_of_a shifted by two:");
+ print_array(copy_of_a);
+ for ( ; ae; ) {
+ aew = element_forw(ae);
+ array_dispose_element(ae);
+ ae = aew;
+ }
+ array_rshift(copy_of_a, 1, (char *)0);
+ printf("copy_of_a rshift by 1:");
+ print_array(copy_of_a);
+ array_rshift(copy_of_a, 2, "new element zero");
+ printf("copy_of_a rshift again by 2 with new element zero:");
+ print_array(copy_of_a);
+ s = array_to_assign(copy_of_a, 0);
+ printf("copy_of_a=%s\n", s);
+ free(s);
+ ae = array_shift(copy_of_a, array_num_elements(copy_of_a), 0);
+ for ( ; ae; ) {
+ aew = element_forw(ae);
+ array_dispose_element(ae);
+ ae = aew;
+ }
+ array_dispose(copy_of_a);
+ printf("\n");
+ array_dispose(a);
+ array_dispose(new_a);
+}
+
+#endif /* TEST_ARRAY */
+#endif /* ARRAY_VARS */
diff --git a/arrayfunc.c b/arrayfunc.c
index 9338dfc7..2c05d15b 100644
--- a/arrayfunc.c
+++ b/arrayfunc.c
@@ -1,6 +1,6 @@
/* arrayfunc.c -- High-level array functions used by other parts of the shell. */
-/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -53,14 +53,14 @@ int assoc_expand_once = 0;
int array_expand_once = 0;
static SHELL_VAR *bind_array_var_internal PARAMS((SHELL_VAR *, arrayind_t, char *, char *, int));
-static SHELL_VAR *assign_array_element_internal PARAMS((SHELL_VAR *, char *, char *, char *, int, char *, int));
+static SHELL_VAR *assign_array_element_internal PARAMS((SHELL_VAR *, char *, char *, char *, int, char *, int, array_eltstate_t *));
static void assign_assoc_from_kvlist PARAMS((SHELL_VAR *, WORD_LIST *, HASH_TABLE *, int));
static char *quote_assign PARAMS((const char *));
static void quote_array_assignment_chars PARAMS((WORD_LIST *));
static char *quote_compound_array_word PARAMS((char *, int));
-static char *array_value_internal PARAMS((const char *, int, int, int *, arrayind_t *));
+static char *array_value_internal PARAMS((const char *, int, int, array_eltstate_t *));
/* Standard error message to use when encountering an invalid array subscript */
const char * const bash_badsub_errmsg = N_("bad array subscript");
@@ -318,19 +318,44 @@ bind_assoc_variable (entry, name, key, value, flags)
return (bind_assoc_var_internal (entry, assoc_cell (entry), key, value, flags));
}
+inline void
+init_eltstate (array_eltstate_t *estatep)
+{
+ if (estatep)
+ {
+ estatep->type = ARRAY_INVALID;
+ estatep->subtype = 0;
+ estatep->key = estatep->value = 0;
+ estatep->ind = INTMAX_MIN;
+ }
+}
+
+inline void
+flush_eltstate (array_eltstate_t *estatep)
+{
+ if (estatep)
+ FREE (estatep->key);
+}
+
/* Parse NAME, a lhs of an assignment statement of the form v[s], and
assign VALUE to that array element by calling bind_array_variable().
Flags are ASS_ assignment flags */
SHELL_VAR *
-assign_array_element (name, value, flags)
+assign_array_element (name, value, flags, estatep)
char *name, *value;
int flags;
+ array_eltstate_t *estatep;
{
char *sub, *vname;
- int sublen, isassoc;
+ int sublen, isassoc, avflags;
SHELL_VAR *entry;
- vname = array_variable_name (name, (flags & ASS_NOEXPAND) != 0, &sub, &sublen);
+ avflags = 0;
+ if (flags & ASS_NOEXPAND)
+ avflags |= AV_NOEXPAND;
+ if (flags & ASS_ONEWORD)
+ avflags |= AV_ONEWORD;
+ vname = array_variable_name (name, avflags, &sub, &sublen);
if (vname == 0)
return ((SHELL_VAR *)NULL);
@@ -338,21 +363,36 @@ assign_array_element (name, value, flags)
entry = find_variable (vname);
isassoc = entry && assoc_p (entry);
- if (((isassoc == 0 || (flags & ASS_NOEXPAND) == 0) && (ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']')) || (sublen <= 1))
+ /* We don't allow assignment to `*' or `@' associative array keys if the
+ caller hasn't told us the subscript has already been expanded
+ (ASS_NOEXPAND). If the caller has explicitly told us it's ok
+ (ASS_ALLOWALLSUB) we allow it. */
+ if (((isassoc == 0 || (flags & (ASS_NOEXPAND|ASS_ALLOWALLSUB)) == 0) &&
+ (ALL_ELEMENT_SUB (sub[0]) && sub[1] == ']')) ||
+ (sublen <= 1) ||
+ (sub[sublen] != '\0')) /* sanity check */
{
free (vname);
err_badarraysub (name);
return ((SHELL_VAR *)NULL);
}
- entry = assign_array_element_internal (entry, name, vname, sub, sublen, value, flags);
+ entry = assign_array_element_internal (entry, name, vname, sub, sublen, value, flags, estatep);
+
+#if ARRAY_EXPORT
+ if (entry && exported_p (entry))
+ {
+ INVALIDATE_EXPORTSTR (entry);
+ array_needs_making = 1;
+ }
+#endif
free (vname);
return entry;
}
static SHELL_VAR *
-assign_array_element_internal (entry, name, vname, sub, sublen, value, flags)
+assign_array_element_internal (entry, name, vname, sub, sublen, value, flags, estatep)
SHELL_VAR *entry;
char *name; /* only used for error messages */
char *vname;
@@ -360,15 +400,19 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags)
int sublen;
char *value;
int flags;
+ array_eltstate_t *estatep;
{
- char *akey;
+ char *akey, *nkey;
arrayind_t ind;
+ char *newval;
+
+ /* rely on the caller to initialize estatep */
if (entry && assoc_p (entry))
{
sub[sublen-1] = '\0';
if ((flags & ASS_NOEXPAND) == 0)
- akey = expand_assignment_string_to_string (sub, 0); /* [ */
+ akey = expand_subscript_string (sub, 0); /* [ */
else
akey = savestring (sub);
sub[sublen-1] = ']';
@@ -378,7 +422,15 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags)
FREE (akey);
return ((SHELL_VAR *)NULL);
}
+ if (estatep)
+ nkey = savestring (akey); /* assoc_insert/assoc_replace frees akey */
entry = bind_assoc_variable (entry, vname, akey, value, flags);
+ if (estatep)
+ {
+ estatep->type = ARRAY_ASSOC;
+ estatep->key = nkey;
+ estatep->value = entry ? assoc_reference (assoc_cell (entry), nkey) : 0;
+ }
}
else
{
@@ -392,6 +444,12 @@ assign_array_element_internal (entry, name, vname, sub, sublen, value, flags)
return ((SHELL_VAR *)NULL);
}
entry = bind_array_variable (vname, ind, value, flags);
+ if (estatep)
+ {
+ estatep->type = ARRAY_INDEXED;
+ estatep->ind = ind;
+ estatep->value = entry ? array_reference (array_cell (entry), ind) : 0;
+ }
}
return (entry);
@@ -446,6 +504,8 @@ find_or_make_array_variable (name, flags)
report_error (_("%s: cannot convert indexed to associative array"), name);
return ((SHELL_VAR *)NULL);
}
+ else if (flags & 2)
+ var = assoc_p (var) ? var : convert_var_to_assoc (var);
else if (array_p (var) == 0 && assoc_p (var) == 0)
var = convert_var_to_array (var);
@@ -523,8 +583,17 @@ expand_compound_array_assignment (var, value, flags)
shell expansions including pathname generation and word splitting. */
/* First we split the string on whitespace, using the shell parser
(ksh93 seems to do this). */
+ /* XXX - this needs a rethink, maybe use split_at_delims */
list = parse_string_to_word_list (val, 1, "array assign");
+ /* If the parser has quoted CTLESC and CTNLNUL with CTLESC in unquoted
+ words, we need to remove those here because the code below assumes
+ they are there because they exist in the original word. */
+ /* XXX - if we rethink parse_string_to_word_list above, change this. */
+ for (nlist = list; nlist; nlist = nlist->next)
+ if ((nlist->word->flags & W_QUOTED) == 0)
+ remove_quoted_escapes (nlist->word->word);
+
/* Note that we defer expansion of the assignment statements for associative
arrays here, so we don't have to scan the subscript and find the ending
bracket twice. See the caller below. */
@@ -573,7 +642,7 @@ assign_assoc_from_kvlist (var, nlist, h, flags)
if (list->next)
list = list->next;
- akey = expand_assignment_string_to_string (k, 0);
+ akey = expand_subscript_string (k, 0);
if (akey == 0 || *akey == 0)
{
err_badarraysub (k);
@@ -581,7 +650,7 @@ assign_assoc_from_kvlist (var, nlist, h, flags)
continue;
}
- aval = expand_assignment_string_to_string (v, 0);
+ aval = expand_subscript_string (v, 0);
if (aval == 0)
{
aval = (char *)xmalloc (1);
@@ -606,10 +675,13 @@ char *
expand_and_quote_kvpair_word (w)
char *w;
{
- char *t, *r;
+ char *r, *s, *t;
- t = w ? expand_assignment_string_to_string (w, 0) : 0;
- r = sh_single_quote (t ? t : "");
+ t = w ? expand_subscript_string (w, 0) : 0;
+ s = (t && strchr (t, CTLESC)) ? quote_escapes (t) : t;
+ r = sh_single_quote (s ? s : "");
+ if (s != t)
+ free (s);
free (t);
return r;
}
@@ -709,13 +781,10 @@ assign_compound_array_list (var, nlist, flags)
continue;
}
- if (ALL_ELEMENT_SUB (w[1]) && len == 2)
+ if (ALL_ELEMENT_SUB (w[1]) && len == 2 && array_p (var))
{
set_exit_status (EXECUTION_FAILURE);
- if (assoc_p (var))
- report_error (_("%s: invalid associative array key"), w);
- else
- report_error (_("%s: cannot assign to non-numeric index"), w);
+ report_error (_("%s: cannot assign to non-numeric index"), w);
continue;
}
@@ -737,7 +806,7 @@ assign_compound_array_list (var, nlist, flags)
{
/* This is not performed above, see expand_compound_array_assignment */
w[len] = '\0'; /*[*/
- akey = expand_assignment_string_to_string (w+1, 0);
+ akey = expand_subscript_string (w+1, 0);
w[len] = ']';
/* And we need to expand the value also, see below */
if (akey == 0 || *akey == 0)
@@ -773,7 +842,7 @@ assign_compound_array_list (var, nlist, flags)
/* See above; we need to expand the value here */
if (assoc_p (var))
{
- val = expand_assignment_string_to_string (val, 0);
+ val = expand_subscript_string (val, 0);
if (val == 0)
{
val = (char *)xmalloc (1);
@@ -888,26 +957,33 @@ quote_compound_array_word (w, type)
int ind, wlen, i;
if (w[0] != LBRACK)
- return (sh_single_quote (w));
+ return (sh_single_quote (w)); /* XXX - quote CTLESC */
ind = skipsubscript (w, 0, 0);
if (w[ind] != RBRACK)
- return (sh_single_quote (w));
+ return (sh_single_quote (w)); /* XXX - quote CTLESC */
wlen = strlen (w);
w[ind] = '\0';
- sub = sh_single_quote (w+1);
+ t = (strchr (w+1, CTLESC)) ? quote_escapes (w+1) : w+1;
+ sub = sh_single_quote (t);
+ if (t != w+1)
+ free (t);
w[ind] = RBRACK;
nword = xmalloc (wlen * 4 + 5); /* wlen*4 is max single quoted length */
nword[0] = LBRACK;
i = STRLEN (sub);
memcpy (nword+1, sub, i);
+ free (sub);
i++; /* accommodate the opening LBRACK */
nword[i++] = w[ind++]; /* RBRACK */
if (w[ind] == '+')
nword[i++] = w[ind++];
nword[i++] = w[ind++];
- value = sh_single_quote (w + ind);
+ t = (strchr (w+ind, CTLESC)) ? quote_escapes (w+ind) : w+ind;
+ value = sh_single_quote (t);
+ if (t != w+ind)
+ free (t);
strcpy (nword + i, value);
return nword;
@@ -925,19 +1001,22 @@ expand_and_quote_assoc_word (w, type)
char *w;
int type;
{
- char *nword, *key, *value, *t;
+ char *nword, *key, *value, *s, *t;
int ind, wlen, i;
if (w[0] != LBRACK)
- return (sh_single_quote (w));
+ return (sh_single_quote (w)); /* XXX - quote_escapes */
ind = skipsubscript (w, 0, 0);
if (w[ind] != RBRACK)
- return (sh_single_quote (w));
+ return (sh_single_quote (w)); /* XXX - quote_escapes */
w[ind] = '\0';
- t = expand_assignment_string_to_string (w+1, 0);
+ t = expand_subscript_string (w+1, 0);
+ s = (t && strchr (t, CTLESC)) ? quote_escapes (t) : t;
+ key = sh_single_quote (s ? s : "");
+ if (s != t)
+ free (s);
w[ind] = RBRACK;
- key = sh_single_quote (t ? t : "");
free (t);
wlen = STRLEN (key);
@@ -951,8 +1030,11 @@ expand_and_quote_assoc_word (w, type)
nword[i++] = w[ind++];
nword[i++] = w[ind++];
- t = expand_assignment_string_to_string (w+ind, 0);
- value = sh_single_quote (t ? t : "");
+ t = expand_subscript_string (w+ind, 0);
+ s = (t && strchr (t, CTLESC)) ? quote_escapes (t) : t;
+ value = sh_single_quote (s ? s : "");
+ if (s != t)
+ free (s);
free (t);
nword = xrealloc (nword, wlen + 5 + STRLEN (value));
strcpy (nword + i, value);
@@ -972,7 +1054,7 @@ quote_compound_array_list (list, type)
WORD_LIST *list;
int type;
{
- char *t;
+ char *s, *t;
WORD_LIST *l;
for (l = list; l; l = l->next)
@@ -980,7 +1062,12 @@ quote_compound_array_list (list, type)
if (l->word == 0 || l->word->word == 0)
continue; /* should not happen, but just in case... */
if ((l->word->flags & W_ASSIGNMENT) == 0)
- t = sh_single_quote (l->word->word);
+ {
+ s = (strchr (l->word->word, CTLESC)) ? quote_escapes (l->word->word) : l->word->word;
+ t = sh_single_quote (s);
+ if (s != l->word->word)
+ free (s);
+ }
else
t = quote_compound_array_word (l->word->word, type);
free (l->word->word);
@@ -1020,32 +1107,34 @@ quote_array_assignment_chars (list)
/* This function is called with SUB pointing to just after the beginning
`[' of an array subscript and removes the array element to which SUB
expands from array VAR. A subscript of `*' or `@' unsets the array. */
-/* If FLAGS&1 we don't expand the subscript; we just use it as-is. */
+/* If FLAGS&1 (VA_NOEXPAND) we don't expand the subscript; we just use it
+ as-is. If FLAGS&VA_ONEWORD, we don't try to use skipsubscript to parse
+ the subscript, we just assume the subscript ends with a close bracket,
+ if one is present, and use what's inside the brackets. */
int
unbind_array_element (var, sub, flags)
SHELL_VAR *var;
char *sub;
int flags;
{
- int len;
arrayind_t ind;
char *akey;
ARRAY_ELEMENT *ae;
- len = skipsubscript (sub, 0, (flags&1) || (var && assoc_p(var))); /* XXX */
- if (sub[len] != ']' || len == 0)
- {
- builtin_error ("%s[%s: %s", var->name, sub, _(bash_badsub_errmsg));
- return -1;
- }
- sub[len] = '\0';
+ /* Assume that the caller (unset_builtin) passes us a null-terminated SUB,
+ so we don't have to use VA_ONEWORD or parse the subscript again with
+ skipsubscript(). */
if (ALL_ELEMENT_SUB (sub[0]) && sub[1] == 0)
{
if (array_p (var) || assoc_p (var))
{
- unbind_variable (var->name); /* XXX -- {array,assoc}_flush ? */
- return (0);
+ if (flags & VA_ALLOWALL)
+ {
+ unbind_variable (var->name); /* XXX -- {array,assoc}_flush ? */
+ return (0);
+ }
+ /* otherwise we fall through and try to unset element `@' or `*' */
}
else
return -2; /* don't allow this to unset scalar variables */
@@ -1053,7 +1142,7 @@ unbind_array_element (var, sub, flags)
if (assoc_p (var))
{
- akey = (flags & 1) ? sub : expand_assignment_string_to_string (sub, 0);
+ akey = (flags & VA_NOEXPAND) ? sub : expand_subscript_string (sub, 0);
if (akey == 0 || *akey == 0)
{
builtin_error ("[%s]: %s", sub, _(bash_badsub_errmsg));
@@ -1066,7 +1155,28 @@ unbind_array_element (var, sub, flags)
}
else if (array_p (var))
{
- ind = array_expand_index (var, sub, len+1, 0);
+ if (ALL_ELEMENT_SUB (sub[0]) && sub[1] == 0)
+ {
+ /* We can go several ways here:
+ 1) remove the array (backwards compatible)
+ 2) empty the array (new behavior)
+ 3) do nothing; treat the `@' or `*' as an expression and throw
+ an error
+ */
+ /* Behavior 1 */
+ if (shell_compatibility_level <= 51)
+ {
+ unbind_variable (name_cell (var));
+ return 0;
+ }
+ else /* Behavior 2 */
+ {
+ array_flush (array_cell (var));
+ return 0;
+ }
+ /* Fall through for behavior 3 */
+ }
+ ind = array_expand_index (var, sub, strlen (sub) + 1, 0);
/* negative subscripts to indexed arrays count back from end */
if (ind < 0)
ind = array_max_index (array_cell (var)) + 1 + ind;
@@ -1082,7 +1192,7 @@ unbind_array_element (var, sub, flags)
else /* array_p (var) == 0 && assoc_p (var) == 0 */
{
akey = this_command_name;
- ind = array_expand_index (var, sub, len+1, 0);
+ ind = array_expand_index (var, sub, strlen (sub) + 1, 0);
this_command_name = akey;
if (ind == 0)
{
@@ -1144,14 +1254,23 @@ print_assoc_assignment (var, quoted)
/* Return 1 if NAME is a properly-formed array reference v[sub]. */
+/* Return 1 if NAME is a properly-formed array reference v[sub]. */
+
+/* When NAME is a properly-formed array reference and a non-null argument SUBP
+ is supplied, '[' and ']' that enclose the subscript are replaced by '\0',
+ and the pointer to the subscript in NAME is assigned to *SUBP, so that NAME
+ and SUBP can be later used as the array name and the subscript,
+ respectively. When SUBP is the null pointer, the original string NAME will
+ not be modified. */
/* We need to reserve 1 for FLAGS, which we pass to skipsubscript. */
int
-valid_array_reference (name, flags)
- const char *name;
+tokenize_array_reference (name, flags, subp)
+ char *name;
int flags;
+ char **subp;
{
char *t;
- int r, len, isassoc;
+ int r, len, isassoc, ssflags;
SHELL_VAR *entry;
t = mbschr (name, '['); /* ] */
@@ -1166,10 +1285,15 @@ valid_array_reference (name, flags)
if (r == 0)
return 0;
+ ssflags = 0;
if (isassoc && ((flags & (VA_NOEXPAND|VA_ONEWORD)) == (VA_NOEXPAND|VA_ONEWORD)))
len = strlen (t) - 1;
else if (isassoc)
- len = skipsubscript (t, 0, flags&VA_NOEXPAND); /* VA_NOEXPAND must be 1 */
+ {
+ if (flags & VA_NOEXPAND)
+ ssflags |= 1;
+ len = skipsubscript (t, 0, ssflags);
+ }
else
/* Check for a properly-terminated non-null subscript. */
len = skipsubscript (t, 0, 0); /* arithmetic expression */
@@ -1182,16 +1306,34 @@ valid_array_reference (name, flags)
existing associative arrays, using isassoc */
for (r = 1; r < len; r++)
if (whitespace (t[r]) == 0)
- return 1;
- return 0;
-#else
+ break;
+ if (r == len)
+ return 0; /* Fail if the subscript contains only whitespaces. */
+#endif
+
+ if (subp)
+ {
+ t[0] = t[len] = '\0';
+ *subp = t + 1;
+ }
+
/* This allows blank subscripts */
return 1;
-#endif
}
return 0;
}
+/* Return 1 if NAME is a properly-formed array reference v[sub]. */
+
+/* We need to reserve 1 for FLAGS, which we pass to skipsubscript. */
+int
+valid_array_reference (name, flags)
+ const char *name;
+ int flags;
+{
+ return tokenize_array_reference ((char *)name, flags, (char **)NULL);
+}
+
/* Expand the array index beginning at S and extending LEN characters. */
arrayind_t
array_expand_index (var, s, len, flags)
@@ -1201,7 +1343,7 @@ array_expand_index (var, s, len, flags)
int flags;
{
char *exp, *t, *savecmd;
- int expok;
+ int expok, eflag;
arrayind_t val;
exp = (char *)xmalloc (len);
@@ -1212,11 +1354,13 @@ array_expand_index (var, s, len, flags)
t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */
else
t = exp;
-#endif
+#else
t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */
+#endif
savecmd = this_command_name;
this_command_name = (char *)NULL;
- val = evalexp (t, EXP_EXPANDED, &expok); /* XXX - was 0 but we expanded exp already */
+ eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED;
+ val = evalexp (t, eflag, &expok); /* XXX - was 0 but we expanded exp already */
this_command_name = savecmd;
if (t != exp)
free (t);
@@ -1245,7 +1389,7 @@ array_variable_name (s, flags, subp, lenp)
int *lenp;
{
char *t, *ret;
- int ind, ni;
+ int ind, ni, ssflags;
t = mbschr (s, '[');
if (t == 0)
@@ -1257,7 +1401,15 @@ array_variable_name (s, flags, subp, lenp)
return ((char *)NULL);
}
ind = t - s;
- ni = skipsubscript (s, ind, flags); /* XXX - was 0 not flags */
+ if ((flags & (AV_NOEXPAND|AV_ONEWORD)) == (AV_NOEXPAND|AV_ONEWORD))
+ ni = strlen (s) - 1;
+ else
+ {
+ ssflags = 0;
+ if (flags & AV_NOEXPAND)
+ ssflags |= 1;
+ ni = skipsubscript (s, ind, ssflags);
+ }
if (ni <= ind + 1 || s[ni] != ']')
{
err_badarraysub (s);
@@ -1323,19 +1475,19 @@ array_variable_part (s, flags, subp, lenp)
is non-null it gets 1 if the array reference is name[*], 2 if the
reference is name[@], and 0 otherwise. */
static char *
-array_value_internal (s, quoted, flags, rtype, indp)
+array_value_internal (s, quoted, flags, estatep)
const char *s;
- int quoted, flags, *rtype;
- arrayind_t *indp;
+ int quoted, flags;
+ array_eltstate_t *estatep;
{
- int len;
+ int len, isassoc, subtype;
arrayind_t ind;
char *akey;
char *retval, *t, *temp;
WORD_LIST *l;
SHELL_VAR *var;
- var = array_variable_part (s, (flags&AV_NOEXPAND) ? 1 : 0, &t, &len); /* XXX */
+ var = array_variable_part (s, flags, &t, &len); /* XXX */
/* Expand the index, even if the variable doesn't exist, in case side
effects are needed, like ${w[i++]} where w is unset. */
@@ -1347,38 +1499,53 @@ array_value_internal (s, quoted, flags, rtype, indp)
if (len == 0)
return ((char *)NULL); /* error message already printed */
+ isassoc = var && assoc_p (var);
/* [ */
akey = 0;
- if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']')
+ subtype = 0;
+ if (estatep)
+ estatep->value = (char *)NULL;
+
+ /* Backwards compatibility: we only change the behavior of A[@] and A[*]
+ for associative arrays, and the caller has to request it. */
+ if ((isassoc == 0 || (flags & AV_ATSTARKEYS) == 0) && ALL_ELEMENT_SUB (t[0]) && t[1] == ']')
{
- if (rtype)
- *rtype = (t[0] == '*') ? 1 : 2;
+ if (estatep)
+ estatep->subtype = (t[0] == '*') ? 1 : 2;
if ((flags & AV_ALLOWALL) == 0)
{
err_badarraysub (s);
return ((char *)NULL);
}
- else if (var == 0 || value_cell (var) == 0) /* XXX - check for invisible_p(var) ? */
+ else if (var == 0 || value_cell (var) == 0)
return ((char *)NULL);
else if (invisible_p (var))
return ((char *)NULL);
else if (array_p (var) == 0 && assoc_p (var) == 0)
- l = add_string_to_list (value_cell (var), (WORD_LIST *)NULL);
+ {
+ if (estatep)
+ estatep->type = ARRAY_SCALAR;
+ l = add_string_to_list (value_cell (var), (WORD_LIST *)NULL);
+ }
else if (assoc_p (var))
{
+ if (estatep)
+ estatep->type = ARRAY_ASSOC;
l = assoc_to_word_list (assoc_cell (var));
if (l == (WORD_LIST *)NULL)
return ((char *)NULL);
}
else
{
+ if (estatep)
+ estatep->type = ARRAY_INDEXED;
l = array_to_word_list (array_cell (var));
if (l == (WORD_LIST *)NULL)
return ((char *) NULL);
}
- /* Caller of array_value takes care of inspecting rtype and duplicating
- retval if rtype == 0, so this is not a memory leak */
+ /* Caller of array_value takes care of inspecting estatep->subtype and
+ duplicating retval if subtype == 0, so this is not a memory leak */
if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
{
temp = string_list_dollar_star (l, quoted, (flags & AV_ASSIGNRHS) ? PF_ASSIGNRHS : 0);
@@ -1392,11 +1559,11 @@ array_value_internal (s, quoted, flags, rtype, indp)
}
else
{
- if (rtype)
- *rtype = 0;
+ if (estatep)
+ estatep->subtype = 0;
if (var == 0 || array_p (var) || assoc_p (var) == 0)
{
- if ((flags & AV_USEIND) == 0 || indp == 0)
+ if ((flags & AV_USEIND) == 0 || estatep == 0)
{
ind = array_expand_index (var, t, len, flags);
if (ind < 0)
@@ -1407,17 +1574,23 @@ array_value_internal (s, quoted, flags, rtype, indp)
if (ind < 0)
INDEX_ERROR();
}
- if (indp)
- *indp = ind;
+ if (estatep)
+ estatep->ind = ind;
}
- else if (indp)
- ind = *indp;
+ else if (estatep && (flags & AV_USEIND))
+ ind = estatep->ind;
+ if (estatep && var)
+ estatep->type = array_p (var) ? ARRAY_INDEXED : ARRAY_SCALAR;
}
else if (assoc_p (var))
{
t[len - 1] = '\0';
- if ((flags & AV_NOEXPAND) == 0)
- akey = expand_assignment_string_to_string (t, 0); /* [ */
+ if (estatep)
+ estatep->type = ARRAY_ASSOC;
+ if ((flags & AV_USEIND) && estatep && estatep->key)
+ akey = savestring (estatep->key);
+ else if ((flags & AV_NOEXPAND) == 0)
+ akey = expand_subscript_string (t, 0); /* [ */
else
akey = savestring (t);
t[len - 1] = ']';
@@ -1427,26 +1600,34 @@ array_value_internal (s, quoted, flags, rtype, indp)
INDEX_ERROR();
}
}
-
- if (var == 0 || value_cell (var) == 0) /* XXX - check invisible_p(var) ? */
+
+ if (var == 0 || value_cell (var) == 0)
{
- FREE (akey);
+ FREE (akey);
return ((char *)NULL);
}
else if (invisible_p (var))
{
- FREE (akey);
+ FREE (akey);
return ((char *)NULL);
}
if (array_p (var) == 0 && assoc_p (var) == 0)
- return (ind == 0 ? value_cell (var) : (char *)NULL);
+ retval = (ind == 0) ? value_cell (var) : (char *)NULL;
else if (assoc_p (var))
{
retval = assoc_reference (assoc_cell (var), akey);
- free (akey);
+ if (estatep && estatep->key && (flags & AV_USEIND))
+ free (akey); /* duplicated estatep->key */
+ else if (estatep)
+ estatep->key = akey; /* XXX - caller must manage */
+ else /* not saving it anywhere */
+ free (akey);
}
else
retval = array_reference (array_cell (var), ind);
+
+ if (estatep)
+ estatep->value = retval;
}
return retval;
@@ -1455,12 +1636,15 @@ array_value_internal (s, quoted, flags, rtype, indp)
/* Return a string containing the elements described by the array and
subscript contained in S, obeying quoting for subscripts * and @. */
char *
-array_value (s, quoted, flags, rtype, indp)
+array_value (s, quoted, flags, estatep)
const char *s;
- int quoted, flags, *rtype;
- arrayind_t *indp;
+ int quoted, flags;
+ array_eltstate_t *estatep;
{
- return (array_value_internal (s, quoted, flags|AV_ALLOWALL, rtype, indp));
+ char *retval;
+
+ retval = array_value_internal (s, quoted, flags|AV_ALLOWALL, estatep);
+ return retval;
}
/* Return the value of the array indexing expression S as a single string.
@@ -1468,12 +1652,15 @@ array_value (s, quoted, flags, rtype, indp)
is used by other parts of the shell such as the arithmetic expression
evaluator in expr.c. */
char *
-get_array_value (s, flags, rtype, indp)
+get_array_value (s, flags, estatep)
const char *s;
- int flags, *rtype;
- arrayind_t *indp;
+ int flags;
+ array_eltstate_t *estatep;
{
- return (array_value_internal (s, 0, flags, rtype, indp));
+ char *retval;
+
+ retval = array_value_internal (s, 0, flags, estatep);
+ return retval;
}
char *
diff --git a/arrayfunc.h b/arrayfunc.h
index 838e76d2..69112b57 100644
--- a/arrayfunc.h
+++ b/arrayfunc.h
@@ -1,6 +1,6 @@
/* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */
-/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -23,6 +23,29 @@
/* Must include variables.h before including this file. */
+/* An object to encapsulate the state of an array element. It can describe
+ an array assignment A[KEY]=VALUE or a[IND]=VALUE depending on TYPE, or
+ for passing array subscript references around, where VALUE would be
+ ${a[IND]} or ${A[KEY]}. This is not dependent on ARRAY_VARS so we can
+ use it in function parameters. */
+
+/* values for `type' field */
+#define ARRAY_INVALID -1
+#define ARRAY_SCALAR 0
+#define ARRAY_INDEXED 1
+#define ARRAY_ASSOC 2
+
+/* KEY will contain allocated memory if called through the assign_array_element
+ code path because of how assoc_insert works. */
+typedef struct element_state
+{
+ short type; /* assoc or indexed, says which fields are valid */
+ short subtype; /* `*', `@', or something else */
+ arrayind_t ind;
+ char *key; /* can be allocated memory */
+ char *value;
+} array_eltstate_t;
+
#if defined (ARRAY_VARS)
/* This variable means to not expand associative array subscripts more than
@@ -32,17 +55,23 @@ extern int assoc_expand_once;
/* The analog for indexed array subscripts */
extern int array_expand_once;
-/* Flags for array_value_internal and callers array_value/get_array_value */
-#define AV_ALLOWALL 0x001
+/* Flags for array_value_internal and callers array_value/get_array_value; also
+ used by array_variable_name and array_variable_part. */
+#define AV_ALLOWALL 0x001 /* treat a[@] like $@ and a[*] like $* */
#define AV_QUOTED 0x002
#define AV_USEIND 0x004
#define AV_USEVAL 0x008 /* XXX - should move this */
#define AV_ASSIGNRHS 0x010 /* no splitting, special case ${a[@]} */
#define AV_NOEXPAND 0x020 /* don't run assoc subscripts through word expansion */
+#define AV_ONEWORD 0x040 /* not used yet */
+#define AV_ATSTARKEYS 0x080 /* accept a[@] and a[*] but use them as keys, not special values */
-/* Flags for valid_array_reference. Value 1 is reserved for skipsubscript() */
+/* Flags for valid_array_reference. Value 1 is reserved for skipsubscript().
+ Also used by unbind_array_element, which is currently the only function
+ that uses VA_ALLOWALL. */
#define VA_NOEXPAND 0x001
#define VA_ONEWORD 0x002
+#define VA_ALLOWALL 0x004 /* allow @ to mean all elements of the array */
extern SHELL_VAR *convert_var_to_array PARAMS((SHELL_VAR *));
extern SHELL_VAR *convert_var_to_assoc PARAMS((SHELL_VAR *));
@@ -51,7 +80,7 @@ extern char *make_array_variable_value PARAMS((SHELL_VAR *, arrayind_t, char *,
extern SHELL_VAR *bind_array_variable PARAMS((char *, arrayind_t, char *, int));
extern SHELL_VAR *bind_array_element PARAMS((SHELL_VAR *, arrayind_t, char *, int));
-extern SHELL_VAR *assign_array_element PARAMS((char *, char *, int));
+extern SHELL_VAR *assign_array_element PARAMS((char *, char *, int, array_eltstate_t *));
extern SHELL_VAR *bind_assoc_variable PARAMS((SHELL_VAR *, char *, char *, char *, int));
@@ -78,22 +107,33 @@ extern void print_assoc_assignment PARAMS((SHELL_VAR *, int));
extern arrayind_t array_expand_index PARAMS((SHELL_VAR *, char *, int, int));
extern int valid_array_reference PARAMS((const char *, int));
-extern char *array_value PARAMS((const char *, int, int, int *, arrayind_t *));
-extern char *get_array_value PARAMS((const char *, int, int *, arrayind_t *));
+extern int tokenize_array_reference PARAMS((char *, int, char **));
+
+extern char *array_value PARAMS((const char *, int, int, array_eltstate_t *));
+extern char *get_array_value PARAMS((const char *, int, array_eltstate_t *));
extern char *array_keys PARAMS((char *, int, int));
extern char *array_variable_name PARAMS((const char *, int, char **, int *));
extern SHELL_VAR *array_variable_part PARAMS((const char *, int, char **, int *));
+extern void init_eltstate (array_eltstate_t *);
+extern void flush_eltstate (array_eltstate_t *);
+
#else
#define AV_ALLOWALL 0
#define AV_QUOTED 0
#define AV_USEIND 0
+#define AV_USEVAL 0
#define AV_ASSIGNRHS 0
+#define AV_NOEXPAND 0
+#define AV_ONEWORD 0
+#define AV_ATSTARKEYS 0
+#define VA_NOEXPAND 0
#define VA_ONEWORD 0
+#define VA_ALLOWALL 0
#endif
diff --git a/assoc.c b/assoc.c
index 5782e856..cbb5c7e4 100644
--- a/assoc.c
+++ b/assoc.c
@@ -7,7 +7,7 @@
* chet@ins.cwru.edu
*/
-/* Copyright (C) 2008,2009,2011-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008,2009,2011-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -544,6 +544,30 @@ assoc_keys_to_word_list (h)
return (assoc_to_word_list_internal (h, 1));
}
+WORD_LIST *
+assoc_to_kvpair_list (h)
+ HASH_TABLE *h;
+{
+ WORD_LIST *list;
+ int i;
+ BUCKET_CONTENTS *tlist;
+ char *k, *v;
+
+ if (h == 0 || assoc_empty (h))
+ return((WORD_LIST *)NULL);
+ list = (WORD_LIST *)NULL;
+
+ for (i = 0; i < h->nbuckets; i++)
+ for (tlist = hash_items (i, h); tlist; tlist = tlist->next)
+ {
+ k = (char *)tlist->key;
+ v = (char *)tlist->data;
+ list = make_word_list (make_bare_word (k), list);
+ list = make_word_list (make_bare_word (v), list);
+ }
+ return (REVERSE_LIST(list, WORD_LIST *));
+}
+
char *
assoc_to_string (h, sep, quoted)
HASH_TABLE *h;
diff --git a/assoc.h b/assoc.h
index 78ec0738..664d1374 100644
--- a/assoc.h
+++ b/assoc.h
@@ -1,7 +1,7 @@
/* assoc.h -- definitions for the interface exported by assoc.c that allows
the rest of the shell to manipulate associative array variables. */
-/* Copyright (C) 2008,2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008,2009-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -60,6 +60,7 @@ extern char *assoc_to_assign PARAMS((HASH_TABLE *, int));
extern WORD_LIST *assoc_to_word_list PARAMS((HASH_TABLE *));
extern WORD_LIST *assoc_keys_to_word_list PARAMS((HASH_TABLE *));
+extern WORD_LIST *assoc_to_kvpair_list PARAMS((HASH_TABLE *));
extern char *assoc_to_string PARAMS((HASH_TABLE *, char *, int));
#endif /* _ASSOC_H_ */
diff --git a/bashansi.h b/bashansi.h
index 2c33937d..dd2a544c 100644
--- a/bashansi.h
+++ b/bashansi.h
@@ -1,6 +1,6 @@
/* bashansi.h -- Typically included information required by picky compilers. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -22,9 +22,6 @@
#define _BASHANSI_H_
#if defined (HAVE_STRING_H)
-# if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
-# include <memory.h>
-# endif
# include <string.h>
#endif /* !HAVE_STRING_H */
diff --git a/bashhist.c b/bashhist.c
index 2a05a53f..90cd8c34 100644
--- a/bashhist.c
+++ b/bashhist.c
@@ -1,6 +1,6 @@
/* bashhist.c -- bash interface to the GNU history library. */
-/* Copyright (C) 1993-2019 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -374,8 +374,11 @@ bash_delete_history_range (first, last)
HIST_ENTRY **discard_list;
discard_list = remove_history_range (first, last);
- for (i = 0; discard_list && discard_list[i]; i++)
+ if (discard_list == 0)
+ return 0;
+ for (i = 0; discard_list[i]; i++)
free_history_entry (discard_list[i]);
+ free (discard_list);
history_lines_this_session -= i;
return 1;
@@ -653,6 +656,8 @@ shell_comment (line)
char *p;
int n;
+ if (dstack.delimiter_depth != 0 || (parser_state & PST_HEREDOC))
+ return 0;
if (line == 0)
return 0;
for (p = line; p && *p && whitespace (*p); p++)
@@ -757,7 +762,7 @@ maybe_add_history (line)
int is_comment;
hist_last_line_added = 0;
- is_comment = (parser_state & PST_HEREDOC) ? 0 : shell_comment (line);
+ is_comment = shell_comment (line);
/* Don't use the value of history_control to affect the second
and subsequent lines of a multi-line command (old code did
@@ -874,7 +879,7 @@ bash_add_history (line)
add_it = 1;
if (command_oriented_history && current_command_line_count > 1)
{
- is_comment = (parser_state & PST_HEREDOC) ? 0 : shell_comment (line);
+ is_comment = shell_comment (line);
/* The second and subsequent lines of a here document have the trailing
newline preserved. We don't want to add extra newlines here, but we
@@ -887,7 +892,7 @@ bash_add_history (line)
(current_command_line_count > 2)
don't add a newline here. This will also take care of the literal_history
case if the other conditions are met. */
- if ((parser_state & PST_HEREDOC) && current_command_line_count > 2 && line[strlen (line) - 1] == '\n')
+ if ((parser_state & PST_HEREDOC) && here_doc_first_line == 0 && line[strlen (line) - 1] == '\n')
chars_to_add = "";
else if (current_command_line_count == current_command_line_comment+1)
chars_to_add = "\n";
diff --git a/bashjmp.h b/bashjmp.h
index 8ed1ac47..1a4721bc 100644
--- a/bashjmp.h
+++ b/bashjmp.h
@@ -1,6 +1,6 @@
/* bashjmp.h -- wrapper for setjmp.h with necessary bash definitions. */
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -42,5 +42,6 @@ extern int no_longjmp_on_fatal_error;
#define EXITPROG 3 /* Unconditionally exit the program now. */
#define ERREXIT 4 /* Exit due to error condition */
#define SIGEXIT 5 /* Exit due to fatal terminating signal */
+#define EXITBLTIN 6 /* Exit due to the exit builtin. */
#endif /* _BASHJMP_H_ */
diff --git a/bashline.c b/bashline.c
index c69c0c5e..c85b05b6 100644
--- a/bashline.c
+++ b/bashline.c
@@ -1,6 +1,6 @@
/* bashline.c -- Bash's interface to the readline library. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -56,6 +56,7 @@
#include "shmbutil.h"
#include "trap.h"
#include "flags.h"
+#include "timer.h"
#if defined (HAVE_MBSTR_H) && defined (HAVE_MBSCHR)
# include <mbstr.h> /* mbschr */
@@ -141,6 +142,8 @@ static int bash_kill_shellword PARAMS((int, int));
static int bash_backward_kill_shellword PARAMS((int, int));
static int bash_transpose_shellwords PARAMS((int, int));
+static int bash_spell_correct_shellword PARAMS((int, int));
+
/* Helper functions for Readline. */
static char *restore_tilde PARAMS((char *, char *));
static char *maybe_restore_tilde PARAMS((char *, char *));
@@ -189,6 +192,8 @@ static int return_zero PARAMS((const char *));
static char *bash_dequote_filename PARAMS((char *, int));
static char *quote_word_break_chars PARAMS((char *));
+static int bash_check_expchar PARAMS((char *, int, int *, int *));
+static void set_filename_quote_chars PARAMS((int, int, int));
static void set_filename_bstab PARAMS((const char *));
static char *bash_quote_filename PARAMS((char *, int, char *));
@@ -225,6 +230,7 @@ static char **prog_complete_matches;
extern int no_symbolic_links;
extern STRING_INT_ALIST word_token_alist[];
+extern sh_timer *read_timeout;
/* SPECIFIC_COMPLETION_FUNCTIONS specifies that we have individual
completion functions which indicate what type of completion should be
@@ -370,7 +376,8 @@ enable_hostname_completion (on_or_off)
int on_or_off;
{
int old_value;
- char *at, *nv, *nval;
+ char *nv, *nval;
+ const char *at;
old_value = perform_hostname_completion;
@@ -430,7 +437,7 @@ enable_hostname_completion (on_or_off)
strcpy (nval + 1, rl_completer_word_break_characters);
}
- free (rl_completer_word_break_characters);
+ free ((void *)rl_completer_word_break_characters);
rl_completer_word_break_characters = nval;
}
@@ -468,6 +475,9 @@ initialize_readline ()
rl_add_defun ("shell-backward-kill-word", bash_backward_kill_shellword, -1);
rl_add_defun ("shell-transpose-words", bash_transpose_shellwords, -1);
+ rl_add_defun ("spell-correct-word", bash_spell_correct_shellword, -1);
+ rl_bind_key_if_unbound_in_map ('s', bash_spell_correct_shellword, emacs_ctlx_keymap);
+
#ifdef ALIAS
rl_add_defun ("alias-expand-line", alias_expand_line, -1);
# ifdef BANG_HISTORY
@@ -480,6 +490,9 @@ initialize_readline ()
rl_add_defun ("display-shell-version", display_shell_version, -1);
rl_add_defun ("edit-and-execute-command", emacs_edit_and_execute_command, -1);
+#if defined (VI_MODE)
+ rl_add_defun ("vi-edit-and-execute-command", vi_edit_and_execute_command, -1);
+#endif
#if defined (BRACE_COMPLETION)
rl_add_defun ("complete-into-braces", bash_brace_completion, -1);
@@ -666,6 +679,8 @@ bashline_reset ()
rl_attempted_completion_function = attempt_shell_completion;
rl_completion_entry_function = NULL;
rl_ignore_some_completions_function = filename_completion_ignore;
+
+ complete_fullquote = 1;
rl_filename_quote_characters = default_filename_quote_characters;
set_filename_bstab (rl_filename_quote_characters);
@@ -1028,6 +1043,8 @@ posix_edit_macros (count, key)
char alias_name[3], *alias_value, *macro;
c = rl_read_key ();
+ if (c <= 0)
+ return 0;
alias_name[0] = '_';
alias_name[1] = c;
alias_name[2] = '\0';
@@ -1320,6 +1337,55 @@ bash_transpose_shellwords (count, key)
return 0;
}
+/* Directory name spelling correction on the current word (not shellword).
+ COUNT > 1 is not exactly correct yet. */
+static int
+bash_spell_correct_shellword (count, key)
+ int count, key;
+{
+ int opoint, wbeg, wend;
+ char *text, *newdir;
+
+ opoint = rl_point;
+ while (count)
+ {
+ bash_backward_shellword (1, key);
+ wbeg = rl_point;
+ bash_forward_shellword (1, key);
+ wend = rl_point;
+
+ if (wbeg > wend)
+ break;
+
+ text = rl_copy_text (wbeg, wend);
+
+ newdir = dirspell (text);
+ if (newdir)
+ {
+ rl_begin_undo_group ();
+ rl_delete_text (wbeg, wend);
+ rl_point = wbeg;
+ if (*newdir)
+ rl_insert_text (newdir);
+ rl_mark = wbeg;
+ rl_end_undo_group ();
+ }
+
+ free (text);
+ free (newdir);
+
+ if (rl_point >= rl_end)
+ break;
+
+ count--;
+
+ if (count)
+ bash_forward_shellword (1, key); /* XXX */
+ }
+
+ return 0;
+}
+
/* **************************************************************** */
/* */
/* How To Do Shell Completion */
@@ -1516,6 +1582,7 @@ attempt_shell_completion (text, start, end)
matches = (char **)NULL;
rl_ignore_some_completions_function = filename_completion_ignore;
+ complete_fullquote = 1; /* full filename quoting by default */
rl_filename_quote_characters = default_filename_quote_characters;
set_filename_bstab (rl_filename_quote_characters);
set_directory_hook ();
@@ -1560,7 +1627,7 @@ attempt_shell_completion (text, start, end)
in_command_position++;
if (check_redir (ti) == 1)
- in_command_position = 0;
+ in_command_position = -1; /* sentinel that we're not the first word on the line */
}
else
{
@@ -1569,7 +1636,7 @@ attempt_shell_completion (text, start, end)
assignments. */
}
- if (in_command_position && invalid_completion (text, ti))
+ if (in_command_position > 0 && invalid_completion (text, ti))
{
rl_attempted_completion_over = 1;
return ((char **)NULL);
@@ -1577,9 +1644,9 @@ attempt_shell_completion (text, start, end)
/* Check that we haven't incorrectly flagged a closed command substitution
as indicating we're in a command position. */
- if (in_command_position && ti >= 0 && rl_line_buffer[ti] == '`' &&
+ if (in_command_position > 0 && ti >= 0 && rl_line_buffer[ti] == '`' &&
*text != '`' && unclosed_pair (rl_line_buffer, end, "`") == 0)
- in_command_position = 0;
+ in_command_position = -1; /* not following a command separator */
/* Special handling for command substitution. If *TEXT is a backquote,
it can be the start or end of an old-style command substitution, or
@@ -1587,8 +1654,8 @@ attempt_shell_completion (text, start, end)
succeed. Don't bother if readline found a single quote and we are
completing on the substring. */
if (*text == '`' && rl_completion_quote_character != '\'' &&
- (in_command_position || (unclosed_pair (rl_line_buffer, start, "`") &&
- unclosed_pair (rl_line_buffer, end, "`"))))
+ (in_command_position > 0 || (unclosed_pair (rl_line_buffer, start, "`") &&
+ unclosed_pair (rl_line_buffer, end, "`"))))
matches = rl_completion_matches (text, command_subst_completion_function);
#if defined (PROGRAMMABLE_COMPLETION)
@@ -1596,7 +1663,7 @@ attempt_shell_completion (text, start, end)
have_progcomps = prog_completion_enabled && (progcomp_size () > 0);
iw_compspec = progcomp_search (INITIALWORD);
if (matches == 0 &&
- (in_command_position == 0 || text[0] == '\0' || (in_command_position && iw_compspec)) &&
+ (in_command_position == 0 || text[0] == '\0' || (in_command_position > 0 && iw_compspec)) &&
current_prompt_string == ps1_prompt)
{
int s, e, s1, e1, os, foundcs;
@@ -1718,7 +1785,7 @@ attempt_shell_completion (text, start, end)
if (matches == 0)
{
dflags = 0;
- if (in_command_position)
+ if (in_command_position > 0)
dflags |= DEFCOMP_CMDPOS;
matches = bash_default_completion (text, start, end, qc, dflags);
}
@@ -1872,10 +1939,17 @@ executable_completion (filename, searching_path)
const char *filename;
int searching_path;
{
- char *f;
+ char *f, c;
int r;
+ /* This gets an unquoted filename, so we need to quote special characters
+ in the filename before the completion hook gets it. */
+#if 0
f = savestring (filename);
+#else
+ c = 0;
+ f = bash_quote_filename ((char *)filename, SINGLE_MATCH, &c);
+#endif
bash_directory_completion_hook (&f);
r = searching_path ? executable_file (f) : executable_or_directory (f);
@@ -1927,6 +2001,8 @@ command_word_completion_function (hint_text, state)
temp = rl_variable_value ("completion-ignore-case");
igncase = RL_BOOLEAN_VARIABLE_VALUE (temp);
+ old_glob_ignore_case = glob_ignore_case;
+
if (glob_matches)
{
free (glob_matches);
@@ -2112,6 +2188,8 @@ globword:
{
if (state == 0)
{
+ rl_filename_completion_desired = 1;
+
glob_ignore_case = igncase;
glob_matches = shell_glob_filename (hint, 0);
glob_ignore_case = old_glob_ignore_case;
@@ -2232,10 +2310,16 @@ globword:
if (absolute_program (hint))
{
+#if 0
if (igncase == 0)
match = strncmp (val, hint, hint_len) == 0;
else
match = strncasecmp (val, hint, hint_len) == 0;
+#else
+ /* Why duplicate the comparison rl_filename_completion_function
+ already performs? */
+ match = 1;
+#endif
/* If we performed tilde expansion, restore the original
filename. */
@@ -2760,7 +2844,7 @@ static int
history_and_alias_expand_line (count, ignore)
int count, ignore;
{
- char *new_line;
+ char *new_line, *t;
new_line = 0;
#if defined (BANG_HISTORY)
@@ -2798,7 +2882,7 @@ static int
shell_expand_line (count, ignore)
int count, ignore;
{
- char *new_line;
+ char *new_line, *t;
WORD_LIST *expanded_string;
WORD_DESC *w;
@@ -2807,6 +2891,10 @@ shell_expand_line (count, ignore)
new_line = history_expand_line_internal (rl_line_buffer);
#endif
+ t = expand_string_dollar_quote (new_line ? new_line : rl_line_buffer, 0);
+ FREE (new_line);
+ new_line = t;
+
#if defined (ALIAS)
if (new_line)
{
@@ -3191,6 +3279,8 @@ bash_directory_expansion (dirname)
free (d);
*dirname = nd;
}
+ else
+ free (d);
}
/* If necessary, rewrite directory entry */
@@ -3372,38 +3462,7 @@ bash_directory_completion_hook (dirname)
return_value = should_expand_dirname = nextch = closer = 0;
local_dirname = *dirname;
- if (t = mbschr (local_dirname, '$'))
- {
- should_expand_dirname = '$';
- nextch = t[1];
- /* Deliberately does not handle the deprecated $[...] arithmetic
- expansion syntax */
- if (nextch == '(')
- closer = ')';
- else if (nextch == '{')
- closer = '}';
- else
- nextch = 0;
-
- if (closer)
- {
- int p;
- char delims[2];
-
- delims[0] = closer; delims[1] = 0;
- p = skip_to_delim (t, 1, delims, SD_NOJMP|SD_COMPLETE);
- if (t[p] != closer)
- should_expand_dirname = 0;
- }
- }
- else if (local_dirname[0] == '~')
- should_expand_dirname = '~';
- else
- {
- t = mbschr (local_dirname, '`');
- if (t && unclosed_pair (local_dirname, strlen (local_dirname), "`") == 0)
- should_expand_dirname = '`';
- }
+ should_expand_dirname = bash_check_expchar (local_dirname, 1, &nextch, &closer);
if (should_expand_dirname && directory_exists (local_dirname, 1))
should_expand_dirname = 0;
@@ -3422,24 +3481,8 @@ bash_directory_completion_hook (dirname)
free (new_dirname);
dispose_words (wl);
local_dirname = *dirname;
- /* XXX - change rl_filename_quote_characters here based on
- should_expand_dirname/nextch/closer. This is the only place
- custom_filename_quote_characters is modified. */
- if (rl_filename_quote_characters && *rl_filename_quote_characters)
- {
- int i, j, c;
- i = strlen (default_filename_quote_characters);
- custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1);
- for (i = j = 0; c = default_filename_quote_characters[i]; i++)
- {
- if (c == should_expand_dirname || c == nextch || c == closer)
- continue;
- custom_filename_quote_characters[j++] = c;
- }
- custom_filename_quote_characters[j] = '\0';
- rl_filename_quote_characters = custom_filename_quote_characters;
- set_filename_bstab (rl_filename_quote_characters);
- }
+
+ set_filename_quote_chars (should_expand_dirname, nextch, closer);
}
else
{
@@ -3494,7 +3537,16 @@ bash_directory_completion_hook (dirname)
subsequent directory checks don't fail. */
if (temp2 == 0 && dircomplete_spelling && dircomplete_expand)
{
+ size_t l1, l2;
+
temp2 = dirspell (temp1);
+ l2 = STRLEN (temp2);
+ /* Don't take matches if they are shorter than the original path */
+ if (temp2 && l2 < strlen (temp1) && STREQN (temp1, temp2, l2))
+ {
+ free (temp2);
+ temp2 = 0;
+ }
if (temp2)
{
free (temp1);
@@ -3729,7 +3781,7 @@ bash_complete_filename_internal (what_to_do)
rl_completion_func_t *orig_attempt_func;
rl_icppfunc_t *orig_dir_func;
rl_compignore_func_t *orig_ignore_func;
- /*const*/ char *orig_rl_completer_word_break_characters;
+ const char *orig_rl_completer_word_break_characters;
int r;
orig_func = rl_completion_entry_function;
@@ -4099,6 +4151,95 @@ quote_word_break_chars (text)
return ret;
}
+/* Return a character in DIRNAME that will cause shell expansion to be
+ performed. If NEXTP is non-null, *NEXTP gets the expansion character that
+ follows RET (e.g., '{' or `(' for `$'). If CLOSERP is non-null, *CLOSERP
+ gets the character that should close <RET><NEXTP>. If NEED_CLOSER is non-
+ zero, any expansion pair that isn't closed causes this function to
+ return 0, which indicates that we didn't find an expansion character. It's
+ used in case DIRNAME is going to be expanded. If DIRNAME is just going to
+ be quoted, NEED_CLOSER will be 0. */
+static int
+bash_check_expchar (dirname, need_closer, nextp, closerp)
+ char *dirname;
+ int need_closer;
+ int *nextp, *closerp;
+{
+ char *t;
+ int ret, n, c;
+
+ ret = n = c = 0;
+ if (t = mbschr (dirname, '$'))
+ {
+ ret = '$';
+ n = t[1];
+ /* Deliberately does not handle the deprecated $[...] arithmetic
+ expansion syntax */
+ if (n == '(')
+ c = ')';
+ else if (n == '{')
+ c = '}';
+ else
+ n = 0;
+
+ if (c && need_closer) /* XXX */
+ {
+ int p;
+ char delims[2];
+
+ delims[0] = c; delims[1] = 0;
+ p = skip_to_delim (t, 1, delims, SD_NOJMP|SD_COMPLETE);
+ if (t[p] != c)
+ ret = 0;
+ }
+ }
+ else if (dirname[0] == '~')
+ ret = '~';
+ else
+ {
+ t = mbschr (dirname, '`');
+ if (t)
+ {
+ if (need_closer == 0)
+ ret = '`';
+ else if (unclosed_pair (dirname, strlen (dirname), "`") == 0)
+ ret = '`';
+ }
+ }
+
+ if (nextp)
+ *nextp = n;
+ if (closerp)
+ *closerp = c;
+
+ return ret;
+}
+
+/* Make sure EXPCHAR and, if non-zero, NEXTCH and CLOSER are not in the set
+ of characters to be backslash-escaped. This is the only place
+ custom_filename_quote_characters is modified. */
+static void
+set_filename_quote_chars (expchar, nextch, closer)
+ int expchar, nextch, closer;
+{
+ int i, j, c;
+
+ if (rl_filename_quote_characters && *rl_filename_quote_characters)
+ {
+ i = strlen (default_filename_quote_characters);
+ custom_filename_quote_characters = xrealloc (custom_filename_quote_characters, i+1);
+ for (i = j = 0; c = default_filename_quote_characters[i]; i++)
+ {
+ if (c == expchar || c == nextch || c == closer)
+ continue;
+ custom_filename_quote_characters[j++] = c;
+ }
+ custom_filename_quote_characters[j] = '\0';
+ rl_filename_quote_characters = custom_filename_quote_characters;
+ set_filename_bstab (rl_filename_quote_characters);
+ }
+}
+
/* Use characters in STRING to populate the table of characters that should
be backslash-quoted. The table will be used for sh_backslash_quote from
this file. */
@@ -4127,6 +4268,7 @@ bash_quote_filename (s, rtype, qcp)
{
char *rtext, *mtext, *ret;
int rlen, cs;
+ int expchar, nextch, closer;
rtext = (char *)NULL;
@@ -4144,7 +4286,18 @@ bash_quote_filename (s, rtype, qcp)
the word being completed contains newlines, since those are not
quoted correctly using backslashes (a backslash-newline pair is
special to the shell parser). */
- if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && mbschr (s, '\n'))
+ expchar = nextch = closer = 0;
+ if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && dircomplete_expand == 0 &&
+ (expchar = bash_check_expchar (s, 0, &nextch, &closer)) &&
+ file_exists (s) == 0)
+ {
+ /* Usually this will have been set by bash_directory_completion_hook,
+ but there are cases where it will not be. */
+ if (rl_filename_quote_characters != custom_filename_quote_characters)
+ set_filename_quote_chars (expchar, nextch, closer);
+ complete_fullquote = 0;
+ }
+ else if (*qcp == '\0' && cs == COMPLETE_BSQUOTE && mbschr (s, '\n'))
cs = COMPLETE_SQUOTE;
else if (*qcp == '"')
cs = COMPLETE_DQUOTE;
@@ -4187,7 +4340,8 @@ bash_quote_filename (s, rtype, qcp)
/* We may need to quote additional characters: those that readline treats
as word breaks that are not quoted by backslash_quote. */
- if (rtext && cs == COMPLETE_BSQUOTE)
+ /* XXX - test complete_fullquote here? */
+ if (rtext && cs == COMPLETE_BSQUOTE && rl_completer_word_break_characters)
{
mtext = quote_word_break_chars (rtext);
free (rtext);
@@ -4294,12 +4448,28 @@ bash_execute_unix_command (count, key)
SHELL_VAR *v;
char ibuf[INT_STRLEN_BOUND(int) + 1];
Keymap cmd_xmap;
+ const char *kseq;
+ size_t kslen;
+
+ kseq = rl_executing_keyseq;
+ kslen = rl_key_sequence_length;
+
+ /* If we have a numeric argument, chop it off the front of the key sequence */
+ if (count > 1 || rl_explicit_arg)
+ {
+ i = rl_trim_arg_from_keyseq (rl_executing_keyseq, rl_key_sequence_length, rl_get_keymap ());
+ if (i > 0)
+ {
+ kseq = rl_executing_keyseq + i;
+ kslen = rl_key_sequence_length - i;
+ }
+ }
/* First, we need to find the right command to execute. This is tricky,
because we might have already indirected into another keymap, so we
have to walk cmd_xmap using the entire key sequence. */
cmd_xmap = get_cmd_xmap_from_keymap (rl_get_keymap ());
- cmd = (char *)rl_function_of_keyseq_len (rl_executing_keyseq, rl_key_sequence_length, cmd_xmap, &type);
+ cmd = (char *)rl_function_of_keyseq_len (kseq, kslen, cmd_xmap, &type);
if (type == ISKMAP && (type = ((Keymap) cmd)[ANYOTHERKEY].type) == ISMACR)
cmd = (char*)((Keymap) cmd)[ANYOTHERKEY].function;
@@ -4336,6 +4506,14 @@ bash_execute_unix_command (count, key)
v = bind_int_variable ("READLINE_MARK", value, 0);
if (v)
VSETATTR (v, att_exported);
+
+ if (count > 1 || rl_explicit_arg)
+ {
+ value = inttostr (count, ibuf, sizeof (ibuf));
+ v = bind_int_variable ("READLINE_ARGUMENT", value, 0);
+ if (v)
+ VSETATTR (v, att_exported);
+ }
array_needs_making = 1;
save_parser_state (&ps);
@@ -4358,6 +4536,7 @@ bash_execute_unix_command (count, key)
check_unbind_variable ("READLINE_LINE");
check_unbind_variable ("READLINE_POINT");
check_unbind_variable ("READLINE_MARK");
+ check_unbind_variable ("READLINE_ARGUMENT");
array_needs_making = 1;
/* and restore the readline buffer and display after command execution. */
@@ -4625,21 +4804,29 @@ bash_event_hook ()
sig = terminating_signal;
else if (interrupt_state)
sig = SIGINT;
- else if (sigalrm_seen)
+ else if (read_timeout && read_timeout->alrmflag)
sig = SIGALRM;
+ else if (RL_ISSTATE (RL_STATE_TIMEOUT)) /* just in case */
+ {
+ sig = SIGALRM;
+ if (read_timeout)
+ read_timeout->alrmflag = 1;
+ }
else
sig = first_pending_trap ();
/* If we're going to longjmp to top_level, make sure we clean up readline.
check_signals will call QUIT, which will eventually longjmp to top_level,
- calling run_interrupt_trap along the way. The check for sigalrm_seen is
- to clean up the read builtin's state. */
- if (terminating_signal || interrupt_state || sigalrm_seen)
+ calling run_interrupt_trap along the way. The check against read_timeout
+ is so we can clean up the read builtin's state. */
+ if (terminating_signal || interrupt_state || (read_timeout && read_timeout->alrmflag))
rl_cleanup_after_signal ();
bashline_reset_event_hook ();
+ RL_UNSETSTATE (RL_STATE_TIMEOUT); /* XXX */
+
/* posix mode SIGINT during read -e. We only get here if SIGINT is trapped. */
- if (posixly_correct && this_shell_builtin == read_builtin && sig == 2)
+ if (posixly_correct && this_shell_builtin == read_builtin && sig == SIGINT)
{
last_command_exit_value = 128|SIGINT;
throw_to_top_level ();
diff --git a/bashline.h b/bashline.h
index 48c9fecf..d40228e2 100644
--- a/bashline.h
+++ b/bashline.h
@@ -53,7 +53,7 @@ extern int unbind_unix_command PARAMS((char *));
extern char **bash_default_completion PARAMS((const char *, int, int, int, int));
-void set_directory_hook PARAMS((void));
+extern void set_directory_hook PARAMS((void));
/* Used by programmable completion code. */
extern char *command_word_completion_function PARAMS((const char *, int));
diff --git a/builtins.h b/builtins.h
index dac95fdb..01565935 100644
--- a/builtins.h
+++ b/builtins.h
@@ -1,6 +1,6 @@
/* builtins.h -- What a builtin looks like, and where to find them. */
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -45,6 +45,7 @@
#define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */
#define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */
#define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */
+#define ARRAYREF_BUILTIN 0x80 /* This builtin takes array references as arguments */
#define BASE_INDENT 4
diff --git a/builtins/Makefile.in b/builtins/Makefile.in
index b349e93c..642878c6 100644
--- a/builtins/Makefile.in
+++ b/builtins/Makefile.in
@@ -1,6 +1,6 @@
# This Makefile for building libbuiltins.a is in -*- text -*- for Emacs.
#
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2022 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -59,6 +59,7 @@ LIBBUILD = ${BUILD_DIR}/lib
PROFILE_FLAGS = @PROFILE_FLAGS@
CFLAGS = @CFLAGS@
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ @CROSS_COMPILE@
+STYLE_CFLAGS = @STYLE_CFLAGS@
CPPFLAGS = @CPPFLAGS@
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG}
@@ -92,7 +93,7 @@ HELPFILES_TARGET = @HELPFILES_TARGET@
INCLUDES = -I. -I.. @RL_INCLUDE@ -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib -I$(srcdir) ${INTL_INC}
BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \
- ${INCLUDES} $(LOCAL_CFLAGS)
+ ${INCLUDES} $(STYLE_CFLAGS) $(LOCAL_CFLAGS)
CCFLAGS = ${ADDON_CFLAGS} $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS)
@@ -182,28 +183,30 @@ gen-helpfiles.o: gen-helpfiles.c
$(CC_FOR_BUILD) -c $(CCFLAGS_FOR_BUILD) $<
gen-helpfiles: tmpbuiltins.o gen-helpfiles.o
- $(CC_FOR_BUILD) ${CCFLAGS_FOR_BUILD} $(LDFLAGS_FOR_BUILD) -o $@ gen-helpfiles.o tmpbuiltins.o $(LIBS_FOR_BUILD)
+ $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ gen-helpfiles.o tmpbuiltins.o $(LIBS_FOR_BUILD)
builtext.h builtins.c: $(MKBUILTINS) $(DEFSRC)
- @-if test -f builtins.c; then mv -f builtins.c old-builtins.c; fi
- @-if test -f builtext.h; then mv -f builtext.h old-builtext.h; fi
- ./$(MKBUILTINS) -externfile builtext.h -structfile builtins.c \
- -noproduction $(DIRECTDEFINE) $(HELPDIRDEFINE) $(HELPSTRINGS) $(DEFSRC)
- @-if cmp -s old-builtext.h builtext.h 2>/dev/null; then \
- mv old-builtext.h builtext.h; \
- else \
- $(RM) old-builtext.h; \
- fi
- @-if cmp -s old-builtins.c builtins.c 2>/dev/null; then \
- mv old-builtins.c builtins.c; \
- else \
- $(RM) old-builtins.c; \
- fi
+ @RECPID=$$$$ ; \
+ NEW_BUILTEXT=builtext-$$RECPID.h NEW_BUILTINS=builtins-$$RECPID.c ; \
+ ./$(MKBUILTINS) -externfile $$NEW_BUILTEXT \
+ -includefile builtext.h \
+ -structfile $$NEW_BUILTINS \
+ -noproduction $(DIRECTDEFINE) $(HELPDIRDEFINE) $(HELPSTRINGS) $(DEFSRC) ; \
+ if cmp -s $$NEW_BUILTEXT builtext.h 2>/dev/null; then \
+ $(RM) $$NEW_BUILTEXT; \
+ else \
+ mv $$NEW_BUILTEXT builtext.h; \
+ fi ; \
+ if cmp -s $$NEW_BUILTINS builtins.c 2>/dev/null; then \
+ $(RM) $$NEW_BUILTINS ; \
+ else \
+ mv $$NEW_BUILTINS builtins.c; \
+ fi
helpdoc: gen-helpfiles
./gen-helpfiles ${HELPDIRDEFINE}
-install-help:
+install-help: $(HELPFILES_TARGET)
@-if test -n "${HELPDIR}" && test -d helpfiles ; then \
test -d $(DESTDIR)${HELPDIR} || ${SHELL} ${MKDIRS} $(DESTDIR)$(HELPDIR) ;\
( for f in helpfiles/*; do \
@@ -707,3 +710,14 @@ suspend.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
type.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
ulimit.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
umask.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
+
+cd.o: $(topdir)/config-top.h
+command.o: $(topdir)/config-top.h
+common.o: $(topdir)/config-top.h
+declare.o: $(topdir)/config-top.h
+break.o: $(topdir)/config-top.h
+echo.o: $(topdir)/config-top.h
+evalstring.o: $(topdir)/config-top.h
+exit.o: $(topdir)/config-top.h
+kill.o: $(topdir)/config-top.h
+shopt.o: $(topdir)/config-top.h
diff --git a/builtins/bashgetopt.c b/builtins/bashgetopt.c
index 405ced43..d40ffa23 100644
--- a/builtins/bashgetopt.c
+++ b/builtins/bashgetopt.c
@@ -1,6 +1,6 @@
/* bashgetopt.c -- `getopt' for use by the builtins. */
-/* Copyright (C) 1992-2002 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -39,6 +39,7 @@
static int sp;
char *list_optarg;
+int list_optflags;
int list_optopt;
int list_opttype;
@@ -62,6 +63,7 @@ char *opts;
if (list == 0) {
list_optarg = (char *)NULL;
+ list_optflags = 0;
loptend = (WORD_LIST *)NULL; /* No non-option arguments */
return -1;
}
@@ -102,6 +104,7 @@ char *opts;
sp = 1;
}
list_optarg = NULL;
+ list_optflags = 0;
if (lcurrent)
loptend = lcurrent->next;
return('?');
@@ -113,6 +116,7 @@ char *opts;
/* We allow -l2 as equivalent to -l 2 */
if (lcurrent->word->word[sp+1]) {
list_optarg = lcurrent->word->word + sp + 1;
+ list_optflags = 0;
lcurrent = lcurrent->next;
/* If the specifier is `;', don't set optarg if the next
argument looks like another option. */
@@ -123,15 +127,18 @@ char *opts;
#endif
lcurrent = lcurrent->next;
list_optarg = lcurrent->word->word;
+ list_optflags = lcurrent->word->flags;
lcurrent = lcurrent->next;
} else if (*cp == ';') {
list_optarg = (char *)NULL;
+ list_optflags = 0;
lcurrent = lcurrent->next;
} else { /* lcurrent->next == NULL */
errstr[1] = c;
sh_needarg (errstr);
sp = 1;
list_optarg = (char *)NULL;
+ list_optflags = 0;
return('?');
}
sp = 1;
@@ -140,19 +147,24 @@ char *opts;
if (lcurrent->word->word[sp+1]) {
if (DIGIT(lcurrent->word->word[sp+1])) {
list_optarg = lcurrent->word->word + sp + 1;
+ list_optflags = 0;
lcurrent = lcurrent->next;
- } else
+ } else {
list_optarg = (char *)NULL;
+ list_optflags = 0;
+ }
} else {
if (lcurrent->next && legal_number(lcurrent->next->word->word, (intmax_t *)0)) {
lcurrent = lcurrent->next;
list_optarg = lcurrent->word->word;
+ list_optflags = lcurrent->word->flags;
lcurrent = lcurrent->next;
} else {
errstr[1] = c;
sh_neednumarg (errstr);
sp = 1;
list_optarg = (char *)NULL;
+ list_optflags = 0;
return ('?');
}
}
@@ -164,6 +176,7 @@ char *opts;
lcurrent = lcurrent->next;
}
list_optarg = (char *)NULL;
+ list_optflags = 0;
}
return(c);
diff --git a/builtins/bashgetopt.h b/builtins/bashgetopt.h
index dcdaa48a..79be3431 100644
--- a/builtins/bashgetopt.h
+++ b/builtins/bashgetopt.h
@@ -1,6 +1,6 @@
/* bashgetopt.h -- extern declarations for stuff defined in bashgetopt.c. */
-/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -29,6 +29,7 @@
#define GETOPT_HELP -99
extern char *list_optarg;
+extern int list_optflags;
extern int list_optopt;
extern int list_opttype;
diff --git a/builtins/bind.def b/builtins/bind.def
index ccfc08dc..53a65ac7 100644
--- a/builtins/bind.def
+++ b/builtins/bind.def
@@ -1,7 +1,7 @@
This file is bind.def, from which is created bind.c.
It implements the builtin "bind" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -290,7 +290,7 @@ bind_builtin (list)
if (nlen < olen) /* fewer bind -x bindings */
for (d = olen - nlen, i = 0; i < olen && d > 0; i++)
- if (nlen == 0 || strvec_search (nbindings, obindings[i]) >= 0)
+ if (nlen == 0 || strvec_search (nbindings, obindings[i]) < 0)
{
unbind_unix_command (obindings[i]);
d--;
diff --git a/builtins/cd.def b/builtins/cd.def
index 7205608c..b87c5d9d 100644
--- a/builtins/cd.def
+++ b/builtins/cd.def
@@ -1,7 +1,7 @@
This file is cd.def, from which is created cd.c. It implements the
builtins "cd" and "pwd" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -79,7 +79,7 @@ $SHORT_DOC cd [-L|[-P [-e]] [-@]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
-HOME shell variable.
+HOME shell variable. If DIR is "-", it is converted to $OLDPWD.
The variable CDPATH defines the search path for the directory containing
DIR. Alternative directory names in CDPATH are separated by a colon (:).
diff --git a/builtins/command.def b/builtins/command.def
index acd46cc1..3efdbe6b 100644
--- a/builtins/command.def
+++ b/builtins/command.def
@@ -124,9 +124,7 @@ command_builtin (list)
#define COMMAND_BUILTIN_FLAGS (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION | CMD_COMMAND_BUILTIN | (use_standard_path ? CMD_STDPATH : 0))
-#ifdef DEBUG
- itrace("command_builtin: running execute_command for `%s'", list->word->word);
-#endif
+ INTERNAL_DEBUG (("command_builtin: running execute_command for `%s'", list->word->word));
/* We don't want this to be reparsed (consider command echo 'foo &'), so
just make a simple_command structure and call execute_command with it. */
diff --git a/builtins/common.c b/builtins/common.c
index 3c9ac49d..19b00c4d 100644
--- a/builtins/common.c
+++ b/builtins/common.c
@@ -1,6 +1,6 @@
/* common.c - utility functions for all builtins */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -267,6 +267,13 @@ sh_readonly (s)
}
void
+sh_noassign (s)
+ const char *s;
+{
+ internal_error (_("%s: cannot assign"), s); /* XXX */
+}
+
+void
sh_erange (s, desc)
char *s, *desc;
{
@@ -451,7 +458,7 @@ shift_args (times)
int
number_of_args ()
{
-#ifdef DEBUG
+#if 0
register WORD_LIST *list;
int n;
@@ -462,9 +469,9 @@ number_of_args ()
if (n != posparam_count)
itrace("number_of_args: n (%d) != posparam_count (%d)", n, posparam_count);
-#endif
-
+#else
return posparam_count;
+#endif
}
static int changed_dollar_vars;
@@ -935,7 +942,7 @@ find_special_builtin (name)
current_builtin->function :
(sh_builtin_func_t *)NULL);
}
-
+
static int
shell_builtin_compare (sbp1, sbp2)
struct builtin *sbp1, *sbp2;
@@ -971,6 +978,7 @@ builtin_help ()
/* */
/* **************************************************************** */
+/* Assign NAME=VALUE, passing FLAGS to the assignment functions. */
SHELL_VAR *
builtin_bind_variable (name, value, flags)
char *name;
@@ -978,12 +986,22 @@ builtin_bind_variable (name, value, flags)
int flags;
{
SHELL_VAR *v;
+ int vflags, bindflags;
#if defined (ARRAY_VARS)
- if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0)
+ /* Callers are responsible for calling this with array references that have
+ already undergone valid_array_reference checks (read, printf). */
+ vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
+ bindflags = flags | (assoc_expand_once ? ASS_NOEXPAND : 0) | ASS_ALLOWALLSUB;
+ if (flags & ASS_NOEXPAND)
+ vflags |= VA_NOEXPAND;
+ if (flags & ASS_ONEWORD)
+ vflags |= VA_ONEWORD;
+
+ if (valid_array_reference (name, vflags) == 0)
v = bind_variable (name, value, flags);
else
- v = assign_array_element (name, value, flags | (assoc_expand_once ? ASS_NOEXPAND : 0));
+ v = assign_array_element (name, value, bindflags, (array_eltstate_t *)0);
#else /* !ARRAY_VARS */
v = bind_variable (name, value, flags);
#endif /* !ARRAY_VARS */
@@ -994,6 +1012,52 @@ builtin_bind_variable (name, value, flags)
return v;
}
+SHELL_VAR *
+builtin_bind_var_to_int (name, val, flags)
+ char *name;
+ intmax_t val;
+ int flags;
+{
+ SHELL_VAR *v;
+
+ v = bind_var_to_int (name, val, flags|ASS_ALLOWALLSUB);
+ return v;
+}
+
+#if defined (ARRAY_VARS)
+SHELL_VAR *
+builtin_find_indexed_array (array_name, flags)
+ char *array_name;
+ int flags;
+{
+ SHELL_VAR *entry;
+
+ if ((flags & 2) && legal_identifier (array_name) == 0)
+ {
+ sh_invalidid (array_name);
+ return (SHELL_VAR *)NULL;
+ }
+
+ entry = find_or_make_array_variable (array_name, 1);
+ /* With flags argument & 1, find_or_make_array_variable checks for readonly
+ and noassign variables and prints error messages. */
+ if (entry == 0)
+ return entry;
+ else if (array_p (entry) == 0)
+ {
+ builtin_error (_("%s: not an indexed array"), array_name);
+ return (SHELL_VAR *)NULL;
+ }
+ else if (invisible_p (entry))
+ VUNSETATTR (entry, att_invisible); /* no longer invisible */
+
+ if (flags & 1)
+ array_flush (array_cell (entry));
+
+ return entry;
+}
+#endif /* ARRAY_VARS */
+
/* Like check_unbind_variable, but for use by builtins (only matters for
error messages). */
int
@@ -1015,3 +1079,53 @@ builtin_unbind_variable (vname)
}
return (unbind_variable (vname));
}
+
+int
+builtin_arrayref_flags (w, baseflags)
+ WORD_DESC *w;
+ int baseflags;
+{
+ char *t;
+ int vflags;
+
+ vflags = baseflags;
+
+ /* Don't require assoc_expand_once if we have an argument that's already
+ passed through valid_array_reference and been expanded once. That
+ doesn't protect it from normal expansions like word splitting, so
+ proper quoting is still required. */
+ if (w->flags & W_ARRAYREF)
+ vflags |= VA_ONEWORD|VA_NOEXPAND;
+
+# if 0
+ /* This is a little sketchier but handles quoted arguments. */
+ if (assoc_expand_once && (t = strchr (w->word, '[')) && t[strlen(t) - 1] == ']')
+ vflags |= VA_ONEWORD|VA_NOEXPAND;
+# endif
+
+ return vflags;
+}
+
+/* **************************************************************** */
+/* */
+/* External interface to manipulate shell options */
+/* */
+/* **************************************************************** */
+
+#if defined (ARRAY_VARS)
+int
+set_expand_once (nval, uwp)
+ int nval, uwp;
+{
+ int oa;
+
+ oa = assoc_expand_once;
+ if (shell_compatibility_level > 51) /* XXX - internal */
+ {
+ if (uwp)
+ unwind_protect_int (assoc_expand_once);
+ assoc_expand_once = nval;
+ }
+ return oa;
+}
+#endif
diff --git a/builtins/common.h b/builtins/common.h
index a4f9275d..f5cd87f0 100644
--- a/builtins/common.h
+++ b/builtins/common.h
@@ -1,6 +1,6 @@
/* common.h -- extern declarations for functions defined in common.c. */
-/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -40,7 +40,7 @@ do { \
builtin_help (); \
return (EX_USAGE)
-/* Flag values for parse_and_execute () */
+/* Flag values for parse_and_execute () and parse_string () */
#define SEVAL_NONINT 0x001
#define SEVAL_INTERACT 0x002
#define SEVAL_NOHIST 0x004
@@ -95,10 +95,11 @@ extern void sh_invalidoptname PARAMS((char *));
extern void sh_invalidid PARAMS((char *));
extern void sh_invalidnum PARAMS((char *));
extern void sh_invalidsig PARAMS((char *));
+extern void sh_readonly PARAMS((const char *));
+extern void sh_noassign PARAMS((const char *));
extern void sh_erange PARAMS((char *, char *));
extern void sh_badpid PARAMS((char *));
extern void sh_badjob PARAMS((char *));
-extern void sh_readonly PARAMS((const char *));
extern void sh_nojobs PARAMS((char *));
extern void sh_restricted PARAMS((char *));
extern void sh_notbuiltin PARAMS((char *));
@@ -138,6 +139,10 @@ extern sh_builtin_func_t *builtin_address PARAMS((char *));
extern sh_builtin_func_t *find_special_builtin PARAMS((char *));
extern void initialize_shell_builtins PARAMS((void));
+#if defined (ARRAY_VARS)
+extern int set_expand_once PARAMS((int, int));
+#endif
+
/* Functions from exit.def */
extern void bash_logout PARAMS((void));
@@ -151,6 +156,9 @@ extern void builtin_help PARAMS((void));
extern void read_tty_cleanup PARAMS((void));
extern int read_tty_modified PARAMS((void));
+extern int read_builtin_timeout PARAMS((int));
+extern void check_read_timeout PARAMS((void));
+
/* Functions from set.def */
extern int minus_o_option_value PARAMS((char *));
extern void list_minus_o_opts PARAMS((int, int));
@@ -205,10 +213,11 @@ extern WORD_LIST *get_directory_stack PARAMS((int));
extern int parse_and_execute PARAMS((char *, const char *, int));
extern int evalstring PARAMS((char *, const char *, int));
extern void parse_and_execute_cleanup PARAMS((int));
-extern int parse_string PARAMS((char *, const char *, int, char **));
+extern int parse_string PARAMS((char *, const char *, int, COMMAND **, char **));
extern int should_suppress_fork PARAMS((COMMAND *));
extern int can_optimize_connection PARAMS((COMMAND *));
-extern void optimize_fork PARAMS((COMMAND *));
+extern int can_optimize_cat_file PARAMS((COMMAND *));
+extern void optimize_connection_fork PARAMS((COMMAND *));
extern void optimize_subshell_command PARAMS((COMMAND *));
extern void optimize_shell_function PARAMS((COMMAND *));
@@ -223,8 +232,12 @@ extern sh_builtin_func_t *this_shell_builtin;
extern sh_builtin_func_t *last_shell_builtin;
extern SHELL_VAR *builtin_bind_variable PARAMS((char *, char *, int));
+extern SHELL_VAR *builtin_bind_var_to_int PARAMS((char *, intmax_t, int));
extern int builtin_unbind_variable PARAMS((const char *));
+extern SHELL_VAR *builtin_find_indexed_array PARAMS((char *, int));
+extern int builtin_arrayref_flags PARAMS((WORD_DESC *, int));
+
/* variables from evalfile.c */
extern int sourcelevel;
@@ -236,12 +249,14 @@ extern int breaking;
extern int continuing;
extern int loop_level;
-/* variables from read.def */
-extern int sigalrm_seen;
-
/* variables from shift.def */
extern int print_shift_error;
+/* variables from shopt.def */
+#if defined (ARRAY_VARS)
+extern int expand_once_flag;
+#endif
+
/* variables from source.def */
extern int source_searches_cwd;
extern int source_uses_path;
@@ -249,4 +264,19 @@ extern int source_uses_path;
/* variables from wait.def */
extern int wait_intr_flag;
+/* common code to set flags for valid_array_reference and builtin_bind_variable */
+#if defined (ARRAY_VARS)
+#define SET_VFLAGS(wordflags, vflags, bindflags) \
+ do { \
+ vflags = assoc_expand_once ? VA_NOEXPAND : 0; \
+ bindflags = assoc_expand_once ? ASS_NOEXPAND : 0; \
+ if (assoc_expand_once && (wordflags & W_ARRAYREF)) \
+ vflags |= VA_ONEWORD|VA_NOEXPAND; \
+ if (vflags & VA_NOEXPAND) \
+ bindflags |= ASS_NOEXPAND; \
+ if (vflags & VA_ONEWORD) \
+ bindflags |= ASS_ONEWORD; \
+ } while (0)
+#endif
+
#endif /* !__COMMON_H */
diff --git a/builtins/complete.def b/builtins/complete.def
index 28a9ec2f..6d600efb 100644
--- a/builtins/complete.def
+++ b/builtins/complete.def
@@ -1,7 +1,7 @@
This file is complete.def, from which is created complete.c.
It implements the builtins "complete", "compgen", and "compopt" in Bash.
-Copyright (C) 1999-2020 Free Software Foundation, Inc.
+Copyright (C) 1999-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -541,6 +541,8 @@ static void
print_cmd_name (cmd)
const char *cmd;
{
+ char *x;
+
if (STREQ (cmd, DEFAULTCMD))
printf ("-D");
else if (STREQ (cmd, EMPTYCMD))
@@ -549,6 +551,12 @@ print_cmd_name (cmd)
printf ("-I");
else if (*cmd == 0) /* XXX - can this happen? */
printf ("''");
+ else if (sh_contains_shell_metas (cmd))
+ {
+ x = sh_single_quote (cmd);
+ printf ("%s", x);
+ free (x);
+ }
else
printf ("%s", cmd);
}
@@ -575,7 +583,7 @@ print_one_completion (cmd, cs)
print_arg (cs->command, "-C", 1);
/* simple arguments that don't require quoting */
- print_arg (cs->funcname, "-F", 0);
+ print_arg (cs->funcname, "-F", sh_contains_shell_metas (cs->funcname) != 0);
print_cmd_name (cmd);
printf ("\n");
diff --git a/builtins/declare.def b/builtins/declare.def
index 21e4516d..54db59c5 100644
--- a/builtins/declare.def
+++ b/builtins/declare.def
@@ -1,7 +1,7 @@
This file is declare.def, from which is created declare.c.
It implements the builtins "declare" and "local" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -22,7 +22,7 @@ $PRODUCES declare.c
$BUILTIN declare
$FUNCTION declare_builtin
-$SHORT_DOC declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]
+$SHORT_DOC declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]
Set variable values and attributes.
Declare variables and give them attributes. If no NAMEs are given,
@@ -64,7 +64,7 @@ $END
$BUILTIN typeset
$FUNCTION declare_builtin
-$SHORT_DOC typeset [-aAfFgiIlnrtux] [-p] name[=value] ...
+$SHORT_DOC typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]
Set variable values and attributes.
A synonym for `declare'. See `help declare'.
@@ -91,6 +91,9 @@ $END
#include "bashgetopt.h"
static SHELL_VAR *declare_find_variable PARAMS((const char *, int, int));
+static char *declare_build_newname PARAMS((char *, char *, int, char *, int));
+static char *declare_transform_name PARAMS((char *, int, int));
+
static int declare_internal PARAMS((register WORD_LIST *, int));
/* Declare or change variable attributes. */
@@ -162,6 +165,68 @@ declare_find_variable (name, mkglobal, chklocal)
return (find_global_variable (name));
}
+/* Build a new string
+ NAME[SUBSCRIPT][[+]=VALUE]
+ from expanding a nameref into NAME */
+static char *
+declare_build_newname (name, subscript_start, offset, value, aflags)
+ char *name, *subscript_start;
+ int offset;
+ char *value;
+ int aflags;
+{
+ size_t namelen, savelen;
+ char *ret;
+
+ savelen = namelen = strlen (name);
+ if (subscript_start)
+ {
+ *subscript_start = '['; /* ] */
+ namelen += strlen (subscript_start);
+ }
+ ret = xmalloc (namelen + 2 + strlen (value) + 1);
+ strcpy (ret, name);
+ if (subscript_start)
+ strcpy (ret + savelen, subscript_start);
+ if (offset)
+ {
+ if (aflags & ASS_APPEND)
+ ret[namelen++] = '+';
+ ret[namelen++] = '=';
+ if (value && *value)
+ strcpy (ret + namelen, value);
+ else
+ ret[namelen] = '\0';
+ }
+
+ return (ret);
+}
+
+static char *
+declare_transform_name (name, flags_on, flags_off)
+ char *name;
+ int flags_on, flags_off;
+{
+ SHELL_VAR *var, *v;
+ char *newname;
+
+ var = find_variable (name);
+ if (var == 0)
+ newname = nameref_transform_name (name, ASS_MKLOCAL);
+ else if ((flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0)
+ {
+ /* Ok, we're following namerefs here, so let's make sure that if
+ we followed one, it was at the same context (see below for
+ more details). */
+ v = find_variable_last_nameref (name, 1);
+ newname = (v && v->context != variable_context) ? name : name_cell (var);
+ }
+ else
+ newname = name; /* dealing with nameref attribute */
+
+ return (newname);
+}
+
/* The workhorse function. */
static int
declare_internal (list, local_var)
@@ -204,10 +269,9 @@ declare_internal (list, local_var)
return (EX_USAGE);
#endif
case 'p':
-/* if (local_var == 0) */
- pflag++;
+ pflag++;
break;
- case 'F':
+ case 'F':
nodefs++;
*flags |= att_function;
break;
@@ -271,7 +335,7 @@ declare_internal (list, local_var)
/* If there are no more arguments left, then we just want to show
some variables. */
- if (list == 0) /* declare -[aAfFirtx] */
+ if (list == 0) /* declare -[aAfFilnrtux] */
{
/* Show local variables defined at this context level if this is
the `local' builtin. */
@@ -287,7 +351,7 @@ declare_internal (list, local_var)
return (sh_chkwrite (EXECUTION_SUCCESS));
}
- if (pflag) /* declare -p [-aAfFirtx] name [name...] */
+ if (pflag) /* declare -p [-aAfFilnrtux] [name ...] */
{
for (any_failed = 0; list; list = list->next)
{
@@ -306,13 +370,31 @@ declare_internal (list, local_var)
return (sh_chkwrite (any_failed ? EXECUTION_FAILURE : EXECUTION_SUCCESS));
}
+ /* Some option combinations that don't make any sense */
+ if ((flags_on & att_function) && (flags_on & (att_array|att_assoc|att_integer|att_nameref)))
+ {
+ char *optchar;
+
+ if (flags_on & att_nameref)
+ optchar = "-n";
+ else if (flags_on & att_integer)
+ optchar = "-i";
+ else if (flags_on & att_assoc)
+ optchar = "-A";
+ else if (flags_on & att_array)
+ optchar = "-a";
+
+ sh_invalidopt (optchar);
+ return (EXECUTION_FAILURE);
+ }
+
#define NEXT_VARIABLE() free (name); list = list->next; continue
/* There are arguments left, so we are making variables. */
- while (list) /* declare [-aAfFirx] name [name ...] */
+ while (list) /* declare [-aAfFilnrtux] name[=value] [name[=value] ...] */
{
- char *value, *name, *oldname;
- int offset, aflags, wflags, created_var, namelen;
+ char *value, *name, *newname;
+ int offset, aflags, wflags, created_var;
int assoc_noexpand;
#if defined (ARRAY_VARS)
int making_array_special, compound_array_assign, simple_array_assign;
@@ -326,6 +408,12 @@ declare_internal (list, local_var)
#else
assoc_noexpand = 0;
#endif
+ /* XXX - we allow unbalanced brackets if assoc_noexpand is set, we count
+ brackets and make sure they match if assoc_noexpand is not set. So we
+ need to make sure we're checking assoc_noexpand and expand_once_flag
+ for backwards compatibility. We also use assoc_noexpand below when
+ we call assign_array_element, so we need to make sure they're
+ consistent in how they count brackets. */
offset = assignment (name, assoc_noexpand ? 2 : 0);
aflags = 0;
created_var = 0;
@@ -340,6 +428,76 @@ declare_internal (list, local_var)
NEXT_VARIABLE ();
}
+ /* If we are declaring a function, then complain about it in some way.
+ We don't let people make functions by saying `typeset -f foo=bar'. */
+
+ /* Can't define functions using assignment statements */
+ if (offset && (flags_on & att_function)) /* declare -f [-rix] foo=bar */
+ {
+ builtin_error (_("cannot use `-f' to make functions"));
+ free (name);
+ return (EXECUTION_FAILURE);
+ }
+
+ /* There should be a way, however, to let people look at a particular
+ function definition by saying `typeset -f foo'. This is the only
+ place in this builtin where we deal with functions. */
+
+ if (flags_on & att_function)
+ {
+ /* Should we restrict this when the shell is in posix mode even if
+ the function was created before the shell entered posix mode?
+ Previous versions of the shell enforced the restriction. */
+ if (posixly_correct && legal_identifier (name) == 0)
+ {
+ sh_invalidid (name);
+ assign_error++;
+ NEXT_VARIABLE ();
+ }
+
+ var = find_function (name);
+
+ if (var)
+ {
+ if (readonly_p (var) && (flags_off & att_readonly))
+ {
+ builtin_error (_("%s: readonly function"), name);
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
+ /* declare -[Ff] name [name...] */
+ if (flags_on == att_function && flags_off == 0)
+ {
+#if defined (DEBUGGER)
+ if (nodefs && debugging_mode)
+ {
+ shell_fn = find_function_def (name_cell (var));
+ if (shell_fn)
+ printf ("%s %d %s\n", name_cell (var), shell_fn->line, shell_fn->source_file);
+ else
+ printf ("%s\n", name_cell (var));
+ }
+ else
+#endif /* DEBUGGER */
+ {
+ t = nodefs ? name_cell (var) : named_function_string (name, function_cell (var), FUNC_MULTILINE|FUNC_EXTERNAL);
+ printf ("%s\n", t);
+ any_failed = sh_chkwrite (any_failed);
+ }
+ }
+ else /* declare -[fF] -[rx] name [name...] */
+ {
+ VSETATTR (var, flags_on);
+ flags_off &= ~att_function; /* makes no sense */
+ VUNSETATTR (var, flags_off);
+ }
+ }
+ else
+ any_failed++;
+
+ NEXT_VARIABLE ();
+ }
+
if (offset) /* declare [-aAfFirx] name=value */
{
name[offset] = '\0';
@@ -361,7 +519,7 @@ declare_internal (list, local_var)
if (valid_array_reference (name, 0))
{
builtin_error (_("%s: reference variable cannot be an array"), name);
- assign_error++;
+ any_failed++;
NEXT_VARIABLE ();
}
else
@@ -372,29 +530,32 @@ declare_internal (list, local_var)
if (variable_context == 0)
{
builtin_error (_("%s: nameref variable self references not allowed"), name);
- assign_error++;
+ assign_error++; /* XXX any_failed++ instead? */
NEXT_VARIABLE ();
}
else
builtin_warning (_("%s: circular name reference"), name);
}
-#if 1
if (value && *value && (aflags & ASS_APPEND) == 0 && valid_nameref_value (value, 1) == 0)
{
builtin_error (_("`%s': invalid variable name for name reference"), value);
assign_error++;
NEXT_VARIABLE ();
}
-#endif
}
restart_new_var_name:
+
+ /* The rest of the loop body deals with declare -[aAlinrtux] name [name...]
+ where each NAME can be an assignment statement. */
+
+ subscript_start = (char *)NULL; /* used below */
#if defined (ARRAY_VARS)
+ /* Determine whether we are creating or assigning an array variable */
var_exists = array_exists = creating_array = 0;
compound_array_assign = simple_array_assign = 0;
array_subscript_assignment = 0;
- subscript_start = (char *)NULL;
- if ((t = strchr (name, '[')) && (flags_on & att_function) == 0) /* ] */
+ if (t = strchr (name, '[')) /* ] */
{
/* If offset != 0 we have already validated any array reference
because assignment() calls skipsubscript() */
@@ -413,11 +574,8 @@ restart_new_var_name:
making_array_special = 0;
#endif
- /* If we're in posix mode or not looking for a shell function (since
- shell function names don't have to be valid identifiers when the
- shell's not in posix mode), check whether or not the argument is a
- valid, well-formed shell identifier. */
- if ((posixly_correct || (flags_on & att_function) == 0) && legal_identifier (name) == 0)
+ /* Ensure the argument is a valid, well-formed shell identifier. */
+ if (legal_identifier (name) == 0)
{
sh_invalidid (name);
assign_error++;
@@ -432,25 +590,12 @@ restart_new_var_name:
variable that was in the temporary environment. Watch out
for this. */
refvar = (SHELL_VAR *)NULL;
- if (variable_context && mkglobal == 0 && ((flags_on & att_function) == 0))
+ if (variable_context && mkglobal == 0)
{
- char *newname;
-
- /* check name for validity here? */
- var = find_variable (name);
- if (var == 0)
- newname = nameref_transform_name (name, ASS_MKLOCAL);
- else if ((flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0)
- {
- /* Ok, we're following namerefs here, so let's make sure that if
- we followed one, it was at the same context (see below for
- more details). */
- refvar = find_variable_last_nameref (name, 1);
- newname = (refvar && refvar->context != variable_context) ? name : var->name;
- refvar = (SHELL_VAR *)NULL;
- }
- else
- newname = name; /* dealing with nameref attribute */
+ /* We don't check newname for validity here. We should not have an
+ invalid name assigned as the value of a nameref, but this could
+ cause problems. */
+ newname = declare_transform_name (name, flags_on, flags_off);
#if defined (ARRAY_VARS)
/* Pass 1 as second argument to make_local_{assoc,array}_variable
@@ -478,12 +623,12 @@ restart_new_var_name:
else if (refvar && refvar->context == variable_context)
var = refvar;
/* Maybe we just want to create a new local variable */
- else if (var == 0 || var->context != variable_context)
+ else if ((var = find_variable (name)) == 0 || var->context != variable_context)
var = make_local_variable (name, inherit_flag);
/* otherwise we have a var at the right context */
}
else
- /* XXX - check name for validity here with valid_nameref_value */
+ /* XXX - check name for validity here with valid_nameref_value? */
var = make_local_variable ((flags_on & att_nameref) ? name : newname, inherit_flag); /* sets att_invisible for new vars */
if (var == 0)
@@ -501,483 +646,386 @@ restart_new_var_name:
else
var = (SHELL_VAR *)NULL;
- /* If we are declaring a function, then complain about it in some way.
- We don't let people make functions by saying `typeset -f foo=bar'. */
+ /* VAR is non-null if we just created or fetched a local variable. */
- /* There should be a way, however, to let people look at a particular
- function definition by saying `typeset -f foo'. */
+ /* Here's what ksh93 seems to do as of the 2012 version: if we are
+ using declare -n to modify the value of an existing nameref
+ variable, don't follow the nameref chain at all and just search
+ for a nameref at the current context. If we have a nameref,
+ modify its value (changing which variable it references). */
+ if (var == 0 && (flags_on & att_nameref))
+ {
+ /* See if we are trying to modify an existing nameref variable,
+ but don't follow the nameref chain. */
+ var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name);
+ if (var && nameref_p (var) == 0)
+ var = 0;
+ }
- if (flags_on & att_function)
+ /* However, if we're turning off the nameref attribute on an existing
+ nameref variable, we first follow the nameref chain to the end,
+ modify the value of the variable this nameref variable references
+ if there is an assignment statement argument,
+ *CHANGING ITS VALUE AS A SIDE EFFECT*, then turn off the nameref
+ flag *LEAVING THE NAMEREF VARIABLE'S VALUE UNCHANGED* */
+ else if (var == 0 && (flags_off & att_nameref))
{
- if (offset) /* declare -f [-rix] foo=bar */
- {
- builtin_error (_("cannot use `-f' to make functions"));
- free (name);
- return (EXECUTION_FAILURE);
- }
- else /* declare -f [-rx] name [name...] */
+ /* See if we are trying to modify an existing nameref variable */
+ refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0);
+ if (refvar && nameref_p (refvar) == 0)
+ refvar = 0;
+ /* If the nameref is readonly but doesn't have a value, ksh93
+ allows the nameref attribute to be removed. If it's readonly
+ and has a value, even if the value doesn't reference an
+ existing variable, we disallow the modification */
+ if (refvar && nameref_cell (refvar) && readonly_p (refvar))
{
- var = find_function (name);
-
- if (var)
- {
- if (readonly_p (var) && (flags_off & att_readonly))
- {
- builtin_error (_("%s: readonly function"), name);
- any_failed++;
- NEXT_VARIABLE ();
- }
- else if (flags_on & (att_array|att_assoc))
- {
- sh_invalidopt ((flags_on & att_array) ? "-a" : "-A");
- any_failed++;
- NEXT_VARIABLE ();
- }
- /* declare -[Ff] name [name...] */
- if (flags_on == att_function && flags_off == 0)
- {
-#if defined (DEBUGGER)
- if (nodefs && debugging_mode)
- {
- shell_fn = find_function_def (var->name);
- if (shell_fn)
- printf ("%s %d %s\n", var->name, shell_fn->line, shell_fn->source_file);
- else
- printf ("%s\n", var->name);
- }
- else
-#endif /* DEBUGGER */
- {
- t = nodefs ? var->name
- : named_function_string (name, function_cell (var), FUNC_MULTILINE|FUNC_EXTERNAL);
- printf ("%s\n", t);
- any_failed = sh_chkwrite (any_failed);
- }
- }
- else /* declare -[fF] -[rx] name [name...] */
- {
- VSETATTR (var, flags_on);
- flags_off &= ~att_function; /* makes no sense */
- VUNSETATTR (var, flags_off);
- }
- }
- else
- any_failed++;
+ sh_readonly (name);
+ any_failed++;
NEXT_VARIABLE ();
}
- }
- else /* declare -[aAinrx] name [name...] */
- {
- /* Non-null if we just created or fetched a local variable. */
-#if 0
- /* This is bash-4.3 code. */
- /* Here's what ksh93 seems to do. If we are modifying an existing
- nameref variable, we don't follow the nameref chain past the last
- nameref, and we set the nameref variable's value so future
- references to that variable will return the value of the variable
- we're assigning right now. */
-#else
- /* Here's what ksh93 seems to do as of the 2012 version: if we are
- using declare -n to modify the value of an existing nameref
- variable, don't follow the nameref chain at all and just search
- for a nameref at the current context. If we have a nameref,
- modify its value (changing which variable it references). */
-#endif
- if (var == 0 && (flags_on & att_nameref))
+
+ /* If all we're doing is turning off the nameref attribute, don't
+ bother with VAR at all, whether it exists or not. Just turn it
+ off and go on. */
+ if (refvar && flags_on == 0 && offset == 0 && flags_off == att_nameref)
{
- /* See if we are trying to modify an existing nameref variable,
- but don't follow the nameref chain. */
- var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name);
- if (var && nameref_p (var) == 0)
- var = 0;
+ VUNSETATTR (refvar, att_nameref);
+ NEXT_VARIABLE ();
}
- /* However, if we're turning off the nameref attribute on an existing
- nameref variable, we first follow the nameref chain to the end,
- modify the value of the variable this nameref variable references
- if there is an assignment statement argument,
- *CHANGING ITS VALUE AS A SIDE EFFECT*, then turn off the nameref
- flag *LEAVING THE NAMEREF VARIABLE'S VALUE UNCHANGED* */
- else if (var == 0 && (flags_off & att_nameref))
- {
- /* See if we are trying to modify an existing nameref variable */
- refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0);
- if (refvar && nameref_p (refvar) == 0)
- refvar = 0;
- /* If the nameref is readonly but doesn't have a value, ksh93
- allows the nameref attribute to be removed. If it's readonly
- and has a value, even if the value doesn't reference an
- existing variable, we disallow the modification */
- if (refvar && nameref_cell (refvar) && readonly_p (refvar))
- {
- sh_readonly (name);
- any_failed++;
- NEXT_VARIABLE ();
- }
-
- /* If all we're doing is turning off the nameref attribute, don't
- bother with VAR at all, whether it exists or not. Just turn it
- off and go on. */
- if (refvar && flags_on == 0 && offset == 0 && (flags_off & ~att_nameref) == 0)
- {
- VUNSETATTR (refvar, att_nameref);
- NEXT_VARIABLE ();
- }
- if (refvar)
- /* XXX - use declare_find_variable here? */
- var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar));
- }
+ if (refvar)
+ var = declare_find_variable (nameref_cell (refvar), mkglobal, 0);
+ }
#if defined (ARRAY_VARS)
- /* If we have an array assignment to a nameref, remove the nameref
- attribute and go on. */
- else if (var == 0 && offset && array_subscript_assignment)
+ /* If we have an array assignment to a nameref, remove the nameref
+ attribute and go on. This handles
+ declare -n xref[=value]; declare [-a] xref[1]=one */
+ else if (var == 0 && offset && array_subscript_assignment)
+ {
+ var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name);
+ if (var && nameref_p (var))
{
- var = mkglobal ? find_global_variable_noref (name) : find_variable_noref (name);
- if (var && nameref_p (var))
- {
- internal_warning (_("%s: removing nameref attribute"), name);
- FREE (value_cell (var)); /* XXX - bash-4.3 compat */
- var_setvalue (var, (char *)NULL);
- VUNSETATTR (var, att_nameref);
- }
+ internal_warning (_("%s: removing nameref attribute"), name);
+ FREE (value_cell (var)); /* XXX - bash-4.3 compat */
+ var_setvalue (var, (char *)NULL);
+ VUNSETATTR (var, att_nameref);
}
+ }
#endif
- /* See if we are trying to set flags or value (or create) for an
- existing nameref that points to a non-existent variable: e.g.,
+ /* See if we are trying to set flags or value (or create) for an
+ existing nameref that points to a non-existent variable: e.g.,
declare -n foo=bar
unset foo # unsets bar
declare -i foo
foo=4+4
- declare -p foo */
- if (var == 0 && (mkglobal || flags_on || flags_off || offset))
+ declare -p foo
+ */
+ if (var == 0 && (mkglobal || flags_on || flags_off || offset))
+ {
+ refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0);
+ if (refvar && nameref_p (refvar) == 0)
+ refvar = 0;
+ if (refvar)
+ var = declare_find_variable (nameref_cell (refvar), mkglobal, 0);
+ if (refvar && var == 0)
{
- refvar = mkglobal ? find_global_variable_last_nameref (name, 0) : find_variable_last_nameref (name, 0);
- if (refvar && nameref_p (refvar) == 0)
- refvar = 0;
- if (refvar)
- /* XXX - use declare_find_variable here? */
- var = mkglobal ? find_global_variable (nameref_cell (refvar)) : find_variable (nameref_cell (refvar));
- if (refvar && var == 0)
- {
- oldname = name; /* need to free this */
+ /* I'm not sure subscript_start is ever non-null here. In any
+ event, build a new name from the nameref value, including any
+ subscript, and add the [[+]=value] if offset != 0 */
+ newname = declare_build_newname (nameref_cell (refvar), subscript_start, offset, value, aflags);
+ free (name);
+ name = newname;
- namelen = strlen (nameref_cell (refvar));
-#if defined (ARRAY_VARS)
- if (subscript_start)
- {
- *subscript_start = '['; /*]*/
- namelen += strlen (subscript_start);
- }
-#endif
- name = xmalloc (namelen + 2 + strlen (value) + 1);
- strcpy (name, nameref_cell (refvar));
-#if defined (ARRAY_VARS)
- if (subscript_start)
- strcpy (name + strlen (nameref_cell (refvar)), subscript_start);
-#endif
- /* We are committed to using the new name, so reset */
- if (offset)
+ if (offset)
+ {
+ offset = assignment (name, 0);
+ /* If offset was valid previously, but substituting the
+ the nameref value results in an invalid assignment,
+ throw an invalid identifier error */
+ if (offset == 0)
{
- /* Rebuild assignment and restore offset and value */
- if (aflags & ASS_APPEND)
- name[namelen++] = '+';
- name[namelen++] = '=';
- if (value && *value)
- strcpy (name + namelen, value);
- else
- name[namelen] = '\0';
- offset = assignment (name, 0);
- /* if offset was valid previously, but the substituting
- of the nameref value results in an invalid assignment,
- throw an invalid identifier error */
- if (offset == 0)
- {
- free (oldname);
- sh_invalidid (name);
- assign_error++;
- NEXT_VARIABLE ();
- }
- name[offset] = '\0';
- value = name + namelen;
+ sh_invalidid (name);
+ assign_error++;
+ NEXT_VARIABLE ();
}
- free (oldname);
+ name[(aflags & ASS_APPEND) ? offset - 1 : offset] = '\0';
+ value = name + offset + 1;
+ }
- /* OK, let's turn off the nameref attribute.
- Now everything else applies to VAR. */
- if (flags_off & att_nameref)
- VUNSETATTR (refvar, att_nameref);
+ /* OK, let's turn off the nameref attribute.
+ Now everything else applies to VAR. */
+ if (flags_off & att_nameref)
+ VUNSETATTR (refvar, att_nameref);
- goto restart_new_var_name;
- /* NOTREACHED */
- }
+ goto restart_new_var_name;
+ /* NOTREACHED */
}
- if (var == 0)
- var = declare_find_variable (name, mkglobal, chklocal);
+ }
+ if (var == 0)
+ var = declare_find_variable (name, mkglobal, chklocal);
+ /* At this point, VAR is the variable we are dealing with; REFVAR is the
+ nameref variable we dereferenced to get VAR, if any. */
#if defined (ARRAY_VARS)
- var_exists = var != 0;
- array_exists = var && (array_p (var) || assoc_p (var));
- creating_array = flags_on & (att_array|att_assoc);
+ var_exists = var != 0;
+ array_exists = var && (array_p (var) || assoc_p (var));
+ creating_array = flags_on & (att_array|att_assoc);
#endif
- if (var == 0)
- {
+ /* Make a new variable if we need to. */
+ if (var == 0)
+ {
#if defined (ARRAY_VARS)
- if (flags_on & att_assoc)
- {
- var = make_new_assoc_variable (name);
- if (var && offset == 0)
- VSETATTR (var, att_invisible);
- }
- else if ((flags_on & att_array) || making_array_special)
- {
- var = make_new_array_variable (name);
- if (var && offset == 0)
- VSETATTR (var, att_invisible);
- }
- else
-#endif
- {
- var = mkglobal ? bind_global_variable (name, (char *)NULL, ASS_FORCE) : bind_variable (name, (char *)NULL, ASS_FORCE);
- if (var && offset == 0)
- VSETATTR (var, att_invisible);
- }
- if (var == 0)
- {
- /* Has to appear in brackets */
- NEXT_VARIABLE ();
- }
- created_var = 1;
- }
- /* Can't take an existing array variable and make it a nameref */
- else if ((array_p (var) || assoc_p (var)) && (flags_on & att_nameref))
- {
- builtin_error (_("%s: reference variable cannot be an array"), name);
- assign_error++;
- NEXT_VARIABLE ();
- }
- else if (nameref_p (var) && (flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0 && offset && valid_nameref_value (value, 1) == 0)
- {
- builtin_error (_("`%s': invalid variable name for name reference"), value);
- any_failed++;
- NEXT_VARIABLE ();
- }
- else if (flags_on & att_nameref)
- {
-#if 1
- /* Check of offset is to allow an assignment to a nameref var as
- part of the declare word to override existing value */
- if (nameref_p (var) == 0 && var_isset (var) && offset == 0 && valid_nameref_value (value_cell (var), 0) == 0)
- {
- builtin_error (_("`%s': invalid variable name for name reference"), value_cell (var));
- any_failed++;
- NEXT_VARIABLE ();
- }
+ if (flags_on & att_assoc)
+ var = make_new_assoc_variable (name);
+ else if ((flags_on & att_array) || making_array_special)
+ var = make_new_array_variable (name);
+ else
#endif
- if (readonly_p (var))
- {
- sh_readonly (name);
- any_failed++;
- NEXT_VARIABLE ();
- }
- /* ksh93 compat: turning on nameref attribute turns off -ilu */
- VUNSETATTR (var, att_integer|att_uppercase|att_lowercase|att_capcase);
- }
+ var = mkglobal ? bind_global_variable (name, (char *)NULL, ASS_FORCE) : bind_variable (name, (char *)NULL, ASS_FORCE);
- /* Cannot use declare +r to turn off readonly attribute. */
- if (readonly_p (var) && (flags_off & att_readonly))
+ if (var == 0)
{
- sh_readonly (name_cell (var));
- any_failed++;
+ /* Has to appear in brackets */
NEXT_VARIABLE ();
}
+ if (offset == 0)
+ VSETATTR (var, att_invisible);
+ created_var = 1;
+ }
- /* Cannot use declare to assign value to readonly or noassign
- variable. */
- if ((readonly_p (var) || noassign_p (var)) && offset)
- {
- if (readonly_p (var))
- sh_readonly (name);
- assign_error++;
- NEXT_VARIABLE ();
- }
+ /* Nameref variable error checking. */
+
+ /* Can't take an existing array variable and make it a nameref */
+ else if ((array_p (var) || assoc_p (var)) && (flags_on & att_nameref))
+ {
+ builtin_error (_("%s: reference variable cannot be an array"), name);
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
+ /* Can't have an invalid identifier as nameref value */
+ else if (nameref_p (var) && (flags_on & att_nameref) == 0 && (flags_off & att_nameref) == 0 && offset && valid_nameref_value (value, 1) == 0)
+ {
+ builtin_error (_("`%s': invalid variable name for name reference"), value);
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
+ /* Can't make an existing variable a nameref if its current value is not
+ a valid identifier. Check of offset is to allow an assignment to a
+ nameref var as part of the declare word to override existing value. */
+ else if ((flags_on & att_nameref) && nameref_p (var) == 0 && var_isset (var) && offset == 0 && valid_nameref_value (value_cell (var), 0) == 0)
+ {
+ builtin_error (_("`%s': invalid variable name for name reference"), value_cell (var));
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
+ /* Can't make an existing readonly variable a nameref. */
+ else if ((flags_on & att_nameref) && readonly_p (var))
+ {
+ sh_readonly (name);
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
+
+ /* Readonly variable error checking. */
+
+ /* Cannot use declare +r to turn off readonly attribute. */
+ if (readonly_p (var) && (flags_off & att_readonly))
+ {
+ sh_readonly (name_cell (var));
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
+ /* Cannot use declare to assign value to readonly or noassign variable. */
+ else if ((readonly_p (var) || noassign_p (var)) && offset)
+ {
+ if (readonly_p (var))
+ sh_readonly (name);
+ assign_error++;
+ NEXT_VARIABLE ();
+ }
#if defined (ARRAY_VARS)
- /* make declare a[2]=foo as similar to a[2]=foo as possible if
- a is already an array or assoc variable. */
- if (array_subscript_assignment && array_exists && creating_array == 0)
- simple_array_assign = 1;
- else if ((making_array_special || creating_array || array_exists) && offset)
- {
- int vlen;
- vlen = STRLEN (value);
-/*itrace("declare_builtin: name = %s value = %s flags = %d", name, value, wflags);*/
- if (shell_compatibility_level > 43 && (wflags & W_COMPASSIGN) == 0 &&
- value[0] == '(' && value[vlen-1] == ')')
- {
- /* The warning is only printed when using compound assignment
- to an array variable that doesn't already exist. We use
- creating_array to allow things like
- declare -a foo$bar='(abc)' to work. */
- if (array_exists == 0 && creating_array == 0)
- internal_warning (_("%s: quoted compound array assignment deprecated"), list->word->word);
- compound_array_assign = array_exists || creating_array;
- simple_array_assign = making_array_special;
- }
- else if (value[0] == '(' && value[vlen-1] == ')' && (shell_compatibility_level < 44 || (wflags & W_COMPASSIGN)))
- compound_array_assign = 1;
- else
- simple_array_assign = 1;
- }
+ /* Array variable error checking. */
- /* Cannot use declare +a name or declare +A name to remove an
- array variable. */
- if (((flags_off & att_array) && array_p (var)) || ((flags_off & att_assoc) && assoc_p (var)))
- {
- builtin_error (_("%s: cannot destroy array variables in this way"), name);
- any_failed++;
- NEXT_VARIABLE ();
- }
+ /* Cannot use declare +a name or declare +A name to remove an array variable. */
+ if (((flags_off & att_array) && array_p (var)) || ((flags_off & att_assoc) && assoc_p (var)))
+ {
+ builtin_error (_("%s: cannot destroy array variables in this way"), name);
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
+ else if ((flags_on & att_array) && assoc_p (var))
+ {
+ builtin_error (_("%s: cannot convert associative to indexed array"), name);
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
+ else if ((flags_on & att_assoc) && array_p (var))
+ {
+ builtin_error (_("%s: cannot convert indexed to associative array"), name);
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
- if ((flags_on & att_array) && assoc_p (var))
- {
- builtin_error (_("%s: cannot convert associative to indexed array"), name);
- any_failed++;
- NEXT_VARIABLE ();
- }
- if ((flags_on & att_assoc) && array_p (var))
- {
- builtin_error (_("%s: cannot convert indexed to associative array"), name);
- any_failed++;
- NEXT_VARIABLE ();
- }
+ /* make declare A[2]=foo as similar to A[2]=foo as possible if A is
+ already an array or assoc variable. */
+ if (array_subscript_assignment && array_exists && creating_array == 0)
+ simple_array_assign = 1;
+ else if ((making_array_special || creating_array || array_exists) && offset)
+ {
+ int vlen;
+ vlen = STRLEN (value);
+/*itrace("declare_builtin: name = %s value = %s flags = %d", name, value, wflags);*/
- /* declare -A name[[n]] makes name an associative array variable. */
- if (flags_on & att_assoc)
+ if (shell_compatibility_level > 43 && (wflags & W_COMPASSIGN) == 0 &&
+ value[0] == '(' && value[vlen-1] == ')')
{
- if (assoc_p (var) == 0)
- var = convert_var_to_assoc (var);
+ /* I don't believe this warning is printed any more.
+ We use creating_array to allow things like
+ declare -a foo$bar='(abc)'
+ to work as they have in the past. */
+ if (array_exists == 0 && creating_array == 0)
+ internal_warning (_("%s: quoted compound array assignment deprecated"), list->word->word);
+ compound_array_assign = array_exists || creating_array;
+ simple_array_assign = making_array_special;
}
- /* declare -a name[[n]] or declare name[n] makes name an indexed
- array variable. */
- else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0)
- var = convert_var_to_array (var);
+ else if (value[0] == '(' && value[vlen-1] == ')' && (shell_compatibility_level < 44 || (wflags & W_COMPASSIGN)))
+ compound_array_assign = 1;
+ else
+ simple_array_assign = 1;
+ }
+
+ /* declare -A name[[n]] makes name an associative array variable. */
+ if (flags_on & att_assoc)
+ {
+ if (assoc_p (var) == 0)
+ var = convert_var_to_assoc (var);
+ }
+ /* declare -a name[[n]] or declare name[n] makes NAME an indexed
+ array variable. */
+ else if ((making_array_special || (flags_on & att_array)) && array_p (var) == 0 && assoc_p (var) == 0)
+ var = convert_var_to_array (var);
#endif /* ARRAY_VARS */
- /* XXX - we note that we are turning on nameref attribute and defer
- setting it until the assignment has been made so we don't do an
- inadvertent nameref lookup. Might have to do the same thing for
- flags_off&att_nameref. */
- /* XXX - ksh93 makes it an error to set a readonly nameref variable
- using a single typeset command. */
- onref = (flags_on & att_nameref);
- flags_on &= ~att_nameref;
+ /* ksh93 compat: turning on nameref attribute turns off -ilu */
+ if (flags_on & att_nameref)
+ VUNSETATTR (var, att_integer|att_uppercase|att_lowercase|att_capcase);
+
+ /* XXX - we note that we are turning on nameref attribute and defer
+ setting it until the assignment has been made so we don't do an
+ inadvertent nameref lookup. Might have to do the same thing for
+ flags_off&att_nameref. */
+ /* XXX - ksh93 makes it an error to set a readonly nameref variable
+ using a single typeset command. */
+ onref = (flags_on & att_nameref);
+ flags_on &= ~att_nameref;
#if defined (ARRAY_VARS)
- if (array_p (var) || assoc_p (var)
- || (offset && compound_array_assign)
- || simple_array_assign)
- onref = 0; /* array variables may not be namerefs */
+ /* I don't believe this condition ever tests true, but array variables
+ may not be namerefs */
+ if (array_p (var) || assoc_p (var) || compound_array_assign || simple_array_assign)
+ onref = 0;
#endif
- /* ksh93 seems to do this */
- offref = (flags_off & att_nameref);
- flags_off &= ~att_nameref;
+ /* ksh93 seems to do this */
+ offref = (flags_off & att_nameref);
+ flags_off &= ~att_nameref;
- VSETATTR (var, flags_on);
- VUNSETATTR (var, flags_off);
+ VSETATTR (var, flags_on);
+ VUNSETATTR (var, flags_off);
#if defined (ARRAY_VARS)
- if (offset && compound_array_assign)
- assign_array_var_from_string (var, value, aflags|ASS_FORCE);
- else if (simple_array_assign && subscript_start)
- {
- int local_aflags;
- /* declare [-aA] name[N]=value */
- *subscript_start = '['; /* ] */
- /* XXX - problem here with appending */
- local_aflags = aflags&ASS_APPEND;
- local_aflags |= assoc_noexpand ? ASS_NOEXPAND : 0;
- var = assign_array_element (name, value, local_aflags); /* XXX - not aflags */
- *subscript_start = '\0';
- if (var == 0) /* some kind of assignment error */
- {
- assign_error++;
- flags_on |= onref;
- flags_off |= offref;
- NEXT_VARIABLE ();
- }
- }
- else if (simple_array_assign)
+ if (offset && compound_array_assign)
+ assign_array_var_from_string (var, value, aflags|ASS_FORCE);
+ else if (simple_array_assign && subscript_start)
+ {
+ int local_aflags;
+
+ /* declare [-aA] name[N]=value */
+ *subscript_start = '['; /* ] */
+ /* XXX - problem here with appending */
+ local_aflags = aflags&ASS_APPEND;
+ local_aflags |= assoc_noexpand ? ASS_NOEXPAND : 0;
+ local_aflags |= ASS_ALLOWALLSUB; /* allow declare a[@]=at */
+ var = assign_array_element (name, value, local_aflags, (array_eltstate_t *)0); /* XXX - not aflags */
+ *subscript_start = '\0';
+ if (var == 0) /* some kind of assignment error */
{
- /* let bind_{array,assoc}_variable take care of this. */
- if (assoc_p (var))
- bind_assoc_variable (var, name, savestring ("0"), value, aflags|ASS_FORCE);
- else
- bind_array_variable (name, 0, value, aflags|ASS_FORCE);
+ assign_error++;
+ flags_on |= onref;
+ flags_off |= offref;
+ NEXT_VARIABLE ();
}
+ }
+ else if (simple_array_assign)
+ {
+ /* let bind_{array,assoc}_variable take care of this. */
+ if (assoc_p (var))
+ bind_assoc_variable (var, name, savestring ("0"), value, aflags|ASS_FORCE);
else
+ bind_array_variable (name, 0, value, aflags|ASS_FORCE);
+ }
+ else
#endif
- /* XXX - no ASS_FORCE here */
- /* bind_variable_value duplicates the essential internals of
- bind_variable() */
- if (offset)
+ /* XXX - no ASS_FORCE here */
+ /* bind_variable_value duplicates the essential internals of bind_variable() */
+ if (offset)
+ {
+ if (onref || nameref_p (var))
+ aflags |= ASS_NAMEREF;
+ v = bind_variable_value (var, value, aflags);
+ if (v == 0 && (onref || nameref_p (var)))
{
- if (onref || nameref_p (var))
- aflags |= ASS_NAMEREF;
- v = bind_variable_value (var, value, aflags);
- if (v == 0 && (onref || nameref_p (var)))
- {
- if (valid_nameref_value (value, 1) == 0)
- sh_invalidid (value);
- assign_error++;
- /* XXX - unset this variable? or leave it as normal var? */
- if (created_var)
- delete_var (var->name, mkglobal ? global_variables : shell_variables);
- flags_on |= onref; /* undo change from above */
- flags_off |= offref;
- NEXT_VARIABLE ();
- }
+ if (valid_nameref_value (value, 1) == 0)
+ sh_invalidid (value);
+ assign_error++;
+ /* XXX - unset this variable? or leave it as normal var? */
+ if (created_var)
+ delete_var (name_cell (var), mkglobal ? global_variables : shell_variables);
+ flags_on |= onref; /* undo change from above */
+ flags_off |= offref;
+ NEXT_VARIABLE ();
}
+ }
- /* If we found this variable in the temporary environment, as with
- `var=value declare -x var', make sure it is treated identically
- to `var=value export var'. Do the same for `declare -r' and
- `readonly'. Preserve the attributes, except for att_tempvar. */
- /* XXX -- should this create a variable in the global scope, or
- modify the local variable flags? ksh93 has it modify the
- global scope.
- Need to handle case like in set_var_attribute where a temporary
- variable is in the same table as the function local vars. */
- if ((flags_on & (att_exported|att_readonly)) && tempvar_p (var))
- {
- SHELL_VAR *tv;
- char *tvalue;
+ /* If we found this variable in the temporary environment, as with
+ `var=value declare -x var', make sure it is treated identically
+ to `var=value export var'. Do the same for `declare -r' and
+ `readonly'. Preserve the attributes, except for att_tempvar. */
+ /* XXX -- should this create a variable in the global scope, or
+ modify the local variable flags? ksh93 has it modify the
+ global scope.
+ Need to handle case like in set_var_attribute where a temporary
+ variable is in the same table as the function local vars. */
+ if ((flags_on & (att_exported|att_readonly)) && tempvar_p (var))
+ {
+ SHELL_VAR *tv;
+ char *tvalue;
- tv = find_tempenv_variable (var->name);
+ tv = find_tempenv_variable (name_cell (var));
+ if (tv)
+ {
+ tvalue = var_isset (var) ? savestring (value_cell (var)) : savestring ("");
+ tv = bind_variable (name_cell (var), tvalue, 0);
if (tv)
{
- tvalue = var_isset (var) ? savestring (value_cell (var)) : savestring ("");
- tv = bind_variable (var->name, tvalue, 0);
- if (tv)
- {
- tv->attributes |= var->attributes & ~att_tempvar;
- if (tv->context > 0)
- VSETATTR (tv, att_propagate);
- }
- free (tvalue);
+ tv->attributes |= var->attributes & ~att_tempvar;
+ if (tv->context > 0)
+ VSETATTR (tv, att_propagate);
}
- VSETATTR (var, att_propagate);
+ free (tvalue);
}
+ VSETATTR (var, att_propagate);
}
/* Turn on nameref attribute we deferred above. */
- /* XXX - should we turn on the noassign attribute for consistency with
- ksh93 when we turn on the nameref attribute? */
VSETATTR (var, onref);
flags_on |= onref;
VUNSETATTR (var, offref);
flags_off |= offref;
+
/* Yuck. ksh93 compatibility. XXX - need to investigate more but
definitely happens when turning off nameref attribute on nameref
(see comments above). Under no circumstances allow this to turn
diff --git a/builtins/enable.def b/builtins/enable.def
index 9d9010b7..27d341a6 100644
--- a/builtins/enable.def
+++ b/builtins/enable.def
@@ -1,7 +1,7 @@
This file is enable.def, from which is created enable.c.
It implements the builtin "enable" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -75,6 +75,7 @@ $END
#define ENABLED 1
#define DISABLED 2
#define SPECIAL 4
+#define SILENT 8 /* affects dyn_load_builtin behavior */
#define AFLAG 0x01
#define DFLAG 0x02
@@ -110,6 +111,7 @@ enable_builtin (list)
{
int result, flags;
int opt, filter;
+ WORD_LIST *next;
#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM)
char *filename;
#endif
@@ -178,6 +180,7 @@ enable_builtin (list)
filter |= SPECIAL;
list_some_builtins (filter);
+ result = sh_chkwrite (EXECUTION_SUCCESS);
}
#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM)
else if (flags & FFLAG)
@@ -187,6 +190,8 @@ enable_builtin (list)
filter |= SPECIAL;
result = dyn_load_builtin (list, filter, filename);
+ if (result != EXECUTION_SUCCESS)
+ result = EXECUTION_FAILURE; /* normalize return value */
#if defined (PROGRAMMABLE_COMPLETION)
set_itemlist_dirty (&it_builtins);
#endif
@@ -212,13 +217,37 @@ enable_builtin (list)
while (list)
{
opt = enable_shell_command (list->word->word, flags & NFLAG);
+ next = list->next;
- if (opt == EXECUTION_FAILURE)
+#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM)
+ /* If we try to enable a non-existent builtin, and we have dynamic
+ loading, try the equivalent of `enable -f name name'. */
+ if (opt == EX_NOTFOUND)
+ {
+ int dflags, r;
+
+ dflags = ENABLED|SILENT|((flags & SFLAG) ? SPECIAL : 0);
+
+ list->next = 0;
+ r = dyn_load_builtin (list, dflags, list->word->word);
+ list->next = next;
+ if (r == EXECUTION_SUCCESS)
+ opt = r;
+#if defined (PROGRAMMABLE_COMPLETION)
+ set_itemlist_dirty (&it_builtins);
+#endif
+ }
+#endif
+
+ if (opt == EX_NOTFOUND)
{
sh_notbuiltin (list->word->word);
result = EXECUTION_FAILURE;
}
- list = list->next;
+ else if (opt != EXECUTION_SUCCESS)
+ result = EXECUTION_FAILURE;
+
+ list = next;
}
}
return (result);
@@ -260,7 +289,7 @@ enable_shell_command (name, disable_p)
b = builtin_address_internal (name, 1);
if (b == 0)
- return (EXECUTION_FAILURE);
+ return (EX_NOTFOUND);
if (disable_p)
b->flags &= ~BUILTIN_ENABLED;
@@ -339,11 +368,16 @@ dyn_load_builtin (list, flags, filename)
if (handle == 0)
{
- name = printable_filename (filename, 0);
- builtin_error (_("cannot open shared object %s: %s"), name, dlerror ());
- if (name != filename)
- free (name);
- return (EXECUTION_FAILURE);
+ /* If we've been told to be quiet, don't complain about not finding the
+ specified shared object. */
+ if ((flags & SILENT) == 0)
+ {
+ name = printable_filename (filename, 0);
+ builtin_error (_("cannot open shared object %s: %s"), name, dlerror ());
+ if (name != filename)
+ free (name);
+ }
+ return (EX_NOTFOUND);
}
for (new = 0, l = list; l; l = l->next, new++)
@@ -369,7 +403,7 @@ dyn_load_builtin (list, flags, filename)
{
name = printable_filename (filename, 0);
builtin_error (_("cannot find %s in shared object %s: %s"),
- struct_name, name, dlerror ());
+ struct_name, name, dlerror ());
if (name != filename)
free (name);
free (struct_name);
diff --git a/builtins/evalstring.c b/builtins/evalstring.c
index 18928a17..fd635299 100644
--- a/builtins/evalstring.c
+++ b/builtins/evalstring.c
@@ -1,6 +1,6 @@
/* evalstring.c - evaluate a string as one or more shell commands. */
-/* Copyright (C) 1996-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -85,29 +85,34 @@ restore_lastcom (x)
}
int
+should_optimize_fork (command, subshell)
+ COMMAND *command;
+ int subshell;
+{
+ return (running_trap == 0 &&
+ command->type == cm_simple &&
+ signal_is_trapped (EXIT_TRAP) == 0 &&
+ signal_is_trapped (ERROR_TRAP) == 0 &&
+ any_signals_trapped () < 0 &&
+ (subshell || (command->redirects == 0 && command->value.Simple->redirects == 0)) &&
+ ((command->flags & CMD_TIME_PIPELINE) == 0) &&
+ ((command->flags & CMD_INVERT_RETURN) == 0));
+}
+
+/* This has extra tests to account for STARTUP_STATE == 2, which is for
+ -c command but has been extended to command and process substitution
+ (basically any time you call parse_and_execute in a subshell). */
+int
should_suppress_fork (command)
COMMAND *command;
{
-#if 0 /* TAG: bash-5.2 */
int subshell;
subshell = subshell_environment & SUBSHELL_PROCSUB; /* salt to taste */
-#endif
return (startup_state == 2 && parse_and_execute_level == 1 &&
- running_trap == 0 &&
*bash_input.location.string == '\0' &&
parser_expanding_alias () == 0 &&
- command->type == cm_simple &&
- signal_is_trapped (EXIT_TRAP) == 0 &&
- signal_is_trapped (ERROR_TRAP) == 0 &&
- any_signals_trapped () < 0 &&
-#if 0 /* TAG: bash-5.2 */
- (subshell || (command->redirects == 0 && command->value.Simple->redirects == 0)) &&
-#else
- command->redirects == 0 && command->value.Simple->redirects == 0 &&
-#endif
- ((command->flags & CMD_TIME_PIPELINE) == 0) &&
- ((command->flags & CMD_INVERT_RETURN) == 0));
+ should_optimize_fork (command, subshell));
}
int
@@ -121,13 +126,14 @@ can_optimize_connection (command)
}
void
-optimize_fork (command)
+optimize_connection_fork (command)
COMMAND *command;
{
if (command->type == cm_connection &&
(command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') &&
(command->value.Connection->second->flags & CMD_TRY_OPTIMIZING) &&
- should_suppress_fork (command->value.Connection->second))
+ ((startup_state == 2 && should_suppress_fork (command->value.Connection->second)) ||
+ ((subshell_environment & SUBSHELL_PAREN) && should_optimize_fork (command->value.Connection->second, 0))))
{
command->value.Connection->second->flags |= CMD_NO_FORK;
command->value.Connection->second->value.Simple->flags |= CMD_NO_FORK;
@@ -138,21 +144,19 @@ void
optimize_subshell_command (command)
COMMAND *command;
{
- if (running_trap == 0 &&
- command->type == cm_simple &&
- signal_is_trapped (EXIT_TRAP) == 0 &&
- signal_is_trapped (ERROR_TRAP) == 0 &&
- any_signals_trapped () < 0 &&
- command->redirects == 0 && command->value.Simple->redirects == 0 &&
- ((command->flags & CMD_TIME_PIPELINE) == 0) &&
- ((command->flags & CMD_INVERT_RETURN) == 0))
+ if (should_optimize_fork (command, 0))
{
command->flags |= CMD_NO_FORK;
command->value.Simple->flags |= CMD_NO_FORK;
}
else if (command->type == cm_connection &&
- (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR))
- optimize_subshell_command (command->value.Connection->second);
+ (command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') &&
+ command->value.Connection->second->type == cm_simple &&
+ parser_expanding_alias () == 0)
+ {
+ command->value.Connection->second->flags |= CMD_TRY_OPTIMIZING;
+ command->value.Connection->second->value.Simple->flags |= CMD_TRY_OPTIMIZING;
+ }
}
void
@@ -175,6 +179,19 @@ optimize_shell_function (command)
}
}
+int
+can_optimize_cat_file (command)
+ COMMAND *command;
+{
+ return (command->type == cm_simple && !command->redirects &&
+ (command->flags & CMD_TIME_PIPELINE) == 0 &&
+ command->value.Simple->words == 0 &&
+ command->value.Simple->redirects &&
+ command->value.Simple->redirects->next == 0 &&
+ command->value.Simple->redirects->instruction == r_input_direction &&
+ command->value.Simple->redirects->redirector.dest == 0);
+}
+
/* How to force parse_and_execute () to clean up after itself. */
void
parse_and_execute_cleanup (old_running_trap)
@@ -346,12 +363,14 @@ parse_and_execute (string, from_file, flags)
these circumstances. Don't bother with cleanup here because
we don't want to run the function execution cleanup stuff
that will cause pop_context and other functions to run.
+ We call reset_local_contexts() instead, which just frees
+ context memory.
XXX - change that if we want the function context to be
unwound. */
if (exit_immediately_on_error && variable_context)
{
discard_unwind_frame ("pe_dispose");
- variable_context = 0; /* not in a function */
+ reset_local_contexts (); /* not in a function */
}
should_jump_to_top_level = 1;
goto out;
@@ -364,6 +383,25 @@ parse_and_execute (string, from_file, flags)
should_jump_to_top_level = 1;
goto out;
+ case EXITBLTIN:
+ if (command)
+ {
+ if (variable_context && signal_is_trapped (0))
+ {
+ /* Let's make sure we run the exit trap in the function
+ context, as we do when not running parse_and_execute.
+ The pe_dispose unwind frame comes before any unwind-
+ protects installed by the string we're evaluating, so
+ it will undo the current function scope. */
+ dispose_command (command);
+ discard_unwind_frame ("pe_dispose");
+ }
+ else
+ run_unwind_frame ("pe_dispose");
+ }
+ should_jump_to_top_level = 1;
+ goto out;
+
case DISCARD:
if (command)
run_unwind_frame ("pe_dispose");
@@ -390,7 +428,7 @@ parse_and_execute (string, from_file, flags)
break;
}
}
-
+
if (parse_command () == 0)
{
if ((flags & SEVAL_PARSEONLY) || (interactive_shell == 0 && read_but_dont_execute))
@@ -473,13 +511,7 @@ parse_and_execute (string, from_file, flags)
if (startup_state == 2 &&
(subshell_environment & SUBSHELL_COMSUB) &&
*bash_input.location.string == '\0' &&
- command->type == cm_simple && !command->redirects &&
- (command->flags & CMD_TIME_PIPELINE) == 0 &&
- command->value.Simple->words == 0 &&
- command->value.Simple->redirects &&
- command->value.Simple->redirects->next == 0 &&
- command->value.Simple->redirects->instruction == r_input_direction &&
- command->value.Simple->redirects->redirector.dest == 0)
+ can_optimize_cat_file (command))
{
int r;
r = cat_file (command->value.Simple->redirects);
@@ -531,6 +563,8 @@ parse_and_execute (string, from_file, flags)
throw_to_top_level ();
}
+ CHECK_TERMSIG;
+
if (should_jump_to_top_level)
jump_to_top_level (code);
@@ -543,10 +577,11 @@ parse_and_execute (string, from_file, flags)
command substitutions during parsing to obey Posix rules about finding
the end of the command and balancing parens. */
int
-parse_string (string, from_file, flags, endp)
+parse_string (string, from_file, flags, cmdp, endp)
char *string;
const char *from_file;
int flags;
+ COMMAND **cmdp;
char **endp;
{
int code, nc;
@@ -563,7 +598,6 @@ parse_string (string, from_file, flags, endp)
sigprocmask (SIG_BLOCK, (sigset_t *)NULL, (sigset_t *)&ps_sigmask);
#endif
-/*itrace("parse_string: `%s'", string);*/
/* Reset the line number if the caller wants us to. If we don't reset the
line number, we have to subtract one, because we will add one just
before executing the next command (resetting the line number sets it to
@@ -575,9 +609,9 @@ parse_string (string, from_file, flags, endp)
code = should_jump_to_top_level = 0;
oglobal = global_command;
- ostring = string;
with_input_from_string (string, from_file);
+ ostring = bash_input.location.string;
while (*(bash_input.location.string)) /* XXX - parser_expanding_alias () ? */
{
command = (COMMAND *)NULL;
@@ -593,15 +627,15 @@ parse_string (string, from_file, flags, endp)
if (code)
{
-#if defined (DEBUG)
-itrace("parse_string: longjmp executed: code = %d", code);
-#endif
+ INTERNAL_DEBUG(("parse_string: longjmp executed: code = %d", code));
+
should_jump_to_top_level = 0;
switch (code)
{
case FORCE_EOF:
case ERREXIT:
case EXITPROG:
+ case EXITBLTIN:
case DISCARD: /* XXX */
if (command)
dispose_command (command);
@@ -621,7 +655,10 @@ itrace("parse_string: longjmp executed: code = %d", code);
if (parse_command () == 0)
{
- dispose_command (global_command);
+ if (cmdp)
+ *cmdp = global_command;
+ else
+ dispose_command (global_command);
global_command = (COMMAND *)NULL;
}
else
@@ -637,7 +674,11 @@ itrace("parse_string: longjmp executed: code = %d", code);
}
if (current_token == yacc_EOF || current_token == shell_eof_token)
+ {
+ if (current_token == shell_eof_token)
+ rewind_input_string ();
break;
+ }
}
out:
@@ -663,12 +704,10 @@ out:
return (nc);
}
-/* Handle a $( < file ) command substitution. This expands the filename,
- returning errors as appropriate, then just cats the file to the standard
- output. */
-static int
-cat_file (r)
+int
+open_redir_file (r, fnp)
REDIRECT *r;
+ char **fnp;
{
char *fn;
int fd, rval;
@@ -694,9 +733,30 @@ cat_file (r)
{
file_error (fn);
free (fn);
+ if (fnp)
+ *fnp = 0;
return -1;
}
+ if (fnp)
+ *fnp = fn;
+ return fd;
+}
+
+/* Handle a $( < file ) command substitution. This expands the filename,
+ returning errors as appropriate, then just cats the file to the standard
+ output. */
+static int
+cat_file (r)
+ REDIRECT *r;
+{
+ char *fn;
+ int fd, rval;
+
+ fd = open_redir_file (r, &fn);
+ if (fd < 0)
+ return -1;
+
rval = zcatfd (fd, 1, fn);
free (fn);
diff --git a/builtins/exec.def b/builtins/exec.def
index cbcb641a..add90822 100644
--- a/builtins/exec.def
+++ b/builtins/exec.def
@@ -1,7 +1,7 @@
This file is exec.def, from which is created exec.c.
It implements the builtin "exec" in Bash.
-Copyright (C) 1987-2019 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -104,7 +104,7 @@ exec_builtin (list)
int cleanenv, login, opt, orig_job_control;
char *argv0, *command, **args, **env, *newname, *com2;
- cleanenv = login = 0;
+ cleanenv = login = orig_job_control = 0;
exec_argv0 = argv0 = (char *)NULL;
reset_internal_getopt ();
@@ -215,7 +215,7 @@ exec_builtin (list)
maybe_save_shell_history ();
#endif /* HISTORY */
- restore_original_signals ();
+ reset_signal_handlers (); /* leave trap strings in place */
#if defined (JOB_CONTROL)
orig_job_control = job_control; /* XXX - was also interactive_shell */
@@ -253,7 +253,7 @@ failed_exec:
FREE (command);
if (subshell_environment || (interactive == 0 && no_exit_on_failed_exec == 0))
- exit_shell (exit_value);
+ exit_shell (last_command_exit_value = exit_value);
if (args)
strvec_dispose (args);
@@ -261,8 +261,11 @@ failed_exec:
if (env && env != export_env)
strvec_dispose (env);
- initialize_traps ();
+ /* If we're not exiting after the exec fails, we restore the shell signal
+ handlers and then modify the signal dispositions based on the trap strings
+ before the failed exec. */
initialize_signals (1);
+ restore_traps ();
#if defined (JOB_CONTROL)
if (orig_job_control)
diff --git a/builtins/exit.def b/builtins/exit.def
index dc6f3d5b..9c85bc58 100644
--- a/builtins/exit.def
+++ b/builtins/exit.def
@@ -1,7 +1,7 @@
This file is exit.def, from which is created exit.c.
It implements the builtins "exit", and "logout" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -151,7 +151,7 @@ exit_or_logout (list)
last_command_exit_value = exit_value;
/* Exit the program. */
- jump_to_top_level (EXITPROG);
+ jump_to_top_level (EXITBLTIN);
/*NOTREACHED*/
}
diff --git a/builtins/fc.def b/builtins/fc.def
index 467dbcbc..9b8a997d 100644
--- a/builtins/fc.def
+++ b/builtins/fc.def
@@ -1,7 +1,7 @@
This file is fc.def, from which is created fc.c.
It implements the builtin "fc" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -450,6 +450,8 @@ fc_builtin (list)
for (i = reverse ? histend : histbeg; reverse ? i >= histbeg : i <= histend; reverse ? i-- : i++)
{
QUIT;
+ if (hlist[i] == 0)
+ continue;
if (numbering)
fprintf (stream, "%d", i + history_base);
if (listing)
@@ -459,7 +461,8 @@ fc_builtin (list)
else
fprintf (stream, "\t%c", histdata (i) ? '*' : ' ');
}
- fprintf (stream, "%s\n", histline (i));
+ if (histline (i))
+ fprintf (stream, "%s\n", histline (i));
}
if (listing)
diff --git a/builtins/gen-helpfiles.c b/builtins/gen-helpfiles.c
index 6bed4474..d27d306b 100644
--- a/builtins/gen-helpfiles.c
+++ b/builtins/gen-helpfiles.c
@@ -1,6 +1,6 @@
/* gen-helpfiles - create files containing builtin help text */
-/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -64,6 +64,7 @@
#undef xrealloc
#undef xfree
+#undef malloc
#undef free /* defined in xmalloc.h */
#endif
diff --git a/builtins/hash.def b/builtins/hash.def
index c58e91c4..03ae5474 100644
--- a/builtins/hash.def
+++ b/builtins/hash.def
@@ -1,7 +1,7 @@
This file is hash.def, from which is created hash.c.
It implements the builtin "hash" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -138,7 +138,7 @@ hash_builtin (list)
(list_portably == 0 || shell_compatibility_level <= 50))
printf (_("%s: hash table empty\n"), this_command_name);
- return (EXECUTION_SUCCESS);
+ return (sh_chkwrite (EXECUTION_SUCCESS));
}
if (expunge_hash_table)
@@ -177,7 +177,7 @@ hash_builtin (list)
continue;
else if (pathname)
{
- if (is_directory (pathname))
+ if (file_isdir (pathname))
{
#ifdef EISDIR
builtin_error ("%s: %s", pathname, strerror (EISDIR));
diff --git a/builtins/help.def b/builtins/help.def
index f33b2b93..346d93fe 100644
--- a/builtins/help.def
+++ b/builtins/help.def
@@ -1,7 +1,7 @@
This file is help.def, from which is created help.c.
It implements the builtin "help" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -186,8 +186,7 @@ help_builtin (list)
return (EXECUTION_FAILURE);
}
- fflush (stdout);
- return (EXECUTION_SUCCESS);
+ return (sh_chkwrite (EXECUTION_SUCCESS));
}
void
diff --git a/builtins/history.def b/builtins/history.def
index 5db44c2c..6918d8a4 100644
--- a/builtins/history.def
+++ b/builtins/history.def
@@ -1,7 +1,7 @@
This file is history.def, from which is created history.c.
It implements the builtin "history" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -100,6 +100,10 @@ static int expand_and_print_history PARAMS((WORD_LIST *));
#define CFLAG 0x40
#define DFLAG 0x80
+#ifndef TIMELEN_MAX
+# define TIMELEN_MAX 128
+#endif
+
int
history_builtin (list)
WORD_LIST *list;
@@ -189,35 +193,29 @@ history_builtin (list)
return (EXECUTION_FAILURE);
}
if (delete_arg[0] == '-' && delete_start < 0)
- {
- /* the_history[history_length] == 0x0, so this is correct */
- delete_start += history_length;
- if (delete_start < history_base)
- {
-start_error:
- sh_erange (delete_arg, _("history position"));
- return (EXECUTION_FAILURE);
- }
- }
+ /* the_history[history_length] == 0x0, so this is correct */
+ delete_start += history_length;
/* numbers as displayed by display_history are offset by history_base */
else if (delete_start > 0)
delete_start -= history_base;
+
if (delete_start < 0 || delete_start >= history_length)
- goto start_error;
+ {
+ sh_erange (delete_arg, _("history position"));
+ return (EXECUTION_FAILURE);
+ }
+
if (range[0] == '-' && delete_end < 0)
- {
- delete_end += history_length;
- if (delete_end < history_base)
- {
-range_error:
- sh_erange (range, _("history position"));
- return (EXECUTION_FAILURE);
- }
- }
+ delete_end += history_length;
else if (delete_end > 0)
delete_end -= history_base;
+
if (delete_end < 0 || delete_end >= history_length)
- goto range_error;
+ {
+ sh_erange (range, _("history position"));
+ return (EXECUTION_FAILURE);
+ }
+ /* XXX - print error if end < start? */
result = bash_delete_history_range (delete_start, delete_end);
if (where_history () > history_length)
history_set_pos (history_length);
@@ -237,7 +235,7 @@ range_error:
that history -d -1 will delete the last history entry, which at
this point is the history -d -1 we just added. */
ind = history_length + delete_offset;
- if (ind < history_base)
+ if (ind < 0) /* offset by history_base below */
{
sh_erange (delete_arg, _("history position"));
return (EXECUTION_FAILURE);
@@ -328,7 +326,7 @@ histtime (hlist, histtimefmt)
HIST_ENTRY *hlist;
const char *histtimefmt;
{
- static char timestr[128];
+ static char timestr[TIMELEN_MAX];
time_t t;
struct tm *tm;
diff --git a/builtins/mapfile.def b/builtins/mapfile.def
index 65c3cb4f..4ddd7233 100644
--- a/builtins/mapfile.def
+++ b/builtins/mapfile.def
@@ -2,7 +2,7 @@ This file is mapfile.def, from which is created mapfile.c.
It implements the builtin "mapfile" in Bash.
Copyright (C) 2005-2006 Rocky Bernstein for Free Software Foundation, Inc.
-Copyright (C) 2008-2020 Free Software Foundation, Inc.
+Copyright (C) 2008-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -68,6 +68,7 @@ $END
#include <config.h>
#include "builtins.h"
+#include "../bashtypes.h"
#include "posixstat.h"
#if defined (HAVE_UNISTD_H)
@@ -140,7 +141,7 @@ do_chop(line, delim)
int length;
length = strlen (line);
- if (length && line[length-1] == delim)
+ if (length && (unsigned char)line[length-1] == delim)
line[length-1] = '\0';
}
@@ -156,6 +157,7 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n
size_t line_length;
unsigned int array_index, line_count;
SHELL_VAR *entry;
+ struct stat sb;
int unbuffered_read;
line = NULL;
@@ -165,34 +167,22 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n
/* The following check should be done before reading any lines. Doing it
here allows us to call bind_array_element instead of bind_array_variable
and skip the variable lookup on every call. */
- entry = find_or_make_array_variable (array_name, 1);
- if (entry == 0 || readonly_p (entry) || noassign_p (entry))
- {
- if (entry && readonly_p (entry))
- err_readonly (array_name);
-
- return (EXECUTION_FAILURE);
- }
- else if (array_p (entry) == 0)
- {
- builtin_error (_("%s: not an indexed array"), array_name);
- return (EXECUTION_FAILURE);
- }
- else if (invisible_p (entry))
- VUNSETATTR (entry, att_invisible); /* no longer invisible */
-
- if (flags & MAPF_CLEARARRAY)
- array_flush (array_cell (entry));
+ entry = builtin_find_indexed_array (array_name, flags & MAPF_CLEARARRAY);
+ if (entry == 0)
+ return EXECUTION_FAILURE;
#ifndef __CYGWIN__
- unbuffered_read = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE);
+ /* If the delimiter is a newline, turn on unbuffered reads for pipes
+ (terminals are ok). If the delimiter is not a newline, unbuffered reads
+ for every file descriptor that's not a regular file. */
+ if (delim == '\n')
+ unbuffered_read = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE);
+ else
+ unbuffered_read = (fstat (fd, &sb) != 0) || (S_ISREG (sb.st_mode) == 0);
#else
unbuffered_read = 1;
#endif
- if (delim != '\n')
- unbuffered_read = 1;
-
zreset ();
/* Skip any lines at beginning of file? */
@@ -215,11 +205,11 @@ mapfile (fd, line_count_goal, origin, nskip, callback_quantum, callback, array_n
/* Has a callback been registered and if so is it time to call it? */
if (callback && line_count && (line_count % callback_quantum) == 0)
{
- run_callback (callback, array_index, line);
-
/* Reset the buffer for bash own stream. */
if (unbuffered_read == 0)
zsyncfd (fd);
+
+ run_callback (callback, array_index, line);
}
/* XXX - bad things can happen if the callback modifies ENTRY, e.g.,
diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c
index e243021f..f505ebde 100644
--- a/builtins/mkbuiltins.c
+++ b/builtins/mkbuiltins.c
@@ -1,7 +1,7 @@
/* mkbuiltins.c - Create builtins.c, builtext.h, and builtdoc.c from
a single source file called builtins.def. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -72,7 +72,8 @@ extern char *strcpy ();
#define BUILTIN_FLAG_SPECIAL 0x01
#define BUILTIN_FLAG_ASSIGNMENT 0x02
#define BUILTIN_FLAG_LOCALVAR 0x04
-#define BUILTIN_FLAG_POSIX_BUILTIN 0x08
+#define BUILTIN_FLAG_POSIX_BUILTIN 0x08
+#define BUILTIN_FLAG_ARRAYREF_ARG 0x10
#define BASE_INDENT 4
@@ -112,6 +113,12 @@ char *struct_filename = (char *)NULL;
/* The name of the external declaration file. */
char *extern_filename = (char *)NULL;
+/* The name of the include file to write into the structure file, if it's
+ different from extern_filename. */
+char *include_filename = (char *)NULL;
+
+/* The name of the include file to put into the generated struct filename. */
+
/* Here is a structure for manipulating arrays of data. */
typedef struct {
int size; /* Number of slots allocated to array. */
@@ -173,11 +180,22 @@ char *posix_builtins[] =
(char *)NULL
};
+/* The builtin commands that can take array references as arguments and pay
+ attention to `assoc_expand_once'. These are the ones that don't assign
+ values, but need to avoid double expansions. */
+char *arrayvar_builtins[] =
+{
+ "declare", "let", "local", "printf", "read", "test", "[",
+ "typeset", "unset", "wait", /*]*/
+ (char *)NULL
+};
+
/* Forward declarations. */
static int is_special_builtin ();
static int is_assignment_builtin ();
static int is_localvar_builtin ();
static int is_posix_builtin ();
+static int is_arrayvar_builtin ();
#if !defined (HAVE_RENAME)
static int rename ();
@@ -229,6 +247,8 @@ main (argc, argv)
if (strcmp (arg, "-externfile") == 0)
extern_filename = argv[arg_index++];
+ else if (strcmp (arg, "-includefile") == 0)
+ include_filename = argv[arg_index++];
else if (strcmp (arg, "-structfile") == 0)
struct_filename = argv[arg_index++];
else if (strcmp (arg, "-noproduction") == 0)
@@ -272,6 +292,9 @@ main (argc, argv)
}
}
+ if (include_filename == 0)
+ include_filename = extern_filename;
+
/* If there are no files to process, just quit now. */
if (arg_index == argc)
exit (0);
@@ -831,6 +854,8 @@ builtin_handler (self, defs, arg)
new->flags |= BUILTIN_FLAG_LOCALVAR;
if (is_posix_builtin (name))
new->flags |= BUILTIN_FLAG_POSIX_BUILTIN;
+ if (is_arrayvar_builtin (name))
+ new->flags |= BUILTIN_FLAG_ARRAYREF_ARG;
array_add ((char *)new, defs->builtins);
building_builtin = 1;
@@ -1111,7 +1136,7 @@ char *structfile_header[] = {
"/* This file is manufactured by ./mkbuiltins, and should not be",
" edited by hand. See the source to mkbuiltins for details. */",
"",
- "/* Copyright (C) 1987-2015 Free Software Foundation, Inc.",
+ "/* Copyright (C) 1987-2022 Free Software Foundation, Inc.",
"",
" This file is part of GNU Bash, the Bourne Again SHell.",
"",
@@ -1173,7 +1198,7 @@ write_file_headers (structfile, externfile)
fprintf (structfile, "%s\n", structfile_header[i]);
fprintf (structfile, "#include \"%s\"\n",
- extern_filename ? extern_filename : "builtext.h");
+ include_filename ? include_filename : "builtext.h");
fprintf (structfile, "#include \"bashintl.h\"\n");
@@ -1183,7 +1208,7 @@ write_file_headers (structfile, externfile)
if (externfile)
fprintf (externfile,
"/* %s - The list of builtins found in libbuiltins.a. */\n",
- extern_filename ? extern_filename : "builtext.h");
+ include_filename ? include_filename : "builtext.h");
}
/* Write out any necessary closing information for
@@ -1250,12 +1275,13 @@ write_builtins (defs, structfile, externfile)
else
fprintf (structfile, "(sh_builtin_func_t *)0x0, ");
- fprintf (structfile, "%s%s%s%s%s, %s_doc,\n",
+ fprintf (structfile, "%s%s%s%s%s%s, %s_doc,\n",
"BUILTIN_ENABLED | STATIC_BUILTIN",
(builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "",
(builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "",
(builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "",
(builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "",
+ (builtin->flags & BUILTIN_FLAG_ARRAYREF_ARG) ? " | ARRAYREF_BUILTIN" : "",
document_name (builtin));
/* Don't translate short document summaries that are identical
@@ -1645,6 +1671,13 @@ is_posix_builtin (name)
return (_find_in_table (name, posix_builtins));
}
+static int
+is_arrayvar_builtin (name)
+ char *name;
+{
+ return (_find_in_table (name, arrayvar_builtins));
+}
+
#if !defined (HAVE_RENAME)
static int
rename (from, to)
diff --git a/builtins/printf.def b/builtins/printf.def
index 0a5f4897..84658c39 100644
--- a/builtins/printf.def
+++ b/builtins/printf.def
@@ -1,7 +1,7 @@
This file is printf.def, from which is created printf.c.
It implements the builtin "printf" in Bash.
-Copyright (C) 1997-2020 Free Software Foundation, Inc.
+Copyright (C) 1997-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -40,6 +40,8 @@ printf interprets:
%b expand backslash escape sequences in the corresponding argument
%q quote the argument in a way that can be reused as shell input
+ %Q like %q, but apply any precision to the unquoted argument before
+ quoting
%(fmt)T output the date-time string resulting from using FMT as a format
string for strftime(3)
@@ -149,7 +151,7 @@ extern int errno;
if (vflag) \
{ \
SHELL_VAR *v; \
- v = builtin_bind_variable (vname, vbuf, 0); \
+ v = builtin_bind_variable (vname, vbuf, bindflags); \
stupidly_hack_special_variables (vname); \
if (v == 0 || readonly_p (v) || noassign_p (v)) \
return (EXECUTION_FAILURE); \
@@ -184,6 +186,10 @@ extern int errno;
#define SKIP1 "#'-+ 0"
#define LENMODS "hjlLtz"
+#ifndef TIMELEN_MAX
+# define TIMELEN_MAX 128
+#endif
+
extern time_t shell_start_time;
#if !HAVE_ASPRINTF
@@ -209,13 +215,16 @@ static uintmax_t getuintmax PARAMS((void));
#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN)
typedef long double floatmax_t;
+# define USE_LONG_DOUBLE 1
# define FLOATMAX_CONV "L"
# define strtofltmax strtold
#else
typedef double floatmax_t;
+# define USE_LONG_DOUBLE 0
# define FLOATMAX_CONV ""
# define strtofltmax strtod
#endif
+static double getdouble PARAMS((void));
static floatmax_t getfloatmax PARAMS((void));
static intmax_t asciicode PARAMS((void));
@@ -226,6 +235,7 @@ static int conversion_error;
/* printf -v var support */
static int vflag = 0;
+static int bindflags = 0;
static char *vbuf, *vname;
static size_t vbsize;
static int vblen;
@@ -240,8 +250,8 @@ printf_builtin (list)
WORD_LIST *list;
{
int ch, fieldwidth, precision;
- int have_fieldwidth, have_precision;
- char convch, thisch, nextch, *format, *modstart, *fmt, *start;
+ int have_fieldwidth, have_precision, use_Lmod, altform;
+ char convch, thisch, nextch, *format, *modstart, *precstart, *fmt, *start;
#if defined (HANDLE_MULTIBYTE)
char mbch[25]; /* 25 > MB_LEN_MAX, plus can handle 4-byte UTF-8 and large Unicode characters*/
int mbind, mblen;
@@ -251,8 +261,6 @@ printf_builtin (list)
#endif
conversion_error = 0;
- retval = EXECUTION_SUCCESS;
-
vflag = 0;
reset_internal_getopt ();
@@ -262,12 +270,14 @@ printf_builtin (list)
{
case 'v':
vname = list_optarg;
+ bindflags = 0;
#if defined (ARRAY_VARS)
- arrayflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
- if (legal_identifier (vname) || valid_array_reference (vname, arrayflags))
+ SET_VFLAGS (list_optflags, arrayflags, bindflags);
+ retval = legal_identifier (vname) || valid_array_reference (vname, arrayflags);
#else
- if (legal_identifier (vname))
+ retval = legal_identifier (vname);
#endif
+ if (retval)
{
vflag = 1;
if (vbsize == 0)
@@ -310,6 +320,7 @@ printf_builtin (list)
format = list->word->word;
tw = 0;
+ retval = EXECUTION_SUCCESS;
garglist = orig_arglist = list->next;
@@ -330,7 +341,8 @@ printf_builtin (list)
for (fmt = format; *fmt; fmt++)
{
precision = fieldwidth = 0;
- have_fieldwidth = have_precision = 0;
+ have_fieldwidth = have_precision = altform = 0;
+ precstart = 0;
if (*fmt == '\\')
{
@@ -367,9 +379,11 @@ printf_builtin (list)
continue;
}
- /* found format specification, skip to field width */
+ /* Found format specification, skip to field width. We check for
+ alternate form for possible later use. */
for (; *fmt && strchr(SKIP1, *fmt); ++fmt)
- ;
+ if (*fmt == '#')
+ altform++;
/* Skip optional field width. */
if (*fmt == '*')
@@ -404,6 +418,8 @@ printf_builtin (list)
if (*fmt == '-')
#endif
fmt++;
+ if (DIGIT (*fmt))
+ precstart = fmt;
while (DIGIT (*fmt))
fmt++;
}
@@ -411,8 +427,12 @@ printf_builtin (list)
/* skip possible format modifiers */
modstart = fmt;
+ use_Lmod = 0;
while (*fmt && strchr (LENMODS, *fmt))
- fmt++;
+ {
+ use_Lmod |= USE_LONG_DOUBLE && *fmt == 'L';
+ fmt++;
+ }
if (*fmt == 0)
{
@@ -449,7 +469,7 @@ printf_builtin (list)
case '(':
{
- char *timefmt, timebuf[128], *t;
+ char *timefmt, timebuf[TIMELEN_MAX], *t;
int n;
intmax_t arg;
time_t secs;
@@ -531,7 +551,7 @@ printf_builtin (list)
if (var && *var)
{
if (legal_identifier (var))
- bind_var_to_int (var, tw);
+ bind_var_to_int (var, tw, 0);
else
{
sh_invalidid (var);
@@ -573,12 +593,27 @@ printf_builtin (list)
}
case 'q': /* print with shell quoting */
+ case 'Q':
{
char *p, *xp;
- int r;
+ int r, mpr;
+ size_t slen;
r = 0;
p = getstr ();
+ /* Decode precision and apply it to the unquoted string. */
+ if (convch == 'Q' && precstart)
+ {
+ mpr = *precstart++ - '0';
+ while (DIGIT (*precstart))
+ mpr = (mpr * 10) + (*precstart++ - '0');
+ /* Error if precision > INT_MAX here? */
+ precision = (mpr < 0 || mpr > INT_MAX) ? INT_MAX : mpr;
+ slen = strlen (p);
+ /* printf precision works in bytes. */
+ if (precision < slen)
+ p[precision] = '\0';
+ }
if (p && *p == 0) /* XXX - getstr never returns null */
xp = savestring ("''");
else if (ansic_shouldquote (p))
@@ -587,6 +622,12 @@ printf_builtin (list)
xp = sh_backslash_quote (p, 0, 3);
if (xp)
{
+ if (convch == 'Q')
+ {
+ slen = strlen (xp);
+ if (slen > precision)
+ precision = slen;
+ }
/* Use printstr to get fieldwidth and precision right. */
r = printstr (start, xp, strlen (xp), fieldwidth, precision);
if (r < 0)
@@ -662,11 +703,24 @@ printf_builtin (list)
#endif
{
char *f;
- floatmax_t p;
- p = getfloatmax ();
- f = mklong (start, FLOATMAX_CONV, sizeof(FLOATMAX_CONV) - 1);
- PF (f, p);
+ if (use_Lmod || posixly_correct == 0)
+ {
+ floatmax_t p;
+
+ p = getfloatmax ();
+ f = mklong (start, "L", 1);
+ PF (f, p);
+ }
+ else /* posixly_correct */
+ {
+ double p;
+
+ p = getdouble ();
+ f = mklong (start, "", 0);
+ PF (f, p);
+ }
+
break;
}
@@ -760,7 +814,7 @@ printstr (fmt, string, len, fieldwidth, precision)
fw = (mfw < 0 || mfw > INT_MAX) ? INT_MAX : mfw;
}
- /* get precision, if present */
+ /* get precision, if present. doesn't handle negative precisions */
if (*fmt == '.')
{
fmt++;
@@ -776,6 +830,8 @@ printstr (fmt, string, len, fieldwidth, precision)
mpr = (mpr * 10) + (*fmt++ - '0');
/* Error if precision > INT_MAX here? */
pr = (mpr < 0 || mpr > INT_MAX) ? INT_MAX : mpr;
+ if (pr < precision && precision < INT_MAX)
+ pr = precision; /* XXX */
}
else
pr = 0; /* "a null digit string is treated as zero" */
@@ -1214,6 +1270,33 @@ getuintmax ()
return (ret);
}
+static double
+getdouble ()
+{
+ double ret;
+ char *ep;
+
+ if (garglist == 0)
+ return (0);
+
+ if (garglist->word->word[0] == '\'' || garglist->word->word[0] == '"')
+ return asciicode ();
+
+ errno = 0;
+ ret = strtod (garglist->word->word, &ep);
+
+ if (*ep)
+ {
+ sh_invalidnum (garglist->word->word);
+ conversion_error = 1;
+ }
+ else if (errno == ERANGE)
+ printf_erange (garglist->word->word);
+
+ garglist = garglist->next;
+ return (ret);
+}
+
static floatmax_t
getfloatmax ()
{
diff --git a/builtins/read.def b/builtins/read.def
index 39e16e84..3c38bc02 100644
--- a/builtins/read.def
+++ b/builtins/read.def
@@ -1,7 +1,7 @@
This file is read.def, from which is created read.c.
It implements the builtin "read" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -30,7 +30,8 @@ if the -u option is supplied. The line is split into fields as with word
splitting, and the first word is assigned to the first NAME, the second
word to the second NAME, and so on, with any leftover words assigned to
the last NAME. Only the characters found in $IFS are recognized as word
-delimiters.
+delimiters. By default, the backslash character escapes delimiter characters
+and newline.
If no NAMEs are supplied, the line read is stored in the REPLY variable.
@@ -107,6 +108,7 @@ $END
#endif
#include "shmbutil.h"
+#include "timer.h"
#if !defined(errno)
extern int errno;
@@ -124,19 +126,19 @@ static int set_itext PARAMS((void));
static char *edit_line PARAMS((char *, char *));
static void set_eol_delim PARAMS((int));
static void reset_eol_delim PARAMS((char *));
+static void set_readline_timeout PARAMS((sh_timer *t, time_t, long));
#endif
-static SHELL_VAR *bind_read_variable PARAMS((char *, char *));
+static SHELL_VAR *bind_read_variable PARAMS((char *, char *, int));
#if defined (HANDLE_MULTIBYTE)
static int read_mbchar PARAMS((int, char *, int, int, int));
#endif
static void ttyrestore PARAMS((struct ttsave *));
static sighandler sigalrm PARAMS((int));
-static void reset_alarm PARAMS((void));
+static void reset_timeout PARAMS((void));
/* Try this to see what the rest of the shell can do with the information. */
-procenv_t alrmbuf;
-int sigalrm_seen;
+sh_timer *read_timeout;
static int reading, tty_modified;
static SigHandler *old_alrm;
@@ -148,21 +150,44 @@ static struct ttsave termsave;
avoids problems with the semi-tricky stuff we do with the xfree of
input_string at the top of the unwind-protect list (see below). */
-/* Set a flag that CHECK_ALRM can check. This relies on zread or read_builtin
- calling trap.c:check_signals(), which knows about sigalrm_seen and alrmbuf. */
+/* Set a flag that check_read_timeout can check. This relies on zread or
+ read_builtin calling trap.c:check_signals() (which calls check_read_timeout()) */
static sighandler
sigalrm (s)
int s;
{
- sigalrm_seen = 1;
+ /* Display warning if this is called without read_timeout set? */
+ if (read_timeout)
+ read_timeout->alrmflag = 1;
}
static void
-reset_alarm ()
+reset_timeout ()
{
/* Cancel alarm before restoring signal handler. */
- falarm (0, 0);
- set_signal_handler (SIGALRM, old_alrm);
+ if (read_timeout)
+ shtimer_clear (read_timeout);
+ read_timeout = 0;
+}
+
+void
+check_read_timeout ()
+{
+ if (read_timeout && shtimer_chktimeout (read_timeout))
+ sh_longjmp (read_timeout->jmpenv, 1);
+}
+
+int
+read_builtin_timeout (fd)
+ int fd;
+{
+ if ((read_timeout == 0) ||
+ (read_timeout->fd != fd) ||
+ (read_timeout->tmout.tv_sec == 0 && read_timeout->tmout.tv_usec == 0))
+ return 0;
+
+ return ((read_timeout->flags & SHTIMER_ALARM) ? shtimer_alrm (read_timeout)
+ : shtimer_select (read_timeout));
}
/* Read the value of the shell variables whose names follow.
@@ -191,10 +216,12 @@ read_builtin (list)
struct stat tsb;
SHELL_VAR *var;
TTYSTRUCT ttattrs, ttset;
+ sigset_t chldset, prevset;
#if defined (ARRAY_VARS)
WORD_LIST *alist;
int vflags;
#endif
+ int bindflags;
#if defined (READLINE)
char *rlbuf, *itext;
int rlind;
@@ -225,7 +252,8 @@ read_builtin (list)
USE_VAR(ps2);
USE_VAR(lastsig);
- sigalrm_seen = reading = tty_modified = 0;
+ reading = tty_modified = 0;
+ read_timeout = 0;
i = 0; /* Index into the string that we are reading. */
raw = edit = 0; /* Not reading raw input by default. */
@@ -330,18 +358,16 @@ read_builtin (list)
/* `read -t 0 var' tests whether input is available with select/FIONREAD,
and fails if those are unavailable */
if (have_timeout && tmsec == 0 && tmusec == 0)
-#if 0
- return (EXECUTION_FAILURE);
-#else
return (input_avail (fd) ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
-#endif
/* Convenience: check early whether or not the first of possibly several
variable names is a valid identifier, and bail early if so. */
#if defined (ARRAY_VARS)
- vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
+ if (list)
+ SET_VFLAGS (list->word->flags, vflags, bindflags);
if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0)
#else
+ bindflags = 0;
if (list && legal_identifier (list->word->word) == 0)
#endif
{
@@ -387,6 +413,12 @@ read_builtin (list)
}
}
+#if defined (SIGCHLD)
+ sigemptyset (&chldset);
+ sigprocmask (SIG_BLOCK, (sigset_t *)0, &chldset);
+ sigaddset (&chldset, SIGCHLD);
+#endif
+
begin_unwind_frame ("read_builtin");
#if defined (BUFFERED_INPUT)
@@ -435,10 +467,27 @@ read_builtin (list)
if (tmsec > 0 || tmusec > 0)
{
- code = setjmp_nosigs (alrmbuf);
+ read_timeout = shtimer_alloc ();
+ read_timeout->flags = SHTIMER_LONGJMP;
+
+#if defined (HAVE_SELECT)
+ read_timeout->flags |= (edit || posixly_correct) ? SHTIMER_ALARM : SHTIMER_SELECT;
+#else
+ read_timeout->flags |= SHTIMER_ALARM;
+#endif
+ read_timeout->fd = fd;
+
+ read_timeout->alrm_handler = sigalrm;
+ }
+
+ if (tmsec > 0 || tmusec > 0)
+ {
+ code = setjmp_nosigs (read_timeout->jmpenv);
if (code)
{
- sigalrm_seen = 0;
+ reset_timeout ();
+ sigprocmask (SIG_SETMASK, &prevset, (sigset_t *)0);
+
/* Tricky. The top of the unwind-protect stack is the free of
input_string. We want to run all the rest and use input_string,
so we have to save input_string temporarily, run the unwind-
@@ -460,16 +509,17 @@ read_builtin (list)
}
if (interactive_shell == 0)
initialize_terminating_signals ();
- old_alrm = set_signal_handler (SIGALRM, sigalrm);
- add_unwind_protect (reset_alarm, (char *)NULL);
+ add_unwind_protect (reset_timeout, (char *)NULL);
#if defined (READLINE)
if (edit)
{
add_unwind_protect (reset_attempted_completion_function, (char *)NULL);
add_unwind_protect (bashline_reset_event_hook, (char *)NULL);
+ set_readline_timeout (read_timeout, tmsec, tmusec);
}
+ else
#endif
- falarm (tmsec, tmusec);
+ shtimer_set (read_timeout, tmsec, tmusec);
}
/* If we've been asked to read only NCHARS chars, or we're using some
@@ -545,12 +595,16 @@ read_builtin (list)
of the unwind-protect stack after the realloc() works right. */
add_unwind_protect (xfree, input_string);
- CHECK_ALRM;
+ check_read_timeout ();
+ /* These only matter if edit == 0 */
if ((nchars > 0) && (input_is_tty == 0) && ignore_delim) /* read -N */
unbuffered_read = 2;
+#if 0
else if ((nchars > 0) || (delim != '\n') || input_is_pipe)
+#else
+ else if (((nchars > 0 || delim != '\n') && input_is_tty) || input_is_pipe)
unbuffered_read = 1;
-
+#endif
if (prompt && edit == 0)
{
fprintf (stderr, "%s", prompt);
@@ -564,7 +618,7 @@ read_builtin (list)
ps2 = 0;
for (print_ps2 = eof = retval = 0;;)
{
- CHECK_ALRM;
+ check_read_timeout ();
#if defined (READLINE)
if (edit)
@@ -575,6 +629,10 @@ read_builtin (list)
free (rlbuf);
rlbuf = (char *)0;
}
+#if defined (SIGCHLD)
+ if (tmsec > 0 || tmusec > 0)
+ sigprocmask (SIG_SETMASK, &chldset, &prevset);
+#endif
if (rlbuf == 0)
{
reading = 1;
@@ -582,6 +640,10 @@ read_builtin (list)
reading = 0;
rlind = 0;
}
+#if defined (SIGCHLD)
+ if (tmsec > 0 || tmusec > 0)
+ sigprocmask (SIG_SETMASK, &prevset, (sigset_t *)0);
+#endif
if (rlbuf == 0)
{
eof = 1;
@@ -603,14 +665,24 @@ read_builtin (list)
}
reading = 1;
- CHECK_ALRM;
+ check_read_timeout ();
errno = 0;
+
+#if defined (SIGCHLD)
+ if (tmsec > 0 || tmusec > 0)
+ sigprocmask (SIG_SETMASK, &chldset, &prevset);
+#endif
if (unbuffered_read == 2)
retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr);
else if (unbuffered_read)
retval = posixly_correct ? zreadintr (fd, &c, 1) : zread (fd, &c, 1);
else
retval = posixly_correct ? zreadcintr (fd, &c) : zreadc (fd, &c);
+#if defined (SIGCHLD)
+ if (tmsec > 0 || tmusec > 0)
+ sigprocmask (SIG_SETMASK, &prevset, (sigset_t *)0);
+#endif
+
reading = 0;
if (retval <= 0)
@@ -644,7 +716,7 @@ read_builtin (list)
#endif
if (retval <= 0) /* XXX shouldn't happen */
- CHECK_ALRM;
+ check_read_timeout ();
/* XXX -- use i + mb_cur_max (at least 4) for multibyte/read_mbchar */
if (i + (mb_cur_max > 4 ? mb_cur_max : 4) >= size)
@@ -704,7 +776,7 @@ read_builtin (list)
add_char:
input_string[i++] = c;
- CHECK_ALRM;
+ check_read_timeout ();
#if defined (HANDLE_MULTIBYTE)
/* XXX - what if C == 127? Can DEL introduce a multibyte sequence? */
@@ -741,7 +813,7 @@ add_char:
break;
}
input_string[i] = '\0';
- CHECK_ALRM;
+ check_read_timeout ();
#if defined (READLINE)
if (edit)
@@ -758,7 +830,7 @@ add_char:
}
if (tmsec > 0 || tmusec > 0)
- reset_alarm ();
+ reset_timeout ();
if (nchars > 0 || delim != '\n')
{
@@ -797,28 +869,14 @@ assign_vars:
an assign them to `arrayname' in turn. */
if (arrayname)
{
- if (legal_identifier (arrayname) == 0)
- {
- sh_invalidid (arrayname);
- free (input_string);
- return (EXECUTION_FAILURE);
- }
-
- var = find_or_make_array_variable (arrayname, 1);
+ /* pass 1 for flags arg to clear the existing array + 2 to check for a
+ valid identifier. */
+ var = builtin_find_indexed_array (arrayname, 3);
if (var == 0)
{
free (input_string);
return EXECUTION_FAILURE; /* readonly or noassign */
}
- if (assoc_p (var))
- {
- builtin_error (_("%s: cannot convert associative to indexed array"), arrayname);
- free (input_string);
- return EXECUTION_FAILURE; /* existing associative array */
- }
- else if (invisible_p (var))
- VUNSETATTR (var, att_invisible);
- array_flush (array_cell (var));
alist = list_string (input_string, ifs_chars, 0);
if (alist)
@@ -883,6 +941,7 @@ assign_vars:
{
varname = list->word->word;
#if defined (ARRAY_VARS)
+ SET_VFLAGS (list->word->flags, vflags, bindflags);
if (legal_identifier (varname) == 0 && valid_array_reference (varname, vflags) == 0)
#else
if (legal_identifier (varname) == 0)
@@ -906,16 +965,16 @@ assign_vars:
if (t && saw_escape)
{
t1 = dequote_string (t);
- var = bind_read_variable (varname, t1);
+ var = bind_read_variable (varname, t1, bindflags);
free (t1);
}
else
- var = bind_read_variable (varname, t ? t : "");
+ var = bind_read_variable (varname, t ? t : "", bindflags);
}
else
{
t = (char *)0;
- var = bind_read_variable (varname, "");
+ var = bind_read_variable (varname, "", bindflags);
}
FREE (t);
@@ -931,6 +990,7 @@ assign_vars:
/* Now assign the rest of the line to the last variable argument. */
#if defined (ARRAY_VARS)
+ SET_VFLAGS (list->word->flags, vflags, bindflags);
if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0)
#else
if (legal_identifier (list->word->word) == 0)
@@ -967,11 +1027,11 @@ assign_vars:
if (saw_escape && input_string && *input_string)
{
t = dequote_string (input_string);
- var = bind_read_variable (list->word->word, t);
+ var = bind_read_variable (list->word->word, t, bindflags);
free (t);
}
else
- var = bind_read_variable (list->word->word, input_string ? input_string : "");
+ var = bind_read_variable (list->word->word, input_string ? input_string : "", bindflags);
if (var)
{
@@ -988,12 +1048,13 @@ assign_vars:
}
static SHELL_VAR *
-bind_read_variable (name, value)
+bind_read_variable (name, value, flags)
char *name, *value;
+ int flags;
{
SHELL_VAR *v;
- v = builtin_bind_variable (name, value, 0);
+ v = builtin_bind_variable (name, value, flags);
return (v == 0 ? v
: ((readonly_p (v) || noassign_p (v)) ? (SHELL_VAR *)NULL : v));
}
@@ -1131,7 +1192,15 @@ edit_line (p, itext)
bashline_reset_event_hook ();
if (ret == 0)
- return ret;
+ {
+ if (RL_ISSTATE (RL_STATE_TIMEOUT))
+ {
+ sigalrm (SIGALRM); /* simulate receiving SIGALRM */
+ check_read_timeout ();
+ }
+ return ret;
+ }
+
len = strlen (ret);
ret = (char *)xrealloc (ret, len + 2);
ret[len++] = delim;
@@ -1139,6 +1208,17 @@ edit_line (p, itext)
return ret;
}
+static void
+set_readline_timeout (t, sec, usec)
+ sh_timer *t;
+ time_t sec;
+ long usec;
+{
+ t->tmout.tv_sec = sec;
+ t->tmout.tv_usec = usec;
+ rl_set_timeout (sec, usec);
+}
+
static int old_delim_ctype;
static rl_command_func_t *old_delim_func;
static int old_newline_ctype;
diff --git a/builtins/reserved.def b/builtins/reserved.def
index 33184b02..420042dc 100644
--- a/builtins/reserved.def
+++ b/builtins/reserved.def
@@ -114,22 +114,22 @@ Returns the status of the last command executed.
$END
$BUILTIN while
-$SHORT_DOC while COMMANDS; do COMMANDS; done
+$SHORT_DOC while COMMANDS; do COMMANDS-2; done
Execute commands as long as a test succeeds.
-Expand and execute COMMANDS as long as the final command in the
-`while' COMMANDS has an exit status of zero.
+Expand and execute COMMANDS-2 as long as the final command in COMMANDS has
+an exit status of zero.
Exit Status:
Returns the status of the last command executed.
$END
$BUILTIN until
-$SHORT_DOC until COMMANDS; do COMMANDS; done
+$SHORT_DOC until COMMANDS; do COMMANDS-2; done
Execute commands as long as a test does not succeed.
-Expand and execute COMMANDS as long as the final command in the
-`until' COMMANDS has an exit status which is not zero.
+Expand and execute COMMANDS-2 as long as the final command in COMMANDS has
+an exit status which is not zero.
Exit Status:
Returns the status of the last command executed.
diff --git a/builtins/set.def b/builtins/set.def
index 8ee01657..44f17691 100644
--- a/builtins/set.def
+++ b/builtins/set.def
@@ -1,7 +1,7 @@
This file is set.def, from which is created set.c.
It implements the "set" and "unset" builtins in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -52,7 +52,7 @@ $PRODUCES set.c
$BUILTIN set
$FUNCTION set_builtin
-$SHORT_DOC set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
+$SHORT_DOC set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]
Set or unset values of shell options and positional parameters.
Change the value of shell attributes and positional parameters, or
@@ -835,7 +835,7 @@ unset_builtin (list)
WORD_LIST *list;
{
int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
- int global_unset_func, global_unset_var, vflags, valid_id;
+ int global_unset_func, global_unset_var, vflags, base_vflags, valid_id;
char *name, *tname;
unset_function = unset_variable = unset_array = nameref = any_failed = 0;
@@ -873,7 +873,7 @@ unset_builtin (list)
nameref = 0;
#if defined (ARRAY_VARS)
- vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
+ base_vflags = assoc_expand_once ? VA_NOEXPAND : 0;
#endif
while (list)
@@ -890,14 +890,14 @@ unset_builtin (list)
unset_variable = global_unset_var;
#if defined (ARRAY_VARS)
+ vflags = builtin_arrayref_flags (list->word, base_vflags);
+#endif
+
+#if defined (ARRAY_VARS)
unset_array = 0;
/* XXX valid array reference second arg was 0 */
- if (!unset_function && nameref == 0 && valid_array_reference (name, vflags))
- {
- t = strchr (name, '[');
- *t++ = '\0';
- unset_array++;
- }
+ if (!unset_function && nameref == 0 && tokenize_array_reference (name, vflags, &t))
+ unset_array = 1;
#endif
/* Get error checking out of the way first. The low-level functions
just perform the unset, relying on the caller to verify. */
@@ -959,6 +959,9 @@ unset_builtin (list)
#if defined (ARRAY_VARS)
if (var && unset_array)
{
+ if (shell_compatibility_level <= 51)
+ vflags |= VA_ALLOWALL;
+
/* Let unbind_array_element decide what to do with non-array vars */
tem = unbind_array_element (var, t, vflags); /* XXX new third arg */
if (tem == -2 && array_p (var) == 0 && assoc_p (var) == 0)
@@ -981,9 +984,16 @@ unset_builtin (list)
#if defined (ARRAY_VARS)
if (valid_array_reference (nameref_cell (var), 0))
{
+ int len;
+
tname = savestring (nameref_cell (var));
- if (var = array_variable_part (tname, 0, &t, (int *)0))
- tem = unbind_array_element (var, t, vflags); /* XXX new third arg */
+ if (var = array_variable_part (tname, 0, &t, &len))
+ {
+ /* change to what unbind_array_element now expects */
+ if (t[len - 1] == ']')
+ t[len - 1] = 0;
+ tem = unbind_array_element (var, t, vflags); /* XXX new third arg */
+ }
free (tname);
}
else
diff --git a/builtins/setattr.def b/builtins/setattr.def
index a193462d..50c8edf6 100644
--- a/builtins/setattr.def
+++ b/builtins/setattr.def
@@ -1,7 +1,7 @@
This file is setattr.def, from which is created setattr.c.
It implements the builtins "export" and "readonly", in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -363,7 +363,11 @@ show_all_var_attributes (v, nodefs)
for (i = any_failed = 0; var = variable_list[i]; i++)
{
- show_var_attributes (var, READONLY_OR_EXPORT, nodefs);
+ /* There is no equivalent `declare -'. */
+ if (variable_context && var->context == variable_context && STREQ (var->name, "-"))
+ printf ("local -\n");
+ else
+ show_var_attributes (var, READONLY_OR_EXPORT, nodefs);
if (any_failed = sh_chkwrite (any_failed))
break;
}
@@ -372,7 +376,7 @@ show_all_var_attributes (v, nodefs)
}
/* Show all local variable variables with their attributes. This shows unset
- local variables (all_local_variables called with 0 argment). */
+ local variables (all_local_variables called with 0 argument). */
int
show_local_var_attributes (v, nodefs)
int v, nodefs;
@@ -387,7 +391,11 @@ show_local_var_attributes (v, nodefs)
for (i = any_failed = 0; var = variable_list[i]; i++)
{
- show_var_attributes (var, READONLY_OR_EXPORT, nodefs);
+ /* There is no equivalent `declare -'. */
+ if (STREQ (var->name, "-"))
+ printf ("local -\n");
+ else
+ show_var_attributes (var, READONLY_OR_EXPORT, nodefs);
if (any_failed = sh_chkwrite (any_failed))
break;
}
@@ -514,7 +522,10 @@ show_var_attributes (var, pattr, nodefs)
printf ("%s\n", var->name);
else
{
- x = sh_double_quote (value_cell (var));
+ if (ansic_shouldquote (value_cell (var)))
+ x = ansic_quote (value_cell (var), 0, (int *)0);
+ else
+ x = sh_double_quote (value_cell (var));
printf ("%s=%s\n", var->name, x);
free (x);
}
diff --git a/builtins/shopt.def b/builtins/shopt.def
index 6dca2242..33d61d4c 100644
--- a/builtins/shopt.def
+++ b/builtins/shopt.def
@@ -1,7 +1,7 @@
This file is shopt.def, from which is created shopt.c.
It implements the Bash `shopt' builtin.
-Copyright (C) 1994-2020 Free Software Foundation, Inc.
+Copyright (C) 1994-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -89,10 +89,14 @@ extern int check_jobs_at_exit;
extern int autocd;
extern int glob_star;
extern int glob_asciirange;
+extern int glob_always_skip_dot_and_dotdot;
extern int lastpipe_opt;
extern int inherit_errexit;
extern int localvar_inherit;
extern int localvar_unset;
+extern int varassign_redir_autoclose;
+extern int singlequote_translations;
+extern int patsub_replacement;
#if defined (EXTENDED_GLOB)
extern int extended_glob;
@@ -120,6 +124,7 @@ extern int debugging_mode;
#if defined (ARRAY_VARS)
extern int assoc_expand_once;
extern int array_expand_once;
+int expand_once_flag;
#endif
#if defined (SYSLOG_HISTORY)
@@ -140,6 +145,10 @@ static int shopt_enable_hostname_completion PARAMS((char *, int));
static int shopt_set_complete_direxpand PARAMS((char *, int));
#endif
+#if defined (ARRAY_VARS)
+static int set_assoc_expand PARAMS((char *, int));
+#endif
+
static int shopt_set_debug_mode PARAMS((char *, int));
static int shopt_login_shell;
@@ -163,7 +172,7 @@ static struct {
} shopt_vars[] = {
{ "autocd", &autocd, (shopt_set_func_t *)NULL },
#if defined (ARRAY_VARS)
- { "assoc_expand_once", &assoc_expand_once, (shopt_set_func_t *)NULL },
+ { "assoc_expand_once", &expand_once_flag, set_assoc_expand },
#endif
{ "cdable_vars", &cdable_vars, (shopt_set_func_t *)NULL },
{ "cdspell", &cdspelling, (shopt_set_func_t *)NULL },
@@ -202,6 +211,7 @@ static struct {
{ "force_fignore", &force_fignore, (shopt_set_func_t *)NULL },
#endif
{ "globasciiranges", &glob_asciirange, (shopt_set_func_t *)NULL },
+ { "globskipdots", &glob_always_skip_dot_and_dotdot, (shopt_set_func_t *)NULL },
{ "globstar", &glob_star, (shopt_set_func_t *)NULL },
{ "gnu_errfmt", &gnu_error_format, (shopt_set_func_t *)NULL },
#if defined (HISTORY)
@@ -228,7 +238,9 @@ static struct {
#endif
{ "nocaseglob", &glob_ignore_case, (shopt_set_func_t *)NULL },
{ "nocasematch", &match_ignore_case, (shopt_set_func_t *)NULL },
+ { "noexpand_translation", &singlequote_translations, (shopt_set_func_t *)NULL },
{ "nullglob", &allow_null_glob_expansion, (shopt_set_func_t *)NULL },
+ { "patsub_replacement", &patsub_replacement, (shopt_set_func_t *)NULL },
#if defined (PROGRAMMABLE_COMPLETION)
{ "progcomp", &prog_completion_enabled, (shopt_set_func_t *)NULL },
# if defined (ALIAS)
@@ -244,6 +256,7 @@ static struct {
#if defined (SYSLOG_HISTORY) && defined (SYSLOG_SHOPT)
{ "syslog_history", &syslog_history, (shopt_set_func_t *)NULL },
#endif
+ { "varredir_close", &varassign_redir_autoclose, (shopt_set_func_t *)NULL },
{ "xpg_echo", &xpg_echo, (shopt_set_func_t *)NULL },
{ (char *)0, (int *)0, (shopt_set_func_t *)NULL }
};
@@ -352,6 +365,9 @@ reset_shopt_options ()
glob_ignore_case = match_ignore_case = 0;
print_shift_error = 0;
source_uses_path = promptvars = 1;
+ varassign_redir_autoclose = 0;
+ singlequote_translations = 0;
+ patsub_replacement = 1;
#if defined (JOB_CONTROL)
check_jobs_at_exit = 0;
@@ -362,7 +378,7 @@ reset_shopt_options ()
#endif
#if defined (ARRAY_VARS)
- assoc_expand_once = 0;
+ expand_once_flag = assoc_expand_once = 0;
#endif
#if defined (HISTORY)
@@ -630,9 +646,14 @@ set_compatibility_level (option_name, mode)
char *option_name;
int mode;
{
- int ind;
+ int ind, oldval;
char *rhs;
+ /* If we're unsetting one of the compatibility options, make sure the
+ current value is in the range of the compatNN space. */
+ if (mode == 0)
+ oldval = shell_compatibility_level;
+
/* If we're setting something, redo some of the work we did above in
toggle_shopt(). Unset everything and reset the appropriate option
based on OPTION_NAME. */
@@ -660,6 +681,8 @@ set_compatibility_level (option_name, mode)
shell_compatibility_level = 43;
else if (shopt_compat44)
shell_compatibility_level = 44;
+ else if (oldval > 44 && shell_compatibility_level < DEFAULT_COMPAT_LEVEL)
+ ;
else
shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
@@ -682,6 +705,8 @@ set_compatibility_opts ()
switch (shell_compatibility_level)
{
case DEFAULT_COMPAT_LEVEL:
+ case 51: /* completeness */
+ case 50:
break;
case 44:
shopt_compat44 = 1; break;
@@ -897,3 +922,17 @@ initialize_bashopts (no_bashopts)
/* Set up the $BASHOPTS variable. */
set_bashopts ();
}
+
+#if defined (ARRAY_VARS)
+static int
+set_assoc_expand (option_name, mode)
+ char *option_name;
+ int mode;
+{
+#if 0 /* leave this disabled */
+ if (shell_compatibility_level <= 51)
+#endif
+ assoc_expand_once = expand_once_flag;
+ return 0;
+}
+#endif
diff --git a/builtins/suspend.def b/builtins/suspend.def
index e99fd26b..4f3a56c9 100644
--- a/builtins/suspend.def
+++ b/builtins/suspend.def
@@ -1,7 +1,7 @@
This file is suspend.def, from which is created suspend.c.
It implements the builtin "suspend" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -27,10 +27,12 @@ $SHORT_DOC suspend [-f]
Suspend shell execution.
Suspend the execution of this shell until it receives a SIGCONT signal.
-Unless forced, login shells cannot be suspended.
+Unless forced, login shells and shells without job control cannot be
+suspended.
Options:
- -f force the suspend, even if the shell is a login shell
+ -f force the suspend, even if the shell is a login shell or job
+ control is not enabled.
Exit Status:
Returns success unless job control is not enabled or an error occurs.
@@ -96,16 +98,15 @@ suspend_builtin (list)
}
list = loptend;
-
- if (job_control == 0)
- {
- sh_nojobs (_("cannot suspend"));
- return (EXECUTION_FAILURE);
- }
+ no_args (list);
if (force == 0)
{
- no_args (list);
+ if (job_control == 0)
+ {
+ sh_nojobs (_("cannot suspend"));
+ return (EXECUTION_FAILURE);
+ }
if (login_shell)
{
diff --git a/builtins/trap.def b/builtins/trap.def
index daeec9ea..94229433 100644
--- a/builtins/trap.def
+++ b/builtins/trap.def
@@ -1,7 +1,7 @@
This file is trap.def, from which is created trap.c.
It implements the builtin "trap" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -250,7 +250,9 @@ showtrap (i, show_default)
int i, show_default;
{
char *t, *p, *sn;
+ int free_t;
+ free_t = 1;
p = trap_list[i];
if (p == (char *)DEFAULT_SIG && signal_is_hard_ignored (i) == 0)
{
@@ -258,6 +260,7 @@ showtrap (i, show_default)
t = "-";
else
return;
+ free_t = 0;
}
else if (signal_is_hard_ignored (i))
t = (char *)NULL;
@@ -279,7 +282,7 @@ showtrap (i, show_default)
else
printf ("trap -- %s %s\n", t ? t : "''", sn);
- if (show_default == 0)
+ if (free_t)
FREE (t);
}
diff --git a/builtins/ulimit.def b/builtins/ulimit.def
index a895c5e2..fd9f7a3d 100644
--- a/builtins/ulimit.def
+++ b/builtins/ulimit.def
@@ -1,7 +1,7 @@
This file is ulimit.def, from which is created ulimit.c.
It implements the builtin "ulimit" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -23,7 +23,7 @@ $PRODUCES ulimit.c
$BUILTIN ulimit
$FUNCTION ulimit_builtin
$DEPENDS_ON !_MINIX
-$SHORT_DOC ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
+$SHORT_DOC ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]
Modify shell resource limits.
Provides control over the resources available to the shell and processes
@@ -428,6 +428,15 @@ ulimit_builtin (list)
}
}
+ /* POSIX compatibility. If the last item in cmdlist does not have an option
+ argument, but there is an operand (list != 0), treat the operand as if
+ it were an option argument for that last command. */
+ if (list && list->word && cmdlist[ncmd - 1].arg == 0)
+ {
+ cmdlist[ncmd - 1].arg = list->word->word;
+ list = list->next;
+ }
+
for (c = 0; c < ncmd; c++)
if (ulimit_internal (cmdlist[c].cmd, cmdlist[c].arg, mode, ncmd > 1) == EXECUTION_FAILURE)
return (EXECUTION_FAILURE);
diff --git a/builtins/wait.def b/builtins/wait.def
index e70a4d94..b066d78d 100644
--- a/builtins/wait.def
+++ b/builtins/wait.def
@@ -1,7 +1,7 @@
-This file is wait.def, from which is created wait.c.
+'This file is wait.def, from which is created wait.c.
It implements the builtin "wait" in Bash.
-Copyright (C) 1987-2020 Free Software Foundation, Inc.
+Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -111,7 +111,7 @@ int
wait_builtin (list)
WORD_LIST *list;
{
- int status, code, opt, nflag;
+ int status, code, opt, nflag, vflags, bindflags;
volatile int wflags;
char *vname;
SHELL_VAR *pidvar;
@@ -119,7 +119,7 @@ wait_builtin (list)
USE_VAR(list);
- nflag = wflags = 0;
+ nflag = wflags = vflags = 0;
vname = NULL;
pidvar = (SHELL_VAR *)NULL;
reset_internal_getopt ();
@@ -136,6 +136,7 @@ wait_builtin (list)
break;
case 'p':
vname = list_optarg;
+ vflags = list_optflags;
break;
#endif
CASE_HELPOPT;
@@ -152,9 +153,10 @@ wait_builtin (list)
#if defined (ARRAY_VARS)
int arrayflags;
- arrayflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
+ SET_VFLAGS (vflags, arrayflags, bindflags);
if (legal_identifier (vname) == 0 && valid_array_reference (vname, arrayflags) == 0)
#else
+ bindflags = 0;
if (legal_identifier (vname) == 0)
#endif
{
@@ -181,8 +183,10 @@ wait_builtin (list)
last_command_exit_signal = wait_signal_received;
status = 128 + wait_signal_received;
wait_sigint_cleanup ();
+#if defined (JOB_CONTROL)
if (wflags & JWAIT_WAITING)
unset_waitlist ();
+#endif
WAIT_RETURN (status);
}
@@ -217,7 +221,7 @@ wait_builtin (list)
status = wait_for_any_job (wflags, &pstat);
if (vname && status >= 0)
- bind_var_to_int (vname, pstat.pid);
+ builtin_bind_var_to_int (vname, pstat.pid, bindflags);
if (status < 0)
status = 127;
@@ -231,9 +235,13 @@ wait_builtin (list)
currently active background processes. */
if (list == 0)
{
- wait_for_background_pids (&pstat);
- if (vname)
- bind_var_to_int (vname, pstat.pid);
+ opt = wait_for_background_pids (&pstat);
+#if 0
+ /* Compatibility with NetBSD sh: don't set VNAME since it doesn't
+ correspond to the return status. */
+ if (vname && opt)
+ builtin_bind_var_to_int (vname, pstat.pid, bindflags);
+#endif
WAIT_RETURN (EXECUTION_SUCCESS);
}
@@ -251,8 +259,11 @@ wait_builtin (list)
{
pid = (pid_t)pid_value;
status = wait_for_single_pid (pid, wflags|JWAIT_PERROR);
- pstat.pid = pid;
- pstat.status = status;
+ /* status > 256 means pid error */
+ pstat.pid = (status > 256) ? NO_PID : pid;
+ pstat.status = (status > 256) ? 127 : status;
+ if (status > 256)
+ status = 127;
}
else
{
@@ -309,6 +320,9 @@ wait_builtin (list)
list = list->next;
}
+ if (vname && pstat.pid != NO_PID)
+ builtin_bind_var_to_int (vname, pstat.pid, bindflags);
+
WAIT_RETURN (status);
}
diff --git a/command.h b/command.h
index b8477528..e0dc2f95 100644
--- a/command.h
+++ b/command.h
@@ -1,7 +1,7 @@
/* command.h -- The structures used internally to represent commands, and
the extern declarations of the functions used to create them. */
-/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -81,18 +81,18 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,
#define W_NOGLOB (1 << 5) /* Do not perform globbing on this word. */
#define W_NOSPLIT2 (1 << 6) /* Don't split word except for $@ expansion (using spaces) because context does not allow it. */
#define W_TILDEEXP (1 << 7) /* Tilde expand this assignment word */
-#define W_DOLLARAT (1 << 8) /* $@ and its special handling -- UNUSED */
-#define W_DOLLARSTAR (1 << 9) /* $* and its special handling -- UNUSED */
+#define W_DOLLARAT (1 << 8) /* UNUSED - $@ and its special handling */
+#define W_ARRAYREF (1 << 9) /* word is a valid array reference */
#define W_NOCOMSUB (1 << 10) /* Don't perform command substitution on this word */
#define W_ASSIGNRHS (1 << 11) /* Word is rhs of an assignment statement */
#define W_NOTILDE (1 << 12) /* Don't perform tilde expansion on this word */
-#define W_ITILDE (1 << 13) /* Internal flag for word expansion */
+#define W_NOASSNTILDE (1 << 13) /* don't do tilde expansion like an assignment statement */
#define W_EXPANDRHS (1 << 14) /* Expanding word in ${paramOPword} */
#define W_COMPASSIGN (1 << 15) /* Compound assignment */
#define W_ASSNBLTIN (1 << 16) /* word is a builtin command that takes assignments */
#define W_ASSIGNARG (1 << 17) /* word is assignment argument to command */
#define W_HASQUOTEDNULL (1 << 18) /* word contains a quoted null character */
-#define W_DQUOTE (1 << 19) /* word should be treated as if double-quoted */
+#define W_DQUOTE (1 << 19) /* UNUSED - word should be treated as if double-quoted */
#define W_NOPROCSUB (1 << 20) /* don't perform process substitution */
#define W_SAWQUOTEDNULL (1 << 21) /* word contained a quoted null that was removed */
#define W_ASSIGNASSOC (1 << 22) /* word looks like associative array assignment */
@@ -102,8 +102,8 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,
#define W_NOBRACE (1 << 26) /* Don't perform brace expansion */
#define W_COMPLETE (1 << 27) /* word is being expanded for completion */
#define W_CHKLOCAL (1 << 28) /* check for local vars on assignment */
-#define W_NOASSNTILDE (1 << 29) /* don't do tilde expansion like an assignment statement */
-#define W_FORCELOCAL (1 << 30) /* force assignments to be to local variables, non-fatal on assignment errors */
+#define W_FORCELOCAL (1 << 29) /* force assignments to be to local variables, non-fatal on assignment errors */
+/* UNUSED (1 << 30) */
/* Flags for the `pflags' argument to param_expand() and various
parameter_brace_expand_xxx functions; also used for string_list_dollar_at */
diff --git a/config-bot.h b/config-bot.h
index b075c778..a687e402 100644
--- a/config-bot.h
+++ b/config-bot.h
@@ -1,7 +1,7 @@
/* config-bot.h */
/* modify settings or make new ones based on what autoconf tells us. */
-/* Copyright (C) 1989-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -99,7 +99,7 @@
#endif
#if !HAVE_MKDTEMP
-# undef USE_MKDTMP
+# undef USE_MKDTEMP
#endif
/* If the shell is called by this name, it will become restricted. */
diff --git a/config-top.h b/config-top.h
index 735f75e3..db4ab6ee 100644
--- a/config-top.h
+++ b/config-top.h
@@ -1,6 +1,6 @@
/* config-top.h - various user-settable options not under the control of autoconf. */
-/* Copyright (C) 2002-2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -77,6 +77,12 @@
"/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc"
#endif
+/* The default path for enable -f */
+#ifndef DEFAULT_LOADABLE_BUILTINS_PATH
+#define DEFAULT_LOADABLE_BUILTINS_PATH \
+ "/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:."
+#endif
+
/* Default primary and secondary prompt strings. */
#define PPROMPT "\\s-\\v\\$ "
#define SPROMPT "> "
@@ -108,7 +114,7 @@
/* Define if you want the case-toggling operators (~[~]) and the
`capcase' variable attribute (declare -c). */
-/* TAG: bash-5.2 disable */
+/* TAG: bash-5.2 disable? */
#define CASEMOD_TOGGLECASE
#define CASEMOD_CAPCASE
diff --git a/config.h.in b/config.h.in
index ab316d46..d6d52930 100644
--- a/config.h.in
+++ b/config.h.in
@@ -23,15 +23,6 @@
/* Template settings for autoconf */
-#undef __EXTENSIONS__
-#undef _ALL_SOURCE
-#undef _GNU_SOURCE
-#undef _POSIX_SOURCE
-#undef _POSIX_1_SOURCE
-#undef _POSIX_PTHREAD_SEMANTICS
-#undef _TANDEM_SOURCE
-#undef _MINIX
-
/* Configuration feature settings controllable by autoconf. */
/* Define JOB_CONTROL if your operating system supports
@@ -219,10 +210,10 @@
#undef __CHAR_UNSIGNED__
-/* Define if the compiler supports `long long' variables. */
-#undef HAVE_LONG_LONG
+/* Define if the compiler supports `long long int' variables. */
+#undef HAVE_LONG_LONG_INT
-#undef HAVE_UNSIGNED_LONG_LONG
+#undef HAVE_UNSIGNED_LONG_LONG_INT
/* The number of bytes in a int. */
#undef SIZEOF_INT
@@ -233,6 +224,9 @@
/* The number of bytes in a pointer to char. */
#undef SIZEOF_CHAR_P
+/* The number of bytes in a size_t. */
+#undef SIZEOF_SIZE_T
+
/* The number of bytes in a double (hopefully 8). */
#undef SIZEOF_DOUBLE
@@ -252,6 +246,8 @@
/* Characteristics of the system's header files and libraries that affect
the compilation environment. */
+/* These are set by AC_USE_SYSTEM_EXTENSIONS */
+
/* Define if the system does not provide POSIX.1 features except
with this defined. */
#undef _POSIX_1_SOURCE
@@ -259,11 +255,18 @@
/* Define if you need to in order for stat and other things to work. */
#undef _POSIX_SOURCE
-/* Define to use GNU libc extensions */
+/* Define to use GNU libc extensions. */
#undef _GNU_SOURCE
-/* Define if you have the ANSI C header files. */
-#undef STDC_HEADERS
+/* Define to enable general system extensions on Solaris. */
+#undef __EXTENSIONS__
+
+/* General system extensions on AIX */
+#undef _ALL_SOURCE
+
+#undef _POSIX_PTHREAD_SEMANTICS
+#undef _TANDEM_SOURCE
+#undef _MINIX
/* Memory management functions. */
@@ -513,11 +516,6 @@
#undef PGRP_PIPE
-/* Define if the setvbuf function takes the buffering type as its second
- argument and the buffer pointer as the third, as on System V
- before release 3. */
-#undef SETVBUF_REVERSED
-
#undef STAT_MACROS_BROKEN
#undef ULIMIT_MAXFDS
@@ -530,8 +528,6 @@
#undef HAVE_PRINTF_A_FORMAT
-#undef CTYPE_NON_ASCII
-
/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
#undef HAVE_LANGINFO_CODESET
@@ -554,12 +550,6 @@
/* Type and behavior of signal handling functions. */
-/* Define as the return type of signal handlers (int or void). */
-#undef RETSIGTYPE
-
-/* Define if return type of signal handlers is void */
-#undef VOID_SIGHANDLER
-
#undef MUST_REINSTALL_SIGHANDLERS
#undef HAVE_BSD_SIGNALS
@@ -1092,8 +1082,6 @@
/* Define if you have <sys/time.h> */
#undef HAVE_SYS_TIME_H
-#undef TIME_WITH_SYS_TIME
-
/* Define if you have <sys/times.h> */
#undef HAVE_SYS_TIMES_H
@@ -1169,6 +1157,13 @@
#undef DEV_FD_STAT_BROKEN
+/* An array implementation that prioritizes speed (O(1) access) over space,
+ in array2.c */
+#undef ALT_ARRAY_IMPLEMENTATION
+
+/* Support for $"..." translatable strings. */
+#undef TRANSLATABLE_STRINGS
+
/* Additional defines for configuring lib/intl, maintained by autoscan/autoheader */
/* Define if you have the <argz.h> header file. */
diff --git a/configure b/configure
index 0f1d3ed1..47313753 100755
--- a/configure
+++ b/configure
@@ -1,12 +1,13 @@
#! /bin/sh
-# From configure.ac for Bash 5.1, version 5.022.
+# From configure.ac for Bash 5.2, version 5.046.
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for bash 5.1-release.
+# Generated by GNU Autoconf 2.71 for bash 5.2-release.
#
# Report bugs to <bug-bash@gnu.org>.
#
#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -17,14 +18,16 @@
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
@@ -34,46 +37,46 @@ esac
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -82,13 +85,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
@@ -97,8 +93,12 @@ case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
@@ -110,30 +110,10 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
@@ -155,20 +135,22 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
-else
+else \$as_nop
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
@@ -188,42 +170,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
-else
+else \$as_nop
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
test \$(( 1 + 1 )) = 2 || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
+ if (eval "$as_required") 2>/dev/null
+then :
as_have_required=yes
-else
+else $as_nop
as_have_required=no
fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
-else
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
+ as_shell=$as_dir$as_base
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
break 2
fi
fi
@@ -231,14 +224,21 @@ fi
esac
as_found=false
done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
IFS=$as_save_IFS
+if $as_found
+then :
+else $as_nop
+ if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
- if test "x$CONFIG_SHELL" != x; then :
+
+ if test "x$CONFIG_SHELL" != x
+then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
@@ -256,18 +256,19 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ if test x$as_have_required = xno
+then :
+ printf "%s\n" "$0: This script requires a shell more modern than all"
+ printf "%s\n" "$0: the shells that I found on your system."
+ if test ${ZSH_VERSION+y} ; then
+ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-bash@gnu.org
+ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and bug-bash@gnu.org
$0: about your system, including any error possibly output
$0: before this message. Then install a modern shell, or
$0: manually run the script under such a shell if you do
@@ -295,6 +296,7 @@ as_fn_unset ()
}
as_unset=as_fn_unset
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -312,6 +314,14 @@ as_fn_exit ()
as_fn_set_status $1
exit $1
} # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_mkdir_p
# -------------
@@ -326,7 +336,7 @@ as_fn_mkdir_p ()
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -335,7 +345,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -374,12 +384,13 @@ as_fn_executable_p ()
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
@@ -391,18 +402,27 @@ fi # as_fn_append
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
@@ -414,9 +434,9 @@ as_fn_error ()
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
@@ -443,7 +463,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -487,7 +507,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
@@ -501,6 +521,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
exit
}
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
@@ -514,6 +538,13 @@ case `echo -n x` in #(((((
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -581,52 +612,47 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
-PACKAGE_VERSION='5.1-release'
-PACKAGE_STRING='bash 5.1-release'
+PACKAGE_VERSION='5.2-release'
+PACKAGE_STRING='bash 5.2-release'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
PACKAGE_URL=''
ac_unique_file="shell.h"
# Factoring default headers for most tests.
ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
#endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
#endif
#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
# include <string.h>
#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif"
+ac_header_c_list=
gt_needs=
-ac_header_list=
+ac_func_c_list=
gl_use_threads_default=
-ac_func_list=
ac_subst_vars='LTLIBOBJS
LOCAL_DEFS
LOCAL_LDFLAGS
@@ -734,14 +760,16 @@ READLINE_LIB
RL_MINOR
RL_MAJOR
RL_VERSION
+EGREP
+GREP
+CPP
LIBS_FOR_BUILD
+STYLE_CFLAGS
+BASE_CFLAGS_FOR_BUILD
STATIC_LD
SIGNAMES_O
SIGNAMES_H
CROSS_COMPILE
-EGREP
-GREP
-CPP
OBJEXT
EXEEXT
ac_ct_CC
@@ -754,6 +782,7 @@ HELPFILES_TARGET
HELPINSTALL
HELPDIRDEFINE
HELPDIR
+ARRAY_O
MALLOC_DEP
MALLOC_LDFLAGS
MALLOC_LIBRARY
@@ -793,6 +822,7 @@ infodir
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -822,6 +852,7 @@ with_gnu_malloc
with_installed_readline
enable_minimal_config
enable_alias
+enable_alt_array_implementation
enable_arith_for_command
enable_array_variables
enable_bang_history
@@ -856,6 +887,7 @@ enable_select
enable_separate_helpfiles
enable_single_help_strings
enable_strict_posix_default
+enable_translatable_strings
enable_usg_echo_default
enable_xpg_echo_default
enable_mem_scramble
@@ -925,6 +957,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -954,8 +987,6 @@ do
*) ac_optarg=yes ;;
esac
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
@@ -996,9 +1027,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -1022,9 +1053,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -1177,6 +1208,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1226,9 +1266,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1242,9 +1282,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1288,9 +1328,9 @@ Try \`$0 --help' for more information"
*)
# FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
@@ -1306,7 +1346,7 @@ if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
@@ -1314,7 +1354,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1370,7 +1410,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -1427,7 +1467,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures bash 5.1-release to adapt to many kinds of systems.
+\`configure' configures bash 5.2-release to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1467,6 +1507,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@@ -1492,7 +1533,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of bash 5.1-release:";;
+ short | recursive ) echo "Configuration of bash 5.2-release:";;
esac
cat <<\_ACEOF
@@ -1502,6 +1543,9 @@ Optional Features:
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-minimal-config a minimal sh-like configuration
--enable-alias enable shell aliases
+ --enable-alt-array-implementation
+ enable an alternate array implementation that
+ optimizes speed at the cost of space
--enable-arith-for-command
enable arithmetic for command
--enable-array-variables
@@ -1563,6 +1607,8 @@ Optional Features:
translation
--enable-strict-posix-default
configure bash to be posix-conformant by default
+ --enable-translatable-strings
+ include support for $"..." translatable strings
--enable-usg-echo-default
a synonym for --enable-xpg-echo-default
--enable-xpg-echo-default
@@ -1646,9 +1692,9 @@ if test "$ac_init_help" = "recursive"; then
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1676,7 +1722,8 @@ esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
+ # Check for configure.gnu first; this name is used for a wrapper for
+ # Metaconfig's "Configure" on case-insensitive file systems.
if test -f "$ac_srcdir/configure.gnu"; then
echo &&
$SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -1684,7 +1731,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
@@ -1693,10 +1740,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-bash configure 5.1-release
-generated by GNU Autoconf 2.69
+bash configure 5.2-release
+generated by GNU Autoconf 2.71
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1713,14 +1760,14 @@ fi
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
+ rm -f conftest.$ac_objext conftest.beam
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1728,14 +1775,15 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
+ } && test -s conftest.$ac_objext
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -1745,51 +1793,38 @@ fi
} # ac_fn_c_try_compile
-# ac_fn_c_try_link LINENO
-# -----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_link ()
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- grep -v '^ *+' conftest.err >conftest.er1
- cat conftest.er1 >&5
- mv -f conftest.er1 conftest.err
- fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ eval "$3=yes"
+else $as_nop
+ eval "$3=no"
fi
- # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
- # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
- # interfere with the next link command; also delete a directory that is
- # left behind by Apple's compiler. We do this before executing the actions.
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-} # ac_fn_c_try_link
+} # ac_fn_c_check_header_compile
# ac_fn_c_try_cpp LINENO
# ----------------------
@@ -1803,7 +1838,7 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1811,14 +1846,15 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } > conftest.i && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -1828,169 +1864,52 @@ fi
} # ac_fn_c_try_cpp
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ------------------------------- ##
-## Report this to bug-bash@gnu.org ##
-## ------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
- ac_retval=$ac_status
+ ac_retval=1
fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
-} # ac_fn_c_try_run
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- eval "$3=yes"
-else
- eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
+} # ac_fn_c_try_link
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
@@ -1998,11 +1917,12 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
@@ -2010,16 +1930,9 @@ else
#define $2 innocuous_$2
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+ which can conflict with char $2 (); below. */
+#include <limits.h>
#undef $2
/* Override any GCC internal prototype to avoid an error.
@@ -2037,28 +1950,72 @@ choke me
#endif
int
-main ()
+main (void)
{
return $2 ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
+# executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
# -------------------------------------------
# Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -2066,17 +2023,18 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_check_type ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof ($2))
return 0;
@@ -2084,12 +2042,13 @@ if (sizeof ($2))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof (($2)))
return 0;
@@ -2097,41 +2056,45 @@ if (sizeof (($2)))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
eval "$3=yes"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ eval ac_save_FLAGS=\$$6
+ as_fn_append $6 " $5"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
#ifndef $as_decl_name
#ifdef __cplusplus
@@ -2145,19 +2108,22 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ eval $6=\$ac_save_FLAGS
+
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-} # ac_fn_c_check_decl
+} # ac_fn_check_decl
# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
# --------------------------------------------
@@ -2173,7 +2139,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= 0)];
test_array [0] = 0;
@@ -2183,14 +2149,15 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=0 ac_mid=0
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
@@ -2200,9 +2167,10 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid; break
-else
+else $as_nop
as_fn_arith $ac_mid + 1 && ac_lo=$as_val
if test $ac_lo -le $ac_mid; then
ac_lo= ac_hi=
@@ -2210,14 +2178,14 @@ else
fi
as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) < 0)];
test_array [0] = 0;
@@ -2227,14 +2195,15 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=-1 ac_mid=-1
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
test_array [0] = 0;
@@ -2244,9 +2213,10 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=$ac_mid; break
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
if test $ac_mid -le $ac_hi; then
ac_lo= ac_hi=
@@ -2254,14 +2224,14 @@ else
fi
as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
ac_lo= ac_hi=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# Binary search between lo and hi bounds.
while test "x$ac_lo" != "x$ac_hi"; do
as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
@@ -2269,7 +2239,7 @@ while test "x$ac_lo" != "x$ac_hi"; do
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
@@ -2279,12 +2249,13 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
case $ac_lo in #((
?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
@@ -2294,12 +2265,12 @@ esac
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
#include <stdio.h>
#include <stdlib.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.val", "w");
@@ -2327,9 +2298,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
+else $as_nop
ac_retval=1
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -2349,16 +2321,17 @@ rm -f conftest.val
ac_fn_c_check_member ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+printf %s "checking for $2.$3... " >&6; }
+if eval test \${$4+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (ac_aggr.$3)
@@ -2367,14 +2340,15 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (sizeof ac_aggr.$3)
@@ -2383,29 +2357,50 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
eval "$4=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$4
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_member
+ac_configure_args_raw=
+for ac_arg
+do
+ case $ac_arg in
+ *\'*)
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+ *$as_nl*)
+ ac_safe_unquote= ;;
+ *)
+ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab.
+ ac_unsafe_a="$ac_unsafe_z#~"
+ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by bash $as_me 5.1-release, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+It was created by bash $as_me 5.2-release, which was
+generated by GNU Autoconf 2.71. Invocation command line was
- $ $0 $@
+ $ $0$ac_configure_args_raw
_ACEOF
exec 5>>config.log
@@ -2438,8 +2433,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ printf "%s\n" "PATH: $as_dir"
done
IFS=$as_save_IFS
@@ -2474,7 +2473,7 @@ do
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -2509,11 +2508,13 @@ done
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
+ # Sanitize IFS.
+ IFS=" "" $as_nl"
# Save into config.log some information that might help in debugging.
{
echo
- $as_echo "## ---------------- ##
+ printf "%s\n" "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
@@ -2524,8 +2525,8 @@ trap 'exit_status=$?
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -2549,7 +2550,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
)
echo
- $as_echo "## ----------------- ##
+ printf "%s\n" "## ----------------- ##
## Output variables. ##
## ----------------- ##"
echo
@@ -2557,14 +2558,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
+ printf "%s\n" "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
echo
@@ -2572,15 +2573,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
- $as_echo "## ----------- ##
+ printf "%s\n" "## ----------- ##
## confdefs.h. ##
## ----------- ##"
echo
@@ -2588,8 +2589,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
echo
fi
test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
+ printf "%s\n" "$as_me: caught signal $ac_signal"
+ printf "%s\n" "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -2603,63 +2604,48 @@ ac_signal=0
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
+ ac_site_files="$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ case $ac_site_file in #(
+ */*) :
+ ;; #(
+ *) :
+ ac_site_file=./$ac_site_file ;;
+esac
+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
fi
@@ -2669,32 +2655,449 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+ Do not test the value of __STDC__, because some compilers set it to 0
+ while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not \xHH hex character constants.
+ These do not provoke an error unfortunately, instead are silently treated
+ as an "x". The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously \x00 != x always comes out true, for an
+ array size at least. It is necessary to write \x00 == 0 to get something
+ that is true only with -std. */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+ int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+ #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case '\''s'\'': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case '\''d'\'': // int
+ number = va_arg (args_copy, int);
+ break;
+ case '\''f'\'': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+
+ return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+ // Check bool.
+ _Bool success = false;
+ success |= (argc != 0);
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[0] = argv[0][0];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+ || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+ v1.i = 2;
+ v1.w.k = 5;
+ ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ ${ac_c_conftest_c11_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
gt_needs="$gt_needs need-ngettext"
-as_fn_append ac_header_list " stdlib.h"
-as_fn_append ac_header_list " unistd.h"
-as_fn_append ac_header_list " sys/param.h"
-as_fn_append ac_func_list " symlink"
-as_fn_append ac_func_list " uselocale"
-as_fn_append ac_header_list " xlocale.h"
-as_fn_append ac_header_list " sys/time.h"
-as_fn_append ac_func_list " alarm"
-as_fn_append ac_func_list " fpurge"
-as_fn_append ac_func_list " __fpurge"
-as_fn_append ac_func_list " snprintf"
-as_fn_append ac_func_list " vsnprintf"
+as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H"
+as_fn_append ac_func_c_list " getpagesize HAVE_GETPAGESIZE"
+as_fn_append ac_func_c_list " symlink HAVE_SYMLINK"
+as_fn_append ac_func_c_list " uselocale HAVE_USELOCALE"
+as_fn_append ac_header_c_list " xlocale.h xlocale_h HAVE_XLOCALE_H"
+as_fn_append ac_func_c_list " vprintf HAVE_VPRINTF"
+as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H"
+as_fn_append ac_func_c_list " alarm HAVE_ALARM"
+as_fn_append ac_func_c_list " fpurge HAVE_FPURGE"
+as_fn_append ac_func_c_list " __fpurge HAVE___FPURGE"
+as_fn_append ac_func_c_list " snprintf HAVE_SNPRINTF"
+as_fn_append ac_func_c_list " vsnprintf HAVE_VSNPRINTF"
+
+# Auxiliary files required by this configure script.
+ac_aux_files="config.rpath install-sh config.guess config.sub"
+
+# Locations in which to look for auxiliary files.
+ac_aux_dir_candidates="${srcdir}/./support"
+
+# Search for a directory containing all of the required auxiliary files,
+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
+# If we don't find one directory that contains all the files we need,
+# we report the set of missing files from the *first* directory in
+# $ac_aux_dir_candidates and give up.
+ac_missing_aux_files=""
+ac_first_candidate=:
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in $ac_aux_dir_candidates
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ as_found=:
+
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
+ ac_aux_dir_found=yes
+ ac_install_sh=
+ for ac_aux in $ac_aux_files
+ do
+ # As a special case, if "install-sh" is required, that requirement
+ # can be satisfied by any of "install-sh", "install.sh", or "shtool",
+ # and $ac_install_sh is set appropriately for whichever one is found.
+ if test x"$ac_aux" = x"install-sh"
+ then
+ if test -f "${as_dir}install-sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
+ ac_install_sh="${as_dir}install-sh -c"
+ elif test -f "${as_dir}install.sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
+ ac_install_sh="${as_dir}install.sh -c"
+ elif test -f "${as_dir}shtool"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
+ ac_install_sh="${as_dir}shtool install -c"
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} install-sh"
+ else
+ break
+ fi
+ fi
+ else
+ if test -f "${as_dir}${ac_aux}"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
+ else
+ break
+ fi
+ fi
+ fi
+ done
+ if test "$ac_aux_dir_found" = yes; then
+ ac_aux_dir="$as_dir"
+ break
+ fi
+ ac_first_candidate=false
+
+ as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+fi
+
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+if test -f "${ac_aux_dir}config.guess"; then
+ ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
+fi
+if test -f "${ac_aux_dir}config.sub"; then
+ ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
+fi
+if test -f "$ac_aux_dir/configure"; then
+ ac_configure="$SHELL ${ac_aux_dir}configure"
+fi
+
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
@@ -2705,12 +3108,12 @@ for ac_var in $ac_precious_vars; do
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
@@ -2719,24 +3122,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_old_val_w=`echo x $ac_old_val`
ac_new_val_w=`echo x $ac_new_val`
if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
ac_cache_corrupted=:
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
eval $ac_var=\$ac_old_val
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
@@ -2746,11 +3149,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
fi
done
if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+ and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
@@ -2767,39 +3171,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
-ac_aux_dir=
-for ac_dir in ./support "$srcdir"/./support; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in ./support \"$srcdir\"/./support" "$LINENO" 5
-fi
-
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-
ac_config_headers="$ac_config_headers config.h"
-BASHVERS=5.1
+BASHVERS=5.2
RELSTATUS=release
case "$RELSTATUS" in
@@ -2807,26 +3183,30 @@ alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG'
*) DEBUG= MALLOC_DEBUG= ;;
esac
-# Make sure we can run config.sub.
-$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
- as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
-$as_echo_n "checking build system type... " >&6; }
-if ${ac_cv_build+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+
+ # Make sure we can run config.sub.
+$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
test "x$ac_build_alias" = x &&
as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
@@ -2845,21 +3225,22 @@ IFS=$ac_save_IFS
case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
-$as_echo_n "checking host system type... " >&6; }
-if ${ac_cv_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
@@ -2929,31 +3310,36 @@ esac
# Check whether --with-afs was given.
-if test "${with_afs+set}" = set; then :
+if test ${with_afs+y}
+then :
withval=$with_afs; opt_afs=$withval
fi
# Check whether --with-bash-malloc was given.
-if test "${with_bash_malloc+set}" = set; then :
+if test ${with_bash_malloc+y}
+then :
withval=$with_bash_malloc; opt_bash_malloc=$withval
fi
# Check whether --with-curses was given.
-if test "${with_curses+set}" = set; then :
+if test ${with_curses+y}
+then :
withval=$with_curses; opt_curses=$withval
fi
# Check whether --with-gnu-malloc was given.
-if test "${with_gnu_malloc+set}" = set; then :
+if test ${with_gnu_malloc+y}
+then :
withval=$with_gnu_malloc; opt_bash_malloc=$withval
fi
# Check whether --with-installed-readline was given.
-if test "${with_installed_readline+set}" = set; then :
+if test ${with_installed_readline+y}
+then :
withval=$with_installed_readline; opt_with_installed_readline=$withval
fi
@@ -2967,7 +3353,7 @@ if test "$opt_bash_malloc" = yes; then
MALLOC_LDFLAGS='-L$(ALLOC_LIBDIR)'
MALLOC_DEP='$(MALLOC_LIBRARY)'
- $as_echo "#define USING_BASH_MALLOC 1" >>confdefs.h
+ printf "%s\n" "#define USING_BASH_MALLOC 1" >>confdefs.h
else
MALLOC_LIB=
@@ -2977,7 +3363,7 @@ else
fi
if test "$opt_afs" = yes; then
- $as_echo "#define AFS 1" >>confdefs.h
+ printf "%s\n" "#define AFS 1" >>confdefs.h
fi
@@ -3027,12 +3413,17 @@ opt_dircomplete_expand_default=no
opt_globascii_default=yes
opt_function_import=yes
opt_dev_fd_stat_broken=no
+opt_alt_array_impl=no
+opt_translatable_strings=yes
+
+ARRAY_O=array.o
opt_static_link=no
opt_profiling=no
# Check whether --enable-minimal-config was given.
-if test "${enable_minimal_config+set}" = set; then :
+if test ${enable_minimal_config+y}
+then :
enableval=$enable_minimal_config; opt_minimal_config=$enableval
fi
@@ -3047,207 +3438,260 @@ if test $opt_minimal_config = yes; then
opt_net_redirs=no opt_progcomp=no opt_separate_help=no
opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
+ opt_translatable_strings=no
opt_globascii_default=yes
fi
# Check whether --enable-alias was given.
-if test "${enable_alias+set}" = set; then :
+if test ${enable_alias+y}
+then :
enableval=$enable_alias; opt_alias=$enableval
fi
+# Check whether --enable-alt-array-implementation was given.
+if test ${enable_alt_array_implementation+y}
+then :
+ enableval=$enable_alt_array_implementation; opt_alt_array_impl=$enableval
+fi
+
# Check whether --enable-arith-for-command was given.
-if test "${enable_arith_for_command+set}" = set; then :
+if test ${enable_arith_for_command+y}
+then :
enableval=$enable_arith_for_command; opt_arith_for_command=$enableval
fi
# Check whether --enable-array-variables was given.
-if test "${enable_array_variables+set}" = set; then :
+if test ${enable_array_variables+y}
+then :
enableval=$enable_array_variables; opt_array_variables=$enableval
fi
# Check whether --enable-bang-history was given.
-if test "${enable_bang_history+set}" = set; then :
+if test ${enable_bang_history+y}
+then :
enableval=$enable_bang_history; opt_bang_history=$enableval
fi
# Check whether --enable-brace-expansion was given.
-if test "${enable_brace_expansion+set}" = set; then :
+if test ${enable_brace_expansion+y}
+then :
enableval=$enable_brace_expansion; opt_brace_expansion=$enableval
fi
# Check whether --enable-casemod-attributes was given.
-if test "${enable_casemod_attributes+set}" = set; then :
+if test ${enable_casemod_attributes+y}
+then :
enableval=$enable_casemod_attributes; opt_casemod_attrs=$enableval
fi
# Check whether --enable-casemod-expansions was given.
-if test "${enable_casemod_expansions+set}" = set; then :
+if test ${enable_casemod_expansions+y}
+then :
enableval=$enable_casemod_expansions; opt_casemod_expansions=$enableval
fi
# Check whether --enable-command-timing was given.
-if test "${enable_command_timing+set}" = set; then :
+if test ${enable_command_timing+y}
+then :
enableval=$enable_command_timing; opt_command_timing=$enableval
fi
# Check whether --enable-cond-command was given.
-if test "${enable_cond_command+set}" = set; then :
+if test ${enable_cond_command+y}
+then :
enableval=$enable_cond_command; opt_cond_command=$enableval
fi
# Check whether --enable-cond-regexp was given.
-if test "${enable_cond_regexp+set}" = set; then :
+if test ${enable_cond_regexp+y}
+then :
enableval=$enable_cond_regexp; opt_cond_regexp=$enableval
fi
# Check whether --enable-coprocesses was given.
-if test "${enable_coprocesses+set}" = set; then :
+if test ${enable_coprocesses+y}
+then :
enableval=$enable_coprocesses; opt_coproc=$enableval
fi
# Check whether --enable-debugger was given.
-if test "${enable_debugger+set}" = set; then :
+if test ${enable_debugger+y}
+then :
enableval=$enable_debugger; opt_debugger=$enableval
fi
# Check whether --enable-dev-fd-stat-broken was given.
-if test "${enable_dev_fd_stat_broken+set}" = set; then :
+if test ${enable_dev_fd_stat_broken+y}
+then :
enableval=$enable_dev_fd_stat_broken; opt_dev_fd_stat_broken=$enableval
fi
# Check whether --enable-direxpand-default was given.
-if test "${enable_direxpand_default+set}" = set; then :
+if test ${enable_direxpand_default+y}
+then :
enableval=$enable_direxpand_default; opt_dircomplete_expand_default=$enableval
fi
# Check whether --enable-directory-stack was given.
-if test "${enable_directory_stack+set}" = set; then :
+if test ${enable_directory_stack+y}
+then :
enableval=$enable_directory_stack; opt_dirstack=$enableval
fi
# Check whether --enable-disabled-builtins was given.
-if test "${enable_disabled_builtins+set}" = set; then :
+if test ${enable_disabled_builtins+y}
+then :
enableval=$enable_disabled_builtins; opt_disabled_builtins=$enableval
fi
# Check whether --enable-dparen-arithmetic was given.
-if test "${enable_dparen_arithmetic+set}" = set; then :
+if test ${enable_dparen_arithmetic+y}
+then :
enableval=$enable_dparen_arithmetic; opt_dparen_arith=$enableval
fi
# Check whether --enable-extended-glob was given.
-if test "${enable_extended_glob+set}" = set; then :
+if test ${enable_extended_glob+y}
+then :
enableval=$enable_extended_glob; opt_extended_glob=$enableval
fi
# Check whether --enable-extended-glob-default was given.
-if test "${enable_extended_glob_default+set}" = set; then :
+if test ${enable_extended_glob_default+y}
+then :
enableval=$enable_extended_glob_default; opt_extglob_default=$enableval
fi
# Check whether --enable-function-import was given.
-if test "${enable_function_import+set}" = set; then :
+if test ${enable_function_import+y}
+then :
enableval=$enable_function_import; opt_function_import=$enableval
fi
# Check whether --enable-glob-asciiranges-default was given.
-if test "${enable_glob_asciiranges_default+set}" = set; then :
+if test ${enable_glob_asciiranges_default+y}
+then :
enableval=$enable_glob_asciiranges_default; opt_globascii_default=$enableval
fi
# Check whether --enable-help-builtin was given.
-if test "${enable_help_builtin+set}" = set; then :
+if test ${enable_help_builtin+y}
+then :
enableval=$enable_help_builtin; opt_help=$enableval
fi
# Check whether --enable-history was given.
-if test "${enable_history+set}" = set; then :
+if test ${enable_history+y}
+then :
enableval=$enable_history; opt_history=$enableval
fi
# Check whether --enable-job-control was given.
-if test "${enable_job_control+set}" = set; then :
+if test ${enable_job_control+y}
+then :
enableval=$enable_job_control; opt_job_control=$enableval
fi
# Check whether --enable-multibyte was given.
-if test "${enable_multibyte+set}" = set; then :
+if test ${enable_multibyte+y}
+then :
enableval=$enable_multibyte; opt_multibyte=$enableval
fi
# Check whether --enable-net-redirections was given.
-if test "${enable_net_redirections+set}" = set; then :
+if test ${enable_net_redirections+y}
+then :
enableval=$enable_net_redirections; opt_net_redirs=$enableval
fi
# Check whether --enable-process-substitution was given.
-if test "${enable_process_substitution+set}" = set; then :
+if test ${enable_process_substitution+y}
+then :
enableval=$enable_process_substitution; opt_process_subst=$enableval
fi
# Check whether --enable-progcomp was given.
-if test "${enable_progcomp+set}" = set; then :
+if test ${enable_progcomp+y}
+then :
enableval=$enable_progcomp; opt_progcomp=$enableval
fi
# Check whether --enable-prompt-string-decoding was given.
-if test "${enable_prompt_string_decoding+set}" = set; then :
+if test ${enable_prompt_string_decoding+y}
+then :
enableval=$enable_prompt_string_decoding; opt_prompt_decoding=$enableval
fi
# Check whether --enable-readline was given.
-if test "${enable_readline+set}" = set; then :
+if test ${enable_readline+y}
+then :
enableval=$enable_readline; opt_readline=$enableval
fi
# Check whether --enable-restricted was given.
-if test "${enable_restricted+set}" = set; then :
+if test ${enable_restricted+y}
+then :
enableval=$enable_restricted; opt_restricted=$enableval
fi
# Check whether --enable-select was given.
-if test "${enable_select+set}" = set; then :
+if test ${enable_select+y}
+then :
enableval=$enable_select; opt_select=$enableval
fi
# Check whether --enable-separate-helpfiles was given.
-if test "${enable_separate_helpfiles+set}" = set; then :
+if test ${enable_separate_helpfiles+y}
+then :
enableval=$enable_separate_helpfiles; opt_separate_help=$enableval
fi
# Check whether --enable-single-help-strings was given.
-if test "${enable_single_help_strings+set}" = set; then :
+if test ${enable_single_help_strings+y}
+then :
enableval=$enable_single_help_strings; opt_single_longdoc_strings=$enableval
fi
# Check whether --enable-strict-posix-default was given.
-if test "${enable_strict_posix_default+set}" = set; then :
+if test ${enable_strict_posix_default+y}
+then :
enableval=$enable_strict_posix_default; opt_strict_posix=$enableval
fi
+# Check whether --enable-translatable-strings was given.
+if test ${enable_translatable_strings+y}
+then :
+ enableval=$enable_translatable_strings; opt_translatable_strings=$enableval
+fi
+
# Check whether --enable-usg-echo-default was given.
-if test "${enable_usg_echo_default+set}" = set; then :
+if test ${enable_usg_echo_default+y}
+then :
enableval=$enable_usg_echo_default; opt_xpg_echo=$enableval
fi
# Check whether --enable-xpg-echo-default was given.
-if test "${enable_xpg_echo_default+set}" = set; then :
+if test ${enable_xpg_echo_default+y}
+then :
enableval=$enable_xpg_echo_default; opt_xpg_echo=$enableval
fi
# Check whether --enable-mem-scramble was given.
-if test "${enable_mem_scramble+set}" = set; then :
+if test ${enable_mem_scramble+y}
+then :
enableval=$enable_mem_scramble; opt_memscramble=$enableval
fi
# Check whether --enable-profiling was given.
-if test "${enable_profiling+set}" = set; then :
+if test ${enable_profiling+y}
+then :
enableval=$enable_profiling; opt_profiling=$enableval
fi
# Check whether --enable-static-link was given.
-if test "${enable_static_link+set}" = set; then :
+if test ${enable_static_link+y}
+then :
enableval=$enable_static_link; opt_static_link=$enableval
fi
@@ -3260,134 +3704,143 @@ fi
if test $opt_alias = yes; then
-$as_echo "#define ALIAS 1" >>confdefs.h
+printf "%s\n" "#define ALIAS 1" >>confdefs.h
fi
if test $opt_dirstack = yes; then
-$as_echo "#define PUSHD_AND_POPD 1" >>confdefs.h
+printf "%s\n" "#define PUSHD_AND_POPD 1" >>confdefs.h
fi
if test $opt_restricted = yes; then
-$as_echo "#define RESTRICTED_SHELL 1" >>confdefs.h
+printf "%s\n" "#define RESTRICTED_SHELL 1" >>confdefs.h
fi
if test $opt_process_subst = yes; then
-$as_echo "#define PROCESS_SUBSTITUTION 1" >>confdefs.h
+printf "%s\n" "#define PROCESS_SUBSTITUTION 1" >>confdefs.h
fi
if test $opt_prompt_decoding = yes; then
-$as_echo "#define PROMPT_STRING_DECODE 1" >>confdefs.h
+printf "%s\n" "#define PROMPT_STRING_DECODE 1" >>confdefs.h
fi
if test $opt_select = yes; then
-$as_echo "#define SELECT_COMMAND 1" >>confdefs.h
+printf "%s\n" "#define SELECT_COMMAND 1" >>confdefs.h
fi
if test $opt_help = yes; then
-$as_echo "#define HELP_BUILTIN 1" >>confdefs.h
+printf "%s\n" "#define HELP_BUILTIN 1" >>confdefs.h
fi
if test $opt_array_variables = yes; then
-$as_echo "#define ARRAY_VARS 1" >>confdefs.h
+printf "%s\n" "#define ARRAY_VARS 1" >>confdefs.h
fi
if test $opt_dparen_arith = yes; then
-$as_echo "#define DPAREN_ARITHMETIC 1" >>confdefs.h
+printf "%s\n" "#define DPAREN_ARITHMETIC 1" >>confdefs.h
fi
if test $opt_brace_expansion = yes; then
-$as_echo "#define BRACE_EXPANSION 1" >>confdefs.h
+printf "%s\n" "#define BRACE_EXPANSION 1" >>confdefs.h
fi
if test $opt_disabled_builtins = yes; then
-$as_echo "#define DISABLED_BUILTINS 1" >>confdefs.h
+printf "%s\n" "#define DISABLED_BUILTINS 1" >>confdefs.h
fi
if test $opt_command_timing = yes; then
-$as_echo "#define COMMAND_TIMING 1" >>confdefs.h
+printf "%s\n" "#define COMMAND_TIMING 1" >>confdefs.h
fi
if test $opt_xpg_echo = yes ; then
-$as_echo "#define DEFAULT_ECHO_TO_XPG 1" >>confdefs.h
+printf "%s\n" "#define DEFAULT_ECHO_TO_XPG 1" >>confdefs.h
fi
if test $opt_strict_posix = yes; then
-$as_echo "#define STRICT_POSIX 1" >>confdefs.h
+printf "%s\n" "#define STRICT_POSIX 1" >>confdefs.h
fi
if test $opt_extended_glob = yes ; then
-$as_echo "#define EXTENDED_GLOB 1" >>confdefs.h
+printf "%s\n" "#define EXTENDED_GLOB 1" >>confdefs.h
fi
if test $opt_extglob_default = yes; then
-$as_echo "#define EXTGLOB_DEFAULT 1" >>confdefs.h
+printf "%s\n" "#define EXTGLOB_DEFAULT 1" >>confdefs.h
else
-$as_echo "#define EXTGLOB_DEFAULT 0" >>confdefs.h
+printf "%s\n" "#define EXTGLOB_DEFAULT 0" >>confdefs.h
fi
if test $opt_cond_command = yes ; then
-$as_echo "#define COND_COMMAND 1" >>confdefs.h
+printf "%s\n" "#define COND_COMMAND 1" >>confdefs.h
fi
if test $opt_cond_regexp = yes ; then
-$as_echo "#define COND_REGEXP 1" >>confdefs.h
+printf "%s\n" "#define COND_REGEXP 1" >>confdefs.h
fi
if test $opt_coproc = yes; then
-$as_echo "#define COPROCESS_SUPPORT 1" >>confdefs.h
+printf "%s\n" "#define COPROCESS_SUPPORT 1" >>confdefs.h
fi
if test $opt_arith_for_command = yes; then
-$as_echo "#define ARITH_FOR_COMMAND 1" >>confdefs.h
+printf "%s\n" "#define ARITH_FOR_COMMAND 1" >>confdefs.h
fi
if test $opt_net_redirs = yes; then
-$as_echo "#define NETWORK_REDIRECTIONS 1" >>confdefs.h
+printf "%s\n" "#define NETWORK_REDIRECTIONS 1" >>confdefs.h
fi
if test $opt_progcomp = yes; then
-$as_echo "#define PROGRAMMABLE_COMPLETION 1" >>confdefs.h
+printf "%s\n" "#define PROGRAMMABLE_COMPLETION 1" >>confdefs.h
fi
if test $opt_multibyte = no; then
-$as_echo "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h
+printf "%s\n" "#define NO_MULTIBYTE_SUPPORT 1" >>confdefs.h
fi
if test $opt_debugger = yes; then
-$as_echo "#define DEBUGGER 1" >>confdefs.h
+printf "%s\n" "#define DEBUGGER 1" >>confdefs.h
fi
if test $opt_casemod_attrs = yes; then
-$as_echo "#define CASEMOD_ATTRS 1" >>confdefs.h
+printf "%s\n" "#define CASEMOD_ATTRS 1" >>confdefs.h
fi
if test $opt_casemod_expansions = yes; then
-$as_echo "#define CASEMOD_EXPANSIONS 1" >>confdefs.h
+printf "%s\n" "#define CASEMOD_EXPANSIONS 1" >>confdefs.h
fi
if test $opt_dircomplete_expand_default = yes; then
-$as_echo "#define DIRCOMPLETE_EXPAND_DEFAULT 1" >>confdefs.h
+printf "%s\n" "#define DIRCOMPLETE_EXPAND_DEFAULT 1" >>confdefs.h
fi
if test $opt_globascii_default = yes; then
-$as_echo "#define GLOBASCII_DEFAULT 1" >>confdefs.h
+printf "%s\n" "#define GLOBASCII_DEFAULT 1" >>confdefs.h
else
-$as_echo "#define GLOBASCII_DEFAULT 0" >>confdefs.h
+printf "%s\n" "#define GLOBASCII_DEFAULT 0" >>confdefs.h
fi
if test $opt_function_import = yes; then
-$as_echo "#define FUNCTION_IMPORT 1" >>confdefs.h
+printf "%s\n" "#define FUNCTION_IMPORT 1" >>confdefs.h
fi
if test $opt_dev_fd_stat_broken = yes; then
-$as_echo "#define DEV_FD_STAT_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define DEV_FD_STAT_BROKEN 1" >>confdefs.h
+
+fi
+if test $opt_alt_array_impl = yes; then
+printf "%s\n" "#define ALT_ARRAY_IMPLEMENTATION 1" >>confdefs.h
+
+ARRAY_O=array2.o
+fi
+if test $opt_translatable_strings = yes; then
+printf "%s\n" "#define TRANSLATABLE_STRINGS 1" >>confdefs.h
fi
if test $opt_memscramble = yes; then
-$as_echo "#define MEMSCRAMBLE 1" >>confdefs.h
+printf "%s\n" "#define MEMSCRAMBLE 1" >>confdefs.h
fi
@@ -3400,7 +3853,7 @@ fi
HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET=
if test "$opt_separate_help" != no; then
if test "$opt_separate_help" = "yes" ; then
- HELPDIR='${datadir}/bash'
+ HELPDIR='${datadir}/bash/helpfiles'
else
HELPDIR=$opt_separate_help
fi
@@ -3430,6 +3883,8 @@ fi
+
+
if test -z "$CFLAGS"; then
want_auto_cflags=1
fi
@@ -3438,6 +3893,15 @@ echo ""
echo "Beginning configuration for bash-$BASHVERS-$RELSTATUS for ${host_cpu}-${host_vendor}-${host_os}"
echo ""
+
+
+
+
+
+
+
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3446,11 +3910,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -3458,11 +3923,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3473,11 +3942,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3486,11 +3955,12 @@ if test -z "$ac_cv_prog_CC"; then
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
@@ -3498,11 +3968,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3513,11 +3987,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
@@ -3525,8 +3999,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -3539,11 +4013,12 @@ if test -z "$CC"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -3551,11 +4026,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3566,11 +4045,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3579,11 +4058,12 @@ fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -3592,15 +4072,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3616,18 +4100,18 @@ if test $ac_prog_rejected = yes; then
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
fi
fi
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3638,11 +4122,12 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -3650,11 +4135,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3665,11 +4154,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3682,11 +4171,12 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
@@ -3694,11 +4184,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3709,11 +4203,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3725,34 +4219,138 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
fi
+else
+ CC="$ac_cv_prog_CC"
fi
fi
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
See \`config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
{ { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -3762,7 +4360,7 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -3770,7 +4368,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -3782,9 +4380,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
@@ -3805,11 +4403,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
# in a Makefile. We should not override ac_cv_exeext if it was cached,
@@ -3826,7 +4425,7 @@ do
# certainly right.
break;;
*.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
then :; else
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
fi
@@ -3842,44 +4441,46 @@ do
done
test "$ac_cv_exeext" = no && ac_cv_exeext=
-else
+else $as_nop
ac_file=''
fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
# work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -3893,15 +4494,15 @@ for ac_file in conftest.exe conftest conftest.*; do
* ) break;;
esac
done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
@@ -3910,7 +4511,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.out", "w");
return ferror (f) || fclose (f) != 0;
@@ -3922,8 +4523,8 @@ _ACEOF
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
{ { ac_try="$ac_link"
case "(($ac_try" in
@@ -3931,10 +4532,10 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if { ac_try='./conftest$ac_cv_exeext'
{ { case "(($ac_try" in
@@ -3942,39 +4543,40 @@ $as_echo "$ac_try_echo"; } >&5
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details" "$LINENO" 5; }
fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -3988,11 +4590,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
@@ -4001,31 +4604,32 @@ $as_echo "$ac_try_echo"; } >&5
break;;
esac
done
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
@@ -4035,29 +4639,33 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_compiler_gnu=yes
-else
+else $as_nop
ac_compiler_gnu=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
if test $ac_compiler_gnu = yes; then
GCC=yes
else
GCC=
fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
@@ -4066,57 +4674,60 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
-else
+else $as_nop
CFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
@@ -4131,166 +4742,144 @@ else
CFLAGS=
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
+$ac_c_conftest_c11_program
_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -std=gnu11
do
CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c89=$ac_arg
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c11=$ac_arg
fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c11" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
-
fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ CC="$CC $ac_cv_prog_cc_c11"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+ ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c99=$ac_arg
fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-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=
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
-$as_echo_n "checking for library containing strerror... " >&6; }
-if ${ac_cv_search_strerror+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c99" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ CC="$CC $ac_cv_prog_cc_c99"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+ ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char strerror ();
-int
-main ()
-{
-return strerror ();
- ;
- return 0;
-}
+$ac_c_conftest_c89_program
_ACEOF
-for ac_lib in '' cposix; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_search_strerror=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_strerror+:} false; then :
- break
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c89=$ac_arg
fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
done
-if ${ac_cv_search_strerror+:} false; then :
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-else
- ac_cv_search_strerror=no
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c89" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ CC="$CC $ac_cv_prog_cc_c89"
fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+ ac_prog_cc_stdc=c89
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
@@ -4298,473 +4887,202 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
+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} ${GCC:+-Wno-tautological-constant-out-of-range-compare}"
+ STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security}"
else
- # Passes both tests.
-ac_preproc_ok=:
-break
+ AUTO_CFLAGS= AUTO_LDFLAGS= STYLE_CFLAGS=
fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
+do
+ if test $ac_cache; then
+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+ printf "%s\n" "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_header= ac_cache=
+ elif test $ac_header; then
+ ac_cache=$ac_item
+ else
+ ac_header=$ac_item
+ fi
done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
- break
-fi
- done
- ac_cv_prog_CPP=$CPP
-fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-else
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <ac_nonexistent.h>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
- $ac_path_GREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_GREP=$GREP
fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
- fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test ${ac_cv_safe_to_define___extensions__+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+# define __EXTENSIONS__ 1
+ $ac_includes_default
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_safe_to_define___extensions__=yes
+else $as_nop
+ ac_cv_safe_to_define___extensions__=no
fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if test ${ac_cv_should_define__xopen_source+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_should_define__xopen_source=no
+ if test $ac_cv_header_wchar_h = yes
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
+ #include <wchar.h>
+ mbstate_t x;
+int
+main (void)
+{
-fi
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+ #define _XOPEN_SOURCE 500
+ #include <wchar.h>
+ mbstate_t x;
int
-main ()
+main (void)
{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
+
+ ;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_should_define__xopen_source=yes
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
-fi
+ printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
-fi
+ printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h
-done
+ printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
+ printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h
- ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
- MINIX=yes
-else
- MINIX=
-fi
+ printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
- if test "$MINIX" = yes; then
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
-$as_echo "#define _MINIX 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
- fi
+ printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h
+ if test $ac_cv_header_minix_config_h = yes
+then :
+ MINIX=yes
+ printf "%s\n" "#define _MINIX 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h
-# define __EXTENSIONS__ 1
- $ac_includes_default
-int
-main ()
-{
+ printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_safe_to_define___extensions__=yes
-else
- ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else $as_nop
+ MINIX=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
- test $ac_cv_safe_to_define___extensions__ = yes &&
- $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
- $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
-
- $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
- $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
- $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
-
+ if test $ac_cv_safe_to_define___extensions__ = yes
+then :
+ printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h
+fi
+ if test $ac_cv_should_define__xopen_source = yes
+then :
+ printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h
+fi
# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
+if test ${enable_largefile+y}
+then :
enableval=$enable_largefile;
fi
if test "$enable_largefile" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+printf %s "checking for special C compiler options needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_sys_largefile_CC=no
if test "$GCC" != yes; then
ac_save_CC=$CC
@@ -4778,44 +5096,47 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
CC="$CC -n32"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_largefile_CC=' -n32'; break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
break
done
CC=$ac_save_CC
rm -f conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
if test "$ac_cv_sys_largefile_CC" != no; then
CC=$CC$ac_cv_sys_largefile_CC
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test ${ac_cv_sys_file_offset_bits+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -4824,22 +5145,23 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _FILE_OFFSET_BITS 64
@@ -4848,43 +5170,43 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=64; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_file_offset_bits=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
case $ac_cv_sys_file_offset_bits in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
+printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
;;
esac
rm -rf conftest*
if test $ac_cv_sys_file_offset_bits = unknown; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test ${ac_cv_sys_large_files+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -4893,22 +5215,23 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _LARGE_FILES 1
@@ -4917,40 +5240,37 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=1; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_large_files=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+printf "%s\n" "$ac_cv_sys_large_files" >&6; }
case $ac_cv_sys_large_files in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
+printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
;;
esac
rm -rf conftest*
fi
-
-
fi
@@ -4997,7 +5317,7 @@ CFLAGS=${CFLAGS-"$AUTO_CFLAGS"}
if test "$opt_profiling" = "yes"; then
PROFILE_FLAGS=-pg
case "$host_os" in
- solaris2*|linux*) ;;
+ solaris2*|linux*|darwin*) ;;
*) opt_static_link=yes ;;
esac
DEBUG= MALLOC_DEBUG=
@@ -5010,7 +5330,7 @@ if test "$opt_static_link" = yes; then
prefer_static=yes
prefer_shared=no
# if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
- if test -n "$GCC" || test "$ac_cv_c_compiler_gnu" = "yes"; then
+ if test "$GCC" = "yes"; then
STATIC_LD="-static"
case "$host_os" in
solaris2*|linux*) ;;
@@ -5032,9 +5352,12 @@ if test "X$cross_compiling" = "Xno"; then
fi
# CFLAGS set above to default value if not passed in environment
if test -n "$want_auto_cflags" ; then
- CFLAGS_FOR_BUILD="${CFLAGS} ${STYLE_CFLAGS}"
+ CFLAGS_FOR_BUILD="${CFLAGS}"
+ BASE_CFLAGS_FOR_BUILD="${CFLAGS}"
else
+ # passed in environment
CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
+ BASE_CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
fi
LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
else
@@ -5042,6 +5365,7 @@ else
CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
+ BASE_CFLAGS_FOR_BUILD=${BASE_CFLAGS_FOR_BUILD="-g"}
LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
fi
@@ -5056,12 +5380,290 @@ fi
-if test $ac_cv_c_compiler_gnu = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
-$as_echo_n "checking whether $CC needs -traditional... " >&6; }
-if ${ac_cv_prog_gcc_traditional+:} false; then :
- $as_echo_n "(cached) " >&6
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test ${ac_cv_prog_CPP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ # Double quotes because $CC needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+ # Broken: success on invalid input.
+continue
+else $as_nop
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+ # Broken: success on invalid input.
+continue
+else $as_nop
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok
+then :
+
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in grep ggrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in egrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+if test $ac_cv_c_compiler_gnu = yes; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
+printf %s "checking whether $CC needs -traditional... " >&6; }
+if test ${ac_cv_prog_gcc_traditional+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_pattern="Autoconf.*'x'"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -5069,12 +5671,13 @@ else
Autoconf TIOCGETP
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then :
+ $EGREP "$ac_pattern" >/dev/null 2>&1
+then :
ac_cv_prog_gcc_traditional=yes
-else
+else $as_nop
ac_cv_prog_gcc_traditional=no
fi
-rm -f conftest*
+rm -rf conftest*
if test $ac_cv_prog_gcc_traditional = no; then
@@ -5084,15 +5687,16 @@ rm -f conftest*
Autoconf TCGETA
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "$ac_pattern" >/dev/null 2>&1; then :
+ $EGREP "$ac_pattern" >/dev/null 2>&1
+then :
ac_cv_prog_gcc_traditional=yes
fi
-rm -f conftest*
+rm -rf conftest*
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
-$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
+printf "%s\n" "$ac_cv_prog_gcc_traditional" >&6; }
if test $ac_cv_prog_gcc_traditional = yes; then
CC="$CC -traditional"
fi
@@ -5110,22 +5714,25 @@ then
if test "X$bash_cv_termcap_lib" = "X"; then
_bash_needmsg=yes
else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
-$as_echo_n "checking which library has the termcap functions... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
+printf %s "checking which library has the termcap functions... " >&6; }
_bash_needmsg=
fi
-if ${bash_cv_termcap_lib+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${bash_cv_termcap_lib+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent"
-if test "x$ac_cv_func_tgetent" = xyes; then :
+if test "x$ac_cv_func_tgetent" = xyes
+then :
bash_cv_termcap_lib=libc
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5
-$as_echo_n "checking for tgetent in -ltermcap... " >&6; }
-if ${ac_cv_lib_termcap_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5
+printf %s "checking for tgetent in -ltermcap... " >&6; }
+if test ${ac_cv_lib_termcap_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ltermcap $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5134,37 +5741,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_termcap_tgetent=yes
-else
+else $as_nop
ac_cv_lib_termcap_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5
-$as_echo "$ac_cv_lib_termcap_tgetent" >&6; }
-if test "x$ac_cv_lib_termcap_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; }
+if test "x$ac_cv_lib_termcap_tgetent" = xyes
+then :
bash_cv_termcap_lib=libtermcap
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5
-$as_echo_n "checking for tgetent in -ltinfo... " >&6; }
-if ${ac_cv_lib_tinfo_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5
+printf %s "checking for tgetent in -ltinfo... " >&6; }
+if test ${ac_cv_lib_tinfo_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ltinfo $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5173,37 +5780,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_tinfo_tgetent=yes
-else
+else $as_nop
ac_cv_lib_tinfo_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5
-$as_echo "$ac_cv_lib_tinfo_tgetent" >&6; }
-if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_tinfo_tgetent" >&6; }
+if test "x$ac_cv_lib_tinfo_tgetent" = xyes
+then :
bash_cv_termcap_lib=libtinfo
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5
-$as_echo_n "checking for tgetent in -lcurses... " >&6; }
-if ${ac_cv_lib_curses_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5
+printf %s "checking for tgetent in -lcurses... " >&6; }
+if test ${ac_cv_lib_curses_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcurses $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5212,37 +5819,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_curses_tgetent=yes
-else
+else $as_nop
ac_cv_lib_curses_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5
-$as_echo "$ac_cv_lib_curses_tgetent" >&6; }
-if test "x$ac_cv_lib_curses_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_curses_tgetent" >&6; }
+if test "x$ac_cv_lib_curses_tgetent" = xyes
+then :
bash_cv_termcap_lib=libcurses
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5
-$as_echo_n "checking for tgetent in -lncurses... " >&6; }
-if ${ac_cv_lib_ncurses_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5
+printf %s "checking for tgetent in -lncurses... " >&6; }
+if test ${ac_cv_lib_ncurses_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lncurses $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5251,37 +5858,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_ncurses_tgetent=yes
-else
+else $as_nop
ac_cv_lib_ncurses_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5
-$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; }
-if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_ncurses_tgetent" >&6; }
+if test "x$ac_cv_lib_ncurses_tgetent" = xyes
+then :
bash_cv_termcap_lib=libncurses
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5
-$as_echo_n "checking for tgetent in -lncursesw... " >&6; }
-if ${ac_cv_lib_ncursesw_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5
+printf %s "checking for tgetent in -lncursesw... " >&6; }
+if test ${ac_cv_lib_ncursesw_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lncursesw $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5290,32 +5897,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_ncursesw_tgetent=yes
-else
+else $as_nop
ac_cv_lib_ncursesw_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5
-$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; }
-if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_ncursesw_tgetent" >&6; }
+if test "x$ac_cv_lib_ncursesw_tgetent" = xyes
+then :
bash_cv_termcap_lib=libncursesw
-else
+else $as_nop
bash_cv_termcap_lib=gnutermcap
fi
@@ -5332,11 +5938,11 @@ fi
fi
if test "X$_bash_needmsg" = "Xyes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
-$as_echo_n "checking which library has the termcap functions... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
+printf %s "checking which library has the termcap functions... " >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5
-$as_echo "using $bash_cv_termcap_lib" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5
+printf "%s\n" "using $bash_cv_termcap_lib" >&6; }
if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
LDFLAGS="$LDFLAGS -L./lib/termcap"
TERMCAP_LIB="./lib/termcap/libtermcap.a"
@@ -5354,15 +5960,16 @@ elif test $bash_cv_termcap_lib = libc; then
TERMCAP_LIB=
TERMCAP_DEP=
else
-TERMCAP_LIB=-lcurses
+# we assume ncurses is installed somewhere the linker can find it
+TERMCAP_LIB=-lncurses
TERMCAP_DEP=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking version of installed readline library" >&5
-$as_echo_n "checking version of installed readline library... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking version of installed readline library" >&5
+printf %s "checking version of installed readline library... " >&6; }
# What a pain in the ass this is.
@@ -5386,12 +5993,15 @@ LIBS="$LIBS -lreadline ${TERMCAP_LIB}"
CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}"
LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}"
-if ${ac_cv_rl_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+if test ${ac_cv_rl_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_rl_version='8.0'
-else
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -5417,9 +6027,10 @@ main()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_rl_version=`cat conftest.rlv`
-else
+else $as_nop
ac_cv_rl_version='0.0'
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -5463,31 +6074,25 @@ RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}"
# Readline versions greater than 4.2 have these defines in readline.h
if test $ac_cv_rl_version = '0.0' ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not test version of installed readline library." >&5
-$as_echo "$as_me: WARNING: Could not test version of installed readline library." >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Could not test version of installed readline library." >&5
+printf "%s\n" "$as_me: WARNING: Could not test version of installed readline library." >&2;}
elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then
# set these for use by the caller
RL_PREFIX=$ac_cv_rl_prefix
RL_LIBDIR=$ac_cv_rl_libdir
RL_INCLUDEDIR=$ac_cv_rl_includedir
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5
-$as_echo "$ac_cv_rl_version" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5
+printf "%s\n" "$ac_cv_rl_version" >&6; }
else
-cat >>confdefs.h <<_ACEOF
-#define RL_READLINE_VERSION $RL_VERSION
-_ACEOF
+printf "%s\n" "#define RL_READLINE_VERSION $RL_VERSION" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define RL_VERSION_MAJOR $RL_MAJOR
-_ACEOF
+printf "%s\n" "#define RL_VERSION_MAJOR $RL_MAJOR" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define RL_VERSION_MINOR $RL_MINOR
-_ACEOF
+printf "%s\n" "#define RL_VERSION_MINOR $RL_MINOR" >>confdefs.h
@@ -5499,8 +6104,8 @@ RL_PREFIX=$ac_cv_rl_prefix
RL_LIBDIR=$ac_cv_rl_libdir
RL_INCLUDEDIR=$ac_cv_rl_includedir
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5
-$as_echo "$ac_cv_rl_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_rl_version" >&5
+printf "%s\n" "$ac_cv_rl_version" >&6; }
fi
@@ -5508,17 +6113,17 @@ fi
case "$ac_cv_rl_version" in
8*|9*) ;;
*) opt_with_installed_readline=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5
-$as_echo "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using private bash version" >&5
-$as_echo "$as_me: WARNING: using private bash version" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5
+printf "%s\n" "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using private bash version" >&5
+printf "%s\n" "$as_me: WARNING: using private bash version" >&2;}
;;
esac
fi
TILDE_LIB=-ltilde
if test $opt_readline = yes; then
- $as_echo "#define READLINE 1" >>confdefs.h
+ printf "%s\n" "#define READLINE 1" >>confdefs.h
if test "$opt_with_installed_readline" != "no" ; then
case "$opt_with_installed_readline" in
@@ -5554,11 +6159,11 @@ else
fi
if test $opt_history = yes || test $opt_bang_history = yes; then
if test $opt_history = yes; then
- $as_echo "#define HISTORY 1" >>confdefs.h
+ printf "%s\n" "#define HISTORY 1" >>confdefs.h
fi
if test $opt_bang_history = yes; then
- $as_echo "#define BANG_HISTORY 1" >>confdefs.h
+ printf "%s\n" "#define BANG_HISTORY 1" >>confdefs.h
fi
if test "$opt_with_installed_readline" != "no"; then
@@ -5600,7 +6205,8 @@ fi
-# Find a good install program. We prefer a C program (faster),
+
+ # Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
# incompatible versions:
# SysV /etc/install, /usr/sbin/install
@@ -5614,20 +6220,25 @@ fi
# OS/2's system install, which has a completely different semantic
# ./install, which can be erroneously created by make from ./install.sh.
# Reject install programs that cannot install multiple files.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
-$as_echo_n "checking for a BSD-compatible install... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+printf %s "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
-if ${ac_cv_path_install+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${ac_cv_path_install+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in #((
- ./ | .// | /[cC]/* | \
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ # Account for fact that we put trailing slashes in our PATH walk.
+case $as_dir in #((
+ ./ | /[cC]/* | \
/etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
/usr/ucb/* ) ;;
@@ -5637,13 +6248,13 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
:
elif test $ac_prog = install &&
- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# program-specific install script used by HP pwplus--don't use.
:
else
@@ -5651,12 +6262,12 @@ case $as_dir/ in #((
echo one > conftest.one
echo two > conftest.two
mkdir conftest.dir
- if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" &&
test -s conftest.one && test -s conftest.two &&
test -s conftest.dir/conftest.one &&
test -s conftest.dir/conftest.two
then
- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c"
break 3
fi
fi
@@ -5672,7 +6283,7 @@ IFS=$as_save_IFS
rm -rf conftest.one conftest.two conftest.dir
fi
- if test "${ac_cv_path_install+set}" = set; then
+ if test ${ac_cv_path_install+y}; then
INSTALL=$ac_cv_path_install
else
# As a last resort, use the slow shell script. Don't cache a
@@ -5682,8 +6293,8 @@ fi
INSTALL=$ac_install_sh
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
-$as_echo "$INSTALL" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+printf "%s\n" "$INSTALL" >&6; }
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
# It thinks the first close brace ends the variable substitution.
@@ -5696,11 +6307,12 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test.
else
@@ -5708,11 +6320,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="${ac_tool_prefix}ar"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5723,11 +6339,11 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -5736,11 +6352,12 @@ if test -z "$ac_cv_prog_AR"; then
ac_ct_AR=$AR
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AR"; then
ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
@@ -5748,11 +6365,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="ar"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5763,11 +6384,11 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_AR" = x; then
@@ -5775,8 +6396,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
@@ -5789,11 +6410,12 @@ test -n "$ARFLAGS" || ARFLAGS="cr"
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
@@ -5801,11 +6423,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5816,11 +6442,11 @@ fi
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+printf "%s\n" "$RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -5829,11 +6455,12 @@ if test -z "$ac_cv_prog_RANLIB"; then
ac_ct_RANLIB=$RANLIB
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_RANLIB"; then
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
else
@@ -5841,11 +6468,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5856,11 +6487,11 @@ fi
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+printf "%s\n" "$ac_ct_RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_RANLIB" = x; then
@@ -5868,8 +6499,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
RANLIB=$ac_ct_RANLIB
@@ -5882,11 +6513,12 @@ for ac_prog in 'bison -y' byacc
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_YACC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_YACC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$YACC"; then
ac_cv_prog_YACC="$YACC" # Let the user override the test.
else
@@ -5894,11 +6526,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_YACC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -5909,11 +6545,11 @@ fi
fi
YACC=$ac_cv_prog_YACC
if test -n "$YACC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
+printf "%s\n" "$YACC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -5921,13 +6557,14 @@ fi
done
test -n "$YACC" || YACC="yacc"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval test \${ac_cv_prog_make_${ac_make}_set+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat >conftest.make <<\_ACEOF
SHELL = /bin/sh
all:
@@ -5943,20 +6580,20 @@ esac
rm -f conftest.make
fi
if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
SET_MAKE=
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
SET_MAKE="MAKE=${MAKE-make}"
fi
case "$ac_cv_prog_YACC" in
*bison*) ;;
-*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: bison not available; needed to process parse.y" >&5
-$as_echo "$as_me: WARNING: bison not available; needed to process parse.y" >&2;} ;;
+*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: bison not available; needed to process parse.y" >&5
+printf "%s\n" "$as_me: WARNING: bison not available; needed to process parse.y" >&2;} ;;
esac
case "$host_os" in
@@ -6022,6 +6659,11 @@ fi
+
+
+
+
+
# codeset.m4 serial 5 (gettext-0.18.2)
@@ -6326,19 +6968,17 @@ fi
-$as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+printf %s "checking for an ANSI C-conforming const... " >&6; }
+if test ${ac_cv_c_const+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __cplusplus
@@ -6351,7 +6991,7 @@ main ()
/* NEC SVR4.0.2 mips cc rejects this. */
struct point {int x, y;};
static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
+ /* IBM XL C 1.02.0.0 rejects this.
It does not let you subtract one const X* pointer from another in
an arm of an if-expression whose if-part is not a constant
expression */
@@ -6379,7 +7019,7 @@ main ()
iptr p = 0;
++p;
}
- { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+ { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
struct s { int j; const int *ap[3]; } bx;
struct s *b = &bx; b->j = 5;
@@ -6395,47 +7035,50 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_const=yes
-else
+else $as_nop
ac_cv_c_const=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+printf "%s\n" "$ac_cv_c_const" >&6; }
if test $ac_cv_c_const = no; then
-$as_echo "#define const /**/" >>confdefs.h
+printf "%s\n" "#define const /**/" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+printf %s "checking for inline... " >&6; }
+if test ${ac_cv_c_inline+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifndef __cplusplus
typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
+static $ac_kw foo_t static_foo (void) {return 0; }
+$ac_kw foo_t foo (void) {return 0; }
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_inline=$ac_kw
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test "$ac_cv_c_inline" != no && break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+printf "%s\n" "$ac_cv_c_inline" >&6; }
case $ac_cv_c_inline in
inline | yes) ;;
@@ -6452,11 +7095,12 @@ _ACEOF
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+printf %s "checking whether byte ordering is bigendian... " >&6; }
+if test ${ac_cv_c_bigendian+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_c_bigendian=unknown
# See if we're dealing with a universal compiler.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6467,7 +7111,8 @@ else
typedef int dummy;
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
# Check for potential -arch flags. It is not universal unless
# there are at least two -arch flags with different values.
@@ -6491,7 +7136,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
fi
done
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
if test $ac_cv_c_bigendian = unknown; then
# See if sys/param.h defines the BYTE_ORDER macro.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6500,7 +7145,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#include <sys/param.h>
int
-main ()
+main (void)
{
#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
&& defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
@@ -6512,7 +7157,8 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
# It does; now see whether it defined to BIG_ENDIAN or not.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -6520,7 +7166,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
#include <sys/param.h>
int
-main ()
+main (void)
{
#if BYTE_ORDER != BIG_ENDIAN
not big endian
@@ -6530,14 +7176,15 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_bigendian=yes
-else
+else $as_nop
ac_cv_c_bigendian=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test $ac_cv_c_bigendian = unknown; then
# See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
@@ -6546,7 +7193,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#include <limits.h>
int
-main ()
+main (void)
{
#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
bogus endian macros
@@ -6556,14 +7203,15 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
# It does; now see whether it defined to _BIG_ENDIAN or not.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
int
-main ()
+main (void)
{
#ifndef _BIG_ENDIAN
not big endian
@@ -6573,31 +7221,33 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_bigendian=yes
-else
+else $as_nop
ac_cv_c_bigendian=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test $ac_cv_c_bigendian = unknown; then
# Compile a test program.
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
# Try to guess by grepping values from an object file.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-short int ascii_mm[] =
+unsigned short int ascii_mm[] =
{ 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
- short int ascii_ii[] =
+ unsigned short int ascii_ii[] =
{ 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
int use_ascii (int i) {
return ascii_mm[i] + ascii_ii[i];
}
- short int ebcdic_ii[] =
+ unsigned short int ebcdic_ii[] =
{ 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
- short int ebcdic_mm[] =
+ unsigned short int ebcdic_mm[] =
{ 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
int use_ebcdic (int i) {
return ebcdic_mm[i] + ebcdic_ii[i];
@@ -6605,14 +7255,15 @@ short int ascii_mm[] =
extern int foo;
int
-main ()
+main (void)
{
return use_ascii (foo) == use_ebcdic (foo);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
ac_cv_c_bigendian=yes
fi
@@ -6625,13 +7276,13 @@ if ac_fn_c_try_compile "$LINENO"; then :
fi
fi
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
/* Are we little or big endian? From Harbison&Steele. */
@@ -6647,9 +7298,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_c_bigendian=no
-else
+else $as_nop
ac_cv_c_bigendian=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -6658,17 +7310,17 @@ fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+printf "%s\n" "$ac_cv_c_bigendian" >&6; }
case $ac_cv_c_bigendian in #(
yes)
- $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+ printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h
;; #(
no)
;; #(
universal)
-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
;; #(
*)
@@ -6676,11 +7328,12 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for preprocessor stringizing operator" >&5
-$as_echo_n "checking for preprocessor stringizing operator... " >&6; }
-if ${ac_cv_c_stringize+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for preprocessor stringizing operator" >&5
+printf %s "checking for preprocessor stringizing operator... " >&6; }
+if test ${ac_cv_c_stringize+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define x(y) #y
@@ -6688,53 +7341,43 @@ else
char *s = x(teststring);
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "#teststring" >/dev/null 2>&1; then :
+ $EGREP "#teststring" >/dev/null 2>&1
+then :
ac_cv_c_stringize=no
-else
+else $as_nop
ac_cv_c_stringize=yes
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stringize" >&5
-$as_echo "$ac_cv_c_stringize" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stringize" >&5
+printf "%s\n" "$ac_cv_c_stringize" >&6; }
if test $ac_cv_c_stringize = yes; then
-$as_echo "#define HAVE_STRINGIZE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRINGIZE 1" >>confdefs.h
fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double with more range or precision than double" >&5
-$as_echo_n "checking for long double with more range or precision than double... " >&6; }
-if ${ac_cv_type_long_double_wider+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long double" >&5
+printf %s "checking for long double... " >&6; }
+if test ${ac_cv_type_long_double+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$GCC" = yes; then
+ ac_cv_type_long_double=yes
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <float.h>
- long double const a[] =
- {
- 0.0L, DBL_MIN, DBL_MAX, DBL_EPSILON,
- LDBL_MIN, LDBL_MAX, LDBL_EPSILON
- };
- long double
- f (long double x)
- {
- return ((x + (unsigned long int) 10) * (-1 / x) + a[0]
- + (x ? f (x) : 'c'));
- }
-
+/* The Stardent Vistra knows sizeof (long double), but does
+ not support it. */
+ long double foo = 0.0L;
int
-main ()
+main (void)
{
-static int test_array [1 - 2 * !((0 < ((DBL_MAX_EXP < LDBL_MAX_EXP)
- + (DBL_MANT_DIG < LDBL_MANT_DIG)
- - (LDBL_MAX_EXP < DBL_MAX_EXP)
- - (LDBL_MANT_DIG < DBL_MANT_DIG)))
- && (int) LDBL_EPSILON == 0
- )];
+static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8. */
+ sizeof (double) <= sizeof (long double))];
test_array [0] = 0;
return test_array [0];
@@ -6742,54 +7385,43 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_type_long_double_wider=yes
-else
- ac_cv_type_long_double_wider=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_type_long_double=yes
+else $as_nop
+ ac_cv_type_long_double=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double_wider" >&5
-$as_echo "$ac_cv_type_long_double_wider" >&6; }
- if test $ac_cv_type_long_double_wider = yes; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5
+printf "%s\n" "$ac_cv_type_long_double" >&6; }
+ if test $ac_cv_type_long_double = yes; then
-$as_echo "#define HAVE_LONG_DOUBLE_WIDER 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
fi
- ac_cv_c_long_double=$ac_cv_type_long_double_wider
- if test $ac_cv_c_long_double = yes; then
-
-$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
-
- fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for function prototypes" >&5
-$as_echo_n "checking for function prototypes... " >&6; }
-if test "$ac_cv_prog_cc_c89" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if test "$ac_prog_cc_stdc" != no; then
-$as_echo "#define PROTOTYPES 1" >>confdefs.h
+printf "%s\n" "#define PROTOTYPES 1" >>confdefs.h
-$as_echo "#define __PROTOTYPES 1" >>confdefs.h
+printf "%s\n" "#define __PROTOTYPES 1" >>confdefs.h
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5
-$as_echo_n "checking whether char is unsigned... " >&6; }
-if ${ac_cv_c_char_unsigned+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether char is unsigned" >&5
+printf %s "checking whether char is unsigned... " >&6; }
+if test ${ac_cv_c_char_unsigned+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(((char) -1) < 0)];
test_array [0] = 0;
@@ -6799,30 +7431,32 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_char_unsigned=no
-else
+else $as_nop
ac_cv_c_char_unsigned=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5
-$as_echo "$ac_cv_c_char_unsigned" >&6; }
-if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
- $as_echo "#define __CHAR_UNSIGNED__ 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_char_unsigned" >&5
+printf "%s\n" "$ac_cv_c_char_unsigned" >&6; }
+if test $ac_cv_c_char_unsigned = yes; then
+ printf "%s\n" "#define __CHAR_UNSIGNED__ 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
-$as_echo_n "checking for working volatile... " >&6; }
-if ${ac_cv_c_volatile+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
+printf %s "checking for working volatile... " >&6; }
+if test ${ac_cv_c_volatile+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
volatile int x;
@@ -6832,87 +7466,98 @@ return !x && !y;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_volatile=yes
-else
+else $as_nop
ac_cv_c_volatile=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5
-$as_echo "$ac_cv_c_volatile" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5
+printf "%s\n" "$ac_cv_c_volatile" >&6; }
if test $ac_cv_c_volatile = no; then
-$as_echo "#define volatile /**/" >>confdefs.h
+printf "%s\n" "#define volatile /**/" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
-$as_echo_n "checking for C/C++ restrict keyword... " >&6; }
-if ${ac_cv_c_restrict+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
+printf %s "checking for C/C++ restrict keyword... " >&6; }
+if test ${ac_cv_c_restrict+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_c_restrict=no
- # The order here caters to the fact that C++ does not require restrict.
- for ac_kw in __restrict __restrict__ _Restrict restrict; do
+ # Put '__restrict__' first, to avoid problems with glibc and non-GCC; see:
+ # https://lists.gnu.org/archive/html/bug-autoconf/2016-02/msg00006.html
+ # Put 'restrict' last, because C++ lacks it.
+ for ac_kw in __restrict__ __restrict _Restrict restrict; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-typedef int * int_ptr;
- int foo (int_ptr $ac_kw ip) {
- return ip[0];
- }
+typedef int *int_ptr;
+ int foo (int_ptr $ac_kw ip) { return ip[0]; }
+ int bar (int [$ac_kw]); /* Catch GCC bug 14050. */
+ int bar (int ip[$ac_kw]) { return ip[0]; }
+
int
-main ()
+main (void)
{
int s[1];
- int * $ac_kw t = s;
- t[0] = 0;
- return foo(t)
+ int *$ac_kw t = s;
+ t[0] = 0;
+ return foo (t) + bar (t);
+
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_restrict=$ac_kw
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test "$ac_cv_c_restrict" != no && break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
-$as_echo "$ac_cv_c_restrict" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_restrict" >&5
+printf "%s\n" "$ac_cv_c_restrict" >&6; }
case $ac_cv_c_restrict in
restrict) ;;
- no) $as_echo "#define restrict /**/" >>confdefs.h
+ no) printf "%s\n" "#define restrict /**/" >>confdefs.h
;;
- *) cat >>confdefs.h <<_ACEOF
-#define restrict $ac_cv_c_restrict
-_ACEOF
+ *) printf "%s\n" "#define restrict $ac_cv_c_restrict" >>confdefs.h
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
-$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5
+printf %s "checking for a race-free mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
- if ${ac_cv_path_mkdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${ac_cv_path_mkdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
- case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
- 'mkdir (GNU coreutils) '* | \
- 'mkdir (coreutils) '* | \
+ as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir ('*'coreutils) '* | \
+ 'BusyBox '* | \
'mkdir (fileutils) '4.1*)
- ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext
break 3;;
esac
done
@@ -6923,7 +7568,7 @@ IFS=$as_save_IFS
fi
test -d ./--version && rmdir ./--version
- if test "${ac_cv_path_mkdir+set}" = set; then
+ if test ${ac_cv_path_mkdir+y}; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
# As a last resort, use the slow shell script. Don't cache a
@@ -6933,14 +7578,15 @@ fi
MKDIR_P="$ac_install_sh -d"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
-$as_echo "$MKDIR_P" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+printf "%s\n" "$MKDIR_P" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+printf %s "checking for a sed that does not truncate output... " >&6; }
+if test ${ac_cv_path_SED+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
for ac_i in 1 2 3 4 5 6 7; do
ac_script="$ac_script$as_nl$ac_script"
@@ -6954,10 +7600,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in sed gsed; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in sed gsed
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_SED="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
@@ -6966,13 +7617,13 @@ case `"$ac_path_SED" --version 2>&1` in
ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo '' >> "conftest.nl"
+ printf "%s\n" '' >> "conftest.nl"
"$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -7000,23 +7651,24 @@ else
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+printf "%s\n" "$ac_cv_path_SED" >&6; }
SED="$ac_cv_path_SED"
rm -f conftest.sed
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
-$as_echo_n "checking whether NLS is requested... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+printf %s "checking whether NLS is requested... " >&6; }
# Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then :
+if test ${enable_nls+y}
+then :
enableval=$enable_nls; USE_NLS=$enableval
-else
+else $as_nop
USE_NLS=yes
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+printf "%s\n" "$USE_NLS" >&6; }
@@ -7055,11 +7707,12 @@ rm -f conf$$.file
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MSGFMT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_MSGFMT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case "$MSGFMT" in
[\\/]* | ?:[\\/]*)
ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
@@ -7087,20 +7740,21 @@ esac
fi
MSGFMT="$ac_cv_path_MSGFMT"
if test "$MSGFMT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
-$as_echo "$MSGFMT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+printf "%s\n" "$MSGFMT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GMSGFMT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_GMSGFMT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $GMSGFMT in
[\\/]* | ?:[\\/]*)
ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path.
@@ -7110,11 +7764,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_GMSGFMT="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7127,11 +7785,11 @@ esac
fi
GMSGFMT=$ac_cv_path_GMSGFMT
if test -n "$GMSGFMT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
-$as_echo "$GMSGFMT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+printf "%s\n" "$GMSGFMT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7177,11 +7835,12 @@ rm -f conf$$.file
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XGETTEXT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_XGETTEXT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case "$XGETTEXT" in
[\\/]* | ?:[\\/]*)
ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
@@ -7209,11 +7868,11 @@ esac
fi
XGETTEXT="$ac_cv_path_XGETTEXT"
if test "$XGETTEXT" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
-$as_echo "$XGETTEXT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+printf "%s\n" "$XGETTEXT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
rm -f messages.po
@@ -7254,11 +7913,12 @@ rm -f conf$$.file
# Extract the first word of "msgmerge", so it can be a program name with args.
set dummy msgmerge; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MSGMERGE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_MSGMERGE+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case "$MSGMERGE" in
[\\/]* | ?:[\\/]*)
ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
@@ -7285,11 +7945,11 @@ esac
fi
MSGMERGE="$ac_cv_path_MSGMERGE"
if test "$MSGMERGE" != ":"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
-$as_echo "$MSGMERGE" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+printf "%s\n" "$MSGMERGE" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7300,11 +7960,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5
-$as_echo_n "checking whether we are using the GNU C Library 2 or newer... " >&6; }
-if ${ac_cv_gnu_library_2+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5
+printf %s "checking whether we are using the GNU C Library 2 or newer... " >&6; }
+if test ${ac_cv_gnu_library_2+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7317,18 +7978,19 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
+ $EGREP "Lucky GNU user" >/dev/null 2>&1
+then :
ac_cv_gnu_library_2=yes
-else
+else $as_nop
ac_cv_gnu_library_2=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5
-$as_echo "$ac_cv_gnu_library_2" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5
+printf "%s\n" "$ac_cv_gnu_library_2" >&6; }
GLIBC2="$ac_cv_gnu_library_2"
@@ -7338,40 +8000,43 @@ $as_echo "$ac_cv_gnu_library_2" >&6; }
CFLAG_VISIBILITY=
HAVE_VISIBILITY=0
if test -n "$GCC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5
-$as_echo_n "checking whether the -Werror option is usable... " >&6; }
-if ${gl_cv_cc_vis_werror+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5
+printf %s "checking whether the -Werror option is usable... " >&6; }
+if test ${gl_cv_cc_vis_werror+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gl_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_cc_vis_werror=yes
-else
+else $as_nop
gl_cv_cc_vis_werror=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS="$gl_save_CFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5
-$as_echo "$gl_cv_cc_vis_werror" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5
-$as_echo_n "checking for simple visibility declarations... " >&6; }
-if ${gl_cv_cc_visibility+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5
+printf "%s\n" "$gl_cv_cc_vis_werror" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5
+printf %s "checking for simple visibility declarations... " >&6; }
+if test ${gl_cv_cc_visibility+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gl_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden"
if test $gl_cv_cc_vis_werror = yes; then
@@ -7386,24 +8051,25 @@ extern __attribute__((__visibility__("hidden"))) int hiddenvar;
void dummyfunc (void) {}
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_cc_visibility=yes
-else
+else $as_nop
gl_cv_cc_visibility=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS="$gl_save_CFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5
-$as_echo "$gl_cv_cc_visibility" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5
+printf "%s\n" "$gl_cv_cc_visibility" >&6; }
if test $gl_cv_cc_visibility = yes; then
CFLAG_VISIBILITY="-fvisibility=hidden"
HAVE_VISIBILITY=1
@@ -7412,69 +8078,67 @@ $as_echo "$gl_cv_cc_visibility" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define HAVE_VISIBILITY $HAVE_VISIBILITY
-_ACEOF
+printf "%s\n" "#define HAVE_VISIBILITY $HAVE_VISIBILITY" >>confdefs.h
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
+if test "x$ac_cv_type_size_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
+printf "%s\n" "#define size_t unsigned int" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5
-$as_echo_n "checking for stdint.h... " >&6; }
-if ${gl_cv_header_stdint_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5
+printf %s "checking for stdint.h... " >&6; }
+if test ${gl_cv_header_stdint_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <stdint.h>
int
-main ()
+main (void)
{
uintmax_t i = (uintmax_t) -1; return !i;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_header_stdint_h=yes
-else
+else $as_nop
gl_cv_header_stdint_h=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5
-$as_echo "$gl_cv_header_stdint_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5
+printf "%s\n" "$gl_cv_header_stdint_h" >&6; }
if test $gl_cv_header_stdint_h = yes; then
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H_WITH_UINTMAX 1
-_ACEOF
+printf "%s\n" "#define HAVE_STDINT_H_WITH_UINTMAX 1" >>confdefs.h
fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+printf %s "checking for working alloca.h... " >&6; }
+if test ${ac_cv_working_alloca_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <alloca.h>
int
-main ()
+main (void)
{
char *p = (char *) alloca (2 * sizeof (int));
if (p) return 0;
@@ -7482,52 +8146,52 @@ char *p = (char *) alloca (2 * sizeof (int));
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_working_alloca_h=yes
-else
+else $as_nop
ac_cv_working_alloca_h=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+printf "%s\n" "$ac_cv_working_alloca_h" >&6; }
if test $ac_cv_working_alloca_h = yes; then
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
- $as_echo_n "(cached) " >&6
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+printf %s "checking for alloca... " >&6; }
+if test ${ac_cv_func_alloca_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test $ac_cv_working_alloca_h = yes; then
+ ac_cv_func_alloca_works=yes
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
+#include <stdlib.h>
+#include <stddef.h>
+#ifndef alloca
+# ifdef __GNUC__
+# define alloca __builtin_alloca
+# elif defined _MSC_VER
# include <malloc.h>
# define alloca _alloca
# else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-# endif
-# endif
+# ifdef __cplusplus
+extern "C"
# endif
+void *alloca (size_t);
# endif
#endif
int
-main ()
+main (void)
{
char *p = (char *) alloca (1);
if (p) return 0;
@@ -7535,20 +8199,22 @@ char *p = (char *) alloca (1);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_func_alloca_works=yes
-else
+else $as_nop
ac_cv_func_alloca_works=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+printf "%s\n" "$ac_cv_func_alloca_works" >&6; }
+fi
if test $ac_cv_func_alloca_works = yes; then
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h
else
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
@@ -7558,58 +8224,19 @@ else
ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
-
+printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "webecray" >/dev/null 2>&1; then :
- ac_cv_os_cray=yes
-else
- ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
- break
-fi
-
- done
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+printf %s "checking stack direction for C alloca... " >&6; }
+if test ${ac_cv_c_stack_direction+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_c_stack_direction=0
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
@@ -7630,9 +8257,10 @@ main (int argc, char **argv)
return find_stack_direction (0, argc + !argv + 20) < 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_c_stack_direction=1
-else
+else $as_nop
ac_cv_c_stack_direction=-1
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -7640,58 +8268,44 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+printf "%s\n" "$ac_cv_c_stack_direction" >&6; }
+printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h
fi
-
-
- for ac_header in $ac_header_list
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
+ac_func=
+for ac_item in $ac_func_c_list
+do
+ if test $ac_func; then
+ ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func
+ if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then
+ echo "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_func=
+ else
+ ac_func=$ac_item
+ fi
done
-
-
-
-
-
-
-for ac_func in getpagesize
-do :
- ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPAGESIZE 1
-_ACEOF
-
-fi
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
-$as_echo_n "checking for working mmap... " >&6; }
-if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_mmap_fixed_mapped=no
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
+printf %s "checking for working mmap... " >&6; }
+if test ${ac_cv_func_mmap_fixed_mapped+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in # ((
+ # Guess yes on platforms where we know the result.
+ linux*) ac_cv_func_mmap_fixed_mapped=yes ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_mmap_fixed_mapped=no ;;
+ esac
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
@@ -7723,10 +8337,6 @@ $ac_includes_default
#include <fcntl.h>
#include <sys/mman.h>
-#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
-char *malloc ();
-#endif
-
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
# ifdef _SC_PAGESIZE
@@ -7760,7 +8370,7 @@ char *malloc ();
#endif /* no HAVE_GETPAGESIZE */
int
-main ()
+main (void)
{
char *data, *data2, *data3;
const char *cdata2;
@@ -7828,12 +8438,15 @@ main ()
if (*(data + i) != *(data3 + i))
return 14;
close (fd);
+ free (data);
+ free (data3);
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_mmap_fixed_mapped=yes
-else
+else $as_nop
ac_cv_func_mmap_fixed_mapped=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -7841,22 +8454,23 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
-$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
+printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; }
if test $ac_cv_func_mmap_fixed_mapped = yes; then
-$as_echo "#define HAVE_MMAP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h
fi
rm -f conftest.mmap conftest.txt
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5
-$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; }
-if ${gt_cv_int_divbyzero_sigfpe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5
+printf %s "checking whether integer division by zero raises SIGFPE... " >&6; }
+if test ${gt_cv_int_divbyzero_sigfpe+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gt_cv_int_divbyzero_sigfpe=
case "$host_os" in
@@ -7871,7 +8485,8 @@ else
;;
esac
if test -z "$gt_cv_int_divbyzero_sigfpe"; then
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
# Guess based on the CPU.
case "$host_cpu" in
@@ -7881,7 +8496,7 @@ else
gt_cv_int_divbyzero_sigfpe="guessing no";;
esac
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7918,9 +8533,10 @@ int main ()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
gt_cv_int_divbyzero_sigfpe=yes
-else
+else $as_nop
gt_cv_int_divbyzero_sigfpe=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -7930,24 +8546,23 @@ fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5
-$as_echo "$gt_cv_int_divbyzero_sigfpe" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5
+printf "%s\n" "$gt_cv_int_divbyzero_sigfpe" >&6; }
case "$gt_cv_int_divbyzero_sigfpe" in
*yes) value=1;;
*) value=0;;
esac
-cat >>confdefs.h <<_ACEOF
-#define INTDIV0_RAISES_SIGFPE $value
-_ACEOF
+printf "%s\n" "#define INTDIV0_RAISES_SIGFPE $value" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5
-$as_echo_n "checking for inttypes.h... " >&6; }
-if ${gl_cv_header_inttypes_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5
+printf %s "checking for inttypes.h... " >&6; }
+if test ${gl_cv_header_inttypes_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7955,39 +8570,41 @@ else
#include <inttypes.h>
int
-main ()
+main (void)
{
uintmax_t i = (uintmax_t) -1; return !i;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_header_inttypes_h=yes
-else
+else $as_nop
gl_cv_header_inttypes_h=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5
-$as_echo "$gl_cv_header_inttypes_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5
+printf "%s\n" "$gl_cv_header_inttypes_h" >&6; }
if test $gl_cv_header_inttypes_h = yes; then
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INTTYPES_H_WITH_UINTMAX 1
-_ACEOF
+printf "%s\n" "#define HAVE_INTTYPES_H_WITH_UINTMAX 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+printf %s "checking for unsigned long long int... " >&6; }
+if test ${ac_cv_type_unsigned_long_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_type_unsigned_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ case $ac_prog_cc_stdc in
+ no | c89) ;;
+ *)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* For now, do not test the preprocessor; as of 2007 there are too many
@@ -8005,7 +8622,7 @@ else
? 1 : -1)];
int i = 63;
int
-main ()
+main (void)
{
/* Test availability of runtime routines for shift and division. */
long long int llmax = 9223372036854775807ll;
@@ -8019,20 +8636,21 @@ main ()
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-else
+else $as_nop
ac_cv_type_unsigned_long_long_int=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; }
if test $ac_cv_type_unsigned_long_long_int = yes; then
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
fi
@@ -8045,35 +8663,29 @@ $as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
&& ac_type='unsigned long long' \
|| ac_type='unsigned long'
-cat >>confdefs.h <<_ACEOF
-#define uintmax_t $ac_type
-_ACEOF
+printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h
else
-$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h
fi
- for ac_header in inttypes.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
-if test "x$ac_cv_header_inttypes_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_INTTYPES_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h
fi
-done
-
if test $ac_cv_header_inttypes_h = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5
-$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; }
-if ${gt_cv_inttypes_pri_broken+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5
+printf %s "checking whether the inttypes.h PRIxNN macros are broken... " >&6; }
+if test ${gt_cv_inttypes_pri_broken+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8084,29 +8696,28 @@ char *p = PRId32;
#endif
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gt_cv_inttypes_pri_broken=no
-else
+else $as_nop
gt_cv_inttypes_pri_broken=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5
-$as_echo "$gt_cv_inttypes_pri_broken" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_inttypes_pri_broken" >&5
+printf "%s\n" "$gt_cv_inttypes_pri_broken" >&6; }
fi
if test "$gt_cv_inttypes_pri_broken" = yes; then
-cat >>confdefs.h <<_ACEOF
-#define PRI_MACROS_BROKEN 1
-_ACEOF
+printf "%s\n" "#define PRI_MACROS_BROKEN 1" >>confdefs.h
PRI_MACROS_BROKEN=1
else
@@ -8120,9 +8731,10 @@ _ACEOF
# Check whether --enable-threads was given.
-if test "${enable_threads+set}" = set; then :
+if test ${enable_threads+y}
+then :
enableval=$enable_threads; gl_use_threads=$enableval
-else
+else $as_nop
if test -n "$gl_use_threads_default"; then
gl_use_threads="$gl_use_threads_default"
else
@@ -8157,7 +8769,7 @@ fi
# need special flags to disable these optimizations. For example, the
# definition of 'errno' in <errno.h>.
case "$host_os" in
- aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+ aix* | freebsd* | midnightbsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
esac
fi
@@ -8184,9 +8796,10 @@ fi
# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
+if test ${with_gnu_ld+y}
+then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
+else $as_nop
with_gnu_ld=no
fi
@@ -8204,25 +8817,26 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld" >&5
-$as_echo_n "checking for ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld" >&5
+printf %s "checking for ld... " >&6; }
elif test "$GCC" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+printf %s "checking for ld used by $CC... " >&6; }
elif test "$with_gnu_ld" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+printf %s "checking for GNU ld... " >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+printf %s "checking for non-GNU ld... " >&6; }
fi
if test -n "$LD"; then
# Let the user override the test with a path.
:
else
- if ${acl_cv_path_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${acl_cv_path_LD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
acl_cv_path_LD= # Final result of this test
ac_prog=ld # Program to search in $PATH
@@ -8291,7 +8905,8 @@ else
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
# The compiler produces 64-bit code. Add option '-b64' so that the
# linker groks 64-bit object files.
case "$acl_cv_path_LD " in
@@ -8300,7 +8915,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
sparc64-*-netbsd*)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8312,9 +8927,10 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
# The compiler produces 32-bit code. Add option '-m elf32_sparc'
# so that the linker groks 32-bit object files.
case "$acl_cv_path_LD " in
@@ -8323,7 +8939,7 @@ else
esac
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
esac
@@ -8332,18 +8948,19 @@ fi
LD="$acl_cv_path_LD"
fi
if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${acl_cv_prog_gnu_ld+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
+if test ${acl_cv_prog_gnu_ld+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
@@ -8354,18 +8971,21 @@ case `$LD -v 2>&1 </dev/null` in
;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
-$as_echo "$acl_cv_prog_gnu_ld" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
+printf "%s\n" "$acl_cv_prog_gnu_ld" >&6; }
with_gnu_ld=$acl_cv_prog_gnu_ld
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
-$as_echo_n "checking for shared library run path origin... " >&6; }
-if ${acl_cv_rpath+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
+printf %s "checking for shared library run path origin... " >&6; }
+if test ${acl_cv_rpath+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
@@ -8374,8 +8994,8 @@ else
acl_cv_rpath=done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
-$as_echo "$acl_cv_rpath" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
+printf "%s\n" "$acl_cv_rpath" >&6; }
wl="$acl_cv_wl"
acl_libext="$acl_cv_libext"
acl_shlibext="$acl_cv_shlibext"
@@ -8386,20 +9006,22 @@ $as_echo "$acl_cv_rpath" >&6; }
acl_hardcode_direct="$acl_cv_hardcode_direct"
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
# Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then :
+if test ${enable_rpath+y}
+then :
enableval=$enable_rpath; :
-else
+else $as_nop
enable_rpath=yes
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5
-$as_echo_n "checking 32-bit host C ABI... " >&6; }
-if ${gl_cv_host_cpu_c_abi_32bit+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5
+printf %s "checking 32-bit host C ABI... " >&6; }
+if test ${gl_cv_host_cpu_c_abi_32bit+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$gl_cv_host_cpu_c_abi"; then
case "$gl_cv_host_cpu_c_abi" in
i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
@@ -8433,12 +9055,13 @@ else
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi_32bit=no
-else
+else $as_nop
gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
arm* | aarch64 )
@@ -8457,12 +9080,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi_32bit=no
-else
+else $as_nop
gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
@@ -8477,12 +9101,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi_32bit=no
-else
+else $as_nop
gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
ia64* )
@@ -8497,12 +9122,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi_32bit=yes
-else
+else $as_nop
gl_cv_host_cpu_c_abi_32bit=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
mips* )
@@ -8517,12 +9143,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi_32bit=no
-else
+else $as_nop
gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
powerpc* )
@@ -8541,12 +9168,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi_32bit=no
-else
+else $as_nop
gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
rs6000 )
@@ -8565,12 +9193,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi_32bit=no
-else
+else $as_nop
gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
s390* )
@@ -8585,12 +9214,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi_32bit=no
-else
+else $as_nop
gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
sparc | sparc64 )
@@ -8605,12 +9235,13 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_host_cpu_c_abi_32bit=no
-else
+else $as_nop
gl_cv_host_cpu_c_abi_32bit=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
*)
@@ -8620,8 +9251,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5
-$as_echo "$gl_cv_host_cpu_c_abi_32bit" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5
+printf "%s\n" "$gl_cv_host_cpu_c_abi_32bit" >&6; }
HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
@@ -8631,11 +9262,12 @@ $as_echo "$gl_cv_host_cpu_c_abi_32bit" >&6; }
case "$host_os" in
solaris*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
-$as_echo_n "checking for 64-bit host... " >&6; }
-if ${gl_cv_solaris_64bit+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
+printf %s "checking for 64-bit host... " >&6; }
+if test ${gl_cv_solaris_64bit+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef _LP64
@@ -8645,23 +9277,25 @@ else
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_solaris_64bit=yes
-else
+else $as_nop
gl_cv_solaris_64bit=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
-$as_echo "$gl_cv_solaris_64bit" >&6; };;
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
+printf "%s\n" "$gl_cv_solaris_64bit" >&6; };;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5
-$as_echo_n "checking for the common suffixes of directories in the library search path... " >&6; }
-if ${acl_cv_libdirstems+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5
+printf %s "checking for the common suffixes of directories in the library search path... " >&6; }
+if test ${acl_cv_libdirstems+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
acl_libdirstem=lib
acl_libdirstem2=
case "$host_os" in
@@ -8708,8 +9342,8 @@ else
acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5
-$as_echo "$acl_cv_libdirstems" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5
+printf "%s\n" "$acl_cv_libdirstems" >&6; }
# Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2.
acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'`
@@ -8722,31 +9356,34 @@ $as_echo "$acl_cv_libdirstems" >&6; }
LIBMULTITHREAD=
LTLIBMULTITHREAD=
if test "$gl_use_threads" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
-$as_echo_n "checking whether imported symbols can be declared weak... " >&6; }
-if ${gl_cv_have_weak+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
+printf %s "checking whether imported symbols can be declared weak... " >&6; }
+if test ${gl_cv_have_weak+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gl_cv_have_weak=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
extern void xyzzy ();
#pragma weak xyzzy
int
-main ()
+main (void)
{
xyzzy();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gl_cv_have_weak=maybe
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test $gl_cv_have_weak = maybe; then
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef __ELF__
@@ -8755,15 +9392,16 @@ rm -f core conftest.err conftest.$ac_objext \
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Extensible Linking Format" >/dev/null 2>&1; then :
+ $EGREP "Extensible Linking Format" >/dev/null 2>&1
+then :
gl_cv_have_weak="guessing yes"
-else
+else $as_nop
gl_cv_have_weak="guessing no"
fi
-rm -f conftest*
+rm -rf conftest*
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8774,9 +9412,10 @@ int main ()
return (fputs == NULL);
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
gl_cv_have_weak=yes
-else
+else $as_nop
gl_cv_have_weak=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -8789,19 +9428,19 @@ fi
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
-$as_echo "$gl_cv_have_weak" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
+printf "%s\n" "$gl_cv_have_weak" >&6; }
if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
# On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
# it groks <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 :
+ ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes
+then :
gl_have_pthread_h=yes
-else
+else $as_nop
gl_have_pthread_h=no
fi
-
if test "$gl_have_pthread_h" = yes; then
# Other possible tests:
# -lpthreads (FSU threads, PCthreads)
@@ -8824,7 +9463,7 @@ fi
pthread_mutexattr_t ma;
int
-main ()
+main (void)
{
pthread_mutex_lock (&m);
pthread_mutexattr_init (&ma);
@@ -8832,12 +9471,13 @@ pthread_mutex_lock (&m);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gl_have_pthread=yes
LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread
LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$save_LIBS
test -n "$gl_have_pthread" && break
@@ -8848,11 +9488,12 @@ rm -f core conftest.err conftest.$ac_objext \
if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then
# The program links fine without libpthread. But it may actually
# need to link with libpthread in order to create multiple threads.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
-$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+printf %s "checking for pthread_kill in -lpthread... " >&6; }
+if test ${ac_cv_lib_pthread_pthread_kill+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthread $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8861,30 +9502,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char pthread_kill ();
int
-main ()
+main (void)
{
return pthread_kill ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pthread_pthread_kill=yes
-else
+else $as_nop
ac_cv_lib_pthread_pthread_kill=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes
+then :
LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
# On Solaris and HP-UX, most pthread functions exist also in libc.
# Therefore pthread_in_use() needs to actually try to create a
@@ -8895,7 +9535,7 @@ if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
case "$host_os" in
solaris | solaris2.1-9 | solaris2.1-9.* | hpux*)
-$as_echo "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h
+printf "%s\n" "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h
esac
@@ -8903,11 +9543,12 @@ fi
elif test -z "$gl_have_pthread"; then
# Some library is needed. Try libpthread and libc_r.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
-$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+printf %s "checking for pthread_kill in -lpthread... " >&6; }
+if test ${ac_cv_lib_pthread_pthread_kill+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthread $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8916,30 +9557,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char pthread_kill ();
int
-main ()
+main (void)
{
return pthread_kill ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pthread_pthread_kill=yes
-else
+else $as_nop
ac_cv_lib_pthread_pthread_kill=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
-$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
-if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+printf "%s\n" "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes
+then :
gl_have_pthread=yes
LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
@@ -8947,11 +9587,12 @@ fi
if test -z "$gl_have_pthread"; then
# For FreeBSD 4.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
-$as_echo_n "checking for pthread_kill in -lc_r... " >&6; }
-if ${ac_cv_lib_c_r_pthread_kill+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
+printf %s "checking for pthread_kill in -lc_r... " >&6; }
+if test ${ac_cv_lib_c_r_pthread_kill+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lc_r $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8960,30 +9601,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char pthread_kill ();
int
-main ()
+main (void)
{
return pthread_kill ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_c_r_pthread_kill=yes
-else
+else $as_nop
ac_cv_lib_c_r_pthread_kill=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5
-$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; }
-if test "x$ac_cv_lib_c_r_pthread_kill" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5
+printf "%s\n" "$ac_cv_lib_c_r_pthread_kill" >&6; }
+if test "x$ac_cv_lib_c_r_pthread_kill" = xyes
+then :
gl_have_pthread=yes
LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r
@@ -8994,12 +9634,12 @@ fi
if test -n "$gl_have_pthread"; then
gl_threads_api=posix
-$as_echo "#define USE_POSIX_THREADS 1" >>confdefs.h
+printf "%s\n" "#define USE_POSIX_THREADS 1" >>confdefs.h
if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-$as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h
+printf "%s\n" "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h
LIBTHREAD=
LTLIBTHREAD=
@@ -9020,17 +9660,18 @@ $as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h
#include <synch.h>
int
-main ()
+main (void)
{
thr_self();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gl_have_solaristhread=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$gl_save_LIBS"
if test -n "$gl_have_solaristhread"; then
@@ -9040,11 +9681,11 @@ rm -f core conftest.err conftest.$ac_objext \
LIBMULTITHREAD="$LIBTHREAD"
LTLIBMULTITHREAD="$LTLIBTHREAD"
-$as_echo "#define USE_SOLARIS_THREADS 1" >>confdefs.h
+printf "%s\n" "#define USE_SOLARIS_THREADS 1" >>confdefs.h
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-$as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h
+printf "%s\n" "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h
LIBTHREAD=
LTLIBTHREAD=
@@ -9059,11 +9700,12 @@ $as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5
-$as_echo_n "checking how to link with libpth... " >&6; }
-if ${ac_cv_libpth_libs+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5
+printf %s "checking how to link with libpth... " >&6; }
+if test ${ac_cv_libpth_libs+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
@@ -9086,7 +9728,8 @@ else
# Check whether --with-libpth-prefix was given.
-if test "${with_libpth_prefix+set}" = set; then :
+if test ${with_libpth_prefix+y}
+then :
withval=$with_libpth_prefix;
if test "X$withval" = "Xno"; then
use_additional=no
@@ -9530,8 +10173,8 @@ fi
ac_cv_libpth_prefix="$LIBPTH_PREFIX"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5
-$as_echo "$ac_cv_libpth_libs" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5
+printf "%s\n" "$ac_cv_libpth_libs" >&6; }
LIBPTH="$ac_cv_libpth_libs"
LTLIBPTH="$ac_cv_libpth_ltlibs"
INCPTH="$ac_cv_libpth_cppflags"
@@ -9573,17 +10216,18 @@ $as_echo "$ac_cv_libpth_libs" >&6; }
/* end confdefs.h. */
#include <pth.h>
int
-main ()
+main (void)
{
pth_self();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gl_have_pth=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$gl_save_LIBS"
if test -n "$gl_have_pth"; then
@@ -9593,12 +10237,12 @@ rm -f core conftest.err conftest.$ac_objext \
LIBMULTITHREAD="$LIBTHREAD"
LTLIBMULTITHREAD="$LTLIBTHREAD"
-$as_echo "#define USE_PTH_THREADS 1" >>confdefs.h
+printf "%s\n" "#define USE_PTH_THREADS 1" >>confdefs.h
if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
-$as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h
+printf "%s\n" "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h
LIBTHREAD=
LTLIBTHREAD=
@@ -9618,17 +10262,17 @@ $as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h
}; then
gl_threads_api=windows
-$as_echo "#define USE_WINDOWS_THREADS 1" >>confdefs.h
+printf "%s\n" "#define USE_WINDOWS_THREADS 1" >>confdefs.h
fi
;;
esac
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5
-$as_echo_n "checking for multithread API to use... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5
-$as_echo "$gl_threads_api" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5
+printf %s "checking for multithread API to use... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5
+printf "%s\n" "$gl_threads_api" >&6; }
@@ -9646,26 +10290,29 @@ $as_echo "$gl_threads_api" >&6; }
has_rwlock=false
ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include <pthread.h>
"
-if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then :
+if test "x$ac_cv_type_pthread_rwlock_t" = xyes
+then :
has_rwlock=true
-$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h
fi
if $has_rwlock; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_rwlock_rdlock prefers a writer to a reader" >&5
-$as_echo_n "checking whether pthread_rwlock_rdlock prefers a writer to a reader... " >&6; }
-if ${gl_cv_pthread_rwlock_rdlock_prefer_writer+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthread_rwlock_rdlock prefers a writer to a reader" >&5
+printf %s "checking whether pthread_rwlock_rdlock prefers a writer to a reader... " >&6; }
+if test ${gl_cv_pthread_rwlock_rdlock_prefer_writer+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
save_LIBS="$LIBS"
LIBS="$LIBS $LIBMULTITHREAD"
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -9781,9 +10428,10 @@ main ()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
gl_cv_pthread_rwlock_rdlock_prefer_writer=yes
-else
+else $as_nop
gl_cv_pthread_rwlock_rdlock_prefer_writer=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -9793,12 +10441,12 @@ fi
LIBS="$save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pthread_rwlock_rdlock_prefer_writer" >&5
-$as_echo "$gl_cv_pthread_rwlock_rdlock_prefer_writer" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pthread_rwlock_rdlock_prefer_writer" >&5
+printf "%s\n" "$gl_cv_pthread_rwlock_rdlock_prefer_writer" >&6; }
case "$gl_cv_pthread_rwlock_rdlock_prefer_writer" in
*yes)
-$as_echo "#define HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER 1" >>confdefs.h
;;
esac
@@ -9810,7 +10458,7 @@ $as_echo "#define HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER 1" >>confdefs.h
#include <pthread.h>
int
-main ()
+main (void)
{
#if __FreeBSD__ == 4
@@ -9827,15 +10475,96 @@ return !x;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
:
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test ${ac_cv_c_undeclared_builtin_options+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_CFLAGS=$CFLAGS
+ ac_cv_c_undeclared_builtin_options='cannot detect'
+ for ac_arg in '' -fno-builtin; do
+ CFLAGS="$ac_save_CFLAGS $ac_arg"
+ # This test program should *not* compile successfully.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+(void) strchr;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+ # This test program should compile successfully.
+ # No library function is consistently available on
+ # freestanding implementations, so test against a dummy
+ # declaration. Include always-available headers on the
+ # off chance that they somehow elicit warnings.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <float.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stddef.h>
+extern void ac_decl (int, char *);
+
+int
+main (void)
+{
+(void) ac_decl (0, (char *) 0);
+ (void) ac_decl;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ if test x"$ac_arg" = x
+then :
+ ac_cv_c_undeclared_builtin_options='none needed'
+else $as_nop
+ ac_cv_c_undeclared_builtin_options=$ac_arg
+fi
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ done
+ CFLAGS=$ac_save_CFLAGS
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+ case $ac_cv_c_undeclared_builtin_options in #(
+ 'cannot detect') :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot make $CC report undeclared builtins
+See \`config.log' for more details" "$LINENO" 5; } ;; #(
+ 'none needed') :
+ ac_c_undeclared_builtin_options='' ;; #(
+ *) :
+ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+esac
+
@@ -9861,7 +10590,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# Check whether --with-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then :
+if test ${with_libiconv_prefix+y}
+then :
withval=$with_libiconv_prefix;
if test "X$withval" = "Xno"; then
use_additional=no
@@ -10330,11 +11060,12 @@ fi
done
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
-$as_echo_n "checking for iconv... " >&6; }
-if ${am_cv_func_iconv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+printf %s "checking for iconv... " >&6; }
+if test ${am_cv_func_iconv+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
@@ -10345,7 +11076,7 @@ else
#include <iconv.h>
int
-main ()
+main (void)
{
iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL);
@@ -10354,10 +11085,11 @@ iconv_t cd = iconv_open("","");
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
am_cv_func_iconv=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test "$am_cv_func_iconv" != yes; then
am_save_LIBS="$LIBS"
@@ -10369,7 +11101,7 @@ rm -f core conftest.err conftest.$ac_objext \
#include <iconv.h>
int
-main ()
+main (void)
{
iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL);
@@ -10378,24 +11110,26 @@ iconv_t cd = iconv_open("","");
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$am_save_LIBS"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
-$as_echo "$am_cv_func_iconv" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+printf "%s\n" "$am_cv_func_iconv" >&6; }
if test "$am_cv_func_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
-$as_echo_n "checking for working iconv... " >&6; }
-if ${am_cv_func_iconv_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+printf %s "checking for working iconv... " >&6; }
+if test ${am_cv_func_iconv_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
am_save_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
@@ -10403,12 +11137,13 @@ else
fi
am_cv_func_iconv_works=no
for ac_iconv_const in '' 'const'; do
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
case "$host_os" in
aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
*) am_cv_func_iconv_works="guessing yes" ;;
esac
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10420,7 +11155,7 @@ else
#endif
int
-main ()
+main (void)
{
int result = 0;
/* Test against AIX 5.1 bug: Failures are not distinguishable from successful
@@ -10532,7 +11267,8 @@ int result = 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
am_cv_func_iconv_works=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -10544,8 +11280,8 @@ fi
LIBS="$am_save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
-$as_echo "$am_cv_func_iconv_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+printf "%s\n" "$am_cv_func_iconv_works" >&6; }
case "$am_cv_func_iconv_works" in
*no) am_func_iconv=no am_cv_lib_iconv=no ;;
*) am_func_iconv=yes ;;
@@ -10555,14 +11291,14 @@ $as_echo "$am_cv_func_iconv_works" >&6; }
fi
if test "$am_func_iconv" = yes; then
-$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h
fi
if test "$am_cv_lib_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
-$as_echo_n "checking how to link with libiconv... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
-$as_echo "$LIBICONV" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+printf %s "checking how to link with libiconv... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+printf "%s\n" "$LIBICONV" >&6; }
else
CPPFLAGS="$am_save_CPPFLAGS"
LIBICONV=
@@ -10572,11 +11308,12 @@ $as_echo "$LIBICONV" >&6; }
if test "$am_cv_func_iconv" = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
-$as_echo_n "checking for iconv declaration... " >&6; }
- if ${am_cv_proto_iconv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
+printf %s "checking for iconv declaration... " >&6; }
+ if test ${am_cv_proto_iconv+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10594,34 +11331,33 @@ size_t iconv();
#endif
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
am_cv_proto_iconv_arg1=""
-else
+else $as_nop
am_cv_proto_iconv_arg1="const"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
fi
am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result:
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result:
$am_cv_proto_iconv" >&5
-$as_echo "
+printf "%s\n" "
$am_cv_proto_iconv" >&6; }
else
am_cv_proto_iconv_arg1=""
fi
-cat >>confdefs.h <<_ACEOF
-#define ICONV_CONST $am_cv_proto_iconv_arg1
-_ACEOF
+printf "%s\n" "#define ICONV_CONST $am_cv_proto_iconv_arg1" >>confdefs.h
@@ -10632,83 +11368,177 @@ _ACEOF
/* end confdefs.h. */
int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-$as_echo "#define HAVE_BUILTIN_EXPECT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BUILTIN_EXPECT 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
- for ac_header in argz.h inttypes.h limits.h unistd.h sys/param.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "argz.h" "ac_cv_header_argz_h" "$ac_includes_default"
+if test "x$ac_cv_header_argz_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARGZ_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default"
+if test "x$ac_cv_header_limits_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h
- for ac_func in getcwd getegid geteuid getgid getuid mempcpy munmap \
- stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \
- argz_next __fsetlocking
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
fi
-done
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_param_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
+fi
- for ac_func in localeconv
-do :
- ac_fn_c_check_func "$LINENO" "localeconv" "ac_cv_func_localeconv"
-if test "x$ac_cv_func_localeconv" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LOCALECONV 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd"
+if test "x$ac_cv_func_getcwd" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "getegid" "ac_cv_func_getegid"
+if test "x$ac_cv_func_getegid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETEGID 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "geteuid" "ac_cv_func_geteuid"
+if test "x$ac_cv_func_geteuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETEUID 1" >>confdefs.h
- 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 :
+fi
+ac_fn_c_check_func "$LINENO" "getgid" "ac_cv_func_getgid"
+if test "x$ac_cv_func_getgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getuid" "ac_cv_func_getuid"
+if test "x$ac_cv_func_getuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy"
+if test "x$ac_cv_func_mempcpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "munmap" "ac_cv_func_munmap"
+if test "x$ac_cv_func_munmap" = xyes
+then :
+ printf "%s\n" "#define HAVE_MUNMAP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy"
+if test "x$ac_cv_func_stpcpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_STPCPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
+if test "x$ac_cv_func_strcasecmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
+if test "x$ac_cv_func_strdup" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul"
+if test "x$ac_cv_func_strtoul" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOUL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "tsearch" "ac_cv_func_tsearch"
+if test "x$ac_cv_func_tsearch" = xyes
+then :
+ printf "%s\n" "#define HAVE_TSEARCH 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "argz_count" "ac_cv_func_argz_count"
+if test "x$ac_cv_func_argz_count" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARGZ_COUNT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "argz_stringify" "ac_cv_func_argz_stringify"
+if test "x$ac_cv_func_argz_stringify" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARGZ_STRINGIFY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "argz_next" "ac_cv_func_argz_next"
+if test "x$ac_cv_func_argz_next" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARGZ_NEXT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "__fsetlocking" "ac_cv_func___fsetlocking"
+if test "x$ac_cv_func___fsetlocking" = xyes
+then :
+ printf "%s\n" "#define HAVE___FSETLOCKING 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_c_check_func "$LINENO" "localeconv" "ac_cv_func_localeconv"
+if test "x$ac_cv_func_localeconv" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCALECONV 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "#include <stdio.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_feof_unlocked" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl_fgets_unlocked" = xyes; then :
+printf "%s\n" "#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "#include <stdio.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_fgets_unlocked" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl" >>confdefs.h
@@ -10717,11 +11547,12 @@ _ACEOF
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_INTLBISON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_INTLBISON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$INTLBISON"; then
ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test.
else
@@ -10729,11 +11560,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_INTLBISON="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -10744,11 +11579,11 @@ fi
fi
INTLBISON=$ac_cv_prog_INTLBISON
if test -n "$INTLBISON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5
-$as_echo "$INTLBISON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5
+printf "%s\n" "$INTLBISON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -10758,8 +11593,8 @@ done
if test -z "$INTLBISON"; then
ac_verc_fail=yes
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5
-$as_echo_n "checking version of bison... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5
+printf %s "checking version of bison... " >&6; }
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
@@ -10767,8 +11602,8 @@ $as_echo_n "checking version of bison... " >&6; }
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+printf "%s\n" "$ac_prog_version" >&6; }
fi
if test $ac_verc_fail = yes; then
INTLBISON=:
@@ -10776,103 +11611,111 @@ $as_echo "$ac_prog_version" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-$as_echo_n "checking for long long int... " >&6; }
-if ${ac_cv_type_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+printf %s "checking for long long int... " >&6; }
+if test ${ac_cv_type_long_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_type_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
- if test $ac_cv_type_long_long_int = yes; then
- if test "$cross_compiling" = yes; then :
+ case $ac_prog_cc_stdc in
+ no | c89) ;;
+ *)
+ ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+ if test $ac_cv_type_long_long_int = yes; then
+ if test "$cross_compiling" = yes
+then :
:
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
- #ifndef LLONG_MAX
- # define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- # define LLONG_MAX (HALF - 1 + HALF)
- #endif
+ #ifndef LLONG_MAX
+ # define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ # define LLONG_MAX (HALF - 1 + HALF)
+ #endif
int
-main ()
+main (void)
{
long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
-else
+else $as_nop
ac_cv_type_long_long_int=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- fi
- fi
+ fi;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
-$as_echo "$ac_cv_type_long_long_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_long_long_int" >&6; }
if test $ac_cv_type_long_long_int = yes; then
-$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
-$as_echo_n "checking for wchar_t... " >&6; }
-if ${gt_cv_c_wchar_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+printf %s "checking for wchar_t... " >&6; }
+if test ${gt_cv_c_wchar_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stddef.h>
wchar_t foo = (wchar_t)'\0';
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gt_cv_c_wchar_t=yes
-else
+else $as_nop
gt_cv_c_wchar_t=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
-$as_echo "$gt_cv_c_wchar_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+printf "%s\n" "$gt_cv_c_wchar_t" >&6; }
if test $gt_cv_c_wchar_t = yes; then
-$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_WCHAR_T 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
-$as_echo_n "checking for wint_t... " >&6; }
-if ${gt_cv_c_wint_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+printf %s "checking for wint_t... " >&6; }
+if test ${gt_cv_c_wint_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10886,32 +11729,34 @@ else
#include <wchar.h>
wint_t foo = (wchar_t)'\0';
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gt_cv_c_wint_t=yes
-else
+else $as_nop
gt_cv_c_wint_t=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
-$as_echo "$gt_cv_c_wint_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+printf "%s\n" "$gt_cv_c_wint_t" >&6; }
if test $gt_cv_c_wint_t = yes; then
-$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_WINT_T 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5
-$as_echo_n "checking whether wint_t is too small... " >&6; }
-if ${gl_cv_type_wint_t_too_small+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5
+printf %s "checking whether wint_t is too small... " >&6; }
+if test ${gl_cv_type_wint_t_too_small+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10928,22 +11773,23 @@ else
int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gl_cv_type_wint_t_too_small=no
-else
+else $as_nop
gl_cv_type_wint_t_too_small=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5
-$as_echo "$gl_cv_type_wint_t_too_small" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5
+printf "%s\n" "$gl_cv_type_wint_t_too_small" >&6; }
if test $gl_cv_type_wint_t_too_small = yes; then
GNULIB_OVERRIDES_WINT_T=1
else
@@ -10957,11 +11803,12 @@ $as_echo "$gl_cv_type_wint_t_too_small" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5
-$as_echo_n "checking for intmax_t... " >&6; }
-if ${gt_cv_c_intmax_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5
+printf %s "checking for intmax_t... " >&6; }
+if test ${gt_cv_c_intmax_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10975,7 +11822,7 @@ else
#endif
int
-main ()
+main (void)
{
intmax_t x = -1;
return !x;
@@ -10983,30 +11830,33 @@ intmax_t x = -1;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gt_cv_c_intmax_t=yes
-else
+else $as_nop
gt_cv_c_intmax_t=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5
-$as_echo "$gt_cv_c_intmax_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5
+printf "%s\n" "$gt_cv_c_intmax_t" >&6; }
if test $gt_cv_c_intmax_t = yes; then
-$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5
-$as_echo_n "checking whether printf() supports POSIX/XSI format strings... " >&6; }
-if ${gt_cv_func_printf_posix+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5
+printf %s "checking whether printf() supports POSIX/XSI format strings... " >&6; }
+if test ${gt_cv_func_printf_posix+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
- if test "$cross_compiling" = yes; then :
+ if test "$cross_compiling" = yes
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11017,15 +11867,16 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "notposix" >/dev/null 2>&1; then :
+ $EGREP "notposix" >/dev/null 2>&1
+then :
gt_cv_func_printf_posix="guessing no"
-else
+else $as_nop
gt_cv_func_printf_posix="guessing yes"
fi
-rm -f conftest*
+rm -rf conftest*
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11041,9 +11892,10 @@ int main ()
return (strcmp (buf, "55 33") != 0);
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
gt_cv_func_printf_posix=yes
-else
+else $as_nop
gt_cv_func_printf_posix=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -11052,22 +11904,23 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5
-$as_echo "$gt_cv_func_printf_posix" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5
+printf "%s\n" "$gt_cv_func_printf_posix" >&6; }
case $gt_cv_func_printf_posix in
*yes)
-$as_echo "#define HAVE_POSIX_PRINTF 1" >>confdefs.h
+printf "%s\n" "#define HAVE_POSIX_PRINTF 1" >>confdefs.h
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
-$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
-if ${ac_cv_gnu_library_2_1+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
+printf %s "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
+if test ${ac_cv_gnu_library_2_1+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11083,40 +11936,37 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky" >/dev/null 2>&1; then :
+ $EGREP "Lucky" >/dev/null 2>&1
+then :
ac_cv_gnu_library_2_1=yes
-else
+else $as_nop
ac_cv_gnu_library_2_1=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
-$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
+printf "%s\n" "$ac_cv_gnu_library_2_1" >&6; }
GLIBC21="$ac_cv_gnu_library_2_1"
- for ac_header in stdint.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdint_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h
fi
-done
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5
-$as_echo_n "checking for SIZE_MAX... " >&6; }
-if ${gl_cv_size_max+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5
+printf %s "checking for SIZE_MAX... " >&6; }
+if test ${gl_cv_size_max+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gl_cv_size_max=
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11132,22 +11982,25 @@ Found it
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Found it" >/dev/null 2>&1; then :
+ $EGREP "Found it" >/dev/null 2>&1
+then :
gl_cv_size_max=yes
fi
-rm -f conftest*
+rm -rf conftest*
if test -z "$gl_cv_size_max"; then
if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include <stddef.h>
-#include <limits.h>"; then :
+#include <limits.h>"
+then :
-else
+else $as_nop
size_t_bits_minus_1=
fi
- if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include <stddef.h>"; then :
+ if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include <stddef.h>"
+then :
-else
+else $as_nop
fits_in_uint=
fi
@@ -11160,17 +12013,18 @@ fi
extern unsigned long foo;
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
fits_in_uint=0
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test $fits_in_uint = 1; then
gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
@@ -11183,67 +12037,46 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5
-$as_echo "$gl_cv_size_max" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5
+printf "%s\n" "$gl_cv_size_max" >&6; }
if test "$gl_cv_size_max" != yes; then
-cat >>confdefs.h <<_ACEOF
-#define SIZE_MAX $gl_cv_size_max
-_ACEOF
+printf "%s\n" "#define SIZE_MAX $gl_cv_size_max" >>confdefs.h
fi
- for ac_header in stdint.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdint_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h
fi
-done
- 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 :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
+printf %s "checking for working fcntl.h... " >&6; }
+if test ${gl_cv_header_working_fcntl_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
case "$host_os" in
# Guess 'no' on native Windows.
mingw*) gl_cv_header_working_fcntl_h='no' ;;
*) gl_cv_header_working_fcntl_h=cross-compiling ;;
esac
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -11269,7 +12102,7 @@ else
};
int
-main ()
+main (void)
{
int result = !constants;
@@ -11339,9 +12172,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
gl_cv_header_working_fcntl_h=yes
-else
+else $as_nop
case $? in #(
4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
@@ -11355,17 +12189,15 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
-$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
+printf "%s\n" "$gl_cv_header_working_fcntl_h" >&6; }
case $gl_cv_header_working_fcntl_h in #(
*O_NOATIME* | no | cross-compiling) ac_val=0;; #(
*) ac_val=1;;
esac
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOATIME $ac_val
-_ACEOF
+printf "%s\n" "#define HAVE_WORKING_O_NOATIME $ac_val" >>confdefs.h
case $gl_cv_header_working_fcntl_h in #(
@@ -11373,11 +12205,7 @@ _ACEOF
*) ac_val=1;;
esac
-cat >>confdefs.h <<_ACEOF
-#define HAVE_WORKING_O_NOFOLLOW $ac_val
-_ACEOF
-
-
+printf "%s\n" "#define HAVE_WORKING_O_NOFOLLOW $ac_val" >>confdefs.h
@@ -11394,19 +12222,21 @@ _ACEOF
if test $ac_cv_func_uselocale = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether uselocale works" >&5
-$as_echo_n "checking whether uselocale works... " >&6; }
-if ${gt_cv_func_uselocale_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether uselocale works" >&5
+printf %s "checking whether uselocale works... " >&6; }
+if test ${gt_cv_func_uselocale_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
# Guess no on AIX, yes otherwise.
case "$host_os" in
aix*) gt_cv_func_uselocale_works="guessing no" ;;
*) gt_cv_func_uselocale_works="guessing yes" ;;
esac
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11421,9 +12251,10 @@ int main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
gt_cv_func_uselocale_works=yes
-else
+else $as_nop
gt_cv_func_uselocale_works=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -11432,15 +12263,15 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_uselocale_works" >&5
-$as_echo "$gt_cv_func_uselocale_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_uselocale_works" >&5
+printf "%s\n" "$gt_cv_func_uselocale_works" >&6; }
else
gt_cv_func_uselocale_works=no
fi
case "$gt_cv_func_uselocale_works" in
*yes)
-$as_echo "#define HAVE_WORKING_USELOCALE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_WORKING_USELOCALE 1" >>confdefs.h
;;
esac
@@ -11449,18 +12280,20 @@ $as_echo "#define HAVE_WORKING_USELOCALE 1" >>confdefs.h
case "$gt_cv_func_uselocale_works" in
*yes)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fake locale system (OpenBSD)" >&5
-$as_echo_n "checking for fake locale system (OpenBSD)... " >&6; }
-if ${gt_cv_locale_fake+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fake locale system (OpenBSD)" >&5
+printf %s "checking for fake locale system (OpenBSD)... " >&6; }
+if test ${gt_cv_locale_fake+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
case "$host_os" in
openbsd*) gt_cv_locale_fake="guessing yes" ;;
*) gt_cv_locale_fake="guessing no" ;;
esac
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -11478,9 +12311,10 @@ int main ()
return !(loc1 == loc2);
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
gt_cv_locale_fake=yes
-else
+else $as_nop
gt_cv_locale_fake=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -11489,26 +12323,27 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fake" >&5
-$as_echo "$gt_cv_locale_fake" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fake" >&5
+printf "%s\n" "$gt_cv_locale_fake" >&6; }
;;
*) gt_cv_locale_fake=no ;;
esac
case "$gt_cv_locale_fake" in
*yes)
-$as_echo "#define HAVE_FAKE_LOCALES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FAKE_LOCALES 1" >>confdefs.h
;;
esac
case "$gt_cv_func_uselocale_works" in
*yes)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris 11.4 locale system" >&5
-$as_echo_n "checking for Solaris 11.4 locale system... " >&6; }
-if ${gt_cv_locale_solaris114+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Solaris 11.4 locale system" >&5
+printf %s "checking for Solaris 11.4 locale system... " >&6; }
+if test ${gt_cv_locale_solaris114+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case "$host_os" in
solaris*)
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11519,47 +12354,44 @@ else
locale_t y;
int
-main ()
+main (void)
{
*y = x;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
gt_cv_locale_solaris114=yes
-else
+else $as_nop
gt_cv_locale_solaris114=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
*) gt_cv_locale_solaris114=no ;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_solaris114" >&5
-$as_echo "$gt_cv_locale_solaris114" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_solaris114" >&5
+printf "%s\n" "$gt_cv_locale_solaris114" >&6; }
;;
*) gt_cv_locale_solaris114=no ;;
esac
if test $gt_cv_locale_solaris114 = yes; then
-$as_echo "#define HAVE_SOLARIS114_LOCALES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SOLARIS114_LOCALES 1" >>confdefs.h
fi
case "$gt_cv_func_uselocale_works" in
*yes)
- for ac_func in getlocalename_l
-do :
- ac_fn_c_check_func "$LINENO" "getlocalename_l" "ac_cv_func_getlocalename_l"
-if test "x$ac_cv_func_getlocalename_l" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETLOCALENAME_L 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getlocalename_l" "ac_cv_func_getlocalename_l"
+if test "x$ac_cv_func_getlocalename_l" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETLOCALENAME_L 1" >>confdefs.h
fi
-done
;;
esac
@@ -11568,111 +12400,117 @@ done
if false; then
gt_nameless_locales=yes
-$as_echo "#define HAVE_NAMELESS_LOCALES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_NAMELESS_LOCALES 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
-$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
-if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+printf %s "checking for CFPreferencesCopyAppValue... " >&6; }
+if test ${gt_cv_func_CFPreferencesCopyAppValue+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <CoreFoundation/CFPreferences.h>
int
-main ()
+main (void)
{
CFPreferencesCopyAppValue(NULL, NULL)
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gt_cv_func_CFPreferencesCopyAppValue=yes
-else
+else $as_nop
gt_cv_func_CFPreferencesCopyAppValue=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$gt_save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
-$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
-$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
-$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
-if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
+printf %s "checking for CFLocaleCopyCurrent... " >&6; }
+if test ${gt_cv_func_CFLocaleCopyCurrent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <CoreFoundation/CFLocale.h>
int
-main ()
+main (void)
{
CFLocaleCopyCurrent();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gt_cv_func_CFLocaleCopyCurrent=yes
-else
+else $as_nop
gt_cv_func_CFLocaleCopyCurrent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$gt_save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
-$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
-$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; }
-if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
+printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; }
+if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <CoreFoundation/CFLocale.h>
int
-main ()
+main (void)
{
CFLocaleCopyPreferredLanguages();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gt_cv_func_CFLocaleCopyPreferredLanguages=yes
-else
+else $as_nop
gt_cv_func_CFLocaleCopyPreferredLanguages=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$gt_save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
-$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
+printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
-$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
fi
INTL_MACOSX_LIBS=
@@ -11689,11 +12527,12 @@ $as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5
-$as_echo_n "checking for flexible array members... " >&6; }
-if ${ac_cv_c_flexmember+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5
+printf %s "checking for flexible array members... " >&6; }
+if test ${ac_cv_c_flexmember+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
@@ -11701,32 +12540,33 @@ else
#include <stddef.h>
struct s { int n; double d[]; };
int
-main ()
+main (void)
{
int m = getchar ();
- struct s *p = malloc (offsetof (struct s, d)
- + m * sizeof (double));
+ struct s *p = (struct s *) malloc (offsetof (struct s, d)
+ + m * sizeof (double));
p->d[0] = 0.0;
return p->d != (double *) NULL;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_flexmember=yes
-else
+else $as_nop
ac_cv_c_flexmember=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5
-$as_echo "$ac_cv_c_flexmember" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5
+printf "%s\n" "$ac_cv_c_flexmember" >&6; }
if test $ac_cv_c_flexmember = yes; then
-$as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
+printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
else
- $as_echo "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h
+ printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h
fi
@@ -11740,11 +12580,12 @@ $as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test.
else
@@ -11752,11 +12593,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="${ac_tool_prefix}ar"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -11767,11 +12612,11 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -11780,11 +12625,12 @@ if test -z "$ac_cv_prog_AR"; then
ac_ct_AR=$AR
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AR"; then
ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
@@ -11792,11 +12638,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="ar"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -11807,11 +12657,11 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_AR" = x; then
@@ -11819,8 +12669,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
@@ -11844,77 +12694,150 @@ fi
ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
-if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+if test "x$ac_cv_type_ptrdiff_t" = xyes
+then :
-else
+else $as_nop
-$as_echo "#define ptrdiff_t long" >>confdefs.h
+printf "%s\n" "#define ptrdiff_t long" >>confdefs.h
fi
- for ac_header in features.h stddef.h stdlib.h string.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "features.h" "ac_cv_header_features_h" "$ac_includes_default"
+if test "x$ac_cv_header_features_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FEATURES_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default"
+if test "x$ac_cv_header_stddef_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDDEF_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h
- for ac_func in asprintf fwprintf newlocale putenv setenv setlocale \
- snprintf strnlen uselocale wcslen wcsnlen mbrtowc wcrtomb
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default"
+if test "x$ac_cv_header_string_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h
fi
-done
+ ac_fn_c_check_func "$LINENO" "asprintf" "ac_cv_func_asprintf"
+if test "x$ac_cv_func_asprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_ASPRINTF 1" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl__snprintf" = xyes; then :
+fi
+ac_fn_c_check_func "$LINENO" "fwprintf" "ac_cv_func_fwprintf"
+if test "x$ac_cv_func_fwprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_FWPRINTF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "newlocale" "ac_cv_func_newlocale"
+if test "x$ac_cv_func_newlocale" = xyes
+then :
+ printf "%s\n" "#define HAVE_NEWLOCALE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv"
+if test "x$ac_cv_func_putenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_PUTENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
+if test "x$ac_cv_func_setenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
+if test "x$ac_cv_func_setlocale" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
+if test "x$ac_cv_func_snprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen"
+if test "x$ac_cv_func_strnlen" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "uselocale" "ac_cv_func_uselocale"
+if test "x$ac_cv_func_uselocale" = xyes
+then :
+ printf "%s\n" "#define HAVE_USELOCALE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "wcslen" "ac_cv_func_wcslen"
+if test "x$ac_cv_func_wcslen" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSLEN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "wcsnlen" "ac_cv_func_wcsnlen"
+if test "x$ac_cv_func_wcsnlen" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSNLEN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mbrtowc" "ac_cv_func_mbrtowc"
+if test "x$ac_cv_func_mbrtowc" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb"
+if test "x$ac_cv_func_wcrtomb" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCRTOMB 1" >>confdefs.h
+
+fi
+
+
+ ac_fn_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include <stdio.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl__snprintf" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__SNPRINTF $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "_snwprintf" "ac_cv_have_decl__snwprintf" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl__snwprintf" = xyes; then :
+printf "%s\n" "#define HAVE_DECL__SNPRINTF $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "_snwprintf" "ac_cv_have_decl__snwprintf" "#include <stdio.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl__snwprintf" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__SNWPRINTF $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL__SNWPRINTF $ac_have_decl" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
+ ac_fn_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "#include <stdio.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getc_unlocked" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl" >>confdefs.h
case $gt_cv_func_printf_posix in
@@ -11948,69 +12871,73 @@ _ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
-$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if ${am_cv_langinfo_codeset+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
+printf %s "checking for nl_langinfo and CODESET... " >&6; }
+if test ${am_cv_langinfo_codeset+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <langinfo.h>
int
-main ()
+main (void)
{
char* cs = nl_langinfo(CODESET); return !cs;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
am_cv_langinfo_codeset=yes
-else
+else $as_nop
am_cv_langinfo_codeset=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
-$as_echo "$am_cv_langinfo_codeset" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5
+printf "%s\n" "$am_cv_langinfo_codeset" >&6; }
if test $am_cv_langinfo_codeset = yes; then
-$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
-$as_echo_n "checking for LC_MESSAGES... " >&6; }
-if ${gt_cv_val_LC_MESSAGES+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
+printf %s "checking for LC_MESSAGES... " >&6; }
+if test ${gt_cv_val_LC_MESSAGES+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <locale.h>
int
-main ()
+main (void)
{
return LC_MESSAGES
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gt_cv_val_LC_MESSAGES=yes
-else
+else $as_nop
gt_cv_val_LC_MESSAGES=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5
-$as_echo "$gt_cv_val_LC_MESSAGES" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5
+printf "%s\n" "$gt_cv_val_LC_MESSAGES" >&6; }
if test $gt_cv_val_LC_MESSAGES = yes; then
-$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LC_MESSAGES 1" >>confdefs.h
fi
@@ -12043,11 +12970,12 @@ $as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
set dummy ${ac_tool_prefix}windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_WINDRES+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_WINDRES+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$WINDRES"; then
ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
else
@@ -12055,11 +12983,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_WINDRES="${ac_tool_prefix}windres"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -12070,11 +13002,11 @@ fi
fi
WINDRES=$ac_cv_prog_WINDRES
if test -n "$WINDRES"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5
-$as_echo "$WINDRES" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5
+printf "%s\n" "$WINDRES" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -12083,11 +13015,12 @@ if test -z "$ac_cv_prog_WINDRES"; then
ac_ct_WINDRES=$WINDRES
# Extract the first word of "windres", so it can be a program name with args.
set dummy windres; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_WINDRES+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_WINDRES+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_WINDRES"; then
ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test.
else
@@ -12095,11 +13028,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_WINDRES="windres"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -12110,11 +13047,11 @@ fi
fi
ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES
if test -n "$ac_ct_WINDRES"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5
-$as_echo "$ac_ct_WINDRES" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5
+printf "%s\n" "$ac_ct_WINDRES" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_WINDRES" = x; then
@@ -12122,8 +13059,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
WINDRES=$ac_ct_WINDRES
@@ -12158,107 +13095,112 @@ fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
-$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
-if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+printf %s "checking for CFPreferencesCopyAppValue... " >&6; }
+if test ${gt_cv_func_CFPreferencesCopyAppValue+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <CoreFoundation/CFPreferences.h>
int
-main ()
+main (void)
{
CFPreferencesCopyAppValue(NULL, NULL)
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gt_cv_func_CFPreferencesCopyAppValue=yes
-else
+else $as_nop
gt_cv_func_CFPreferencesCopyAppValue=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$gt_save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
-$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+printf "%s\n" "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
-$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
-$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
-if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
+printf %s "checking for CFLocaleCopyCurrent... " >&6; }
+if test ${gt_cv_func_CFLocaleCopyCurrent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <CoreFoundation/CFLocale.h>
int
-main ()
+main (void)
{
CFLocaleCopyCurrent();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gt_cv_func_CFLocaleCopyCurrent=yes
-else
+else $as_nop
gt_cv_func_CFLocaleCopyCurrent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$gt_save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
-$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+printf "%s\n" "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
-$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
-$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; }
-if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
+printf %s "checking for CFLocaleCopyPreferredLanguages... " >&6; }
+if test ${gt_cv_func_CFLocaleCopyPreferredLanguages+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <CoreFoundation/CFLocale.h>
int
-main ()
+main (void)
{
CFLocaleCopyPreferredLanguages();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
gt_cv_func_CFLocaleCopyPreferredLanguages=yes
-else
+else $as_nop
gt_cv_func_CFLocaleCopyPreferredLanguages=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$gt_save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
-$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
+printf "%s\n" "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
-$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
fi
INTL_MACOSX_LIBS=
@@ -12291,18 +13233,19 @@ $as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
if test "$USE_NLS" = "yes"; then
gt_use_preinstalled_gnugettext=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5
-$as_echo_n "checking whether included gettext is requested... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether included gettext is requested" >&5
+printf %s "checking whether included gettext is requested... " >&6; }
# Check whether --with-included-gettext was given.
-if test "${with_included_gettext+set}" = set; then :
+if test ${with_included_gettext+y}
+then :
withval=$with_included_gettext; nls_cv_force_use_gnu_gettext=$withval
-else
+else $as_nop
nls_cv_force_use_gnu_gettext=no
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5
-$as_echo "$nls_cv_force_use_gnu_gettext" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $nls_cv_force_use_gnu_gettext" >&5
+printf "%s\n" "$nls_cv_force_use_gnu_gettext" >&6; }
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
@@ -12324,11 +13267,12 @@ typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
gt_expression_test_code=
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
-$as_echo_n "checking for GNU gettext in libc... " >&6; }
-if eval \${$gt_func_gnugettext_libc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
+printf %s "checking for GNU gettext in libc... " >&6; }
+if eval test \${$gt_func_gnugettext_libc+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -12343,7 +13287,7 @@ extern int *_nl_domain_bindings;
$gt_revision_test_code
int
-main ()
+main (void)
{
bindtextdomain ("", "");
@@ -12353,17 +13297,18 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$gt_func_gnugettext_libc=yes"
-else
+else $as_nop
eval "$gt_func_gnugettext_libc=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$gt_func_gnugettext_libc
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
@@ -12388,7 +13333,8 @@ $as_echo "$ac_res" >&6; }
# Check whether --with-libintl-prefix was given.
-if test "${with_libintl_prefix+set}" = set; then :
+if test ${with_libintl_prefix+y}
+then :
withval=$with_libintl_prefix;
if test "X$withval" = "Xno"; then
use_additional=no
@@ -12826,11 +13772,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
-$as_echo_n "checking for GNU gettext in libintl... " >&6; }
-if eval \${$gt_func_gnugettext_libintl+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
+printf %s "checking for GNU gettext in libintl... " >&6; }
+if eval test \${$gt_func_gnugettext_libintl+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
gt_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $INCINTL"
gt_save_LIBS="$LIBS"
@@ -12853,7 +13800,7 @@ const char *_nl_expand_alias (const char *);
$gt_revision_test_code
int
-main ()
+main (void)
{
bindtextdomain ("", "");
@@ -12863,12 +13810,13 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$gt_func_gnugettext_libintl=yes"
-else
+else $as_nop
eval "$gt_func_gnugettext_libintl=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
LIBS="$LIBS $LIBICONV"
@@ -12890,7 +13838,7 @@ const char *_nl_expand_alias (const char *);
$gt_revision_test_code
int
-main ()
+main (void)
{
bindtextdomain ("", "");
@@ -12900,21 +13848,22 @@ return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
LIBINTL="$LIBINTL $LIBICONV"
LTLIBINTL="$LTLIBINTL $LTLIBICONV"
eval "$gt_func_gnugettext_libintl=yes"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
CPPFLAGS="$gt_save_CPPFLAGS"
LIBS="$gt_save_LIBS"
fi
eval ac_res=\$$gt_func_gnugettext_libintl
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
fi
if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
@@ -12960,20 +13909,20 @@ $as_echo "$ac_res" >&6; }
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
-$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+printf "%s\n" "#define ENABLE_NLS 1" >>confdefs.h
else
USE_NLS=no
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
-$as_echo_n "checking whether to use NLS... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
+printf %s "checking whether to use NLS... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+printf "%s\n" "$USE_NLS" >&6; }
if test "$USE_NLS" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
-$as_echo_n "checking where the gettext function comes from... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
+printf %s "checking where the gettext function comes from... " >&6; }
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
gt_source="external libintl"
@@ -12983,18 +13932,18 @@ $as_echo_n "checking where the gettext function comes from... " >&6; }
else
gt_source="included intl directory"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
-$as_echo "$gt_source" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
+printf "%s\n" "$gt_source" >&6; }
fi
if test "$USE_NLS" = "yes"; then
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
-$as_echo_n "checking how to link with libintl... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
-$as_echo "$LIBINTL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
+printf %s "checking how to link with libintl... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
+printf "%s\n" "$LIBINTL" >&6; }
for element in $INCINTL; do
haveit=
@@ -13021,10 +13970,10 @@ $as_echo "$LIBINTL" >&6; }
fi
-$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h
-$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h
fi
@@ -13072,19 +14021,20 @@ $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
ac_header_dirent=no
for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+printf %s "checking for $ac_hdr that defines DIR... " >&6; }
+if eval test \${$as_ac_Header+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <$ac_hdr>
int
-main ()
+main (void)
{
if ((DIR *) 0)
return 0;
@@ -13092,19 +14042,21 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$as_ac_Header=yes"
-else
+else $as_nop
eval "$as_ac_Header=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$as_ac_Header
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1
_ACEOF
ac_header_dirent=$ac_hdr; break
@@ -13113,11 +14065,12 @@ fi
done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13125,56 +14078,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char opendir ();
int
-main ()
+main (void)
{
return opendir ();
;
return 0;
}
_ACEOF
-for ac_lib in '' dir; do
+for ac_lib in '' dir
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
+ if test ${ac_cv_search_opendir+y}
+then :
break
fi
done
-if ${ac_cv_search_opendir+:} false; then :
+if test ${ac_cv_search_opendir+y}
+then :
-else
+else $as_nop
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -13182,196 +14138,315 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char opendir ();
int
-main ()
+main (void)
{
return opendir ();
;
return 0;
}
_ACEOF
-for ac_lib in '' x; do
+for ac_lib in '' x
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
+ if test ${ac_cv_search_opendir+y}
+then :
break
fi
done
-if ${ac_cv_search_opendir+:} false; then :
+if test ${ac_cv_search_opendir+y}
+then :
-else
+else $as_nop
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_time=yes
-else
- ac_cv_header_time=no
+ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mkdev_h" = xyes
+then :
+
+printf "%s\n" "#define MAJOR_IN_MKDEV 1" >>confdefs.h
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_sys_mkdev_h = no; then
+ ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysmacros_h" = xyes
+then :
+
+printf "%s\n" "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
+fi
+
+
+
+ ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h
fi
-{ $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
+
+
+ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
+
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5
-$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; }
+ac_fn_c_check_header_compile "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdarg_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDARG_H 1" >>confdefs.h
-if test $ac_cv_header_sys_types_h_makedev = no; then
-ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_mkdev_h" = xyes; then :
+fi
+ac_fn_c_check_header_compile "$LINENO" "varargs.h" "ac_cv_header_varargs_h" "$ac_includes_default"
+if test "x$ac_cv_header_varargs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_VARARGS_H 1" >>confdefs.h
-$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default"
+if test "x$ac_cv_header_limits_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default"
+if test "x$ac_cv_header_string_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default"
+if test "x$ac_cv_header_memory_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMORY_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h
- if test $ac_cv_header_sys_mkdev_h = no; then
- ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then :
+fi
+ac_fn_c_check_header_compile "$LINENO" "termcap.h" "ac_cv_header_termcap_h" "$ac_includes_default"
+if test "x$ac_cv_header_termcap_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TERMCAP_H 1" >>confdefs.h
-$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "$ac_includes_default"
+if test "x$ac_cv_header_termio_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default"
+if test "x$ac_cv_header_termios_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
+if test "x$ac_cv_header_dlfcn_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h
- fi
fi
+ac_fn_c_check_header_compile "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdbool_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default"
+if test "x$ac_cv_header_stddef_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDDEF_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h
- 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
+ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default"
+if test "x$ac_cv_header_netdb_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "pwd.h" "ac_cv_header_pwd_h" "$ac_includes_default"
+if test "x$ac_cv_header_pwd_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PWD_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "grp.h" "ac_cv_header_grp_h" "$ac_includes_default"
+if test "x$ac_cv_header_grp_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GRP_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default"
+if test "x$ac_cv_header_strings_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "regex.h" "ac_cv_header_regex_h" "$ac_includes_default"
+if test "x$ac_cv_header_regex_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_REGEX_H 1" >>confdefs.h
-for ac_header in unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
- memory.h locale.h termcap.h termio.h termios.h dlfcn.h \
- stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
- regex.h syslog.h ulimit.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "$ac_includes_default"
+if test "x$ac_cv_header_syslog_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSLOG_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "ulimit.h" "ac_cv_header_ulimit_h" "$ac_includes_default"
+if test "x$ac_cv_header_ulimit_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ULIMIT_H 1" >>confdefs.h
-done
+fi
-for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
- sys/mman.h sys/param.h sys/random.h sys/socket.h sys/stat.h \
- sys/time.h sys/times.h sys/types.h sys/wait.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "sys/pte.h" "ac_cv_header_sys_pte_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_pte_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PTE_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/stream.h" "ac_cv_header_sys_stream_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_stream_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STREAM_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_select_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
-for ac_header in netinet/in.h arpa/inet.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_file_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_ioctl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h
-done
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mman_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_MMAN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_param_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_random_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_socket_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_stat_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_time_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/times.h" "ac_cv_header_sys_times_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_times_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TIMES_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_types_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_wait_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default"
+if test "x$ac_cv_header_netinet_in_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default"
+if test "x$ac_cv_header_arpa_inet_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h
+
+fi
ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" "
@@ -13380,37 +14455,38 @@ ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" "
#endif
"
-if test "x$ac_cv_header_sys_ptem_h" = xyes; then :
+if test "x$ac_cv_header_sys_ptem_h" = xyes
+then :
fi
-
ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "
#if HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
"
-if test "x$ac_cv_header_sys_resource_h" = xyes; then :
- $as_echo "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h
+if test "x$ac_cv_header_sys_resource_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h
fi
-
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
-$as_echo_n "checking for working alloca.h... " >&6; }
-if ${ac_cv_working_alloca_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5
+printf %s "checking for working alloca.h... " >&6; }
+if test ${ac_cv_working_alloca_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <alloca.h>
int
-main ()
+main (void)
{
char *p = (char *) alloca (2 * sizeof (int));
if (p) return 0;
@@ -13418,52 +14494,52 @@ char *p = (char *) alloca (2 * sizeof (int));
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_working_alloca_h=yes
-else
+else $as_nop
ac_cv_working_alloca_h=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
-$as_echo "$ac_cv_working_alloca_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5
+printf "%s\n" "$ac_cv_working_alloca_h" >&6; }
if test $ac_cv_working_alloca_h = yes; then
-$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ALLOCA_H 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
-$as_echo_n "checking for alloca... " >&6; }
-if ${ac_cv_func_alloca_works+:} false; then :
- $as_echo_n "(cached) " >&6
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5
+printf %s "checking for alloca... " >&6; }
+if test ${ac_cv_func_alloca_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test $ac_cv_working_alloca_h = yes; then
+ ac_cv_func_alloca_works=yes
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __GNUC__
-# define alloca __builtin_alloca
-#else
-# ifdef _MSC_VER
+#include <stdlib.h>
+#include <stddef.h>
+#ifndef alloca
+# ifdef __GNUC__
+# define alloca __builtin_alloca
+# elif defined _MSC_VER
# include <malloc.h>
# define alloca _alloca
# else
-# ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-# else
-# ifdef _AIX
- #pragma alloca
-# else
-# ifndef alloca /* predefined by HP cc +Olibcalls */
-void *alloca (size_t);
-# endif
-# endif
+# ifdef __cplusplus
+extern "C"
# endif
+void *alloca (size_t);
# endif
#endif
int
-main ()
+main (void)
{
char *p = (char *) alloca (1);
if (p) return 0;
@@ -13471,20 +14547,22 @@ char *p = (char *) alloca (1);
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_func_alloca_works=yes
-else
+else $as_nop
ac_cv_func_alloca_works=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
-$as_echo "$ac_cv_func_alloca_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5
+printf "%s\n" "$ac_cv_func_alloca_works" >&6; }
+fi
if test $ac_cv_func_alloca_works = yes; then
-$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ALLOCA 1" >>confdefs.h
else
# The SVR3 libPW and SVR4 libucb both contain incompatible functions
@@ -13494,58 +14572,19 @@ else
ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
-$as_echo "#define C_ALLOCA 1" >>confdefs.h
+printf "%s\n" "#define C_ALLOCA 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5
-$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; }
-if ${ac_cv_os_cray+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#if defined CRAY && ! defined CRAY2
-webecray
-#else
-wenotbecray
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "webecray" >/dev/null 2>&1; then :
- ac_cv_os_cray=yes
-else
- ac_cv_os_cray=no
-fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5
-$as_echo "$ac_cv_os_cray" >&6; }
-if test $ac_cv_os_cray = yes; then
- for ac_func in _getb67 GETB67 getb67; do
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-
-cat >>confdefs.h <<_ACEOF
-#define CRAY_STACKSEG_END $ac_func
-_ACEOF
-
- break
-fi
-
- done
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
-$as_echo_n "checking stack direction for C alloca... " >&6; }
-if ${ac_cv_c_stack_direction+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5
+printf %s "checking stack direction for C alloca... " >&6; }
+if test ${ac_cv_c_stack_direction+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_c_stack_direction=0
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
@@ -13566,9 +14605,10 @@ main (int argc, char **argv)
return find_stack_direction (0, argc + !argv + 20) < 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_c_stack_direction=1
-else
+else $as_nop
ac_cv_c_stack_direction=-1
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -13576,72 +14616,67 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
-$as_echo "$ac_cv_c_stack_direction" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define STACK_DIRECTION $ac_cv_c_stack_direction
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5
+printf "%s\n" "$ac_cv_c_stack_direction" >&6; }
+printf "%s\n" "#define STACK_DIRECTION $ac_cv_c_stack_direction" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${ac_cv_type_uid_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+printf %s "checking for uid_t in sys/types.h... " >&6; }
+if test ${ac_cv_type_uid_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "uid_t" >/dev/null 2>&1; then :
+ $EGREP "uid_t" >/dev/null 2>&1
+then :
ac_cv_type_uid_t=yes
-else
+else $as_nop
ac_cv_type_uid_t=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-$as_echo "$ac_cv_type_uid_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+printf "%s\n" "$ac_cv_type_uid_t" >&6; }
if test $ac_cv_type_uid_t = no; then
-$as_echo "#define uid_t int" >>confdefs.h
+printf "%s\n" "#define uid_t int" >>confdefs.h
-$as_echo "#define gid_t int" >>confdefs.h
+printf "%s\n" "#define gid_t int" >>confdefs.h
fi
-for ac_header in unistd.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
-if test "x$ac_cv_header_unistd_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UNISTD_H 1
-_ACEOF
-
-fi
-
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5
-$as_echo_n "checking for working chown... " >&6; }
-if ${ac_cv_func_chown_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_chown_works=no
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working chown" >&5
+printf %s "checking for working chown... " >&6; }
+if test ${ac_cv_func_chown_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in # ((
+ # Guess yes on glibc systems.
+ *-gnu*) ac_cv_func_chown_works=yes ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_chown_works=no ;;
+ esac
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
#include <fcntl.h>
int
-main ()
+main (void)
{
char *f = "conftest.chown";
struct stat before, after;
@@ -13660,9 +14695,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_chown_works=yes
-else
+else $as_nop
ac_cv_func_chown_works=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -13672,86 +14708,82 @@ fi
rm -f conftest.chown
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5
-$as_echo "$ac_cv_func_chown_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_chown_works" >&5
+printf "%s\n" "$ac_cv_func_chown_works" >&6; }
if test $ac_cv_func_chown_works = yes; then
-$as_echo "#define HAVE_CHOWN 1" >>confdefs.h
+printf "%s\n" "#define HAVE_CHOWN 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5
-$as_echo_n "checking whether getpgrp requires zero arguments... " >&6; }
-if ${ac_cv_func_getpgrp_void+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getpgrp requires zero arguments" >&5
+printf %s "checking whether getpgrp requires zero arguments... " >&6; }
+if test ${ac_cv_func_getpgrp_void+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# Use it with a single arg.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
getpgrp (0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_func_getpgrp_void=no
-else
+else $as_nop
ac_cv_func_getpgrp_void=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5
-$as_echo "$ac_cv_func_getpgrp_void" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getpgrp_void" >&5
+printf "%s\n" "$ac_cv_func_getpgrp_void" >&6; }
if test $ac_cv_func_getpgrp_void = yes; then
-$as_echo "#define GETPGRP_VOID 1" >>confdefs.h
+printf "%s\n" "#define GETPGRP_VOID 1" >>confdefs.h
fi
-if ${ac_cv_func_setvbuf_reversed+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_func_setvbuf_reversed=no
-fi
-for ac_func in vprintf
-do :
- ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
-if test "x$ac_cv_func_vprintf" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_VPRINTF 1
-_ACEOF
+if test "x$ac_cv_func_vprintf" = xno
+then :
+ ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
+if test "x$ac_cv_func__doprnt" = xyes
+then :
-ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
-if test "x$ac_cv_func__doprnt" = xyes; then :
-
-$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_DOPRNT 1" >>confdefs.h
fi
fi
-done
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5
-$as_echo_n "checking for working strcoll... " >&6; }
-if ${ac_cv_func_strcoll_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_strcoll_works=no
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strcoll" >&5
+printf %s "checking for working strcoll... " >&6; }
+if test ${ac_cv_func_strcoll_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in # ((
+ # Guess yes on glibc systems.
+ *-gnu*) ac_cv_func_strcoll_works=yes ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_strcoll_works=no ;;
+ esac
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
return (strcoll ("abc", "def") >= 0 ||
strcoll ("ABC", "DEF") >= 0 ||
@@ -13760,9 +14792,10 @@ return (strcoll ("abc", "def") >= 0 ||
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_strcoll_works=yes
-else
+else $as_nop
ac_cv_func_strcoll_works=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -13770,11 +14803,11 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5
-$as_echo "$ac_cv_func_strcoll_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strcoll_works" >&5
+printf "%s\n" "$ac_cv_func_strcoll_works" >&6; }
if test $ac_cv_func_strcoll_works = yes; then
-$as_echo "#define HAVE_STRCOLL 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRCOLL 1" >>confdefs.h
fi
@@ -13791,23 +14824,24 @@ if test "$ac_cv_func_alloca_works" = "no" && test "$opt_bash_malloc" = "no"; the
fi
if test "$ac_cv_func_vprintf" = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of vprintf in stdio.h" >&5
-$as_echo_n "checking for declaration of vprintf in stdio.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for declaration of vprintf in stdio.h" >&5
+printf %s "checking for declaration of vprintf in stdio.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "[int[ ]*vprintf[^a-zA-Z0-9]]" >/dev/null 2>&1; then :
+ $EGREP "[int[ ]*vprintf[^a-zA-Z0-9]]" >/dev/null 2>&1
+then :
ac_cv_func_vprintf=yes
fi
-rm -f conftest*
+rm -rf conftest*
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vprintf" >&5
-$as_echo "$ac_cv_func_vprintf" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vprintf" >&5
+printf "%s\n" "$ac_cv_func_vprintf" >&6; }
if test $ac_cv_func_vprintf = yes; then
- $as_echo "#define HAVE_VPRINTF 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_VPRINTF 1" >>confdefs.h
fi
fi
@@ -13821,83 +14855,189 @@ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
-$as_echo_n "checking return type of signal handlers... " >&6; }
-if ${ac_cv_type_signal+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <signal.h>
+ac_fn_c_check_func "$LINENO" "__setostype" "ac_cv_func___setostype"
+if test "x$ac_cv_func___setostype" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETOSTYPE 1" >>confdefs.h
-int
-main ()
-{
-return *(signal (0, 0)) (0) == 1;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_type_signal=int
-else
- ac_cv_type_signal=void
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3"
+if test "x$ac_cv_func_wait3" = xyes
+then :
+ printf "%s\n" "#define HAVE_WAIT3 1" >>confdefs.h
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
+ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo"
+if test "x$ac_cv_func_mkfifo" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKFIFO 1" >>confdefs.h
+else $as_nop
+ printf "%s\n" "#define MKFIFO_MISSING 1" >>confdefs.h
-ac_fn_c_check_func "$LINENO" "__setostype" "ac_cv_func___setostype"
-if test "x$ac_cv_func___setostype" = xyes; then :
- $as_echo "#define HAVE_SETOSTYPE 1" >>confdefs.h
+fi
+
+
+ac_fn_c_check_func "$LINENO" "dup2" "ac_cv_func_dup2"
+if test "x$ac_cv_func_dup2" = xyes
+then :
+ printf "%s\n" "#define HAVE_DUP2 1" >>confdefs.h
fi
+ac_fn_c_check_func "$LINENO" "eaccess" "ac_cv_func_eaccess"
+if test "x$ac_cv_func_eaccess" = xyes
+then :
+ printf "%s\n" "#define HAVE_EACCESS 1" >>confdefs.h
-ac_fn_c_check_func "$LINENO" "wait3" "ac_cv_func_wait3"
-if test "x$ac_cv_func_wait3" = xyes; then :
- $as_echo "#define HAVE_WAIT3 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "fcntl" "ac_cv_func_fcntl"
+if test "x$ac_cv_func_fcntl" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h
fi
+ac_fn_c_check_func "$LINENO" "getdtablesize" "ac_cv_func_getdtablesize"
+if test "x$ac_cv_func_getdtablesize" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETDTABLESIZE 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy"
+if test "x$ac_cv_func_getentropy" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h
-ac_fn_c_check_func "$LINENO" "mkfifo" "ac_cv_func_mkfifo"
-if test "x$ac_cv_func_mkfifo" = xyes; then :
- $as_echo "#define HAVE_MKFIFO 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups"
+if test "x$ac_cv_func_getgroups" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h
-else
- $as_echo "#define MKFIFO_MISSING 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname"
+if test "x$ac_cv_func_gethostname" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h
fi
+ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
+if test "x$ac_cv_func_getpagesize" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPAGESIZE 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "getpeername" "ac_cv_func_getpeername"
+if test "x$ac_cv_func_getpeername" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h
-for ac_func in dup2 eaccess fcntl getdtablesize getentropy getgroups \
- gethostname getpagesize getpeername getrandom getrlimit \
- getrusage gettimeofday kill killpg lstat pselect readlink \
- select setdtablesize setitimer tcgetpgrp uname ulimit waitpid
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom"
+if test "x$ac_cv_func_getrandom" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit"
+if test "x$ac_cv_func_getrlimit" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getrusage" "ac_cv_func_getrusage"
+if test "x$ac_cv_func_getrusage" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETRUSAGE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
+if test "x$ac_cv_func_gettimeofday" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "kill" "ac_cv_func_kill"
+if test "x$ac_cv_func_kill" = xyes
+then :
+ printf "%s\n" "#define HAVE_KILL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "killpg" "ac_cv_func_killpg"
+if test "x$ac_cv_func_killpg" = xyes
+then :
+ printf "%s\n" "#define HAVE_KILLPG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat"
+if test "x$ac_cv_func_lstat" = xyes
+then :
+ printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect"
+if test "x$ac_cv_func_pselect" = xyes
+then :
+ printf "%s\n" "#define HAVE_PSELECT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink"
+if test "x$ac_cv_func_readlink" = xyes
+then :
+ printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select"
+if test "x$ac_cv_func_select" = xyes
+then :
+ printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setdtablesize" "ac_cv_func_setdtablesize"
+if test "x$ac_cv_func_setdtablesize" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETDTABLESIZE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setitimer" "ac_cv_func_setitimer"
+if test "x$ac_cv_func_setitimer" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETITIMER 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "tcgetpgrp" "ac_cv_func_tcgetpgrp"
+if test "x$ac_cv_func_tcgetpgrp" = xyes
+then :
+ printf "%s\n" "#define HAVE_TCGETPGRP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "uname" "ac_cv_func_uname"
+if test "x$ac_cv_func_uname" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNAME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ulimit" "ac_cv_func_ulimit"
+if test "x$ac_cv_func_ulimit" = xyes
+then :
+ printf "%s\n" "#define HAVE_ULIMIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "waitpid" "ac_cv_func_waitpid"
+if test "x$ac_cv_func_waitpid" = xyes
+then :
+ printf "%s\n" "#define HAVE_WAITPID 1" >>confdefs.h
fi
-done
ac_fn_c_check_func "$LINENO" "rename" "ac_cv_func_rename"
-if test "x$ac_cv_func_rename" = xyes; then :
- $as_echo "#define HAVE_RENAME 1" >>confdefs.h
+if test "x$ac_cv_func_rename" = xyes
+then :
+ printf "%s\n" "#define HAVE_RENAME 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" rename.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS rename.$ac_objext"
@@ -13907,89 +15047,290 @@ esac
fi
+ac_fn_c_check_func "$LINENO" "bcopy" "ac_cv_func_bcopy"
+if test "x$ac_cv_func_bcopy" = xyes
+then :
+ printf "%s\n" "#define HAVE_BCOPY 1" >>confdefs.h
-for ac_func in bcopy bzero confstr faccessat fnmatch \
- getaddrinfo gethostbyname getservbyname getservent inet_aton \
- imaxdiv memmove pathconf putenv raise random regcomp regexec \
- setenv setlinebuf setlocale setvbuf siginterrupt strchr \
- sysconf syslog tcgetattr times ttyname tzset unsetenv
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "bzero" "ac_cv_func_bzero"
+if test "x$ac_cv_func_bzero" = xyes
+then :
+ printf "%s\n" "#define HAVE_BZERO 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "confstr" "ac_cv_func_confstr"
+if test "x$ac_cv_func_confstr" = xyes
+then :
+ printf "%s\n" "#define HAVE_CONFSTR 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "faccessat" "ac_cv_func_faccessat"
+if test "x$ac_cv_func_faccessat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FACCESSAT 1" >>confdefs.h
-for ac_func in vasprintf asprintf
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "fnmatch" "ac_cv_func_fnmatch"
+if test "x$ac_cv_func_fnmatch" = xyes
+then :
+ printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "getaddrinfo" "ac_cv_func_getaddrinfo"
+if test "x$ac_cv_func_getaddrinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h
-for ac_func in isascii isblank isgraph isprint isspace isxdigit
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "getservbyname" "ac_cv_func_getservbyname"
+if test "x$ac_cv_func_getservbyname" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETSERVBYNAME 1" >>confdefs.h
-for ac_func in getpwent getpwnam getpwuid
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "getservent" "ac_cv_func_getservent"
+if test "x$ac_cv_func_getservent" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETSERVENT 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton"
+if test "x$ac_cv_func_inet_aton" = xyes
+then :
+ printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h
-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
+ac_fn_c_check_func "$LINENO" "imaxdiv" "ac_cv_func_imaxdiv"
+if test "x$ac_cv_func_imaxdiv" = xyes
+then :
+ printf "%s\n" "#define HAVE_IMAXDIV 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "memmove" "ac_cv_func_memmove"
+if test "x$ac_cv_func_memmove" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMMOVE 1" >>confdefs.h
-for ac_func in arc4random
-do :
- ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random"
-if test "x$ac_cv_func_arc4random" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ARC4RANDOM 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "pathconf" "ac_cv_func_pathconf"
+if test "x$ac_cv_func_pathconf" = xyes
+then :
+ printf "%s\n" "#define HAVE_PATHCONF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv"
+if test "x$ac_cv_func_putenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_PUTENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "raise" "ac_cv_func_raise"
+if test "x$ac_cv_func_raise" = xyes
+then :
+ printf "%s\n" "#define HAVE_RAISE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "random" "ac_cv_func_random"
+if test "x$ac_cv_func_random" = xyes
+then :
+ printf "%s\n" "#define HAVE_RANDOM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "regcomp" "ac_cv_func_regcomp"
+if test "x$ac_cv_func_regcomp" = xyes
+then :
+ printf "%s\n" "#define HAVE_REGCOMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "regexec" "ac_cv_func_regexec"
+if test "x$ac_cv_func_regexec" = xyes
+then :
+ printf "%s\n" "#define HAVE_REGEXEC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
+if test "x$ac_cv_func_setenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf"
+if test "x$ac_cv_func_setlinebuf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLINEBUF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale"
+if test "x$ac_cv_func_setlocale" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETLOCALE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setvbuf" "ac_cv_func_setvbuf"
+if test "x$ac_cv_func_setvbuf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETVBUF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "siginterrupt" "ac_cv_func_siginterrupt"
+if test "x$ac_cv_func_siginterrupt" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGINTERRUPT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strchr" "ac_cv_func_strchr"
+if test "x$ac_cv_func_strchr" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRCHR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf"
+if test "x$ac_cv_func_sysconf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "syslog" "ac_cv_func_syslog"
+if test "x$ac_cv_func_syslog" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSLOG 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "tcgetattr" "ac_cv_func_tcgetattr"
+if test "x$ac_cv_func_tcgetattr" = xyes
+then :
+ printf "%s\n" "#define HAVE_TCGETATTR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "times" "ac_cv_func_times"
+if test "x$ac_cv_func_times" = xyes
+then :
+ printf "%s\n" "#define HAVE_TIMES 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ttyname" "ac_cv_func_ttyname"
+if test "x$ac_cv_func_ttyname" = xyes
+then :
+ printf "%s\n" "#define HAVE_TTYNAME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "tzset" "ac_cv_func_tzset"
+if test "x$ac_cv_func_tzset" = xyes
+then :
+ printf "%s\n" "#define HAVE_TZSET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "unsetenv" "ac_cv_func_unsetenv"
+if test "x$ac_cv_func_unsetenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNSETENV 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf"
+if test "x$ac_cv_func_vasprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_VASPRINTF 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "asprintf" "ac_cv_func_asprintf"
+if test "x$ac_cv_func_asprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_ASPRINTF 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "isascii" "ac_cv_func_isascii"
+if test "x$ac_cv_func_isascii" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISASCII 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "isblank" "ac_cv_func_isblank"
+if test "x$ac_cv_func_isblank" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISBLANK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "isgraph" "ac_cv_func_isgraph"
+if test "x$ac_cv_func_isgraph" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISGRAPH 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "isprint" "ac_cv_func_isprint"
+if test "x$ac_cv_func_isprint" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISPRINT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "isspace" "ac_cv_func_isspace"
+if test "x$ac_cv_func_isspace" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISSPACE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "isxdigit" "ac_cv_func_isxdigit"
+if test "x$ac_cv_func_isxdigit" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISXDIGIT 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "getpwent" "ac_cv_func_getpwent"
+if test "x$ac_cv_func_getpwent" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwnam" "ac_cv_func_getpwnam"
+if test "x$ac_cv_func_getpwnam" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWNAM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwuid" "ac_cv_func_getpwuid"
+if test "x$ac_cv_func_getpwuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp"
+if test "x$ac_cv_func_mkstemp" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKSTEMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp"
+if test "x$ac_cv_func_mkdtemp" = xyes
+then :
+ printf "%s\n" "#define HAVE_MKDTEMP 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random"
+if test "x$ac_cv_func_arc4random" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARC4RANDOM 1" >>confdefs.h
fi
-done
ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd"
-if test "x$ac_cv_func_getcwd" = xyes; then :
- $as_echo "#define HAVE_GETCWD 1" >>confdefs.h
+if test "x$ac_cv_func_getcwd" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" getcwd.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS getcwd.$ac_objext"
@@ -13997,12 +15338,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset"
-if test "x$ac_cv_func_memset" = xyes; then :
- $as_echo "#define HAVE_MEMSET 1" >>confdefs.h
+if test "x$ac_cv_func_memset" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" memset.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS memset.$ac_objext"
@@ -14011,12 +15352,12 @@ esac
fi
-
ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
-if test "x$ac_cv_func_strcasecmp" = xyes; then :
- $as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h
+if test "x$ac_cv_func_strcasecmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strcasecmp.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strcasecmp.$ac_objext"
@@ -14024,12 +15365,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strcasestr" "ac_cv_func_strcasestr"
-if test "x$ac_cv_func_strcasestr" = xyes; then :
- $as_echo "#define HAVE_STRCASESTR 1" >>confdefs.h
+if test "x$ac_cv_func_strcasestr" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRCASESTR 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strcasestr.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strcasestr.$ac_objext"
@@ -14037,12 +15378,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror"
-if test "x$ac_cv_func_strerror" = xyes; then :
- $as_echo "#define HAVE_STRERROR 1" >>confdefs.h
+if test "x$ac_cv_func_strerror" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strerror.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strerror.$ac_objext"
@@ -14050,12 +15391,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
-if test "x$ac_cv_func_strftime" = xyes; then :
- $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h
+if test "x$ac_cv_func_strftime" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strftime.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strftime.$ac_objext"
@@ -14063,12 +15404,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen"
-if test "x$ac_cv_func_strnlen" = xyes; then :
- $as_echo "#define HAVE_STRNLEN 1" >>confdefs.h
+if test "x$ac_cv_func_strnlen" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strnlen.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strnlen.$ac_objext"
@@ -14076,12 +15417,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strpbrk" "ac_cv_func_strpbrk"
-if test "x$ac_cv_func_strpbrk" = xyes; then :
- $as_echo "#define HAVE_STRPBRK 1" >>confdefs.h
+if test "x$ac_cv_func_strpbrk" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRPBRK 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strpbrk.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strpbrk.$ac_objext"
@@ -14089,12 +15430,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr"
-if test "x$ac_cv_func_strstr" = xyes; then :
- $as_echo "#define HAVE_STRSTR 1" >>confdefs.h
+if test "x$ac_cv_func_strstr" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strstr.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strstr.$ac_objext"
@@ -14103,12 +15444,12 @@ esac
fi
-
ac_fn_c_check_func "$LINENO" "strtod" "ac_cv_func_strtod"
-if test "x$ac_cv_func_strtod" = xyes; then :
- $as_echo "#define HAVE_STRTOD 1" >>confdefs.h
+if test "x$ac_cv_func_strtod" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOD 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strtod.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strtod.$ac_objext"
@@ -14116,12 +15457,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol"
-if test "x$ac_cv_func_strtol" = xyes; then :
- $as_echo "#define HAVE_STRTOL 1" >>confdefs.h
+if test "x$ac_cv_func_strtol" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOL 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strtol.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strtol.$ac_objext"
@@ -14129,12 +15470,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul"
-if test "x$ac_cv_func_strtoul" = xyes; then :
- $as_echo "#define HAVE_STRTOUL 1" >>confdefs.h
+if test "x$ac_cv_func_strtoul" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOUL 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strtoul.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strtoul.$ac_objext"
@@ -14142,12 +15483,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll"
-if test "x$ac_cv_func_strtoll" = xyes; then :
- $as_echo "#define HAVE_STRTOLL 1" >>confdefs.h
+if test "x$ac_cv_func_strtoll" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOLL 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strtoll.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strtoll.$ac_objext"
@@ -14155,12 +15496,12 @@ else
esac
fi
-
ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull"
-if test "x$ac_cv_func_strtoull" = xyes; then :
- $as_echo "#define HAVE_STRTOULL 1" >>confdefs.h
+if test "x$ac_cv_func_strtoull" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOULL 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strtoull.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strtoull.$ac_objext"
@@ -14168,25 +15509,12 @@ else
esac
fi
-
-ac_fn_c_check_func "$LINENO" "strtoimax" "ac_cv_func_strtoimax"
-if test "x$ac_cv_func_strtoimax" = xyes; then :
- $as_echo "#define HAVE_STRTOIMAX 1" >>confdefs.h
-
-else
- case " $LIBOBJS " in
- *" strtoimax.$ac_objext "* ) ;;
- *) LIBOBJS="$LIBOBJS strtoimax.$ac_objext"
- ;;
-esac
-
-fi
-
ac_fn_c_check_func "$LINENO" "strtoumax" "ac_cv_func_strtoumax"
-if test "x$ac_cv_func_strtoumax" = xyes; then :
- $as_echo "#define HAVE_STRTOUMAX 1" >>confdefs.h
+if test "x$ac_cv_func_strtoumax" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOUMAX 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strtoumax.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strtoumax.$ac_objext"
@@ -14195,12 +15523,12 @@ esac
fi
-
ac_fn_c_check_func "$LINENO" "dprintf" "ac_cv_func_dprintf"
-if test "x$ac_cv_func_dprintf" = xyes; then :
- $as_echo "#define HAVE_DPRINTF 1" >>confdefs.h
+if test "x$ac_cv_func_dprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_DPRINTF 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" dprintf.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS dprintf.$ac_objext"
@@ -14209,12 +15537,12 @@ esac
fi
-
ac_fn_c_check_func "$LINENO" "strchrnul" "ac_cv_func_strchrnul"
-if test "x$ac_cv_func_strchrnul" = xyes; then :
- $as_echo "#define HAVE_STRCHRNUL 1" >>confdefs.h
+if test "x$ac_cv_func_strchrnul" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRCHRNUL 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strchrnul.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strchrnul.$ac_objext"
@@ -14223,12 +15551,12 @@ esac
fi
-
ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup"
-if test "x$ac_cv_func_strdup" = xyes; then :
- $as_echo "#define HAVE_STRDUP 1" >>confdefs.h
+if test "x$ac_cv_func_strdup" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strdup.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strdup.$ac_objext"
@@ -14238,481 +15566,209 @@ esac
fi
-
-for ac_header in libaudit.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default"
-if test "x$ac_cv_header_libaudit_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBAUDIT_H 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "libaudit.h" "ac_cv_header_libaudit_h" "$ac_includes_default"
+if test "x$ac_cv_header_libaudit_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBAUDIT_H 1" >>confdefs.h
fi
-done
-
-ac_fn_c_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include <linux/audit.h>
-"
-if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes; then :
+ac_fn_check_decl "$LINENO" "AUDIT_USER_TTY" "ac_cv_have_decl_AUDIT_USER_TTY" "#include <linux/audit.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_AUDIT_USER_TTY" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_AUDIT_USER_TTY $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "confstr" "ac_cv_have_decl_confstr" "$ac_includes_default"
-if test "x$ac_cv_have_decl_confstr" = xyes; then :
+ac_fn_check_decl "$LINENO" "confstr" "ac_cv_have_decl_confstr" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_confstr" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_CONFSTR $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_CONFSTR $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "printf" "ac_cv_have_decl_printf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_printf" = xyes; then :
+ac_fn_check_decl "$LINENO" "printf" "ac_cv_have_decl_printf" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_printf" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_PRINTF $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_PRINTF $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "sbrk" "ac_cv_have_decl_sbrk" "$ac_includes_default"
-if test "x$ac_cv_have_decl_sbrk" = xyes; then :
+ac_fn_check_decl "$LINENO" "sbrk" "ac_cv_have_decl_sbrk" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_sbrk" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_SBRK $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SBRK $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "setregid" "ac_cv_have_decl_setregid" "$ac_includes_default"
-if test "x$ac_cv_have_decl_setregid" = xyes; then :
+ac_fn_check_decl "$LINENO" "setregid" "ac_cv_have_decl_setregid" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_setregid" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_SETREGID $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SETREGID $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "strcpy" "ac_cv_have_decl_strcpy" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strcpy" = xyes; then :
+ac_fn_check_decl "$LINENO" "strcpy" "ac_cv_have_decl_strcpy" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strcpy" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_STRCPY $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRCPY $ac_have_decl
-_ACEOF
-
-ac_fn_c_check_decl "$LINENO" "strsignal" "ac_cv_have_decl_strsignal" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strsignal" = xyes; then :
+ac_fn_check_decl "$LINENO" "strsignal" "ac_cv_have_decl_strsignal" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strsignal" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_STRSIGNAL $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRSIGNAL $ac_have_decl
-_ACEOF
+ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid"
+if test "x$ac_cv_func_setresuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETRESUID 1" >>confdefs.h
-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
+ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid"
+if test "x$ac_cv_func_setresgid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETRESGID 1" >>confdefs.h
fi
-done
-ac_fn_c_check_decl "$LINENO" "strtold" "ac_cv_have_decl_strtold" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strtold" = xyes; then :
+ac_fn_check_decl "$LINENO" "strtold" "ac_cv_have_decl_strtold" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strtold" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_STRTOLD $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRTOLD $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken strtold" >&5
-$as_echo_n "checking for broken strtold... " >&6; }
- if ${bash_cv_strtold_broken+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken strtold" >&5
+printf %s "checking for broken strtold... " >&6; }
+ if test ${bash_cv_strtold_broken+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdlib.h>
int
-main ()
+main (void)
{
long double r; char *foo, bar; r = strtold(foo, &bar);
+
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_strtold_broken=no
-else
+else $as_nop
bash_cv_strtold_broken=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_strtold_broken" >&5
-$as_echo "$bash_cv_strtold_broken" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_strtold_broken" >&5
+printf "%s\n" "$bash_cv_strtold_broken" >&6; }
if test "$bash_cv_strtold_broken" = "yes" ; then
- $as_echo "#define STRTOLD_BROKEN 1" >>confdefs.h
+ printf "%s\n" "#define STRTOLD_BROKEN 1" >>confdefs.h
fi
fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoimax" >&5
-$as_echo_n "checking for declaration of strtoimax... " >&6; }
-if ${bash_cv_decl_strtoimax+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-
-int
-main ()
-{
-return !strtoimax;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_decl_strtoimax=yes
-else
- bash_cv_decl_strtoimax=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoimax" >&5
-$as_echo "$bash_cv_decl_strtoimax" >&6; }
-bash_tr_func=HAVE_DECL_`echo strtoimax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-if test $bash_cv_decl_strtoimax = yes; then
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 1
-_ACEOF
-
-else
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 0
-_ACEOF
-
-fi
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtol" >&5
-$as_echo_n "checking for declaration of strtol... " >&6; }
-if ${bash_cv_decl_strtol+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-
-int
-main ()
-{
-return !strtol;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_decl_strtol=yes
-else
- bash_cv_decl_strtol=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtol" >&5
-$as_echo "$bash_cv_decl_strtol" >&6; }
-bash_tr_func=HAVE_DECL_`echo strtol | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-if test $bash_cv_decl_strtol = yes; then
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 1
-_ACEOF
-
-else
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 0
-_ACEOF
-
-fi
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoll" >&5
-$as_echo_n "checking for declaration of strtoll... " >&6; }
-if ${bash_cv_decl_strtoll+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-
-int
-main ()
-{
-return !strtoll;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_decl_strtoll=yes
-else
- bash_cv_decl_strtoll=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoll" >&5
-$as_echo "$bash_cv_decl_strtoll" >&6; }
-bash_tr_func=HAVE_DECL_`echo strtoll | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-if test $bash_cv_decl_strtoll = yes; then
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 1
-_ACEOF
-
-else
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 0
-_ACEOF
-
-fi
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoul" >&5
-$as_echo_n "checking for declaration of strtoul... " >&6; }
-if ${bash_cv_decl_strtoul+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-
-int
-main ()
-{
-return !strtoul;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_decl_strtoul=yes
-else
- bash_cv_decl_strtoul=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoul" >&5
-$as_echo "$bash_cv_decl_strtoul" >&6; }
-bash_tr_func=HAVE_DECL_`echo strtoul | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-if test $bash_cv_decl_strtoul = yes; then
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 1
-_ACEOF
-
-else
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 0
-_ACEOF
-
+ac_fn_check_decl "$LINENO" "strtol" "ac_cv_have_decl_strtol" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strtol" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_STRTOL $ac_have_decl" >>confdefs.h
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoull" >&5
-$as_echo_n "checking for declaration of strtoull... " >&6; }
-if ${bash_cv_decl_strtoull+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-
-int
-main ()
-{
-return !strtoull;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_decl_strtoull=yes
-else
- bash_cv_decl_strtoull=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+ac_fn_check_decl "$LINENO" "strtoll" "ac_cv_have_decl_strtoll" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strtoll" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoull" >&5
-$as_echo "$bash_cv_decl_strtoull" >&6; }
-bash_tr_func=HAVE_DECL_`echo strtoull | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-if test $bash_cv_decl_strtoull = yes; then
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 1
-_ACEOF
-
-else
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 0
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_STRTOLL $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "strtoul" "ac_cv_have_decl_strtoul" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strtoul" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_STRTOUL $ac_have_decl" >>confdefs.h
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for declaration of strtoumax" >&5
-$as_echo_n "checking for declaration of strtoumax... " >&6; }
-if ${bash_cv_decl_strtoumax+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#if STDC_HEADERS
-# include <stdlib.h>
-#endif
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
-
-int
-main ()
-{
-return !strtoumax;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_decl_strtoumax=yes
-else
- bash_cv_decl_strtoumax=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+ac_fn_check_decl "$LINENO" "strtoull" "ac_cv_have_decl_strtoull" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strtoull" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_strtoumax" >&5
-$as_echo "$bash_cv_decl_strtoumax" >&6; }
-bash_tr_func=HAVE_DECL_`echo strtoumax | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-if test $bash_cv_decl_strtoumax = yes; then
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 1
-_ACEOF
-
-else
- cat >>confdefs.h <<_ACEOF
-#define $bash_tr_func 0
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_STRTOULL $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "strtoumax" "ac_cv_have_decl_strtoumax" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strtoumax" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_STRTOUMAX $ac_have_decl" >>confdefs.h
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5
-$as_echo_n "checking for working mktime... " >&6; }
-if ${ac_cv_func_working_mktime+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5
+printf %s "checking for working mktime... " >&6; }
+if test ${ac_cv_func_working_mktime+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_func_working_mktime=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Test program from Paul Eggert and Tony Leneis. */
-#ifdef TIME_WITH_SYS_TIME
+#include <time.h>
+#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
-# include <time.h>
-#else
-# ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
#endif
#include <limits.h>
@@ -14851,7 +15907,7 @@ year_2050_test ()
}
int
-main ()
+main (void)
{
time_t t, delta;
int i, j;
@@ -14895,9 +15951,10 @@ main ()
return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ());
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_working_mktime=yes
-else
+else $as_nop
ac_cv_func_working_mktime=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -14905,8 +15962,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5
-$as_echo "$ac_cv_func_working_mktime" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5
+printf "%s\n" "$ac_cv_func_working_mktime" >&6; }
if test $ac_cv_func_working_mktime = no; then
case " $LIBOBJS " in
*" mktime.$ac_objext "* ) ;;
@@ -14918,40 +15975,55 @@ fi
-for ac_header in argz.h errno.h fcntl.h malloc.h stdio_ext.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "argz.h" "ac_cv_header_argz_h" "$ac_includes_default"
+if test "x$ac_cv_header_argz_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARGZ_H 1" >>confdefs.h
fi
+ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default"
+if test "x$ac_cv_header_errno_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h
-done
-
+fi
+ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default"
+if test "x$ac_cv_header_fcntl_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
+fi
+ac_fn_c_check_header_compile "$LINENO" "malloc.h" "ac_cv_header_malloc_h" "$ac_includes_default"
+if test "x$ac_cv_header_malloc_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MALLOC_H 1" >>confdefs.h
-for ac_func in getpagesize
-do :
- ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize"
-if test "x$ac_cv_func_getpagesize" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPAGESIZE 1
-_ACEOF
+fi
+ac_fn_c_check_header_compile "$LINENO" "stdio_ext.h" "ac_cv_header_stdio_ext_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdio_ext_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_STDIO_EXT_H 1" >>confdefs.h
fi
-done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
-$as_echo_n "checking for working mmap... " >&6; }
-if ${ac_cv_func_mmap_fixed_mapped+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_mmap_fixed_mapped=no
-else
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5
+printf %s "checking for working mmap... " >&6; }
+if test ${ac_cv_func_mmap_fixed_mapped+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in # ((
+ # Guess yes on platforms where we know the result.
+ linux*) ac_cv_func_mmap_fixed_mapped=yes ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_mmap_fixed_mapped=no ;;
+ esac
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
@@ -14983,10 +16055,6 @@ $ac_includes_default
#include <fcntl.h>
#include <sys/mman.h>
-#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
-char *malloc ();
-#endif
-
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
# ifdef _SC_PAGESIZE
@@ -15020,7 +16088,7 @@ char *malloc ();
#endif /* no HAVE_GETPAGESIZE */
int
-main ()
+main (void)
{
char *data, *data2, *data3;
const char *cdata2;
@@ -15088,12 +16156,15 @@ main ()
if (*(data + i) != *(data3 + i))
return 14;
close (fd);
+ free (data);
+ free (data3);
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_mmap_fixed_mapped=yes
-else
+else $as_nop
ac_cv_func_mmap_fixed_mapped=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -15101,27 +16172,69 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
-$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5
+printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; }
if test $ac_cv_func_mmap_fixed_mapped = yes; then
-$as_echo "#define HAVE_MMAP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h
fi
rm -f conftest.mmap conftest.txt
-for ac_func in __argz_count __argz_next __argz_stringify dcgettext mempcpy \
- munmap mremap stpcpy strcspn
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "__argz_count" "ac_cv_func___argz_count"
+if test "x$ac_cv_func___argz_count" = xyes
+then :
+ printf "%s\n" "#define HAVE___ARGZ_COUNT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "__argz_next" "ac_cv_func___argz_next"
+if test "x$ac_cv_func___argz_next" = xyes
+then :
+ printf "%s\n" "#define HAVE___ARGZ_NEXT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "__argz_stringify" "ac_cv_func___argz_stringify"
+if test "x$ac_cv_func___argz_stringify" = xyes
+then :
+ printf "%s\n" "#define HAVE___ARGZ_STRINGIFY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext"
+if test "x$ac_cv_func_dcgettext" = xyes
+then :
+ printf "%s\n" "#define HAVE_DCGETTEXT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mempcpy" "ac_cv_func_mempcpy"
+if test "x$ac_cv_func_mempcpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMPCPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "munmap" "ac_cv_func_munmap"
+if test "x$ac_cv_func_munmap" = xyes
+then :
+ printf "%s\n" "#define HAVE_MUNMAP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mremap" "ac_cv_func_mremap"
+if test "x$ac_cv_func_mremap" = xyes
+then :
+ printf "%s\n" "#define HAVE_MREMAP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "stpcpy" "ac_cv_func_stpcpy"
+if test "x$ac_cv_func_stpcpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_STPCPY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strcspn" "ac_cv_func_strcspn"
+if test "x$ac_cv_func_strcspn" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRCSPN 1" >>confdefs.h
fi
-done
INTL_DEP= INTL_INC= LIBINTL_H=
@@ -15136,92 +16249,78 @@ fi
-for ac_header in wctype.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default"
-if test "x$ac_cv_header_wctype_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_WCTYPE_H 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default"
+if test "x$ac_cv_header_wctype_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCTYPE_H 1" >>confdefs.h
fi
-done
-
-for ac_header in wchar.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default"
-if test "x$ac_cv_header_wchar_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_WCHAR_H 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default"
+if test "x$ac_cv_header_wchar_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h
fi
-done
-
-for ac_header in langinfo.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default"
-if test "x$ac_cv_header_langinfo_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LANGINFO_H 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_langinfo_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h
fi
-done
-
-for ac_header in mbstr.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "mbstr.h" "ac_cv_header_mbstr_h" "$ac_includes_default"
-if test "x$ac_cv_header_mbstr_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_MBSTR_H 1
-_ACEOF
+ac_fn_c_check_header_compile "$LINENO" "mbstr.h" "ac_cv_header_mbstr_h" "$ac_includes_default"
+if test "x$ac_cv_header_mbstr_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBSTR_H 1" >>confdefs.h
fi
-done
-
ac_fn_c_check_func "$LINENO" "mbrlen" "ac_cv_func_mbrlen"
-if test "x$ac_cv_func_mbrlen" = xyes; then :
- $as_echo "#define HAVE_MBRLEN 1" >>confdefs.h
+if test "x$ac_cv_func_mbrlen" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBRLEN 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "mbscasecmp" "ac_cv_func_mbscasecmp"
-if test "x$ac_cv_func_mbscasecmp" = xyes; then :
- $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h
+if test "x$ac_cv_func_mbscasecmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBSCMP 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "mbscmp" "ac_cv_func_mbscmp"
-if test "x$ac_cv_func_mbscmp" = xyes; then :
- $as_echo "#define HAVE_MBSCMP 1" >>confdefs.h
+if test "x$ac_cv_func_mbscmp" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBSCMP 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "mbsnrtowcs" "ac_cv_func_mbsnrtowcs"
-if test "x$ac_cv_func_mbsnrtowcs" = xyes; then :
- $as_echo "#define HAVE_MBSNRTOWCS 1" >>confdefs.h
+if test "x$ac_cv_func_mbsnrtowcs" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBSNRTOWCS 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "mbsrtowcs" "ac_cv_func_mbsrtowcs"
-if test "x$ac_cv_func_mbsrtowcs" = xyes; then :
- $as_echo "#define HAVE_MBSRTOWCS 1" >>confdefs.h
+if test "x$ac_cv_func_mbsrtowcs" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBSRTOWCS 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "mbschr" "ac_cv_func_mbschr"
-if test "x$ac_cv_func_mbschr" = xyes; then :
- $as_echo "#define HAVE_MBSCHR 1" >>confdefs.h
+if test "x$ac_cv_func_mbschr" = xyes
+then :
+ printf "%s\n" "#define HAVE_MBSCHR 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" mbschr.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS mbschr.$ac_objext"
@@ -15231,43 +16330,48 @@ esac
fi
-
ac_fn_c_check_func "$LINENO" "wcrtomb" "ac_cv_func_wcrtomb"
-if test "x$ac_cv_func_wcrtomb" = xyes; then :
- $as_echo "#define HAVE_WCRTOMB 1" >>confdefs.h
+if test "x$ac_cv_func_wcrtomb" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCRTOMB 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "wcscoll" "ac_cv_func_wcscoll"
-if test "x$ac_cv_func_wcscoll" = xyes; then :
- $as_echo "#define HAVE_WCSCOLL 1" >>confdefs.h
+if test "x$ac_cv_func_wcscoll" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSCOLL 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "wcsdup" "ac_cv_func_wcsdup"
-if test "x$ac_cv_func_wcsdup" = xyes; then :
- $as_echo "#define HAVE_WCSDUP 1" >>confdefs.h
+if test "x$ac_cv_func_wcsdup" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSDUP 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "wcwidth" "ac_cv_func_wcwidth"
-if test "x$ac_cv_func_wcwidth" = xyes; then :
- $as_echo "#define HAVE_WCWIDTH 1" >>confdefs.h
+if test "x$ac_cv_func_wcwidth" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCWIDTH 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "wctype" "ac_cv_func_wctype"
-if test "x$ac_cv_func_wctype" = xyes; then :
- $as_echo "#define HAVE_WCTYPE 1" >>confdefs.h
+if test "x$ac_cv_func_wctype" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCTYPE 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "wcswidth" "ac_cv_func_wcswidth"
-if test "x$ac_cv_func_wcswidth" = xyes; then :
- $as_echo "#define HAVE_WCSWIDTH 1" >>confdefs.h
+if test "x$ac_cv_func_wcswidth" = xyes
+then :
+ printf "%s\n" "#define HAVE_WCSWIDTH 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" wcswidth.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS wcswidth.$ac_objext"
@@ -15278,17 +16382,17 @@ fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5
-$as_echo_n "checking whether mbrtowc and mbstate_t are properly declared... " >&6; }
-if ${ac_cv_func_mbrtowc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether mbrtowc and mbstate_t are properly declared" >&5
+printf %s "checking whether mbrtowc and mbstate_t are properly declared... " >&6; }
+if test ${ac_cv_func_mbrtowc+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <wchar.h>
int
-main ()
+main (void)
{
wchar_t wc;
char const s[] = "";
@@ -15299,82 +16403,74 @@ wchar_t wc;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_func_mbrtowc=yes
-else
+else $as_nop
ac_cv_func_mbrtowc=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5
-$as_echo "$ac_cv_func_mbrtowc" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mbrtowc" >&5
+printf "%s\n" "$ac_cv_func_mbrtowc" >&6; }
if test $ac_cv_func_mbrtowc = yes; then
-$as_echo "#define HAVE_MBRTOWC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_MBRTOWC 1" >>confdefs.h
fi
if test $ac_cv_func_mbrtowc = yes; then
- $as_echo "#define HAVE_MBSTATE_T 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_MBSTATE_T 1" >>confdefs.h
fi
-for ac_func in iswlower iswupper towlower towupper iswctype
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "iswlower" "ac_cv_func_iswlower"
+if test "x$ac_cv_func_iswlower" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISWLOWER 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "iswupper" "ac_cv_func_iswupper"
+if test "x$ac_cv_func_iswupper" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISWUPPER 1" >>confdefs.h
+fi
+ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower"
+if test "x$ac_cv_func_towlower" = xyes
+then :
+ printf "%s\n" "#define HAVE_TOWLOWER 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
-$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
-if ${bash_cv_langinfo_codeset+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <langinfo.h>
-int
-main ()
-{
-char* cs = nl_langinfo(CODESET);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_langinfo_codeset=yes
-else
- bash_cv_langinfo_codeset=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+ac_fn_c_check_func "$LINENO" "towupper" "ac_cv_func_towupper"
+if test "x$ac_cv_func_towupper" = xyes
+then :
+ printf "%s\n" "#define HAVE_TOWUPPER 1" >>confdefs.h
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_langinfo_codeset" >&5
-$as_echo "$bash_cv_langinfo_codeset" >&6; }
-if test $bash_cv_langinfo_codeset = yes; then
- $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
+ac_fn_c_check_func "$LINENO" "iswctype" "ac_cv_func_iswctype"
+if test "x$ac_cv_func_iswctype" = xyes
+then :
+ printf "%s\n" "#define HAVE_ISWCTYPE 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5
-$as_echo_n "checking for wchar_t in wchar.h... " >&6; }
-if ${bash_cv_type_wchar_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wchar_t in wchar.h" >&5
+printf %s "checking for wchar_t in wchar.h... " >&6; }
+if test ${bash_cv_type_wchar_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <wchar.h>
+#include <wchar.h>
int
-main ()
+main (void)
{
wchar_t foo;
@@ -15384,31 +16480,35 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_type_wchar_t=yes
-else
+else $as_nop
bash_cv_type_wchar_t=no
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5
-$as_echo "$bash_cv_type_wchar_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wchar_t" >&5
+printf "%s\n" "$bash_cv_type_wchar_t" >&6; }
if test $bash_cv_type_wchar_t = yes; then
-$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_WCHAR_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5
-$as_echo_n "checking for wctype_t in wctype.h... " >&6; }
-if ${bash_cv_type_wctype_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wctype_t in wctype.h" >&5
+printf %s "checking for wctype_t in wctype.h... " >&6; }
+if test ${bash_cv_type_wctype_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <wctype.h>
int
-main ()
+main (void)
{
wctype_t foo;
@@ -15418,31 +16518,35 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_type_wctype_t=yes
-else
+else $as_nop
bash_cv_type_wctype_t=no
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5
-$as_echo "$bash_cv_type_wctype_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wctype_t" >&5
+printf "%s\n" "$bash_cv_type_wctype_t" >&6; }
if test $bash_cv_type_wctype_t = yes; then
-$as_echo "#define HAVE_WCTYPE_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_WCTYPE_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5
-$as_echo_n "checking for wint_t in wctype.h... " >&6; }
-if ${bash_cv_type_wint_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wint_t in wctype.h" >&5
+printf %s "checking for wint_t in wctype.h... " >&6; }
+if test ${bash_cv_type_wint_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <wctype.h>
int
-main ()
+main (void)
{
wint_t foo;
@@ -15452,29 +16556,34 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_type_wint_t=yes
-else
+else $as_nop
bash_cv_type_wint_t=no
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5
-$as_echo "$bash_cv_type_wint_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_wint_t" >&5
+printf "%s\n" "$bash_cv_type_wint_t" >&6; }
if test $bash_cv_type_wint_t = yes; then
-$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_WINT_T 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5
-$as_echo_n "checking for wcwidth broken with unicode combining characters... " >&6; }
-if ${bash_cv_wcwidth_broken+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wcwidth broken with unicode combining characters" >&5
+printf %s "checking for wcwidth broken with unicode combining characters... " >&6; }
+if test ${bash_cv_wcwidth_broken+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
bash_cv_wcwidth_broken=no
-else
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15498,9 +16607,10 @@ char **v;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_wcwidth_broken=yes
-else
+else $as_nop
bash_cv_wcwidth_broken=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -15508,27 +16618,23 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5
-$as_echo "$bash_cv_wcwidth_broken" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcwidth_broken" >&5
+printf "%s\n" "$bash_cv_wcwidth_broken" >&6; }
if test "$bash_cv_wcwidth_broken" = yes; then
-$as_echo "#define WCWIDTH_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define WCWIDTH_BROKEN 1" >>confdefs.h
fi
if test "$am_cv_func_iconv" = yes; then
OLDLIBS="$LIBS"
LIBS="$LIBS $LIBINTL $LIBICONV"
- for ac_func in locale_charset
-do :
- ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset"
-if test "x$ac_cv_func_locale_charset" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LOCALE_CHARSET 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "locale_charset" "ac_cv_func_locale_charset"
+if test "x$ac_cv_func_locale_charset" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCALE_CHARSET 1" >>confdefs.h
fi
-done
LIBS="$OLDLIBS"
fi
@@ -15537,17 +16643,19 @@ fi
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
-$as_echo_n "checking size of wchar_t... " >&6; }
-if ${ac_cv_sizeof_wchar_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
+printf %s "checking size of wchar_t... " >&6; }
+if test ${ac_cv_sizeof_wchar_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_wchar_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (wchar_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -15556,25 +16664,24 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
-$as_echo "$ac_cv_sizeof_wchar_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
+printf "%s\n" "$ac_cv_sizeof_wchar_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t" >>confdefs.h
if test "$opt_static_link" != yes; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15583,78 +16690,64 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBDL 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h
LIBS="-ldl $LIBS"
fi
-for ac_func in dlopen dlclose dlsym
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "dlclose" "ac_cv_func_dlclose"
+if test "x$ac_cv_func_dlclose" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLCLOSE 1" >>confdefs.h
fi
+ac_fn_c_check_func "$LINENO" "dlsym" "ac_cv_func_dlsym"
+if test "x$ac_cv_func_dlsym" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLSYM 1" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "#include <signal.h>
-/* NetBSD declares sys_siglist in unistd.h. */
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-"
-if test "x$ac_cv_have_decl_sys_siglist" = xyes; then :
- ac_have_decl=1
-else
- ac_have_decl=0
fi
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SYS_SIGLIST $ac_have_decl
-_ACEOF
-
-
+fi
if test "$ac_cv_func_inet_aton" != 'yes'; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5
-$as_echo_n "checking for inet_aton... " >&6; }
-if ${bash_cv_func_inet_aton+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_aton" >&5
+printf %s "checking for inet_aton... " >&6; }
+if test ${bash_cv_func_inet_aton+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15663,25 +16756,26 @@ else
#include <arpa/inet.h>
struct in_addr ap;
int
-main ()
+main (void)
{
inet_aton("127.0.0.1", &ap);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
bash_cv_func_inet_aton=yes
-else
+else $as_nop
bash_cv_func_inet_aton=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_inet_aton" >&5
-$as_echo "$bash_cv_func_inet_aton" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_inet_aton" >&5
+printf "%s\n" "$bash_cv_func_inet_aton" >&6; }
if test $bash_cv_func_inet_aton = yes; then
- $as_echo "#define HAVE_INET_ATON 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h
else
case " $LIBOBJS " in
@@ -15695,11 +16789,12 @@ fi
fi
case "$host_os" in
-irix4*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpwent in -lsun" >&5
-$as_echo_n "checking for getpwent in -lsun... " >&6; }
-if ${ac_cv_lib_sun_getpwent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+irix4*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpwent in -lsun" >&5
+printf %s "checking for getpwent in -lsun... " >&6; }
+if test ${ac_cv_lib_sun_getpwent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsun $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15708,33 +16803,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char getpwent ();
int
-main ()
+main (void)
{
return getpwent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sun_getpwent=yes
-else
+else $as_nop
ac_cv_lib_sun_getpwent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sun_getpwent" >&5
-$as_echo "$ac_cv_lib_sun_getpwent" >&6; }
-if test "x$ac_cv_lib_sun_getpwent" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSUN 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sun_getpwent" >&5
+printf "%s\n" "$ac_cv_lib_sun_getpwent" >&6; }
+if test "x$ac_cv_lib_sun_getpwent" = xyes
+then :
+ printf "%s\n" "#define HAVE_LIBSUN 1" >>confdefs.h
LIBS="-lsun $LIBS"
@@ -15747,18 +16839,20 @@ if test "$ac_cv_func_getpeername" = no; then
if test "X$bash_cv_have_socklib" = "X"; then
_bash_needmsg=
else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket library" >&5
-$as_echo_n "checking for socket library... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket library" >&5
+printf %s "checking for socket library... " >&6; }
_bash_needmsg=yes
fi
-if ${bash_cv_have_socklib+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpeername in -lsocket" >&5
-$as_echo_n "checking for getpeername in -lsocket... " >&6; }
-if ${ac_cv_lib_socket_getpeername+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${bash_cv_have_socklib+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpeername in -lsocket" >&5
+printf %s "checking for getpeername in -lsocket... " >&6; }
+if test ${ac_cv_lib_socket_getpeername+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsocket -lnsl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15767,40 +16861,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char getpeername ();
int
-main ()
+main (void)
{
return getpeername ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_socket_getpeername=yes
-else
+else $as_nop
ac_cv_lib_socket_getpeername=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_getpeername" >&5
-$as_echo "$ac_cv_lib_socket_getpeername" >&6; }
-if test "x$ac_cv_lib_socket_getpeername" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_getpeername" >&5
+printf "%s\n" "$ac_cv_lib_socket_getpeername" >&6; }
+if test "x$ac_cv_lib_socket_getpeername" = xyes
+then :
bash_cv_have_socklib=yes
-else
+else $as_nop
bash_cv_have_socklib=no
fi
fi
if test "X$_bash_needmsg" = Xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_socklib" >&5
-$as_echo "$bash_cv_have_socklib" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_socklib" >&5
+printf "%s\n" "$bash_cv_have_socklib" >&6; }
_bash_needmsg=
fi
if test $bash_cv_have_socklib = yes; then
@@ -15808,18 +16901,20 @@ if test $bash_cv_have_socklib = yes; then
if test "X$bash_cv_have_libnsl" = "X"; then
_bash_needmsg=
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnsl" >&5
-$as_echo_n "checking for libnsl... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnsl" >&5
+printf %s "checking for libnsl... " >&6; }
_bash_needmsg=yes
fi
- if ${bash_cv_have_libnsl+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5
-$as_echo_n "checking for t_open in -lnsl... " >&6; }
-if ${ac_cv_lib_nsl_t_open+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${bash_cv_have_libnsl+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for t_open in -lnsl" >&5
+printf %s "checking for t_open in -lnsl... " >&6; }
+if test ${ac_cv_lib_nsl_t_open+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lnsl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15828,40 +16923,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char t_open ();
int
-main ()
+main (void)
{
return t_open ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_nsl_t_open=yes
-else
+else $as_nop
ac_cv_lib_nsl_t_open=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5
-$as_echo "$ac_cv_lib_nsl_t_open" >&6; }
-if test "x$ac_cv_lib_nsl_t_open" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_t_open" >&5
+printf "%s\n" "$ac_cv_lib_nsl_t_open" >&6; }
+if test "x$ac_cv_lib_nsl_t_open" = xyes
+then :
bash_cv_have_libnsl=yes
-else
+else $as_nop
bash_cv_have_libnsl=no
fi
fi
if test "X$_bash_needmsg" = Xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_libnsl" >&5
-$as_echo "$bash_cv_have_libnsl" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_libnsl" >&5
+printf "%s\n" "$bash_cv_have_libnsl" >&6; }
_bash_needmsg=
fi
if test $bash_cv_have_libnsl = yes; then
@@ -15869,9 +16963,9 @@ $as_echo "$bash_cv_have_libnsl" >&6; }
else
LIBS="-lsocket $LIBS"
fi
- $as_echo "#define HAVE_LIBSOCKET 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h
- $as_echo "#define HAVE_GETPEERNAME 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h
fi
@@ -15880,57 +16974,64 @@ if test "$ac_cv_func_gethostbyname" = no; then
if test "X$bash_cv_have_gethostbyname" = "X"; then
_bash_needmsg=yes
else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5
-$as_echo_n "checking for gethostbyname in socket library... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5
+printf %s "checking for gethostbyname in socket library... " >&6; }
_bash_needmsg=
fi
-if ${bash_cv_have_gethostbyname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${bash_cv_have_gethostbyname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <netdb.h>
+
int
-main ()
+main (void)
{
- struct hostent *hp;
- hp = gethostbyname("localhost");
+
+struct hostent *hp;
+hp = gethostbyname("localhost");
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
bash_cv_have_gethostbyname=yes
-else
+else $as_nop
bash_cv_have_gethostbyname=no
+
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
-
fi
if test "X$_bash_needmsg" = Xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5
-$as_echo_n "checking for gethostbyname in socket library... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in socket library" >&5
+printf %s "checking for gethostbyname in socket library... " >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_gethostbyname" >&5
-$as_echo "$bash_cv_have_gethostbyname" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_gethostbyname" >&5
+printf "%s\n" "$bash_cv_have_gethostbyname" >&6; }
if test "$bash_cv_have_gethostbyname" = yes; then
-$as_echo "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5
-$as_echo_n "checking type of array argument to getgroups... " >&6; }
-if ${ac_cv_type_getgroups+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5
+printf %s "checking type of array argument to getgroups... " >&6; }
+if test ${ac_cv_type_getgroups+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_type_getgroups=cross
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Thanks to Mike Rendell for this test. */
@@ -15940,7 +17041,7 @@ $ac_includes_default
#define MAX(x, y) ((x) > (y) ? (x) : (y))
int
-main ()
+main (void)
{
gid_t gidset[NGID];
int i, n;
@@ -15957,9 +17058,10 @@ main ()
return n > 0 && gidset[n] != val.gval;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_type_getgroups=gid_t
-else
+else $as_nop
ac_cv_type_getgroups=int
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -15973,111 +17075,136 @@ if test $ac_cv_type_getgroups = cross; then
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then :
+ $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1
+then :
ac_cv_type_getgroups=gid_t
-else
+else $as_nop
ac_cv_type_getgroups=int
fi
-rm -f conftest*
+rm -rf conftest*
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5
-$as_echo "$ac_cv_type_getgroups" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5
+printf "%s\n" "$ac_cv_type_getgroups" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define GETGROUPS_T $ac_cv_type_getgroups
-_ACEOF
+printf "%s\n" "#define GETGROUPS_T $ac_cv_type_getgroups" >>confdefs.h
ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
+if test "x$ac_cv_type_off_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
+printf "%s\n" "#define off_t long int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
-if test "x$ac_cv_type_mode_t" = xyes; then :
+if test "x$ac_cv_type_mode_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define mode_t int
-_ACEOF
+printf "%s\n" "#define mode_t int" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${ac_cv_type_uid_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+printf %s "checking for uid_t in sys/types.h... " >&6; }
+if test ${ac_cv_type_uid_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "uid_t" >/dev/null 2>&1; then :
+ $EGREP "uid_t" >/dev/null 2>&1
+then :
ac_cv_type_uid_t=yes
-else
+else $as_nop
ac_cv_type_uid_t=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-$as_echo "$ac_cv_type_uid_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+printf "%s\n" "$ac_cv_type_uid_t" >&6; }
if test $ac_cv_type_uid_t = no; then
-$as_echo "#define uid_t int" >>confdefs.h
+printf "%s\n" "#define uid_t int" >>confdefs.h
-$as_echo "#define gid_t int" >>confdefs.h
+printf "%s\n" "#define gid_t int" >>confdefs.h
fi
-ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
-else
+ ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default
+"
+if test "x$ac_cv_type_pid_t" = xyes
+then :
+
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #if defined _WIN64 && !defined __CYGWIN__
+ LLP64
+ #endif
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_pid_type='int'
+else $as_nop
+ ac_pid_type='__int64'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h
+
fi
+
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
+if test "x$ac_cv_type_size_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
+printf "%s\n" "#define size_t unsigned int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default"
-if test "x$ac_cv_type_uintptr_t" = xyes; then :
+if test "x$ac_cv_type_uintptr_t" = xyes
+then :
-$as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h
+printf "%s\n" "#define HAVE_UINTPTR_T 1" >>confdefs.h
-else
+else $as_nop
for ac_type in 'unsigned int' 'unsigned long int' \
'unsigned long long int'; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))];
test_array [0] = 0;
@@ -16087,15 +17214,14 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-cat >>confdefs.h <<_ACEOF
-#define uintptr_t $ac_type
-_ACEOF
+printf "%s\n" "#define uintptr_t $ac_type" >>confdefs.h
ac_type=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test -z "$ac_type" && break
done
fi
@@ -16103,172 +17229,225 @@ fi
ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default"
-if test "x$ac_cv_type_ssize_t" = xyes; then :
+if test "x$ac_cv_type_ssize_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define ssize_t int
-_ACEOF
+printf "%s\n" "#define ssize_t int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "time_t" "ac_cv_type_time_t" "$ac_includes_default"
-if test "x$ac_cv_type_time_t" = xyes; then :
+if test "x$ac_cv_type_time_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define time_t long
-_ACEOF
+printf "%s\n" "#define time_t long" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long" >&5
-$as_echo_n "checking for long long... " >&6; }
-if ${bash_cv_type_long_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+printf %s "checking for long long int... " >&6; }
+if test ${ac_cv_type_long_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_type_long_long_int=yes
+ case $ac_prog_cc_stdc in
+ no | c89) ;;
+ *)
+ ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+ if test $ac_cv_type_long_long_int = yes; then
+ if test "$cross_compiling" = yes
+then :
+ :
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
-long long ll = 1; int i = 63;
+#include <limits.h>
+ #ifndef LLONG_MAX
+ # define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ # define LLONG_MAX (HALF - 1 + HALF)
+ #endif
int
-main ()
+main (void)
{
-
-long long llm = (long long) -1;
-return ll << i | ll >> i | llm / ll | llm % ll;
-
+long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_type_long_long='long long'
-else
- bash_cv_type_long_long='long'
+if ac_fn_c_try_run "$LINENO"
+then :
+
+else $as_nop
+ ac_cv_type_long_long_int=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_long_long" >&5
-$as_echo "$bash_cv_type_long_long" >&6; }
-if test "$bash_cv_type_long_long" = 'long long'; then
- $as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h
+ fi;;
+ esac
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_long_long_int" >&6; }
+ if test $ac_cv_type_long_long_int = yes; then
+printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long" >&5
-$as_echo_n "checking for unsigned long long... " >&6; }
-if ${bash_cv_type_unsigned_long_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-unsigned long long ull = 1; int i = 63;
-int
-main ()
-{
-
-unsigned long long ullmax = (unsigned long long) -1;
-return ull << i | ull >> i | ullmax / ull | ullmax % ull;
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_type_unsigned_long_long='unsigned long long'
-else
- bash_cv_type_unsigned_long_long='unsigned long'
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_unsigned_long_long" >&5
-$as_echo "$bash_cv_type_unsigned_long_long" >&6; }
-if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
- $as_echo "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h
-
-fi
+ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5
-$as_echo_n "checking return type of signal handlers... " >&6; }
-if ${ac_cv_type_signal+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+printf %s "checking for unsigned long long int... " >&6; }
+if test ${ac_cv_type_unsigned_long_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_type_unsigned_long_long_int=yes
+ case $ac_prog_cc_stdc in
+ no | c89) ;;
+ *)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <sys/types.h>
-#include <signal.h>
+ /* For now, do not test the preprocessor; as of 2007 there are too many
+ implementations with broken preprocessors. Perhaps this can
+ be revisited in 2012. In the meantime, code should not expect
+ #if to work with literals wider than 32 bits. */
+ /* Test literals. */
+ long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ unsigned long long int ull = 18446744073709551615ULL;
+ /* Test constant expressions. */
+ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;
int
-main ()
+main (void)
{
-return *(signal (0, 0)) (0) == 1;
+/* Test availability of runtime routines for shift and division. */
+ long long int llmax = 9223372036854775807ll;
+ unsigned long long int ullmax = 18446744073709551615ull;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll)
+ | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+ | (ullmax / ull) | (ullmax % ull));
;
return 0;
}
+
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_type_signal=int
-else
- ac_cv_type_signal=void
+if ac_fn_c_try_link "$LINENO"
+then :
+
+else $as_nop
+ ac_cv_type_unsigned_long_long_int=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5
-$as_echo "$ac_cv_type_signal" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; }
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
-cat >>confdefs.h <<_ACEOF
-#define RETSIGTYPE $ac_cv_type_signal
-_ACEOF
+printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5
-$as_echo_n "checking for sig_atomic_t in signal.h... " >&6; }
-if ${ac_cv_have_sig_atomic_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t in signal.h" >&5
+printf %s "checking for sig_atomic_t in signal.h... " >&6; }
+if test ${ac_cv_have_sig_atomic_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
-#include <signal.h>
-
+ #include <signal.h>
int
-main ()
+main (void)
{
sig_atomic_t x;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_have_sig_atomic_t=yes
-else
+else $as_nop
ac_cv_have_sig_atomic_t=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5
-$as_echo "$ac_cv_have_sig_atomic_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sig_atomic_t" >&5
+printf "%s\n" "$ac_cv_have_sig_atomic_t" >&6; }
if test "$ac_cv_have_sig_atomic_t" = "no"
then
- ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "$ac_includes_default"
-if test "x$ac_cv_type_sig_atomic_t" = xyes; then :
-else
-cat >>confdefs.h <<_ACEOF
-#define sig_atomic_t int
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t" >&5
+printf %s "checking for sig_atomic_t... " >&6; }
+if test ${bash_cv_type_sig_atomic_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#if HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#if HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+#if HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <signal.h>
+
_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "sig_atomic_t" >/dev/null 2>&1
+then :
+ bash_cv_type_sig_atomic_t=yes
+else $as_nop
+ bash_cv_type_sig_atomic_t=no
+fi
+rm -rf conftest*
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sig_atomic_t" >&5
+printf "%s\n" "$bash_cv_type_sig_atomic_t" >&6; }
+
+if test $bash_cv_type_sig_atomic_t = no; then
+ printf "%s\n" "#define sig_atomic_t int" >>confdefs.h
fi
@@ -16279,17 +17458,19 @@ fi
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5
-$as_echo_n "checking size of char... " >&6; }
-if ${ac_cv_sizeof_char+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of char" >&5
+printf %s "checking size of char... " >&6; }
+if test ${ac_cv_sizeof_char+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_char" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (char)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -16298,31 +17479,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
-$as_echo "$ac_cv_sizeof_char" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
+printf "%s\n" "$ac_cv_sizeof_char" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_CHAR $ac_cv_sizeof_char
-_ACEOF
+printf "%s\n" "#define SIZEOF_CHAR $ac_cv_sizeof_char" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
-$as_echo_n "checking size of short... " >&6; }
-if ${ac_cv_sizeof_short+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
+printf %s "checking size of short... " >&6; }
+if test ${ac_cv_sizeof_short+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_short" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (short)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -16331,31 +17512,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
-$as_echo "$ac_cv_sizeof_short" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
+printf "%s\n" "$ac_cv_sizeof_short" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
-_ACEOF
+printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if ${ac_cv_sizeof_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+printf %s "checking size of int... " >&6; }
+if test ${ac_cv_sizeof_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_int" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (int)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -16364,31 +17545,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+printf "%s\n" "$ac_cv_sizeof_int" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
+printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
-$as_echo_n "checking size of long... " >&6; }
-if ${ac_cv_sizeof_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+printf %s "checking size of long... " >&6; }
+if test ${ac_cv_sizeof_long+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (long)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -16397,31 +17578,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+printf "%s\n" "$ac_cv_sizeof_long" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
+printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char *" >&5
-$as_echo_n "checking size of char *... " >&6; }
-if ${ac_cv_sizeof_char_p+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char *))" "ac_cv_sizeof_char_p" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of char *" >&5
+printf %s "checking size of char *... " >&6; }
+if test ${ac_cv_sizeof_char_p+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char *))" "ac_cv_sizeof_char_p" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_char_p" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (char *)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -16430,31 +17611,64 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char_p" >&5
-$as_echo "$ac_cv_sizeof_char_p" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char_p" >&5
+printf "%s\n" "$ac_cv_sizeof_char_p" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p
-_ACEOF
+printf "%s\n" "#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
-$as_echo_n "checking size of double... " >&6; }
-if ${ac_cv_sizeof_double+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5
+printf %s "checking size of size_t... " >&6; }
+if test ${ac_cv_sizeof_size_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"
+then :
+
+else $as_nop
+ if test "$ac_cv_type_size_t" = yes; then
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (size_t)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_size_t=0
+ fi
+fi
-else
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5
+printf "%s\n" "$ac_cv_sizeof_size_t" >&6; }
+
+
+
+printf "%s\n" "#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t" >>confdefs.h
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
+printf %s "checking size of double... " >&6; }
+if test ${ac_cv_sizeof_double+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_double" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (double)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -16463,31 +17677,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5
-$as_echo "$ac_cv_sizeof_double" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5
+printf "%s\n" "$ac_cv_sizeof_double" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_DOUBLE $ac_cv_sizeof_double
-_ACEOF
+printf "%s\n" "#define SIZEOF_DOUBLE $ac_cv_sizeof_double" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
-$as_echo_n "checking size of long long... " >&6; }
-if ${ac_cv_sizeof_long_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+printf %s "checking size of long long... " >&6; }
+if test ${ac_cv_sizeof_long_long+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_long_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (long long)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -16496,36 +17710,32 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
-$as_echo "$ac_cv_sizeof_long_long" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+printf "%s\n" "$ac_cv_sizeof_long_long" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
-_ACEOF
+printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h
ac_fn_c_check_type "$LINENO" "u_int" "ac_cv_type_u_int" "$ac_includes_default"
-if test "x$ac_cv_type_u_int" = xyes; then :
+if test "x$ac_cv_type_u_int" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define u_int unsigned int
-_ACEOF
+printf "%s\n" "#define u_int unsigned int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "u_long" "ac_cv_type_u_long" "$ac_includes_default"
-if test "x$ac_cv_type_u_long" = xyes; then :
+if test "x$ac_cv_type_u_long" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define u_long unsigned long
-_ACEOF
+printf "%s\n" "#define u_long unsigned long" >>confdefs.h
fi
@@ -16533,37 +17743,34 @@ fi
if test "$ac_cv_sizeof_short" = 2; then
ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits16_t" = xyes; then :
+if test "x$ac_cv_type_bits16_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits16_t short
-_ACEOF
+printf "%s\n" "#define bits16_t short" >>confdefs.h
fi
elif test "$ac_cv_sizeof_char" = 2; then
ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits16_t" = xyes; then :
+if test "x$ac_cv_type_bits16_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits16_t char
-_ACEOF
+printf "%s\n" "#define bits16_t char" >>confdefs.h
fi
else
ac_fn_c_check_type "$LINENO" "bits16_t" "ac_cv_type_bits16_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits16_t" = xyes; then :
+if test "x$ac_cv_type_bits16_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits16_t short
-_ACEOF
+printf "%s\n" "#define bits16_t short" >>confdefs.h
fi
@@ -16572,37 +17779,34 @@ fi
if test "$ac_cv_sizeof_short" = 2; then
ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default"
-if test "x$ac_cv_type_u_bits16_t" = xyes; then :
+if test "x$ac_cv_type_u_bits16_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define u_bits16_t unsigned short
-_ACEOF
+printf "%s\n" "#define u_bits16_t unsigned short" >>confdefs.h
fi
elif test "$ac_cv_sizeof_char" = 2; then
ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default"
-if test "x$ac_cv_type_u_bits16_t" = xyes; then :
+if test "x$ac_cv_type_u_bits16_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define u_bits16_t unsigned char
-_ACEOF
+printf "%s\n" "#define u_bits16_t unsigned char" >>confdefs.h
fi
else
ac_fn_c_check_type "$LINENO" "u_bits16_t" "ac_cv_type_u_bits16_t" "$ac_includes_default"
-if test "x$ac_cv_type_u_bits16_t" = xyes; then :
+if test "x$ac_cv_type_u_bits16_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define u_bits16_t unsigned short
-_ACEOF
+printf "%s\n" "#define u_bits16_t unsigned short" >>confdefs.h
fi
@@ -16611,37 +17815,34 @@ fi
if test "$ac_cv_sizeof_int" = 4; then
ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits32_t" = xyes; then :
+if test "x$ac_cv_type_bits32_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits32_t int
-_ACEOF
+printf "%s\n" "#define bits32_t int" >>confdefs.h
fi
elif test "$ac_cv_sizeof_long" = 4; then
ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits32_t" = xyes; then :
+if test "x$ac_cv_type_bits32_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits32_t long
-_ACEOF
+printf "%s\n" "#define bits32_t long" >>confdefs.h
fi
else
ac_fn_c_check_type "$LINENO" "bits32_t" "ac_cv_type_bits32_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits32_t" = xyes; then :
+if test "x$ac_cv_type_bits32_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits32_t int
-_ACEOF
+printf "%s\n" "#define bits32_t int" >>confdefs.h
fi
@@ -16650,37 +17851,34 @@ fi
if test "$ac_cv_sizeof_int" = 4; then
ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default"
-if test "x$ac_cv_type_u_bits32_t" = xyes; then :
+if test "x$ac_cv_type_u_bits32_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define u_bits32_t unsigned int
-_ACEOF
+printf "%s\n" "#define u_bits32_t unsigned int" >>confdefs.h
fi
elif test "$ac_cv_sizeof_long" = 4; then
ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default"
-if test "x$ac_cv_type_u_bits32_t" = xyes; then :
+if test "x$ac_cv_type_u_bits32_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define u_bits32_t unsigned long
-_ACEOF
+printf "%s\n" "#define u_bits32_t unsigned long" >>confdefs.h
fi
else
ac_fn_c_check_type "$LINENO" "u_bits32_t" "ac_cv_type_u_bits32_t" "$ac_includes_default"
-if test "x$ac_cv_type_u_bits32_t" = xyes; then :
+if test "x$ac_cv_type_u_bits32_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define u_bits32_t unsigned int
-_ACEOF
+printf "%s\n" "#define u_bits32_t unsigned int" >>confdefs.h
fi
@@ -16689,61 +17887,56 @@ fi
if test "$ac_cv_sizeof_char_p" = 8; then
ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits64_t" = xyes; then :
+if test "x$ac_cv_type_bits64_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits64_t char *
-_ACEOF
+printf "%s\n" "#define bits64_t char *" >>confdefs.h
fi
elif test "$ac_cv_sizeof_double" = 8; then
ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits64_t" = xyes; then :
+if test "x$ac_cv_type_bits64_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits64_t double
-_ACEOF
+printf "%s\n" "#define bits64_t double" >>confdefs.h
fi
elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then
ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits64_t" = xyes; then :
+if test "x$ac_cv_type_bits64_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits64_t long long
-_ACEOF
+printf "%s\n" "#define bits64_t long long" >>confdefs.h
fi
elif test "$ac_cv_sizeof_long" = 8; then
ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits64_t" = xyes; then :
+if test "x$ac_cv_type_bits64_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits64_t long
-_ACEOF
+printf "%s\n" "#define bits64_t long" >>confdefs.h
fi
else
ac_fn_c_check_type "$LINENO" "bits64_t" "ac_cv_type_bits64_t" "$ac_includes_default"
-if test "x$ac_cv_type_bits64_t" = xyes; then :
+if test "x$ac_cv_type_bits64_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define bits64_t double
-_ACEOF
+printf "%s\n" "#define bits64_t double" >>confdefs.h
fi
@@ -16753,60 +17946,57 @@ fi
if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then
ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
-if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+if test "x$ac_cv_type_ptrdiff_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define ptrdiff_t int
-_ACEOF
+printf "%s\n" "#define ptrdiff_t int" >>confdefs.h
fi
elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then
ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
-if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+if test "x$ac_cv_type_ptrdiff_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define ptrdiff_t long
-_ACEOF
+printf "%s\n" "#define ptrdiff_t long" >>confdefs.h
fi
elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then
ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
-if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+if test "x$ac_cv_type_ptrdiff_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define ptrdiff_t long long
-_ACEOF
+printf "%s\n" "#define ptrdiff_t long long" >>confdefs.h
fi
else
ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
-if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+if test "x$ac_cv_type_ptrdiff_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define ptrdiff_t int
-_ACEOF
+printf "%s\n" "#define ptrdiff_t int" >>confdefs.h
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5
-$as_echo_n "checking whether stat file-mode macros are broken... " >&6; }
-if ${ac_cv_header_stat_broken+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5
+printf %s "checking whether stat file-mode macros are broken... " >&6; }
+if test ${ac_cv_header_stat_broken+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -16829,27 +18019,29 @@ extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1];
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_header_stat_broken=no
-else
+else $as_nop
ac_cv_header_stat_broken=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5
-$as_echo "$ac_cv_header_stat_broken" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5
+printf "%s\n" "$ac_cv_header_stat_broken" >&6; }
if test $ac_cv_header_stat_broken = yes; then
-$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define STAT_MACROS_BROKEN 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether #! works in shell scripts" >&5
-$as_echo_n "checking whether #! works in shell scripts... " >&6; }
-if ${ac_cv_sys_interpreter+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether #! works in shell scripts" >&5
+printf %s "checking whether #! works in shell scripts... " >&6; }
+if test ${ac_cv_sys_interpreter+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
echo '#! /bin/cat
exit 69
' >conftest
@@ -16862,128 +18054,67 @@ else
fi
rm -f conftest
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_interpreter" >&5
-$as_echo "$ac_cv_sys_interpreter" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_interpreter" >&5
+printf "%s\n" "$ac_cv_sys_interpreter" >&6; }
interpval=$ac_cv_sys_interpreter
if test $ac_cv_sys_interpreter = yes; then
-$as_echo "#define HAVE_HASH_BANG_EXEC 1" >>confdefs.h
+printf "%s\n" "#define HAVE_HASH_BANG_EXEC 1" >>confdefs.h
fi
if test "$ac_cv_func_lstat" = "no"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lstat" >&5
-$as_echo_n "checking for lstat... " >&6; }
-if ${bash_cv_func_lstat+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lstat" >&5
+printf %s "checking for lstat... " >&6; }
+if test ${bash_cv_func_lstat+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/stat.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
int
-main ()
+main (void)
{
lstat(".",(struct stat *)0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
bash_cv_func_lstat=yes
-else
+else $as_nop
bash_cv_func_lstat=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5
-$as_echo "$bash_cv_func_lstat" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_lstat" >&5
+printf "%s\n" "$bash_cv_func_lstat" >&6; }
if test $bash_cv_func_lstat = yes; then
- $as_echo "#define HAVE_LSTAT 1" >>confdefs.h
-
-fi
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the ctype macros accept non-ascii characters" >&5
-$as_echo_n "checking whether the ctype macros accept non-ascii characters... " >&6; }
-if ${bash_cv_func_ctype_nonascii+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check ctype macros if cross compiling -- defaulting to no" >&2;}
- bash_cv_func_ctype_nonascii=no
-
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#ifdef HAVE_LOCALE_H
-#include <locale.h>
-#endif
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-
-int
-main(c, v)
-int c;
-char *v[];
-{
- char *deflocale;
- unsigned char x;
- int r1, r2;
-
-#ifdef HAVE_SETLOCALE
- /* We take a shot here. If that locale is not known, try the
- system default. We try this one because '\342' (226) is
- known to be a printable character in that locale. */
- deflocale = setlocale(LC_ALL, "en_US.ISO8859-1");
- if (deflocale == 0)
- deflocale = setlocale(LC_ALL, "");
-#endif
-
- x = '\342';
- r1 = isprint(x);
- x -= 128;
- r2 = isprint(x);
- exit (r1 == 0 || r2 == 0);
-}
-
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- bash_cv_func_ctype_nonascii=yes
-else
- bash_cv_func_ctype_nonascii=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
+ printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_ctype_nonascii" >&5
-$as_echo "$bash_cv_func_ctype_nonascii" >&6; }
-if test $bash_cv_func_ctype_nonascii = yes; then
-$as_echo "#define CTYPE_NON_ASCII 1" >>confdefs.h
-
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if dup2 fails to clear the close-on-exec flag" >&5
-$as_echo_n "checking if dup2 fails to clear the close-on-exec flag... " >&6; }
-if ${bash_cv_dup2_broken+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if dup2 fails to clear the close-on-exec flag" >&5
+printf %s "checking if dup2 fails to clear the close-on-exec flag... " >&6; }
+if test ${bash_cv_dup2_broken+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check dup2 if cross compiling -- defaulting to no" >&2;}
bash_cv_dup2_broken=no
-else
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17006,36 +18137,39 @@ main()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_dup2_broken=yes
-else
+else $as_nop
bash_cv_dup2_broken=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dup2_broken" >&5
-$as_echo "$bash_cv_dup2_broken" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dup2_broken" >&5
+printf "%s\n" "$bash_cv_dup2_broken" >&6; }
if test $bash_cv_dup2_broken = yes; then
-$as_echo "#define DUP2_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define DUP2_BROKEN 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pgrps need synchronization" >&5
-$as_echo_n "checking whether pgrps need synchronization... " >&6; }
-if ${bash_cv_pgrp_pipe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pgrps need synchronization" >&5
+printf %s "checking whether pgrps need synchronization... " >&6; }
+if test ${bash_cv_pgrp_pipe+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check pgrp synchronization if cross compiling -- defaulting to no" >&2;}
bash_cv_pgrp_pipe=no
-else
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17093,37 +18227,43 @@ main()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_pgrp_pipe=no
-else
+else $as_nop
bash_cv_pgrp_pipe=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_pgrp_pipe" >&5
-$as_echo "$bash_cv_pgrp_pipe" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_pgrp_pipe" >&5
+printf "%s\n" "$bash_cv_pgrp_pipe" >&6; }
if test $bash_cv_pgrp_pipe = yes; then
-$as_echo "#define PGRP_PIPE 1" >>confdefs.h
+printf "%s\n" "#define PGRP_PIPE 1" >>confdefs.h
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5
+printf %s "checking for type of signal functions... " >&6; }
+if test ${bash_cv_signal_vintage+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for type of signal functions" >&5
-$as_echo_n "checking for type of signal functions... " >&6; }
-if ${bash_cv_signal_vintage+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
+if test ${bash_cv_posix_signals+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <signal.h>
+
int
-main ()
+main (void)
{
sigset_t ss;
@@ -17136,122 +18276,185 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
+ bash_cv_posix_signals=yes
+else $as_nop
+ bash_cv_posix_signals=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+
+if test $bash_cv_posix_signals = yes; then
bash_cv_signal_vintage=posix
else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ if test ${bash_cv_bsd_signals+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <signal.h>
+
int
-main ()
+main (void)
{
- int mask = sigmask(SIGINT);
- sigsetmask(mask); sigblock(mask); sigpause(mask);
+int mask = sigmask(SIGINT);
+sigsetmask(mask); sigblock(mask); sigpause(mask);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_signal_vintage=4.2bsd
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+ bash_cv_bsd_signals=yes
+else $as_nop
+ bash_cv_bsd_signals=no
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+
+
+ if test $bash_cv_bsd_signals = yes; then
+ bash_cv_signal_vintage=4.2bsd
+ else
+ if test ${bash_cv_sysv_signals+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
- #include <signal.h>
- RETSIGTYPE foo() { }
+#include <signal.h>
+void foo() { }
+
int
-main ()
+main (void)
{
- int mask = sigmask(SIGINT);
- sigset(SIGINT, foo); sigrelse(SIGINT);
- sighold(SIGINT); sigpause(SIGINT);
+int mask = sigmask(SIGINT);
+sigset(SIGINT, foo); sigrelse(SIGINT);
+sighold(SIGINT); sigpause(SIGINT);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- bash_cv_signal_vintage=svr3
-else
- bash_cv_signal_vintage=v7
+if ac_fn_c_try_link "$LINENO"
+then :
+ bash_cv_sysv_signals=yes
+else $as_nop
+ bash_cv_sysv_signals=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
-
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
+
+ if test $bash_cv_sysv_signals = yes; then
+ bash_cv_signal_vintage=svr3
+ else
+ bash_cv_signal_vintage=v7
+ fi
+ fi
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5
-$as_echo "$bash_cv_signal_vintage" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_signal_vintage" >&5
+printf "%s\n" "$bash_cv_signal_vintage" >&6; }
if test "$bash_cv_signal_vintage" = posix; then
-$as_echo "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_POSIX_SIGNALS 1" >>confdefs.h
elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
-$as_echo "#define HAVE_BSD_SIGNALS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_BSD_SIGNALS 1" >>confdefs.h
elif test "$bash_cv_signal_vintage" = svr3; then
-$as_echo "#define HAVE_USG_SIGHOLD 1" >>confdefs.h
+printf "%s\n" "#define HAVE_USG_SIGHOLD 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys_errlist and sys_nerr" >&5
-$as_echo_n "checking for sys_errlist and sys_nerr... " >&6; }
-if ${bash_cv_sys_errlist+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys_errlist and sys_nerr" >&5
+printf %s "checking for sys_errlist and sys_nerr... " >&6; }
+if test ${bash_cv_sys_errlist+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <errno.h>
+
int
-main ()
+main (void)
{
+
extern char *sys_errlist[];
- extern int sys_nerr;
- char *msg = sys_errlist[sys_nerr - 1];
+extern int sys_nerr;
+char *msg = sys_errlist[sys_nerr - 1];
+
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
bash_cv_sys_errlist=yes
-else
+else $as_nop
bash_cv_sys_errlist=no
+
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_errlist" >&5
-$as_echo "$bash_cv_sys_errlist" >&6; }
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_errlist" >&5
+printf "%s\n" "$bash_cv_sys_errlist" >&6; }
if test $bash_cv_sys_errlist = yes; then
-$as_echo "#define HAVE_SYS_ERRLIST 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYS_ERRLIST 1" >>confdefs.h
fi
+ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h. */
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys_siglist in system C library" >&5
-$as_echo_n "checking for sys_siglist in system C library... " >&6; }
-if ${bash_cv_sys_siglist+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;}
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_sys_siglist" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys_siglist in system C library" >&5
+printf %s "checking for sys_siglist in system C library... " >&6; }
+if test ${bash_cv_sys_siglist+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check for sys_siglist if cross compiling -- defaulting to no" >&2;}
bash_cv_sys_siglist=no
-else
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17270,10 +18473,12 @@ main()
char *msg = sys_siglist[2];
exit(msg == 0);
}
+
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_sys_siglist=yes
-else
+else $as_nop
bash_cv_sys_siglist=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -17282,18 +18487,19 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_siglist" >&5
-$as_echo "$bash_cv_sys_siglist" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_siglist" >&5
+printf "%s\n" "$bash_cv_sys_siglist" >&6; }
if test $bash_cv_sys_siglist = yes; then
-$as_echo "#define HAVE_SYS_SIGLIST 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYS_SIGLIST 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in signal.h or unistd.h" >&5
-$as_echo_n "checking for _sys_siglist in signal.h or unistd.h... " >&6; }
-if ${bash_cv_decl_under_sys_siglist+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in signal.h or unistd.h" >&5
+printf %s "checking for _sys_siglist in signal.h or unistd.h... " >&6; }
+if test ${bash_cv_decl_under_sys_siglist+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17303,38 +18509,42 @@ else
#include <unistd.h>
#endif
int
-main ()
+main (void)
{
char *msg = _sys_siglist[2];
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_decl_under_sys_siglist=yes
-else
+else $as_nop
bash_cv_decl_under_sys_siglist=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_under_sys_siglist" >&5
-$as_echo "$bash_cv_decl_under_sys_siglist" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_decl_under_sys_siglist" >&5
+printf "%s\n" "$bash_cv_decl_under_sys_siglist" >&6; }
if test $bash_cv_decl_under_sys_siglist = yes; then
-$as_echo "#define UNDER_SYS_SIGLIST_DECLARED 1" >>confdefs.h
+printf "%s\n" "#define UNDER_SYS_SIGLIST_DECLARED 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in system C library" >&5
-$as_echo_n "checking for _sys_siglist in system C library... " >&6; }
-if ${bash_cv_under_sys_siglist+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _sys_siglist in system C library" >&5
+printf %s "checking for _sys_siglist in system C library... " >&6; }
+if test ${bash_cv_under_sys_siglist+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check for _sys_siglist if cross compiling -- defaulting to no" >&2;}
bash_cv_under_sys_siglist=no
-else
+
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17353,10 +18563,12 @@ main()
char *msg = (char *)_sys_siglist[2];
exit(msg == 0);
}
+
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_under_sys_siglist=yes
-else
+else $as_nop
bash_cv_under_sys_siglist=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -17365,64 +18577,29 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_under_sys_siglist" >&5
-$as_echo "$bash_cv_under_sys_siglist" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_under_sys_siglist" >&5
+printf "%s\n" "$bash_cv_under_sys_siglist" >&6; }
if test $bash_cv_under_sys_siglist = yes; then
-$as_echo "#define HAVE_UNDER_SYS_SIGLIST 1" >>confdefs.h
-
-fi
+printf "%s\n" "#define HAVE_UNDER_SYS_SIGLIST 1" >>confdefs.h
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether signal handlers are of type void" >&5
-$as_echo_n "checking whether signal handlers are of type void... " >&6; }
-if ${bash_cv_void_sighandler+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-#undef signal
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-void (*signal ()) ();
-int
-main ()
-{
-int i;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- bash_cv_void_sighandler=yes
-else
- bash_cv_void_sighandler=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_void_sighandler" >&5
-$as_echo "$bash_cv_void_sighandler" >&6; }
-if test $bash_cv_void_sighandler = yes; then
-$as_echo "#define VOID_SIGHANDLER 1" >>confdefs.h
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_t" >&5
-$as_echo_n "checking for clock_t... " >&6; }
-if ${bash_cv_type_clock_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_t" >&5
+printf %s "checking for clock_t... " >&6; }
+if test ${bash_cv_type_clock_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
-#if STDC_HEADERS
+#if HAVE_STDLIB_H
#include <stdlib.h>
+#endif
+#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#if HAVE_INTTYPES_H
@@ -17435,37 +18612,39 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "clock_t" >/dev/null 2>&1; then :
+ $EGREP "clock_t" >/dev/null 2>&1
+then :
bash_cv_type_clock_t=yes
-else
+else $as_nop
bash_cv_type_clock_t=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_clock_t" >&5
-$as_echo "$bash_cv_type_clock_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_clock_t" >&5
+printf "%s\n" "$bash_cv_type_clock_t" >&6; }
if test $bash_cv_type_clock_t = no; then
- cat >>confdefs.h <<_ACEOF
-#define clock_t long
-_ACEOF
+ printf "%s\n" "#define clock_t long" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sigset_t" >&5
-$as_echo_n "checking for sigset_t... " >&6; }
-if ${bash_cv_type_sigset_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sigset_t" >&5
+printf %s "checking for sigset_t... " >&6; }
+if test ${bash_cv_type_sigset_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
-#if STDC_HEADERS
+#if HAVE_STDLIB_H
#include <stdlib.h>
+#endif
+#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#if HAVE_INTTYPES_H
@@ -17478,37 +18657,40 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "sigset_t" >/dev/null 2>&1; then :
+ $EGREP "sigset_t" >/dev/null 2>&1
+then :
bash_cv_type_sigset_t=yes
-else
+else $as_nop
bash_cv_type_sigset_t=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sigset_t" >&5
-$as_echo "$bash_cv_type_sigset_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sigset_t" >&5
+printf "%s\n" "$bash_cv_type_sigset_t" >&6; }
if test $bash_cv_type_sigset_t = no; then
- cat >>confdefs.h <<_ACEOF
-#define sigset_t int
-_ACEOF
+ printf "%s\n" "#define sigset_t int" >>confdefs.h
fi
+if test "$ac_cv_header_sys_socket_h" = "yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t" >&5
-$as_echo_n "checking for sig_atomic_t... " >&6; }
-if ${bash_cv_type_sig_atomic_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5
+printf %s "checking for socklen_t... " >&6; }
+if test ${bash_cv_type_socklen_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
-#if STDC_HEADERS
+#if HAVE_STDLIB_H
#include <stdlib.h>
+#endif
+#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#if HAVE_INTTYPES_H
@@ -17517,89 +18699,126 @@ else
#if HAVE_STDINT_H
#include <stdint.h>
#endif
-#include <signal.h>
+#include <sys/socket.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "sig_atomic_t" >/dev/null 2>&1; then :
- bash_cv_type_sig_atomic_t=yes
-else
- bash_cv_type_sig_atomic_t=no
+ $EGREP "socklen_t" >/dev/null 2>&1
+then :
+ bash_cv_type_socklen_t=yes
+else $as_nop
+ bash_cv_type_socklen_t=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_sig_atomic_t" >&5
-$as_echo "$bash_cv_type_sig_atomic_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_socklen_t" >&5
+printf "%s\n" "$bash_cv_type_socklen_t" >&6; }
+if test $bash_cv_type_socklen_t = yes; then
+ printf "%s\n" "#define HAVE_SOCKLEN_T 1" >>confdefs.h
-if test $bash_cv_type_sig_atomic_t = no; then
- cat >>confdefs.h <<_ACEOF
-#define sig_atomic_t int
-_ACEOF
+ fi
+if test $bash_cv_type_socklen_t = no; then
+ printf "%s\n" "#define socklen_t unsigned int" >>confdefs.h
fi
+fi
+ac_fn_c_check_type "$LINENO" "quad_t" "ac_cv_type_quad_t" "$ac_includes_default"
+if test "x$ac_cv_type_quad_t" = xyes
+then :
+ printf "%s\n" "#define HAVE_QUAD_T 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for quad_t" >&5
-$as_echo_n "checking for quad_t... " >&6; }
-if ${bash_cv_type_quad_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for type of struct rlimit fields" >&5
+printf %s "checking for type of struct rlimit fields... " >&6; }
+if test ${bash_cv_type_rlimit+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
+#include <sys/types.h>
+#include <sys/resource.h>
+int
+main (void)
+{
+rlim_t xxx;
+ ;
+ return 0;
+}
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "quad_t" >/dev/null 2>&1; then :
- bash_cv_type_quad_t=yes
-else
- bash_cv_type_quad_t=no
-fi
-rm -f conftest*
-
-fi
+if ac_fn_c_try_compile "$LINENO"
+then :
+ bash_cv_type_rlimit=rlim_t
+else $as_nop
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for size of struct rlimit fields" >&5
+printf %s "checking for size of struct rlimit fields... " >&6; }
+if test ${bash_cv_sizeof_rlim_cur+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check size of rlimit fields if cross compiling -- defaulting to long" >&5
+printf "%s\n" "$as_me: WARNING: cannot check size of rlimit fields if cross compiling -- defaulting to long" >&2;}
+ bash_cv_sizeof_rlim_cur=$ac_cv_sizeof_long
+
+else $as_nop
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_quad_t" >&5
-$as_echo "$bash_cv_type_quad_t" >&6; }
-if test $bash_cv_type_quad_t = yes; then
- $as_echo "#define HAVE_QUAD_T 1" >>confdefs.h
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#include <stdlib.h>
+#include <sys/resource.h>
+main()
+{
+struct rlimit r;
+exit(sizeof (r.rlim_cur));
+}
- fi
-if test $bash_cv_type_quad_t = no; then
- cat >>confdefs.h <<_ACEOF
-#define quad_t long
_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+ bash_cv_sizeof_rlim_cur=$?
+else $as_nop
+ bash_cv_sizeof_rlim_cur=$?
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sizeof_rlim_cur" >&5
+printf "%s\n" "$bash_cv_sizeof_rlim_cur" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for size of quad_t" >&5
+printf %s "checking for size of quad_t... " >&6; }
+if test ${bash_cv_sizeof_quad_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check size of quad_t if cross compiling -- defaulting to 0" >&5
+printf "%s\n" "$as_me: WARNING: cannot check size of quad_t if cross compiling -- defaulting to 0" >&2;}
+ bash_cv_sizeof_quad_t=0
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5
-$as_echo_n "checking for intmax_t... " >&6; }
-if ${bash_cv_type_intmax_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <sys/types.h>
-#if STDC_HEADERS
#include <stdlib.h>
-#include <stddef.h>
-#endif
#if HAVE_INTTYPES_H
#include <inttypes.h>
#endif
@@ -17607,203 +18826,109 @@ else
#include <stdint.h>
#endif
+main()
+{
+#if HAVE_QUAD_T
+quad_t x;
+exit(sizeof (x));
+#else
+exit (0);
+#endif
+}
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "intmax_t" >/dev/null 2>&1; then :
- bash_cv_type_intmax_t=yes
-else
- bash_cv_type_intmax_t=no
+if ac_fn_c_try_run "$LINENO"
+then :
+ bash_cv_sizeof_quad_t=$?
+else $as_nop
+ bash_cv_sizeof_quad_t=$?
fi
-rm -f conftest*
-
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_intmax_t" >&5
-$as_echo "$bash_cv_type_intmax_t" >&6; }
-
-if test $bash_cv_type_intmax_t = no; then
- cat >>confdefs.h <<_ACEOF
-#define intmax_t $bash_cv_type_long_long
-_ACEOF
-
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sizeof_quad_t" >&5
+printf "%s\n" "$bash_cv_sizeof_quad_t" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uintmax_t" >&5
-$as_echo_n "checking for uintmax_t... " >&6; }
-if ${bash_cv_type_uintmax_t+:} false; then :
- $as_echo_n "(cached) " >&6
+if test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long; then
+ bash_cv_type_rlimit='unsigned long'
+elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_long_long; then
+ bash_cv_type_rlimit='unsigned long long'
+elif test $bash_cv_sizeof_rlim_cur = $ac_cv_sizeof_int; then
+ bash_cv_type_rlimit='unsigned int'
+elif test $bash_cv_sizeof_rlim_cur = $bash_cv_sizeof_quad_t; then
+ bash_cv_type_rlimit='quad_t'
else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
+ bash_cv_type_rlimit='unsigned long'
+fi
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "uintmax_t" >/dev/null 2>&1; then :
- bash_cv_type_uintmax_t=yes
-else
- bash_cv_type_uintmax_t=no
fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_uintmax_t" >&5
-$as_echo "$bash_cv_type_uintmax_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_rlimit" >&5
+printf "%s\n" "$bash_cv_type_rlimit" >&6; }
+printf "%s\n" "#define RLIMTYPE $bash_cv_type_rlimit" >>confdefs.h
-if test $bash_cv_type_uintmax_t = no; then
- cat >>confdefs.h <<_ACEOF
-#define uintmax_t $bash_cv_type_unsigned_long_long
-_ACEOF
-fi
-if test "$ac_cv_header_sys_socket_h" = "yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5
-$as_echo_n "checking for socklen_t... " >&6; }
-if ${bash_cv_type_socklen_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#if STDC_HEADERS
-#include <stdlib.h>
-#include <stddef.h>
-#endif
-#if HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-#if HAVE_STDINT_H
-#include <stdint.h>
-#endif
-#include <sys/socket.h>
+ ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default"
+if test "x$ac_cv_type_intmax_t" = xyes
+then :
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "socklen_t" >/dev/null 2>&1; then :
- bash_cv_type_socklen_t=yes
-else
- bash_cv_type_socklen_t=no
-fi
-rm -f conftest*
+printf "%s\n" "#define HAVE_INTMAX_T 1" >>confdefs.h
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_socklen_t" >&5
-$as_echo "$bash_cv_type_socklen_t" >&6; }
-if test $bash_cv_type_socklen_t = yes; then
- $as_echo "#define HAVE_SOCKLEN_T 1" >>confdefs.h
+else $as_nop
+ test $ac_cv_type_long_long_int = yes \
+ && ac_type='long long int' \
+ || ac_type='long int'
- fi
-if test $bash_cv_type_socklen_t = no; then
- cat >>confdefs.h <<_ACEOF
-#define socklen_t unsigned int
-_ACEOF
+printf "%s\n" "#define intmax_t $ac_type" >>confdefs.h
fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for size and type of struct rlimit fields" >&5
-$as_echo_n "checking for size and type of struct rlimit fields... " >&6; }
-if ${bash_cv_type_rlimit+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/resource.h>
-int
-main ()
-{
-rlim_t xxx;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- bash_cv_type_rlimit=rlim_t
-else
-if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&5
-$as_echo "$as_me: WARNING: cannot check quad_t if cross compiling -- defaulting to long" >&2;}
- bash_cv_type_rlimit=long
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <stdlib.h>
-int
-main()
-{
-#ifdef HAVE_QUAD_T
- struct rlimit rl;
- if (sizeof(rl.rlim_cur) == sizeof(quad_t))
- exit(0);
-#endif
- exit(1);
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
- bash_cv_type_rlimit=quad_t
-else
- bash_cv_type_rlimit=long
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default"
+if test "x$ac_cv_type_uintmax_t" = xyes
+then :
-fi
+printf "%s\n" "#define HAVE_UINTMAX_T 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_type_rlimit" >&5
-$as_echo "$bash_cv_type_rlimit" >&6; }
-if test $bash_cv_type_rlimit = quad_t; then
-$as_echo "#define RLIMTYPE quad_t" >>confdefs.h
+else $as_nop
+ test $ac_cv_type_unsigned_long_long_int = yes \
+ && ac_type='unsigned long long int' \
+ || ac_type='unsigned long int'
-elif test $bash_cv_type_rlimit = rlim_t; then
-$as_echo "#define RLIMTYPE rlim_t" >>confdefs.h
+printf "%s\n" "#define uintmax_t $ac_type" >>confdefs.h
fi
+
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of intmax_t" >&5
-$as_echo_n "checking size of intmax_t... " >&6; }
-if ${ac_cv_sizeof_intmax_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (intmax_t))" "ac_cv_sizeof_intmax_t" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of intmax_t" >&5
+printf %s "checking size of intmax_t... " >&6; }
+if test ${ac_cv_sizeof_intmax_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (intmax_t))" "ac_cv_sizeof_intmax_t" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_intmax_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (intmax_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -17812,14 +18937,12 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_intmax_t" >&5
-$as_echo "$ac_cv_sizeof_intmax_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_intmax_t" >&5
+printf "%s\n" "$ac_cv_sizeof_intmax_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INTMAX_T $ac_cv_sizeof_intmax_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_INTMAX_T $ac_cv_sizeof_intmax_t" >>confdefs.h
@@ -17829,8 +18952,9 @@ ac_fn_c_check_member "$LINENO" "struct termios" "c_line" "ac_cv_member_struct_te
#include <termios.h>
"
-if test "x$ac_cv_member_struct_termios_c_line" = xyes; then :
- $as_echo "#define TERMIOS_LDISC 1" >>confdefs.h
+if test "x$ac_cv_member_struct_termios_c_line" = xyes
+then :
+ printf "%s\n" "#define TERMIOS_LDISC 1" >>confdefs.h
fi
@@ -17841,21 +18965,23 @@ ac_fn_c_check_member "$LINENO" "struct termio" "c_line" "ac_cv_member_struct_ter
#include <termio.h>
"
-if test "x$ac_cv_member_struct_termio_c_line" = xyes; then :
- $as_echo "#define TERMIO_LDISC 1" >>confdefs.h
+if test "x$ac_cv_member_struct_termio_c_line" = xyes
+then :
+ printf "%s\n" "#define TERMIO_LDISC 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5
-$as_echo_n "checking for struct dirent.d_ino... " >&6; }
-if ${bash_cv_dirent_has_dino+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_ino" >&5
+printf %s "checking for struct dirent.d_ino... " >&6; }
+if test ${bash_cv_dirent_has_d_ino+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ac_fn_c_check_member "$LINENO" "struct dirent" "d_ino" "ac_cv_member_struct_dirent_d_ino" "
#include <stdio.h>
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
@@ -17876,40 +19002,37 @@ else
# endif
#endif /* HAVE_DIRENT_H */
-int
-main ()
-{
+"
+if test "x$ac_cv_member_struct_dirent_d_ino" = xyes
+then :
-struct dirent d; int z; z = d.d_ino;
+printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- bash_cv_dirent_has_dino=yes
-else
- bash_cv_dirent_has_dino=no
+bash_cv_dirent_has_d_ino=yes
+else $as_nop
+ bash_cv_dirent_has_d_ino=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_dino" >&5
-$as_echo "$bash_cv_dirent_has_dino" >&6; }
-if test $bash_cv_dirent_has_dino = yes; then
-$as_echo "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_ino" >&5
+printf "%s\n" "$bash_cv_dirent_has_d_ino" >&6; }
+if test $bash_cv_dirent_has_d_ino = yes; then
+printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_INO 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5
-$as_echo_n "checking for struct dirent.d_fileno... " >&6; }
-if ${bash_cv_dirent_has_d_fileno+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_fileno" >&5
+printf %s "checking for struct dirent.d_fileno... " >&6; }
+if test ${bash_cv_dirent_has_d_fileno+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ac_fn_c_check_member "$LINENO" "struct dirent" "d_fileno" "ac_cv_member_struct_dirent_d_fileno" "
#include <stdio.h>
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
@@ -17930,40 +19053,37 @@ else
# endif
#endif /* HAVE_DIRENT_H */
-int
-main ()
-{
+"
+if test "x$ac_cv_member_struct_dirent_d_fileno" = xyes
+then :
-struct dirent d; int z; z = d.d_fileno;
+printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- bash_cv_dirent_has_d_fileno=yes
-else
+bash_cv_dirent_has_d_fileno=yes
+else $as_nop
bash_cv_dirent_has_d_fileno=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5
-$as_echo "$bash_cv_dirent_has_d_fileno" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_fileno" >&5
+printf "%s\n" "$bash_cv_dirent_has_d_fileno" >&6; }
if test $bash_cv_dirent_has_d_fileno = yes; then
-$as_echo "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_FILENO 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_namlen" >&5
-$as_echo_n "checking for struct dirent.d_namlen... " >&6; }
-if ${bash_cv_dirent_has_d_namlen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct dirent.d_namlen" >&5
+printf %s "checking for struct dirent.d_namlen... " >&6; }
+if test ${bash_cv_dirent_has_d_namlen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ac_fn_c_check_member "$LINENO" "struct dirent" "d_namlen" "ac_cv_member_struct_dirent_d_namlen" "
#include <stdio.h>
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
@@ -17984,94 +19104,130 @@ else
# endif
#endif /* HAVE_DIRENT_H */
-int
-main ()
-{
+"
+if test "x$ac_cv_member_struct_dirent_d_namlen" = xyes
+then :
-struct dirent d; int z; z = d.d_namlen;
+printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- bash_cv_dirent_has_d_namlen=yes
-else
+bash_cv_dirent_has_d_namlen=yes
+else $as_nop
bash_cv_dirent_has_d_namlen=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_namlen" >&5
-$as_echo "$bash_cv_dirent_has_d_namlen" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dirent_has_d_namlen" >&5
+printf "%s\n" "$bash_cv_dirent_has_d_namlen" >&6; }
if test $bash_cv_dirent_has_d_namlen = yes; then
-$as_echo "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct winsize in sys/ioctl.h and termios.h" >&5
-$as_echo_n "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; }
-if ${bash_cv_struct_winsize_header+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct winsize in sys/ioctl.h and termios.h" >&5
+printf %s "checking for struct winsize in sys/ioctl.h and termios.h... " >&6; }
+if test ${bash_cv_struct_winsize_header+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+if test ${bash_cv_struct_winsize_ioctl+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <sys/types.h>
#include <sys/ioctl.h>
+
int
-main ()
+main (void)
{
+
struct winsize x;
+if (sizeof (x) > 0) return (0);
+
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- bash_cv_struct_winsize_header=ioctl_h
-else
+if ac_fn_c_try_compile "$LINENO"
+then :
+ bash_cv_struct_winsize_ioctl=yes
+else $as_nop
+ bash_cv_struct_winsize_ioctl=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+fi
+
+
+if test ${bash_cv_struct_winsize_termios+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <sys/types.h>
-#include <termios.h>
+#include <sys/termios.h>
+
int
-main ()
+main (void)
{
+
struct winsize x;
+if (sizeof (x) > 0) return (0);
+
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
+ bash_cv_struct_winsize_termios=yes
+else $as_nop
+ bash_cv_struct_winsize_termios=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+fi
+
+
+
+if test $bash_cv_struct_winsize_ioctl = yes; then
+ bash_cv_struct_winsize_header=ioctl_h
+elif test $bash_cv_struct_winsize_termios = yes; then
bash_cv_struct_winsize_header=termios_h
else
bash_cv_struct_winsize_header=other
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
if test $bash_cv_struct_winsize_header = ioctl_h; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: sys/ioctl.h" >&5
-$as_echo "sys/ioctl.h" >&6; }
- $as_echo "#define STRUCT_WINSIZE_IN_SYS_IOCTL 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: sys/ioctl.h" >&5
+printf "%s\n" "sys/ioctl.h" >&6; }
+ printf "%s\n" "#define STRUCT_WINSIZE_IN_SYS_IOCTL 1" >>confdefs.h
elif test $bash_cv_struct_winsize_header = termios_h; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: termios.h" >&5
-$as_echo "termios.h" >&6; }
- $as_echo "#define STRUCT_WINSIZE_IN_TERMIOS 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: termios.h" >&5
+printf "%s\n" "termios.h" >&6; }
+ printf "%s\n" "#define STRUCT_WINSIZE_IN_TERMIOS 1" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval in sys/time.h and time.h" >&5
-$as_echo_n "checking for struct timeval in sys/time.h and time.h... " >&6; }
-if ${bash_cv_struct_timeval+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timeval in sys/time.h and time.h" >&5
+printf %s "checking for struct timeval in sys/time.h and time.h... " >&6; }
+if test ${bash_cv_struct_timeval+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#if HAVE_SYS_TIME_H
@@ -18080,7 +19236,7 @@ else
#include <time.h>
int
-main ()
+main (void)
{
static struct timeval x; x.tv_sec = x.tv_usec;
@@ -18088,44 +19244,45 @@ static struct timeval x; x.tv_sec = x.tv_usec;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_struct_timeval=yes
-else
+else $as_nop
bash_cv_struct_timeval=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timeval" >&5
-$as_echo "$bash_cv_struct_timeval" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timeval" >&5
+printf "%s\n" "$bash_cv_struct_timeval" >&6; }
if test $bash_cv_struct_timeval = yes; then
- $as_echo "#define HAVE_TIMEVAL 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_TIMEVAL 1" >>confdefs.h
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_blocks" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_BLOCKS 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_BLOCKS 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
-$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
-if ${ac_cv_struct_tm+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
+printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; }
+if test ${ac_cv_struct_tm+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <time.h>
int
-main ()
+main (void)
{
struct tm tm;
int *p = &tm.tm_sec;
@@ -18134,18 +19291,19 @@ struct tm tm;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_struct_tm=time.h
-else
+else $as_nop
ac_cv_struct_tm=sys/time.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
-$as_echo "$ac_cv_struct_tm" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
+printf "%s\n" "$ac_cv_struct_tm" >&6; }
if test $ac_cv_struct_tm = sys/time.h; then
-$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
+printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h
fi
@@ -18153,37 +19311,35 @@ ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_
#include <$ac_cv_struct_tm>
"
-if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then :
+if test "x$ac_cv_member_struct_tm_tm_zone" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TM_TM_ZONE 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_TM_TM_ZONE 1" >>confdefs.h
fi
if test "$ac_cv_member_struct_tm_tm_zone" = yes; then
-$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_TM_ZONE 1" >>confdefs.h
else
- ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>
-"
-if test "x$ac_cv_have_decl_tzname" = xyes; then :
+ ac_fn_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_tzname" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_TZNAME $ac_have_decl
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5
-$as_echo_n "checking for tzname... " >&6; }
-if ${ac_cv_var_tzname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5
+printf %s "checking for tzname... " >&6; }
+if test ${ac_cv_var_tzname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <time.h>
@@ -18192,35 +19348,37 @@ extern char *tzname[];
#endif
int
-main ()
+main (void)
{
return tzname[0][0];
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_var_tzname=yes
-else
+else $as_nop
ac_cv_var_tzname=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5
-$as_echo "$ac_cv_var_tzname" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5
+printf "%s\n" "$ac_cv_var_tzname" >&6; }
if test $ac_cv_var_tzname = yes; then
-$as_echo "#define HAVE_TZNAME 1" >>confdefs.h
+printf "%s\n" "#define HAVE_TZNAME 1" >>confdefs.h
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timezone in sys/time.h and time.h" >&5
-$as_echo_n "checking for struct timezone in sys/time.h and time.h... " >&6; }
-if ${bash_cv_struct_timezone+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timezone in sys/time.h and time.h" >&5
+printf %s "checking for struct timezone in sys/time.h and time.h... " >&6; }
+if test ${bash_cv_struct_timezone+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18228,47 +19386,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "struct timezone" >/dev/null 2>&1; then :
+ $EGREP "struct timezone" >/dev/null 2>&1
+then :
bash_cv_struct_timezone=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <time.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "struct timezone" >/dev/null 2>&1; then :
+ $EGREP "struct timezone" >/dev/null 2>&1
+then :
bash_cv_struct_timezone=yes
-else
+else $as_nop
bash_cv_struct_timezone=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timezone" >&5
-$as_echo "$bash_cv_struct_timezone" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_struct_timezone" >&5
+printf "%s\n" "$bash_cv_struct_timezone" >&6; }
if test $bash_cv_struct_timezone = yes; then
- $as_echo "#define HAVE_STRUCT_TIMEZONE 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_STRUCT_TIMEZONE 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for offset of exit status in return status from wait" >&5
-$as_echo_n "checking for offset of exit status in return status from wait... " >&6; }
-if ${bash_cv_wexitstatus_offset+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5
-$as_echo "$as_me: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for offset of exit status in return status from wait" >&5
+printf %s "checking for offset of exit status in return status from wait... " >&6; }
+if test ${bash_cv_wexitstatus_offset+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5
+printf "%s\n" "$as_me: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&2;}
bash_cv_wexitstatus_offset=0
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18307,9 +19469,10 @@ main(c, v)
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_wexitstatus_offset=0
-else
+else $as_nop
bash_cv_wexitstatus_offset=$?
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -18319,123 +19482,127 @@ fi
fi
if test "$bash_cv_wexitstatus_offset" -gt 32 ; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: bad exit status from test program -- defaulting to 0" >&5
-$as_echo "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: bad exit status from test program -- defaulting to 0" >&5
+printf "%s\n" "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;}
bash_cv_wexitstatus_offset=0
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wexitstatus_offset" >&5
-$as_echo "$bash_cv_wexitstatus_offset" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wexitstatus_offset" >&5
+printf "%s\n" "$bash_cv_wexitstatus_offset" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset
-_ACEOF
+printf "%s\n" "#define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <time.h>" >&5
-$as_echo_n "checking for struct timespec in <time.h>... " >&6; }
-if ${bash_cv_sys_struct_timespec_in_time_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <time.h>" >&5
+printf %s "checking for struct timespec in <time.h>... " >&6; }
+if test ${bash_cv_sys_struct_timespec_in_time_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <time.h>
int
-main ()
+main (void)
{
static struct timespec x; x.tv_sec = x.tv_nsec;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_sys_struct_timespec_in_time_h=yes
-else
+else $as_nop
bash_cv_sys_struct_timespec_in_time_h=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_time_h" >&5
-$as_echo "$bash_cv_sys_struct_timespec_in_time_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_time_h" >&5
+printf "%s\n" "$bash_cv_sys_struct_timespec_in_time_h" >&6; }
HAVE_STRUCT_TIMESPEC=0
TIME_H_DEFINES_STRUCT_TIMESPEC=0
SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0
PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0
if test $bash_cv_sys_struct_timespec_in_time_h = yes; then
- $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h
- $as_echo "#define TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h
+ printf "%s\n" "#define TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h
TIME_H_DEFINES_STRUCT_TIMESPEC=1
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <sys/time.h>" >&5
-$as_echo_n "checking for struct timespec in <sys/time.h>... " >&6; }
-if ${bash_cv_sys_struct_timespec_in_sys_time_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <sys/time.h>" >&5
+printf %s "checking for struct timespec in <sys/time.h>... " >&6; }
+if test ${bash_cv_sys_struct_timespec_in_sys_time_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/time.h>
int
-main ()
+main (void)
{
static struct timespec x; x.tv_sec = x.tv_nsec;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_sys_struct_timespec_in_sys_time_h=yes
-else
+else $as_nop
bash_cv_sys_struct_timespec_in_sys_time_h=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_sys_time_h" >&5
-$as_echo "$bash_cv_sys_struct_timespec_in_sys_time_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_sys_time_h" >&5
+printf "%s\n" "$bash_cv_sys_struct_timespec_in_sys_time_h" >&6; }
if test $bash_cv_sys_struct_timespec_in_sys_time_h = yes; then
SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=1
- $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h
- $as_echo "#define SYS_TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h
+ printf "%s\n" "#define SYS_TIME_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <pthread.h>" >&5
-$as_echo_n "checking for struct timespec in <pthread.h>... " >&6; }
-if ${bash_cv_sys_struct_timespec_in_pthread_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timespec in <pthread.h>" >&5
+printf %s "checking for struct timespec in <pthread.h>... " >&6; }
+if test ${bash_cv_sys_struct_timespec_in_pthread_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pthread.h>
int
-main ()
+main (void)
{
static struct timespec x; x.tv_sec = x.tv_nsec;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_sys_struct_timespec_in_pthread_h=yes
-else
+else $as_nop
bash_cv_sys_struct_timespec_in_pthread_h=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_pthread_h" >&5
-$as_echo "$bash_cv_sys_struct_timespec_in_pthread_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_struct_timespec_in_pthread_h" >&5
+printf "%s\n" "$bash_cv_sys_struct_timespec_in_pthread_h" >&6; }
if test $bash_cv_sys_struct_timespec_in_pthread_h = yes; then
PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1
- $as_echo "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_STRUCT_TIMESPEC 1" >>confdefs.h
- $as_echo "#define PTHREAD_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h
+ printf "%s\n" "#define PTHREAD_H_DEFINES_STRUCT_TIMESPEC 1" >>confdefs.h
fi
fi
@@ -18452,17 +19619,17 @@ $as_echo "$bash_cv_sys_struct_timespec_in_pthread_h" >&6; }
ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "#include <sys/types.h>
#include <sys/stat.h>
"
-if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct stat.st_atim is of type struct timespec" >&5
-$as_echo_n "checking whether struct stat.st_atim is of type struct timespec... " >&6; }
-if ${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct stat.st_atim is of type struct timespec" >&5
+printf %s "checking whether struct stat.st_atim is of type struct timespec... " >&6; }
+if test ${ac_cv_typeof_struct_stat_st_atim_is_struct_timespec+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18476,7 +19643,7 @@ else
struct stat st;
int
-main ()
+main (void)
{
st.st_atim = ts;
@@ -18485,51 +19652,49 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes
-else
+else $as_nop
ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5
-$as_echo "$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&5
+printf "%s\n" "$ac_cv_typeof_struct_stat_st_atim_is_struct_timespec" >&6; }
if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then
-$as_echo "#define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1" >>confdefs.h
+printf "%s\n" "#define TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC 1" >>confdefs.h
fi
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct stat" "st_atimespec.tv_nsec" "ac_cv_member_struct_stat_st_atimespec_tv_nsec" "#include <sys/types.h>
#include <sys/stat.h>
"
-if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_atimespec_tv_nsec" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC 1" >>confdefs.h
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "#include <sys/types.h>
#include <sys/stat.h>
"
-if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1" >>confdefs.h
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.st__tim.tv_nsec" "ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" "#include <sys/types.h>
#include <sys/stat.h>
"
-if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes; then :
+if test "x$ac_cv_member_struct_stat_st_atim_st__tim_tv_nsec" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM_ST__TIM_TV_NSEC 1" >>confdefs.h
fi
@@ -18543,45 +19708,49 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sbrk" >&5
-$as_echo_n "checking for sbrk... " >&6; }
- if ${ac_cv_func_sbrk+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sbrk" >&5
+printf %s "checking for sbrk... " >&6; }
+ if test ${ac_cv_func_sbrk+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <unistd.h>
int
-main ()
+main (void)
{
void *x = sbrk (4096);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_func_sbrk=yes
-else
+else $as_nop
ac_cv_func_sbrk=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sbrk" >&5
-$as_echo "$ac_cv_func_sbrk" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sbrk" >&5
+printf "%s\n" "$ac_cv_func_sbrk" >&6; }
if test X$ac_cv_func_sbrk = Xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sbrk" >&5
-$as_echo_n "checking for working sbrk... " >&6; }
-if ${bash_cv_func_sbrk+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check working sbrk if cross-compiling" >&5
-$as_echo "$as_me: WARNING: cannot check working sbrk if cross-compiling" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working sbrk" >&5
+printf %s "checking for working sbrk... " >&6; }
+if test ${bash_cv_func_sbrk+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check working sbrk if cross-compiling" >&5
+printf "%s\n" "$as_me: WARNING: cannot check working sbrk if cross-compiling" >&2;}
bash_cv_func_sbrk=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18598,74 +19767,79 @@ main(int c, char **v)
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_func_sbrk=yes
-else
- bash_cv_func_snprintf=sbrk
+else $as_nop
+ bash_cv_func_sbrk=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sbrk" >&5
-$as_echo "$bash_cv_func_sbrk" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sbrk" >&5
+printf "%s\n" "$bash_cv_func_sbrk" >&6; }
if test $bash_cv_func_sbrk = no; then
ac_cv_func_sbrk=no
fi
fi
if test $ac_cv_func_sbrk = yes; then
-$as_echo "#define HAVE_SBRK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SBRK 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the existence of strsignal" >&5
-$as_echo_n "checking for the existence of strsignal... " >&6; }
-if ${bash_cv_have_strsignal+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the existence of strsignal" >&5
+printf %s "checking for the existence of strsignal... " >&6; }
+if test ${bash_cv_have_strsignal+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <signal.h>
#include <string.h>
int
-main ()
+main (void)
{
char *s = (char *)strsignal(2);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
bash_cv_have_strsignal=yes
-else
+else $as_nop
bash_cv_have_strsignal=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_strsignal" >&5
-$as_echo "$bash_cv_have_strsignal" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_have_strsignal" >&5
+printf "%s\n" "$bash_cv_have_strsignal" >&6; }
if test $bash_cv_have_strsignal = yes; then
-$as_echo "#define HAVE_STRSIGNAL 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if opendir() opens non-directories" >&5
-$as_echo_n "checking if opendir() opens non-directories... " >&6; }
-if ${bash_cv_opendir_not_robust+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if opendir() opens non-directories" >&5
+printf %s "checking if opendir() opens non-directories... " >&6; }
+if test ${bash_cv_opendir_not_robust+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check opendir if cross compiling -- defaulting to no" >&2;}
bash_cv_opendir_not_robust=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18712,10 +19886,12 @@ unlink("bash-aclocal/not_a_directory");
rmdir("bash-aclocal");
exit (dir == 0);
}
+
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_opendir_not_robust=yes
-else
+else $as_nop
bash_cv_opendir_not_robust=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -18724,24 +19900,26 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_opendir_not_robust" >&5
-$as_echo "$bash_cv_opendir_not_robust" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_opendir_not_robust" >&5
+printf "%s\n" "$bash_cv_opendir_not_robust" >&6; }
if test $bash_cv_opendir_not_robust = yes; then
-$as_echo "#define OPENDIR_NOT_ROBUST 1" >>confdefs.h
+printf "%s\n" "#define OPENDIR_NOT_ROBUST 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ulimit can substitute for getdtablesize" >&5
-$as_echo_n "checking whether ulimit can substitute for getdtablesize... " >&6; }
-if ${bash_cv_ulimit_maxfds+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ulimit can substitute for getdtablesize" >&5
+printf %s "checking whether ulimit can substitute for getdtablesize... " >&6; }
+if test ${bash_cv_ulimit_maxfds+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check ulimit if cross compiling -- defaulting to no" >&2;}
bash_cv_ulimit_maxfds=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18757,9 +19935,10 @@ exit (maxfds == -1L);
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_ulimit_maxfds=yes
-else
+else $as_nop
bash_cv_ulimit_maxfds=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -18768,10 +19947,10 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_ulimit_maxfds" >&5
-$as_echo "$bash_cv_ulimit_maxfds" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_ulimit_maxfds" >&5
+printf "%s\n" "$bash_cv_ulimit_maxfds" >&6; }
if test $bash_cv_ulimit_maxfds = yes; then
-$as_echo "#define ULIMIT_MAXFDS 1" >>confdefs.h
+printf "%s\n" "#define ULIMIT_MAXFDS 1" >>confdefs.h
fi
@@ -18780,32 +19959,30 @@ fi
-
-
- ac_fn_c_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include <stdio.h>
-"
-if test "x$ac_cv_have_decl_fpurge" = xyes; then :
+ ac_fn_check_decl "$LINENO" "fpurge" "ac_cv_have_decl_fpurge" "#include <stdio.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_fpurge" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FPURGE $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_FPURGE $ac_have_decl" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if getenv can be redefined" >&5
-$as_echo_n "checking to see if getenv can be redefined... " >&6; }
-if ${bash_cv_getenv_redef+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5
-$as_echo "$as_me: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking to see if getenv can be redefined" >&5
+printf %s "checking to see if getenv can be redefined... " >&6; }
+if test ${bash_cv_getenv_redef+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&5
+printf "%s\n" "$as_me: WARNING: cannot check getenv redefinition if cross compiling -- defaulting to yes" >&2;}
bash_cv_getenv_redef=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18843,9 +20020,10 @@ exit(s == 0); /* force optimizer to leave getenv in */
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_getenv_redef=yes
-else
+else $as_nop
bash_cv_getenv_redef=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -18854,25 +20032,27 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getenv_redef" >&5
-$as_echo "$bash_cv_getenv_redef" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getenv_redef" >&5
+printf "%s\n" "$bash_cv_getenv_redef" >&6; }
if test $bash_cv_getenv_redef = yes; then
-$as_echo "#define CAN_REDEFINE_GETENV 1" >>confdefs.h
+printf "%s\n" "#define CAN_REDEFINE_GETENV 1" >>confdefs.h
fi
if test "$ac_cv_func_getcwd" = "yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if getcwd() will dynamically allocate memory with 0 size" >&5
-$as_echo_n "checking if getcwd() will dynamically allocate memory with 0 size... " >&6; }
-if ${bash_cv_getcwd_malloc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getcwd() will dynamically allocate memory with 0 size" >&5
+printf %s "checking if getcwd() will dynamically allocate memory with 0 size... " >&6; }
+if test ${bash_cv_getcwd_malloc+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no" >&2;}
bash_cv_getcwd_malloc=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18891,9 +20071,10 @@ main()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_getcwd_malloc=yes
-else
+else $as_nop
bash_cv_getcwd_malloc=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -18902,10 +20083,10 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getcwd_malloc" >&5
-$as_echo "$bash_cv_getcwd_malloc" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getcwd_malloc" >&5
+printf "%s\n" "$bash_cv_getcwd_malloc" >&6; }
if test $bash_cv_getcwd_malloc = no; then
-$as_echo "#define GETCWD_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define GETCWD_BROKEN 1" >>confdefs.h
case " $LIBOBJS " in
*" getcwd.$ac_objext "* ) ;;
@@ -18917,17 +20098,23 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5
-$as_echo_n "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; }
-if ${bash_cv_func_sigsetjmp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&5
-$as_echo "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing" >&2;}
- bash_cv_func_sigsetjmp=missing
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for presence of POSIX-style sigsetjmp/siglongjmp" >&5
+printf %s "checking for presence of POSIX-style sigsetjmp/siglongjmp... " >&6; }
+if test ${bash_cv_func_sigsetjmp+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals" >&5
+printf "%s\n" "$as_me: WARNING: cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to $bash_cv_posix_signals" >&2;}
+ if test "$bash_cv_posix_signals" = "yes" ; then
+ bash_cv_func_sigsetjmp=present
+ else
+ bash_cv_func_sigsetjmp=missing
+ fi
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18947,21 +20134,30 @@ exit (1);
#else
int code;
-sigset_t set, oset;
+sigset_t set, oset, nset;
sigjmp_buf xx;
/* get the mask */
sigemptyset(&set);
sigemptyset(&oset);
-sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
+
sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
+/* paranoia -- make sure SIGINT is not blocked */
+sigdelset (&oset, SIGINT);
+sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
/* save it */
code = sigsetjmp(xx, 1);
if (code)
- exit(0); /* could get sigmask and compare to oset here. */
+{
+ sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &nset);
+ /* could compare nset to oset here, but we just look for SIGINT */
+ if (sigismember (&nset, SIGINT))
+ exit(1);
+ exit(0);
+}
-/* change it */
+/* change it so that SIGINT is blocked */
sigaddset(&set, SIGINT);
sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
@@ -18970,10 +20166,12 @@ siglongjmp(xx, 10);
exit(1);
#endif
}
+
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_func_sigsetjmp=present
-else
+else $as_nop
bash_cv_func_sigsetjmp=missing
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -18982,25 +20180,26 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5
-$as_echo "$bash_cv_func_sigsetjmp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_sigsetjmp" >&5
+printf "%s\n" "$bash_cv_func_sigsetjmp" >&6; }
if test $bash_cv_func_sigsetjmp = present; then
-$as_echo "#define HAVE_POSIX_SIGSETJMP 1" >>confdefs.h
+printf "%s\n" "#define HAVE_POSIX_SIGSETJMP 1" >>confdefs.h
fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not strcoll and strcmp differ" >&5
-$as_echo_n "checking whether or not strcoll and strcmp differ... " >&6; }
-if ${bash_cv_func_strcoll_broken+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether or not strcoll and strcmp differ" >&5
+printf %s "checking whether or not strcoll and strcmp differ... " >&6; }
+if test ${bash_cv_func_strcoll_broken+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check strcoll if cross compiling -- defaulting to no" >&2;}
bash_cv_func_strcoll_broken=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19043,9 +20242,10 @@ char *v[];
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_func_strcoll_broken=yes
-else
+else $as_nop
bash_cv_func_strcoll_broken=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19054,29 +20254,30 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5
-$as_echo "$bash_cv_func_strcoll_broken" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strcoll_broken" >&5
+printf "%s\n" "$bash_cv_func_strcoll_broken" >&6; }
if test $bash_cv_func_strcoll_broken = yes; then
-$as_echo "#define STRCOLL_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define STRCOLL_BROKEN 1" >>confdefs.h
fi
-
if test X$ac_cv_func_snprintf = Xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant snprintf" >&5
-$as_echo_n "checking for standard-conformant snprintf... " >&6; }
-if ${bash_cv_func_snprintf+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard snprintf if cross-compiling" >&5
-$as_echo "$as_me: WARNING: cannot check standard snprintf if cross-compiling" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard-conformant snprintf" >&5
+printf %s "checking for standard-conformant snprintf... " >&6; }
+if test ${bash_cv_func_snprintf+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard snprintf if cross-compiling" >&5
+printf "%s\n" "$as_me: WARNING: cannot check standard snprintf if cross-compiling" >&2;}
bash_cv_func_snprintf=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19092,9 +20293,10 @@ main()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_func_snprintf=yes
-else
+else $as_nop
bash_cv_func_snprintf=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19102,34 +20304,35 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_snprintf" >&5
-$as_echo "$bash_cv_func_snprintf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_snprintf" >&5
+printf "%s\n" "$bash_cv_func_snprintf" >&6; }
if test $bash_cv_func_snprintf = no; then
ac_cv_func_snprintf=no
fi
fi
if test $ac_cv_func_snprintf = no; then
-$as_echo "#define HAVE_SNPRINTF 0" >>confdefs.h
+printf "%s\n" "#define HAVE_SNPRINTF 0" >>confdefs.h
fi
-
if test X$ac_cv_func_vsnprintf = Xyes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant vsnprintf" >&5
-$as_echo_n "checking for standard-conformant vsnprintf... " >&6; }
-if ${bash_cv_func_vsnprintf+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard vsnprintf if cross-compiling" >&5
-$as_echo "$as_me: WARNING: cannot check standard vsnprintf if cross-compiling" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard-conformant vsnprintf" >&5
+printf %s "checking for standard-conformant vsnprintf... " >&6; }
+if test ${bash_cv_func_vsnprintf+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check standard vsnprintf if cross-compiling" >&5
+printf "%s\n" "$as_me: WARNING: cannot check standard vsnprintf if cross-compiling" >&2;}
bash_cv_func_vsnprintf=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19172,9 +20375,10 @@ main()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_func_vsnprintf=yes
-else
+else $as_nop
bash_cv_func_vsnprintf=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19182,34 +20386,90 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_vsnprintf" >&5
-$as_echo "$bash_cv_func_vsnprintf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_vsnprintf" >&5
+printf "%s\n" "$bash_cv_func_vsnprintf" >&6; }
if test $bash_cv_func_vsnprintf = no; then
ac_cv_func_vsnprintf=no
fi
fi
if test $ac_cv_func_vsnprintf = no; then
-$as_echo "#define HAVE_VSNPRINTF 0" >>confdefs.h
+printf "%s\n" "#define HAVE_VSNPRINTF 0" >>confdefs.h
fi
-if test "$ac_cv_func_putenv" = "yes"; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for usable strtoimax" >&5
+printf %s "checking for usable strtoimax... " >&6; }
+if test ${bash_cv_func_strtoimax+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ HAVE_STRTOIMAX=0 HAVE_DECL_STRTOIMAX=0
+ ac_fn_c_check_func "$LINENO" "strtoimax" "ac_cv_func_strtoimax"
+if test "x$ac_cv_func_strtoimax" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRTOIMAX 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant putenv declaration" >&5
-$as_echo_n "checking for standard-conformant putenv declaration... " >&6; }
-if ${bash_cv_std_putenv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+fi
+
+ ac_fn_check_decl "$LINENO" "strtoimax" "ac_cv_have_decl_strtoimax" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_strtoimax" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_STRTOIMAX $ac_have_decl" >>confdefs.h
+
+
+ if test "$ac_cv_func_strtoimax" = "yes" ; then
+ HAVE_STRTOIMAX=1
+ fi
+ if test "$ac_cv_have_decl_strtoimax" = "yes" ; then
+ HAVE_DECL_STRTOIMAX=1
+ fi
+
+ if test "$HAVE_STRTOIMAX" = 0 || test "$HAVE_DECL_STRTOIMAX" = 0 ; then
+ bash_cv_func_strtoimax=no REPLACE_STRTOIMAX=1
+ else
+ bash_cv_func_strtoimax=yes
+ fi
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5
+printf "%s\n" "$bash_cv_func_strtoimax" >&6; }
+if test $bash_cv_func_strtoimax = yes; then
+case " $LIBOBJS " in
+ *" strtoimax.$ac_objext "* ) ;;
+ *) LIBOBJS="$LIBOBJS strtoimax.$ac_objext"
+ ;;
+esac
+
+fi
+
+
+
+if test "$ac_cv_func_putenv" = "yes"; then
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard-conformant putenv declaration" >&5
+printf %s "checking for standard-conformant putenv declaration... " >&6; }
+if test ${bash_cv_std_putenv+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if STDC_HEADERS
+#if HAVE_STDLIB_H
#include <stdlib.h>
+#endif
+#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#ifndef __STDC__
@@ -19224,47 +20484,50 @@ extern int putenv ();
#endif
int
-main ()
+main (void)
{
return (putenv == 0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
bash_cv_std_putenv=yes
-else
+else $as_nop
bash_cv_std_putenv=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_putenv" >&5
-$as_echo "$bash_cv_std_putenv" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_putenv" >&5
+printf "%s\n" "$bash_cv_std_putenv" >&6; }
if test $bash_cv_std_putenv = yes; then
-$as_echo "#define HAVE_STD_PUTENV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STD_PUTENV 1" >>confdefs.h
fi
else
-$as_echo "#define HAVE_STD_PUTENV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STD_PUTENV 1" >>confdefs.h
fi
if test "$ac_cv_func_unsetenv" = "yes"; then
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for standard-conformant unsetenv declaration" >&5
-$as_echo_n "checking for standard-conformant unsetenv declaration... " >&6; }
-if ${bash_cv_std_unsetenv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for standard-conformant unsetenv declaration" >&5
+printf %s "checking for standard-conformant unsetenv declaration... " >&6; }
+if test ${bash_cv_std_unsetenv+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#if STDC_HEADERS
+#if HAVE_STDLIB_H
#include <stdlib.h>
+#endif
+#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#ifndef __STDC__
@@ -19279,45 +20542,48 @@ extern int unsetenv ();
#endif
int
-main ()
+main (void)
{
return (unsetenv == 0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
bash_cv_std_unsetenv=yes
-else
+else $as_nop
bash_cv_std_unsetenv=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_unsetenv" >&5
-$as_echo "$bash_cv_std_unsetenv" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_std_unsetenv" >&5
+printf "%s\n" "$bash_cv_std_unsetenv" >&6; }
if test $bash_cv_std_unsetenv = yes; then
-$as_echo "#define HAVE_STD_UNSETENV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STD_UNSETENV 1" >>confdefs.h
fi
else
-$as_echo "#define HAVE_STD_UNSETENV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STD_UNSETENV 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for printf floating point output in hex notation" >&5
-$as_echo_n "checking for printf floating point output in hex notation... " >&6; }
-if ${bash_cv_printf_a_format+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check printf if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for printf floating point output in hex notation" >&5
+printf %s "checking for printf floating point output in hex notation... " >&6; }
+if test ${bash_cv_printf_a_format+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check printf if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check printf if cross compiling -- defaulting to no" >&2;}
bash_cv_printf_a_format=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19336,9 +20602,10 @@ main()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_printf_a_format=yes
-else
+else $as_nop
bash_cv_printf_a_format=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19347,25 +20614,27 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_printf_a_format" >&5
-$as_echo "$bash_cv_printf_a_format" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_printf_a_format" >&5
+printf "%s\n" "$bash_cv_printf_a_format" >&6; }
if test $bash_cv_printf_a_format = yes; then
-$as_echo "#define HAVE_PRINTF_A_FORMAT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_PRINTF_A_FORMAT 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether fnmatch can be used to check bracket equivalence classes" >&5
-$as_echo_n "checking whether fnmatch can be used to check bracket equivalence classes... " >&6; }
-if ${bash_cv_fnmatch_equiv_fallback+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether fnmatch can be used to check bracket equivalence classes" >&5
+printf %s "checking whether fnmatch can be used to check bracket equivalence classes... " >&6; }
+if test ${bash_cv_fnmatch_equiv_fallback+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check fnmatch if cross compiling -- defaulting to no" >&2;}
bash_cv_fnmatch_equiv_fallback=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19389,11 +20658,11 @@ main (int c, char **v)
exit (1);
}
-
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_fnmatch_equiv_fallback=yes
-else
+else $as_nop
bash_cv_fnmatch_equiv_fallback=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19402,33 +20671,32 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fnmatch_equiv_fallback" >&5
-$as_echo "$bash_cv_fnmatch_equiv_fallback" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fnmatch_equiv_fallback" >&5
+printf "%s\n" "$bash_cv_fnmatch_equiv_fallback" >&6; }
if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then
bash_cv_fnmatch_equiv_value=1
else
bash_cv_fnmatch_equiv_value=0
fi
-cat >>confdefs.h <<_ACEOF
-#define FNMATCH_EQUIV_FALLBACK $bash_cv_fnmatch_equiv_value
-_ACEOF
-
+printf "%s\n" "#define FNMATCH_EQUIV_FALLBACK $bash_cv_fnmatch_equiv_value" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5
-$as_echo_n "checking if signal handlers must be reinstalled when invoked... " >&6; }
-if ${bash_cv_must_reinstall_sighandlers+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal handlers must be reinstalled when invoked" >&5
+printf %s "checking if signal handlers must be reinstalled when invoked... " >&6; }
+if test ${bash_cv_must_reinstall_sighandlers+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check signal handling if cross compiling -- defaulting to no" >&2;}
bash_cv_must_reinstall_sighandlers=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19438,7 +20706,7 @@ else
#endif
#include <stdlib.h>
-typedef RETSIGTYPE sigfunc();
+typedef void sigfunc();
volatile int nsigint;
@@ -19460,7 +20728,7 @@ set_signal_handler(sig, handler)
#define set_signal_handler(s, h) signal(s, h)
#endif
-RETSIGTYPE
+void
sigint(s)
int s;
{
@@ -19478,9 +20746,10 @@ main()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_must_reinstall_sighandlers=no
-else
+else $as_nop
bash_cv_must_reinstall_sighandlers=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19489,19 +20758,20 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5
-$as_echo "$bash_cv_must_reinstall_sighandlers" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_must_reinstall_sighandlers" >&5
+printf "%s\n" "$bash_cv_must_reinstall_sighandlers" >&6; }
if test $bash_cv_must_reinstall_sighandlers = yes; then
-$as_echo "#define MUST_REINSTALL_SIGHANDLERS 1" >>confdefs.h
+printf "%s\n" "#define MUST_REINSTALL_SIGHANDLERS 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of necessary job control definitions" >&5
-$as_echo_n "checking for presence of necessary job control definitions... " >&6; }
-if ${bash_cv_job_control_missing+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for presence of necessary job control definitions" >&5
+printf %s "checking for presence of necessary job control definitions... " >&6; }
+if test ${bash_cv_job_control_missing+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19547,40 +20817,43 @@ else
int
-main ()
+main (void)
{
-
+ int x;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_job_control_missing=present
-else
+else $as_nop
bash_cv_job_control_missing=missing
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_job_control_missing" >&5
-$as_echo "$bash_cv_job_control_missing" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_job_control_missing" >&5
+printf "%s\n" "$bash_cv_job_control_missing" >&6; }
if test $bash_cv_job_control_missing = missing; then
-$as_echo "#define JOB_CONTROL_MISSING 1" >>confdefs.h
+printf "%s\n" "#define JOB_CONTROL_MISSING 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for presence of named pipes" >&5
-$as_echo_n "checking for presence of named pipes... " >&6; }
-if ${bash_cv_sys_named_pipes+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5
-$as_echo "$as_me: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for presence of named pipes" >&5
+printf %s "checking for presence of named pipes... " >&6; }
+if test ${bash_cv_sys_named_pipes+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&5
+printf "%s\n" "$as_me: WARNING: cannot check for named pipes if cross-compiling -- defaulting to missing" >&2;}
bash_cv_sys_named_pipes=missing
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19624,10 +20897,12 @@ unlink ("bash-aclocal/sh-np-autoconf");
rmdir ("bash-aclocal");
exit(0);
}
+
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_sys_named_pipes=present
-else
+else $as_nop
bash_cv_sys_named_pipes=missing
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19636,19 +20911,20 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_named_pipes" >&5
-$as_echo "$bash_cv_sys_named_pipes" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_sys_named_pipes" >&5
+printf "%s\n" "$bash_cv_sys_named_pipes" >&6; }
if test $bash_cv_sys_named_pipes = missing; then
-$as_echo "#define NAMED_PIPES_MISSING 1" >>confdefs.h
+printf "%s\n" "#define NAMED_PIPES_MISSING 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5
-$as_echo_n "checking whether termios.h defines TIOCGWINSZ... " >&6; }
-if ${ac_cv_sys_tiocgwinsz_in_termios_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether termios.h defines TIOCGWINSZ" >&5
+printf %s "checking whether termios.h defines TIOCGWINSZ... " >&6; }
+if test ${ac_cv_sys_tiocgwinsz_in_termios_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -19659,23 +20935,25 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
ac_cv_sys_tiocgwinsz_in_termios_h=yes
-else
+else $as_nop
ac_cv_sys_tiocgwinsz_in_termios_h=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5
-$as_echo "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_termios_h" >&5
+printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_termios_h" >&6; }
if test $ac_cv_sys_tiocgwinsz_in_termios_h != yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5
-$as_echo_n "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; }
-if ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sys/ioctl.h defines TIOCGWINSZ" >&5
+printf %s "checking whether sys/ioctl.h defines TIOCGWINSZ... " >&6; }
+if test ${ac_cv_sys_tiocgwinsz_in_sys_ioctl_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -19686,101 +20964,112 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "yes" >/dev/null 2>&1; then :
+ $EGREP "yes" >/dev/null 2>&1
+then :
ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes
-else
+else $as_nop
ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5
-$as_echo "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&5
+printf "%s\n" "$ac_cv_sys_tiocgwinsz_in_sys_ioctl_h" >&6; }
if test $ac_cv_sys_tiocgwinsz_in_sys_ioctl_h = yes; then
-$as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h
+printf "%s\n" "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5
-$as_echo_n "checking for TIOCSTAT in sys/ioctl.h... " >&6; }
-if ${bash_cv_tiocstat_in_ioctl+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for TIOCSTAT in sys/ioctl.h" >&5
+printf %s "checking for TIOCSTAT in sys/ioctl.h... " >&6; }
+if test ${bash_cv_tiocstat_in_ioctl+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <sys/types.h>
#include <sys/ioctl.h>
int
-main ()
+main (void)
{
int x = TIOCSTAT;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_tiocstat_in_ioctl=yes
-else
+else $as_nop
bash_cv_tiocstat_in_ioctl=no
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5
-$as_echo "$bash_cv_tiocstat_in_ioctl" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_tiocstat_in_ioctl" >&5
+printf "%s\n" "$bash_cv_tiocstat_in_ioctl" >&6; }
if test $bash_cv_tiocstat_in_ioctl = yes; then
-$as_echo "#define TIOCSTAT_IN_SYS_IOCTL 1" >>confdefs.h
+printf "%s\n" "#define TIOCSTAT_IN_SYS_IOCTL 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FIONREAD in sys/ioctl.h" >&5
-$as_echo_n "checking for FIONREAD in sys/ioctl.h... " >&6; }
-if ${bash_cv_fionread_in_ioctl+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FIONREAD in sys/ioctl.h" >&5
+printf %s "checking for FIONREAD in sys/ioctl.h... " >&6; }
+if test ${bash_cv_fionread_in_ioctl+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <sys/types.h>
#include <sys/ioctl.h>
int
-main ()
+main (void)
{
int x = FIONREAD;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_fionread_in_ioctl=yes
-else
+else $as_nop
bash_cv_fionread_in_ioctl=no
+
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5
-$as_echo "$bash_cv_fionread_in_ioctl" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_fionread_in_ioctl" >&5
+printf "%s\n" "$bash_cv_fionread_in_ioctl" >&6; }
if test $bash_cv_fionread_in_ioctl = yes; then
-$as_echo "#define FIONREAD_IN_SYS_IOCTL 1" >>confdefs.h
+printf "%s\n" "#define FIONREAD_IN_SYS_IOCTL 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5
-$as_echo_n "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... " >&6; }
-if ${bash_cv_wcontinued_broken+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5
-$as_echo "$as_me: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether WCONTINUED flag to waitpid is unavailable or available but broken" >&5
+printf %s "checking whether WCONTINUED flag to waitpid is unavailable or available but broken... " >&6; }
+if test ${bash_cv_wcontinued_broken+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&5
+printf "%s\n" "$as_me: WARNING: cannot check WCONTINUED if cross compiling -- defaulting to no" >&2;}
bash_cv_wcontinued_broken=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19806,9 +21095,10 @@ main()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_wcontinued_broken=no
-else
+else $as_nop
bash_cv_wcontinued_broken=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19817,50 +21107,53 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcontinued_broken" >&5
-$as_echo "$bash_cv_wcontinued_broken" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_wcontinued_broken" >&5
+printf "%s\n" "$bash_cv_wcontinued_broken" >&6; }
if test $bash_cv_wcontinued_broken = yes; then
-$as_echo "#define WCONTINUED_BROKEN 1" >>confdefs.h
+printf "%s\n" "#define WCONTINUED_BROKEN 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for speed_t in sys/types.h" >&5
-$as_echo_n "checking for speed_t in sys/types.h... " >&6; }
-if ${bash_cv_speed_t_in_sys_types+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for speed_t in sys/types.h" >&5
+printf %s "checking for speed_t in sys/types.h... " >&6; }
+if test ${bash_cv_speed_t_in_sys_types+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
int
-main ()
+main (void)
{
speed_t x;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_speed_t_in_sys_types=yes
-else
+else $as_nop
bash_cv_speed_t_in_sys_types=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5
-$as_echo "$bash_cv_speed_t_in_sys_types" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_speed_t_in_sys_types" >&5
+printf "%s\n" "$bash_cv_speed_t_in_sys_types" >&6; }
if test $bash_cv_speed_t_in_sys_types = yes; then
-$as_echo "#define SPEED_T_IN_SYS_TYPES 1" >>confdefs.h
+printf "%s\n" "#define SPEED_T_IN_SYS_TYPES 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5
-$as_echo_n "checking whether getpw functions are declared in pwd.h... " >&6; }
-if ${bash_cv_getpw_declared+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether getpw functions are declared in pwd.h" >&5
+printf %s "checking whether getpw functions are declared in pwd.h... " >&6; }
+if test ${bash_cv_getpw_declared+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19872,33 +21165,36 @@ else
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "getpwuid" >/dev/null 2>&1; then :
+ $EGREP "getpwuid" >/dev/null 2>&1
+then :
bash_cv_getpw_declared=yes
-else
+else $as_nop
bash_cv_getpw_declared=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5
-$as_echo "$bash_cv_getpw_declared" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_getpw_declared" >&5
+printf "%s\n" "$bash_cv_getpw_declared" >&6; }
if test $bash_cv_getpw_declared = yes; then
-$as_echo "#define HAVE_GETPW_DECLS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETPW_DECLS 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unusable real-time signals due to large values" >&5
-$as_echo_n "checking for unusable real-time signals due to large values... " >&6; }
-if ${bash_cv_unusable_rtsigs+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5
-$as_echo "$as_me: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unusable real-time signals due to large values" >&5
+printf %s "checking for unusable real-time signals due to large values... " >&6; }
+if test ${bash_cv_unusable_rtsigs+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&5
+printf "%s\n" "$as_me: WARNING: cannot check real-time signals if cross compiling -- defaulting to yes" >&2;}
bash_cv_unusable_rtsigs=yes
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19922,10 +21218,12 @@ main ()
exit(rtmin < n_sigs);
}
+
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
bash_cv_unusable_rtsigs=yes
-else
+else $as_nop
bash_cv_unusable_rtsigs=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19934,10 +21232,10 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_unusable_rtsigs" >&5
-$as_echo "$bash_cv_unusable_rtsigs" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_unusable_rtsigs" >&5
+printf "%s\n" "$bash_cv_unusable_rtsigs" >&6; }
if test $bash_cv_unusable_rtsigs = yes; then
-$as_echo "#define UNUSABLE_RT_SIGNALS 1" >>confdefs.h
+printf "%s\n" "#define UNUSABLE_RT_SIGNALS 1" >>confdefs.h
fi
@@ -19954,11 +21252,16 @@ fi
case "$host_os" in
-hpux*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5
-$as_echo_n "checking whether $host_os needs _KERNEL for RLIMIT defines... " >&6; }
-if ${bash_cv_kernel_rlimit+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+hpux*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $host_os needs _KERNEL for RLIMIT defines" >&5
+printf %s "checking whether $host_os needs _KERNEL for RLIMIT defines... " >&6; }
+if test ${bash_cv_kernel_rlimit+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test ${bash_cv_rlimit+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -19966,7 +21269,7 @@ else
#include <sys/resource.h>
int
-main ()
+main (void)
{
int f;
@@ -19976,10 +21279,19 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- bash_cv_kernel_rlimit=no
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"
+then :
+ bash_cv_rlimit=yes
+else $as_nop
+ bash_cv_rlimit=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+if test $bash_cv_rlimit = no; then
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -19988,31 +21300,31 @@ else
#undef _KERNEL
int
-main ()
+main (void)
{
- int f;
- f = RLIMIT_DATA;
+ int f;
+ f = RLIMIT_DATA;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
bash_cv_kernel_rlimit=yes
-else
+else $as_nop
bash_cv_kernel_rlimit=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_kernel_rlimit" >&5
-$as_echo "$bash_cv_kernel_rlimit" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_kernel_rlimit" >&5
+printf "%s\n" "$bash_cv_kernel_rlimit" >&6; }
if test $bash_cv_kernel_rlimit = yes; then
-$as_echo "#define RLIMIT_NEEDS_KERNEL 1" >>confdefs.h
+printf "%s\n" "#define RLIMIT_NEEDS_KERNEL 1" >>confdefs.h
fi
;;
@@ -20026,22 +21338,25 @@ esac
if test "X$bash_cv_termcap_lib" = "X"; then
_bash_needmsg=yes
else
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
-$as_echo_n "checking which library has the termcap functions... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
+printf %s "checking which library has the termcap functions... " >&6; }
_bash_needmsg=
fi
-if ${bash_cv_termcap_lib+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${bash_cv_termcap_lib+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent"
-if test "x$ac_cv_func_tgetent" = xyes; then :
+if test "x$ac_cv_func_tgetent" = xyes
+then :
bash_cv_termcap_lib=libc
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5
-$as_echo_n "checking for tgetent in -ltermcap... " >&6; }
-if ${ac_cv_lib_termcap_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltermcap" >&5
+printf %s "checking for tgetent in -ltermcap... " >&6; }
+if test ${ac_cv_lib_termcap_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ltermcap $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -20050,37 +21365,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_termcap_tgetent=yes
-else
+else $as_nop
ac_cv_lib_termcap_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5
-$as_echo "$ac_cv_lib_termcap_tgetent" >&6; }
-if test "x$ac_cv_lib_termcap_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_termcap_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_termcap_tgetent" >&6; }
+if test "x$ac_cv_lib_termcap_tgetent" = xyes
+then :
bash_cv_termcap_lib=libtermcap
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5
-$as_echo_n "checking for tgetent in -ltinfo... " >&6; }
-if ${ac_cv_lib_tinfo_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5
+printf %s "checking for tgetent in -ltinfo... " >&6; }
+if test ${ac_cv_lib_tinfo_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ltinfo $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -20089,37 +21404,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_tinfo_tgetent=yes
-else
+else $as_nop
ac_cv_lib_tinfo_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5
-$as_echo "$ac_cv_lib_tinfo_tgetent" >&6; }
-if test "x$ac_cv_lib_tinfo_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfo_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_tinfo_tgetent" >&6; }
+if test "x$ac_cv_lib_tinfo_tgetent" = xyes
+then :
bash_cv_termcap_lib=libtinfo
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5
-$as_echo_n "checking for tgetent in -lcurses... " >&6; }
-if ${ac_cv_lib_curses_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lcurses" >&5
+printf %s "checking for tgetent in -lcurses... " >&6; }
+if test ${ac_cv_lib_curses_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcurses $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -20128,37 +21443,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_curses_tgetent=yes
-else
+else $as_nop
ac_cv_lib_curses_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5
-$as_echo "$ac_cv_lib_curses_tgetent" >&6; }
-if test "x$ac_cv_lib_curses_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_curses_tgetent" >&6; }
+if test "x$ac_cv_lib_curses_tgetent" = xyes
+then :
bash_cv_termcap_lib=libcurses
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5
-$as_echo_n "checking for tgetent in -lncurses... " >&6; }
-if ${ac_cv_lib_ncurses_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncurses" >&5
+printf %s "checking for tgetent in -lncurses... " >&6; }
+if test ${ac_cv_lib_ncurses_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lncurses $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -20167,37 +21482,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_ncurses_tgetent=yes
-else
+else $as_nop
ac_cv_lib_ncurses_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5
-$as_echo "$ac_cv_lib_ncurses_tgetent" >&6; }
-if test "x$ac_cv_lib_ncurses_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_ncurses_tgetent" >&6; }
+if test "x$ac_cv_lib_ncurses_tgetent" = xyes
+then :
bash_cv_termcap_lib=libncurses
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5
-$as_echo_n "checking for tgetent in -lncursesw... " >&6; }
-if ${ac_cv_lib_ncursesw_tgetent+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -lncursesw" >&5
+printf %s "checking for tgetent in -lncursesw... " >&6; }
+if test ${ac_cv_lib_ncursesw_tgetent+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lncursesw $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -20206,32 +21521,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char tgetent ();
int
-main ()
+main (void)
{
return tgetent ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_ncursesw_tgetent=yes
-else
+else $as_nop
ac_cv_lib_ncursesw_tgetent=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5
-$as_echo "$ac_cv_lib_ncursesw_tgetent" >&6; }
-if test "x$ac_cv_lib_ncursesw_tgetent" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncursesw_tgetent" >&5
+printf "%s\n" "$ac_cv_lib_ncursesw_tgetent" >&6; }
+if test "x$ac_cv_lib_ncursesw_tgetent" = xyes
+then :
bash_cv_termcap_lib=libncursesw
-else
+else $as_nop
bash_cv_termcap_lib=gnutermcap
fi
@@ -20248,11 +21562,11 @@ fi
fi
if test "X$_bash_needmsg" = "Xyes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
-$as_echo_n "checking which library has the termcap functions... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which library has the termcap functions" >&5
+printf %s "checking which library has the termcap functions... " >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5
-$as_echo "using $bash_cv_termcap_lib" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5
+printf "%s\n" "using $bash_cv_termcap_lib" >&6; }
if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
LDFLAGS="$LDFLAGS -L./lib/termcap"
TERMCAP_LIB="./lib/termcap/libtermcap.a"
@@ -20270,7 +21584,8 @@ elif test $bash_cv_termcap_lib = libc; then
TERMCAP_LIB=
TERMCAP_DEP=
else
-TERMCAP_LIB=-lcurses
+# we assume ncurses is installed somewhere the linker can find it
+TERMCAP_LIB=-lncurses
TERMCAP_DEP=
fi
@@ -20278,11 +21593,12 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /dev/fd is available" >&5
-$as_echo_n "checking whether /dev/fd is available... " >&6; }
-if ${bash_cv_dev_fd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether /dev/fd is available" >&5
+printf %s "checking whether /dev/fd is available... " >&6; }
+if test ${bash_cv_dev_fd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
bash_cv_dev_fd=""
if test -d /dev/fd && (exec test -r /dev/fd/0 < /dev/null) ; then
# check for systems like FreeBSD 5 that only provide /dev/fd/[012]
@@ -20302,25 +21618,26 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_fd" >&5
-$as_echo "$bash_cv_dev_fd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_fd" >&5
+printf "%s\n" "$bash_cv_dev_fd" >&6; }
if test $bash_cv_dev_fd = "standard"; then
- $as_echo "#define HAVE_DEV_FD 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_DEV_FD 1" >>confdefs.h
- $as_echo "#define DEV_FD_PREFIX \"/dev/fd/\"" >>confdefs.h
+ printf "%s\n" "#define DEV_FD_PREFIX \"/dev/fd/\"" >>confdefs.h
elif test $bash_cv_dev_fd = "whacky"; then
- $as_echo "#define HAVE_DEV_FD 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_DEV_FD 1" >>confdefs.h
- $as_echo "#define DEV_FD_PREFIX \"/proc/self/fd/\"" >>confdefs.h
+ printf "%s\n" "#define DEV_FD_PREFIX \"/proc/self/fd/\"" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /dev/stdin stdout stderr are available" >&5
-$as_echo_n "checking whether /dev/stdin stdout stderr are available... " >&6; }
-if ${bash_cv_dev_stdin+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether /dev/stdin stdout stderr are available" >&5
+printf %s "checking whether /dev/stdin stdout stderr are available... " >&6; }
+if test ${bash_cv_dev_stdin+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if (exec test -r /dev/stdin < /dev/null) ; then
bash_cv_dev_stdin=present
else
@@ -20329,18 +21646,19 @@ else
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_stdin" >&5
-$as_echo "$bash_cv_dev_stdin" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_dev_stdin" >&5
+printf "%s\n" "$bash_cv_dev_stdin" >&6; }
if test $bash_cv_dev_stdin = "present"; then
- $as_echo "#define HAVE_DEV_STDIN 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_DEV_STDIN 1" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default mail directory" >&5
-$as_echo_n "checking for default mail directory... " >&6; }
-if ${bash_cv_mail_dir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for default mail directory" >&5
+printf %s "checking for default mail directory... " >&6; }
+if test ${bash_cv_mail_dir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -d /var/mail; then
bash_cv_mail_dir=/var/mail
elif test -d /var/spool/mail; then
@@ -20355,11 +21673,9 @@ else
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bash_cv_mail_dir" >&5
-$as_echo "$bash_cv_mail_dir" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define DEFAULT_MAIL_DIRECTORY "$bash_cv_mail_dir"
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_mail_dir" >&5
+printf "%s\n" "$bash_cv_mail_dir" >&6; }
+printf "%s\n" "#define DEFAULT_MAIL_DIRECTORY \"$bash_cv_mail_dir\"" >>confdefs.h
@@ -20368,7 +21684,7 @@ if test "$bash_cv_job_control_missing" = missing; then
fi
if test "$opt_job_control" = yes; then
-$as_echo "#define JOB_CONTROL 1" >>confdefs.h
+printf "%s\n" "#define JOB_CONTROL 1" >>confdefs.h
JOBS_O=jobs.o
else
@@ -20382,13 +21698,13 @@ LOCAL_DEFS=-DSHELL
case "${host_os}" in
-sysv4.2*) $as_echo "#define SVR4_2 1" >>confdefs.h
+sysv4.2*) printf "%s\n" "#define SVR4_2 1" >>confdefs.h
- $as_echo "#define SVR4 1" >>confdefs.h
+ printf "%s\n" "#define SVR4 1" >>confdefs.h
;;
-sysv4*) $as_echo "#define SVR4 1" >>confdefs.h
+sysv4*) printf "%s\n" "#define SVR4 1" >>confdefs.h
;;
-sysv5*) $as_echo "#define SVR5 1" >>confdefs.h
+sysv5*) printf "%s\n" "#define SVR5 1" >>confdefs.h
;;
hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;;
hpux*) LOCAL_CFLAGS="-DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;;
@@ -20409,11 +21725,11 @@ lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
case "`uname -r`" in
1.*|2.[0123]*) : ;;
- *) $as_echo "#define PGRP_PIPE 1" >>confdefs.h
+ *) printf "%s\n" "#define PGRP_PIPE 1" >>confdefs.h
;;
esac ;;
netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
-freebsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;;
+freebsd*|midnightbsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;;
*qnx[67]*) LOCAL_LIBS="-lncurses" ;;
*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
powerux*) LOCAL_LIBS="-lgen" ;;
@@ -20437,6 +21753,7 @@ freebsd[3-9]*)
fi ;;
freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
+midnightbsd*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
esac
case "$host_cpu" in
@@ -20453,7 +21770,7 @@ mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
esac
# turn off paren warnings in gcc
-CFLAGS="$CFLAGS ${STYLE_CFLAGS}"
+#CFLAGS="$CFLAGS ${STYLE_CFLAGS}"
#
# Shared object configuration section. These values are generated by
@@ -20461,8 +21778,8 @@ CFLAGS="$CFLAGS ${STYLE_CFLAGS}"
#
if test "$ac_cv_func_dlopen" = "yes" && test -f ${srcdir}/support/shobj-conf
then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking shared object configuration for loadable builtins" >&5
-$as_echo_n "checking shared object configuration for loadable builtins... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking shared object configuration for loadable builtins" >&5
+printf %s "checking shared object configuration for loadable builtins... " >&6; }
eval `${CONFIG_SHELL-/bin/sh} ${srcdir}/support/shobj-conf -C "${CC}" -c "${host_cpu}" -o "${host_os}" -v "${host_vendor}"`
@@ -20471,8 +21788,8 @@ $as_echo_n "checking shared object configuration for loadable builtins... " >&6;
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHOBJ_STATUS" >&5
-$as_echo "$SHOBJ_STATUS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHOBJ_STATUS" >&5
+printf "%s\n" "$SHOBJ_STATUS" >&6; }
else
SHOBJ_STATUS=unsupported
@@ -20546,9 +21863,11 @@ fi
#AC_SUBST(ALLOCA_SOURCE)
#AC_SUBST(ALLOCA_OBJECT)
-ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/perl/Makefile support/bash.pc support/bashbug.sh"
+ac_config_files="$ac_config_files Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile lib/intl/Makefile lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in examples/loadables/Makefile examples/loadables/Makefile.inc examples/loadables/Makefile.sample examples/loadables/perl/Makefile support/bash.pc support/bashbug.sh"
+
+
+ac_config_commands="$ac_config_commands stamp-h"
-ac_config_commands="$ac_config_commands default"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@@ -20577,8 +21896,8 @@ _ACEOF
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -20608,15 +21927,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
/^ac_cv_env_/b end
t clear
:clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
t end
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
if test ! -f "$cache_file" || test -h "$cache_file"; then
cat confcache >"$cache_file"
else
@@ -20630,8 +21949,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;}
fi
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
@@ -20648,7 +21967,7 @@ U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -20665,8 +21984,8 @@ LTLIBOBJS=$ac_ltlibobjs
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
@@ -20689,14 +22008,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
@@ -20706,46 +22027,46 @@ esac
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -20754,13 +22075,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
@@ -20769,8 +22083,12 @@ case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
@@ -20782,30 +22100,10 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# as_fn_error STATUS ERROR [LINENO LOG_FD]
@@ -20818,13 +22116,14 @@ as_fn_error ()
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -20851,18 +22150,20 @@ as_fn_unset ()
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
+
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
@@ -20874,12 +22175,13 @@ fi # as_fn_append
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
@@ -20910,7 +22212,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -20932,6 +22234,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
@@ -20945,6 +22251,12 @@ case `echo -n x` in #(((((
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -20986,7 +22298,7 @@ as_fn_mkdir_p ()
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -20995,7 +22307,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -21057,8 +22369,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by bash $as_me 5.1-release, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+This file was extended by bash $as_me 5.2-release, which was
+generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -21120,14 +22432,16 @@ $config_commands
Report bugs to <bug-bash@gnu.org>."
_ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-bash config.status 5.1-release
-configured by $0, generated by GNU Autoconf 2.69,
+bash config.status 5.2-release
+configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -21166,15 +22480,15 @@ do
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
+ printf "%s\n" "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
+ printf "%s\n" "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
@@ -21182,7 +22496,7 @@ do
--header | --heade | --head | --hea )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
as_fn_append CONFIG_HEADERS " '$ac_optarg'"
ac_need_defaults=false;;
@@ -21191,7 +22505,7 @@ do
as_fn_error $? "ambiguous option: \`$1'
Try \`$0 --help' for more information.";;
--help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
+ printf "%s\n" "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
@@ -21219,7 +22533,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
exec "\$@"
@@ -21233,7 +22547,7 @@ exec 5>>config.log
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- $as_echo "$ac_log"
+ printf "%s\n" "$ac_log"
} >&5
_ACEOF
@@ -21272,10 +22586,11 @@ do
"po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
"examples/loadables/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile" ;;
"examples/loadables/Makefile.inc") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile.inc" ;;
+ "examples/loadables/Makefile.sample") CONFIG_FILES="$CONFIG_FILES examples/loadables/Makefile.sample" ;;
"examples/loadables/perl/Makefile") CONFIG_FILES="$CONFIG_FILES examples/loadables/perl/Makefile" ;;
"support/bash.pc") CONFIG_FILES="$CONFIG_FILES support/bash.pc" ;;
"support/bashbug.sh") CONFIG_FILES="$CONFIG_FILES support/bashbug.sh" ;;
- "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+ "stamp-h") CONFIG_COMMANDS="$CONFIG_COMMANDS stamp-h" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
@@ -21287,9 +22602,9 @@ done
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+ test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+ test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers
+ test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands
fi
# Have a temporary directory for convenience. Make it in the build tree
@@ -21625,7 +22940,7 @@ do
esac ||
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
@@ -21633,17 +22948,17 @@ do
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
+ ac_sed_conf_input=`printf "%s\n" "$configure_input" |
sed 's/[\\\\&|]/\\\\&/g'`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
@@ -21660,7 +22975,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -21684,9 +22999,9 @@ $as_echo X"$ac_file" |
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -21748,8 +23063,8 @@ ac_sed_dataroot='
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
@@ -21793,9 +23108,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
@@ -21811,27 +23126,27 @@ which seems to be undefined. Please make sure it is defined" >&2;}
#
if test x"$ac_file" != x-; then
{
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
} >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
;;
- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
+ :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+printf "%s\n" "$as_me: executing $ac_file commands" >&6;}
;;
esac
@@ -21948,10 +23263,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
;;
esac
done ;;
- "default":C)
-# Makefile uses this timestamp file to record whether config.h is up to date.
-echo timestamp > stamp-h
- ;;
+ "stamp-h":C) echo timestamp > stamp-h ;;
esac
done # for ac_tag
@@ -21986,7 +23298,8 @@ if test "$no_create" != yes; then
$ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
+
diff --git a/configure.ac b/configure.ac
index 2fe3e7d9..50a6e201 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,11 +1,11 @@
dnl
-dnl Configure script for bash-5.1
+dnl Configure script for bash-5.2
dnl
dnl report bugs to chet@po.cwru.edu
dnl
dnl Process this file with autoconf to produce a configure script.
-# Copyright (C) 1987-2020 Free Software Foundation, Inc.
+# Copyright (C) 1987-2022 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
@@ -21,15 +21,15 @@ dnl Process this file with autoconf to produce a configure script.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-AC_REVISION([for Bash 5.1, version 5.022])dnl
+AC_REVISION([for Bash 5.2, version 5.046])dnl
-define(bashvers, 5.1)
+define(bashvers, 5.2)
define(relstatus, release)
AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
dnl make sure we are using a recent autoconf version
-AC_PREREQ(2.61)
+AC_PREREQ(2.69)
AC_CONFIG_SRCDIR(shell.h)
dnl where to find install.sh, config.sub, and config.guess
@@ -108,11 +108,11 @@ AC_ARG_VAR(DEBUGGER_START_FILE, [location of bash debugger initialization file])
dnl arguments to configure
dnl packages
-AC_ARG_WITH(afs, AC_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval)
-AC_ARG_WITH(bash-malloc, AC_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval)
-AC_ARG_WITH(curses, AC_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
-AC_ARG_WITH(gnu-malloc, AC_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval)
-AC_ARG_WITH(installed-readline, AC_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval)
+AC_ARG_WITH(afs, AS_HELP_STRING([--with-afs], [if you are running AFS]), opt_afs=$withval)
+AC_ARG_WITH(bash-malloc, AS_HELP_STRING([--with-bash-malloc], [use the Bash version of malloc]), opt_bash_malloc=$withval)
+AC_ARG_WITH(curses, AS_HELP_STRING([--with-curses], [use the curses library instead of the termcap library]), opt_curses=$withval)
+AC_ARG_WITH(gnu-malloc, AS_HELP_STRING([--with-gnu-malloc], [synonym for --with-bash-malloc]), opt_bash_malloc=$withval)
+AC_ARG_WITH(installed-readline, AS_HELP_STRING([--with-installed-readline], [use a version of the readline library that is already installed]), opt_with_installed_readline=$withval)
if test "$opt_bash_malloc" = yes; then
MALLOC_TARGET=malloc
@@ -182,13 +182,18 @@ opt_dircomplete_expand_default=no
opt_globascii_default=yes
opt_function_import=yes
opt_dev_fd_stat_broken=no
+opt_alt_array_impl=no
+opt_translatable_strings=yes
+
+dnl modified by alternate array implementation option
+ARRAY_O=array.o
dnl options that affect how bash is compiled and linked
opt_static_link=no
opt_profiling=no
dnl argument parsing for optional features
-AC_ARG_ENABLE(minimal-config, AC_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval)
+AC_ARG_ENABLE(minimal-config, AS_HELP_STRING([--enable-minimal-config], [a minimal sh-like configuration]), opt_minimal_config=$enableval)
dnl a minimal configuration turns everything off, but features can be
dnl added individually
@@ -202,51 +207,54 @@ if test $opt_minimal_config = yes; then
opt_net_redirs=no opt_progcomp=no opt_separate_help=no
opt_multibyte=yes opt_cond_regexp=no opt_coproc=no
opt_casemod_attrs=no opt_casemod_expansions=no opt_extglob_default=no
+ opt_translatable_strings=no
opt_globascii_default=yes
fi
-AC_ARG_ENABLE(alias, AC_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
-AC_ARG_ENABLE(arith-for-command, AC_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval)
-AC_ARG_ENABLE(array-variables, AC_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval)
-AC_ARG_ENABLE(bang-history, AC_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval)
-AC_ARG_ENABLE(brace-expansion, AC_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval)
-AC_ARG_ENABLE(casemod-attributes, AC_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval)
-AC_ARG_ENABLE(casemod-expansions, AC_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval)
-AC_ARG_ENABLE(command-timing, AC_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval)
-AC_ARG_ENABLE(cond-command, AC_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval)
-AC_ARG_ENABLE(cond-regexp, AC_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
-AC_ARG_ENABLE(coprocesses, AC_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
-AC_ARG_ENABLE(debugger, AC_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
-AC_ARG_ENABLE(dev-fd-stat-broken, AC_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval)
-AC_ARG_ENABLE(direxpand-default, AC_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
-AC_ARG_ENABLE(directory-stack, AC_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
-AC_ARG_ENABLE(disabled-builtins, AC_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
-AC_ARG_ENABLE(dparen-arithmetic, AC_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval)
-AC_ARG_ENABLE(extended-glob, AC_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval)
-AC_ARG_ENABLE(extended-glob-default, AC_HELP_STRING([--enable-extended-glob-default], [force extended pattern matching to be enabled by default]), opt_extglob_default=$enableval)
-AC_ARG_ENABLE(function-import, AC_HELP_STRING([--enable-function-import], [allow bash to import exported function definitions by default]), opt_function_import=$enableval)
-AC_ARG_ENABLE(glob-asciiranges-default, AC_HELP_STRING([--enable-glob-asciiranges-default], [force bracket range expressions in pattern matching to use the C locale by default]), opt_globascii_default=$enableval)
-AC_ARG_ENABLE(help-builtin, AC_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval)
-AC_ARG_ENABLE(history, AC_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval)
-AC_ARG_ENABLE(job-control, AC_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval)
-AC_ARG_ENABLE(multibyte, AC_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
-AC_ARG_ENABLE(net-redirections, AC_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval)
-AC_ARG_ENABLE(process-substitution, AC_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval)
-AC_ARG_ENABLE(progcomp, AC_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval)
-AC_ARG_ENABLE(prompt-string-decoding, AC_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
-AC_ARG_ENABLE(readline, AC_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
-AC_ARG_ENABLE(restricted, AC_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
-AC_ARG_ENABLE(select, AC_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
-AC_ARG_ENABLE(separate-helpfiles, AC_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
-AC_ARG_ENABLE(single-help-strings, AC_HELP_STRING([--enable-single-help-strings], [store help documentation as a single string to ease translation]), opt_single_longdoc_strings=$enableval)
-AC_ARG_ENABLE(strict-posix-default, AC_HELP_STRING([--enable-strict-posix-default], [configure bash to be posix-conformant by default]), opt_strict_posix=$enableval)
-AC_ARG_ENABLE(usg-echo-default, AC_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval)
-AC_ARG_ENABLE(xpg-echo-default, AC_HELP_STRING([--enable-xpg-echo-default], [make the echo builtin expand escape sequences by default]), opt_xpg_echo=$enableval)
+AC_ARG_ENABLE(alias, AS_HELP_STRING([--enable-alias], [enable shell aliases]), opt_alias=$enableval)
+AC_ARG_ENABLE(alt-array-implementation, AS_HELP_STRING([--enable-alt-array-implementation], [enable an alternate array implementation that optimizes speed at the cost of space]), opt_alt_array_impl=$enableval)
+AC_ARG_ENABLE(arith-for-command, AS_HELP_STRING([--enable-arith-for-command], [enable arithmetic for command]), opt_arith_for_command=$enableval)
+AC_ARG_ENABLE(array-variables, AS_HELP_STRING([--enable-array-variables], [include shell array variables]), opt_array_variables=$enableval)
+AC_ARG_ENABLE(bang-history, AS_HELP_STRING([--enable-bang-history], [turn on csh-style history substitution]), opt_bang_history=$enableval)
+AC_ARG_ENABLE(brace-expansion, AS_HELP_STRING([--enable-brace-expansion], [include brace expansion]), opt_brace_expansion=$enableval)
+AC_ARG_ENABLE(casemod-attributes, AS_HELP_STRING([--enable-casemod-attributes], [include case-modifying variable attributes]), opt_casemod_attrs=$enableval)
+AC_ARG_ENABLE(casemod-expansions, AS_HELP_STRING([--enable-casemod-expansions], [include case-modifying word expansions]), opt_casemod_expansions=$enableval)
+AC_ARG_ENABLE(command-timing, AS_HELP_STRING([--enable-command-timing], [enable the time reserved word and command timing]), opt_command_timing=$enableval)
+AC_ARG_ENABLE(cond-command, AS_HELP_STRING([--enable-cond-command], [enable the conditional command]), opt_cond_command=$enableval)
+AC_ARG_ENABLE(cond-regexp, AS_HELP_STRING([--enable-cond-regexp], [enable extended regular expression matching in conditional commands]), opt_cond_regexp=$enableval)
+AC_ARG_ENABLE(coprocesses, AS_HELP_STRING([--enable-coprocesses], [enable coprocess support and the coproc reserved word]), opt_coproc=$enableval)
+AC_ARG_ENABLE(debugger, AS_HELP_STRING([--enable-debugger], [enable support for bash debugger]), opt_debugger=$enableval)
+AC_ARG_ENABLE(dev-fd-stat-broken, AS_HELP_STRING([--enable-dev-fd-stat-broken], [enable this option if stat on /dev/fd/N and fstat on file descriptor N don't return the same results]), opt_dev_fd_stat_broken=$enableval)
+AC_ARG_ENABLE(direxpand-default, AS_HELP_STRING([--enable-direxpand-default], [enable the direxpand shell option by default]), opt_dircomplete_expand_default=$enableval)
+AC_ARG_ENABLE(directory-stack, AS_HELP_STRING([--enable-directory-stack], [enable builtins pushd/popd/dirs]), opt_dirstack=$enableval)
+AC_ARG_ENABLE(disabled-builtins, AS_HELP_STRING([--enable-disabled-builtins], [allow disabled builtins to still be invoked]), opt_disabled_builtins=$enableval)
+AC_ARG_ENABLE(dparen-arithmetic, AS_HELP_STRING([--enable-dparen-arithmetic], [include ((...)) command]), opt_dparen_arith=$enableval)
+AC_ARG_ENABLE(extended-glob, AS_HELP_STRING([--enable-extended-glob], [include ksh-style extended pattern matching]), opt_extended_glob=$enableval)
+AC_ARG_ENABLE(extended-glob-default, AS_HELP_STRING([--enable-extended-glob-default], [force extended pattern matching to be enabled by default]), opt_extglob_default=$enableval)
+AC_ARG_ENABLE(function-import, AS_HELP_STRING([--enable-function-import], [allow bash to import exported function definitions by default]), opt_function_import=$enableval)
+AC_ARG_ENABLE(glob-asciiranges-default, AS_HELP_STRING([--enable-glob-asciiranges-default], [force bracket range expressions in pattern matching to use the C locale by default]), opt_globascii_default=$enableval)
+AC_ARG_ENABLE(help-builtin, AS_HELP_STRING([--enable-help-builtin], [include the help builtin]), opt_help=$enableval)
+AC_ARG_ENABLE(history, AS_HELP_STRING([--enable-history], [turn on command history]), opt_history=$enableval)
+AC_ARG_ENABLE(job-control, AS_HELP_STRING([--enable-job-control], [enable job control features]), opt_job_control=$enableval)
+AC_ARG_ENABLE(multibyte, AS_HELP_STRING([--enable-multibyte], [enable multibyte characters if OS supports them]), opt_multibyte=$enableval)
+AC_ARG_ENABLE(net-redirections, AS_HELP_STRING([--enable-net-redirections], [enable /dev/tcp/host/port redirection]), opt_net_redirs=$enableval)
+AC_ARG_ENABLE(process-substitution, AS_HELP_STRING([--enable-process-substitution], [enable process substitution]), opt_process_subst=$enableval)
+AC_ARG_ENABLE(progcomp, AS_HELP_STRING([--enable-progcomp], [enable programmable completion and the complete builtin]), opt_progcomp=$enableval)
+AC_ARG_ENABLE(prompt-string-decoding, AS_HELP_STRING([--enable-prompt-string-decoding], [turn on escape character decoding in prompts]), opt_prompt_decoding=$enableval)
+AC_ARG_ENABLE(readline, AS_HELP_STRING([--enable-readline], [turn on command line editing]), opt_readline=$enableval)
+AC_ARG_ENABLE(restricted, AS_HELP_STRING([--enable-restricted], [enable a restricted shell]), opt_restricted=$enableval)
+AC_ARG_ENABLE(select, AS_HELP_STRING([--enable-select], [include select command]), opt_select=$enableval)
+AC_ARG_ENABLE(separate-helpfiles, AS_HELP_STRING([--enable-separate-helpfiles], [use external files for help builtin documentation]), opt_separate_help=$enableval)
+AC_ARG_ENABLE(single-help-strings, AS_HELP_STRING([--enable-single-help-strings], [store help documentation as a single string to ease translation]), opt_single_longdoc_strings=$enableval)
+AC_ARG_ENABLE(strict-posix-default, AS_HELP_STRING([--enable-strict-posix-default], [configure bash to be posix-conformant by default]), opt_strict_posix=$enableval)
+AC_ARG_ENABLE(translatable-strings, AS_HELP_STRING([--enable-translatable-strings], [include support for $"..." translatable strings]), opt_translatable_strings=$enableval)
+AC_ARG_ENABLE(usg-echo-default, AS_HELP_STRING([--enable-usg-echo-default], [a synonym for --enable-xpg-echo-default]), opt_xpg_echo=$enableval)
+AC_ARG_ENABLE(xpg-echo-default, AS_HELP_STRING([--enable-xpg-echo-default], [make the echo builtin expand escape sequences by default]), opt_xpg_echo=$enableval)
dnl options that alter how bash is compiled and linked
-AC_ARG_ENABLE(mem-scramble, AC_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval)
-AC_ARG_ENABLE(profiling, AC_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval)
-AC_ARG_ENABLE(static-link, AC_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval)
+AC_ARG_ENABLE(mem-scramble, AS_HELP_STRING([--enable-mem-scramble], [scramble memory on calls to malloc and free]), opt_memscramble=$enableval)
+AC_ARG_ENABLE(profiling, AS_HELP_STRING([--enable-profiling], [allow profiling with gprof]), opt_profiling=$enableval)
+AC_ARG_ENABLE(static-link, AS_HELP_STRING([--enable-static-link], [link bash statically, for use as a root shell]), opt_static_link=$enableval)
dnl So-called `precious' variables
AC_ARG_VAR([CC_FOR_BUILD], [C compiler used when compiling binaries used only at build time])
@@ -354,6 +362,13 @@ fi
if test $opt_dev_fd_stat_broken = yes; then
AC_DEFINE(DEV_FD_STAT_BROKEN)
fi
+if test $opt_alt_array_impl = yes; then
+AC_DEFINE(ALT_ARRAY_IMPLEMENTATION)
+ARRAY_O=array2.o
+fi
+if test $opt_translatable_strings = yes; then
+AC_DEFINE(TRANSLATABLE_STRINGS)
+fi
if test $opt_memscramble = yes; then
AC_DEFINE(MEMSCRAMBLE)
@@ -368,7 +383,7 @@ fi
HELPDIR= HELPDIRDEFINE= HELPINSTALL= HELPFILES_TARGET=
if test "$opt_separate_help" != no; then
if test "$opt_separate_help" = "yes" ; then
- HELPDIR='${datadir}/bash'
+ HELPDIR='${datadir}/bash/helpfiles'
else
HELPDIR=$opt_separate_help
fi
@@ -391,6 +406,8 @@ AC_SUBST(MALLOC_LIBRARY)
AC_SUBST(MALLOC_LDFLAGS)
AC_SUBST(MALLOC_DEP)
+AC_SUBST(ARRAY_O)
+
AC_SUBST(htmldir)
AC_SUBST(HELPDIR)
@@ -414,17 +431,16 @@ dnl different environment
AC_PROG_CC
if test -n "$want_auto_cflags"; then
- AUTO_CFLAGS="-g ${GCC+-O2}"
- AUTO_LDFLAGS="-g ${GCC+-O2}"
- STYLE_CFLAGS="${GCC+-Wno-parentheses} ${GCC+-Wno-format-security}"
+ AUTO_CFLAGS="-g ${GCC:+-O2}"
+ AUTO_LDFLAGS="-g ${GCC:+-O2}"
+# STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security} ${GCC:+-Wno-tautological-constant-out-of-range-compare}"
+ STYLE_CFLAGS="${GCC:+-Wno-parentheses} ${GCC:+-Wno-format-security}"
else
AUTO_CFLAGS= AUTO_LDFLAGS= STYLE_CFLAGS=
fi
dnl test for Unix variants
-AC_ISC_POSIX
-AC_MINIX
-
+AC_USE_SYSTEM_EXTENSIONS
AC_SYS_LARGEFILE
dnl BEGIN changes for cross-building (currently cygwin, minGW, and
@@ -481,7 +497,7 @@ dnl these must come after the test for cc/gcc
if test "$opt_profiling" = "yes"; then
PROFILE_FLAGS=-pg
case "$host_os" in
- solaris2*|linux*) ;;
+ solaris2*|linux*|darwin*) ;;
*) opt_static_link=yes ;;
esac
DEBUG= MALLOC_DEBUG=
@@ -494,7 +510,7 @@ if test "$opt_static_link" = yes; then
prefer_static=yes
prefer_shared=no
# if we're using gcc, add `-static' to LDFLAGS, except on Solaris >= 2
- if test -n "$GCC" || test "$ac_cv_prog_gcc" = "yes"; then
+ if test "$GCC" = "yes"; then
STATIC_LD="-static"
case "$host_os" in
solaris2*|linux*) ;;
@@ -516,9 +532,12 @@ if test "X$cross_compiling" = "Xno"; then
fi
# CFLAGS set above to default value if not passed in environment
if test -n "$want_auto_cflags" ; then
- CFLAGS_FOR_BUILD="${CFLAGS} ${STYLE_CFLAGS}"
+ CFLAGS_FOR_BUILD="${CFLAGS}"
+ BASE_CFLAGS_FOR_BUILD="${CFLAGS}"
else
+ # passed in environment
CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
+ BASE_CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
fi
LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
else
@@ -526,6 +545,7 @@ else
CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-""}
LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-""}
CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD="-g"}
+ BASE_CFLAGS_FOR_BUILD=${BASE_CFLAGS_FOR_BUILD="-g"}
LIBS_FOR_BUILD=${LIBS_FOR_BUILD-""}
fi
@@ -536,6 +556,8 @@ AC_SUBST(STATIC_LD)
AC_SUBST(CC_FOR_BUILD)
AC_SUBST(CFLAGS_FOR_BUILD)
+AC_SUBST(BASE_CFLAGS_FOR_BUILD)
+AC_SUBST(STYLE_CFLAGS)
AC_SUBST(CPPFLAGS_FOR_BUILD)
AC_SUBST(LDFLAGS_FOR_BUILD)
AC_SUBST(LIBS_FOR_BUILD)
@@ -691,6 +713,8 @@ AC_SUBST(SIZE)
m4_include([m4/stat-time.m4])
m4_include([m4/timespec.m4])
+m4_include([m4/strtoimax.m4])
+
dnl include files for gettext
m4_include([m4/codeset.m4])
@@ -729,26 +753,22 @@ m4_include([m4/wchar_t.m4])
m4_include([m4/wint_t.m4])
m4_include([m4/xsize.m4])
-dnl Turn on any extensions available in the GNU C library.
-AC_DEFINE(_GNU_SOURCE, 1)
-
dnl C compiler characteristics
AC_C_CONST
AC_C_INLINE
AC_C_BIGENDIAN
AC_C_STRINGIZE
-AC_C_LONG_DOUBLE
+AC_TYPE_LONG_DOUBLE
AC_C_PROTOTYPES
AC_C_CHAR_UNSIGNED
AC_C_VOLATILE
AC_C_RESTRICT
dnl initialize GNU gettext
-AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
+BASH_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
dnl header files
AC_HEADER_DIRENT
-AC_HEADER_TIME
AC_HEADER_MAJOR
BASH_HEADER_INTTYPES
@@ -782,7 +802,6 @@ dnl special checks for libc functions
AC_FUNC_ALLOCA
AC_FUNC_CHOWN
AC_FUNC_GETPGRP
-AC_FUNC_SETVBUF_REVERSED
AC_FUNC_VPRINTF
AC_FUNC_STRCOLL
@@ -813,15 +832,12 @@ if test "$ac_cv_func_vprintf" = no && test "$ac_cv_func__doprnt" = "yes"; then
AC_LIBOBJ(vprint)
fi
-dnl signal stuff
-AC_TYPE_SIGNAL
-
dnl checks for certain version-specific system calls and libc functions
AC_CHECK_FUNC(__setostype, AC_DEFINE(HAVE_SETOSTYPE))
AC_CHECK_FUNC(wait3, AC_DEFINE(HAVE_WAIT3))
dnl checks for missing libc functions
-AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
+AC_CHECK_FUNC(mkfifo, AC_DEFINE(HAVE_MKFIFO), AC_DEFINE(MKFIFO_MISSING))
dnl checks for system calls
AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getentropy getgroups \
@@ -845,7 +861,7 @@ AC_CHECK_FUNCS(arc4random)
AC_REPLACE_FUNCS(getcwd memset)
AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
-AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
+AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoumax)
AC_REPLACE_FUNCS(dprintf)
AC_REPLACE_FUNCS(strchrnul)
AC_REPLACE_FUNCS(strdup)
@@ -857,8 +873,6 @@ AC_CHECK_DECLS([confstr])
AC_CHECK_DECLS([printf])
AC_CHECK_DECLS([sbrk])
AC_CHECK_DECLS([setregid])
-dnl AC_CHECK_DECLS[(setresuid])
-dnl AC_CHECK_DECLS[(setresgid])
AC_CHECK_DECLS([strcpy])
AC_CHECK_DECLS([strsignal])
@@ -868,12 +882,13 @@ dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
AC_CHECK_DECLS([strtold], [
AC_MSG_CHECKING([for broken strtold])
AC_CACHE_VAL(bash_cv_strtold_broken,
- [AC_TRY_COMPILE(
- [#include <stdlib.h>],
- [long double r; char *foo, bar; r = strtold(foo, &bar);],
- bash_cv_strtold_broken=no, bash_cv_strtold_broken=yes,
- [AC_MSG_WARN(cannot check for broken strtold if cross-compiling, defaulting to no)])
- ]
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stdlib.h>]],
+ [[long double r; char *foo, bar; r = strtold(foo, &bar);]]
+ )],
+ [bash_cv_strtold_broken=no],[bash_cv_strtold_broken=yes])
+ ]
)
AC_MSG_RESULT($bash_cv_strtold_broken)
if test "$bash_cv_strtold_broken" = "yes" ; then
@@ -881,18 +896,17 @@ AC_CHECK_DECLS([strtold], [
fi
])
-BASH_CHECK_DECL(strtoimax)
-BASH_CHECK_DECL(strtol)
-BASH_CHECK_DECL(strtoll)
-BASH_CHECK_DECL(strtoul)
-BASH_CHECK_DECL(strtoull)
-BASH_CHECK_DECL(strtoumax)
+AC_CHECK_DECLS(strtol)
+AC_CHECK_DECLS(strtoll)
+AC_CHECK_DECLS(strtoul)
+AC_CHECK_DECLS(strtoull)
+AC_CHECK_DECLS(strtoumax)
AC_FUNC_MKTIME
dnl
dnl Checks for lib/intl and related code (uses some of the output from
-dnl AM_GNU_GETTEXT)
+dnl BASH_GNU_GETTEXT)
dnl
AC_CHECK_HEADERS([argz.h errno.h fcntl.h malloc.h stdio_ext.h])
@@ -924,9 +938,6 @@ AC_CHECK_LIB(dl, dlopen)
AC_CHECK_FUNCS(dlopen dlclose dlsym)
fi
-dnl this defines HAVE_DECL_SYS_SIGLIST
-AC_DECL_SYS_SIGLIST
-
dnl network functions -- check for inet_aton again
if test "$ac_cv_func_inet_aton" != 'yes'; then
BASH_FUNC_INET_ATON
@@ -959,10 +970,9 @@ AC_TYPE_UINTPTR_T
AC_CHECK_TYPE(ssize_t, int)
AC_CHECK_TYPE(time_t, long)
-BASH_TYPE_LONG_LONG
-BASH_TYPE_UNSIGNED_LONG_LONG
+AC_TYPE_LONG_LONG_INT
+AC_TYPE_UNSIGNED_LONG_LONG_INT
-AC_TYPE_SIGNAL
BASH_TYPE_SIG_ATOMIC_T
AC_CHECK_SIZEOF(char, 1)
@@ -970,6 +980,7 @@ AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
AC_CHECK_SIZEOF(char *, 4)
+AC_CHECK_SIZEOF(size_t, 4)
AC_CHECK_SIZEOF(double, 8)
AC_CHECK_SIZEOF([long long], 8)
@@ -999,7 +1010,6 @@ BASH_FUNC_LSTAT
fi
dnl behavior of system calls and library functions
-BASH_FUNC_CTYPE_NONASCII
BASH_FUNC_DUP2_CLOEXEC_CHECK
BASH_SYS_PGRP_SYNC
BASH_SYS_SIGNAL_VINTAGE
@@ -1010,18 +1020,18 @@ BASH_SYS_SIGLIST
BASH_UNDER_SYS_SIGLIST
dnl various system types
-BASH_TYPE_SIGHANDLER
BASH_CHECK_TYPE(clock_t, [#include <sys/times.h>], long)
BASH_CHECK_TYPE(sigset_t, [#include <signal.h>], int)
-BASH_CHECK_TYPE(sig_atomic_t, [#include <signal.h>], int)
-BASH_CHECK_TYPE(quad_t, , long, HAVE_QUAD_T)
-BASH_CHECK_TYPE(intmax_t, , $bash_cv_type_long_long)
-BASH_CHECK_TYPE(uintmax_t, , $bash_cv_type_unsigned_long_long)
if test "$ac_cv_header_sys_socket_h" = "yes"; then
BASH_CHECK_TYPE(socklen_t, [#include <sys/socket.h>], [unsigned int], HAVE_SOCKLEN_T)
fi
+
+AC_CHECK_TYPE(quad_t, AC_DEFINE([HAVE_QUAD_T], [1]), [], )
BASH_TYPE_RLIMIT
+AC_TYPE_INTMAX_T
+AC_TYPE_UINTMAX_T
+
AC_CHECK_SIZEOF(intmax_t, 8)
dnl presence and contents of structures used by system calls
@@ -1059,6 +1069,8 @@ BASH_FUNC_STRCOLL
BASH_FUNC_SNPRINTF
BASH_FUNC_VSNPRINTF
+BASH_FUNC_STRTOIMAX
+
dnl If putenv or unsetenv is not present, set the right define so the
dnl prototype and declaration in lib/sh/getenv.c will be standard-conformant
@@ -1164,7 +1176,7 @@ linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
*) AC_DEFINE(PGRP_PIPE) ;;
esac ;;
netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
-freebsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;;
+freebsd*|midnightbsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;;
*qnx[[67]]*) LOCAL_LIBS="-lncurses" ;;
*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
powerux*) LOCAL_LIBS="-lgen" ;;
@@ -1190,6 +1202,7 @@ freebsd[[3-9]]*)
fi ;;
freebsdelf*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
dragonfly*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
+midnightbsd*) LOCAL_LDFLAGS=-rdynamic ;; # allow dynamic loading
esac
case "$host_cpu" in
@@ -1206,7 +1219,7 @@ mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
esac
# turn off paren warnings in gcc
-CFLAGS="$CFLAGS ${STYLE_CFLAGS}"
+#CFLAGS="$CFLAGS ${STYLE_CFLAGS}"
#
# Shared object configuration section. These values are generated by
@@ -1297,14 +1310,17 @@ AC_SUBST(LOCAL_DEFS)
#AC_SUBST(ALLOCA_SOURCE)
#AC_SUBST(ALLOCA_OBJECT)
-AC_OUTPUT([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
- lib/intl/Makefile \
- lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
- lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
- examples/loadables/Makefile examples/loadables/Makefile.inc \
- examples/loadables/perl/Makefile \
- support/bash.pc support/bashbug.sh],
-[
-# Makefile uses this timestamp file to record whether config.h is up to date.
-echo timestamp > stamp-h
-])
+AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile \
+ lib/glob/Makefile lib/intl/Makefile \
+ lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
+ lib/tilde/Makefile doc/Makefile support/Makefile \
+ po/Makefile.in examples/loadables/Makefile \
+ examples/loadables/Makefile.inc \
+ examples/loadables/Makefile.sample \
+ examples/loadables/perl/Makefile \
+ support/bash.pc support/bashbug.sh])
+
+dnl Makefile uses this timestamp file to record whether config.h is up to date.
+AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > stamp-h])
+
+AC_OUTPUT
diff --git a/doc/FAQ b/doc/FAQ
index 104d0bc1..44be0a6d 100644
--- a/doc/FAQ
+++ b/doc/FAQ
@@ -1,4 +1,6 @@
-This is the Bash FAQ, version 4.15, for Bash version 5.0.
+This is the Bash FAQ, version 4.15, for Bash version 5.1.
+
+[This document is no longer maintained.]
This document contains a set of frequently-asked questions concerning
Bash, the GNU Bourne-Again Shell. Bash is a freely-available command
@@ -631,7 +633,7 @@ o There is a new configuration option (in config-top.h) that forces bash to
o A new variable $BASHOPTS to export shell options settable using `shopt' to
child processes.
-o There is a new confgure option that forces the extglob option to be
+o There is a new configure option that forces the extglob option to be
enabled by default.
o New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 12068fb5..8bf775e1 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -74,7 +74,6 @@ TEXI2DVI = ${SUPPORT_SRCDIR}/texi2dvi
TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html
MAN2HTML = ${BUILD_DIR}/support/man2html
HTMLPOST = ${srcdir}/htmlpost.sh
-INFOPOST = ${srcdir}/infopost.sh
QUIETPS = #set this to -q to shut up dvips
PAPERSIZE = letter # change to a4 for A4-size paper
PSDPI = 600 # could be 300 if you like
@@ -108,11 +107,11 @@ BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/fdl.texi $(srcdir)/version.texi
.1.ps:
$(RM) $@
- -${GROFF} -man $< > $@
+ -${GROFF} -I${srcdir} -man $< > $@
.1.0:
$(RM) $@
- -${NROFF} -man $< > $@
+ -${NROFF} -I${srcdir} -man $< > $@
.1.html:
$(RM) $@
@@ -128,11 +127,11 @@ BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/fdl.texi $(srcdir)/version.texi
.3.ps:
$(RM) $@
- -${GROFF} -man $< > $@
+ -${GROFF} -I${srcdir} -man $< > $@
.3.0:
$(RM) $@
- -${NROFF} -man $< > $@
+ -${NROFF} -I${srcdir} -man $< > $@
.3.html:
$(RM) $@
@@ -173,23 +172,26 @@ html: ${HTMLFILES}
pdf: ${PDFFILES}
bashref.dvi: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
+ $(RM) $@
${SET_TEXINPUTS} $(TEXI2DVI) $(srcdir)/bashref.texi || { ${RM} $@ ; exit 1; }
bashref.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
+ $(RM) $@
$(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi
# experimental
bashref.pdf: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
+ $(RM) $@
${SET_TEXINPUTS} $(TEXI2PDF) $(srcdir)/bashref.texi || { ${RM} $@ ; exit 1; }
-
# can also use:
# $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
$(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi
-bash.info: bashref.info
- ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \
+bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
+ $(RM) $@
+ $(MAKEINFO) -o $@ --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi
bash.txt: bash.1
bash.ps: bash.1
@@ -324,18 +326,18 @@ faq.mail: FAQ faq.headers.mail faq.version
cat faq.headers.mail faq.version FAQ > $@
inst: bashref.texi
- $(SHELL) ./mkinstall
- cmp -s INSTALL ../INSTALL || mv INSTALL ../INSTALL
+ $(SHELL) ${srcdir}/mkinstall -t ${topdir} -s ${srcdir}
+ cmp -s INSTALL ${topdir}/INSTALL || mv INSTALL ${topdir}/INSTALL
$(RM) INSTALL
posix: bashref.texi
- $(SHELL) ./mkposix
- cmp -s POSIX ../POSIX || mv POSIX ../POSIX
+ $(SHELL) ${srcdir}/mkposix -t ${topdir} -s ${srcdir}
+ cmp -s POSIX ${topdir}/POSIX || mv POSIX ${topdir}/POSIX
$(RM) POSIX
rbash: bashref.texi
- $(SHELL) ./mkrbash
- cmp -s RBASH ../RBASH || mv RBASH ../RBASH
+ $(SHELL) ${srcdir}/mkrbash -t ${topdir} -s ${srcdir}
+ cmp -s RBASH ${topdir}/RBASH || mv RBASH ${topdir}/RBASH
$(RM) RBASH
xdist: everything inst posix rbash
diff --git a/doc/article.txt b/doc/article.txt
index c19ff924..e43ca9f3 100644
--- a/doc/article.txt
+++ b/doc/article.txt
@@ -531,7 +531,7 @@ _c_o_m_m_a_n_d _h_i_s_t_o_r_y) is provided jointly by Bash
readline library. Bash provides variables ($HISTFILE,
$HISTSIZE, and $HISTCONTROL) and the _h_i_s_t_o_r_y and _f_c builtins
to manipulate the history list. The value of $_H_I_S_T_F_I_L_E
-specifes the file where Bash writes the command history on
+specifies the file where Bash writes the command history on
exit and reads it on startup. $_H_I_S_T_S_I_Z_E is used to limit
the number of commands saved in the history. $_H_I_S_T_C_O_N_T_R_O_L
provides a crude form of control over which commands are
@@ -1107,5 +1107,3 @@ Inc.
October 28, 1994
-
-
diff --git a/doc/bash.0 b/doc/bash.0
index 9160b097..1580b77a 100644
--- a/doc/bash.0
+++ b/doc/bash.0
@@ -9,7 +9,7 @@ SSYYNNOOPPSSIISS
bbaasshh [options] [command_string | file]
CCOOPPYYRRIIGGHHTT
- Bash is Copyright (C) 1989-2020 by the Free Software Foundation, Inc.
+ Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc.
DDEESSCCRRIIPPTTIIOONN
BBaasshh is an sshh-compatible command language interpreter that executes
@@ -131,7 +131,7 @@ IINNVVOOCCAATTIIOONN
one started with the ----llooggiinn option.
An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments (un-
- less --ss is specified) and without the --cc option whose standard input
+ less --ss is specified) and without the --cc option, whose standard input
and error are both connected to terminals (as determined by _i_s_a_t_t_y(3)),
or one started with the --ii option. PPSS11 is set and $$-- includes ii if
bbaasshh is interactive, allowing a shell script or a startup file to test
@@ -191,14 +191,14 @@ IINNVVOOCCAATTIIOONN
startup files are read.
BBaasshh attempts to determine when it is being run with its standard input
- connected to a network connection, as when executed by the remote shell
- daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter-
- mines it is being run in this fashion, it reads and executes commands
- from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do
- this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this
- behavior, and the ----rrccffiillee option may be used to force another file to
- be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with
- those options or allow them to be specified.
+ connected to a network connection, as when executed by the historical
+ remote shell daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If
+ bbaasshh determines it is being run non-interactively in this fashion, it
+ reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists and is
+ readable. It will not do this if invoked as sshh. The ----nnoorrcc option may
+ be used to inhibit this behavior, and the ----rrccffiillee option may be used
+ to force another file to be read, but neither _r_s_h_d nor _s_s_h_d generally
+ invoke the shell with those options or allow them to be specified.
If the shell is started with the effective user (group) id not equal to
the real user (group) id, and the --pp option is not supplied, no startup
@@ -237,59 +237,63 @@ RREESSEERRVVEEDD WWOORRDDSS
tthheenn uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]]
SSHHEELLLL GGRRAAMMMMAARR
+ This section describes the syntax of the various forms of shell com-
+ mands.
+
SSiimmppllee CCoommmmaannddss
- A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol-
- lowed by bbllaannkk-separated words and redirections, and terminated by a
+ A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol-
+ lowed by bbllaannkk-separated words and redirections, and terminated by a
_c_o_n_t_r_o_l _o_p_e_r_a_t_o_r. The first word specifies the command to be executed,
- and is passed as argument zero. The remaining words are passed as ar-
+ and is passed as argument zero. The remaining words are passed as ar-
guments to the invoked command.
- The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if
+ The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if
the command is terminated by signal _n.
PPiippeelliinneess
- A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of
+ A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of
the control operators || or ||&&. The format for a pipeline is:
- [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d [ [|||||&&] _c_o_m_m_a_n_d_2 ... ]
+ [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d_1 [ [|||||&&] _c_o_m_m_a_n_d_2 ... ]
- The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard
- input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec-
- tions specified by the command (see RREEDDIIRREECCTTIIOONN below). If ||&& is used,
- _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con-
- nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand
- for 22>>&&11 ||. This implicit redirection of the standard error to the
- standard output is performed after any redirections specified by the
- command.
+ The standard output of _c_o_m_m_a_n_d_1 is connected via a pipe to the standard
+ input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec-
+ tions specified by the _c_o_m_m_a_n_d_1(see RREEDDIIRREECCTTIIOONN below). If ||&& is used,
+ _c_o_m_m_a_n_d_1's standard error, in addition to its standard output, is con-
+ nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand
+ for 22>>&&11 ||. This implicit redirection of the standard error to the
+ standard output is performed after any redirections specified by _c_o_m_-
+ _m_a_n_d_1.
The return status of a pipeline is the exit status of the last command,
- unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the
- pipeline's return status is the value of the last (rightmost) command
- to exit with a non-zero status, or zero if all commands exit success-
+ unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the
+ pipeline's return status is the value of the last (rightmost) command
+ to exit with a non-zero status, or zero if all commands exit success-
fully. If the reserved word !! precedes a pipeline, the exit status of
- that pipeline is the logical negation of the exit status as described
- above. The shell waits for all commands in the pipeline to terminate
+ that pipeline is the logical negation of the exit status as described
+ above. The shell waits for all commands in the pipeline to terminate
before returning a value.
- If the ttiimmee reserved word precedes a pipeline, the elapsed as well as
- user and system time consumed by its execution are reported when the
- pipeline terminates. The --pp option changes the output format to that
- specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec-
- ognize ttiimmee as a reserved word if the next token begins with a `-'.
- The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies
- how the timing information should be displayed; see the description of
+ If the ttiimmee reserved word precedes a pipeline, the elapsed as well as
+ user and system time consumed by its execution are reported when the
+ pipeline terminates. The --pp option changes the output format to that
+ specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec-
+ ognize ttiimmee as a reserved word if the next token begins with a `-'.
+ The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies
+ how the timing information should be displayed; see the description of
TTIIMMEEFFOORRMMAATT under SShheellll VVaarriiaabblleess below.
When the shell is in _p_o_s_i_x _m_o_d_e, ttiimmee may be followed by a newline. In
- this case, the shell displays the total user and system time consumed
- by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to
+ this case, the shell displays the total user and system time consumed
+ by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to
specify the format of the time information.
- Each command in a pipeline is executed as a separate process (i.e., in
- a subshell). See CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of a
- subshell environment. If the llaassttppiippee option is enabled using the
- sshhoopptt builtin (see the description of sshhoopptt below), the last element of
- a pipeline may be run by the shell process.
+ Each command in a multi-command pipeline, where pipes are created, is
+ executed in a _s_u_b_s_h_e_l_l, which is a separate process. See CCOOMMMMAANNDD EEXXEE--
+ CCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of subshells and a subshell envi-
+ ronment. If the llaassttppiippee option is enabled using the sshhoopptt builtin
+ (see the description of sshhoopptt below), the last element of a pipeline
+ may be run by the shell process when job control is not active.
LLiissttss
A _l_i_s_t is a sequence of one or more pipelines separated by one of the
@@ -333,11 +337,11 @@ SSHHEELLLL GGRRAAMMMMAARR
one or more newlines, and may be followed by a newline in place of a
semicolon.
- (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU--
- TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com-
- mands that affect the shell's environment do not remain in ef-
- fect after the command completes. The return status is the exit
- status of _l_i_s_t.
+ (_l_i_s_t) _l_i_s_t is executed in a subshell (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONN--
+ MMEENNTT below for a description of a subshell environment). Vari-
+ able assignments and builtin commands that affect the shell's
+ environment do not remain in effect after the command completes.
+ The return status is the exit status of _l_i_s_t.
{ _l_i_s_t; }
_l_i_s_t is simply executed in the current shell environment. _l_i_s_t
@@ -353,66 +357,73 @@ SSHHEELLLL GGRRAAMMMMAARR
The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described be-
low under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the expression
is non-zero, the return status is 0; otherwise the return status
- is 1. This is exactly equivalent to lleett ""_e_x_p_r_e_s_s_i_o_n"".
+ is 1. The _e_x_p_r_e_s_s_i_o_n undergoes the same expansions as if it
+ were within double quotes, but double quote characters in _e_x_-
+ _p_r_e_s_s_i_o_n are not treated specially and are removed.
[[[[ _e_x_p_r_e_s_s_i_o_n ]]]]
Return a status of 0 or 1 depending on the evaluation of the
conditional expression _e_x_p_r_e_s_s_i_o_n. Expressions are composed of
the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS.
- Word splitting and pathname expansion are not performed on the
- words between the [[[[ and ]]]]; tilde expansion, parameter and
- variable expansion, arithmetic expansion, command substitution,
- process substitution, and quote removal are performed. Condi-
- tional operators such as --ff must be unquoted to be recognized as
- primaries.
-
- When used with [[[[, the << and >> operators sort lexicographically
+ The words between the [[[[ and ]]]] do not undergo word splitting
+ and pathname expansion. The shell performs tilde expansion, pa-
+ rameter and variable expansion, arithmetic expansion, command
+ substitution, process substitution, and quote removal on those
+ words (the expansions that would occur if the words were en-
+ closed in double quotes). Conditional operators such as --ff must
+ be unquoted to be recognized as primaries.
+
+ When used with [[[[, the << and >> operators sort lexicographically
using the current locale.
- When the ==== and !!== operators are used, the string to the right
+ When the ==== and !!== operators are used, the string to the right
of the operator is considered a pattern and matched according to
the rules described below under PPaatttteerrnn MMaattcchhiinngg, as if the eexxtt--
gglloobb shell option were enabled. The == operator is equivalent to
- ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is
- performed without regard to the case of alphabetic characters.
- The return value is 0 if the string matches (====) or does not
- match (!!==) the pattern, and 1 otherwise. Any part of the pat-
- tern may be quoted to force the quoted portion to be matched as
+ ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is
+ performed without regard to the case of alphabetic characters.
+ The return value is 0 if the string matches (====) or does not
+ match (!!==) the pattern, and 1 otherwise. Any part of the pat-
+ tern may be quoted to force the quoted portion to be matched as
a string.
- An additional binary operator, ==~~, is available, with the same
- precedence as ==== and !!==. When it is used, the string to the
+ An additional binary operator, ==~~, is available, with the same
+ precedence as ==== and !!==. When it is used, the string to the
right of the operator is considered a POSIX extended regular ex-
- pression and matched accordingly (using the POSIX _r_e_g_c_o_m_p and
- _r_e_g_e_x_e_c interfaces usually described in _r_e_g_e_x(3)). The return
- value is 0 if the string matches the pattern, and 1 otherwise.
+ pression and matched accordingly (using the POSIX _r_e_g_c_o_m_p and
+ _r_e_g_e_x_e_c interfaces usually described in _r_e_g_e_x(3)). The return
+ value is 0 if the string matches the pattern, and 1 otherwise.
If the regular expression is syntactically incorrect, the condi-
tional expression's return value is 2. If the nnooccaasseemmaattcchh shell
- option is enabled, the match is performed without regard to the
- case of alphabetic characters. Any part of the pattern may be
- quoted to force the quoted portion to be matched as a string.
- Bracket expressions in regular expressions must be treated care-
- fully, since normal quoting characters lose their meanings be-
- tween brackets. If the pattern is stored in a shell variable,
- quoting the variable expansion forces the entire pattern to be
- matched as a string.
-
- The pattern will match if it matches any part of the string.
- Anchor the pattern using the ^^ and $$ regular expression opera-
+ option is enabled, the match is performed without regard to the
+ case of alphabetic characters. If any part of the pattern is
+ quoted, the quoted portion is matched literally. This means ev-
+ ery character in the quoted portion matches itself, instead of
+ having any special pattern matching meaning. If the pattern is
+ stored in a shell variable, quoting the variable expansion
+ forces the entire pattern to be matched literally. Treat
+ bracket expressions in regular expressions carefully, since nor-
+ mal quoting and pattern characters lose their meanings between
+ brackets.
+
+ The pattern will match if it matches any part of the string.
+ Anchor the pattern using the ^^ and $$ regular expression opera-
tors to force it to match the entire string. The array variable
- BBAASSHH__RREEMMAATTCCHH records which parts of the string matched the pat-
- tern. The element of BBAASSHH__RREEMMAATTCCHH with index 0 contains the
- portion of the string matching the entire regular expression.
- Substrings matched by parenthesized subexpressions within the
- regular expression are saved in the remaining BBAASSHH__RREEMMAATTCCHH in-
- dices. The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion
- of the string matching the _nth parenthesized subexpression.
-
- Expressions may be combined using the following operators,
+ BBAASSHH__RREEMMAATTCCHH records which parts of the string matched the pat-
+ tern. The element of BBAASSHH__RREEMMAATTCCHH with index 0 contains the
+ portion of the string matching the entire regular expression.
+ Substrings matched by parenthesized subexpressions within the
+ regular expression are saved in the remaining BBAASSHH__RREEMMAATTCCHH in-
+ dices. The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion
+ of the string matching the _nth parenthesized subexpression.
+ Bash sets BBAASSHH__RREEMMAATTCCHH in the global scope; declaring it as a
+ local variable will lead to unexpected results.
+
+ Expressions may be combined using the following operators,
listed in decreasing order of precedence:
(( _e_x_p_r_e_s_s_i_o_n ))
- Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to
+ Returns the value of _e_x_p_r_e_s_s_i_o_n. This may be used to
override the normal precedence of operators.
!! _e_x_p_r_e_s_s_i_o_n
True if _e_x_p_r_e_s_s_i_o_n is false.
@@ -422,82 +433,82 @@ SSHHEELLLL GGRRAAMMMMAARR
True if either _e_x_p_r_e_s_s_i_o_n_1 or _e_x_p_r_e_s_s_i_o_n_2 is true.
The &&&& and |||| operators do not evaluate _e_x_p_r_e_s_s_i_o_n_2 if the value
- of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return value of
+ of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return value of
the entire conditional expression.
ffoorr _n_a_m_e [ [ iinn [ _w_o_r_d _._._. ] ] ; ] ddoo _l_i_s_t ; ddoonnee
The list of words following iinn is expanded, generating a list of
items. The variable _n_a_m_e is set to each element of this list in
- turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit-
- ted, the ffoorr command executes _l_i_s_t once for each positional pa-
- rameter that is set (see PPAARRAAMMEETTEERRSS below). The return status
- is the exit status of the last command that executes. If the
+ turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit-
+ ted, the ffoorr command executes _l_i_s_t once for each positional pa-
+ rameter that is set (see PPAARRAAMMEETTEERRSS below). The return status
+ is the exit status of the last command that executes. If the
expansion of the items following iinn results in an empty list, no
commands are executed, and the return status is 0.
ffoorr (( _e_x_p_r_1 ; _e_x_p_r_2 ; _e_x_p_r_3 )) ; ddoo _l_i_s_t ; ddoonnee
First, the arithmetic expression _e_x_p_r_1 is evaluated according to
- the rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. The
- arithmetic expression _e_x_p_r_2 is then evaluated repeatedly until
- it evaluates to zero. Each time _e_x_p_r_2 evaluates to a non-zero
- value, _l_i_s_t is executed and the arithmetic expression _e_x_p_r_3 is
- evaluated. If any expression is omitted, it behaves as if it
+ the rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. The
+ arithmetic expression _e_x_p_r_2 is then evaluated repeatedly until
+ it evaluates to zero. Each time _e_x_p_r_2 evaluates to a non-zero
+ value, _l_i_s_t is executed and the arithmetic expression _e_x_p_r_3 is
+ evaluated. If any expression is omitted, it behaves as if it
evaluates to 1. The return value is the exit status of the last
command in _l_i_s_t that is executed, or false if any of the expres-
sions is invalid.
sseelleecctt _n_a_m_e [ iinn _w_o_r_d ] ; ddoo _l_i_s_t ; ddoonnee
The list of words following iinn is expanded, generating a list of
- items. The set of expanded words is printed on the standard er-
- ror, each preceded by a number. If the iinn _w_o_r_d is omitted, the
- positional parameters are printed (see PPAARRAAMMEETTEERRSS below). The
- PPSS33 prompt is then displayed and a line read from the standard
- input. If the line consists of a number corresponding to one of
- the displayed words, then the value of _n_a_m_e is set to that word.
- If the line is empty, the words and prompt are displayed again.
- If EOF is read, the command completes. Any other value read
- causes _n_a_m_e to be set to null. The line read is saved in the
- variable RREEPPLLYY. The _l_i_s_t is executed after each selection until
- a bbrreeaakk command is executed. The exit status of sseelleecctt is the
- exit status of the last command executed in _l_i_s_t, or zero if no
- commands were executed.
+ items, and the set of expanded words is printed on the standard
+ error, each preceded by a number. If the iinn _w_o_r_d is omitted,
+ the positional parameters are printed (see PPAARRAAMMEETTEERRSS below).
+ sseelleecctt then displays the PPSS33 prompt and reads a line from the
+ standard input. If the line consists of a number corresponding
+ to one of the displayed words, then the value of _n_a_m_e is set to
+ that word. If the line is empty, the words and prompt are dis-
+ played again. If EOF is read, the sseelleecctt command completes and
+ returns 1. Any other value read causes _n_a_m_e to be set to null.
+ The line read is saved in the variable RREEPPLLYY. The _l_i_s_t is exe-
+ cuted after each selection until a bbrreeaakk command is executed.
+ The exit status of sseelleecctt is the exit status of the last command
+ executed in _l_i_s_t, or zero if no commands were executed.
ccaassee _w_o_r_d iinn [ [(] _p_a_t_t_e_r_n [ || _p_a_t_t_e_r_n ] ... ) _l_i_s_t ;; ] ... eessaacc
A ccaassee command first expands _w_o_r_d, and tries to match it against
- each _p_a_t_t_e_r_n in turn, using the matching rules described under
+ each _p_a_t_t_e_r_n in turn, using the matching rules described under
PPaatttteerrnn MMaattcchhiinngg below. The _w_o_r_d is expanded using tilde expan-
- sion, parameter and variable expansion, arithmetic expansion,
- command substitution, process substitution and quote removal.
+ sion, parameter and variable expansion, arithmetic expansion,
+ command substitution, process substitution and quote removal.
Each _p_a_t_t_e_r_n examined is expanded using tilde expansion, parame-
- ter and variable expansion, arithmetic expansion, command sub-
- stitution, and process substitution. If the nnooccaasseemmaattcchh shell
- option is enabled, the match is performed without regard to the
- case of alphabetic characters. When a match is found, the cor-
- responding _l_i_s_t is executed. If the ;;;; operator is used, no
- subsequent matches are attempted after the first pattern match.
- Using ;;&& in place of ;;;; causes execution to continue with the
- _l_i_s_t associated with the next set of patterns. Using ;;;;&& in
- place of ;;;; causes the shell to test the next pattern list in
- the statement, if any, and execute any associated _l_i_s_t on a suc-
- cessful match, continuing the case statement execution as if the
- pattern list had not matched. The exit status is zero if no
- pattern matches. Otherwise, it is the exit status of the last
- command executed in _l_i_s_t.
+ ter and variable expansion, arithmetic expansion, command sub-
+ stitution, process substitution, and quote removal. If the nnoo--
+ ccaasseemmaattcchh shell option is enabled, the match is performed with-
+ out regard to the case of alphabetic characters. When a match
+ is found, the corresponding _l_i_s_t is executed. If the ;;;; opera-
+ tor is used, no subsequent matches are attempted after the first
+ pattern match. Using ;;&& in place of ;;;; causes execution to con-
+ tinue with the _l_i_s_t associated with the next set of patterns.
+ Using ;;;;&& in place of ;;;; causes the shell to test the next pat-
+ tern list in the statement, if any, and execute any associated
+ _l_i_s_t on a successful match, continuing the case statement execu-
+ tion as if the pattern list had not matched. The exit status is
+ zero if no pattern matches. Otherwise, it is the exit status of
+ the last command executed in _l_i_s_t.
iiff _l_i_s_t; tthheenn _l_i_s_t; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii
- The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn
- _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in
- turn, and if its exit status is zero, the corresponding tthheenn
+ The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn
+ _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in
+ turn, and if its exit status is zero, the corresponding tthheenn
_l_i_s_t is executed and the command completes. Otherwise, the eellssee
- _l_i_s_t is executed, if present. The exit status is the exit sta-
+ _l_i_s_t is executed, if present. The exit status is the exit sta-
tus of the last command executed, or zero if no condition tested
true.
wwhhiillee _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee
uunnttiill _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee
- The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long
+ The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long
as the last command in the list _l_i_s_t_-_1 returns an exit status of
- zero. The uunnttiill command is identical to the wwhhiillee command, ex-
+ zero. The uunnttiill command is identical to the wwhhiillee command, ex-
cept that the test is negated: _l_i_s_t_-_2 is executed as long as the
last command in _l_i_s_t_-_1 returns a non-zero exit status. The exit
status of the wwhhiillee and uunnttiill commands is the exit status of the
@@ -505,32 +516,49 @@ SSHHEELLLL GGRRAAMMMMAARR
CCoopprroocceesssseess
A _c_o_p_r_o_c_e_s_s is a shell command preceded by the ccoopprroocc reserved word. A
- coprocess is executed asynchronously in a subshell, as if the command
- had been terminated with the && control operator, with a two-way pipe
+ coprocess is executed asynchronously in a subshell, as if the command
+ had been terminated with the && control operator, with a two-way pipe
established between the executing shell and the coprocess.
- The format for a coprocess is:
+ The syntax for a coprocess is:
ccoopprroocc [_N_A_M_E] _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s]
- This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the de-
- fault name is CCOOPPRROOCC. _N_A_M_E must not be supplied if _c_o_m_m_a_n_d is a _s_i_m_p_l_e
- _c_o_m_m_a_n_d (see above); otherwise, it is interpreted as the first word of
- the simple command. When the coprocess is executed, the shell creates
- an array variable (see AArrrraayyss below) named _N_A_M_E in the context of the
- executing shell. The standard output of _c_o_m_m_a_n_d is connected via a
- pipe to a file descriptor in the executing shell, and that file de-
- scriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is con-
- nected via a pipe to a file descriptor in the executing shell, and that
- file descriptor is assigned to _N_A_M_E[1]. This pipe is established be-
- fore any redirections specified by the command (see RREEDDIIRREECCTTIIOONN below).
- The file descriptors can be utilized as arguments to shell commands and
- redirections using standard word expansions. Other than those created
- to execute command and process substitutions, the file descriptors are
- not available in subshells. The process ID of the shell spawned to ex-
- ecute the coprocess is available as the value of the variable _N_A_M_E_PID.
- The wwaaiitt builtin command may be used to wait for the coprocess to ter-
- minate.
+ This creates a coprocess named _N_A_M_E. _c_o_m_m_a_n_d may be either a simple
+ command or a compound command (see above). _N_A_M_E is a shell variable
+ name. If _N_A_M_E is not supplied, the default name is CCOOPPRROOCC.
+
+ The recommended form to use for a coprocess is
+
+ ccoopprroocc _N_A_M_E { _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s]; }
+
+ This form is recommended because simple commands result in the copro-
+ cess always being named CCOOPPRROOCC, and it is simpler to use and more com-
+ plete than the other compound commands.
+
+ If _c_o_m_m_a_n_d is a compound command, _N_A_M_E is optional. The word following
+ ccoopprroocc determines whether that word is interpreted as a variable name:
+ it is interpreted as _N_A_M_E if it is not a reserved word that introduces
+ a compound command. If _c_o_m_m_a_n_d is a simple command, _N_A_M_E is not al-
+ lowed; this is to avoid confusion between _N_A_M_E and the first word of
+ the simple command.
+
+ When the coprocess is executed, the shell creates an array variable
+ (see AArrrraayyss below) named _N_A_M_E in the context of the executing shell.
+ The standard output of _c_o_m_m_a_n_d is connected via a pipe to a file de-
+ scriptor in the executing shell, and that file descriptor is assigned
+ to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is connected via a pipe to a
+ file descriptor in the executing shell, and that file descriptor is as-
+ signed to _N_A_M_E[1]. This pipe is established before any redirections
+ specified by the command (see RREEDDIIRREECCTTIIOONN below). The file descriptors
+ can be utilized as arguments to shell commands and redirections using
+ standard word expansions. Other than those created to execute command
+ and process substitutions, the file descriptors are not available in
+ subshells.
+
+ The process ID of the shell spawned to execute the coprocess is avail-
+ able as the value of the variable _N_A_M_E_PID. The wwaaiitt builtin command
+ may be used to wait for the coprocess to terminate.
Since the coprocess is created as an asynchronous command, the ccoopprroocc
command always returns success. The return status of a coprocess is
@@ -548,20 +576,20 @@ SSHHEELLLL GGRRAAMMMMAARR
parentheses are optional. The _b_o_d_y of the function is the com-
pound command _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d (see CCoommppoouunndd CCoommmmaannddss above).
That command is usually a _l_i_s_t of commands between { and }, but
- may be any command listed under CCoommppoouunndd CCoommmmaannddss above, with
- one exception: If the ffuunnccttiioonn reserved word is used, but the
- parentheses are not supplied, the braces are required. _c_o_m_-
- _p_o_u_n_d_-_c_o_m_m_a_n_d is executed whenever _f_n_a_m_e is specified as the
- name of a simple command. When in _p_o_s_i_x _m_o_d_e, _f_n_a_m_e must be a
- valid shell _n_a_m_e and may not be the name of one of the POSIX
- _s_p_e_c_i_a_l _b_u_i_l_t_i_n_s. In default mode, a function name can be any
- unquoted shell word that does not contain $$. Any redirections
- (see RREEDDIIRREECCTTIIOONN below) specified when a function is defined are
- performed when the function is executed. The exit status of a
- function definition is zero unless a syntax error occurs or a
- readonly function with the same name already exists. When exe-
- cuted, the exit status of a function is the exit status of the
- last command executed in the body. (See FFUUNNCCTTIIOONNSS below.)
+ may be any command listed under CCoommppoouunndd CCoommmmaannddss above. If the
+ ffuunnccttiioonn reserved word is used, but the parentheses are not sup-
+ plied, the braces are recommended. _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d is executed
+ whenever _f_n_a_m_e is specified as the name of a simple command.
+ When in _p_o_s_i_x _m_o_d_e, _f_n_a_m_e must be a valid shell _n_a_m_e and may not
+ be the name of one of the POSIX _s_p_e_c_i_a_l _b_u_i_l_t_i_n_s. In default
+ mode, a function name can be any unquoted shell word that does
+ not contain $$. Any redirections (see RREEDDIIRREECCTTIIOONN below) speci-
+ fied when a function is defined are performed when the function
+ is executed. The exit status of a function definition is zero
+ unless a syntax error occurs or a readonly function with the
+ same name already exists. When executed, the exit status of a
+ function is the exit status of the last command executed in the
+ body. (See FFUUNNCCTTIIOONNSS below.)
CCOOMMMMEENNTTSS
In a non-interactive shell, or an interactive shell in which the iinntteerr--
@@ -613,10 +641,11 @@ QQUUOOTTIINNGG
The special parameters ** and @@ have special meaning when in double
quotes (see PPAARRAAMMEETTEERRSS below).
- Words of the form $$'_s_t_r_i_n_g' are treated specially. The word expands to
- _s_t_r_i_n_g, with backslash-escaped characters replaced as specified by the
- ANSI C standard. Backslash escape sequences, if present, are decoded
- as follows:
+ Character sequences of the form $$'_s_t_r_i_n_g' are treated as a special
+ variant of single quotes. The sequence expands to _s_t_r_i_n_g, with back-
+ slash-escaped characters in _s_t_r_i_n_g replaced as specified by the ANSI C
+ standard. Backslash escape sequences, if present, are decoded as fol-
+ lows:
\\aa alert (bell)
\\bb backspace
\\ee
@@ -630,146 +659,147 @@ QQUUOOTTIINNGG
\\'' single quote
\\"" double quote
\\?? question mark
- \\_n_n_n the eight-bit character whose value is the octal value
+ \\_n_n_n the eight-bit character whose value is the octal value
_n_n_n (one to three octal digits)
- \\xx_H_H the eight-bit character whose value is the hexadecimal
+ \\xx_H_H the eight-bit character whose value is the hexadecimal
value _H_H (one or two hex digits)
- \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the
+ \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the
hexadecimal value _H_H_H_H (one to four hex digits)
\\UU_H_H_H_H_H_H_H_H
- the Unicode (ISO/IEC 10646) character whose value is the
+ the Unicode (ISO/IEC 10646) character whose value is the
hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits)
\\cc_x a control-_x character
- The expanded result is single-quoted, as if the dollar sign had not
+ The expanded result is single-quoted, as if the dollar sign had not
been present.
A double-quoted string preceded by a dollar sign ($$"_s_t_r_i_n_g") will cause
- the string to be translated according to the current locale. The _g_e_t_-
- _t_e_x_t infrastructure performs the message catalog lookup and transla-
- tion, using the LLCC__MMEESSSSAAGGEESS and TTEEXXTTDDOOMMAAIINN shell variables. If the
- current locale is CC or PPOOSSIIXX, or if there are no translations avail-
- able, the dollar sign is ignored. If the string is translated and re-
- placed, the replacement is double-quoted.
+ the string to be translated according to the current locale. The _g_e_t_-
+ _t_e_x_t infrastructure performs the lookup and translation, using the
+ LLCC__MMEESSSSAAGGEESS, TTEEXXTTDDOOMMAAIINNDDIIRR, and TTEEXXTTDDOOMMAAIINN shell variables. If the
+ current locale is CC or PPOOSSIIXX, if there are no translations available,
+ or if the string is not translated, the dollar sign is ignored. This
+ is a form of double quoting, so the string remains double-quoted by de-
+ fault, whether or not it is translated and replaced. If the nnooeexx--
+ ppaanndd__ttrraannssllaattiioonn option is enabled using the sshhoopptt builtin, translated
+ strings are single-quoted instead of double-quoted. See the descrip-
+ tion of sshhoopptt below under SSHHEELLLLBUILTINCCOOMMMMAANNDDSS.
PPAARRAAMMEETTEERRSS
- A _p_a_r_a_m_e_t_e_r is an entity that stores values. It can be a _n_a_m_e, a num-
+ A _p_a_r_a_m_e_t_e_r is an entity that stores values. It can be a _n_a_m_e, a num-
ber, or one of the special characters listed below under SSppeecciiaall PPaarraamm--
- eetteerrss. A _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a
- _v_a_l_u_e and zero or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the
+ eetteerrss. A _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a
+ _v_a_l_u_e and zero or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the
ddeeccllaarree builtin command (see ddeeccllaarree below in SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS).
A parameter is set if it has been assigned a value. The null string is
- a valid value. Once a variable is set, it may be unset only by using
+ a valid value. Once a variable is set, it may be unset only by using
the uunnsseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
A _v_a_r_i_a_b_l_e may be assigned to by a statement of the form
_n_a_m_e=[_v_a_l_u_e]
- If _v_a_l_u_e is not given, the variable is assigned the null string. All
- _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com-
- mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN--
+ If _v_a_l_u_e is not given, the variable is assigned the null string. All
+ _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com-
+ mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN--
SSIIOONN below). If the variable has its iinntteeggeerr attribute set, then _v_a_l_u_e
is evaluated as an arithmetic expression even if the $((...)) expansion
- is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting is not
- performed, with the exception of ""$$@@"" as explained below under SSppeecciiaall
- PPaarraammeetteerrss. Pathname expansion is not performed. Assignment state-
- ments may also appear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, eexx--
- ppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands).
- When in _p_o_s_i_x _m_o_d_e, these builtins may appear in a command after one or
- more instances of the ccoommmmaanndd builtin and retain these assignment
- statement properties.
-
- In the context where an assignment statement is assigning a value to a
+ is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting and path-
+ name expansion are not performed. Assignment statements may also ap-
+ pear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, eexxppoorrtt, rreeaaddoonnllyy, and
+ llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands). When in _p_o_s_i_x _m_o_d_e,
+ these builtins may appear in a command after one or more instances of
+ the ccoommmmaanndd builtin and retain these assignment statement properties.
+
+ In the context where an assignment statement is assigning a value to a
shell variable or array index, the += operator can be used to append to
- or add to the variable's previous value. This includes arguments to
- builtin commands such as ddeeccllaarree that accept assignment statements
+ or add to the variable's previous value. This includes arguments to
+ builtin commands such as ddeeccllaarree that accept assignment statements
(_d_e_c_l_a_r_a_t_i_o_n commands). When += is applied to a variable for which the
- _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated as an arithmetic ex-
+ iinntteeggeerr attribute has been set, _v_a_l_u_e is evaluated as an arithmetic ex-
pression and added to the variable's current value, which is also eval-
- uated. When += is applied to an array variable using compound assign-
- ment (see AArrrraayyss below), the variable's value is not unset (as it is
- when using =), and new values are appended to the array beginning at
- one greater than the array's maximum index (for indexed arrays) or
- added as additional key-value pairs in an associative array. When ap-
- plied to a string-valued variable, _v_a_l_u_e is expanded and appended to
+ uated. When += is applied to an array variable using compound assign-
+ ment (see AArrrraayyss below), the variable's value is not unset (as it is
+ when using =), and new values are appended to the array beginning at
+ one greater than the array's maximum index (for indexed arrays) or
+ added as additional key-value pairs in an associative array. When ap-
+ plied to a string-valued variable, _v_a_l_u_e is expanded and appended to
the variable's value.
A variable can be assigned the _n_a_m_e_r_e_f attribute using the --nn option to
- the ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree
- and llooccaall below) to create a _n_a_m_e_r_e_f, or a reference to another vari-
- able. This allows variables to be manipulated indirectly. Whenever
- the nameref variable is referenced, assigned to, unset, or has its at-
- tributes modified (other than using or changing the _n_a_m_e_r_e_f attribute
- itself), the operation is actually performed on the variable specified
- by the nameref variable's value. A nameref is commonly used within
+ the ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree
+ and llooccaall below) to create a _n_a_m_e_r_e_f, or a reference to another vari-
+ able. This allows variables to be manipulated indirectly. Whenever
+ the nameref variable is referenced, assigned to, unset, or has its at-
+ tributes modified (other than using or changing the _n_a_m_e_r_e_f attribute
+ itself), the operation is actually performed on the variable specified
+ by the nameref variable's value. A nameref is commonly used within
shell functions to refer to a variable whose name is passed as an argu-
- ment to the function. For instance, if a variable name is passed to a
+ ment to the function. For instance, if a variable name is passed to a
shell function as its first argument, running
declare -n ref=$1
- inside the function creates a nameref variable rreeff whose value is the
+ inside the function creates a nameref variable rreeff whose value is the
variable name passed as the first argument. References and assignments
- to rreeff, and changes to its attributes, are treated as references, as-
- signments, and attribute modifications to the variable whose name was
- passed as $$11. If the control variable in a ffoorr loop has the nameref
- attribute, the list of words can be a list of shell variables, and a
- name reference will be established for each word in the list, in turn,
+ to rreeff, and changes to its attributes, are treated as references, as-
+ signments, and attribute modifications to the variable whose name was
+ passed as $$11. If the control variable in a ffoorr loop has the nameref
+ attribute, the list of words can be a list of shell variables, and a
+ name reference will be established for each word in the list, in turn,
when the loop is executed. Array variables cannot be given the nnaammeerreeff
- attribute. However, nameref variables can reference array variables
- and subscripted array variables. Namerefs can be unset using the --nn
- option to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the
- name of a nameref variable as an argument, the variable referenced by
+ attribute. However, nameref variables can reference array variables
+ and subscripted array variables. Namerefs can be unset using the --nn
+ option to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the
+ name of a nameref variable as an argument, the variable referenced by
the nameref variable will be unset.
PPoossiittiioonnaall PPaarraammeetteerrss
- A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r is a parameter denoted by one or more digits,
+ A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r is a parameter denoted by one or more digits,
other than the single digit 0. Positional parameters are assigned from
- the shell's arguments when it is invoked, and may be reassigned using
- the sseett builtin command. Positional parameters may not be assigned to
- with assignment statements. The positional parameters are temporarily
+ the shell's arguments when it is invoked, and may be reassigned using
+ the sseett builtin command. Positional parameters may not be assigned to
+ with assignment statements. The positional parameters are temporarily
replaced when a shell function is executed (see FFUUNNCCTTIIOONNSS below).
- When a positional parameter consisting of more than a single digit is
+ When a positional parameter consisting of more than a single digit is
expanded, it must be enclosed in braces (see EEXXPPAANNSSIIOONN below).
SSppeecciiaall PPaarraammeetteerrss
- The shell treats several parameters specially. These parameters may
+ The shell treats several parameters specially. These parameters may
only be referenced; assignment to them is not allowed.
- ** Expands to the positional parameters, starting from one. When
- the expansion is not within double quotes, each positional pa-
- rameter expands to a separate word. In contexts where it is
+ ** Expands to the positional parameters, starting from one. When
+ the expansion is not within double quotes, each positional pa-
+ rameter expands to a separate word. In contexts where it is
performed, those words are subject to further word splitting and
- pathname expansion. When the expansion occurs within double
- quotes, it expands to a single word with the value of each pa-
- rameter separated by the first character of the IIFFSS special
- variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c
+ pathname expansion. When the expansion occurs within double
+ quotes, it expands to a single word with the value of each pa-
+ rameter separated by the first character of the IIFFSS special
+ variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c
is the first character of the value of the IIFFSS variable. If IIFFSS
- is unset, the parameters are separated by spaces. If IIFFSS is
+ is unset, the parameters are separated by spaces. If IIFFSS is
null, the parameters are joined without intervening separators.
- @@ Expands to the positional parameters, starting from one. In
- contexts where word splitting is performed, this expands each
- positional parameter to a separate word; if not within double
- quotes, these words are subject to word splitting. In contexts
- where word splitting is not performed, this expands to a single
- word with each positional parameter separated by a space. When
- the expansion occurs within double quotes, each parameter ex-
- pands to a separate word. That is, "$$@@" is equivalent to "$$11"
- "$$22" ... If the double-quoted expansion occurs within a word,
- the expansion of the first parameter is joined with the begin-
- ning part of the original word, and the expansion of the last
- parameter is joined with the last part of the original word.
- When there are no positional parameters, "$$@@" and $$@@ expand to
+ @@ Expands to the positional parameters, starting from one. In
+ contexts where word splitting is performed, this expands each
+ positional parameter to a separate word; if not within double
+ quotes, these words are subject to word splitting. In contexts
+ where word splitting is not performed, this expands to a single
+ word with each positional parameter separated by a space. When
+ the expansion occurs within double quotes, each parameter ex-
+ pands to a separate word. That is, "$$@@" is equivalent to "$$11"
+ "$$22" ... If the double-quoted expansion occurs within a word,
+ the expansion of the first parameter is joined with the begin-
+ ning part of the original word, and the expansion of the last
+ parameter is joined with the last part of the original word.
+ When there are no positional parameters, "$$@@" and $$@@ expand to
nothing (i.e., they are removed).
## Expands to the number of positional parameters in decimal.
- ?? Expands to the exit status of the most recently executed fore-
+ ?? Expands to the exit status of the most recently executed fore-
ground pipeline.
- -- Expands to the current option flags as specified upon invoca-
- tion, by the sseett builtin command, or those set by the shell it-
+ -- Expands to the current option flags as specified upon invoca-
+ tion, by the sseett builtin command, or those set by the shell it-
self (such as the --ii option).
- $$ Expands to the process ID of the shell. In a () subshell, it
- expands to the process ID of the current shell, not the sub-
- shell.
+ $$ Expands to the process ID of the shell. In a subshell, it ex-
+ pands to the process ID of the current shell, not the subshell.
!! Expands to the process ID of the job most recently placed into
the background, whether executed as an asynchronous command or
using the bbgg builtin (see JJOOBB CCOONNTTRROOLL below).
@@ -1032,6 +1062,10 @@ PPAARRAAMMEETTEERRSS
tializes (seeds) the sequence of random numbers. If RRAANNDDOOMM is
unset, it loses its special properties, even if it is subse-
quently reset.
+ RREEAADDLLIINNEE__AARRGGUUMMEENNTT
+ Any numeric argument given to a readline command that was de-
+ fined using "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) when it
+ was invoked.
RREEAADDLLIINNEE__LLIINNEE
The contents of the rreeaaddlliinnee line buffer, for use with "bind -x"
(see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
@@ -1046,12 +1080,12 @@ PPAARRAAMMEETTEERRSS
RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when
no arguments are supplied.
SSEECCOONNDDSS
- Each time this parameter is referenced, the number of seconds
- since shell invocation is returned. If a value is assigned to
+ Each time this parameter is referenced, it expands to the number
+ of seconds since shell invocation. If a value is assigned to
SSEECCOONNDDSS, the value returned upon subsequent references is the
number of seconds since the assignment plus the value assigned.
The number of seconds at shell invocation and the current time
- is always determined by querying the system clock. If SSEECCOONNDDSS
+ are always determined by querying the system clock. If SSEECCOONNDDSS
is unset, it loses its special properties, even if it is subse-
quently reset.
SSHHEELLLLOOPPTTSS
@@ -1088,8 +1122,8 @@ PPAARRAAMMEETTEERRSS
value that is not one of the valid compatibility levels, the
shell prints an error message and sets the compatibility level
to the default for the current version. The valid values corre-
- spond to the compatibility levels described below under BBSSHHEELLLL--
- COMPATIBILITYMMOODDEE. For example, 4.2 and 42 are valid values
+ spond to the compatibility levels described below under SSHHEELLLL
+ CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE. For example, 4.2 and 42 are valid values
that correspond to the ccoommppaatt4422 sshhoopptt option and set the compat-
ibility level to 42. The current version is also a valid value.
BBAASSHH__EENNVV
@@ -1462,47 +1496,53 @@ PPAARRAAMMEETTEERRSS
count back from the end of the array, and an index of -1 references the
last element.
- Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}.
+ The += operator will append to an array variable when assigning using
+ the compound assignment syntax; see PPAARRAAMMEETTEERRSS above.
+
+ Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}.
The braces are required to avoid conflicts with pathname expansion. If
- _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These
- subscripts differ only when the word appears within double quotes. If
+ _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These
+ subscripts differ only when the word appears within double quotes. If
the word is double-quoted, ${_n_a_m_e[*]} expands to a single word with the
- value of each array member separated by the first character of the IIFFSS
+ value of each array member separated by the first character of the IIFFSS
special variable, and ${_n_a_m_e[@]} expands each element of _n_a_m_e to a sep-
- arate word. When there are no array members, ${_n_a_m_e[@]} expands to
- nothing. If the double-quoted expansion occurs within a word, the ex-
+ arate word. When there are no array members, ${_n_a_m_e[@]} expands to
+ nothing. If the double-quoted expansion occurs within a word, the ex-
pansion of the first parameter is joined with the beginning part of the
- original word, and the expansion of the last parameter is joined with
+ original word, and the expansion of the last parameter is joined with
the last part of the original word. This is analogous to the expansion
- of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss above).
- ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. If
+ of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss above).
+ ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. If
_s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of elements in the ar-
ray. If the _s_u_b_s_c_r_i_p_t used to reference an element of an indexed array
- evaluates to a number less than zero, it is interpreted as relative to
- one greater than the maximum index of the array, so negative indices
+ evaluates to a number less than zero, it is interpreted as relative to
+ one greater than the maximum index of the array, so negative indices
count back from the end of the array, and an index of -1 references the
last element.
Referencing an array variable without a subscript is equivalent to ref-
- erencing the array with a subscript of 0. Any reference to a variable
+ erencing the array with a subscript of 0. Any reference to a variable
using a valid subscript is legal, and bbaasshh will create an array if nec-
essary.
- An array variable is considered set if a subscript has been assigned a
+ An array variable is considered set if a subscript has been assigned a
value. The null string is a valid value.
- It is possible to obtain the keys (indices) of an array as well as the
- values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in
+ It is possible to obtain the keys (indices) of an array as well as the
+ values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in
array variable _n_a_m_e. The treatment when in double quotes is similar to
the expansion of the special parameters _@ and _* within double quotes.
The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] de-
stroys the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and asso-
- ciative arrays. Negative subscripts to indexed arrays are interpreted
- as described above. Unsetting the last element of an array variable
- does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an array, or
- uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or @@, removes the entire
- array.
+ ciative arrays. Negative subscripts to indexed arrays are interpreted
+ as described above. Unsetting the last element of an array variable
+ does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an array, re-
+ moves the entire array. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or
+ @@, behaves differently depending on whether _n_a_m_e is an indexed or asso-
+ ciative array. If _n_a_m_e is an associative array, this unsets the ele-
+ ment with subscript ** or @@. If _n_a_m_e is an indexed array, unset removes
+ all of the elements but does not remove the array itself.
When using a variable name with a subscript as an argument to a com-
mand, such as with uunnsseett, without using the word expansion syntax de-
@@ -1557,17 +1597,17 @@ EEXXPPAANNSSIIOONN
a{{d,c,b}}e expands into `ade ace abe'.
A sequence expression takes the form {{_x...._y[[...._i_n_c_r]]}}, where _x and _y are
- either integers or single characters, and _i_n_c_r, an optional increment,
- is an integer. When integers are supplied, the expression expands to
- each number between _x and _y, inclusive. Supplied integers may be pre-
- fixed with _0 to force each term to have the same width. When either _x
- or _y begins with a zero, the shell attempts to force all generated
- terms to contain the same number of digits, zero-padding where neces-
- sary. When characters are supplied, the expression expands to each
- character lexicographically between _x and _y, inclusive, using the de-
- fault C locale. Note that both _x and _y must be of the same type. When
- the increment is supplied, it is used as the difference between each
- term. The default increment is 1 or -1 as appropriate.
+ either integers or single letters, and _i_n_c_r, an optional increment, is
+ an integer. When integers are supplied, the expression expands to each
+ number between _x and _y, inclusive. Supplied integers may be prefixed
+ with _0 to force each term to have the same width. When either _x or _y
+ begins with a zero, the shell attempts to force all generated terms to
+ contain the same number of digits, zero-padding where necessary. When
+ letters are supplied, the expression expands to each character lexico-
+ graphically between _x and _y, inclusive, using the default C locale.
+ Note that both _x and _y must be of the same type (integer or letter).
+ When the increment is supplied, it is used as the difference between
+ each term. The default increment is 1 or -1 as appropriate.
Brace expansion is performed before any other expansions, and any char-
acters special to other expansions are preserved in the result. It is
@@ -1699,12 +1739,12 @@ EEXXPPAANNSSIIOONN
${_p_a_r_a_m_e_t_e_r::_o_f_f_s_e_t::_l_e_n_g_t_h}
SSuubbssttrriinngg EExxppaannssiioonn. Expands to up to _l_e_n_g_t_h characters of the
value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_-
- _s_e_t. If _p_a_r_a_m_e_t_e_r is @@, an indexed array subscripted by @@ or **,
- or an associative array name, the results differ as described
- below. If _l_e_n_g_t_h is omitted, expands to the substring of the
- value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_s_e_t
- and extending to the end of the value. _l_e_n_g_t_h and _o_f_f_s_e_t are
- arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below).
+ _s_e_t. If _p_a_r_a_m_e_t_e_r is @@ or **, an indexed array subscripted by @@
+ or **, or an associative array name, the results differ as de-
+ scribed below. If _l_e_n_g_t_h is omitted, expands to the substring
+ of the value of _p_a_r_a_m_e_t_e_r starting at the character specified by
+ _o_f_f_s_e_t and extending to the end of the value. _l_e_n_g_t_h and _o_f_f_s_e_t
+ are arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below).
If _o_f_f_s_e_t evaluates to a number less than zero, the value is
used as an offset in characters from the end of the value of _p_a_-
@@ -1715,51 +1755,52 @@ EEXXPPAANNSSIIOONN
that a negative offset must be separated from the colon by at
least one space to avoid being confused with the ::-- expansion.
- If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h positional parameters
- beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative to one
- greater than the greatest positional parameter, so an offset of
- -1 evaluates to the last positional parameter. It is an expan-
- sion error if _l_e_n_g_t_h evaluates to a number less than zero.
+ If _p_a_r_a_m_e_t_e_r is @@ or **, the result is _l_e_n_g_t_h positional parame-
+ ters beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative
+ to one greater than the greatest positional parameter, so an
+ offset of -1 evaluates to the last positional parameter. It is
+ an expansion error if _l_e_n_g_t_h evaluates to a number less than
+ zero.
If _p_a_r_a_m_e_t_e_r is an indexed array name subscripted by @ or *, the
- result is the _l_e_n_g_t_h members of the array beginning with ${_p_a_-
- _r_a_m_e_t_e_r[_o_f_f_s_e_t]}. A negative _o_f_f_s_e_t is taken relative to one
+ result is the _l_e_n_g_t_h members of the array beginning with ${_p_a_-
+ _r_a_m_e_t_e_r[_o_f_f_s_e_t]}. A negative _o_f_f_s_e_t is taken relative to one
greater than the maximum index of the specified array. It is an
expansion error if _l_e_n_g_t_h evaluates to a number less than zero.
Substring expansion applied to an associative array produces un-
defined results.
- Substring indexing is zero-based unless the positional parame-
- ters are used, in which case the indexing starts at 1 by de-
- fault. If _o_f_f_s_e_t is 0, and the positional parameters are used,
+ Substring indexing is zero-based unless the positional parame-
+ ters are used, in which case the indexing starts at 1 by de-
+ fault. If _o_f_f_s_e_t is 0, and the positional parameters are used,
$$00 is prefixed to the list.
${!!_p_r_e_f_i_x**}
${!!_p_r_e_f_i_x@@}
- NNaammeess mmaattcchhiinngg pprreeffiixx. Expands to the names of variables whose
+ NNaammeess mmaattcchhiinngg pprreeffiixx. Expands to the names of variables whose
names begin with _p_r_e_f_i_x, separated by the first character of the
- IIFFSS special variable. When _@ is used and the expansion appears
- within double quotes, each variable name expands to a separate
+ IIFFSS special variable. When _@ is used and the expansion appears
+ within double quotes, each variable name expands to a separate
word.
${!!_n_a_m_e[_@]}
${!!_n_a_m_e[_*]}
- LLiisstt ooff aarrrraayy kkeeyyss. If _n_a_m_e is an array variable, expands to
- the list of array indices (keys) assigned in _n_a_m_e. If _n_a_m_e is
- not an array, expands to 0 if _n_a_m_e is set and null otherwise.
- When _@ is used and the expansion appears within double quotes,
+ LLiisstt ooff aarrrraayy kkeeyyss. If _n_a_m_e is an array variable, expands to
+ the list of array indices (keys) assigned in _n_a_m_e. If _n_a_m_e is
+ not an array, expands to 0 if _n_a_m_e is set and null otherwise.
+ When _@ is used and the expansion appears within double quotes,
each key expands to a separate word.
${##_p_a_r_a_m_e_t_e_r}
- PPaarraammeetteerr lleennggtthh. The length in characters of the value of _p_a_-
- _r_a_m_e_t_e_r is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value sub-
- stituted is the number of positional parameters. If _p_a_r_a_m_e_t_e_r
+ PPaarraammeetteerr lleennggtthh. The length in characters of the value of _p_a_-
+ _r_a_m_e_t_e_r is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value sub-
+ stituted is the number of positional parameters. If _p_a_r_a_m_e_t_e_r
is an array name subscripted by ** or @@, the value substituted is
the number of elements in the array. If _p_a_r_a_m_e_t_e_r is an indexed
- array name subscripted by a negative number, that number is in-
- terpreted as relative to one greater than the maximum index of
- _p_a_r_a_m_e_t_e_r, so negative indices count back from the end of the
+ array name subscripted by a negative number, that number is in-
+ terpreted as relative to one greater than the maximum index of
+ _p_a_r_a_m_e_t_e_r, so negative indices count back from the end of the
array, and an index of -1 references the last element.
${_p_a_r_a_m_e_t_e_r##_w_o_r_d}
@@ -1767,15 +1808,15 @@ EEXXPPAANNSSIIOONN
RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce
a pattern just as in pathname expansion, and matched against the
expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt--
- tteerrnn MMaattcchhiinngg below. If the pattern matches the beginning of
- the value of _p_a_r_a_m_e_t_e_r, then the result of the expansion is the
- expanded value of _p_a_r_a_m_e_t_e_r with the shortest matching pattern
- (the ``##'' case) or the longest matching pattern (the ``####''
- case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal op-
+ tteerrnn MMaattcchhiinngg below. If the pattern matches the beginning of
+ the value of _p_a_r_a_m_e_t_e_r, then the result of the expansion is the
+ expanded value of _p_a_r_a_m_e_t_e_r with the shortest matching pattern
+ (the ``##'' case) or the longest matching pattern (the ``####''
+ case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal op-
eration is applied to each positional parameter in turn, and the
expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is an array vari-
- able subscripted with @@ or **, the pattern removal operation is
- applied to each member of the array in turn, and the expansion
+ able subscripted with @@ or **, the pattern removal operation is
+ applied to each member of the array in turn, and the expansion
is the resultant list.
${_p_a_r_a_m_e_t_e_r%%_w_o_r_d}
@@ -1783,100 +1824,132 @@ EEXXPPAANNSSIIOONN
RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce
a pattern just as in pathname expansion, and matched against the
expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt--
- tteerrnn MMaattcchhiinngg below. If the pattern matches a trailing portion
- of the expanded value of _p_a_r_a_m_e_t_e_r, then the result of the ex-
- pansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest
- matching pattern (the ``%%'' case) or the longest matching pat-
- tern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the
- pattern removal operation is applied to each positional parame-
+ tteerrnn MMaattcchhiinngg below. If the pattern matches a trailing portion
+ of the expanded value of _p_a_r_a_m_e_t_e_r, then the result of the ex-
+ pansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest
+ matching pattern (the ``%%'' case) or the longest matching pat-
+ tern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the
+ pattern removal operation is applied to each positional parame-
ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_-
- _e_t_e_r is an array variable subscripted with @@ or **, the pattern
- removal operation is applied to each member of the array in
+ _e_t_e_r is an array variable subscripted with @@ or **, the pattern
+ removal operation is applied to each member of the array in
turn, and the expansion is the resultant list.
${_p_a_r_a_m_e_t_e_r//_p_a_t_t_e_r_n//_s_t_r_i_n_g}
+ ${_p_a_r_a_m_e_t_e_r////_p_a_t_t_e_r_n//_s_t_r_i_n_g}
+ ${_p_a_r_a_m_e_t_e_r//##_p_a_t_t_e_r_n//_s_t_r_i_n_g}
+ ${_p_a_r_a_m_e_t_e_r//%%_p_a_t_t_e_r_n//_s_t_r_i_n_g}
PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pat-
- tern just as in pathname expansion, _P_a_r_a_m_e_t_e_r is expanded and
- the longest match of _p_a_t_t_e_r_n against its value is replaced with
- _s_t_r_i_n_g. The match is performed using the rules described under
- PPaatttteerrnn MMaattcchhiinngg below. If _p_a_t_t_e_r_n begins with //, all matches
- of _p_a_t_t_e_r_n are replaced with _s_t_r_i_n_g. Normally only the first
- match is replaced. If _p_a_t_t_e_r_n begins with ##, it must match at
- the beginning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n
- begins with %%, it must match at the end of the expanded value of
- _p_a_r_a_m_e_t_e_r. If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted
- and the // following _p_a_t_t_e_r_n may be omitted. If the nnooccaasseemmaattcchh
- shell option is enabled, the match is performed without regard
- to the case of alphabetic characters. If _p_a_r_a_m_e_t_e_r is @@ or **,
- the substitution operation is applied to each positional parame-
- ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_-
- _e_t_e_r is an array variable subscripted with @@ or **, the substitu-
- tion operation is applied to each member of the array in turn,
- and the expansion is the resultant list.
+ tern just as in pathname expansion. _P_a_r_a_m_e_t_e_r is expanded and
+ the longest match of _p_a_t_t_e_r_n against its value is replaced with
+ _s_t_r_i_n_g. _s_t_r_i_n_g undergoes tilde expansion, parameter and vari-
+ able expansion, arithmetic expansion, command and process sub-
+ stitution, and quote removal. The match is performed using the
+ rules described under PPaatttteerrnn MMaattcchhiinngg below. In the first form
+ above, only the first match is replaced. If there are two
+ slashes separating _p_a_r_a_m_e_t_e_r and _p_a_t_t_e_r_n (the second form
+ above), all matches of _p_a_t_t_e_r_n are replaced with _s_t_r_i_n_g. If
+ _p_a_t_t_e_r_n is preceded by ## (the third form above), it must match
+ at the beginning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n
+ is preceded by %% (the fourth form above), it must match at the
+ end of the expanded value of _p_a_r_a_m_e_t_e_r. If the expansion of
+ _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted. If _s_t_r_i_n_g is
+ null, matches of _p_a_t_t_e_r_n are deleted and the // following _p_a_t_t_e_r_n
+ may be omitted.
+
+ If the ppaattssuubb__rreeppllaacceemmeenntt shell option is enabled using sshhoopptt,
+ any unquoted instances of && in _s_t_r_i_n_g are replaced with the
+ matching portion of _p_a_t_t_e_r_n.
+
+ Quoting any part of _s_t_r_i_n_g inhibits replacement in the expansion
+ of the quoted portion, including replacement strings stored in
+ shell variables. Backslash will escape && in _s_t_r_i_n_g; the back-
+ slash is removed in order to permit a literal && in the replace-
+ ment string. Backslash can also be used to escape a backslash;
+ \\\\ results in a literal backslash in the replacement. Users
+ should take care if _s_t_r_i_n_g is double-quoted to avoid unwanted
+ interactions between the backslash and double-quoting, since
+ backslash has special meaning within double quotes. Pattern
+ substitution performs the check for unquoted && after expanding
+ _s_t_r_i_n_g; shell programmers should quote any occurrences of && they
+ want to be taken literally in the replacement and ensure any in-
+ stances of && they want to be replaced are unquoted.
+
+ If the nnooccaasseemmaattcchh shell option is enabled, the match is per-
+ formed without regard to the case of alphabetic characters. If
+ _p_a_r_a_m_e_t_e_r is @@ or **, the substitution operation is applied to
+ each positional parameter in turn, and the expansion is the re-
+ sultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted
+ with @@ or **, the substitution operation is applied to each mem-
+ ber of the array in turn, and the expansion is the resultant
+ list.
${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n}
${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n}
${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n}
${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n}
- CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha-
- betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro-
+ CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha-
+ betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro-
duce a pattern just as in pathname expansion. Each character in
- the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and,
- if it matches the pattern, its case is converted. The pattern
- should not attempt to match more than one character. The ^^ op-
+ the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and,
+ if it matches the pattern, its case is converted. The pattern
+ should not attempt to match more than one character. The ^^ op-
erator converts lowercase letters matching _p_a_t_t_e_r_n to uppercase;
the ,, operator converts matching uppercase letters to lowercase.
- The ^^^^ and ,,,, expansions convert each matched character in the
- expanded value; the ^^ and ,, expansions match and convert only
- the first character in the expanded value. If _p_a_t_t_e_r_n is omit-
- ted, it is treated like a ??, which matches every character. If
- _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is applied
- to each positional parameter in turn, and the expansion is the
- resultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted
- with @@ or **, the case modification operation is applied to each
- member of the array in turn, and the expansion is the resultant
+ The ^^^^ and ,,,, expansions convert each matched character in the
+ expanded value; the ^^ and ,, expansions match and convert only
+ the first character in the expanded value. If _p_a_t_t_e_r_n is omit-
+ ted, it is treated like a ??, which matches every character. If
+ _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is applied
+ to each positional parameter in turn, and the expansion is the
+ resultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted
+ with @@ or **, the case modification operation is applied to each
+ member of the array in turn, and the expansion is the resultant
list.
${_p_a_r_a_m_e_t_e_r@@_o_p_e_r_a_t_o_r}
PPaarraammeetteerr ttrraannssffoorrmmaattiioonn. The expansion is either a transforma-
- tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r
- itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a
+ tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r
+ itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a
single letter:
- UU The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
- with lowercase alphabetic characters converted to upper-
+ UU The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ with lowercase alphabetic characters converted to upper-
case.
- uu The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ uu The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
with the first character converted to uppercase, if it is
alphabetic.
- LL The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
- with uppercase alphabetic characters converted to lower-
+ LL The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ with uppercase alphabetic characters converted to lower-
case.
- QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
quoted in a format that can be reused as input.
- EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
- with backslash escape sequences expanded as with the
+ EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ with backslash escape sequences expanded as with the
$$''......'' quoting mechanism.
PP The expansion is a string that is the result of expanding
the value of _p_a_r_a_m_e_t_e_r as if it were a prompt string (see
PPRROOMMPPTTIINNGG below).
- AA The expansion is a string in the form of an assignment
- statement or ddeeccllaarree command that, if evaluated, will
+ AA The expansion is a string in the form of an assignment
+ statement or ddeeccllaarree command that, if evaluated, will
recreate _p_a_r_a_m_e_t_e_r with its attributes and value.
KK Produces a possibly-quoted version of the value of _p_a_r_a_m_-
_e_t_e_r, except that it prints the values of indexed and as-
- sociative arrays as a sequence of quoted key-value pairs
+ sociative arrays as a sequence of quoted key-value pairs
(see AArrrraayyss above).
- aa The expansion is a string consisting of flag values rep-
+ aa The expansion is a string consisting of flag values rep-
resenting _p_a_r_a_m_e_t_e_r's attributes.
+ kk Like the K transformation, but expands the keys and val-
+ ues of indexed and associative arrays to separate words
+ after word splitting.
- If _p_a_r_a_m_e_t_e_r is @@ or **, the operation is applied to each posi-
- tional parameter in turn, and the expansion is the resultant
- list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or
+ If _p_a_r_a_m_e_t_e_r is @@ or **, the operation is applied to each posi-
+ tional parameter in turn, and the expansion is the resultant
+ list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or
**, the operation is applied to each member of the array in turn,
and the expansion is the resultant list.
- The result of the expansion is subject to word splitting and
+ The result of the expansion is subject to word splitting and
pathname expansion as described below.
CCoommmmaanndd SSuubbssttiittuuttiioonn
@@ -1890,108 +1963,111 @@ EEXXPPAANNSSIIOONN
BBaasshh performs the expansion by executing _c_o_m_m_a_n_d in a subshell environ-
ment and replacing the command substitution with the standard output of
the command, with any trailing newlines deleted. Embedded newlines are
- not deleted, but they may be removed during word splitting. The com-
- mand substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but
+ not deleted, but they may be removed during word splitting. The com-
+ mand substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but
faster $$((<< _f_i_l_e)).
- When the old-style backquote form of substitution is used, backslash
- retains its literal meaning except when followed by $$, ``, or \\. The
+ When the old-style backquote form of substitution is used, backslash
+ retains its literal meaning except when followed by $$, ``, or \\. The
first backquote not preceded by a backslash terminates the command sub-
- stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the
+ stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the
parentheses make up the command; none are treated specially.
Command substitutions may be nested. To nest when using the backquoted
form, escape the inner backquotes with backslashes.
- If the substitution appears within double quotes, word splitting and
+ If the substitution appears within double quotes, word splitting and
pathname expansion are not performed on the results.
AArriitthhmmeettiicc EExxppaannssiioonn
- Arithmetic expansion allows the evaluation of an arithmetic expression
- and the substitution of the result. The format for arithmetic expan-
+ Arithmetic expansion allows the evaluation of an arithmetic expression
+ and the substitution of the result. The format for arithmetic expan-
sion is:
$$((((_e_x_p_r_e_s_s_i_o_n))))
- The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a
- double quote inside the parentheses is not treated specially. All to-
- kens in the expression undergo parameter and variable expansion, com-
- mand substitution, and quote removal. The result is treated as the
- arithmetic expression to be evaluated. Arithmetic expansions may be
- nested.
+ The _e_x_p_r_e_s_s_i_o_n undergoes the same expansions as if it were within dou-
+ ble quotes, but double quote characters in _e_x_p_r_e_s_s_i_o_n are not treated
+ specially and are removed. All tokens in the expression undergo param-
+ eter and variable expansion, command substitution, and quote removal.
+ The result is treated as the arithmetic expression to be evaluated.
+ Arithmetic expansions may be nested.
- The evaluation is performed according to the rules listed below under
+ The evaluation is performed according to the rules listed below under
AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If _e_x_p_r_e_s_s_i_o_n is invalid, bbaasshh prints a message
indicating failure and no substitution occurs.
PPrroocceessss SSuubbssttiittuuttiioonn
- _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred
- to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The
- process _l_i_s_t is run asynchronously, and its input or output appears as
+ _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred
+ to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The
+ process _l_i_s_t is run asynchronously, and its input or output appears as
a filename. This filename is passed as an argument to the current com-
- mand as the result of the expansion. If the >>((_l_i_s_t)) form is used,
- writing to the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form
- is used, the file passed as an argument should be read to obtain the
+ mand as the result of the expansion. If the >>((_l_i_s_t)) form is used,
+ writing to the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form
+ is used, the file passed as an argument should be read to obtain the
output of _l_i_s_t. Process substitution is supported on systems that sup-
port named pipes (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files.
- When available, process substitution is performed simultaneously with
- parameter and variable expansion, command substitution, and arithmetic
+ When available, process substitution is performed simultaneously with
+ parameter and variable expansion, command substitution, and arithmetic
expansion.
WWoorrdd SSpplliittttiinngg
- The shell scans the results of parameter expansion, command substitu-
- tion, and arithmetic expansion that did not occur within double quotes
+ The shell scans the results of parameter expansion, command substitu-
+ tion, and arithmetic expansion that did not occur within double quotes
for _w_o_r_d _s_p_l_i_t_t_i_n_g.
- The shell treats each character of IIFFSS as a delimiter, and splits the
- results of the other expansions into words using these characters as
- field terminators. If IIFFSS is unset, or its value is exactly
- <<ssppaaccee>><<ttaabb>><<nneewwlliinnee>>, the default, then sequences of <<ssppaaccee>>, <<ttaabb>>,
- and <<nneewwlliinnee>> at the beginning and end of the results of the previous
- expansions are ignored, and any sequence of IIFFSS characters not at the
- beginning or end serves to delimit words. If IIFFSS has a value other
- than the default, then sequences of the whitespace characters ssppaaccee,
- ttaabb, and nneewwlliinnee are ignored at the beginning and end of the word, as
- long as the whitespace character is in the value of IIFFSS (an IIFFSS white-
- space character). Any character in IIFFSS that is not IIFFSS whitespace,
+ The shell treats each character of IIFFSS as a delimiter, and splits the
+ results of the other expansions into words using these characters as
+ field terminators. If IIFFSS is unset, or its value is exactly
+ <<ssppaaccee>><<ttaabb>><<nneewwlliinnee>>, the default, then sequences of <<ssppaaccee>>, <<ttaabb>>,
+ and <<nneewwlliinnee>> at the beginning and end of the results of the previous
+ expansions are ignored, and any sequence of IIFFSS characters not at the
+ beginning or end serves to delimit words. If IIFFSS has a value other
+ than the default, then sequences of the whitespace characters ssppaaccee,
+ ttaabb, and nneewwlliinnee are ignored at the beginning and end of the word, as
+ long as the whitespace character is in the value of IIFFSS (an IIFFSS white-
+ space character). Any character in IIFFSS that is not IIFFSS whitespace,
along with any adjacent IIFFSS whitespace characters, delimits a field. A
- sequence of IIFFSS whitespace characters is also treated as a delimiter.
+ sequence of IIFFSS whitespace characters is also treated as a delimiter.
If the value of IIFFSS is null, no word splitting occurs.
- Explicit null arguments ("""" or '''') are retained and passed to commands
+ Explicit null arguments ("""" or '''') are retained and passed to commands
as empty strings. Unquoted implicit null arguments, resulting from the
expansion of parameters that have no values, are removed. If a parame-
ter with no value is expanded within double quotes, a null argument re-
sults and is retained and passed to a command as an empty string. When
- a quoted null argument appears as part of a word whose expansion is
+ a quoted null argument appears as part of a word whose expansion is
non-null, the null argument is removed. That is, the word -d'' becomes
-d after word splitting and null argument removal.
Note that if no expansion occurs, no splitting is performed.
PPaatthhnnaammee EExxppaannssiioonn
- After word splitting, unless the --ff option has been set, bbaasshh scans
- each word for the characters **, ??, and [[. If one of these characters
+ After word splitting, unless the --ff option has been set, bbaasshh scans
+ each word for the characters **, ??, and [[. If one of these characters
appears, and is not quoted, then the word is regarded as a _p_a_t_t_e_r_n, and
- replaced with an alphabetically sorted list of filenames matching the
- pattern (see PPaatttteerrnn MMaattcchhiinngg below). If no matching filenames are
- found, and the shell option nnuullllgglloobb is not enabled, the word is left
- unchanged. If the nnuullllgglloobb option is set, and no matches are found,
- the word is removed. If the ffaaiillgglloobb shell option is set, and no
- matches are found, an error message is printed and the command is not
+ replaced with an alphabetically sorted list of filenames matching the
+ pattern (see PPaatttteerrnn MMaattcchhiinngg below). If no matching filenames are
+ found, and the shell option nnuullllgglloobb is not enabled, the word is left
+ unchanged. If the nnuullllgglloobb option is set, and no matches are found,
+ the word is removed. If the ffaaiillgglloobb shell option is set, and no
+ matches are found, an error message is printed and the command is not
executed. If the shell option nnooccaasseegglloobb is enabled, the match is per-
- formed without regard to the case of alphabetic characters. When a
- pattern is used for pathname expansion, the character ````..'''' at the
- start of a name or immediately following a slash must be matched ex-
- plicitly, unless the shell option ddoottgglloobb is set. The filenames ````..''''
- and ````....'''' must always be matched explicitly, even if ddoottgglloobb is set.
- In other cases, the ````..'''' character is not treated specially. When
- matching a pathname, the slash character must always be matched explic-
- itly by a slash in the pattern, but in other matching contexts it can
- be matched by a special pattern character as described below under PPaatt--
- tteerrnn MMaattcchhiinngg. See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN
- CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiillgglloobb, and
+ formed without regard to the case of alphabetic characters. When a
+ pattern is used for pathname expansion, the character ````..'''' at the
+ start of a name or immediately following a slash must be matched ex-
+ plicitly, unless the shell option ddoottgglloobb is set. In order to match
+ the filenames ````..'''' and ````....'''', the pattern must begin with ``.'' (for
+ example, ``.?''), even if ddoottgglloobb is set. If the gglloobbsskkiippddoottss shell
+ option is enabled, the filenames ````..'''' and ````....'''' are never matched,
+ even if the pattern begins with a ````..''''. When not matching pathnames,
+ the ````..'''' character is not treated specially. When matching a path-
+ name, the slash character must always be matched explicitly by a slash
+ in the pattern, but in other matching contexts it can be matched by a
+ special pattern character as described below under PPaatttteerrnn MMaattcchhiinngg.
+ See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a
+ description of the nnooccaasseegglloobb, nnuullllgglloobb, gglloobbsskkiippddoottss, ffaaiillgglloobb, and
ddoottgglloobb shell options.
The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file
@@ -2033,38 +2109,39 @@ EEXXPPAANNSSIIOONN
quence and character set, is matched. If the first char-
acter following the [[ is a !! or a ^^ then any character
not enclosed is matched. The sorting order of characters
- in range expressions is determined by the current locale
- and the values of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell vari-
- ables, if set. To obtain the traditional interpretation
- of range expressions, where [[aa--dd]] is equivalent to
- [[aabbccdd]], set value of the LLCC__AALLLL shell variable to CC, or
- enable the gglloobbaasscciiiirraannggeess shell option. A -- may be
- matched by including it as the first or last character in
- the set. A ]] may be matched by including it as the first
- character in the set.
-
- Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using
+ in range expressions, and the characters included in the
+ range, are determined by the current locale and the val-
+ ues of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell variables, if set.
+ To obtain the traditional interpretation of range expres-
+ sions, where [[aa--dd]] is equivalent to [[aabbccdd]], set value of
+ the LLCC__AALLLL shell variable to CC, or enable the gglloobbaassccii--
+ iirraannggeess shell option. A -- may be matched by including it
+ as the first or last character in the set. A ]] may be
+ matched by including it as the first character in the
+ set.
+
+ Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified using
the syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the following
classes defined in the POSIX standard:
- aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt
+ aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt
ppuunncctt ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt
A character class matches any character belonging to that
class. The wwoorrdd character class matches letters, digits,
and the character _.
Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified us-
- ing the syntax [[==_c==]], which matches all characters with
- the same collation weight (as defined by the current lo-
+ ing the syntax [[==_c==]], which matches all characters with
+ the same collation weight (as defined by the current lo-
cale) as the character _c.
Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collat-
ing symbol _s_y_m_b_o_l.
- If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, several
- extended pattern matching operators are recognized. In the following
- description, a _p_a_t_t_e_r_n_-_l_i_s_t is a list of one or more patterns separated
- by a ||. Composite patterns may be formed using one or more of the fol-
- lowing sub-patterns:
+ If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, the
+ shell recognizes several extended pattern matching operators. In the
+ following description, a _p_a_t_t_e_r_n_-_l_i_s_t is a list of one or more patterns
+ separated by a ||. Composite patterns may be formed using one or more
+ of the following sub-patterns:
??((_p_a_t_t_e_r_n_-_l_i_s_t))
Matches zero or one occurrence of the given patterns
@@ -2077,35 +2154,50 @@ EEXXPPAANNSSIIOONN
!!((_p_a_t_t_e_r_n_-_l_i_s_t))
Matches anything except one of the given patterns
+ Theeexxttgglloobb option changes the behavior of the parser, since the paren-
+ theses are normally treated as operators with syntactic meaning. To
+ ensure that extended matching patterns are parsed correctly, make sure
+ that eexxttgglloobb is enabled before parsing constructs containing the pat-
+ terns, including shell functions and command substitutions.
+
+ When matching filenames, the ddoottgglloobb shell option determines the set of
+ filenames that are tested: when ddoottgglloobb is enabled, the set of file-
+ names includes all files beginning with ``.'', but ``.'' and ``..''
+ must be matched by a pattern or sub-pattern that begins with a dot;
+ when it is disabled, the set does not include any filenames beginning
+ with ``.'' unless the pattern or sub-pattern begins with a ``.''. As
+ above, ``.'' only has a special meaning when matching filenames.
+
Complicated extended pattern matching against long strings is slow, es-
pecially when the patterns contain alternations and the strings contain
- multiple matches. Using separate matches against shorter strings, or
+ multiple matches. Using separate matches against shorter strings, or
using arrays of strings instead of a single long string, may be faster.
QQuuoottee RReemmoovvaall
After the preceding expansions, all unquoted occurrences of the charac-
- ters \\, '', and "" that did not result from one of the above expansions
+ ters \\, '', and "" that did not result from one of the above expansions
are removed.
RREEDDIIRREECCTTIIOONN
- Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d
- using a special notation interpreted by the shell. Redirection allows
- commands' file handles to be duplicated, opened, closed, made to refer
+ Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d
+ using a special notation interpreted by the shell. _R_e_d_i_r_e_c_t_i_o_n allows
+ commands' file handles to be duplicated, opened, closed, made to refer
to different files, and can change the files the command reads from and
- writes to. Redirection may also be used to modify file handles in the
- current shell execution environment. The following redirection opera-
+ writes to. Redirection may also be used to modify file handles in the
+ current shell execution environment. The following redirection opera-
tors may precede or appear anywhere within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may fol-
- low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear,
+ low a _c_o_m_m_a_n_d. Redirections are processed in the order they appear,
from left to right.
- Each redirection that may be preceded by a file descriptor number may
+ Each redirection that may be preceded by a file descriptor number may
instead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for
each redirection operator except >&- and <&-, the shell will allocate a
- file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e.
- If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines
- the file descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirect-
- ion persists beyond the scope of the command, allowing the shell pro-
- grammer to manage the file descriptor himself.
+ file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e.
+ If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines
+ the file descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirect-
+ ion persists beyond the scope of the command, allowing the shell pro-
+ grammer to manage the file descriptor's lifetime manually. The
+ vvaarrrreeddiirr__cclloossee shell option manages this behavior.
In the following descriptions, if the file descriptor number is omit-
ted, and the first character of the redirection operator is <<, the re-
@@ -2344,87 +2436,95 @@ AALLIIAASSEESS
the uunnaalliiaass command.
There is no mechanism for using arguments in the replacement text. If
- arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS
- below).
+ arguments are needed, use a shell function (see FFUUNNCCTTIIOONNSS below).
- Aliases are not expanded when the shell is not interactive, unless the
- eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of
+ Aliases are not expanded when the shell is not interactive, unless the
+ eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of
sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
- The rules concerning the definition and use of aliases are somewhat
- confusing. BBaasshh always reads at least one complete line of input, and
- all lines that make up a compound command, before executing any of the
- commands on that line or the compound command. Aliases are expanded
- when a command is read, not when it is executed. Therefore, an alias
- definition appearing on the same line as another command does not take
- effect until the next line of input is read. The commands following
- the alias definition on that line are not affected by the new alias.
- This behavior is also an issue when functions are executed. Aliases
- are expanded when a function definition is read, not when the function
- is executed, because a function definition is itself a command. As a
- consequence, aliases defined in a function are not available until af-
- ter that function is executed. To be safe, always put alias defini-
+ The rules concerning the definition and use of aliases are somewhat
+ confusing. BBaasshh always reads at least one complete line of input, and
+ all lines that make up a compound command, before executing any of the
+ commands on that line or the compound command. Aliases are expanded
+ when a command is read, not when it is executed. Therefore, an alias
+ definition appearing on the same line as another command does not take
+ effect until the next line of input is read. The commands following
+ the alias definition on that line are not affected by the new alias.
+ This behavior is also an issue when functions are executed. Aliases
+ are expanded when a function definition is read, not when the function
+ is executed, because a function definition is itself a command. As a
+ consequence, aliases defined in a function are not available until af-
+ ter that function is executed. To be safe, always put alias defini-
tions on a separate line, and do not use aalliiaass in compound commands.
For almost every purpose, aliases are superseded by shell functions.
FFUUNNCCTTIIOONNSS
- A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR,
- stores a series of commands for later execution. When the name of a
- shell function is used as a simple command name, the list of commands
+ A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR,
+ stores a series of commands for later execution. When the name of a
+ shell function is used as a simple command name, the list of commands
associated with that function name is executed. Functions are executed
- in the context of the current shell; no new process is created to in-
- terpret them (contrast this with the execution of a shell script).
- When a function is executed, the arguments to the function become the
+ in the context of the current shell; no new process is created to in-
+ terpret them (contrast this with the execution of a shell script).
+ When a function is executed, the arguments to the function become the
positional parameters during its execution. The special parameter ## is
- updated to reflect the change. Special parameter 00 is unchanged. The
- first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func-
+ updated to reflect the change. Special parameter 00 is unchanged. The
+ first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func-
tion while the function is executing.
- All other aspects of the shell execution environment are identical be-
- tween a function and its caller with these exceptions: the DDEEBBUUGG and
- RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL
- BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been
- given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin
- below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett
- builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN
- traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell
+ All other aspects of the shell execution environment are identical be-
+ tween a function and its caller with these exceptions: the DDEEBBUUGG and
+ RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL
+ BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been
+ given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin
+ below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett
+ builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN
+ traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell
option has been enabled.
- Variables local to the function may be declared with the llooccaall builtin
- command. Ordinarily, variables and their values are shared between the
- function and its caller. If a variable is declared llooccaall, the vari-
- able's visible scope is restricted to that function and its children
- (including the functions it calls). Local variables "shadow" variables
- with the same name declared at previous scopes. For instance, a local
- variable declared in a function hides a global variable of the same
- name: references and assignments refer to the local variable, leaving
- the global variable unmodified. When the function returns, the global
- variable is once again visible.
-
- The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility
- within functions. With dynamic scoping, visible variables and their
- values are a result of the sequence of function calls that caused exe-
- cution to reach the current function. The value of a variable that a
- function sees depends on its value within its caller, if any, whether
- that caller is the "global" scope or another shell function. This is
- also the value that a local variable declaration "shadows", and the
+ Variables local to the function may be declared with the llooccaall builtin
+ command (_l_o_c_a_l _v_a_r_i_a_b_l_e_s). Ordinarily, variables and their values are
+ shared between the function and its caller. If a variable is declared
+ llooccaall, the variable's visible scope is restricted to that function and
+ its children (including the functions it calls).
+
+ In the following description, the _c_u_r_r_e_n_t _s_c_o_p_e is a currently- execut-
+ ing function. Previous scopes consist of that function's caller and so
+ on, back to the "global" scope, where the shell is not executing any
+ shell function. Consequently, a local variable at the current scope is
+ a variable declared using the llooccaall or ddeeccllaarree builtins in the function
+ that is currently executing.
+
+ Local variables "shadow" variables with the same name declared at pre-
+ vious scopes. For instance, a local variable declared in a function
+ hides a global variable of the same name: references and assignments
+ refer to the local variable, leaving the global variable unmodified.
+ When the function returns, the global variable is once again visible.
+
+ The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility
+ within functions. With dynamic scoping, visible variables and their
+ values are a result of the sequence of function calls that caused exe-
+ cution to reach the current function. The value of a variable that a
+ function sees depends on its value within its caller, if any, whether
+ that caller is the "global" scope or another shell function. This is
+ also the value that a local variable declaration "shadows", and the
value that is restored when the function returns.
- For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1,
- and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from
+ For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1,
+ and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from
within _f_u_n_c_2 will resolve to the local variable _v_a_r from _f_u_n_c_1, shadow-
ing any global variable named _v_a_r.
The uunnsseett builtin also acts using the same dynamic scope: if a variable
is local to the current scope, uunnsseett will unset it; otherwise the unset
- will refer to the variable found in any calling scope as described
- above. If a variable at the current local scope is unset, it will re-
- main so until it is reset in that scope or until the function returns.
- Once the function returns, any instance of the variable at a previous
- scope will become visible. If the unset acts on a variable at a previ-
- ous scope, any instance of a variable with that name that had been
- shadowed will become visible.
+ will refer to the variable found in any calling scope as described
+ above. If a variable at the current local scope is unset, it will re-
+ main so (appearing as unset) until it is reset in that scope or until
+ the function returns. Once the function returns, any instance of the
+ variable at a previous scope will become visible. If the unset acts on
+ a variable at a previous scope, any instance of a variable with that
+ name that had been shadowed will become visible (see below how the lloo--
+ ccaallvvaarr__uunnsseett shell option changes this behavior).
The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, de-
fines a maximum function nesting level. Function invocations that ex-
@@ -2441,22 +2541,23 @@ FFUUNNCCTTIIOONNSS
ddeeccllaarree or ttyyppeesseett builtin commands. The --FF option to ddeeccllaarree or ttyyppee--
sseett will list the function names only (and optionally the source file
and line number, if the eexxttddeebbuugg shell option is enabled). Functions
- may be exported so that subshells automatically have them defined with
- the --ff option to the eexxppoorrtt builtin. A function definition may be
+ may be exported so that child shell processes (those created when exe-
+ cuting a separate shell invocation) automatically have them defined
+ with the --ff option to the eexxppoorrtt builtin. A function definition may be
deleted using the --ff option to the uunnsseett builtin.
Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit
- the depth of the function call stack and restrict the number of func-
+ the depth of the function call stack and restrict the number of func-
tion invocations. By default, no limit is imposed on the number of re-
cursive calls.
AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN
- The shell allows arithmetic expressions to be evaluated, under certain
- circumstances (see the lleett and ddeeccllaarree builtin commands, the (((( com-
+ The shell allows arithmetic expressions to be evaluated, under certain
+ circumstances (see the lleett and ddeeccllaarree builtin commands, the (((( com-
pound command, and AArriitthhmmeettiicc EExxppaannssiioonn). Evaluation is done in fixed-
- width integers with no check for overflow, though division by 0 is
- trapped and flagged as an error. The operators and their precedence,
- associativity, and values are the same as in the C language. The fol-
+ width integers with no check for overflow, though division by 0 is
+ trapped and flagged as an error. The operators and their precedence,
+ associativity, and values are the same as in the C language. The fol-
lowing list of operators is grouped into levels of equal-precedence op-
erators. The levels are listed in order of decreasing precedence.
@@ -2485,55 +2586,55 @@ AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN
_e_x_p_r_1 ,, _e_x_p_r_2
comma
- Shell variables are allowed as operands; parameter expansion is per-
+ Shell variables are allowed as operands; parameter expansion is per-
formed before the expression is evaluated. Within an expression, shell
- variables may also be referenced by name without using the parameter
- expansion syntax. A shell variable that is null or unset evaluates to
+ variables may also be referenced by name without using the parameter
+ expansion syntax. A shell variable that is null or unset evaluates to
0 when referenced by name without using the parameter expansion syntax.
- The value of a variable is evaluated as an arithmetic expression when
- it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r
+ The value of a variable is evaluated as an arithmetic expression when
+ it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r
attribute using ddeeccllaarree --ii is assigned a value. A null value evaluates
- to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on
+ to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on
to be used in an expression.
Integer constants follow the C language definition, without suffixes or
character constants. Constants with a leading 0 are interpreted as oc-
- tal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, num-
- bers take the form [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal num-
- ber between 2 and 64 representing the arithmetic base, and _n is a num-
- ber in that base. If _b_a_s_e_# is omitted, then base 10 is used. When
+ tal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, num-
+ bers take the form [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal num-
+ ber between 2 and 64 representing the arithmetic base, and _n is a num-
+ ber in that base. If _b_a_s_e_# is omitted, then base 10 is used. When
specifying _n, if a non-digit is required, the digits greater than 9 are
- represented by the lowercase letters, the uppercase letters, @, and _,
- in that order. If _b_a_s_e is less than or equal to 36, lowercase and up-
- percase letters may be used interchangeably to represent numbers be-
+ represented by the lowercase letters, the uppercase letters, @, and _,
+ in that order. If _b_a_s_e is less than or equal to 36, lowercase and up-
+ percase letters may be used interchangeably to represent numbers be-
tween 10 and 35.
- Operators are evaluated in order of precedence. Sub-expressions in
- parentheses are evaluated first and may override the precedence rules
+ Operators are evaluated in order of precedence. Sub-expressions in
+ parentheses are evaluated first and may override the precedence rules
above.
CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
- Conditional expressions are used by the [[[[ compound command and the
- tteesstt and [[ builtin commands to test file attributes and perform string
- and arithmetic comparisons. The tteesstt and [[ commands determine their
- behavior based on the number of arguments; see the descriptions of
+ Conditional expressions are used by the [[[[ compound command and the
+ tteesstt and [[ builtin commands to test file attributes and perform string
+ and arithmetic comparisons. The tteesstt and [[ commands determine their
+ behavior based on the number of arguments; see the descriptions of
those commands for any other command-specific actions.
- Expressions are formed from the following unary or binary primaries.
- BBaasshh handles several filenames specially when they are used in expres-
+ Expressions are formed from the following unary or binary primaries.
+ BBaasshh handles several filenames specially when they are used in expres-
sions. If the operating system on which bbaasshh is running provides these
- special files, bash will use them; otherwise it will emulate them in-
- ternally with this behavior: If any _f_i_l_e argument to one of the pri-
+ special files, bash will use them; otherwise it will emulate them in-
+ ternally with this behavior: If any _f_i_l_e argument to one of the pri-
maries is of the form _/_d_e_v_/_f_d_/_n, then file descriptor _n is checked. If
- the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n,
- _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively,
+ the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n,
+ _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively,
is checked.
Unless otherwise specified, primaries that operate on files follow sym-
bolic links and operate on the target of the link, rather than the link
itself.
- When used with [[[[, the << and >> operators sort lexicographically using
+ When used with [[[[, the << and >> operators sort lexicographically using
the current locale. The tteesstt command sorts using ASCII ordering.
--aa _f_i_l_e
@@ -2572,30 +2673,30 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
--LL _f_i_l_e
True if _f_i_l_e exists and is a symbolic link.
--NN _f_i_l_e
- True if _f_i_l_e exists and has been modified since it was last
+ True if _f_i_l_e exists and has been modified since it was last
read.
--OO _f_i_l_e
True if _f_i_l_e exists and is owned by the effective user id.
--SS _f_i_l_e
True if _f_i_l_e exists and is a socket.
_f_i_l_e_1 --eeff _f_i_l_e_2
- True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num-
+ True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num-
bers.
_f_i_l_e_1 -nntt _f_i_l_e_2
- True if _f_i_l_e_1 is newer (according to modification date) than
+ True if _f_i_l_e_1 is newer (according to modification date) than
_f_i_l_e_2, or if _f_i_l_e_1 exists and _f_i_l_e_2 does not.
_f_i_l_e_1 -oott _f_i_l_e_2
- True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1
+ True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1
does not.
--oo _o_p_t_n_a_m_e
- True if the shell option _o_p_t_n_a_m_e is enabled. See the list of
- options under the description of the --oo option to the sseett
+ True if the shell option _o_p_t_n_a_m_e is enabled. See the list of
+ options under the description of the --oo option to the sseett
builtin below.
--vv _v_a_r_n_a_m_e
- True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a
+ True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a
value).
--RR _v_a_r_n_a_m_e
- True if the shell variable _v_a_r_n_a_m_e is set and is a name refer-
+ True if the shell variable _v_a_r_n_a_m_e is set and is a name refer-
ence.
--zz _s_t_r_i_n_g
True if the length of _s_t_r_i_n_g is zero.
@@ -2605,8 +2706,8 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
_s_t_r_i_n_g_1 ==== _s_t_r_i_n_g_2
_s_t_r_i_n_g_1 == _s_t_r_i_n_g_2
- True if the strings are equal. == should be used with the tteesstt
- command for POSIX conformance. When used with the [[[[ command,
+ True if the strings are equal. == should be used with the tteesstt
+ command for POSIX conformance. When used with the [[[[ command,
this performs pattern matching as described above (CCoommppoouunndd CCoomm--
mmaannddss).
@@ -2620,90 +2721,93 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
True if _s_t_r_i_n_g_1 sorts after _s_t_r_i_n_g_2 lexicographically.
_a_r_g_1 OOPP _a_r_g_2
- OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic
- binary operators return true if _a_r_g_1 is equal to, not equal to,
- less than, less than or equal to, greater than, or greater than
- or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive
- or negative integers. When used with the [[[[ command, _A_r_g_1 and
- _A_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC
+ OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic
+ binary operators return true if _a_r_g_1 is equal to, not equal to,
+ less than, less than or equal to, greater than, or greater than
+ or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive
+ or negative integers. When used with the [[[[ command, _A_r_g_1 and
+ _A_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC
EEVVAALLUUAATTIIOONN above).
SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN
When a simple command is executed, the shell performs the following ex-
- pansions, assignments, and redirections, from left to right, in the
+ pansions, assignments, and redirections, from left to right, in the
following order.
- 1. The words that the parser has marked as variable assignments
- (those preceding the command name) and redirections are saved
+ 1. The words that the parser has marked as variable assignments
+ (those preceding the command name) and redirections are saved
for later processing.
- 2. The words that are not variable assignments or redirections are
- expanded. If any words remain after expansion, the first word
- is taken to be the name of the command and the remaining words
+ 2. The words that are not variable assignments or redirections are
+ expanded. If any words remain after expansion, the first word
+ is taken to be the name of the command and the remaining words
are the arguments.
3. Redirections are performed as described above under RREEDDIIRREECCTTIIOONN.
4. The text after the == in each variable assignment undergoes tilde
expansion, parameter expansion, command substitution, arithmetic
- expansion, and quote removal before being assigned to the vari-
+ expansion, and quote removal before being assigned to the vari-
able.
If no command name results, the variable assignments affect the current
- shell environment. Otherwise, the variables are added to the environ-
- ment of the executed command and do not affect the current shell envi-
- ronment. If any of the assignments attempts to assign a value to a
- readonly variable, an error occurs, and the command exits with a non-
- zero status.
-
- If no command name results, redirections are performed, but do not af-
- fect the current shell environment. A redirection error causes the
+ shell environment. In the case of such a command (one that consists
+ only of assignment statements and redirections), assignment statements
+ are performed before redirections. Otherwise, the variables are added
+ to the environment of the executed command and do not affect the cur-
+ rent shell environment. If any of the assignments attempts to assign a
+ value to a readonly variable, an error occurs, and the command exits
+ with a non-zero status.
+
+ If no command name results, redirections are performed, but do not af-
+ fect the current shell environment. A redirection error causes the
command to exit with a non-zero status.
- If there is a command name left after expansion, execution proceeds as
- described below. Otherwise, the command exits. If one of the expan-
- sions contained a command substitution, the exit status of the command
- is the exit status of the last command substitution performed. If
+ If there is a command name left after expansion, execution proceeds as
+ described below. Otherwise, the command exits. If one of the expan-
+ sions contained a command substitution, the exit status of the command
+ is the exit status of the last command substitution performed. If
there were no command substitutions, the command exits with a status of
zero.
CCOOMMMMAANNDD EEXXEECCUUTTIIOONN
- After a command has been split into words, if it results in a simple
- command and an optional list of arguments, the following actions are
+ After a command has been split into words, if it results in a simple
+ command and an optional list of arguments, the following actions are
taken.
- If the command name contains no slashes, the shell attempts to locate
- it. If there exists a shell function by that name, that function is
- invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a
- function, the shell searches for it in the list of shell builtins. If
+ If the command name contains no slashes, the shell attempts to locate
+ it. If there exists a shell function by that name, that function is
+ invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a
+ function, the shell searches for it in the list of shell builtins. If
a match is found, that builtin is invoked.
- If the name is neither a shell function nor a builtin, and contains no
- slashes, bbaasshh searches each element of the PPAATTHH for a directory con-
+ If the name is neither a shell function nor a builtin, and contains no
+ slashes, bbaasshh searches each element of the PPAATTHH for a directory con-
taining an executable file by that name. BBaasshh uses a hash table to re-
- member the full pathnames of executable files (see hhaasshh under SSHHEELLLL
- BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is
- performed only if the command is not found in the hash table. If the
+ member the full pathnames of executable files (see hhaasshh under SSHHEELLLL
+ BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is
+ performed only if the command is not found in the hash table. If the
search is unsuccessful, the shell searches for a defined shell function
named ccoommmmaanndd__nnoott__ffoouunndd__hhaannddllee. If that function exists, it is invoked
- in a separate execution environment with the original command and the
- original command's arguments as its arguments, and the function's exit
- status becomes the exit status of that subshell. If that function is
+ in a separate execution environment with the original command and the
+ original command's arguments as its arguments, and the function's exit
+ status becomes the exit status of that subshell. If that function is
not defined, the shell prints an error message and returns an exit sta-
tus of 127.
- If the search is successful, or if the command name contains one or
+ If the search is successful, or if the command name contains one or
more slashes, the shell executes the named program in a separate execu-
tion environment. Argument 0 is set to the name given, and the remain-
ing arguments to the command are set to the arguments given, if any.
- If this execution fails because the file is not in executable format,
- and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a
- file containing shell commands. A subshell is spawned to execute it.
- This subshell reinitializes itself, so that the effect is as if a new
- shell had been invoked to handle the script, with the exception that
- the locations of commands remembered by the parent (see hhaasshh below un-
- der SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the child.
+ If this execution fails because the file is not in executable format,
+ and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a
+ file containing shell commands, and the shell creates a new instance of
+ itself to execute it. This subshell reinitializes itself, so that the
+ effect is as if a new shell had been invoked to handle the script, with
+ the exception that the locations of commands remembered by the parent
+ (see hhaasshh below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the
+ child.
If the program is a file beginning with ##!!, the remainder of the first
line specifies an interpreter for the program. The shell executes the
@@ -2766,6 +2870,8 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN
A command invoked in this separate environment cannot affect the
shell's execution environment.
+ A _s_u_b_s_h_e_l_l is a copy of the shell process.
+
Command substitution, commands grouped with parentheses, and asynchro-
nous commands are invoked in a subshell environment that is a duplicate
of the shell environment, except that traps caught by the shell are re-
@@ -2838,42 +2944,70 @@ EEXXIITT SSTTAATTUUSS
return an exit status of 2 to indicate incorrect usage, generally in-
valid options or missing arguments.
- BBaasshh itself returns the exit status of the last command executed, un-
- less a syntax error occurs, in which case it exits with a non-zero
+ The exit status of the last command is available in the special parame-
+ ter $?.
+
+ BBaasshh itself returns the exit status of the last command executed, un-
+ less a syntax error occurs, in which case it exits with a non-zero
value. See also the eexxiitt builtin command below.
SSIIGGNNAALLSS
- When bbaasshh is interactive, in the absence of any traps, it ignores
+ When bbaasshh is interactive, in the absence of any traps, it ignores
SSIIGGTTEERRMM (so that kkiillll 00 does not kill an interactive shell), and SSIIGGIINNTT
- is caught and handled (so that the wwaaiitt builtin is interruptible). In
+ is caught and handled (so that the wwaaiitt builtin is interruptible). In
all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh ig-
nores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP.
Non-builtin commands run by bbaasshh have signal handlers set to the values
inherited by the shell from its parent. When job control is not in ef-
- fect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to
- these inherited handlers. Commands run as a result of command substi-
+ fect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to
+ these inherited handlers. Commands run as a result of command substi-
tution ignore the keyboard-generated job control signals SSIIGGTTTTIINN, SSIIGGTT--
TTOOUU, and SSIIGGTTSSTTPP.
- The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting,
- an interactive shell resends the SSIIGGHHUUPP to all jobs, running or
+ The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting,
+ an interactive shell resends the SSIIGGHHUUPP to all jobs, running or
stopped. Stopped jobs are sent SSIIGGCCOONNTT to ensure that they receive the
- SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular
- job, it should be removed from the jobs table with the ddiissoowwnn builtin
- (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP us-
+ SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular
+ job, it should be removed from the jobs table with the ddiissoowwnn builtin
+ (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP us-
ing ddiissoowwnn --hh.
- If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a
+ If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a
SSIIGGHHUUPP to all jobs when an interactive login shell exits.
- If bbaasshh is waiting for a command to complete and receives a signal for
+ If bbaasshh is waiting for a command to complete and receives a signal for
which a trap has been set, the trap will not be executed until the com-
- mand completes. When bbaasshh is waiting for an asynchronous command via
- the wwaaiitt builtin, the reception of a signal for which a trap has been
+ mand completes. When bbaasshh is waiting for an asynchronous command via
+ the wwaaiitt builtin, the reception of a signal for which a trap has been
set will cause the wwaaiitt builtin to return immediately with an exit sta-
tus greater than 128, immediately after which the trap is executed.
+ When job control is not enabled, and bbaasshh is waiting for a foreground
+ command to complete, the shell receives keyboard-generated signals such
+ as SSIIGGIINNTT (usually generated by ^^CC) that users commonly intend to send
+ to that command. This happens because the shell and the command are in
+ the same process group as the terminal, and ^^CC sends SSIIGGIINNTT to all pro-
+ cesses in that process group.
+
+ When bbaasshh is running without job control enabled and receives SSIIGGIINNTT
+ while waiting for a foreground command, it waits until that foreground
+ command terminates and then decides what to do about the SSIIGGIINNTT:
+
+ 1. If the command terminates due to the SSIIGGIINNTT, bbaasshh concludes that
+ the user meant to end the entire script, and acts on the SSIIGGIINNTT
+ (e.g., by running a SSIIGGIINNTT trap or exiting itself);
+
+ 2. If the command does not terminate due to SSIIGGIINNTT, the program
+ handled the SSIIGGIINNTT itself and did not treat it as a fatal sig-
+ nal. In that case, bbaasshh does not treat SSIIGGIINNTT as a fatal sig-
+ nal, either, instead assuming that the SSIIGGIINNTT was used as part
+ of the program's normal operation (e.g., emacs uses it to abort
+ editing commands) or deliberately discarded. However, bbaasshh will
+ run any trap set on SSIIGGIINNTT, as it does with any other trapped
+ signal it receives while it is waiting for the foreground com-
+ mand to complete, for compatibility.
+
JJOOBB CCOONNTTRROOLL
_J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the ex-
ecution of processes and continue (_r_e_s_u_m_e) their execution at a later
@@ -2994,80 +3128,79 @@ PPRROOMMPPTTIINNGG
\\uu the username of the current user
\\vv the version of bbaasshh (e.g., 2.00)
\\VV the release of bbaasshh, version + patch level (e.g., 2.00.0)
- \\ww the current working directory, with $$HHOOMMEE abbreviated
- with a tilde (uses the value of the PPRROOMMPPTT__DDIIRRTTRRIIMM vari-
- able)
- \\WW the basename of the current working directory, with $$HHOOMMEE
- abbreviated with a tilde
+ \\ww the value of the PPWWDD shell variable ($$PPWWDD), with $$HHOOMMEE
+ abbreviated with a tilde (uses the value of the
+ PPRROOMMPPTT__DDIIRRTTRRIIMM variable)
+ \\WW the basename of $$PPWWDD, with $$HHOOMMEE abbreviated with a tilde
\\!! the history number of this command
\\## the command number of this command
\\$$ if the effective UID is 0, a ##, otherwise a $$
\\_n_n_n the character corresponding to the octal number _n_n_n
\\\\ a backslash
- \\[[ begin a sequence of non-printing characters, which could
- be used to embed a terminal control sequence into the
+ \\[[ begin a sequence of non-printing characters, which could
+ be used to embed a terminal control sequence into the
prompt
\\]] end a sequence of non-printing characters
- The command number and the history number are usually different: the
- history number of a command is its position in the history list, which
- may include commands restored from the history file (see HHIISSTTOORRYY be-
- low), while the command number is the position in the sequence of com-
- mands executed during the current shell session. After the string is
- decoded, it is expanded via parameter expansion, command substitution,
- arithmetic expansion, and quote removal, subject to the value of the
+ The command number and the history number are usually different: the
+ history number of a command is its position in the history list, which
+ may include commands restored from the history file (see HHIISSTTOORRYY be-
+ low), while the command number is the position in the sequence of com-
+ mands executed during the current shell session. After the string is
+ decoded, it is expanded via parameter expansion, command substitution,
+ arithmetic expansion, and quote removal, subject to the value of the
pprroommppttvvaarrss shell option (see the description of the sshhoopptt command under
- SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). This can have unwanted side effects if
- escaped portions of the string appear within command substitution or
+ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). This can have unwanted side effects if
+ escaped portions of the string appear within command substitution or
contain characters special to word expansion.
RREEAADDLLIINNEE
- This is the library that handles reading input when using an interac-
+ This is the library that handles reading input when using an interac-
tive shell, unless the ----nnooeeddiittiinngg option is given at shell invocation.
Line editing is also used when using the --ee option to the rreeaadd builtin.
By default, the line editing commands are similar to those of Emacs. A
vi-style line editing interface is also available. Line editing can be
- enabled at any time using the --oo eemmaaccss or --oo vvii options to the sseett
- builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). To turn off line editing
- after the shell is running, use the ++oo eemmaaccss or ++oo vvii options to the
+ enabled at any time using the --oo eemmaaccss or --oo vvii options to the sseett
+ builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). To turn off line editing
+ after the shell is running, use the ++oo eemmaaccss or ++oo vvii options to the
sseett builtin.
RReeaaddlliinnee NNoottaattiioonn
In this section, the Emacs-style notation is used to denote keystrokes.
- Control keys are denoted by C-_k_e_y, e.g., C-n means Control-N. Simi-
- larly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x means Meta-X. (On key-
- boards without a _m_e_t_a key, M-_x means ESC _x, i.e., press the Escape key
+ Control keys are denoted by C-_k_e_y, e.g., C-n means Control-N. Simi-
+ larly, _m_e_t_a keys are denoted by M-_k_e_y, so M-x means Meta-X. (On key-
+ boards without a _m_e_t_a key, M-_x means ESC _x, i.e., press the Escape key
then the _x key. This makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x
- means ESC-Control-_x, or press the Escape key then hold the Control key
+ means ESC-Control-_x, or press the Escape key then hold the Control key
while pressing the _x key.)
Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which normally act as
- a repeat count. Sometimes, however, it is the sign of the argument
- that is significant. Passing a negative argument to a command that
- acts in the forward direction (e.g., kkiillll--lliinnee) causes that command to
- act in a backward direction. Commands whose behavior with arguments
+ a repeat count. Sometimes, however, it is the sign of the argument
+ that is significant. Passing a negative argument to a command that
+ acts in the forward direction (e.g., kkiillll--lliinnee) causes that command to
+ act in a backward direction. Commands whose behavior with arguments
deviates from this are noted below.
- When a command is described as _k_i_l_l_i_n_g text, the text deleted is saved
+ When a command is described as _k_i_l_l_i_n_g text, the text deleted is saved
for possible future retrieval (_y_a_n_k_i_n_g). The killed text is saved in a
_k_i_l_l _r_i_n_g. Consecutive kills cause the text to be accumulated into one
unit, which can be yanked all at once. Commands which do not kill text
separate the chunks of text on the kill ring.
RReeaaddlliinnee IInniittiiaalliizzaattiioonn
- Readline is customized by putting commands in an initialization file
- (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of
+ Readline is customized by putting commands in an initialization file
+ (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of
the IINNPPUUTTRRCC variable. If that variable is unset, the default is _~_/_._i_n_-
- _p_u_t_r_c. If that file does not exist or cannot be read, the ultimate
- default is _/_e_t_c_/_i_n_p_u_t_r_c. When a program which uses the readline li-
- brary starts up, the initialization file is read, and the key bindings
- and variables are set. There are only a few basic constructs allowed
- in the readline initialization file. Blank lines are ignored. Lines
- beginning with a ## are comments. Lines beginning with a $$ indicate
- conditional constructs. Other lines denote key bindings and variable
+ _p_u_t_r_c. If that file does not exist or cannot be read, the ultimate
+ default is _/_e_t_c_/_i_n_p_u_t_r_c. When a program which uses the readline li-
+ brary starts up, the initialization file is read, and the key bindings
+ and variables are set. There are only a few basic constructs allowed
+ in the readline initialization file. Blank lines are ignored. Lines
+ beginning with a ## are comments. Lines beginning with a $$ indicate
+ conditional constructs. Other lines denote key bindings and variable
settings.
- The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other
+ The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other
programs that use this library may add their own commands and bindings.
For example, placing
@@ -3075,18 +3208,18 @@ RREEAADDLLIINNEE
M-Control-u: universal-argument
or
C-Meta-u: universal-argument
- into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_-
+ into the _i_n_p_u_t_r_c would make M-C-u execute the readline command _u_n_i_v_e_r_-
_s_a_l_-_a_r_g_u_m_e_n_t.
- The following symbolic character names are recognized: _R_U_B_O_U_T, _D_E_L,
+ The following symbolic character names are recognized: _R_U_B_O_U_T, _D_E_L,
_E_S_C, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _S_P_C, _S_P_A_C_E, and _T_A_B.
- In addition to command names, readline allows keys to be bound to a
+ In addition to command names, readline allows keys to be bound to a
string that is inserted when the key is pressed (a _m_a_c_r_o).
RReeaaddlliinnee KKeeyy BBiinnddiinnggss
- The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple.
- All that is required is the name of the command or the text of a macro
+ The syntax for controlling key bindings in the _i_n_p_u_t_r_c file is simple.
+ All that is required is the name of the command or the text of a macro
and a key sequence to which it should be bound. The name may be speci-
fied in one of two ways: as a symbolic key name, possibly with _M_e_t_a_- or
_C_o_n_t_r_o_l_- prefixes, or as a key sequence.
@@ -3098,15 +3231,15 @@ RREEAADDLLIINNEE
Meta-Rubout: backward-kill-word
Control-o: "> output"
- In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt,
- _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to
- run the macro expressed on the right hand side (that is, to insert the
+ In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt,
+ _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to
+ run the macro expressed on the right hand side (that is, to insert the
text ``> output'' into the line).
- In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs
- from kkeeyynnaammee above in that strings denoting an entire key sequence may
- be specified by placing the sequence within double quotes. Some GNU
- Emacs style key escapes can be used, as in the following example, but
+ In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs
+ from kkeeyynnaammee above in that strings denoting an entire key sequence may
+ be specified by placing the sequence within double quotes. Some GNU
+ Emacs style key escapes can be used, as in the following example, but
the symbolic character names are not recognized.
"\C-u": universal-argument
@@ -3114,7 +3247,7 @@ RREEAADDLLIINNEE
"\e[11~": "Function Key 1"
In this example, _C_-_u is again bound to the function uunniivveerrssaall--aarrgguummeenntt.
- _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is
+ _C_-_x _C_-_r is bound to the function rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is
bound to insert the text ``Function Key 1''.
The full set of GNU Emacs style escape sequences is
@@ -3125,7 +3258,7 @@ RREEAADDLLIINNEE
\\"" literal "
\\'' literal '
- In addition to the GNU Emacs style escape sequences, a second set of
+ In addition to the GNU Emacs style escape sequences, a second set of
backslash escapes is available:
\\aa alert (bell)
\\bb backspace
@@ -3135,20 +3268,20 @@ RREEAADDLLIINNEE
\\rr carriage return
\\tt horizontal tab
\\vv vertical tab
- \\_n_n_n the eight-bit character whose value is the octal value
+ \\_n_n_n the eight-bit character whose value is the octal value
_n_n_n (one to three digits)
- \\xx_H_H the eight-bit character whose value is the hexadecimal
+ \\xx_H_H the eight-bit character whose value is the hexadecimal
value _H_H (one or two hex digits)
When entering the text of a macro, single or double quotes must be used
to indicate a macro definition. Unquoted text is assumed to be a func-
- tion name. In the macro body, the backslash escapes described above
- are expanded. Backslash will quote any other character in the macro
+ tion name. In the macro body, the backslash escapes described above
+ are expanded. Backslash will quote any other character in the macro
text, including " and '.
- BBaasshh allows the current readline key bindings to be displayed or modi-
- fied with the bbiinndd builtin command. The editing mode may be switched
- during interactive use by using the --oo option to the sseett builtin com-
+ BBaasshh allows the current readline key bindings to be displayed or modi-
+ fied with the bbiinndd builtin command. The editing mode may be switched
+ during interactive use by using the --oo option to the sseett builtin com-
mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
RReeaaddlliinnee VVaarriiaabblleess
@@ -3159,12 +3292,35 @@ RREEAADDLLIINNEE
sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e
or using the bbiinndd builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
- Except where noted, readline variables can take the values OOnn or OOffff
- (without regard to case). Unrecognized variable names are ignored.
- When a variable value is read, empty or null values, "on" (case-insen-
+ Except where noted, readline variables can take the values OOnn or OOffff
+ (without regard to case). Unrecognized variable names are ignored.
+ When a variable value is read, empty or null values, "on" (case-insen-
sitive), and "1" are equivalent to OOnn. All other values are equivalent
to OOffff. The variables and their default values are:
+ aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr
+ A string variable that controls the text color and background
+ when displaying the text in the active region (see the descrip-
+ tion of eennaabbllee--aaccttiivvee--rreeggiioonn below). This string must not take
+ up any physical character positions on the display, so it should
+ consist only of terminal escape sequences. It is output to the
+ terminal before displaying the text in the active region. This
+ variable is reset to the default value whenever the terminal
+ type changes. The default value is the string that puts the
+ terminal in standout mode, as obtained from the terminal's ter-
+ minfo description. A sample value might be "\e[01;33m".
+ aaccttiivvee--rreeggiioonn--eenndd--ccoolloorr
+ A string variable that "undoes" the effects of aaccttiivvee--rree--
+ ggiioonn--ssttaarrtt--ccoolloorr and restores "normal" terminal display appear-
+ ance after displaying text in the active region. This string
+ must not take up any physical character positions on the dis-
+ play, so it should consist only of terminal escape sequences.
+ It is output to the terminal after displaying the text in the
+ active region. This variable is reset to the default value
+ whenever the terminal type changes. The default value is the
+ string that restores the terminal from standout mode, as ob-
+ tained from the terminal's terminfo description. A sample value
+ might be "\e[0m".
bbeellll--ssttyyllee ((aauuddiibbllee))
Controls what happens when readline wants to ring the terminal
bell. If set to nnoonnee, readline never rings the bell. If set to
@@ -3181,49 +3337,55 @@ RREEAADDLLIINNEE
If set to OOnn, when listing completions, readline displays the
common prefix of the set of possible completions using a differ-
ent color. The color definitions are taken from the value of
- the LLSS__CCOOLLOORRSS environment variable.
+ the LLSS__CCOOLLOORRSS environment variable. If there is a color defini-
+ tion in $$LLSS__CCOOLLOORRSS for the custom suffix "readline-colored-com-
+ pletion-prefix", readline uses this color for the common prefix
+ instead of its default.
ccoolloorreedd--ssttaattss ((OOffff))
- If set to OOnn, readline displays possible completions using dif-
- ferent colors to indicate their file type. The color defini-
- tions are taken from the value of the LLSS__CCOOLLOORRSS environment
+ If set to OOnn, readline displays possible completions using dif-
+ ferent colors to indicate their file type. The color defini-
+ tions are taken from the value of the LLSS__CCOOLLOORRSS environment
variable.
ccoommmmeenntt--bbeeggiinn ((````##''''))
- The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt
+ The string that is inserted when the readline iinnsseerrtt--ccoommmmeenntt
command is executed. This command is bound to MM--## in emacs mode
and to ## in vi command mode.
ccoommpplleettiioonn--ddiissppllaayy--wwiiddtthh ((--11))
- The number of screen columns used to display possible matches
- when performing completion. The value is ignored if it is less
- than 0 or greater than the terminal screen width. A value of 0
- will cause matches to be displayed one per line. The default
+ The number of screen columns used to display possible matches
+ when performing completion. The value is ignored if it is less
+ than 0 or greater than the terminal screen width. A value of 0
+ will cause matches to be displayed one per line. The default
value is -1.
ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff))
If set to OOnn, readline performs filename matching and completion
in a case-insensitive fashion.
ccoommpplleettiioonn--mmaapp--ccaassee ((OOffff))
- If set to OOnn, and ccoommpplleettiioonn--iiggnnoorree--ccaassee is enabled, readline
- treats hyphens (_-) and underscores (__) as equivalent when per-
+ If set to OOnn, and ccoommpplleettiioonn--iiggnnoorree--ccaassee is enabled, readline
+ treats hyphens (_-) and underscores (__) as equivalent when per-
forming case-insensitive filename matching and completion.
ccoommpplleettiioonn--pprreeffiixx--ddiissppllaayy--lleennggtthh ((00))
- The length in characters of the common prefix of a list of pos-
- sible completions that is displayed without modification. When
- set to a value greater than zero, common prefixes longer than
- this value are replaced with an ellipsis when displaying possi-
+ The length in characters of the common prefix of a list of pos-
+ sible completions that is displayed without modification. When
+ set to a value greater than zero, common prefixes longer than
+ this value are replaced with an ellipsis when displaying possi-
ble completions.
ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000))
- This determines when the user is queried about viewing the num-
- ber of possible completions generated by the ppoossssiibbllee--ccoommppllee--
- ttiioonnss command. It may be set to any integer value greater than
- or equal to zero. If the number of possible completions is
- greater than or equal to the value of this variable, readline
- will ask whether or not the user wishes to view them; otherwise
- they are simply listed on the terminal.
+ This determines when the user is queried about viewing the num-
+ ber of possible completions generated by the ppoossssiibbllee--ccoommppllee--
+ ttiioonnss command. It may be set to any integer value greater than
+ or equal to zero. If the number of possible completions is
+ greater than or equal to the value of this variable, readline
+ will ask whether or not the user wishes to view them; otherwise
+ they are simply listed on the terminal. A zero value means
+ readline should never ask; negative values are treated as zero.
ccoonnvveerrtt--mmeettaa ((OOnn))
If set to OOnn, readline will convert characters with the eighth
bit set to an ASCII key sequence by stripping the eighth bit and
prefixing an escape character (in effect, using escape as the
_m_e_t_a _p_r_e_f_i_x). The default is _O_n, but readline will set it to
- _O_f_f if the locale contains eight-bit characters.
+ _O_f_f if the locale contains eight-bit characters. This variable
+ is dependent on the LLCC__CCTTYYPPEE locale category, and may change if
+ the locale is changed.
ddiissaabbllee--ccoommpplleettiioonn ((OOffff))
If set to OOnn, readline will inhibit word completion. Completion
characters will be inserted into the line as if they had been
@@ -3245,13 +3407,23 @@ RREEAADDLLIINNEE
escapes to begin and end sequences of non-printing characters,
which can be used to embed a terminal control sequence into the
mode string.
+ eennaabbllee--aaccttiivvee--rreeggiioonn ((OOnn))
+ The _p_o_i_n_t is the current cursor position, and _m_a_r_k refers to a
+ saved cursor position. The text between the point and mark is
+ referred to as the _r_e_g_i_o_n. When this variable is set to _O_n,
+ readline allows certain commands to designate the region as _a_c_-
+ _t_i_v_e. When the region is active, readline highlights the text
+ in the region using the value of the aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr,
+ which defaults to the string that enables the terminal's stand-
+ out mode. The active region shows the text inserted by brack-
+ eted-paste and any matching text found by incremental and non-
+ incremental history searches.
eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOnn))
- When set to OOnn, readline will configure the terminal in a way
- that will enable it to insert each paste into the editing buffer
- as a single string of characters, instead of treating each char-
- acter as if it had been read from the keyboard. This can pre-
- vent pasted characters from being interpreted as editing com-
- mands.
+ When set to OOnn, readline configures the terminal to insert each
+ paste into the editing buffer as a single string of characters,
+ instead of treating each character as if it had been read from
+ the keyboard. This prevents readline from executing any editing
+ commands bound to key sequences appearing in the pasted text.
eennaabbllee--kkeeyyppaadd ((OOffff))
When set to OOnn, readline will try to enable the application key-
pad when it is called. Some systems need this to enable the ar-
@@ -3288,158 +3460,161 @@ RREEAADDLLIINNEE
gardless of what the terminal claims it can support. The name
mmeettaa--ffllaagg is a synonym for this variable. The default is _O_f_f,
but readline will set it to _O_n if the locale contains eight-bit
- characters.
+ characters. This variable is dependent on the LLCC__CCTTYYPPEE locale
+ category, and may change if the locale is changed.
iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[CC--JJ''''))
- The string of characters that should terminate an incremental
- search without subsequently executing the character as a com-
- mand. If this variable has not been given a value, the charac-
+ The string of characters that should terminate an incremental
+ search without subsequently executing the character as a com-
+ mand. If this variable has not been given a value, the charac-
ters _E_S_C and _C_-_J will terminate an incremental search.
kkeeyymmaapp ((eemmaaccss))
- Set the current readline keymap. The set of valid keymap names
- is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_-
- _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is
- equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the
+ Set the current readline keymap. The set of valid keymap names
+ is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_-
+ _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is
+ equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the
value of eeddiittiinngg--mmooddee also affects the default keymap.
kkeeyysseeqq--ttiimmeeoouutt ((550000))
- Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when
- reading an ambiguous key sequence (one that can form a complete
+ Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when
+ reading an ambiguous key sequence (one that can form a complete
key sequence using the input read so far, or can take additional
- input to complete a longer key sequence). If no input is re-
- ceived within the timeout, _r_e_a_d_l_i_n_e will use the shorter but
- complete key sequence. The value is specified in milliseconds,
- so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for
- additional input. If this variable is set to a value less than
- or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait
- until another key is pressed to decide which key sequence to
+ input to complete a longer key sequence). If no input is re-
+ ceived within the timeout, _r_e_a_d_l_i_n_e will use the shorter but
+ complete key sequence. The value is specified in milliseconds,
+ so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for
+ additional input. If this variable is set to a value less than
+ or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait
+ until another key is pressed to decide which key sequence to
complete.
mmaarrkk--ddiirreeccttoorriieess ((OOnn))
If set to OOnn, completed directory names have a slash appended.
mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
- If set to OOnn, history lines that have been modified are dis-
+ If set to OOnn, history lines that have been modified are dis-
played with a preceding asterisk (**).
mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff))
If set to OOnn, completed names which are symbolic links to direc-
- tories have a slash appended (subject to the value of mmaarrkk--ddii--
+ tories have a slash appended (subject to the value of mmaarrkk--ddii--
rreeccttoorriieess).
mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn))
- This variable, when set to OOnn, causes readline to match files
- whose names begin with a `.' (hidden files) when performing
- filename completion. If set to OOffff, the leading `.' must be
+ This variable, when set to OOnn, causes readline to match files
+ whose names begin with a `.' (hidden files) when performing
+ filename completion. If set to OOffff, the leading `.' must be
supplied by the user in the filename to be completed.
mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff))
- If set to OOnn, menu completion displays the common prefix of the
+ If set to OOnn, menu completion displays the common prefix of the
list of possible completions (which may be empty) before cycling
through the list.
oouuttppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will display characters with the eighth
+ If set to OOnn, readline will display characters with the eighth
bit set directly rather than as a meta-prefixed escape sequence.
The default is _O_f_f, but readline will set it to _O_n if the locale
- contains eight-bit characters.
+ contains eight-bit characters. This variable is dependent on
+ the LLCC__CCTTYYPPEE locale category, and may change if the locale is
+ changed.
ppaaggee--ccoommpplleettiioonnss ((OOnn))
- If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis-
+ If set to OOnn, readline uses an internal _m_o_r_e-like pager to dis-
play a screenful of possible completions at a time.
pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff))
- If set to OOnn, readline will display completions with matches
- sorted horizontally in alphabetical order, rather than down the
+ If set to OOnn, readline will display completions with matches
+ sorted horizontally in alphabetical order, rather than down the
screen.
rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff))
- If set to OOnn, readline will undo all changes to history lines
+ If set to OOnn, readline will undo all changes to history lines
before returning when aacccceepptt--lliinnee is executed. By default, his-
- tory lines may be modified and retain individual undo lists
+ tory lines may be modified and retain individual undo lists
across calls to rreeaaddlliinnee.
sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff))
- This alters the default behavior of the completion functions.
+ This alters the default behavior of the completion functions.
If set to OOnn, words which have more than one possible completion
- cause the matches to be listed immediately instead of ringing
+ cause the matches to be listed immediately instead of ringing
the bell.
sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff))
- This alters the default behavior of the completion functions in
+ This alters the default behavior of the completion functions in
a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, words
- which have more than one possible completion without any possi-
- ble partial completion (the possible completions don't share a
- common prefix) cause the matches to be listed immediately in-
+ which have more than one possible completion without any possi-
+ ble partial completion (the possible completions don't share a
+ common prefix) cause the matches to be listed immediately in-
stead of ringing the bell.
sshhooww--mmooddee--iinn--pprroommpptt ((OOffff))
- If set to OOnn, add a string to the beginning of the prompt indi-
- cating the editing mode: emacs, vi command, or vi insertion.
+ If set to OOnn, add a string to the beginning of the prompt indi-
+ cating the editing mode: emacs, vi command, or vi insertion.
The mode strings are user-settable (e.g., _e_m_a_c_s_-_m_o_d_e_-_s_t_r_i_n_g).
sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff))
- If set to OOnn, this alters the default completion behavior when
- inserting a single match into the line. It's only active when
- performing completion in the middle of a word. If enabled,
- readline does not insert characters from the completion that
- match characters after point in the word being completed, so
+ If set to OOnn, this alters the default completion behavior when
+ inserting a single match into the line. It's only active when
+ performing completion in the middle of a word. If enabled,
+ readline does not insert characters from the completion that
+ match characters after point in the word being completed, so
portions of the word following the cursor are not duplicated.
vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd))))
- If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is
+ If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is
displayed immediately before the last line of the primary prompt
- when vi editing mode is active and in command mode. The value
+ when vi editing mode is active and in command mode. The value
is expanded like a key binding, so the standard set of meta- and
- control prefixes and backslash escape sequences is available.
- Use the \1 and \2 escapes to begin and end sequences of non-
- printing characters, which can be used to embed a terminal con-
+ control prefixes and backslash escape sequences is available.
+ Use the \1 and \2 escapes to begin and end sequences of non-
+ printing characters, which can be used to embed a terminal con-
trol sequence into the mode string.
vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss))))
- If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is
+ If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is
displayed immediately before the last line of the primary prompt
when vi editing mode is active and in insertion mode. The value
is expanded like a key binding, so the standard set of meta- and
- control prefixes and backslash escape sequences is available.
- Use the \1 and \2 escapes to begin and end sequences of non-
- printing characters, which can be used to embed a terminal con-
+ control prefixes and backslash escape sequences is available.
+ Use the \1 and \2 escapes to begin and end sequences of non-
+ printing characters, which can be used to embed a terminal con-
trol sequence into the mode string.
vviissiibbllee--ssttaattss ((OOffff))
- If set to OOnn, a character denoting a file's type as reported by
- _s_t_a_t(2) is appended to the filename when listing possible com-
+ If set to OOnn, a character denoting a file's type as reported by
+ _s_t_a_t(2) is appended to the filename when listing possible com-
pletions.
RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss
- Readline implements a facility similar in spirit to the conditional
- compilation features of the C preprocessor which allows key bindings
- and variable settings to be performed as the result of tests. There
+ Readline implements a facility similar in spirit to the conditional
+ compilation features of the C preprocessor which allows key bindings
+ and variable settings to be performed as the result of tests. There
are four parser directives used.
- $$iiff The $$iiff construct allows bindings to be made based on the edit-
- ing mode, the terminal being used, or the application using
+ $$iiff The $$iiff construct allows bindings to be made based on the edit-
+ ing mode, the terminal being used, or the application using
readline. The text of the test, after any comparison operator,
- extends to the end of the line; unless otherwise noted, no
+ extends to the end of the line; unless otherwise noted, no
characters are required to isolate it.
- mmooddee The mmooddee== form of the $$iiff directive is used to test
- whether readline is in emacs or vi mode. This may be
- used in conjunction with the sseett kkeeyymmaapp command, for in-
- stance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and
- _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in
+ mmooddee The mmooddee== form of the $$iiff directive is used to test
+ whether readline is in emacs or vi mode. This may be
+ used in conjunction with the sseett kkeeyymmaapp command, for in-
+ stance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and
+ _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in
emacs mode.
- tteerrmm The tteerrmm== form may be used to include terminal-specific
+ tteerrmm The tteerrmm== form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by
the terminal's function keys. The word on the right side
of the == is tested against both the full name of the ter-
- minal and the portion of the terminal name before the
- first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d,
+ minal and the portion of the terminal name before the
+ first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d,
for instance.
vveerrssiioonn
- The vveerrssiioonn test may be used to perform comparisons
- against specific readline versions. The vveerrssiioonn expands
- to the current readline version. The set of comparison
- operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>.
- The version number supplied on the right side of the op-
- erator consists of a major version number, an optional
+ The vveerrssiioonn test may be used to perform comparisons
+ against specific readline versions. The vveerrssiioonn expands
+ to the current readline version. The set of comparison
+ operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>.
+ The version number supplied on the right side of the op-
+ erator consists of a major version number, an optional
decimal point, and an optional minor version (e.g., 77..11).
- If the minor version is omitted, it is assumed to be 00.
+ If the minor version is omitted, it is assumed to be 00.
The operator may be separated from the string vveerrssiioonn and
from the version number argument by whitespace.
aapppplliiccaattiioonn
The aapppplliiccaattiioonn construct is used to include application-
- specific settings. Each program using the readline li-
- brary sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization
+ specific settings. Each program using the readline li-
+ brary sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization
file can test for a particular value. This could be used
- to bind key sequences to functions useful for a specific
- program. For instance, the following command adds a key
- sequence that quotes the current or previous word in
+ to bind key sequences to functions useful for a specific
+ program. For instance, the following command adds a key
+ sequence that quotes the current or previous word in
bbaasshh:
$$iiff Bash
@@ -3449,12 +3624,12 @@ RREEAADDLLIINNEE
_v_a_r_i_a_b_l_e
The _v_a_r_i_a_b_l_e construct provides simple equality tests for
- readline variables and values. The permitted comparison
- operators are _=, _=_=, and _!_=. The variable name must be
+ readline variables and values. The permitted comparison
+ operators are _=, _=_=, and _!_=. The variable name must be
separated from the comparison operator by whitespace; the
- operator may be separated from the value on the right
- hand side by whitespace. Both string and boolean vari-
- ables may be tested. Boolean variables must be tested
+ operator may be separated from the value on the right
+ hand side by whitespace. Both string and boolean vari-
+ ables may be tested. Boolean variables must be tested
against the values _o_n and _o_f_f.
$$eennddiiff This command, as seen in the previous example, terminates an $$iiff
@@ -3464,51 +3639,51 @@ RREEAADDLLIINNEE
test fails.
$$iinncclluuddee
- This directive takes a single filename as an argument and reads
- commands and bindings from that file. For example, the follow-
+ This directive takes a single filename as an argument and reads
+ commands and bindings from that file. For example, the follow-
ing directive would read _/_e_t_c_/_i_n_p_u_t_r_c:
$$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c
SSeeaarrcchhiinngg
- Readline provides commands for searching through the command history
+ Readline provides commands for searching through the command history
(see HHIISSTTOORRYY below) for lines containing a specified string. There are
two search modes: _i_n_c_r_e_m_e_n_t_a_l and _n_o_n_-_i_n_c_r_e_m_e_n_t_a_l.
- Incremental searches begin before the user has finished typing the
- search string. As each character of the search string is typed, read-
+ Incremental searches begin before the user has finished typing the
+ search string. As each character of the search string is typed, read-
line displays the next entry from the history matching the string typed
- so far. An incremental search requires only as many characters as
- needed to find the desired history entry. The characters present in
- the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an
+ so far. An incremental search requires only as many characters as
+ needed to find the desired history entry. The characters present in
+ the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an
incremental search. If that variable has not been assigned a value the
- Escape and Control-J characters will terminate an incremental search.
- Control-G will abort an incremental search and restore the original
- line. When the search is terminated, the history entry containing the
+ Escape and Control-J characters will terminate an incremental search.
+ Control-G will abort an incremental search and restore the original
+ line. When the search is terminated, the history entry containing the
search string becomes the current line.
- To find other matching entries in the history list, type Control-S or
- Control-R as appropriate. This will search backward or forward in the
- history for the next entry matching the search string typed so far.
- Any other key sequence bound to a readline command will terminate the
- search and execute that command. For instance, a _n_e_w_l_i_n_e will termi-
+ To find other matching entries in the history list, type Control-S or
+ Control-R as appropriate. This will search backward or forward in the
+ history for the next entry matching the search string typed so far.
+ Any other key sequence bound to a readline command will terminate the
+ search and execute that command. For instance, a _n_e_w_l_i_n_e will termi-
nate the search and accept the line, thereby executing the command from
the history list.
Readline remembers the last incremental search string. If two Control-
- Rs are typed without any intervening characters defining a new search
+ Rs are typed without any intervening characters defining a new search
string, any remembered search string is used.
- Non-incremental searches read the entire search string before starting
- to search for matching history lines. The search string may be typed
+ Non-incremental searches read the entire search string before starting
+ to search for matching history lines. The search string may be typed
by the user or be part of the contents of the current line.
RReeaaddlliinnee CCoommmmaanndd NNaammeess
- The following is a list of the names of the commands and the default
+ The following is a list of the names of the commands and the default
key sequences to which they are bound. Command names without an accom-
panying key sequence are unbound by default. In the following descrip-
- tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to
- a cursor position saved by the sseett--mmaarrkk command. The text between the
+ tions, _p_o_i_n_t refers to the current cursor position, and _m_a_r_k refers to
+ a cursor position saved by the sseett--mmaarrkk command. The text between the
point and mark is referred to as the _r_e_g_i_o_n.
CCoommmmaannddss ffoorr MMoovviinngg
@@ -3524,33 +3699,33 @@ RREEAADDLLIINNEE
Move forward to the end of the next word. Words are composed of
alphanumeric characters (letters and digits).
bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
- Move back to the start of the current or previous word. Words
+ Move back to the start of the current or previous word. Words
are composed of alphanumeric characters (letters and digits).
sshheellll--ffoorrwwaarrdd--wwoorrdd
- Move forward to the end of the next word. Words are delimited
+ Move forward to the end of the next word. Words are delimited
by non-quoted shell metacharacters.
sshheellll--bbaacckkwwaarrdd--wwoorrdd
- Move back to the start of the current or previous word. Words
+ Move back to the start of the current or previous word. Words
are delimited by non-quoted shell metacharacters.
pprreevviioouuss--ssccrreeeenn--lliinnee
- Attempt to move point to the same physical screen column on the
- previous physical screen line. This will not have the desired
- effect if the current Readline line does not take up more than
- one physical line or if point is not greater than the length of
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current readline line does not take up more than
+ one physical line or if point is not greater than the length of
the prompt plus the screen width.
nneexxtt--ssccrreeeenn--lliinnee
- Attempt to move point to the same physical screen column on the
+ Attempt to move point to the same physical screen column on the
next physical screen line. This will not have the desired effect
- if the current Readline line does not take up more than one
- physical line or if the length of the current Readline line is
+ if the current readline line does not take up more than one
+ physical line or if the length of the current readline line is
not greater than the length of the prompt plus the screen width.
cclleeaarr--ddiissppllaayy ((MM--CC--ll))
- Clear the screen and, if possible, the terminal's scrollback
- buffer, then redraw the current line, leaving the current line
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line
at the top of the screen.
cclleeaarr--ssccrreeeenn ((CC--ll))
Clear the screen, then redraw the current line, leaving the cur-
- rent line at the top of the screen. With an argument, refresh
+ rent line at the top of the screen. With an argument, refresh
the current line without clearing the screen.
rreeddrraaww--ccuurrrreenntt--lliinnee
Refresh the current line.
@@ -3558,20 +3733,29 @@ RREEAADDLLIINNEE
CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy
aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn))
Accept the line regardless of where the cursor is. If this line
- is non-empty, add it to the history list according to the state
- of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history
+ is non-empty, add it to the history list according to the state
+ of the HHIISSTTCCOONNTTRROOLL variable. If the line is a modified history
line, then restore the history line to its original state.
pprreevviioouuss--hhiissttoorryy ((CC--pp))
Fetch the previous command from the history list, moving back in
the list.
nneexxtt--hhiissttoorryy ((CC--nn))
- Fetch the next command from the history list, moving forward in
+ Fetch the next command from the history list, moving forward in
the list.
bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<))
Move to the first line in the history.
eenndd--ooff--hhiissttoorryy ((MM-->>))
- Move to the end of the input history, i.e., the line currently
+ Move to the end of the input history, i.e., the line currently
being entered.
+ ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo))
+ Accept the current line for execution and fetch the next line
+ relative to the current line from the history for editing. A
+ numeric argument, if supplied, specifies the history entry to
+ use instead of the current line.
+ ffeettcchh--hhiissttoorryy
+ With a numeric argument, fetch that entry from the history list
+ and make it the current line. Without an argument, move back to
+ the first entry in the history list.
rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr))
Search backward starting at the current line and moving `up'
through the history as necessary. This is an incremental
@@ -3643,67 +3827,62 @@ RREEAADDLLIINNEE
Perform history and alias expansion on the current line.
iinnsseerrtt--llaasstt--aarrgguummeenntt ((MM--..,, MM--__))
A synonym for yyaannkk--llaasstt--aarrgg.
- ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo))
- Accept the current line for execution and fetch the next line
- relative to the current line from the history for editing. A
- numeric argument, if supplied, specifies the history entry to
- use instead of the current line.
eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xx CC--ee))
- Invoke an editor on the current command line, and execute the
+ Invoke an editor on the current command line, and execute the
result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDD--
IITTOORR, and _e_m_a_c_s as the editor, in that order.
CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
_e_n_d_-_o_f_-_f_i_l_e ((uussuuaallllyy CC--dd))
- The character indicating end-of-file as set, for example, by
- ``stty''. If this character is read when there are no charac-
- ters on the line, and point is at the beginning of the line,
- Readline interprets it as the end of input and returns EEOOFF.
+ The character indicating end-of-file as set, for example, by
+ ``stty''. If this character is read when there are no charac-
+ ters on the line, and point is at the beginning of the line,
+ readline interprets it as the end of input and returns EEOOFF.
ddeelleettee--cchhaarr ((CC--dd))
Delete the character at point. If this function is bound to the
same character as the tty EEOOFF character, as CC--dd commonly is, see
above for the effects.
bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
- Delete the character behind the cursor. When given a numeric
+ Delete the character behind the cursor. When given a numeric
argument, save the deleted text on the kill ring.
ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr
- Delete the character under the cursor, unless the cursor is at
+ Delete the character under the cursor, unless the cursor is at
the end of the line, in which case the character behind the cur-
sor is deleted.
qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
- Add the next character typed to the line verbatim. This is how
+ Add the next character typed to the line verbatim. This is how
to insert characters like CC--qq, for example.
ttaabb--iinnsseerrtt ((CC--vv TTAABB))
Insert a tab character.
sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......))
Insert the character typed.
ttrraannssppoossee--cchhaarrss ((CC--tt))
- Drag the character before point forward over the character at
- point, moving point forward as well. If point is at the end of
- the line, then this transposes the two characters before point.
+ Drag the character before point forward over the character at
+ point, moving point forward as well. If point is at the end of
+ the line, then this transposes the two characters before point.
Negative arguments have no effect.
ttrraannssppoossee--wwoorrddss ((MM--tt))
- Drag the word before point past the word after point, moving
- point over that word as well. If point is at the end of the
+ Drag the word before point past the word after point, moving
+ point over that word as well. If point is at the end of the
line, this transposes the last two words on the line.
uuppccaassee--wwoorrdd ((MM--uu))
- Uppercase the current (or following) word. With a negative ar-
+ Uppercase the current (or following) word. With a negative ar-
gument, uppercase the previous word, but do not move point.
ddoowwnnccaassee--wwoorrdd ((MM--ll))
- Lowercase the current (or following) word. With a negative ar-
+ Lowercase the current (or following) word. With a negative ar-
gument, lowercase the previous word, but do not move point.
ccaappiittaalliizzee--wwoorrdd ((MM--cc))
Capitalize the current (or following) word. With a negative ar-
gument, capitalize the previous word, but do not move point.
oovveerrwwrriittee--mmooddee
- Toggle overwrite mode. With an explicit positive numeric argu-
+ Toggle overwrite mode. With an explicit positive numeric argu-
ment, switches to overwrite mode. With an explicit non-positive
numeric argument, switches to insert mode. This command affects
- only eemmaaccss mode; vvii mode does overwrite differently. Each call
+ only eemmaaccss mode; vvii mode does overwrite differently. Each call
to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In overwrite mode, charac-
- ters bound to sseellff--iinnsseerrtt replace the text at point rather than
- pushing the text to the right. Characters bound to bbaacckk--
- wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a
+ ters bound to sseellff--iinnsseerrtt replace the text at point rather than
+ pushing the text to the right. Characters bound to bbaacckk--
+ wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a
space. By default, this command is unbound.
KKiilllliinngg aanndd YYaannkkiinngg
@@ -3712,31 +3891,31 @@ RREEAADDLLIINNEE
bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt))
Kill backward to the beginning of the line.
uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
- Kill backward from point to the beginning of the line. The
+ Kill backward from point to the beginning of the line. The
killed text is saved on the kill-ring.
kkiillll--wwhhoollee--lliinnee
- Kill all characters on the current line, no matter where point
+ Kill all characters on the current line, no matter where point
is.
kkiillll--wwoorrdd ((MM--dd))
- Kill from point to the end of the current word, or if between
- words, to the end of the next word. Word boundaries are the
+ Kill from point to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the
same as those used by ffoorrwwaarrdd--wwoorrdd.
bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
- Kill the word behind point. Word boundaries are the same as
+ Kill the word behind point. Word boundaries are the same as
those used by bbaacckkwwaarrdd--wwoorrdd.
sshheellll--kkiillll--wwoorrdd
- Kill from point to the end of the current word, or if between
- words, to the end of the next word. Word boundaries are the
+ Kill from point to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the
same as those used by sshheellll--ffoorrwwaarrdd--wwoorrdd.
sshheellll--bbaacckkwwaarrdd--kkiillll--wwoorrdd
- Kill the word behind point. Word boundaries are the same as
+ Kill the word behind point. Word boundaries are the same as
those used by sshheellll--bbaacckkwwaarrdd--wwoorrdd.
uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
- Kill the word behind point, using white space as a word bound-
+ Kill the word behind point, using white space as a word bound-
ary. The killed text is saved on the kill-ring.
uunniixx--ffiilleennaammee--rruubboouutt
- Kill the word behind point, using white space and the slash
- character as the word boundaries. The killed text is saved on
+ Kill the word behind point, using white space and the slash
+ character as the word boundaries. The killed text is saved on
the kill-ring.
ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
Delete all spaces and tabs around point.
@@ -3745,64 +3924,64 @@ RREEAADDLLIINNEE
ccooppyy--rreeggiioonn--aass--kkiillll
Copy the text in the region to the kill buffer.
ccooppyy--bbaacckkwwaarrdd--wwoorrdd
- Copy the word before point to the kill buffer. The word bound-
+ Copy the word before point to the kill buffer. The word bound-
aries are the same as bbaacckkwwaarrdd--wwoorrdd.
ccooppyy--ffoorrwwaarrdd--wwoorrdd
- Copy the word following point to the kill buffer. The word
+ Copy the word following point to the kill buffer. The word
boundaries are the same as ffoorrwwaarrdd--wwoorrdd.
yyaannkk ((CC--yy))
Yank the top of the kill ring into the buffer at point.
yyaannkk--ppoopp ((MM--yy))
- Rotate the kill ring, and yank the new top. Only works follow-
+ Rotate the kill ring, and yank the new top. Only works follow-
ing yyaannkk or yyaannkk--ppoopp.
NNuummeerriicc AArrgguummeennttss
ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----))
- Add this digit to the argument already accumulating, or start a
+ Add this digit to the argument already accumulating, or start a
new argument. M-- starts a negative argument.
uunniivveerrssaall--aarrgguummeenntt
- This is another way to specify an argument. If this command is
- followed by one or more digits, optionally with a leading minus
- sign, those digits define the argument. If the command is fol-
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is fol-
lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the nu-
meric argument, but is otherwise ignored. As a special case, if
this command is immediately followed by a character that is nei-
- ther a digit nor minus sign, the argument count for the next
- command is multiplied by four. The argument count is initially
- one, so executing this function the first time makes the argu-
+ ther a digit nor minus sign, the argument count for the next
+ command is multiplied by four. The argument count is initially
+ one, so executing this function the first time makes the argu-
ment count four, a second time makes the argument count sixteen,
and so on.
CCoommpplleettiinngg
ccoommpplleettee ((TTAABB))
- Attempt to perform completion on the text before point. BBaasshh
+ Attempt to perform completion on the text before point. BBaasshh
attempts completion treating the text as a variable (if the text
- begins with $$), username (if the text begins with ~~), hostname
- (if the text begins with @@), or command (including aliases and
+ begins with $$), username (if the text begins with ~~), hostname
+ (if the text begins with @@), or command (including aliases and
functions) in turn. If none of these produces a match, filename
completion is attempted.
ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
List the possible completions of the text before point.
iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
- Insert all completions of the text before point that would have
+ Insert all completions of the text before point that would have
been generated by ppoossssiibbllee--ccoommpplleettiioonnss.
mmeennuu--ccoommpplleettee
- Similar to ccoommpplleettee, but replaces the word to be completed with
- a single match from the list of possible completions. Repeated
- execution of mmeennuu--ccoommpplleettee steps through the list of possible
- completions, inserting each match in turn. At the end of the
+ Similar to ccoommpplleettee, but replaces the word to be completed with
+ a single match from the list of possible completions. Repeated
+ execution of mmeennuu--ccoommpplleettee steps through the list of possible
+ completions, inserting each match in turn. At the end of the
list of completions, the bell is rung (subject to the setting of
bbeellll--ssttyyllee) and the original text is restored. An argument of _n
moves _n positions forward in the list of matches; a negative ar-
gument may be used to move backward through the list. This com-
mand is intended to be bound to TTAABB, but is unbound by default.
mmeennuu--ccoommpplleettee--bbaacckkwwaarrdd
- Identical to mmeennuu--ccoommpplleettee, but moves backward through the list
- of possible completions, as if mmeennuu--ccoommpplleettee had been given a
+ Identical to mmeennuu--ccoommpplleettee, but moves backward through the list
+ of possible completions, as if mmeennuu--ccoommpplleettee had been given a
negative argument. This command is unbound by default.
ddeelleettee--cchhaarr--oorr--lliisstt
- Deletes the character under the cursor if not at the beginning
- or end of the line (like ddeelleettee--cchhaarr). If at the end of the
+ Deletes the character under the cursor if not at the beginning
+ or end of the line (like ddeelleettee--cchhaarr). If at the end of the
line, behaves identically to ppoossssiibbllee--ccoommpplleettiioonnss. This command
is unbound by default.
ccoommpplleettee--ffiilleennaammee ((MM--//))
@@ -3811,67 +3990,67 @@ RREEAADDLLIINNEE
List the possible completions of the text before point, treating
it as a filename.
ccoommpplleettee--uusseerrnnaammee ((MM--~~))
- Attempt completion on the text before point, treating it as a
+ Attempt completion on the text before point, treating it as a
username.
ppoossssiibbllee--uusseerrnnaammee--ccoommpplleettiioonnss ((CC--xx ~~))
List the possible completions of the text before point, treating
it as a username.
ccoommpplleettee--vvaarriiaabbllee ((MM--$$))
- Attempt completion on the text before point, treating it as a
+ Attempt completion on the text before point, treating it as a
shell variable.
ppoossssiibbllee--vvaarriiaabbllee--ccoommpplleettiioonnss ((CC--xx $$))
List the possible completions of the text before point, treating
it as a shell variable.
ccoommpplleettee--hhoossttnnaammee ((MM--@@))
- Attempt completion on the text before point, treating it as a
+ Attempt completion on the text before point, treating it as a
hostname.
ppoossssiibbllee--hhoossttnnaammee--ccoommpplleettiioonnss ((CC--xx @@))
List the possible completions of the text before point, treating
it as a hostname.
ccoommpplleettee--ccoommmmaanndd ((MM--!!))
- Attempt completion on the text before point, treating it as a
- command name. Command completion attempts to match the text
- against aliases, reserved words, shell functions, shell
+ Attempt completion on the text before point, treating it as a
+ command name. Command completion attempts to match the text
+ against aliases, reserved words, shell functions, shell
builtins, and finally executable filenames, in that order.
ppoossssiibbllee--ccoommmmaanndd--ccoommpplleettiioonnss ((CC--xx !!))
List the possible completions of the text before point, treating
it as a command name.
ddyynnaammiicc--ccoommpplleettee--hhiissttoorryy ((MM--TTAABB))
- Attempt completion on the text before point, comparing the text
- against lines from the history list for possible completion
+ Attempt completion on the text before point, comparing the text
+ against lines from the history list for possible completion
matches.
ddaabbbbrreevv--eexxppaanndd
- Attempt menu completion on the text before point, comparing the
+ Attempt menu completion on the text before point, comparing the
text against lines from the history list for possible completion
matches.
ccoommpplleettee--iinnttoo--bbrraacceess ((MM--{{))
Perform filename completion and insert the list of possible com-
- pletions enclosed within braces so the list is available to the
+ pletions enclosed within braces so the list is available to the
shell (see BBrraaccee EExxppaannssiioonn above).
KKeeyybbooaarrdd MMaaccrrooss
ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (())
- Begin saving the characters typed into the current keyboard
+ Begin saving the characters typed into the current keyboard
macro.
eenndd--kkbbdd--mmaaccrroo ((CC--xx ))))
Stop saving the characters typed into the current keyboard macro
and store the definition.
ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee))
- Re-execute the last keyboard macro defined, by making the char-
+ Re-execute the last keyboard macro defined, by making the char-
acters in the macro appear as if typed at the keyboard.
pprriinntt--llaasstt--kkbbdd--mmaaccrroo (())
- Print the last keyboard macro defined in a format suitable for
+ Print the last keyboard macro defined in a format suitable for
the _i_n_p_u_t_r_c file.
MMiisscceellllaanneeoouuss
rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr))
- Read in the contents of the _i_n_p_u_t_r_c file, and incorporate any
+ Read in the contents of the _i_n_p_u_t_r_c file, and incorporate any
bindings or variable assignments found there.
aabboorrtt ((CC--gg))
- Abort the current editing command and ring the terminal's bell
+ Abort the current editing command and ring the terminal's bell
(subject to the setting of bbeellll--ssttyyllee).
ddoo--lloowweerrccaassee--vveerrssiioonn ((MM--AA,, MM--BB,, MM--_x,, ......))
- If the metafied character _x is uppercase, run the command that
+ If the metafied character _x is uppercase, run the command that
is bound to the corresponding metafied lowercase character. The
behavior is undefined if _x is already lowercase.
pprreeffiixx--mmeettaa ((EESSCC))
@@ -3879,46 +4058,51 @@ RREEAADDLLIINNEE
uunnddoo ((CC--__,, CC--xx CC--uu))
Incremental undo, separately remembered for each line.
rreevveerrtt--lliinnee ((MM--rr))
- Undo all changes made to this line. This is like executing the
- uunnddoo command enough times to return the line to its initial
+ Undo all changes made to this line. This is like executing the
+ uunnddoo command enough times to return the line to its initial
state.
ttiillddee--eexxppaanndd ((MM--&&))
Perform tilde expansion on the current word.
sseett--mmaarrkk ((CC--@@,, MM--<<ssppaaccee>>))
- Set the mark to the point. If a numeric argument is supplied,
+ Set the mark to the point. If a numeric argument is supplied,
the mark is set to that position.
eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx))
- Swap the point with the mark. The current cursor position is
- set to the saved position, and the old cursor position is saved
+ Swap the point with the mark. The current cursor position is
+ set to the saved position, and the old cursor position is saved
as the mark.
cchhaarraacctteerr--sseeaarrcchh ((CC--]]))
A character is read and point is moved to the next occurrence of
- that character. A negative count searches for previous occur-
- rences.
+ that character. A negative argument searches for previous oc-
+ currences.
cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]]))
- A character is read and point is moved to the previous occur-
- rence of that character. A negative count searches for subse-
- quent occurrences.
+ A character is read and point is moved to the previous occur-
+ rence of that character. A negative argument searches for sub-
+ sequent occurrences.
sskkiipp--ccssii--sseeqquueennccee
- Read enough characters to consume a multi-key sequence such as
- those defined for keys like Home and End. Such sequences begin
+ Read enough characters to consume a multi-key sequence such as
+ those defined for keys like Home and End. Such sequences begin
with a Control Sequence Indicator (CSI), usually ESC-[. If this
- sequence is bound to "\[", keys producing such sequences will
- have no effect unless explicitly bound to a readline command,
- instead of inserting stray characters into the editing buffer.
+ sequence is bound to "\[", keys producing such sequences will
+ have no effect unless explicitly bound to a readline command,
+ instead of inserting stray characters into the editing buffer.
This is unbound by default, but usually bound to ESC-[.
iinnsseerrtt--ccoommmmeenntt ((MM--##))
- Without a numeric argument, the value of the readline ccoomm--
- mmeenntt--bbeeggiinn variable is inserted at the beginning of the current
+ Without a numeric argument, the value of the readline ccoomm--
+ mmeenntt--bbeeggiinn variable is inserted at the beginning of the current
line. If a numeric argument is supplied, this command acts as a
- toggle: if the characters at the beginning of the line do not
- match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other-
+ toggle: if the characters at the beginning of the line do not
+ match the value of ccoommmmeenntt--bbeeggiinn, the value is inserted, other-
wise the characters in ccoommmmeenntt--bbeeggiinn are deleted from the begin-
- ning of the line. In either case, the line is accepted as if a
- newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn
- causes this command to make the current line a shell comment.
- If a numeric argument causes the comment character to be re-
+ ning of the line. In either case, the line is accepted as if a
+ newline had been typed. The default value of ccoommmmeenntt--bbeeggiinn
+ causes this command to make the current line a shell comment.
+ If a numeric argument causes the comment character to be re-
moved, the line will be executed by the shell.
+ ssppeellll--ccoorrrreecctt--wwoorrdd ((CC--xx ss))
+ Perform spelling correction on the current word, treating it as
+ a directory or filename, in the same way as the ccddssppeellll shell
+ option. Word boundaries are the same as those used by
+ sshheellll--ffoorrwwaarrdd--wwoorrdd.
gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg))
The word before point is treated as a pattern for pathname ex-
pansion, with an asterisk implicitly appended. This pattern is
@@ -4295,21 +4479,21 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
vironment and return the exit status of the last command exe-
cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash,
filenames in PPAATTHH are used to find the directory containing
- _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable.
- When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is
- searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option
- to the sshhoopptt builtin command is turned off, the PPAATTHH is not
- searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi-
- tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the po-
- sitional parameters are unchanged. If the --TT option is enabled,
- ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any DDEEBBUUGG trap
- string is saved and restored around the call to ssoouurrccee, and
- ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If --TT is not
- set, and the sourced file changes the DDEEBBUUGG trap, the new value
- is retained when ssoouurrccee completes. The return status is the
- status of the last command exited within the script (0 if no
- commands are executed), and false if _f_i_l_e_n_a_m_e is not found or
- cannot be read.
+ _f_i_l_e_n_a_m_e, but _f_i_l_e_n_a_m_e does not need to be executable. The file
+ searched for in PPAATTHH need not be executable. When bbaasshh is not
+ in _p_o_s_i_x _m_o_d_e, it searches the current directory if no file is
+ found in PPAATTHH. If the ssoouurrcceeppaatthh option to the sshhoopptt builtin
+ command is turned off, the PPAATTHH is not searched. If any _a_r_g_u_-
+ _m_e_n_t_s are supplied, they become the positional parameters when
+ _f_i_l_e_n_a_m_e is executed. Otherwise the positional parameters are
+ unchanged. If the --TT option is enabled, .. inherits any trap on
+ DDEEBBUUGG; if it is not, any DDEEBBUUGG trap string is saved and restored
+ around the call to .., and .. unsets the DDEEBBUUGG trap while it exe-
+ cutes. If --TT is not set, and the sourced file changes the DDEEBBUUGG
+ trap, the new value is retained when .. completes. The return
+ status is the status of the last command exited within the
+ script (0 if no commands are executed), and false if _f_i_l_e_n_a_m_e is
+ not found or cannot be read.
aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
AAlliiaass with no arguments or with the --pp option prints the list of
@@ -4336,29 +4520,31 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d
bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e
bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d
+ bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d_-_l_i_n_e
Display current rreeaaddlliinnee key and function bindings, bind a key
sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee
variable. Each non-option argument is a command as it would ap-
- pear in _._i_n_p_u_t_r_c, but each binding or command must be passed as
- a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. Op-
- tions, if supplied, have the following meanings:
+ pear in a rreeaaddlliinnee initialization file such as _._i_n_p_u_t_r_c, but
+ each binding or command must be passed as a separate argument;
+ e.g., '"\C-x\C-r": re-read-init-file'. Options, if supplied,
+ have the following meanings:
--mm _k_e_y_m_a_p
Use _k_e_y_m_a_p as the keymap to be affected by the subsequent
bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_-
- _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d,
- and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e
- is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_-
+ _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d,
+ and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e
+ is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_-
_d_a_r_d.
--ll List the names of all rreeaaddlliinnee functions.
- --pp Display rreeaaddlliinnee function names and bindings in such a
+ --pp Display rreeaaddlliinnee function names and bindings in such a
way that they can be re-read.
--PP List current rreeaaddlliinnee function names and bindings.
- --ss Display rreeaaddlliinnee key sequences bound to macros and the
- strings they output in such a way that they can be re-
+ --ss Display rreeaaddlliinnee key sequences bound to macros and the
+ strings they output in such a way that they can be re-
read.
- --SS Display rreeaaddlliinnee key sequences bound to macros and the
+ --SS Display rreeaaddlliinnee key sequences bound to macros and the
strings they output.
- --vv Display rreeaaddlliinnee variable names and values in such a way
+ --vv Display rreeaaddlliinnee variable names and values in such a way
that they can be re-read.
--VV List current rreeaaddlliinnee variable names and values.
--ff _f_i_l_e_n_a_m_e
@@ -4371,14 +4557,17 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
Remove any current binding for _k_e_y_s_e_q.
--xx _k_e_y_s_e_q::_s_h_e_l_l_-_c_o_m_m_a_n_d
Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is en-
- tered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets
- the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd--
+ tered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets
+ the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd--
lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT and RREEAADDLLIINNEE__MMAARRKK
- variables to the current location of the insertion point
- and the saved insertion point (the mark), respectively.
- If the executed command changes the value of any of RREEAADD--
- LLIINNEE__LLIINNEE, RREEAADDLLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new
- values will be reflected in the editing state.
+ variables to the current location of the insertion point
+ and the saved insertion point (the mark), respectively.
+ The shell assigns any numeric argument the user supplied
+ to the RREEAADDLLIINNEE__AARRGGUUMMEENNTT variable. If there was no argu-
+ ment, that variable is not set. If the executed command
+ changes the value of any of RREEAADDLLIINNEE__LLIINNEE, RREEAADD--
+ LLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new values will be
+ reflected in the editing state.
--XX List all key sequences bound to shell commands and the
associated commands in a format that can be reused as in-
put.
@@ -4416,137 +4605,140 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r]
Change the current directory to _d_i_r. if _d_i_r is not supplied,
- the value of the HHOOMMEE shell variable is the default. Any addi-
- tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH
- defines the search path for the directory containing _d_i_r: each
- directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative di-
- rectory names in CCDDPPAATTHH are separated by a colon (:). A null
- directory name in CCDDPPAATTHH is the same as the current directory,
- i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not
- used. The --PP option causes ccdd to use the physical directory
- structure by resolving symbolic links while traversing _d_i_r and
- before processing instances of _._. in _d_i_r (see also the --PP option
- to the sseett builtin command); the --LL option forces symbolic links
- to be followed by resolving the link after processing instances
- of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing
- the immediately previous pathname component from _d_i_r, back to a
- slash or the beginning of _d_i_r. If the --ee option is supplied
- with --PP, and the current working directory cannot be success-
- fully determined after a successful directory change, ccdd will
- return an unsuccessful status. On systems that support it, the
- --@@ option presents the extended attributes associated with a
- file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD
- before the directory change is attempted. If a non-empty direc-
- tory name from CCDDPPAATTHH is used, or if -- is the first argument,
- and the directory change is successful, the absolute pathname of
- the new working directory is written to the standard output.
- The return value is true if the directory was successfully
- changed; false otherwise.
+ the value of the HHOOMMEE shell variable is the default. The vari-
+ able CCDDPPAATTHH defines the search path for the directory containing
+ _d_i_r: each directory name in CCDDPPAATTHH is searched for _d_i_r. Alter-
+ native directory names in CCDDPPAATTHH are separated by a colon (:).
+ A null directory name in CCDDPPAATTHH is the same as the current di-
+ rectory, i.e., ``..''. If _d_i_r begins with a slash (/), then CCDD--
+ PPAATTHH is not used. The --PP option causes ccdd to use the physical
+ directory structure by resolving symbolic links while traversing
+ _d_i_r and before processing instances of _._. in _d_i_r (see also the
+ --PP option to the sseett builtin command); the --LL option forces sym-
+ bolic links to be followed by resolving the link after process-
+ ing instances of _._. in _d_i_r. If _._. appears in _d_i_r, it is pro-
+ cessed by removing the immediately previous pathname component
+ from _d_i_r, back to a slash or the beginning of _d_i_r. If the --ee
+ option is supplied with --PP, and the current working directory
+ cannot be successfully determined after a successful directory
+ change, ccdd will return an unsuccessful status. On systems that
+ support it, the --@@ option presents the extended attributes asso-
+ ciated with a file as a directory. An argument of -- is con-
+ verted to $$OOLLDDPPWWDD before the directory change is attempted. If
+ a non-empty directory name from CCDDPPAATTHH is used, or if -- is the
+ first argument, and the directory change is successful, the ab-
+ solute pathname of the new working directory is written to the
+ standard output. If the directory change is successful, ccdd sets
+ the value of the PPWWDD environment variable to the new directory
+ name, and sets the OOLLDDPPWWDD environment variable to the value of
+ the current working directory before the change. The return
+ value is true if the directory was successfully changed; false
+ otherwise.
ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...]
- Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function
+ Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function
lookup. Only builtin commands or commands found in the PPAATTHH are
- executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is
- performed using a default value for PPAATTHH that is guaranteed to
- find all of the standard utilities. If either the --VV or --vv op-
- tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv
- option causes a single word indicating the command or filename
+ executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is
+ performed using a default value for PPAATTHH that is guaranteed to
+ find all of the standard utilities. If either the --VV or --vv op-
+ tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv
+ option causes a single word indicating the command or filename
used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a
- more verbose description. If the --VV or --vv option is supplied,
- the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If
+ more verbose description. If the --VV or --vv option is supplied,
+ the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If
neither option is supplied and an error occurred or _c_o_m_m_a_n_d can-
- not be found, the exit status is 127. Otherwise, the exit sta-
+ not be found, the exit status is 127. Otherwise, the exit sta-
tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d.
ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d]
- Generate possible completion matches for _w_o_r_d according to the
- _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee
- builtin with the exception of --pp and --rr, and write the matches
- to the standard output. When using the --FF or --CC options, the
- various shell variables set by the programmable completion fa-
+ Generate possible completion matches for _w_o_r_d according to the
+ _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee
+ builtin with the exception of --pp and --rr, and write the matches
+ to the standard output. When using the --FF or --CC options, the
+ various shell variables set by the programmable completion fa-
cilities, while available, will not have useful values.
The matches will be generated in the same way as if the program-
mable completion code had generated them directly from a comple-
- tion specification with the same flags. If _w_o_r_d is specified,
+ tion specification with the same flags. If _w_o_r_d is specified,
only those completions matching _w_o_r_d will be displayed.
- The return value is true unless an invalid option is supplied,
+ The return value is true unless an invalid option is supplied,
or no matches were generated.
- ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_-
+ ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_-
_p_a_t] [--WW _w_o_r_d_l_i_s_t]
- [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_-
+ [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_-
_f_i_x] _n_a_m_e [_n_a_m_e _._._.]
ccoommpplleettee --pprr [--DDEEII] [_n_a_m_e ...]
- Specify how arguments to each _n_a_m_e should be completed. If the
- --pp option is supplied, or if no options are supplied, existing
- completion specifications are printed in a way that allows them
+ Specify how arguments to each _n_a_m_e should be completed. If the
+ --pp option is supplied, or if no options are supplied, existing
+ completion specifications are printed in a way that allows them
to be reused as input. The --rr option removes a completion spec-
- ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com-
+ ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com-
pletion specifications. The --DD option indicates that other sup-
- plied options and actions should apply to the ``default'' com-
- mand completion; that is, completion attempted on a command for
- which no completion has previously been defined. The --EE option
- indicates that other supplied options and actions should apply
- to ``empty'' command completion; that is, completion attempted
- on a blank line. The --II option indicates that other supplied
- options and actions should apply to completion on the initial
- non-assignment word on the line, or after a command delimiter
- such as ;; or ||, which is usually command name completion. If
- multiple options are supplied, the --DD option takes precedence
+ plied options and actions should apply to the ``default'' com-
+ mand completion; that is, completion attempted on a command for
+ which no completion has previously been defined. The --EE option
+ indicates that other supplied options and actions should apply
+ to ``empty'' command completion; that is, completion attempted
+ on a blank line. The --II option indicates that other supplied
+ options and actions should apply to completion on the initial
+ non-assignment word on the line, or after a command delimiter
+ such as ;; or ||, which is usually command name completion. If
+ multiple options are supplied, the --DD option takes precedence
over --EE, and both take precedence over --II. If any of --DD, --EE, or
- --II are supplied, any other _n_a_m_e arguments are ignored; these
+ --II are supplied, any other _n_a_m_e arguments are ignored; these
completions only apply to the case specified by the option.
- The process of applying these completion specifications when
- word completion is attempted is described above under PPrrooggrraamm--
+ The process of applying these completion specifications when
+ word completion is attempted is described above under PPrrooggrraamm--
mmaabbllee CCoommpplleettiioonn.
- Other options, if specified, have the following meanings. The
- arguments to the --GG, --WW, and --XX options (and, if necessary, the
- --PP and --SS options) should be quoted to protect them from expan-
+ Other options, if specified, have the following meanings. The
+ arguments to the --GG, --WW, and --XX options (and, if necessary, the
+ --PP and --SS options) should be quoted to protect them from expan-
sion before the ccoommpplleettee builtin is invoked.
--oo _c_o_m_p_-_o_p_t_i_o_n
- The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp-
- spec's behavior beyond the simple generation of comple-
+ The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp-
+ spec's behavior beyond the simple generation of comple-
tions. _c_o_m_p_-_o_p_t_i_o_n may be one of:
bbaasshhddeeffaauulltt
Perform the rest of the default bbaasshh completions
if the compspec generates no matches.
- ddeeffaauulltt Use readline's default filename completion if
+ ddeeffaauulltt Use readline's default filename completion if
the compspec generates no matches.
ddiirrnnaammeess
- Perform directory name completion if the comp-
+ Perform directory name completion if the comp-
spec generates no matches.
ffiilleennaammeess
- Tell readline that the compspec generates file-
- names, so it can perform any filename-specific
- processing (like adding a slash to directory
- names, quoting special characters, or suppress-
- ing trailing spaces). Intended to be used with
+ Tell readline that the compspec generates file-
+ names, so it can perform any filename-specific
+ processing (like adding a slash to directory
+ names, quoting special characters, or suppress-
+ ing trailing spaces). Intended to be used with
shell functions.
- nnooqquuoottee Tell readline not to quote the completed words
- if they are filenames (quoting filenames is the
+ nnooqquuoottee Tell readline not to quote the completed words
+ if they are filenames (quoting filenames is the
default).
- nnoossoorrtt Tell readline not to sort the list of possible
+ nnoossoorrtt Tell readline not to sort the list of possible
completions alphabetically.
- nnoossppaaccee Tell readline not to append a space (the de-
- fault) to words completed at the end of the
+ nnoossppaaccee Tell readline not to append a space (the de-
+ fault) to words completed at the end of the
line.
pplluussddiirrss
- After any matches defined by the compspec are
+ After any matches defined by the compspec are
generated, directory name completion is at-
tempted and any matches are added to the results
of the other actions.
--AA _a_c_t_i_o_n
- The _a_c_t_i_o_n may be one of the following to generate a
+ The _a_c_t_i_o_n may be one of the following to generate a
list of possible completions:
aalliiaass Alias names. May also be specified as --aa.
aarrrraayyvvaarr
Array variable names.
bbiinnddiinngg RReeaaddlliinnee key binding names.
- bbuuiillttiinn Names of shell builtin commands. May also be
+ bbuuiillttiinn Names of shell builtin commands. May also be
specified as --bb.
ccoommmmaanndd Command names. May also be specified as --cc.
ddiirreeccttoorryy
@@ -4554,7 +4746,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
ddiissaabblleedd
Names of disabled shell builtins.
eennaabblleedd Names of enabled shell builtins.
- eexxppoorrtt Names of exported shell variables. May also be
+ eexxppoorrtt Names of exported shell variables. May also be
specified as --ee.
ffiillee File names. May also be specified as --ff.
ffuunnccttiioonn
@@ -4563,17 +4755,17 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
hheellppttooppiicc
Help topics as accepted by the hheellpp builtin.
hhoossttnnaammee
- Hostnames, as taken from the file specified by
+ Hostnames, as taken from the file specified by
the HHOOSSTTFFIILLEE shell variable.
- jjoobb Job names, if job control is active. May also
+ jjoobb Job names, if job control is active. May also
be specified as --jj.
- kkeeyywwoorrdd Shell reserved words. May also be specified as
+ kkeeyywwoorrdd Shell reserved words. May also be specified as
--kk.
rruunnnniinngg Names of running jobs, if job control is active.
sseerrvviiccee Service names. May also be specified as --ss.
- sseettoopptt Valid arguments for the --oo option to the sseett
+ sseettoopptt Valid arguments for the --oo option to the sseett
builtin.
- sshhoopptt Shell option names as accepted by the sshhoopptt
+ sshhoopptt Shell option names as accepted by the sshhoopptt
builtin.
ssiiggnnaall Signal names.
ssttooppppeedd Names of stopped jobs, if job control is active.
@@ -4582,8 +4774,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
Names of all shell variables. May also be spec-
ified as --vv.
--CC _c_o_m_m_a_n_d
- _c_o_m_m_a_n_d is executed in a subshell environment, and its
- output is used as the possible completions.
+ _c_o_m_m_a_n_d is executed in a subshell environment, and its
+ output is used as the possible completions. Arguments
+ are passed as with the --FF option.
--FF _f_u_n_c_t_i_o_n
The shell function _f_u_n_c_t_i_o_n is executed in the current
shell environment. When the function is executed, the
@@ -4805,16 +4998,22 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
instead of the shell builtin version, run ``enable -n test''.
The --ff option means to load the new builtin command _n_a_m_e from
shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading.
- The --dd option will delete a builtin previously loaded with --ff.
- If no _n_a_m_e arguments are given, or if the --pp option is supplied,
- a list of shell builtins is printed. With no other option argu-
- ments, the list consists of all enabled shell builtins. If --nn
- is supplied, only disabled builtins are printed. If --aa is sup-
- plied, the list printed includes all builtins, with an indica-
- tion of whether or not each is enabled. If --ss is supplied, the
- output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return
- value is 0 unless a _n_a_m_e is not a shell builtin or there is an
- error loading a new builtin from a shared object.
+ Bash will use the value of the BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH variable as a
+ colon-separated list of directories in which to search for _f_i_l_e_-
+ _n_a_m_e. The default is system-dependent. The --dd option will
+ delete a builtin previously loaded with --ff. If no _n_a_m_e argu-
+ ments are given, or if the --pp option is supplied, a list of
+ shell builtins is printed. With no other option arguments, the
+ list consists of all enabled shell builtins. If --nn is supplied,
+ only disabled builtins are printed. If --aa is supplied, the list
+ printed includes all builtins, with an indication of whether or
+ not each is enabled. If --ss is supplied, the output is re-
+ stricted to the POSIX _s_p_e_c_i_a_l builtins. If no options are sup-
+ plied and a _n_a_m_e is not a shell builtin, eennaabbllee will attempt to
+ load _n_a_m_e from a shared object named _n_a_m_e, as if the command
+ were ``enable -f _n_a_m_e _n_a_m_e . The return value is 0 unless a
+ _n_a_m_e is not a shell builtin or there is an error loading a new
+ builtin from a shared object.
eevvaall [_a_r_g ...]
The _a_r_gs are read and concatenated together into a single com-
@@ -5006,9 +5205,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
back from the end of the history, and an index of -1
refers to the current hhiissttoorryy --dd command.
--dd _s_t_a_r_t-_e_n_d
- Delete the history entries between positions _s_t_a_r_t and
- _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t
- and _e_n_d are interpreted as described above.
+ Delete the range of history entries between positions
+ _s_t_a_r_t and _e_n_d, inclusive. Positive and negative values
+ for _s_t_a_r_t and _e_n_d are interpreted as described above.
--aa Append the ``new'' history lines to the history file.
These are history lines entered since the beginning of
the current bbaasshh session, but not already appended to the
@@ -5036,9 +5235,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
character followed immediately by a digit are interpreted as
timestamps for the following history entry. The return value is
0 unless an invalid option is encountered, an error occurs while
- reading or writing the history file, an invalid _o_f_f_s_e_t is sup-
- plied as an argument to --dd, or the history expansion supplied as
- an argument to --pp fails.
+ reading or writing the history file, an invalid _o_f_f_s_e_t or range
+ is supplied as an argument to --dd, or the history expansion sup-
+ plied as an argument to --pp fails.
jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ]
jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ]
@@ -5140,44 +5339,55 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
_a_r_r_a_y is not an indexed array.
ppooppdd [-nn] [+_n] [-_n]
- Removes entries from the directory stack. With no arguments,
- removes the top directory from the stack, and performs a ccdd to
- the new top directory. Arguments, if supplied, have the follow-
- ing meanings:
- --nn Suppresses the normal change of directory when removing
+ Removes entries from the directory stack. The elements are num-
+ bered from 0 starting at the first directory listed by ddiirrss.
+ With no arguments, ppooppdd removes the top directory from the
+ stack, and changes to the new top directory. Arguments, if sup-
+ plied, have the following meanings:
+ --nn Suppresses the normal change of directory when removing
directories from the stack, so that only the stack is ma-
nipulated.
- ++_n Removes the _nth entry counting from the left of the list
- shown by ddiirrss, starting with zero. For example: ``popd
- +0'' removes the first directory, ``popd +1'' the second.
+ ++_n Removes the _nth entry counting from the left of the list
+ shown by ddiirrss, starting with zero, from the stack. For
+ example: ``popd +0'' removes the first directory, ``popd
+ +1'' the second.
--_n Removes the _nth entry counting from the right of the list
shown by ddiirrss, starting with zero. For example: ``popd
-0'' removes the last directory, ``popd -1'' the next to
last.
- If the ppooppdd command is successful, a ddiirrss is performed as well,
- and the return status is 0. ppooppdd returns false if an invalid
- option is encountered, the directory stack is empty, a non-exis-
- tent directory stack entry is specified, or the directory change
- fails.
+ If the top element of the directory stack is modified, and the
+ _-_n option was not supplied, ppooppdd uses the ccdd builtin to change
+ to the directory at the top of the stack. If the ccdd fails, ppooppdd
+ returns a non-zero value.
+
+ Otherwise, ppooppdd returns false if an invalid option is encoun-
+ tered, the directory stack is empty, or a non-existent directory
+ stack entry is specified.
+
+ If the ppooppdd command is successful, bash runs ddiirrss to show the
+ final contents of the directory stack, and the return status is
+ 0.
pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s]
- Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the
- control of the _f_o_r_m_a_t. The --vv option causes the output to be
- assigned to the variable _v_a_r rather than being printed to the
+ Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the
+ control of the _f_o_r_m_a_t. The --vv option causes the output to be
+ assigned to the variable _v_a_r rather than being printed to the
standard output.
- The _f_o_r_m_a_t is a character string which contains three types of
- objects: plain characters, which are simply copied to standard
- output, character escape sequences, which are converted and
- copied to the standard output, and format specifications, each
- of which causes printing of the next successive _a_r_g_u_m_e_n_t. In
+ The _f_o_r_m_a_t is a character string which contains three types of
+ objects: plain characters, which are simply copied to standard
+ output, character escape sequences, which are converted and
+ copied to the standard output, and format specifications, each
+ of which causes printing of the next successive _a_r_g_u_m_e_n_t. In
addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff
interprets the following extensions:
%%bb causes pprriinnttff to expand backslash escape sequences in the
corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee.
- %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a
+ %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a
format that can be reused as shell input.
+ %%QQ like %%qq, but applies any supplied precision to the _a_r_g_u_-
+ _m_e_n_t before quoting it.
%%((_d_a_t_e_f_m_t))TT
causes pprriinnttff to output the date-time string resulting
from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3).
@@ -5209,9 +5419,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
ppuusshhdd [--nn] [_d_i_r]
Adds a directory to the top of the directory stack, or rotates
the stack, making the new top of the stack the current working
- directory. With no arguments, ppuusshhdd exchanges the top two di-
- rectories and returns 0, unless the directory stack is empty.
- Arguments, if supplied, have the following meanings:
+ directory. With no arguments, ppuusshhdd exchanges the top two ele-
+ ments of the directory stack. Arguments, if supplied, have the
+ following meanings:
--nn Suppresses the normal change of directory when rotating
or adding directories to the stack, so that only the
stack is manipulated.
@@ -5221,16 +5431,20 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
--_n Rotates the stack so that the _nth directory (counting
from the right of the list shown by ddiirrss, starting with
zero) is at the top.
- _d_i_r Adds _d_i_r to the directory stack at the top, making it the
- new current working directory as if it had been supplied
- as the argument to the ccdd builtin.
+ _d_i_r Adds _d_i_r to the directory stack at the top
+
+ After the stack has been modified, if the --nn option was not sup-
+ plied, ppuusshhdd uses the ccdd builtin to change to the directory at
+ the top of the stack. If the ccdd fails, ppuusshhdd returns a non-zero
+ value.
+
+ Otherwise, if no arguments are supplied, ppuusshhdd returns 0 unless
+ the directory stack is empty. When rotating the directory
+ stack, ppuusshhdd returns 0 unless the directory stack is empty or a
+ non-existent directory stack element is specified.
- If the ppuusshhdd command is successful, a ddiirrss is performed as well.
- If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r
- fails. With the second form, ppuusshhdd returns 0 unless the direc-
- tory stack is empty, a non-existent directory stack element is
- specified, or the directory change to the specified new current
- directory fails.
+ If the ppuusshhdd command is successful, bash runs ddiirrss to show the
+ final contents of the directory stack.
ppwwdd [--LLPP]
Print the absolute pathname of the current working directory.
@@ -5270,7 +5484,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
--ee If the standard input is coming from a terminal, rreeaaddlliinnee
(see RREEAADDLLIINNEE above) is used to obtain the line. Read-
line uses the current (or default, if line editing was
- not previously active) editing settings, but uses Read-
+ not previously active) editing settings, but uses read-
line's default filename completion.
--ii _t_e_x_t
If rreeaaddlliinnee is being used to read the line, _t_e_x_t is
@@ -5312,115 +5526,116 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re-
turns immediately, without trying to read any data. The
exit status is 0 if input is available on the specified
- file descriptor, non-zero otherwise. The exit status is
- greater than 128 if the timeout is exceeded.
+ file descriptor, or the read will return EOF, non-zero
+ otherwise. The exit status is greater than 128 if the
+ timeout is exceeded.
--uu _f_d Read input from file descriptor _f_d.
- If no _n_a_m_e_s are supplied, the line read, without the ending de-
- limiter but otherwise unmodified, is assigned to the variable
- RREEPPLLYY. The exit status is zero, unless end-of-file is encoun-
- tered, rreeaadd times out (in which case the status is greater than
- 128), a variable assignment error (such as assigning to a read-
+ If no _n_a_m_e_s are supplied, the line read, without the ending de-
+ limiter but otherwise unmodified, is assigned to the variable
+ RREEPPLLYY. The exit status is zero, unless end-of-file is encoun-
+ tered, rreeaadd times out (in which case the status is greater than
+ 128), a variable assignment error (such as assigning to a read-
only variable) occurs, or an invalid file descriptor is supplied
as the argument to --uu.
rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...]
- The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s
- may not be changed by subsequent assignment. If the --ff option
- is supplied, the functions corresponding to the _n_a_m_e_s are so
- marked. The --aa option restricts the variables to indexed ar-
- rays; the --AA option restricts the variables to associative ar-
+ The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s
+ may not be changed by subsequent assignment. If the --ff option
+ is supplied, the functions corresponding to the _n_a_m_e_s are so
+ marked. The --aa option restricts the variables to indexed ar-
+ rays; the --AA option restricts the variables to associative ar-
rays. If both options are supplied, --AA takes precedence. If no
- _n_a_m_e arguments are given, or if the --pp option is supplied, a
+ _n_a_m_e arguments are given, or if the --pp option is supplied, a
list of all readonly names is printed. The other options may be
- used to restrict the output to a subset of the set of readonly
- names. The --pp option causes output to be displayed in a format
- that may be reused as input. If a variable name is followed by
- =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return
- status is 0 unless an invalid option is encountered, one of the
+ used to restrict the output to a subset of the set of readonly
+ names. The --pp option causes output to be displayed in a format
+ that may be reused as input. If a variable name is followed by
+ =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return
+ status is 0 unless an invalid option is encountered, one of the
_n_a_m_e_s is not a valid shell variable name, or --ff is supplied with
a _n_a_m_e that is not a function.
rreettuurrnn [_n]
- Causes a function to stop executing and return the value speci-
- fied by _n to its caller. If _n is omitted, the return status is
- that of the last command executed in the function body. If rree--
+ Causes a function to stop executing and return the value speci-
+ fied by _n to its caller. If _n is omitted, the return status is
+ that of the last command executed in the function body. If rree--
ttuurrnn is executed by a trap handler, the last command used to de-
- termine the status is the last command executed before the trap
- handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the last
- command used to determine the status is the last command exe-
- cuted by the trap handler before rreettuurrnn was invoked. If rreettuurrnn
- is used outside a function, but during execution of a script by
- the .. (ssoouurrccee) command, it causes the shell to stop executing
- that script and return either _n or the exit status of the last
- command executed within the script as the exit status of the
+ termine the status is the last command executed before the trap
+ handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the last
+ command used to determine the status is the last command exe-
+ cuted by the trap handler before rreettuurrnn was invoked. If rreettuurrnn
+ is used outside a function, but during execution of a script by
+ the .. (ssoouurrccee) command, it causes the shell to stop executing
+ that script and return either _n or the exit status of the last
+ command executed within the script as the exit status of the
script. If _n is supplied, the return value is its least signif-
- icant 8 bits. The return status is non-zero if rreettuurrnn is sup-
- plied a non-numeric argument, or is used outside a function and
- not during execution of a script by .. or ssoouurrccee. Any command
+ icant 8 bits. The return status is non-zero if rreettuurrnn is sup-
+ plied a non-numeric argument, or is used outside a function and
+ not during execution of a script by .. or ssoouurrccee. Any command
associated with the RREETTUURRNN trap is executed before execution re-
sumes after the function or script.
- sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...]
- sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...]
- Without options, the name and value of each shell variable are
- displayed in a format that can be reused as input for setting or
- resetting the currently-set variables. Read-only variables can-
- not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed.
- The output is sorted according to the current locale. When op-
- tions are specified, they set or unset shell attributes. Any
- arguments remaining after option processing are treated as val-
- ues for the positional parameters and are assigned, in order, to
- $$11, $$22, ...... $$_n. Options, if specified, have the following
- meanings:
+ sseett [--aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...]
+ sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...]
+ Without options, display the name and value of each shell vari-
+ able in a format that can be reused as input for setting or re-
+ setting the currently-set variables. Read-only variables cannot
+ be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed. The
+ output is sorted according to the current locale. When options
+ are specified, they set or unset shell attributes. Any argu-
+ ments remaining after option processing are treated as values
+ for the positional parameters and are assigned, in order, to $$11,
+ $$22, ...... $$_n. Options, if specified, have the following mean-
+ ings:
--aa Each variable or function that is created or modified is
- given the export attribute and marked for export to the
+ given the export attribute and marked for export to the
environment of subsequent commands.
- --bb Report the status of terminated background jobs immedi-
+ --bb Report the status of terminated background jobs immedi-
ately, rather than before the next primary prompt. This
is effective only when job control is enabled.
- --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a
- single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d
+ --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a
+ single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d
(see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status.
- The shell does not exit if the command that fails is
- part of the command list immediately following a wwhhiillee
- or uunnttiill keyword, part of the test following the iiff or
- eelliiff reserved words, part of any command executed in a
- &&&& or |||| list except the command following the final &&&&
+ The shell does not exit if the command that fails is
+ part of the command list immediately following a wwhhiillee
+ or uunnttiill keyword, part of the test following the iiff or
+ eelliiff reserved words, part of any command executed in a
+ &&&& or |||| list except the command following the final &&&&
or ||||, any command in a pipeline but the last, or if the
- command's return value is being inverted with !!. If a
- compound command other than a subshell returns a non-
- zero status because a command failed while --ee was being
- ignored, the shell does not exit. A trap on EERRRR, if
- set, is executed before the shell exits. This option
+ command's return value is being inverted with !!. If a
+ compound command other than a subshell returns a non-
+ zero status because a command failed while --ee was being
+ ignored, the shell does not exit. A trap on EERRRR, if
+ set, is executed before the shell exits. This option
applies to the shell environment and each subshell envi-
- ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT
+ ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT
above), and may cause subshells to exit before executing
all the commands in the subshell.
- If a compound command or shell function executes in a
- context where --ee is being ignored, none of the commands
- executed within the compound command or function body
- will be affected by the --ee setting, even if --ee is set
- and a command returns a failure status. If a compound
- command or shell function sets --ee while executing in a
- context where --ee is ignored, that setting will not have
- any effect until the compound command or the command
+ If a compound command or shell function executes in a
+ context where --ee is being ignored, none of the commands
+ executed within the compound command or function body
+ will be affected by the --ee setting, even if --ee is set
+ and a command returns a failure status. If a compound
+ command or shell function sets --ee while executing in a
+ context where --ee is ignored, that setting will not have
+ any effect until the compound command or the command
containing the function call completes.
--ff Disable pathname expansion.
- --hh Remember the location of commands as they are looked up
+ --hh Remember the location of commands as they are looked up
for execution. This is enabled by default.
- --kk All arguments in the form of assignment statements are
- placed in the environment for a command, not just those
+ --kk All arguments in the form of assignment statements are
+ placed in the environment for a command, not just those
that precede the command name.
- --mm Monitor mode. Job control is enabled. This option is
- on by default for interactive shells on systems that
- support it (see JJOOBB CCOONNTTRROOLL above). All processes run
+ --mm Monitor mode. Job control is enabled. This option is
+ on by default for interactive shells on systems that
+ support it (see JJOOBB CCOONNTTRROOLL above). All processes run
in a separate process group. When a background job com-
pletes, the shell prints a line containing its exit sta-
tus.
--nn Read commands but do not execute them. This may be used
- to check a shell script for syntax errors. This is ig-
+ to check a shell script for syntax errors. This is ig-
nored by interactive shells.
--oo _o_p_t_i_o_n_-_n_a_m_e
The _o_p_t_i_o_n_-_n_a_m_e can be one of the following:
@@ -5428,10 +5643,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
Same as --aa.
bbrraacceeeexxppaanndd
Same as --BB.
- eemmaaccss Use an emacs-style command line editing inter-
+ eemmaaccss Use an emacs-style command line editing inter-
face. This is enabled by default when the shell
is interactive, unless the shell is started with
- the ----nnooeeddiittiinngg option. This also affects the
+ the ----nnooeeddiittiinngg option. This also affects the
editing interface used for rreeaadd --ee.
eerrrreexxiitt Same as --ee.
eerrrrttrraaccee
@@ -5445,8 +5660,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
HHIISSTTOORRYY. This option is on by default in inter-
active shells.
iiggnnoorreeeeooff
- The effect is as if the shell command ``IG-
- NOREEOF=10'' had been executed (see SShheellll VVaarrii--
+ The effect is as if the shell command ``IG-
+ NOREEOF=10'' had been executed (see SShheellll VVaarrii--
aabblleess above).
kkeeyywwoorrdd Same as --kk.
mmoonniittoorr Same as --mm.
@@ -5461,172 +5676,175 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
pphhyyssiiccaall
Same as --PP.
ppiippeeffaaiill
- If set, the return value of a pipeline is the
- value of the last (rightmost) command to exit
- with a non-zero status, or zero if all commands
- in the pipeline exit successfully. This option
+ If set, the return value of a pipeline is the
+ value of the last (rightmost) command to exit
+ with a non-zero status, or zero if all commands
+ in the pipeline exit successfully. This option
is disabled by default.
- ppoossiixx Change the behavior of bbaasshh where the default
- operation differs from the POSIX standard to
- match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO
+ ppoossiixx Change the behavior of bbaasshh where the default
+ operation differs from the POSIX standard to
+ match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO
below for a reference to a document that details
how posix mode affects bash's behavior.
pprriivviilleeggeedd
Same as --pp.
vveerrbboossee Same as --vv.
- vvii Use a vi-style command line editing interface.
+ vvii Use a vi-style command line editing interface.
This also affects the editing interface used for
rreeaadd --ee.
xxttrraaccee Same as --xx.
If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the
- current options are printed. If ++oo is supplied with no
- _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the
- current option settings is displayed on the standard
+ current options are printed. If ++oo is supplied with no
+ _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the
+ current option settings is displayed on the standard
output.
- --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and
- $$BBAASSHH__EENNVV files are not processed, shell functions are
- not inherited from the environment, and the SSHHEELLLLOOPPTTSS,
- BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap-
- pear in the environment, are ignored. If the shell is
- started with the effective user (group) id not equal to
- the real user (group) id, and the --pp option is not sup-
+ --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and
+ $$BBAASSHH__EENNVV files are not processed, shell functions are
+ not inherited from the environment, and the SSHHEELLLLOOPPTTSS,
+ BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap-
+ pear in the environment, are ignored. If the shell is
+ started with the effective user (group) id not equal to
+ the real user (group) id, and the --pp option is not sup-
plied, these actions are taken and the effective user id
- is set to the real user id. If the --pp option is sup-
- plied at startup, the effective user id is not reset.
- Turning this option off causes the effective user and
+ is set to the real user id. If the --pp option is sup-
+ plied at startup, the effective user id is not reset.
+ Turning this option off causes the effective user and
group ids to be set to the real user and group ids.
+ --rr Enable restricted shell mode. This option cannot be un-
+ set once it has been set.
--tt Exit after reading and executing one command.
--uu Treat unset variables and parameters other than the spe-
- cial parameters "@" and "*" as an error when performing
- parameter expansion. If expansion is attempted on an
- unset variable or parameter, the shell prints an error
- message, and, if not interactive, exits with a non-zero
+ cial parameters "@" and "*", or array variables sub-
+ scripted with "@" or "*", as an error when performing
+ parameter expansion. If expansion is attempted on an
+ unset variable or parameter, the shell prints an error
+ message, and, if not interactive, exits with a non-zero
status.
--vv Print shell input lines as they are read.
- --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee
+ --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee
command, sseelleecctt command, or arithmetic ffoorr command, dis-
- play the expanded value of PPSS44, followed by the command
+ play the expanded value of PPSS44, followed by the command
and its expanded arguments or associated word list.
- --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn
+ --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn
above). This is on by default.
- --CC If set, bbaasshh does not overwrite an existing file with
- the >>, >>&&, and <<>> redirection operators. This may be
+ --CC If set, bbaasshh does not overwrite an existing file with
+ the >>, >>&&, and <<>> redirection operators. This may be
overridden when creating output files by using the redi-
rection operator >>|| instead of >>.
--EE If set, any trap on EERRRR is inherited by shell functions,
- command substitutions, and commands executed in a sub-
- shell environment. The EERRRR trap is normally not inher-
+ command substitutions, and commands executed in a sub-
+ shell environment. The EERRRR trap is normally not inher-
ited in such cases.
--HH Enable !! style history substitution. This option is on
by default when the shell is interactive.
- --PP If set, the shell does not resolve symbolic links when
- executing commands such as ccdd that change the current
+ --PP If set, the shell does not resolve symbolic links when
+ executing commands such as ccdd that change the current
working directory. It uses the physical directory
structure instead. By default, bbaasshh follows the logical
- chain of directories when performing commands which
+ chain of directories when performing commands which
change the current directory.
- --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by
+ --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by
shell functions, command substitutions, and commands ex-
- ecuted in a subshell environment. The DDEEBBUUGG and RREETTUURRNN
+ ecuted in a subshell environment. The DDEEBBUUGG and RREETTUURRNN
traps are normally not inherited in such cases.
- ---- If no arguments follow this option, then the positional
+ ---- If no arguments follow this option, then the positional
parameters are unset. Otherwise, the positional parame-
- ters are set to the _a_r_gs, even if some of them begin
+ ters are set to the _a_r_gs, even if some of them begin
with a --.
- -- Signal the end of options, cause all remaining _a_r_gs to
+ -- Signal the end of options, cause all remaining _a_r_gs to
be assigned to the positional parameters. The --xx and --vv
options are turned off. If there are no _a_r_gs, the posi-
tional parameters remain unchanged.
- The options are off by default unless otherwise noted. Using +
- rather than - causes these options to be turned off. The op-
+ The options are off by default unless otherwise noted. Using +
+ rather than - causes these options to be turned off. The op-
tions can also be specified as arguments to an invocation of the
- shell. The current set of options may be found in $$--. The re-
- turn status is always true unless an invalid option is encoun-
+ shell. The current set of options may be found in $$--. The re-
+ turn status is always true unless an invalid option is encoun-
tered.
sshhiifftt [_n]
- The positional parameters from _n+1 ... are renamed to $$11 ........
- Parameters represented by the numbers $$## down to $$##-_n+1 are un-
- set. _n must be a non-negative number less than or equal to $$##.
- If _n is 0, no parameters are changed. If _n is not given, it is
+ The positional parameters from _n+1 ... are renamed to $$11 ........
+ Parameters represented by the numbers $$## down to $$##-_n+1 are un-
+ set. _n must be a non-negative number less than or equal to $$##.
+ If _n is 0, no parameters are changed. If _n is not given, it is
assumed to be 1. If _n is greater than $$##, the positional param-
- eters are not changed. The return status is greater than zero
+ eters are not changed. The return status is greater than zero
if _n is greater than $$## or less than zero; otherwise 0.
sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...]
- Toggle the values of settings controlling optional shell behav-
- ior. The settings can be either those listed below, or, if the
+ Toggle the values of settings controlling optional shell behav-
+ ior. The settings can be either those listed below, or, if the
--oo option is used, those available with the --oo option to the sseett
builtin command. With no options, or with the --pp option, a list
- of all settable options is displayed, with an indication of
+ of all settable options is displayed, with an indication of
whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output
- is restricted to those options. The --pp option causes output to
- be displayed in a form that may be reused as input. Other op-
+ is restricted to those options. The --pp option causes output to
+ be displayed in a form that may be reused as input. Other op-
tions have the following meanings:
--ss Enable (set) each _o_p_t_n_a_m_e.
--uu Disable (unset) each _o_p_t_n_a_m_e.
- --qq Suppresses normal output (quiet mode); the return status
+ --qq Suppresses normal output (quiet mode); the return status
indicates whether the _o_p_t_n_a_m_e is set or unset. If multi-
- ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta-
- tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other-
+ ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta-
+ tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other-
wise.
- --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for
+ --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for
the --oo option to the sseett builtin.
- If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt
- shows only those options which are set or unset, respectively.
- Unless otherwise noted, the sshhoopptt options are disabled (unset)
+ If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt
+ shows only those options which are set or unset, respectively.
+ Unless otherwise noted, the sshhoopptt options are disabled (unset)
by default.
- The return status when listing options is zero if all _o_p_t_n_a_m_e_s
- are enabled, non-zero otherwise. When setting or unsetting op-
- tions, the return status is zero unless an _o_p_t_n_a_m_e is not a
+ The return status when listing options is zero if all _o_p_t_n_a_m_e_s
+ are enabled, non-zero otherwise. When setting or unsetting op-
+ tions, the return status is zero unless an _o_p_t_n_a_m_e is not a
valid shell option.
The list of sshhoopptt options is:
aassssoocc__eexxppaanndd__oonnccee
- If set, the shell suppresses multiple evaluation of as-
- sociative array subscripts during arithmetic expression
- evaluation, while executing builtins that can perform
- variable assignments, and while executing builtins that
+ If set, the shell suppresses multiple evaluation of as-
+ sociative array subscripts during arithmetic expression
+ evaluation, while executing builtins that can perform
+ variable assignments, and while executing builtins that
perform array dereferencing.
- aauuttooccdd If set, a command name that is the name of a directory
- is executed as if it were the argument to the ccdd com-
+ aauuttooccdd If set, a command name that is the name of a directory
+ is executed as if it were the argument to the ccdd com-
mand. This option is only used by interactive shells.
ccddaabbllee__vvaarrss
- If set, an argument to the ccdd builtin command that is
- not a directory is assumed to be the name of a variable
+ If set, an argument to the ccdd builtin command that is
+ not a directory is assumed to be the name of a variable
whose value is the directory to change to.
ccddssppeellll If set, minor errors in the spelling of a directory com-
- ponent in a ccdd command will be corrected. The errors
+ ponent in a ccdd command will be corrected. The errors
checked for are transposed characters, a missing charac-
- ter, and one character too many. If a correction is
- found, the corrected filename is printed, and the com-
- mand proceeds. This option is only used by interactive
+ ter, and one character too many. If a correction is
+ found, the corrected filename is printed, and the com-
+ mand proceeds. This option is only used by interactive
shells.
cchheecckkhhaasshh
If set, bbaasshh checks that a command found in the hash ta-
- ble exists before trying to execute it. If a hashed
- command no longer exists, a normal path search is per-
+ ble exists before trying to execute it. If a hashed
+ command no longer exists, a normal path search is per-
formed.
cchheecckkjjoobbss
If set, bbaasshh lists the status of any stopped and running
- jobs before exiting an interactive shell. If any jobs
+ jobs before exiting an interactive shell. If any jobs
are running, this causes the exit to be deferred until a
- second exit is attempted without an intervening command
+ second exit is attempted without an intervening command
(see JJOOBB CCOONNTTRROOLL above). The shell always postpones ex-
iting if any jobs are stopped.
cchheecckkwwiinnssiizzee
- If set, bbaasshh checks the window size after each external
- (non-builtin) command and, if necessary, updates the
- values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by
+ If set, bbaasshh checks the window size after each external
+ (non-builtin) command and, if necessary, updates the
+ values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by
default.
- ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple-
- line command in the same history entry. This allows
- easy re-editing of multi-line commands. This option is
- enabled by default, but only has an effect if command
+ ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple-
+ line command in the same history entry. This allows
+ easy re-editing of multi-line commands. This option is
+ enabled by default, but only has an effect if command
history is enabled, as described above under HHIISSTTOORRYY.
ccoommppaatt3311
ccoommppaatt3322
@@ -5635,117 +5853,123 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
ccoommppaatt4422
ccoommppaatt4433
ccoommppaatt4444
- These control aspects of the shell's compatibility mode
+ ccoommppaatt5500
+ These control aspects of the shell's compatibility mode
(see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below).
ccoommpplleettee__ffuullllqquuoottee
- If set, bbaasshh quotes all shell metacharacters in file-
- names and directory names when performing completion.
+ If set, bbaasshh quotes all shell metacharacters in file-
+ names and directory names when performing completion.
If not set, bbaasshh removes metacharacters such as the dol-
- lar sign from the set of characters that will be quoted
- in completed filenames when these metacharacters appear
- in shell variable references in words to be completed.
- This means that dollar signs in variable names that ex-
- pand to directories will not be quoted; however, any
- dollar signs appearing in filenames will not be quoted,
- either. This is active only when bash is using back-
- slashes to quote completed filenames. This variable is
- set by default, which is the default bash behavior in
+ lar sign from the set of characters that will be quoted
+ in completed filenames when these metacharacters appear
+ in shell variable references in words to be completed.
+ This means that dollar signs in variable names that ex-
+ pand to directories will not be quoted; however, any
+ dollar signs appearing in filenames will not be quoted,
+ either. This is active only when bash is using back-
+ slashes to quote completed filenames. This variable is
+ set by default, which is the default bash behavior in
versions through 4.2.
ddiirreexxppaanndd
- If set, bbaasshh replaces directory names with the results
- of word expansion when performing filename completion.
- This changes the contents of the readline editing buf-
- fer. If not set, bbaasshh attempts to preserve what the
+ If set, bbaasshh replaces directory names with the results
+ of word expansion when performing filename completion.
+ This changes the contents of the readline editing buf-
+ fer. If not set, bbaasshh attempts to preserve what the
user typed.
ddiirrssppeellll
- If set, bbaasshh attempts spelling correction on directory
- names during word completion if the directory name ini-
+ If set, bbaasshh attempts spelling correction on directory
+ names during word completion if the directory name ini-
tially supplied does not exist.
- ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in
- the results of pathname expansion. The filenames ````..''''
- and ````....'''' must always be matched explicitly, even if
+ ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in
+ the results of pathname expansion. The filenames ````..''''
+ and ````....'''' must always be matched explicitly, even if
ddoottgglloobb is set.
eexxeeccffaaiill
If set, a non-interactive shell will not exit if it can-
- not execute the file specified as an argument to the
- eexxeecc builtin command. An interactive shell does not
+ not execute the file specified as an argument to the
+ eexxeecc builtin command. An interactive shell does not
exit if eexxeecc fails.
eexxppaanndd__aalliiaasseess
- If set, aliases are expanded as described above under
+ If set, aliases are expanded as described above under
AALLIIAASSEESS. This option is enabled by default for interac-
tive shells.
eexxttddeebbuugg
- If set at shell invocation, or in a shell startup file,
+ If set at shell invocation, or in a shell startup file,
arrange to execute the debugger profile before the shell
- starts, identical to the ----ddeebbuuggggeerr option. If set af-
- ter invocation, behavior intended for use by debuggers
+ starts, identical to the ----ddeebbuuggggeerr option. If set af-
+ ter invocation, behavior intended for use by debuggers
is enabled:
11.. The --FF option to the ddeeccllaarree builtin displays the
source file name and line number corresponding to
each function name supplied as an argument.
- 22.. If the command run by the DDEEBBUUGG trap returns a
- non-zero value, the next command is skipped and
+ 22.. If the command run by the DDEEBBUUGG trap returns a
+ non-zero value, the next command is skipped and
not executed.
- 33.. If the command run by the DDEEBBUUGG trap returns a
- value of 2, and the shell is executing in a sub-
- routine (a shell function or a shell script exe-
- cuted by the .. or ssoouurrccee builtins), the shell
+ 33.. If the command run by the DDEEBBUUGG trap returns a
+ value of 2, and the shell is executing in a sub-
+ routine (a shell function or a shell script exe-
+ cuted by the .. or ssoouurrccee builtins), the shell
simulates a call to rreettuurrnn.
- 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described
- in their descriptions above.
+ 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described
+ in their descriptions above).
- 55.. Function tracing is enabled: command substitu-
+ 55.. Function tracing is enabled: command substitu-
tion, shell functions, and subshells invoked with
(( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps.
- 66.. Error tracing is enabled: command substitution,
- shell functions, and subshells invoked with ((
+ 66.. Error tracing is enabled: command substitution,
+ shell functions, and subshells invoked with ((
_c_o_m_m_a_n_d )) inherit the EERRRR trap.
eexxttgglloobb If set, the extended pattern matching features described
above under PPaatthhnnaammee EExxppaannssiioonn are enabled.
eexxttqquuoottee
- If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed
- within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double
+ If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed
+ within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double
quotes. This option is enabled by default.
ffaaiillgglloobb
- If set, patterns which fail to match filenames during
+ If set, patterns which fail to match filenames during
pathname expansion result in an expansion error.
ffoorrccee__ffiiggnnoorree
- If set, the suffixes specified by the FFIIGGNNOORREE shell
- variable cause words to be ignored when performing word
+ If set, the suffixes specified by the FFIIGGNNOORREE shell
+ variable cause words to be ignored when performing word
completion even if the ignored words are the only possi-
- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a de-
- scription of FFIIGGNNOORREE. This option is enabled by de-
+ ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a de-
+ scription of FFIIGGNNOORREE. This option is enabled by de-
fault.
gglloobbaasscciiiirraannggeess
- If set, range expressions used in pattern matching
- bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave
- as if in the traditional C locale when performing com-
- parisons. That is, the current locale's collating se-
- quence is not taken into account, so bb will not collate
- between AA and BB, and upper-case and lower-case ASCII
+ If set, range expressions used in pattern matching
+ bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave
+ as if in the traditional C locale when performing com-
+ parisons. That is, the current locale's collating se-
+ quence is not taken into account, so bb will not collate
+ between AA and BB, and upper-case and lower-case ASCII
characters will collate together.
+ gglloobbsskkiippddoottss
+ If set, pathname expansion will never match the file-
+ names ````..'''' and ````....'''', even if the pattern begins with
+ a ````..''''. This option is enabled by default.
+
gglloobbssttaarr
If set, the pattern **** used in a pathname expansion con-
- text will match all files and zero or more directories
- and subdirectories. If the pattern is followed by a //,
+ text will match all files and zero or more directories
+ and subdirectories. If the pattern is followed by a //,
only directories and subdirectories match.
ggnnuu__eerrrrffmmtt
@@ -5753,25 +5977,25 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
GNU error message format.
hhiissttaappppeenndd
- If set, the history list is appended to the file named
+ If set, the history list is appended to the file named
by the value of the HHIISSTTFFIILLEE variable when the shell ex-
its, rather than overwriting the file.
hhiissttrreeeeddiitt
- If set, and rreeaaddlliinnee is being used, a user is given the
+ If set, and rreeaaddlliinnee is being used, a user is given the
opportunity to re-edit a failed history substitution.
hhiissttvveerriiffyy
- If set, and rreeaaddlliinnee is being used, the results of his-
- tory substitution are not immediately passed to the
- shell parser. Instead, the resulting line is loaded
+ If set, and rreeaaddlliinnee is being used, the results of his-
+ tory substitution are not immediately passed to the
+ shell parser. Instead, the resulting line is loaded
into the rreeaaddlliinnee editing buffer, allowing further modi-
fication.
hhoossttccoommpplleettee
If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to
- perform hostname completion when a word containing a @@
- is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE
+ perform hostname completion when a word containing a @@
+ is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE
above). This is enabled by default.
hhuuppoonneexxiitt
@@ -5779,23 +6003,23 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
active login shell exits.
iinnhheerriitt__eerrrreexxiitt
- If set, command substitution inherits the value of the
- eerrrreexxiitt option, instead of unsetting it in the subshell
- environment. This option is enabled when _p_o_s_i_x _m_o_d_e is
+ If set, command substitution inherits the value of the
+ eerrrreexxiitt option, instead of unsetting it in the subshell
+ environment. This option is enabled when _p_o_s_i_x _m_o_d_e is
enabled.
iinntteerraaccttiivvee__ccoommmmeennttss
If set, allow a word beginning with ## to cause that word
- and all remaining characters on that line to be ignored
- in an interactive shell (see CCOOMMMMEENNTTSS above). This op-
+ and all remaining characters on that line to be ignored
+ in an interactive shell (see CCOOMMMMEENNTTSS above). This op-
tion is enabled by default.
llaassttppiippee
- If set, and job control is not active, the shell runs
+ If set, and job control is not active, the shell runs
the last command of a pipeline not executed in the back-
ground in the current shell environment.
- lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line
+ lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line
commands are saved to the history with embedded newlines
rather than using semicolon separators where possible.
@@ -5806,45 +6030,56 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
tribute is not inherited.
llooccaallvvaarr__uunnsseett
- If set, calling uunnsseett on local variables in previous
- function scopes marks them so subsequent lookups find
- them unset until that function returns. This is identi-
- cal to the behavior of unsetting local variables at the
+ If set, calling uunnsseett on local variables in previous
+ function scopes marks them so subsequent lookups find
+ them unset until that function returns. This is identi-
+ cal to the behavior of unsetting local variables at the
current function scope.
llooggiinn__sshheellll
- The shell sets this option if it is started as a login
- shell (see IINNVVOOCCAATTIIOONN above). The value may not be
+ The shell sets this option if it is started as a login
+ shell (see IINNVVOOCCAATTIIOONN above). The value may not be
changed.
mmaaiillwwaarrnn
- If set, and a file that bbaasshh is checking for mail has
- been accessed since the last time it was checked, the
- message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis-
+ If set, and a file that bbaasshh is checking for mail has
+ been accessed since the last time it was checked, the
+ message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis-
played.
nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn
- If set, and rreeaaddlliinnee is being used, bbaasshh will not at-
- tempt to search the PPAATTHH for possible completions when
+ If set, and rreeaaddlliinnee is being used, bbaasshh will not at-
+ tempt to search the PPAATTHH for possible completions when
completion is attempted on an empty line.
nnooccaasseegglloobb
- If set, bbaasshh matches filenames in a case-insensitive
+ If set, bbaasshh matches filenames in a case-insensitive
fashion when performing pathname expansion (see PPaatthhnnaammee
EExxppaannssiioonn above).
nnooccaasseemmaattcchh
- If set, bbaasshh matches patterns in a case-insensitive
+ If set, bbaasshh matches patterns in a case-insensitive
fashion when performing matching while executing ccaassee or
[[[[ conditional commands, when performing pattern substi-
- tution word expansions, or when filtering possible com-
+ tution word expansions, or when filtering possible com-
pletions as part of programmable completion.
+ nnooeexxppaanndd__ttrraannssllaattiioonn
+ If set, bbaasshh encloses the translated results of $"..."
+ quoting in single quotes instead of double quotes. If
+ the string is not translated, this has no effect.
+
nnuullllgglloobb
- If set, bbaasshh allows patterns which match no files (see
- PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string,
+ If set, bbaasshh allows patterns which match no files (see
+ PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string,
rather than themselves.
+ ppaattssuubb__rreeppllaacceemmeenntt
+ If set, bbaasshh expands occurrences of && in the replacement
+ string of pattern substitution to the text matched by
+ the pattern, as described under PPaarraammeetteerr EExxppaannssiioonn
+ above. This option is enabled by default.
+
pprrooggccoommpp
If set, the programmable completion facilities (see PPrroo--
ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is
@@ -5876,20 +6111,27 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
ters.
ssoouurrcceeppaatthh
- If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH to
+ If set, the .. (ssoouurrccee) builtin uses the value of PPAATTHH to
find the directory containing the file supplied as an
argument. This option is enabled by default.
+ vvaarrrreeddiirr__cclloossee
+ If set, the shell automatically closes file descriptors
+ assigned using the _{_v_a_r_n_a_m_e_} redirection syntax (see RREE--
+ DDIIRREECCTTIIOONN above) instead of leaving them open when the
+ command completes.
+
xxppgg__eecchhoo
- If set, the eecchhoo builtin expands backslash-escape se-
+ If set, the eecchhoo builtin expands backslash-escape se-
quences by default.
ssuussppeenndd [--ff]
- Suspend the execution of this shell until it receives a SSIIGGCCOONNTT
- signal. A login shell cannot be suspended; the --ff option can be
- used to override this and force the suspension. The return sta-
- tus is 0 unless the shell is a login shell and --ff is not sup-
- plied, or if job control is not enabled.
+ Suspend the execution of this shell until it receives a SSIIGGCCOONNTT
+ signal. A login shell, or a shell without job control enabled,
+ cannot be suspended; the --ff option can be used to override this
+ and force the suspension. The return status is 0 unless the
+ shell is a login shell or job control is not enabled and --ff is
+ not supplied.
tteesstt _e_x_p_r
[[ _e_x_p_r ]]
@@ -5943,11 +6185,15 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
is the one-argument test of the second argument. Other-
wise, the expression is false.
4 arguments
+ The following conditions are applied in the order listed.
If the first argument is !!, the result is the negation of
- the three-argument expression composed of the remaining
- arguments. Otherwise, the expression is parsed and eval-
- uated according to precedence using the rules listed
- above.
+ the three-argument expression composed of the remaining
+ arguments. the two-argument test using the second and
+ third arguments. If the first argument is exactly (( and
+ the fourth argument is exactly )), the result is the two-
+ argument test of the second and third arguments. Other-
+ wise, the expression is parsed and evaluated according to
+ precedence using the rules listed above.
5 or more arguments
The expression is parsed and evaluated according to
precedence using the rules listed above.
@@ -6115,7 +6361,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are
unset, they lose their special properties, even if they are sub-
sequently reset. The exit status is true unless a _n_a_m_e is read-
- only.
+ only or may not be unset.
wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d _._._.]
Wait for each specified child process and return its termination
@@ -6137,23 +6383,25 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
when job control is enabled, forces wwaaiitt to wait for _i_d to ter-
minate before returning its status, instead of returning when it
changes status. If _i_d specifies a non-existent process or job,
- the return status is 127. Otherwise, the return status is the
- exit status of the last process or job waited for.
+ the return status is 127. If wwaaiitt is interrupted by a signal,
+ the return status will be greater than 128, as described under
+ SSIIGGNNAALLSS above. Otherwise, the return status is the exit status
+ of the last process or job waited for.
SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE
- Bash-4.0 introduced the concept of a `shell compatibility level', spec-
- ified as a set of options to the shopt builtin ccoommppaatt3311, ccoommppaatt3322, ccoomm--
- ppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibility
- level -- each option is mutually exclusive. The compatibility level is
- intended to allow users to select behavior from previous versions that
- is incompatible with newer versions while they migrate scripts to use
- current features and behavior. It's intended to be a temporary solu-
- tion.
+ Bash-4.0 introduced the concept of a _s_h_e_l_l _c_o_m_p_a_t_i_b_i_l_i_t_y _l_e_v_e_l, speci-
+ fied as a set of options to the shopt builtin ( ccoommppaatt3311, ccoommppaatt3322,
+ ccoommppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibil-
+ ity level -- each option is mutually exclusive. The compatibility
+ level is intended to allow users to select behavior from previous ver-
+ sions that is incompatible with newer versions while they migrate
+ scripts to use current features and behavior. It's intended to be a
+ temporary solution.
This section does not mention behavior that is standard for a particu-
lar version (e.g., setting ccoommppaatt3322 means that quoting the rhs of the
regexp matching operator quotes special regexp characters in the word,
- which is default behavior in bash-3.2 and above).
+ which is default behavior in bash-3.2 and subsequent versions).
If a user enables, say, ccoommppaatt3322, it may affect the behavior of other
compatibility levels up to and including the current compatibility
@@ -6230,8 +6478,8 @@ SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE
ccoommppaatt4433
+o the shell does not print a warning message if an attempt
is made to use a quoted compound assignment as an argu-
- ment to declare (declare -a foo='(1 2)'). Later versions
- warn that this usage is deprecated
+ ment to declare (e.g., declare -a foo='(1 2)'). Later
+ versions warn that this usage is deprecated
+o word expansion errors are considered non-fatal errors
that cause the current command to fail, even in posix
mode (the default behavior is to make them fatal errors
@@ -6268,33 +6516,39 @@ SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE
input. Bash-5.1 suppresses that message when the --ll op-
tion is supplied.
+ ccoommppaatt5511
+ +o The uunnsseett builtin treats attempts to unset array sub-
+ scripts @@ and ** differently depending on whether the ar-
+ ray is indexed or associative, and differently than in
+ previous versions.
+
RREESSTTRRIICCTTEEDD SSHHEELLLL
If bbaasshh is started with the name rrbbaasshh, or the --rr option is supplied at
- invocation, the shell becomes restricted. A restricted shell is used
- to set up an environment more controlled than the standard shell. It
- behaves identically to bbaasshh with the exception that the following are
+ invocation, the shell becomes restricted. A restricted shell is used
+ to set up an environment more controlled than the standard shell. It
+ behaves identically to bbaasshh with the exception that the following are
disallowed or not performed:
+o changing directories with ccdd
- +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, HHIISSTTFFIILLEE, EENNVV,
+ +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, HHIISSTTFFIILLEE, EENNVV,
or BBAASSHH__EENNVV
+o specifying command names containing //
- +o specifying a filename containing a // as an argument to the ..
+ +o specifying a filename containing a // as an argument to the ..
builtin command
- +o specifying a filename containing a slash as an argument to the
+ +o specifying a filename containing a slash as an argument to the
hhiissttoorryy builtin command
- +o specifying a filename containing a slash as an argument to the
+ +o specifying a filename containing a slash as an argument to the
--pp option to the hhaasshh builtin command
- +o importing function definitions from the shell environment at
+ +o importing function definitions from the shell environment at
startup
- +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at
+ +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at
startup
+o redirecting output using the >, >|, <>, >&, &>, and >> redirect-
@@ -6303,15 +6557,16 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL
+o using the eexxeecc builtin command to replace the shell with another
command
- +o adding or deleting builtin commands with the --ff and --dd options
+ +o adding or deleting builtin commands with the --ff and --dd options
to the eennaabbllee builtin command
- +o using the eennaabbllee builtin command to enable disabled shell
+ +o using the eennaabbllee builtin command to enable disabled shell
builtins
+o specifying the --pp option to the ccoommmmaanndd builtin command
- +o turning off restricted mode with sseett ++rr or sseett ++oo rreessttrriicctteedd.
+ +o turning off restricted mode with sseett ++rr or sshhoopptt --uu rree--
+ ssttrriicctteedd__sshheellll.
These restrictions are enforced after any startup files are read.
@@ -6343,6 +6598,9 @@ FFIILLEESS
_~_/_._b_a_s_h___l_o_g_o_u_t
The individual login shell cleanup file, executed when a login
shell exits
+ _~_/_._b_a_s_h___h_i_s_t_o_r_y
+ The default value of HHIISSTTFFIILLEE, the file in which bash saves the
+ command history
_~_/_._i_n_p_u_t_r_c
Individual _r_e_a_d_l_i_n_e initialization file
@@ -6355,9 +6613,10 @@ AAUUTTHHOORRSS
BBUUGG RREEPPOORRTTSS
If you find a bug in bbaasshh,, you should report it. But first, you should
- make sure that it really is a bug, and that it appears in the latest
- version of bbaasshh. The latest version is always available from
- _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_g_n_u_/_b_a_s_h_/.
+ make sure that it really is a bug, and that it appears in the latest
+ version of bbaasshh. The latest version is always available from
+ _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_g_n_u_/_b_a_s_h_/ and _h_t_t_p_:_/_/_g_i_t_._s_a_v_a_n_-
+ _n_a_h_._g_n_u_._o_r_g_/_c_g_i_t_/_b_a_s_h_._g_i_t_/_s_n_a_p_s_h_o_t_/_b_a_s_h_-_m_a_s_t_e_r_._t_a_r_._g_z.
Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g
command to submit a bug report. If you have a fix, you are encouraged
@@ -6402,4 +6661,4 @@ BBUUGGSS
-GNU Bash 5.1 2020 October 29 BASH(1)
+GNU Bash 5.2 2022 September 19 BASH(1)
diff --git a/doc/bash.1 b/doc/bash.1
index 5af7d428..55c56220 100644
--- a/doc/bash.1
+++ b/doc/bash.1
@@ -5,12 +5,12 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
-.\" Last Change: Wed Sep 23 09:28:31 EDT 2020
+.\" Last Change: Mon Sep 19 11:13:21 EDT 2022
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
-.TH BASH 1 "2020 October 29" "GNU Bash 5.1"
+.TH BASH 1 "2022 September 19" "GNU Bash 5.2"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -50,8 +50,8 @@ bash \- GNU Bourne-Again SHell
[options]
[command_string | file]
.SH COPYRIGHT
-.if n Bash is Copyright (C) 1989-2020 by the Free Software Foundation, Inc.
-.if t Bash is Copyright \(co 1989-2020 by the Free Software Foundation, Inc.
+.if n Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc.
+.if t Bash is Copyright \(co 1989-2022 by the Free Software Foundation, Inc.
.SH DESCRIPTION
.B Bash
is an \fBsh\fR-compatible command language interpreter that
@@ -281,7 +281,7 @@ An \fIinteractive\fP shell is one started without non-option arguments
(unless \fB\-s\fP is specified)
and without the
.B \-c
-option
+option,
whose standard input and error are
both connected to terminals (as determined by
.IR isatty (3)),
@@ -420,12 +420,14 @@ No other startup files are read.
.PP
.B Bash
attempts to determine when it is being run with its standard input
-connected to a network connection, as when executed by the remote shell
-daemon, usually \fIrshd\fP, or the secure shell daemon \fIsshd\fP.
+connected to a network connection, as when executed by
+the historical remote shell daemon, usually \fIrshd\fP,
+or the secure shell daemon \fIsshd\fP.
If
.B bash
-determines it is being run in this fashion, it reads and executes
-commands from \fI~/.bashrc\fP, if that file exists and is readable.
+determines it is being run non-interactively in this fashion,
+it reads and executes commands from \fI~/.bashrc\fP,
+if that file exists and is readable.
It will not do this if invoked as \fBsh\fP.
The
.B \-\-norc
@@ -511,6 +513,7 @@ command (only \fBin\fP and \fBdo\fP are valid):
.if t ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]
.if t .RE
.SH "SHELL GRAMMAR"
+This section describes the syntax of the various forms of shell commands.
.SS Simple Commands
A \fIsimple command\fP is a sequence of optional variable assignments
followed by \fBblank\fP-separated words and redirections, and
@@ -529,24 +532,24 @@ or \fB|&\fP.
The format for a pipeline is:
.RS
.PP
-[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand\fP [ [\fB|\fP\(bv\fB|&\fP] \fIcommand2\fP ... ]
+[\fBtime\fP [\fB\-p\fP]] [ ! ] \fIcommand1\fP [ [\fB|\fP\(bv\fB|&\fP] \fIcommand2\fP ... ]
.RE
.PP
The standard output of
-.I command
+.I command1
is connected via a pipe to the standard input of
.IR command2 .
This connection is performed before any redirections specified by the
-command (see
+.IR command1 (see
.SM
.B REDIRECTION
below).
-If \fB|&\fP is used, \fIcommand\fP's standard error, in addition to its
+If \fB|&\fP is used, \fIcommand1\fP's standard error, in addition to its
standard output, is connected to
\fIcommand2\fP's standard input through the pipe;
it is shorthand for \fB2>&1 |\fP.
This implicit redirection of the standard error to the standard output is
-performed after any redirections specified by the command.
+performed after any redirections specified by \fIcommand1\fP.
.PP
The return status of a pipeline is the exit status of the last
command, unless the \fBpipefail\fP option is enabled.
@@ -588,15 +591,18 @@ The
variable may be used to specify the format of
the time information.
.PP
-Each command in a pipeline is executed as a separate process (i.e., in a
-subshell).
+Each command in a multi-command pipeline,
+where pipes are created,
+is executed in a \fIsubshell\fP, which is a
+separate process.
See
.SM
\fBCOMMAND EXECUTION ENVIRONMENT\fP
-for a description of a subshell environment.
+for a description of subshells and a subshell environment.
If the \fBlastpipe\fP option is enabled using the \fBshopt\fP builtin
(see the description of \fBshopt\fP below),
-the last element of a pipeline may be run by the shell process.
+the last element of a pipeline may be run by the shell process
+when job control is not active.
.SS Lists
A \fIlist\fP is a sequence of one or more pipelines separated by one
of the operators
@@ -671,10 +677,10 @@ the rest of the command by one or more newlines, and may be followed by a
newline in place of a semicolon.
.TP
(\fIlist\fP)
-\fIlist\fP is executed in a subshell environment (see
+\fIlist\fP is executed in a subshell (see
.SM
\fBCOMMAND EXECUTION ENVIRONMENT\fP
-below).
+below for a description of a subshell environment).
Variable assignments and builtin
commands that affect the shell's environment do not remain in effect
after the command completes. The return status is the exit status of
@@ -698,8 +704,12 @@ below under
.SM
.BR "ARITHMETIC EVALUATION" .
If the value of the expression is non-zero, the return status is 0;
-otherwise the return status is 1. This is exactly equivalent to
-\fBlet "\fIexpression\fP"\fR.
+otherwise the return status is 1.
+The \fIexpression\fP
+undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in \fIexpression\fP are not treated specially
+and are removed.
.TP
\fB[[\fP \fIexpression\fP \fB]]\fP
Return a status of 0 or 1 depending on the evaluation of
@@ -707,11 +717,12 @@ the conditional expression \fIexpression\fP.
Expressions are composed of the primaries described below under
.SM
.BR "CONDITIONAL EXPRESSIONS" .
-Word splitting and pathname expansion are not performed on the words
-between the \fB[[\fP and \fB]]\fP; tilde expansion,
-parameter and variable expansion,
-arithmetic expansion, command substitution, process
-substitution, and quote removal are performed.
+The words between the \fB[[\fP and \fB]]\fP do not undergo word splitting
+and pathname expansion.
+The shell performs tilde expansion, parameter and
+variable expansion, arithmetic expansion, command substitution, process
+substitution, and quote removal on those words
+(the expansions that would occur if the words were enclosed in double quotes).
Conditional operators such as \fB\-f\fP must be unquoted to be recognized
as primaries.
.if t .sp 0.5
@@ -749,12 +760,14 @@ If the
.B nocasematch
shell option is enabled, the match is performed without regard to the case
of alphabetic characters.
-Any part of the pattern may be quoted to force the quoted portion
-to be matched as a string.
-Bracket expressions in regular expressions must be treated carefully,
-since normal quoting characters lose their meanings between brackets.
+If any part of the pattern is quoted, the quoted portion is matched literally.
+This means every character in the quoted portion matches itself,
+instead of having any special pattern matching meaning.
If the pattern is stored in a shell variable, quoting the variable
-expansion forces the entire pattern to be matched as a string.
+expansion forces the entire pattern to be matched literally.
+Treat bracket expressions in regular expressions carefully,
+since normal quoting and pattern characters lose their meanings
+between brackets.
.if t .sp 0.5
.if n .sp 1
The pattern will match if it matches any part of the string.
@@ -778,6 +791,11 @@ indices. The element of
.B BASH_REMATCH
with index \fIn\fP is the portion of the
string matching the \fIn\fPth parenthesized subexpression.
+Bash sets
+.SM
+.B BASH_REMATCH
+in the global scope; declaring it as a local variable will lead to
+unexpected results.
.if t .sp 0.5
.if n .sp 1
Expressions may be combined using the following operators, listed
@@ -846,21 +864,24 @@ that is executed, or false if any of the expressions is invalid.
.TP
\fBselect\fP \fIname\fP [ \fBin\fP \fIword\fP ] ; \fBdo\fP \fIlist\fP ; \fBdone\fP
The list of words following \fBin\fP is expanded, generating a list
-of items. The set of expanded words is printed on the standard
+of items, and the set of expanded words is printed on the standard
error, each preceded by a number. If the \fBin\fP
\fIword\fP is omitted, the positional parameters are printed (see
.SM
.B PARAMETERS
-below). The
+below).
+.B select
+then displays the
.SM
.B PS3
-prompt is then displayed and a line read from the standard input.
+prompt and reads a line from the standard input.
If the line consists of a number corresponding to one of
the displayed words, then the value of
.I name
-is set to that word. If the line is empty, the words and prompt
-are displayed again. If EOF is read, the command completes. Any
-other value read causes
+is set to that word.
+If the line is empty, the words and prompt are displayed again.
+If EOF is read, the \fBselect\fP command completes and returns 1.
+Any other value read causes
.I name
to be set to null. The line read is saved in the variable
.SM
@@ -888,7 +909,7 @@ expansion, parameter and variable expansion, arithmetic expansion,
command substitution, process substitution and quote removal.
Each \fIpattern\fP examined is expanded using tilde
expansion, parameter and variable expansion, arithmetic expansion,
-command substitution, and process substitution.
+command substitution, process substitution, and quote removal.
If the
.B nocasematch
shell option is enabled, the match is performed without regard to the case
@@ -944,17 +965,36 @@ A coprocess is executed asynchronously in a subshell, as if the command
had been terminated with the \fB&\fP control operator, with a two-way pipe
established between the executing shell and the coprocess.
.PP
-The format for a coprocess is:
+The syntax for a coprocess is:
.RS
.PP
\fBcoproc\fP [\fINAME\fP] \fIcommand\fP [\fIredirections\fP]
.RE
.PP
This creates a coprocess named \fINAME\fP.
+\fIcommand\fP may be either a simple command or a compound
+command (see above).
+\fINAME\fP is a shell variable name.
If \fINAME\fP is not supplied, the default name is \fBCOPROC\fP.
-\fINAME\fP must not be supplied if \fIcommand\fP is a \fIsimple
-command\fP (see above); otherwise, it is interpreted as the first word
-of the simple command.
+.PP
+The recommended form to use for a coprocess is
+.RS
+.PP
+\fBcoproc\fP \fINAME\fP { \fIcommand\fP [\fIredirections\fP]; }
+.RE
+.PP
+This form is recommended because simple commands result in the coprocess
+always being named \fBCOPROC\fP, and it is simpler to use and more complete
+than the other compound commands.
+.PP
+If \fIcommand\fP is a compound command, \fINAME\fP is optional. The
+word following \fBcoproc\fP determines whether that word is interpreted
+as a variable name: it is interpreted as \fINAME\fP if it is not a
+reserved word that introduces a compound command.
+If \fIcommand\fP is a simple command, \fINAME\fP is not allowed; this
+is to avoid confusion between \fINAME\fP and the first word of the simple
+command.
+.PP
When the coprocess is executed, the shell creates an array variable (see
.B Arrays
below) named \fINAME\fP in the context of the executing shell.
@@ -975,6 +1015,7 @@ The file descriptors can be utilized as arguments to shell commands
and redirections using standard word expansions.
Other than those created to execute command and process substitutions,
the file descriptors are not available in subshells.
+.PP
The process ID of the shell spawned to execute the coprocess is
available as the value of the variable \fINAME\fP_PID.
The \fBwait\fP
@@ -1000,9 +1041,9 @@ The \fIbody\fP of the function is the compound command
.I compound\-command
(see \fBCompound Commands\fP above).
That command is usually a \fIlist\fP of commands between { and }, but
-may be any command listed under \fBCompound Commands\fP above,
-with one exception: If the \fBfunction\fP reserved word is used, but the
-parentheses are not supplied, the braces are required.
+may be any command listed under \fBCompound Commands\fP above.
+If the \fBfunction\fP reserved word is used, but the
+parentheses are not supplied, the braces are recommended.
\fIcompound\-command\fP is executed whenever \fIfname\fP is specified as the
name of a simple command.
When in \fIposix mode\fP, \fIfname\fP must be a valid shell \fIname\fP
@@ -1116,10 +1157,11 @@ quotes (see
.B PARAMETERS
below).
.PP
-Words of the form \fB$\fP\(aq\fIstring\fP\(aq are treated specially. The
-word expands to \fIstring\fP, with backslash-escaped characters replaced
-as specified by the ANSI C standard. Backslash escape sequences, if
-present, are decoded as follows:
+Character sequences of the form \fB$\fP\(aq\fIstring\fP\(aq are treated
+as a special variant of single quotes.
+The sequence expands to \fIstring\fP, with backslash-escaped characters
+in \fIstring\fP replaced as specified by the ANSI C standard.
+Backslash escape sequences, if present, are decoded as follows:
.RS
.PD 0
.TP
@@ -1187,14 +1229,23 @@ not been present.
.PP
A double-quoted string preceded by a dollar sign (\fB$\fP\(dq\fIstring\fP\(dq)
will cause the string to be translated according to the current locale.
-The \fIgettext\fP infrastructure performs the message catalog lookup and
-translation, using the \fBLC_MESSAGES\fP and \fBTEXTDOMAIN\fP shell
-variables.
+The \fIgettext\fP infrastructure performs the lookup and
+translation, using the \fBLC_MESSAGES\fP, \fBTEXTDOMAINDIR\fP,
+and \fBTEXTDOMAIN\fP shell variables.
If the current locale is \fBC\fP or \fBPOSIX\fP,
-or if there are no translations available,
+if there are no translations available,
+or if the string is not translated,
the dollar sign is ignored.
-If the string is translated and replaced, the replacement is
-double-quoted.
+This is a form of double quoting, so the string remains double-quoted
+by default, whether or not it is translated and replaced.
+If the \fBnoexpand_translation\fP option is enabled
+using the \fBshopt\fP builtin,
+translated strings are single-quoted instead of double-quoted.
+See the description of
+.B shopt
+below under
+.SM
+.BR SHELL BUILTIN COMMANDS .
.SH PARAMETERS
A
.I parameter
@@ -1250,10 +1301,7 @@ is evaluated as an arithmetic expression even if the $((...)) expansion is
not used (see
.B "Arithmetic Expansion"
below).
-Word splitting is not performed, with the exception
-of \fB"$@"\fP as explained below under
-.BR "Special Parameters" .
-Pathname expansion is not performed.
+Word splitting and pathname expansion are not performed.
Assignment statements may also appear as arguments to the
.BR alias ,
.BR declare ,
@@ -1272,7 +1320,7 @@ to a shell variable or array index, the += operator can be used to
append to or add to the variable's previous value.
This includes arguments to builtin commands such as \fBdeclare\fP that
accept assignment statements (\fIdeclaration\fP commands).
-When += is applied to a variable for which the \fIinteger\fP attribute has been
+When += is applied to a variable for which the \fBinteger\fP attribute has been
set, \fIvalue\fP is evaluated as an arithmetic expression and added to the
variable's current value, which is also evaluated.
When += is applied to an array variable using compound assignment (see
@@ -1407,7 +1455,7 @@ builtin command, or those set by the shell itself
option).
.TP
.B $
-Expands to the process ID of the shell. In a () subshell, it
+Expands to the process ID of the shell. In a subshell, it
expands to the process ID of the current shell, not the
subshell.
.TP
@@ -1926,6 +1974,16 @@ If
is unset, it loses its special properties, even if it is
subsequently reset.
.TP
+.B READLINE_ARGUMENT
+Any numeric argument given to a readline command that was defined using
+.if t \f(CWbind -x\fP
+.if n "bind -x"
+(see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below)
+when it was invoked.
+.TP
.B READLINE_LINE
The contents of the
.B readline
@@ -1968,14 +2026,14 @@ builtin command when no arguments are supplied.
.TP
.B SECONDS
Each time this parameter is
-referenced, the number of seconds since shell invocation is returned. If a
-value is assigned to
+referenced, it expands to the number of seconds since shell invocation.
+If a value is assigned to
.SM
.BR SECONDS ,
the value returned upon subsequent
references is
the number of seconds since the assignment plus the value assigned.
-The number of seconds at shell invocation and the current time is always
+The number of seconds at shell invocation and the current time are always
determined by querying the system clock.
If
.SM
@@ -2038,7 +2096,7 @@ below.
The value is used to set the shell's compatibility level.
See
.SM
-.B SHELL COMPATIBILITY MODE
+.B "SHELL COMPATIBILITY MODE"
below for a description of the various compatibility
levels and their effects.
The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42)
@@ -2051,7 +2109,7 @@ compatibility level to the default for the current version.
The valid values correspond to the compatibility levels
described below under
.SM
-.BR BSHELL COMPATIBILITY MODE .
+.BR "SHELL COMPATIBILITY MODE" .
For example, 4.2 and 42 are valid values that correspond
to the \fBcompat42\fP \fBshopt\fP option
and set the compatibility level to 42.
@@ -2728,6 +2786,12 @@ interpreted as relative to one greater than the maximum index of
\fIname\fP, so negative indices count back from the end of the
array, and an index of \-1 references the last element.
.PP
+The += operator will append to an array variable when assigning
+using the compound assignment syntax; see
+.SM
+.B PARAMETERS
+above.
+.PP
Any element of an array may be referenced using
${\fIname\fP[\fIsubscript\fP]}. The braces are required to avoid
conflicts with pathname expansion. If
@@ -2782,9 +2846,15 @@ destroys the array element at index \fIsubscript\fP,
for both indexed and associative arrays.
Negative subscripts to indexed arrays are interpreted as described above.
Unsetting the last element of an array variable does not unset the variable.
-\fBunset\fP \fIname\fP, where \fIname\fP is an array, or
+\fBunset\fP \fIname\fP, where \fIname\fP is an array,
+removes the entire array.
\fBunset\fP \fIname\fP[\fIsubscript\fP], where
-\fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array.
+\fIsubscript\fP is \fB*\fP or \fB@\fP, behaves differently depending on
+whether \fIname\fP is an indexed or associative array.
+If \fIname\fP is an associative array, this unsets the element with
+subscript \fB*\fP or \fB@\fP.
+If \fIname\fP is an indexed array, unset removes all of the elements but
+does not remove the array itself.
.PP
When using a variable name with a subscript as an argument to a command,
such as with \fBunset\fP, without using the word expansion syntax
@@ -2875,7 +2945,7 @@ For example, a\fB{\fPd,c,b\fB}\fPe expands into `ade ace abe'.
.PP
A sequence expression takes the form
\fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIincr\fP\fB]}\fP,
-where \fIx\fP and \fIy\fP are either integers or single characters,
+where \fIx\fP and \fIy\fP are either integers or single letters,
and \fIincr\fP, an optional increment, is an integer.
When integers are supplied, the expression expands to each number between
\fIx\fP and \fIy\fP, inclusive.
@@ -2884,10 +2954,11 @@ same width.
When either \fIx\fP or \fPy\fP begins with a zero, the shell
attempts to force all generated terms to contain the same number of digits,
zero-padding where necessary.
-When characters are supplied, the expression expands to each character
+When letters are supplied, the expression expands to each character
lexicographically between \fIx\fP and \fIy\fP, inclusive,
using the default C locale.
-Note that both \fIx\fP and \fIy\fP must be of the same type.
+Note that both \fIx\fP and \fIy\fP must be of the same type
+(integer or letter).
When the increment is supplied, it is used as the difference between
each term. The default increment is 1 or \-1 as appropriate.
.PP
@@ -3117,7 +3188,7 @@ ${\fIparameter\fP\fB:\fP\fIoffset\fP\fB:\fP\fIlength\fP}
\fBSubstring Expansion\fP.
Expands to up to \fIlength\fP characters of the value of \fIparameter\fP
starting at the character specified by \fIoffset\fP.
-If \fIparameter\fP is \fB@\fP, an indexed array subscripted by
+If \fIparameter\fP is \fB@\fP or \fB*\fP, an indexed array subscripted by
\fB@\fP or \fB*\fP, or an associative array name, the results differ as
described below.
If \fIlength\fP is omitted, expands to the substring of the value of
@@ -3140,8 +3211,8 @@ a number of characters, and the expansion is the characters between
Note that a negative offset must be separated from the colon by at least
one space to avoid being confused with the \fB:-\fP expansion.
.sp 1
-If \fIparameter\fP is \fB@\fP, the result is \fIlength\fP positional
-parameters beginning at \fIoffset\fP.
+If \fIparameter\fP is \fB@\fP or \fB*\fP, the result is \fIlength\fP
+positional parameters beginning at \fIoffset\fP.
A negative \fIoffset\fP is taken relative to one greater than the greatest
positional parameter, so an offset of \-1 evaluates to the last positional
parameter.
@@ -3289,22 +3360,58 @@ the pattern removal operation is applied to each member of the
array in turn, and the expansion is the resultant list.
.TP
${\fIparameter\fP\fB/\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD 0
+.TP
+${\fIparameter\fP\fB//\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.TP
+${\fIparameter\fP\fB/#\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.TP
+${\fIparameter\fP\fB/%\fP\fIpattern\fP\fB/\fP\fIstring\fP}
+.PD
\fBPattern substitution\fP.
The \fIpattern\fP is expanded to produce a pattern just as in
-pathname expansion,
+pathname expansion.
\fIParameter\fP is expanded and the longest match of \fIpattern\fP
against its value is replaced with \fIstring\fP.
+\fIstring\fP undergoes tilde expansion, parameter and variable expansion,
+arithmetic expansion, command and process substitution, and quote removal.
The match is performed using the rules described under
.B Pattern Matching
below.
-If \fIpattern\fP begins with \fB/\fP, all matches of \fIpattern\fP are
-replaced with \fIstring\fP. Normally only the first match is replaced.
-If \fIpattern\fP begins with \fB#\fP, it must match at the beginning
-of the expanded value of \fIparameter\fP.
-If \fIpattern\fP begins with \fB%\fP, it must match at the end
-of the expanded value of \fIparameter\fP.
-If \fIstring\fP is null, matches of \fIpattern\fP are deleted
+In the first form above, only the first match is replaced.
+If there are two slashes separating \fIparameter\fP and \fIpattern\fP
+(the second form above), all matches of \fIpattern\fP are
+replaced with \fIstring\fP.
+If \fIpattern\fP is preceded by \fB#\fP (the third form above),
+it must match at the beginning of the expanded value of \fIparameter\fP.
+If \fIpattern\fP is preceded by \fB%\fP (the fourth form above),
+it must match at the end of the expanded value of \fIparameter\fP.
+If the expansion of \fIstring\fP is null,
+matches of \fIpattern\fP are deleted.
+If \fIstring\fP is null,
+matches of \fIpattern\fP are deleted
and the \fB/\fP following \fIpattern\fP may be omitted.
+.sp 1
+If the \fBpatsub_replacement\fP shell option is enabled using \fBshopt\fP,
+any unquoted instances of \fB&\fP in \fIstring\fP are replaced with the
+matching portion of \fIpattern\fP.
+.sp 1
+Quoting any part of \fIstring\fP inhibits replacement in the
+expansion of the quoted portion, including replacement strings stored
+in shell variables.
+Backslash will escape \fB&\fP in \fIstring\fP; the backslash is removed
+in order to permit a literal \fB&\fP in the replacement string.
+Backslash can also be used to escape a backslash; \fB\e\e\fP results in
+a literal backslash in the replacement.
+Users should take care if \fIstring\fP is double-quoted to avoid
+unwanted interactions between the backslash and double-quoting, since
+backslash has special meaning within double quotes.
+Pattern substitution performs the check for unquoted \fB&\fP after
+expanding \fIstring\fP;
+shell programmers should quote any occurrences of \fB&\fP
+they want to be taken literally in the replacement
+and ensure any instances of \fB&\fP they want to be replaced are unquoted.
+.sp 1
If the
.B nocasematch
shell option is enabled, the match is performed without regard to the case
@@ -3394,7 +3501,7 @@ format that can be reused as input.
.TP
.B E
The expansion is a string that is the value of \fIparameter\fP with backslash
-escape sequences expanded as with the \fB$'...'\fP quoting mechanism.
+escape sequences expanded as with the \fB$\(aq...\(aq\fP quoting mechanism.
.TP
.B P
The expansion is a string that is the result of expanding the value of
@@ -3414,6 +3521,10 @@ indexed and associative arrays as a sequence of quoted key-value pairs
.B a
The expansion is a string consisting of flag values representing
\fIparameter\fP's attributes.
+.TP
+.B k
+Like the K transformation, but expands the keys and values of
+indexed and associative arrays to separate words after word splitting.
.PD
.PP
If
@@ -3483,8 +3594,10 @@ and the substitution of the result. The format for arithmetic expansion is:
.PP
The
.I expression
-is treated as if it were within double quotes, but a double quote
-inside the parentheses is not treated specially.
+undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in \fIexpression\fP are not treated specially
+and are removed.
All tokens in the expression undergo parameter and variable expansion,
command substitution, and quote removal.
The result is treated as the arithmetic expression to be evaluated.
@@ -3648,14 +3761,23 @@ at the start of a name or immediately following a slash
must be matched explicitly, unless the shell option
.B dotglob
is set.
-The filenames
+In order to match the filenames
.B ``.''
and
-.B ``..''
-must always be matched explicitly, even if
+.BR ``..'' ,
+the pattern must begin with ``.'' (for example, ``.?''),
+even if
.B dotglob
is set.
-In other cases, the
+If the
+.B globskipdots
+shell option is enabled, the filenames
+.B ``.''
+and
+.BR ``..''
+are never matched, even if the pattern begins with a
+.BR ``.'' .
+When not matching pathnames, the
.B ``.''
character is not treated specially.
When matching a pathname, the slash character must always be
@@ -3672,6 +3794,7 @@ below under
for a description of the
.BR nocaseglob ,
.BR nullglob ,
+.BR globskipdots ,
.BR failglob ,
and
.B dotglob
@@ -3763,7 +3886,9 @@ is a
or a
.B ^
then any character not enclosed is matched.
-The sorting order of characters in range expressions is determined by
+The sorting order of characters in range expressions,
+and the characters included in the range,
+are determined by
the current locale and the values of the
.SM
.B LC_COLLATE
@@ -3833,7 +3958,7 @@ the syntax \fB[.\fP\fIsymbol\fP\fB.]\fP matches the collating symbol
.PD
.PP
If the \fBextglob\fP shell option is enabled using the \fBshopt\fP
-builtin, several extended pattern matching operators are recognized.
+builtin, the shell recognizes several extended pattern matching operators.
In the following description, a \fIpattern-list\fP is a list of one
or more patterns separated by a \fB|\fP.
Composite patterns may be formed using one or more of the following
@@ -3859,6 +3984,22 @@ Matches anything except one of the given patterns
.RE
.PD
.PP
+The\fBextglob\fP option changes the behavior of the parser, since the
+parentheses are normally treated as operators with syntactic meaning.
+To ensure that extended matching patterns are parsed correctly, make sure
+that \fBextglob\fP is enabled before parsing constructs containing the
+patterns, including shell functions and command substitutions.
+.PP
+When matching filenames, the \fBdotglob\fP shell option determines
+the set of filenames that are tested:
+when \fBdotglob\fP is enabled, the set of filenames includes all files
+beginning with ``.'', but ``.'' and ``..'' must be matched by a
+pattern or sub-pattern that begins with a dot;
+when it is disabled, the set does not
+include any filenames beginning with ``.'' unless the pattern
+or sub-pattern begins with a ``.''.
+As above, ``.'' only has a special meaning when matching filenames.
+.PP
Complicated extended pattern matching against long strings is slow,
especially when the patterns contain alternations and the strings
contain multiple matches.
@@ -3876,7 +4017,7 @@ Before a command is executed, its input and output
may be
.I redirected
using a special notation interpreted by the shell.
-Redirection allows commands' file handles to be
+\fIRedirection\fP allows commands' file handles to be
duplicated, opened, closed,
made to refer to different files,
and can change the files the command reads from and writes to.
@@ -3900,7 +4041,8 @@ by {\fIvarname\fP}, the value of \fIvarname\fP defines the file
descriptor to close.
If {\fIvarname\fP} is supplied, the redirection persists beyond
the scope of the command, allowing the shell programmer to manage
-the file descriptor himself.
+the file descriptor's lifetime manually.
+The \fBvarredir_close\fP shell option manages this behavior.
.PP
In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is
@@ -4287,7 +4429,7 @@ command, and removed with the
command.
.PP
There is no mechanism for using arguments in the replacement text.
-If arguments are needed, a shell function should be used (see
+If arguments are needed, use a shell function (see
.SM
.B FUNCTIONS
below).
@@ -4379,11 +4521,22 @@ been enabled.
.PP
Variables local to the function may be declared with the
.B local
-builtin command. Ordinarily, variables and their values
+builtin command (\fIlocal variables\fP).
+Ordinarily, variables and their values
are shared between the function and its caller.
If a variable is declared \fBlocal\fP, the variable's visible scope
is restricted to that function and its children (including the functions
it calls).
+.PP
+In the following description, the \fIcurrent scope\fP is a currently-
+executing function.
+Previous scopes consist of that function's caller and so on,
+back to the "global" scope, where the shell is not executing
+any shell function.
+Consequently, a local variable at the current scope is a variable
+declared using the \fBlocal\fP or \fBdeclare\fP builtins in the
+function that is currently executing.
+.PP
Local variables "shadow" variables with the same name declared at
previous scopes.
For instance, a local variable declared in a function
@@ -4414,11 +4567,13 @@ variable is local to the current scope, \fBunset\fP will unset it;
otherwise the unset will refer to the variable found in any calling scope
as described above.
If a variable at the current local scope is unset, it will remain so
+(appearing as unset)
until it is reset in that scope or until the function returns.
Once the function returns, any instance of the variable at a previous
scope will become visible.
If the unset acts on a variable at a previous scope, any instance of a
-variable with that name that had been shadowed will become visible.
+variable with that name that had been shadowed will become visible
+(see below how the \fBlocalvar_unset\fP shell option changes this behavior).
.PP
The \fBFUNCNEST\fP variable, if set to a numeric value greater
than 0, defines a maximum function nesting level. Function
@@ -4453,7 +4608,8 @@ or
will list the function names only
(and optionally the source file and line number, if the \fBextdebug\fP
shell option is enabled).
-Functions may be exported so that subshells
+Functions may be exported so that child shell processes
+(those created when executing a separate shell invocation)
automatically have them defined with the
.B \-f
option to the
@@ -4777,7 +4933,11 @@ expansion, parameter expansion, command substitution, arithmetic expansion,
and quote removal before being assigned to the variable.
.PP
If no command name results, the variable assignments affect the current
-shell environment. Otherwise, the variables are added to the environment
+shell environment.
+In the case of such a command (one that consists only of assignment
+statements and redirections), assignment statements are performed before
+redirections.
+Otherwise, the variables are added to the environment
of the executed command and do not affect the current shell environment.
If any of the assignments attempts to assign a value to a readonly variable,
an error occurs, and the command exits with a non-zero status.
@@ -4842,8 +5002,10 @@ to the command are set to the arguments given, if any.
If this execution fails because the file is not in executable
format, and the file is not a directory, it is assumed to be
a \fIshell script\fP, a file
-containing shell commands. A subshell is spawned to execute
-it. This subshell reinitializes itself, so
+containing shell commands, and the shell creates a
+new instance of itself
+to execute it.
+This subshell reinitializes itself, so
that the effect is as if a new shell had been invoked
to handle the script, with the exception that the locations of
commands remembered by the parent (see
@@ -4899,8 +5061,8 @@ of \fB$$\fP, and the value of
When a simple command other than a builtin or shell function
is to be executed, it
is invoked in a separate execution environment that consists of
-the following. Unless otherwise noted, the values are inherited
-from the shell.
+the following.
+Unless otherwise noted, the values are inherited from the shell.
.if n .sp 1
.IP \(bu
the shell's open files, plus any modifications and additions specified
@@ -4919,6 +5081,8 @@ shell's parent, and traps ignored by the shell are ignored
A command invoked in this separate environment cannot affect the
shell's execution environment.
.PP
+A \fIsubshell\fP is a copy of the shell process.
+.PP
Command substitution, commands grouped with parentheses,
and asynchronous commands are invoked in a
subshell environment that is a duplicate of the shell environment,
@@ -5020,6 +5184,9 @@ while they execute.
All builtins return an exit status of 2 to indicate incorrect usage,
generally invalid options or missing arguments.
.PP
+The exit status of the last command is available in the special
+parameter $?.
+.PP
\fBBash\fP itself returns the exit status of the last command
executed, unless a syntax error occurs, in which case it exits
with a non-zero value. See also the \fBexit\fP builtin
@@ -5111,6 +5278,63 @@ When \fBbash\fP is waiting for an asynchronous command via the \fBwait\fP
builtin, the reception of a signal for which a trap has been set will
cause the \fBwait\fP builtin to return immediately with an exit status
greater than 128, immediately after which the trap is executed.
+.PP
+When job control is not enabled, and \fBbash\fP is waiting for a foreground
+command to complete, the shell receives keyboard-generated signals
+such as
+.SM
+.B SIGINT
+(usually generated by \fB^C\fP) that users commonly intend to send
+to that command.
+This happens because the shell and the command are in the
+same process group as the terminal, and \fB^C\fP sends
+.SM
+.B SIGINT
+to all processes in that process group.
+.PP
+When \fBbash\fP is running without job control enabled and receives
+.SM
+.B SIGINT
+while waiting for a foreground command, it waits until that foreground
+command terminates and then decides what to do about the
+.SM
+.BR SIGINT :
+.IP 1.
+If the command terminates due to the
+.SM
+.BR SIGINT ,
+\fBbash\fP concludes
+that the user meant to end the entire script, and acts on the
+.SM
+.B SIGINT
+(e.g., by running a
+.SM
+.B SIGINT
+trap or exiting itself);
+.IP 2.
+If the command does not terminate due to
+.SM
+.BR SIGINT ,
+the program handled the
+.SM
+.B SIGINT
+itself and did not treat it as a fatal signal.
+In that case, \fBbash\fP does not treat
+.SM
+.B SIGINT
+as a fatal signal, either, instead assuming that the
+.SM
+.B SIGINT
+was used as part of the program's normal operation
+(e.g., emacs uses it to abort editing
+commands) or deliberately discarded.
+However, \fBbash\fP will run any
+trap set on
+.SM
+.BR SIGINT ,
+as it does with any other trapped signal it
+receives while it is waiting for the foreground command to
+complete, for compatibility.
.SH "JOB CONTROL"
.I Job control
refers to the ability to selectively stop (\fIsuspend\fP)
@@ -5375,7 +5599,8 @@ the version of \fBbash\fP (e.g., 2.00)
the release of \fBbash\fP, version + patch level (e.g., 2.00.0)
.TP
.B \ew
-the current working directory, with
+the value of the \fBPWD\fP shell variable (\fB$PWD\fP),
+with
.SM
.B $HOME
abbreviated with a tilde
@@ -5385,7 +5610,8 @@ abbreviated with a tilde
variable)
.TP
.B \eW
-the basename of the current working directory, with
+the basename of \fB$PWD\fP,
+with
.SM
.B $HOME
abbreviated with a tilde
@@ -5731,6 +5957,30 @@ The variables and their default values are:
.PP
.PD 0
.TP
+.B active\-region\-start\-color
+A string variable that controls the text color and background when displaying
+the text in the active region (see the description of
+\fBenable\-active\-region\fP below).
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal before displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that puts the terminal in standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be \f(CW"\ee[01;33m"\fP.
+.TP
+.B active\-region\-end\-color
+A string variable that "undoes" the effects of \fBactive\-region\-start\-color\fP
+and restores "normal" terminal display appearance after displaying text
+in the active region.
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal after displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that restores the terminal from standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be \f(CW"\ee[0m"\fP.
+.TP
.B bell\-style (audible)
Controls what happens when readline wants to ring the terminal bell.
If set to \fBnone\fP, readline never rings the bell. If set to
@@ -5751,6 +6001,9 @@ If set to \fBOn\fP, when listing completions, readline displays the
common prefix of the set of possible completions using a different color.
The color definitions are taken from the value of the \fBLS_COLORS\fP
environment variable.
+If there is a color definition in \fB$LS_COLORS\fP for the custom suffix
+"readline-colored-completion-prefix", readline uses this color for
+the common prefix instead of its default.
.TP
.B colored\-stats (Off)
If set to \fBOn\fP, readline displays possible completions using different
@@ -5800,6 +6053,8 @@ If the number of possible completions is greater than
or equal to the value of this variable,
readline will ask whether or not the user wishes to view them;
otherwise they are simply listed on the terminal.
+A zero value means readline should never ask; negative values are
+treated as zero.
.TP
.B convert\-meta (On)
If set to \fBOn\fP, readline will convert characters with the
@@ -5808,6 +6063,8 @@ by stripping the eighth bit and prefixing an
escape character (in effect, using escape as the \fImeta prefix\fP).
The default is \fIOn\fP, but readline will set it to \fIOff\fP if the
locale contains eight-bit characters.
+This variable is dependent on the \fBLC_CTYPE\fP locale category, and
+may change if the locale is changed.
.TP
.B disable\-completion (Off)
If set to \fBOn\fP, readline will inhibit word completion. Completion
@@ -5838,12 +6095,25 @@ Use the \e1 and \e2 escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
.TP
+.B enable\-active\-region (On)
+The \fIpoint\fP is the current cursor position, and \fImark\fP refers
+to a saved cursor position.
+The text between the point and mark is referred to as the \fIregion\fP.
+When this variable is set to \fIOn\fP, readline allows certain commands
+to designate the region as \fIactive\fP.
+When the region is active, readline highlights the text in the region using
+the value of the \fBactive\-region\-start\-color\fP, which defaults to the
+string that enables
+the terminal's standout mode.
+The active region shows the text inserted by bracketed-paste and any
+matching text found by incremental and non-incremental history searches.
+.TP
.B enable\-bracketed\-paste (On)
-When set to \fBOn\fP, readline will configure the terminal in a way
-that will enable it to insert each paste into the editing buffer as a
-single string of characters, instead of treating each character as if
-it had been read from the keyboard. This can prevent pasted characters
-from being interpreted as editing commands.
+When set to \fBOn\fP, readline configures the terminal to insert each
+paste into the editing buffer as a single string of characters, instead
+of treating each character as if it had been read from the keyboard.
+This prevents readline from executing any editing commands bound to key
+sequences appearing in the pasted text.
.TP
.B enable\-keypad (Off)
When set to \fBOn\fP, readline will try to enable the application
@@ -5889,6 +6159,8 @@ regardless of what the terminal claims it can support. The name
is a synonym for this variable.
The default is \fIOff\fP, but readline will set it to \fIOn\fP if the
locale contains eight-bit characters.
+This variable is dependent on the \fBLC_CTYPE\fP locale category, and
+may change if the locale is changed.
.TP
.B isearch\-terminators (``C\-[C\-J'')
The string of characters that should terminate an incremental
@@ -5952,6 +6224,8 @@ eighth bit set directly rather than as a meta-prefixed escape
sequence.
The default is \fIOff\fP, but readline will set it to \fIOn\fP if the
locale contains eight-bit characters.
+This variable is dependent on the \fBLC_CTYPE\fP locale category, and
+may change if the locale is changed.
.TP
.B page\-completions (On)
If set to \fBOn\fP, readline uses an internal \fImore\fP-like pager
@@ -6205,14 +6479,14 @@ Words are delimited by non-quoted shell metacharacters.
.B previous\-screen\-line
Attempt to move point to the same physical screen column on the previous
physical screen line. This will not have the desired effect if the current
-Readline line does not take up more than one physical line or if point is not
+readline line does not take up more than one physical line or if point is not
greater than the length of the prompt plus the screen width.
.TP
.B next\-screen\-line
Attempt to move point to the same physical screen column on the next
physical screen line. This will not have the desired effect if the current
-Readline line does not take up more than one physical line or if the length
-of the current Readline line is not greater than the length of the prompt
+readline line does not take up more than one physical line or if the length
+of the current readline line is not greater than the length of the prompt
plus the screen width.
.TP
.B clear\-display (M\-C\-l)
@@ -6256,6 +6530,18 @@ Move to the first line in the history.
Move to the end of the input history, i.e., the line currently being
entered.
.TP
+.B operate\-and\-get\-next (C\-o)
+Accept the current line for execution and fetch the next line
+relative to the current line from the history for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
+.TP
+.B
+fetch\-history
+With a numeric argument, fetch that entry from the history list
+and make it the current line.
+Without an argument, move back to the first entry in the history list.
+.TP
.B reverse\-search\-history (C\-r)
Search backward starting at the current line and moving `up' through
the history as necessary. This is an incremental search.
@@ -6355,12 +6641,6 @@ Perform history and alias expansion on the current line.
.B insert\-last\-argument (M\-.\^, M\-_\^)
A synonym for \fByank\-last\-arg\fP.
.TP
-.B operate\-and\-get\-next (C\-o)
-Accept the current line for execution and fetch the next line
-relative to the current line from the history for editing.
-A numeric argument, if supplied, specifies the history entry to use instead
-of the current line.
-.TP
.B edit\-and\-execute\-command (C\-x C\-e)
Invoke an editor on the current command line, and execute the result as shell
commands.
@@ -6379,7 +6659,7 @@ The character indicating end-of-file as set, for example, by
.if t \f(CWstty\fP.
.if n ``stty''.
If this character is read when there are no characters
-on the line, and point is at the beginning of the line, Readline
+on the line, and point is at the beginning of the line, readline
interprets it as the end of input and returns
.SM
.BR EOF .
@@ -6704,11 +6984,11 @@ the saved position, and the old cursor position is saved as the mark.
.TP
.B character\-search (C\-])
A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
+character. A negative argument searches for previous occurrences.
.TP
.B character\-search\-backward (M\-C\-])
A character is read and point is moved to the previous occurrence of that
-character. A negative count searches for subsequent occurrences.
+character. A negative argument searches for subsequent occurrences.
.TP
.B skip\-csi\-sequence
Read enough characters to consume a multi-key sequence such as those
@@ -6735,6 +7015,11 @@ a shell comment.
If a numeric argument causes the comment character to be removed, the line
will be executed by the shell.
.TP
+.B spell\-correct\-word (C\-x s)
+Perform spelling correction on the current word, treating it as a directory
+or filename, in the same way as the \fBcdspell\fP shell option.
+Word boundaries are the same as those used by \fBshell\-forward\-word\fP.
+.TP
.B glob\-complete\-word (M\-g)
The word before point is treated as a pattern for pathname expansion,
with an asterisk implicitly appended. This pattern is used to
@@ -7426,13 +7711,14 @@ does not contain a slash, filenames in
.SM
.B PATH
are used to find the directory containing
-.IR filename .
+.IR filename ,
+but \fIfilename\fP does not need to be executable.
The file searched for in
.SM
.B PATH
need not be executable.
-When \fBbash\fP is not in \fIposix mode\fP, the current directory is
-searched if no file is found in
+When \fBbash\fP is not in \fIposix mode\fP, it searches
+the current directory if no file is found in
.SM
.BR PATH .
If the
@@ -7446,12 +7732,12 @@ is not searched.
If any \fIarguments\fP are supplied, they become the positional
parameters when \fIfilename\fP is executed. Otherwise the positional
parameters are unchanged.
-If the \fB\-T\fP option is enabled, \fBsource\fP inherits any trap on
+If the \fB\-T\fP option is enabled, \fB.\fP inherits any trap on
\fBDEBUG\fP; if it is not, any \fBDEBUG\fP trap string is saved and
-restored around the call to \fBsource\fP, and \fBsource\fP unsets the
+restored around the call to \fB.\fP, and \fB.\fP unsets the
\fBDEBUG\fP trap while it executes.
If \fB\-T\fP is not set, and the sourced file changes
-the \fBDEBUG\fP trap, the new value is retained when \fBsource\fP completes.
+the \fBDEBUG\fP trap, the new value is retained when \fB.\fP completes.
The return status is the status of the last command exited within
the script (0 if no commands are executed), and false if
.I filename
@@ -7496,6 +7782,8 @@ or was started without job control.
\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIfunction\-name\fP
.TP
\fBbind\fP [\fB\-m\fP \fIkeymap\fP] \fIkeyseq\fP:\fIreadline\-command\fP
+.TP
+\fBbind\fP \fIreadline-command-line\fP
.PD
Display current
.B readline
@@ -7504,7 +7792,9 @@ key and function bindings, bind a key sequence to a
function or macro, or set a
.B readline
variable.
-Each non-option argument is a command as it would appear in
+Each non-option argument is a command as it would appear in a
+.B readline
+initialization file such as
.IR .inputrc ,
but each binding or command must be passed as a separate argument;
e.g., '"\eC\-x\eC\-r": re\-read\-init\-file'.
@@ -7577,6 +7867,11 @@ and
.B READLINE_MARK
variables to the current location of the insertion point and the saved
insertion point (the mark), respectively.
+The shell assigns any numeric argument the user supplied to the
+.SM
+.B READLINE_ARGUMENT
+variable.
+If there was no argument, that variable is not set.
If the executed command changes the value of any of
.SM
.BR READLINE_LINE ,
@@ -7643,7 +7938,6 @@ if \fIdir\fP is not supplied, the value of the
.SM
.B HOME
shell variable is the default.
-Any additional arguments following \fIdir\fP are ignored.
The variable
.SM
.B CDPATH
@@ -7702,6 +7996,10 @@ is used, or if
\fB\-\fP is the first argument, and the directory change is
successful, the absolute pathname of the new working directory is
written to the standard output.
+If the directory change is successful, \fBcd\fP sets the value of the
+\fBPWD\fP environment variable to the new directory name, and sets the
+\fBOLDPWD\fP environment variable to the value of the current working
+directory before the change.
The return value is true if the directory was successfully changed;
false otherwise.
.TP
@@ -7800,7 +8098,9 @@ If any of \fB\-D\fP, \fB\-E\fP, or \fB\-I\fP are supplied, any other
specified by the option.
.sp 1
The process of applying these completion specifications when word completion
-is attempted is described above under \fBProgrammable Completion\fP.
+is attempted is described
+.ie \n(zZ=1 in \fIbash(1)\fP.
+.el above under \fBProgrammable Completion\fP.
.sp 1
Other options, if specified, have the following meanings.
The arguments to the \fB\-G\fP, \fB\-W\fP, and \fB\-X\fP options
@@ -7935,6 +8235,7 @@ Names of all shell variables. May also be specified as \fB\-v\fP.
\fB\-C\fP \fIcommand\fP
\fIcommand\fP is executed in a subshell environment, and its output is
used as the possible completions.
+Arguments are passed as with the \fB\-F\fP option.
.TP 8
\fB\-F\fP \fIfunction\fP
The shell function \fIfunction\fP is executed in the current shell
@@ -8088,12 +8389,14 @@ to give variables attributes:
.B \-a
Each \fIname\fP is an indexed array variable (see
.B Arrays
-above).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
.TP
.B \-A
Each \fIname\fP is an associative array variable (see
.B Arrays
-above).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
.TP
.B \-f
Use function names only.
@@ -8102,7 +8405,9 @@ Use function names only.
The variable is treated as an integer; arithmetic evaluation (see
.SM
.B "ARITHMETIC EVALUATION"
-above) is performed when the variable is assigned a value.
+.ie \n(zZ=1 in \fIbash(1)\fP)
+.el above)
+is performed when the variable is assigned a value.
.TP
.B \-l
When the variable is assigned a value, all upper-case characters are
@@ -8165,7 +8470,9 @@ an attempt is made to assign a value to a readonly variable,
an attempt is made to assign a value to an array variable without
using the compound assignment syntax (see
.B Arrays
-above), one of the \fInames\fP is not a valid shell variable name,
+.ie \n(zZ=1 in \fIbash(1)\fP),
+.el above),
+one of the \fInames\fP is not a valid shell variable name,
an attempt is made to turn off readonly status for a readonly variable,
an attempt is made to turn off array status for an array variable,
or an attempt is made to display a non-existent function with \fB\-f\fP.
@@ -8335,7 +8642,11 @@ option means to load the new builtin command
.I name
from shared object
.IR filename ,
-on systems that support dynamic loading. The
+on systems that support dynamic loading.
+Bash will use the value of the \fBBASH_LOADABLES_PATH\fP variable as a
+colon-separated list of directories in which to search for \fIfilename\fP.
+The default is system-dependent.
+The
.B \-d
option will delete a builtin previously loaded with
.BR \-f .
@@ -8349,6 +8660,11 @@ If \fB\-a\fP is supplied, the list printed includes all builtins, with an
indication of whether or not each is enabled.
If \fB\-s\fP is supplied, the output is restricted to the POSIX
\fIspecial\fP builtins.
+If no options are supplied and a \fIname\fP is not a shell builtin,
+\fBenable\fP will attempt to load \fIname\fP from a shared object named
+\fIname\fP, as if the command were
+.if t \f(CWenable \-f\fP \fIname name\fP .
+.if n ``enable -f \fIname name\fP .
The return value is 0 unless a
.I name
is not a shell builtin or there is an error loading a new builtin
@@ -8780,8 +9096,9 @@ end of the history, and an index of \-1 refers to the current
\fBhistory -d\fP command.
.TP
\fB\-d\fP \fIstart\fP\-\fIend\fP
-Delete the history entries between positions \fIstart\fP and \fIend\fP,
-inclusive. Positive and negative values for \fIstart\fP and \fIend\fP
+Delete the range of history entries between positions \fIstart\fP and
+\fIend\fP, inclusive.
+Positive and negative values for \fIstart\fP and \fIend\fP
are interpreted as described above.
.TP
.B \-a
@@ -8829,7 +9146,7 @@ comment character followed immediately by a digit are interpreted
as timestamps for the following history entry.
The return value is 0 unless an invalid option is encountered, an
error occurs while reading or writing the history file, an invalid
-\fIoffset\fP is supplied as an argument to \fB\-d\fP, or the
+\fIoffset\fP or range is supplied as an argument to \fB\-d\fP, or the
history expansion supplied as an argument to \fB\-p\fP fails.
.RE
.TP
@@ -8940,7 +9257,8 @@ Each
is an arithmetic expression to be evaluated (see
.SM
.B "ARITHMETIC EVALUATION"
-above).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
If the last
.I arg
evaluates to 0,
@@ -9057,10 +9375,12 @@ argument is supplied, \fIarray\fP is invalid or unassignable, or if
.RE
.TP
\fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP]
-Removes entries from the directory stack. With no arguments,
-removes the top directory from the stack, and performs a
-.B cd
-to the new top directory.
+Removes entries from the directory stack.
+The elements are numbered from 0 starting at the first directory
+listed by \fBdirs\fP.
+With no arguments, \fBpopd\fP
+removes the top directory from the stack, and
+changes to the new top directory.
Arguments, if supplied, have the following meanings:
.RS
.PD 0
@@ -9073,7 +9393,8 @@ from the stack, so that only the stack is manipulated.
Removes the \fIn\fPth entry counting from the left of the list
shown by
.BR dirs ,
-starting with zero. For example:
+starting with zero, from the stack.
+For example:
.if n ``popd +0''
.if t \f(CWpopd +0\fP
removes the first directory,
@@ -9094,15 +9415,23 @@ removes the last directory,
the next to last.
.PD
.PP
+If the top element of the directory stack is modified, and
+the \fI-n\fP option was not supplied, \fBpopd\fP uses the \fBcd\fP
+builtin to change to the directory at the top of the stack.
+If the \fBcd\fP fails, \fBpopd\fP returns a non-zero value.
+.PP
+Otherwise,
+.B popd
+returns false if an invalid option is encountered, the directory stack
+is empty, or a non-existent directory stack entry is specified.
+.PP
If the
.B popd
-command is successful, a
+command is successful,
+bash runs
.B dirs
-is performed as well, and the return status is 0.
-.B popd
-returns false if an invalid option is encountered, the directory stack
-is empty, a non-existent directory stack entry is specified, or the
-directory change fails.
+to show the final contents of the directory stack,
+and the return status is 0.
.RE
.TP
\fBprintf\fP [\fB\-v\fP \fIvar\fP] \fIformat\fP [\fIarguments\fP]
@@ -9131,6 +9460,10 @@ in the same way as \fBecho \-e\fP.
causes \fBprintf\fP to output the corresponding
\fIargument\fP in a format that can be reused as shell input.
.TP
+.B %Q
+like \fB%q\fP, but applies any supplied precision to the \fIargument\fP
+before quoting it.
+.TP
.B %(\fIdatefmt\fP)T
causes \fBprintf\fP to output the date-time string resulting from using
\fIdatefmt\fP as a format string for \fIstrftime\fP(3).
@@ -9166,8 +9499,9 @@ The return value is zero on success, non-zero on failure.
.PD
Adds a directory to the top of the directory stack, or rotates
the stack, making the new top of the stack the current working
-directory. With no arguments, \fBpushd\fP exchanges the top two directories
-and returns 0, unless the directory stack is empty.
+directory.
+With no arguments, \fBpushd\fP exchanges the top two elements of
+the directory stack.
Arguments, if supplied, have the following meanings:
.RS
.PD 0
@@ -9192,26 +9526,28 @@ starting with zero) is at the top.
.I dir
Adds
.I dir
-to the directory stack at the top, making it the
-new current working directory as if it had been supplied as the argument
-to the \fBcd\fP builtin.
+to the directory stack at the top
.PD
.PP
-If the
+After the stack has been modified, if the \fB\-n\fP option was not
+supplied, \fBpushd\fP uses the \fBcd\fP builtin to change to the
+directory at the top of the stack.
+If the \fBcd\fP fails, \fBpushd\fP returns a non-zero value.
+.PP
+Otherwise, if no arguments are supplied,
.B pushd
-command is successful, a
-.B dirs
-is performed as well.
-If the first form is used,
+returns 0 unless the directory stack is empty.
+When rotating the directory stack,
.B pushd
-returns 0 unless the cd to
-.I dir
-fails. With the second form,
+returns 0 unless the directory stack is empty or
+a non-existent directory stack element is specified.
+.PP
+If the
.B pushd
-returns 0 unless the directory stack is empty,
-a non-existent directory stack element is specified,
-or the directory change to the specified new current directory
-fails.
+command is successful,
+bash runs
+.B dirs
+to show the final contents of the directory stack.
.RE
.TP
\fBpwd\fP [\fB\-LP\fP]
@@ -9233,7 +9569,10 @@ invalid option is supplied.
\fBread\fP [\fB\-ers\fP] [\fB\-a\fP \fIaname\fP] [\fB\-d\fP \fIdelim\fP] [\fB\-i\fP \fItext\fP] [\fB\-n\fP \fInchars\fP] [\fB\-N\fP \fInchars\fP] [\fB\-p\fP \fIprompt\fP] [\fB\-t\fP \fItimeout\fP] [\fB\-u\fP \fIfd\fP] [\fIname\fP ...]
One line is read from the standard input, or from the file descriptor
\fIfd\fP supplied as an argument to the \fB\-u\fP option,
-split into words as described above under \fBWord Splitting\fP,
+split into words as described
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
+under \fBWord Splitting\fP,
and the first word
is assigned to the first
.IR name ,
@@ -9249,7 +9588,10 @@ The characters in
.SM
.B IFS
are used to split the line into words using the same rules the shell
-uses for expansion (described above under \fBWord Splitting\fP).
+uses for expansion (described
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
+under \fBWord Splitting\fP).
The backslash character (\fB\e\fP) may be used to remove any special
meaning for the next character read and for line continuation.
Options, if supplied, have the following meanings:
@@ -9278,9 +9620,11 @@ is coming from a terminal,
(see
.SM
.B READLINE
-above) is used to obtain the line.
+.ie \n(zZ=1 in \fIbash(1)\fP)
+.el above)
+is used to obtain the line.
Readline uses the current (or default, if line editing was not previously
-active) editing settings, but uses Readline's default filename completion.
+active) editing settings, but uses readline's default filename completion.
.TP
.B \-i \fItext\fP
If
@@ -9331,8 +9675,10 @@ from regular files.
If \fBread\fP times out, \fBread\fP saves any partial input read into
the specified variable \fIname\fP.
If \fItimeout\fP is 0, \fBread\fP returns immediately, without trying to
-read any data. The exit status is 0 if input is available on
-the specified file descriptor, non-zero otherwise.
+read any data.
+The exit status is 0 if input is available on the specified file descriptor,
+or the read will return EOF,
+non-zero otherwise.
The exit status is greater than 128 if the timeout is exceeded.
.TP
.B \-u \fIfd\fP
@@ -9426,12 +9772,12 @@ function and not during execution of a script by \fB.\fP\^ or \fBsource\fP.
Any command associated with the \fBRETURN\fP trap is executed
before execution resumes after the function or script.
.TP
-\fBset\fP [\fB\-\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\-name\fP] [\fIarg\fP ...]
+\fBset\fP [\fB\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIoption\-name\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIarg\fP ...]
.PD 0
.TP
-\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\-name\fP] [\fIarg\fP ...]
+\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\-name\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIarg\fP ...]
.PD
-Without options, the name and value of each shell variable are displayed
+Without options, display the name and value of each shell variable
in a format that can be reused as input
for setting or resetting the currently-set variables.
Read-only variables cannot be reset.
@@ -9466,7 +9812,9 @@ or a \fIcompound command\fP
(see
.SM
.B SHELL GRAMMAR
-above), exits with a non-zero status.
+.ie \n(zZ=1 in \fIbash(1)\fP),
+.el above),
+exits with a non-zero status.
The shell does not exit if the
command that fails is part of the command list immediately following a
.B while
@@ -9494,7 +9842,9 @@ This option applies to the shell environment and each subshell environment
separately (see
.SM
.B "COMMAND EXECUTION ENVIRONMENT"
-above), and may cause
+.ie \n(zZ=1 in \fIbash(1)\fP),
+.el above),
+and may cause
subshells to exit before executing all the commands in the subshell.
.if t .sp 0.5
.if n .sp 1
@@ -9526,7 +9876,8 @@ by default for interactive shells on systems that support
it (see
.SM
.B JOB CONTROL
-above).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
All processes run in a separate process group.
When a background job completes, the shell prints a line
containing its exit status.
@@ -9577,7 +9928,10 @@ Same as
.BR \-H .
.TP 8
.B history
-Enable command history, as described above under
+Enable command history, as described
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
+under
.SM
.BR HISTORY .
This option is on by default in interactive shells.
@@ -9589,7 +9943,8 @@ The effect is as if the shell command
had been executed
(see
.B Shell Variables
-above).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
.TP 8
.B keyword
Same as
@@ -9644,7 +9999,9 @@ from the POSIX standard to match the standard (\fIposix mode\fP).
See
.SM
.B "SEE ALSO"
-below for a reference to a document that details how posix mode affects
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el below
+for a reference to a document that details how posix mode affects
bash's behavior.
.TP 8
.B privileged
@@ -9705,12 +10062,18 @@ not reset.
Turning this option off causes the effective user
and group ids to be set to the real user and group ids.
.TP 8
+.B \-r
+Enable restricted shell mode.
+This option cannot be unset once it has been set.
+.TP 8
.B \-t
Exit after reading and executing one command.
.TP 8
.B \-u
Treat unset variables and parameters other than the special
-parameters "@" and "*" as an error when performing
+parameters "@" and "*",
+or array variables subscripted with "@" or "*",
+as an error when performing
parameter expansion. If expansion is attempted on an
unset variable or parameter, the shell prints an error message, and,
if not interactive, exits with a non-zero status.
@@ -9730,7 +10093,9 @@ or associated word list.
.B \-B
The shell performs brace expansion (see
.B Brace Expansion
-above). This is on by default.
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
+This is on by default.
.TP 8
.B \-C
If set,
@@ -9923,8 +10288,9 @@ the exit to be deferred until a second exit is attempted without an
intervening command (see
.SM
.B "JOB CONTROL"
-above). The shell always
-postpones exiting if any jobs are stopped.
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
+The shell always postpones exiting if any jobs are stopped.
.TP 8
.B checkwinsize
If set, \fBbash\fP checks the window size after each external (non-builtin)
@@ -9943,7 +10309,10 @@ attempts to save all lines of a multiple-line
command in the same history entry. This allows
easy re-editing of multi-line commands.
This option is enabled by default, but only has an effect if command
-history is enabled, as described above under
+history is enabled, as described
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
+under
.SM
.BR HISTORY .
.PD 0
@@ -9961,12 +10330,15 @@ history is enabled, as described above under
.B compat43
.TP 8
.B compat44
+.TP 8
+.B compat50
.PD
These control aspects of the shell's compatibility mode
(see
.SM
.B "SHELL COMPATIBILITY MODE"
-below).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el below).
.TP 8
.B complete_fullquote
If set,
@@ -10025,7 +10397,10 @@ builtin command. An interactive shell does not exit if
fails.
.TP 8
.B expand_aliases
-If set, aliases are expanded as described above under
+If set, aliases are expanded as described
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
+under
.SM
.BR ALIASES .
This option is enabled by default for interactive shells.
@@ -10059,7 +10434,9 @@ a call to \fBreturn\fP.
and
.SM
.B BASH_ARGV
-are updated as described in their descriptions above.
+are updated as described in their descriptions
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
.TP
.B 5.
Function tracing is enabled: command substitution, shell functions, and
@@ -10073,7 +10450,10 @@ subshells invoked with \fB(\fP \fIcommand\fP \fB)\fP inherit the
.RE
.TP 8
.B extglob
-If set, the extended pattern matching features described above under
+If set, the extended pattern matching features described
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
+under
\fBPathname Expansion\fP are enabled.
.TP 8
.B extquote
@@ -10095,7 +10475,9 @@ the ignored words are the only possible completions.
See
.SM
\fBSHELL VARIABLES\fP
-above for a description of
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
+for a description of
.SM
.BR FIGNORE .
This option is enabled by default.
@@ -10104,7 +10486,9 @@ This option is enabled by default.
If set, range expressions used in pattern matching bracket expressions (see
.SM
.B Pattern Matching
-above) behave as if in the traditional C locale when performing
+.ie \n(zZ=1 in \fIbash(1)\fP)
+.el above)
+behave as if in the traditional C locale when performing
comparisons. That is, the current locale's collating sequence
is not taken into account, so
.B b
@@ -10114,6 +10498,15 @@ and
.BR B ,
and upper-case and lower-case ASCII characters will collate together.
.TP 8
+.B globskipdots
+If set, pathname expansion will never match the filenames
+.B ``.''
+and
+.BR ``..'' ,
+even if the pattern begins with a
+.BR ``.'' .
+This option is enabled by default.
+.TP 8
.B globstar
If set, the pattern \fB**\fP used in a pathname expansion context will
match all files and zero or more directories and subdirectories.
@@ -10153,7 +10546,8 @@ word containing a \fB@\fP is being completed (see
under
.SM
.B READLINE
-above).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
This is enabled by default.
.TP 8
.B huponexit
@@ -10174,7 +10568,9 @@ to cause that word and all remaining characters on that
line to be ignored in an interactive shell (see
.SM
.B COMMENTS
-above). This option is enabled by default.
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
+This option is enabled by default.
.TP 8
.B lastpipe
If set, and job control is not active, the shell runs the last command of
@@ -10201,7 +10597,8 @@ at the current function scope.
The shell sets this option if it is started as a login shell (see
.SM
.B "INVOCATION"
-above).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
The value may not be changed.
.TP 8
.B mailwarn
@@ -10226,7 +10623,8 @@ If set,
matches filenames in a case\-insensitive fashion when performing pathname
expansion (see
.B Pathname Expansion
-above).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
.TP 8
.B nocasematch
If set,
@@ -10236,18 +10634,38 @@ while executing \fBcase\fP or \fB[[\fP conditional commands,
when performing pattern substitution word expansions,
or when filtering possible completions as part of programmable completion.
.TP 8
+.B noexpand_translation
+If set,
+.B bash
+encloses the translated results of $"..." quoting in single quotes
+instead of double quotes.
+If the string is not translated, this has no effect.
+.TP 8
.B nullglob
If set,
.B bash
allows patterns which match no
files (see
.B Pathname Expansion
-above)
+.ie \n(zZ=1 in \fIbash(1)\fP)
+.el above)
to expand to a null string, rather than themselves.
.TP 8
+.B patsub_replacement
+If set, \fBbash\fP
+expands occurrences of \fB&\fP in the replacement string of pattern
+substitution to the text matched by the pattern, as described
+under \fBParameter Expansion\fP
+.ie \n(zZ=1 in \fIbash(1)\fP.
+.el above.
+This option is enabled by default.
+.TP 8
.B progcomp
If set, the programmable completion facilities (see
-\fBProgrammable Completion\fP above) are enabled.
+\fBProgrammable Completion\fP
+.ie \n(zZ=1 in \fIbash(1)\fP)
+.el above)
+are enabled.
This option is enabled by default.
.TP 8
.B progcomp_alias
@@ -10262,13 +10680,17 @@ parameter expansion, command substitution, arithmetic
expansion, and quote removal after being expanded as described in
.SM
.B PROMPTING
-above. This option is enabled by default.
+.ie \n(zZ=1 in \fIbash(1)\fP.
+.el above.
+This option is enabled by default.
.TP 8
.B restricted_shell
-The shell sets this option if it is started in restricted mode (see
+The shell sets this option if it is started in restricted mode
+(see
.SM
.B "RESTRICTED SHELL"
-below).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el below).
The value may not be changed.
This is not reset when the startup files are executed, allowing
the startup files to discover whether or not a shell is restricted.
@@ -10281,12 +10703,21 @@ number of positional parameters.
.TP 8
.B sourcepath
If set, the
-\fBsource\fP (\fB.\fP) builtin uses the value of
+\fB.\fP (\fBsource\fP) builtin uses the value of
.SM
.B PATH
to find the directory containing the file supplied as an argument.
This option is enabled by default.
.TP 8
+.B varredir_close
+If set, the shell automatically closes file descriptors assigned using the
+\fI{varname}\fP redirection syntax (see
+.SM
+.B REDIRECTION
+.ie \n(zZ=1 in \fIbash(1)\fP)
+.el above)
+instead of leaving them open when the command completes.
+.TP 8
.B xpg_echo
If set, the \fBecho\fP builtin expands backslash-escape sequences
by default.
@@ -10297,12 +10728,16 @@ by default.
Suspend the execution of this shell until it receives a
.SM
.B SIGCONT
-signal. A login shell cannot be suspended; the
+signal. A login shell,
+or a shell without job control enabled,
+cannot be suspended; the
.B \-f
option can be used to override this and force the suspension.
-The return status is 0 unless the shell is a login shell and
+The return status is 0 unless the shell is a login shell
+or job control is not enabled
+and
.B \-f
-is not supplied, or if job control is not enabled.
+is not supplied.
.TP
\fBtest\fP \fIexpr\fP
.PD 0
@@ -10312,8 +10747,10 @@ Return a status of 0 (true) or 1 (false) depending on
the evaluation of the conditional expression
.IR expr .
Each operator and operand must be a separate argument.
-.if \n(zZ=0 Expressions are composed of the primaries described above under
-.if \n(zZ=1 Expressions are composed of the primaries described in the \fBbash\fP manual page under
+Expressions are composed of the primaries described
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
+under
.SM
.BR "CONDITIONAL EXPRESSIONS" .
\fBtest\fP does not accept any options, nor does it accept and ignore
@@ -10366,7 +10803,9 @@ The expression is true if and only if the argument is not null.
2 arguments
If the first argument is \fB!\fP, the expression is true if and
only if the second argument is null.
-If the first argument is one of the unary conditional operators listed above
+If the first argument is one of the unary conditional operators listed
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
under
.SM
.BR "CONDITIONAL EXPRESSIONS" ,
@@ -10376,7 +10815,9 @@ is false.
.TP
3 arguments
The following conditions are applied in the order listed.
-If the second argument is one of the binary conditional operators listed above
+If the second argument is one of the binary conditional operators listed
+.ie \n(zZ=1 in \fIbash(1)\fP
+.el above
under
.SM
.BR "CONDITIONAL EXPRESSIONS" ,
@@ -10392,8 +10833,13 @@ argument.
Otherwise, the expression is false.
.TP
4 arguments
+The following conditions are applied in the order listed.
If the first argument is \fB!\fP, the result is the negation of
the three-argument expression composed of the remaining arguments.
+the two-argument test using the second and third arguments.
+If the first argument is exactly \fB(\fP and the fourth argument is
+exactly \fB)\fP, the result is the two-argument test of the second
+and third arguments.
Otherwise, the expression is parsed and evaluated according to
precedence using the rules listed above.
.TP
@@ -10476,7 +10922,8 @@ is executed before every \fIsimple command\fP, \fIfor\fP command,
command, and before the first command executes in a shell function (see
.SM
.B SHELL GRAMMAR
-above).
+.ie \n(zZ=1 in \fIbash(1)\fP).
+.el above).
Refer to the description of the \fBextdebug\fP option to the
\fBshopt\fP builtin for details of its effect on the \fBDEBUG\fP trap.
If a
@@ -10843,7 +11290,7 @@ or
are unset, they lose their special properties, even if they are
subsequently reset. The exit status is true unless a
.I name
-is readonly.
+is readonly or may not be unset.
.TP
\fBwait\fP [\fB\-fn\fP] [\fP\-p\fP \fIvarname\fP] [\fIid ...\fP]
Wait for each specified child process and return its termination status.
@@ -10875,12 +11322,17 @@ forces \fBwait\fP to wait for \fIid\fP to terminate before returning
its status, instead of returning when it changes status.
If
.I id
-specifies a non-existent process or job, the return status is
-127. Otherwise, the return status is the exit status of the last
+specifies a non-existent process or job, the return status is 127.
+If \fBwait\fP is interrupted by a signal, the return status will be greater
+than 128, as described under
+.B SIGNALS
+.ie \n(zZ=1 in \fIbash(1)\fP.
+.el above.
+Otherwise, the return status is the exit status of the last
process or job waited for.
.SH "SHELL COMPATIBILITY MODE"
-Bash-4.0 introduced the concept of a `shell compatibility level', specified
-as a set of options to the shopt builtin
+Bash-4.0 introduced the concept of a \fIshell compatibility level\fP,
+specified as a set of options to the shopt builtin (
.BR compat31 ,
.BR compat32 ,
.BR compat40 ,
@@ -10896,7 +11348,7 @@ behavior. It's intended to be a temporary solution.
This section does not mention behavior that is standard for a particular
version (e.g., setting \fBcompat32\fP means that quoting the rhs of the regexp
matching operator quotes special regexp characters in the word, which is
-default behavior in bash-3.2 and above).
+default behavior in bash-3.2 and subsequent versions).
.PP
If a user enables, say, \fBcompat32\fP, it may affect the behavior of other
compatibility levels up to and including the current compatibility level.
@@ -11016,7 +11468,7 @@ are not special within double-quoted word expansions
.IP \(bu
the shell does not print a warning message if an attempt is made to
use a quoted compound assignment as an argument to declare
-(declare -a foo='(1 2)'). Later versions warn that this usage is
+(e.g., declare -a foo=\(aq(1 2)\(aq). Later versions warn that this usage is
deprecated
.IP \(bu
word expansion errors are considered non-fatal errors that cause the
@@ -11076,6 +11528,16 @@ output that can be reused as input. Bash-5.1 suppresses that message
when the \fB\-l\fP option is supplied.
.RE
.PD
+.TP
+\fBcompat51\fP
+.PD 0
+.RS
+.IP \(bu
+The \fBunset\fP builtin treats attempts to unset array subscripts \fB@\fP
+and \fB*\fP differently depending on whether the array is indexed or
+associative, and differently than in previous versions.
+.RE
+.PD
.\" bash_builtins
.if \n(zZ=1 .ig zZ
.SH "RESTRICTED SHELL"
@@ -11160,7 +11622,7 @@ option to the
builtin command
.IP \(bu
turning off restricted mode with
-\fBset +r\fP or \fBset +o restricted\fP.
+\fBset +r\fP or \fBshopt -u restricted_shell\fP.
.PP
These restrictions are enforced after any startup files are read.
.PP
@@ -11214,6 +11676,10 @@ The individual per-interactive-shell startup file
.FN ~/.bash_logout
The individual login shell cleanup file, executed when a login shell exits
.TP
+.FN ~/.bash_history
+The default value of \fBHISTFILE\fP, the file in which bash saves the
+command history
+.TP
.FN ~/.inputrc
Individual \fIreadline\fP initialization file
.PD
@@ -11233,7 +11699,8 @@ make sure that it really is a bug, and that it appears in the latest
version of
.BR bash .
The latest version is always available from
-\fIftp://ftp.gnu.org/pub/gnu/bash/\fP.
+\fIftp://ftp.gnu.org/pub/gnu/bash/\fP and
+\fIhttp://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz\fP.
.PP
Once you have determined that a bug actually exists, use the
.I bashbug
diff --git a/doc/bash.html b/doc/bash.html
index adb9e760..d8093690 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%>2020 October 29<TH ALIGN=RIGHT width=33%>BASH(1)
+<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2022 September 19<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-2020 by the Free Software Foundation, Inc.
+Bash is Copyright &#169; 1989-2022 by the Free Software Foundation, Inc.
<A NAME="lbAE">&nbsp;</A>
<H3>DESCRIPTION</H3>
@@ -368,7 +368,7 @@ An <I>interactive</I> shell is one started without non-option arguments
and without the
<B>-c</B>
-option
+option,
whose standard input and error are
both connected to terminals (as determined by
<I>isatty</I>(3)),
@@ -556,13 +556,15 @@ No other startup files are read.
<B>Bash</B>
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 <I>rshd</I>, or the secure shell daemon <I>sshd</I>.
+connected to a network connection, as when executed by
+the historical remote shell daemon, usually <I>rshd</I>,
+or the secure shell daemon <I>sshd</I>.
If
<B>bash</B>
-determines it is being run in this fashion, it reads and executes
-commands from <A HREF="file:~/.bashrc"><I>~/.bashrc</I></A>, if that file exists and is readable.
+determines it is being run non-interactively in this fashion,
+it reads and executes commands from <A HREF="file:~/.bashrc"><I>~/.bashrc</I></A>,
+if that file exists and is readable.
It will not do this if invoked as <B>sh</B>.
The
<B>--norc</B>
@@ -685,6 +687,7 @@ command (only <B>in</B> and <B>do</B> are valid):
<A NAME="lbAK">&nbsp;</A>
<H3>SHELL GRAMMAR</H3>
+This section describes the syntax of the various forms of shell commands.
<A NAME="lbAL">&nbsp;</A>
<H4>Simple Commands</H4>
@@ -711,29 +714,30 @@ The format for a pipeline is:
<DL COMPACT><DT><DD>
<P>
-[<B>time</B> [<B>-p</B>]] [ ! ] <I>command</I> [ [<B>|</B>|<B>|&amp;</B>] <I>command2</I> ... ]
+[<B>time</B> [<B>-p</B>]] [ ! ] <I>command1</I> [ [<B>|</B>|<B>|&amp;</B>] <I>command2</I> ... ]
</DL>
<P>
The standard output of
-<I>command</I>
+<I>command1</I>
is connected via a pipe to the standard input of
<I>command2</I>.
This connection is performed before any redirections specified by the
-command (see
+<I>command1</I>(see
+
<FONT SIZE=-1><B>REDIRECTION</B>
</FONT>
below).
-If <B>|&amp;</B> is used, <I>command</I>'s standard error, in addition to its
+If <B>|&amp;</B> is used, <I>command1</I>'s standard error, in addition to its
standard output, is connected to
<I>command2</I>'s standard input through the pipe;
it is shorthand for <B>2&gt;&amp;1 |</B>.
This implicit redirection of the standard error to the standard output is
-performed after any redirections specified by the command.
+performed after any redirections specified by <I>command1</I>.
<P>
The return status of a pipeline is the exit status of the last
@@ -785,14 +789,17 @@ variable may be used to specify the format of
the time information.
<P>
-Each command in a pipeline is executed as a separate process (i.e., in a
-subshell).
+Each command in a multi-command pipeline,
+where pipes are created,
+is executed in a <I>subshell</I>, which is a
+separate process.
See
<FONT SIZE=-1><B>COMMAND EXECUTION ENVIRONMENT</B></FONT>
-for a description of a subshell environment.
+for a description of subshells and a subshell environment.
If the <B>lastpipe</B> option is enabled using the <B>shopt</B> builtin
(see the description of <B>shopt</B> below),
-the last element of a pipeline may be run by the shell process.
+the last element of a pipeline may be run by the shell process
+when job control is not active.
<A NAME="lbAN">&nbsp;</A>
<H4>Lists</H4>
@@ -899,9 +906,9 @@ the rest of the command by one or more newlines, and may be followed by a
newline in place of a semicolon.
<DL COMPACT>
<DT>(<I>list</I>)<DD>
-<I>list</I> is executed in a subshell environment (see
+<I>list</I> is executed in a subshell (see
<FONT SIZE=-1><B>COMMAND EXECUTION ENVIRONMENT</B></FONT>
-below).
+below for a description of a subshell environment).
Variable assignments and builtin
commands that affect the shell's environment do not remain in effect
after the command completes. The return status is the exit status of
@@ -924,8 +931,12 @@ below under
</FONT>
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
-<B>let &quot;</B><I>expression</I>&quot;.
+otherwise the return status is 1.
+The <I>expression</I>
+undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in <I>expression</I> are not treated specially
+and are removed.
<DT><B>[[</B> <I>expression</I> <B>]]</B><DD>
Return a status of 0 or 1 depending on the evaluation of
the conditional expression <I>expression</I>.
@@ -933,11 +944,12 @@ Expressions are composed of the primaries described below under
<FONT SIZE=-1><B>CONDITIONAL EXPRESSIONS</B>.
</FONT>
-Word splitting and pathname expansion are not performed on the words
-between the <B>[[</B> and <B>]]</B>; tilde expansion,
-parameter and variable expansion,
-arithmetic expansion, command substitution, process
-substitution, and quote removal are performed.
+The words between the <B>[[</B> and <B>]]</B> do not undergo word splitting
+and pathname expansion.
+The shell performs tilde expansion, parameter and
+variable expansion, arithmetic expansion, command substitution, process
+substitution, and quote removal on those words
+(the expansions that would occur if the words were enclosed in double quotes).
Conditional operators such as <B>-f</B> must be unquoted to be recognized
as primaries.
<P>
@@ -980,12 +992,14 @@ If the
shell option is enabled, the match is performed without regard to the case
of alphabetic characters.
-Any part of the pattern may be quoted to force the quoted portion
-to be matched as a string.
-Bracket expressions in regular expressions must be treated carefully,
-since normal quoting characters lose their meanings between brackets.
+If any part of the pattern is quoted, the quoted portion is matched literally.
+This means every character in the quoted portion matches itself,
+instead of having any special pattern matching meaning.
If the pattern is stored in a shell variable, quoting the variable
-expansion forces the entire pattern to be matched as a string.
+expansion forces the entire pattern to be matched literally.
+Treat bracket expressions in regular expressions carefully,
+since normal quoting and pattern characters lose their meanings
+between brackets.
<P>
@@ -1014,6 +1028,12 @@ indices. The element of
</FONT>
with index <I>n</I> is the portion of the
string matching the <I>n</I>th parenthesized subexpression.
+Bash sets
+<FONT SIZE=-1><B>BASH_REMATCH</B>
+
+</FONT>
+in the global scope; declaring it as a local variable will lead to
+unexpected results.
<P>
@@ -1092,24 +1112,28 @@ The return value is the exit status of the last command in <I>list</I>
that is executed, or false if any of the expressions is invalid.
<DT><B>select</B> <I>name</I> [ <B>in</B> <I>word</I> ] ; <B>do</B> <I>list</I> ; <B>done</B><DD>
The list of words following <B>in</B> is expanded, generating a list
-of items. The set of expanded words is printed on the standard
+of items, and the set of expanded words is printed on the standard
error, each preceded by a number. If the <B>in</B>
<I>word</I> is omitted, the positional parameters are printed (see
<FONT SIZE=-1><B>PARAMETERS</B>
</FONT>
-below). The
+below).
+<B>select</B>
+
+then displays the
<FONT SIZE=-1><B>PS3</B>
</FONT>
-prompt is then displayed and a line read from the standard input.
+prompt and reads a line from the standard input.
If the line consists of a number corresponding to one of
the displayed words, then the value of
<I>name</I>
-is set to that word. If the line is empty, the words and prompt
-are displayed again. If EOF is read, the command completes. Any
-other value read causes
+is set to that word.
+If the line is empty, the words and prompt are displayed again.
+If EOF is read, the <B>select</B> command completes and returns 1.
+Any other value read causes
<I>name</I>
to be set to null. The line read is saved in the variable
@@ -1143,7 +1167,7 @@ expansion, parameter and variable expansion, arithmetic expansion,
command substitution, process substitution and quote removal.
Each <I>pattern</I> examined is expanded using tilde
expansion, parameter and variable expansion, arithmetic expansion,
-command substitution, and process substitution.
+command substitution, process substitution, and quote removal.
If the
<B>nocasematch</B>
@@ -1203,7 +1227,7 @@ had been terminated with the <B>&amp;</B> control operator, with a two-way pipe
established between the executing shell and the coprocess.
<P>
-The format for a coprocess is:
+The syntax for a coprocess is:
<DL COMPACT><DT><DD>
<P>
@@ -1213,10 +1237,35 @@ The format for a coprocess is:
<P>
This creates a coprocess named <I>NAME</I>.
+<I>command</I> may be either a simple command or a compound
+command (see above).
+<I>NAME</I> is a shell variable name.
If <I>NAME</I> is not supplied, the default name is <B>COPROC</B>.
-<I>NAME</I> must not be supplied if <I>command</I> is a <I>simple
-command</I> (see above); otherwise, it is interpreted as the first word
-of the simple command.
+<P>
+
+The recommended form to use for a coprocess is
+<DL COMPACT><DT><DD>
+<P>
+
+<B>coproc</B> <I>NAME</I> { <I>command</I> [<I>redirections</I>]; }
+</DL>
+
+<P>
+
+This form is recommended because simple commands result in the coprocess
+always being named <B>COPROC</B>, and it is simpler to use and more complete
+than the other compound commands.
+<P>
+
+If <I>command</I> is a compound command, <I>NAME</I> is optional. The
+word following <B>coproc</B> determines whether that word is interpreted
+as a variable name: it is interpreted as <I>NAME</I> if it is not a
+reserved word that introduces a compound command.
+If <I>command</I> is a simple command, <I>NAME</I> is not allowed; this
+is to avoid confusion between <I>NAME</I> and the first word of the simple
+command.
+<P>
+
When the coprocess is executed, the shell creates an array variable (see
<B>Arrays</B>
@@ -1241,6 +1290,8 @@ The file descriptors can be utilized as arguments to shell commands
and redirections using standard word expansions.
Other than those created to execute command and process substitutions,
the file descriptors are not available in subshells.
+<P>
+
The process ID of the shell spawned to execute the coprocess is
available as the value of the variable <I>NAME</I>_PID.
The <B>wait</B>
@@ -1269,9 +1320,9 @@ The <I>body</I> of the function is the compound command
(see <B>Compound Commands</B> above).
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.
+may be any command listed under <B>Compound Commands</B> above.
+If the <B>function</B> reserved word is used, but the
+parentheses are not supplied, the braces are recommended.
<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>fname</I> must be a valid shell <I>name</I>
@@ -1425,10 +1476,11 @@ quotes (see
below).
<P>
-Words of the form <B>$</B>aq<I>string</I>aq are treated specially. The
-word expands to <I>string</I>, with backslash-escaped characters replaced
-as specified by the ANSI C standard. Backslash escape sequences, if
-present, are decoded as follows:
+Character sequences of the form <B>$</B>aq<I>string</I>aq are treated
+as a special variant of single quotes.
+The sequence expands to <I>string</I>, with backslash-escaped characters
+in <I>string</I> replaced as specified by the ANSI C standard.
+Backslash escape sequences, if present, are decoded as follows:
<DL COMPACT><DT><DD>
<DL COMPACT>
@@ -1518,14 +1570,25 @@ 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.
-The <I>gettext</I> infrastructure performs the message catalog lookup and
-translation, using the <B>LC_MESSAGES</B> and <B>TEXTDOMAIN</B> shell
-variables.
+The <I>gettext</I> infrastructure performs the lookup and
+translation, using the <B>LC_MESSAGES</B>, <B>TEXTDOMAINDIR</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,
+if there are no translations available,
+or if the string is not translated,
the dollar sign is ignored.
-If the string is translated and replaced, the replacement is
-double-quoted.
+This is a form of double quoting, so the string remains double-quoted
+by default, whether or not it is translated and replaced.
+If the <B>noexpand_translation</B> option is enabled
+using the <B>shopt</B> builtin,
+translated strings are single-quoted instead of double-quoted.
+See the description of
+<B>shopt</B>
+
+below under
+<FONT SIZE=-1><B>SHELL</B>BUILTIN<B>COMMANDS</B>.
+
+</FONT>
<A NAME="lbAT">&nbsp;</A>
<H3>PARAMETERS</H3>
@@ -1605,11 +1668,7 @@ not used (see
<B>Arithmetic Expansion</B>
below).
-Word splitting is not performed, with the exception
-of <B>&quot;$@&quot;</B> as explained below under
-<B>Special Parameters</B>.
-
-Pathname expansion is not performed.
+Word splitting and pathname expansion are not performed.
Assignment statements may also appear as arguments to the
<B>alias</B>,
@@ -1635,7 +1694,7 @@ to a shell variable or array index, the += operator can be used to
append to or add to the variable's previous value.
This includes arguments to builtin commands such as <B>declare</B> that
accept assignment statements (<I>declaration</I> commands).
-When += is applied to a variable for which the <I>integer</I> attribute has been
+When += is applied to a variable for which the <B>integer</B> attribute has been
set, <I>value</I> is evaluated as an arithmetic expression and added to the
variable's current value, which is also evaluated.
When += is applied to an array variable using compound assignment (see
@@ -1797,7 +1856,7 @@ option).
<DT><B>$</B>
<DD>
-Expands to the process ID of the shell. In a () subshell, it
+Expands to the process ID of the shell. In a subshell, it
expands to the process ID of the current shell, not the
subshell.
<DT><B>!</B>
@@ -2445,6 +2504,18 @@ If
</FONT>
is unset, it loses its special properties, even if it is
subsequently reset.
+<DT><B>READLINE_ARGUMENT</B>
+
+<DD>
+Any numeric argument given to a readline command that was defined using
+<TT>bind -x</TT>
+
+(see
+<FONT SIZE=-1><B>SHELL BUILTIN COMMANDS</B>
+
+</FONT>
+below)
+when it was invoked.
<DT><B>READLINE_LINE</B>
<DD>
@@ -2500,15 +2571,15 @@ builtin command when no arguments are supplied.
<DD>
Each time this parameter is
-referenced, the number of seconds since shell invocation is returned. If a
-value is assigned to
+referenced, it expands to the number of seconds since shell invocation.
+If a value is assigned to
<FONT SIZE=-1><B>SECONDS</B>,
</FONT>
the value returned upon subsequent
references is
the number of seconds since the assignment plus the value assigned.
-The number of seconds at shell invocation and the current time is always
+The number of seconds at shell invocation and the current time are always
determined by querying the system clock.
If
<FONT SIZE=-1><B>SECONDS</B>
@@ -2603,7 +2674,7 @@ compatibility levels, the shell prints an error message and sets the
compatibility level to the default for the current version.
The valid values correspond to the compatibility levels
described below under
-<FONT SIZE=-1><B>BSHELL</B>COMPATIBILITY<B>MODE</B>.
+<FONT SIZE=-1><B>SHELL COMPATIBILITY MODE</B>.
</FONT>
For example, 4.2 and 42 are valid values that correspond
@@ -3446,6 +3517,14 @@ interpreted as relative to one greater than the maximum index of
array, and an index of -1 references the last element.
<P>
+The += operator will append to an array variable when assigning
+using the compound assignment syntax; see
+<FONT SIZE=-1><B>PARAMETERS</B>
+
+</FONT>
+above.
+<P>
+
Any element of an array may be referenced using
${<I>name</I>[<I>subscript</I>]}. The braces are required to avoid
conflicts with pathname expansion. If
@@ -3509,9 +3588,15 @@ destroys the array element at index <I>subscript</I>,
for both indexed and associative arrays.
Negative subscripts to indexed arrays are interpreted as described above.
Unsetting the last element of an array variable does not unset the variable.
-<B>unset</B> <I>name</I>, where <I>name</I> is an array, or
+<B>unset</B> <I>name</I>, where <I>name</I> is an array,
+removes the entire array.
<B>unset</B> <I>name</I>[<I>subscript</I>], where
-<I>subscript</I> is <B>*</B> or <B>@</B>, removes the entire array.
+<I>subscript</I> is <B>*</B> or <B>@</B>, behaves differently depending on
+whether <I>name</I> is an indexed or associative array.
+If <I>name</I> is an associative array, this unsets the element with
+subscript <B>*</B> or <B>@</B>.
+If <I>name</I> is an indexed array, unset removes all of the elements but
+does not remove the array itself.
<P>
When using a variable name with a subscript as an argument to a command,
@@ -3635,7 +3720,7 @@ For example, a<B>{</B>d,c,b<B>}</B>e expands into `ade ace abe'.
A sequence expression takes the form
<B>{</B><I>x</I><B>..</B><I>y</I><B>[..</B><I>incr</I><B>]}</B>,
-where <I>x</I> and <I>y</I> are either integers or single characters,
+where <I>x</I> and <I>y</I> are either integers or single letters,
and <I>incr</I>, an optional increment, is an integer.
When integers are supplied, the expression expands to each number between
<I>x</I> and <I>y</I>, inclusive.
@@ -3644,10 +3729,11 @@ same width.
When either <I>x</I> or y begins with a zero, the shell
attempts to force all generated terms to contain the same number of digits,
zero-padding where necessary.
-When characters are supplied, the expression expands to each character
+When letters are supplied, the expression expands to each character
lexicographically between <I>x</I> and <I>y</I>, inclusive,
using the default C locale.
-Note that both <I>x</I> and <I>y</I> must be of the same type.
+Note that both <I>x</I> and <I>y</I> must be of the same type
+(integer or letter).
When the increment is supplied, it is used as the difference between
each term. The default increment is 1 or -1 as appropriate.
<P>
@@ -3931,7 +4017,7 @@ is substituted.
<B>Substring Expansion</B>.
Expands to up to <I>length</I> characters of the value of <I>parameter</I>
starting at the character specified by <I>offset</I>.
-If <I>parameter</I> is <B>@</B>, an indexed array subscripted by
+If <I>parameter</I> is <B>@</B> or <B>*</B>, an indexed array subscripted by
<B>@</B> or <B>*</B>, or an associative array name, the results differ as
described below.
If <I>length</I> is omitted, expands to the substring of the value of
@@ -3954,8 +4040,8 @@ a number of characters, and the expansion is the characters between
Note that a negative offset must be separated from the colon by at least
one space to avoid being confused with the <B>:-</B> expansion.
<P>
-If <I>parameter</I> is <B>@</B>, the result is <I>length</I> positional
-parameters beginning at <I>offset</I>.
+If <I>parameter</I> is <B>@</B> or <B>*</B>, the result is <I>length</I>
+positional parameters beginning at <I>offset</I>.
A negative <I>offset</I> is taken relative to one greater than the greatest
positional parameter, so an offset of -1 evaluates to the last positional
parameter.
@@ -4122,23 +4208,56 @@ or
the pattern removal operation is applied to each member of the
array in turn, and the expansion is the resultant list.
<DT>${<I>parameter</I><B>/</B><I>pattern</I><B>/</B><I>string</I>}<DD>
+
+<DT>${<I>parameter</I><B>//</B><I>pattern</I><B>/</B><I>string</I>}<DD>
+<DT>${<I>parameter</I><B>/#</B><I>pattern</I><B>/</B><I>string</I>}<DD>
+<DT>${<I>parameter</I><B>/%</B><I>pattern</I><B>/</B><I>string</I>}<DD>
+
<B>Pattern substitution</B>.
The <I>pattern</I> is expanded to produce a pattern just as in
-pathname expansion,
+pathname expansion.
<I>Parameter</I> is expanded and the longest match of <I>pattern</I>
against its value is replaced with <I>string</I>.
+<I>string</I> undergoes tilde expansion, parameter and variable expansion,
+arithmetic expansion, command and process substitution, and quote removal.
The match is performed using the rules described under
<B>Pattern Matching</B>
below.
-If <I>pattern</I> begins with <B>/</B>, all matches of <I>pattern</I> are
-replaced with <I>string</I>. Normally only the first match is replaced.
-If <I>pattern</I> begins with <B>#</B>, it must match at the beginning
-of the expanded value of <I>parameter</I>.
-If <I>pattern</I> begins with <B>%</B>, it must match at the end
-of the expanded value of <I>parameter</I>.
-If <I>string</I> is null, matches of <I>pattern</I> are deleted
+In the first form above, only the first match is replaced.
+If there are two slashes separating <I>parameter</I> and <I>pattern</I>
+(the second form above), all matches of <I>pattern</I> are
+replaced with <I>string</I>.
+If <I>pattern</I> is preceded by <B>#</B> (the third form above),
+it must match at the beginning of the expanded value of <I>parameter</I>.
+If <I>pattern</I> is preceded by <B>%</B> (the fourth form above),
+it must match at the end of the expanded value of <I>parameter</I>.
+If the expansion of <I>string</I> is null,
+matches of <I>pattern</I> are deleted.
+If <I>string</I> is null,
+matches of <I>pattern</I> are deleted
and the <B>/</B> following <I>pattern</I> may be omitted.
+<P>
+If the <B>patsub_replacement</B> shell option is enabled using <B>shopt</B>,
+any unquoted instances of <B>&amp;</B> in <I>string</I> are replaced with the
+matching portion of <I>pattern</I>.
+<P>
+Quoting any part of <I>string</I> inhibits replacement in the
+expansion of the quoted portion, including replacement strings stored
+in shell variables.
+Backslash will escape <B>&amp;</B> in <I>string</I>; the backslash is removed
+in order to permit a literal <B>&amp;</B> in the replacement string.
+Backslash can also be used to escape a backslash; <B>\\</B> results in
+a literal backslash in the replacement.
+Users should take care if <I>string</I> is double-quoted to avoid
+unwanted interactions between the backslash and double-quoting, since
+backslash has special meaning within double quotes.
+Pattern substitution performs the check for unquoted <B>&amp;</B> after
+expanding <I>string</I>;
+shell programmers should quote any occurrences of <B>&amp;</B>
+they want to be taken literally in the replacement
+and ensure any instances of <B>&amp;</B> they want to be replaced are unquoted.
+<P>
If the
<B>nocasematch</B>
@@ -4242,7 +4361,7 @@ format that can be reused as input.
<DD>
The expansion is a string that is the value of <I>parameter</I> with backslash
-escape sequences expanded as with the <B>$'...'</B> quoting mechanism.
+escape sequences expanded as with the <B>$aq...aq</B> quoting mechanism.
<DT><B>P</B>
<DD>
@@ -4266,6 +4385,11 @@ indexed and associative arrays as a sequence of quoted key-value pairs
<DD>
The expansion is a string consisting of flag values representing
<I>parameter</I>'s attributes.
+<DT><B>k</B>
+
+<DD>
+Like the K transformation, but expands the keys and values of
+indexed and associative arrays to separate words after word splitting.
</DL>
<P>
@@ -4364,8 +4488,10 @@ and the substitution of the result. The format for arithmetic expansion is:
The
<I>expression</I>
-is treated as if it were within double quotes, but a double quote
-inside the parentheses is not treated specially.
+undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in <I>expression</I> are not treated specially
+and are removed.
All tokens in the expression undergo parameter and variable expansion,
command substitution, and quote removal.
The result is treated as the arithmetic expression to be evaluated.
@@ -4575,17 +4701,30 @@ must be matched explicitly, unless the shell option
<B>dotglob</B>
is set.
-The filenames
+In order to match the filenames
<B>``.''</B>
and
-<B>``..''</B>
+<B>``..''</B>,
-must always be matched explicitly, even if
+the pattern must begin with ``.'' (for example, ``.?''),
+even if
<B>dotglob</B>
is set.
-In other cases, the
+If the
+<B>globskipdots</B>
+
+shell option is enabled, the filenames
+<B>``.''</B>
+
+and
+<B>``..''</B>
+
+are never matched, even if the pattern begins with a
+<B>``.''</B>.
+
+When not matching pathnames, the
<B>``.''</B>
character is not treated specially.
@@ -4608,6 +4747,8 @@ for a description of the
<B>nullglob</B>,
+<B>globskipdots</B>,
+
<B>failglob</B>,
and
@@ -4729,7 +4870,9 @@ or a
<B>^</B>
then any character not enclosed is matched.
-The sorting order of characters in range expressions is determined by
+The sorting order of characters in range expressions,
+and the characters included in the range,
+are determined by
the current locale and the values of the
<FONT SIZE=-1><B>LC_COLLATE</B>
@@ -4827,7 +4970,7 @@ the syntax <B>[.</B><I>symbol</I><B>.]</B> matches the collating symbol
<P>
If the <B>extglob</B> shell option is enabled using the <B>shopt</B>
-builtin, several extended pattern matching operators are recognized.
+builtin, the shell recognizes several extended pattern matching operators.
In the following description, a <I>pattern-list</I> is a list of one
or more patterns separated by a <B>|</B>.
Composite patterns may be formed using one or more of the following
@@ -4851,6 +4994,24 @@ Matches anything except one of the given patterns
<P>
+The<B>extglob</B> option changes the behavior of the parser, since the
+parentheses are normally treated as operators with syntactic meaning.
+To ensure that extended matching patterns are parsed correctly, make sure
+that <B>extglob</B> is enabled before parsing constructs containing the
+patterns, including shell functions and command substitutions.
+<P>
+
+When matching filenames, the <B>dotglob</B> shell option determines
+the set of filenames that are tested:
+when <B>dotglob</B> is enabled, the set of filenames includes all files
+beginning with ``.'', but ``.'' and ``..'' must be matched by a
+pattern or sub-pattern that begins with a dot;
+when it is disabled, the set does not
+include any filenames beginning with ``.'' unless the pattern
+or sub-pattern begins with a ``.''.
+As above, ``.'' only has a special meaning when matching filenames.
+<P>
+
Complicated extended pattern matching against long strings is slow,
especially when the patterns contain alternations and the strings
contain multiple matches.
@@ -4875,7 +5036,7 @@ may be
<I>redirected</I>
using a special notation interpreted by the shell.
-Redirection allows commands' file handles to be
+<I>Redirection</I> allows commands' file handles to be
duplicated, opened, closed,
made to refer to different files,
and can change the files the command reads from and writes to.
@@ -4902,7 +5063,8 @@ by {<I>varname</I>}, the value of <I>varname</I> defines the file
descriptor to close.
If {<I>varname</I>} is supplied, the redirection persists beyond
the scope of the command, allowing the shell programmer to manage
-the file descriptor himself.
+the file descriptor's lifetime manually.
+The <B>varredir_close</B> shell option manages this behavior.
<P>
In the following descriptions, if the file descriptor number is
@@ -5448,7 +5610,7 @@ command.
<P>
There is no mechanism for using arguments in the replacement text.
-If arguments are needed, a shell function should be used (see
+If arguments are needed, use a shell function (see
<FONT SIZE=-1><B>FUNCTIONS</B>
</FONT>
@@ -5562,11 +5724,24 @@ been enabled.
Variables local to the function may be declared with the
<B>local</B>
-builtin command. Ordinarily, variables and their values
+builtin command (<I>local variables</I>).
+Ordinarily, variables and their values
are shared between the function and its caller.
If a variable is declared <B>local</B>, the variable's visible scope
is restricted to that function and its children (including the functions
it calls).
+<P>
+
+In the following description, the <I>current scope</I> is a currently-
+executing function.
+Previous scopes consist of that function's caller and so on,
+back to the &quot;global&quot; scope, where the shell is not executing
+any shell function.
+Consequently, a local variable at the current scope is a variable
+declared using the <B>local</B> or <B>declare</B> builtins in the
+function that is currently executing.
+<P>
+
Local variables &quot;shadow&quot; variables with the same name declared at
previous scopes.
For instance, a local variable declared in a function
@@ -5600,11 +5775,13 @@ variable is local to the current scope, <B>unset</B> will unset it;
otherwise the unset will refer to the variable found in any calling scope
as described above.
If a variable at the current local scope is unset, it will remain so
+(appearing as unset)
until it is reset in that scope or until the function returns.
Once the function returns, any instance of the variable at a previous
scope will become visible.
If the unset acts on a variable at a previous scope, any instance of a
-variable with that name that had been shadowed will become visible.
+variable with that name that had been shadowed will become visible
+(see below how the <B>localvar_unset</B> shell option changes this behavior).
<P>
The <B>FUNCNEST</B> variable, if set to a numeric value greater
@@ -5650,7 +5827,8 @@ or
will list the function names only
(and optionally the source file and line number, if the <B>extdebug</B>
shell option is enabled).
-Functions may be exported so that subshells
+Functions may be exported so that child shell processes
+(those created when executing a separate shell invocation)
automatically have them defined with the
<B>-f</B>
@@ -6054,7 +6232,11 @@ and quote removal before being assigned to the variable.
<P>
If no command name results, the variable assignments affect the current
-shell environment. Otherwise, the variables are added to the environment
+shell environment.
+In the case of such a command (one that consists only of assignment
+statements and redirections), assignment statements are performed before
+redirections.
+Otherwise, the variables are added to the environment
of the executed command and do not affect the current shell environment.
If any of the assignments attempts to assign a value to a readonly variable,
an error occurs, and the command exits with a non-zero status.
@@ -6134,8 +6316,10 @@ to the command are set to the arguments given, if any.
If this execution fails because the file is not in executable
format, and the file is not a directory, it is assumed to be
a <I>shell script</I>, a file
-containing shell commands. A subshell is spawned to execute
-it. This subshell reinitializes itself, so
+containing shell commands, and the shell creates a
+new instance of itself
+to execute it.
+This subshell reinitializes itself, so
that the effect is as if a new shell had been invoked
to handle the script, with the exception that the locations of
commands remembered by the parent (see
@@ -6199,8 +6383,8 @@ of <B>$$</B>, and the value of
When a simple command other than a builtin or shell function
is to be executed, it
is invoked in a separate execution environment that consists of
-the following. Unless otherwise noted, the values are inherited
-from the shell.
+the following.
+Unless otherwise noted, the values are inherited from the shell.
<DL COMPACT>
<DT>*<DD>
@@ -6223,6 +6407,9 @@ A command invoked in this separate environment cannot affect the
shell's execution environment.
<P>
+A <I>subshell</I> is a copy of the shell process.
+<P>
+
Command substitution, commands grouped with parentheses,
and asynchronous commands are invoked in a
subshell environment that is a duplicate of the shell environment,
@@ -6354,6 +6541,10 @@ All builtins return an exit status of 2 to indicate incorrect usage,
generally invalid options or missing arguments.
<P>
+The exit status of the last command is available in the special
+parameter $?.
+<P>
+
<B>Bash</B> itself returns the exit status of the last command
executed, unless a syntax error occurs, in which case it exits
with a non-zero value. See also the <B>exit</B> builtin
@@ -6475,6 +6666,79 @@ When <B>bash</B> is waiting for an asynchronous command via the <B>wait</B>
builtin, the reception of a signal for which a trap has been set will
cause the <B>wait</B> builtin to return immediately with an exit status
greater than 128, immediately after which the trap is executed.
+<P>
+
+When job control is not enabled, and <B>bash</B> is waiting for a foreground
+command to complete, the shell receives keyboard-generated signals
+such as
+<FONT SIZE=-1><B>SIGINT</B>
+
+</FONT>
+(usually generated by <B>^C</B>) that users commonly intend to send
+to that command.
+This happens because the shell and the command are in the
+same process group as the terminal, and <B>^C</B> sends
+<FONT SIZE=-1><B>SIGINT</B>
+
+</FONT>
+to all processes in that process group.
+<P>
+
+When <B>bash</B> is running without job control enabled and receives
+<FONT SIZE=-1><B>SIGINT</B>
+
+</FONT>
+while waiting for a foreground command, it waits until that foreground
+command terminates and then decides what to do about the
+<FONT SIZE=-1><B>SIGINT</B>:
+
+</FONT>
+<DL COMPACT>
+<DT>1.<DD>
+If the command terminates due to the
+<FONT SIZE=-1><B>SIGINT</B>,
+
+</FONT>
+<B>bash</B> concludes
+that the user meant to end the entire script, and acts on the
+<FONT SIZE=-1><B>SIGINT</B>
+
+</FONT>
+(e.g., by running a
+<FONT SIZE=-1><B>SIGINT</B>
+
+</FONT>
+trap or exiting itself);
+<DT>2.<DD>
+If the command does not terminate due to
+<FONT SIZE=-1><B>SIGINT</B>,
+
+</FONT>
+the program handled the
+<FONT SIZE=-1><B>SIGINT</B>
+
+</FONT>
+itself and did not treat it as a fatal signal.
+In that case, <B>bash</B> does not treat
+<FONT SIZE=-1><B>SIGINT</B>
+
+</FONT>
+as a fatal signal, either, instead assuming that the
+<FONT SIZE=-1><B>SIGINT</B>
+
+</FONT>
+was used as part of the program's normal operation
+(e.g., emacs uses it to abort editing
+commands) or deliberately discarded.
+However, <B>bash</B> will run any
+trap set on
+<FONT SIZE=-1><B>SIGINT</B>,
+
+</FONT>
+as it does with any other trapped signal it
+receives while it is waiting for the foreground command to
+complete, for compatibility.
+</DL>
<A NAME="lbCD">&nbsp;</A>
<H3>JOB CONTROL</H3>
@@ -6832,7 +7096,8 @@ the release of <B>bash</B>, version + patch level (e.g., 2.00.0)
<DT><B>\w</B>
<DD>
-the current working directory, with
+the value of the <B>PWD</B> shell variable (<B>$PWD</B>),
+with
<FONT SIZE=-1><B>$HOME</B>
</FONT>
@@ -6845,7 +7110,8 @@ variable)
<DT><B>\W</B>
<DD>
-the basename of the current working directory, with
+the basename of <B>$PWD</B>,
+with
<FONT SIZE=-1><B>$HOME</B>
</FONT>
@@ -7316,6 +7582,32 @@ The variables and their default values are:
<DL COMPACT>
+<DT><B>active-region-start-color </B>
+
+<DD>
+A string variable that controls the text color and background when displaying
+the text in the active region (see the description of
+<B>enable-active-region</B> below).
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal before displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that puts the terminal in standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be <TT>&quot;\e[01;33m&quot;</TT>.
+<DT><B>active-region-end-color </B>
+
+<DD>
+A string variable that &quot;undoes&quot; the effects of <B>active-region-start-color</B>
+and restores &quot;normal&quot; terminal display appearance after displaying text
+in the active region.
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal after displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that restores the terminal from standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be <TT>&quot;\e[0m&quot;</TT>.
<DT><B>bell-style (audible)</B>
<DD>
@@ -7341,6 +7633,9 @@ If set to <B>On</B>, 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 <B>LS_COLORS</B>
environment variable.
+If there is a color definition in <B>$LS_COLORS</B> for the custom suffix
+&quot;readline-colored-completion-prefix&quot;, readline uses this color for
+the common prefix instead of its default.
<DT><B>colored-stats (Off)</B>
<DD>
@@ -7400,6 +7695,8 @@ If the number of possible completions is greater than
or equal to the value of this variable,
readline will ask whether or not the user wishes to view them;
otherwise they are simply listed on the terminal.
+A zero value means readline should never ask; negative values are
+treated as zero.
<DT><B>convert-meta (On)</B>
<DD>
@@ -7409,6 +7706,8 @@ by stripping the eighth bit and prefixing an
escape character (in effect, using escape as the <I>meta prefix</I>).
The default is <I>On</I>, but readline will set it to <I>Off</I> if the
locale contains eight-bit characters.
+This variable is dependent on the <B>LC_CTYPE</B> locale category, and
+may change if the locale is changed.
<DT><B>disable-completion (Off)</B>
<DD>
@@ -7445,14 +7744,28 @@ backslash escape sequences is available.
Use the \1 and \2 escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
+<DT><B>enable-active-region (On)</B>
+
+<DD>
+The <I>point</I> is the current cursor position, and <I>mark</I> refers
+to a saved cursor position.
+The text between the point and mark is referred to as the <I>region</I>.
+When this variable is set to <I>On</I>, readline allows certain commands
+to designate the region as <I>active</I>.
+When the region is active, readline highlights the text in the region using
+the value of the <B>active-region-start-color</B>, which defaults to the
+string that enables
+the terminal's standout mode.
+The active region shows the text inserted by bracketed-paste and any
+matching text found by incremental and non-incremental history searches.
<DT><B>enable-bracketed-paste (On)</B>
<DD>
-When set to <B>On</B>, readline will configure the terminal in a way
-that will enable it to insert each paste into the editing buffer as a
-single string of characters, instead of treating each character as if
-it had been read from the keyboard. This can prevent pasted characters
-from being interpreted as editing commands.
+When set to <B>On</B>, readline configures the terminal to insert each
+paste into the editing buffer as a single string of characters, instead
+of treating each character as if it had been read from the keyboard.
+This prevents readline from executing any editing commands bound to key
+sequences appearing in the pasted text.
<DT><B>enable-keypad (Off)</B>
<DD>
@@ -7506,6 +7819,8 @@ regardless of what the terminal claims it can support. The name
is a synonym for this variable.
The default is <I>Off</I>, but readline will set it to <I>On</I> if the
locale contains eight-bit characters.
+This variable is dependent on the <B>LC_CTYPE</B> locale category, and
+may change if the locale is changed.
<DT><B>isearch-terminators (``C-[C-J'')</B>
<DD>
@@ -7581,6 +7896,8 @@ eighth bit set directly rather than as a meta-prefixed escape
sequence.
The default is <I>Off</I>, but readline will set it to <I>On</I> if the
locale contains eight-bit characters.
+This variable is dependent on the <B>LC_CTYPE</B> locale category, and
+may change if the locale is changed.
<DT><B>page-completions (On)</B>
<DD>
@@ -7892,15 +8209,15 @@ 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>
<DD>
Attempt to move point to the same physical screen column on the next
physical screen line. This will not have the desired effect if the current
-Readline line does not take up more than one physical line or if the length
-of the current Readline line is not greater than the length of the prompt
+readline line does not take up more than one physical line or if the length
+of the current readline line is not greater than the length of the prompt
plus the screen width.
<DT><B>clear-display (M-C-l)</B>
@@ -7956,6 +8273,19 @@ Move to the first line in the history.
<DD>
Move to the end of the input history, i.e., the line currently being
entered.
+<DT><B>operate-and-get-next (C-o)</B>
+
+<DD>
+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.
+<DT><B>fetch-history</B>
+
+<DD>
+With a numeric argument, fetch that entry from the history list
+and make it the current line.
+Without an argument, move back to the first entry in the history list.
<DT><B>reverse-search-history (C-r)</B>
<DD>
@@ -8075,13 +8405,6 @@ Perform history and alias expansion on the current line.
<DD>
A synonym for <B>yank-last-arg</B>.
-<DT><B>operate-and-get-next (C-o)</B>
-
-<DD>
-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.
<DT><B>edit-and-execute-command (C-x C-e)</B>
<DD>
@@ -8109,7 +8432,7 @@ The character indicating end-of-file as set, for example, by
<TT>stty</TT>.
If this character is read when there are no characters
-on the line, and point is at the beginning of the line, Readline
+on the line, and point is at the beginning of the line, readline
interprets it as the end of input and returns
<FONT SIZE=-1><B>EOF</B>.
@@ -8529,12 +8852,12 @@ the saved position, and the old cursor position is saved as the mark.
<DD>
A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
+character. A negative argument searches for previous occurrences.
<DT><B>character-search-backward (M-C-])</B>
<DD>
A character is read and point is moved to the previous occurrence of that
-character. A negative count searches for subsequent occurrences.
+character. A negative argument searches for subsequent occurrences.
<DT><B>skip-csi-sequence</B>
<DD>
@@ -8563,6 +8886,12 @@ The default value of
a shell comment.
If a numeric argument causes the comment character to be removed, the line
will be executed by the shell.
+<DT><B>spell-correct-word (C-x s)</B>
+
+<DD>
+Perform spelling correction on the current word, treating it as a directory
+or filename, in the same way as the <B>cdspell</B> shell option.
+Word boundaries are the same as those used by <B>shell-forward-word</B>.
<DT><B>glob-complete-word (M-g)</B>
<DD>
@@ -9445,15 +9774,16 @@ does not contain a slash, filenames in
</FONT>
are used to find the directory containing
-<I>filename</I>.
+<I>filename</I>,
+but <I>filename</I> does not need to be executable.
The file searched for in
<FONT SIZE=-1><B>PATH</B>
</FONT>
need not be executable.
-When <B>bash</B> is not in <I>posix mode</I>, the current directory is
-searched if no file is found in
+When <B>bash</B> is not in <I>posix mode</I>, it searches
+the current directory if no file is found in
<FONT SIZE=-1><B>PATH</B>.
</FONT>
@@ -9471,12 +9801,12 @@ is not searched.
If any <I>arguments</I> are supplied, they become the positional
parameters when <I>filename</I> is executed. Otherwise the positional
parameters are unchanged.
-If the <B>-T</B> option is enabled, <B>source</B> inherits any trap on
+If the <B>-T</B> option is enabled, <B>.</B> inherits any trap on
<B>DEBUG</B>; if it is not, any <B>DEBUG</B> trap string is saved and
-restored around the call to <B>source</B>, and <B>source</B> unsets the
+restored around the call to <B>.</B>, and <B>.</B> unsets the
<B>DEBUG</B> trap while it executes.
If <B>-T</B> is not set, and the sourced file changes
-the <B>DEBUG</B> trap, the new value is retained when <B>source</B> completes.
+the <B>DEBUG</B> trap, the new value is retained when <B>.</B> completes.
The return status is the status of the last command exited within
the script (0 if no commands are executed), and false if
<I>filename</I>
@@ -9519,6 +9849,7 @@ or was started without job control.
<DT><B>bind</B> [<B>-m</B> <I>keymap</I>] <B>-x</B> <I>keyseq</I>:<I>shell-command</I><DD>
<DT><B>bind</B> [<B>-m</B> <I>keymap</I>] <I>keyseq</I>:<I>function-name</I><DD>
<DT><B>bind</B> [<B>-m</B> <I>keymap</I>] <I>keyseq</I>:<I>readline-command</I><DD>
+<DT><B>bind</B> <I>readline-command-line</I><DD>
Display current
<B>readline</B>
@@ -9530,7 +9861,10 @@ function or macro, or set a
<B>readline</B>
variable.
-Each non-option argument is a command as it would appear in
+Each non-option argument is a command as it would appear in a
+<B>readline</B>
+
+initialization file such as
<I>.inputrc</I>,
but each binding or command must be passed as a separate argument;
@@ -9624,6 +9958,12 @@ and
</FONT>
variables to the current location of the insertion point and the saved
insertion point (the mark), respectively.
+The shell assigns any numeric argument the user supplied to the
+<FONT SIZE=-1><B>READLINE_ARGUMENT</B>
+
+</FONT>
+variable.
+If there was no argument, that variable is not set.
If the executed command changes the value of any of
<FONT SIZE=-1><B>READLINE_LINE</B>,
@@ -9702,7 +10042,6 @@ if <I>dir</I> is not supplied, the value of the
</FONT>
shell variable is the default.
-Any additional arguments following <I>dir</I> are ignored.
The variable
<FONT SIZE=-1><B>CDPATH</B>
@@ -9777,6 +10116,10 @@ is used, or if
<B>-</B> is the first argument, and the directory change is
successful, the absolute pathname of the new working directory is
written to the standard output.
+If the directory change is successful, <B>cd</B> sets the value of the
+<B>PWD</B> environment variable to the new directory name, and sets the
+<B>OLDPWD</B> environment variable to the value of the current working
+directory before the change.
The return value is true if the directory was successfully changed;
false otherwise.
<DT><B>command</B> [<B>-pVv</B>] <I>command</I> [<I>arg</I> ...]<DD>
@@ -9891,7 +10234,9 @@ If any of <B>-D</B>, <B>-E</B>, or <B>-I</B> are supplied, any other
specified by the option.
<P>
The process of applying these completion specifications when word completion
-is attempted is described above under <B>Programmable Completion</B>.
+is attempted is described
+
+above under <B>Programmable Completion</B>.
<P>
Other options, if specified, have the following meanings.
The arguments to the <B>-G</B>, <B>-W</B>, and <B>-X</B> options
@@ -10062,6 +10407,7 @@ Names of all shell variables. May also be specified as <B>-v</B>.
<DT><B>-C</B> <I>command</I><DD>
<I>command</I> is executed in a subshell environment, and its output is
used as the possible completions.
+Arguments are passed as with the <B>-F</B> option.
<DT><B>-F</B> <I>function</I><DD>
The shell function <I>function</I> is executed in the current shell
environment.
@@ -10230,6 +10576,7 @@ to give variables attributes:
Each <I>name</I> is an indexed array variable (see
<B>Arrays</B>
+
above).
<DT><B>-A</B>
@@ -10237,6 +10584,7 @@ above).
Each <I>name</I> is an associative array variable (see
<B>Arrays</B>
+
above).
<DT><B>-f</B>
@@ -10249,7 +10597,9 @@ The variable is treated as an integer; arithmetic evaluation (see
<FONT SIZE=-1><B>ARITHMETIC EVALUATION</B>
</FONT>
-above) is performed when the variable is assigned a value.
+
+above)
+is performed when the variable is assigned a value.
<DT><B>-l</B>
<DD>
@@ -10324,7 +10674,9 @@ an attempt is made to assign a value to an array variable without
using the compound assignment syntax (see
<B>Arrays</B>
-above), one of the <I>names</I> is not a valid shell variable name,
+
+above),
+one of the <I>names</I> is not a valid shell variable name,
an attempt is made to turn off readonly status for a readonly variable,
an attempt is made to turn off array status for an array variable,
or an attempt is made to display a non-existent function with <B>-f</B>.
@@ -10538,7 +10890,11 @@ option means to load the new builtin command
from shared object
<I>filename</I>,
-on systems that support dynamic loading. The
+on systems that support dynamic loading.
+Bash will use the value of the <B>BASH_LOADABLES_PATH</B> variable as a
+colon-separated list of directories in which to search for <I>filename</I>.
+The default is system-dependent.
+The
<B>-d</B>
option will delete a builtin previously loaded with
@@ -10555,6 +10911,11 @@ If <B>-a</B> is supplied, the list printed includes all builtins, with an
indication of whether or not each is enabled.
If <B>-s</B> is supplied, the output is restricted to the POSIX
<I>special</I> builtins.
+If no options are supplied and a <I>name</I> is not a shell builtin,
+<B>enable</B> will attempt to load <I>name</I> from a shared object named
+<I>name</I>, as if the command were
+<TT>enable -f</TT> <I>name name</I> .
+
The return value is 0 unless a
<I>name</I>
@@ -11080,8 +11441,9 @@ than the last history position, so negative indices count back from the
end of the history, and an index of -1 refers to the current
<B>history -d</B> command.
<DT><B>-d</B> <I>start</I>-<I>end</I><DD>
-Delete the history entries between positions <I>start</I> and <I>end</I>,
-inclusive. Positive and negative values for <I>start</I> and <I>end</I>
+Delete the range of history entries between positions <I>start</I> and
+<I>end</I>, inclusive.
+Positive and negative values for <I>start</I> and <I>end</I>
are interpreted as described above.
<DT><B>-a</B>
@@ -11140,7 +11502,7 @@ comment character followed immediately by a digit are interpreted
as timestamps for the following history entry.
The return value is 0 unless an invalid option is encountered, an
error occurs while reading or writing the history file, an invalid
-<I>offset</I> is supplied as an argument to <B>-d</B>, or the
+<I>offset</I> or range is supplied as an argument to <B>-d</B>, or the
history expansion supplied as an argument to <B>-p</B> fails.
</DL>
@@ -11283,6 +11645,7 @@ is an arithmetic expression to be evaluated (see
<FONT SIZE=-1><B>ARITHMETIC EVALUATION</B>
</FONT>
+
above).
If the last
<I>arg</I>
@@ -11433,11 +11796,12 @@ argument is supplied, <I>array</I> is invalid or unassignable, or if
</DL>
<DT><B>popd</B> [-<B>n</B>] [+<I>n</I>] [-<I>n</I>]<DD>
-Removes entries from the directory stack. With no arguments,
-removes the top directory from the stack, and performs a
-<B>cd</B>
-
-to the new top directory.
+Removes entries from the directory stack.
+The elements are numbered from 0 starting at the first directory
+listed by <B>dirs</B>.
+With no arguments, <B>popd</B>
+removes the top directory from the stack, and
+changes to the new top directory.
Arguments, if supplied, have the following meanings:
<DL COMPACT><DT><DD>
@@ -11452,7 +11816,8 @@ Removes the <I>n</I>th entry counting from the left of the list
shown by
<B>dirs</B>,
-starting with zero. For example:
+starting with zero, from the stack.
+For example:
<TT>popd +0</TT>
removes the first directory,
@@ -11475,18 +11840,28 @@ the next to last.
</DL>
<P>
-If the
+If the top element of the directory stack is modified, and
+the <I>-n</I> option was not supplied, <B>popd</B> uses the <B>cd</B>
+builtin to change to the directory at the top of the stack.
+If the <B>cd</B> fails, <B>popd</B> returns a non-zero value.
+<P>
+
+Otherwise,
<B>popd</B>
-command is successful, a
-<B>dirs</B>
+returns false if an invalid option is encountered, the directory stack
+is empty, or a non-existent directory stack entry is specified.
+<P>
-is performed as well, and the return status is 0.
+If the
<B>popd</B>
-returns false if an invalid option is encountered, the directory stack
-is empty, a non-existent directory stack entry is specified, or the
-directory change fails.
+command is successful,
+bash runs
+<B>dirs</B>
+
+to show the final contents of the directory stack,
+and the return status is 0.
</DL>
<DT><B>printf</B> [<B>-v</B> <I>var</I>] <I>format</I> [<I>arguments</I>]<DD>
@@ -11517,6 +11892,11 @@ in the same way as <B>echo -e</B>.
<DD>
causes <B>printf</B> to output the corresponding
<I>argument</I> in a format that can be reused as shell input.
+<DT><B>%Q</B>
+
+<DD>
+like <B>%q</B>, but applies any supplied precision to the <I>argument</I>
+before quoting it.
<DT><B>%(</B><I>datefmt</I>)T
<DD>
@@ -11557,8 +11937,9 @@ The return value is zero on success, non-zero on failure.
Adds a directory to the top of the directory stack, or rotates
the stack, making the new top of the stack the current working
-directory. With no arguments, <B>pushd</B> exchanges the top two directories
-and returns 0, unless the directory stack is empty.
+directory.
+With no arguments, <B>pushd</B> exchanges the top two elements of
+the directory stack.
Arguments, if supplied, have the following meanings:
<DL COMPACT><DT><DD>
@@ -11587,33 +11968,36 @@ starting with zero) is at the top.
Adds
<I>dir</I>
-to the directory stack at the top, making it the
-new current working directory as if it had been supplied as the argument
-to the <B>cd</B> builtin.
+to the directory stack at the top
</DL>
<P>
-If the
-<B>pushd</B>
+After the stack has been modified, if the <B>-n</B> option was not
+supplied, <B>pushd</B> uses the <B>cd</B> builtin to change to the
+directory at the top of the stack.
+If the <B>cd</B> fails, <B>pushd</B> returns a non-zero value.
+<P>
-command is successful, a
-<B>dirs</B>
+Otherwise, if no arguments are supplied,
+<B>pushd</B>
-is performed as well.
-If the first form is used,
+returns 0 unless the directory stack is empty.
+When rotating the directory stack,
<B>pushd</B>
-returns 0 unless the cd to
-<I>dir</I>
+returns 0 unless the directory stack is empty or
+a non-existent directory stack element is specified.
+<P>
-fails. With the second form,
+If the
<B>pushd</B>
-returns 0 unless the directory stack is empty,
-a non-existent directory stack element is specified,
-or the directory change to the specified new current directory
-fails.
+command is successful,
+bash runs
+<B>dirs</B>
+
+to show the final contents of the directory stack.
</DL>
<DT><B>pwd</B> [<B>-LP</B>]<DD>
@@ -11638,7 +12022,10 @@ invalid option is supplied.
<DT><B>read</B> [<B>-ers</B>] [<B>-a</B> <I>aname</I>] [<B>-d</B> <I>delim</I>] [<B>-i</B> <I>text</I>] [<B>-n</B> <I>nchars</I>] [<B>-N</B> <I>nchars</I>] [<B>-p</B> <I>prompt</I>] [<B>-t</B> <I>timeout</I>] [<B>-u</B> <I>fd</I>] [<I>name</I> ...]<DD>
One line is read from the standard input, or from the file descriptor
<I>fd</I> supplied as an argument to the <B>-u</B> option,
-split into words as described above under <B>Word Splitting</B>,
+split into words as described
+
+above
+under <B>Word Splitting</B>,
and the first word
is assigned to the first
<I>name</I>,
@@ -11658,7 +12045,10 @@ The characters in
</FONT>
are used to split the line into words using the same rules the shell
-uses for expansion (described above under <B>Word Splitting</B>).
+uses for expansion (described
+
+above
+under <B>Word Splitting</B>).
The backslash character (<B>\</B>) may be used to remove any special
meaning for the next character read and for line continuation.
Options, if supplied, have the following meanings:
@@ -11695,9 +12085,11 @@ is coming from a terminal,
<FONT SIZE=-1><B>READLINE</B>
</FONT>
-above) is used to obtain the line.
+
+above)
+is used to obtain the line.
Readline uses the current (or default, if line editing was not previously
-active) editing settings, but uses Readline's default filename completion.
+active) editing settings, but uses readline's default filename completion.
<DT><B>-i </B><I>text</I>
<DD>
@@ -11756,8 +12148,10 @@ from regular files.
If <B>read</B> times out, <B>read</B> saves any partial input read into
the specified variable <I>name</I>.
If <I>timeout</I> is 0, <B>read</B> returns immediately, without trying to
-read any data. The exit status is 0 if input is available on
-the specified file descriptor, non-zero otherwise.
+read any data.
+The exit status is 0 if input is available on the specified file descriptor,
+or the read will return EOF,
+non-zero otherwise.
The exit status is greater than 128 if the timeout is exceeded.
<DT><B>-u </B><I>fd</I>
@@ -11871,11 +12265,11 @@ is used outside a
function and not during execution of a script by <B>.</B> or <B>source</B>.
Any command associated with the <B>RETURN</B> trap is executed
before execution resumes after the function or script.
-<DT><B>set</B> [<B>--abefhkmnptuvxBCEHPT</B>] [<B>-o</B> <I>option-name</I>] [<I>arg</I> ...]<DD>
+<DT><B>set</B> [<B>-abefhkmnptuvxBCEHPT</B>] [<B>-o</B> <I>option-name</I>] [<B>--</B>] [<B>-</B>] [<I>arg</I> ...]<DD>
-<DT><B>set</B> [<B>+abefhkmnptuvxBCEHPT</B>] [<B>+o</B> <I>option-name</I>] [<I>arg</I> ...]<DD>
+<DT><B>set</B> [<B>+abefhkmnptuvxBCEHPT</B>] [<B>+o</B> <I>option-name</I>] [<B>--</B>] [<B>-</B>] [<I>arg</I> ...]<DD>
-Without options, the name and value of each shell variable are displayed
+Without options, display the name and value of each shell variable
in a format that can be reused as input
for setting or resetting the currently-set variables.
Read-only variables cannot be reset.
@@ -11919,7 +12313,9 @@ or a <I>compound command</I>
<FONT SIZE=-1><B>SHELL GRAMMAR</B>
</FONT>
-above), exits with a non-zero status.
+
+above),
+exits with a non-zero status.
The shell does not exit if the
command that fails is part of the command list immediately following a
<B>while</B>
@@ -11955,7 +12351,9 @@ separately (see
<FONT SIZE=-1><B>COMMAND EXECUTION ENVIRONMENT</B>
</FONT>
-above), and may cause
+
+above),
+and may cause
subshells to exit before executing all the commands in the subshell.
<P>
@@ -11993,6 +12391,7 @@ it (see
<FONT SIZE=-1><B>JOB CONTROL</B>
</FONT>
+
above).
All processes run in a separate process group.
When a background job completes, the shell prints a line
@@ -12064,7 +12463,10 @@ Same as
<DT><B>history</B>
<DD>
-Enable command history, as described above under
+Enable command history, as described
+
+above
+under
<FONT SIZE=-1><B>HISTORY</B>.
</FONT>
@@ -12079,6 +12481,7 @@ had been executed
(see
<B>Shell Variables</B>
+
above).
<DT><B>keyword</B>
@@ -12157,7 +12560,9 @@ See
<FONT SIZE=-1><B>SEE ALSO</B>
</FONT>
-below for a reference to a document that details how posix mode affects
+
+below
+for a reference to a document that details how posix mode affects
bash's behavior.
<DT><B>privileged</B>
@@ -12238,6 +12643,11 @@ If the <B>-p</B> option is supplied at startup, the effective user id is
not reset.
Turning this option off causes the effective user
and group ids to be set to the real user and group ids.
+<DT><B>-r</B>
+
+<DD>
+Enable restricted shell mode.
+This option cannot be unset once it has been set.
<DT><B>-t</B>
<DD>
@@ -12246,7 +12656,9 @@ Exit after reading and executing one command.
<DD>
Treat unset variables and parameters other than the special
-parameters &quot;@&quot; and &quot;*&quot; as an error when performing
+parameters &quot;@&quot; and &quot;*&quot;,
+or array variables subscripted with &quot;@&quot; or &quot;*&quot;,
+as an error when performing
parameter expansion. If expansion is attempted on an
unset variable or parameter, the shell prints an error message, and,
if not interactive, exits with a non-zero status.
@@ -12271,7 +12683,9 @@ or associated word list.
The shell performs brace expansion (see
<B>Brace Expansion</B>
-above). This is on by default.
+
+above).
+This is on by default.
<DT><B>-C</B>
<DD>
@@ -12522,8 +12936,9 @@ intervening command (see
<FONT SIZE=-1><B>JOB CONTROL</B>
</FONT>
-above). The shell always
-postpones exiting if any jobs are stopped.
+
+above).
+The shell always postpones exiting if any jobs are stopped.
<DT><B>checkwinsize</B>
<DD>
@@ -12547,7 +12962,10 @@ attempts to save all lines of a multiple-line
command in the same history entry. This allows
easy re-editing of multi-line commands.
This option is enabled by default, but only has an effect if command
-history is enabled, as described above under
+history is enabled, as described
+
+above
+under
<FONT SIZE=-1><B>HISTORY</B>.
</FONT>
@@ -12573,12 +12991,16 @@ history is enabled, as described above under
<DT><B>compat44</B>
<DD>
+<DT><B>compat50</B>
+
+<DD>
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>
@@ -12655,7 +13077,10 @@ fails.
<DT><B>expand_aliases</B>
<DD>
-If set, aliases are expanded as described above under
+If set, aliases are expanded as described
+
+above
+under
<FONT SIZE=-1><B>ALIASES</B>.
</FONT>
@@ -12698,7 +13123,9 @@ and
<FONT SIZE=-1><B>BASH_ARGV</B>
</FONT>
-are updated as described in their descriptions above.
+are updated as described in their descriptions
+
+above).
<DT><B>5.</B>
<DD>
@@ -12716,7 +13143,10 @@ subshells invoked with <B>(</B> <I>command</I> <B>)</B> inherit the
<DT><B>extglob</B>
<DD>
-If set, the extended pattern matching features described above under
+If set, the extended pattern matching features described
+
+above
+under
<B>Pathname Expansion</B> are enabled.
<DT><B>extquote</B>
@@ -12741,7 +13171,9 @@ cause words to be ignored when performing word completion even if
the ignored words are the only possible completions.
See
<FONT SIZE=-1><B>SHELL VARIABLES</B></FONT>
-above for a description of
+
+above
+for a description of
<FONT SIZE=-1><B>FIGNORE</B>.
</FONT>
@@ -12753,7 +13185,9 @@ If set, range expressions used in pattern matching bracket expressions (see
<FONT SIZE=-1><B>Pattern Matching</B>
</FONT>
-above) behave as if in the traditional C locale when performing
+
+above)
+behave as if in the traditional C locale when performing
comparisons. That is, the current locale's collating sequence
is not taken into account, so
<B>b</B>
@@ -12765,6 +13199,19 @@ and
<B>B</B>,
and upper-case and lower-case ASCII characters will collate together.
+<DT><B>globskipdots</B>
+
+<DD>
+If set, pathname expansion will never match the filenames
+<B>``.''</B>
+
+and
+<B>``..''</B>,
+
+even if the pattern begins with a
+<B>``.''</B>.
+
+This option is enabled by default.
<DT><B>globstar</B>
<DD>
@@ -12817,6 +13264,7 @@ under
<FONT SIZE=-1><B>READLINE</B>
</FONT>
+
above).
This is enabled by default.
<DT><B>huponexit</B>
@@ -12844,7 +13292,9 @@ line to be ignored in an interactive shell (see
<FONT SIZE=-1><B>COMMENTS</B>
</FONT>
-above). This option is enabled by default.
+
+above).
+This option is enabled by default.
<DT><B>lastpipe</B>
<DD>
@@ -12878,6 +13328,7 @@ The shell sets this option if it is started as a login shell (see
<FONT SIZE=-1><B>INVOCATION</B>
</FONT>
+
above).
The value may not be changed.
<DT><B>mailwarn</B>
@@ -12911,6 +13362,7 @@ matches filenames in a case-insensitive fashion when performing pathname
expansion (see
<B>Pathname Expansion</B>
+
above).
<DT><B>nocasematch</B>
@@ -12922,6 +13374,15 @@ matches patterns in a case-insensitive fashion when performing matching
while executing <B>case</B> or <B>[[</B> conditional commands,
when performing pattern substitution word expansions,
or when filtering possible completions as part of programmable completion.
+<DT><B>noexpand_translation</B>
+
+<DD>
+If set,
+<B>bash</B>
+
+encloses the translated results of $&quot;...&quot; quoting in single quotes
+instead of double quotes.
+If the string is not translated, this has no effect.
<DT><B>nullglob</B>
<DD>
@@ -12932,13 +13393,27 @@ allows patterns which match no
files (see
<B>Pathname Expansion</B>
+
above)
to expand to a null string, rather than themselves.
+<DT><B>patsub_replacement</B>
+
+<DD>
+If set, <B>bash</B>
+expands occurrences of <B>&amp;</B> in the replacement string of pattern
+substitution to the text matched by the pattern, as described
+under <B>Parameter Expansion</B>
+
+above.
+This option is enabled by default.
<DT><B>progcomp</B>
<DD>
If set, the programmable completion facilities (see
-<B>Programmable Completion</B> above) are enabled.
+<B>Programmable Completion</B>
+
+above)
+are enabled.
This option is enabled by default.
<DT><B>progcomp_alias</B>
@@ -12956,14 +13431,18 @@ expansion, and quote removal after being expanded as described in
<FONT SIZE=-1><B>PROMPTING</B>
</FONT>
-above. This option is enabled by default.
+
+above.
+This option is enabled by default.
<DT><B>restricted_shell</B>
<DD>
-The shell sets this option if it is started in restricted mode (see
+The shell sets this option if it is started in restricted mode
+(see
<FONT SIZE=-1><B>RESTRICTED SHELL</B>
</FONT>
+
below).
The value may not be changed.
This is not reset when the startup files are executed, allowing
@@ -12980,12 +13459,23 @@ number of positional parameters.
<DD>
If set, the
-<B>source</B> (<B>.</B>) builtin uses the value of
+<B>.</B> (<B>source</B>) builtin uses the value of
<FONT SIZE=-1><B>PATH</B>
</FONT>
to find the directory containing the file supplied as an argument.
This option is enabled by default.
+<DT><B>varredir_close</B>
+
+<DD>
+If set, the shell automatically closes file descriptors assigned using the
+<I>{varname}</I> redirection syntax (see
+<FONT SIZE=-1><B>REDIRECTION</B>
+
+</FONT>
+
+above)
+instead of leaving them open when the command completes.
<DT><B>xpg_echo</B>
<DD>
@@ -12999,14 +13489,18 @@ Suspend the execution of this shell until it receives a
<FONT SIZE=-1><B>SIGCONT</B>
</FONT>
-signal. A login shell cannot be suspended; the
+signal. A login shell,
+or a shell without job control enabled,
+cannot be suspended; the
<B>-f</B>
option can be used to override this and force the suspension.
-The return status is 0 unless the shell is a login shell and
+The return status is 0 unless the shell is a login shell
+or job control is not enabled
+and
<B>-f</B>
-is not supplied, or if job control is not enabled.
+is not supplied.
<DT><B>test</B> <I>expr</I><DD>
<DT><B>[</B> <I>expr</I> <B>]</B><DD>
@@ -13015,8 +13509,10 @@ the evaluation of the conditional expression
<I>expr</I>.
Each operator and operand must be a separate argument.
-Expressions are composed of the primaries described above under
+Expressions are composed of the primaries described
+above
+under
<FONT SIZE=-1><B>CONDITIONAL EXPRESSIONS</B>.
</FONT>
@@ -13078,7 +13574,9 @@ The expression is true if and only if the argument is not null.
<DT>2 arguments<DD>
If the first argument is <B>!</B>, the expression is true if and
only if the second argument is null.
-If the first argument is one of the unary conditional operators listed above
+If the first argument is one of the unary conditional operators listed
+
+above
under
<FONT SIZE=-1><B>CONDITIONAL EXPRESSIONS</B>,
@@ -13088,7 +13586,9 @@ If the first argument is not a valid unary conditional operator, the expression
is false.
<DT>3 arguments<DD>
The following conditions are applied in the order listed.
-If the second argument is one of the binary conditional operators listed above
+If the second argument is one of the binary conditional operators listed
+
+above
under
<FONT SIZE=-1><B>CONDITIONAL EXPRESSIONS</B>,
@@ -13104,8 +13604,13 @@ exactly <B>)</B>, the result is the one-argument test of the second
argument.
Otherwise, the expression is false.
<DT>4 arguments<DD>
+The following conditions are applied in the order listed.
If the first argument is <B>!</B>, the result is the negation of
the three-argument expression composed of the remaining arguments.
+the two-argument test using the second and third arguments.
+If the first argument is exactly <B>(</B> and the fourth argument is
+exactly <B>)</B>, the result is the two-argument test of the second
+and third arguments.
Otherwise, the expression is parsed and evaluated according to
precedence using the rules listed above.
<DT>5 or more arguments<DD>
@@ -13213,6 +13718,7 @@ command, and before the first command executes in a shell function (see
<FONT SIZE=-1><B>SHELL GRAMMAR</B>
</FONT>
+
above).
Refer to the description of the <B>extdebug</B> option to the
<B>shopt</B> builtin for details of its effect on the <B>DEBUG</B> trap.
@@ -13696,7 +14202,7 @@ are unset, they lose their special properties, even if they are
subsequently reset. The exit status is true unless a
<I>name</I>
-is readonly.
+is readonly or may not be unset.
<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
@@ -13730,15 +14236,21 @@ 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
+specifies a non-existent process or job, the return status is 127.
+If <B>wait</B> is interrupted by a signal, the return status will be greater
+than 128, as described under
+<B>SIGNALS</B>
+
+
+above.
+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
+Bash-4.0 introduced the concept of a <I>shell compatibility level</I>,
+specified as a set of options to the shopt builtin (
<B>compat31</B>,
<B>compat32</B>,
@@ -13759,7 +14271,7 @@ behavior. It's intended to be a temporary solution.
This section does not mention behavior that is standard for a particular
version (e.g., setting <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).
+default behavior in bash-3.2 and subsequent versions).
<P>
If a user enables, say, <B>compat32</B>, it may affect the behavior of other
@@ -13896,7 +14408,7 @@ are not special within double-quoted word expansions
<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
+(e.g., declare -a foo=aq(1 2)aq). Later versions warn that this usage is
deprecated
<DT>*<DD>
word expansion errors are considered non-fatal errors that cause the
@@ -13963,6 +14475,17 @@ when the <B>-l</B> option is supplied.
</DL></DL>
+<DT><B>compat51</B><DD>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT>*<DD>
+The <B>unset</B> builtin treats attempts to unset array subscripts <B>@</B>
+and <B>*</B> differently depending on whether the array is indexed or
+associative, and differently than in previous versions.
+</DL></DL>
+
+
</DL>
@@ -14074,7 +14597,7 @@ option to the
builtin command
<DT>*<DD>
turning off restricted mode with
-<B>set +r</B> or <B>set +o restricted</B>.
+<B>set +r</B> or <B>shopt -u restricted_shell</B>.
</DL>
<P>
@@ -14143,6 +14666,12 @@ The individual per-interactive-shell startup file
<DD>
The individual login shell cleanup file, executed when a login shell exits
<DT>
+<A HREF="file:~/.bash_history"><I>~/.bash_history</I></A>
+
+<DD>
+The default value of <B>HISTFILE</B>, the file in which bash saves the
+command history
+<DT>
<A HREF="file:~/.inputrc"><I>~/.inputrc</I></A>
<DD>
@@ -14174,7 +14703,8 @@ version of
<B>bash</B>.
The latest version is always available from
-<I><A HREF="ftp://ftp.gnu.org/pub/gnu/bash/">ftp://ftp.gnu.org/pub/gnu/bash/</A></I>.
+<I><A HREF="ftp://ftp.gnu.org/pub/gnu/bash/">ftp://ftp.gnu.org/pub/gnu/bash/</A></I> and
+<I><A HREF="http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz">http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz</A></I>.
<P>
Once you have determined that a bug actually exists, use the
@@ -14257,7 +14787,7 @@ There may be only one active coprocess at a time.
<HR>
<TABLE WIDTH=100%>
<TR>
-<TH ALIGN=LEFT width=33%>GNU Bash 5.1<TH ALIGN=CENTER width=33%>2020 October 29<TH ALIGN=RIGHT width=33%>BASH(1)
+<TH ALIGN=LEFT width=33%>GNU Bash 5.2<TH ALIGN=CENTER width=33%>2022 September 19<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<HR>
@@ -14363,7 +14893,7 @@ There may be only one active coprocess at a time.
<DT><A HREF="#lbDI">BUGS</A><DD>
</DL>
<HR>
-This document was created by man2html from bash.1.<BR>
-Time: 18 November 2020 15:13:09 EST
+This document was created by man2html from /usr/local/src/bash/bash-20220907/doc/bash.1.<BR>
+Time: 19 September 2022 12:02:51 EDT
</BODY>
</HTML>
diff --git a/doc/bash.info b/doc/bash.info
index 2fd137a9..6d31de62 100644
--- a/doc/bash.info
+++ b/doc/bash.info
@@ -1,13 +1,12 @@
-This is bash.info, produced by makeinfo version 6.7 from
-bashref.texi.
+This is bash.info, produced by makeinfo version 6.8 from bashref.texi.
This text is a brief description of the features that are present in the
-Bash shell (version 5.1, 29 October 2020).
+Bash shell (version 5.2, 19 September 2022).
- This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 5.1.
+ This is Edition 5.2, last updated 19 September 2022, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.2.
- Copyright (C) 1988-2020 Free Software Foundation, Inc.
+ Copyright (C) 1988-2022 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -27,11 +26,11 @@ Bash Features
*************
This text is a brief description of the features that are present in the
-Bash shell (version 5.1, 29 October 2020). The Bash home page is
+Bash shell (version 5.2, 19 September 2022). The Bash home page is
<http://www.gnu.org/software/bash/>.
- This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 5.1.
+ This is Edition 5.2, last updated 19 September 2022, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.2.
Bash contains features that appear in other popular shells, and some
features that only appear in Bash. Some of the shells that Bash has
@@ -359,11 +358,11 @@ as such, and to prevent parameter expansion.
Each of the shell metacharacters (*note Definitions::) has special
meaning to the shell and must be quoted if it is to represent itself.
When the command history expansion facilities are being used (*note
-History Interaction::), the HISTORY EXPANSION character, usually '!',
+History Interaction::), the "history expansion" character, usually '!',
must be quoted to prevent history expansion. *Note Bash History
Facilities::, for more details concerning history expansion.
- There are three quoting mechanisms: the ESCAPE CHARACTER, single
+ There are three quoting mechanisms: the "escape character", single
quotes, and double quotes.

@@ -419,10 +418,11 @@ File: bash.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Double
3.1.2.4 ANSI-C Quoting
......................
-Words of the form '$'STRING'' are treated specially. The word expands
-to STRING, with backslash-escaped characters replaced as specified by
-the ANSI C standard. Backslash escape sequences, if present, are
-decoded as follows:
+Character sequences of the form $'STRING' are treated as a special kind
+of single quotes. The sequence expands to STRING, with
+backslash-escaped characters in STRING replaced as specified by the ANSI
+C standard. Backslash escape sequences, if present, are decoded as
+follows:
'\a'
alert (bell)
@@ -473,22 +473,114 @@ File: bash.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting
3.1.2.5 Locale-Specific Translation
...................................
-A double-quoted string preceded by a dollar sign ('$') will cause the
-string to be translated according to the current locale. The GETTEXT
-infrastructure performs the message catalog lookup and translation,
-using the 'LC_MESSAGES' and 'TEXTDOMAIN' shell variables, as explained
-below. See the gettext documentation for additional details. If the
-current locale is 'C' or 'POSIX', or if there are no translations
-available, the dollar sign is ignored. If the string is translated and
-replaced, the replacement is double-quoted.
+* Menu:
- Some systems use the message catalog selected by the 'LC_MESSAGES'
-shell variable. Others create the name of the message catalog from the
-value of the 'TEXTDOMAIN' shell variable, possibly adding a suffix of
-'.mo'. If you use the 'TEXTDOMAIN' variable, you may need to set the
-'TEXTDOMAINDIR' variable to the location of the message catalog files.
-Still others use both variables in this fashion:
-'TEXTDOMAINDIR'/'LC_MESSAGES'/LC_MESSAGES/'TEXTDOMAIN'.mo.
+* Creating Internationalized Scripts:: How to use translations and different
+ languages in your scripts.
+
+Prefixing a double-quoted string with a dollar sign ('$'), such as
+$"hello, world", will cause the string to be translated according to the
+current locale. The 'gettext' infrastructure performs the lookup and
+translation, using the 'LC_MESSAGES', 'TEXTDOMAINDIR', and 'TEXTDOMAIN'
+shell variables, as explained below. See the gettext documentation for
+additional details not covered here. If the current locale is 'C' or
+'POSIX', if there are no translations available, of if the string is not
+translated, the dollar sign is ignored. Since this is a form of double
+quoting, the string remains double-quoted by default, whether or not it
+is translated and replaced. If the 'noexpand_translation' option is
+enabled using the 'shopt' builtin (*note The Shopt Builtin::),
+translated strings are single-quoted instead of double-quoted.
+
+ The rest of this section is a brief overview of how you use gettext
+to create translations for strings in a shell script named SCRIPTNAME.
+There are more details in the gettext documentation.
+
+
+File: bash.info, Node: Creating Internationalized Scripts, Up: Locale Translation
+
+Once you've marked the strings in your script that you want to translate
+using $"...", you create a gettext "template" file using the command
+
+ bash --dump-po-strings SCRIPTNAME > DOMAIN.pot
+
+The DOMAIN is your "message domain". It's just an arbitrary string
+that's used to identify the files gettext needs, like a package or
+script name. It needs to be unique among all the message domains on
+systems where you install the translations, so gettext knows which
+translations correspond to your script. You'll use the template file to
+create translations for each target language. The template file
+conventionally has the suffix '.pot'.
+
+ You copy this template file to a separate file for each target
+language you want to support (called "PO" files, which use the suffix
+'.po'). PO files use various naming conventions, but when you are
+working to translate a template file into a particular language, you
+first copy the template file to a file whose name is the language you
+want to target, with the '.po' suffix. For instance, the Spanish
+translations of your strings would be in a file named 'es.po', and to
+get started using a message domain named "example," you would run
+
+ cp example.pot es.po
+
+Ultimately, PO files are often named DOMAIN.po and installed in
+directories that contain multiple translation files for a particular
+language.
+
+ Whichever naming convention you choose, you will need to translate
+the strings in the PO files into the appropriate languages. This has to
+be done manually.
+
+ When you have the translations and PO files complete, you'll use the
+gettext tools to produce what are called "MO" files, which are compiled
+versions of the PO files the gettext tools use to look up translations
+efficiently. MO files are also called "message catalog" files. You use
+the 'msgfmt' program to do this. For instance, if you had a file with
+Spanish translations, you could run
+
+ msgfmt -o es.mo es.po
+
+to produce the corresponding MO file.
+
+ Once you have the MO files, you decide where to install them and use
+the 'TEXTDOMAINDIR' shell variable to tell the gettext tools where they
+are. Make sure to use the same message domain to name the MO files as
+you did for the PO files when you install them.
+
+ Your users will use the 'LANG' or 'LC_MESSAGES' shell variables to
+select the desired language.
+
+ You set the 'TEXTDOMAIN' variable to the script's message domain. As
+above, you use the message domain to name your translation files.
+
+ You, or possibly your users, set the 'TEXTDOMAINDIR' variable to the
+name of a directory where the message catalog files are stored. If you
+install the message files into the system's standard message catalog
+directory, you don't need to worry about this variable.
+
+ The directory where the message catalog files are stored varies
+between systems. Some use the message catalog selected by the
+'LC_MESSAGES' shell variable. Others create the name of the message
+catalog from the value of the 'TEXTDOMAIN' shell variable, possibly
+adding the '.mo' suffix. If you use the 'TEXTDOMAIN' variable, you may
+need to set the 'TEXTDOMAINDIR' variable to the location of the message
+catalog files, as above. It's common to use both variables in this
+fashion: '$TEXTDOMAINDIR'/'$LC_MESSAGES'/LC_MESSAGES/'$TEXTDOMAIN'.mo.
+
+ If you used that last convention, and you wanted to store the message
+catalog files with Spanish (es) and Esperanto (eo) translations into a
+local directory you use for custom translation files, you could run
+
+ TEXTDOMAIN=example
+ TEXTDOMAINDIR=/usr/local/share/locale
+
+ cp es.mo ${TEXTDOMAINDIR}/es/LC_MESSAGES/${TEXTDOMAIN}.mo
+ cp eo.mo ${TEXTDOMAINDIR}/eo/LC_MESSAGES/${TEXTDOMAIN}.mo
+
+ When all of this is done, and the message catalog files containing
+the compiled translations are installed in the correct location, your
+users will be able to see translated strings in any of the supported
+languages by setting the 'LANG' or 'LC_MESSAGES' environment variables
+before running your script.

File: bash.info, Node: Comments, Prev: Quoting, Up: Shell Syntax
@@ -582,13 +674,13 @@ the control operators '|' or '|&'.
The output of each command in the pipeline is connected via a pipe to
the input of the next command. That is, each command reads the previous
command's output. This connection is performed before any redirections
-specified by the command.
+specified by COMMAND1.
If '|&' is used, COMMAND1's standard error, in addition to its
standard output, is connected to COMMAND2's standard input through the
pipe; it is shorthand for '2>&1 |'. This implicit redirection of the
standard error to the standard output is performed after any
-redirections specified by the command.
+redirections specified by COMMAND1.
The reserved word 'time' causes timing statistics to be printed for
the pipeline once it finishes. The statistics currently consist of
@@ -612,11 +704,12 @@ information.
If the pipeline is not executed asynchronously (*note Lists::), the
shell waits for all commands in the pipeline to complete.
- Each command in a pipeline is executed in its own subshell, which is
-a separate process (*note Command Execution Environment::). If the
-'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt
-Builtin::), the last element of a pipeline may be run by the shell
-process.
+ Each command in a multi-command pipeline, where pipes are created, is
+executed in its own "subshell", which is a separate process (*note
+Command Execution Environment::). If the 'lastpipe' option is enabled
+using the 'shopt' builtin (*note The Shopt Builtin::), the last element
+of a pipeline may be run by the shell process when job control is not
+active.
The exit status of a pipeline is the exit status of the last command
in the pipeline, unless the 'pipefail' option is enabled (*note The Set
@@ -645,8 +738,8 @@ commands, equivalent to a semicolon.
If a command is terminated by the control operator '&', the shell
executes the command asynchronously in a subshell. This is known as
-executing the command in the BACKGROUND, and these are referred to as
-ASYNCHRONOUS commands. The shell does not wait for the command to
+executing the command in the "background", and these are referred to as
+"asynchronous" commands. The shell does not wait for the command to
finish, and the return status is 0 (true). When job control is not
active (*note Job Control::), the standard input for asynchronous
commands, in the absence of any explicit redirections, is redirected
@@ -814,7 +907,8 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
substitution, arithmetic expansion, and quote removal (*note Shell
Parameter Expansion::) before matching is attempted. Each PATTERN
undergoes tilde expansion, parameter expansion, command
- substitution, and arithmetic expansion.
+ substitution, arithmetic expansion, process substitution, and quote
+ removal.
There may be an arbitrary number of 'case' clauses, each terminated
by a ';;', ';&', or ';;&'. The first pattern that matches
@@ -855,16 +949,16 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
select NAME [in WORDS ...]; do COMMANDS; done
The list of words following 'in' is expanded, generating a list of
- items. The set of expanded words is printed on the standard error
- output stream, each preceded by a number. If the 'in WORDS' is
- omitted, the positional parameters are printed, as if 'in "$@"' had
- been specified. The 'PS3' prompt is then displayed and a line is
- read from the standard input. If the line consists of a number
- corresponding to one of the displayed words, then the value of NAME
- is set to that word. If the line is empty, the words and prompt
- are displayed again. If 'EOF' is read, the 'select' command
- completes. Any other value read causes NAME to be set to null.
- The line read is saved in the variable 'REPLY'.
+ items, and the set of expanded words is printed on the standard
+ error output stream, each preceded by a number. If the 'in WORDS'
+ is omitted, the positional parameters are printed, as if 'in "$@"'
+ had been specified. 'select' then displays the 'PS3' prompt and
+ reads a line from the standard input. If the line consists of a
+ number corresponding to one of the displayed words, then the value
+ of NAME is set to that word. If the line is empty, the words and
+ prompt are displayed again. If 'EOF' is read, the 'select' command
+ completes and returns 1. Any other value read causes NAME to be
+ set to null. The line read is saved in the variable 'REPLY'.
The COMMANDS are executed after each selection until a 'break'
command is executed, at which point the 'select' command completes.
@@ -883,11 +977,11 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
(( EXPRESSION ))
The arithmetic EXPRESSION is evaluated according to the rules
- described below (*note Shell Arithmetic::). If the value of the
- expression is non-zero, the return status is 0; otherwise the
- return status is 1. This is exactly equivalent to
- let "EXPRESSION"
- *Note Bash Builtins::, for a full description of the 'let' builtin.
+ described below (*note Shell Arithmetic::). The EXPRESSION
+ undergoes the same expansions as if it were within double quotes,
+ but double quote characters in EXPRESSION are not treated specially
+ are removed. If the value of the expression is non-zero, the
+ return status is 0; otherwise the return status is 1.
'[[...]]'
[[ EXPRESSION ]]
@@ -895,12 +989,13 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
Return a status of 0 or 1 depending on the evaluation of the
conditional expression EXPRESSION. Expressions are composed of the
primaries described below in *note Bash Conditional Expressions::.
- Word splitting and filename expansion are not performed on the
- words between the '[[' and ']]'; tilde expansion, parameter and
- variable expansion, arithmetic expansion, command substitution,
- process substitution, and quote removal are performed. Conditional
- operators such as '-f' must be unquoted to be recognized as
- primaries.
+ The words between the '[[' and ']]' do not undergo word splitting
+ and filename expansion. The shell performs tilde expansion,
+ parameter and variable expansion, arithmetic expansion, command
+ substitution, process substitution, and quote removal on those
+ words (the expansions that would occur if the words were enclosed
+ in double quotes). Conditional operators such as '-f' must be
+ unquoted to be recognized as primaries.
When used with '[[', the '<' and '>' operators sort
lexicographically using the current locale.
@@ -913,67 +1008,92 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
'shopt' in *note The Shopt Builtin::) is enabled, the match is
performed without regard to the case of alphabetic characters. The
return value is 0 if the string matches ('==') or does not match
- ('!=') the pattern, and 1 otherwise. Any part of the pattern may
- be quoted to force the quoted portion to be matched as a string.
+ ('!=') the pattern, and 1 otherwise.
+
+ If you quote any part of the pattern, using any of the shell's
+ quoting mechanisms, the quoted portion is matched literally. This
+ means every character in the quoted portion matches itself, instead
+ of having any special pattern matching meaning.
An additional binary operator, '=~', is available, with the same
- precedence as '==' and '!='. When it is used, the string to the
+ precedence as '==' and '!='. When you use '=~', the string to the
right of the operator is considered a POSIX extended regular
- expression and matched accordingly (using the POSIX 'regcomp' and
- 'regexec' interfaces usually described in regex(3)). The return
- value is 0 if the string matches the pattern, and 1 otherwise. If
- the regular expression is syntactically incorrect, the conditional
- expression's return value is 2. If the 'nocasematch' shell option
- (see the description of 'shopt' in *note The Shopt Builtin::) is
- enabled, the match is performed without regard to the case of
- alphabetic characters. Any part of the pattern may be quoted to
- force the quoted portion to be matched as a string. Bracket
- expressions in regular expressions must be treated carefully, since
- normal quoting characters lose their meanings between brackets. If
- the pattern is stored in a shell variable, quoting the variable
- expansion forces the entire pattern to be matched as a string.
-
- The pattern will match if it matches any part of the string.
- Anchor the pattern using the '^' and '$' regular expression
- operators to force it to match the entire string. The array
- variable 'BASH_REMATCH' records which parts of the string matched
- the pattern. The element of 'BASH_REMATCH' with index 0 contains
- the portion of the string matching the entire regular expression.
- Substrings matched by parenthesized subexpressions within the
- regular expression are saved in the remaining 'BASH_REMATCH'
- indices. The element of 'BASH_REMATCH' with index N is the portion
- of the string matching the Nth parenthesized subexpression.
+ expression pattern and matched accordingly (using the POSIX
+ 'regcomp' and 'regexec' interfaces usually described in regex(3)).
+ The return value is 0 if the string matches the pattern, and 1 if
+ it does not. If the regular expression is syntactically incorrect,
+ the conditional expression returns 2. If the 'nocasematch' shell
+ option (see the description of 'shopt' in *note The Shopt
+ Builtin::) is enabled, the match is performed without regard to the
+ case of alphabetic characters.
+
+ You can quote any part of the pattern to force the quoted portion
+ to be matched literally instead of as a regular expression (see
+ above). If the pattern is stored in a shell variable, quoting the
+ variable expansion forces the entire pattern to be matched
+ literally.
+
+ The pattern will match if it matches any part of the string. If
+ you want to force the pattern to match the entire string, anchor
+ the pattern using the '^' and '$' regular expression operators.
For example, the following will match a line (stored in the shell
- variable LINE) if there is a sequence of characters anywhere in the
- value consisting of any number, including zero, of characters in
- the 'space' character class, zero or one instances of 'a', then a
- 'b':
+ variable 'line') if there is a sequence of characters anywhere in
+ the value consisting of any number, including zero, of characters
+ in the 'space' character class, immediately followed by zero or one
+ instances of 'a', then a 'b':
+
[[ $line =~ [[:space:]]*(a)?b ]]
- That means values like 'aab' and ' aaaaaab' will match, as will a
- line containing a 'b' anywhere in its value.
-
- Storing the regular expression in a shell variable is often a
- useful way to avoid problems with quoting characters that are
- special to the shell. It is sometimes difficult to specify a
- regular expression literally without using quotes, or to keep track
- of the quoting used by regular expressions while paying attention
- to the shell's quote removal. Using a shell variable to store the
- pattern decreases these problems. For example, the following is
- equivalent to the above:
+ That means values for 'line' like 'aab', ' aaaaaab', 'xaby', and '
+ ab' will all match, as will a line containing a 'b' anywhere in its
+ value.
+
+ If you want to match a character that's special to the regular
+ expression grammar ('^$|[]()\.*+?'), it has to be quoted to remove
+ its special meaning. This means that in the pattern 'xxx.txt', the
+ '.' matches any character in the string (its usual regular
+ expression meaning), but in the pattern '"xxx.txt"', it can only
+ match a literal '.'.
+
+ Likewise, if you want to include a character in your pattern that
+ has a special meaning to the regular expression grammar, you must
+ make sure it's not quoted. If you want to anchor a pattern at the
+ beginning or end of the string, for instance, you cannot quote the
+ '^' or '$' characters using any form of shell quoting.
+
+ If you want to match 'initial string' at the start of a line, the
+ following will work:
+ [[ $line =~ ^"initial string" ]]
+ but this will not:
+ [[ $line =~ "^initial string" ]]
+ because in the second example the '^' is quoted and doesn't have
+ its usual special meaning.
+
+ It is sometimes difficult to specify a regular expression properly
+ without using quotes, or to keep track of the quoting used by
+ regular expressions while paying attention to shell quoting and the
+ shell's quote removal. Storing the regular expression in a shell
+ variable is often a useful way to avoid problems with quoting
+ characters that are special to the shell. For example, the
+ following is equivalent to the pattern used above:
+
pattern='[[:space:]]*(a)?b'
[[ $line =~ $pattern ]]
- If you want to match a character that's special to the regular
- expression grammar, it has to be quoted to remove its special
- meaning. This means that in the pattern 'xxx.txt', the '.' matches
- any character in the string (its usual regular expression meaning),
- but in the pattern '"xxx.txt"' it can only match a literal '.'.
Shell programmers should take special care with backslashes, since
- backslashes are used both by the shell and regular expressions to
- remove the special meaning from the following character. The
- following two sets of commands are _not_ equivalent:
+ backslashes are used by both the shell and regular expressions to
+ remove the special meaning from the following character. This
+ means that after the shell's word expansions complete (*note Shell
+ Expansions::), any backslashes remaining in parts of the pattern
+ that were originally not quoted can remove the special meaning of
+ pattern characters. If any part of the pattern is quoted, the
+ shell does its best to ensure that the regular expression treats
+ those remaining backslashes as literal, if they appeared in a
+ quoted portion.
+
+ The following two sets of commands are _not_ equivalent:
+
pattern='\.'
[[ . =~ $pattern ]]
@@ -984,12 +1104,49 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
The first two matches will succeed, but the second two will not,
because in the second two the backslash will be part of the pattern
- to be matched. In the first two examples, the backslash removes
- the special meaning from '.', so the literal '.' matches. If the
+ to be matched. In the first two examples, the pattern passed to
+ the regular expression parser is '\.'. The backslash removes the
+ special meaning from '.', so the literal '.' matches. In the
+ second two examples, the pattern passed to the regular expression
+ parser has the backslash quoted (e.g., '\\\.'), which will not
+ match the string, since it does not contain a backslash. If the
string in the first examples were anything other than '.', say 'a',
the pattern would not match, because the quoted '.' in the pattern
loses its special meaning of matching any single character.
+ Bracket expressions in regular expressions can be sources of errors
+ as well, since characters that are normally special in regular
+ expressions lose their special meanings between brackets. However,
+ you can use bracket expressions to match special pattern characters
+ without quoting them, so they are sometimes useful for this
+ purpose.
+
+ Though it might seem like a strange way to write it, the following
+ pattern will match a '.' in the string:
+
+ [[ . =~ [.] ]]
+
+ The shell performs any word expansions before passing the pattern
+ to the regular expression functions, so you can assume that the
+ shell's quoting takes precedence. As noted above, the regular
+ expression parser will interpret any unquoted backslashes remaining
+ in the pattern after shell expansion according to its own rules.
+ The intention is to avoid making shell programmers quote things
+ twice as much as possible, so shell quoting should be sufficient to
+ quote special pattern characters where that's necessary.
+
+ The array variable 'BASH_REMATCH' records which parts of the string
+ matched the pattern. The element of 'BASH_REMATCH' with index 0
+ contains the portion of the string matching the entire regular
+ expression. Substrings matched by parenthesized subexpressions
+ within the regular expression are saved in the remaining
+ 'BASH_REMATCH' indices. The element of 'BASH_REMATCH' with index N
+ is the portion of the string matching the Nth parenthesized
+ subexpression.
+
+ Bash sets 'BASH_REMATCH' in the global scope; declaring it as a
+ local variable will lead to unexpected results.
+
Expressions may be combined using the following operators, listed
in decreasing order of precedence:
@@ -1024,9 +1181,9 @@ list may be redirected to a single stream.
'()'
( LIST )
- Placing a list of commands between parentheses causes a subshell
- environment to be created (*note Command Execution Environment::),
- and each of the commands in LIST to be executed in that subshell.
+ Placing a list of commands between parentheses forces the shell to
+ create a subshell (*note Command Execution Environment::), and each
+ of the commands in LIST is executed in that subshell environment.
Since the LIST is executed in a subshell, variable assignments do
not remain in effect after the subshell completes.
@@ -1039,10 +1196,10 @@ list may be redirected to a single stream.
In addition to the creation of a subshell, there is a subtle
difference between these two constructs due to historical reasons. The
-braces are 'reserved words', so they must be separated from the LIST by
-'blank's or other shell metacharacters. The parentheses are
-'operators', and are recognized as separate tokens by the shell even if
-they are not separated from the LIST by whitespace.
+braces are reserved words, so they must be separated from the LIST by
+'blank's or other shell metacharacters. The parentheses are operators,
+and are recognized as separate tokens by the shell even if they are not
+separated from the LIST by whitespace.
The exit status of both of these constructs is the exit status of
LIST.
@@ -1058,29 +1215,51 @@ A coprocess is executed asynchronously in a subshell, as if the command
had been terminated with the '&' control operator, with a two-way pipe
established between the executing shell and the coprocess.
- The format for a coprocess is:
+ The syntax for a coprocess is:
+
coproc [NAME] COMMAND [REDIRECTIONS]
-This creates a coprocess named NAME. If NAME is not supplied, the
-default name is COPROC. NAME must not be supplied if COMMAND is a
-simple command (*note Simple Commands::); otherwise, it is interpreted
-as the first word of the simple command.
+This creates a coprocess named NAME. COMMAND may be either a simple
+command (*note Simple Commands::) or a compound command (*note Compound
+Commands::). NAME is a shell variable name. If NAME is not supplied,
+the default name is 'COPROC'.
+
+ The recommended form to use for a coprocess is
+
+ coproc NAME { COMMAND; }
+
+This form is recommended because simple commands result in the coprocess
+always being named 'COPROC', and it is simpler to use and more complete
+than the other compound commands.
+
+ There are other forms of coprocesses:
+
+ coproc NAME COMPOUND-COMMAND
+ coproc COMPOUND-COMMAND
+ coproc SIMPLE-COMMAND
+
+If COMMAND is a compound command, NAME is optional. The word following
+'coproc' determines whether that word is interpreted as a variable name:
+it is interpreted as NAME if it is not a reserved word that introduces a
+compound command. If COMMAND is a simple command, NAME is not allowed;
+this is to avoid confusion between NAME and the first word of the simple
+command.
When the coprocess is executed, the shell creates an array variable
-(*note Arrays::) named 'NAME' in the context of the executing shell.
-The standard output of COMMAND is connected via a pipe to a file
+(*note Arrays::) named NAME in the context of the executing shell. The
+standard output of COMMAND is connected via a pipe to a file descriptor
+in the executing shell, and that file descriptor is assigned to NAME[0].
+The standard input of COMMAND is connected via a pipe to a file
descriptor in the executing shell, and that file descriptor is assigned
-to 'NAME'[0]. The standard input of COMMAND is connected via a pipe to
-a file descriptor in the executing shell, and that file descriptor is
-assigned to 'NAME'[1]. This pipe is established before any redirections
-specified by the command (*note Redirections::). The file descriptors
-can be utilized as arguments to shell commands and redirections using
-standard word expansions. Other than those created to execute command
-and process substitutions, the file descriptors are not available in
+to NAME[1]. This pipe is established before any redirections specified
+by the command (*note Redirections::). The file descriptors can be
+utilized as arguments to shell commands and redirections using standard
+word expansions. Other than those created to execute command and
+process substitutions, the file descriptors are not available in
subshells.
The process ID of the shell spawned to execute the coprocess is
-available as the value of the variable 'NAME'_PID. The 'wait' builtin
+available as the value of the variable 'NAME_PID'. The 'wait' builtin
command may be used to wait for the coprocess to terminate.
Since the coprocess is created as an asynchronous command, the
@@ -1105,88 +1284,9 @@ line, different ways to specify the input source, and so on). Parallel
can replace 'xargs' or feed commands from its input sources to several
different instances of Bash.
- For a complete description, refer to the GNU Parallel documentation.
-A few examples should provide a brief introduction to its use.
-
- For example, it is easy to replace 'xargs' to gzip all html files in
-the current directory and its subdirectories:
- find . -type f -name '*.html' -print | parallel gzip
-If you need to protect special characters such as newlines in file
-names, use find's '-print0' option and parallel's '-0' option.
-
- You can use Parallel to move files from the current directory when
-the number of files is too large to process with one 'mv' invocation:
- printf '%s\n' * | parallel mv {} destdir
-
- As you can see, the {} is replaced with each line read from standard
-input. While using 'ls' will work in most instances, it is not
-sufficient to deal with all filenames. 'printf' is a shell builtin, and
-therefore is not subject to the kernel's limit on the number of
-arguments to a program, so you can use '*' (but see below about the
-'dotglob' shell option). If you need to accommodate special characters
-in filenames, you can use
-
- printf '%s\0' * | parallel -0 mv {} destdir
-
-as alluded to above.
-
- This will run as many 'mv' commands as there are files in the current
-directory. You can emulate a parallel 'xargs' by adding the '-X'
-option:
- printf '%s\0' * | parallel -0 -X mv {} destdir
-
- (You may have to modify the pattern if you have the 'dotglob' option
-enabled.)
-
- GNU Parallel can replace certain common idioms that operate on lines
-read from a file (in this case, filenames listed one per line):
- while IFS= read -r x; do
- do-something1 "$x" "config-$x"
- do-something2 < "$x"
- done < file | process-output
-
-with a more compact syntax reminiscent of lambdas:
- cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" |
- process-output
-
- Parallel provides a built-in mechanism to remove filename extensions,
-which lends itself to batch file transformations or renaming:
- ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
-This will recompress all files in the current directory with names
-ending in .gz using bzip2, running one job per CPU (-j+0) in parallel.
-(We use 'ls' for brevity here; using 'find' as above is more robust in
-the face of filenames containing unexpected characters.) Parallel can
-take arguments from the command line; the above can also be written as
-
- parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
-
- If a command generates output, you may want to preserve the input
-order in the output. For instance, the following command
- {
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
- } | parallel traceroute
-will display as output the traceroute invocation that finishes first.
-Adding the '-k' option
- {
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
- } | parallel -k traceroute
-will ensure that the output of 'traceroute foss.org.my' is displayed
-first.
-
- Finally, Parallel can be used to run a sequence of shell commands in
-parallel, similar to 'cat file | bash'. It is not uncommon to take a
-list of filenames, create a series of shell commands to operate on them,
-and feed that list of commands to a shell. Parallel can speed this up.
-Assuming that 'file' contains a list of shell commands, one per line,
-
- parallel -j 10 < file
-
-will evaluate the commands using the shell (since no explicit command is
-supplied as an argument), in blocks of ten shell jobs at a time.
+ For a complete description, refer to the GNU Parallel documentation,
+which is available at
+<https://www.gnu.org/software/parallel/parallel_tutorial.html>.

File: bash.info, Node: Shell Functions, Next: Shell Parameters, Prev: Shell Commands, Up: Basic Shell Features
@@ -1210,15 +1310,15 @@ new process is created to interpret them.
This defines a shell function named FNAME. The reserved word
'function' is optional. If the 'function' reserved word is supplied,
-the parentheses are optional. The BODY of the function is the compound
-command COMPOUND-COMMAND (*note Compound Commands::). That command is
-usually a LIST enclosed between { and }, but may be any compound command
-listed above, with one exception: If the 'function' reserved word is
-used, but the parentheses are not supplied, the braces are required.
+the parentheses are optional. The "body" of the function is the
+compound command COMPOUND-COMMAND (*note Compound Commands::). That
+command is usually a LIST enclosed between { and }, but may be any
+compound command listed above. If the 'function' reserved word is used,
+but the parentheses are not supplied, the braces are recommended.
COMPOUND-COMMAND is executed whenever FNAME is specified as the name of
-a command. When the shell is in POSIX mode (*note Bash POSIX Mode::),
-FNAME must be a valid shell NAME and may not be the same as one of the
-special builtins (*note Special Builtins::). In default mode, a
+a simple command. When the shell is in POSIX mode (*note Bash POSIX
+Mode::), FNAME must be a valid shell name and may not be the same as one
+of the special builtins (*note Special Builtins::). In default mode, a
function name can be any unquoted shell word that does not contain '$'.
Any redirections (*note Redirections::) associated with the shell
function are performed when the function is executed. A function
@@ -1271,9 +1371,17 @@ status; otherwise the function's return status is the exit status of the
last command executed before the 'return'.
Variables local to the function may be declared with the 'local'
-builtin. These variables are visible only to the function and the
-commands it invokes. This is particularly important when a shell
-function calls other functions.
+builtin ("local variables"). Ordinarily, variables and their values are
+shared between a function and its caller. These variables are visible
+only to the function and the commands it invokes. This is particularly
+important when a shell function calls other functions.
+
+ In the following description, the "current scope" is a currently-
+executing function. Previous scopes consist of that function's caller
+and so on, back to the "global" scope, where the shell is not executing
+any shell function. Consequently, a local variable at the current local
+scope is a variable declared using the 'local' or 'declare' builtins in
+the function that is currently executing.
Local variables "shadow" variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
@@ -1281,7 +1389,7 @@ hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
- The shell uses DYNAMIC SCOPING to control a variable's visibility
+ The shell uses "dynamic scoping" to control a variable's visibility
within functions. With dynamic scoping, visible variables and their
values are a result of the sequence of function calls that caused
execution to reach the current function. The value of a variable that a
@@ -1290,10 +1398,10 @@ that caller is the "global" scope or another shell function. This is
also the value that a local variable declaration "shadows", and the
value that is restored when the function returns.
- For example, if a variable VAR is declared as local in function
-FUNC1, and FUNC1 calls another function FUNC2, references to VAR made
-from within FUNC2 will resolve to the local variable VAR from FUNC1,
-shadowing any global variable named VAR.
+ For example, if a variable 'var' is declared as local in function
+'func1', and 'func1' calls another function 'func2', references to 'var'
+made from within 'func2' will resolve to the local variable 'var' from
+'func1', shadowing any global variable named 'var'.
The following script demonstrates this behavior. When executed, the
script displays
@@ -1318,17 +1426,19 @@ script displays
variable is local to the current scope, 'unset' will unset it; otherwise
the unset will refer to the variable found in any calling scope as
described above. If a variable at the current local scope is unset, it
-will remain so until it is reset in that scope or until the function
-returns. Once the function returns, any instance of the variable at a
-previous scope will become visible. If the unset acts on a variable at
-a previous scope, any instance of a variable with that name that had
-been shadowed will become visible.
+will remain so (appearing as unset) until it is reset in that scope or
+until the function returns. Once the function returns, any instance of
+the variable at a previous scope will become visible. If the unset acts
+on a variable at a previous scope, any instance of a variable with that
+name that had been shadowed will become visible (see below how
+'localvar_unset'shell option changes this behavior).
Function names and definitions may be listed with the '-f' option to
the 'declare' ('typeset') builtin command (*note Bash Builtins::). The
'-F' option to 'declare' or 'typeset' will list the function names only
(and optionally the source file and line number, if the 'extdebug' shell
-option is enabled). Functions may be exported so that subshells
+option is enabled). Functions may be exported so that child shell
+processes (those created when executing a separate shell invocation)
automatically have them defined with the '-f' option to the 'export'
builtin (*note Bourne Shell Builtins::).
@@ -1348,11 +1458,12 @@ File: bash.info, Node: Shell Parameters, Next: Shell Expansions, Prev: Shell
* Positional Parameters:: The shell's command-line arguments.
* Special Parameters:: Parameters denoted by special characters.
-A PARAMETER is an entity that stores values. It can be a 'name', a
-number, or one of the special characters listed below. A VARIABLE is a
-parameter denoted by a 'name'. A variable has a VALUE and zero or more
-ATTRIBUTES. Attributes are assigned using the 'declare' builtin command
-(see the description of the 'declare' builtin in *note Bash Builtins::).
+A "parameter" is an entity that stores values. It can be a 'name', a
+number, or one of the special characters listed below. A "variable" is
+a parameter denoted by a 'name'. A variable has a 'value' and zero or
+more 'attributes'. Attributes are assigned using the 'declare' builtin
+command (see the description of the 'declare' builtin in *note Bash
+Builtins::).
A parameter is set if it has been assigned a value. The null string
is a valid value. Once a variable is set, it may be unset only by using
@@ -1362,24 +1473,23 @@ the 'unset' builtin command.
NAME=[VALUE]
If VALUE is not given, the variable is assigned the null string. All
VALUEs undergo tilde expansion, parameter and variable expansion,
-command substitution, arithmetic expansion, and quote removal (detailed
-below). If the variable has its 'integer' attribute set, then VALUE is
-evaluated as an arithmetic expression even if the '$((...))' expansion
-is not used (*note Arithmetic Expansion::). Word splitting is not
-performed, with the exception of '"$@"' as explained below. Filename
-expansion is not performed. Assignment statements may also appear as
-arguments to the 'alias', 'declare', 'typeset', 'export', 'readonly',
-and 'local' builtin commands (DECLARATION commands). When in POSIX mode
-(*note Bash POSIX Mode::), these builtins may appear in a command after
-one or more instances of the 'command' builtin and retain these
-assignment statement properties.
+command substitution, arithmetic expansion, and quote removal (*note
+Shell Parameter Expansion::). If the variable has its 'integer'
+attribute set, then VALUE is evaluated as an arithmetic expression even
+if the '$((...))' expansion is not used (*note Arithmetic Expansion::).
+Word splitting and filename expansion are not performed. Assignment
+statements may also appear as arguments to the 'alias', 'declare',
+'typeset', 'export', 'readonly', and 'local' builtin commands
+("declaration" commands). When in POSIX mode (*note Bash POSIX Mode::),
+these builtins may appear in a command after one or more instances of
+the 'command' builtin and retain these assignment statement properties.
In the context where an assignment statement is assigning a value to
a shell variable or array index (*note Arrays::), the '+=' operator can
be used to append to or add to the variable's previous value. This
includes arguments to builtin commands such as 'declare' that accept
-assignment statements (DECLARATION commands). When '+=' is applied to a
-variable for which the INTEGER attribute has been set, VALUE is
+assignment statements (declaration commands). When '+=' is applied to a
+variable for which the 'integer' attribute has been set, VALUE is
evaluated as an arithmetic expression and added to the variable's
current value, which is also evaluated. When '+=' is applied to an
array variable using compound assignment (*note Arrays::), the
@@ -1389,9 +1499,9 @@ maximum index (for indexed arrays), or added as additional key-value
pairs in an associative array. When applied to a string-valued
variable, VALUE is expanded and appended to the variable's value.
- A variable can be assigned the NAMEREF attribute using the '-n'
+ A variable can be assigned the 'nameref' attribute using the '-n'
option to the 'declare' or 'local' builtin commands (*note Bash
-Builtins::) to create a NAMEREF, or a reference to another variable.
+Builtins::) to create a "nameref", or a reference to another variable.
This allows variables to be manipulated indirectly. Whenever the
nameref variable is referenced, assigned to, unset, or has its
attributes modified (other than using or changing the nameref attribute
@@ -1401,9 +1511,9 @@ shell functions to refer to a variable whose name is passed as an
argument to the function. For instance, if a variable name is passed to
a shell function as its first argument, running
declare -n ref=$1
-inside the function creates a nameref variable REF whose value is the
+inside the function creates a nameref variable 'ref' whose value is the
variable name passed as the first argument. References and assignments
-to REF, and changes to its attributes, are treated as references,
+to 'ref', and changes to its attributes, are treated as references,
assignments, and attribute modifications to the variable whose name was
passed as '$1'.
@@ -1423,7 +1533,7 @@ File: bash.info, Node: Positional Parameters, Next: Special Parameters, Up: S
3.4.1 Positional Parameters
---------------------------
-A POSITIONAL PARAMETER is a parameter denoted by one or more digits,
+A "positional parameter" is a parameter denoted by one or more digits,
other than the single digit '0'. Positional parameters are assigned
from the shell's arguments when it is invoked, and may be reassigned
using the 'set' builtin command. Positional parameter 'N' may be
@@ -1488,9 +1598,8 @@ only be referenced; assignment to them is not allowed.
shell itself (such as the '-i' option).
'$'
- ($$) Expands to the process ID of the shell. In a '()' subshell,
- it expands to the process ID of the invoking shell, not the
- subshell.
+ ($$) Expands to the process ID of the shell. In a subshell, it
+ expands to the process ID of the invoking shell, not the subshell.
'!'
($!) Expands to the process ID of the job most recently placed
@@ -1544,13 +1653,13 @@ substitution (done in a left-to-right fashion); word splitting; and
filename expansion.
On systems that can support it, there is an additional expansion
-available: PROCESS SUBSTITUTION. This is performed at the same time as
-tilde, parameter, variable, and arithmetic expansion and command
+available: "process substitution". This is performed at the same time
+as tilde, parameter, variable, and arithmetic expansion and command
substitution.
After these expansions are performed, quote characters present in the
-original word are removed unless they have been quoted themselves (QUOTE
-REMOVAL).
+original word are removed unless they have been quoted themselves
+("quote removal").
Only brace expansion, word splitting, and filename expansion can
increase the number of words of the expansion; other expansions expand a
@@ -1568,7 +1677,7 @@ File: bash.info, Node: Brace Expansion, Next: Tilde Expansion, Up: Shell Expa
---------------------
Brace expansion is a mechanism by which arbitrary strings may be
-generated. This mechanism is similar to FILENAME EXPANSION (*note
+generated. This mechanism is similar to "filename expansion" (*note
Filename Expansion::), but the filenames generated need not exist.
Patterns to be brace expanded take the form of an optional PREAMBLE,
followed by either a series of comma-separated strings or a sequence
@@ -1583,17 +1692,17 @@ are not sorted; left to right order is preserved. For example,
ade ace abe
A sequence expression takes the form '{X..Y[..INCR]}', where X and Y
-are either integers or single characters, and INCR, an optional
-increment, is an integer. When integers are supplied, the expression
-expands to each number between X and Y, inclusive. Supplied integers
-may be prefixed with '0' to force each term to have the same width.
-When either X or Y begins with a zero, the shell attempts to force all
-generated terms to contain the same number of digits, zero-padding where
-necessary. When characters are supplied, the expression expands to each
-character lexicographically between X and Y, inclusive, using the
-default C locale. Note that both X and Y must be of the same type.
-When the increment is supplied, it is used as the difference between
-each term. The default increment is 1 or -1 as appropriate.
+are either integers or letters, and INCR, an optional increment, is an
+integer. When integers are supplied, the expression expands to each
+number between X and Y, inclusive. Supplied integers may be prefixed
+with '0' to force each term to have the same width. When either X or Y
+begins with a zero, the shell attempts to force all generated terms to
+contain the same number of digits, zero-padding where necessary. When
+letters are supplied, the expression expands to each character
+lexicographically between X and Y, inclusive, using the default C
+locale. Note that both X and Y must be of the same type (integer or
+letter). When the increment is supplied, it is used as the difference
+between each term. The default increment is 1 or -1 as appropriate.
Brace expansion is performed before any other expansions, and any
characters special to other expansions are preserved in the result. It
@@ -1623,9 +1732,9 @@ File: bash.info, Node: Tilde Expansion, Next: Shell Parameter Expansion, Prev
If a word begins with an unquoted tilde character ('~'), all of the
characters up to the first unquoted slash (or all characters, if there
-is no unquoted slash) are considered a TILDE-PREFIX. If none of the
+is no unquoted slash) are considered a "tilde-prefix". If none of the
characters in the tilde-prefix are quoted, the characters in the
-tilde-prefix following the tilde are treated as a possible LOGIN NAME.
+tilde-prefix following the tilde are treated as a possible "login name".
If this login name is the null string, the tilde is replaced with the
value of the 'HOME' shell variable. If 'HOME' is unset, the home
directory of the user executing the shell is substituted instead.
@@ -1681,7 +1790,7 @@ assigns the expanded value.
Bash also performs tilde expansion on words satisfying the conditions
of variable assignments (*note Shell Parameters::) when they appear as
arguments to simple commands. Bash does not do this, except for the
-DECLARATION commands listed above, when in POSIX mode.
+declaration commands listed above, when in POSIX mode.

File: bash.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions
@@ -1708,7 +1817,7 @@ parameter with more than one digit, or when PARAMETER is followed by a
character that is not to be interpreted as part of its name.
If the first character of PARAMETER is an exclamation point (!), and
-PARAMETER is not a NAMEREF, it introduces a level of indirection. Bash
+PARAMETER is not a nameref, it introduces a level of indirection. Bash
uses the value formed by expanding the rest of PARAMETER as the new
PARAMETER; this is then expanded and that value is used in the rest of
the expansion, rather than the expansion of the original PARAMETER.
@@ -1734,31 +1843,48 @@ omitted, the operator tests only for existence.
If PARAMETER is unset or null, the expansion of WORD is
substituted. Otherwise, the value of PARAMETER is substituted.
+ $ v=123
+ $ echo ${v-unset}
+ 123
+
'${PARAMETER:=WORD}'
If PARAMETER is unset or null, the expansion of WORD is assigned to
PARAMETER. The value of PARAMETER is then substituted. Positional
parameters and special parameters may not be assigned to in this
way.
+ $ var=
+ $ : ${var:=DEFAULT}
+ $ echo $var
+ DEFAULT
+
'${PARAMETER:?WORD}'
If PARAMETER is null or unset, the expansion of WORD (or a message
to that effect if WORD is not present) is written to the standard
error and the shell, if it is not interactive, exits. Otherwise,
the value of PARAMETER is substituted.
+ $ var=
+ $ : ${var:?var is unset or null}
+ bash: var: var is unset or null
+
'${PARAMETER:+WORD}'
If PARAMETER is null or unset, nothing is substituted, otherwise
the expansion of WORD is substituted.
+ $ var=123
+ $ echo ${var:+var is set and not null}
+ var is set and not null
+
'${PARAMETER:OFFSET}'
'${PARAMETER:OFFSET:LENGTH}'
This is referred to as Substring Expansion. It expands to up to
LENGTH characters of the value of PARAMETER starting at the
- character specified by OFFSET. If PARAMETER is '@', an indexed
- array subscripted by '@' or '*', or an associative array name, the
- results differ as described below. If LENGTH is omitted, it
- expands to the substring of the value of PARAMETER starting at the
- character specified by OFFSET and extending to the end of the
+ character specified by OFFSET. If PARAMETER is '@' or '*', an
+ indexed array subscripted by '@' or '*', or an associative array
+ name, the results differ as described below. If LENGTH is omitted,
+ it expands to the substring of the value of PARAMETER starting at
+ the character specified by OFFSET and extending to the end of the
value. LENGTH and OFFSET are arithmetic expressions (*note Shell
Arithmetic::).
@@ -1826,11 +1952,11 @@ omitted, the operator tests only for existence.
$ echo ${array[0]: -7:-2}
bcdef
- If PARAMETER is '@', the result is LENGTH positional parameters
- beginning at OFFSET. A negative OFFSET is taken relative to one
- greater than the greatest positional parameter, so an offset of -1
- evaluates to the last positional parameter. It is an expansion
- error if LENGTH evaluates to a number less than zero.
+ If PARAMETER is '@' or '*', the result is LENGTH positional
+ parameters beginning at OFFSET. A negative OFFSET is taken
+ relative to one greater than the greatest positional parameter, so
+ an offset of -1 evaluates to the last positional parameter. It is
+ an expansion error if LENGTH evaluates to a number less than zero.
The following examples illustrate substring expansion using
positional parameters:
@@ -1940,26 +2066,92 @@ omitted, the operator tests only for existence.
array in turn, and the expansion is the resultant list.
'${PARAMETER/PATTERN/STRING}'
-
+'${PARAMETER//PATTERN/STRING}'
+'${PARAMETER/#PATTERN/STRING}'
+'${PARAMETER/%PATTERN/STRING}'
The PATTERN is expanded to produce a pattern just as in filename
expansion. PARAMETER is expanded and the longest match of PATTERN
- against its value is replaced with STRING. The match is performed
- according to the rules described below (*note Pattern Matching::).
- If PATTERN begins with '/', all matches of PATTERN are replaced
- with STRING. Normally only the first match is replaced. If
- PATTERN begins with '#', it must match at the beginning of the
- expanded value of PARAMETER. If PATTERN begins with '%', it must
- match at the end of the expanded value of PARAMETER. If STRING is
- null, matches of PATTERN are deleted and the '/' following PATTERN
- may be omitted. If the 'nocasematch' shell option (see the
- description of 'shopt' in *note The Shopt Builtin::) is enabled,
- the match is performed without regard to the case of alphabetic
- characters. If PARAMETER is '@' or '*', the substitution operation
- is applied to each positional parameter in turn, and the expansion
- is the resultant list. If PARAMETER is an array variable
- subscripted with '@' or '*', the substitution operation is applied
- to each member of the array in turn, and the expansion is the
- resultant list.
+ against its value is replaced with STRING. STRING undergoes tilde
+ expansion, parameter and variable expansion, arithmetic expansion,
+ command and process substitution, and quote removal. The match is
+ performed according to the rules described below (*note Pattern
+ Matching::).
+
+ In the first form above, only the first match is replaced. If
+ there are two slashes separating PARAMETER and PATTERN (the second
+ form above), all matches of PATTERN are replaced with STRING. If
+ PATTERN is preceded by '#' (the third form above), it must match at
+ the beginning of the expanded value of PARAMETER. If PATTERN is
+ preceded by '%' (the fourth form above), it must match at the end
+ of the expanded value of PARAMETER. If the expansion of STRING is
+ null, matches of PATTERN are deleted. If STRING is null, matches
+ of PATTERN are deleted and the '/' following PATTERN may be
+ omitted.
+
+ If the 'patsub_replacement' shell option is enabled using 'shopt',
+ any unquoted instances of '&' in STRING are replaced with the
+ matching portion of PATTERN. This is intended to duplicate a
+ common 'sed' idiom.
+
+ Quoting any part of STRING inhibits replacement in the expansion of
+ the quoted portion, including replacement strings stored in shell
+ variables. Backslash will escape '&' in STRING; the backslash is
+ removed in order to permit a literal '&' in the replacement string.
+ Users should take care if STRING is double-quoted to avoid unwanted
+ interactions between the backslash and double-quoting, since
+ backslash has special meaning within double quotes. Pattern
+ substitution performs the check for unquoted '&' after expanding
+ STRING, so users should ensure to properly quote any occurrences of
+ '&' they want to be taken literally in the replacement and ensure
+ any instances of '&' they want to be replaced are unquoted.
+
+ For instance,
+
+ var=abcdef
+ rep='& '
+ echo ${var/abc/& }
+ echo "${var/abc/& }"
+ echo ${var/abc/$rep}
+ echo "${var/abc/$rep}"
+
+ will display four lines of "abc def", while
+
+ var=abcdef
+ rep='& '
+ echo ${var/abc/\& }
+ echo "${var/abc/\& }"
+ echo ${var/abc/"& "}
+ echo ${var/abc/"$rep"}
+
+ will display four lines of "& def". Like the pattern removal
+ operators, double quotes surrounding the replacement string quote
+ the expanded characters, while double quotes enclosing the entire
+ parameter substitution do not, since the expansion is performed in
+ a context that doesn't take any enclosing double quotes into
+ account.
+
+ Since backslash can escape '&', it can also escape a backslash in
+ the replacement string. This means that '\\' will insert a literal
+ backslash into the replacement, so these two 'echo' commands
+
+ var=abcdef
+ rep='\\&xyz'
+ echo ${var/abc/\\&xyz}
+ echo ${var/abc/$rep}
+
+ will both output '\abcxyzdef'.
+
+ It should rarely be necessary to enclose only STRING in double
+ quotes.
+
+ If the 'nocasematch' shell option (see the description of 'shopt'
+ in *note The Shopt Builtin::) is enabled, the match is performed
+ without regard to the case of alphabetic characters. If PARAMETER
+ is '@' or '*', the substitution operation is applied to each
+ positional parameter in turn, and the expansion is the resultant
+ list. If PARAMETER is an array variable subscripted with '@' or
+ '*', the substitution operation is applied to each member of the
+ array in turn, and the expansion is the resultant list.
'${PARAMETER^PATTERN}'
'${PARAMETER^^PATTERN}'
@@ -1970,18 +2162,22 @@ omitted, the operator tests only for existence.
filename expansion. Each character in the expanded value of
PARAMETER is tested against PATTERN, and, if it matches the
pattern, its case is converted. The pattern should not attempt to
- match more than one character. The '^' operator converts lowercase
- letters matching PATTERN to uppercase; the ',' operator converts
- matching uppercase letters to lowercase. The '^^' and ',,'
- expansions convert each matched character in the expanded value;
- the '^' and ',' expansions match and convert only the first
- character in the expanded value. If PATTERN is omitted, it is
- treated like a '?', which matches every character. If PARAMETER is
- '@' or '*', the case modification operation is applied to each
- positional parameter in turn, and the expansion is the resultant
- list. If PARAMETER is an array variable subscripted with '@' or
- '*', the case modification operation is applied to each member of
- the array in turn, and the expansion is the resultant list.
+ match more than one character.
+
+ The '^' operator converts lowercase letters matching PATTERN to
+ uppercase; the ',' operator converts matching uppercase letters to
+ lowercase. The '^^' and ',,' expansions convert each matched
+ character in the expanded value; the '^' and ',' expansions match
+ and convert only the first character in the expanded value. If
+ PATTERN is omitted, it is treated like a '?', which matches every
+ character.
+
+ If PARAMETER is '@' or '*', the case modification operation is
+ applied to each positional parameter in turn, and the expansion is
+ the resultant list. If PARAMETER is an array variable subscripted
+ with '@' or '*', the case modification operation is applied to each
+ member of the array in turn, and the expansion is the resultant
+ list.
'${PARAMETER@OPERATOR}'
The expansion is either a transformation of the value of PARAMETER
@@ -2021,6 +2217,10 @@ omitted, the operator tests only for existence.
'a'
The expansion is a string consisting of flag values
representing PARAMETER's attributes.
+ 'k'
+ Like the 'K' transformation, but expands the keys and values
+ of indexed and associative arrays to separate words after word
+ splitting.
If PARAMETER is '@' or '*', the operation is applied to each
positional parameter in turn, and the expansion is the resultant
@@ -2075,12 +2275,12 @@ is:
$(( EXPRESSION ))
- The expression is treated as if it were within double quotes, but a
-double quote inside the parentheses is not treated specially. All
-tokens in the expression undergo parameter and variable expansion,
-command substitution, and quote removal. The result is treated as the
-arithmetic expression to be evaluated. Arithmetic expansions may be
-nested.
+ The EXPRESSION undergoes the same expansions as if it were within
+double quotes, but double quote characters in EXPRESSION are not treated
+specially and are removed. All tokens in the expression undergo
+parameter and variable expansion, command substitution, and quote
+removal. The result is treated as the arithmetic expression to be
+evaluated. Arithmetic expansions may be nested.
The evaluation is performed according to the rules listed below
(*note Shell Arithmetic::). If the expression is invalid, Bash prints a
@@ -2175,9 +2375,12 @@ characters.
When a pattern is used for filename expansion, the character '.' at
the start of a filename or immediately following a slash must be matched
-explicitly, unless the shell option 'dotglob' is set. The filenames '.'
-and '..' must always be matched explicitly, even if 'dotglob' is set.
-In other cases, the '.' character is not treated specially.
+explicitly, unless the shell option 'dotglob' is set. In order to match
+the filenames '.' and '..', the pattern must begin with '.' (for
+example, '.?'), even if 'dotglob' is set. If the 'globskipdots' shell
+option is enabled, the filenames '.' and '..' are never matched, even if
+the pattern begins with a '.'. When not matching filenames, the '.'
+character is not treated specially.
When matching a filename, the slash character must always be matched
explicitly by a slash in the pattern, but in other matching contexts it
@@ -2185,8 +2388,8 @@ can be matched by a special pattern character as described below (*note
Pattern Matching::).
See the description of 'shopt' in *note The Shopt Builtin::, for a
-description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob'
-options.
+description of the 'nocaseglob', 'nullglob', 'globskipdots', 'failglob',
+and 'dotglob' options.
The 'GLOBIGNORE' shell variable may be used to restrict the set of
file names matching a pattern. If 'GLOBIGNORE' is set, each matching
@@ -2232,20 +2435,21 @@ characters must be quoted if they are to be matched literally.
character not enclosed is matched. A '-' may be matched by
including it as the first or last character in the set. A ']' may
be matched by including it as the first character in the set. The
- sorting order of characters in range expressions is determined by
- the current locale and the values of the 'LC_COLLATE' and 'LC_ALL'
- shell variables, if set.
+ sorting order of characters in range expressions, and the
+ characters included in the range, are determined by the current
+ locale and the values of the 'LC_COLLATE' and 'LC_ALL' shell
+ variables, if set.
For example, in the default C locale, '[a-dx-z]' is equivalent to
'[abcdxyz]'. Many locales sort characters in dictionary order, and
in these locales '[a-dx-z]' is typically not equivalent to
- '[abcdxyz]'; it might be equivalent to '[aBbCcDdxXyYz]', for
+ '[abcdxyz]'; it might be equivalent to '[aBbCcDdxYyZz]', for
example. To obtain the traditional interpretation of ranges in
bracket expressions, you can force the use of the C locale by
setting the 'LC_COLLATE' or 'LC_ALL' environment variable to the
value 'C', or enable the 'globasciiranges' shell option.
- Within '[' and ']', CHARACTER CLASSES can be specified using the
+ Within '[' and ']', "character classes" can be specified using the
syntax '[:'CLASS':]', where CLASS is one of the following classes
defined in the POSIX standard:
alnum alpha ascii blank cntrl digit graph lower
@@ -2254,8 +2458,8 @@ characters must be quoted if they are to be matched literally.
The 'word' character class matches letters, digits, and the
character '_'.
- Within '[' and ']', an EQUIVALENCE CLASS can be specified using the
- syntax '[='C'=]', which matches all characters with the same
+ Within '[' and ']', an "equivalence class" can be specified using
+ the syntax '[='C'=]', which matches all characters with the same
collation weight (as defined by the current locale) as the
character C.
@@ -2263,10 +2467,12 @@ characters must be quoted if they are to be matched literally.
symbol SYMBOL.
If the 'extglob' shell option is enabled using the 'shopt' builtin,
-several extended pattern matching operators are recognized. In the
-following description, a PATTERN-LIST is a list of one or more patterns
-separated by a '|'. Composite patterns may be formed using one or more
-of the following sub-patterns:
+the shell recognizes several extended pattern matching operators. In
+the following description, a PATTERN-LIST is a list of one or more
+patterns separated by a '|'. When matching filenames, the 'dotglob'
+shell option determines the set of filenames that are tested, as
+described above. Composite patterns may be formed using one or more of
+the following sub-patterns:
'?(PATTERN-LIST)'
Matches zero or one occurrence of the given patterns.
@@ -2283,6 +2489,20 @@ of the following sub-patterns:
'!(PATTERN-LIST)'
Matches anything except one of the given patterns.
+ The 'extglob' option changes the behavior of the parser, since the
+parentheses are normally treated as operators with syntactic meaning.
+To ensure that extended matching patterns are parsed correctly, make
+sure that 'extglob' is enabled before parsing constructs containing the
+patterns, including shell functions and command substitutions.
+
+ When matching filenames, the 'dotglob' shell option determines the
+set of filenames that are tested: when 'dotglob' is enabled, the set of
+filenames includes all files beginning with '.', but the filenames '.'
+and '..' must be matched by a pattern or sub-pattern that begins with a
+dot; when it is disabled, the set does not include any filenames
+beginning with "." unless the pattern or sub-pattern begins with a '.'.
+As above, '.' only has a special meaning when matching filenames.
+
Complicated extended pattern matching against long strings is slow,
especially when the patterns contain alternations and the strings
contain multiple matches. Using separate matches against shorter
@@ -2305,8 +2525,8 @@ File: bash.info, Node: Redirections, Next: Executing Commands, Prev: Shell Ex
3.6 Redirections
================
-Before a command is executed, its input and output may be REDIRECTED
-using a special notation interpreted by the shell. Redirection allows
+Before a command is executed, its input and output may be "redirected"
+using a special notation interpreted by the shell. "Redirection" allows
commands' file handles to be duplicated, opened, closed, made to refer
to different files, and can change the files the command reads from and
writes to. Redirection may also be used to modify file handles in the
@@ -2322,7 +2542,8 @@ file descriptor greater than 10 and assign it to {VARNAME}. If >&- or
<&- is preceded by {VARNAME}, the value of VARNAME defines the file
descriptor to close. If {VARNAME} is supplied, the redirection persists
beyond the scope of the command, allowing the shell programmer to manage
-the file descriptor's lifetime manually.
+the file descriptor's lifetime manually. The 'varredir_close' shell
+option manages this behavior (*note The Shopt Builtin::).
In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is '<', the
@@ -2584,11 +2805,13 @@ following order.
expansion, and quote removal before being assigned to the variable.
If no command name results, the variable assignments affect the
-current shell environment. Otherwise, the variables are added to the
-environment of the executed command and do not affect the current shell
-environment. If any of the assignments attempts to assign a value to a
-readonly variable, an error occurs, and the command exits with a
-non-zero status.
+current shell environment. In the case of such a command (one that
+consists only of assignment statements and redirections), assignment
+statements are performed before redirections. Otherwise, the variables
+are added to the environment of the executed command and do not affect
+the current shell environment. If any of the assignments attempts to
+assign a value to a readonly variable, an error occurs, and the command
+exits with a non-zero status.
If no command name results, redirections are performed, but do not
affect the current shell environment. A redirection error causes the
@@ -2642,8 +2865,8 @@ taken.
5. If this execution fails because the file is not in executable
format, and the file is not a directory, it is assumed to be a
- SHELL SCRIPT and the shell executes it as described in *note Shell
- Scripts::.
+ "shell script" and the shell executes it as described in *note
+ Shell Scripts::.
6. If the command was not begun asynchronously, the shell waits for
the command to complete and collects its exit status.
@@ -2654,7 +2877,8 @@ File: bash.info, Node: Command Execution Environment, Next: Environment, Prev
3.7.3 Command Execution Environment
-----------------------------------
-The shell has an EXECUTION ENVIRONMENT, which consists of the following:
+The shell has an "execution environment", which consists of the
+following:
* open files inherited by the shell at invocation, as modified by
redirections supplied to the 'exec' builtin
@@ -2705,6 +2929,8 @@ inherited from the shell.
A command invoked in this separate environment cannot affect the
shell's execution environment.
+ A "subshell" is a copy of the shell process.
+
Command substitution, commands grouped with parentheses, and
asynchronous commands are invoked in a subshell environment that is a
duplicate of the shell environment, except that traps caught by the
@@ -2729,12 +2955,12 @@ File: bash.info, Node: Environment, Next: Exit Status, Prev: Command Executio
-----------------
When a program is invoked it is given an array of strings called the
-ENVIRONMENT. This is a list of name-value pairs, of the form
+"environment". This is a list of name-value pairs, of the form
'name=value'.
Bash provides several ways to manipulate the environment. On
invocation, the shell scans its own environment and creates a parameter
-for each name found, automatically marking it for EXPORT to child
+for each name found, automatically marking it for 'export' to child
processes. Executed commands inherit the environment. The 'export' and
'declare -x' commands allow parameters and functions to be added to and
deleted from the environment. If the value of a parameter in the
@@ -2765,11 +2991,11 @@ File: bash.info, Node: Exit Status, Next: Signals, Prev: Environment, Up: Ex
-----------------
The exit status of an executed command is the value returned by the
-WAITPID system call or equivalent function. Exit statuses fall between
-0 and 255, though, as explained below, the shell may use values above
-125 specially. Exit statuses from shell builtins and compound commands
-are also limited to this range. Under certain circumstances, the shell
-will use special values to indicate specific failure modes.
+'waitpid' system call or equivalent function. Exit statuses fall
+between 0 and 255, though, as explained below, the shell may use values
+above 125 specially. Exit statuses from shell builtins and compound
+commands are also limited to this range. Under certain circumstances,
+the shell will use special values to indicate specific failure modes.
For the shell's purposes, a command which exits with a zero exit
status has succeeded. A non-zero exit status indicates failure. This
@@ -2795,6 +3021,9 @@ conditional and list constructs. All builtins return an exit status of
2 to indicate incorrect usage, generally invalid options or missing
arguments.
+ The exit status of the last command is available in the special
+parameter $? (*note Special Parameters::).
+

File: bash.info, Node: Signals, Prev: Exit Status, Up: Executing Commands
@@ -2835,6 +3064,33 @@ the 'wait' builtin, the reception of a signal for which a trap has been
set will cause the 'wait' builtin to return immediately with an exit
status greater than 128, immediately after which the trap is executed.
+ When job control is not enabled, and Bash is waiting for a foreground
+command to complete, the shell receives keyboard-generated signals such
+as 'SIGINT' (usually generated by '^C') that users commonly intend to
+send to that command. This happens because the shell and the command
+are in the same process group as the terminal, and '^C' sends 'SIGINT'
+to all processes in that process group. See *note Job Control::, for a
+more in-depth discussion of process groups.
+
+ When Bash is running without job control enabled and receives
+'SIGINT' while waiting for a foreground command, it waits until that
+foreground command terminates and then decides what to do about the
+'SIGINT':
+
+ 1. If the command terminates due to the 'SIGINT', Bash concludes that
+ the user meant to end the entire script, and acts on the 'SIGINT'
+ (e.g., by running a 'SIGINT' trap or exiting itself);
+
+ 2. If the pipeline does not terminate due to 'SIGINT', the program
+ handled the 'SIGINT' itself and did not treat it as a fatal signal.
+ In that case, Bash does not treat 'SIGINT' as a fatal signal,
+ either, instead assuming that the 'SIGINT' was used as part of the
+ program's normal operation (e.g., 'emacs' uses it to abort editing
+ commands) or deliberately discarded. However, Bash will run any
+ trap set on 'SIGINT', as it does with any other trapped signal it
+ receives while it is waiting for the foreground command to
+ complete, for compatibility.
+

File: bash.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic Shell Features
@@ -2857,8 +3113,8 @@ parameters are unset.
A shell script may be made executable by using the 'chmod' command to
turn on the execute bit. When Bash finds such a file while searching
-the '$PATH' for a command, it spawns a subshell to execute it. In other
-words, executing
+the '$PATH' for a command, it creates a new instance of itself to
+execute it. In other words, executing
filename ARGUMENTS
is equivalent to executing
bash filename ARGUMENTS
@@ -2962,19 +3218,20 @@ standard.
Read and execute commands from the FILENAME argument in the current
shell context. If FILENAME does not contain a slash, the 'PATH'
- variable is used to find FILENAME. When Bash is not in POSIX mode,
- the current directory is searched if FILENAME is not found in
- '$PATH'. If any ARGUMENTS are supplied, they become the positional
- parameters when FILENAME is executed. Otherwise the positional
- parameters are unchanged. If the '-T' option is enabled, 'source'
- inherits any trap on 'DEBUG'; if it is not, any 'DEBUG' trap string
- is saved and restored around the call to 'source', and 'source'
- unsets the 'DEBUG' trap while it executes. If '-T' is not set, and
- the sourced file changes the 'DEBUG' trap, the new value is
- retained when 'source' completes. The return status is the exit
- status of the last command executed, or zero if no commands are
- executed. If FILENAME is not found, or cannot be read, the return
- status is non-zero. This builtin is equivalent to 'source'.
+ variable is used to find FILENAME, but FILENAME does not need to be
+ executable. When Bash is not in POSIX mode, it searches the
+ current directory if FILENAME is not found in '$PATH'. If any
+ ARGUMENTS are supplied, they become the positional parameters when
+ FILENAME is executed. Otherwise the positional parameters are
+ unchanged. If the '-T' option is enabled, '.' inherits any trap on
+ 'DEBUG'; if it is not, any 'DEBUG' trap string is saved and
+ restored around the call to '.', and '.' unsets the 'DEBUG' trap
+ while it executes. If '-T' is not set, and the sourced file
+ changes the 'DEBUG' trap, the new value is retained when '.'
+ completes. The return status is the exit status of the last
+ command executed, or zero if no commands are executed. If FILENAME
+ is not found, or cannot be read, the return status is non-zero.
+ This builtin is equivalent to 'source'.
'break'
break [N]
@@ -2988,10 +3245,9 @@ standard.
cd [-L|[-P [-e]] [-@] [DIRECTORY]
Change the current working directory to DIRECTORY. If DIRECTORY is
- not supplied, the value of the 'HOME' shell variable is used. Any
- additional arguments following DIRECTORY are ignored. If the shell
- variable 'CDPATH' exists, it is used as a search path: each
- directory name in 'CDPATH' is searched for DIRECTORY, with
+ not supplied, the value of the 'HOME' shell variable is used. If
+ the shell variable 'CDPATH' exists, it is used as a search path:
+ each directory name in 'CDPATH' is searched for DIRECTORY, with
alternative directory names in 'CDPATH' separated by a colon (':').
If DIRECTORY begins with a slash, 'CDPATH' is not used.
@@ -3022,6 +3278,11 @@ standard.
absolute pathname of the new working directory is written to the
standard output.
+ If the directory change is successful, 'cd' sets the value of the
+ 'PWD' environment variable to the new directory name, and sets the
+ 'OLDPWD' environment variable to the value of the current working
+ directory before the change.
+
The return status is zero if the directory is successfully changed,
non-zero otherwise.
@@ -3073,7 +3334,7 @@ standard.
Mark each NAME to be passed to child processes in the environment.
If the '-f' option is supplied, the NAMEs refer to shell functions;
otherwise the names refer to shell variables. The '-n' option
- means to no longer mark each NAME for export. If no NAMES are
+ means to no longer mark each NAME for export. If no NAMEs are
supplied, or if the '-p' option is given, a list of names of all
exported variables is displayed. The '-p' option displays output
in a form that may be reused as input. If a variable name is
@@ -3277,10 +3538,16 @@ standard.
4. Otherwise, the expression is false.
4 arguments
- If the first argument is '!', the result is the negation of
- the three-argument expression composed of the remaining
- arguments. Otherwise, the expression is parsed and evaluated
- according to precedence using the rules listed above.
+ The following conditions are applied in the order listed.
+
+ 1. If the first argument is '!', the result is the negation
+ of the three-argument expression composed of the
+ remaining arguments.
+ 2. If the first argument is exactly '(' and the fourth
+ argument is exactly ')', the result is the two-argument
+ test of the second and third arguments.
+ 3. Otherwise, the expression is parsed and evaluated
+ according to precedence using the rules listed above.
5 or more arguments
The expression is parsed and evaluated according to precedence
@@ -3369,7 +3636,7 @@ standard.
given, each NAME refers to a shell variable and that variable is
removed. If the '-f' option is given, the NAMEs refer to shell
functions, and the function definition is removed. If the '-n'
- option is supplied, and NAME is a variable with the NAMEREF
+ option is supplied, and NAME is a variable with the 'nameref'
attribute, NAME will be unset rather than the variable it
references. '-n' has no effect if the '-f' option is supplied. If
no options are supplied, each NAME refers to a variable; if there
@@ -3377,7 +3644,8 @@ standard.
unset. Readonly variables and functions may not be unset. Some
shell variables lose their special behavior if they are unset; such
behavior is noted in the description of the individual variables.
- The return status is zero unless a NAME is readonly.
+ The return status is zero unless a NAME is readonly or may not be
+ unset.

File: bash.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands
@@ -3406,6 +3674,7 @@ standard.
bind [-m KEYMAP] -x KEYSEQ:SHELL-COMMAND
bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME
bind [-m KEYMAP] KEYSEQ:READLINE-COMMAND
+ bind READLINE-COMMAND-LINE
Display current Readline (*note Command Line Editing::) key and
function bindings, bind a key sequence to a Readline function or
@@ -3470,10 +3739,13 @@ standard.
'READLINE_LINE' variable to the contents of the Readline line
buffer and the 'READLINE_POINT' and 'READLINE_MARK' variables
to the current location of the insertion point and the saved
- insertion point (the MARK), respectively. If the executed
- command changes the value of any of 'READLINE_LINE',
- 'READLINE_POINT', or 'READLINE_MARK', those new values will be
- reflected in the editing state.
+ insertion point (the MARK), respectively. The shell assigns
+ any numeric argument the user supplied to the
+ 'READLINE_ARGUMENT' variable. If there was no argument, that
+ variable is not set. If the executed command changes the
+ value of any of 'READLINE_LINE', 'READLINE_POINT', or
+ 'READLINE_MARK', those new values will be reflected in the
+ editing state.
'-X'
List all key sequences bound to shell commands and the
@@ -3556,7 +3828,7 @@ standard.
It is ignored in all other cases.
The '-I' option causes local variables to inherit the attributes
- (except the NAMEREF attribute) and value of any existing variable
+ (except the 'nameref' attribute) and value of any existing variable
with the same NAME at a surrounding scope. If there is no existing
variable, the local variable is initially unset.
@@ -3583,7 +3855,7 @@ standard.
attribute is disabled.
'-n'
- Give each NAME the NAMEREF attribute, making it a name
+ Give each NAME the 'nameref' attribute, making it a name
reference to another variable. That other variable is defined
by the value of NAME. All references, assignments, and
attribute modifications to NAME, except for those using or
@@ -3626,7 +3898,7 @@ standard.
attempt is made to assign a value to a readonly variable, an
attempt is made to assign a value to an array variable without
using the compound assignment syntax (*note Arrays::), one of the
- NAMES is not a valid shell variable name, an attempt is made to
+ NAMEs is not a valid shell variable name, an attempt is made to
turn off readonly status for a readonly variable, an attempt is
made to turn off array status for an array variable, or an attempt
is made to display a non-existent function with '-f'.
@@ -3699,13 +3971,20 @@ standard.
The '-f' option means to load the new builtin command NAME from
shared object FILENAME, on systems that support dynamic loading.
- The '-d' option will delete a builtin loaded with '-f'.
+ Bash will use the value of the 'BASH_LOADABLES_PATH' variable as a
+ colon-separated list of directories in which to search for
+ FILENAME. The default is system-dependent. The '-d' option will
+ delete a builtin loaded with '-f'.
If there are no options, a list of the shell builtins is displayed.
The '-s' option restricts 'enable' to the POSIX special builtins.
If '-s' is used with '-f', the new builtin becomes a special
builtin (*note Special Builtins::).
+ If no options are supplied and a NAME is not a shell builtin,
+ 'enable' will attempt to load NAME from a shared object named NAME,
+ as if the command were 'enable -f NAME NAME'.
+
The return status is zero unless a NAME is not a shell builtin or
there is an error loading a new builtin from a shared object.
@@ -3826,6 +4105,9 @@ standard.
'%q'
Causes 'printf' to output the corresponding ARGUMENT in a
format that can be reused as shell input.
+ '%Q'
+ like '%q', but applies any supplied precision to the ARGUMENT
+ before quoting it.
'%(DATEFMT)T'
Causes 'printf' to output the date-time string resulting from
using DATEFMT as a format string for 'strftime'(3). The
@@ -3934,8 +4216,9 @@ standard.
partial input read into the specified variable NAME. If
TIMEOUT is 0, 'read' returns immediately, without trying to
read any data. The exit status is 0 if input is available on
- the specified file descriptor, non-zero otherwise. The exit
- status is greater than 128 if the timeout is exceeded.
+ the specified file descriptor, or the read will return EOF,
+ non-zero otherwise. The exit status is greater than 128 if
+ the timeout is exceeded.
'-u FD'
Read input from file descriptor FD.
@@ -3991,7 +4274,7 @@ standard.
If the '-f' option is used, 'type' does not attempt to find shell
functions, as with the 'command' builtin.
- The return status is zero if all of the NAMES are found, non-zero
+ The return status is zero if all of the NAMEs are found, non-zero
if any are not found.
'typeset'
@@ -4135,8 +4418,8 @@ allows you to change the values of shell options and set the positional
parameters, or to display the names and values of shell variables.
'set'
- set [--abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [ARGUMENT ...]
- set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [ARGUMENT ...]
+ set [-abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [--] [-] [ARGUMENT ...]
+ set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [--] [-] [ARGUMENT ...]
If no options or arguments are supplied, 'set' displays the names
and values of all shell variables and functions, sorted according
@@ -4317,14 +4600,19 @@ parameters, or to display the names and values of shell variables.
causes the effective user and group ids to be set to the real
user and group ids.
+ '-r'
+ Enable restricted shell mode. This option cannot be unset
+ once it has been set.
+
'-t'
Exit after reading and executing one command.
'-u'
Treat unset variables and parameters other than the special
- parameters '@' or '*' as an error when performing parameter
- expansion. An error message will be written to the standard
- error, and a non-interactive shell will exit.
+ parameters '@' or '*', or array variables subscripted with '@'
+ or '*', as an error when performing parameter expansion. An
+ error message will be written to the standard error, and a
+ non-interactive shell will exit.
'-v'
Print shell input lines as they are read.
@@ -4421,7 +4709,7 @@ This builtin allows you to change additional shell optional behavior.
option is used, those available with the '-o' option to the 'set'
builtin command (*note The Set Builtin::). With no options, or
with the '-p' option, a list of all settable options is displayed,
- with an indication of whether or not each is set; if OPTNAMES are
+ with an indication of whether or not each is set; if OPTNAMEs are
supplied, the output is restricted to those options. The '-p'
option causes output to be displayed in a form that may be reused
as input. Other options have the following meanings:
@@ -4435,7 +4723,7 @@ This builtin allows you to change additional shell optional behavior.
'-q'
Suppresses normal output; the return status indicates whether
the OPTNAME is set or unset. If multiple OPTNAME arguments
- are given with '-q', the return status is zero if all OPTNAMES
+ are given with '-q', the return status is zero if all OPTNAMEs
are enabled; non-zero otherwise.
'-o'
@@ -4448,7 +4736,7 @@ This builtin allows you to change additional shell optional behavior.
Unless otherwise noted, the 'shopt' options are disabled (off) by
default.
- The return status when listing options is zero if all OPTNAMES are
+ The return status when listing options is zero if all OPTNAMEs are
enabled, non-zero otherwise. When setting or unsetting options,
the return status is zero unless an OPTNAME is not a valid shell
option.
@@ -4532,7 +4820,7 @@ This builtin allows you to change additional shell optional behavior.
'direxpand'
If set, Bash replaces directory names with the results of word
expansion when performing filename completion. This changes
- the contents of the readline editing buffer. If not set, Bash
+ the contents of the Readline editing buffer. If not set, Bash
attempts to preserve what the user typed.
'dirspell'
@@ -4616,6 +4904,11 @@ This builtin allows you to change additional shell optional behavior.
upper-case and lower-case ASCII characters will collate
together.
+ 'globskipdots'
+ If set, filename expansion will never match the filenames '.'
+ and '..', even if the pattern begins with a '.'. This option
+ is enabled by default.
+
'globstar'
If set, the pattern '**' used in a filename expansion context
will match all files and zero or more directories and
@@ -4675,7 +4968,7 @@ This builtin allows you to change additional shell optional behavior.
'localvar_inherit'
If set, local variables inherit the value and attributes of a
variable of the same name that exists at a previous scope
- before any new value is assigned. The NAMEREF attribute is
+ before any new value is assigned. The 'nameref' attribute is
not inherited.
'localvar_unset'
@@ -4706,14 +4999,26 @@ This builtin allows you to change additional shell optional behavior.
'nocasematch'
If set, Bash matches patterns in a case-insensitive fashion
when performing matching while executing 'case' or '[['
- conditional commands, when performing pattern substitution
- word expansions, or when filtering possible completions as
- part of programmable completion.
+ conditional commands (*note Conditional Constructs::, when
+ performing pattern substitution word expansions, or when
+ filtering possible completions as part of programmable
+ completion.
+
+ 'noexpand_translation'
+ If set, Bash encloses the translated results of $"..."
+ quoting in single quotes instead of double quotes. If the
+ string is not translated, this has no effect.
'nullglob'
If set, Bash allows filename patterns which match no files to
expand to a null string, rather than themselves.
+ 'patsub_replacement'
+ If set, Bash expands occurrences of '&' in the replacement
+ string of pattern substitution to the text matched by the
+ pattern, as described above (*note Shell Parameter
+ Expansion::). This option is enabled by default.
+
'progcomp'
If set, the programmable completion facilities (*note
Programmable Completion::) are enabled. This option is
@@ -4745,9 +5050,15 @@ This builtin allows you to change additional shell optional behavior.
parameters.
'sourcepath'
- If set, the 'source' builtin uses the value of 'PATH' to find
- the directory containing the file supplied as an argument.
- This option is enabled by default.
+ If set, the '.' ('source') builtin uses the value of 'PATH' to
+ find the directory containing the file supplied as an
+ argument. This option is enabled by default.
+
+ 'varredir_close'
+ If set, the shell automatically closes file descriptors
+ assigned using the '{varname}' redirection syntax (*note
+ Redirections::) instead of leaving them open when the command
+ completes.
'xpg_echo'
If set, the 'echo' builtin expands backslash-escape sequences
@@ -4980,7 +5291,7 @@ Variables::).
'BASH_LINENO'
An array variable whose members are the line numbers in source
- files where each corresponding member of FUNCNAME was invoked.
+ files where each corresponding member of 'FUNCNAME' was invoked.
'${BASH_LINENO[$i]}' is the line number in the source file
('${BASH_SOURCE[$i+1]}') where '${FUNCNAME[$i]}' was called (or
'${BASH_LINENO[$i-1]}' if referenced within another shell
@@ -5017,10 +5328,10 @@ Variables::).
to the array members are as follows:
'BASH_VERSINFO[0]'
- The major version number (the RELEASE).
+ The major version number (the "release").
'BASH_VERSINFO[1]'
- The minor version number (the VERSION).
+ The minor version number (the "version").
'BASH_VERSINFO[2]'
The patch level.
@@ -5029,7 +5340,7 @@ Variables::).
The build version.
'BASH_VERSINFO[4]'
- The release status (e.g., BETA1).
+ The release status (e.g., 'beta1').
'BASH_VERSINFO[5]'
The value of 'MACHTYPE'.
@@ -5082,12 +5393,12 @@ Variables::).
'COMP_TYPE'
Set to an integer value corresponding to the type of completion
- attempted that caused a completion function to be called: TAB, for
- normal completion, '?', for listing completions after successive
- tabs, '!', for listing alternatives on partial word completion,
- '@', to list completions if the word is not unmodified, or '%', for
- menu completion. This variable is available only in shell
- functions and external commands invoked by the programmable
+ attempted that caused a completion function to be called: <TAB>,
+ for normal completion, '?', for listing completions after
+ successive tabs, '!', for listing alternatives on partial word
+ completion, '@', to list completions if the word is not unmodified,
+ or '%', for menu completion. This variable is available only in
+ shell functions and external commands invoked by the programmable
completion facilities (*note Programmable Completion::).
'COMP_KEY'
@@ -5133,7 +5444,7 @@ Variables::).
Emacs shell buffer and disables line editing.
'ENV'
- Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup
+ Expanded and executed similarly to 'BASH_ENV' (*note Bash Startup
Files::) when an interactive shell is invoked in POSIX Mode (*note
Bash POSIX Mode::).
@@ -5141,16 +5452,16 @@ Variables::).
Each time this parameter is referenced, it expands to the number of
seconds since the Unix Epoch as a floating point value with
micro-second granularity (see the documentation for the C library
- function TIME for the definition of Epoch). Assignments to
+ function 'time' for the definition of Epoch). Assignments to
'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses
its special properties, even if it is subsequently reset.
'EPOCHSECONDS'
Each time this parameter is referenced, it expands to the number of
seconds since the Unix Epoch (see the documentation for the C
- library function TIME for the definition of Epoch). Assignments to
- 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses
- its special properties, even if it is subsequently reset.
+ library function 'time' for the definition of Epoch). Assignments
+ to 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it
+ loses its special properties, even if it is subsequently reset.
'EUID'
The numeric effective user id of the current user. This variable
@@ -5217,7 +5528,7 @@ Variables::).
'histchars'
Up to three characters which control history expansion, quick
substitution, and tokenization (*note History Interaction::). The
- first character is the HISTORY EXPANSION character, that is, the
+ first character is the "history expansion" character, that is, the
character which signifies the start of a history expansion,
normally '!'. The second character is the character which
signifies 'quick substitution' when seen as the first character on
@@ -5295,7 +5606,7 @@ Variables::).
'HISTTIMEFORMAT'
If this variable is set and not null, its value is used as a format
- string for STRFTIME to print the time stamp associated with each
+ string for 'strftime' to print the time stamp associated with each
history entry displayed by the 'history' builtin. If this variable
is set, time stamps are written to the history file so they may be
preserved across shell sessions. This uses the history comment
@@ -5449,7 +5760,7 @@ Variables::).
with '#? '
'PS4'
- The value of this parameter is expanded like PS1 and the expanded
+ The value of this parameter is expanded like 'PS1' and the expanded
value is the prompt printed before the command line is echoed when
the '-x' option is set (*note The Set Builtin::). The first
character of the expanded value is replicated multiple times, as
@@ -5465,15 +5776,19 @@ Variables::).
seeds the random number generator. If 'RANDOM' is unset, it loses
its special properties, even if it is subsequently reset.
+'READLINE_ARGUMENT'
+ Any numeric argument given to a Readline command that was defined
+ using 'bind -x' (*note Bash Builtins:: when it was invoked.
+
'READLINE_LINE'
The contents of the Readline line buffer, for use with 'bind -x'
(*note Bash Builtins::).
'READLINE_MARK'
- The position of the MARK (saved insertion point) in the Readline
+ The position of the "mark" (saved insertion point) in the Readline
line buffer, for use with 'bind -x' (*note Bash Builtins::). The
characters between the insertion point and the mark are often
- called the REGION.
+ called the "region".
'READLINE_POINT'
The position of the insertion point in the Readline line buffer,
@@ -5487,7 +5802,7 @@ Variables::).
started. Assignment to this variable resets the count to the value
assigned, and the expanded value becomes the value assigned plus
the number of seconds since the assignment. The number of seconds
- at shell invocation and the current time is always determined by
+ at shell invocation and the current time are always determined by
querying the system clock. If 'SECONDS' is unset, it loses its
special properties, even if it is subsequently reset.
@@ -5843,14 +6158,15 @@ Invoked by remote shell daemon
..............................
Bash attempts to determine when it is being run with its standard input
-connected to a network connection, as when executed by the remote shell
-daemon, usually 'rshd', or the secure shell daemon 'sshd'. If Bash
-determines it is being run in this fashion, it reads and executes
-commands from '~/.bashrc', if that file exists and is readable. It will
-not do this if invoked as 'sh'. The '--norc' option may be used to
-inhibit this behavior, and the '--rcfile' option may be used to force
-another file to be read, but neither 'rshd' nor 'sshd' generally invoke
-the shell with those options or allow them to be specified.
+connected to a network connection, as when executed by the historical
+remote shell daemon, usually 'rshd', or the secure shell daemon 'sshd'.
+If Bash determines it is being run non-interactively in this fashion, it
+reads and executes commands from '~/.bashrc', if that file exists and is
+readable. It will not do this if invoked as 'sh'. The '--norc' option
+may be used to inhibit this behavior, and the '--rcfile' option may be
+used to force another file to be read, but neither 'rshd' nor 'sshd'
+generally invoke the shell with those options or allow them to be
+specified.
Invoked with unequal effective and real UID/GIDs
................................................
@@ -5874,7 +6190,7 @@ File: bash.info, Node: Interactive Shells, Next: Bash Conditional Expressions,
* What is an Interactive Shell?:: What determines whether a shell is Interactive.
* Is this Shell Interactive?:: How to tell if a shell is interactive.
-* Interactive Shell Behavior:: What changes in a interactive shell?
+* Interactive Shell Behavior:: What changes in an interactive shell?

File: bash.info, Node: What is an Interactive Shell?, Next: Is this Shell Interactive?, Up: Interactive Shells
@@ -5882,8 +6198,8 @@ File: bash.info, Node: What is an Interactive Shell?, Next: Is this Shell Inte
6.3.1 What is an Interactive Shell?
-----------------------------------
-An interactive shell is one started without non-option arguments, unless
-'-s' is specified, without specifying the '-c' option, and whose input
+An interactive shell is one started without non-option arguments (unless
+'-s' is specified) and without specifying the '-c' option, whose input
and error output are both connected to terminals (as determined by
'isatty(3)'), or one started with the '-i' option.
@@ -5941,7 +6257,7 @@ several ways.
string escape sequences.
4. Bash executes the values of the set elements of the
- 'PROMPT_COMMANDS' array variable as commands before printing the
+ 'PROMPT_COMMAND' array variable as commands before printing the
primary prompt, '$PS1' (*note Bash Variables::).
5. Readline (*note Command Line Editing::) is used to read commands
@@ -5993,9 +6309,11 @@ several ways.
19. Parser syntax errors will not cause the shell to exit.
- 20. Simple spelling correction for directory arguments to the 'cd'
- builtin is enabled by default (see the description of the 'cdspell'
- option to the 'shopt' builtin in *note The Shopt Builtin::).
+ 20. If the 'cdspell' shell option is enabled, the shell will attempt
+ simple spelling correction for directory arguments to the 'cd'
+ builtin (see the description of the 'cdspell' option to the 'shopt'
+ builtin in *note The Shopt Builtin::). The 'cdspell' option is
+ only effective in interactive shells.
21. The shell will check the value of the 'TMOUT' variable and exit if
a command is not read within the specified number of seconds after
@@ -6007,10 +6325,11 @@ File: bash.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic,
6.4 Bash Conditional Expressions
================================
-Conditional expressions are used by the '[[' compound command and the
-'test' and '[' builtin commands. The 'test' and '[' commands determine
-their behavior based on the number of arguments; see the descriptions of
-those commands for any other command-specific actions.
+Conditional expressions are used by the '[[' compound command (*note
+Conditional Constructs::) and the 'test' and '[' builtin commands (*note
+Bourne Shell Builtins::). The 'test' and '[' commands determine their
+behavior based on the number of arguments; see the descriptions of those
+commands for any other command-specific actions.
Expressions may be unary or binary, and are formed from the following
primaries. Unary expressions are often used to examine the status of a
@@ -6228,8 +6547,8 @@ parameter expansion syntax. A shell variable that is null or unset
evaluates to 0 when referenced by name without using the parameter
expansion syntax. The value of a variable is evaluated as an arithmetic
expression when it is referenced, or when a variable which has been
-given the INTEGER attribute using 'declare -i' is assigned a value. A
-null value evaluates to 0. A shell variable need not have its INTEGER
+given the 'integer' attribute using 'declare -i' is assigned a value. A
+null value evaluates to 0. A shell variable need not have its 'integer'
attribute turned on to be used in an expression.
Integer constants follow the C language definition, without suffixes
@@ -6254,7 +6573,7 @@ File: bash.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up: Ba
6.6 Aliases
===========
-ALIASES allow a string to be substituted for a word when it is used as
+"Aliases" allow a string to be substituted for a word when it is used as
the first word of a simple command. The shell maintains a list of
aliases that may be set and unset with the 'alias' and 'unalias' builtin
commands.
@@ -6269,15 +6588,15 @@ is tested for aliases, but a word that is identical to an alias being
expanded is not expanded a second time. This means that one may alias
'ls' to '"ls -F"', for instance, and Bash does not try to recursively
expand the replacement text. If the last character of the alias value
-is a BLANK, then the next command word following the alias is also
+is a 'blank', then the next command word following the alias is also
checked for alias expansion.
Aliases are created and listed with the 'alias' command, and removed
with the 'unalias' command.
There is no mechanism for using arguments in the replacement text, as
-in 'csh'. If arguments are needed, a shell function should be used
-(*note Shell Functions::).
+in 'csh'. If arguments are needed, use a shell function (*note Shell
+Functions::).
Aliases are not expanded when the shell is not interactive, unless
the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt
@@ -6363,6 +6682,10 @@ negative number, that number is interpreted as relative to one greater
than the maximum index of NAME, so negative indices count back from the
end of the array, and an index of -1 references the last element.
+ The '+=' operator will append to an array variable when assigning
+using the compound assignment syntax; see *note Shell Parameters::
+above.
+
Any element of an array may be referenced using '${NAME[SUBSCRIPT]}'.
The braces are required to avoid conflicts with the shell's filename
expansion operators. If the SUBSCRIPT is '@' or '*', the word expands
@@ -6402,7 +6725,11 @@ NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT.
Negative subscripts to indexed arrays are interpreted as described
above. Unsetting the last element of an array variable does not unset
the variable. 'unset NAME', where NAME is an array, removes the entire
-array. A subscript of '*' or '@' also removes the entire array.
+array. 'unset NAME[SUBSCRIPT]' behaves differently depending on the
+array type when given a subscript of '*' or '@'. When NAME is an
+associative array, it removes the element with key '*' or '@'. If NAME
+is an indexed array, 'unset' removes all of the elements, but does not
+remove the array itself.
When using a variable name with a subscript as an argument to a
command, such as with 'unset', without using the word expansion syntax
@@ -6477,10 +6804,14 @@ File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack
'popd'
popd [-n] [+N | -N]
+ Removes elements from the directory stack. The elements are
+ numbered from 0 starting at the first directory listed by 'dirs';
+ that is, 'popd' is equivalent to 'popd +0'.
+
When no arguments are given, 'popd' removes the top directory from
- the stack and performs a 'cd' to the new top directory. The
- elements are numbered from 0 starting at the first directory listed
- with 'dirs'; that is, 'popd' is equivalent to 'popd +0'.
+ the stack and changes to the new top directory.
+
+ Arguments, if supplied, have the following meanings:
'-n'
Suppresses the normal change of directory when removing
@@ -6488,17 +6819,32 @@ File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack
manipulated.
'+N'
Removes the Nth directory (counting from the left of the list
- printed by 'dirs'), starting with zero.
+ printed by 'dirs'), starting with zero, from the stack.
'-N'
Removes the Nth directory (counting from the right of the list
- printed by 'dirs'), starting with zero.
+ printed by 'dirs'), starting with zero, from the stack.
+
+ If the top element of the directory stack is modified, and the '-n'
+ option was not supplied, 'popd' uses the 'cd' builtin to change to
+ the directory at the top of the stack. If the 'cd' fails, 'popd'
+ returns a non-zero value.
+
+ Otherwise, 'popd' returns an unsuccessful status if an invalid
+ option is encountered, the directory stack is empty, or a
+ non-existent directory stack entry is specified.
+
+ If the 'popd' command is successful, Bash runs 'dirs' to show the
+ final contents of the directory stack, and the return status is 0.
'pushd'
pushd [-n] [+N | -N | DIR]
- Save the current directory on the top of the directory stack and
- then 'cd' to DIR. With no arguments, 'pushd' exchanges the top two
- directories and makes the new top the current directory.
+ Adds a directory to the top of the directory stack, or rotates the
+ stack, making the new top of the stack the current working
+ directory. With no arguments, 'pushd' exchanges the top two
+ elements of the directory stack.
+
+ Arguments, if supplied, have the following meanings:
'-n'
Suppresses the normal change of directory when rotating or
@@ -6513,9 +6859,20 @@ File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack
printed by 'dirs', starting with zero) to the top of the list
by rotating the stack.
'DIR'
- Makes DIR be the top of the stack, making it the new current
- directory as if it had been supplied as an argument to the
- 'cd' builtin.
+ Makes DIR be the top of the stack.
+
+ After the stack has been modified, if the '-n' option was not
+ supplied, 'pushd' uses the 'cd' builtin to change to the directory
+ at the top of the stack. If the 'cd' fails, 'pushd' returns a
+ non-zero value.
+
+ Otherwise, if no arguments are supplied, 'pushd' returns 0 unless
+ the directory stack is empty. When rotating the directory stack,
+ 'pushd' returns 0 unless the directory stack is empty or a
+ non-existent directory stack element is specified.
+
+ If the 'pushd' command is successful, Bash runs 'dirs' to show the
+ final contents of the directory stack.

File: bash.info, Node: Controlling the Prompt, Next: The Restricted Shell, Prev: The Directory Stack, Up: Bash Features
@@ -6523,9 +6880,9 @@ File: bash.info, Node: Controlling the Prompt, Next: The Restricted Shell, Pr
6.9 Controlling the Prompt
==========================
-Bash examines the value of the array variable 'PROMPT_COMMANDS' just
+Bash examines the value of the array variable 'PROMPT_COMMAND' just
before printing each primary prompt. If any elements in
-'PROMPT_COMMANDS' are set and non-null, Bash executes each value, in
+'PROMPT_COMMAND' are set and non-null, Bash executes each value, in
numeric order, just as if it had been typed on the command line.
In addition, the following table describes the special characters
@@ -6571,8 +6928,8 @@ which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4':
'\V'
The release of Bash, version + patchlevel (e.g., 2.00.0)
'\w'
- The current working directory, with '$HOME' abbreviated with a
- tilde (uses the '$PROMPT_DIRTRIM' variable).
+ The value of the 'PWD' shell variable ('$PWD'), with '$HOME'
+ abbreviated with a tilde (uses the '$PROMPT_DIRTRIM' variable).
'\W'
The basename of '$PWD', with '$HOME' abbreviated with a tilde.
'\!'
@@ -6638,7 +6995,8 @@ with the exception that the following are disallowed or not performed:
* Using the 'enable' builtin command to enable disabled shell
builtins.
* Specifying the '-p' option to the 'command' builtin.
- * Turning off restricted mode with 'set +r' or 'set +o restricted'.
+ * Turning off restricted mode with 'set +r' or 'shopt -u
+ restricted_shell'.
These restrictions are enforced after any startup files are read.
@@ -6649,11 +7007,11 @@ spawned to execute the script.
The restricted shell mode is only one component of a useful
restricted environment. It should be accompanied by setting 'PATH' to a
value that allows execution of only a few verified commands (commands
-that allow shell escapes are particularly vulnerable), leaving the user
-in a non-writable directory other than his home directory after login,
-not allowing the restricted shell to execute shell scripts, and cleaning
-the environment of variables that cause some commands to modify their
-behavior (e.g., 'VISUAL' or 'PAGER').
+that allow shell escapes are particularly vulnerable), changing the
+current directory to a non-writable directory other than '$HOME' after
+login, not allowing the restricted shell to execute shell scripts, and
+cleaning the environment of variables that cause some commands to modify
+their behavior (e.g., 'VISUAL' or 'PAGER').
Modern systems provide more secure ways to implement a restricted
environment, such as 'jails', 'zones', or 'containers'.
@@ -6696,203 +7054,219 @@ startup files.
7. Reserved words appearing in a context where reserved words are
recognized do not undergo alias expansion.
- 8. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
+ 8. Alias expansion is performed when initially parsing a command
+ substitution. The default mode generally defers it, when enabled,
+ until the command substitution is executed. This means that
+ command substitution will not expand aliases that are defined after
+ the command substitution is initially parsed (e.g., as part of a
+ function definition).
+
+ 9. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
and '!!' to '!' are enabled, and parameter expansion is performed
on the values of 'PS1' and 'PS2' regardless of the setting of the
'promptvars' option.
- 9. The POSIX startup files are executed ('$ENV') rather than the
+ 10. The POSIX startup files are executed ('$ENV') rather than the
normal Bash files.
- 10. Tilde expansion is only performed on assignments preceding a
+ 11. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
- 11. The default history file is '~/.sh_history' (this is the default
+ 12. The default history file is '~/.sh_history' (this is the default
value of '$HISTFILE').
- 12. Redirection operators do not perform filename expansion on the
+ 13. Redirection operators do not perform filename expansion on the
word in the redirection unless the shell is interactive.
- 13. Redirection operators do not perform word splitting on the word in
+ 14. Redirection operators do not perform word splitting on the word in
the redirection.
- 14. Function names must be valid shell 'name's. That is, they may not
+ 15. Function names must be valid shell 'name's. That is, they may not
contain characters other than letters, digits, and underscores, and
may not start with a digit. Declaring a function with an invalid
name causes a fatal syntax error in non-interactive shells.
- 15. Function names may not be the same as one of the POSIX special
+ 16. Function names may not be the same as one of the POSIX special
builtins.
- 16. POSIX special builtins are found before shell functions during
+ 17. POSIX special builtins are found before shell functions during
command lookup.
- 17. When printing shell function definitions (e.g., by 'type'), Bash
+ 18. When printing shell function definitions (e.g., by 'type'), Bash
does not print the 'function' keyword.
- 18. Literal tildes that appear as the first character in elements of
+ 19. Literal tildes that appear as the first character in elements of
the 'PATH' variable are not expanded as described above under *note
Tilde Expansion::.
- 19. The 'time' reserved word may be used by itself as a command. When
+ 20. The 'time' reserved word may be used by itself as a command. When
used in this way, it displays timing statistics for the shell and
its completed children. The 'TIMEFORMAT' variable controls the
format of the timing information.
- 20. When parsing and expanding a ${...} expansion that appears within
+ 21. When parsing and expanding a ${...} expansion that appears within
double quotes, single quotes are no longer special and cannot be
used to quote a closing brace or other special character, unless
the operator is one of those defined to perform pattern removal.
In this case, they do not have to appear as matched pairs.
- 21. The parser does not recognize 'time' as a reserved word if the
+ 22. The parser does not recognize 'time' as a reserved word if the
next token begins with a '-'.
- 22. The '!' character does not introduce history expansion within a
+ 23. The '!' character does not introduce history expansion within a
double-quoted string, even if the 'histexpand' option is enabled.
- 23. If a POSIX special builtin returns an error status, a
+ 24. If a POSIX special builtin returns an error status, a
non-interactive shell exits. The fatal errors are those listed in
the POSIX standard, and include things like passing incorrect
options, redirection errors, variable assignment errors for
assignments preceding the command name, and so on.
- 24. A non-interactive shell exits with an error status if a variable
+ 25. A non-interactive shell exits with an error status if a variable
assignment error occurs when no command name follows the assignment
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
- 25. A non-interactive shell exits with an error status if a variable
+ 26. A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a
- special builtin, but not with any other simple command.
+ special builtin, but not with any other simple command. For any
+ other simple command, the shell aborts execution of that command,
+ and execution continues at the top level ("the shell shall not
+ perform any further processing of the command in which the error
+ occurred").
- 26. A non-interactive shell exits with an error status if the
+ 27. A non-interactive shell exits with an error status if the
iteration variable in a 'for' statement or the selection variable
in a 'select' statement is a readonly variable.
- 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not
+ 28. Non-interactive shells exit if FILENAME in '.' FILENAME is not
found.
- 28. Non-interactive shells exit if a syntax error in an arithmetic
+ 29. Non-interactive shells exit if a syntax error in an arithmetic
expansion results in an invalid expression.
- 29. Non-interactive shells exit if a parameter expansion error occurs.
+ 30. Non-interactive shells exit if a parameter expansion error occurs.
- 30. Non-interactive shells exit if there is a syntax error in a script
+ 31. Non-interactive shells exit if there is a syntax error in a script
read with the '.' or 'source' builtins, or in a string processed by
the 'eval' builtin.
- 31. While variable indirection is available, it may not be applied to
+ 32. While variable indirection is available, it may not be applied to
the '#' and '?' special parameters.
- 32. When expanding the '*' special parameter in a pattern context
- where the expansion is double-quoted does not treat the '$*' as if
- it were double-quoted.
+ 33. Expanding the '*' special parameter in a pattern context where the
+ expansion is double-quoted does not treat the '$*' as if it were
+ double-quoted.
- 33. Assignment statements preceding POSIX special builtins persist in
+ 34. Assignment statements preceding POSIX special builtins persist in
the shell environment after the builtin completes.
- 34. The 'command' builtin does not prevent builtins that take
+ 35. The 'command' builtin does not prevent builtins that take
assignment statements as arguments from expanding them as
assignment statements; when not in POSIX mode, assignment builtins
lose their assignment statement expansion properties when preceded
by 'command'.
- 35. The 'bg' builtin uses the required format to describe each job
+ 36. The 'bg' builtin uses the required format to describe each job
placed in the background, which does not include an indication of
whether the job is the current or previous job.
- 36. The output of 'kill -l' prints all the signal names on a single
+ 37. The output of 'kill -l' prints all the signal names on a single
line, separated by spaces, without the 'SIG' prefix.
- 37. The 'kill' builtin does not accept signal names with a 'SIG'
+ 38. The 'kill' builtin does not accept signal names with a 'SIG'
prefix.
- 38. The 'export' and 'readonly' builtin commands display their output
+ 39. The 'export' and 'readonly' builtin commands display their output
in the format required by POSIX.
- 39. The 'trap' builtin displays signal names without the leading
+ 40. The 'trap' builtin displays signal names without the leading
'SIG'.
- 40. The 'trap' builtin doesn't check the first argument for a possible
+ 41. The 'trap' builtin doesn't check the first argument for a possible
signal specification and revert the signal handling to the original
disposition if it is, unless that argument consists solely of
digits and is a valid signal number. If users want to reset the
handler for a given signal to the original disposition, they should
use '-' as the first argument.
- 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL
+ 42. 'trap -p' displays signals whose dispositions are set to SIG_DFL
and those that were ignored when the shell started.
- 42. The '.' and 'source' builtins do not search the current directory
+ 43. The '.' and 'source' builtins do not search the current directory
for the filename argument if it is not found by searching 'PATH'.
- 43. Enabling POSIX mode has the effect of setting the
+ 44. Enabling POSIX mode has the effect of setting the
'inherit_errexit' option, so subshells spawned to execute command
substitutions inherit the value of the '-e' option from the parent
shell. When the 'inherit_errexit' option is not enabled, Bash
clears the '-e' option in such subshells.
- 44. Enabling POSIX mode has the effect of setting the 'shift_verbose'
+ 45. Enabling POSIX mode has the effect of setting the 'shift_verbose'
option, so numeric arguments to 'shift' that exceed the number of
positional parameters will result in an error message.
- 45. When the 'alias' builtin displays alias definitions, it does not
+ 46. When the 'alias' builtin displays alias definitions, it does not
display them with a leading 'alias ' unless the '-p' option is
supplied.
- 46. When the 'set' builtin is invoked without options, it does not
+ 47. When the 'set' builtin is invoked without options, it does not
display shell function names and definitions.
- 47. When the 'set' builtin is invoked without options, it displays
+ 48. When the 'set' builtin is invoked without options, it displays
variable values without quotes, unless they contain shell
metacharacters, even if the result contains nonprinting characters.
- 48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname
+ 49. When the 'cd' builtin is invoked in logical mode, and the pathname
constructed from '$PWD' and the directory name supplied as an
argument does not refer to an existing directory, 'cd' will fail
- instead of falling back to PHYSICAL mode.
+ instead of falling back to physical mode.
- 49. When the 'cd' builtin cannot change a directory because the length
+ 50. When the 'cd' builtin cannot change a directory because the length
of the pathname constructed from '$PWD' and the directory name
- supplied as an argument exceeds PATH_MAX when all symbolic links
+ supplied as an argument exceeds 'PATH_MAX' when all symbolic links
are expanded, 'cd' will fail instead of attempting to use only the
supplied directory name.
- 50. The 'pwd' builtin verifies that the value it prints is the same as
+ 51. The 'pwd' builtin verifies that the value it prints is the same as
the current directory, even if it is not asked to check the file
system with the '-P' option.
- 51. When listing the history, the 'fc' builtin does not include an
+ 52. When listing the history, the 'fc' builtin does not include an
indication of whether or not a history entry has been modified.
- 52. The default editor used by 'fc' is 'ed'.
+ 53. The default editor used by 'fc' is 'ed'.
- 53. The 'type' and 'command' builtins will not report a non-executable
+ 54. The 'type' and 'command' builtins will not report a non-executable
file as having been found, though the shell will attempt to execute
such a file if it is the only so-named file found in '$PATH'.
- 54. The 'vi' editing mode will invoke the 'vi' editor directly when
+ 55. The 'vi' editing mode will invoke the 'vi' editor directly when
the 'v' command is run, instead of checking '$VISUAL' and
'$EDITOR'.
- 55. When the 'xpg_echo' option is enabled, Bash does not attempt to
+ 56. When the 'xpg_echo' option is enabled, Bash does not attempt to
interpret any arguments to 'echo' as options. Each argument is
displayed, after escape characters are converted.
- 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
+ 57. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
and '-f' options.
- 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
+ 58. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
interrupt the 'wait' builtin and cause it to return immediately.
The trap command is run once for each child that exits.
- 58. The 'read' builtin may be interrupted by a signal for which a trap
+ 59. The 'read' builtin may be interrupted by a signal for which a trap
has been set. If Bash receives a trapped signal while executing
'read', the trap handler executes and 'read' returns an exit status
greater than 128.
- 59. Bash removes an exited background process's status from the list
+ 60. The 'printf' builtin uses 'double' (via 'strtod') to convert
+ arguments corresponding to floating point conversion specifiers,
+ instead of 'long double' if it's available. The 'L' length
+ modifier forces 'printf' to use 'long double' if it's available.
+
+ 61. Bash removes an exited background process's status from the list
of such statuses after the 'wait' builtin is used to obtain it.
There is other POSIX behavior that Bash does not implement by default
@@ -6915,7 +7289,7 @@ File: bash.info, Node: Shell Compatibility Mode, Prev: Bash POSIX Mode, Up: B
6.12 Shell Compatibility Mode
=============================
-Bash-4.0 introduced the concept of a 'shell compatibility level',
+Bash-4.0 introduced the concept of a "shell compatibility level",
specified as a set of options to the shopt builtin ('compat31',
'compat32', 'compat40', 'compat41', and so on). There is only one
current compatibility level - each option is mutually exclusive. The
@@ -6927,7 +7301,7 @@ be a temporary solution.
This section does not mention behavior that is standard for a
particular version (e.g., setting 'compat32' means that quoting the rhs
of the regexp matching operator quotes special regexp characters in the
-word, which is default behavior in bash-3.2 and above).
+word, which is default behavior in bash-3.2 and subsequent versions).
If a user enables, say, 'compat32', it may affect the behavior of
other compatibility levels up to and including the current compatibility
@@ -7004,8 +7378,8 @@ required for bash-5.1 and later versions.
'compat43'
* the shell does not print a warning message if an attempt is
made to use a quoted compound assignment as an argument to
- declare (declare -a foo='(1 2)'). Later versions warn that
- this usage is deprecated
+ declare (e.g., declare -a foo='(1 2)'). Later versions warn
+ that this usage is deprecated
* word expansion errors are considered non-fatal errors that
cause the current command to fail, even in posix mode (the
default behavior is to make them fatal errors that cause the
@@ -7040,6 +7414,38 @@ required for bash-5.1 and later versions.
when producing output that can be reused as input. Bash-5.1
suppresses that message when the '-l' option is supplied.
+'compat51 (set using BASH_COMPAT)'
+ * The 'unset' builtin will unset the array 'a' given an argument
+ like 'a[@]'. Bash-5.2 will unset an element with key '@'
+ (associative arrays) or remove all the elements without
+ unsetting the array (indexed arrays)
+ * arithmetic commands ( ((...)) ) and the expressions in an
+ arithmetic for statement can be expanded more than once
+ * expressions used as arguments to arithmetic operators in the
+ '[[' conditional command can be expanded more than once
+ * the expressions in substring parameter brace expansion can be
+ expanded more than once
+ * the expressions in the $(( ... )) word expansion can be
+ expanded more than once
+ * arithmetic expressions used as indexed array subscripts can be
+ expanded more than once
+ * 'test -v', when given an argument of 'A[@]', where A is an
+ existing associative array, will return true if the array has
+ any set elements. Bash-5.2 will look for and report on a key
+ named '@'
+ * the ${PARAMETER[:]=VALUE} word expansion will return VALUE,
+ before any variable-specific transformations have been
+ performed (e.g., converting to lowercase). Bash-5.2 will
+ return the final value assigned to the variable.
+ * Parsing command substitutions will behave as if extended glob
+ (*note The Shopt Builtin::) is enabled, so that parsing a
+ command substitution containing an extglob pattern (say, as
+ part of a shell function) will not fail. This assumes the
+ intent is to enable extglob before the command is executed and
+ word expansions are performed. It will fail at word expansion
+ time if extglob hasn't been enabled by the time the command is
+ executed.
+

File: bash.info, Node: Job Control, Next: Command Line Editing, Prev: Bash Features, Up: Top
@@ -7093,19 +7499,19 @@ when 'stty tostop' is in effect) the terminal are sent a 'SIGTTIN'
caught, suspends the process.
If the operating system on which Bash is running supports job
-control, Bash contains facilities to use it. Typing the SUSPEND
+control, Bash contains facilities to use it. Typing the "suspend"
character (typically '^Z', Control-Z) while a process is running causes
that process to be stopped and returns control to Bash. Typing the
-DELAYED SUSPEND character (typically '^Y', Control-Y) causes the process
-to be stopped when it attempts to read input from the terminal, and
-control to be returned to Bash. The user then manipulates the state of
-this job, using the 'bg' command to continue it in the background, the
-'fg' command to continue it in the foreground, or the 'kill' command to
-kill it. A '^Z' takes effect immediately, and has the additional side
-effect of causing pending output and typeahead to be discarded.
+"delayed suspend" character (typically '^Y', Control-Y) causes the
+process to be stopped when it attempts to read input from the terminal,
+and control to be returned to Bash. The user then manipulates the state
+of this job, using the 'bg' command to continue it in the background,
+the 'fg' command to continue it in the foreground, or the 'kill' command
+to kill it. A '^Z' takes effect immediately, and has the additional
+side effect of causing pending output and typeahead to be discarded.
There are a number of ways to refer to a job in the shell. The
-character '%' introduces a job specification (JOBSPEC).
+character '%' introduces a job specification ("jobspec").
Job number 'n' may be referred to as '%n'. The symbols '%%' and '%+'
refer to the shell's notion of the current job, which is the last job
@@ -7234,7 +7640,7 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre
for all running background jobs and the last-executed process
substitution, if its process id is the same as $!, and the return
status is zero. If the '-n' option is supplied, 'wait' waits for a
- single job from the list of PIDS or JOBSPECS or, if no arguments
+ single job from the list of PIDs or JOBSPECs or, if no arguments
are supplied, any job, to complete and returns its exit status. If
none of the supplied arguments is a child of the shell, or if no
arguments are supplied and the shell has no unwaited-for children,
@@ -7245,9 +7651,12 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre
assignment. This is useful only when the '-n' option is supplied.
Supplying the '-f' option, when job control is enabled, forces
'wait' to wait for each PID or JOBSPEC to terminate before
- returning its status, intead of returning when it changes status.
+ returning its status, instead of returning when it changes status.
If neither JOBSPEC nor PID specifies an active child process of the
- shell, the return status is 127.
+ shell, the return status is 127. If 'wait' is interrupted by a
+ signal, the return status will be greater than 128, as described
+ above (*note Signals::). Otherwise, the return status is the exit
+ status of the last process or job waited for.
'disown'
disown [-ar] [-h] [JOBSPEC ... | PID ... ]
@@ -7265,8 +7674,11 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre
suspend [-f]
Suspend the execution of this shell until it receives a 'SIGCONT'
- signal. A login shell cannot be suspended; the '-f' option can be
- used to override this and force the suspension.
+ signal. A login shell, or a shell without job control enabled,
+ cannot be suspended; the '-f' option can be used to override this
+ and force the suspension. The return status is 0 unless the shell
+ is a login shell or job control is not enabled and '-f' is not
+ supplied.
When job control is not active, the 'kill' and 'wait' builtins do not
accept JOBSPEC arguments. They must be supplied process IDs.
@@ -7427,9 +7839,9 @@ Printing characters
Undo the last editing command. You can undo all the way back to an
empty line.
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like 'C-d', rather than the
+(Depending on your configuration, the <Backspace> key might be set to
+delete the character to the left of the cursor and the <DEL> key set to
+delete the character underneath the cursor, like 'C-d', rather than the
character to the left of the cursor.)

@@ -7491,9 +7903,9 @@ available to be yanked back later, when you are typing another line.
as those used by 'M-f'.
'M-<DEL>'
- Kill from the cursor the start of the current word, or, if between
- words, to the start of the previous word. Word boundaries are the
- same as those used by 'M-b'.
+ Kill from the cursor to the start of the current word, or, if
+ between words, to the start of the previous word. Word boundaries
+ are the same as those used by 'M-b'.
'C-w'
Kill from the cursor to the previous whitespace. This is different
@@ -7582,7 +7994,7 @@ File: bash.info, Node: Readline Init File, Next: Bindable Readline Commands,
Although the Readline library comes with a set of Emacs-like keybindings
installed by default, it is possible to use a different set of
keybindings. Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
+putting commands in an "inputrc" file, conventionally in their home
directory. The name of this file is taken from the value of the shell
variable 'INPUTRC'. If that variable is unset, the default is
'~/.inputrc'. If that file does not exist or cannot be read, the
@@ -7641,6 +8053,32 @@ Variable Settings
A great deal of run-time behavior is changeable with the following
variables.
+ 'active-region-start-color'
+ A string variable that controls the text color and background
+ when displaying the text in the active region (see the
+ description of 'enable-active-region' below). This string
+ must not take up any physical character positions on the
+ display, so it should consist only of terminal escape
+ sequences. It is output to the terminal before displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that puts the terminal in standout mode,
+ as obtained from the terminal's terminfo description. A
+ sample value might be '\e[01;33m'.
+
+ 'active-region-end-color'
+ A string variable that "undoes" the effects of
+ 'active-region-start-color' and restores "normal" terminal
+ display appearance after displaying text in the active region.
+ This string must not take up any physical character positions
+ on the display, so it should consist only of terminal escape
+ sequences. It is output to the terminal after displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that restores the terminal from standout
+ mode, as obtained from the terminal's terminfo description. A
+ sample value might be '\e[0m'.
+
'bell-style'
Controls what happens when Readline wants to ring the terminal
bell. If set to 'none', Readline never rings the bell. If
@@ -7662,7 +8100,10 @@ Variable Settings
If set to 'on', when listing completions, Readline displays
the common prefix of the set of possible completions using a
different color. The color definitions are taken from the
- value of the 'LS_COLORS' environment variable. The default is
+ value of the 'LS_COLORS' environment variable. If there is a
+ color definition in 'LS_COLORS' for the custom suffix
+ 'readline-colored-completion-prefix', Readline uses this color
+ for the common prefix instead of its default. The default is
'off'.
'colored-stats'
@@ -7708,8 +8149,9 @@ Variable Settings
than or equal to this value, Readline will ask whether or not
the user wishes to view them; otherwise, they are simply
listed. This variable must be set to an integer value greater
- than or equal to 0. A negative value means Readline should
- never ask. The default limit is '100'.
+ than or equal to zero. A zero value means Readline should
+ never ask; negative values are treated as zero. The default
+ limit is '100'.
'convert-meta'
If set to 'on', Readline will convert characters with the
@@ -7717,7 +8159,9 @@ Variable Settings
eighth bit and prefixing an <ESC> character, converting them
to a meta-prefixed key sequence. The default value is 'on',
but will be set to 'off' if the locale is one that contains
- eight-bit characters.
+ eight-bit characters. This variable is dependent on the
+ 'LC_CTYPE' locale category, and may change if the locale is
+ changed.
'disable-completion'
If set to 'On', Readline will inhibit word completion.
@@ -7726,7 +8170,7 @@ Variable Settings
'echo-control-characters'
When set to 'on', on operating systems that indicate they
- support it, readline echoes a character corresponding to a
+ support it, Readline echoes a character corresponding to a
signal generated from the keyboard. The default is 'on'.
'editing-mode'
@@ -7745,13 +8189,27 @@ Variable Settings
non-printing characters, which can be used to embed a terminal
control sequence into the mode string. The default is '@'.
+ 'enable-active-region'
+ The "point" is the current cursor position, and "mark" refers
+ to a saved cursor position (*note Commands For Moving::). The
+ text between the point and mark is referred to as the
+ "region". When this variable is set to 'On', Readline allows
+ certain commands to designate the region as "active". When
+ the region is active, Readline highlights the text in the
+ region using the value of the 'active-region-start-color',
+ which defaults to the string that enables the terminal's
+ standout mode. The active region shows the text inserted by
+ bracketed-paste and any matching text found by incremental and
+ non-incremental history searches. The default is 'On'.
+
'enable-bracketed-paste'
- When set to 'On', Readline will configure the terminal in a
- way that will enable it to insert each paste into the editing
- buffer as a single string of characters, instead of treating
- each character as if it had been read from the keyboard. This
- can prevent pasted characters from being interpreted as
- editing commands. The default is 'On'.
+ When set to 'On', Readline configures the terminal to insert
+ each paste into the editing buffer as a single string of
+ characters, instead of treating each character as if it had
+ been read from the keyboard. This is called putting the
+ terminal into "bracketed paste mode"; it prevents Readline
+ from executing any editing commands bound to key sequences
+ appearing in the pasted text. The default is 'On'.
'enable-keypad'
When set to 'on', Readline will try to enable the application
@@ -7798,7 +8256,9 @@ Variable Settings
regardless of what the terminal claims it can support. The
default value is 'off', but Readline will set it to 'on' if
the locale contains eight-bit characters. The name
- 'meta-flag' is a synonym for this variable.
+ 'meta-flag' is a synonym for this variable. This variable is
+ dependent on the 'LC_CTYPE' locale category, and may change if
+ the locale is changed.
'isearch-terminators'
The string of characters that should terminate an incremental
@@ -7863,7 +8323,9 @@ Variable Settings
If set to 'on', Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
sequence. The default is 'off', but Readline will set it to
- 'on' if the locale contains eight-bit characters.
+ 'on' if the locale contains eight-bit characters. This
+ variable is dependent on the 'LC_CTYPE' locale category, and
+ may change if the locale is changed.
'page-completions'
If set to 'on', Readline uses an internal 'more'-like pager to
@@ -7879,7 +8341,8 @@ Variable Settings
If set to 'on', Readline will undo all changes to history
lines before returning when 'accept-line' is executed. By
default, history lines may be modified and retain individual
- undo lists across calls to 'readline'. The default is 'off'.
+ undo lists across calls to 'readline()'. The default is
+ 'off'.
'show-all-if-ambiguous'
This alters the default behavior of the completion functions.
@@ -7906,7 +8369,7 @@ Variable Settings
If set to 'on', this alters the default completion behavior
when inserting a single match into the line. It's only active
when performing completion in the middle of a word. If
- enabled, readline does not insert characters from the
+ enabled, Readline does not insert characters from the
completion that match characters after point in the word being
completed, so portions of the word following the cursor are
not duplicated. For instance, if this is enabled, attempting
@@ -7956,11 +8419,11 @@ Key Bindings
part of the key name. The name of the key can be expressed in
different ways, depending on what you find most comfortable.
- In addition to command names, readline allows keys to be bound to a
+ In addition to command names, Readline allows keys to be bound to a
string that is inserted when the key is pressed (a MACRO).
The 'bind -p' command displays Readline function names and bindings
- in a format that can put directly into an initialization file.
+ in a format that can be put directly into an initialization file.
*Note Bash Builtins::.
KEYNAME: FUNCTION-NAME or MACRO
@@ -8438,6 +8901,11 @@ File: bash.info, Node: Commands For History, Next: Commands For Text, Prev: C
supplied, specifies the history entry to use instead of the current
line.
+'fetch-history ()'
+ With a numeric argument, fetch that entry from the history list and
+ make it the current line. Without an argument, move back to the
+ first entry in the history list.
+

File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
@@ -8754,7 +9222,7 @@ File: bash.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: C
characters in the macro appear as if typed at the keyboard.
'print-last-kbd-macro ()'
- Print the last keboard macro defined in a format suitable for the
+ Print the last keyboard macro defined in a format suitable for the
INPUTRC file.

@@ -8801,12 +9269,12 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin
'character-search (C-])'
A character is read and point is moved to the next occurrence of
- that character. A negative count searches for previous
+ that character. A negative argument searches for previous
occurrences.
'character-search-backward (M-C-])'
A character is read and point is moved to the previous occurrence
- of that character. A negative count searches for subsequent
+ of that character. A negative argument searches for subsequent
occurrences.
'skip-csi-sequence ()'
@@ -8814,7 +9282,7 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin
those defined for keys like Home and End. Such sequences begin
with a Control Sequence Indicator (CSI), usually ESC-[. If this
sequence is bound to "\e[", keys producing such sequences will have
- no effect unless explicitly bound to a readline command, instead of
+ no effect unless explicitly bound to a Readline command, instead of
inserting stray characters into the editing buffer. This is
unbound by default, but usually bound to ESC-[.
@@ -8849,6 +9317,12 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin
is formatted in such a way that it can be made part of an INPUTRC
file. This command is unbound by default.
+'spell-correct-word (C-x s)'
+ Perform spelling correction on the current word, treating it as a
+ directory or filename, in the same way as the 'cdspell' shell
+ option. Word boundaries are the same as those used by
+ 'shell-forward-word'.
+
'glob-complete-word (M-g)'
The word before point is treated as a pattern for pathname
expansion, with an asterisk implicitly appended. This pattern is
@@ -9249,7 +9723,8 @@ happening.
'-C COMMAND'
COMMAND is executed in a subshell environment, and its output
- is used as the possible completions.
+ is used as the possible completions. Arguments are passed as
+ with the '-F' option.
'-F FUNCTION'
The shell function FUNCTION is executed in the current shell
@@ -9411,7 +9886,7 @@ CDPATH: Readline can't tell those completions are directories). The '-o
nospace' option tells Readline to not append a space character to the
directory name, in case we want to append to it. The '-o bashdefault'
option brings in the rest of the "Bash default" completions - possible
-completion that Bash adds to the default Readline set. These include
+completions that Bash adds to the default Readline set. These include
things like command name completion, variable completion for words
beginning with '$' or '${', completions containing pathname expansion
patterns (*note Filename Expansion::), and so on.
@@ -9578,9 +10053,9 @@ history file.
-d' command.
'-d START-END'
- Delete the history entries between positions START and END,
- inclusive. Positive and negative values for START and END are
- interpreted as described above.
+ Delete the range of history entries between positions START
+ and END, inclusive. Positive and negative values for START
+ and END are interpreted as described above.
'-a'
Append the new history lines to the history file. These are
@@ -9609,9 +10084,14 @@ history file.
The ARGs are added to the end of the history list as a single
entry.
- When any of the '-w', '-r', '-a', or '-n' options is used, if
- FILENAME is given, then it is used as the history file. If not,
- then the value of the 'HISTFILE' variable is used.
+ If a FILENAME argument is supplied when any of the '-w', '-r',
+ '-a', or '-n' options is used, Bash uses FILENAME as the history
+ file. If not, then the value of the 'HISTFILE' variable is used.
+
+ The return value is 0 unless an invalid option is encountered, an
+ error occurs while reading or writing the history file, an invalid
+ OFFSET or range is supplied as an argument to '-d', or the history
+ expansion supplied as an argument to '-p' fails.

File: bash.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively
@@ -9828,7 +10308,7 @@ or edit, the word or words selected from the history event.
'&' appears in NEW, it is replaced by OLD. A single backslash will
quote the '&'. If OLD is null, it is set to the last OLD
substituted, or, if no previous history substitutions took place,
- the last STRING in a !?STRING'[?]' search. If NEW is is null, each
+ the last STRING in a !?STRING'[?]' search. If NEW is null, each
matching OLD is deleted. The final delimiter is optional if it is
the last character on the input line.
@@ -9897,20 +10377,28 @@ These are installation instructions for Bash.
3. Optionally, type 'make tests' to run the Bash test suite.
4. Type 'make install' to install 'bash' and 'bashbug'. This will
- also install the manual pages and Info file.
+ also install the manual pages and Info file, message translation
+ files, some supplemental documentation, a number of example
+ loadable builtin commands, and a set of header files for developing
+ loadable builtins. You may need additional privileges to install
+ 'bash' to your desired destination, so 'sudo make install' might be
+ required. More information about controlling the locations where
+ 'bash' and other files are installed is below (*note Installation
+ Names::).
The 'configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a 'Makefile' in each directory of the package
-(the top directory, the 'builtins', 'doc', and 'support' directories,
-each directory under 'lib', and several others). It also creates a
-'config.h' file containing system-dependent definitions. Finally, it
-creates a shell script named 'config.status' that you can run in the
-future to recreate the current configuration, a file 'config.cache' that
-saves the results of its tests to speed up reconfiguring, and a file
-'config.log' containing compiler output (useful mainly for debugging
-'configure'). If at some point 'config.cache' contains results you
-don't want to keep, you may remove or edit it.
+(the top directory, the 'builtins', 'doc', 'po', and 'support'
+directories, each directory under 'lib', and several others). It also
+creates a 'config.h' file containing system-dependent definitions.
+Finally, it creates a shell script named 'config.status' that you can
+run in the future to recreate the current configuration, a file
+'config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file 'config.log' containing compiler output
+(useful mainly for debugging 'configure'). If at some point
+'config.cache' contains results you don't want to keep, you may remove
+or edit it.
To find out more about the options and arguments that the 'configure'
script understands, type
@@ -9941,7 +10429,7 @@ considered for the next release.
The file 'configure.ac' is used to create 'configure' by a program
called Autoconf. You only need 'configure.ac' if you want to change it
or regenerate 'configure' using a newer version of Autoconf. If you do
-this, make sure you are using Autoconf version 2.50 or newer.
+this, make sure you are using Autoconf version 2.69 or newer.
You can remove the program binaries and object files from the source
code directory by typing 'make clean'. To also remove the files that
@@ -9984,7 +10472,7 @@ need to supply the '--srcdir=PATH' argument to tell 'configure' where
the source files are. 'configure' automatically checks for the source
code in the directory that 'configure' is in and in '..'.
- If you have to use a 'make' that does not supports the 'VPATH'
+ If you have to use a 'make' that does not support the 'VPATH'
variable, you can compile Bash for one architecture at a time in the
source code directory. After you have installed Bash for one
architecture, use 'make distclean' before reconfiguring for another
@@ -10009,10 +10497,13 @@ File: bash.info, Node: Installation Names, Next: Specifying the System Type,
=======================
By default, 'make install' will install into '/usr/local/bin',
-'/usr/local/man', etc. You can specify an installation prefix other
-than '/usr/local' by giving 'configure' the option '--prefix=PATH', or
-by specifying a value for the 'DESTDIR' 'make' variable when running
-'make install'.
+'/usr/local/man', etc.; that is, the "installation prefix" defaults to
+'/usr/local'. You can specify an installation prefix other than
+'/usr/local' by giving 'configure' the option '--prefix=PATH', or by
+specifying a value for the 'prefix' 'make' variable when running 'make
+install' (e.g., 'make install prefix=PATH'). The 'prefix' variable
+provides a default for 'exec_prefix' and other variables used when
+installing bash.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
@@ -10020,6 +10511,30 @@ give 'configure' the option '--exec-prefix=PATH', 'make install' will
use PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
+ If you would like to change the installation locations for a single
+run, you can specify these variables as arguments to 'make': 'make
+install exec_prefix=/' will install 'bash' and 'bashbug' into '/bin'
+instead of the default '/usr/local/bin'.
+
+ If you want to see the files bash will install and where it will
+install them without changing anything on your system, specify the
+variable 'DESTDIR' as an argument to 'make'. Its value should be the
+absolute directory path you'd like to use as the root of your sample
+installation tree. For example,
+
+ mkdir /fs1/bash-install
+ make install DESTDIR=/fs1/bash-install
+
+will install 'bash' into '/fs1/bash-install/usr/local/bin/bash', the
+documentation into directories within
+'/fs1/bash-install/usr/local/share', the example loadable builtins into
+'/fs1/bash-install/usr/local/lib/bash', and so on. You can use the
+usual 'exec_prefix' and 'prefix' variables to alter the directory paths
+beneath the value of 'DESTDIR'.
+
+ The GNU Makefile standards provide a more complete description of
+these variables and their effects.
+

File: bash.info, Node: Specifying the System Type, Next: Sharing Defaults, Prev: Installation Names, Up: Installing Bash
@@ -10027,7 +10542,7 @@ File: bash.info, Node: Specifying the System Type, Next: Sharing Defaults, Pr
===============================
There may be some features 'configure' can not figure out automatically,
-but need to determine by the type of host Bash will run on. Usually
+but needs to determine by the type of host Bash will run on. Usually
'configure' can figure that out, but if it prints a message saying it
can not guess the host type, give it the '--host=TYPE' option. 'TYPE'
can either be a short name for the system type, such as 'sun4', or a
@@ -10135,16 +10650,20 @@ the Bash 'configure' recognizes.
subdirectories of that directory (include files in PREFIX/'include'
and the library in PREFIX/'lib').
-'--with-purify'
- Define this to use the Purify memory allocation checker from
- Rational Software.
+'--with-libintl-prefix[=PREFIX]'
+ Define this to make Bash link with a locally-installed version of
+ the libintl library instead of the version in 'lib/intl'.
+
+'--with-libiconv-prefix[=PREFIX]'
+ Define this to make Bash look for libiconv in PREFIX instead of the
+ standard system locations. There is no version included with Bash.
'--enable-minimal-config'
This produces a shell with minimal features, close to the
historical Bourne shell.
- There are several '--enable-' options that alter how Bash is compiled
-and linked, rather than changing run-time features.
+ There are several '--enable-' options that alter how Bash is
+compiled, linked, and installed, rather than changing run-time features.
'--enable-largefile'
Enable support for large files
@@ -10157,6 +10676,10 @@ and linked, rather than changing run-time features.
This builds a Bash binary that produces profiling information to be
processed by 'gprof' each time it is executed.
+'--enable-separate-helpfiles'
+ Use external files for the documentation displayed by the 'help'
+ builtin instead of storing the text internally.
+
'--enable-static-link'
This causes Bash to be linked statically, if 'gcc' is being used.
This could be used to build a version to use as root's shell.
@@ -10165,14 +10688,21 @@ and linked, rather than changing run-time features.
following options, but it is processed first, so individual options may
be enabled using 'enable-FEATURE'.
- All of the following options except for 'disabled-builtins',
-'direxpand-default', and 'xpg-echo-default' are enabled by default,
-unless the operating system does not provide the necessary support.
+ All of the following options except for 'alt-array-implementation',
+'disabled-builtins', 'direxpand-default', 'strict-posix-default', and
+'xpg-echo-default' are enabled by default, unless the operating system
+does not provide the necessary support.
'--enable-alias'
Allow alias expansion and include the 'alias' and 'unalias'
builtins (*note Aliases::).
+'--enable-alt-array-implementation'
+ This builds bash using an alternate implementation of arrays (*note
+ Arrays::) that provides faster access at the expense of using more
+ memory (sometimes many times more, depending on how sparse an array
+ is).
+
'--enable-arith-for-command'
Include support for the alternate form of the 'for' command that
behaves like the C language 'for' statement (*note Looping
@@ -10192,7 +10722,7 @@ unless the operating system does not provide the necessary support.
'--enable-casemod-attributes'
Include support for case-modifying attributes in the 'declare'
- builtin and assignment statements. Variables with the UPPERCASE
+ builtin and assignment statements. Variables with the 'uppercase'
attribute, for example, will have their values converted to
uppercase upon assignment.
@@ -10251,7 +10781,7 @@ unless the operating system does not provide the necessary support.
described above under *note Pattern Matching::.
'--enable-extended-glob-default'
- Set the default value of the EXTGLOB shell option described above
+ Set the default value of the 'extglob' shell option described above
under *note The Shopt Builtin:: to be enabled.
'--enable-function-import'
@@ -10260,10 +10790,10 @@ unless the operating system does not provide the necessary support.
enabled by default.
'--enable-glob-asciirange-default'
- Set the default value of the GLOBASCIIRANGES shell option described
- above under *note The Shopt Builtin:: to be enabled. This controls
- the behavior of character ranges when used in pattern matching
- bracket expressions.
+ Set the default value of the 'globasciiranges' shell option
+ described above under *note The Shopt Builtin:: to be enabled.
+ This controls the behavior of character ranges when used in pattern
+ matching bracket expressions.
'--enable-help-builtin'
Include the 'help' builtin, which displays help on shell builtins
@@ -10314,10 +10844,6 @@ unless the operating system does not provide the necessary support.
Include the 'select' compound command, which allows the generation
of simple menus (*note Conditional Constructs::).
-'--enable-separate-helpfiles'
- Use external files for the documentation displayed by the 'help'
- builtin instead of storing the text internally.
-
'--enable-single-help-strings'
Store the text displayed by the 'help' builtin as a single string
for each help topic. This aids in translating the text to
@@ -10327,6 +10853,10 @@ unless the operating system does not provide the necessary support.
'--enable-strict-posix-default'
Make Bash POSIX-conformant by default (*note Bash POSIX Mode::).
+'--enable-translatable-strings'
+ Enable support for '$"STRING"' translatable strings (*note Locale
+ Translation::).
+
'--enable-usg-echo-default'
A synonym for '--enable-xpg-echo-default'.
@@ -10353,7 +10883,8 @@ Appendix A Reporting Bugs
Please report all bugs you find in Bash. But first, you should make
sure that it really is a bug, and that it appears in the latest version
of Bash. The latest version of Bash is always available for FTP from
-<ftp://ftp.gnu.org/pub/gnu/bash/>.
+<ftp://ftp.gnu.org/pub/gnu/bash/> and from
+<http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz>.
Once you have determined that a bug actually exists, use the
'bashbug' command to submit a bug report. If you have a fix, you are
@@ -10479,15 +11010,15 @@ the baseline reference.
substring of 'var''s value of length LENGTH, beginning at OFFSET,
is present (*note Shell Parameter Expansion::).
- * The expansion '${var/[/]'PATTERN'[/'REPLACEMENT']}', which matches
- PATTERN and replaces it with REPLACEMENT in the value of 'var', is
+ * The expansion '${VAR/[/]'PATTERN'[/'REPLACEMENT']}', which matches
+ PATTERN and replaces it with REPLACEMENT in the value of VAR, is
available (*note Shell Parameter Expansion::).
* The expansion '${!PREFIX*}' expansion, which expands to the names
of all shell variables whose names begin with PREFIX, is available
(*note Shell Parameter Expansion::).
- * Bash has INDIRECT variable expansion using '${!word}' (*note Shell
+ * Bash has indirect variable expansion using '${!word}' (*note Shell
Parameter Expansion::).
* Bash can expand positional parameters beyond '$9' using '${NUM}'.
@@ -10513,8 +11044,8 @@ the baseline reference.
shell uses only '!'.
* Bash implements the full set of POSIX filename expansion operators,
- including CHARACTER CLASSES, EQUIVALENCE CLASSES, and COLLATING
- SYMBOLS (*note Filename Expansion::).
+ including character classes, equivalence classes, and collating
+ symbols (*note Filename Expansion::).
* Bash implements extended pattern matching features when the
'extglob' shell option is enabled (*note Pattern Matching::).
@@ -10631,7 +11162,7 @@ the baseline reference.
* Bash includes the 'caller' builtin, which displays the context of
any active subroutine call (a shell function or a script executed
- with the '.' or 'source' builtins). This supports the bash
+ with the '.' or 'source' builtins). This supports the Bash
debugger.
* The 'trap' builtin (*note Bourne Shell Builtins::) allows a 'DEBUG'
@@ -10653,7 +11184,7 @@ the baseline reference.
The 'trap' builtin (*note Bourne Shell Builtins::) allows a
'RETURN' pseudo-signal specification, similar to 'EXIT' and
- 'DEBUG'. Commands specified with an 'RETURN' trap are executed
+ 'DEBUG'. Commands specified with a 'RETURN' trap are executed
before execution resumes after a shell function or a shell script
executed with '.' or 'source' returns. The 'RETURN' trap is not
inherited by shell functions unless the function has been given the
@@ -11252,94 +11783,94 @@ D.1 Index of Shell Builtin Commands
* :: Bourne Shell Builtins.
(line 11)
* [: Bourne Shell Builtins.
- (line 270)
+ (line 275)
* alias: Bash Builtins. (line 11)
* bg: Job Control Builtins.
(line 7)
* bind: Bash Builtins. (line 21)
* break: Bourne Shell Builtins.
- (line 36)
-* builtin: Bash Builtins. (line 104)
-* caller: Bash Builtins. (line 113)
+ (line 37)
+* builtin: Bash Builtins. (line 108)
+* caller: Bash Builtins. (line 117)
* cd: Bourne Shell Builtins.
- (line 44)
-* command: Bash Builtins. (line 130)
+ (line 45)
+* command: Bash Builtins. (line 134)
* compgen: Programmable Completion Builtins.
(line 12)
* complete: Programmable Completion Builtins.
(line 30)
* compopt: Programmable Completion Builtins.
- (line 237)
+ (line 238)
* continue: Bourne Shell Builtins.
- (line 85)
-* declare: Bash Builtins. (line 150)
+ (line 90)
+* declare: Bash Builtins. (line 154)
* dirs: Directory Stack Builtins.
(line 7)
* disown: Job Control Builtins.
- (line 101)
-* echo: Bash Builtins. (line 253)
-* enable: Bash Builtins. (line 302)
+ (line 104)
+* echo: Bash Builtins. (line 257)
+* enable: Bash Builtins. (line 306)
* eval: Bourne Shell Builtins.
- (line 94)
+ (line 99)
* exec: Bourne Shell Builtins.
- (line 102)
+ (line 107)
* exit: Bourne Shell Builtins.
- (line 120)
+ (line 125)
* export: Bourne Shell Builtins.
- (line 127)
+ (line 132)
* fc: Bash History Builtins.
(line 10)
* fg: Job Control Builtins.
(line 17)
* getopts: Bourne Shell Builtins.
- (line 143)
+ (line 148)
* hash: Bourne Shell Builtins.
- (line 187)
-* help: Bash Builtins. (line 331)
+ (line 192)
+* help: Bash Builtins. (line 342)
* history: Bash History Builtins.
(line 46)
* jobs: Job Control Builtins.
(line 27)
* kill: Job Control Builtins.
(line 58)
-* let: Bash Builtins. (line 350)
-* local: Bash Builtins. (line 358)
-* logout: Bash Builtins. (line 374)
-* mapfile: Bash Builtins. (line 379)
+* let: Bash Builtins. (line 361)
+* local: Bash Builtins. (line 369)
+* logout: Bash Builtins. (line 385)
+* mapfile: Bash Builtins. (line 390)
* popd: Directory Stack Builtins.
(line 35)
-* printf: Bash Builtins. (line 425)
+* printf: Bash Builtins. (line 436)
* pushd: Directory Stack Builtins.
- (line 53)
+ (line 69)
* pwd: Bourne Shell Builtins.
- (line 207)
-* read: Bash Builtins. (line 474)
-* readarray: Bash Builtins. (line 570)
+ (line 212)
+* read: Bash Builtins. (line 488)
+* readarray: Bash Builtins. (line 585)
* readonly: Bourne Shell Builtins.
- (line 217)
+ (line 222)
* return: Bourne Shell Builtins.
- (line 236)
+ (line 241)
* set: The Set Builtin. (line 11)
* shift: Bourne Shell Builtins.
- (line 257)
+ (line 262)
* shopt: The Shopt Builtin. (line 9)
-* source: Bash Builtins. (line 579)
+* source: Bash Builtins. (line 594)
* suspend: Job Control Builtins.
- (line 113)
+ (line 116)
* test: Bourne Shell Builtins.
- (line 270)
+ (line 275)
* times: Bourne Shell Builtins.
- (line 349)
+ (line 360)
* trap: Bourne Shell Builtins.
- (line 355)
-* type: Bash Builtins. (line 584)
-* typeset: Bash Builtins. (line 616)
-* ulimit: Bash Builtins. (line 622)
+ (line 366)
+* type: Bash Builtins. (line 599)
+* typeset: Bash Builtins. (line 631)
+* ulimit: Bash Builtins. (line 637)
* umask: Bourne Shell Builtins.
- (line 404)
-* unalias: Bash Builtins. (line 728)
+ (line 415)
+* unalias: Bash Builtins. (line 743)
* unset: Bourne Shell Builtins.
- (line 422)
+ (line 433)
* wait: Job Control Builtins.
(line 76)
@@ -11354,9 +11885,9 @@ D.2 Index of Shell Reserved Words
* !: Pipelines. (line 9)
* [[: Conditional Constructs.
- (line 125)
+ (line 126)
* ]]: Conditional Constructs.
- (line 125)
+ (line 126)
* {: Command Grouping. (line 21)
* }: Command Grouping. (line 21)
* case: Conditional Constructs.
@@ -11378,7 +11909,7 @@ D.2 Index of Shell Reserved Words
* in: Conditional Constructs.
(line 28)
* select: Conditional Constructs.
- (line 83)
+ (line 84)
* then: Conditional Constructs.
(line 7)
* time: Pipelines. (line 9)
@@ -11394,24 +11925,28 @@ D.3 Parameter and Variable Index
* Menu:
-* !: Special Parameters. (line 56)
+* !: Special Parameters. (line 55)
* #: Special Parameters. (line 39)
* $: Special Parameters. (line 51)
-* $!: Special Parameters. (line 57)
+* $!: Special Parameters. (line 56)
* $#: Special Parameters. (line 40)
* $$: Special Parameters. (line 52)
* $*: Special Parameters. (line 10)
* $-: Special Parameters. (line 47)
-* $0: Special Parameters. (line 62)
+* $0: Special Parameters. (line 61)
* $?: Special Parameters. (line 43)
* $@: Special Parameters. (line 23)
* $_: Bash Variables. (line 14)
* *: Special Parameters. (line 9)
* -: Special Parameters. (line 46)
-* 0: Special Parameters. (line 61)
+* 0: Special Parameters. (line 60)
* ?: Special Parameters. (line 42)
* @: Special Parameters. (line 22)
* _: Bash Variables. (line 13)
+* active-region-end-color: Readline Init File Syntax.
+ (line 51)
+* active-region-start-color: Readline Init File Syntax.
+ (line 38)
* auto_resume: Job Control Variables.
(line 6)
* BASH: Bash Variables. (line 23)
@@ -11435,31 +11970,31 @@ D.3 Parameter and Variable Index
* BASH_VERSION: Bash Variables. (line 181)
* BASH_XTRACEFD: Bash Variables. (line 184)
* bell-style: Readline Init File Syntax.
- (line 38)
+ (line 64)
* bind-tty-special-chars: Readline Init File Syntax.
- (line 45)
+ (line 71)
* blink-matching-paren: Readline Init File Syntax.
- (line 50)
+ (line 76)
* CDPATH: Bourne Shell Variables.
(line 9)
* CHILD_MAX: Bash Variables. (line 195)
* colored-completion-prefix: Readline Init File Syntax.
- (line 55)
+ (line 81)
* colored-stats: Readline Init File Syntax.
- (line 62)
+ (line 91)
* COLUMNS: Bash Variables. (line 202)
* comment-begin: Readline Init File Syntax.
- (line 68)
+ (line 97)
* completion-display-width: Readline Init File Syntax.
- (line 73)
+ (line 102)
* completion-ignore-case: Readline Init File Syntax.
- (line 80)
+ (line 109)
* completion-map-case: Readline Init File Syntax.
- (line 85)
+ (line 114)
* completion-prefix-display-length: Readline Init File Syntax.
- (line 91)
+ (line 120)
* completion-query-items: Readline Init File Syntax.
- (line 98)
+ (line 127)
* COMPREPLY: Bash Variables. (line 254)
* COMP_CWORD: Bash Variables. (line 208)
* COMP_KEY: Bash Variables. (line 237)
@@ -11469,29 +12004,31 @@ D.3 Parameter and Variable Index
* COMP_WORDBREAKS: Bash Variables. (line 241)
* COMP_WORDS: Bash Variables. (line 247)
* convert-meta: Readline Init File Syntax.
- (line 108)
+ (line 138)
* COPROC: Bash Variables. (line 260)
* DIRSTACK: Bash Variables. (line 264)
* disable-completion: Readline Init File Syntax.
- (line 116)
+ (line 148)
* echo-control-characters: Readline Init File Syntax.
- (line 121)
+ (line 153)
* editing-mode: Readline Init File Syntax.
- (line 126)
+ (line 158)
* EMACS: Bash Variables. (line 274)
* emacs-mode-string: Readline Init File Syntax.
- (line 132)
+ (line 164)
+* enable-active-region: Readline Init File Syntax.
+ (line 174)
* enable-bracketed-paste: Readline Init File Syntax.
- (line 142)
+ (line 187)
* enable-keypad: Readline Init File Syntax.
- (line 150)
+ (line 196)
* ENV: Bash Variables. (line 279)
* EPOCHREALTIME: Bash Variables. (line 284)
* EPOCHSECONDS: Bash Variables. (line 292)
* EUID: Bash Variables. (line 299)
* EXECIGNORE: Bash Variables. (line 303)
* expand-tilde: Readline Init File Syntax.
- (line 161)
+ (line 207)
* FCEDIT: Bash Variables. (line 316)
* FIGNORE: Bash Variables. (line 320)
* FUNCNAME: Bash Variables. (line 326)
@@ -11505,15 +12042,15 @@ D.3 Parameter and Variable Index
* HISTFILESIZE: Bash Variables. (line 402)
* HISTIGNORE: Bash Variables. (line 413)
* history-preserve-point: Readline Init File Syntax.
- (line 165)
+ (line 211)
* history-size: Readline Init File Syntax.
- (line 171)
+ (line 217)
* HISTSIZE: Bash Variables. (line 433)
* HISTTIMEFORMAT: Bash Variables. (line 440)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
- (line 180)
+ (line 226)
* HOSTFILE: Bash Variables. (line 448)
* HOSTNAME: Bash Variables. (line 459)
* HOSTTYPE: Bash Variables. (line 462)
@@ -11521,18 +12058,21 @@ D.3 Parameter and Variable Index
(line 18)
* IGNOREEOF: Bash Variables. (line 465)
* input-meta: Readline Init File Syntax.
- (line 189)
+ (line 235)
* INPUTRC: Bash Variables. (line 475)
* INSIDE_EMACS: Bash Variables. (line 479)
* isearch-terminators: Readline Init File Syntax.
- (line 197)
+ (line 245)
* keymap: Readline Init File Syntax.
- (line 204)
-* LANG: Bash Variables. (line 485)
+ (line 252)
+* LANG: Creating Internationalized Scripts.
+ (line 51)
+* LANG <1>: Bash Variables. (line 485)
* LC_ALL: Bash Variables. (line 489)
* LC_COLLATE: Bash Variables. (line 493)
* LC_CTYPE: Bash Variables. (line 500)
-* LC_MESSAGES: Locale Translation. (line 15)
+* LC_MESSAGES: Creating Internationalized Scripts.
+ (line 51)
* LC_MESSAGES <1>: Bash Variables. (line 505)
* LC_NUMERIC: Bash Variables. (line 509)
* LC_TIME: Bash Variables. (line 513)
@@ -11546,15 +12086,15 @@ D.3 Parameter and Variable Index
(line 27)
* MAPFILE: Bash Variables. (line 540)
* mark-modified-lines: Readline Init File Syntax.
- (line 234)
+ (line 282)
* mark-symlinked-directories: Readline Init File Syntax.
- (line 239)
+ (line 287)
* match-hidden-files: Readline Init File Syntax.
- (line 244)
+ (line 292)
* menu-complete-display-prefix: Readline Init File Syntax.
- (line 251)
+ (line 299)
* meta-flag: Readline Init File Syntax.
- (line 189)
+ (line 235)
* OLDPWD: Bash Variables. (line 544)
* OPTARG: Bourne Shell Variables.
(line 34)
@@ -11563,9 +12103,9 @@ D.3 Parameter and Variable Index
(line 38)
* OSTYPE: Bash Variables. (line 551)
* output-meta: Readline Init File Syntax.
- (line 256)
+ (line 304)
* page-completions: Readline Init File Syntax.
- (line 262)
+ (line 312)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 554)
@@ -11582,37 +12122,40 @@ D.3 Parameter and Variable Index
* PS4: Bash Variables. (line 595)
* PWD: Bash Variables. (line 603)
* RANDOM: Bash Variables. (line 606)
-* READLINE_LINE: Bash Variables. (line 612)
-* READLINE_MARK: Bash Variables. (line 616)
-* READLINE_POINT: Bash Variables. (line 622)
-* REPLY: Bash Variables. (line 626)
+* READLINE_ARGUMENT: Bash Variables. (line 612)
+* READLINE_LINE: Bash Variables. (line 616)
+* READLINE_MARK: Bash Variables. (line 620)
+* READLINE_POINT: Bash Variables. (line 626)
+* REPLY: Bash Variables. (line 630)
* revert-all-at-newline: Readline Init File Syntax.
- (line 272)
-* SECONDS: Bash Variables. (line 629)
-* SHELL: Bash Variables. (line 638)
-* SHELLOPTS: Bash Variables. (line 643)
-* SHLVL: Bash Variables. (line 652)
+ (line 322)
+* SECONDS: Bash Variables. (line 633)
+* SHELL: Bash Variables. (line 642)
+* SHELLOPTS: Bash Variables. (line 647)
+* SHLVL: Bash Variables. (line 656)
* show-all-if-ambiguous: Readline Init File Syntax.
- (line 278)
+ (line 329)
* show-all-if-unmodified: Readline Init File Syntax.
- (line 284)
+ (line 335)
* show-mode-in-prompt: Readline Init File Syntax.
- (line 293)
+ (line 344)
* skip-completed-text: Readline Init File Syntax.
- (line 299)
-* SRANDOM: Bash Variables. (line 657)
-* TEXTDOMAIN: Locale Translation. (line 15)
-* TEXTDOMAINDIR: Locale Translation. (line 15)
-* TIMEFORMAT: Bash Variables. (line 666)
-* TMOUT: Bash Variables. (line 704)
-* TMPDIR: Bash Variables. (line 716)
-* UID: Bash Variables. (line 720)
+ (line 350)
+* SRANDOM: Bash Variables. (line 661)
+* TEXTDOMAIN: Creating Internationalized Scripts.
+ (line 51)
+* TEXTDOMAINDIR: Creating Internationalized Scripts.
+ (line 51)
+* TIMEFORMAT: Bash Variables. (line 670)
+* TMOUT: Bash Variables. (line 708)
+* TMPDIR: Bash Variables. (line 720)
+* UID: Bash Variables. (line 724)
* vi-cmd-mode-string: Readline Init File Syntax.
- (line 312)
+ (line 363)
* vi-ins-mode-string: Readline Init File Syntax.
- (line 323)
+ (line 374)
* visible-stats: Readline Init File Syntax.
- (line 334)
+ (line 385)

File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -11628,7 +12171,7 @@ D.4 Function Index
* accept-line (Newline or Return): Commands For History.
(line 6)
* alias-expand-line (): Miscellaneous Commands.
- (line 125)
+ (line 131)
* backward-char (C-b): Commands For Moving. (line 15)
* backward-delete-char (Rubout): Commands For Text. (line 17)
* backward-kill-line (C-x Rubout): Commands For Killing.
@@ -11677,7 +12220,7 @@ D.4 Function Index
(line 57)
* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
* display-shell-version (C-x C-v): Miscellaneous Commands.
- (line 110)
+ (line 116)
* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
(line 14)
* downcase-word (M-l): Commands For Text. (line 62)
@@ -11690,7 +12233,7 @@ D.4 Function Index
* dynamic-complete-history (M-<TAB>): Commands For Completion.
(line 90)
* edit-and-execute-command (C-x C-e): Miscellaneous Commands.
- (line 134)
+ (line 140)
* end-kbd-macro (C-x )): Keyboard Macros. (line 9)
* end-of-file (usually C-d): Commands For Text. (line 6)
* end-of-history (M->): Commands For History.
@@ -11698,21 +12241,23 @@ D.4 Function Index
* end-of-line (C-e): Commands For Moving. (line 9)
* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
(line 37)
+* fetch-history (): Commands For History.
+ (line 103)
* forward-backward-delete-char (): Commands For Text. (line 21)
* forward-char (C-f): Commands For Moving. (line 12)
* forward-search-history (C-s): Commands For History.
(line 33)
* forward-word (M-f): Commands For Moving. (line 18)
* glob-complete-word (M-g): Miscellaneous Commands.
- (line 92)
-* glob-expand-word (C-x *): Miscellaneous Commands.
(line 98)
-* glob-list-expansions (C-x g): Miscellaneous Commands.
+* glob-expand-word (C-x *): Miscellaneous Commands.
(line 104)
+* glob-list-expansions (C-x g): Miscellaneous Commands.
+ (line 110)
* history-and-alias-expand-line (): Miscellaneous Commands.
- (line 128)
+ (line 134)
* history-expand-line (M-^): Miscellaneous Commands.
- (line 118)
+ (line 124)
* history-search-backward (): Commands For History.
(line 57)
* history-search-forward (): Commands For History.
@@ -11726,7 +12271,7 @@ D.4 Function Index
* insert-completions (M-*): Commands For Completion.
(line 22)
* insert-last-argument (M-. or M-_): Miscellaneous Commands.
- (line 131)
+ (line 137)
* kill-line (C-k): Commands For Killing.
(line 6)
* kill-region (): Commands For Killing.
@@ -11736,7 +12281,7 @@ D.4 Function Index
* kill-word (M-d): Commands For Killing.
(line 23)
* magic-space (): Miscellaneous Commands.
- (line 121)
+ (line 127)
* menu-complete (): Commands For Completion.
(line 26)
* menu-complete-backward (): Commands For Completion.
@@ -11784,7 +12329,7 @@ D.4 Function Index
(line 37)
* shell-backward-word (M-C-b): Commands For Moving. (line 30)
* shell-expand-line (M-C-e): Miscellaneous Commands.
- (line 113)
+ (line 119)
* shell-forward-word (M-C-f): Commands For Moving. (line 26)
* shell-kill-word (M-C-d): Commands For Killing.
(line 32)
@@ -11792,6 +12337,8 @@ D.4 Function Index
(line 41)
* skip-csi-sequence (): Miscellaneous Commands.
(line 52)
+* spell-correct-word (C-x s): Miscellaneous Commands.
+ (line 92)
* start-kbd-macro (C-x (): Keyboard Macros. (line 6)
* tilde-expand (M-&): Miscellaneous Commands.
(line 30)
@@ -11913,6 +12460,8 @@ D.5 Concept Index
* interactive shell: Invoking Bash. (line 131)
* interactive shell <1>: Interactive Shells. (line 6)
* internationalization: Locale Translation. (line 6)
+* internationalized scripts: Creating Internationalized Scripts.
+ (line 3)
* job: Definitions. (line 38)
* job control: Definitions. (line 42)
* job control <1>: Job Control Basics. (line 6)
@@ -11968,6 +12517,8 @@ D.5 Concept Index
* special builtin: Definitions. (line 82)
* special builtin <1>: Special Builtins. (line 6)
* startup files: Bash Startup Files. (line 6)
+* string translations: Creating Internationalized Scripts.
+ (line 3)
* suspending jobs: Job Control Basics. (line 6)
* tilde expansion: Tilde Expansion. (line 6)
* token: Definitions. (line 86)
@@ -11983,137 +12534,138 @@ D.5 Concept Index

Tag Table:
-Node: Top895
-Node: Introduction2813
-Node: What is Bash?3029
-Node: What is a shell?4143
-Node: Definitions6681
-Node: Basic Shell Features9632
-Node: Shell Syntax10851
-Node: Shell Operation11877
-Node: Quoting13170
-Node: Escape Character14470
-Node: Single Quotes14955
-Node: Double Quotes15303
-Node: ANSI-C Quoting16581
-Node: Locale Translation17840
-Node: Comments18993
-Node: Shell Commands19611
-Node: Reserved Words20549
-Node: Simple Commands21305
-Node: Pipelines21959
-Node: Lists24891
-Node: Compound Commands26682
-Node: Looping Constructs27694
-Node: Conditional Constructs30189
-Node: Command Grouping41760
-Node: Coprocesses43239
-Node: GNU Parallel45142
-Node: Shell Functions49443
-Node: Shell Parameters56650
-Node: Positional Parameters61063
-Node: Special Parameters61963
-Node: Shell Expansions65187
-Node: Brace Expansion67310
-Node: Tilde Expansion70033
-Node: Shell Parameter Expansion72650
-Node: Command Substitution87779
-Node: Arithmetic Expansion89134
-Node: Process Substitution90066
-Node: Word Splitting91186
-Node: Filename Expansion93130
-Node: Pattern Matching95679
-Node: Quote Removal99665
-Node: Redirections99960
-Node: Executing Commands109530
-Node: Simple Command Expansion110200
-Node: Command Search and Execution112154
-Node: Command Execution Environment114530
-Node: Environment117514
-Node: Exit Status119173
-Node: Signals120843
-Node: Shell Scripts122810
-Node: Shell Builtin Commands125822
-Node: Bourne Shell Builtins127860
-Node: Bash Builtins148789
-Node: Modifying Shell Behavior178898
-Node: The Set Builtin179243
-Node: The Shopt Builtin189656
-Node: Special Builtins204566
-Node: Shell Variables205545
-Node: Bourne Shell Variables205982
-Node: Bash Variables208086
-Node: Bash Features240720
-Node: Invoking Bash241733
-Node: Bash Startup Files247746
-Node: Interactive Shells252849
-Node: What is an Interactive Shell?253259
-Node: Is this Shell Interactive?253908
-Node: Interactive Shell Behavior254723
-Node: Bash Conditional Expressions258237
-Node: Shell Arithmetic262814
-Node: Aliases265754
-Node: Arrays268374
-Node: The Directory Stack274383
-Node: Directory Stack Builtins275167
-Node: Controlling the Prompt278135
-Node: The Restricted Shell281085
-Node: Bash POSIX Mode283679
-Node: Shell Compatibility Mode294715
-Node: Job Control301371
-Node: Job Control Basics301831
-Node: Job Control Builtins306827
-Node: Job Control Variables312227
-Node: Command Line Editing313383
-Node: Introduction and Notation315054
-Node: Readline Interaction316677
-Node: Readline Bare Essentials317868
-Node: Readline Movement Commands319651
-Node: Readline Killing Commands320611
-Node: Readline Arguments322529
-Node: Searching323573
-Node: Readline Init File325759
-Node: Readline Init File Syntax327018
-Node: Conditional Init Constructs347556
-Node: Sample Init File351752
-Node: Bindable Readline Commands354876
-Node: Commands For Moving356080
-Node: Commands For History358131
-Node: Commands For Text362924
-Node: Commands For Killing366573
-Node: Numeric Arguments369606
-Node: Commands For Completion370745
-Node: Keyboard Macros374936
-Node: Miscellaneous Commands375623
-Node: Readline vi Mode381307
-Node: Programmable Completion382214
-Node: Programmable Completion Builtins389994
-Node: A Programmable Completion Example400689
-Node: Using History Interactively405936
-Node: Bash History Facilities406620
-Node: Bash History Builtins409625
-Node: History Interaction414354
-Node: Event Designators417974
-Node: Word Designators419328
-Node: Modifiers421088
-Node: Installing Bash422899
-Node: Basic Installation424036
-Node: Compilers and Options427294
-Node: Compiling For Multiple Architectures428035
-Node: Installation Names429728
-Node: Specifying the System Type430546
-Node: Sharing Defaults431262
-Node: Operation Controls431935
-Node: Optional Features432893
-Node: Reporting Bugs443411
-Node: Major Differences From The Bourne Shell444605
-Node: GNU Free Documentation License461457
-Node: Indexes486634
-Node: Builtin Index487088
-Node: Reserved Word Index493915
-Node: Variable Index496363
-Node: Function Index512260
-Node: Concept Index525770
+Node: Top896
+Node: Introduction2815
+Node: What is Bash?3028
+Node: What is a shell?4139
+Node: Definitions6674
+Node: Basic Shell Features9622
+Node: Shell Syntax10838
+Node: Shell Operation11861
+Node: Quoting13151
+Node: Escape Character14452
+Node: Single Quotes14934
+Node: Double Quotes15279
+Node: ANSI-C Quoting16554
+Node: Locale Translation17861
+Node: Creating Internationalized Scripts19169
+Node: Comments23283
+Node: Shell Commands23898
+Node: Reserved Words24833
+Node: Simple Commands25586
+Node: Pipelines26237
+Node: Lists29233
+Node: Compound Commands31025
+Node: Looping Constructs32034
+Node: Conditional Constructs34526
+Node: Command Grouping49011
+Node: Coprocesses50486
+Node: GNU Parallel53146
+Node: Shell Functions54060
+Node: Shell Parameters61942
+Node: Positional Parameters66327
+Node: Special Parameters67226
+Node: Shell Expansions70437
+Node: Brace Expansion72561
+Node: Tilde Expansion75292
+Node: Shell Parameter Expansion77910
+Node: Command Substitution96258
+Node: Arithmetic Expansion97610
+Node: Process Substitution98575
+Node: Word Splitting99692
+Node: Filename Expansion101633
+Node: Pattern Matching104379
+Node: Quote Removal109378
+Node: Redirections109670
+Node: Executing Commands119327
+Node: Simple Command Expansion119994
+Node: Command Search and Execution122101
+Node: Command Execution Environment124476
+Node: Environment127508
+Node: Exit Status129168
+Node: Signals130949
+Node: Shell Scripts134395
+Node: Shell Builtin Commands137419
+Node: Bourne Shell Builtins139454
+Node: Bash Builtins160917
+Node: Modifying Shell Behavior191770
+Node: The Set Builtin192112
+Node: The Shopt Builtin202710
+Node: Special Builtins218619
+Node: Shell Variables219595
+Node: Bourne Shell Variables220029
+Node: Bash Variables222130
+Node: Bash Features254942
+Node: Invoking Bash255952
+Node: Bash Startup Files261962
+Node: Interactive Shells267090
+Node: What is an Interactive Shell?267498
+Node: Is this Shell Interactive?268144
+Node: Interactive Shell Behavior268956
+Node: Bash Conditional Expressions272582
+Node: Shell Arithmetic277221
+Node: Aliases280162
+Node: Arrays282772
+Node: The Directory Stack289160
+Node: Directory Stack Builtins289941
+Node: Controlling the Prompt294198
+Node: The Restricted Shell297160
+Node: Bash POSIX Mode299767
+Node: Shell Compatibility Mode311682
+Node: Job Control320246
+Node: Job Control Basics320703
+Node: Job Control Builtins325702
+Node: Job Control Variables331494
+Node: Command Line Editing332647
+Node: Introduction and Notation334315
+Node: Readline Interaction335935
+Node: Readline Bare Essentials337123
+Node: Readline Movement Commands338909
+Node: Readline Killing Commands339866
+Node: Readline Arguments341784
+Node: Searching342825
+Node: Readline Init File345008
+Node: Readline Init File Syntax346266
+Node: Conditional Init Constructs369849
+Node: Sample Init File374042
+Node: Bindable Readline Commands377163
+Node: Commands For Moving378364
+Node: Commands For History380412
+Node: Commands For Text385403
+Node: Commands For Killing389049
+Node: Numeric Arguments392079
+Node: Commands For Completion393215
+Node: Keyboard Macros397403
+Node: Miscellaneous Commands398088
+Node: Readline vi Mode404030
+Node: Programmable Completion404934
+Node: Programmable Completion Builtins412711
+Node: A Programmable Completion Example423460
+Node: Using History Interactively428705
+Node: Bash History Facilities429386
+Node: Bash History Builtins432388
+Node: History Interaction437409
+Node: Event Designators441026
+Node: Word Designators442377
+Node: Modifiers444134
+Node: Installing Bash445939
+Node: Basic Installation447073
+Node: Compilers and Options450792
+Node: Compiling For Multiple Architectures451530
+Node: Installation Names453219
+Node: Specifying the System Type455325
+Node: Sharing Defaults456039
+Node: Operation Controls456709
+Node: Optional Features457664
+Node: Reporting Bugs468880
+Node: Major Differences From The Bourne Shell470152
+Node: GNU Free Documentation License486998
+Node: Indexes512172
+Node: Builtin Index512623
+Node: Reserved Word Index519447
+Node: Variable Index521892
+Node: Function Index538663
+Node: Concept Index552444

End Tag Table
diff --git a/doc/bash.pdf b/doc/bash.pdf
index d8d784ee..b8f7dd69 100644
--- a/doc/bash.pdf
+++ b/doc/bash.pdf
Binary files differ
diff --git a/doc/bash.ps b/doc/bash.ps
index bd38ef3b..b6a4bbe8 100644
--- a/doc/bash.ps
+++ b/doc/bash.ps
@@ -1,13 +1,13 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.4
-%%CreationDate: Wed Nov 18 15:13:06 2020
+%%CreationDate: Mon Sep 19 12:02:42 2022
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Courier
%%+ font Symbol
%%DocumentSuppliedResources: procset grops 1.22 4
-%%Pages: 83
+%%Pages: 87
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
%%Orientation: Portrait
@@ -245,7 +245,7 @@ BP
108 96 Q(ain SHell)-.05 E F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF
(bash)108 124.8 Q F0([options] [command_string | \214le])2.5 E F1
(COPYRIGHT)72 141.6 Q F0(Bash is Cop)108 153.6 Q
-(yright \251 1989-2020 by the Free Softw)-.1 E(are F)-.1 E
+(yright \251 1989-2022 by the Free Softw)-.1 E(are F)-.1 E
(oundation, Inc.)-.15 E F1(DESCRIPTION)72 170.4 Q F2(Bash)108 182.4 Q F0
.973(is an)3.474 F F2(sh)3.473 E F0 .973
(-compatible command language interpreter that e)B -.15(xe)-.15 G .973
@@ -339,8 +339,8 @@ F .475(xtended deb)-.15 F(ug-)-.2 E
1.598(instead of the standard personal initialization \214le)4.279 F F3
(~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti)
144 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E
-(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(1)195.395 E 0 Cg EP
+(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(1)190.115 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
@@ -409,9 +409,9 @@ F4(INV)72 463.2 Q(OCA)-.493 E(TION)-1.04 E F0(A)108 475.2 Q F2(lo)2.5 E
108 492 Q F2(inter)2.734 E(active)-.15 E F0 .234
(shell is one started without non-option ar)2.734 F .234
(guments \(unless)-.18 F 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.019 E F0 .509(\(3\)\), or one).32 F
+(is speci\214ed\) and without the)2.734 F F1<ad63>2.733 E F0 .352(optio\
+n, whose standard input and error are both connected to terminals \(as \
+determined by)108 504 R F2(isatty)2.863 E F0 .353(\(3\)\), or one).32 F
.946(started with the)108 516 R 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)
@@ -463,8 +463,8 @@ F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035
Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25
G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806
(un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15
-F(ariable)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(2)
-195.395 E 0 Cg EP
+F(ariable)-.25 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(2)
+190.115 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
@@ -527,24 +527,25 @@ F .341(xpand the)-.15 F F1(ENV)2.841 E F0 -.25(va)2.591 G .342
(cuted from the \214le whose name is the e).15 E(xpanded v)-.15 E 2.5
(alue. No)-.25 F(other startup \214les are read.)2.5 E F2(Bash)108 302.4
Q F0 .224(attempts to determine when it is being run with its standard \
-input connected to a netw)2.724 F .223(ork connection,)-.1 F .025
-(as when e)108 314.4 R -.15(xe)-.15 G .025
-(cuted by the remote shell daemon, usually).15 F F4 -.1(rs)2.525 G(hd).1
-E F0 2.525(,o)C 2.525(rt)-2.525 G .025(he secure shell daemon)-2.525 F
-F4(sshd)2.525 E F0 5.025(.I)C(f)-5.025 E F2(bash)2.525 E F0(deter)2.525
-E(-)-.2 E .134(mines it is being run in this f)108 326.4 R .134
-(ashion, it reads and e)-.1 F -.15(xe)-.15 G .133(cutes commands from)
-.15 F F4(~/.bashr)2.633 E(c)-.37 E F0 2.633(,i)C 2.633(ft)-2.633 G .133
-(hat \214le e)-2.633 F .133(xists and is)-.15 F 2.869(readable. It)108
-338.4 R .369(will not do this if in)2.869 F -.2(vo)-.4 G -.1(ke).2 G
-2.869(da).1 G(s)-2.869 E F2(sh)2.869 E F0 5.369(.T)C(he)-5.369 E F2
-<adad6e6f72>2.869 E(c)-.18 E F0 .369
-(option may be used to inhibit this beha)2.869 F(vior)-.2 E 2.869(,a)-.4
-G(nd)-2.869 E(the)108 350.4 Q F2<adad72>2.919 E(c\214le)-.18 E F0 .419
-(option may be used to force another \214le to be read, b)2.919 F .419
-(ut neither)-.2 F F4 -.1(rs)2.919 G(hd).1 E F0(nor)2.919 E F4(sshd)2.919
-E F0 .418(generally in)2.919 F -.2(vo)-.4 G -.1(ke).2 G
-(the shell with those options or allo)108 362.4 Q 2.5(wt)-.25 G
+input connected to a netw)2.724 F .223(ork connection,)-.1 F .521
+(as when e)108 314.4 R -.15(xe)-.15 G .521
+(cuted by the historical remote shell daemon, usually).15 F F4 -.1(rs)
+3.021 G(hd).1 E F0 3.021(,o)C 3.021(rt)-3.021 G .521
+(he secure shell daemon)-3.021 F F4(sshd)3.022 E F0 5.522(.I)C(f)-5.522
+E F2(bash)108 326.4 Q F0 1.523(determines it is being run non-interacti)
+4.023 F -.15(ve)-.25 G 1.523(ly in this f).15 F 1.522
+(ashion, it reads and e)-.1 F -.15(xe)-.15 G 1.522(cutes commands from)
+.15 F F4(~/.bashr)108 338.4 Q(c)-.37 E F0 2.847(,i)C 2.847(ft)-2.847 G
+.347(hat \214le e)-2.847 F .347(xists and is readable.)-.15 F .348
+(It will not do this if in)5.347 F -.2(vo)-.4 G -.1(ke).2 G 2.848(da).1
+G(s)-2.848 E F2(sh)2.848 E F0 5.348(.T)C(he)-5.348 E F2<adad6e6f72>2.848
+E(c)-.18 E F0 .348(option may be)2.848 F .61(used to inhibit this beha)
+108 350.4 R(vior)-.2 E 3.11(,a)-.4 G .61(nd the)-3.11 F F2<adad72>3.11 E
+(c\214le)-.18 E F0 .609
+(option may be used to force another \214le to be read, b)3.11 F .609
+(ut nei-)-.2 F(ther)108 362.4 Q F4 -.1(rs)2.5 G(hd).1 E F0(nor)2.5 E F4
+(sshd)2.5 E F0(generally in)2.5 E -.2(vo)-.4 G .2 -.1(ke t).2 H
+(he shell with those options or allo).1 E 2.5(wt)-.25 G
(hem to be speci\214ed.)-2.5 E .433(If the shell is started with the ef)
108 379.2 R(fecti)-.25 E .733 -.15(ve u)-.25 H .433
(ser \(group\) id not equal to the real user \(group\) id, and the).15 F
@@ -591,9469 +592,9878 @@ F2(case)3.144 E F0(or)3.144 E F2(select)3.143 E F0 .643(command \(only)
(are v)108 640.8 Q(alid\):)-.25 E F2 11.295(!c)144 657.6 S 8.795
(ase copr)-11.295 F 8.795(oc do done elif else esac \214 f)-.18 F 8.795
(or function if in select then)-.25 F 7.5(until while { } time [[ ]])144
-669.6 R F6(SHELL GRAMMAR)72 686.4 Q F2(Simple Commands)87 698.4 Q F0(A)
-108 710.4 Q F4 .389(simple command)2.889 F F0 .389
-(is a sequence of optional v)2.889 F .388(ariable assignments follo)-.25
-F .388(wed by)-.25 F F2(blank)2.888 E F0 .388(-separated w)B .388
-(ords and)-.1 F .815(redirections, and terminated by a)108 722.4 R F4
-(contr)3.315 E .815(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815
-(he \214rst w)-5.815 F .816(ord speci\214es the command to be e)-.1 F
--.15(xe)-.15 G(cuted,).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)
-141.235 E(3)195.395 E 0 Cg EP
+669.6 R F6(SHELL GRAMMAR)72 686.4 Q F0
+(This section describes the syntax of the v)108 698.4 Q
+(arious forms of shell commands.)-.25 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(3)190.115 E 0 Cg EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(and is passed as ar)108 84 Q(gument zero.)-.18 E(The remaining w)5 E
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(Simple Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF .389
+(simple command)2.889 F F0 .389(is a sequence of optional v)2.889 F .388
+(ariable assignments follo)-.25 F .388(wed by)-.25 F F1(blank)2.888 E F0
+.388(-separated w)B .388(ords and)-.1 F .815
+(redirections, and terminated by a)108 108 R F2(contr)3.315 E .815
+(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815(he \214rst w)-5.815 F
+.816(ord speci\214es the command to be e)-.1 F -.15(xe)-.15 G(cuted,).15
+E(and is passed as ar)108 120 Q(gument zero.)-.18 E(The remaining w)5 E
(ords are passed as ar)-.1 E(guments to the in)-.18 E -.2(vo)-.4 G -.1
-(ke).2 G 2.5(dc).1 G(ommand.)-2.5 E(The return v)108 100.8 Q(alue of a)
--.25 E/F1 10/Times-Italic@0 SF(simple command)2.5 E F0(is its e)2.5 E
-(xit status, or 128+)-.15 E F1(n)A F0
-(if the command is terminated by signal)3.333 E F1(n)2.86 E F0(.).24 E
-/F2 10/Times-Bold@0 SF(Pipelines)87 117.6 Q F0(A)108 129.6 Q F1
-(pipeline)2.996 E F0 .496(is a sequence of one or more commands separat\
-ed by one of the control operators)2.996 F F2(|)2.996 E F0(or)2.996 E F2
-(|&)2.996 E F0 5.496(.T)C(he)-5.496 E(format for a pipeline is:)108
-141.6 Q([)144 158.4 Q F2(time)A F0([)2.5 E 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 240 R .48
-(xit status of the last command, unless the)-.15 F F2(pipefail)2.98 E F0
-.48(option is enabled.)2.98 F(If)108 252 Q F2(pipefail)2.687 E F0 .187
+(ke).2 G 2.5(dc).1 G(ommand.)-2.5 E(The return v)108 136.8 Q(alue of a)
+-.25 E F2(simple command)2.5 E F0(is its e)2.5 E(xit status, or 128+)
+-.15 E F2(n)A F0(if the command is terminated by signal)3.333 E F2(n)
+2.86 E F0(.).24 E F1(Pipelines)87 153.6 Q F0(A)108 165.6 Q F2(pipeline)
+2.996 E F0 .496(is a sequence of one or more commands separated by one \
+of the control operators)2.996 F F1(|)2.996 E F0(or)2.996 E F1(|&)2.996
+E F0 5.496(.T)C(he)-5.496 E(format for a pipeline is:)108 177.6 Q([)144
+194.4 Q F1(time)A F0([)2.5 E F1<ad70>A F0(]] [ ! ])A F2(command1)2.5 E
+F0 2.5([[)2.5 G F1(|)-2.5 E/F3 10/Symbol SF<ef>A F1(|&)A F0(])A F2
+(command2)2.5 E F0(... ])2.5 E .799(The standard output of)108 211.2 R
+F2(command1)3.499 E F0 .799
+(is connected via a pipe to the standard input of)3.299 F F2(command2)
+3.5 E F0 5.8(.T).02 G .8(his con-)-5.8 F .215
+(nection is performed before an)108 223.2 R 2.715(yr)-.15 G .214
+(edirections speci\214ed by the)-2.715 F F2(command1)2.914 E F0(\(see)A
+/F4 9/Times-Bold@0 SF(REDIRECTION)2.714 E F0(belo)2.464 E 2.714(w\). If)
+-.25 F F1(|&)2.714 E F0 .126(is used,)108 235.2 R F2(command1)2.626 E F0
+1.226 -.55('s s)D .126(tandard error).55 F 2.626(,i)-.4 G 2.626(na)
+-2.626 G .126(ddition to its standard output, is connected to)-2.626 F
+F2(command2)2.626 E F0 1.226 -.55('s s)D(tandard).55 E .028
+(input through the pipe; it is shorthand for)108 247.2 R F1 .028(2>&1 |)
+2.528 F F0 5.028(.T)C .028
+(his implicit redirection of the standard error to the stan-)-5.028 F
+(dard output is performed after an)108 259.2 Q 2.5(yr)-.15 G
+(edirections speci\214ed by)-2.5 E F2(command1)2.5 E F0(.)A .48
+(The return status of a pipeline is the e)108 276 R .48
+(xit status of the last command, unless the)-.15 F F1(pipefail)2.98 E F0
+.48(option is enabled.)2.98 F(If)108 288 Q F1(pipefail)2.687 E F0 .187
(is enabled, the pipeline')2.687 F 2.687(sr)-.55 G .186
(eturn status is the v)-2.687 F .186
(alue of the last \(rightmost\) command to e)-.25 F .186(xit with a)-.15
-F .61(non-zero status, or zero if all commands e)108 264 R .611
+F .61(non-zero status, or zero if all commands e)108 300 R .611
(xit successfully)-.15 F 5.611(.I)-.65 G 3.111(ft)-5.611 G .611
-(he reserv)-3.111 F .611(ed w)-.15 F(ord)-.1 E F2(!)3.111 E F0 .611
-(precedes a pipeline, the)5.611 F -.15(ex)108 276 S .55
+(he reserv)-3.111 F .611(ed w)-.15 F(ord)-.1 E F1(!)3.111 E F0 .611
+(precedes a pipeline, the)5.611 F -.15(ex)108 312 S .55
(it status of that pipeline is the logical ne).15 F -.05(ga)-.15 G .55
(tion of the e).05 F .55(xit status as described abo)-.15 F -.15(ve)-.15
G 5.55(.T).15 G .55(he shell w)-5.55 F .55(aits for)-.1 F
-(all commands in the pipeline to terminate before returning a v)108 288
-Q(alue.)-.25 E .298(If the)108 304.8 R F2(time)2.799 E F0(reserv)2.799 E
+(all commands in the pipeline to terminate before returning a v)108 324
+Q(alue.)-.25 E .298(If the)108 340.8 R F1(time)2.799 E F0(reserv)2.799 E
.299(ed w)-.15 F .299(ord precedes a pipeline, the elapsed as well as u\
-ser and system time consumed by its)-.1 F -.15(exe)108 316.8 S .14
-(cution are reported when the pipeline terminates.).15 F(The)5.139 E F2
+ser and system time consumed by its)-.1 F -.15(exe)108 352.8 S .14
+(cution are reported when the pipeline terminates.).15 F(The)5.139 E F1
<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 .303(ord if the ne)-.1 F(xt)-.15 E(tok)108 340.8 Q .736
+2.639 F .302(i\214ed by POSIX.)108 364.8 R .303(When the shell is in)
+5.302 F F2 .303(posix mode)2.803 F F0 2.803(,i)C 2.803(td)-2.803 G .303
+(oes not recognize)-2.803 F F1(time)2.803 E F0 .303(as a reserv)2.803 F
+.303(ed w)-.15 F .303(ord if the ne)-.1 F(xt)-.15 E(tok)108 376.8 Q .736
(en be)-.1 F .736(gins with a `-'.)-.15 F(The)5.736 E F4(TIMEFORMA)3.236
E(T)-.855 E F0 -.25(va)2.986 G .736
(riable may be set to a format string that speci\214es ho).25 F 3.235
(wt)-.25 G(he)-3.235 E .879
(timing information should be displayed; see the description of)108
-352.8 R F4(TIMEFORMA)3.38 E(T)-.855 E F0(under)3.13 E F2 .88(Shell V)
-3.38 F(ariables)-.92 E F0(be-)3.38 E(lo)108 364.8 Q -.65(w.)-.25 G .162
-(When the shell is in)108 381.6 R F1 .162(posix mode)2.662 F F0(,)A F2
+388.8 R F4(TIMEFORMA)3.38 E(T)-.855 E F0(under)3.13 E F1 .88(Shell V)
+3.38 F(ariables)-.92 E F0(be-)3.38 E(lo)108 400.8 Q -.65(w.)-.25 G .162
+(When the shell is in)108 417.6 R F2 .162(posix mode)2.662 F F0(,)A F1
(time)2.662 E F0 .162(may be follo)2.662 F .161(wed by a ne)-.25 F 2.661
(wline. In)-.25 F .161(this case, the shell displays the to-)2.661 F
.243(tal user and system time consumed by the shell and its children.)
-108 393.6 R(The)5.243 E F4(TIMEFORMA)2.743 E(T)-.855 E F0 -.25(va)2.493
+108 429.6 R(The)5.243 E F4(TIMEFORMA)2.743 E(T)-.855 E F0 -.25(va)2.493
G .243(riable may be used).25 F
-(to specify the format of the time information.)108 405.6 Q .656
-(Each command in a pipeline is e)108 422.4 R -.15(xe)-.15 G .655
-(cuted as a separate process \(i.e., in a subshell\).).15 F(See)5.655 E
-F4 .655(COMMAND EXE-)3.155 F .05(CUTION ENVIR)108 434.4 R(ONMENT)-.27 E
-F0 .051(for a description of a subshell en)2.3 F 2.551(vironment. If)-.4
-F(the)2.551 E F2(lastpipe)2.551 E F0 .051(option is enabled us-)2.551 F
-.416(ing the)108 446.4 R F2(shopt)2.916 E F0 -.2(bu)2.916 G .416
-(iltin \(see the description of).2 F F2(shopt)2.916 E F0(belo)2.916 E
-.416(w\), the last element of a pipeline may be run by the)-.25 F
-(shell process.)108 458.4 Q F2(Lists)87 475.2 Q F0(A)108 487.2 Q F1
-(list)2.849 E F0 .349(is a sequence of one or more pipelines separated \
-by one of the operators)2.849 F F2(;)2.85 E F0(,)A F2(&)2.85 E F0(,)A F2
-(&&)2.85 E F0 2.85(,o)C(r)-2.85 E F2(||)2.85 E F0 2.85(,a)C .35
-(nd option-)-2.85 F(ally terminated by one of)108 499.2 Q F2(;)2.5 E F0
-(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2(<newline>)2.5 E F0(.)A .961
-(Of these list operators,)108 516 R F2(&&)3.461 E F0(and)3.461 E F2(||)
+(to specify the format of the time information.)108 441.6 Q .304(Each c\
+ommand in a multi-command pipeline, where pipes are created, is e)108
+458.4 R -.15(xe)-.15 G .303(cuted in a).15 F F2(subshell)2.803 E F0
+2.803(,w)C .303(hich is a)-2.803 F .207(separate process.)108 470.4 R
+(See)5.207 E F4 .208(COMMAND EXECUTION ENVIR)2.708 F(ONMENT)-.27 E F0
+.208(for a description of subshells and a sub-)2.458 F .927(shell en)108
+482.4 R 3.427(vironment. If)-.4 F(the)3.427 E F1(lastpipe)3.427 E F0
+.927(option is enabled using the)3.427 F F1(shopt)3.427 E F0 -.2(bu)
+3.427 G .927(iltin \(see the description of).2 F F1(shopt)3.426 E F0
+(belo)108 494.4 Q(w\), the last element of a pipeline may be run by the\
+ shell process when job control is not acti)-.25 E -.15(ve)-.25 G(.).15
+E F1(Lists)87 511.2 Q F0(A)108 523.2 Q F2(list)2.849 E F0 .349(is a seq\
+uence of one or more pipelines separated by one of the operators)2.849 F
+F1(;)2.85 E F0(,)A F1(&)2.85 E F0(,)A F1(&&)2.85 E F0 2.85(,o)C(r)-2.85
+E F1(||)2.85 E F0 2.85(,a)C .35(nd option-)-2.85 F
+(ally terminated by one of)108 535.2 Q F1(;)2.5 E F0(,)A F1(&)2.5 E F0
+2.5(,o)C(r)-2.5 E F1(<newline>)2.5 E F0(.)A .961
+(Of these list operators,)108 552 R F1(&&)3.461 E F0(and)3.461 E F1(||)
3.461 E F0(ha)3.461 E 1.261 -.15(ve e)-.2 H .961(qual precedence, follo)
-.15 F .96(wed by)-.25 F F2(;)3.46 E F0(and)3.46 E F2(&)3.46 E F0 3.46
+.15 F .96(wed by)-.25 F F1(;)3.46 E F0(and)3.46 E F1(&)3.46 E F0 3.46
(,w)C .96(hich ha)-3.46 F 1.26 -.15(ve e)-.2 H .96(qual prece-).15 F
-(dence.)108 528 Q 2.5(As)108 544.8 S(equence of one or more ne)-2.5 E
-(wlines may appear in a)-.25 E F1(list)2.5 E F0
+(dence.)108 564 Q 2.5(As)108 580.8 S(equence of one or more ne)-2.5 E
+(wlines may appear in a)-.25 E F2(list)2.5 E F0
(instead of a semicolon to delimit commands.)2.5 E .029
-(If a command is terminated by the control operator)108 561.6 R F2(&)
+(If a command is terminated by the control operator)108 597.6 R F1(&)
2.529 E F0 2.529(,t)C .029(he shell e)-2.529 F -.15(xe)-.15 G .029
-(cutes the command in the).15 F F1(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0
-(in)2.529 E 2.678(as)108 573.6 S 2.678(ubshell. The)-2.678 F .178
+(cutes the command in the).15 F F2(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0
+(in)2.529 E 2.678(as)108 609.6 S 2.678(ubshell. The)-2.678 F .178
(shell does not w)2.678 F .178
(ait for the command to \214nish, and the return status is 0.)-.1 F .178
-(These are referred)5.178 F .778(to as)108 585.6 R F1(async)3.278 E(hr)
+(These are referred)5.178 F .778(to as)108 621.6 R F2(async)3.278 E(hr)
-.15 E(onous)-.45 E F0 3.278(commands. Commands)3.278 F .779
-(separated by a)3.278 F F2(;)3.279 E F0 .779(are e)3.279 F -.15(xe)-.15
+(separated by a)3.278 F F1(;)3.279 E F0 .779(are e)3.279 F -.15(xe)-.15
G .779(cuted sequentially; the shell w).15 F .779(aits for)-.1 F
-(each command to terminate in turn.)108 597.6 Q
+(each command to terminate in turn.)108 633.6 Q
(The return status is the e)5 E(xit status of the last command e)-.15 E
-.15(xe)-.15 G(cuted.).15 E .172(AND and OR lists are sequences of one \
-or more pipelines separated by the)108 614.4 R F2(&&)2.671 E F0(and)
-2.671 E F2(||)2.671 E F0 .171(control operators, re-)2.671 F(specti)108
-626.4 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E
+or more pipelines separated by the)108 650.4 R F1(&&)2.671 E F0(and)
+2.671 E F1(||)2.671 E F0 .171(control operators, re-)2.671 F(specti)108
+662.4 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E
-.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G
-2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 643.2 Q F2(&&)
-2.5 E F1(command2)2.5 E(command2)108.2 660 Q F0(is e)2.52 E -.15(xe)-.15
-G(cuted if, and only if,).15 E F1(command1)2.7 E F0(returns an e)2.5 E
+2.5(nA)-5 G(ND list has the form)-2.5 E F2(command1)144 679.2 Q F1(&&)
+2.5 E F2(command2)2.5 E(command2)108.2 696 Q F0(is e)2.52 E -.15(xe)-.15
+G(cuted if, and only if,).15 E F2(command1)2.7 E F0(returns an e)2.5 E
(xit status of zero \(success\).)-.15 E(An OR list has the form)108
-676.8 Q F1(command1)144 693.6 Q F2(||)2.5 E F1(command2)2.5 E(command2)
-108.2 710.4 Q F0 .434(is e)2.954 F -.15(xe)-.15 G .434
-(cuted if, and only if,).15 F F1(command1)3.135 E F0 .435
-(returns a non-zero e)2.935 F .435(xit status.)-.15 F .435
-(The return status of AND)5.435 F(and OR lists is the e)108 722.4 Q
-(xit status of the last command e)-.15 E -.15(xe)-.15 G
-(cuted in the list.).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
-E(4)195.395 E 0 Cg EP
+712.8 Q F2(command1)144 729.6 Q F1(||)2.5 E F2(command2)2.5 E F0
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(4)190.115 E 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(Compound Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF 1.054
-(compound command)3.554 F F0 1.054(is one of the follo)3.554 F 3.553
-(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 1.053
-(in a command')3.553 F 3.553(sd)-.55 G 1.053(escription may be)-3.553 F
-1.026(separated from the rest of the command by one or more ne)108 108 R
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF(command2)108.2 84 Q F0 .434(is e)2.954 F -.15(xe)-.15
+G .434(cuted if, and only if,).15 F F1(command1)3.135 E F0 .435
+(returns a non-zero e)2.935 F .435(xit status.)-.15 F .435
+(The return status of AND)5.435 F(and OR lists is the e)108 96 Q
+(xit status of the last command e)-.15 E -.15(xe)-.15 G
+(cuted in the list.).15 E/F2 10/Times-Bold@0 SF(Compound Commands)87
+112.8 Q F0(A)108 124.8 Q F1 1.054(compound command)3.554 F F0 1.054
+(is one of the follo)3.554 F 3.553(wing. In)-.25 F 1.053(most cases a)
+3.553 F F1(list)3.553 E F0 1.053(in a command')3.553 F 3.553(sd)-.55 G
+1.053(escription may be)-3.553 F 1.026
+(separated from the rest of the command by one or more ne)108 136.8 R
1.026(wlines, and may be follo)-.25 F 1.027(wed by a ne)-.25 F 1.027
-(wline in)-.25 F(place of a semicolon.)108 120 Q(\()108 136.8 Q F2(list)
-A F0(\))A F2(list)144 136.8 Q F0 .011(is e)2.512 F -.15(xe)-.15 G .011
-(cuted in a subshell en).15 F .011(vironment \(see)-.4 F/F3 9
-/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0
-(belo)2.261 E(w\).)-.25 E -1.11(Va)144 148.8 S .016
-(riable assignments and b)1.11 F .016(uiltin commands that af)-.2 F .016
-(fect the shell')-.25 F 2.517(se)-.55 G -.4(nv)-2.517 G .017
-(ironment do not remain in ef-).4 F(fect after the command completes.)
-144 160.8 Q(The return status is the e)5 E(xit status of)-.15 E F2(list)
-2.5 E F0(.)A({)108 177.6 Q F2(list)2.5 E F0 2.5(;})C F2(list)144 177.6 Q
-F0 .402(is simply e)2.902 F -.15(xe)-.15 G .401
-(cuted in the current shell en).15 F(vironment.)-.4 E F2(list)5.401 E F0
-.401(must be terminated with a ne)2.901 F .401(wline or)-.25 F 3.214
-(semicolon. This)144 189.6 R .714(is kno)3.214 F .714(wn as a)-.25 F F2
+(wline in)-.25 F(place of a semicolon.)108 148.8 Q(\()108 165.6 Q F1
+(list)A F0(\))A F1(list)144 165.6 Q F0 .215(is e)2.715 F -.15(xe)-.15 G
+.215(cuted in a subshell \(see).15 F/F3 9/Times-Bold@0 SF .215
+(COMMAND EXECUTION ENVIR)2.715 F(ONMENT)-.27 E F0(belo)2.465 E 2.714(wf)
+-.25 G .214(or a descrip-)-2.714 F .209(tion of a subshell en)144 177.6
+R 2.709(vironment\). V)-.4 F .209(ariable assignments and b)-1.11 F .209
+(uiltin commands that af)-.2 F .21(fect the shell')-.25 F(s)-.55 E(en)
+144 189.6 Q 1.069(vironment do not remain in ef)-.4 F 1.069
+(fect after the command completes.)-.25 F 1.068
+(The return status is the e)6.069 F(xit)-.15 E(status of)144 201.6 Q F1
+(list)2.5 E F0(.)A({)108 218.4 Q F1(list)2.5 E F0 2.5(;})C F1(list)144
+218.4 Q F0 .401(is simply e)2.901 F -.15(xe)-.15 G .401
+(cuted in the current shell en).15 F(vironment.)-.4 E F1(list)5.401 E F0
+.402(must be terminated with a ne)2.901 F .402(wline or)-.25 F 3.215
+(semicolon. This)144 230.4 R .715(is kno)3.215 F .715(wn as a)-.25 F F1
(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715
-(he return status is the e)-5.715 F .715(xit status of)-.15 F F2(list)
-3.215 E F0 5.715(.N)C(ote)-5.715 E .22(that unlik)144 201.6 R 2.72(et)
--.1 G .22(he metacharacters)-2.72 F F1(\()2.72 E F0(and)2.72 E F1(\))
-2.72 E F0(,)A F1({)2.72 E F0(and)2.72 E F1(})2.719 E F0(are)2.719 E F2
--.37(re)2.719 G .219(served wor).37 F(ds)-.37 E F0 .219
-(and must occur where a reserv)2.719 F(ed)-.15 E -.1(wo)144 213.6 S .256
-(rd is permitted to be recognized.).1 F .256(Since the)5.256 F 2.756(yd)
--.15 G 2.756(on)-2.756 G .257(ot cause a w)-2.756 F .257(ord break, the)
--.1 F 2.757(ym)-.15 G .257(ust be separated)-2.757 F(from)144 225.6 Q F2
+(he return status is the e)-5.715 F .714(xit status of)-.15 F F1(list)
+3.214 E F0 5.714(.N)C(ote)-5.714 E .219(that unlik)144 242.4 R 2.719(et)
+-.1 G .219(he metacharacters)-2.719 F F2(\()2.719 E F0(and)2.719 E F2
+(\))2.719 E F0(,)A F2({)2.719 E F0(and)2.719 E F2(})2.719 E F0(are)2.719
+E F1 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E F0 .22
+(and must occur where a reserv)2.72 F(ed)-.15 E -.1(wo)144 254.4 S .257
+(rd is permitted to be recognized.).1 F .257(Since the)5.257 F 2.757(yd)
+-.15 G 2.756(on)-2.757 G .256(ot cause a w)-2.756 F .256(ord break, the)
+-.1 F 2.756(ym)-.15 G .256(ust be separated)-2.756 F(from)144 266.4 Q F1
(list)2.5 E F0(by whitespace or another shell metacharacter)2.5 E(.)-.55
-E(\(\()108 242.4 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144
-254.4 Q F2 -.2(ex)2.552 G(pr).2 E(ession)-.37 E F0 .052(is e)2.552 F
+E(\(\()108 283.2 Q F1 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144
+295.2 Q F1 -.2(ex)2.551 G(pr).2 E(ession)-.37 E F0 .051(is e)2.551 F
-.25(va)-.25 G .051(luated according to the rules described belo).25 F
-2.551(wu)-.25 G(nder)-2.551 E F3 .051(ARITHMETIC EV)2.551 F(ALU)-1.215 E
-(A-)-.54 E(TION)144 266.4 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v)
-4.91 F .411(alue of the e)-.25 F .411(xpression is non-zero, the return\
- status is 0; otherwise the return status)-.15 F(is 1.)144 278.4 Q
-(This is e)5 E(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F1(let ")
-2.5 E F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(")A F0(.)A F1([[)108 295.2 Q
-F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(]])2.5 E F0 .003
-(Return a status of 0 or 1 depending on the e)144 307.2 R -.25(va)-.25 G
-.003(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)2.503
-G(pr).2 E(ession)-.37 E F0 5.003(.E)C(x-)-5.003 E .758
-(pressions are composed of the primaries described belo)144 319.2 R
-3.259(wu)-.25 G(nder)-3.259 E F3(CONDITION)3.259 E .759(AL EXPRESSIONS)
--.18 F F4(.)A F0 -.8(Wo)144 331.2 S .029(rd splitting and pathname e).8
-F .029(xpansion are not performed on the w)-.15 F .029(ords between the)
--.1 F F1([[)2.528 E F0(and)2.528 E F1(]])2.528 E F0 2.528(;t)C(ilde)
--2.528 E -.15(ex)144 343.2 S 3.968(pansion, parameter and v).15 F 3.969
-(ariable e)-.25 F 3.969(xpansion, arithmetic e)-.15 F 3.969
-(xpansion, command substitution,)-.15 F .571
-(process substitution, and quote remo)144 355.2 R -.25(va)-.15 G 3.071
-(la).25 G .571(re performed.)-3.071 F .571
-(Conditional operators such as)5.571 F 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 .502(When the)144
-403.2 R F1(==)3.002 E F0(and)3.002 E F1(!=)3.002 E F0 .502(operators ar\
-e used, the string to the right of the operator is considered a pat-)
-3.002 F .81(tern and matched according to the rules described belo)144
-415.2 R 3.31(wu)-.25 G(nder)-3.31 E F1 -.1(Pa)3.31 G(tter).1 E 3.31(nM)
--.15 G(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he)
--3.31 E F1(ext-)3.31 E(glob)144 427.2 Q F0 .313
-(shell option were enabled.)2.813 F(The)5.313 E F1(=)2.813 E F0 .313
-(operator is equi)2.813 F -.25(va)-.25 G .313(lent to).25 F F1(==)2.813
-E F0 5.313(.I)C 2.813(ft)-5.313 G(he)-2.813 E F1(nocasematch)2.813 E F0
-.314(shell op-)2.814 F .03
-(tion is enabled, the match is performed without re)144 439.2 R -.05(ga)
--.15 G .029(rd to the case of alphabetic characters.).05 F .029(The re-)
-5.029 F .258(turn v)144 451.2 R .259(alue is 0 if the string matches \()
--.25 F F1(==)A F0 2.759(\)o)C 2.759(rd)-2.759 G .259(oes not match \()
--2.759 F F1(!=)A F0 2.759(\)t)C .259(he pattern, and 1 otherwise.)-2.759
-F(An)5.259 E(y)-.15 E(part of the pattern may be quoted to force the qu\
-oted portion to be matched as a string.)144 463.2 Q .243
-(An additional binary operator)144 481.2 R(,)-.4 E F1(=~)2.743 E F0
-2.743(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243
-(ilable, with the same precedence as).25 F F1(==)2.743 E F0(and)2.743 E
-F1(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F .182
+2.552(wu)-.25 G(nder)-2.552 E F3 .052(ARITHMETIC EV)2.552 F(ALU)-1.215 E
+(A-)-.54 E(TION)144 307.2 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v)
+4.911 F .411(alue of the e)-.25 F .411(xpression is non-zero, the retur\
+n status is 0; otherwise the return status)-.15 F .186(is 1.)144 319.2 R
+(The)5.186 E F1 -.2(ex)2.686 G(pr).2 E(ession)-.37 E F0(under)2.686 E
+.186(goes the same e)-.18 F .186
+(xpansions as if it were within double quotes, b)-.15 F .187(ut double)
+-.2 F(quote characters in)144 331.2 Q F1 -.2(ex)2.5 G(pr).2 E(ession)
+-.37 E F0(are not treated specially and are remo)2.5 E -.15(ve)-.15 G
+(d.).15 E F2([[)108 348 Q F1 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F2(]])
+2.5 E F0 .003(Return a status of 0 or 1 depending on the e)144 360 R
+-.25(va)-.25 G .003(luation of the conditional e).25 F(xpression)-.15 E
+F1 -.2(ex)2.503 G(pr).2 E(ession)-.37 E F0 5.003(.E)C(x-)-5.003 E .758
+(pressions are composed of the primaries described belo)144 372 R 3.259
+(wu)-.25 G(nder)-3.259 E F3(CONDITION)3.259 E .759(AL EXPRESSIONS)-.18 F
+F4(.)A F0 .065(The w)144 384 R .065(ords between the)-.1 F F2([[)2.565 E
+F0(and)2.565 E F2(]])2.565 E F0 .065(do not under)2.565 F .065(go w)-.18
+F .065(ord splitting and pathname e)-.1 F 2.565(xpansion. The)-.15 F
+(shell)2.565 E .483(performs tilde e)144 396 R .483
+(xpansion, parameter and v)-.15 F .483(ariable e)-.25 F .483
+(xpansion, arithmetic e)-.15 F .483(xpansion, command sub-)-.15 F .201
+(stitution, process substitution, and quote remo)144 408 R -.25(va)-.15
+G 2.701(lo).25 G 2.701(nt)-2.701 G .201(hose w)-2.701 F .201
+(ords \(the e)-.1 F .2(xpansions that w)-.15 F .2(ould occur)-.1 F .382
+(if the w)144 420 R .382(ords were enclosed in double quotes\).)-.1 F
+.382(Conditional operators such as)5.382 F F2<ad66>2.882 E F0 .382
+(must be unquoted)2.882 F(to be recognized as primaries.)144 432 Q
+(When used with)144 450 Q F2([[)2.5 E F0 2.5(,t)C(he)-2.5 E F2(<)2.5 E
+F0(and)2.5 E F2(>)2.5 E F0(operators sort le)2.5 E
+(xicographically using the current locale.)-.15 E .503(When the)144 468
+R F2(==)3.003 E F0(and)3.002 E F2(!=)3.002 E F0 .502(operators are used\
+, the string to the right of the operator is considered a pat-)3.002 F
+.81(tern and matched according to the rules described belo)144 480 R
+3.31(wu)-.25 G(nder)-3.31 E F2 -.1(Pa)3.31 G(tter).1 E 3.31(nM)-.15 G
+(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he)-3.31 E
+F2(ext-)3.31 E(glob)144 492 Q F0 .313(shell option were enabled.)2.814 F
+(The)5.313 E F2(=)2.813 E F0 .313(operator is equi)2.813 F -.25(va)-.25
+G .313(lent to).25 F F2(==)2.813 E F0 5.313(.I)C 2.813(ft)-5.313 G(he)
+-2.813 E F2(nocasematch)2.813 E F0 .313(shell op-)2.813 F .029
+(tion is enabled, the match is performed without re)144 504 R -.05(ga)
+-.15 G .03(rd to the case of alphabetic characters.).05 F .03(The re-)
+5.03 F .259(turn v)144 516 R .259(alue is 0 if the string matches \()
+-.25 F F2(==)A F0 2.759(\)o)C 2.759(rd)-2.759 G .259(oes not match \()
+-2.759 F F2(!=)A F0 2.759(\)t)C .259(he pattern, and 1 otherwise.)-2.759
+F(An)5.258 E(y)-.15 E(part of the pattern may be quoted to force the qu\
+oted portion to be matched as a string.)144 528 Q .243
+(An additional binary operator)144 546 R(,)-.4 E F2(=~)2.743 E F0 2.743
+(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243
+(ilable, with the same precedence as).25 F F2(==)2.743 E F0(and)2.743 E
+F2(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F .182
(used, the string to the right of the operator is considered a POSIX e)
-144 493.2 R .182(xtended re)-.15 F .182(gular e)-.15 F .182
-(xpression and)-.15 F 2.624(matched accordingly \(using the POSIX)144
-505.2 R F2 -.37(re)5.124 G(gcomp)-.03 E F0(and)5.124 E F2 -.37(re)5.124
-G -.1(ge)-.03 G(xec)-.1 E F0(interf)5.123 E 2.623
-(aces usually described in)-.1 F F2 -.37(re)144 517.2 S -.1(ge)-.03 G(x)
--.1 E F0 3.271(\(3\)\). The)B .771(return v)3.271 F .772
+144 558 R .182(xtended re)-.15 F .181(gular e)-.15 F .181(xpression and)
+-.15 F 2.623(matched accordingly \(using the POSIX)144 570 R F1 -.37(re)
+5.124 G(gcomp)-.03 E F0(and)5.124 E F1 -.37(re)5.124 G -.1(ge)-.03 G
+(xec)-.1 E F0(interf)5.124 E 2.624(aces usually described in)-.1 F F1
+-.37(re)144 582 S -.1(ge)-.03 G(x)-.1 E F0 3.272(\(3\)\). The)B .772
+(return v)3.272 F .772
(alue is 0 if the string matches the pattern, and 1 otherwise.)-.25 F
-.772(If the re)5.772 F(gular)-.15 E -.15(ex)144 529.2 S .509
+.771(If the re)5.771 F(gular)-.15 E -.15(ex)144 594 S .508
(pression is syntactically incorrect, the conditional e).15 F
-(xpression')-.15 E 3.008(sr)-.55 G .508(eturn v)-3.008 F .508
-(alue is 2.)-.25 F .508(If the)5.508 F F1(nocase-)3.008 E(match)144
-541.2 Q F0 1.307
-(shell option is enabled, the match is performed without re)3.806 F -.05
-(ga)-.15 G 1.307(rd to the case of alphabetic).05 F 3.063
-(characters. An)144 553.2 R 3.063(yp)-.15 G .563(art of the pattern may\
- be quoted to force the quoted portion to be matched as a)-3.063 F 2.943
-(string. Brack)144 565.2 R .443(et e)-.1 F .443(xpressions in re)-.15 F
-.443(gular e)-.15 F .443(xpressions must be treated carefully)-.15 F
-2.944(,s)-.65 G .444(ince normal quoting)-2.944 F .615
-(characters lose their meanings between brack)144 577.2 R 3.115(ets. If)
--.1 F .614(the pattern is stored in a shell v)3.115 F .614
-(ariable, quot-)-.25 F(ing the v)144 589.2 Q(ariable e)-.25 E
-(xpansion forces the entire pattern to be matched as a string.)-.15 E
-.838(The pattern will match if it matches an)144 607.2 R 3.338(yp)-.15 G
-.838(art of the string.)-3.338 F .839(Anchor the pattern using the)5.839
-F F1(^)3.339 E F0(and)3.339 E F1($)3.339 E F0(re)144 619.2 Q .847
-(gular e)-.15 F .846
+(xpression')-.15 E 3.008(sr)-.55 G .509(eturn v)-3.008 F .509
+(alue is 2.)-.25 F .509(If the)5.509 F F2(nocase-)3.009 E(match)144 606
+Q F0 1.307(shell option is enabled, the match is performed without re)
+3.807 F -.05(ga)-.15 G 1.306(rd to the case of alphabetic).05 F 2.599
+(characters. If)144 618 R(an)2.599 E 2.599(yp)-.15 G .099
+(art of the pattern is quoted, the quoted portion is matched literally)
+-2.599 F 5.1(.T)-.65 G .1(his means)-5.1 F -2.15 -.25(ev e)144 630 T
+.032(ry character in the quoted portion matches itself, instead of ha)
+.25 F .031(ving an)-.2 F 2.531(ys)-.15 G .031(pecial pattern matching)
+-2.531 F 3.041(meaning. If)144 642 R .542
+(the pattern is stored in a shell v)3.041 F .542(ariable, quoting the v)
+-.25 F .542(ariable e)-.25 F .542(xpansion forces the en-)-.15 F 1.825
+(tire pattern to be matched literally)144 654 R 6.825(.T)-.65 G 1.825
+(reat brack)-7.175 F 1.825(et e)-.1 F 1.825(xpressions in re)-.15 F
+1.825(gular e)-.15 F 1.825(xpressions carefully)-.15 F(,)-.65 E(since n\
+ormal quoting and pattern characters lose their meanings between brack)
+144 666 Q(ets.)-.1 E .838(The pattern will match if it matches an)144
+684 R 3.338(yp)-.15 G .838(art of the string.)-3.338 F .839
+(Anchor the pattern using the)5.839 F F2(^)3.339 E F0(and)3.339 E F2($)
+3.339 E F0(re)144 696 Q .847(gular e)-.15 F .846
(xpression operators to force it to match the entire string.)-.15 F .846
(The array v)5.846 F(ariable)-.25 E F3 -.27(BA)3.346 G(SH_RE-).27 E(MA)
-144 631.2 Q(TCH)-.855 E F0 .321
+144 708 Q(TCH)-.855 E F0 .321
(records which parts of the string matched the pattern.)2.571 F .322
(The element of)5.322 F F3 -.27(BA)2.822 G(SH_REMA).27 E(TCH)-.855 E F0
-.583(with inde)144 643.2 R 3.083(x0)-.15 G .582
+.583(with inde)144 720 R 3.083(x0)-.15 G .582
(contains the portion of the string matching the entire re)-.001 F .582
-(gular e)-.15 F 3.082(xpression. Substrings)-.15 F .249
-(matched by parenthesized sube)144 655.2 R .249
-(xpressions within the re)-.15 F .249(gular e)-.15 F .249
-(xpression are sa)-.15 F -.15(ve)-.2 G 2.749(di).15 G 2.75(nt)-2.749 G
-.25(he remaining)-2.75 F F3 -.27(BA)144 667.2 S(SH_REMA).27 E(TCH)-.855
-E F0 1.13(indices. The element of)3.38 F F3 -.27(BA)3.63 G(SH_REMA).27 E
-(TCH)-.855 E F0 1.13(with inde)3.38 F(x)-.15 E F2(n)3.63 E F0 1.13
-(is the portion of the)3.63 F(string matching the)144 679.2 Q F2(n)2.5 E
-F0(th parenthesized sube)A(xpression.)-.15 E .785
-(Expressions may be combined using the follo)144 697.2 R .786
-(wing operators, listed in decreasing order of prece-)-.25 F(dence:)144
-709.2 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(5)195.395 E 0 Cg
-EP
+(gular e)-.15 F 3.082(xpression. Substrings)-.15 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(5)190.115 E 0 Cg EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(\()144 84 Q/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E(ession)-.37
-E F1(\))2.5 E F0 .523(Returns the v)180 96 R .522(alue of)-.25 F F2 -.2
-(ex)3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .249
+(matched by parenthesized sube)144 84 R .249(xpressions within the re)
+-.15 F .249(gular e)-.15 F .249(xpression are sa)-.15 F -.15(ve)-.2 G
+2.749(di).15 G 2.75(nt)-2.749 G .25(he remaining)-2.75 F/F1 9
+/Times-Bold@0 SF -.27(BA)144 96 S(SH_REMA).27 E(TCH)-.855 E F0 1.13
+(indices. The element of)3.38 F F1 -.27(BA)3.63 G(SH_REMA).27 E(TCH)
+-.855 E F0 1.13(with inde)3.38 F(x)-.15 E/F2 10/Times-Italic@0 SF(n)3.63
+E F0 1.13(is the portion of the)3.63 F 1.125(string matching the)144 108
+R F2(n)3.625 E F0 1.125(th parenthesized sube)B 3.625(xpression. Bash)
+-.15 F(sets)3.626 E F1 -.27(BA)3.626 G(SH_REMA).27 E(TCH)-.855 E F0
+1.126(in the global)3.376 F(scope; declaring it as a local v)144 120 Q
+(ariable will lead to une)-.25 E(xpected results.)-.15 E .786
+(Expressions may be combined using the follo)144 138 R .785
+(wing operators, listed in decreasing order of prece-)-.25 F(dence:)144
+150 Q/F3 10/Times-Bold@0 SF(\()144 168 Q F2 -.2(ex)2.5 G(pr).2 E(ession)
+-.37 E F3(\))2.5 E F0 .522(Returns the v)180 180 R .522(alue of)-.25 F
+F2 -.2(ex)3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522
(his may be used to o)-5.522 F -.15(ve)-.15 G .522
-(rride the normal precedence of).15 F(operators.)180 108 Q F1(!)144 120
-Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 -.35(Tr)180 132 S(ue if).35 E
+(rride the normal precedence of).15 F(operators.)180 192 Q F3(!)144 204
+Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 -.35(Tr)180 216 S(ue if).35 E
F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0(is f)2.74 E(alse.)-.1 E F2 -.2
-(ex)144 144 S(pr).2 E(ession1)-.37 E F1(&&)2.5 E F2 -.2(ex)2.5 G(pr).2 E
-(ession2)-.37 E F0 -.35(Tr)180 156 S(ue if both).35 E F2 -.2(ex)2.5 G
+(ex)144 228 S(pr).2 E(ession1)-.37 E F3(&&)2.5 E F2 -.2(ex)2.5 G(pr).2 E
+(ession2)-.37 E F0 -.35(Tr)180 240 S(ue if both).35 E F2 -.2(ex)2.5 G
(pr).2 E(ession1)-.37 E F0(and)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)
--.37 E F0(are true.)2.52 E F2 -.2(ex)144 168 S(pr).2 E(ession1)-.37 E F1
-(||)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 180 S
+-.37 E F0(are true.)2.52 E F2 -.2(ex)144 252 S(pr).2 E(ession1)-.37 E F3
+(||)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 264 S
(ue if either).35 E F2 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(or)2.5 E
-F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(is true.)2.52 E(The)144 196.8
-Q F1(&&)2.675 E F0(and)2.675 E F1(||)2.675 E F0 .175(operators do not e)
-2.675 F -.25(va)-.25 G(luate).25 E F2 -.2(ex)2.675 G(pr).2 E(ession2)
--.37 E F0 .175(if the v)2.675 F .175(alue of)-.25 F F2 -.2(ex)2.676 G
-(pr).2 E(ession1)-.37 E F0 .176(is suf)2.676 F .176(\214cient to de-)
--.25 F(termine the return v)144 208.8 Q
-(alue of the entire conditional e)-.25 E(xpression.)-.15 E F1 -.25(fo)
-108 225.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F1(in)A F0([)2.5 E F2
-(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F1(do)A F2(list)2.5
-E F0(;)2.5 E F1(done)2.5 E F0 .424(The list of w)144 237.6 R .424
-(ords follo)-.1 F(wing)-.25 E F1(in)2.924 E F0 .423(is e)2.924 F .423
-(xpanded, generating a list of items.)-.15 F .423(The v)5.423 F(ariable)
--.25 E F2(name)2.923 E F0 .423(is set to)2.923 F .653
-(each element of this list in turn, and)144 249.6 R F2(list)3.153 E F0
+F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(is true.)2.52 E(The)144 280.8
+Q F3(&&)2.676 E F0(and)2.676 E F3(||)2.676 E F0 .175(operators do not e)
+2.676 F -.25(va)-.25 G(luate).25 E F2 -.2(ex)2.675 G(pr).2 E(ession2)
+-.37 E F0 .175(if the v)2.675 F .175(alue of)-.25 F F2 -.2(ex)2.675 G
+(pr).2 E(ession1)-.37 E F0 .175(is suf)2.675 F .175(\214cient to de-)
+-.25 F(termine the return v)144 292.8 Q
+(alue of the entire conditional e)-.25 E(xpression.)-.15 E F3 -.25(fo)
+108 309.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F3(in)A F0([)2.5 E F2
+(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F3(do)A F2(list)2.5
+E F0(;)2.5 E F3(done)2.5 E F0 .423(The list of w)144 321.6 R .423
+(ords follo)-.1 F(wing)-.25 E F3(in)2.923 E F0 .423(is e)2.923 F .423
+(xpanded, generating a list of items.)-.15 F .424(The v)5.424 F(ariable)
+-.25 E F2(name)2.924 E F0 .424(is set to)2.924 F .653
+(each element of this list in turn, and)144 333.6 R F2(list)3.153 E F0
.653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F .653
-(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653
-(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .649(command e)
-144 261.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648
-(once for each positional parameter that is set \(see)3.148 F/F3 9
-/Times-Bold@0 SF -.666(PA)3.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).)
--.25 E .153(The return status is the e)144 273.6 R .153
-(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.654
-(cutes. If).15 F .154(the e)2.654 F .154(xpansion of the items)-.15 F
-(follo)144 285.6 Q(wing)-.25 E F1(in)2.5 E F0
+(If the)5.653 F F3(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653
+(is omitted, the)3.153 F F3 -.25(fo)3.153 G(r).25 E F0 .648(command e)
+144 345.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.148 E F0 .648
+(once for each positional parameter that is set \(see)3.148 F F1 -.666
+(PA)3.149 G(RAMETERS).666 E F0(belo)2.899 E(w\).)-.25 E .154
+(The return status is the e)144 357.6 R .153
+(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.653
+(cutes. If).15 F .153(the e)2.653 F .153(xpansion of the items)-.15 F
+(follo)144 369.6 Q(wing)-.25 E F3(in)2.5 E F0
(results in an empty list, no commands are e)2.5 E -.15(xe)-.15 G
-(cuted, and the return status is 0.).15 E F1 -.25(fo)108 302.4 S(r).25 E
+(cuted, and the return status is 0.).15 E F3 -.25(fo)108 386.4 S(r).25 E
F0(\(\()2.5 E F2 -.2(ex)2.5 G(pr1).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr2).2
-E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F1(do)2.5 E F2
-(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.236(First, the arithmetic e)
-144 314.4 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e)
-3.736 F -.25(va)-.25 G 1.235
-(luated according to the rules described belo).25 F 3.735(wu)-.25 G
-(nder)-3.735 E F3 .561(ARITHMETIC EV)144 326.4 R(ALU)-1.215 E -.855(AT)
--.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561(The arithmetic e)
-5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 .562(is then e)
-3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F .592(it e)144
-338.4 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F
+E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F3(do)2.5 E F2
+(list)2.5 E F0(;)2.5 E F3(done)2.5 E F0 1.235(First, the arithmetic e)
+144 398.4 R(xpression)-.15 E F2 -.2(ex)3.735 G(pr1).2 E F0 1.235(is e)
+3.735 F -.25(va)-.25 G 1.236
+(luated according to the rules described belo).25 F 3.736(wu)-.25 G
+(nder)-3.736 E F1 .562(ARITHMETIC EV)144 410.4 R(ALU)-1.215 E -.855(AT)
+-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .562(The arithmetic e)
+5.062 F(xpression)-.15 E F2 -.2(ex)3.062 G(pr2).2 E F0 .561(is then e)
+3.061 F -.25(va)-.25 G .561(luated repeatedly until).25 F .591(it e)144
+422.4 R -.25(va)-.25 G .591(luates to zero.).25 F .592(Each time)5.591 F
F2 -.2(ex)3.092 G(pr2).2 E F0 -.25(eva)3.092 G .592
-(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .591(is e)
-3.092 F -.15(xe)-.15 G .591(cuted and the arith-).15 F .228(metic e)144
-350.4 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F
+(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .592(is e)
+3.092 F -.15(xe)-.15 G .592(cuted and the arith-).15 F .229(metic e)144
+434.4 R(xpression)-.15 E F2 -.2(ex)2.729 G(pr3).2 E F0 .229(is e)2.729 F
-.25(va)-.25 G 2.729(luated. If).25 F(an)2.729 E 2.729(ye)-.15 G .229
(xpression is omitted, it beha)-2.879 F -.15(ve)-.2 G 2.729(sa).15 G
-2.729(si)-2.729 G 2.729(fi)-2.729 G 2.729(te)-2.729 G -.25(va)-2.979 G
-.229(luates to 1.).25 F .228(The return v)144 362.4 R .228
-(alue is the e)-.25 F .228(xit status of the last command in)-.15 F F2
-(list)2.728 E F0 .227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f)
-.15 F .227(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727
-E -.15(ex)144 374.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1
-(select)108 391.2 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d)
--.37 E F0 2.5(];)2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0
-.432(The list of w)144 403.2 R .432(ords follo)-.1 F(wing)-.25 E F1(in)
-2.932 E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.)
--.15 F .433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843
-(is printed on the standard error)144 415.2 R 3.342(,e)-.4 G .842
-(ach preceded by a number)-3.342 F 5.842(.I)-.55 G 3.342(ft)-5.842 G(he)
--3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .842
-(is omitted, the posi-)3.342 F .201(tional parameters are printed \(see)
-144 427.2 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701
-(w\). The)-.25 F F3(PS3)2.701 E F0 .201(prompt is then displayed and a)
-2.451 F .214(line read from the standard input.)144 439.2 R .213
-(If the line consists of a number corresponding to one of the dis-)5.214
-F 1.537(played w)144 451.2 R 1.537(ords, then the v)-.1 F 1.537(alue of)
--.25 F F2(name)4.397 E F0 1.537(is set to that w)4.217 F 4.037(ord. If)
--.1 F 1.538(the line is empty)4.038 F 4.038(,t)-.65 G 1.538(he w)-4.038
-F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 463.2 R 2.566
-(ain. If)-.05 F .065(EOF is read, the command completes.)2.566 F(An)
-5.065 E 2.565(yo)-.15 G .065(ther v)-2.565 F .065(alue read causes)-.25
-F F2(name)144.36 475.2 Q F0 .953(to be set to null.)3.633 F .953
-(The line read is sa)5.953 F -.15(ve)-.2 G 3.454(di).15 G 3.454(nt)
--3.454 G .954(he v)-3.454 F(ariable)-.25 E F3(REPL)3.454 E(Y)-.828 E F4
-(.)A F0(The)5.454 E F2(list)3.544 E F0 .954(is e)4.134 F -.15(xe)-.15 G
-.954(cuted after).15 F .072(each selection until a)144 487.2 R F1(br)
-2.571 E(eak)-.18 E F0 .071(command is e)2.571 F -.15(xe)-.15 G 2.571
-(cuted. The).15 F -.15(ex)2.571 G .071(it status of).15 F F1(select)
-2.571 E F0 .071(is the e)2.571 F .071(xit status of the)-.15 F
-(last command e)144 499.2 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.59 E
-F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e)-2.5 E -.15(xe)
--.15 G(cuted.).15 E F1(case)108 516 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 E
-F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2
-(pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0(;; ] ...)
-2.5 E F1(esac)2.5 E F0(A)144 528 Q F1(case)3.264 E F0 .764
-(command \214rst e)3.264 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0
+2.729(si)-2.729 G 2.729(fi)-2.729 G 2.728(te)-2.729 G -.25(va)-2.978 G
+.228(luates to 1.).25 F .227(The return v)144 446.4 R .227
+(alue is the e)-.25 F .227(xit status of the last command in)-.15 F F2
+(list)2.728 E F0 .228(that is e)2.728 F -.15(xe)-.15 G .228(cuted, or f)
+.15 F .228(alse if an)-.1 F 2.728(yo)-.15 G 2.728(ft)-2.728 G(he)-2.728
+E -.15(ex)144 458.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F3
+(select)108 475.2 Q F2(name)2.5 E F0([)2.5 E F3(in)2.5 E F2(wor)2.5 E(d)
+-.37 E F0 2.5(];)2.5 G F3(do)A F2(list)2.5 E F0(;)2.5 E F3(done)2.5 E F0
+1.358(The list of w)144 487.2 R 1.358(ords follo)-.1 F(wing)-.25 E F3
+(in)3.858 E F0 1.358(is e)3.858 F 1.357
+(xpanded, generating a list of items, and the set of e)-.15 F(xpanded)
+-.15 E -.1(wo)144 499.2 S .601(rds is printed on the standard error).1 F
+3.101(,e)-.4 G .601(ach preceded by a number)-3.101 F 5.601(.I)-.55 G
+3.101(ft)-5.601 G(he)-3.101 E F3(in)3.101 E F2(wor)3.101 E(d)-.37 E F0
+.602(is omitted, the)3.101 F .188
+(positional parameters are printed \(see)144 511.2 R F1 -.666(PA)2.688 G
+(RAMETERS).666 E F0(belo)2.438 E(w\).)-.25 E F3(select)5.188 E F0 .188
+(then displays the)2.688 F F1(PS3)2.687 E F0(prompt)2.437 E .46
+(and reads a line from the standard input.)144 523.2 R .461
+(If the line consists of a number corresponding to one of)5.46 F .141
+(the displayed w)144 535.2 R .141(ords, then the v)-.1 F .141(alue of)
+-.25 F F2(name)3.001 E F0 .141(is set to that w)2.821 F 2.641(ord. If)
+-.1 F .141(the line is empty)2.641 F 2.641(,t)-.65 G .141(he w)-2.641 F
+.141(ords and)-.1 F 1.048(prompt are displayed ag)144 547.2 R 3.548
+(ain. If)-.05 F 1.048(EOF is read, the)3.548 F F3(select)3.548 E F0
+1.048(command completes and returns 1.)3.548 F(An)6.048 E(y)-.15 E .32
+(other v)144 559.2 R .32(alue read causes)-.25 F F2(name)3.18 E F0 .32
+(to be set to null.)3 F .32(The line read is sa)5.32 F -.15(ve)-.2 G
+2.82(di).15 G 2.82(nt)-2.82 G .319(he v)-2.82 F(ariable)-.25 E F1(REPL)
+2.819 E(Y)-.828 E F4(.)A F0(The)4.819 E F2(list)144.09 571.2 Q F0 .055
+(is e)3.235 F -.15(xe)-.15 G .056(cuted after each selection until a).15
+F F3(br)2.556 E(eak)-.18 E F0 .056(command is e)2.556 F -.15(xe)-.15 G
+2.556(cuted. The).15 F -.15(ex)2.556 G .056(it status of).15 F F3
+(select)2.556 E F0(is)2.556 E(the e)144 583.2 Q
+(xit status of the last command e)-.15 E -.15(xe)-.15 G(cuted in).15 E
+F2(list)2.59 E F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e)
+-2.5 E -.15(xe)-.15 G(cuted.).15 E F3(case)108 600 Q F2(wor)2.5 E(d)-.37
+E F3(in)2.5 E F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F3
+(|)2.5 E F2(pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0
+(;; ] ...)2.5 E F3(esac)2.5 E F0(A)144 612 Q F3(case)3.265 E F0 .764
+(command \214rst e)3.265 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0
3.264(,a)C .764(nd tries to match it ag)-3.264 F .764(ainst each)-.05 F
-F2(pattern)3.264 E F0 .765(in turn, using the)3.264 F .884
-(matching rules described under)144 540 R F1 -.1(Pa)3.384 G(tter).1 E
+F2(pattern)3.264 E F0 .764(in turn, using the)3.264 F .883
+(matching rules described under)144 624 R F3 -.1(Pa)3.384 G(tter).1 E
3.384(nM)-.15 G(atching)-3.384 E F0(belo)3.384 E 4.684 -.65(w. T)-.25 H
-(he).65 E F2(wor)3.384 E(d)-.37 E F0 .884(is e)3.384 F .883
+(he).65 E F2(wor)3.384 E(d)-.37 E F0 .884(is e)3.384 F .884
(xpanded using tilde e)-.15 F(x-)-.15 E .95(pansion, parameter and v)144
-552 R .95(ariable e)-.25 F .95(xpansion, arithmetic e)-.15 F .95
-(xpansion, command substitution, process)-.15 F .181
-(substitution and quote remo)144 564 R -.25(va)-.15 G 2.681(l. Each).25
+636 R .95(ariable e)-.25 F .95(xpansion, arithmetic e)-.15 F .95
+(xpansion, command substitution, process)-.15 F .18
+(substitution and quote remo)144 648 R -.25(va)-.15 G 2.681(l. Each).25
F F2(pattern)2.681 E F0 -.15(ex)2.681 G .181(amined is e).15 F .181
-(xpanded using tilde e)-.15 F .18(xpansion, param-)-.15 F .103
-(eter and v)144 576 R .103(ariable e)-.25 F .103(xpansion, arithmetic e)
--.15 F .103(xpansion, command substitution, and process substitution.)
--.15 F .687(If the)144 588 R F1(nocasematch)3.187 E F0 .687
-(shell option is enabled, the match is performed without re)3.187 F -.05
-(ga)-.15 G .687(rd to the case of).05 F .464(alphabetic characters.)144
-600 R .464(When a match is found, the corresponding)5.464 F F2(list)
-2.964 E F0 .464(is e)2.964 F -.15(xe)-.15 G 2.964(cuted. If).15 F(the)
-2.964 E F1(;;)2.964 E F0(opera-)2.964 E .675(tor is used, no subsequent\
- matches are attempted after the \214rst pattern match.)144 612 R(Using)
-5.674 E F1(;&)3.174 E F0 .674(in place)3.174 F(of)144 624 Q F1(;;)2.866
-E F0 .366(causes e)2.866 F -.15(xe)-.15 G .366
-(cution to continue with the).15 F F2(list)2.866 E F0 .367
-(associated with the ne)2.866 F .367(xt set of patterns.)-.15 F(Using)
-5.367 E F1(;;&)2.867 E F0 .596(in place of)144 636 R F1(;;)3.096 E F0
-.596(causes the shell to test the ne)3.096 F .595
-(xt pattern list in the statement, if an)-.15 F 1.895 -.65(y, a)-.15 H
-.595(nd e).65 F -.15(xe)-.15 G .595(cute an).15 F(y)-.15 E(associated)
-144 648 Q F2(list)2.96 E F0 .461
-(on a successful match, continuing the case statement e)2.96 F -.15(xe)
--.15 G .461(cution as if the pattern list).15 F .677(had not matched.)
-144 660 R .677(The e)5.677 F .677
-(xit status is zero if no pattern matches.)-.15 F .676
-(Otherwise, it is the e)5.677 F .676(xit status of)-.15 F
-(the last command e)144 672 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5
-E F0(.)A F1(if)108 688.8 Q F2(list)2.5 E F0(;)A F1(then)2.5 E F2(list)
-2.5 E F0 2.5(;[)C F1(elif)A F2(list)2.5 E F0(;)A F1(then)2.5 E F2(list)
-2.5 E F0 2.5(;].)C(.. [)-2.5 E F1(else)2.5 E F2(list)2.5 E F0 2.5(;])C
-F1<8c>A F0(The)144 700.8 Q F1(if)2.977 E F2(list)3.067 E F0 .478(is e)
-3.658 F -.15(xe)-.15 G 2.978(cuted. If).15 F .478(its e)2.978 F .478
-(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 .478
-(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each)2.978 E
-F1(elif)2.978 E F2(list)2.978 E F0 1.088(is e)144 712.8 R -.15(xe)-.15 G
-1.088(cuted in turn, and if its e).15 F 1.087
-(xit status is zero, the corresponding)-.15 F F1(then)3.587 E F2(list)
-3.587 E F0 1.087(is e)3.587 F -.15(xe)-.15 G 1.087(cuted and the).15 F
-1.239(command completes.)144 724.8 R 1.239(Otherwise, the)6.239 F F1
-(else)3.739 E F2(list)3.739 E F0 1.239(is e)3.739 F -.15(xe)-.15 G 1.239
-(cuted, if present.).15 F 1.24(The e)6.239 F 1.24(xit status is the e)
--.15 F(xit)-.15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(6)
-195.395 E 0 Cg EP
+(xpanded using tilde e)-.15 F .181(xpansion, param-)-.15 F .103
+(eter and v)144 660 R .103(ariable e)-.25 F .103(xpansion, arithmetic e)
+-.15 F .103(xpansion, command substitution, process substitution, and)
+-.15 F .138(quote remo)144 672 R -.25(va)-.15 G 2.638(l. If).25 F(the)
+2.638 E F3(nocasematch)2.638 E F0 .139
+(shell option is enabled, the match is performed without re)2.638 F -.05
+(ga)-.15 G(rd).05 E .209(to the case of alphabetic characters.)144 684 R
+.209(When a match is found, the corresponding)5.209 F F2(list)2.708 E F0
+.208(is e)2.708 F -.15(xe)-.15 G 2.708(cuted. If).15 F(the)144 696 Q F3
+(;;)3.349 E F0 .849(operator is used, no subsequent matches are attempt\
+ed after the \214rst pattern match.)3.349 F(Using)5.85 E F3(;&)144 708 Q
+F0 .254(in place of)2.754 F F3(;;)2.754 E F0 .254(causes e)2.754 F -.15
+(xe)-.15 G .254(cution to continue with the).15 F F2(list)2.754 E F0
+.254(associated with the ne)2.754 F .253(xt set of patterns.)-.15 F
+(Using)144 720 Q F3(;;&)3.378 E F0 .878(in place of)3.378 F F3(;;)3.378
+E F0 .878(causes the shell to test the ne)3.378 F .878
+(xt pattern list in the statement, if an)-.15 F 2.178 -.65(y, a)-.15 H
+(nd).65 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(6)190.115 E
+0 Cg EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(status of the last command e)144 84 Q -.15(xe)-.15 G
-(cuted, or zero if no condition tested true.).15 E/F1 10/Times-Bold@0 SF
-(while)108 100.8 Q/F2 10/Times-Italic@0 SF(list-1)2.5 E F0(;)A F1(do)2.5
-E F2(list-2)2.5 E F0(;)A F1(done)2.5 E(until)108 112.8 Q F2(list-1)2.5 E
-F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 124.8
-Q F1(while)3.45 E F0 .95(command continuously e)3.45 F -.15(xe)-.15 G
-.95(cutes the list).15 F F2(list-2)3.45 E F0 .95
-(as long as the last command in the list)3.45 F F2(list-1)144 136.8 Q F0
-.205(returns an e)2.705 F .205(xit status of zero.)-.15 F(The)5.205 E F1
-(until)2.705 E F0 .205(command is identical to the)2.705 F F1(while)
-2.705 E F0 .205(command, e)2.705 F(xcept)-.15 E .6(that the test is ne)
-144 148.8 R -.05(ga)-.15 G(ted:).05 E F2(list-2)3.19 E F0 .6(is e)3.12 F
--.15(xe)-.15 G .599(cuted as long as the last command in).15 F F2
-(list-1)3.189 E F0 .599(returns a non-zero)3.099 F -.15(ex)144 160.8 S
-.204(it status.).15 F .204(The e)5.204 F .204(xit status of the)-.15 F
-F1(while)2.704 E F0(and)2.704 E F1(until)2.704 E F0 .205
-(commands is the e)2.704 F .205(xit status of the last command)-.15 F
--.15(exe)144 172.8 S(cuted in).15 E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)
--2.5 G(ero if none w)-2.5 E(as e)-.1 E -.15(xe)-.15 G(cuted.).15 E F1
-(Copr)87 189.6 Q(ocesses)-.18 E F0(A)108 201.6 Q F2(copr)3.713 E(ocess)
--.45 E F0 1.213(is a shell command preceded by the)3.713 F F1(copr)3.712
-E(oc)-.18 E F0(reserv)3.712 E 1.212(ed w)-.15 F 3.712(ord. A)-.1 F 1.212
-(coprocess is e)3.712 F -.15(xe)-.15 G 1.212(cuted asyn-).15 F .574(chr\
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(exe)144 84 S
+.159(cute an).15 F 2.659(ya)-.15 G(ssociated)-2.659 E/F1 10
+/Times-Italic@0 SF(list)2.659 E F0 .159
+(on a successful match, continuing the case statement e)2.659 F -.15(xe)
+-.15 G .158(cution as if the).15 F .182(pattern list had not matched.)
+144 96 R .183(The e)5.183 F .183
+(xit status is zero if no pattern matches.)-.15 F .183
+(Otherwise, it is the e)5.183 F(xit)-.15 E(status of the last command e)
+144 108 Q -.15(xe)-.15 G(cuted in).15 E F1(list)2.5 E F0(.)A/F2 10
+/Times-Bold@0 SF(if)108 124.8 Q F1(list)2.5 E F0(;)A F2(then)2.5 E F1
+(list)2.5 E F0 2.5(;[)C F2(elif)A F1(list)2.5 E F0(;)A F2(then)2.5 E F1
+(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F2(else)2.5 E F1(list)2.5 E F0 2.5
+(;])C F2<8c>A F0(The)144 136.8 Q F2(if)2.978 E F1(list)3.068 E F0 .478
+(is e)3.658 F -.15(xe)-.15 G 2.978(cuted. If).15 F .478(its e)2.978 F
+.478(xit status is zero, the)-.15 F F2(then)2.978 E F1(list)2.978 E F0
+.478(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each)
+2.978 E F2(elif)2.977 E F1(list)2.977 E F0 1.087(is e)144 148.8 R -.15
+(xe)-.15 G 1.087(cuted in turn, and if its e).15 F 1.087
+(xit status is zero, the corresponding)-.15 F F2(then)3.587 E F1(list)
+3.587 E F0 1.088(is e)3.588 F -.15(xe)-.15 G 1.088(cuted and the).15 F
+.104(command completes.)144 160.8 R .103(Otherwise, the)5.104 F F2(else)
+2.603 E F1(list)2.603 E F0 .103(is e)2.603 F -.15(xe)-.15 G .103
+(cuted, if present.).15 F .103(The e)5.103 F .103(xit status is the e)
+-.15 F .103(xit sta-)-.15 F(tus of the last command e)144 172.8 Q -.15
+(xe)-.15 G(cuted, or zero if no condition tested true.).15 E F2(while)
+108 189.6 Q F1(list-1)2.5 E F0(;)A F2(do)2.5 E F1(list-2)2.5 E F0(;)A F2
+(done)2.5 E(until)108 201.6 Q F1(list-1)2.5 E F0(;)A F2(do)2.5 E F1
+(list-2)2.5 E F0(;)A F2(done)2.5 E F0(The)144 213.6 Q F2(while)3.45 E F0
+.95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list).15
+F F1(list-2)3.45 E F0 .95(as long as the last command in the list)3.45 F
+F1(list-1)144 225.6 Q F0 .205(returns an e)2.705 F .205
+(xit status of zero.)-.15 F(The)5.205 E F2(until)2.705 E F0 .205
+(command is identical to the)2.705 F F2(while)2.705 E F0 .205
+(command, e)2.705 F(xcept)-.15 E .599(that the test is ne)144 237.6 R
+-.05(ga)-.15 G(ted:).05 E F1(list-2)3.189 E F0 .599(is e)3.119 F -.15
+(xe)-.15 G .6(cuted as long as the last command in).15 F F1(list-1)3.19
+E F0 .6(returns a non-zero)3.1 F -.15(ex)144 249.6 S .205(it status.).15
+F .205(The e)5.205 F .205(xit status of the)-.15 F F2(while)2.705 E F0
+(and)2.705 E F2(until)2.704 E F0 .204(commands is the e)2.704 F .204
+(xit status of the last command)-.15 F -.15(exe)144 261.6 S(cuted in).15
+E F1(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e)
+-.1 E -.15(xe)-.15 G(cuted.).15 E F2(Copr)87 278.4 Q(ocesses)-.18 E F0
+(A)108 290.4 Q F1(copr)3.712 E(ocess)-.45 E F0 1.212
+(is a shell command preceded by the)3.712 F F2(copr)3.713 E(oc)-.18 E F0
+(reserv)3.713 E 1.213(ed w)-.15 F 3.713(ord. A)-.1 F 1.213
+(coprocess is e)3.713 F -.15(xe)-.15 G 1.213(cuted asyn-).15 F .575(chr\
onously in a subshell, as if the command had been terminated with the)
-108 213.6 R F1(&)3.075 E F0 .575(control operator)3.075 F 3.075(,w)-.4 G
-.575(ith a tw)-3.075 F(o-)-.1 E -.1(wa)108 225.6 S 2.5(yp).1 G
+108 302.4 R F2(&)3.074 E F0 .574(control operator)3.074 F 3.074(,w)-.4 G
+.574(ith a tw)-3.074 F(o-)-.1 E -.1(wa)108 314.4 S 2.5(yp).1 G
(ipe established between the e)-2.5 E -.15(xe)-.15 G
-(cuting shell and the coprocess.).15 E(The format for a coprocess is:)
-108 242.4 Q F1(copr)144 259.2 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27
-E F0(])A F2(command)2.5 E F0([)2.5 E F2 -.37(re)C(dir).37 E(ections)-.37
-E F0(])A .709(This creates a coprocess named)108 276 R F2 -.27(NA)3.208
-G(ME).27 E F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 .708
-(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)3.208
-E(OC)-.3 E F0(.)A F2 -.27(NA)5.708 G(ME).27 E F0 .64
-(must not be supplied if)108 288 R F2(command)3.14 E F0 .64(is a)3.14 F
-F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G .64
-(\); otherwise, it is interpreted as the \214rst).15 F -.1(wo)108 300 S
-.349(rd of the simple command.).1 F .348(When the coprocess is e)5.348 F
--.15(xe)-.15 G .348(cuted, the shell creates an array v).15 F .348
-(ariable \(see)-.25 F F1(Ar)2.848 E(-)-.37 E(rays)108 312 Q F0(belo)
-3.095 E .595(w\) named)-.25 F F2 -.27(NA)3.095 G(ME).27 E F0 .595
-(in the conte)3.095 F .595(xt of the e)-.15 F -.15(xe)-.15 G .595
-(cuting shell.).15 F .596(The standard output of)5.595 F F2(command)
-3.296 E F0 .596(is con-)3.866 F .387
-(nected via a pipe to a \214le descriptor in the e)108 324 R -.15(xe)
--.15 G .387(cuting shell, and that \214le descriptor is assigned to).15
-F F2 -.27(NA)2.886 G(ME).27 E F0([0].)A .57(The standard input of)108
-336 R F2(command)3.27 E F0 .571
-(is connected via a pipe to a \214le descriptor in the e)3.84 F -.15(xe)
--.15 G .571(cuting shell, and that).15 F 1.221
-(\214le descriptor is assigned to)108 348 R F2 -.27(NA)3.721 G(ME).27 E
-F0 3.721([1]. This)B 1.221(pipe is established before an)3.721 F 3.72
-(yr)-.15 G 1.22(edirections speci\214ed by the)-3.72 F 1.58
-(command \(see)108 360 R/F3 9/Times-Bold@0 SF(REDIRECTION)4.08 E F0
-(belo)3.83 E 4.08(w\). The)-.25 F 1.581
-(\214le descriptors can be utilized as ar)4.08 F 1.581
-(guments to shell com-)-.18 F .149
-(mands and redirections using standard w)108 372 R .149(ord e)-.1 F
-2.649(xpansions. Other)-.15 F .148(than those created to e)2.649 F -.15
-(xe)-.15 G .148(cute command and).15 F 2.462
-(process substitutions, the \214le descriptors are not a)108 384 R -.25
-(va)-.2 G 2.463(ilable in subshells.).25 F 2.463
-(The process ID of the shell)7.463 F(spa)108 396 Q 1.115(wned to e)-.15
-F -.15(xe)-.15 G 1.115(cute the coprocess is a).15 F -.25(va)-.2 G 1.115
-(ilable as the v).25 F 1.115(alue of the v)-.25 F(ariable)-.25 E F2 -.27
-(NA)3.615 G(ME).27 E F0 3.615(_PID. The)B F1(wait)3.615 E F0 -.2(bu)
-3.615 G(iltin).2 E(command may be used to w)108 408 Q
+(cuting shell and the coprocess.).15 E(The syntax for a coprocess is:)
+108 331.2 Q F2(copr)144 348 Q(oc)-.18 E F0([)2.5 E F1 -.27(NA)C(ME).27 E
+F0(])A F1(command)2.5 E F0([)2.5 E F1 -.37(re)C(dir).37 E(ections)-.37 E
+F0(])A .598(This creates a coprocess named)108 364.8 R F1 -.27(NA)3.099
+G(ME).27 E F0(.)A F1(command)5.599 E F0 .599
+(may be either a simple command or a compound com-)3.099 F 1.4
+(mand \(see abo)108 376.8 R -.15(ve)-.15 G(\).).15 E F1 -.27(NA)6.4 G
+(ME).27 E F0 1.4(is a shell v)3.9 F 1.4(ariable name.)-.25 F(If)6.4 E F1
+-.27(NA)3.9 G(ME).27 E F0 1.4(is not supplied, the def)3.9 F 1.4
+(ault name is)-.1 F F2(CO-)3.9 E(PR)108 388.8 Q(OC)-.3 E F0(.)A
+(The recommended form to use for a coprocess is)108 405.6 Q F2(copr)144
+422.4 Q(oc)-.18 E F1 -.27(NA)2.5 G(ME).27 E F0({)2.5 E F1(command)2.5 E
+F0([)2.5 E F1 -.37(re)C(dir).37 E(ections)-.37 E F0(]; })A 1.313(This f\
+orm is recommended because simple commands result in the coprocess al)
+108 439.2 R -.1(wa)-.1 G 1.313(ys being named).1 F F2(CO-)3.813 E(PR)108
+451.2 Q(OC)-.3 E F0 2.5(,a)C(nd it is simpler to use and more complete \
+than the other compound commands.)-2.5 E(If)108 468 Q F1(command)3.062 E
+F0 .562(is a compound command,)3.062 F F1 -.27(NA)3.062 G(ME).27 E F0
+.561(is optional. The w)3.061 F .561(ord follo)-.1 F(wing)-.25 E F2
+(copr)3.061 E(oc)-.18 E F0 .561(determines whether)3.061 F .338(that w)
+108 480 R .338(ord is interpreted as a v)-.1 F .338
+(ariable name: it is interpreted as)-.25 F F1 -.27(NA)2.839 G(ME).27 E
+F0 .339(if it is not a reserv)2.839 F .339(ed w)-.15 F .339
+(ord that intro-)-.1 F 1.122(duces a compound command.)108 492 R(If)
+6.121 E F1(command)3.621 E F0 1.121(is a simple command,)3.621 F F1 -.27
+(NA)3.621 G(ME).27 E F0 1.121(is not allo)3.621 F 1.121
+(wed; this is to a)-.25 F -.2(vo)-.2 G(id).2 E(confusion between)108 504
+Q F1 -.27(NA)2.5 G(ME).27 E F0(and the \214rst w)2.5 E
+(ord of the simple command.)-.1 E .09(When the coprocess is e)108 520.8
+R -.15(xe)-.15 G .09(cuted, the shell creates an array v).15 F .09
+(ariable \(see)-.25 F F2(Arrays)2.59 E F0(belo)2.59 E .09(w\) named)-.25
+F F1 -.27(NA)2.59 G(ME).27 E F0 .09(in the)2.59 F(conte)108 532.8 Q .303
+(xt of the e)-.15 F -.15(xe)-.15 G .303(cuting shell.).15 F .302
+(The standard output of)5.302 F F1(command)3.002 E F0 .302
+(is connected via a pipe to a \214le descriptor)3.572 F .587(in the e)
+108 544.8 R -.15(xe)-.15 G .587
+(cuting shell, and that \214le descriptor is assigned to).15 F F1 -.27
+(NA)3.087 G(ME).27 E F0 3.087([0]. The)B .587(standard input of)3.087 F
+F1(command)3.287 E F0(is)3.858 E 2.029
+(connected via a pipe to a \214le descriptor in the e)108 556.8 R -.15
+(xe)-.15 G 2.029
+(cuting shell, and that \214le descriptor is assigned to).15 F F1 -.27
+(NA)108 568.8 S(ME).27 E F0 2.879([1]. This)B .379
+(pipe is established before an)2.879 F 2.879(yr)-.15 G .379
+(edirections speci\214ed by the command \(see)-2.879 F/F3 9/Times-Bold@0
+SF(REDIRECTION)2.879 E F0(belo)108 580.8 Q 3.426(w\). The)-.25 F .926
+(\214le descriptors can be utilized as ar)3.426 F .925
+(guments to shell commands and redirections using stan-)-.18 F .286
+(dard w)108 592.8 R .286(ord e)-.1 F 2.786(xpansions. Other)-.15 F .286
+(than those created to e)2.786 F -.15(xe)-.15 G .286
+(cute command and process substitutions, the \214le de-).15 F
+(scriptors are not a)108 604.8 Q -.25(va)-.2 G(ilable in subshells.).25
+E 1.676(The process ID of the shell spa)108 621.6 R 1.676(wned to e)-.15
+F -.15(xe)-.15 G 1.676(cute the coprocess is a).15 F -.25(va)-.2 G 1.676
+(ilable as the v).25 F 1.676(alue of the v)-.25 F(ariable)-.25 E F1 -.27
+(NA)108 633.6 S(ME).27 E F0 2.5(_PID. The)B F2(wait)2.5 E F0 -.2(bu)2.5
+G(iltin command may be used to w).2 E
(ait for the coprocess to terminate.)-.1 E .336
(Since the coprocess is created as an asynchronous command, the)108
-424.8 R F1(copr)2.836 E(oc)-.18 E F0 .336(command al)2.836 F -.1(wa)-.1
+650.4 R F2(copr)2.836 E(oc)-.18 E F0 .336(command al)2.836 F -.1(wa)-.1
G .336(ys returns success.).1 F
-(The return status of a coprocess is the e)108 436.8 Q(xit status of)
--.15 E F2(command)2.5 E F0(.)A F1(Shell Function De\214nitions)87 453.6
-Q F0 2.698(As)108 465.6 S .198
+(The return status of a coprocess is the e)108 662.4 Q(xit status of)
+-.15 E F1(command)2.5 E F0(.)A F2(Shell Function De\214nitions)87 679.2
+Q F0 2.698(As)108 691.2 S .198
(hell function is an object that is called lik)-2.698 F 2.698(eas)-.1 G
.198(imple command and e)-2.698 F -.15(xe)-.15 G .197
-(cutes a compound command with).15 F 2.5(an)108 477.6 S .5 -.25(ew s)
+(cutes a compound command with).15 F 2.5(an)108 703.2 S .5 -.25(ew s)
-2.5 H(et of positional parameters.).25 E
-(Shell functions are declared as follo)5 E(ws:)-.25 E F2(fname)108 494.4
-Q F0(\(\))2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C
-(dir).37 E(ection)-.37 E F0(])A F1(function)108 506.4 Q F2(fname)2.5 E
-F0([\(\)])2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C
-(dir).37 E(ection)-.37 E F0(])A .216(This de\214nes a function named)144
-518.4 R F2(fname)2.716 E F0 5.217(.T)C .217(he reserv)-5.217 F .217
-(ed w)-.15 F(ord)-.1 E F1(function)2.717 E F0 .217(is optional.)2.717 F
-.217(If the)5.217 F F1(function)2.717 E F0(re-)2.717 E(serv)144 530.4 Q
-.68(ed w)-.15 F .68(ord is supplied, the parentheses are optional.)-.1 F
-(The)5.68 E F2(body)3.18 E F0 .68(of the function is the compound)3.18 F
-(command)144 542.4 Q F2(compound\255command)2.784 E F0(\(see)3.354 E F1
-.084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G 2.584
-(\). That).15 F .084(command is usually a)2.584 F F2(list)144 554.4 Q F0
-.044(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F
-2.544(yc)-.15 G .044(ommand listed under)-2.544 F F1 .044
-(Compound Commands)2.544 F F0(abo)144 566.4 Q -.15(ve)-.15 G 2.901(,w)
-.15 G .401(ith one e)-2.901 F .401(xception: If the)-.15 F F1(function)
-2.901 E F0(reserv)2.901 E .401(ed w)-.15 F .401(ord is used, b)-.1 F
-.402(ut the parentheses are not sup-)-.2 F 1.046
-(plied, the braces are required.)144 578.4 R F2(compound\255command)
-6.046 E F0 1.046(is e)3.546 F -.15(xe)-.15 G 1.046(cuted whene).15 F
--.15(ve)-.25 G(r).15 E F2(fname)3.546 E F0 1.045(is speci\214ed as)3.546
-F .365(the name of a simple command.)144 590.4 R .365(When in)5.365 F F2
-.366(posix mode)2.865 F F0(,)A F2(fname)2.866 E F0 .366(must be a v)
-2.866 F .366(alid shell)-.25 F F2(name)2.866 E F0 .366(and may)2.866 F
-.894(not be the name of one of the POSIX)144 602.4 R F2 .893(special b)
-3.393 F(uiltins)-.2 E F0 5.893(.I)C 3.393(nd)-5.893 G(ef)-3.393 E .893
-(ault mode, a function name can be)-.1 F(an)144 614.4 Q 3.649(yu)-.15 G
-1.149(nquoted shell w)-3.649 F 1.15(ord that does not contain)-.1 F F1
-($)3.65 E F0 6.15(.A)C 1.45 -.15(ny r)-6.15 H 1.15(edirections \(see).15
-F F3(REDIRECTION)3.65 E F0(belo)3.4 E(w\))-.25 E .417(speci\214ed when \
-a function is de\214ned are performed when the function is e)144 626.4 R
--.15(xe)-.15 G 2.916(cuted. The).15 F -.15(ex)2.916 G .416(it status).15
-F .733(of a function de\214nition is zero unless a syntax error occurs \
-or a readonly function with the same)144 638.4 R .178(name already e)144
-650.4 R 2.678(xists. When)-.15 F -.15(exe)2.678 G .178(cuted, the e).15
-F .178(xit status of a function is the e)-.15 F .177
-(xit status of the last com-)-.15 F(mand e)144 662.4 Q -.15(xe)-.15 G
-(cuted in the body).15 E 5(.\()-.65 G(See)-5 E F3(FUNCTIONS)2.5 E F0
+(Shell functions are declared as follo)5 E(ws:)-.25 E(GNU Bash 5.2)72
+768 Q(2022 September 19)135.955 E(7)190.115 E 0 Cg EP
+%%Page: 8 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF(fname)108 84 Q F0(\(\))2.5 E F1(compound\255command)
+2.5 E F0([)2.5 E F1 -.37(re)C(dir).37 E(ection)-.37 E F0(])A/F2 10
+/Times-Bold@0 SF(function)108 96 Q F1(fname)2.5 E F0([\(\)])2.5 E F1
+(compound\255command)2.5 E F0([)2.5 E F1 -.37(re)C(dir).37 E(ection)-.37
+E F0(])A .216(This de\214nes a function named)144 108 R F1(fname)2.716 E
+F0 5.217(.T)C .217(he reserv)-5.217 F .217(ed w)-.15 F(ord)-.1 E F2
+(function)2.717 E F0 .217(is optional.)2.717 F .217(If the)5.217 F F2
+(function)2.717 E F0(re-)2.717 E(serv)144 120 Q .68(ed w)-.15 F .68
+(ord is supplied, the parentheses are optional.)-.1 F(The)5.68 E F1
+(body)3.18 E F0 .68(of the function is the compound)3.18 F(command)144
+132 Q F1(compound\255command)2.784 E F0(\(see)3.354 E F2 .084
+(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G 2.584(\). That)
+.15 F .084(command is usually a)2.584 F F1(list)144 144 Q F0 .044
+(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F 2.544
+(yc)-.15 G .044(ommand listed under)-2.544 F F2 .044(Compound Commands)
+2.544 F F0(abo)144 156 Q -.15(ve)-.15 G 5.531(.I).15 G 3.031(ft)-5.531 G
+(he)-3.031 E F2(function)3.032 E F0(reserv)3.032 E .532(ed w)-.15 F .532
+(ord is used, b)-.1 F .532
+(ut the parentheses are not supplied, the braces are)-.2 F(recommended.)
+144 168 Q F1(compound\255command)6.254 E F0 1.254(is e)3.754 F -.15(xe)
+-.15 G 1.254(cuted whene).15 F -.15(ve)-.25 G(r).15 E F1(fname)3.753 E
+F0 1.253(is speci\214ed as the name of a)3.753 F 1.252(simple command.)
+144 180 R 1.252(When in)6.252 F F1 1.252(posix mode)3.752 F F0(,)A F1
+(fname)3.752 E F0 1.252(must be a v)3.752 F 1.252(alid shell)-.25 F F1
+(name)3.753 E F0 1.253(and may not be the)3.753 F .089
+(name of one of the POSIX)144 192 R F1 .089(special b)2.589 F(uiltins)
+-.2 E F0 5.089(.I)C 2.589(nd)-5.089 G(ef)-2.589 E .089
+(ault mode, a function name can be an)-.1 F 2.588(yu)-.15 G(nquoted)
+-2.588 E .164(shell w)144 204 R .164(ord that does not contain)-.1 F F2
+($)2.665 E F0 5.165(.A)C .465 -.15(ny r)-5.165 H .165(edirections \(see)
+.15 F/F3 9/Times-Bold@0 SF(REDIRECTION)2.665 E F0(belo)2.415 E .165
+(w\) speci\214ed when a)-.25 F .061
+(function is de\214ned are performed when the function is e)144 216 R
+-.15(xe)-.15 G 2.561(cuted. The).15 F -.15(ex)2.56 G .06
+(it status of a function de\214-).15 F .579(nition is zero unless a syn\
+tax error occurs or a readonly function with the same name already e)144
+228 R(x-)-.15 E 2.593(ists. When)144 240 R -.15(exe)2.593 G .093
+(cuted, the e).15 F .093(xit status of a function is the e)-.15 F .093
+(xit status of the last command e)-.15 F -.15(xe)-.15 G .092(cuted in)
+.15 F(the body)144 252 Q 5(.\()-.65 G(See)-5 E F3(FUNCTIONS)2.5 E F0
(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95/Times-Bold@0 SF(COMMENTS)
-72 679.2 Q F0 .982(In a non-interacti)108 691.2 R 1.282 -.15(ve s)-.25 H
+72 268.8 Q F0 .982(In a non-interacti)108 280.8 R 1.282 -.15(ve s)-.25 H
.982(hell, or an interacti).15 F 1.282 -.15(ve s)-.25 H .982
-(hell in which the).15 F F1(interacti)3.482 E -.1(ve)-.1 G(_comments).1
-E F0 .982(option to the)3.482 F F1(shopt)3.482 E F0 -.2(bu)108 703.2 S
+(hell in which the).15 F F2(interacti)3.482 E -.1(ve)-.1 G(_comments).1
+E F0 .982(option to the)3.482 F F2(shopt)3.482 E F0 -.2(bu)108 292.8 S
.952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F(UIL)-.09 E .952
(TIN COMMANDS)-.828 F F0(belo)3.202 E .952(w\), a w)-.25 F .952(ord be)
--.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951(causes that w)3.451
+-.1 F .952(ginning with)-.15 F F2(#)3.451 E F0 .951(causes that w)3.451
F(ord)-.1 E .604
-(and all remaining characters on that line to be ignored.)108 715.2 R
+(and all remaining characters on that line to be ignored.)108 304.8 R
.605(An interacti)5.605 F .905 -.15(ve s)-.25 H .605(hell without the)
-.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 727.2 Q F0
-1.337(option enabled does not allo)3.837 F 3.837(wc)-.25 G 3.836
-(omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E
-F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(GNU Bash 5.1)72
-768 Q(2020 October 29)141.235 E(7)195.395 E 0 Cg EP
-%%Page: 8 8
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(interacti)108 84 Q
-.3 -.15(ve s)-.25 H(hells.).15 E/F1 10.95/Times-Bold@0 SF -.11(QU)72
-100.8 S -.438(OT).11 G(ING).438 E/F2 10/Times-Italic@0 SF(Quoting)108
-112.8 Q F0 .477(is used to remo)2.977 F .777 -.15(ve t)-.15 H .477
-(he special meaning of certain characters or w).15 F .477
-(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185
+.15 F F2(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 316.8 Q F0
+.34(option enabled does not allo)2.84 F 2.84(wc)-.25 G 2.84
+(omments. The)-2.84 F F2(interacti)2.84 E -.1(ve)-.1 G(_comments).1 E F0
+.34(option is on by def)2.84 F .34(ault in in-)-.1 F(teracti)108 328.8 Q
+.3 -.15(ve s)-.25 H(hells.).15 E F4 -.11(QU)72 345.6 S -.438(OT).11 G
+(ING).438 E F1(Quoting)108 357.6 Q F0 .477(is used to remo)2.977 F .777
+-.15(ve t)-.15 H .477(he special meaning of certain characters or w).15
+F .477(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185
(used to disable special treatment for special characters, to pre)108
-124.8 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184
-(ords from being recognized as)-.1 F(such, and to pre)108 136.8 Q -.15
+369.6 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184
+(ords from being recognized as)-.1 F(such, and to pre)108 381.6 Q -.15
(ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108
-153.6 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288
-(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0
-SF(DEFINITIONS)2.788 E F0 .288
-(has special meaning to the shell and must be)2.538 F
-(quoted if it is to represent itself.)108 165.6 Q 1.345
-(When the command history e)108 182.4 R 1.344(xpansion f)-.15 F 1.344
+398.4 R F1(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288
+(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E F3(DEFINITIONS)
+2.788 E F0 .288(has special meaning to the shell and must be)2.538 F
+(quoted if it is to represent itself.)108 410.4 Q 1.345
+(When the command history e)108 427.2 R 1.344(xpansion f)-.15 F 1.344
(acilities are being used \(see)-.1 F F3(HIST)3.844 E(OR)-.162 E 3.594
(YE)-.315 G(XP)-3.594 E(ANSION)-.666 E F0(belo)3.594 E 1.344(w\), the)
--.25 F F2(history e)108 194.4 Q(xpansion)-.2 E F0(character)2.5 E 2.5
-(,u)-.4 G(sually)-2.5 E/F4 10/Times-Bold@0 SF(!)2.5 E F0 2.5(,m)C
-(ust be quoted to pre)-2.5 E -.15(ve)-.25 G(nt history e).15 E
-(xpansion.)-.15 E(There are three quoting mechanisms: the)108 211.2 Q F2
-(escape c)2.69 E(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G
-(ingle quotes, and double quotes.)-2.5 E 2.962(An)108 228 S .463
-(on-quoted backslash \()-2.962 F F4(\\)A F0 2.963(\)i)C 2.963(st)-2.963
-G(he)-2.963 E F2 .463(escape c)3.153 F(har)-.15 E(acter)-.15 E F0 5.463
+-.25 F F1(history e)108 439.2 Q(xpansion)-.2 E F0(character)2.5 E 2.5
+(,u)-.4 G(sually)-2.5 E F2(!)2.5 E F0 2.5(,m)C(ust be quoted to pre)-2.5
+E -.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E
+(There are three quoting mechanisms: the)108 456 Q F1(escape c)2.69 E
+(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G
+(ingle quotes, and double quotes.)-2.5 E 2.962(An)108 472.8 S .463
+(on-quoted backslash \()-2.962 F F2(\\)A F0 2.963(\)i)C 2.963(st)-2.963
+G(he)-2.963 E F1 .463(escape c)3.153 F(har)-.15 E(acter)-.15 E F0 5.463
(.I).73 G 2.963(tp)-5.463 G(reserv)-2.963 E .463(es the literal v)-.15 F
-.463(alue of the ne)-.25 F .463(xt character that)-.15 F(follo)108 240 Q
-1.554(ws, with the e)-.25 F 1.553(xception of <ne)-.15 F 4.053
-(wline>. If)-.25 F(a)4.053 E F4(\\)4.053 E F0(<ne)A 1.553
+.463(alue of the ne)-.25 F .463(xt character that)-.15 F(follo)108 484.8
+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 F2(\\)4.053 E F0(<ne)A 1.553
(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
+(quoted, the)108 496.8 R F2(\\)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 2.848(df).15 G .348(rom the input stream and ef-)-2.848 F
-(fecti)108 264 Q -.15(ve)-.25 G(ly ignored\).).15 E .295
-(Enclosing characters in single quotes preserv)108 280.8 R .295
+(fecti)108 508.8 Q -.15(ve)-.25 G(ly ignored\).).15 E .295
+(Enclosing characters in single quotes preserv)108 525.6 R .295
(es the literal v)-.15 F .295(alue of each character within the quotes.)
-.25 F 2.795(As)5.295 G(in-)-2.795 E
-(gle quote may not occur between single quotes, e)108 292.8 Q -.15(ve)
+(gle quote may not occur between single quotes, e)108 537.6 Q -.15(ve)
-.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033
-(Enclosing characters in double quotes preserv)108 309.6 R .034
+(Enclosing characters in double quotes preserv)108 554.4 R .034
(es the literal v)-.15 F .034
(alue of all characters within the quotes, with the)-.25 F -.15(ex)108
-321.6 S .108(ception of).15 F F4($)2.608 E F0(,)A F4<92>2.608 E F0(,)A
-F4(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107
-(xpansion is enabled,)-.15 F F4(!)2.607 E F0 5.107(.W)C .107
-(hen the shell is in)-5.107 F F2 .107(posix mode)2.607 F F0 2.607(,t)C
-(he)-2.607 E F4(!)2.607 E F0 .107(has no)2.607 F .46
-(special meaning within double quotes, e)108 333.6 R -.15(ve)-.25 G 2.96
+566.4 S .108(ception of).15 F F2($)2.608 E F0(,)A F2<92>2.608 E F0(,)A
+F2(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107
+(xpansion is enabled,)-.15 F F2(!)2.607 E F0 5.107(.W)C .107
+(hen the shell is in)-5.107 F F1 .107(posix mode)2.607 F F0 2.607(,t)C
+(he)-2.607 E F2(!)2.607 E F0 .107(has no)2.607 F .46
+(special meaning within double quotes, e)108 578.4 R -.15(ve)-.25 G 2.96
(nw).15 G .46(hen history e)-2.96 F .46(xpansion is enabled.)-.15 F .46
-(The characters)5.46 F F4($)2.96 E F0(and)2.96 E F4<92>2.96 E F0(re-)
-2.96 E .563(tain their special meaning within double quotes.)108 345.6 R
+(The characters)5.46 F F2($)2.96 E F0(and)2.96 E F2<92>2.96 E F0(re-)
+2.96 E .563(tain their special meaning within double quotes.)108 590.4 R
.562(The backslash retains its special meaning only when fol-)5.563 F
-(lo)108 357.6 Q .601(wed by one of the follo)-.25 F .602
-(wing characters:)-.25 F F4($)3.102 E F0(,)A F4<92>3.102 E F0(,)A F4(")
-3.935 E F0(,).833 E F4(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F4(<newline>)
+(lo)108 602.4 Q .601(wed by one of the follo)-.25 F .602
+(wing characters:)-.25 F F2($)3.102 E F0(,)A F2<92>3.102 E F0(,)A F2(")
+3.935 E F0(,).833 E F2(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F2(<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 369.6 R .131
+(double quotes by preceding it with a backslash.)108 614.4 R .131
(If enabled, history e)5.131 F .13(xpansion will be performed unless an)
--.15 F F4(!)2.63 E F0
-(appearing in double quotes is escaped using a backslash.)108 381.6 Q
-(The backslash preceding the)5 E F4(!)2.5 E F0(is not remo)5 E -.15(ve)
--.15 G(d.).15 E(The special parameters)108 398.4 Q F4(*)2.5 E F0(and)2.5
-E F4(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H
+-.15 F F2(!)2.63 E F0
+(appearing in double quotes is escaped using a backslash.)108 626.4 Q
+(The backslash preceding the)5 E F2(!)2.5 E F0(is not remo)5 E -.15(ve)
+-.15 G(d.).15 E(The special parameters)108 643.2 Q F2(*)2.5 E F0(and)2.5
+E F2(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H
(pecial meaning when in double quotes \(see).15 E F3 -.666(PA)2.5 G
-(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 415.2 S .211
-(rds of the form).8 F F4($)2.711 E F0<08>A F2(string)A F0 2.711<0861>C
-.211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w)-5.211 F
-.211(ord e)-.1 F .212(xpands to)-.15 F F2(string)2.712 E F0 2.712(,w)C
-.212(ith backslash-escaped char)-2.712 F(-)-.2 E .605
-(acters replaced as speci\214ed by the ANSI C standard.)108 427.2 R .604
-(Backslash escape sequences, if present, are decoded)5.605 F(as follo)
-108 439.2 Q(ws:)-.25 E F4(\\a)144 451.2 Q F0(alert \(bell\))180 451.2 Q
-F4(\\b)144 463.2 Q F0(backspace)180 463.2 Q F4(\\e)144 475.2 Q(\\E)144
-487.2 Q F0(an escape character)180 487.2 Q F4(\\f)144 499.2 Q F0
-(form feed)180 499.2 Q F4(\\n)144 511.2 Q F0(ne)180 511.2 Q 2.5(wl)-.25
-G(ine)-2.5 E F4(\\r)144 523.2 Q F0(carriage return)180 523.2 Q F4(\\t)
-144 535.2 Q F0(horizontal tab)180 535.2 Q F4(\\v)144 547.2 Q F0 -.15(ve)
-180 547.2 S(rtical tab).15 E F4(\\\\)144 559.2 Q F0(backslash)180 559.2
-Q F4<5c08>144 571.2 Q F0(single quote)180 571.2 Q F4(\\")144 583.2 Q F0
-(double quote)180 583.2 Q F4(\\?)144 595.2 Q F0(question mark)180 595.2
-Q F4(\\)144 607.2 Q F2(nnn)A F0(the eight-bit character whose v)180
-607.2 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0
-(\(one to three octal digits\))2.5 E F4(\\x)144 619.2 Q F2(HH)A F0
-(the eight-bit character whose v)180 619.2 Q(alue is the he)-.25 E
-(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
--.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F4(\\u)144 631.2 Q F2(HHHH)A F0
-1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 643.2 R 1.507
-(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
-4.007 E F0(\(one to four he)180 655.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F4
-(\\U)144 667.2 Q F2(HHHHHHHH)A F0 .548
-(the Unicode \(ISO/IEC 10646\) character whose v)180 679.2 R .547
-(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
-3.047 E(HHH)180 691.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
-(igits\))-2.5 E F4(\\c)144 703.2 Q F2(x)A F0 2.5(ac)180 703.2 S(ontrol-)
--2.5 E F2(x)A F0(character)2.5 E(The e)108 720 Q(xpanded result is sing\
-le-quoted, as if the dollar sign had not been present.)-.15 E
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(8)195.395 E 0 Cg EP
+(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E .148
+(Character sequences of the form)108 660 R F2($)2.649 E F0<08>A F1
+(string)A F0 2.649<0861>C .149(re treated as a special v)-2.649 F .149
+(ariant of single quotes.)-.25 F .149(The sequence e)5.149 F(x-)-.15 E
+.528(pands to)108 672 R F1(string)3.028 E F0 3.028(,w)C .528
+(ith backslash-escaped characters in)-3.028 F F1(string)3.027 E F0 .527
+(replaced as speci\214ed by the ANSI C standard.)3.027 F
+(Backslash escape sequences, if present, are decoded as follo)108 684 Q
+(ws:)-.25 E F2(\\a)144 696 Q F0(alert \(bell\))180 696 Q F2(\\b)144 708
+Q F0(backspace)180 708 Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955
+E(8)190.115 E 0 Cg EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.64(Ad)108 84 S
-.14(ouble-quoted string preceded by a dollar sign \()-2.64 F/F1 10
-/Times-Bold@0 SF($)A F0(")A/F2 10/Times-Italic@0 SF(string)A F0 .14
-("\) will cause the string to be translated according)B .31
-(to the current locale.)108 96 R(The)5.31 E F2 -.1(ge)2.809 G(tte).1 E
-(xt)-.2 E F0 .309(infrastructure performs the message catalog lookup an\
-d translation, using)2.809 F(the)108 108 Q F1(LC_MESSA)2.625 E(GES)-.55
-E F0(and)2.625 E F1(TEXTDOMAIN)2.625 E F0 .125(shell v)2.625 F 2.625
-(ariables. If)-.25 F .126(the current locale is)2.626 F F1(C)2.626 E F0
-(or)2.626 E F1(POSIX)2.626 E F0 2.626(,o)C 2.626(ri)-2.626 G 2.626(ft)
--2.626 G(here)-2.626 E .362(are no translations a)108 120 R -.25(va)-.2
-G .362(ilable, the dollar sign is ignored.).25 F .362
-(If the string is translated and replaced, the replace-)5.362 F
-(ment is double-quoted.)108 132 Q/F3 10.95/Times-Bold@0 SF -.81(PA)72
-148.8 S(RAMETERS).81 E F0(A)108 160.8 Q F2(par)4.574 E(ameter)-.15 E F0
-.824(is an entity that stores v)4.054 F 3.324(alues. It)-.25 F .824
-(can be a)3.324 F F2(name)3.685 E F0 3.325(,an).18 G(umber)-3.325 E
-3.325(,o)-.4 G 3.325(ro)-3.325 G .825(ne of the special characters)
--3.325 F .802(listed belo)108 172.8 R 3.302(wu)-.25 G(nder)-3.302 E F1
-.802(Special P)3.302 F(arameters)-.1 E F0 5.802(.A)C F2(variable)-2.21 E
-F0 .802(is a parameter denoted by a)3.482 F F2(name)3.662 E F0 5.801(.A)
-.18 G -.25(va)-2.5 G .801(riable has a).25 F F2(value)108 184.8 Q F0
-.368(and zero or more)2.868 F F2(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C
-(ttrib)-5.369 E .369(utes are assigned using the)-.2 F F1(declar)2.869 E
-(e)-.18 E F0 -.2(bu)2.869 G .369(iltin command \(see).2 F F1(declar)
-2.869 E(e)-.18 E F0(belo)108 196.8 Q 2.5(wi)-.25 G(n)-2.5 E/F4 9
-/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E/F5 9
-/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 213.6 S .255
-(arameter is set if it has been assigned a v)-2.755 F 2.754(alue. The)
--.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F 2.754
-(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 F
-(may be unset only by using the)108 225.6 Q F1(unset)2.5 E F0 -.2(bu)2.5
-G(iltin command \(see).2 E F4(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)
--.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 242.4 Q F2(variable)2.79 E F0
-(may be assigned to by a statement of the form)2.68 E F2(name)144 259.2
-Q F0(=[)A F2(value)A F0(])A(If)108 276 Q F2(value)3.022 E F0 .232
-(is not gi)2.912 F -.15(ve)-.25 G .232(n, the v).15 F .232
-(ariable is assigned the null string.)-.25 F(All)5.233 E F2(values)3.023
-E F0(under)3.003 E .233(go tilde e)-.18 F .233(xpansion, parameter)-.15
-F .515(and v)108 288 R .515(ariable e)-.25 F .515
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(\\e)144 84 Q(\\E)144 96 Q F0(an escape character)180 96 Q F1(\\f)144
+108 Q F0(form feed)180 108 Q F1(\\n)144 120 Q F0(ne)180 120 Q 2.5(wl)
+-.25 G(ine)-2.5 E F1(\\r)144 132 Q F0(carriage return)180 132 Q F1(\\t)
+144 144 Q F0(horizontal tab)180 144 Q F1(\\v)144 156 Q F0 -.15(ve)180
+156 S(rtical tab).15 E F1(\\\\)144 168 Q F0(backslash)180 168 Q F1<5c08>
+144 180 Q F0(single quote)180 180 Q F1(\\")144 192 Q F0(double quote)180
+192 Q F1(\\?)144 204 Q F0(question mark)180 204 Q F1(\\)144 216 Q/F2 10
+/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v)180 216 Q
+(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0
+(\(one to three octal digits\))2.5 E F1(\\x)144 228 Q F2(HH)A F0
+(the eight-bit character whose v)180 228 Q(alue is the he)-.25 E
+(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
+-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 240 Q F2(HHHH)A F0
+1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 252 R 1.507
+(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
+4.007 E F0(\(one to four he)180 264 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
+(\\U)144 276 Q F2(HHHHHHHH)A F0 .548
+(the Unicode \(ISO/IEC 10646\) character whose v)180 288 R .547
+(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
+3.047 E(HHH)180 300 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\))
+-2.5 E F1(\\c)144 312 Q F2(x)A F0 2.5(ac)180 312 S(ontrol-)-2.5 E F2(x)A
+F0(character)2.5 E(The e)108 328.8 Q(xpanded result is single-quoted, a\
+s if the dollar sign had not been present.)-.15 E 2.64(Ad)108 345.6 S
+.14(ouble-quoted string preceded by a dollar sign \()-2.64 F F1($)A F0
+(")A F2(string)A F0 .14
+("\) will cause the string to be translated according)B .785
+(to the current locale.)108 357.6 R(The)5.785 E F2 -.1(ge)3.284 G(tte).1
+E(xt)-.2 E F0 .784
+(infrastructure performs the lookup and translation, using the)3.284 F
+F1(LC_MES-)3.284 E(SA)108 369.6 Q(GES)-.55 E F0(,)A F1(TEXTDOMAINDIR)
+2.76 E F0 2.76(,a)C(nd)-2.76 E F1(TEXTDOMAIN)2.76 E F0 .261(shell v)
+2.761 F 2.761(ariables. If)-.25 F .261(the current locale is)2.761 F F1
+(C)2.761 E F0(or)2.761 E F1(POSIX)2.761 E F0(,)A .792
+(if there are no translations a)108 381.6 R -.25(va)-.2 G .791(ilable, \
+or if the string is not translated, the dollar sign is ignored.).25 F
+.791(This is a)5.791 F .534
+(form of double quoting, so the string remains double-quoted by def)108
+393.6 R .535(ault, whether or not it is translated and)-.1 F 2.798
+(replaced. If)108 405.6 R(the)2.798 E F1(noexpand_translation)2.797 E F0
+.297(option is enabled using the)2.797 F F1(shopt)2.797 E F0 -.2(bu)
+2.797 G .297(iltin, translated strings are sin-).2 F 2.044
+(gle-quoted instead of double-quoted.)108 417.6 R 2.044
+(See the description of)7.044 F F1(shopt)4.545 E F0(belo)4.545 E 4.545
+(wu)-.25 G(nder)-4.545 E/F3 9/Times-Bold@0 SF(SHELL)4.545 E/F4 9
+/Times-Roman@0 SF -.09(BU)C(IL).09 E(TIN)-.828 E F3(COM-)A(MANDS)108
+429.6 Q F4(.)A/F5 10.95/Times-Bold@0 SF -.81(PA)72 446.4 S(RAMETERS).81
+E F0(A)108 458.4 Q F2(par)4.575 E(ameter)-.15 E F0 .825
+(is an entity that stores v)4.055 F 3.325(alues. It)-.25 F .825
+(can be a)3.325 F F2(name)3.684 E F0 3.324(,an).18 G(umber)-3.324 E
+3.324(,o)-.4 G 3.324(ro)-3.324 G .824(ne of the special characters)
+-3.324 F .801(listed belo)108 470.4 R 3.301(wu)-.25 G(nder)-3.301 E F1
+.801(Special P)3.301 F(arameters)-.1 E F0 5.802(.A)C F2(variable)-2.21 E
+F0 .802(is a parameter denoted by a)3.482 F F2(name)3.662 E F0 5.802(.A)
+.18 G -.25(va)-2.5 G .802(riable has a).25 F F2(value)108 482.4 Q F0
+.369(and zero or more)2.869 F F2(attrib)2.869 E(utes)-.2 E F0 5.369(.A)C
+(ttrib)-5.369 E .369(utes are assigned using the)-.2 F F1(declar)2.868 E
+(e)-.18 E F0 -.2(bu)2.868 G .368(iltin command \(see).2 F F1(declar)
+2.868 E(e)-.18 E F0(belo)108 494.4 Q 2.5(wi)-.25 G(n)-2.5 E F3(SHELL B)
+2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F4(\).)A F0 2.754(Ap)108 511.2 S
+.254(arameter is set if it has been assigned a v)-2.754 F 2.754
+(alue. The)-.25 F .254(null string is a v)2.754 F .255(alid v)-.25 F
+2.755(alue. Once)-.25 F 2.755(av)2.755 G .255(ariable is set, it)-3.005
+F(may be unset only by using the)108 523.2 Q F1(unset)2.5 E F0 -.2(bu)
+2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)
+-.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 540 Q F2(variable)2.79 E F0
+(may be assigned to by a statement of the form)2.68 E F2(name)144 556.8
+Q F0(=[)A F2(value)A F0(])A(If)108 573.6 Q F2(value)3.023 E F0 .233
+(is not gi)2.913 F -.15(ve)-.25 G .233(n, the v).15 F .232
+(ariable is assigned the null string.)-.25 F(All)5.232 E F2(values)3.022
+E F0(under)3.002 E .232(go tilde e)-.18 F .232(xpansion, parameter)-.15
+F .515(and v)108 585.6 R .515(ariable e)-.25 F .515
(xpansion, command substitution, arithmetic e)-.15 F .515
(xpansion, and quote remo)-.15 F -.25(va)-.15 G 3.015(l\().25 G(see)
--3.015 E F4(EXP)3.015 E(ANSION)-.666 E F0(belo)108 300 Q 2.698(w\). If)
--.25 F .198(the v)2.698 F .198(ariable has its)-.25 F F1(integer)2.698 E
-F0(attrib)2.698 E .198(ute set, then)-.2 F F2(value)2.988 E F0 .198
-(is e)2.878 F -.25(va)-.25 G .199(luated as an arithmetic e).25 F .199
-(xpression e)-.15 F -.15(ve)-.25 G(n).15 E .902(if the $\(\(...\)\) e)
-108 312 R .902(xpansion is not used \(see)-.15 F F1 .901
-(Arithmetic Expansion)3.401 F F0(belo)3.401 E 3.401(w\). W)-.25 F .901
-(ord splitting is not performed,)-.8 F 1.178(with the e)108 324 R 1.178
-(xception of)-.15 F F1("$@")3.678 E F0 1.178(as e)3.678 F 1.179
-(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F1 1.179(Special P)
-3.679 F(arameters)-.1 E F0 6.179(.P)C 1.179(athname e)-6.329 F 1.179
-(xpansion is not)-.15 F 3.649(performed. Assignment)108 336 R 1.149
-(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F1
-(alias)3.648 E F0(,)A F1(declar)3.648 E(e)-.18 E F0(,)A F1(typeset)3.648
-E F0(,)A F1(export)3.648 E F0(,)A F1 -.18(re)108 348 S(adonly).18 E F0
-3.288(,a)C(nd)-3.288 E F1(local)3.288 E F0 -.2(bu)3.288 G .788
-(iltin commands \().2 F F2(declar)A(ation)-.15 E F0 3.288
-(commands\). When)3.288 F(in)3.289 E F2 .789(posix mode)3.289 F F0 3.289
-(,t)C .789(hese b)-3.289 F .789(uiltins may)-.2 F 1.496
-(appear in a command after one or more instances of the)108 360 R F1
-(command)3.996 E F0 -.2(bu)3.996 G 1.496
-(iltin and retain these assignment).2 F(statement properties.)108 372 Q
-.376(In the conte)108 388.8 R .376
-(xt where an assignment statement is assigning a v)-.15 F .376
-(alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377
+-3.015 E F3(EXP)3.015 E(ANSION)-.666 E F0(belo)108 597.6 Q 2.699
+(w\). If)-.25 F .199(the v)2.699 F .199(ariable has its)-.25 F F1
+(integer)2.698 E F0(attrib)2.698 E .198(ute set, then)-.2 F F2(value)
+2.988 E F0 .198(is e)2.878 F -.25(va)-.25 G .198
+(luated as an arithmetic e).25 F .198(xpression e)-.15 F -.15(ve)-.25 G
+(n).15 E .745(if the $\(\(...\)\) e)108 609.6 R .745
+(xpansion is not used \(see)-.15 F F1 .745(Arithmetic Expansion)3.245 F
+F0(belo)3.245 E 3.246(w\). W)-.25 F .746(ord splitting and pathname e)
+-.8 F(x-)-.15 E 1.364(pansion are not performed.)108 621.6 R 1.364
+(Assignment statements may also appear as ar)6.364 F 1.363
+(guments to the)-.18 F F1(alias)3.863 E F0(,)A F1(declar)3.863 E(e)-.18
+E F0(,)A F1(typeset)108 633.6 Q F0(,)A F1(export)3.964 E F0(,)A F1 -.18
+(re)3.964 G(adonly).18 E F0 3.964(,a)C(nd)-3.964 E F1(local)3.964 E F0
+-.2(bu)3.964 G 1.464(iltin commands \().2 F F2(declar)A(ation)-.15 E F0
+3.964(commands\). When)3.964 F(in)3.964 E F2 1.465(posix mode)3.965 F F0
+(,)A 1.142(these b)108 645.6 R 1.142
+(uiltins may appear in a command after one or more instances of the)-.2
+F F1(command)3.641 E F0 -.2(bu)3.641 G 1.141(iltin and retain).2 F
+(these assignment statement properties.)108 657.6 Q .376(In the conte)
+108 674.4 R .376(xt where an assignment statement is assigning a v)-.15
+F .376(alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377
(x, the +=)-.15 F 1.631
-(operator can be used to append to or add to the v)108 400.8 R(ariable')
+(operator can be used to append to or add to the v)108 686.4 R(ariable')
-.25 E 4.13(sp)-.55 G(re)-4.13 E 1.63(vious v)-.25 F 4.13(alue. This)
--.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 412.8 S
+-.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 698.4 S
.163(iltin commands such as).2 F F1(declar)2.664 E(e)-.18 E F0 .164
(that accept assignment statements \()2.664 F F2(declar)A(ation)-.15 E
-F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .252
-(applied to a v)108 424.8 R .252(ariable for which the)-.25 F F2(inte)
-2.752 E -.1(ge)-.4 G(r).1 E F0(attrib)2.752 E .252(ute has been set,)-.2
-F F2(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251
-(luated as an arithmetic e).25 F(xpres-)-.15 E .05
-(sion and added to the v)108 436.8 R(ariable')-.25 E 2.55(sc)-.55 G .05
-(urrent v)-2.55 F .05(alue, which is also e)-.25 F -.25(va)-.25 G 2.55
-(luated. When).25 F .05(+= is applied to an array v)2.55 F(ari-)-.25 E
-.459(able using compound assignment \(see)108 448.8 R F1(Arrays)2.959 E
-F0(belo)2.959 E .459(w\), the v)-.25 F(ariable')-.25 E 2.959(sv)-.55 G
-.459(alue is not unset \(as it is when using)-3.209 F .265(=\), and ne)
-108 460.8 R 2.765(wv)-.25 G .265(alues are appended to the array be)
--3.015 F .265(ginning at one greater than the array')-.15 F 2.765(sm)
--.55 G .265(aximum inde)-2.765 F 2.765(x\()-.15 G(for)-2.765 E(inde)108
-472.8 Q -.15(xe)-.15 G 3.402(da).15 G .902
-(rrays\) or added as additional k)-3.402 F -.15(ey)-.1 G<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 484.8
-S(lued v).25 E(ariable,)-.25 E F2(value)2.5 E F0(is e)2.5 E
-(xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G
-(alue.)-2.75 E 3.382(Av)108 501.6 S .882(ariable can be assigned the)
--3.632 F F2(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882
-(ute using the)-.2 F 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 513.6 R
-F1(declar)2.816 E(e)-.18 E F0(and)2.816 E F1(local)2.816 E F0(belo)2.816
-E .316(w\) to create a)-.25 F F2(namer)2.815 E(ef)-.37 E F0 2.815(,o)C
-2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 2.918
-(able. This)108 525.6 R(allo)2.918 E .418(ws v)-.25 F .418
+F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .132
+(applied to a v)108 710.4 R .132(ariable for which the)-.25 F F1
+(integer)2.632 E F0(attrib)2.632 E .132(ute has been set,)-.2 F F2
+(value)2.632 E F0 .131(is e)2.631 F -.25(va)-.25 G .131
+(luated as an arithmetic e).25 F(xpres-)-.15 E 1.226
+(sion and added to the v)108 722.4 R(ariable')-.25 E 3.726(sc)-.55 G
+1.227(urrent v)-3.726 F 1.227(alue, which is also e)-.25 F -.25(va)-.25
+G 3.727(luated. When).25 F 1.227(+= is applied to an array)3.727 F
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(9)190.115 E 0 Cg EP
+%%Page: 10 10
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)108 84 S
+.115(riable using compound assignment \(see).25 F/F1 10/Times-Bold@0 SF
+(Arrays)2.615 E F0(belo)2.615 E .115(w\), the v)-.25 F(ariable')-.25 E
+2.615(sv)-.55 G .114(alue is not unset \(as it is when us-)-2.865 F .387
+(ing =\), and ne)108 96 R 2.887(wv)-.25 G .388
+(alues are appended to the array be)-3.137 F .388
+(ginning at one greater than the array')-.15 F 2.888(sm)-.55 G .388
+(aximum inde)-2.888 F(x)-.15 E 1.597(\(for inde)108 108 R -.15(xe)-.15 G
+4.097(da).15 G 1.596(rrays\) or added as additional k)-4.097 F -.15(ey)
+-.1 G<ad76>.15 E 1.596(alue pairs in an associati)-.25 F 1.896 -.15
+(ve a)-.25 H(rray).15 E 6.596(.W)-.65 G 1.596(hen applied to a)-6.596 F
+(string-v)108 120 Q(alued v)-.25 E(ariable,)-.25 E/F2 10/Times-Italic@0
+SF(value)2.5 E F0(is e)2.5 E(xpanded and appended to the v)-.15 E
+(ariable')-.25 E 2.5(sv)-.55 G(alue.)-2.75 E 3.382(Av)108 136.8 S .882
+(ariable can be assigned the)-3.632 F F2(namer)3.382 E(ef)-.37 E F0
+(attrib)3.382 E .882(ute using the)-.2 F 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 148.8 R F1(declar)2.816 E(e)-.18 E
+F0(and)2.816 E F1(local)2.816 E F0(belo)2.816 E .316(w\) to create a)
+-.25 F F2(namer)2.815 E(ef)-.37 E F0 2.815(,o)C 2.815(rar)-2.815 G .315
+(eference to another v)-2.815 F(ari-)-.25 E 2.918(able. This)108 160.8 R
+(allo)2.918 E .418(ws v)-.25 F .418
(ariables to be manipulated indirectly)-.25 F 5.419(.W)-.65 G(hene)
-5.419 E -.15(ve)-.25 G 2.919(rt).15 G .419(he nameref v)-2.919 F .419
(ariable is referenced, as-)-.25 F .133
-(signed to, unset, or has its attrib)108 537.6 R .132
+(signed to, unset, or has its attrib)108 172.8 R .132
(utes modi\214ed \(other than using or changing the)-.2 F F2(namer)2.632
E(ef)-.37 E F0(attrib)2.632 E .132(ute itself\), the)-.2 F 1.356
-(operation is actually performed on the v)108 549.6 R 1.357
+(operation is actually performed on the v)108 184.8 R 1.357
(ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 3.857(sv)
-.55 G 3.857(alue. A)-4.107 F 1.357(nameref is)3.857 F .972
-(commonly used within shell functions to refer to a v)108 561.6 R .971
+(commonly used within shell functions to refer to a v)108 196.8 R .971
(ariable whose name is passed as an ar)-.25 F .971(gument to the)-.18 F
-2.5(function. F)108 573.6 R(or instance, if a v)-.15 E
+2.5(function. F)108 208.8 R(or instance, if a v)-.15 E
(ariable name is passed to a shell function as its \214rst ar)-.25 E
-(gument, running)-.18 E/F6 10/Courier@0 SF(declare -n ref=$1)144 591.6 Q
-F0 .302(inside the function creates a nameref v)108 609.6 R(ariable)-.25
+(gument, running)-.18 E/F3 10/Courier@0 SF(declare -n ref=$1)144 226.8 Q
+F0 .302(inside the function creates a nameref v)108 244.8 R(ariable)-.25
E F1 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v)
-.25 F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E
-3.592(ment. References)108 621.6 R 1.092(and assignments to)3.592 F F1
+3.592(ment. References)108 256.8 R 1.092(and assignments to)3.592 F F1
-.18(re)3.592 G(f).18 E F0 3.592(,a)C 1.092(nd changes to its attrib)
-3.592 F 1.092(utes, are treated as references, assign-)-.2 F .143
-(ments, and attrib)108 633.6 R .144(ute modi\214cations to the v)-.2 F
+(ments, and attrib)108 268.8 R .144(ute modi\214cations to the v)-.2 F
.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F1($1)2.644 E
F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144
-(ariable in a)-.25 F F1 -.25(fo)108 645.6 S(r).25 E F0 .868
+(ariable in a)-.25 F F1 -.25(fo)108 280.8 S(r).25 E F0 .868
(loop has the nameref attrib)3.368 F .868(ute, the list of w)-.2 F .867
(ords can be a list of shell v)-.1 F .867
(ariables, and a name reference)-.25 F .509
-(will be established for each w)108 657.6 R .509
+(will be established for each w)108 292.8 R .509
(ord in the list, in turn, when the loop is e)-.1 F -.15(xe)-.15 G 3.009
(cuted. Array).15 F -.25(va)3.009 G .509(riables cannot be).25 F(gi)108
-669.6 Q -.15(ve)-.25 G 3.032(nt).15 G(he)-3.032 E F1(namer)3.032 E(ef)
+304.8 Q -.15(ve)-.25 G 3.032(nt).15 G(he)-3.032 E F1(namer)3.032 E(ef)
-.18 E F0(attrib)3.032 E 3.032(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G
1.332 -.4(r, n).15 H .532(ameref v).4 F .531
(ariables can reference array v)-.25 F .531(ariables and subscripted ar)
--.25 F(-)-.2 E .533(ray v)108 681.6 R 3.033(ariables. Namerefs)-.25 F
+-.25 F(-)-.2 E .533(ray v)108 316.8 R 3.033(ariables. Namerefs)-.25 F
.533(can be unset using the)3.033 F 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
+-.15(xe)-.15 G(-).15 E .443(cuted with the name of a nameref v)108 328.8
R .442(ariable as an ar)-.25 F .442(gument, the v)-.18 F .442
(ariable referenced by the nameref v)-.25 F(ariable)-.25 E
-(will be unset.)108 705.6 Q(GNU Bash 5.1)72 768 Q(2020 October 29)
-141.235 E(9)195.395 E 0 Cg EP
-%%Page: 10 10
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.2(Po)87 84 S(sitional P).2 E(arameters)-.1 E F0(A)108 96 Q/F2 10
-/Times-Italic@0 SF .705(positional par)4.455 F(ameter)-.15 E F0 .706(is\
- a parameter denoted by one or more digits, other than the single digit\
- 0.)3.935 F(Posi-)5.706 E .445
-(tional parameters are assigned from the shell')108 108 R 2.944(sa)-.55
-G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1(ke)
-.2 G .444(d, and may be reassigned using).1 F(the)108 120 Q F1(set)3.333
-E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional parameters\
- may not be assigned to with assignment statements.)5.833 F(The)5.834 E
-(positional parameters are temporarily replaced when a shell function i\
-s e)108 132 Q -.15(xe)-.15 G(cuted \(see).15 E/F3 9/Times-Bold@0 SF
-(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.404(When a positional par\
-ameter consisting of more than a single digit is e)108 148.8 R 1.403
-(xpanded, it must be enclosed in)-.15 F(braces \(see)108 160.8 Q F3(EXP)
-2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F1(Special P)87 177.6 Q
-(arameters)-.1 E F0 1.674(The shell treats se)108 189.6 R -.15(ve)-.25 G
-1.674(ral parameters specially).15 F 6.675(.T)-.65 G 1.675
-(hese parameters may only be referenced; assignment to)-6.675 F
-(them is not allo)108 201.6 Q(wed.)-.25 E F1(*)108 213.6 Q F0 .224
-(Expands to the positional parameters, starting from one.)144 213.6 R
-.223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662
-(quotes, each positional parameter e)144 225.6 R .662
+(will be unset.)108 340.8 Q F1 -.2(Po)87 357.6 S(sitional P).2 E
+(arameters)-.1 E F0(A)108 369.6 Q F2 .705(positional par)4.455 F(ameter)
+-.15 E F0 .706(is a parameter denoted by one or more digits, other than\
+ the single digit 0.)3.935 F(Posi-)5.706 E .445
+(tional parameters are assigned from the shell')108 381.6 R 2.944(sa)
+-.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1
+(ke).2 G .444(d, and may be reassigned using).1 F(the)108 393.6 Q F1
+(set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional\
+ parameters may not be assigned to with assignment statements.)5.833 F
+(The)5.834 E(positional parameters are temporarily replaced when a shel\
+l function is e)108 405.6 Q -.15(xe)-.15 G(cuted \(see).15 E/F4 9
+/Times-Bold@0 SF(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.404(When \
+a positional parameter consisting of more than a single digit is e)108
+422.4 R 1.403(xpanded, it must be enclosed in)-.15 F(braces \(see)108
+434.4 Q F4(EXP)2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F1
+(Special P)87 451.2 Q(arameters)-.1 E F0 1.674(The shell treats se)108
+463.2 R -.15(ve)-.25 G 1.674(ral parameters specially).15 F 6.675(.T)
+-.65 G 1.675(hese parameters may only be referenced; assignment to)
+-6.675 F(them is not allo)108 475.2 Q(wed.)-.25 E F1(*)108 487.2 Q F0
+.224(Expands to the positional parameters, starting from one.)144 487.2
+R .223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662
+(quotes, each positional parameter e)144 499.2 R .662
(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662
-(xts where it is performed,)-.15 F 1.082(those w)144 237.6 R 1.082
+(xts where it is performed,)-.15 F 1.082(those w)144 511.2 R 1.082
(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e)
-.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E
-.914(occurs within double quotes, it e)144 249.6 R .914
+.914(occurs within double quotes, it e)144 523.2 R .914
(xpands to a single w)-.15 F .915(ord with the v)-.1 F .915
(alue of each parameter sepa-)-.25 F .891
-(rated by the \214rst character of the)144 261.6 R F3(IFS)3.39 E F0 .89
+(rated by the \214rst character of the)144 535.2 R F4(IFS)3.39 E F0 .89
(special v)3.14 F 3.39(ariable. That)-.25 F .89(is, ")3.39 F F1($*)A F0
3.39("i)C 3.39(se)-3.39 G(qui)-3.39 E -.25(va)-.25 G .89(lent to ").25 F
-F1($1)A F2(c)A F1($2)A F2(c)A F1(...)A F0(",)A(where)144 273.6 Q F2(c)
+F1($1)A F2(c)A F1($2)A F2(c)A F1(...)A F0(",)A(where)144 547.2 Q F2(c)
3.532 E F0 .832(is the \214rst character of the v)3.642 F .832
-(alue of the)-.25 F F3(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If)
-.25 F F3(IFS)3.332 E F0 .833(is unset, the parameters are)3.082 F
-(separated by spaces.)144 285.6 Q(If)5 E F3(IFS)2.5 E F0
+(alue of the)-.25 F F4(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If)
+.25 F F4(IFS)3.332 E F0 .833(is unset, the parameters are)3.082 F
+(separated by spaces.)144 559.2 Q(If)5 E F4(IFS)2.5 E F0
(is null, the parameters are joined without interv)2.25 E
-(ening separators.)-.15 E F1(@)108 297.6 Q F0 .722
-(Expands to the positional parameters, starting from one.)144 297.6 R
+(ening separators.)-.15 E F1(@)108 571.2 Q F0 .722
+(Expands to the positional parameters, starting from one.)144 571.2 R
.722(In conte)5.722 F .722(xts where w)-.15 F .722(ord splitting is per)
--.1 F(-)-.2 E 1.165(formed, this e)144 309.6 R 1.165
+-.1 F(-)-.2 E 1.165(formed, this e)144 583.2 R 1.165
(xpands each positional parameter to a separate w)-.15 F 1.165
-(ord; if not within double quotes,)-.1 F .655(these w)144 321.6 R .655
+(ord; if not within double quotes,)-.1 F .655(these w)144 595.2 R .655
(ords are subject to w)-.1 F .655(ord splitting.)-.1 F .655(In conte)
5.655 F .655(xts where w)-.15 F .654
-(ord splitting is not performed, this)-.1 F -.15(ex)144 333.6 S .748
+(ord splitting is not performed, this)-.1 F -.15(ex)144 607.2 S .748
(pands to a single w).15 F .748
(ord with each positional parameter separated by a space.)-.1 F .748
(When the e)5.748 F(xpan-)-.15 E 1.091
-(sion occurs within double quotes, each parameter e)144 345.6 R 1.091
+(sion occurs within double quotes, each parameter e)144 619.2 R 1.091
(xpands to a separate w)-.15 F 3.59(ord. That)-.1 F 1.09(is, ")3.59 F F1
-($@)A F0 3.59("i)C(s)-3.59 E(equi)144 357.6 Q -.25(va)-.25 G .412
+($@)A F0 3.59("i)C(s)-3.59 E(equi)144 631.2 Q -.25(va)-.25 G .412
(lent to ").25 F F1($1)A F0 2.912("")C F1($2)-2.912 E F0 2.912(".)C
2.912(.. If)-2.912 F .413(the double-quoted e)2.913 F .413
(xpansion occurs within a w)-.15 F .413(ord, the e)-.1 F .413
(xpansion of)-.15 F .38(the \214rst parameter is joined with the be)144
-369.6 R .379(ginning part of the original w)-.15 F .379(ord, and the e)
+643.2 R .379(ginning part of the original w)-.15 F .379(ord, and the e)
-.1 F .379(xpansion of the)-.15 F .771
-(last parameter is joined with the last part of the original w)144 381.6
+(last parameter is joined with the last part of the original w)144 655.2
R 3.271(ord. When)-.1 F .772(there are no positional pa-)3.271 F
-(rameters, ")144 393.6 Q F1($@)A F0 2.5("a)C(nd)-2.5 E F1($@)2.5 E F0
+(rameters, ")144 667.2 Q F1($@)A F0 2.5("a)C(nd)-2.5 E F1($@)2.5 E F0
-.15(ex)2.5 G(pand to nothing \(i.e., the).15 E 2.5(ya)-.15 G(re remo)
--2.5 E -.15(ve)-.15 G(d\).).15 E F1(#)108 405.6 Q F0
-(Expands to the number of positional parameters in decimal.)144 405.6 Q
-F1(?)108 417.6 Q F0(Expands to the e)144 417.6 Q
+-2.5 E -.15(ve)-.15 G(d\).).15 E F1(#)108 679.2 Q F0
+(Expands to the number of positional parameters in decimal.)144 679.2 Q
+F1(?)108 691.2 Q F0(Expands to the e)144 691.2 Q
(xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15
-E(ground pipeline.)-.15 E F1<ad>108 429.6 Q F0 .882
-(Expands to the current option \215ags as speci\214ed upon in)144 429.6
+E(ground pipeline.)-.15 E F1<ad>108 703.2 Q F0 .882
+(Expands to the current option \215ags as speci\214ed upon in)144 703.2
R -.2(vo)-.4 G .881(cation, by the).2 F F1(set)3.381 E F0 -.2(bu)3.381 G
.881(iltin command, or).2 F(those set by the shell itself \(such as the)
-144 441.6 Q 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 465.6 Q F1(!)108 477.6 Q F0 .499(Expands \
-to the process ID of the job most recently placed into the background, \
-whether e)144 477.6 R -.15(xe)-.15 G(cuted).15 E
-(as an asynchronous command or using the)144 489.6 Q F1(bg)2.5 E F0 -.2
-(bu)2.5 G(iltin \(see).2 E F3(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E
-(w\).)-.25 E F1(0)108 501.6 Q F0 .886
-(Expands to the name of the shell or shell script.)144 501.6 R .886
+144 715.2 Q F1<ad69>2.5 E F0(option\).)2.5 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(10)185.115 E 0 Cg EP
+%%Page: 11 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF($)108 84 Q F0 .839
+(Expands to the process ID of the shell. In a subshell, it e)144 84 R
+.839(xpands to the process ID of the current)-.15 F
+(shell, not the subshell.)144 96 Q F1(!)108 108 Q F0 .499(Expands to th\
+e process ID of the job most recently placed into the background, wheth\
+er e)144 108 R -.15(xe)-.15 G(cuted).15 E
+(as an asynchronous command or using the)144 120 Q F1(bg)2.5 E F0 -.2
+(bu)2.5 G(iltin \(see).2 E/F2 9/Times-Bold@0 SF(JOB CONTR)2.5 E(OL)-.27
+E F0(belo)2.25 E(w\).)-.25 E F1(0)108 132 Q F0 .886
+(Expands to the name of the shell or shell script.)144 132 R .886
(This is set at shell initialization.)5.886 F(If)5.887 E F1(bash)3.387 E
-F0 .887(is in-)3.387 F -.2(vo)144 513.6 S -.1(ke).2 G 2.668(dw).1 G .168
+F0 .887(is in-)3.387 F -.2(vo)144 144 S -.1(ke).2 G 2.668(dw).1 G .168
(ith a \214le of commands,)-2.668 F F1($0)2.668 E F0 .167
(is set to the name of that \214le.)2.667 F(If)5.167 E F1(bash)2.667 E
F0 .167(is started with the)2.667 F 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)
+(tion, then)144 156 R F1($0)3.395 E F0 .895(is set to the \214rst ar)
3.395 F .895(gument after the string to be e)-.18 F -.15(xe)-.15 G .896
(cuted, if one is present.).15 F(Other)5.896 E(-)-.2 E
-(wise, it is set to the \214lename used to in)144 537.6 Q -.2(vo)-.4 G
--.1(ke).2 G F1(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5
-H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F1
-(Shell V)87 554.4 Q(ariables)-.92 E F0(The follo)108 566.4 Q(wing v)-.25
-E(ariables are set by the shell:)-.25 E F1(_)108 583.2 Q F0 1.526
-(At shell startup, set to the pathname used to in)144 583.2 R -.2(vo)-.4
+(wise, it is set to the \214lename used to in)144 168 Q -.2(vo)-.4 G -.1
+(ke).2 G F1(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H
+2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F1(Shell V)
+87 184.8 Q(ariables)-.92 E F0(The follo)108 196.8 Q(wing v)-.25 E
+(ariables are set by the shell:)-.25 E F1(_)108 213.6 Q F0 1.526
+(At shell startup, set to the pathname used to in)144 213.6 R -.2(vo)-.4
G 1.725 -.1(ke t).2 H 1.525(he shell or shell script being e).1 F -.15
-(xe)-.15 G 1.525(cuted as).15 F .173(passed in the en)144 595.2 R .173
+(xe)-.15 G 1.525(cuted as).15 F .173(passed in the en)144 225.6 R .173
(vironment or ar)-.4 F .173(gument list.)-.18 F(Subsequently)5.173 E
2.673(,e)-.65 G .173(xpands to the last ar)-2.823 F .174
-(gument to the pre-)-.18 F .337(vious simple command e)144 607.2 R -.15
+(gument to the pre-)-.18 F .337(vious simple command e)144 237.6 R -.15
(xe)-.15 G .337(cuted in the fore).15 F .336(ground, after e)-.15 F
2.836(xpansion. Also)-.15 F .336(set to the full pathname)2.836 F .365
-(used to in)144 619.2 R -.2(vo)-.4 G .565 -.1(ke e).2 H .365
+(used to in)144 249.6 R -.2(vo)-.4 G .565 -.1(ke e).2 H .365
(ach command e).1 F -.15(xe)-.15 G .366(cuted and placed in the en).15 F
.366(vironment e)-.4 F .366(xported to that command.)-.15 F(When checki\
ng mail, this parameter holds the name of the mail \214le currently bei\
-ng check)144 631.2 Q(ed.)-.1 E F1 -.3(BA)108 643.2 S(SH).3 E F0
-(Expands to the full \214lename used to in)144 643.2 Q -.2(vo)-.4 G .2
+ng check)144 261.6 Q(ed.)-.1 E F1 -.3(BA)108 273.6 S(SH).3 E F0
+(Expands to the full \214lename used to in)144 273.6 Q -.2(vo)-.4 G .2
-.1(ke t).2 H(his instance of).1 E F1(bash)2.5 E F0(.)A F1 -.3(BA)108
-655.2 S(SHOPTS).3 E F0 2.549(Ac)144 667.2 S .049
+285.6 S(SHOPTS).3 E F0 2.549(Ac)144 297.6 S .049
(olon-separated list of enabled shell options.)-2.549 F .049(Each w)
5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049
-(gument for the)-.18 F 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
+(gument for the)-.18 F F1<ad73>2.548 E F0 .115(option to the)144 309.6 R
+F1(shopt)2.616 E F0 -.2(bu)2.616 G .116(iltin command \(see).2 F F2 .116
(SHELL B)2.616 F(UIL)-.09 E .116(TIN COMMANDS)-.828 F F0(belo)2.366 E
2.616(w\). The)-.25 F .116(options ap-)2.616 F 1.067(pearing in)144
-691.2 R F3 -.27(BA)3.567 G(SHOPTS).27 E F0 1.067(are those reported as)
-3.317 F F2(on)3.797 E F0(by)3.807 E F1(shopt)3.567 E F0 6.066(.I)C 3.566
-(ft)-6.066 G 1.066(his v)-3.566 F 1.066(ariable is in the en)-.25 F
-(vironment)-.4 E(when)144 703.2 Q F1(bash)3.141 E F0 .642(starts up, ea\
-ch shell option in the list will be enabled before reading an)3.141 F
-3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 715.2 Q
-(ariable is read-only)-.25 E(.)-.65 E(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(10)190.395 E 0 Cg EP
-%%Page: 11 11
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.3(BA)108 84 S(SHPID).3 E F0 .188
-(Expands to the process ID of the current)144 96 R F1(bash)2.688 E F0
-2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F F1($$)
-2.687 E F0 .187(under certain circum-)2.687 F .548
-(stances, such as subshells that do not require)144 108 R F1(bash)3.048
-E F0 .548(to be re-initialized.)3.048 F .549(Assignments to)5.549 F/F2 9
-/Times-Bold@0 SF -.27(BA)3.049 G(SHPID).27 E F0(ha)144 120 Q .3 -.15
-(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F1 -.3(BA)2.5
-G(SHPID).3 E F0(is unset, it loses its special properties, e)2.5 E -.15
-(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G
-(ubsequently reset.)-2.5 E F1 -.3(BA)108 132 S(SH_ALIASES).3 E F0 1.195
-(An associati)144 144 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F 1.195
-(ariable whose members correspond to the internal list of aliases as ma\
-in-)-.25 F .16(tained by the)144 156 R F1(alias)2.66 E F0 -.2(bu)2.66 G
-2.66(iltin. Elements).2 F .16
+321.6 R F2 -.27(BA)3.567 G(SHOPTS).27 E F0 1.067(are those reported as)
+3.317 F/F3 10/Times-Italic@0 SF(on)3.797 E F0(by)3.807 E F1(shopt)3.567
+E F0 6.066(.I)C 3.566(ft)-6.066 G 1.066(his v)-3.566 F 1.066
+(ariable is in the en)-.25 F(vironment)-.4 E(when)144 333.6 Q F1(bash)
+3.141 E F0 .642(starts up, each shell option in the list will be enable\
+d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142
+F(This v)144 345.6 Q(ariable is read-only)-.25 E(.)-.65 E F1 -.3(BA)108
+357.6 S(SHPID).3 E F0 .188(Expands to the process ID of the current)144
+369.6 R F1(bash)2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187
+(fers from)-.25 F F1($$)2.687 E F0 .187(under certain circum-)2.687 F
+.548(stances, such as subshells that do not require)144 381.6 R F1(bash)
+3.048 E F0 .548(to be re-initialized.)3.048 F .549(Assignments to)5.549
+F F2 -.27(BA)3.049 G(SHPID).27 E F0(ha)144 393.6 Q .3 -.15(ve n)-.2 H
+2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F1 -.3(BA)2.5 G(SHPID).3 E
+F0(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5
+(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
+-2.5 E F1 -.3(BA)108 405.6 S(SH_ALIASES).3 E F0 1.195(An associati)144
+417.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F 1.195(ariable whose m\
+embers correspond to the internal list of aliases as main-)-.25 F .16
+(tained by the)144 429.6 R F1(alias)2.66 E F0 -.2(bu)2.66 G 2.66
+(iltin. Elements).2 F .16
(added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15
(ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503
-(array elements currently does not cause aliases to be remo)144 168 R
+(array elements currently does not cause aliases to be remo)144 441.6 R
-.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If)
-9.502 E F1 -.3(BA)144 180 S(SH_ALIASES).3 E F0
+9.502 E F1 -.3(BA)144 453.6 S(SH_ALIASES).3 E F0
(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5
(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
--2.5 E F1 -.3(BA)108 192 S(SH_ARGC).3 E F0 .934(An array v)144 204 R
+-2.5 E F1 -.3(BA)108 465.6 S(SH_ARGC).3 E F0 .934(An array v)144 477.6 R
.934(ariable whose v)-.25 F .934
(alues are the number of parameters in each frame of the current)-.25 F
-F1(bash)3.435 E F0 -.15(exe)144 216 S .535(cution call stack.).15 F .535
-(The number of parameters to the current subroutine \(shell function or\
- script)5.535 F -.15(exe)144 228 S .141(cuted with).15 F F1(.)2.641 E F0
-(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa)-2.641 G
-2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142
+F1(bash)3.435 E F0 -.15(exe)144 489.6 S .535(cution call stack.).15 F
+.535(The number of parameters to the current subroutine \(shell functio\
+n or script)5.535 F -.15(exe)144 501.6 S .141(cuted with).15 F F1(.)
+2.641 E F0(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa)
+-2.641 G 2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142
(When a subroutine is e)5.142 F -.15(xe)-.15 G .142
(cuted, the number of).15 F 1.265(parameters passed is pushed onto)144
-240 R F2 -.27(BA)3.765 G(SH_ARGC).27 E/F3 9/Times-Roman@0 SF(.)A F0
+513.6 R F2 -.27(BA)3.765 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0
1.265(The shell sets)5.765 F F2 -.27(BA)3.765 G(SH_ARGC).27 E F0 1.265
-(only when in e)3.515 F(x-)-.15 E .947(tended deb)144 252 R .947
+(only when in e)3.515 F(x-)-.15 E .947(tended deb)144 525.6 R .947
(ugging mode \(see the description of the)-.2 F F1(extdeb)3.447 E(ug)-.2
E F0 .947(option to the)3.447 F F1(shopt)3.447 E F0 -.2(bu)3.448 G .948
-(iltin belo).2 F(w\).)-.25 E(Setting)144 264 Q F1(extdeb)3.363 E(ug)-.2
-E F0 .863(after the shell has started to e)3.363 F -.15(xe)-.15 G .862
-(cute a script, or referencing this v).15 F .862(ariable when)-.25 F F1
-(extdeb)144 276 Q(ug)-.2 E F0(is not set, may result in inconsistent v)
-2.5 E(alues.)-.25 E F1 -.3(BA)108 288 S(SH_ARGV).3 E F0 .206(An array v)
-144 300 R .206(ariable containing all of the parameters in the current)
--.25 F F1(bash)2.706 E F0 -.15(exe)2.706 G .207(cution call stack.).15 F
-.207(The \214-)5.207 F .567(nal parameter of the last subroutine call i\
-s at the top of the stack; the \214rst parameter of the initial)144 312
-R 1.424(call is at the bottom.)144 324 R 1.424(When a subroutine is e)
+(iltin belo).2 F(w\).)-.25 E(Setting)144 537.6 Q F1(extdeb)3.363 E(ug)
+-.2 E F0 .863(after the shell has started to e)3.363 F -.15(xe)-.15 G
+.862(cute a script, or referencing this v).15 F .862(ariable when)-.25 F
+F1(extdeb)144 549.6 Q(ug)-.2 E F0
+(is not set, may result in inconsistent v)2.5 E(alues.)-.25 E F1 -.3(BA)
+108 561.6 S(SH_ARGV).3 E F0 .206(An array v)144 573.6 R .206
+(ariable containing all of the parameters in the current)-.25 F F1(bash)
+2.706 E F0 -.15(exe)2.706 G .207(cution call stack.).15 F .207
+(The \214-)5.207 F .567(nal parameter of the last subroutine call is at\
+ the top of the stack; the \214rst parameter of the initial)144 585.6 R
+1.424(call is at the bottom.)144 597.6 R 1.424(When a subroutine is e)
6.424 F -.15(xe)-.15 G 1.424
-(cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144 336
-S(SH_ARGV).27 E F3(.)A F0 .854(The shell sets)5.354 F F2 -.27(BA)3.354 G
-(SH_ARGV).27 E F0 .853(only when in e)3.104 F .853(xtended deb)-.15 F
-.853(ugging mode \(see the de-)-.2 F .475(scription of the)144 348 R F1
-(extdeb)2.975 E(ug)-.2 E F0 .475(option to the)2.975 F F1(shopt)2.975 E
-F0 -.2(bu)2.975 G .475(iltin belo).2 F 2.975(w\). Setting)-.25 F F1
-(extdeb)2.976 E(ug)-.2 E F0 .476(after the shell has)2.976 F .45
-(started to e)144 360 R -.15(xe)-.15 G .45
-(cute a script, or referencing this v).15 F .45(ariable when)-.25 F F1
-(extdeb)2.95 E(ug)-.2 E F0 .45(is not set, may result in in-)2.95 F
-(consistent v)144 372 Q(alues.)-.25 E F1 -.3(BA)108 384 S(SH_ARGV0).3 E
-F0 .25(When referenced, this v)144 396 R .25(ariable e)-.25 F .251
-(xpands to the name of the shell or shell script \(identical to)-.15 F
-F1($0)2.751 E F0 2.751(;s)C(ee)-2.751 E .041
-(the description of special parameter 0 abo)144 408 R -.15(ve)-.15 G
+(cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144
+609.6 S(SH_ARGV).27 E F4(.)A F0 .854(The shell sets)5.354 F F2 -.27(BA)
+3.354 G(SH_ARGV).27 E F0 .853(only when in e)3.104 F .853(xtended deb)
+-.15 F .853(ugging mode \(see the de-)-.2 F .475(scription of the)144
+621.6 R F1(extdeb)2.975 E(ug)-.2 E F0 .475(option to the)2.975 F F1
+(shopt)2.975 E F0 -.2(bu)2.975 G .475(iltin belo).2 F 2.975
+(w\). Setting)-.25 F F1(extdeb)2.976 E(ug)-.2 E F0 .476
+(after the shell has)2.976 F .45(started to e)144 633.6 R -.15(xe)-.15 G
+.45(cute a script, or referencing this v).15 F .45(ariable when)-.25 F
+F1(extdeb)2.95 E(ug)-.2 E F0 .45(is not set, may result in in-)2.95 F
+(consistent v)144 645.6 Q(alues.)-.25 E F1 -.3(BA)108 657.6 S(SH_ARGV0)
+.3 E F0 .25(When referenced, this v)144 669.6 R .25(ariable e)-.25 F
+.251(xpands to the name of the shell or shell script \(identical to)-.15
+F F1($0)2.751 E F0 2.751(;s)C(ee)-2.751 E .041
+(the description of special parameter 0 abo)144 681.6 R -.15(ve)-.15 G
2.541(\). Assignment).15 F(to)2.541 E F1 -.3(BA)2.541 G(SH_ARGV0).3 E F0
.04(causes the v)2.541 F .04(alue as-)-.25 F .216
-(signed to also be assigned to)144 420 R F1($0)2.716 E F0 5.216(.I)C(f)
--5.216 E F1 -.3(BA)2.716 G(SH_ARGV0).3 E F0 .216
+(signed to also be assigned to)144 693.6 R F1($0)2.716 E F0 5.216(.I)C
+(f)-5.216 E F1 -.3(BA)2.716 G(SH_ARGV0).3 E F0 .216
(is unset, it loses its special properties, e)2.716 F -.15(ve)-.25 G
-2.716(ni).15 G(f)-2.716 E(it is subsequently reset.)144 432 Q F1 -.3(BA)
-108 444 S(SH_CMDS).3 E F0 .668(An associati)144 456 R .968 -.15(ve a)
--.25 H .668(rray v).15 F .668(ariable whose members correspond to the i\
-nternal hash table of commands)-.25 F .195(as maintained by the)144 468
-R F1(hash)2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196
-(added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15
-(ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\
-t cause command names to be remo)144 480 R -.15(ve)-.15 G 3.352(df).15 G
-.852(rom the hash)-3.352 F 2.5(table. If)144 492 R F1 -.3(BA)2.5 G
+2.716(ni).15 G(f)-2.716 E(it is subsequently reset.)144 705.6 Q
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(11)185.115 E 0 Cg EP
+%%Page: 12 12
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF -.3(BA)108 84 S(SH_CMDS).3 E F0 .668(An associati)144 96 R .968 -.15
+(ve a)-.25 H .668(rray v).15 F .668(ariable whose members correspond to\
+ the internal hash table of commands)-.25 F .195(as maintained by the)
+144 108 R F1(hash)2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F
+.196(added to this array appear in the hash table; ho)2.696 F(we)-.25 E
+-.15(ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently doe\
+s not cause command names to be remo)144 120 R -.15(ve)-.15 G 3.352(df)
+.15 G .852(rom the hash)-3.352 F 2.5(table. If)144 132 R F1 -.3(BA)2.5 G
(SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15
(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G
-(ubsequently reset.)-2.5 E F1 -.3(BA)108 504 S(SH_COMMAND).3 E F0 1.242
-(The command currently being e)144 516 R -.15(xe)-.15 G 1.243
+(ubsequently reset.)-2.5 E F1 -.3(BA)108 144 S(SH_COMMAND).3 E F0 1.242
+(The command currently being e)144 156 R -.15(xe)-.15 G 1.243
(cuted or about to be e).15 F -.15(xe)-.15 G 1.243
(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F
.263(command as the result of a trap, in which case it is the command e)
-144 528 R -.15(xe)-.15 G .262(cuting at the time of the trap.).15 F(If)
-144 540 Q F1 -.3(BA)2.5 G(SH_COMMAND).3 E F0
+144 168 R -.15(xe)-.15 G .262(cuting at the time of the trap.).15 F(If)
+144 180 Q F1 -.3(BA)2.5 G(SH_COMMAND).3 E F0
(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5
(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
--2.5 E F1 -.3(BA)108 552 S(SH_EXECUTION_STRING).3 E F0(The command ar)
-144 564 Q(gument to the)-.18 E 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 612 R F1
-(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171
-E F1(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F1(]})A F0 -.1(wa)17.172 G
-17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 624 Q(ASH_LINENO[)
--.3 E F4($i-1)A F1(]})A F0 .115
+-2.5 E F1 -.3(BA)108 192 S(SH_EXECUTION_STRING).3 E F0(The command ar)
+144 204 Q(gument to the)-.18 E F1<ad63>2.5 E F0(in)2.5 E -.2(vo)-.4 G
+(cation option.).2 E F1 -.3(BA)108 216 S(SH_LINENO).3 E F0 .692
+(An array v)144 228 R .692(ariable whose members are the line numbers i\
+n source \214les where each corresponding)-.25 F .97(member of)144 240 R
+/F2 9/Times-Bold@0 SF(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si)
+.1 G -1.9 -.4(nv o)-3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E
+(ASH_LINENO[)-.3 E/F3 10/Times-Italic@0 SF($i)A F1(]})A F0 .969
+(is the line number in the source)3.469 F 14.671(\214le \()144 252 R F1
+(${B)A(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171
+E F1(${FUNCN)17.172 E(AME[)-.2 E F3($i)A F1(]})A F0 -.1(wa)17.172 G
+17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 264 Q(ASH_LINENO[)
+-.3 E F3($i-1)A F1(]})A F0 .115
(if referenced within another shell function\).)2.615 F(Use)5.115 E F2
(LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144
-636 Q(.)-.55 E F1 -.3(BA)108 648 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E
--.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 660 S 1.57(olon-separated list of\
+276 Q(.)-.55 E F1 -.3(BA)108 288 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E
+-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 300 S 1.57(olon-separated list of\
directories in which the shell looks for dynamically loadable b)-4.07 F
-(uiltins)-.2 E(speci\214ed by the)144 672 Q F1(enable)2.5 E F0(command.)
-2.5 E F1 -.3(BA)108 684 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144
-696 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506
+(uiltins)-.2 E(speci\214ed by the)144 312 Q F1(enable)2.5 E F0(command.)
+2.5 E F1 -.3(BA)108 324 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144
+336 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506
E F0 .005(binary operator to the)2.506 F F1([[)2.505 E F0 .005
-(conditional com-)2.505 F 2.506(mand. The)144 708 R .007
+(conditional com-)2.505 F 2.506(mand. The)144 348 R .007
(element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007
(he portion of the string matching the entire re)-2.507 F .007(gular e)
--.15 F(xpression.)-.15 E 4.331(The element with inde)144 720 R(x)-.15 E
-F4(n)6.831 E F0 4.331(is the portion of the string matching the)6.831 F
-F4(n)6.83 E F0 4.33(th parenthesized)B(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(11)190.395 E 0 Cg EP
-%%Page: 12 12
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(sube)144 84 Q
-(xpression.)-.15 E/F1 10/Times-Bold@0 SF -.3(BA)108 96 S(SH_SOURCE).3 E
-F0 .125(An array v)144 108 R .125(ariable whose members are the source \
-\214lenames where the corresponding shell function)-.25 F .781
-(names in the)144 120 R/F2 9/Times-Bold@0 SF(FUNCN)3.28 E(AME)-.18 E F0
-.78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78
-(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E/F3 10
-/Times-Italic@0 SF($i)A F1(]})A F0(is)3.28 E(de\214ned in the \214le)144
-132 Q F1(${B)2.5 E(ASH_SOURCE[)-.3 E F3($i)A F1(]})A F0(and called from)
-2.5 E F1(${B)2.5 E(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA)
-108 144 S(SH_SUBSHELL).3 E F0 .296
-(Incremented by one within each subshell or subshell en)144 156 R .296
-(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G
-(cuting).15 E 1.277(in that en)144 168 R 3.777(vironment. The)-.4 F
+-.15 F(xpression.)-.15 E .998(The element with inde)144 360 R(x)-.15 E
+F3(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F
+F3(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E(sion.)144 372
+Q F1 -.3(BA)108 384 S(SH_SOURCE).3 E F0 .125(An array v)144 396 R .125(\
+ariable whose members are the source \214lenames where the correspondin\
+g shell function)-.25 F .781(names in the)144 408 R F2(FUNCN)3.28 E(AME)
+-.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78
+(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F3($i)A F1(]})A
+F0(is)3.28 E(de\214ned in the \214le)144 420 Q F1(${B)2.5 E(ASH_SOURCE[)
+-.3 E F3($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[)
+-.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 432 S(SH_SUBSHELL).3 E F0
+.296(Incremented by one within each subshell or subshell en)144 444 R
+.296(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G
+(cuting).15 E 1.277(in that en)144 456 R 3.777(vironment. The)-.4 F
1.277(initial v)3.777 F 1.277(alue is 0.)-.25 F(If)6.277 E F1 -.3(BA)
3.777 G(SH_SUBSHELL).3 E F0 1.276(is unset, it loses its special)3.777 F
-(properties, e)144 180 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5
-(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -.3(BA)108 192 S
-(SH_VERSINFO).3 E F0 2.644(Ar)144 204 S .144(eadonly array v)-2.644 F
+(properties, e)144 468 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5
+(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -.3(BA)108 480 S
+(SH_VERSINFO).3 E F0 2.644(Ar)144 492 S .144(eadonly array v)-2.644 F
.144(ariable whose members hold v)-.25 F .144
(ersion information for this instance of)-.15 F F1(bash)2.645 E F0 5.145
-(.T)C(he)-5.145 E -.25(va)144 216 S
+(.T)C(he)-5.145 E -.25(va)144 504 S
(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3
-(BA)144 234 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 234 Q
+(BA)144 522 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 522 Q
(ersion number \(the)-.15 E F3 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3
-(BA)144 246 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)264 246 Q
+(BA)144 534 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)264 534 Q
(ersion number \(the)-.15 E F3(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA)
-144 258 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)264 258 Q -.15
-(ve)-.25 G(l.).15 E F1 -.3(BA)144 270 S(SH_VERSINFO[).3 E F0(3)A F1(])A
-F0(The b)264 270 Q(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 282 S
-(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)264 282 Q
-F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 294 S(SH_VERSINFO[).3 E F0(5)A F1
-(])A F0(The v)264 294 Q(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9
-/Times-Roman@0 SF(.)A F1 -.3(BA)108 306 S(SH_VERSION).3 E F0
-(Expands to a string describing the v)144 318 Q
+144 546 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)264 546 Q -.15
+(ve)-.25 G(l.).15 E F1 -.3(BA)144 558 S(SH_VERSINFO[).3 E F0(3)A F1(])A
+F0(The b)264 558 Q(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 570 S
+(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)264 570 Q
+F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 582 S(SH_VERSINFO[).3 E F0(5)A F1
+(])A F0(The v)264 582 Q(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9
+/Times-Roman@0 SF(.)A F1 -.3(BA)108 594 S(SH_VERSION).3 E F0
+(Expands to a string describing the v)144 606 Q
(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108
-330 Q(ORD)-.1 E F0 .397(An inde)144 342 R 2.897(xi)-.15 G(nto)-2.897 E
+618 Q(ORD)-.1 E F0 .397(An inde)144 630 R 2.897(xi)-.15 G(nto)-2.897 E
F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396
(ord containing the current cursor position.)-.1 F .396(This v)5.396 F
-(ari-)-.25 E 1.18(able is a)144 354 R -.25(va)-.2 G 1.181
+(ari-)-.25 E 1.18(able is a)144 642 R -.25(va)-.2 G 1.181
(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681
(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F
-1.181(acilities \(see)-.1 F F1(Pr)144 366 Q(ogrammable Completion)-.18 E
-F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 378 Q F0(The k)144 390 Q .3
+1.181(acilities \(see)-.1 F F1(Pr)144 654 Q(ogrammable Completion)-.18 E
+F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 666 Q F0(The k)144 678 Q .3
-.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3
-.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2
-H(he current completion function.).1 E F1(COMP_LINE)108 402 Q F0 1.208
-(The current command line.)144 414 R 1.208(This v)6.208 F 1.208
+H(he current completion function.).1 E F1(COMP_LINE)108 690 Q F0 1.208
+(The current command line.)144 702 R 1.208(This v)6.208 F 1.208
(ariable is a)-.25 F -.25(va)-.2 G 1.208
(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F
-1.037(mands in)144 426 R -.2(vo)-.4 G -.1(ke).2 G 3.537(db).1 G 3.537
+1.037(mands in)144 714 R -.2(vo)-.4 G -.1(ke).2 G 3.537(db).1 G 3.537
(yt)-3.537 G 1.037(he programmable completion f)-3.537 F 1.037
(acilities \(see)-.1 F F1(Pr)3.537 E 1.037(ogrammable Completion)-.18 F
-F0(be-)3.537 E(lo)144 438 Q(w\).)-.25 E F1(COMP_POINT)108 450 Q F0 .667
-(The inde)144 462 R 3.167(xo)-.15 G 3.167(ft)-3.167 G .666
-(he current cursor position relati)-3.167 F .966 -.15(ve t)-.25 H 3.166
-(ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15
-F .666(If the)5.666 F .534
+F0(be-)3.537 E(lo)144 726 Q(w\).)-.25 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(12)185.115 E 0 Cg EP
+%%Page: 13 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(COMP_POINT)108 84 Q F0 .667(The inde)144 96 R 3.167(xo)-.15 G 3.167
+(ft)-3.167 G .666(he current cursor position relati)-3.167 F .966 -.15
+(ve t)-.25 H 3.166(ot).15 G .666(he be)-3.166 F .666
+(ginning of the current command.)-.15 F .666(If the)5.666 F .534
(current cursor position is at the end of the current command, the v)144
-474 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1
-(${#COMP_LINE})144 486 Q F0 5.705(.T)C .705(his v)-5.705 F .704
+108 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1
+(${#COMP_LINE})144 120 Q F0 5.705(.T)C .705(his v)-5.705 F .704
(ariable is a)-.25 F -.25(va)-.2 G .704
(ilable only in shell functions and e).25 F .704(xternal commands in-)
--.15 F -.2(vo)144 498 S -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G
+-.15 F -.2(vo)144 132 S -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G
(he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E
(ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108
-510 Q F0 .041(Set to an inte)144 522 R .041(ger v)-.15 F .041(alue corr\
+144 Q F0 .041(Set to an inte)144 156 R .041(ger v)-.15 F .041(alue corr\
esponding to the type of completion attempted that caused a completion)
--.25 F .338(function to be called:)144 534 R F3 -.5(TA)2.837 G(B).5 E F0
-2.837(,f)C .337(or normal completion,)-2.837 F F3(?)2.837 E F0 2.837(,f)
-C .337(or listing completions after successi)-2.837 F .637 -.15(ve t)
--.25 H(abs,).15 E F3(!)144 546 Q F0 3.067(,f)C .567
-(or listing alternati)-3.067 F -.15(ve)-.25 G 3.067(so).15 G 3.067(np)
--3.067 G .567(artial w)-3.067 F .567(ord completion,)-.1 F F3(@)3.067 E
-F0 3.067(,t)C 3.067(ol)-3.067 G .567(ist completions if the w)-3.067 F
-.567(ord is not un-)-.1 F .418(modi\214ed, or)144 558 R F3(%)2.918 E F0
-2.918(,f)C .418(or menu completion.)-2.918 F .417(This v)5.417 F .417
-(ariable is a)-.25 F -.25(va)-.2 G .417
+-.25 F .338(function to be called:)144 168 R/F2 10/Times-Italic@0 SF -.5
+(TA)2.837 G(B).5 E F0 2.837(,f)C .337(or normal completion,)-2.837 F F2
+(?)2.837 E F0 2.837(,f)C .337(or listing completions after successi)
+-2.837 F .637 -.15(ve t)-.25 H(abs,).15 E F2(!)144 180 Q F0 3.067(,f)C
+.567(or listing alternati)-3.067 F -.15(ve)-.25 G 3.067(so).15 G 3.067
+(np)-3.067 G .567(artial w)-3.067 F .567(ord completion,)-.1 F F2(@)
+3.067 E F0 3.067(,t)C 3.067(ol)-3.067 G .567(ist completions if the w)
+-3.067 F .567(ord is not un-)-.1 F .418(modi\214ed, or)144 192 R F2(%)
+2.918 E F0 2.918(,f)C .418(or menu completion.)-2.918 F .417(This v)
+5.417 F .417(ariable is a)-.25 F -.25(va)-.2 G .417
(ilable only in shell functions and e).25 F(xter)-.15 E(-)-.2 E .704
-(nal commands in)144 570 R -.2(vo)-.4 G -.1(ke).2 G 3.204(db).1 G 3.204
+(nal commands in)144 204 R -.2(vo)-.4 G -.1(ke).2 G 3.204(db).1 G 3.204
(yt)-3.204 G .704(he programmable completion f)-3.204 F .704
(acilities \(see)-.1 F F1(Pr)3.204 E .704(ogrammable Comple-)-.18 F
-(tion)144 582 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 594 Q(ORDBREAKS)
--.1 E F0 1.336(The set of characters that the)144 606 R F1 -.18(re)3.836
+(tion)144 216 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 228 Q(ORDBREAKS)
+-.1 E F0 1.336(The set of characters that the)144 240 R F1 -.18(re)3.836
G(adline).18 E F0 1.336(library treats as w)3.836 F 1.335
(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If)
-144 618 R F2(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626
+144 252 R/F3 9/Times-Bold@0 SF(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626
(is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G
3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G
-(ubse-)-3.126 E(quently reset.)144 630 Q F1(COMP_W)108 642 Q(ORDS)-.1 E
-F0 .654(An array v)144 654 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E
+(ubse-)-3.126 E(quently reset.)144 264 Q F1(COMP_W)108 276 Q(ORDS)-.1 E
+F0 .654(An array v)144 288 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E
F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w)
--.25 F .653(ords in the current command)-.1 F 3.191(line. The)144 666 R
+-.25 F .653(ords in the current command)-.1 F 3.191(line. The)144 300 R
.692(line is split into w)3.192 F .692(ords as)-.1 F F1 -.18(re)3.192 G
-(adline).18 E F0 -.1(wo)3.192 G .692(uld split it, using).1 F F2(COMP_W)
+(adline).18 E F0 -.1(wo)3.192 G .692(uld split it, using).1 F F3(COMP_W)
3.192 E(ORDBREAKS)-.09 E F0 .692(as de-)2.942 F 1.558(scribed abo)144
-678 R -.15(ve)-.15 G 6.558(.T).15 G 1.558(his v)-6.558 F 1.558
+312 R -.15(ve)-.15 G 6.558(.T).15 G 1.558(his v)-6.558 F 1.558
(ariable is a)-.25 F -.25(va)-.2 G 1.558
(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 4.057
(db).1 G 4.057(yt)-4.057 G 1.557(he programmable)-4.057 F(completion f)
-144 690 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E
-F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 702 Q(OC)-.3 E F0 .168(An array v)
-144 714 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E
+144 324 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E
+F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 336 Q(OC)-.3 E F0 .168(An array v)
+144 348 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E
.169
(w\) created to hold the \214le descriptors for output from and input)
--.25 F(to an unnamed coprocess \(see)144 726 Q F1(Copr)2.5 E(ocesses)
--.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(12)190.395 E 0 Cg EP
-%%Page: 13 13
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(DIRST)108 84 Q -.55(AC)-.9 G(K).55 E F0 .79(An array v)144 96 R .79
-(ariable \(see)-.25 F F1(Arrays)3.29 E F0(belo)3.289 E .789
+-.25 F(to an unnamed coprocess \(see)144 360 Q F1(Copr)2.5 E(ocesses)
+-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 372 Q -.55(AC)
+-.9 G(K).55 E F0 .79(An array v)144 384 R .79(ariable \(see)-.25 F F1
+(Arrays)3.29 E F0(belo)3.289 E .789
(w\) containing the current contents of the directory stack.)-.25 F(Di-)
-5.789 E .099(rectories appear in the stack in the order the)144 108 R
+5.789 E .099(rectories appear in the stack in the order the)144 396 R
2.599(ya)-.15 G .099(re displayed by the)-2.599 F F1(dirs)2.599 E F0 -.2
(bu)2.599 G 2.599(iltin. Assigning).2 F .099(to mem-)2.599 F .84
-(bers of this array v)144 120 R .84
+(bers of this array v)144 408 R .84
(ariable may be used to modify directories already in the stack, b)-.25
-F .84(ut the)-.2 F F1(pushd)3.34 E F0(and)144 132 Q F1(popd)3.45 E F0
+F .84(ut the)-.2 F F1(pushd)3.34 E F0(and)144 420 Q F1(popd)3.45 E F0
-.2(bu)3.45 G .951(iltins must be used to add and remo).2 F 1.251 -.15
(ve d)-.15 H 3.451(irectories. Assignment).15 F .951(to this v)3.451 F
-.951(ariable will)-.25 F .379(not change the current directory)144 144 R
-5.379(.I)-.65 G(f)-5.379 E/F2 9/Times-Bold@0 SF(DIRST)2.879 E -.495(AC)
--.81 G(K).495 E F0 .378(is unset, it loses its special properties, e)
-2.629 F -.15(ve)-.25 G 2.878(ni).15 G 2.878(fi)-2.878 G 2.878(ti)-2.878
-G(s)-2.878 E(subsequently reset.)144 156 Q F1(EPOCHREAL)108 168 Q(TIME)
--.92 E F0 .337(Each time this parameter is referenced, it e)144 180 R
-.338(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)
-144 192 Q/F3 10/Times-Italic@0 SF(time)2.917 E F0 .417
-(\(3\)\) as a \215oating point v)B .416
+.951(ariable will)-.25 F .379(not change the current directory)144 432 R
+5.379(.I)-.65 G(f)-5.379 E F3(DIRST)2.879 E -.495(AC)-.81 G(K).495 E F0
+.378(is unset, it loses its special properties, e)2.629 F -.15(ve)-.25 G
+2.878(ni).15 G 2.878(fi)-2.878 G 2.878(ti)-2.878 G(s)-2.878 E
+(subsequently reset.)144 444 Q F1(EPOCHREAL)108 456 Q(TIME)-.92 E F0
+.337(Each time this parameter is referenced, it e)144 468 R .338
+(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144
+480 Q F2(time)2.917 E F0 .417(\(3\)\) as a \215oating point v)B .416
(alue with micro-second granularity)-.25 F 5.416(.A)-.65 G .416
-(ssignments to)-5.416 F F2(EPOCHRE-)2.916 E(AL)144 204 Q(TIME)-.828 E F0
-1.09(are ignored.)3.34 F(If)6.09 E F2(EPOCHREAL)3.59 E(TIME)-.828 E F0
+(ssignments to)-5.416 F F3(EPOCHRE-)2.916 E(AL)144 492 Q(TIME)-.828 E F0
+1.09(are ignored.)3.34 F(If)6.09 E F3(EPOCHREAL)3.59 E(TIME)-.828 E F0
1.09(is unset, it loses its special properties, e)3.34 F -.15(ve)-.25 G
3.591(ni).15 G 3.591(fi)-3.591 G 3.591(ti)-3.591 G(s)-3.591 E
-(subsequently reset.)144 216 Q F1(EPOCHSECONDS)108 228 Q F0 .338
-(Each time this parameter is referenced, it e)144 240 R .337
+(subsequently reset.)144 504 Q F1(EPOCHSECONDS)108 516 Q F0 .338
+(Each time this parameter is referenced, it e)144 528 R .337
(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144
-252 Q F3(time)4.041 E F0 4.041(\(3\)\). Assignments)B(to)4.041 E F2
-(EPOCHSECONDS)4.041 E F0 1.542(are ignored.)3.792 F(If)6.542 E F2
+540 Q F2(time)4.041 E F0 4.041(\(3\)\). Assignments)B(to)4.041 E F3
+(EPOCHSECONDS)4.041 E F0 1.542(are ignored.)3.792 F(If)6.542 E F3
(EPOCHSECONDS)4.042 E F0 1.542(is unset, it)3.792 F
-(loses its special properties, e)144 264 Q -.15(ve)-.25 G 2.5(ni).15 G
+(loses its special properties, e)144 552 Q -.15(ve)-.25 G 2.5(ni).15 G
2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1
-(EUID)108 276 Q F0 1.104(Expands to the ef)144 276 R(fecti)-.25 E 1.403
+(EUID)108 564 Q F0 1.104(Expands to the ef)144 564 R(fecti)-.25 E 1.403
-.15(ve u)-.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G
1.103(nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103
-(ariable is)-.25 F(readonly)144 288 Q(.)-.65 E F1(FUNCN)108 300 Q(AME)
--.2 E F0 .478(An array v)144 312 R .479
+(ariable is)-.25 F(readonly)144 576 Q(.)-.65 E F1(FUNCN)108 588 Q(AME)
+-.2 E F0 .478(An array v)144 600 R .479
(ariable containing the names of all shell functions currently in the e)
-.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277
-(The element with inde)144 324 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276
+(The element with inde)144 612 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276
(he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15
G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384
-(element \(the one with the highest inde)144 336 R .384(x\) is)-.15 F/F4
+(element \(the one with the highest inde)144 624 R .384(x\) is)-.15 F/F4
10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .385
(ariable e)-.25 F .385(xists only when a shell func-)-.15 F .076
-(tion is e)144 348 R -.15(xe)-.15 G 2.576(cuting. Assignments).15 F(to)
-2.576 E F2(FUNCN)2.576 E(AME)-.18 E F0(ha)2.326 E .376 -.15(ve n)-.2 H
-2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F2(FUNCN)2.575 E
+(tion is e)144 636 R -.15(xe)-.15 G 2.576(cuting. Assignments).15 F(to)
+2.576 E F3(FUNCN)2.576 E(AME)-.18 E F0(ha)2.326 E .376 -.15(ve n)-.2 H
+2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.575 E
(AME)-.18 E F0 .075(is unset, it loses its)2.325 F
-(special properties, e)144 360 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
+(special properties, e)144 648 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .11(This v)144
-378 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO)
+666 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO)
.3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111
-(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 390 S(ME).2 E F0
+(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 678 S(ME).2 E F0
1.404(has corresponding elements in)3.904 F F1 -.3(BA)3.904 G(SH_LINENO)
.3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E F0 1.404
-(to describe the)3.904 F .012(call stack.)144 402 R -.15(Fo)5.012 G
-2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F3($i)A
+(to describe the)3.904 F .012(call stack.)144 690 R -.15(Fo)5.012 G
+2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F2($i)A
F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le)
--2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 1.184
-(at line number)144 414 R F1(${B)3.684 E(ASH_LINENO[)-.3 E F3($i)A F1
+-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.184
+(at line number)144 702 R F1(${B)3.684 E(ASH_LINENO[)-.3 E F2($i)A F1
(]})A F0 6.184(.T)C(he)-6.184 E F1(caller)3.683 E F0 -.2(bu)3.683 G
1.183(iltin displays the current call stack using).2 F
-(this information.)144 426 Q F1(GR)108 438 Q(OUPS)-.3 E F0 1.228
-(An array v)144 450 R 1.228(ariable containing the list of groups of wh\
-ich the current user is a member)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E
-.572(ments to)144 462 R F2(GR)3.072 E(OUPS)-.27 E F0(ha)2.822 E .872
--.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F2
-(GR)3.072 E(OUPS)-.27 E F0 .572
-(is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G
-3.072(ni).15 G 3.071(fi)-3.072 G 3.071(ti)-3.071 G(s)-3.071 E
-(subsequently reset.)144 474 Q F1(HISTCMD)108 486 Q F0 2.81
-(The history number)144 498 R 5.31(,o)-.4 G 5.31(ri)-5.31 G(nde)-5.31 E
+(this information.)144 714 Q(GNU Bash 5.2)72 768 Q(2022 September 19)
+135.955 E(13)185.115 E 0 Cg EP
+%%Page: 14 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(GR)108 84 Q(OUPS)-.3 E F0 1.228(An array v)144 96 R 1.228(ariable co\
+ntaining the list of groups of which the current user is a member)-.25 F
+6.229(.A)-.55 G(ssign-)-6.229 E .572(ments to)144 108 R/F2 9
+/Times-Bold@0 SF(GR)3.072 E(OUPS)-.27 E F0(ha)2.822 E .872 -.15(ve n)-.2
+H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F2(GR)3.072 E
+(OUPS)-.27 E F0 .572(is unset, it loses its special properties, e)2.822
+F -.15(ve)-.25 G 3.072(ni).15 G 3.071(fi)-3.072 G 3.071(ti)-3.071 G(s)
+-3.071 E(subsequently reset.)144 120 Q F1(HISTCMD)108 132 Q F0 2.81
+(The history number)144 144 R 5.31(,o)-.4 G 5.31(ri)-5.31 G(nde)-5.31 E
5.311(xi)-.15 G 5.311(nt)-5.311 G 2.811
(he history list, of the current command.)-5.311 F 2.811(Assignments to)
-7.811 F F2(HISTCMD)144 510 Q F0 1.135(are ignored.)3.385 F(If)6.135 E F2
+7.811 F F2(HISTCMD)144 156 Q F0 1.135(are ignored.)3.385 F(If)6.135 E F2
(HISTCMD)3.635 E F0 1.135(is unset, it loses its special properties, e)
3.385 F -.15(ve)-.25 G 3.634(ni).15 G 3.634(fi)-3.634 G 3.634(ti)-3.634
-G 3.634(ss)-3.634 G(ubse-)-3.634 E(quently reset.)144 522 Q F1(HOSTN)108
-534 Q(AME)-.2 E F0(Automatically set to the name of the current host.)
-144 546 Q F1(HOSTTYPE)108 558 Q F0 .222(Automatically set to a string t\
-hat uniquely describes the type of machine on which)144 570 R F1(bash)
+G 3.634(ss)-3.634 G(ubse-)-3.634 E(quently reset.)144 168 Q F1(HOSTN)108
+180 Q(AME)-.2 E F0(Automatically set to the name of the current host.)
+144 192 Q F1(HOSTTYPE)108 204 Q F0 .222(Automatically set to a string t\
+hat uniquely describes the type of machine on which)144 216 R F1(bash)
2.723 E F0 .223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144
-582 R(def)2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 594 Q F0
+228 R(def)2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 240 Q F0
1.408(Each time this parameter is referenced, the shell substitutes a d\
-ecimal number representing the)144 606 R .078(current sequential line n\
-umber \(starting with 1\) within a script or function.)144 618 R .079
-(When not in a script or)5.078 F .307(function, the v)144 630 R .307
+ecimal number representing the)144 252 R .078(current sequential line n\
+umber \(starting with 1\) within a script or function.)144 264 R .079
+(When not in a script or)5.078 F .307(function, the v)144 276 R .307
(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E
F2(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F
-(special properties, e)144 642 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
-G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 654 Q
+(special properties, e)144 288 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
+G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 300 Q
(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\
-es the system type on which)144 666 R F1(bash)3.398 E F0 .899(is e)3.398
-F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 678 Q F3
-(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E
-(ault is system-dependent.)-.1 E F1(MAPFILE)108 690 Q F0 .294
-(An array v)144 702 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0
+es the system type on which)144 312 R F1(bash)3.398 E F0 .899(is e)3.398
+F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 324 Q/F3 10
+/Times-Italic@0 SF(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F
+(def)2.5 E(ault is system-dependent.)-.1 E F1(MAPFILE)108 336 Q F0 .294
+(An array v)144 348 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0
(belo)2.794 E .294(w\) created to hold the te)-.25 F .293
(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293
-(iltin when no).2 F -.25(va)144 714 S(riable name is supplied.).25 E
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(13)190.395 E 0 Cg EP
-%%Page: 14 14
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(OLDPWD)108 84 Q F0(The pre)144 96 Q(vious w)-.25 E
+(iltin when no).2 F -.25(va)144 360 S(riable name is supplied.).25 E F1
+(OLDPWD)108 372 Q F0(The pre)144 384 Q(vious w)-.25 E
(orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1
-(OPT)108 108 Q(ARG)-.9 E F0 1.626(The v)144 120 R 1.627
+(OPT)108 396 Q(ARG)-.9 E F0 1.626(The v)144 408 R 1.627
(alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F
-F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F/F2 9
-/Times-Bold@0 SF(SHELL)4.127 E -.09(BU)144 132 S(IL).09 E(TIN COMMANDS)
--.828 E F0(belo)2.25 E(w\).)-.25 E F1(OPTIND)108 144 Q F0 1.652
-(The inde)144 156 R 4.152(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152
-F 1.652(xt ar)-.15 F 1.652(gument to be processed by the)-.18 F F1
-(getopts)4.151 E F0 -.2(bu)4.151 G 1.651(iltin command \(see).2 F F2
-(SHELL)4.151 E -.09(BU)144 168 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
-2.25 E(w\).)-.25 E F1(OSTYPE)108 180 Q F0 .329(Automatically set to a s\
-tring that describes the operating system on which)144 192 R F1(bash)
-2.83 E F0 .33(is e)2.83 F -.15(xe)-.15 G 2.83(cuting. The).15 F(def)144
-204 Q(ault is system-dependent.)-.1 E F1(PIPEST)108 216 Q -.95(AT)-.9 G
-(US).95 E F0 .61(An array v)144 228 R .61(ariable \(see)-.25 F F1
-(Arrays)3.11 E F0(belo)3.11 E .61(w\) containing a list of e)-.25 F .61
-(xit status v)-.15 F .61(alues from the processes in)-.25 F
-(the most-recently-e)144 240 Q -.15(xe)-.15 G(cuted fore).15 E
+F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F2
+(SHELL)4.127 E -.09(BU)144 420 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
+2.25 E(w\).)-.25 E F1(OPTIND)108 432 Q F0 1.652(The inde)144 444 R 4.152
+(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 F 1.652(xt ar)-.15 F
+1.652(gument to be processed by the)-.18 F F1(getopts)4.151 E F0 -.2(bu)
+4.151 G 1.651(iltin command \(see).2 F F2(SHELL)4.151 E -.09(BU)144 456
+S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108
+468 Q F0 .329(Automatically set to a string that describes the operatin\
+g system on which)144 480 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe)
+-.15 G 2.83(cuting. The).15 F(def)144 492 Q(ault is system-dependent.)
+-.1 E F1(PIPEST)108 504 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144
+516 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61
+(w\) containing a list of e)-.25 F .61(xit status v)-.15 F .61
+(alues from the processes in)-.25 F(the most-recently-e)144 528 Q -.15
+(xe)-.15 G(cuted fore).15 E
(ground pipeline \(which may contain only a single command\).)-.15 E F1
-(PPID)108 252 Q F0(The process ID of the shell')144 252 Q 2.5(sp)-.55 G
+(PPID)108 540 Q F0(The process ID of the shell')144 540 Q 2.5(sp)-.55 G
2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E
-F1(PWD)108 264 Q F0(The current w)144 264 Q
+F1(PWD)108 552 Q F0(The current w)144 552 Q
(orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1
-(RANDOM)108 276 Q F0 .417(Each time this parameter is referenced, it e)
-144 288 R .417(xpands to a random inte)-.15 F .417
-(ger between 0 and 32767.)-.15 F(As-)5.417 E .551(signing a v)144 300 R
+(RANDOM)108 564 Q F0 .417(Each time this parameter is referenced, it e)
+144 576 R .417(xpands to a random inte)-.15 F .417
+(ger between 0 and 32767.)-.15 F(As-)5.417 E .551(signing a v)144 588 R
.551(alue to)-.25 F F2(RANDOM)3.051 E F0 .551
(initializes \(seeds\) the sequence of random numbers.)2.801 F(If)5.55 E
F2(RANDOM)3.05 E F0(is)2.8 E(unset, it loses its special properties, e)
-144 312 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5
-(ss)-2.5 G(ubsequently reset.)-2.5 E F1(READLINE_LINE)108 324 Q F0 1.546
-(The contents of the)144 336 R F1 -.18(re)4.047 G(adline).18 E F0 1.547
-(line b)4.047 F(uf)-.2 E(fer)-.25 E 4.047(,f)-.4 G 1.547(or use with)
--4.047 F/F3 10/Courier@0 SF 1.547(bind -x)4.047 F F0(\(see)4.047 E F2
-1.547(SHELL B)4.047 F(UIL)-.09 E 1.547(TIN COM-)-.828 F(MANDS)144 348 Q
-F0(belo)2.25 E(w\).)-.25 E F1(READLINE_MARK)108 360 Q F0 .107
-(The position of the mark \(sa)144 372 R -.15(ve)-.2 G 2.607(di).15 G
-.107(nsertion point\) in the)-2.607 F F1 -.18(re)2.606 G(adline).18 E F0
-.106(line b)2.606 F(uf)-.2 E(fer)-.25 E 2.606(,f)-.4 G .106(or use with)
--2.606 F F3 .106(bind -x)2.606 F F0(\(see)144 384 Q F2 1.016(SHELL B)
-3.516 F(UIL)-.09 E 1.016(TIN COMMANDS)-.828 F F0(belo)3.266 E 3.516
-(w\). The)-.25 F 1.017(characters between the insertion point and the)
-3.516 F(mark are often called the)144 396 Q/F4 10/Times-Italic@0 SF -.37
-(re)2.5 G(gion)-.03 E F0(.)A F1(READLINE_POINT)108 408 Q F0 .314
-(The position of the insertion point in the)144 420 R F1 -.18(re)2.813 G
+144 600 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5
+(ss)-2.5 G(ubsequently reset.)-2.5 E F1(READLINE_ARGUMENT)108 612 Q F0
+(An)144 624 Q 4.694(yn)-.15 G 2.194(umeric ar)-4.694 F 2.194(gument gi)
+-.18 F -.15(ve)-.25 G 4.694(nt).15 G 4.694(oar)-4.694 G 2.194
+(eadline command that w)-4.694 F 2.194(as de\214ned using)-.1 F/F4 10
+/Courier@0 SF 2.195(bind -x)4.695 F F0(\(see)4.695 E F2(SHELL B)144 636
+Q(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\) when it w)-.25 E
+(as in)-.1 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1(READLINE_LINE)108 648 Q
+F0 1.547(The contents of the)144 660 R F1 -.18(re)4.047 G(adline).18 E
+F0 1.547(line b)4.047 F(uf)-.2 E(fer)-.25 E 4.047(,f)-.4 G 1.547
+(or use with)-4.047 F F4 1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.546
+(SHELL B)4.047 F(UIL)-.09 E 1.546(TIN COM-)-.828 F(MANDS)144 672 Q F0
+(belo)2.25 E(w\).)-.25 E F1(READLINE_MARK)108 684 Q F0 .106
+(The position of the mark \(sa)144 696 R -.15(ve)-.2 G 2.606(di).15 G
+.106(nsertion point\) in the)-2.606 F F1 -.18(re)2.607 G(adline).18 E F0
+.107(line b)2.607 F(uf)-.2 E(fer)-.25 E 2.607(,f)-.4 G .107(or use with)
+-2.607 F F4 .107(bind -x)2.607 F F0(\(see)144 708 Q F2 1.017(SHELL B)
+3.517 F(UIL)-.09 E 1.017(TIN COMMANDS)-.828 F F0(belo)3.267 E 3.516
+(w\). The)-.25 F 1.016(characters between the insertion point and the)
+3.516 F(mark are often called the)144 720 Q F3 -.37(re)2.5 G(gion)-.03 E
+F0(.)A(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(14)185.115 E 0
+Cg EP
+%%Page: 15 15
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(READLINE_POINT)108 84 Q F0 .313
+(The position of the insertion point in the)144 96 R F1 -.18(re)2.813 G
(adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G
-.313(or use with)-2.813 F F3 .313(bind -x)2.813 F F0(\(see)2.813 E F2
-(SHELL)2.813 E -.09(BU)144 432 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
-2.25 E(w\).)-.25 E F1(REPL)108 444 Q(Y)-.92 E F0
-(Set to the line of input read by the)144 456 Q F1 -.18(re)2.5 G(ad).18
-E F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.)
--.18 E F1(SECONDS)108 468 Q F0 .795(Each time this parameter is referen\
-ced, the number of seconds since shell in)144 480 R -.2(vo)-.4 G .795
-(cation is returned.).2 F .713(If a v)144 492 R .712
-(alue is assigned to)-.25 F F2(SECONDS)3.212 E/F5 9/Times-Roman@0 SF(,)A
-F0 .712(the v)2.962 F .712
-(alue returned upon subsequent references is the number)-.25 F .627
-(of seconds since the assignment plus the v)144 504 R .627
-(alue assigned.)-.25 F .628(The number of seconds at shell in)5.627 F
--.2(vo)-.4 G(ca-).2 E .458(tion and the current time is al)144 516 R -.1
-(wa)-.1 G .458(ys determined by querying the system clock.).1 F(If)5.457
-E F2(SECONDS)2.957 E F0 .457(is un-)2.707 F
-(set, it loses its special properties, e)144 528 Q -.15(ve)-.25 G 2.5
+.313(or use with)-2.813 F/F2 10/Courier@0 SF .314(bind -x)2.814 F F0
+(\(see)2.814 E/F3 9/Times-Bold@0 SF(SHELL)2.814 E -.09(BU)144 108 S(IL)
+.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(REPL)108 120 Q
+(Y)-.92 E F0(Set to the line of input read by the)144 132 Q F1 -.18(re)
+2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command when no ar).2 E
+(guments are supplied.)-.18 E F1(SECONDS)108 144 Q F0 .178
+(Each time this parameter is referenced, it e)144 156 R .177
+(xpands to the number of seconds since shell in)-.15 F -.2(vo)-.4 G
+(cation.).2 E .712(If a v)144 168 R .712(alue is assigned to)-.25 F F3
+(SECONDS)3.212 E/F4 9/Times-Roman@0 SF(,)A F0 .712(the v)2.962 F .712
+(alue returned upon subsequent references is the number)-.25 F .628
+(of seconds since the assignment plus the v)144 180 R .627
+(alue assigned.)-.25 F .627(The number of seconds at shell in)5.627 F
+-.2(vo)-.4 G(ca-).2 E .111(tion and the current time are al)144 192 R
+-.1(wa)-.1 G .111(ys determined by querying the system clock.).1 F(If)
+5.112 E F3(SECONDS)2.612 E F0 .112(is un-)2.362 F
+(set, it loses its special properties, e)144 204 Q -.15(ve)-.25 G 2.5
(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
--2.5 E F1(SHELLOPTS)108 540 Q F0 3.262(Ac)144 552 S .763
-(olon-separated list of enabled shell options.)-3.262 F .763(Each w)
+-2.5 E F1(SHELLOPTS)108 216 Q F0 3.263(Ac)144 228 S .763
+(olon-separated list of enabled shell options.)-3.263 F .763(Each w)
5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763
-(gument for the)-.18 F 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
+(gument for the)-.18 F F1<ad6f>144 240 Q F0 1.173(option to the)3.673 F
+F1(set)3.673 E F0 -.2(bu)3.673 G 1.173(iltin command \(see).2 F F3 1.174
+(SHELL B)3.674 F(UIL)-.09 E 1.174(TIN COMMANDS)-.828 F F0(belo)3.424 E
+3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 252 R F3
+(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F/F5 10
+/Times-Italic@0 SF(on)2.749 E F0(by)2.759 E F1 .019(set \255o)2.519 F F0
+5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .019
+(ariable is in the en)-.25 F(vironment)-.4 E(when)144 264 Q F1(bash)
+3.141 E F0 .642(starts up, each shell option in the list will be enable\
+d before reading an)3.141 F 3.142(ys)-.15 G .642(tartup \214les.)-3.142
+F(This v)144 276 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 288 Q
+(VL)-.92 E F0(Incremented by one each time an instance of)144 300 Q F1
+(bash)2.5 E F0(is started.)2.5 E F1(SRANDOM)108 312 Q F0 .761(This v)144
+324 R .761(ariable e)-.25 F .761(xpands to a 32-bit pseudo-random numbe\
+r each time it is referenced. The random)-.15 F .564
+(number generator is not linear on systems that support)144 336 R F2
+(/dev/urandom)3.065 E F0(or)3.065 E F5(ar)3.065 E(c4r)-.37 E(andom)-.15
+E F0 3.065(,s)C 3.065(oe)-3.065 G(ach)-3.065 E .788
(returned number has no relationship to the numbers preceding it.)144
-672 R .788(The random number generator)5.788 F .088
-(cannot be seeded, so assignments to this v)144 684 R .087(ariable ha)
--.25 F .387 -.15(ve n)-.2 H 2.587(oe).15 G -.25(ff)-2.587 G 2.587
-(ect. If).25 F F2(SRANDOM)2.587 E F0 .087(is unset, it loses its)2.337 F
-(special properties, e)144 696 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
-G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(UID)108 708 Q
-F0(Expands to the user ID of the current user)144 708 Q 2.5(,i)-.4 G
+348 R .787(The random number generator)5.787 F .087
+(cannot be seeded, so assignments to this v)144 360 R .087(ariable ha)
+-.25 F .387 -.15(ve n)-.2 H 2.587(oe).15 G -.25(ff)-2.587 G 2.588
+(ect. If).25 F F3(SRANDOM)2.588 E F0 .088(is unset, it loses its)2.338 F
+(special properties, e)144 372 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
+G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(UID)108 384 Q
+F0(Expands to the user ID of the current user)144 384 Q 2.5(,i)-.4 G
(nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25
-E(.)-.65 E .993(The follo)108 724.8 R .993(wing v)-.25 F .994
+E(.)-.65 E .994(The follo)108 400.8 R .994(wing v)-.25 F .994
(ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1
-(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .994
-(alue to a v)-.25 F(ariable;)-.25 E(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(14)190.395 E 0 Cg EP
-%%Page: 15 15
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(these cases are noted belo)108 84 Q -.65(w.)-.25 G/F1 10/Times-Bold@0
-SF -.3(BA)108 100.8 S(SH_COMP).3 E -.95(AT)-.74 G F0 .503(The v)144
-112.8 R .502(alue is used to set the shell')-.25 F 3.002(sc)-.55 G .502
-(ompatibility le)-3.002 F -.15(ve)-.25 G 3.002(l. See).15 F/F2 9
-/Times-Bold@0 SF .502(SHELL COMP)3.002 F -.855(AT)-.666 G .502
-(IBILITY MODE).855 F F0(be-)2.752 E(lo)144 124.8 Q 2.662(wf)-.25 G .162
-(or a description of the v)-2.662 F .162(arious compatibility le)-.25 F
--.15(ve)-.25 G .162(ls and their ef).15 F 2.663(fects. The)-.25 F -.25
-(va)2.663 G .163(lue may be a dec-).25 F .33
-(imal number \(e.g., 4.2\) or an inte)144 136.8 R .33
+(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .993
+(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 412.8
+Q -.65(w.)-.25 G F1 -.3(BA)108 429.6 S(SH_COMP).3 E -.95(AT)-.74 G F0
+.502(The v)144 441.6 R .502(alue is used to set the shell')-.25 F 3.002
+(sc)-.55 G .502(ompatibility le)-3.002 F -.15(ve)-.25 G 3.002(l. See).15
+F F3 .503(SHELL COMP)3.002 F -.855(AT)-.666 G .503(IBILITY MODE).855 F
+F0(be-)2.753 E(lo)144 453.6 Q 2.663(wf)-.25 G .163
+(or a description of the v)-2.663 F .162(arious compatibility le)-.25 F
+-.15(ve)-.25 G .162(ls and their ef).15 F 2.662(fects. The)-.25 F -.25
+(va)2.662 G .162(lue may be a dec-).25 F .33
+(imal number \(e.g., 4.2\) or an inte)144 465.6 R .33
(ger \(e.g., 42\) corresponding to the desired compatibility le)-.15 F
--.15(ve)-.25 G 2.83(l. If).15 F F1 -.3(BA)144 148.8 S(SH_COMP).3 E -.95
-(AT)-.74 G F0 .86
-(is unset or set to the empty string, the compatibility le)4.31 F -.15
-(ve)-.25 G 3.361(li).15 G 3.361(ss)-3.361 G .861(et to the def)-3.361 F
-(ault)-.1 E .39(for the current v)144 160.8 R 2.89(ersion. If)-.15 F F1
--.3(BA)2.89 G(SH_COMP).3 E -.95(AT)-.74 G F0 .39(is set to a v)3.84 F
-.39(alue that is not one of the v)-.25 F .39(alid compati-)-.25 F .277
-(bility le)144 172.8 R -.15(ve)-.25 G .278
+-.15(ve)-.25 G 2.83(l. If).15 F F1 -.3(BA)144 477.6 S(SH_COMP).3 E -.95
+(AT)-.74 G F0 .861
+(is unset or set to the empty string, the compatibility le)4.311 F -.15
+(ve)-.25 G 3.36(li).15 G 3.36(ss)-3.36 G .86(et to the def)-3.36 F(ault)
+-.1 E .39(for the current v)144 489.6 R 2.89(ersion. If)-.15 F F1 -.3
+(BA)2.89 G(SH_COMP).3 E -.95(AT)-.74 G F0 .39(is set to a v)3.84 F .39
+(alue that is not one of the v)-.25 F .39(alid compati-)-.25 F .278
+(bility le)144 501.6 R -.15(ve)-.25 G .278
(ls, the shell prints an error message and sets the compatibility le).15
-F -.15(ve)-.25 G 2.778(lt).15 G 2.778(ot)-2.778 G .278(he def)-2.778 F
-.278(ault for the)-.1 F 1.401(current v)144 184.8 R 3.901(ersion. The)
--.15 F -.25(va)3.901 G 1.401(lid v).25 F 1.401
+F -.15(ve)-.25 G 2.777(lt).15 G 2.777(ot)-2.777 G .277(he def)-2.777 F
+.277(ault for the)-.1 F 1.4(current v)144 513.6 R 3.9(ersion. The)-.15 F
+-.25(va)3.901 G 1.401(lid v).25 F 1.401
(alues correspond to the compatibility le)-.25 F -.15(ve)-.25 G 1.401
-(ls described belo).15 F 3.9(wu)-.25 G(nder)-3.9 E F2(BSHELL)144 196.8 Q
-/F3 9/Times-Roman@0 SF(COMP)A -.999(AT)-.828 G(IBILITY).999 E F2(MODE)A
-F3(.)A F0 -.15(Fo)4.997 G 2.997(re).15 G .497(xample, 4.2 and 42 are v)
--3.147 F .497(alid v)-.25 F .498(alues that correspond to the)-.25 F F1
-.774(compat42 shopt)144 208.8 R F0 .774
-(option and set the compatibility le)3.274 F -.15(ve)-.25 G 3.274(lt).15
-G 3.274(o4)-3.274 G 3.274(2. The)-3.274 F .774(current v)3.274 F .773
-(ersion is also a v)-.15 F(alid)-.25 E -.25(va)144 220.8 S(lue.).25 E F1
--.3(BA)108 232.8 S(SH_ENV).3 E F0 .505(If this parameter is set when)144
-244.8 R F1(bash)3.005 E F0 .505(is e)3.005 F -.15(xe)-.15 G .506
-(cuting a shell script, its v).15 F .506
-(alue is interpreted as a \214lename)-.25 F .391
-(containing commands to initialize the shell, as in)144 256.8 R/F4 10
-/Times-Italic@0 SF(~/.bashr)2.39 E(c)-.37 E F0 5.39(.T).31 G .39(he v)
--5.39 F .39(alue of)-.25 F F2 -.27(BA)2.89 G(SH_ENV).27 E F0 .39
-(is subjected)2.64 F .525(to parameter e)144 268.8 R .525
+(ls described belo).15 F 3.901(wu)-.25 G(nder)-3.901 E F3 .154
+(SHELL COMP)144 525.6 R -.855(AT)-.666 G .154(IBILITY MODE).855 F F4(.)A
+F0 -.15(Fo)4.654 G 2.654(re).15 G .154(xample, 4.2 and 42 are v)-2.804 F
+.153(alid v)-.25 F .153(alues that correspond to the)-.25 F F1 .773
+(compat42 shopt)144 537.6 R F0 .774(option and set the compatibility le)
+3.273 F -.15(ve)-.25 G 3.274(lt).15 G 3.274(o4)-3.274 G 3.274(2. The)
+-3.274 F .774(current v)3.274 F .774(ersion is also a v)-.15 F(alid)-.25
+E -.25(va)144 549.6 S(lue.).25 E F1 -.3(BA)108 561.6 S(SH_ENV).3 E F0
+.506(If this parameter is set when)144 573.6 R F1(bash)3.006 E F0 .506
+(is e)3.006 F -.15(xe)-.15 G .505(cuting a shell script, its v).15 F
+.505(alue is interpreted as a \214lename)-.25 F .39
+(containing commands to initialize the shell, as in)144 585.6 R F5
+(~/.bashr)2.39 E(c)-.37 E F0 5.39(.T).31 G .39(he v)-5.39 F .391
+(alue of)-.25 F F3 -.27(BA)2.891 G(SH_ENV).27 E F0 .391(is subjected)
+2.641 F .525(to parameter e)144 597.6 R .525
(xpansion, command substitution, and arithmetic e)-.15 F .525
-(xpansion before being interpreted)-.15 F(as a \214lename.)144 280.8 Q
-F2 -.666(PA)5 G(TH)-.189 E F0
+(xpansion before being interpreted)-.15 F(as a \214lename.)144 609.6 Q
+F3 -.666(PA)5 G(TH)-.189 E F0
(is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA)
-108 292.8 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 304.8
-R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25
-F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F
-(-)-.2 E 3.114(ated when)144 316.8 R/F5 10/Courier@0 SF 3.114(set -x)
-5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T)
--.55 G 3.114(he \214le descriptor is closed when)-8.114 F F2 -.27(BA)144
-328.8 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne)
-2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F2 -.27(BA)2.638
-G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \
-empty string causes the trace output to be sent to the standard error)
-144 340.8 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F2 -.27(BA)
-144 352.8 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\
- \214le descriptor\) and then unsetting it will result in the)2.991 F
-(standard error being closed.)144 364.8 Q F1(CDP)108 376.8 Q -.95(AT)
--.74 G(H).95 E F0 1.247(The search path for the)144 388.8 R F1(cd)3.747
-E F0 3.747(command. This)3.747 F 1.248
-(is a colon-separated list of directories in which the)3.747 F 3.796
-(shell looks for destination directories speci\214ed by the)144 400.8 R
-F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795
-(alue is)-.25 F F5(".:~:/usr")144 412.8 Q F0(.)A F1(CHILD_MAX)108 424.8
-Q F0 .997(Set the number of e)144 436.8 R .997(xited child status v)-.15
-F .997(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997
-(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)-3.498 E -.25(va)144
-448.8 S 1.078(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077
-(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.077
-(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 460.8 Q
+108 621.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .48(If set to an inte)144 633.6
+R .48(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 F
+(,)-.4 E F1(bash)2.981 E F0 .481(will write the trace output gener)2.981
+F(-)-.2 E 3.114(ated when)144 645.6 R F2 3.114(set -x)5.614 F F0 3.114
+(is enabled to that \214le descriptor)5.614 F 8.114(.T)-.55 G 3.114
+(he \214le descriptor is closed when)-8.114 F F3 -.27(BA)144 657.6 S
+(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne)2.388 F
+2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F3 -.27(BA)2.638 G
+(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the e\
+mpty string causes the trace output to be sent to the standard error)144
+669.6 R 7.53(.N)-.55 G 2.53(ote that setting)-7.53 F F3 -.27(BA)144
+681.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error \
+\214le descriptor\) and then unsetting it will result in the)2.99 F
+(standard error being closed.)144 693.6 Q F1(CDP)108 705.6 Q -.95(AT)
+-.74 G(H).95 E F0 1.248(The search path for the)144 717.6 R F1(cd)3.748
+E F0 3.748(command. This)3.748 F 1.247
+(is a colon-separated list of directories in which the)3.748 F 3.795
+(shell looks for destination directories speci\214ed by the)144 729.6 R
+F1(cd)6.295 E F0 6.296(command. A)6.296 F 3.796(sample v)6.296 F 3.796
+(alue is)-.25 F(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(15)
+185.115 E 0 Cg EP
+%%Page: 16 16
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Courier@0 SF
+(".:~:/usr")144 84 Q F0(.)A/F2 10/Times-Bold@0 SF(CHILD_MAX)108 96 Q F0
+.997(Set the number of e)144 108 R .997(xited child status v)-.15 F .997
+(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997
+(ash will not allo)-5.997 F 3.497(wt)-.25 G(his)-3.497 E -.25(va)144 120
+S 1.077(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077
+(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.078
+(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 132 Q
2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E
-F1(COLUMNS)108 472.8 Q F0 .828(Used by the)144 484.8 R F1(select)3.328 E
-F0 .829(compound command to determine the terminal width when printing \
-selection)3.328 F 3.466(lists. Automatically)144 496.8 R .966
-(set if the)3.466 F F1(checkwinsize)3.466 E F0 .966
+F2(COLUMNS)108 144 Q F0 .829(Used by the)144 156 R F2(select)3.329 E F0
+.828(compound command to determine the terminal width when printing sel\
+ection)3.329 F 3.466(lists. Automatically)144 168 R .966(set if the)
+3.466 F F2(checkwinsize)3.466 E F0 .966
(option is enabled or in an interacti)3.466 F 1.266 -.15(ve s)-.25 H
-.966(hell upon re-).15 F(ceipt of a)144 508.8 Q F2(SIGWINCH)2.5 E F3(.)A
-F1(COMPREPL)108 520.8 Q(Y)-.92 E F0 .847(An array v)144 532.8 R .848
-(ariable from which)-.25 F F1(bash)3.348 E F0 .848
+.966(hell upon re-).15 F(ceipt of a)144 180 Q/F3 9/Times-Bold@0 SF
+(SIGWINCH)2.5 E/F4 9/Times-Roman@0 SF(.)A F2(COMPREPL)108 192 Q(Y)-.92 E
+F0 .848(An array v)144 204 R .848(ariable from which)-.25 F F2(bash)
+3.348 E F0 .848
(reads the possible completions generated by a shell function)3.348 F
-(in)144 544.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G
-.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F1
+(in)144 216 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G
+.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F2
(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E 2.785
(w\). Each)-.25 F(array element contains one possible completion.)144
-556.8 Q F1(EMA)108 568.8 Q(CS)-.55 E F0(If)144 580.8 Q F1(bash)2.535 E
-F0 .035(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036
-(vironment when the shell starts with v)-.4 F(alue)-.25 E F5(t)2.536 E
-F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F
-(shell is running in an Emacs shell b)144 592.8 Q(uf)-.2 E
-(fer and disables line editing.)-.25 E F1(ENV)108 604.8 Q F0 .671
-(Expanded and e)144 604.8 R -.15(xe)-.15 G .671(cuted similarly to).15 F
-F2 -.27(BA)3.17 G(SH_ENV).27 E F0(\(see)2.92 E F1(INV)3.17 E(OCA)-.45 E
-(TION)-.95 E F0(abo)3.17 E -.15(ve)-.15 G 3.17(\)w).15 G .67
-(hen an interacti)-3.17 F -.15(ve)-.25 G(shell is in)144 616.8 Q -.2(vo)
--.4 G -.1(ke).2 G 2.5(di).1 G(n)-2.5 E F4(posix mode)2.5 E F0(.)A F1
-(EXECIGNORE)108 628.8 Q F0 2.716(Ac)144 640.8 S .216
-(olon-separated list of shell patterns \(see)-2.716 F F1 -.1(Pa)2.717 G
-(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .217
-(e\214ning the list of \214lenames to be)-2.717 F .117
-(ignored by command search using)144 652.8 R F1 -.74(PA)2.617 G(TH)-.21
-E F0 5.117(.F)C .116
-(iles whose full pathnames match one of these patterns)-5.117 F 1.432
-(are not considered e)144 664.8 R -.15(xe)-.15 G 1.432
+228 Q F2(EMA)108 240 Q(CS)-.55 E F0(If)144 252 Q F2(bash)2.536 E F0 .036
+(\214nds this v)2.536 F .036(ariable in the en)-.25 F .036
+(vironment when the shell starts with v)-.4 F(alue)-.25 E F1(t)2.535 E
+F0 2.535(,i)C 2.535(ta)-2.535 G .035(ssumes that the)-2.535 F
+(shell is running in an Emacs shell b)144 264 Q(uf)-.2 E
+(fer and disables line editing.)-.25 E F2(ENV)108 276 Q F0 .67
+(Expanded and e)144 276 R -.15(xe)-.15 G .67(cuted similarly to).15 F F3
+-.27(BA)3.17 G(SH_ENV).27 E F0(\(see)2.92 E F2(INV)3.17 E(OCA)-.45 E
+(TION)-.95 E F0(abo)3.171 E -.15(ve)-.15 G 3.171(\)w).15 G .671
+(hen an interacti)-3.171 F -.15(ve)-.25 G(shell is in)144 288 Q -.2(vo)
+-.4 G -.1(ke).2 G 2.5(di).1 G(n)-2.5 E/F5 10/Times-Italic@0 SF
+(posix mode)2.5 E F0(.)A F2(EXECIGNORE)108 300 Q F0 2.717(Ac)144 312 S
+.217(olon-separated list of shell patterns \(see)-2.717 F F2 -.1(Pa)
+2.717 G(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .216
+(e\214ning the list of \214lenames to be)-2.717 F .116
+(ignored by command search using)144 324 R F2 -.74(PA)2.616 G(TH)-.21 E
+F0 5.116(.F)C .117
+(iles whose full pathnames match one of these patterns)-5.116 F 1.433
+(are not considered e)144 336 R -.15(xe)-.15 G 1.432
(cutable \214les for the purposes of completion and command e).15 F -.15
-(xe)-.15 G 1.433(cution via).15 F F1 -.74(PA)144 676.8 S(TH)-.21 E F0
-2.909(lookup. This)2.909 F .408(does not af)2.908 F .408(fect the beha)
--.25 F .408(vior of the)-.2 F F1([)2.908 E F0(,)A F1(test)2.908 E F0
-2.908(,a)C(nd)-2.908 E F1([[)2.908 E F0 2.908(commands. Full)2.908 F
-(pathnames)2.908 E .364(in the command hash table are not subject to)144
-688.8 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364
-(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 700.8
-R 1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37
+(xe)-.15 G 1.432(cution via).15 F F2 -.74(PA)144 348 S(TH)-.21 E F0
+2.908(lookup. This)2.908 F .408(does not af)2.908 F .408(fect the beha)
+-.25 F .408(vior of the)-.2 F F2([)2.908 E F0(,)A F2(test)2.908 E F0
+2.908(,a)C(nd)-2.908 E F2([[)2.908 E F0 2.909(commands. Full)2.908 F
+(pathnames)2.909 E .364(in the command hash table are not subject to)144
+360 R F2(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364
+(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 372 R
+1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37
(cutable bit set, b).15 F 1.37(ut are not e)-.2 F -.15(xe)-.15 G 1.37
(cutable \214les.).15 F 1.37(The pattern matching)6.37 F
-(honors the setting of the)144 712.8 Q F1(extglob)2.5 E F0
-(shell option.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(15)
-190.395 E 0 Cg EP
-%%Page: 16 16
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(FCEDIT)108 84 Q F0(The def)144 96 Q(ault editor for the)-.1 E F1(fc)
-2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F1(FIGNORE)108 108 Q F0 2.598
-(Ac)144 120 S .098(olon-separated list of suf)-2.598 F<8c78>-.25 E .098
-(es to ignore when performing \214lename completion \(see)-.15 F/F2 9
-/Times-Bold@0 SF(READLINE)2.599 E F0(belo)144 132 Q 2.705(w\). A)-.25 F
-.205(\214lename whose suf)2.705 F .205
-(\214x matches one of the entries in)-.25 F F2(FIGNORE)2.705 E F0 .205
-(is e)2.455 F .204(xcluded from the list)-.15 F(of matched \214lenames.)
-144 144 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF
-(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 156 Q F0 .23(If set to a numeric v)
-144 168 R .231
+(honors the setting of the)144 384 Q F2(extglob)2.5 E F0(shell option.)
+2.5 E F2(FCEDIT)108 396 Q F0(The def)144 408 Q(ault editor for the)-.1 E
+F2(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F2(FIGNORE)108 420 Q F0
+2.599(Ac)144 432 S .098(olon-separated list of suf)-2.599 F<8c78>-.25 E
+.098(es to ignore when performing \214lename completion \(see)-.15 F F3
+(READLINE)2.598 E F0(belo)144 444 Q 2.704(w\). A)-.25 F .204
+(\214lename whose suf)2.704 F .205(\214x matches one of the entries in)
+-.25 F F3(FIGNORE)2.705 E F0 .205(is e)2.455 F .205
+(xcluded from the list)-.15 F(of matched \214lenames.)144 456 Q 2.5(As)5
+G(ample v)-2.5 E(alue is)-.25 E F1(".o:~")2.5 E F0(.)A F2(FUNCNEST)108
+468 Q F0 .231(If set to a numeric v)144 480 R .231
(alue greater than 0, de\214nes a maximum function nesting le)-.25 F
--.15(ve)-.25 G 2.731(l. Function).15 F(in)2.731 E -.2(vo)-.4 G(-).2 E
-(cations that e)144 180 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G
-2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F1
-(GLOBIGNORE)108 192 Q F0 2.924(Ac)144 204 S .423(olon-separated list of\
+-.15(ve)-.25 G 2.73(l. Function).15 F(in)2.73 E -.2(vo)-.4 G(-).2 E
+(cations that e)144 492 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G
+2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F2
+(GLOBIGNORE)108 504 Q F0 2.923(Ac)144 516 S .423(olon-separated list of\
patterns de\214ning the set of \214le names to be ignored by pathname \
-e)-2.924 F(xpan-)-.15 E 2.947(sion. If)144 216 R 2.947<618c>2.947 G .447
-(le name matched by a pathname e)-2.947 F .448
-(xpansion pattern also matches one of the patterns in)-.15 F F2
-(GLOBIGNORE)144 228 Q/F4 9/Times-Roman@0 SF(,)A F0(it is remo)2.25 E
--.15(ve)-.15 G 2.5(df).15 G(rom the list of matches.)-2.5 E F1
-(HISTCONTR)108 240 Q(OL)-.3 E F0 2.654(Ac)144 252 S .153
-(olon-separated list of v)-2.654 F .153(alues controlling ho)-.25 F
-2.653(wc)-.25 G .153(ommands are sa)-2.653 F -.15(ve)-.2 G 2.653(do).15
-G 2.653(nt)-2.653 G .153(he history list.)-2.653 F .153(If the list)
-5.153 F .49(of v)144 264 R .49(alues includes)-.25 F/F5 10
-/Times-Italic@0 SF(ignor)3 E(espace)-.37 E F0 2.99(,l).18 G .49
-(ines which be)-2.99 F .49(gin with a)-.15 F F1(space)2.99 E F0 .49
+e)-2.923 F(xpan-)-.15 E 2.948(sion. If)144 528 R 2.948<618c>2.948 G .448
+(le name matched by a pathname e)-2.948 F .447
+(xpansion pattern also matches one of the patterns in)-.15 F F3
+(GLOBIGNORE)144 540 Q F4(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5(df)
+.15 G(rom the list of matches.)-2.5 E F2(HISTCONTR)108 552 Q(OL)-.3 E F0
+2.653(Ac)144 564 S .153(olon-separated list of v)-2.653 F .153
+(alues controlling ho)-.25 F 2.653(wc)-.25 G .153(ommands are sa)-2.653
+F -.15(ve)-.2 G 2.653(do).15 G 2.653(nt)-2.653 G .153(he history list.)
+-2.653 F .154(If the list)5.153 F .49(of v)144 576 R .49(alues includes)
+-.25 F F5(ignor)3 E(espace)-.37 E F0 2.99(,l).18 G .49(ines which be)
+-2.99 F .49(gin with a)-.15 F F2(space)2.99 E F0 .49
(character are not sa)2.99 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)-2.99 G
-.49(he his-)-2.99 F .558(tory list.)144 276 R 3.058(Av)5.558 G .558
-(alue of)-3.308 F F5(ignor)3.068 E(edups)-.37 E F0 .558
-(causes lines matching the pre)3.328 F .557
-(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.925
-(Av)144 288 S .425(alue of)-3.175 F F5(ignor)2.935 E(eboth)-.37 E F0
-.426(is shorthand for)3.205 F F5(ignor)2.926 E(espace)-.37 E F0(and)
-2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.5 G .426
-(lue of).25 F F5(er)3.116 E(asedups)-.15 E F0(causes)3.196 E .699
-(all pre)144 300 R .698
+.49(he his-)-2.99 F .557(tory list.)144 588 R 3.057(Av)5.557 G .557
+(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 .557
+(causes lines matching the pre)3.327 F .558
+(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.926
+(Av)144 600 S .426(alue of)-3.176 F F5(ignor)2.936 E(eboth)-.37 E F0
+.426(is shorthand for)3.206 F F5(ignor)2.926 E(espace)-.37 E F0(and)
+2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.501 G
+.425(lue of).25 F F5(er)3.115 E(asedups)-.15 E F0(causes)3.195 E .698
+(all pre)144 612 R .698
(vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G
-3.198(df).15 G .698(rom the history list before that line is)-3.198 F
-(sa)144 312 Q -.15(ve)-.2 G 2.763(d. An).15 F 2.763(yv)-.15 G .263
-(alue not in the abo)-3.013 F .563 -.15(ve l)-.15 H .263
-(ist is ignored.).15 F(If)5.263 E F2(HISTCONTR)2.763 E(OL)-.27 E F0 .264
-(is unset, or does not include)2.513 F 2.942(av)144 324 S .442(alid v)
--3.192 F .442(alue, all lines read by the shell parser are sa)-.25 F
--.15(ve)-.2 G 2.941(do).15 G 2.941(nt)-2.941 G .441
-(he history list, subject to the v)-2.941 F .441(alue of)-.25 F F2
-(HISTIGNORE)144 336 Q F4(.)A F0 1.981(The second and subsequent lines o\
-f a multi-line compound command are not)6.481 F
-(tested, and are added to the history re)144 348 Q -.05(ga)-.15 G
-(rdless of the v).05 E(alue of)-.25 E F2(HISTCONTR)2.5 E(OL)-.27 E F4(.)
-A F1(HISTFILE)108 360 Q F0 .181
-(The name of the \214le in which command history is sa)144 372 R -.15
-(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F2(HIST)2.681 E(OR)-.162 E(Y)
--.315 E F0(belo)2.431 E 2.681(w\). The)-.25 F(def)2.681 E .181(ault v)
--.1 F(alue)-.25 E(is)144 384 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5
+3.198(df).15 G .699(rom the history list before that line is)-3.198 F
+(sa)144 624 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264
+(alue not in the abo)-3.014 F .563 -.15(ve l)-.15 H .263
+(ist is ignored.).15 F(If)5.263 E F3(HISTCONTR)2.763 E(OL)-.27 E F0 .263
+(is unset, or does not include)2.513 F 2.941(av)144 636 S .441(alid v)
+-3.191 F .441(alue, all lines read by the shell parser are sa)-.25 F
+-.15(ve)-.2 G 2.942(do).15 G 2.942(nt)-2.942 G .442
+(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F3
+(HISTIGNORE)144 648 Q F4(.)A F0 1.981(The second and subsequent lines o\
+f a multi-line compound command are not)6.482 F
+(tested, and are added to the history re)144 660 Q -.05(ga)-.15 G
+(rdless of the v).05 E(alue of)-.25 E F3(HISTCONTR)2.5 E(OL)-.27 E F4(.)
+A F2(HISTFILE)108 672 Q F0 .181
+(The name of the \214le in which command history is sa)144 684 R -.15
+(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F3(HIST)2.681 E(OR)-.162 E(Y)
+-.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182(ault v)
+-.1 F(alue)-.25 E(is)144 696 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5
(fu)-5 G(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5
-(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E F1(HISTFILESIZE)108 396 Q F0
-1.622(The maximum number of lines contained in the history \214le.)144
-408 R 1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25
-(va)144 420 S .125(lue, the history \214le is truncated, if necessary)
-.25 F 2.625(,t)-.65 G 2.624(oc)-2.625 G .124
-(ontain no more than that number of lines by re-)-2.624 F(mo)144 432 Q
-.065(ving the oldest entries.)-.15 F .066(The history \214le is also tr\
-uncated to this size after writing it when a shell)5.065 F -.15(ex)144
-444 S 2.928(its. If).15 F .428(the v)2.928 F .428
-(alue is 0, the history \214le is truncated to zero size.)-.25 F .427
-(Non-numeric v)5.427 F .427(alues and numeric)-.25 F -.25(va)144 456 S
+(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(16)185.115 E 0 Cg EP
+%%Page: 17 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(HISTFILESIZE)108 84 Q F0 1.623
+(The maximum number of lines contained in the history \214le.)144 96 R
+1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144
+108 S .124(lue, the history \214le is truncated, if necessary).25 F
+2.624(,t)-.65 G 2.624(oc)-2.624 G .125
+(ontain no more than that number of lines by re-)-2.624 F(mo)144 120 Q
+.066(ving the oldest entries.)-.15 F .065(The history \214le is also tr\
+uncated to this size after writing it when a shell)5.066 F -.15(ex)144
+132 S 2.927(its. If).15 F .427(the v)2.927 F .428
+(alue is 0, the history \214le is truncated to zero size.)-.25 F .428
+(Non-numeric v)5.428 F .428(alues and numeric)-.25 F -.25(va)144 144 S
.152(lues less than zero inhibit truncation.).25 F .152
(The shell sets the def)5.152 F .152(ault v)-.1 F .152(alue to the v)
--.25 F .152(alue of)-.25 F F1(HISTSIZE)2.652 E F0(after reading an)144
-468 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 480 Q F0
-2.658(Ac)144 492 S .158(olon-separated list of patterns used to decide \
-which command lines should be sa)-2.658 F -.15(ve)-.2 G 2.657(do).15 G
-2.657(nt)-2.657 G .157(he his-)-2.657 F .707(tory list.)144 504 R .707
-(Each pattern is anchored at the be)5.707 F .708
-(ginning of the line and must match the complete line)-.15 F .626
-(\(no implicit `)144 516 R F1(*)A F0 3.126('i)C 3.126(sa)-3.126 G 3.126
-(ppended\). Each)-3.126 F .626(pattern is tested ag)3.126 F .625
-(ainst the line after the checks speci\214ed by)-.05 F F2(HISTCONTR)144
-528 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793
+-.25 F .151(alue of)-.25 F F1(HISTSIZE)2.651 E F0(after reading an)144
+156 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 168 Q F0
+2.657(Ac)144 180 S .157(olon-separated list of patterns used to decide \
+which command lines should be sa)-2.657 F -.15(ve)-.2 G 2.658(do).15 G
+2.658(nt)-2.658 G .158(he his-)-2.658 F .708(tory list.)144 192 R .708
+(Each pattern is anchored at the be)5.708 F .707
+(ginning of the line and must match the complete line)-.15 F .625
+(\(no implicit `)144 204 R F1(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125
+(ppended\). Each)-3.125 F .626(pattern is tested ag)3.125 F .626
+(ainst the line after the checks speci\214ed by)-.05 F/F2 9/Times-Bold@0
+SF(HISTCONTR)144 216 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793
(In addition to the normal shell pattern matching characters, `)6.793 F
-F1(&)A F0(')A 1.44(matches the pre)144 540 R 1.44(vious history line.)
+F1(&)A F0(')A 1.44(matches the pre)144 228 R 1.44(vious history line.)
-.25 F(`)6.44 E F1(&)A F0 3.94('m)C 1.44
(ay be escaped using a backslash; the backslash is re-)-3.94 F(mo)144
-552 Q -.15(ve)-.15 G 3.95(db).15 G 1.45(efore attempting a match.)-3.95
+240 Q -.15(ve)-.15 G 3.95(db).15 G 1.45(efore attempting a match.)-3.95
F 1.45(The second and subsequent lines of a multi-line compound)6.45 F
-1.269(command are not tested, and are added to the history re)144 564 R
+1.269(command are not tested, and are added to the history re)144 252 R
-.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2
-(HISTIGNORE)3.769 E F4(.)A F0
-(The pattern matching honors the setting of the)144 576 Q F1(extglob)2.5
-E F0(shell option.)2.5 E F1(HISTSIZE)108 588 Q F0 1.387
-(The number of commands to remember in the command history \(see)144 600
+(HISTIGNORE)3.77 E/F3 9/Times-Roman@0 SF(.)A F0
+(The pattern matching honors the setting of the)144 264 Q F1(extglob)2.5
+E F0(shell option.)2.5 E F1(HISTSIZE)108 276 Q F0 1.387
+(The number of commands to remember in the command history \(see)144 288
R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If)
--.25 F(the)3.888 E -.25(va)144 612 S .413(lue is 0, commands are not sa)
+-.25 F(the)3.887 E -.25(va)144 300 S .412(lue is 0, commands are not sa)
.25 F -.15(ve)-.2 G 2.913(di).15 G 2.913(nt)-2.913 G .413
-(he history list.)-2.913 F .413(Numeric v)5.413 F .412
-(alues less than zero result in e)-.25 F(v-)-.25 E .343
-(ery command being sa)144 624 R -.15(ve)-.2 G 2.843(do).15 G 2.843(nt)
--2.843 G .343(he history list \(there is no limit\).)-2.843 F .344
-(The shell sets the def)5.343 F .344(ault v)-.1 F .344(alue to)-.25 F
-(500 after reading an)144 636 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1
-(HISTTIMEFORMA)108 648 Q(T)-.95 E F0 .952(If this v)144 660 R .952
-(ariable is set and not null, its v)-.25 F .951
-(alue is used as a format string for)-.25 F F5(strftime)3.451 E F0 .951
-(\(3\) to print the)B .672
-(time stamp associated with each history entry displayed by the)144 672
-R F1(history)3.173 E F0 -.2(bu)3.173 G 3.173(iltin. If).2 F .673(this v)
-3.173 F .673(ariable is)-.25 F .144
-(set, time stamps are written to the history \214le so the)144 684 R
+(he history list.)-2.913 F .413(Numeric v)5.413 F .413
+(alues less than zero result in e)-.25 F(v-)-.25 E .344
+(ery command being sa)144 312 R -.15(ve)-.2 G 2.844(do).15 G 2.844(nt)
+-2.844 G .343(he history list \(there is no limit\).)-2.844 F .343
+(The shell sets the def)5.343 F .343(ault v)-.1 F .343(alue to)-.25 F
+(500 after reading an)144 324 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1
+(HISTTIMEFORMA)108 336 Q(T)-.95 E F0 .951(If this v)144 348 R .951
+(ariable is set and not null, its v)-.25 F .952
+(alue is used as a format string for)-.25 F/F4 10/Times-Italic@0 SF
+(strftime)3.452 E F0 .952(\(3\) to print the)B .673
+(time stamp associated with each history entry displayed by the)144 360
+R F1(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v)
+3.172 F .672(ariable is)-.25 F .144
+(set, time stamps are written to the history \214le so the)144 372 R
2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144
-(ed across shell sessions.)-.15 F(This)5.144 E(uses the history comment\
- character to distinguish timestamps from other history lines.)144 696 Q
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(16)190.395 E 0 Cg EP
-%%Page: 17 17
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(HOME)108 84 Q F0 1.27
-(The home directory of the current user; the def)144 96 R 1.27(ault ar)
+(ed across shell sessions.)-.15 F(This)5.145 E(uses the history comment\
+ character to distinguish timestamps from other history lines.)144 384 Q
+F1(HOME)108 396 Q F0 1.27
+(The home directory of the current user; the def)144 408 R 1.27(ault ar)
-.1 F 1.27(gument for the)-.18 F F1(cd)3.77 E F0 -.2(bu)3.77 G 1.27
-(iltin command.).2 F(The)6.27 E -.25(va)144 108 S(lue of this v).25 E
+(iltin command.).2 F(The)6.27 E -.25(va)144 420 S(lue of this v).25 E
(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1
-(HOSTFILE)108 120 Q F0 1.015
-(Contains the name of a \214le in the same format as)144 132 R/F2 10
-/Times-Italic@0 SF(/etc/hosts)5.181 E F0 1.015
-(that should be read when the shell)5.181 F .55
-(needs to complete a hostname.)144 144 R .551
+(HOSTFILE)108 432 Q F0 1.015
+(Contains the name of a \214le in the same format as)144 444 R F4
+(/etc/hosts)5.181 E F0 1.015(that should be read when the shell)5.181 F
+.551(needs to complete a hostname.)144 456 R .551
(The list of possible hostname completions may be changed while)5.551 F
-1.059(the shell is running; the ne)144 156 R 1.059
-(xt time hostname completion is attempted after the v)-.15 F 1.058
-(alue is changed,)-.25 F F1(bash)144 168 Q F0 .138
-(adds the contents of the ne)2.638 F 2.638<778c>-.25 G .138(le to the e)
--2.638 F .138(xisting list.)-.15 F(If)5.138 E/F3 9/Times-Bold@0 SF
-(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .139(ut has no v)-.2 F .139
-(alue, or)-.25 F .518(does not name a readable \214le,)144 180 R F1
-(bash)3.018 E F0 .518(attempts to read)3.018 F F2(/etc/hosts)4.683 E F0
-.517(to obtain the list of possible host-)4.683 F(name completions.)144
-192 Q(When)5 E F3(HOSTFILE)2.5 E F0
-(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 204 Q F0(The)
-144 204 Q F2 .555(Internal F)3.635 F .555(ield Separ)-.45 F(ator)-.15 E
-F0 .555(that is used for w)3.785 F .556(ord splitting after e)-.1 F .556
-(xpansion and to split lines into)-.15 F -.1(wo)144 216 S(rds with the)
-.1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command.).2 E
-(The def)5 E(ault v)-.1 E(alue is `)-.25 E(`<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
+1.058(the shell is running; the ne)144 468 R 1.059
+(xt time hostname completion is attempted after the v)-.15 F 1.059
+(alue is changed,)-.25 F F1(bash)144 480 Q F0 .138
+(adds the contents of the ne)2.639 F 2.638<778c>-.25 G .138(le to the e)
+-2.638 F .138(xisting list.)-.15 F(If)5.138 E F2(HOSTFILE)2.638 E F0
+.138(is set, b)2.388 F .138(ut has no v)-.2 F .138(alue, or)-.25 F .517
+(does not name a readable \214le,)144 492 R F1(bash)3.017 E F0 .517
+(attempts to read)3.017 F F4(/etc/hosts)4.684 E F0 .518
+(to obtain the list of possible host-)4.684 F(name completions.)144 504
+Q(When)5 E F2(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.)
+2.25 E F1(IFS)108 516 Q F0(The)144 516 Q F4 .556(Internal F)3.636 F .556
+(ield Separ)-.45 F(ator)-.15 E F0 .556(that is used for w)3.786 F .556
+(ord splitting after e)-.1 F .555(xpansion and to split lines into)-.15
+F -.1(wo)144 528 S(rds with the).1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2
+(bu)2.5 G(iltin command.).2 E(The def)5 E(ault v)-.1 E(alue is `)-.25 E
+(`<space><tab><ne)-.74 E(wline>')-.25 E('.)-.74 E F1(IGNOREEOF)108 540 Q
+F0 .503(Controls the action of an interacti)144 552 R .803 -.15(ve s)
+-.25 H .503(hell on receipt of an).15 F F2(EOF)3.003 E F0 .503
+(character as the sole input.)2.753 F .504(If set,)5.504 F .426(the v)
+144 564 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F2
(EOF)3.076 E F0 .426
-(characters which must be typed as the \214rst characters)2.676 F .303
-(on an input line before)144 264 R F1(bash)2.802 E F0 -.15(ex)2.802 G
+(characters which must be typed as the \214rst characters)2.676 F .302
+(on an input line before)144 576 R F1(bash)2.802 E F0 -.15(ex)2.802 G
2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302
(xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302
-(umeric v).15 F .302(alue, or has)-.25 F(no v)144 276 Q(alue, the def)
+(umeric v).15 F .303(alue, or has)-.25 F(no v)144 588 Q(alue, the def)
-.25 E(ault v)-.1 E(alue is 10.)-.25 E(If it does not e)5 E(xist,)-.15 E
-F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1
-(INPUTRC)108 288 Q F0 .26(The \214lename for the)144 300 R F1 -.18(re)
-2.76 G(adline).18 E F0 .26(startup \214le, o)2.76 F -.15(ve)-.15 G .26
-(rriding the def).15 F .261(ault of)-.1 F F2(~/.inputr)4.427 E(c)-.37 E
-F0(\(see)4.427 E F3(READLINE)2.761 E F0(be-)2.511 E(lo)144 312 Q(w\).)
--.25 E F1(INSIDE_EMA)108 324 Q(CS)-.55 E F0 .034(If this v)144 336 R
-.034(ariable appears in the en)-.25 F .034
-(vironment when the shell starts,)-.4 F F1(bash)2.533 E F0 .033
-(assumes that it is running in-)2.533 F(side an Emacs shell b)144 348 Q
+F2(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1
+(INPUTRC)108 600 Q F0 .261(The \214lename for the)144 612 R F1 -.18(re)
+2.761 G(adline).18 E F0 .261(startup \214le, o)2.761 F -.15(ve)-.15 G
+.26(rriding the def).15 F .26(ault of)-.1 F F4(~/.inputr)4.426 E(c)-.37
+E F0(\(see)4.426 E F2(READLINE)2.76 E F0(be-)2.51 E(lo)144 624 Q(w\).)
+-.25 E F1(INSIDE_EMA)108 636 Q(CS)-.55 E F0 .033(If this v)144 648 R
+.033(ariable appears in the en)-.25 F .033
+(vironment when the shell starts,)-.4 F F1(bash)2.534 E F0 .034
+(assumes that it is running in-)2.534 F(side an Emacs shell b)144 660 Q
(uf)-.2 E(fer and may disable line editing, depending on the v)-.25 E
-(alue of)-.25 E F1(TERM)2.5 E F0(.)A F1(LANG)108 360 Q F0 1.239
-(Used to determine the locale cate)144 360 R 1.239(gory for an)-.15 F
-3.739(yc)-.15 G(ate)-3.739 E 1.24
+(alue of)-.25 E F1(TERM)2.5 E F0(.)A F1(LANG)108 672 Q F0 1.24
+(Used to determine the locale cate)144 672 R 1.239(gory for an)-.15 F
+3.739(yc)-.15 G(ate)-3.739 E 1.239
(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E
-(starting with)144 372 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 384 Q F0 .974
-(This v)144 396 R .974(ariable o)-.25 F -.15(ve)-.15 G .974
-(rrides the v).15 F .973(alue of)-.25 F F3(LANG)3.473 E F0 .973(and an)
+(starting with)144 684 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 696 Q F0 .973
+(This v)144 708 R .973(ariable o)-.25 F -.15(ve)-.15 G .973
+(rrides the v).15 F .973(alue of)-.25 F F2(LANG)3.473 E F0 .973(and an)
3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G
-.973(riable specifying a locale cate-).25 F(gory)144 408 Q(.)-.65 E F1
-(LC_COLLA)108 420 Q(TE)-.95 E F0 .411(This v)144 432 R .412(ariable det\
+.974(riable specifying a locale cate-).25 F(gory)144 720 Q(.)-.65 E
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(17)185.115 E 0 Cg EP
+%%Page: 18 18
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(LC_COLLA)108 84 Q(TE)-.95 E F0 .412(This v)144 96 R .412(ariable det\
ermines the collation order used when sorting the results of pathname e)
--.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 444 R 1.465
-(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G
-1.464(lence classes, and collating sequences).25 F(within pathname e)144
-456 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 468 Q F0
-1.935(This v)144 480 R 1.936
+-.25 F(xpansion,)-.15 E 1.464(and determines the beha)144 108 R 1.464
+(vior of range e)-.2 F 1.465(xpressions, equi)-.15 F -.25(va)-.25 G
+1.465(lence classes, and collating sequences).25 F(within pathname e)144
+120 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 132 Q F0
+1.936(This v)144 144 R 1.936
(ariable determines the interpretation of characters and the beha)-.25 F
-1.936(vior of character classes)-.2 F(within pathname e)144 492 Q
-(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 504 Q(GES)-.55 E
-F0(This v)144 516 Q(ariable determines the locale used to translate dou\
+1.935(vior of character classes)-.2 F(within pathname e)144 156 Q
+(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 168 Q(GES)-.55 E
+F0(This v)144 180 Q(ariable determines the locale used to translate dou\
ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC)
-108 528 Q F0(This v)144 540 Q(ariable determines the locale cate)-.25 E
-(gory used for number formatting.)-.15 E F1(LC_TIME)108 552 Q F0(This v)
-144 564 Q(ariable determines the locale cate)-.25 E
-(gory used for data and time formatting.)-.15 E F1(LINES)108 576 Q F0
-.055(Used by the)144 576 R F1(select)2.555 E F0 .054(compound command t\
-o determine the column length for printing selection lists.)2.555 F .264
-(Automatically set if the)144 588 R F1(checkwinsize)2.764 E F0 .264
-(option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265
-(hell upon receipt of a).15 F F3(SIGWINCH)144 600 Q/F4 9/Times-Roman@0
-SF(.)A F1(MAIL)108 612 Q F0 .422
-(If this parameter is set to a \214le or directory name and the)144 612
-R F3(MAILP)2.921 E -.855(AT)-.666 G(H).855 E F0 -.25(va)2.671 G .421
-(riable is not set,).25 F F1(bash)2.921 E F0(in-)2.921 E
-(forms the user of the arri)144 624 Q -.25(va)-.25 G 2.5(lo).25 G 2.5
+108 192 Q F0(This v)144 204 Q(ariable determines the locale cate)-.25 E
+(gory used for number formatting.)-.15 E F1(LC_TIME)108 216 Q F0(This v)
+144 228 Q(ariable determines the locale cate)-.25 E
+(gory used for data and time formatting.)-.15 E F1(LINES)108 240 Q F0
+.054(Used by the)144 240 R F1(select)2.554 E F0 .054(compound command t\
+o determine the column length for printing selection lists.)2.554 F .265
+(Automatically set if the)144 252 R F1(checkwinsize)2.765 E F0 .264
+(option is enabled or in an interacti)2.765 F .564 -.15(ve s)-.25 H .264
+(hell upon receipt of a).15 F/F2 9/Times-Bold@0 SF(SIGWINCH)144 264 Q/F3
+9/Times-Roman@0 SF(.)A F1(MAIL)108 276 Q F0 .421
+(If this parameter is set to a \214le or directory name and the)144 276
+R F2(MAILP)2.922 E -.855(AT)-.666 G(H).855 E F0 -.25(va)2.672 G .422
+(riable is not set,).25 F F1(bash)2.922 E F0(in-)2.922 E
+(forms the user of the arri)144 288 Q -.25(va)-.25 G 2.5(lo).25 G 2.5
(fm)-2.5 G(ail in the speci\214ed \214le or Maildir)-2.5 E
-(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 636 Q F0 .098
-(Speci\214es ho)144 648 R 2.598(wo)-.25 G .098(ften \(in seconds\))
--2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def)
-5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224
+(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 300 Q F0 .099
+(Speci\214es ho)144 312 R 2.599(wo)-.25 G .099(ften \(in seconds\))
+-2.599 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def)
+5.098 F .098(ault is 60 seconds.)-.1 F .098(When it is time)5.098 F .223
(to check for mail, the shell does so before displaying the primary pro\
-mpt.)144 660 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F
-(or set to a v)144 672 Q(alue that is not a number greater than or equa\
-l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 684 Q
--.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 696 S .49
+mpt.)144 324 R .224(If this v)5.224 F .224(ariable is unset,)-.25 F
+(or set to a v)144 336 Q(alue that is not a number greater than or equa\
+l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 348 Q
+-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 360 S .49
(olon-separated list of \214lenames to be check)-2.99 F .49
(ed for mail.)-.1 F .49(The message to be printed when mail)5.49 F(arri)
-144 708 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \
+144 372 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \
\214le may be speci\214ed by separating the \214lename from the message\
- with a `?'.)-2.62 F(When used in the te)144 720 Q(xt of the message,)
+ with a `?'.)-2.62 F(When used in the te)144 384 Q(xt of the message,)
-.15 E F1($_)2.5 E F0 -.15(ex)2.5 G
-(pands to the name of the current mail\214le.).15 E(Example:)5 E
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(17)190.395 E 0 Cg EP
-%%Page: 18 18
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(MAILP)144 84 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y)
+(pands to the name of the current mail\214le.).15 E(Example:)5 E F1
+(MAILP)144 396 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y)
-.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H
-(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 96 Q F0 .015
+(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 408 Q F0 .015
(can be con\214gured to supply a def)2.515 F .015(ault v)-.1 F .015
(alue for this v)-.25 F .015(ariable \(there is no v)-.25 F .015
(alue by def)-.25 F .015(ault\), b)-.1 F(ut)-.2 E(the location of the u\
-ser mail \214les that it uses is system dependent \(e.g., /v)144 108 Q
-(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 120 Q F0 .39
-(If set to the v)144 132 R .39(alue 1,)-.25 F F1(bash)2.89 E F0 .389
-(displays error messages generated by the)2.889 F F1(getopts)2.889 E F0
--.2(bu)2.889 G .389(iltin command \(see).2 F/F2 9/Times-Bold@0 SF .359
-(SHELL B)144 144 R(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0(belo)2.609 E
-(w\).)-.25 E F2(OPTERR)5.359 E F0 .36
-(is initialized to 1 each time the shell is in)2.609 F -.2(vo)-.4 G -.1
-(ke).2 G(d).1 E(or a shell script is e)144 156 Q -.15(xe)-.15 G(cuted.)
-.15 E F1 -.74(PA)108 168 S(TH)-.21 E F0 .588
-(The search path for commands.)144 168 R .587
+ser mail \214les that it uses is system dependent \(e.g., /v)144 420 Q
+(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 432 Q F0 .389
+(If set to the v)144 444 R .389(alue 1,)-.25 F F1(bash)2.889 E F0 .389
+(displays error messages generated by the)2.889 F F1(getopts)2.89 E F0
+-.2(bu)2.89 G .39(iltin command \(see).2 F F2 .36(SHELL B)144 456 R(UIL)
+-.09 E .36(TIN COMMANDS)-.828 F F0(belo)2.61 E(w\).)-.25 E F2(OPTERR)
+5.36 E F0 .359(is initialized to 1 each time the shell is in)2.61 F -.2
+(vo)-.4 G -.1(ke).2 G(d).1 E(or a shell script is e)144 468 Q -.15(xe)
+-.15 G(cuted.).15 E F1 -.74(PA)108 480 S(TH)-.21 E F0 .587
+(The search path for commands.)144 480 R .588
(It is a colon-separated list of directories in which the shell looks)
-5.588 F .471(for commands \(see)144 180 R F2 .471(COMMAND EXECUTION)
-2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472
-(zero-length \(null\) directory name in the)2.972 F -.25(va)144 192 S
-.536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535
-(indicates the current directory)2.786 F 5.535(.A)-.65 G .535
-(null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent)
--3.035 E .867(colons, or as an initial or trailing colon.)144 204 R .868
-(The def)5.868 F .868(ault path is system-dependent, and is set by the)
--.1 F(administrator who installs)144 216 Q F1(bash)2.5 E F0 5(.A)C
-(common v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF
+5.587 F .472(for commands \(see)144 492 R F2 .472(COMMAND EXECUTION)
+2.972 F F0(belo)2.722 E 2.972(w\). A)-.25 F .471
+(zero-length \(null\) directory name in the)2.972 F -.25(va)144 504 S
+.535(lue of).25 F F2 -.666(PA)3.035 G(TH)-.189 E F0 .535
+(indicates the current directory)2.785 F 5.535(.A)-.65 G .535
+(null directory name may appear as tw)-2.5 F 3.036(oa)-.1 G(djacent)
+-3.036 E .868(colons, or as an initial or trailing colon.)144 516 R .868
+(The def)5.868 F .867(ault path is system-dependent, and is set by the)
+-.1 F(administrator who installs)144 528 Q F1(bash)2.5 E F0 5(.A)C
+(common v)-2.5 E(alue is)-.25 E/F4 10/Courier@0 SF
(/usr/local/bin:/usr/lo-)2.5 E(cal/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
-144 228 Q F0(.)A F1(POSIXL)108 240 Q(Y_CORRECT)-.92 E F0 .471(If this v)
-144 252 R .471(ariable is in the en)-.25 F .471(vironment when)-.4 F F1
-(bash)2.971 E F0 .471(starts, the shell enters)2.971 F/F4 10
-/Times-Italic@0 SF .472(posix mode)2.972 F F0 .472(before reading)2.972
-F .011(the startup \214les, as if the)144 264 R F1(\255\255posix)2.511 E
+144 540 Q F0(.)A F1(POSIXL)108 552 Q(Y_CORRECT)-.92 E F0 .472(If this v)
+144 564 R .472(ariable is in the en)-.25 F .471(vironment when)-.4 F F1
+(bash)2.971 E F0 .471(starts, the shell enters)2.971 F/F5 10
+/Times-Italic@0 SF .471(posix mode)2.971 F F0 .471(before reading)2.971
+F .011(the startup \214les, as if the)144 576 R F1(\255\255posix)2.511 E
F0(in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F
-.011(If it is set while the shell is)5.011 F(running,)144 276 Q F1(bash)
-4.497 E F0(enables)4.497 E F4 1.997(posix mode)4.497 F F0 4.497(,a)C
-4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F3 1.997
-(set -o posix)4.497 F F0 1.998(had been e)4.497 F -.15(xe)-.15 G(cuted.)
-.15 E(When the shell enters)144 288 Q F4(posix mode)2.5 E F0 2.5(,i)C
+.011(If it is set while the shell is)5.011 F(running,)144 588 Q F1(bash)
+4.498 E F0(enables)4.498 E F5 1.997(posix mode)4.497 F F0 4.497(,a)C
+4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F4 1.997
+(set -o posix)4.497 F F0 1.997(had been e)4.497 F -.15(xe)-.15 G(cuted.)
+.15 E(When the shell enters)144 600 Q F5(posix mode)2.5 E F0 2.5(,i)C
2.5(ts)-2.5 G(ets this v)-2.5 E(ariable if it w)-.25 E
-(as not already set.)-.1 E F1(PR)108 300 Q(OMPT_COMMAND)-.3 E F0 .155
-(If this v)144 312 R .155(ariable is set, and is an array)-.25 F 2.655
+(as not already set.)-.1 E F1(PR)108 612 Q(OMPT_COMMAND)-.3 E F0 .155
+(If this v)144 624 R .155(ariable is set, and is an array)-.25 F 2.655
(,t)-.65 G .155(he v)-2.655 F .155(alue of each set element is e)-.25 F
-.15(xe)-.15 G .155(cuted as a command prior).15 F .407
-(to issuing each primary prompt.)144 324 R .407(If this is set b)5.407 F
+(to issuing each primary prompt.)144 636 R .407(If this is set b)5.407 F
.407(ut not an array v)-.2 F .407(ariable, its v)-.25 F .407
-(alue is used as a com-)-.25 F(mand to e)144 336 Q -.15(xe)-.15 G
-(cute instead.).15 E F1(PR)108 348 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676
-(If set to a number greater than zero, the v)144 360 R .676
+(alue is used as a com-)-.25 F(mand to e)144 648 Q -.15(xe)-.15 G
+(cute instead.).15 E F1(PR)108 660 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676
+(If set to a number greater than zero, the v)144 672 R .676
(alue is used as the number of trailing directory compo-)-.25 F .923
-(nents to retain when e)144 372 R .923(xpanding the)-.15 F F1(\\w)3.423
+(nents to retain when e)144 684 R .923(xpanding the)-.15 F F1(\\w)3.423
E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see)
3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E
-(Characters remo)144 384 Q -.15(ve)-.15 G 2.5(da).15 G
-(re replaced with an ellipsis.)-2.5 E F1(PS0)108 396 Q F0 1.174(The v)
-144 396 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see)
+(Characters remo)144 696 Q -.15(ve)-.15 G 2.5(da).15 G
+(re replaced with an ellipsis.)-2.5 E F1(PS0)108 708 Q F0 1.174(The v)
+144 708 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see)
-.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174
(w\) and displayed by interacti)-.25 F -.15(ve)-.25 G
-(shells after reading a command and before the command is e)144 408 Q
--.15(xe)-.15 G(cuted.).15 E F1(PS1)108 420 Q F0 .064(The v)144 420 R
-.065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR)
-2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065
-(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 432 R
-(def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0
--.74('')2.5 G(.).74 E F1(PS2)108 444 Q F0 .118(The v)144 444 R .118
-(alue of this parameter is e)-.25 F .118(xpanded as with)-.15 F F2(PS1)
-2.617 E F0 .117(and used as the secondary prompt string.)2.367 F(The)
-5.117 E(def)144 456 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G
-(.).74 E F1(PS3)108 468 Q F0 1.115(The v)144 468 R 1.115
-(alue of this parameter is used as the prompt for the)-.25 F F1(select)
-3.615 E F0 1.116(command \(see)3.616 F F2 1.116(SHELL GRAM-)3.616 F(MAR)
-144 480 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 492 Q F0
-.101(The v)144 492 R .101(alue of this parameter is e)-.25 F .101
-(xpanded as with)-.15 F F2(PS1)2.6 E F0 .1(and the v)2.35 F .1
-(alue is printed before each command)-.25 F F1(bash)144 504 Q F0 .334
-(displays during an e)2.834 F -.15(xe)-.15 G .335(cution trace.).15 F
-.335(The \214rst character of the e)5.335 F .335(xpanded v)-.15 F .335
-(alue of)-.25 F F2(PS4)2.835 E F0 .335(is repli-)2.585 F
-(cated multiple times, as necessary)144 516 Q 2.5(,t)-.65 G 2.5(oi)-2.5
-G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.).15 E
-(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 E F1
-(SHELL)108 528 Q F0 .543(This v)144 540 R .543(ariable e)-.25 F .543
-(xpands to the full pathname to the shell.)-.15 F .542
-(If it is not set when the shell starts,)5.543 F F1(bash)3.042 E F0
-(assigns to it the full pathname of the current user')144 552 Q 2.5(sl)
--.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 564 Q(T)-.95 E F0 .826(The v)
-144 576 R .826
-(alue of this parameter is used as a format string specifying ho)-.25 F
-3.327(wt)-.25 G .827(he timing information for)-3.327 F .649
-(pipelines pre\214x)144 588 R .649(ed with the)-.15 F F1(time)3.149 E F0
-(reserv)3.149 E .649(ed w)-.15 F .648(ord should be displayed.)-.1 F
-(The)5.648 E F1(%)3.148 E F0 .648(character introduces)3.148 F .711
-(an escape sequence that is e)144 600 R .711(xpanded to a time v)-.15 F
-.712(alue or other information.)-.25 F .712(The escape sequences)5.712 F
-(and their meanings are as follo)144 612 Q
-(ws; the braces denote optional portions.)-.25 E F1(%%)144 630 Q F0 2.5
-(Al)194 630 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 642 Q F4(p)A F1
-(][l]R)A F0(The elapsed time in seconds.)194 642 Q F1(%[)144 654 Q F4(p)
-A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 654 Q
-F1(%[)144 666 Q F4(p)A F1(][l]S)A F0
-(The number of CPU seconds spent in system mode.)194 666 Q F1(%P)144 678
-Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 678 Q .87
-(The optional)144 694.8 R F4(p)3.37 E F0 .87(is a digit specifying the)
-3.37 F F4(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87
-(he number of fractional digits after a decimal)-3.37 F 2.525(point. A)
-144 706.8 R -.25(va)2.525 G .025
-(lue of 0 causes no decimal point or fraction to be output.).25 F .026
-(At most three places after the)5.025 F .538
-(decimal point may be speci\214ed; v)144 718.8 R .538(alues of)-.25 F F4
-(p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E
-F4(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 730.8 Q
-(alue 3 is used.)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
-(18)190.395 E 0 Cg EP
+(shells after reading a command and before the command is e)144 720 Q
+-.15(xe)-.15 G(cuted.).15 E(GNU Bash 5.2)72 768 Q(2022 September 19)
+135.955 E(18)185.115 E 0 Cg EP
%%Page: 19 19
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .667(The optional)
-144 84 R/F1 10/Times-Bold@0 SF(l)3.167 E F0 .668
-(speci\214es a longer format, including minutes, of the form)3.168 F/F2
-10/Times-Italic@0 SF(MM)3.168 E F0(m)A F2(SS)A F0(.)A F2(FF)A F0 3.168
-(s. The)B -.25(va)3.168 G(lue).25 E(of)144 96 Q F2(p)2.5 E F0
-(determines whether or not the fraction is included.)2.5 E 13.365
-(If this v)144 112.8 R 13.365(ariable is not set,)-.25 F F1(bash)15.865
-E F0 13.364(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr)
-144 124.8 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(PS1)108 84 Q F0 .065(The v)144 84 R .065(alue of this parameter is e)
+-.25 F .065(xpanded \(see)-.15 F/F2 9/Times-Bold@0 SF(PR)2.565 E
+(OMPTING)-.27 E F0(belo)2.315 E .065(w\) and used as the primary prompt)
+-.25 F 2.5(string. The)144 96 R(def)2.5 E(ault v)-.1 E(alue is `)-.25 E
+(`)-.74 E F1(\\s\255\\v\\$)A F0 -.74('')2.5 G(.).74 E F1(PS2)108 108 Q
+F0 .117(The v)144 108 R .117(alue of this parameter is e)-.25 F .117
+(xpanded as with)-.15 F F2(PS1)2.617 E F0 .118
+(and used as the secondary prompt string.)2.368 F(The)5.118 E(def)144
+120 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G(.).74 E F1(PS3)
+108 132 Q F0 1.116(The v)144 132 R 1.115
+(alue of this parameter is used as the prompt for the)-.25 F F1(select)
+3.615 E F0 1.115(command \(see)3.615 F F2 1.115(SHELL GRAM-)3.615 F(MAR)
+144 144 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 156 Q F0 .1
+(The v)144 156 R .1(alue of this parameter is e)-.25 F .1
+(xpanded as with)-.15 F F2(PS1)2.6 E F0 .101(and the v)2.35 F .101
+(alue is printed before each command)-.25 F F1(bash)144 168 Q F0 .335
+(displays during an e)2.835 F -.15(xe)-.15 G .335(cution trace.).15 F
+.335(The \214rst character of the e)5.335 F .335(xpanded v)-.15 F .335
+(alue of)-.25 F F2(PS4)2.834 E F0 .334(is repli-)2.584 F
+(cated multiple times, as necessary)144 180 Q 2.5(,t)-.65 G 2.5(oi)-2.5
+G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.).15 E
+(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 E F1
+(SHELL)108 192 Q F0 .542(This v)144 204 R .542(ariable e)-.25 F .542
+(xpands to the full pathname to the shell.)-.15 F .543
+(If it is not set when the shell starts,)5.543 F F1(bash)3.043 E F0
+(assigns to it the full pathname of the current user')144 216 Q 2.5(sl)
+-.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 228 Q(T)-.95 E F0 .827(The v)
+144 240 R .826
+(alue of this parameter is used as a format string specifying ho)-.25 F
+3.326(wt)-.25 G .826(he timing information for)-3.326 F .648
+(pipelines pre\214x)144 252 R .648(ed with the)-.15 F F1(time)3.148 E F0
+(reserv)3.148 E .648(ed w)-.15 F .649(ord should be displayed.)-.1 F
+(The)5.649 E F1(%)3.149 E F0 .649(character introduces)3.149 F .712
+(an escape sequence that is e)144 264 R .711(xpanded to a time v)-.15 F
+.711(alue or other information.)-.25 F .711(The escape sequences)5.711 F
+(and their meanings are as follo)144 276 Q
+(ws; the braces denote optional portions.)-.25 E F1(%%)144 294 Q F0 2.5
+(Al)194 294 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 306 Q/F3 10
+/Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)194
+306 Q F1(%[)144 318 Q F3(p)A F1(][l]U)A F0
+(The number of CPU seconds spent in user mode.)194 318 Q F1(%[)144 330 Q
+F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.)194
+330 Q F1(%P)144 342 Q F0
+(The CPU percentage, computed as \(%U + %S\) / %R.)194 342 Q .87
+(The optional)144 358.8 R F3(p)3.37 E F0 .87(is a digit specifying the)
+3.37 F F3(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87
+(he number of fractional digits after a decimal)-3.37 F 2.526(point. A)
+144 370.8 R -.25(va)2.526 G .025
+(lue of 0 causes no decimal point or fraction to be output.).25 F .025
+(At most three places after the)5.025 F .537
+(decimal point may be speci\214ed; v)144 382.8 R .537(alues of)-.25 F F3
+(p)3.037 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.538 E
+F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 394.8 Q
+(alue 3 is used.)-.25 E .668(The optional)144 411.6 R F1(l)3.168 E F0
+.668(speci\214es a longer format, including minutes, of the form)3.168 F
+F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.167(s. The)B -.25(va)
+3.167 G(lue).25 E(of)144 423.6 Q F3(p)2.5 E F0
+(determines whether or not the fraction is included.)2.5 E 13.364
+(If this v)144 440.4 R 13.364(ariable is not set,)-.25 F F1(bash)15.865
+E F0 13.365(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr)
+144 452.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113
(.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113
(alue is null, no timing information is dis-)-.25 F 2.5(played. A)144
-136.8 R(trailing ne)2.5 E
+464.4 R(trailing ne)2.5 E
(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108
-148.8 Q F0 .941(If set to a v)144 160.8 R .941(alue greater than zero,)
--.25 F/F3 9/Times-Bold@0 SF(TMOUT)3.441 E F0 .941(is treated as the def)
-3.191 F .941(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0
--.2(bu)3.441 G(iltin.).2 E(The)144 172.8 Q F1(select)2.81 E F0 .31
-(command terminates if input does not arri)2.81 F .611 -.15(ve a)-.25 H
-(fter).15 E F3(TMOUT)2.811 E F0 .311(seconds when input is com-)2.561 F
-.886(ing from a terminal.)144 184.8 R .886(In an interacti)5.886 F 1.185
--.15(ve s)-.25 H .885(hell, the v).15 F .885
-(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 196.8
+476.4 Q F0 .941(If set to a v)144 488.4 R .941(alue greater than zero,)
+-.25 F F2(TMOUT)3.441 E F0 .941(is treated as the def)3.191 F .941
+(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441
+G(iltin.).2 E(The)144 500.4 Q F1(select)2.811 E F0 .311
+(command terminates if input does not arri)2.811 F .61 -.15(ve a)-.25 H
+(fter).15 E F2(TMOUT)2.81 E F0 .31(seconds when input is com-)2.56 F
+.885(ing from a terminal.)144 512.4 R .885(In an interacti)5.885 F 1.185
+-.15(ve s)-.25 H .885(hell, the v).15 F .886
+(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 524.4
S 1.05(it for a line of input after issuing the primary prompt.).1 F F1
(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)-.1
-F(number of seconds if a complete line of input does not arri)144 208.8
-Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 220.8 Q F0 .391(If set,)144 232.8
-R F1(bash)2.891 E F0 .391(uses its v)2.891 F .391
-(alue as the name of a directory in which)-.25 F F1(bash)2.89 E F0 .39
-(creates temporary \214les for the)2.89 F(shell')144 244.8 Q 2.5(su)-.55
-G(se.)-2.5 E F1(auto_r)108 256.8 Q(esume)-.18 E F0 .53(This v)144 268.8
-R .53(ariable controls ho)-.25 F 3.03(wt)-.25 G .531
-(he shell interacts with the user and job control.)-3.03 F .531
-(If this v)5.531 F .531(ariable is set,)-.25 F .539(single w)144 280.8 R
+F(number of seconds if a complete line of input does not arri)144 536.4
+Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 548.4 Q F0 .39(If set,)144 560.4
+R F1(bash)2.89 E F0 .39(uses its v)2.89 F .39
+(alue as the name of a directory in which)-.25 F F1(bash)2.891 E F0 .391
+(creates temporary \214les for the)2.891 F(shell')144 572.4 Q 2.5(su)
+-.55 G(se.)-2.5 E F1(auto_r)108 584.4 Q(esume)-.18 E F0 .531(This v)144
+596.4 R .531(ariable controls ho)-.25 F 3.031(wt)-.25 G .531
+(he shell interacts with the user and job control.)-3.031 F .53
+(If this v)5.53 F .53(ariable is set,)-.25 F .538(single w)144 608.4 R
.538(ord simple commands without redirections are treated as candidates\
- for resumption of an)-.1 F -.15(ex)144 292.8 S .366(isting stopped job)
-.15 F 5.366(.T)-.4 G .366(here is no ambiguity allo)-5.366 F .366
-(wed; if there is more than one job be)-.25 F .367(ginning with)-.15 F
-1.125(the string typed, the job most recently accessed is selected.)144
-304.8 R(The)6.125 E F2(name)3.985 E F0 1.124(of a stopped job, in this)
-3.805 F(conte)144 316.8 Q 1.132
+ for resumption of an)-.1 F -.15(ex)144 620.4 S .367(isting stopped job)
+.15 F 5.367(.T)-.4 G .366(here is no ambiguity allo)-5.367 F .366
+(wed; if there is more than one job be)-.25 F .366(ginning with)-.15 F
+1.124(the string typed, the job most recently accessed is selected.)144
+632.4 R(The)6.125 E F3(name)3.985 E F0 1.125(of a stopped job, in this)
+3.805 F(conte)144 644.4 Q 1.133
(xt, is the command line used to start it.)-.15 F 1.133(If set to the v)
-6.133 F(alue)-.25 E F2 -.2(ex)3.633 G(act).2 E F0 3.633(,t).68 G 1.133
-(he string supplied must)-3.633 F .606
-(match the name of a stopped job e)144 328.8 R .606(xactly; if set to)
--.15 F F2(substring)3.445 E F0 3.105(,t).22 G .605
-(he string supplied needs to match a)-3.105 F .884
-(substring of the name of a stopped job)144 340.8 R 5.884(.T)-.4 G(he)
--5.884 E F2(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885
-(vides functionality analogous to)-.15 F(the)144 352.8 Q F1(%?)3.334 E
-F0 .834(job identi\214er \(see)5.834 F F3 .834(JOB CONTR)3.334 F(OL)-.27
+6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.632(,t).68 G 1.132
+(he string supplied must)-3.632 F .605
+(match the name of a stopped job e)144 656.4 R .606(xactly; if set to)
+-.15 F F3(substring)3.446 E F0 3.106(,t).22 G .606
+(he string supplied needs to match a)-3.106 F .885
+(substring of the name of a stopped job)144 668.4 R 5.884(.T)-.4 G(he)
+-5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .884(lue pro).25 F .884
+(vides functionality analogous to)-.15 F(the)144 680.4 Q F1(%?)3.333 E
+F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27
E F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo)
--.15 G .834(ther v)-3.334 F .833(alue, the supplied string)-.25 F .315
-(must be a pre\214x of a stopped job')144 364.8 R 2.816(sn)-.55 G .316
-(ame; this pro)-2.816 F .316(vides functionality analogous to the)-.15 F
-F1(%)2.816 E F2(string)A F0(job)2.816 E(identi\214er)144 376.8 Q(.)-.55
-E F1(histchars)108 388.8 Q F0 .546(The tw)144 400.8 R 3.046(oo)-.1 G
-3.046(rt)-3.046 G .546(hree characters which control history e)-3.046 F
-.545(xpansion and tok)-.15 F .545(enization \(see)-.1 F F3(HIST)3.045 E
-(OR)-.162 E 2.795(YE)-.315 G(X-)-2.795 E -.666(PA)144 412.8 S(NSION).666
-E F0(belo)2.987 E 3.237(w\). The)-.25 F .737(\214rst character is the)
-3.237 F F2 .737(history e)3.237 F(xpansion)-.2 E F0(character)3.238 E
-3.238(,t)-.4 G .738(he character which sig-)-3.238 F .761
-(nals the start of a history e)144 424.8 R .761(xpansion, normally `)
--.15 F F1(!)A F0 3.261('. The)B .76(second character is the)3.261 F F2
-(quic)3.26 E 3.26(ks)-.2 G(ubstitution)-3.26 E F0(character)144 436.8 Q
-3.476(,w)-.4 G .977(hich is used as shorthand for re-running the pre)
--3.476 F .977(vious command entered, substituting)-.25 F .131
-(one string for another in the command.)144 448.8 R .131(The def)5.131 F
-.131(ault is `)-.1 F F1(^)A F0 2.63('. The)B .13
-(optional third character is the char)2.63 F(-)-.2 E .276(acter which i\
-ndicates that the remainder of the line is a comment when found as the \
-\214rst character)144 460.8 R .46(of a w)144 472.8 R .46
-(ord, normally `)-.1 F F1(#)A F0 2.959('. The)B .459
+-.15 G .834(ther v)-3.334 F .834(alue, the supplied string)-.25 F .316
+(must be a pre\214x of a stopped job')144 692.4 R 2.816(sn)-.55 G .316
+(ame; this pro)-2.816 F .315(vides functionality analogous to the)-.15 F
+F1(%)2.815 E F3(string)A F0(job)2.815 E(identi\214er)144 704.4 Q(.)-.55
+E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(19)185.115 E 0 Cg EP
+%%Page: 20 20
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(histchars)108 84 Q F0 .545(The tw)144 96 R 3.045(oo)-.1 G 3.045(rt)
+-3.045 G .545(hree characters which control history e)-3.045 F .546
+(xpansion and tok)-.15 F .546(enization \(see)-.1 F/F2 9/Times-Bold@0 SF
+(HIST)3.046 E(OR)-.162 E 2.796(YE)-.315 G(X-)-2.796 E -.666(PA)144 108 S
+(NSION).666 E F0(belo)2.988 E 3.238(w\). The)-.25 F .738
+(\214rst character is the)3.238 F/F3 10/Times-Italic@0 SF .737
+(history e)3.237 F(xpansion)-.2 E F0(character)3.237 E 3.237(,t)-.4 G
+.737(he character which sig-)-3.237 F .76(nals the start of a history e)
+144 120 R .761(xpansion, normally `)-.15 F F1(!)A F0 3.261('. The)B .761
+(second character is the)3.261 F F3(quic)3.261 E 3.261(ks)-.2 G
+(ubstitution)-3.261 E F0(character)144 132 Q 3.477(,w)-.4 G .977
+(hich is used as shorthand for re-running the pre)-3.477 F .976
+(vious command entered, substituting)-.25 F .13
+(one string for another in the command.)144 144 R .131(The def)5.13 F
+.131(ault is `)-.1 F F1(^)A F0 2.631('. The)B .131
+(optional third character is the char)2.631 F(-)-.2 E .276(acter which \
+indicates that the remainder of the line is a comment when found as the\
+ \214rst character)144 156 R .459(of a w)144 168 R .459(ord, normally `)
+-.1 F F1(#)A F0 2.959('. The)B .459
(history comment character causes history substitution to be skipped)
-2.959 F .466(for the remaining w)144 484.8 R .466(ords on the line.)-.1
-F .467(It does not necessarily cause the shell parser to treat the rest)
-5.467 F(of the line as a comment.)144 496.8 Q F1(Arrays)87 513.6 Q(Bash)
-108 525.6 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F -.15
-(xe)-.15 G 3.391(da).15 G .891(nd associati)-3.391 F 1.191 -.15(ve a)
--.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .89
-(ariable may be used as an)-3.641 F(inde)108 537.6 Q -.15(xe)-.15 G
-2.573(da).15 G .073(rray; the)-2.573 F F1(declar)2.573 E(e)-.18 E F0 -.2
-(bu)2.573 G .073(iltin will e).2 F .073(xplicitly declare an array)-.15
-F 5.073(.T)-.65 G .074(here is no maximum limit on the size of)-5.073 F
-.329(an array)108 549.6 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr)
--.15 G .329(equirement that members be inde)-2.829 F -.15(xe)-.15 G
-2.829(do).15 G 2.829(ra)-2.829 G .328(ssigned contiguously)-2.829 F
-5.328(.I)-.65 G(nde)-5.328 E -.15(xe)-.15 G 2.828(da).15 G .328
-(rrays are refer)-2.828 F(-)-.2 E 1.595(enced using inte)108 561.6 R
+2.959 F .467(for the remaining w)144 180 R .467(ords on the line.)-.1 F
+.466(It does not necessarily cause the shell parser to treat the rest)
+5.467 F(of the line as a comment.)144 192 Q F1(Arrays)87 208.8 Q(Bash)
+108 220.8 Q F0(pro)3.39 E .89(vides one-dimensional inde)-.15 F -.15(xe)
+-.15 G 3.39(da).15 G .891(nd associati)-3.39 F 1.191 -.15(ve a)-.25 H
+.891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .891
+(ariable may be used as an)-3.641 F(inde)108 232.8 Q -.15(xe)-.15 G
+2.574(da).15 G .074(rray; the)-2.574 F F1(declar)2.574 E(e)-.18 E F0 -.2
+(bu)2.574 G .074(iltin will e).2 F .073(xplicitly declare an array)-.15
+F 5.073(.T)-.65 G .073(here is no maximum limit on the size of)-5.073 F
+.328(an array)108 244.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr)
+-.15 G .329(equirement that members be inde)-2.828 F -.15(xe)-.15 G
+2.829(do).15 G 2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F
+5.329(.I)-.65 G(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329
+(rrays are refer)-2.829 F(-)-.2 E 1.595(enced using inte)108 256.8 R
1.595(gers \(including arithmetic e)-.15 F 1.595
(xpressions\) and are zero-based; associati)-.15 F 1.895 -.15(ve a)-.25
H 1.595(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108
-573.6 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G
+268.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G
(rray indices must be non-ne)-2.5 E -.05(ga)-.15 G(ti).05 E .3 -.15
-(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 590.4 R -.15(xe)
--.15 G 4.963(da).15 G 2.463(rray is created automatically if an)-4.963 F
-4.963(yv)-.15 G 2.462(ariable is assigned to using the syntax)-5.213 F
-F2(name)4.962 E F0([)A F2(sub-)A(script)108 602.4 Q F0(]=)A F2(value)A
-F0 5.506(.T)C(he)-5.506 E F2(subscript)3.346 E F0 .507
+(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.462(An inde)108 285.6 R -.15(xe)
+-.15 G 4.962(da).15 G 2.462(rray is created automatically if an)-4.962 F
+4.963(yv)-.15 G 2.463(ariable is assigned to using the syntax)-5.213 F
+F3(name)4.963 E F0([)A F3(sub-)A(script)108 297.6 Q F0(]=)A F3(value)A
+F0 5.507(.T)C(he)-5.507 E F3(subscript)3.347 E F0 .507
(is treated as an arithmetic e)3.687 F .507(xpression that must e)-.15 F
--.25(va)-.25 G .507(luate to a number).25 F 5.507(.T)-.55 G 3.007(oe)
--6.307 G(x-)-3.157 E 1.193(plicitly declare an inde)108 614.4 R -.15(xe)
--.15 G 3.693(da).15 G(rray)-3.693 E 3.693(,u)-.65 G(se)-3.693 E F1
-(declar)3.693 E 3.693<65ad>-.18 G(a)-3.693 E F2(name)3.693 E F0(\(see)
-3.692 E F3 1.192(SHELL B)3.692 F(UIL)-.09 E 1.192(TIN COMMANDS)-.828 F
-F0(belo)3.442 E(w\).)-.25 E F1(de-)6.192 E(clar)108 626.4 Q 2.5<65ad>
--.18 G(a)-2.5 E F2(name)2.5 E F1([)A F2(subscript)A F1(])A F0
-(is also accepted; the)2.5 E F2(subscript)2.5 E F0(is ignored.)2.5 E
-(Associati)108 643.2 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E
-F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108
-660 Q .94(utes may be speci\214ed for an array v)-.2 F .941
-(ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.441 E F1
--.18(re)3.441 G(adonly).18 E F0 -.2(bu)3.441 G 3.441(iltins. Each).2 F
-(attrib)3.441 E(ute)-.2 E(applies to all members of an array)108 672 Q
+-.25(va)-.25 G .507(luate to a number).25 F 5.506(.T)-.55 G 3.006(oe)
+-6.306 G(x-)-3.156 E 1.192(plicitly declare an inde)108 309.6 R -.15(xe)
+-.15 G 3.692(da).15 G(rray)-3.692 E 3.692(,u)-.65 G(se)-3.692 E F1
+(declar)3.692 E 3.693<65ad>-.18 G(a)-3.693 E F3(name)3.693 E F0(\(see)
+3.693 E F2 1.193(SHELL B)3.693 F(UIL)-.09 E 1.193(TIN COMMANDS)-.828 F
+F0(belo)3.443 E(w\).)-.25 E F1(de-)6.193 E(clar)108 321.6 Q 2.5<65ad>
+-.18 G(a)-2.5 E F3(name)2.5 E F1([)A F3(subscript)A F1(])A F0
+(is also accepted; the)2.5 E F3(subscript)2.5 E F0(is ignored.)2.5 E
+(Associati)108 338.4 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E
+F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108
+355.2 Q .941(utes may be speci\214ed for an array v)-.2 F .941
+(ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.44 E F1
+-.18(re)3.44 G(adonly).18 E F0 -.2(bu)3.44 G 3.44(iltins. Each).2 F
+(attrib)3.44 E(ute)-.2 E(applies to all members of an array)108 367.2 Q
(.)-.65 E 1.647
-(Arrays are assigned to using compound assignments of the form)108 688.8
-R F2(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F2(1)A F0 1.647
-(... v)4.147 F(alue)-.25 E F2(n)A F1(\))A F0 4.147(,w)C 1.647(here each)
--4.147 F F2(value)108 700.8 Q F0 .211(may be of the form [)2.711 F F2
-(subscript)A F0(]=)A F2(string)A F0 5.211(.I)C(nde)-5.211 E -.15(xe)-.15
-G 2.711(da).15 G .212(rray assignments do not require an)-2.711 F .212
-(ything b)-.15 F(ut)-.2 E F2(string)2.712 E F0(.)A(Each)108 712.8 Q F2
-(value)2.53 E F0 .029(in the list is e)2.529 F .029
+(Arrays are assigned to using compound assignments of the form)108 384 R
+F3(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F3(1)A F0 1.647
+(... v)4.147 F(alue)-.25 E F3(n)A F1(\))A F0 4.148(,w)C 1.648(here each)
+-4.148 F F3(value)108 396 Q F0 .212(may be of the form [)2.712 F F3
+(subscript)A F0(]=)A F3(string)A F0 5.211(.I)C(nde)-5.211 E -.15(xe)-.15
+G 2.711(da).15 G .211(rray assignments do not require an)-2.711 F .211
+(ything b)-.15 F(ut)-.2 E F3(string)2.711 E F0(.)A(Each)108 408 Q F3
+(value)2.529 E F0 .029(in the list is e)2.529 F .029
(xpanded using all the shell e)-.15 F .029(xpansions described belo)-.15
-F 2.529(wu)-.25 G(nder)-2.529 E F3(EXP)2.529 E(ANSION)-.666 E/F4 9
-/Times-Roman@0 SF(.)A F0(When)4.529 E .995(assigning to inde)108 724.8 R
--.15(xe)-.15 G 3.495(da).15 G .995(rrays, if the optional brack)-3.495 F
-.996(ets and subscript are supplied, that inde)-.1 F 3.496(xi)-.15 G
-3.496(sa)-3.496 G .996(ssigned to;)-3.496 F(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(19)190.395 E 0 Cg EP
-%%Page: 20 20
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .417
-(otherwise the inde)108 84 R 2.917(xo)-.15 G 2.917(ft)-2.917 G .417
-(he element assigned is the last inde)-2.917 F 2.917(xa)-.15 G .416
-(ssigned to by the statement plus one.)-2.917 F(Inde)5.416 E(x-)-.15 E
-(ing starts at zero.)108 96 Q 1.288(When assigning to an associati)108
-112.8 R 1.588 -.15(ve a)-.25 H(rray).15 E 3.788(,t)-.65 G 1.288(he w)
+F 2.529(wu)-.25 G(nder)-2.529 E F2(EXP)2.529 E(ANSION)-.666 E/F4 9
+/Times-Roman@0 SF(.)A F0(When)4.53 E .996(assigning to inde)108 420 R
+-.15(xe)-.15 G 3.496(da).15 G .996(rrays, if the optional brack)-3.496 F
+.996(ets and subscript are supplied, that inde)-.1 F 3.495(xi)-.15 G
+3.495(sa)-3.495 G .995(ssigned to;)-3.495 F .416(otherwise the inde)108
+432 R 2.916(xo)-.15 G 2.916(ft)-2.916 G .417
+(he element assigned is the last inde)-2.916 F 2.917(xa)-.15 G .417
+(ssigned to by the statement plus one.)-2.917 F(Inde)5.417 E(x-)-.15 E
+(ing starts at zero.)108 444 Q 1.288(When assigning to an associati)108
+460.8 R 1.588 -.15(ve a)-.25 H(rray).15 E 3.788(,t)-.65 G 1.288(he w)
-3.788 F 1.288(ords in a compound assignment may be either assignment)
-.1 F .608
(statements, for which the subscript is required, or a list of w)108
-124.8 R .608(ords that is interpreted as a sequence of alter)-.1 F(-)-.2
-E 1.956(nating k)108 136.8 R -.15(ey)-.1 G 4.456(sa).15 G 1.956(nd v)
--4.456 F(alues:)-.25 E/F1 10/Times-Italic@0 SF(name)4.456 E F0(=)A/F2 10
-/Times-Bold@0 SF(\()A F1 -.1(ke)4.456 G 1.957(y1 value1 k)-.2 F -.3(ey)
--.1 G 4.457(2v).3 G(alue2)-4.457 E F0(...)4.457 E F2(\))A F0 6.957(.T)C
-1.957(hese are treated identically to)-6.957 F F1(name)4.457 E F0(=)A F2
-(\()A F0([)108 148.8 Q F1 -.1(ke)C(y1)-.2 E F0(]=)A F1(value1)A F0([)
-3.133 E F1 -.1(ke)C(y2)-.2 E F0(]=)A F1(value2)A F0(...)3.133 E F2(\))A
-F0 5.633(.T)C .633(he \214rst w)-5.633 F .633
-(ord in the list determines ho)-.1 F 3.132(wt)-.25 G .632
-(he remaining w)-3.132 F .632(ords are inter)-.1 F(-)-.2 E .153
-(preted; all assignments in a list must be of the same type.)108 160.8 R
-.154(When using k)5.154 F -.15(ey)-.1 G(/v).15 E .154(alue pairs, the k)
--.25 F -.15(ey)-.1 G 2.654(sm).15 G .154(ay not be)-2.654 F
-(missing or empty; a \214nal missing v)108 172.8 Q(alue is treated lik)
--.25 E 2.5(et)-.1 G(he empty string.)-2.5 E .24
-(This syntax is also accepted by the)108 189.6 R F2(declar)2.74 E(e)-.18
-E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239
-(vidual array elements may be assigned to using the)-.25 F F1(name)108
-201.6 Q F0([)A F1(subscript)A F0(]=)A F1(value)A F0 1.917
-(syntax introduced abo)4.416 F -.15(ve)-.15 G 6.917(.W).15 G 1.917
+472.8 R .608(ords that is interpreted as a sequence of alter)-.1 F(-)-.2
+E 1.957(nating k)108 484.8 R -.15(ey)-.1 G 4.457(sa).15 G 1.957(nd v)
+-4.457 F(alues:)-.25 E F3(name)4.457 E F0(=)A F1(\()A F3 -.1(ke)4.457 G
+1.957(y1 value1 k)-.2 F -.3(ey)-.1 G 4.457(2v).3 G(alue2)-4.457 E F0
+(...)4.457 E F1(\))A F0 6.957(.T)C 1.956
+(hese are treated identically to)-6.957 F F3(name)4.456 E F0(=)A F1(\()A
+F0([)108 496.8 Q F3 -.1(ke)C(y1)-.2 E F0(]=)A F3(value1)A F0([)3.132 E
+F3 -.1(ke)C(y2)-.2 E F0(]=)A F3(value2)A F0(...)3.132 E F1(\))A F0 5.632
+(.T)C .632(he \214rst w)-5.632 F .633(ord in the list determines ho)-.1
+F 3.133(wt)-.25 G .633(he remaining w)-3.133 F .633(ords are inter)-.1 F
+(-)-.2 E .154
+(preted; all assignments in a list must be of the same type.)108 508.8 R
+.153(When using k)5.153 F -.15(ey)-.1 G(/v).15 E .153(alue pairs, the k)
+-.25 F -.15(ey)-.1 G 2.653(sm).15 G .153(ay not be)-2.653 F
+(missing or empty; a \214nal missing v)108 520.8 Q(alue is treated lik)
+-.25 E 2.5(et)-.1 G(he empty string.)-2.5 E .239
+(This syntax is also accepted by the)108 537.6 R F1(declar)2.739 E(e)
+-.18 E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .24
+(vidual array elements may be assigned to using the)-.25 F F3(name)108
+549.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917
+(syntax introduced abo)4.417 F -.15(ve)-.15 G 6.917(.W).15 G 1.917
(hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray)
--4.417 E 4.417(,i)-.65 G(f)-4.417 E F1(name)4.777 E F0 1.917(is sub-)
-4.597 F .116(scripted by a ne)108 213.6 R -.05(ga)-.15 G(ti).05 E .416
--.15(ve n)-.25 H(umber).15 E 2.616(,t)-.4 G .115
-(hat number is interpreted as relati)-2.616 F .415 -.15(ve t)-.25 H
-2.615(oo).15 G .115(ne greater than the maximum inde)-2.615 F(x)-.15 E
-(of)108 225.6 Q F1(name)2.676 E F0 2.676(,s)C 2.676(on)-2.676 G -2.25
--.15(eg a)-2.676 H(ti).15 E .476 -.15(ve i)-.25 H .177
+-4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.916(is sub-)
+4.597 F .115(scripted by a ne)108 561.6 R -.05(ga)-.15 G(ti).05 E .415
+-.15(ve n)-.25 H(umber).15 E 2.615(,t)-.4 G .115
+(hat number is interpreted as relati)-2.615 F .415 -.15(ve t)-.25 H
+2.615(oo).15 G .116(ne greater than the maximum inde)-2.615 F(x)-.15 E
+(of)108 573.6 Q F3(name)2.677 E F0 2.677(,s)C 2.677(on)-2.677 G -2.25
+-.15(eg a)-2.677 H(ti).15 E .477 -.15(ve i)-.25 H .177
(ndices count back from the end of the array).15 F 2.677(,a)-.65 G .177
-(nd an inde)-2.677 F 2.677(xo)-.15 G 2.677<66ad>-2.677 G 2.677(1r)-2.677
-G .177(eferences the last el-)-2.677 F(ement.)108 237.6 Q(An)108 254.4 Q
-3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${)
--3.576 F F1(name)A F0([)A F1(subscript)A F0 3.575(]}. The)B 1.075
-(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541
-(con\215icts with pathname e)108 266.4 R 4.041(xpansion. If)-.15 F F1
-(subscript)4.041 E F0(is)4.041 E F2(@)4.041 E F0(or)4.041 E F2(*)4.041 E
-F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541
-(xpands to all members of)-.15 F F1(name)4.042 E F0(.)A 1.057
-(These subscripts dif)108 278.4 R 1.057(fer only when the w)-.25 F 1.057
+(nd an inde)-2.677 F 2.676(xo)-.15 G 2.676<66ad>-2.676 G 2.676(1r)-2.676
+G .176(eferences the last el-)-2.676 F(ement.)108 585.6 Q .716
+(The += operator will append to an array v)108 602.4 R .717
+(ariable when assigning using the compound assignment syntax;)-.25 F
+(see)108 614.4 Q F2 -.666(PA)2.5 G(RAMETERS).666 E F0(abo)2.25 E -.15
+(ve)-.15 G(.).15 E(An)108 631.2 Q 3.576(ye)-.15 G 1.076
+(lement of an array may be referenced using ${)-3.576 F F3(name)A F0([)A
+F3(subscript)A F0 3.575(]}. The)B 1.075(braces are required to a)3.575 F
+-.2(vo)-.2 G(id).2 E 1.541(con\215icts with pathname e)108 643.2 R 4.041
+(xpansion. If)-.15 F F3(subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0
+(or)4.041 E F1(*)4.041 E F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)
+-.1 F 1.541(xpands to all members of)-.15 F F3(name)4.042 E F0(.)A 1.057
+(These subscripts dif)108 655.2 R 1.057(fer only when the w)-.25 F 1.057
(ord appears within double quotes.)-.1 F 1.056(If the w)6.056 F 1.056
-(ord is double-quoted,)-.1 F(${)108 290.4 Q F1(name)A F0 .52([*]} e)B
+(ord is double-quoted,)-.1 F(${)108 667.2 Q F3(name)A F0 .52([*]} e)B
.52(xpands to a single w)-.15 F .52(ord with the v)-.1 F .521
(alue of each array member separated by the \214rst character)-.25 F
-1.375(of the)108 302.4 R/F3 9/Times-Bold@0 SF(IFS)3.875 E F0 1.375
-(special v)3.625 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375
-([@]} e)B 1.375(xpands each element of)-.15 F F1(name)3.875 E F0 1.374
-(to a separate w)3.875 F 3.874(ord. When)-.1 F 2.027
-(there are no array members, ${)108 314.4 R F1(name)A F0 2.028([@]} e)B
-2.028(xpands to nothing.)-.15 F 2.028(If the double-quoted e)7.028 F
-2.028(xpansion occurs)-.15 F .759(within a w)108 326.4 R .759
-(ord, the e)-.1 F .759
+1.375(of the)108 679.2 R F2(IFS)3.875 E F0 1.375(special v)3.625 F 1.375
+(ariable, and ${)-.25 F F3(name)A F0 1.375([@]} e)B 1.375
+(xpands each element of)-.15 F F3(name)3.875 E F0 1.374(to a separate w)
+3.875 F 3.874(ord. When)-.1 F 2.027(there are no array members, ${)108
+691.2 R F3(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F
+2.028(If the double-quoted e)7.028 F 2.028(xpansion occurs)-.15 F .759
+(within a w)108 703.2 R .759(ord, the e)-.1 F .759
(xpansion of the \214rst parameter is joined with the be)-.15 F .759
(ginning part of the original w)-.15 F(ord,)-.1 E .515(and the e)108
-338.4 R .516(xpansion of the last parameter is joined with the last par\
+715.2 R .516(xpansion of the last parameter is joined with the last par\
t of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous)3.016
-F .228(to the e)108 350.4 R .228(xpansion of the special parameters)-.15
-F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228
+F .228(to the e)108 727.2 R .228(xpansion of the special parameters)-.15
+F F1(*)2.728 E F0(and)2.728 E F1(@)2.728 E F0(\(see)2.728 E F1 .228
(Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E -.15(ve)-.15 G 2.727
-(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 362.4
-S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A
-F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or)
-3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886
-(xpansion is the number of ele-)-.15 F .295(ments in the array)108 374.4
-R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795 E F1(subscript)3.135 E F0
-.295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G
-2.794(da).15 G .294(rray e)-2.794 F -.25(va)-.25 G .294
-(luates to a number).25 F .628
-(less than zero, it is interpreted as relati)108 386.4 R .928 -.15(ve t)
+(\). ${#).15 F F3(name)A F0([)A F3(subscript)A F0(]})A(GNU Bash 5.2)72
+768 Q(2022 September 19)135.955 E(20)185.115 E 0 Cg EP
+%%Page: 21 21
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(ex)108 84 S
+.886(pands to the length of ${).15 F/F1 10/Times-Italic@0 SF(name)A F0
+([)A F1(subscript)A F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E
+/F2 10/Times-Bold@0 SF(*)3.386 E F0(or)3.386 E F2(@)3.386 E F0 3.386(,t)
+C .886(he e)-3.386 F .886(xpansion is the number of ele-)-.15 F .295
+(ments in the array)108 96 R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795
+E F1(subscript)3.135 E F0 .295(used to reference an element of an inde)
+3.475 F -.15(xe)-.15 G 2.794(da).15 G .294(rray e)-2.794 F -.25(va)-.25
+G .294(luates to a number).25 F .628
+(less than zero, it is interpreted as relati)108 108 R .928 -.15(ve t)
-.25 H 3.128(oo).15 G .629(ne greater than the maximum inde)-3.128 F
3.129(xo)-.15 G 3.129(ft)-3.129 G .629(he array)-3.129 F 3.129(,s)-.65 G
3.129(on)-3.129 G -2.25 -.15(eg a)-3.129 H(ti).15 E -.15(ve)-.25 G
-(indices count back from the end of the array)108 398.4 Q 2.5(,a)-.65 G
+(indices count back from the end of the array)108 120 Q 2.5(,a)-.65 G
(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G
(eferences the last element.)-2.5 E .595(Referencing an array v)108
-415.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G
+136.8 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G
.595(lent to referencing the array with a subscript of).25 F 2.5(0. An)
-108 427.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25
+108 148.8 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25
E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F2(bash)2.5 E
-F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 444 Q
-(ariable is considered set if a subscript has been assigned a v)-.25 E
+F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 165.6
+Q(ariable is considered set if a subscript has been assigned a v)-.25 E
2.5(alue. The)-.25 F(null string is a v)2.5 E(alid v)-.25 E(alue.)-.25 E
-.417(It is possible to obtain the k)108 460.8 R -.15(ey)-.1 G 2.918(s\()
+.417(It is possible to obtain the k)108 182.4 R -.15(ey)-.1 G 2.918(s\()
.15 G .418(indices\) of an array as well as the v)-2.918 F 2.918
(alues. ${)-.25 F F2(!)A F1(name)A F0([)A F1(@)A F0 .418(]} and ${)B F2
-(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 472.8 S .75
+(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 194.4 S .75
(pand to the indices assigned in array v).15 F(ariable)-.25 E F1(name)
3.249 E F0 5.749(.T)C .749
(he treatment when in double quotes is similar to)-5.749 F(the e)108
-484.8 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5
-E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 501.6 Q F2(unset)
+206.4 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5
+E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 223.2 Q F2(unset)
2.766 E F0 -.2(bu)2.766 G .267(iltin is used to destro).2 F 2.767(ya)-.1
G(rrays.)-2.767 E F2(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A
F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x)
--.15 E F1(sub-)2.767 E(script)108 513.6 Q F0 2.858(,f)C .358
+-.15 E F1(sub-)2.767 E(script)108 235.2 Q F0 2.858(,f)C .358
(or both inde)-2.858 F -.15(xe)-.15 G 2.858(da).15 G .358(nd associati)
-2.858 F .658 -.15(ve a)-.25 H 2.858(rrays. Ne).15 F -.05(ga)-.15 G(ti)
.05 E .658 -.15(ve s)-.25 H .358(ubscripts to inde).15 F -.15(xe)-.15 G
2.858(da).15 G .358(rrays are interpreted as de-)-2.858 F 1.204
-(scribed abo)108 525.6 R -.15(ve)-.15 G 6.204(.U).15 G 1.204
+(scribed abo)108 247.2 R -.15(ve)-.15 G 6.204(.U).15 G 1.204
(nsetting the last element of an array v)-6.204 F 1.205
(ariable does not unset the v)-.25 F(ariable.)-.25 E F2(unset)6.205 E F1
-(name)3.705 E F0(,)A(where)108 537.6 Q F1(name)2.5 E F0(is an array)2.5
-E 2.5(,o)-.65 G(r)-2.5 E F2(unset)2.5 E F1(name)2.5 E F0([)A F1
-(subscript)A F0(], where)A F1(subscript)2.5 E F0(is)2.5 E F2(*)2.5 E F0
-(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G
-(he entire array)-2.5 E(.)-.65 E .029(When using a v)108 554.4 R .029
-(ariable name with a subscript as an ar)-.25 F .028
-(gument to a command, such as with)-.18 F F2(unset)2.528 E F0 2.528(,w)C
-.028(ithout us-)-2.528 F .937(ing the w)108 566.4 R .937(ord e)-.1 F
-.937(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 3.437(,t).15 G
-.937(he ar)-3.437 F .938(gument is subject to pathname e)-.18 F 3.438
-(xpansion. If)-.15 F(path-)3.438 E(name e)108 578.4 Q
+(name)3.705 E F0(,)A(where)108 259.2 Q F1(name)3.413 E F0 .913
+(is an array)3.413 F 3.413(,r)-.65 G(emo)-3.413 E -.15(ve)-.15 G 3.413
+(st).15 G .912(he entire array)-3.413 F(.)-.65 E F2(unset)5.912 E F1
+(name)3.412 E F0([)A F1(subscript)A F0 .912(], where)B F1(subscript)
+3.412 E F0(is)3.412 E F2(*)3.412 E F0(or)3.412 E F2(@)3.412 E F0 3.412
+(,b)C(e-)-3.412 E(ha)108 271.2 Q -.15(ve)-.2 G 3.125(sd).15 G(if)-3.125
+E .625(ferently depending on whether)-.25 F F1(name)3.125 E F0 .626
+(is an inde)3.125 F -.15(xe)-.15 G 3.126(do).15 G 3.126(ra)-3.126 G
+(ssociati)-3.126 E .926 -.15(ve a)-.25 H(rray).15 E 5.626(.I)-.65 G(f)
+-5.626 E F1(name)3.126 E F0 .626(is an associati)3.126 F -.15(ve)-.25 G
+(array)108 283.2 Q 3.067(,t)-.65 G .567
+(his unsets the element with subscript)-3.067 F F2(*)3.067 E F0(or)3.067
+E F2(@)3.067 E F0 5.567(.I)C(f)-5.567 E F1(name)3.067 E F0 .567
+(is an inde)3.067 F -.15(xe)-.15 G 3.067(da).15 G(rray)-3.067 E 3.067
+(,u)-.65 G .567(nset remo)-3.067 F -.15(ve)-.15 G 3.067(sa).15 G .567
+(ll of the)-3.067 F(elements b)108 295.2 Q(ut does not remo)-.2 E .3
+-.15(ve t)-.15 H(he array itself.).15 E .028(When using a v)108 312 R
+.028(ariable name with a subscript as an ar)-.25 F .029
+(gument to a command, such as with)-.18 F F2(unset)2.529 E F0 2.529(,w)C
+.029(ithout us-)-2.529 F .938(ing the w)108 324 R .938(ord e)-.1 F .938
+(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 3.437(,t).15 G .937
+(he ar)-3.437 F .937(gument is subject to pathname e)-.18 F 3.437
+(xpansion. If)-.15 F(path-)3.437 E(name e)108 336 Q
(xpansion is not desired, the ar)-.15 E(gument should be quoted.)-.18 E
-(The)108 595.2 Q F2(declar)2.684 E(e)-.18 E F0(,)A F2(local)2.684 E F0
-2.684(,a)C(nd)-2.684 E F2 -.18(re)2.684 G(adonly).18 E F0 -.2(bu)2.684 G
+(The)108 352.8 Q F2(declar)2.683 E(e)-.18 E F0(,)A F2(local)2.683 E F0
+2.683(,a)C(nd)-2.683 E F2 -.18(re)2.683 G(adonly).18 E F0 -.2(bu)2.683 G
.184(iltins each accept a).2 F 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
+(option to specify an inde)2.684 F -.15(xe)-.15 G 2.684(da).15 G .184
+(rray and a)-2.684 F F2<ad41>2.684 E F0(op-)2.684 E .042
+(tion to specify an associati)108 364.8 R .341 -.15(ve a)-.25 H(rray).15
E 5.041(.I)-.65 G 2.541(fb)-5.041 G .041(oth options are supplied,)
-2.541 F 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
+5.041 E F2 -.18(re)2.541 G(ad).18 E F0 -.2(bu)2.541 G .041(iltin ac-).2
+F .863(cepts a)108 376.8 R F2<ad61>3.363 E F0 .864
+(option to assign a list of w)3.363 F .864
+(ords read from the standard input to an array)-.1 F 5.864(.T)-.65 G(he)
+-5.864 E F2(set)3.364 E F0(and)3.364 E F2(declar)3.364 E(e)-.18 E F0 -.2
+(bu)108 388.8 S(iltins display array v).2 E(alues in a w)-.25 E
+(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F3 10.95
+/Times-Bold@0 SF(EXP)72 405.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\
+rmed on the command line after it has been split into w)108 417.6 R 3.26
(ords. There)-.1 F .76(are se)3.26 F -.15(ve)-.25 G 3.26(nk).15 G .76
-(inds of)-3.26 F -.15(ex)108 672 S .201(pansion performed:).15 F F1(br)
+(inds of)-3.26 F -.15(ex)108 429.6 S .2(pansion performed:).15 F F1(br)
2.971 E .201(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .201(tilde e)
2.831 F(xpansion)-.2 E F0(,).24 E F1(par)3.951 E .201
-(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .2
-(command sub-)2.901 F(stitution)108 684 Q F0(,).24 E F1(arithmetic e)
+(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .201
+(command sub-)2.901 F(stitution)108 441.6 Q F0(,).24 E F1(arithmetic e)
2.83 E(xpansion)-.2 E F0(,).24 E F1(wor)2.84 E 2.5(ds)-.37 G(plitting)
-2.5 E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)3.75 E(xpansion)-.2 E F0
-(.).24 E .418(The order of e)108 700.8 R .418(xpansions is: brace e)-.15
-F .418(xpansion; tilde e)-.15 F .419(xpansion, parameter and v)-.15 F
-.419(ariable e)-.25 F .419(xpansion, arithmetic)-.15 F -.15(ex)108 712.8
-S .196(pansion, and command substitution \(done in a left-to-right f).15
-F .195(ashion\); w)-.1 F .195(ord splitting; and pathname e)-.1 F(xpan-)
--.15 E(sion.)108 724.8 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
-(20)190.395 E 0 Cg EP
-%%Page: 21 21
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .257
-(On systems that can support it, there is an additional e)108 84 R .257
-(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E/F1 10/Times-Italic@0 SF
-(pr)2.757 E .257(ocess substitution)-.45 F F0 5.257(.T)C .257
-(his is per)-5.257 F(-)-.2 E
-(formed at the same time as tilde, parameter)108 96 Q 2.5(,v)-.4 G
+(.).24 E .419(The order of e)108 458.4 R .419(xpansions is: brace e)-.15
+F .418(xpansion; tilde e)-.15 F .418(xpansion, parameter and v)-.15 F
+.418(ariable e)-.25 F .418(xpansion, arithmetic)-.15 F -.15(ex)108 470.4
+S .195(pansion, and command substitution \(done in a left-to-right f).15
+F .196(ashion\); w)-.1 F .196(ord splitting; and pathname e)-.1 F(xpan-)
+-.15 E(sion.)108 482.4 Q .257
+(On systems that can support it, there is an additional e)108 499.2 R
+.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F1(pr)2.757 E .257
+(ocess substitution)-.45 F F0 5.257(.T)C .256(his is per)-5.257 F(-)-.2
+E(formed at the same time as tilde, parameter)108 511.2 Q 2.5(,v)-.4 G
(ariable, and arithmetic e)-2.75 E(xpansion and command substitution.)
--.15 E .003(After these e)108 112.8 R .003
+-.15 E .002(After these e)108 528 R .003
(xpansions are performed, quote characters present in the original w)
--.15 F .002(ord are remo)-.1 F -.15(ve)-.15 G 2.502(du).15 G .002
-(nless the)-2.502 F(y)-.15 E(ha)108 124.8 Q .3 -.15(ve b)-.2 H
+-.15 F .003(ord are remo)-.1 F -.15(ve)-.15 G 2.503(du).15 G .003
+(nless the)-2.503 F(y)-.15 E(ha)108 540 Q .3 -.15(ve b)-.2 H
(een quoted themselv).15 E(es \()-.15 E F1(quote r)A(emo)-.37 E(val)-.1
-E F0(\).)A .171(Only brace e)108 141.6 R .171(xpansion, w)-.15 F .171
+E F0(\).)A .172(Only brace e)108 556.8 R .172(xpansion, w)-.15 F .171
(ord splitting, and pathname e)-.1 F .171
-(xpansion can increase the number of w)-.15 F .172(ords of the e)-.1 F
-(x-)-.15 E .777(pansion; other e)108 153.6 R .776(xpansions e)-.15 F
+(xpansion can increase the number of w)-.15 F .171(ords of the e)-.1 F
+(x-)-.15 E .776(pansion; other e)108 568.8 R .776(xpansions e)-.15 F
.776(xpand a single w)-.15 F .776(ord to a single w)-.1 F 3.276
(ord. The)-.1 F .776(only e)3.276 F .776(xceptions to this are the e)
--.15 F(x-)-.15 E .695(pansions of ")108 165.6 R/F2 10/Times-Bold@0 SF
-($@)A F0 3.195("a)C .695(nd ")-3.195 F F2(${)A F1(name)A F2([@]})A F0
-.696(", and, in most cases,)B F2($*)3.196 E F0(and)3.196 E F2(${)3.196 E
-F1(name)A F2([*]})A F0 .696(as e)3.196 F .696(xplained abo)-.15 F .996
--.15(ve \()-.15 H(see).15 E/F3 9/Times-Bold@0 SF -.666(PA)3.196 G(-).666
-E(RAMETERS)108 177.6 Q/F4 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87
-194.4 Q F1(Br)108.58 206.4 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606
+-.15 F(x-)-.15 E .696(pansions of ")108 580.8 R F2($@)A F0 3.196("a)C
+.696(nd ")-3.196 F F2(${)A F1(name)A F2([@]})A F0 .696
+(", and, in most cases,)B F2($*)3.196 E F0(and)3.196 E F2(${)3.196 E F1
+(name)A F2([*]})A F0 .695(as e)3.196 F .695(xplained abo)-.15 F .995
+-.15(ve \()-.15 H(see).15 E/F4 9/Times-Bold@0 SF -.666(PA)3.195 G(-).666
+E(RAMETERS)108 592.8 Q/F5 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87
+609.6 Q F1(Br)108.58 621.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606
(is a mechanism by which arbitrary strings may be generated.)3.346 F
-.606(This mechanism is similar)5.606 F(to)108 218.4 Q F1 .415
+.606(This mechanism is similar)5.606 F(to)108 633.6 Q F1 .415
(pathname e)2.915 F(xpansion)-.2 E F0 2.915(,b)C .415
(ut the \214lenames generated need not e)-3.115 F 2.915(xist. P)-.15 F
.415(atterns to be brace e)-.15 F .415(xpanded tak)-.15 F 2.915(et)-.1 G
-(he)-2.915 E .074(form of an optional)108 230.4 R F1(pr)3.823 E(eamble)
+(he)-2.915 E .073(form of an optional)108 645.6 R F1(pr)3.823 E(eamble)
-.37 E F0 2.573(,f).18 G(ollo)-2.573 E .073
(wed by either a series of comma-separated strings or a sequence e)-.25
-F(xpres-)-.15 E .489(sion between a pair of braces, follo)108 242.4 R
-.489(wed by an optional)-.25 F F1(postscript)4.239 E F0 5.49(.T).68 G
-.49(he preamble is pre\214x)-5.49 F .49(ed to each string)-.15 F .659(c\
-ontained within the braces, and the postscript is then appended to each\
- resulting string, e)108 254.4 R .658(xpanding left to)-.15 F(right.)108
-266.4 Q .718(Brace e)108 283.2 R .719(xpansions may be nested.)-.15 F
-.719(The results of each e)5.719 F .719
+F(xpres-)-.15 E .49(sion between a pair of braces, follo)108 657.6 R
+.489(wed by an optional)-.25 F F1(postscript)4.239 E F0 5.489(.T).68 G
+.489(he preamble is pre\214x)-5.489 F .489(ed to each string)-.15 F .659
+(contained within the braces, and the postscript is then appended to ea\
+ch resulting string, e)108 669.6 R .659(xpanding left to)-.15 F(right.)
+108 681.6 Q .719(Brace e)108 698.4 R .719(xpansions may be nested.)-.15
+F .719(The results of each e)5.719 F .719
(xpanded string are not sorted; left to right order is)-.15 F(preserv)
-108 295.2 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F2({)A F0
-(d,c,b)A F2(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.243(As)
-108 312 S .743(equence e)-3.243 F .743(xpression tak)-.15 F .743
-(es the form)-.1 F F2({)3.243 E F1(x)A F2(..)A F1(y)A F2([..)A F1(incr)A
-F2(]})A F0 3.243(,w)C(here)-3.243 E F1(x)3.243 E F0(and)3.242 E F1(y)
-3.242 E F0 .742(are either inte)3.242 F .742(gers or single characters,)
--.15 F(and)108 324 Q F1(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G
-.532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G
-.532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532
-(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108
-336 R F1(x)2.578 E F0(and)2.578 E F1(y)2.578 E F0 2.578(,i)C(nclusi)
--2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077
-(gers may be pre\214x)-.15 F .077(ed with)-.15 F F1(0)2.577 E F0 .077
-(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014
-(same width.)108 348 R .014(When either)5.014 F F1(x)2.514 E F0(or)2.514
-E F1(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell attempts \
-to force all generated terms to contain)-.15 F 1.143
-(the same number of digits, zero-padding where necessary)108 360 R 6.143
-(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F(xpression)
--.15 E -.15(ex)108 372 S 1.064(pands to each character le).15 F 1.064
-(xicographically between)-.15 F F1(x)3.564 E F0(and)3.564 E F1(y)3.564 E
-F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G 1.064
-(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .245
-(that both)108 384 R F1(x)2.745 E F0(and)2.745 E F1(y)2.745 E F0 .245
-(must be of the same type.)2.745 F .244
-(When the increment is supplied, it is used as the dif)5.245 F .244
-(ference be-)-.25 F(tween each term.)108 396 Q(The def)5 E
-(ault increment is 1 or \2551 as appropriate.)-.1 E .581(Brace e)108
-412.8 R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581
-(ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582
-(haracters special to other e)-3.082 F(xpansions)-.15 E .016
-(are preserv)108 424.8 R .016(ed in the result.)-.15 F .016
-(It is strictly te)5.016 F(xtual.)-.15 E F2(Bash)5.016 E F0 .015
-(does not apply an)2.516 F 2.515(ys)-.15 G .015
-(yntactic interpretation to the con-)-2.515 F(te)108 436.8 Q
+108 710.4 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F2({)A F0
+(d,c,b)A F2(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.148(As)
+108 727.2 S .648(equence e)-3.148 F .648(xpression tak)-.15 F .649
+(es the form)-.1 F F2({)3.149 E F1(x)A F2(..)A F1(y)A F2([..)A F1(incr)A
+F2(]})A F0 3.149(,w)C(here)-3.149 E F1(x)3.149 E F0(and)3.149 E F1(y)
+3.149 E F0 .649(are either inte)3.149 F .649
+(gers or single letters, and)-.15 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(21)185.115 E 0 Cg EP
+%%Page: 22 22
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF(incr)108 84 Q F0 2.615(,a)C 2.615(no)-2.615 G .115
+(ptional increment, is an inte)-2.615 F(ger)-.15 E 5.115(.W)-.55 G .115
+(hen inte)-5.115 F .115(gers are supplied, the e)-.15 F .115
+(xpression e)-.15 F .115(xpands to each num-)-.15 F 1.013(ber between)
+108 96 R F1(x)3.513 E F0(and)3.513 E F1(y)3.513 E F0 3.513(,i)C(nclusi)
+-3.513 E -.15(ve)-.25 G 6.013(.S).15 G 1.013(upplied inte)-6.013 F 1.013
+(gers may be pre\214x)-.15 F 1.013(ed with)-.15 F F1(0)3.513 E F0 1.013
+(to force each term to ha)3.513 F 1.314 -.15(ve t)-.2 H(he).15 E .015
+(same width.)108 108 R .015(When either)5.015 F F1(x)2.515 E F0(or)2.515
+E F1(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell attempts \
+to force all generated terms to contain)-.15 F 1.13
+(the same number of digits, zero-padding where necessary)108 120 R 6.131
+(.W)-.65 G 1.131(hen letters are supplied, the e)-6.131 F 1.131
+(xpression e)-.15 F(x-)-.15 E .485(pands to each character le)108 132 R
+.485(xicographically between)-.15 F F1(x)2.985 E F0(and)2.984 E F1(y)
+2.984 E F0 2.984(,i)C(nclusi)-2.984 E -.15(ve)-.25 G 2.984(,u).15 G .484
+(sing the def)-2.984 F .484(ault C locale.)-.1 F .484(Note that)5.484 F
+(both)108 144 Q F1(x)2.966 E F0(and)2.966 E F1(y)2.966 E F0 .467
+(must be of the same type \(inte)2.966 F .467(ger or letter\).)-.15 F
+.467(When the increment is supplied, it is used as the)5.467 F(dif)108
+156 Q(ference between each term.)-.25 E(The def)5 E
+(ault increment is 1 or \2551 as appropriate.)-.1 E .582(Brace e)108
+172.8 R .582(xpansion is performed before an)-.15 F 3.082(yo)-.15 G .581
+(ther e)-3.082 F .581(xpansions, and an)-.15 F 3.081(yc)-.15 G .581
+(haracters special to other e)-3.081 F(xpansions)-.15 E .015
+(are preserv)108 184.8 R .015(ed in the result.)-.15 F .015
+(It is strictly te)5.015 F(xtual.)-.15 E/F2 10/Times-Bold@0 SF(Bash)
+5.016 E F0 .016(does not apply an)2.516 F 2.516(ys)-.15 G .016
+(yntactic interpretation to the con-)-2.516 F(te)108 196.8 Q
(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.)
--.15 E 2.501(Ac)108 453.6 S .001(orrectly-formed brace e)-2.501 F .001(\
+-.15 E 2.502(Ac)108 213.6 S .002(orrectly-formed brace e)-2.502 F .001(\
xpansion must contain unquoted opening and closing braces, and at least\
- one un-)-.15 F .458(quoted comma or a v)108 465.6 R .458
+ one un-)-.15 F .457(quoted comma or a v)108 225.6 R .458
(alid sequence e)-.25 F 2.958(xpression. An)-.15 F 2.958(yi)-.15 G .458
-(ncorrectly formed brace e)-2.958 F .457(xpansion is left unchanged.)
--.15 F(A)108 477.6 Q F2({)2.521 E F0(or)2.521 E F2(,)2.521 E F0 .021
-(may be quoted with a backslash to pre)2.521 F -.15(ve)-.25 G .022
-(nt its being considered part of a brace e).15 F 2.522(xpression. T)-.15
-F 2.522(oa)-.8 G -.2(vo)-2.722 G(id).2 E .172
-(con\215icts with parameter e)108 489.6 R .172(xpansion, the string)-.15
+(ncorrectly formed brace e)-2.958 F .458(xpansion is left unchanged.)
+-.15 F(A)108 237.6 Q F2({)2.522 E F0(or)2.522 E F2(,)2.522 E F0 .022
+(may be quoted with a backslash to pre)2.522 F -.15(ve)-.25 G .021
+(nt its being considered part of a brace e).15 F 2.521(xpression. T)-.15
+F 2.521(oa)-.8 G -.2(vo)-2.721 G(id).2 E .172
+(con\215icts with parameter e)108 249.6 R .172(xpansion, the string)-.15
F F2(${)2.672 E F0 .172(is not considered eligible for brace e)2.672 F
-.172(xpansion, and inhibits)-.15 F(brace e)108 501.6 Q
+.172(xpansion, and inhibits)-.15 F(brace e)108 261.6 Q
(xpansion until the closing)-.15 E F2(})2.5 E F0(.)A 1.476(This constru\
ct is typically used as shorthand when the common pre\214x of the strin\
-gs to be generated is)108 518.4 R(longer than in the abo)108 530.4 Q .3
+gs to be generated is)108 278.4 R(longer than in the abo)108 290.4 Q .3
-.15(ve ex)-.15 H(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144
-547.2 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 559.2 Q(cho)144
-571.2 Q(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15
-E(w_e)-.25 E(x}})-.15 E .618(Brace e)108 588 R .618
+307.2 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 319.2 Q(cho)144
+331.2 Q(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15
+E(w_e)-.25 E(x}})-.15 E .618(Brace e)108 348 R .618
(xpansion introduces a slight incompatibility with historical v)-.15 F
.618(ersions of)-.15 F F2(sh)3.118 E F0(.)A F2(sh)5.618 E F0 .618
-(does not treat open-)3.118 F .247
-(ing or closing braces specially when the)108 600 R 2.747(ya)-.15 G .247
-(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248
-(es them in the output.)-.15 F F2(Bash)5.248 E F0(remo)108 612 Q -.15
+(does not treat open-)3.118 F .248
+(ing or closing braces specially when the)108 360 R 2.748(ya)-.15 G .247
+(ppear as part of a w)-2.748 F .247(ord, and preserv)-.1 F .247
+(es them in the output.)-.15 F F2(Bash)5.247 E F0(remo)108 372 Q -.15
(ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03
(ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03
(or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F2(sh)
-3.53 E F0(as)3.53 E F1(\214le{1,2})108 624 Q F0 .514
-(appears identically in the output.)3.014 F .515(The same w)5.515 F .515
-(ord is output as)-.1 F F1 .515(\214le1 \214le2)4.925 F F0 .515(after e)
-3.035 F .515(xpansion by)-.15 F F2(bash)3.015 E F0(.)A .437
-(If strict compatibility with)108 636 R F2(sh)2.936 E F0 .436
+3.53 E F0(as)3.53 E F1(\214le{1,2})108 384 Q F0 .515
+(appears identically in the output.)3.015 F .515(The same w)5.515 F .515
+(ord is output as)-.1 F F1 .514(\214le1 \214le2)4.925 F F0 .514(after e)
+3.034 F .514(xpansion by)-.15 F F2(bash)3.014 E F0(.)A .436
+(If strict compatibility with)108 396 R F2(sh)2.936 E F0 .436
(is desired, start)2.936 F F2(bash)2.936 E F0 .436(with the)2.936 F F2
-(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436
-(xpansion with the)-.15 F F2(+B)108 648 Q F0(option to the)2.5 E F2(set)
-2.5 E F0(command \(see)2.5 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)
--.828 E F0(belo)2.25 E(w\).)-.25 E F2 -.18(Ti)87 664.8 S(lde Expansion)
-.18 E F0 1.086(If a w)108 676.8 R 1.086(ord be)-.1 F 1.086
-(gins with an unquoted tilde character \(`)-.15 F F2(~)A F0 1.087
+(+B)2.936 E F0 .436(option or disable brace e)2.936 F .437
+(xpansion with the)-.15 F F2(+B)108 408 Q F0(option to the)2.5 E F2(set)
+2.5 E F0(command \(see)2.5 E/F3 9/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09
+E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F2 -.18(Ti)87 424.8 S
+(lde Expansion).18 E F0 1.087(If a w)108 436.8 R 1.087(ord be)-.1 F
+1.087(gins with an unquoted tilde character \(`)-.15 F F2(~)A F0 1.086
('\), all of the characters preceding the \214rst unquoted)B .185(slash\
\(or all characters, if there is no unquoted slash\) are considered a)
-108 688.8 R F1(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn)
--5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\214x\
- are quoted, the characters in the tilde-pre\214x follo)108 700.8 R .726
-(wing the tilde are treated as a possible)-.25 F F1(lo)108 712.8 Q .523
-(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523
+108 448.8 R F1(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn)
+-5.185 G .185(one of the characters)-2.685 F .726(in the tilde-pre\214x\
+ are quoted, the characters in the tilde-pre\214x follo)108 460.8 R .725
+(wing the tilde are treated as a possible)-.25 F F1(lo)108 472.8 Q .522
+(gin name)-.1 F F0 5.522(.I)C 3.022(ft)-5.522 G .522
(his login name is the null string, the tilde is replaced with the v)
--3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 724.8 Q F4
-(.)A F0(If)6.735 E F3(HOME)4.735 E F0 2.236
-(is unset, the home directory of the user e)4.486 F -.15(xe)-.15 G 2.236
-(cuting the shell is substituted instead.).15 F(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(21)190.395 E 0 Cg EP
-%%Page: 22 22
+-3.022 F .523(alue of the shell parameter)-.25 F F3(HOME)108 484.8 Q/F4
+9/Times-Roman@0 SF(.)A F0(If)4.787 E F3(HOME)2.787 E F0 .287
+(is unset, the home directory of the user e)2.537 F -.15(xe)-.15 G .286
+(cuting the shell is substituted instead.).15 F(Other)5.286 E(-)-.2 E(w\
+ise, the tilde-pre\214x is replaced with the home directory associated \
+with the speci\214ed login name.)108 496.8 Q .092
+(If the tilde-pre\214x is a `~+', the v)108 513.6 R .092
+(alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092
+(replaces the tilde-pre\214x.)2.342 F .093(If the tilde-pre\214x is)
+5.093 F 3.404(a`)108 525.6 S .904(~\255', the v)-3.404 F .904
+(alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0
+.904(if it is set, is substituted.)3.154 F .903(If the characters follo)
+5.903 F .903(wing the)-.25 F .879
+(tilde in the tilde-pre\214x consist of a number)108 537.6 R F1(N)3.379
+E F0 3.379(,o)C .879(ptionally pre\214x)-3.379 F .88
+(ed by a `+' or a `\255', the tilde-pre\214x is re-)-.15 F .138(placed \
+with the corresponding element from the directory stack, as it w)108
+549.6 R .138(ould be displayed by the)-.1 F F2(dirs)2.638 E F0 -.2(bu)
+2.638 G(iltin).2 E(in)108 561.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.838(dw).1 G
+.338(ith the tilde-pre\214x as an ar)-2.838 F 2.838(gument. If)-.18 F
+.338(the characters follo)2.838 F .338
+(wing the tilde in the tilde-pre\214x consist)-.25 F
+(of a number without a leading `+' or `\255', `+' is assumed.)108 573.6
+Q(If the login name is in)108 590.4 Q -.25(va)-.4 G(lid, or the tilde e)
+.25 E(xpansion f)-.15 E(ails, the w)-.1 E(ord is unchanged.)-.1 E .167
+(Each v)108 607.2 R .167(ariable assignment is check)-.25 F .167
+(ed for unquoted tilde-pre\214x)-.1 F .167(es immediately follo)-.15 F
+.167(wing a)-.25 F F2(:)2.667 E F0 .167(or the \214rst)2.667 F F2(=)
+2.666 E F0 5.166(.I)C(n)-5.166 E .467(these cases, tilde e)108 619.2 R
+.467(xpansion is also performed.)-.15 F(Consequently)5.467 E 2.967(,o)
+-.65 G .468(ne may use \214lenames with tildes in assign-)-2.967 F
+(ments to)108 631.2 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25
+E -.855(AT)-.666 G(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)
+-.666 G(H).855 E F4(,)A F0(and the shell assigns the e)2.25 E(xpanded v)
+-.15 E(alue.)-.25 E .024(Bash also performs tilde e)108 648 R .024
+(xpansion on w)-.15 F .023(ords satisfying the conditions of v)-.1 F
+.023(ariable assignments \(as described)-.25 F(abo)108 660 Q .769 -.15
+(ve u)-.15 H(nder).15 E F3 -.666(PA)2.969 G(RAMETERS).666 E F4(\))A F0
+.469(when the)2.719 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469
+(guments to simple commands.)-.18 F .47(Bash does not do this,)5.469 F
+-.15(ex)108 672 S(cept for the).15 E F1(declar)2.5 E(ation)-.15 E F0
+(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F1
+(posix mode)2.5 E F0(.)A F2 -.1(Pa)87 688.8 S(rameter Expansion).1 E F0
+.2(The `)108 700.8 R F2($)A F0 2.7('c)C .199
+(haracter introduces parameter e)-2.7 F .199
+(xpansion, command substitution, or arithmetic e)-.15 F 2.699
+(xpansion. The)-.15 F(pa-)2.699 E .314(rameter name or symbol to be e)
+108 712.8 R .314
+(xpanded may be enclosed in braces, which are optional b)-.15 F .314
+(ut serv)-.2 F 2.814(et)-.15 G 2.814(op)-2.814 G(rotect)-2.814 E .415
+(the v)108 724.8 R .415(ariable to be e)-.25 F .415
+(xpanded from characters immediately follo)-.15 F .414
+(wing it which could be interpreted as part of)-.25 F(GNU Bash 5.2)72
+768 Q(2022 September 19)135.955 E(22)185.115 E 0 Cg EP
+%%Page: 23 23
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Otherwise, the ti\
-lde-pre\214x is replaced with the home directory associated with the sp\
-eci\214ed login name.)108 84 Q .093
-(If the tilde-pre\214x is a `~+', the v)108 100.8 R .092
-(alue of the shell v)-.25 F(ariable)-.25 E/F1 9/Times-Bold@0 SF(PWD)
-2.592 E F0 .092(replaces the tilde-pre\214x.)2.342 F .092
-(If the tilde-pre\214x is)5.092 F 3.403(a`)108 112.8 S .903
-(~\255', the v)-3.403 F .903(alue of the shell v)-.25 F(ariable)-.25 E
-F1(OLDPWD)3.404 E/F2 9/Times-Roman@0 SF(,)A F0 .904
-(if it is set, is substituted.)3.154 F .904(If the characters follo)
-5.904 F .904(wing the)-.25 F .88
-(tilde in the tilde-pre\214x consist of a number)108 124.8 R/F3 10
-/Times-Italic@0 SF(N)3.38 E F0 3.38(,o)C .88(ptionally pre\214x)-3.38 F
-.879(ed by a `+' or a `\255', the tilde-pre\214x is re-)-.15 F .138(pla\
-ced with the corresponding element from the directory stack, as it w)108
-136.8 R .138(ould be displayed by the)-.1 F/F4 10/Times-Bold@0 SF(dirs)
-2.639 E F0 -.2(bu)2.639 G(iltin).2 E(in)108 148.8 Q -.2(vo)-.4 G -.1(ke)
-.2 G 2.839(dw).1 G .338(ith the tilde-pre\214x as an ar)-2.839 F 2.838
-(gument. If)-.18 F .338(the characters follo)2.838 F .338
-(wing the tilde in the tilde-pre\214x consist)-.25 F
-(of a number without a leading `+' or `\255', `+' is assumed.)108 160.8
-Q(If the login name is in)108 177.6 Q -.25(va)-.4 G(lid, or the tilde e)
-.25 E(xpansion f)-.15 E(ails, the w)-.1 E(ord is unchanged.)-.1 E .166
-(Each v)108 194.4 R .167(ariable assignment is check)-.25 F .167
-(ed for unquoted tilde-pre\214x)-.1 F .167(es immediately follo)-.15 F
-.167(wing a)-.25 F F4(:)2.667 E F0 .167(or the \214rst)2.667 F F4(=)
-2.667 E F0 5.167(.I)C(n)-5.167 E .468(these cases, tilde e)108 206.4 R
-.468(xpansion is also performed.)-.15 F(Consequently)5.467 E 2.967(,o)
--.65 G .467(ne may use \214lenames with tildes in assign-)-2.967 F
-(ments to)108 218.4 Q F1 -.666(PA)2.5 G(TH)-.189 E F2(,)A F1(MAILP)2.25
-E -.855(AT)-.666 G(H).855 E F2(,)A F0(and)2.25 E F1(CDP)2.5 E -.855(AT)
--.666 G(H).855 E F2(,)A F0(and the shell assigns the e)2.25 E(xpanded v)
--.15 E(alue.)-.25 E .023(Bash also performs tilde e)108 235.2 R .023
-(xpansion on w)-.15 F .024(ords satisfying the conditions of v)-.1 F
-.024(ariable assignments \(as described)-.25 F(abo)108 247.2 Q .77 -.15
-(ve u)-.15 H(nder).15 E F1 -.666(PA)2.97 G(RAMETERS).666 E F2(\))A F0
-.47(when the)2.72 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469
-(guments to simple commands.)-.18 F .469(Bash does not do this,)5.469 F
--.15(ex)108 259.2 S(cept for the).15 E F3(declar)2.5 E(ation)-.15 E F0
-(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F3
-(posix mode)2.5 E F0(.)A F4 -.1(Pa)87 276 S(rameter Expansion).1 E F0
-.199(The `)108 288 R F4($)A F0 2.699('c)C .199
-(haracter introduces parameter e)-2.699 F .199
-(xpansion, command substitution, or arithmetic e)-.15 F 2.7
-(xpansion. The)-.15 F(pa-)2.7 E .314(rameter name or symbol to be e)108
-300 R .314(xpanded may be enclosed in braces, which are optional b)-.15
-F .314(ut serv)-.2 F 2.813(et)-.15 G 2.813(op)-2.813 G(rotect)-2.813 E
-.414(the v)108 312 R .414(ariable to be e)-.25 F .414
-(xpanded from characters immediately follo)-.15 F .415
-(wing it which could be interpreted as part of)-.25 F(the name.)108 324
-Q 1.19(When braces are used, the matching ending brace is the \214rst `)
-108 340.8 R F4(})A F0 3.689('n)C 1.189
-(ot escaped by a backslash or within a)-3.689 F .821
-(quoted string, and not within an embedded arithmetic e)108 352.8 R .822
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the name.)108 84 Q
+1.189(When braces are used, the matching ending brace is the \214rst `)
+108 100.8 R/F1 10/Times-Bold@0 SF(})A F0 3.69('n)C 1.19
+(ot escaped by a backslash or within a)-3.69 F .822
+(quoted string, and not within an embedded arithmetic e)108 112.8 R .821
(xpansion, command substitution, or parameter e)-.15 F(x-)-.15 E
-(pansion.)108 364.8 Q(${)108 381.6 Q F3(par)A(ameter)-.15 E F0(})A .106
-(The v)144 393.6 R .106(alue of)-.25 F F3(par)2.606 E(ameter)-.15 E F0
-.106(is substituted.)2.606 F .106(The braces are required when)5.106 F
-F3(par)3.856 E(ameter)-.15 E F0 .106(is a positional pa-)3.336 F .11
-(rameter with more than one digit, or when)144 405.6 R F3(par)3.86 E
-(ameter)-.15 E F0 .111(is follo)3.341 F .111
+(pansion.)108 124.8 Q(${)108 141.6 Q/F2 10/Times-Italic@0 SF(par)A
+(ameter)-.15 E F0(})A .106(The v)144 153.6 R .106(alue of)-.25 F F2(par)
+2.606 E(ameter)-.15 E F0 .106(is substituted.)2.606 F .106
+(The braces are required when)5.106 F F2(par)3.856 E(ameter)-.15 E F0
+.106(is a positional pa-)3.336 F .111
+(rameter with more than one digit, or when)144 165.6 R F2(par)3.861 E
+(ameter)-.15 E F0 .111(is follo)3.341 F .11
(wed by a character which is not to be)-.25 F .208
-(interpreted as part of its name.)144 417.6 R(The)5.208 E F3(par)2.708 E
+(interpreted as part of its name.)144 177.6 R(The)5.208 E F2(par)2.708 E
(ameter)-.15 E F0 .208(is a shell parameter as described abo)2.708 F
--.15(ve)-.15 G F4 -.74(PA)2.858 G(RAME-).74 E(TERS)144 429.6 Q F0 2.5
-(\)o)C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F4(Arrays)A
-F0(\).)A .346(If the \214rst character of)108 446.4 R F3(par)2.846 E
+-.15(ve)-.15 G F1 -.74(PA)2.858 G(RAME-).74 E(TERS)144 189.6 Q F0 2.5
+(\)o)C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F1(Arrays)A
+F0(\).)A .347(If the \214rst character of)108 206.4 R F2(par)2.846 E
(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F
-F4(!)A F0 .346(\), and)B F3(par)2.846 E(ameter)-.15 E F0 .346(is not a)
-2.846 F F3(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti)-2.847 G
-(ntroduces)-2.847 E 2.907(al)108 458.4 S -2.15 -.25(ev e)-2.907 H 2.907
-(lo).25 G 2.906(fi)-2.907 G(ndirection.)-2.906 E F4(Bash)5.406 E F0 .406
+F1(!)A F0 .346(\), and)B F2(par)2.846 E(ameter)-.15 E F0 .346(is not a)
+2.846 F F2(namer)2.846 E(ef)-.37 E F0 2.846(,i)C 2.846(ti)-2.846 G
+(ntroduces)-2.846 E 2.906(al)108 218.4 S -2.15 -.25(ev e)-2.906 H 2.906
+(lo).25 G 2.906(fi)-2.906 G(ndirection.)-2.906 E F1(Bash)5.406 E F0 .406
(uses the v)2.906 F .406(alue formed by e)-.25 F .406
-(xpanding the rest of)-.15 F F3(par)2.906 E(ameter)-.15 E F0 .406
-(as the ne)2.906 F(w)-.25 E F3(par)2.906 E(ame-)-.15 E(ter)108 470.4 Q
-F0 2.578(;t)C .078(his is then e)-2.578 F .078(xpanded and that v)-.15 F
-.079(alue is used in the rest of the e)-.25 F .079
-(xpansion, rather than the e)-.15 F .079(xpansion of the)-.15 F
-(original)108 482.4 Q F3(par)2.543 E(ameter)-.15 E F0 5.043(.T)C .043
-(his is kno)-5.043 F .043(wn as)-.25 F F3(indir)2.543 E .043(ect e)-.37
-F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .042
-(alue is subject to tilde e)-.25 F .042(xpansion, parameter)-.15 F -.15
-(ex)108 494.4 S .248(pansion, command substitution, and arithmetic e).15
-F 2.748(xpansion. If)-.15 F F3(par)2.749 E(ameter)-.15 E F0 .249
-(is a nameref, this e)2.749 F .249(xpands to the)-.15 F 1.51
-(name of the parameter referenced by)108 506.4 R F3(par)4.01 E(ameter)
+(xpanding the rest of)-.15 F F2(par)2.906 E(ameter)-.15 E F0 .406
+(as the ne)2.906 F(w)-.25 E F2(par)2.907 E(ame-)-.15 E(ter)108 230.4 Q
+F0 2.579(;t)C .079(his is then e)-2.579 F .079(xpanded and that v)-.15 F
+.079(alue is used in the rest of the e)-.25 F .078
+(xpansion, rather than the e)-.15 F .078(xpansion of the)-.15 F
+(original)108 242.4 Q F2(par)2.542 E(ameter)-.15 E F0 5.042(.T)C .042
+(his is kno)-5.042 F .042(wn as)-.25 F F2(indir)2.543 E .043(ect e)-.37
+F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .043
+(alue is subject to tilde e)-.25 F .043(xpansion, parameter)-.15 F -.15
+(ex)108 254.4 S .249(pansion, command substitution, and arithmetic e).15
+F 2.749(xpansion. If)-.15 F F2(par)2.749 E(ameter)-.15 E F0 .248
+(is a nameref, this e)2.749 F .248(xpands to the)-.15 F 1.51
+(name of the parameter referenced by)108 266.4 R F2(par)4.01 E(ameter)
-.15 E F0 1.51(instead of performing the complete indirect e)4.01 F
-(xpansion.)-.15 E .387(The e)108 518.4 R .387
-(xceptions to this are the e)-.15 F .387(xpansions of ${)-.15 F F4(!)A
-F3(pr)A(e\214x)-.37 E F4(*)A F0 2.887(}a)C .387(nd ${)-2.887 F F4(!)A F3
-(name)A F0([)A F3(@)A F0 .387(]} described belo)B 4.188 -.65(w. T)-.25 H
-.388(he e).65 F(xclama-)-.15 E(tion point must immediately follo)108
-530.4 Q 2.5(wt)-.25 G(he left brace in order to introduce indirection.)
--2.5 E .334(In each of the cases belo)108 547.2 R -.65(w,)-.25 G F3(wor)
+(xpansion.)-.15 E .388(The e)108 278.4 R .387
+(xceptions to this are the e)-.15 F .387(xpansions of ${)-.15 F F1(!)A
+F2(pr)A(e\214x)-.37 E F1(*)A F0 2.887(}a)C .387(nd ${)-2.887 F F1(!)A F2
+(name)A F0([)A F2(@)A F0 .387(]} described belo)B 4.187 -.65(w. T)-.25 H
+.387(he e).65 F(xclama-)-.15 E(tion point must immediately follo)108
+290.4 Q 2.5(wt)-.25 G(he left brace in order to introduce indirection.)
+-2.5 E .334(In each of the cases belo)108 307.2 R -.65(w,)-.25 G F2(wor)
3.484 E(d)-.37 E F0 .334(is subject to tilde e)2.834 F .334
(xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15
-F(and arithmetic e)108 559.2 Q(xpansion.)-.15 E .066
-(When not performing substring e)108 576 R .067
+F(and arithmetic e)108 319.2 Q(xpansion.)-.15 E .067
+(When not performing substring e)108 336 R .067
(xpansion, using the forms documented belo)-.15 F 2.567(w\()-.25 G
-(e.g.,)-2.567 E F4(:-)2.567 E F0(\),)A F4(bash)2.567 E F0 .067
-(tests for a pa-)2.567 F(rameter that is unset or null.)108 588 Q(Omitt\
+(e.g.,)-2.567 E F1(:-)2.567 E F0(\),)A F1(bash)2.567 E F0 .066
+(tests for a pa-)2.567 F(rameter that is unset or null.)108 348 Q(Omitt\
ing the colon results in a test only for a parameter that is unset.)5 E
-(${)108 604.8 Q F3(par)A(ameter)-.15 E F4<3aad>A F3(wor)A(d)-.37 E F0(})
-A F4 .723(Use Default V)144 616.8 R(alues)-.92 E F0 5.723(.I)C(f)-5.723
-E F3(par)4.473 E(ameter)-.15 E F0 .723(is unset or null, the e)3.953 F
-.722(xpansion of)-.15 F F3(wor)3.562 E(d)-.37 E F0 .722(is substituted.)
-3.992 F(Other)5.722 E(-)-.2 E(wise, the v)144 628.8 Q(alue of)-.25 E F3
-(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 640.8 Q F3
-(par)A(ameter)-.15 E F4(:=)A F3(wor)A(d)-.37 E F0(})A F4 .811
-(Assign Default V)144 652.8 R(alues)-.92 E F0 5.812(.I)C(f)-5.812 E F3
+(${)108 364.8 Q F2(par)A(ameter)-.15 E F1<3aad>A F2(wor)A(d)-.37 E F0(})
+A F1 .722(Use Default V)144 376.8 R(alues)-.92 E F0 5.722(.I)C(f)-5.722
+E F2(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F
+.723(xpansion of)-.15 F F2(wor)3.563 E(d)-.37 E F0 .723(is substituted.)
+3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 388.8 Q(alue of)-.25 E F2
+(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 400.8 Q F2
+(par)A(ameter)-.15 E F1(:=)A F2(wor)A(d)-.37 E F0(})A F1 .812
+(Assign Default V)144 412.8 R(alues)-.92 E F0 5.812(.I)C(f)-5.812 E F2
(par)4.562 E(ameter)-.15 E F0 .812(is unset or null, the e)4.042 F .812
-(xpansion of)-.15 F F3(wor)3.652 E(d)-.37 E F0 .812(is assigned to)4.082
-F F3(pa-)4.562 E -.15(ra)144 664.8 S(meter).15 E F0 5.742(.T).73 G .742
-(he v)-5.742 F .742(alue of)-.25 F F3(par)4.492 E(ameter)-.15 E F0 .742
-(is then substituted.)3.972 F .741
+(xpansion of)-.15 F F2(wor)3.652 E(d)-.37 E F0 .812(is assigned to)4.082
+F F2(pa-)4.561 E -.15(ra)144 424.8 S(meter).15 E F0 5.741(.T).73 G .741
+(he v)-5.741 F .741(alue of)-.25 F F2(par)4.491 E(ameter)-.15 E F0 .742
+(is then substituted.)3.972 F .742
(Positional parameters and special parame-)5.742 F
-(ters may not be assigned to in this w)144 676.8 Q(ay)-.1 E(.)-.65 E(${)
-108 688.8 Q F3(par)A(ameter)-.15 E F4(:?)A F3(wor)A(d)-.37 E F0(})A F4
-.535(Display Err)144 700.8 R .535(or if Null or Unset)-.18 F F0 5.535
-(.I)C(f)-5.535 E F3(par)4.285 E(ameter)-.15 E F0 .535
-(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F3(wor)3.035 E
-(d)-.37 E F0 .535(\(or a mes-)3.035 F .013(sage to that ef)144 712.8 R
-.013(fect if)-.25 F F3(wor)2.853 E(d)-.37 E F0 .013(is not present\) is\
- written to the standard error and the shell, if it is not in-)3.283 F
-(teracti)144 724.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,)
--2.65 F(the v)2.5 E(alue of)-.25 E F3(par)2.5 E(ameter)-.15 E F0
-(is substituted.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
-(22)190.395 E 0 Cg EP
-%%Page: 23 23
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10
-/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(:+)A F1
-(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 96 R .745(nate V)-.15 F
-(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E(ameter)-.15 E F0
+(ters may not be assigned to in this w)144 436.8 Q(ay)-.1 E(.)-.65 E(${)
+108 448.8 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A F1
+.535(Display Err)144 460.8 R .535(or if Null or Unset)-.18 F F0 5.535
+(.I)C(f)-5.535 E F2(par)4.285 E(ameter)-.15 E F0 .535
+(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F2(wor)3.035 E
+(d)-.37 E F0 .535(\(or a mes-)3.035 F .012(sage to that ef)144 472.8 R
+.012(fect if)-.25 F F2(wor)2.852 E(d)-.37 E F0 .013(is not present\) is\
+ written to the standard error and the shell, if it is not in-)3.282 F
+(teracti)144 484.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,)
+-2.65 F(the v)2.5 E(alue of)-.25 E F2(par)2.5 E(ameter)-.15 E F0
+(is substituted.)2.5 E(${)108 496.8 Q F2(par)A(ameter)-.15 E F1(:+)A F2
+(wor)A(d)-.37 E F0(})A F1 .745(Use Alter)144 508.8 R .745(nate V)-.15 F
+(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F2(par)4.495 E(ameter)-.15 E F0
.745(is null or unset, nothing is substituted, otherwise the e)3.975 F
-(xpan-)-.15 E(sion of)144 108 Q F1(wor)2.84 E(d)-.37 E F0
-(is substituted.)3.27 E(${)108 120 Q F1(par)A(ameter)-.15 E F2(:)A F1
-(of)A(fset)-.18 E F0(})A(${)108 132 Q F1(par)A(ameter)-.15 E F2(:)A F1
-(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .002(Substring Expansion)
-144 144 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 E
-F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E
-(ameter)-.15 E F0 .002(starting at the)2.502 F .235
-(character speci\214ed by)144 156 R F1(of)2.735 E(fset)-.18 E F0 5.235
-(.I)C(f)-5.235 E F1(par)2.735 E(ameter)-.15 E F0(is)2.735 E F2(@)2.735 E
-F0 2.735(,a)C 2.735(ni)-2.735 G(nde)-2.735 E -.15(xe)-.15 G 2.735(da).15
-G .235(rray subscripted by)-2.735 F F2(@)2.735 E F0(or)2.735 E F2(*)
-2.735 E F0 2.735(,o)C 2.735(ra)-2.735 G 2.735(na)-2.735 G(s-)-2.735 E
-(sociati)144 168 Q 1.578 -.15(ve a)-.25 H 1.278
-(rray name, the results dif).15 F 1.277(fer as described belo)-.25 F
-5.077 -.65(w. I)-.25 H(f).65 E F1(length)3.777 E F0 1.277(is omitted, e)
-3.777 F 1.277(xpands to the)-.15 F .042(substring of the v)144 180 R
-.042(alue of)-.25 F F1(par)2.542 E(ameter)-.15 E F0 .043
-(starting at the character speci\214ed by)2.542 F F1(of)2.543 E(fset)
--.18 E F0 .043(and e)2.543 F .043(xtending to the)-.15 F .847
-(end of the v)144 192 R(alue.)-.25 E F1(length)5.846 E F0(and)3.346 E F1
-(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .846
-(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .846(ARITHMETIC EV)3.346 F
-(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 204 Q(w\).)-.25 E
-(If)144 228 Q F1(of)3.028 E(fset)-.18 E F0 -.25(eva)3.029 G .529
+(xpan-)-.15 E(sion of)144 520.8 Q F2(wor)2.84 E(d)-.37 E F0
+(is substituted.)3.27 E(${)108 532.8 Q F2(par)A(ameter)-.15 E F1(:)A F2
+(of)A(fset)-.18 E F0(})A(${)108 544.8 Q F2(par)A(ameter)-.15 E F1(:)A F2
+(of)A(fset)-.18 E F1(:)A F2(length)A F0(})A F1 .002(Substring Expansion)
+144 556.8 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F2(length)2.502
+E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F2(par)2.502 E
+(ameter)-.15 E F0 .002(starting at the)2.502 F .004
+(character speci\214ed by)144 568.8 R F2(of)2.504 E(fset)-.18 E F0 5.003
+(.I)C(f)-5.003 E F2(par)2.503 E(ameter)-.15 E F0(is)2.503 E F1(@)2.503 E
+F0(or)2.503 E F1(*)2.503 E F0 2.503(,a)C 2.503(ni)-2.503 G(nde)-2.503 E
+-.15(xe)-.15 G 2.503(da).15 G .003(rray subscripted by)-2.503 F F1(@)
+2.503 E F0(or)2.503 E F1(*)2.503 E F0 2.503(,o)C 2.503(ra)-2.503 G(n)
+-2.503 E(associati)144 580.8 Q 1.022 -.15(ve a)-.25 H .722
+(rray name, the results dif).15 F .722(fer as described belo)-.25 F
+4.522 -.65(w. I)-.25 H(f).65 E F2(length)3.222 E F0 .722(is omitted, e)
+3.222 F .722(xpands to the)-.15 F .043(substring of the v)144 592.8 R
+.043(alue of)-.25 F F2(par)2.543 E(ameter)-.15 E F0 .042
+(starting at the character speci\214ed by)2.543 F F2(of)2.542 E(fset)
+-.18 E F0 .042(and e)2.542 F .042(xtending to the)-.15 F .846
+(end of the v)144 604.8 R(alue.)-.25 E F2(length)5.846 E F0(and)3.346 E
+F2(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .847
+(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV)3.347 F
+(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 616.8 Q(w\).)-.25 E
+(If)144 640.8 Q F2(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 G .529
(luates to a number less than zero, the v).25 F .529
(alue is used as an of)-.25 F .529(fset in characters from the)-.25 F
-.046(end of the v)144 240 R .046(alue of)-.25 F F1(par)2.546 E(ameter)
--.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G
+.045(end of the v)144 652.8 R .045(alue of)-.25 F F2(par)2.546 E(ameter)
+-.15 E F0 5.046(.I)C(f)-5.046 E F2(length)2.546 E F0 -.25(eva)2.546 G
.046(luates to a number less than zero, it is interpreted as an).25 F
-(of)144 252 Q .202(fset in characters from the end of the v)-.25 F .202
-(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .203
-(rather than a number of characters, and)2.702 F .558(the e)144 264 R
-.558(xpansion is the characters between)-.15 F F1(of)3.058 E(fset)-.18 E
-F0 .558(and that result.)3.058 F .557(Note that a ne)5.557 F -.05(ga)
--.15 G(ti).05 E .857 -.15(ve o)-.25 H -.25(ff).15 G .557(set must be).25
-F(separated from the colon by at least one space to a)144 276 Q -.2(vo)
--.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G
-(pansion.).15 E(If)144 300 Q F1(par)2.958 E(ameter)-.15 E F0(is)2.958 E
-F2(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F1(length)2.959 E
-F0 .459(positional parameters be)2.959 F .459(ginning at)-.15 F F1(of)
-2.959 E(fset)-.18 E F0 5.459(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15
-(ve)-.25 G F1(of)3.109 E(fset)-.18 E F0 .6(is tak)144 312 R .6
-(en relati)-.1 F .9 -.15(ve t)-.25 H 3.1(oo).15 G .6
-(ne greater than the greatest positional parameter)-3.1 F 3.1(,s)-.4 G
-3.1(oa)-3.1 G 3.1(no)-3.1 G -.25(ff)-3.1 G .6(set of \2551 e).25 F -.25
-(va)-.25 G(luates).25 E .639(to the last positional parameter)144 324 R
-5.639(.I)-.55 G 3.139(ti)-5.639 G 3.139(sa)-3.139 G 3.139(ne)-3.139 G
-.639(xpansion error if)-3.289 F F1(length)3.14 E F0 -.25(eva)3.14 G .64
-(luates to a number less than).25 F(zero.)144 336 Q(If)144 360 Q F1(par)
-3.014 E(ameter)-.15 E F0 .514(is an inde)3.014 F -.15(xe)-.15 G 3.014
+(of)144 664.8 Q .203(fset in characters from the end of the v)-.25 F
+.202(alue of)-.25 F F2(par)2.702 E(ameter)-.15 E F0 .202
+(rather than a number of characters, and)2.702 F .557(the e)144 676.8 R
+.557(xpansion is the characters between)-.15 F F2(of)3.057 E(fset)-.18 E
+F0 .557(and that result.)3.057 F .558(Note that a ne)5.558 F -.05(ga)
+-.15 G(ti).05 E .858 -.15(ve o)-.25 H -.25(ff).15 G .558(set must be).25
+F(separated from the colon by at least one space to a)144 688.8 Q -.2
+(vo)-.2 G(id being confused with the).2 E F1(:-)2.5 E F0 -.15(ex)2.5 G
+(pansion.).15 E(If)144 712.8 Q F2(par)3.284 E(ameter)-.15 E F0(is)3.284
+E F1(@)3.284 E F0(or)3.284 E F1(*)3.284 E F0 3.284(,t)C .784
+(he result is)-3.284 F F2(length)3.284 E F0 .784
+(positional parameters be)3.284 F .783(ginning at)-.15 F F2(of)3.283 E
+(fset)-.18 E F0 5.783(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15(ve)
+-.25 G F2(of)144 724.8 Q(fset)-.18 E F0 1.551(is tak)4.051 F 1.551
+(en relati)-.1 F 1.851 -.15(ve t)-.25 H 4.051(oo).15 G 1.551
+(ne greater than the greatest positional parameter)-4.051 F 4.051(,s)-.4
+G 4.052(oa)-4.051 G 4.052(no)-4.052 G -.25(ff)-4.052 G 1.552
+(set of \2551).25 F(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E
+(23)185.115 E 0 Cg EP
+%%Page: 24 24
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(eva)144 84 S
+.555(luates to the last positional parameter).25 F 5.555(.I)-.55 G 3.055
+(ti)-5.555 G 3.055(sa)-3.055 G 3.055(ne)-3.055 G .555(xpansion error if)
+-3.205 F/F1 10/Times-Italic@0 SF(length)3.055 E F0 -.25(eva)3.055 G .555
+(luates to a number).25 F(less than zero.)144 96 Q(If)144 120 Q F1(par)
+3.013 E(ameter)-.15 E F0 .514(is an inde)3.013 F -.15(xe)-.15 G 3.014
(da).15 G .514(rray name subscripted by @ or *, the result is the)-3.014
-F F1(length)3.014 E F0 .513(members of)3.013 F 1.081(the array be)144
-372 R 1.081(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A
-(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga)-.15 G(ti).05 E -.15
-(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.082(is tak)3.582 F 1.082
-(en relati)-.1 F 1.382 -.15(ve t)-.25 H 3.582(oo).15 G 1.082(ne greater)
--3.582 F 1.08(than the maximum inde)144 384 R 3.58(xo)-.15 G 3.58(ft)
--3.58 G 1.08(he speci\214ed array)-3.58 F 6.079(.I)-.65 G 3.579(ti)
--6.079 G 3.579(sa)-3.579 G 3.579(ne)-3.579 G 1.079(xpansion error if)
--3.729 F F1(length)3.579 E F0 -.25(eva)3.579 G 1.079(luates to a).25 F
-(number less than zero.)144 396 Q(Substring e)144 420 Q
+F F1(length)3.014 E F0 .514(members of)3.014 F 1.082(the array be)144
+132 R 1.082(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A
+(fset)-.18 E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)-.15 G(ti).05 E -.15
+(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.081(is tak)3.581 F 1.081
+(en relati)-.1 F 1.381 -.15(ve t)-.25 H 3.581(oo).15 G 1.081(ne greater)
+-3.581 F 1.079(than the maximum inde)144 144 R 3.579(xo)-.15 G 3.579(ft)
+-3.579 G 1.079(he speci\214ed array)-3.579 F 6.079(.I)-.65 G 3.579(ti)
+-6.079 G 3.579(sa)-3.579 G 3.58(ne)-3.579 G 1.08(xpansion error if)-3.73
+F F1(length)3.58 E F0 -.25(eva)3.58 G 1.08(luates to a).25 F
+(number less than zero.)144 156 Q(Substring e)144 180 Q
(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H
-(rray produces unde\214ned results.).15 E .82(Substring inde)144 444 R
+(rray produces unde\214ned results.).15 E .821(Substring inde)144 204 R
.821(xing is zero-based unless the positional parameters are used, in w\
-hich case the in-)-.15 F(de)144 456 Q .159(xing starts at 1 by def)-.15
+hich case the in-)-.15 F(de)144 216 Q .159(xing starts at 1 by def)-.15
F 2.659(ault. If)-.1 F F1(of)2.659 E(fset)-.18 E F0 .159
-(is 0, and the positional parameters are used,)2.659 F F2($0)2.659 E F0
-.159(is pre\214x)2.659 F .158(ed to)-.15 F(the list.)144 468 Q(${)108
-484.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A F0(})A(${)108 496.8 Q F2(!)A
-F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 .084(Names matching pr)144 508.8
-R(e\214x)-.18 E F0 5.084(.E)C .084(xpands to the names of v)-5.084 F
-.084(ariables whose names be)-.25 F .085(gin with)-.15 F F1(pr)2.585 E
-(e\214x)-.37 E F0 2.585(,s)C(epa-)-2.585 E .258
-(rated by the \214rst character of the)144 520.8 R F3(IFS)2.758 E F0
-.257(special v)2.507 F 2.757(ariable. When)-.25 F F1(@)2.757 E F0 .257
-(is used and the e)2.757 F .257(xpansion appears)-.15 F
-(within double quotes, each v)144 532.8 Q(ariable name e)-.25 E
-(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 549.6 Q F2(!)A F1(name)
-A F0([)A F1(@)A F0(]})A(${)108 561.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0
-(]})A F2 1.136(List of array k)144 573.6 R(eys)-.1 E F0 6.136(.I)C(f)
--6.136 E F1(name)3.636 E F0 1.136(is an array v)3.636 F 1.136
-(ariable, e)-.25 F 1.136(xpands to the list of array indices \(k)-.15 F
--.15(ey)-.1 G 1.137(s\) as-).15 F .397(signed in)144 585.6 R F1(name)
-2.897 E F0 5.397(.I)C(f)-5.397 E F1(name)2.897 E F0 .397
-(is not an array)2.897 F 2.897(,e)-.65 G .397(xpands to 0 if)-3.047 F F1
-(name)2.897 E F0 .397(is set and null otherwise.)2.897 F(When)5.397 E F1
-(@)2.897 E F0(is used and the e)144 597.6 Q
+(is 0, and the positional parameters are used,)2.659 F/F2 10
+/Times-Bold@0 SF($0)2.659 E F0 .159(is pre\214x)2.659 F .159(ed to)-.15
+F(the list.)144 228 Q(${)108 244.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A
+F0(})A(${)108 256.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 .085
+(Names matching pr)144 268.8 R(e\214x)-.18 E F0 5.085(.E)C .084
+(xpands to the names of v)-5.085 F .084(ariables whose names be)-.25 F
+.084(gin with)-.15 F F1(pr)2.584 E(e\214x)-.37 E F0 2.584(,s)C(epa-)
+-2.584 E .257(rated by the \214rst character of the)144 280.8 R/F3 9
+/Times-Bold@0 SF(IFS)2.757 E F0 .257(special v)2.507 F 2.757
+(ariable. When)-.25 F F1(@)2.758 E F0 .258(is used and the e)2.758 F
+.258(xpansion appears)-.15 F(within double quotes, each v)144 292.8 Q
+(ariable name e)-.25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${)108
+309.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 321.6 Q F2(!)A F1
+(name)A F0([)A F1(*)A F0(]})A F2 1.137(List of array k)144 333.6 R(eys)
+-.1 E F0 6.136(.I)C(f)-6.136 E F1(name)3.636 E F0 1.136(is an array v)
+3.636 F 1.136(ariable, e)-.25 F 1.136
+(xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G 1.136
+(s\) as-).15 F .397(signed in)144 345.6 R F1(name)2.897 E F0 5.397(.I)C
+(f)-5.397 E F1(name)2.897 E F0 .397(is not an array)2.897 F 2.897(,e)
+-.65 G .397(xpands to 0 if)-3.047 F F1(name)2.897 E F0 .397
+(is set and null otherwise.)2.897 F(When)5.397 E F1(@)2.897 E F0
+(is used and the e)144 357.6 Q
(xpansion appears within double quotes, each k)-.15 E .3 -.15(ey ex)-.1
-H(pands to a separate w).15 E(ord.)-.1 E(${)108 614.4 Q F2(#)A F1(par)A
-(ameter)-.15 E F0(})A F2 -.1(Pa)144 626.4 S .47(rameter length).1 F F0
-5.47(.T)C .471(he length in characters of the v)-5.47 F .471(alue of)
--.25 F F1(par)2.971 E(ameter)-.15 E F0 .471(is substituted.)2.971 F(If)
-5.471 E F1(par)4.221 E(ame-)-.15 E(ter)144 638.4 Q F0(is)3.627 E F2(*)
-2.897 E F0(or)2.897 E F2(@)2.897 E F0 2.897(,t)C .397(he v)-2.897 F .397
+H(pands to a separate w).15 E(ord.)-.1 E(${)108 374.4 Q F2(#)A F1(par)A
+(ameter)-.15 E F0(})A F2 -.1(Pa)144 386.4 S .471(rameter length).1 F F0
+5.471(.T)C .471(he length in characters of the v)-5.471 F .471(alue of)
+-.25 F F1(par)2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If)
+5.47 E F1(par)4.22 E(ame-)-.15 E(ter)144 398.4 Q F0(is)3.626 E F2(*)
+2.896 E F0(or)2.896 E F2(@)2.896 E F0 2.896(,t)C .396(he v)-2.896 F .397
(alue substituted is the number of positional parameters.)-.25 F(If)
-5.396 E F1(par)4.146 E(ameter)-.15 E F0 .396(is an ar)3.626 F(-)-.2 E
-.78(ray name subscripted by)144 650.4 R F2(*)3.28 E F0(or)3.28 E F2(@)
-3.28 E F0 3.28(,t)C .78(he v)-3.28 F .781
-(alue substituted is the number of elements in the array)-.25 F 5.781
-(.I)-.65 G(f)-5.781 E F1(par)145.25 662.4 Q(ameter)-.15 E F0 .456
-(is an inde)3.686 F -.15(xe)-.15 G 2.956(da).15 G .456
-(rray name subscripted by a ne)-2.956 F -.05(ga)-.15 G(ti).05 E .756
--.15(ve n)-.25 H(umber).15 E 2.955(,t)-.4 G .455
-(hat number is interpreted)-2.955 F .972(as relati)144 674.4 R 1.272
--.15(ve t)-.25 H 3.472(oo).15 G .973(ne greater than the maximum inde)
--3.472 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0
-3.473(,s)C 3.473(on)-3.473 G -2.25 -.15(eg a)-3.473 H(ti).15 E 1.273
--.15(ve i)-.25 H .973(ndices count back).15 F(from the end of the array)
-144 686.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5
-G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 703.2 Q F1
-(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(GNU Bash 5.1)72 768
-Q(2020 October 29)141.235 E(23)190.395 E 0 Cg EP
-%%Page: 24 24
+5.397 E F1(par)4.147 E(ameter)-.15 E F0 .397(is an ar)3.627 F(-)-.2 E
+.781(ray name subscripted by)144 410.4 R F2(*)3.281 E F0(or)3.281 E F2
+(@)3.281 E F0 3.281(,t)C .781(he v)-3.281 F .78
+(alue substituted is the number of elements in the array)-.25 F 5.78(.I)
+-.65 G(f)-5.78 E F1(par)145.25 422.4 Q(ameter)-.15 E F0 .455(is an inde)
+3.685 F -.15(xe)-.15 G 2.955(da).15 G .456
+(rray name subscripted by a ne)-2.955 F -.05(ga)-.15 G(ti).05 E .756
+-.15(ve n)-.25 H(umber).15 E 2.956(,t)-.4 G .456
+(hat number is interpreted)-2.956 F .973(as relati)144 434.4 R 1.273
+-.15(ve t)-.25 H 3.473(oo).15 G .973(ne greater than the maximum inde)
+-3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0
+3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272
+-.15(ve i)-.25 H .972(ndices count back).15 F(from the end of the array)
+144 446.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5
+G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 463.2 Q F1
+(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 475.2 Q F1
+(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 487.2
+Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196(e\214x patter)-.18 F
+(n)-.15 E F0 6.196(.T)C(he)-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196
+(is e)4.466 F 1.196(xpanded to produce a pattern just as in path-)-.15 F
+.544(name e)144 499.2 R .544(xpansion, and matched ag)-.15 F .544
+(ainst the e)-.05 F .544(xpanded v)-.15 F .544(alue of)-.25 F F1(par)
+4.294 E(ameter)-.15 E F0 .543(using the rules described)3.774 F(under)
+144 511.2 Q F2 -.1(Pa)3.132 G(tter).1 E 3.132(nM)-.15 G(atching)-3.132 E
+F0(belo)3.132 E 4.432 -.65(w. I)-.25 H 3.132(ft).65 G .632
+(he pattern matches the be)-3.132 F .632(ginning of the v)-.15 F .633
+(alue of)-.25 F F1(par)4.383 E(ameter)-.15 E F0(,).73 E 1.152
+(then the result of the e)144 523.2 R 1.151(xpansion is the e)-.15 F
+1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1(par)4.901 E(ameter)-.15 E
+F0 1.151(with the shortest matching)4.381 F .183(pattern \(the `)144
+535.2 R(`)-.74 E F2(#)A F0 1.663 -.74('' c)D .184
+(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(##)A F0
+1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.184 E F1(par)3.934 E
+(ameter)-.15 E F0(is)3.414 E F2(@)2.684 E F0(or)144 547.2 Q F2(*)3.019 E
+F0 3.019(,t)C .518(he pattern remo)-3.019 F -.25(va)-.15 G 3.018(lo).25
+G .518
+(peration is applied to each positional parameter in turn, and the e)
+-3.018 F(xpan-)-.15 E .303(sion is the resultant list.)144 559.2 R(If)
+5.303 E F1(par)4.053 E(ameter)-.15 E F0 .303(is an array v)3.533 F .303
+(ariable subscripted with)-.25 F F2(@)2.804 E F0(or)2.804 E F2(*)2.804 E
+F0 2.804(,t)C .304(he pattern re-)-2.804 F(mo)144 571.2 Q -.25(va)-.15 G
+2.988(lo).25 G .487
+(peration is applied to each member of the array in turn, and the e)
+-2.988 F .487(xpansion is the resultant)-.15 F(list.)144 583.2 Q(${)108
+600 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 612
+Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144
+624 Q .346 -.1(ve m)-.1 H .146(atching suf\214x patter).1 F(n)-.15 E F0
+5.146(.T)C(he)-5.146 E F1(wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147
+(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 636
+S .459(pansion, and matched ag).15 F .459(ainst the e)-.05 F .459
+(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.208 E(ameter)-.15 E F0
+.458(using the rules described under)3.688 F F2 -.1(Pa)144 648 S(tter).1
+E 3.314(nM)-.15 G(atching)-3.314 E F0(belo)3.314 E 4.614 -.65(w. I)-.25
+H 3.314(ft).65 G .814(he pattern matches a trailing portion of the e)
+-3.314 F .814(xpanded v)-.15 F .814(alue of)-.25 F F1(pa-)4.564 E -.15
+(ra)144 660 S(meter).15 E F0 3.817(,t).73 G 1.317
+(hen the result of the e)-3.817 F 1.317(xpansion is the e)-.15 F 1.317
+(xpanded v)-.15 F 1.316(alue of)-.25 F F1(par)5.066 E(ameter)-.15 E F0
+1.316(with the shortest)4.546 F 1.084(matching pattern \(the `)144 672 R
+(`)-.74 E F2(%)A F0 2.564 -.74('' c)D 1.084
+(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(%%)A F0
+2.565 -.74('' c)D 1.085(ase\) deleted.).74 F(If)6.085 E F1(par)145.25
+684 Q(ameter)-.15 E F0(is)3.39 E F2(@)2.66 E F0(or)2.66 E F2(*)2.66 E F0
+2.66(,t)C .16(he pattern remo)-2.66 F -.25(va)-.15 G 2.659(lo).25 G .159
+(peration is applied to each positional parameter in turn,)-2.659 F .509
+(and the e)144 696 R .509(xpansion is the resultant list.)-.15 F(If)
+5.509 E F1(par)4.259 E(ameter)-.15 E F0 .51(is an array v)3.739 F .51
+(ariable subscripted with)-.25 F F2(@)3.01 E F0(or)3.01 E F2(*)3.01 E F0
+(,)A .423(the pattern remo)144 708 R -.25(va)-.15 G 2.923(lo).25 G .422
+(peration is applied to each member of the array in turn, and the e)
+-2.923 F .422(xpansion is)-.15 F(the resultant list.)144 720 Q
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(24)185.115 E 0 Cg EP
+%%Page: 25 25
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10
-/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(##)A F1
-(wor)A(d)-.37 E F0(})A F2(Remo)144 96 Q 1.396 -.1(ve m)-.1 H 1.196
-(atching pr).1 F 1.196(e\214x patter)-.18 F(n)-.15 E F0 6.196(.T)C(he)
--6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196(is e)4.466 F 1.196
-(xpanded to produce a pattern just as in path-)-.15 F .543(name e)144
-108 R .544(xpansion, and matched ag)-.15 F .544(ainst the e)-.05 F .544
-(xpanded v)-.15 F .544(alue of)-.25 F F1(par)4.294 E(ameter)-.15 E F0
-.544(using the rules described)3.774 F(under)144 120 Q F2 -.1(Pa)3.133 G
-(tter).1 E 3.133(nM)-.15 G(atching)-3.133 E F0(belo)3.132 E 4.432 -.65
-(w. I)-.25 H 3.132(ft).65 G .632(he pattern matches the be)-3.132 F .632
-(ginning of the v)-.15 F .632(alue of)-.25 F F1(par)4.382 E(ameter)-.15
-E F0(,).73 E 1.151(then the result of the e)144 132 R 1.151
-(xpansion is the e)-.15 F 1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1
-(par)4.902 E(ameter)-.15 E F0 1.152(with the shortest matching)4.382 F
-.184(pattern \(the `)144 144 R(`)-.74 E F2(#)A F0 1.664 -.74('' c)D .184
-(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(##)A F0
-1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.183 E F1(par)3.933 E
-(ameter)-.15 E F0(is)3.413 E F2(@)2.683 E F0(or)144 156 Q F2(*)3.018 E
-F0 3.018(,t)C .518(he pattern remo)-3.018 F -.25(va)-.15 G 3.018(lo).25
-G .518
-(peration is applied to each positional parameter in turn, and the e)
--3.018 F(xpan-)-.15 E .304(sion is the resultant list.)144 168 R(If)
-5.304 E F1(par)4.054 E(ameter)-.15 E F0 .303(is an array v)3.533 F .303
-(ariable subscripted with)-.25 F F2(@)2.803 E F0(or)2.803 E F2(*)2.803 E
-F0 2.803(,t)C .303(he pattern re-)-2.803 F(mo)144 180 Q -.25(va)-.15 G
-2.987(lo).25 G .487
-(peration is applied to each member of the array in turn, and the e)
--2.987 F .487(xpansion is the resultant)-.15 F(list.)144 192 Q(${)108
-208.8 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108
-220.8 Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)
-144 232.8 Q .347 -.1(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15
-E F0 5.147(.T)C(he)-5.147 E F1(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F
-.146(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144
-244.8 S .458(pansion, and matched ag).15 F .458(ainst the e)-.05 F .458
-(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.209 E(ameter)-.15 E F0
-.459(using the rules described under)3.689 F F2 -.1(Pa)144 256.8 S(tter)
-.1 E 3.314(nM)-.15 G(atching)-3.314 E F0(belo)3.314 E 4.614 -.65(w. I)
--.25 H 3.314(ft).65 G .814
-(he pattern matches a trailing portion of the e)-3.314 F .814(xpanded v)
--.15 F .814(alue of)-.25 F F1(pa-)4.564 E -.15(ra)144 268.8 S(meter).15
-E F0 3.816(,t).73 G 1.316(hen the result of the e)-3.816 F 1.317
-(xpansion is the e)-.15 F 1.317(xpanded v)-.15 F 1.317(alue of)-.25 F F1
-(par)5.067 E(ameter)-.15 E F0 1.317(with the shortest)4.547 F 1.085
-(matching pattern \(the `)144 280.8 R(`)-.74 E F2(%)A F0 2.565 -.74
-('' c)D 1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74
-E F2(%%)A F0 2.564 -.74('' c)D 1.084(ase\) deleted.).74 F(If)6.084 E F1
-(par)145.25 292.8 Q(ameter)-.15 E F0(is)3.389 E F2(@)2.659 E F0(or)2.659
-E F2(*)2.659 E F0 2.659(,t)C .159(he pattern remo)-2.659 F -.25(va)-.15
-G 2.659(lo).25 G .16
-(peration is applied to each positional parameter in turn,)-2.659 F .51
-(and the e)144 304.8 R .51(xpansion is the resultant list.)-.15 F(If)
-5.51 E F1(par)4.259 E(ameter)-.15 E F0 .509(is an array v)3.739 F .509
-(ariable subscripted with)-.25 F F2(@)3.009 E F0(or)3.009 E F2(*)3.009 E
-F0(,)A .422(the pattern remo)144 316.8 R -.25(va)-.15 G 2.922(lo).25 G
-.422(peration is applied to each member of the array in turn, and the e)
--2.922 F .423(xpansion is)-.15 F(the resultant list.)144 328.8 Q(${)108
-345.6 Q F1(par)A(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0
-(})A F2 -.1(Pa)144 357.6 S(tter).1 E 3.607(ns)-.15 G(ubstitution)-3.607
-E F0 6.107(.T)C(he)-6.107 E F1(pattern)3.607 E F0 1.107(is e)3.607 F
-1.106(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)
--.15 E(sion,)144 369.6 Q F1 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2
-(is e)3.7 F 1.2(xpanded and the longest match of)-.15 F F1(pattern)3.7 E
-F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F1
-(string)144 381.6 Q F0 5.397(.T)C .397
-(he match is performed using the rules described under)-5.397 F F2 -.1
-(Pa)2.896 G(tter).1 E 2.896(nM)-.15 G(atching)-2.896 E F0(belo)2.896 E
-4.196 -.65(w. I)-.25 H(f).65 E F1(pat-)2.896 E(tern)144 393.6 Q F0(be)
-2.569 E .069(gins with)-.15 F F2(/)2.569 E F0 2.569(,a)C .069
-(ll matches of)-2.569 F F1(pattern)2.569 E F0 .069(are replaced with)
-2.569 F F1(string)2.57 E F0 5.07(.N)C .07
-(ormally only the \214rst match is)-5.07 F 2.58(replaced. If)144 405.6 R
-F1(pattern)2.58 E F0(be)2.58 E .08(gins with)-.15 F F2(#)2.58 E F0 2.58
-(,i)C 2.58(tm)-2.58 G .079(ust match at the be)-2.58 F .079
-(ginning of the e)-.15 F .079(xpanded v)-.15 F .079(alue of)-.25 F F1
-(par)2.579 E(am-)-.15 E(eter)144 417.6 Q F0 5.761(.I)C(f)-5.761 E F1
-(pattern)3.261 E F0(be)3.261 E .761(gins with)-.15 F F2(%)3.261 E F0
-3.261(,i)C 3.261(tm)-3.261 G .761(ust match at the end of the e)-3.261 F
-.761(xpanded v)-.15 F .761(alue of)-.25 F F1(par)3.262 E(ameter)-.15 E
-F0 5.762(.I)C(f)-5.762 E F1(string)144 429.6 Q F0 .958
-(is null, matches of)3.458 F F1(pattern)3.458 E F0 .958
-(are deleted and the)3.458 F F2(/)3.458 E F0(follo)3.458 E(wing)-.25 E
-F1(pattern)3.457 E F0 .957(may be omitted.)3.457 F .957(If the)5.957 F
-F2(nocasematch)144 441.6 Q F0 .492
-(shell option is enabled, the match is performed without re)2.992 F -.05
-(ga)-.15 G .492(rd to the case of alpha-).05 F .884(betic characters.)
-144 453.6 R(If)5.884 E F1(par)4.634 E(ameter)-.15 E F0(is)4.114 E F2(@)
-3.384 E F0(or)3.383 E F2(*)3.383 E F0 3.383(,t)C .883
-(he substitution operation is applied to each positional)-3.383 F 1.002
-(parameter in turn, and the e)144 465.6 R 1.002
-(xpansion is the resultant list.)-.15 F(If)6.002 E F1(par)4.752 E
-(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.002(ariable sub-)-.25 F
-.159(scripted with)144 477.6 R F2(@)2.659 E F0(or)2.659 E F2(*)2.659 E
-F0 2.659(,t)C .159(he substitution operation is applied to each member \
-of the array in turn, and)-2.659 F(the e)144 489.6 Q
-(xpansion is the resultant list.)-.15 E(${)108 506.4 Q F1(par)A(ameter)
--.15 E F2(^)A F1(pattern)A F0(})A(${)108 518.4 Q F1(par)A(ameter)-.15 E
-F2(^^)A F1(pattern)A F0(})A(${)108 530.4 Q F1(par)A(ameter)-.15 E F2(,)A
-F1(pattern)A F0(})A(${)108 542.4 Q F1(par)A(ameter)-.15 E F2(,,)A F1
-(pattern)A F0(})A F2 .437(Case modi\214cation)144 554.4 R F0 5.437(.T)C
-.437(his e)-5.437 F .438
+/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(/)A F1
+(pattern)A F2(/)A F1(string)A F0(})A(${)108 96 Q F1(par)A(ameter)-.15 E
+F2(//)A F1(pattern)A F2(/)A F1(string)A F0(})A(${)108 108 Q F1(par)A
+(ameter)-.15 E F2(/#)A F1(pattern)A F2(/)A F1(string)A F0(})A(${)108 120
+Q F1(par)A(ameter)-.15 E F2(/%)A F1(pattern)A F2(/)A F1(string)A F0(})A
+F2 -.1(Pa)144 132 S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 E F0
+6.106(.T)C(he)-6.106 E F1(pattern)3.606 E F0 1.106(is e)3.606 F 1.107
+(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E
+(sion.)144 144 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034
+(is e)3.534 F 1.033(xpanded and the longest match of)-.15 F F1(pattern)
+3.533 E F0(ag)3.533 E 1.033(ainst its v)-.05 F 1.033
+(alue is replaced with)-.25 F F1(string)144 156 Q F0(.)A F1(string)5.499
+E F0(under)2.999 E .499(goes tilde e)-.18 F .499
+(xpansion, parameter and v)-.15 F .499(ariable e)-.25 F .499
+(xpansion, arithmetic e)-.15 F(xpansion,)-.15 E 1.137
+(command and process substitution, and quote remo)144 168 R -.25(va)-.15
+G 3.637(l. The).25 F 1.137(match is performed using the rules)3.637 F
+.075(described under)144 180 R F2 -.1(Pa)2.575 G(tter).1 E 2.575(nM)-.15
+G(atching)-2.575 E F0(belo)2.575 E 3.875 -.65(w. I)-.25 H 2.575(nt).65 G
+.075(he \214rst form abo)-2.575 F -.15(ve)-.15 G 2.575(,o).15 G .076
+(nly the \214rst match is replaced.)-2.575 F .48(If there are tw)144 192
+R 2.98(os)-.1 G .48(lashes separating)-2.98 F F1(par)2.98 E(ameter)-.15
+E F0(and)2.98 E F1(pattern)2.98 E F0 .48(\(the second form abo)2.98 F
+-.15(ve)-.15 G .48(\), all matches of).15 F F1(pattern)144 204 Q F0 .374
+(are replaced with)2.874 F F1(string)2.874 E F0 5.374(.I)C(f)-5.374 E F1
+(pattern)2.874 E F0 .374(is preceded by)2.874 F F2(#)2.874 E F0 .374
+(\(the third form abo)2.874 F -.15(ve)-.15 G .375(\), it must match).15
+F .089(at the be)144 216 R .089(ginning of the e)-.15 F .088(xpanded v)
+-.15 F .088(alue of)-.25 F F1(par)2.588 E(ameter)-.15 E F0 5.088(.I)C(f)
+-5.088 E F1(pattern)2.588 E F0 .088(is preceded by)2.588 F F2(%)2.588 E
+F0 .088(\(the fourth form)2.588 F(abo)144 228 Q -.15(ve)-.15 G .315
+(\), it must match at the end of the e).15 F .315(xpanded v)-.15 F .315
+(alue of)-.25 F F1(par)2.815 E(ameter)-.15 E F0 5.315(.I)C 2.815(ft)
+-5.315 G .315(he e)-2.815 F .315(xpansion of)-.15 F F1(string)2.815 E F0
+(is)2.815 E .399(null, matches of)144 240 R F1(pattern)2.899 E F0 .399
+(are deleted.)2.899 F(If)5.399 E F1(string)2.898 E F0 .398
+(is null, matches of)2.898 F F1(pattern)2.898 E F0 .398
+(are deleted and the)2.898 F F2(/)2.898 E F0(fol-)2.898 E(lo)144 252 Q
+(wing)-.25 E F1(pattern)2.5 E F0(may be omitted.)2.5 E .95(If the)144
+276 R F2(patsub_r)3.45 E(eplacement)-.18 E F0 .95
+(shell option is enabled using)3.45 F F2(shopt)3.45 E F0 3.45(,a)C 1.25
+-.15(ny u)-3.45 H .95(nquoted instances of).15 F F2(&)3.45 E F0(in)3.45
+E F1(string)144 288 Q F0(are replaced with the matching portion of)2.5 E
+F1(pattern)2.5 E F0(.)A .75(Quoting an)144 312 R 3.25(yp)-.15 G .75
+(art of)-3.25 F F1(string)3.25 E F0 .749(inhibits replacement in the e)
+3.249 F .749(xpansion of the quoted portion, including)-.15 F .767
+(replacement strings stored in shell v)144 324 R 3.267
+(ariables. Backslash)-.25 F .767(will escape)3.267 F F2(&)3.267 E F0(in)
+3.267 E F1(string)3.267 E F0 3.267(;t)C .768(he backslash is)-3.267 F
+(remo)144 336 Q -.15(ve)-.15 G 2.669(di).15 G 2.669(no)-2.669 G .169
+(rder to permit a literal)-2.669 F F2(&)2.669 E F0 .169
+(in the replacement string.)2.669 F .169
+(Backslash can also be used to es-)5.169 F 1.428(cape a backslash;)144
+348 R F2(\\\\)3.928 E F0 1.428
+(results in a literal backslash in the replacement.)3.928 F 1.428
+(Users should tak)6.428 F 3.929(ec)-.1 G 1.429(are if)-3.929 F F1
+(string)144 360 Q F0 .292(is double-quoted to a)2.792 F -.2(vo)-.2 G
+.292(id unw).2 F .292
+(anted interactions between the backslash and double-quoting,)-.1 F .053
+(since backslash has special meaning within double quotes.)144 372 R
+-.15(Pa)5.053 G .054(ttern substitution performs the check).15 F .07
+(for unquoted)144 384 R F2(&)2.57 E F0 .07(after e)2.57 F(xpanding)-.15
+E F1(string)2.569 E F0 2.569(;s)C .069(hell programmers should quote an)
+-2.569 F 2.569(yo)-.15 G .069(ccurrences of)-2.569 F F2(&)2.569 E F0
+(the)2.569 E(y)-.15 E -.1(wa)144 396 S 1.112(nt to be tak).1 F 1.112
+(en literally in the replacement and ensure an)-.1 F 3.612(yi)-.15 G
+1.112(nstances of)-3.612 F F2(&)3.612 E F0(the)3.612 E 3.613(yw)-.15 G
+1.113(ant to be re-)-3.713 F(placed are unquoted.)144 408 Q .687(If the)
+144 432 R F2(nocasematch)3.187 E F0 .687
+(shell option is enabled, the match is performed without re)3.187 F -.05
+(ga)-.15 G .687(rd to the case of).05 F .736(alphabetic characters.)144
+444 R(If)5.736 E F1(par)4.486 E(ameter)-.15 E F0(is)3.966 E F2(@)3.236 E
+F0(or)3.236 E F2(*)3.236 E F0 3.236(,t)C .736
+(he substitution operation is applied to each posi-)-3.236 F .655
+(tional parameter in turn, and the e)144 456 R .654
+(xpansion is the resultant list.)-.15 F(If)5.654 E F1(par)4.404 E
+(ameter)-.15 E F0 .654(is an array v)3.884 F(ariable)-.25 E .347
+(subscripted with)144 468 R F2(@)2.847 E F0(or)2.847 E F2(*)2.847 E F0
+2.847(,t)C .348(he substitution operation is applied to each member of \
+the array in turn,)-2.847 F(and the e)144 480 Q
+(xpansion is the resultant list.)-.15 E(${)108 496.8 Q F1(par)A(ameter)
+-.15 E F2(^)A F1(pattern)A F0(})A(${)108 508.8 Q F1(par)A(ameter)-.15 E
+F2(^^)A F1(pattern)A F0(})A(${)108 520.8 Q F1(par)A(ameter)-.15 E F2(,)A
+F1(pattern)A F0(})A(${)108 532.8 Q F1(par)A(ameter)-.15 E F2(,,)A F1
+(pattern)A F0(})A F2 .438(Case modi\214cation)144 544.8 R F0 5.438(.T)C
+.438(his e)-5.438 F .437
(xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par)
-2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 566.4 Q
-F0 .374(is e)2.874 F .374
+2.937 E(ameter)-.15 E F0 5.437(.T)C(he)-5.437 E F1(pattern)144 556.8 Q
+F0 .373(is e)2.873 F .374
(xpanded to produce a pattern just as in pathname e)-.15 F 2.874
-(xpansion. Each)-.15 F .373(character in the e)2.873 F(x-)-.15 E .513
-(panded v)144 578.4 R .513(alue of)-.25 F F1(par)3.013 E(ameter)-.15 E
-F0 .513(is tested ag)3.013 F(ainst)-.05 E F1(pattern)3.013 E F0 3.013
-(,a)C .514(nd, if it matches the pattern, its case is con-)-3.013 F -.15
-(ve)144 590.4 S 2.823(rted. The).15 F .323
-(pattern should not attempt to match more than one character)2.823 F
-5.322(.T)-.55 G(he)-5.322 E F2(^)2.822 E F0 .322(operator con)2.822 F
--.15(ve)-.4 G(rts).15 E(lo)144 602.4 Q .18(wercase letters matching)-.25
-F F1(pattern)2.681 E F0 .181(to uppercase; the)2.681 F F2(,)2.681 E F0
-.181(operator con)2.681 F -.15(ve)-.4 G .181
-(rts matching uppercase letters).15 F .085(to lo)144 614.4 R 2.585
+(xpansion. Each)-.15 F .374(character in the e)2.874 F(x-)-.15 E .514
+(panded v)144 568.8 R .514(alue of)-.25 F F1(par)3.014 E(ameter)-.15 E
+F0 .514(is tested ag)3.014 F(ainst)-.05 E F1(pattern)3.014 E F0 3.014
+(,a)C .513(nd, if it matches the pattern, its case is con-)-3.014 F -.15
+(ve)144 580.8 S 2.822(rted. The).15 F .323
+(pattern should not attempt to match more than one character)2.822 F
+5.323(.T)-.55 G(he)-5.323 E F2(^)2.823 E F0 .323(operator con)2.823 F
+-.15(ve)-.4 G(rts).15 E(lo)144 592.8 Q .181(wercase letters matching)
+-.25 F F1(pattern)2.681 E F0 .181(to uppercase; the)2.681 F F2(,)2.681 E
+F0 .181(operator con)2.681 F -.15(ve)-.4 G .18
+(rts matching uppercase letters).15 F .085(to lo)144 604.8 R 2.585
(wercase. The)-.25 F F2(^^)2.585 E F0(and)2.585 E F2(,,)2.585 E F0 -.15
(ex)2.585 G .085(pansions con).15 F -.15(ve)-.4 G .085
(rt each matched character in the e).15 F .085(xpanded v)-.15 F .085
-(alue; the)-.25 F F2(^)2.585 E F0(and)144 626.4 Q F2(,)3.59 E F0 -.15
-(ex)3.59 G 1.09(pansions match and con).15 F -.15(ve)-.4 G 1.091
-(rt only the \214rst character in the e).15 F 1.091(xpanded v)-.15 F
-3.591(alue. If)-.25 F F1(pattern)3.591 E F0(is)3.591 E 1.121
-(omitted, it is treated lik)144 638.4 R 3.621(ea)-.1 G F2(?)A F0 3.621
-(,w)C 1.121(hich matches e)-3.621 F -.15(ve)-.25 G 1.121(ry character)
-.15 F 6.12(.I)-.55 G(f)-6.12 E F1(par)4.87 E(ameter)-.15 E F0(is)4.35 E
-F2(@)3.62 E F0(or)3.62 E F2(*)3.62 E F0 3.62(,t)C 1.12(he case)-3.62 F
-.339(modi\214cation operation is applied to each positional parameter i\
-n turn, and the e)144 650.4 R .34(xpansion is the re-)-.15 F .25
-(sultant list.)144 662.4 R(If)5.25 E F1(par)4 E(ameter)-.15 E F0 .25
-(is an array v)3.48 F .249(ariable subscripted with)-.25 F F2(@)2.749 E
-F0(or)2.749 E F2(*)2.749 E F0 2.749(,t)C .249
-(he case modi\214cation oper)-2.749 F(-)-.2 E
+(alue; the)-.25 F F2(^)2.585 E F0(and)144 616.8 Q F2(,)3.591 E F0 -.15
+(ex)3.591 G 1.091(pansions match and con).15 F -.15(ve)-.4 G 1.091
+(rt only the \214rst character in the e).15 F 1.09(xpanded v)-.15 F 3.59
+(alue. If)-.25 F F1(pattern)3.59 E F0(is)3.59 E 1.12
+(omitted, it is treated lik)144 628.8 R 3.62(ea)-.1 G F2(?)A F0 3.62(,w)
+C 1.12(hich matches e)-3.62 F -.15(ve)-.25 G 1.121(ry character).15 F
+6.121(.I)-.55 G(f)-6.121 E F1(par)4.871 E(ameter)-.15 E F0(is)4.351 E F2
+(@)3.621 E F0(or)3.621 E F2(*)3.621 E F0 3.621(,t)C 1.121(he case)-3.621
+F .339(modi\214cation operation is applied to each positional parameter\
+ in turn, and the e)144 640.8 R .339(xpansion is the re-)-.15 F .249
+(sultant list.)144 652.8 R(If)5.249 E F1(par)3.999 E(ameter)-.15 E F0
+.249(is an array v)3.479 F .249(ariable subscripted with)-.25 F F2(@)
+2.749 E F0(or)2.75 E F2(*)2.75 E F0 2.75(,t)C .25
+(he case modi\214cation oper)-2.75 F(-)-.2 E
(ation is applied to each member of the array in turn, and the e)144
-674.4 Q(xpansion is the resultant list.)-.15 E(${)108 691.2 Q F1(par)A
-(ameter)-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 703.2 S
+664.8 Q(xpansion is the resultant list.)-.15 E(${)108 681.6 Q F1(par)A
+(ameter)-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 693.6 S
.86(rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F
.86(xpansion is either a transformation of the v)-.15 F .86(alue of)-.25
-F F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 715.2 R
-F1(par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F
-.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153
-E F1(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144
-727.2 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(24)190.395 E 0
+F F1(par)3.36 E(ameter)-.15 E F0 .153(or information about)144 705.6 R
+F1(par)2.653 E(ameter)-.15 E F0 .153(itself, depending on the v)2.653 F
+.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.154(.E)C(ach)-5.154
+E F1(oper)2.654 E(ator)-.15 E F0 .154(is a sin-)2.654 F(gle letter:)144
+717.6 Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(25)185.115 E 0
Cg EP
-%%Page: 25 25
+%%Page: 26 26
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(U)144 84 Q F0 .142(The e)180 84 R .142
+SF(U)144 84 Q F0 .143(The e)180 84 R .142
(xpansion is a string that is the v)-.15 F .142(alue of)-.25 F/F2 10
/Times-Italic@0 SF(par)2.642 E(ameter)-.15 E F0 .142(with lo)2.642 F
-.143(wercase alphabetic charac-)-.25 F(ters con)180 96 Q -.15(ve)-.4 G
-(rted to uppercase.).15 E F1(u)144 108 Q F0 .43(The e)180 108 R .43
+.142(wercase alphabetic charac-)-.25 F(ters con)180 96 Q -.15(ve)-.4 G
+(rted to uppercase.).15 E F1(u)144 108 Q F0 .429(The e)180 108 R .429
(xpansion is a string that is the v)-.15 F .429(alue of)-.25 F F2(par)
-2.929 E(ameter)-.15 E F0 .429(with the \214rst character con)2.929 F
--.15(ve)-.4 G(rted).15 E(to uppercase, if it is alphabetic.)180 120 Q F1
-(L)144 132 Q F0 .124(The e)180 132 R .124
+2.929 E(ameter)-.15 E F0 .43(with the \214rst character con)2.93 F -.15
+(ve)-.4 G(rted).15 E(to uppercase, if it is alphabetic.)180 120 Q F1(L)
+144 132 Q F0 .125(The e)180 132 R .124
(xpansion is a string that is the v)-.15 F .124(alue of)-.25 F F2(par)
-2.624 E(ameter)-.15 E F0 .125(with uppercase alphabetic charac-)2.625 F
+2.624 E(ameter)-.15 E F0 .124(with uppercase alphabetic charac-)2.624 F
(ters con)180 144 Q -.15(ve)-.4 G(rted to lo).15 E(wercase.)-.25 E F1(Q)
-144 156 Q F0 1.065(The e)180 156 R 1.065
+144 156 Q F0 1.064(The e)180 156 R 1.064
(xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F2(par)
-3.565 E(ameter)-.15 E F0 1.064(quoted in a format that can be)3.565 F
-(reused as input.)180 168 Q F1(E)144 180 Q F0 .44(The e)180 180 R .441
+3.565 E(ameter)-.15 E F0 1.065(quoted in a format that can be)3.565 F
+(reused as input.)180 168 Q F1(E)144 180 Q F0 .441(The e)180 180 R .441
(xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F2(par)
-2.941 E(ameter)-.15 E F0 .441(with backslash escape sequences)2.941 F
--.15(ex)180 192 S(panded as with the).15 E F1($'...)2.5 E(')-.55 E F0
-(quoting mechanism.)2.5 E F1(P)144 204 Q F0 1.073(The e)180 204 R 1.073
+2.941 E(ameter)-.15 E F0 .44(with backslash escape sequences)2.94 F -.15
+(ex)180 192 S(panded as with the).15 E F1($\010...\010)2.5 E F0
+(quoting mechanism.)2.5 E F1(P)144 204 Q F0 1.072(The e)180 204 R 1.073
(xpansion is a string that is the result of e)-.15 F 1.073
(xpanding the v)-.15 F 1.073(alue of)-.25 F F2(par)3.573 E(ameter)-.15 E
F0 1.073(as if it)3.573 F(were a prompt string \(see)180 216 Q F1(PR)2.5
-E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F1(A)144 228 Q F0 1.137(The e)
+E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F1(A)144 228 Q F0 1.138(The e)
180 228 R 1.138
(xpansion is a string in the form of an assignment statement or)-.15 F
-F1(declar)3.638 E(e)-.18 E F0(command)3.638 E(that, if e)180 240 Q -.25
+F1(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 240 Q -.25
(va)-.25 G(luated, will recreate).25 E F2(par)2.5 E(ameter)-.15 E F0
(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F1(K)144 252 Q F0
-1.34(Produces a possibly-quoted v)180 252 R 1.339(ersion of the v)-.15 F
-1.339(alue of)-.25 F F2(par)3.839 E(ameter)-.15 E F0 3.839(,e)C 1.339
-(xcept that it prints the)-3.989 F -.25(va)180 264 S .257(lues of inde)
+1.339(Produces a possibly-quoted v)180 252 R 1.339(ersion of the v)-.15
+F 1.339(alue of)-.25 F F2(par)3.839 E(ameter)-.15 E F0 3.839(,e)C 1.34
+(xcept that it prints the)-3.989 F -.25(va)180 264 S .258(lues of inde)
.25 F -.15(xe)-.15 G 2.757(da).15 G .257(nd associati)-2.757 F .557 -.15
(ve a)-.25 H .257(rrays as a sequence of quoted k).15 F -.15(ey)-.1 G
-(-v).15 E .257(alue pairs \(see)-.25 F F1(Ar)2.758 E(-)-.37 E(rays)180
+(-v).15 E .257(alue pairs \(see)-.25 F F1(Ar)2.757 E(-)-.37 E(rays)180
276 Q F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(a)144 288 Q F0(The e)180
288 Q(xpansion is a string consisting of \215ag v)-.15 E
(alues representing)-.25 E F2(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D
-(ttrib).55 E(utes.)-.2 E(If)144 304.8 Q F2(par)4.403 E(ameter)-.15 E F0
-(is)3.883 E F1(@)3.153 E F0(or)3.153 E F1(*)3.153 E F0 3.153(,t)C .653(\
-he operation is applied to each positional parameter in turn, and the e)
--3.153 F(x-)-.15 E .403(pansion is the resultant list.)144 316.8 R(If)
-5.403 E F2(par)4.153 E(ameter)-.15 E F0 .403(is an array v)3.633 F .403
-(ariable subscripted with)-.25 F F1(@)2.903 E F0(or)2.903 E F1(*)2.903 E
-F0 2.903(,t)C .403(he opera-)-2.903 F
+(ttrib).55 E(utes.)-.2 E F1(k)144 300 Q F0(Lik)180 300 Q 2.657(et)-.1 G
+.157(he K transformation, b)-2.657 F .157(ut e)-.2 F .157(xpands the k)
+-.15 F -.15(ey)-.1 G 2.657(sa).15 G .157(nd v)-2.657 F .157
+(alues of inde)-.25 F -.15(xe)-.15 G 2.657(da).15 G .158(nd associati)
+-2.657 F .458 -.15(ve a)-.25 H -.2(r-).15 G(rays to separate w)180 312 Q
+(ords after w)-.1 E(ord splitting.)-.1 E(If)144 328.8 Q F2(par)4.403 E
+(ameter)-.15 E F0(is)3.883 E F1(@)3.153 E F0(or)3.153 E F1(*)3.153 E F0
+3.153(,t)C .653(he operation is applied to each positional parameter in\
+ turn, and the e)-3.153 F(x-)-.15 E .403(pansion is the resultant list.)
+144 340.8 R(If)5.403 E F2(par)4.153 E(ameter)-.15 E F0 .403
+(is an array v)3.633 F .403(ariable subscripted with)-.25 F F1(@)2.903 E
+F0(or)2.903 E F1(*)2.903 E F0 2.903(,t)C .403(he opera-)-2.903 F
(tion is applied to each member of the array in turn, and the e)144
-328.8 Q(xpansion is the resultant list.)-.15 E .708(The result of the e)
-144 352.8 R .708(xpansion is subject to w)-.15 F .708
+352.8 Q(xpansion is the resultant list.)-.15 E .708(The result of the e)
+144 376.8 R .708(xpansion is subject to w)-.15 F .708
(ord splitting and pathname e)-.1 F .708(xpansion as described be-)-.15
-F(lo)144 364.8 Q -.65(w.)-.25 G F1(Command Substitution)87 381.6 Q F2
-1.697(Command substitution)108 393.6 R F0(allo)4.197 E 1.697
+F(lo)144 388.8 Q -.65(w.)-.25 G F1(Command Substitution)87 405.6 Q F2
+1.697(Command substitution)108 417.6 R F0(allo)4.197 E 1.697
(ws the output of a command to replace the command name.)-.25 F 1.698
-(There are tw)6.698 F(o)-.1 E(forms:)108 405.6 Q F1($\()144 422.4 Q F2
-(command)A F1(\))1.666 E F0(or)108 434.4 Q F1<92>144 446.4 Q F2(command)
-A F1<92>A(Bash)108 463.2 Q F0 .089(performs the e)2.589 F .089
+(There are tw)6.698 F(o)-.1 E(forms:)108 429.6 Q F1($\()144 446.4 Q F2
+(command)A F1(\))1.666 E F0(or)108 458.4 Q F1<92>144 470.4 Q F2(command)
+A F1<92>A(Bash)108 487.2 Q F0 .089(performs the e)2.589 F .089
(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F2(command)2.589 E F0
.088(in a subshell en)2.589 F .088(vironment and replacing the command)
-.4 F .41(substitution with the standard output of the command, with an)
-108 475.2 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.)
+108 499.2 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.)
-.25 F .41(Embedded ne)5.41 F(w-)-.25 E .192(lines are not deleted, b)
-108 487.2 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F
+108 511.2 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F
-.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.)
-.1 F .192(The command substitution)5.192 F F1($\(cat)2.691 E F2(\214le)
-2.691 E F1(\))A F0(can be replaced by the equi)108 499.2 Q -.25(va)-.25
+2.691 E F1(\))A F0(can be replaced by the equi)108 523.2 Q -.25(va)-.25
G(lent b).25 E(ut f)-.2 E(aster)-.1 E F1($\(<)2.5 E F2(\214le)2.5 E F1
(\))A F0(.)A 1.724(When the old-style backquote form of substitution is\
- used, backslash retains its literal meaning e)108 516 R(xcept)-.15 E
-.315(when follo)108 528 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1<92>
+ used, backslash retains its literal meaning e)108 540 R(xcept)-.15 E
+.315(when follo)108 552 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1<92>
2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E F0 5.315(.T)C .314(he \
\214rst backquote not preceded by a backslash terminates the command su\
-b-)-5.315 F 3.886(stitution. When)108 540 R 1.386(using the $\()3.886 F
+b-)-5.315 F 3.886(stitution. When)108 564 R 1.386(using the $\()3.886 F
F2(command).833 E F0 3.886(\)f)1.666 G 1.387
(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G
3.887(pt)-3.887 G 1.387(he com-)-3.887 F
-(mand; none are treated specially)108 552 Q(.)-.65 E .894
-(Command substitutions may be nested.)108 568.8 R 2.494 -.8(To n)5.894 H
+(mand; none are treated specially)108 576 Q(.)-.65 E .894
+(Command substitutions may be nested.)108 592.8 R 2.494 -.8(To n)5.894 H
.894(est when using the backquoted form, escape the inner back-).8 F
-(quotes with backslashes.)108 580.8 Q .422
-(If the substitution appears within double quotes, w)108 597.6 R .422
+(quotes with backslashes.)108 604.8 Q .422
+(If the substitution appears within double quotes, w)108 621.6 R .422
(ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15
-F(on the results.)108 609.6 Q F1(Arithmetic Expansion)87 626.4 Q F0
-1.035(Arithmetic e)108 638.4 R 1.035(xpansion allo)-.15 F 1.035
+F(on the results.)108 633.6 Q F1(Arithmetic Expansion)87 650.4 Q F0
+1.035(Arithmetic e)108 662.4 R 1.035(xpansion allo)-.15 F 1.035
(ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F
1.034(xpression and the substitution of the result.)-.15 F
-(The format for arithmetic e)108 650.4 Q(xpansion is:)-.15 E F1($\(\()
-144 667.2 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 684 Q
-F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165
-(is treated as if it were within double quotes, b)2.905 F .166
-(ut a double quote inside the parentheses is not)-.2 F .231
-(treated specially)108 696 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231
-(ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v)
--.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F .048
-(tution, and quote remo)108 708 R -.25(va)-.15 G 2.548(l. The).25 F .048
-(result is treated as the arithmetic e)2.548 F .048(xpression to be e)
--.15 F -.25(va)-.25 G 2.549(luated. Arithmetic).25 F -.15(ex)2.549 G(-)
-.15 E(pansions may be nested.)108 720 Q(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(25)190.395 E 0 Cg EP
-%%Page: 26 26
+(The format for arithmetic e)108 674.4 Q(xpansion is:)-.15 E F1($\(\()
+144 691.2 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 708 Q
+F2 -.2(ex)2.735 G(pr).2 E(ession)-.37 E F0(under)2.975 E .235
+(goes the same e)-.18 F .236
+(xpansions as if it were within double quotes, b)-.15 F .236
+(ut double quote charac-)-.2 F 2.8(ters in)108 720 R F2 -.2(ex)5.3 G(pr)
+.2 E(ession)-.37 E F0 2.799(are not treated specially and are remo)5.3 F
+-.15(ve)-.15 G 5.299(d. All).15 F(tok)5.299 E 2.799(ens in the e)-.1 F
+2.799(xpression under)-.15 F(go)-.18 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(26)185.115 E 0 Cg EP
+%%Page: 27 27
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.379(The e)108 84
-R -.25(va)-.25 G 1.378
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .919
+(parameter and v)108 84 R .919(ariable e)-.25 F .919
+(xpansion, command substitution, and quote remo)-.15 F -.25(va)-.15 G
+3.419(l. The).25 F .92(result is treated as the)3.419 F(arithmetic e)108
+96 Q(xpression to be e)-.15 E -.25(va)-.25 G 2.5(luated. Arithmetic).25
+F -.15(ex)2.5 G(pansions may be nested.).15 E 1.379(The e)108 112.8 R
+-.25(va)-.25 G 1.378
(luation is performed according to the rules listed belo).25 F 3.878(wu)
-.25 G(nder)-3.878 E/F1 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F
(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F2 9/Times-Roman@0 SF(.)A F0
-(If)5.878 E/F3 10/Times-Italic@0 SF -.2(ex)108 96 S(pr).2 E(ession)-.37
-E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E/F4 10/Times-Bold@0 SF(bash)
-2.5 E F0(prints a message indicating f)2.5 E
-(ailure and no substitution occurs.)-.1 E F4(Pr)87 112.8 Q
-(ocess Substitution)-.18 E F3(Pr)108 124.8 Q .405(ocess substitution)
+(If)5.878 E/F3 10/Times-Italic@0 SF -.2(ex)108 124.8 S(pr).2 E(ession)
+-.37 E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E/F4 10/Times-Bold@0 SF
+(bash)2.5 E F0(prints a message indicating f)2.5 E
+(ailure and no substitution occurs.)-.1 E F4(Pr)87 141.6 Q
+(ocess Substitution)-.18 E F3(Pr)108 153.6 Q .405(ocess substitution)
-.45 F F0(allo)2.905 E .405(ws a process')-.25 F 2.905(si)-.55 G .405
(nput or output to be referred to using a \214lename.)-2.905 F .405
-(It tak)5.405 F .405(es the form)-.1 F(of)108 136.8 Q F4(<\()3.251 E F3
+(It tak)5.405 F .405(es the form)-.1 F(of)108 165.6 Q F4(<\()3.251 E F3
(list)A F4(\)).833 E F0(or)3.251 E F4(>\()3.251 E F3(list)A F4(\)).833 E
F0 5.751(.T)C .751(he process)-5.751 F F3(list)3.251 E F0 .751
(is run asynchronously)3.251 F 3.251(,a)-.65 G .751
(nd its input or output appears as a \214lename.)-3.251 F .147
-(This \214lename is passed as an ar)108 148.8 R .148
+(This \214lename is passed as an ar)108 177.6 R .148
(gument to the current command as the result of the e)-.18 F 2.648
(xpansion. If)-.15 F(the)2.648 E F4(>\()2.648 E F3(list)A F4(\)).833 E
-F0 .56(form is used, writing to the \214le will pro)108 160.8 R .56
+F0 .56(form is used, writing to the \214le will pro)108 189.6 R .56
(vide input for)-.15 F F3(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G
(he)-3.059 E F4(<\()3.059 E F3(list)A F4(\)).833 E F0 .559
-(form is used, the \214le passed as an)3.059 F(ar)108 172.8 Q .308
+(form is used, the \214le passed as an)3.059 F(ar)108 201.6 Q .308
(gument should be read to obtain the output of)-.18 F F3(list)2.808 E F0
5.308(.P)C .309(rocess substitution is supported on systems that sup-)
--5.308 F(port named pipes \()108 184.8 Q F3(FIFOs)A F0 2.5(\)o)C 2.5(rt)
+-5.308 F(port named pipes \()108 213.6 Q F3(FIFOs)A F0 2.5(\)o)C 2.5(rt)
-2.5 G(he)-2.5 E F4(/de)2.5 E(v/fd)-.15 E F0
-(method of naming open \214les.)2.5 E .897(When a)108 201.6 R -.25(va)
+(method of naming open \214les.)2.5 E .897(When a)108 230.4 R -.25(va)
-.2 G .896(ilable, process substitution is performed simultaneously wit\
h parameter and v).25 F .896(ariable e)-.25 F(xpansion,)-.15 E
-(command substitution, and arithmetic e)108 213.6 Q(xpansion.)-.15 E F4
--.75(Wo)87 230.4 S(rd Splitting).75 E F0 1.142
-(The shell scans the results of parameter e)108 242.4 R 1.143
+(command substitution, and arithmetic e)108 242.4 Q(xpansion.)-.15 E F4
+-.75(Wo)87 259.2 S(rd Splitting).75 E F0 1.142
+(The shell scans the results of parameter e)108 271.2 R 1.143
(xpansion, command substitution, and arithmetic e)-.15 F 1.143
-(xpansion that)-.15 F(did not occur within double quotes for)108 254.4 Q
+(xpansion that)-.15 F(did not occur within double quotes for)108 283.2 Q
F3(wor)2.84 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063
-(The shell treats each character of)108 271.2 R F1(IFS)2.563 E F0 .063
+(The shell treats each character of)108 300 R F1(IFS)2.563 E F0 .063
(as a delimiter)2.313 F 2.563(,a)-.4 G .063
(nd splits the results of the other e)-2.563 F .063(xpansions into w)
-.15 F(ords)-.1 E .207(using these characters as \214eld terminators.)
-108 283.2 R(If)5.207 E F1(IFS)2.707 E F0 .207(is unset, or its v)2.457 F
+108 312 R(If)5.207 E F1(IFS)2.707 E F0 .207(is unset, or its v)2.457 F
.207(alue is e)-.25 F(xactly)-.15 E F4(<space><tab><newline>)2.708 E F0
-(,)A .837(the def)108 295.2 R .837(ault, then sequences of)-.1 F F4
+(,)A .837(the def)108 324 R .837(ault, then sequences of)-.1 F F4
(<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 307.2 R .345
+(ginning and end of the results of)-.15 F .345(the pre)108 336 R .345
(vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15
G .345(equence of)-2.845 F F1(IFS)2.845 E F0 .345
(characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es)
--.15 E 1.237(to delimit w)108 319.2 R 3.737(ords. If)-.1 F F1(IFS)3.737
-E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236
+-.15 E 1.237(to delimit w)108 348 R 3.737(ords. If)-.1 F F1(IFS)3.737 E
+F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236
(ault, then sequences of the whitespace characters)-.1 F F4(space)108
-331.2 Q F0(,)A F4(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F4(newline)2.506
-E F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w)
--.15 F .007(ord, as long as the whitespace charac-)-.1 F .921
-(ter is in the v)108 343.2 R .92(alue of)-.25 F F1(IFS)3.42 E F0(\(an)
-3.17 E F1(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E
-3.42(yc)-.15 G .92(haracter in)-3.42 F F1(IFS)3.42 E F0 .92(that is not)
-3.17 F F1(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 355.2
-R 2.928(ya)-.15 G(djacent)-2.928 E F1(IFS)2.928 E F0 .428
+360 Q F0(,)A F4(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F4(newline)2.506 E
+F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w)-.15
+F .007(ord, as long as the whitespace charac-)-.1 F .921
+(ter is in the v)108 372 R .92(alue of)-.25 F F1(IFS)3.42 E F0(\(an)3.17
+E F1(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E 3.42(yc)
+-.15 G .92(haracter in)-3.42 F F1(IFS)3.42 E F0 .92(that is not)3.17 F
+F1(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 384 R 2.928
+(ya)-.15 G(djacent)-2.928 E F1(IFS)2.928 E F0 .428
(whitespace characters, delimits a \214eld.)2.678 F 2.928(As)5.428 G
.428(equence of)-2.928 F F1(IFS)2.928 E F0 .429(whitespace charac-)2.679
-F(ters is also treated as a delimiter)108 367.2 Q 5(.I)-.55 G 2.5(ft)-5
-G(he v)-2.5 E(alue of)-.25 E F1(IFS)2.5 E F0(is null, no w)2.25 E
-(ord splitting occurs.)-.1 E .783(Explicit null ar)108 384 R .783
+F(ters is also treated as a delimiter)108 396 Q 5(.I)-.55 G 2.5(ft)-5 G
+(he v)-2.5 E(alue of)-.25 E F1(IFS)2.5 E F0(is null, no w)2.25 E
+(ord splitting occurs.)-.1 E .783(Explicit null ar)108 412.8 R .783
(guments \()-.18 F F4 .833("").833 G F0(or)2.449 E F4 .833<0808>4.115 G
F0 3.282(\)a)C .782
(re retained and passed to commands as empty strings.)-3.282 F .782
-(Unquoted im-)5.782 F .178(plicit null ar)108 396 R .179
+(Unquoted im-)5.782 F .178(plicit null ar)108 424.8 R .179
(guments, resulting from the e)-.18 F .179
(xpansion of parameters that ha)-.15 F .479 -.15(ve n)-.2 H 2.679(ov).15
G .179(alues, are remo)-2.929 F -.15(ve)-.15 G 2.679(d. If).15 F 2.679
-(ap)2.679 G(a-)-2.679 E .319(rameter with no v)108 408 R .319(alue is e)
--.25 F .319(xpanded within double quotes, a null ar)-.15 F .319
-(gument results and is retained and passed)-.18 F
-(to a command as an empty string.)108 420 Q(When a quoted null ar)5 E
+(ap)2.679 G(a-)-2.679 E .319(rameter with no v)108 436.8 R .319
+(alue is e)-.25 F .319(xpanded within double quotes, a null ar)-.15 F
+.319(gument results and is retained and passed)-.18 F
+(to a command as an empty string.)108 448.8 Q(When a quoted null ar)5 E
.001(gument appears as part of a w)-.18 F .001(ord whose e)-.1 F
-(xpansion)-.15 E .984(is non-null, the null ar)108 432 R .984
+(xpansion)-.15 E .984(is non-null, the null ar)108 460.8 R .984
(gument is remo)-.18 F -.15(ve)-.15 G 3.483(d. That).15 F .983
(is, the w)3.483 F(ord)-.1 E/F5 10/Courier@0 SF -5.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 and)-.1 F(null ar)108 472.8 Q(gument remo)-.18 E -.25(va)
+-.15 G(l.).25 E(Note that if no e)108 489.6 Q
+(xpansion occurs, no splitting is performed.)-.15 E F4 -.1(Pa)87 506.4 S
+(thname Expansion).1 E F0 .37(After w)108 518.4 R .37
(ord splitting, unless the)-.1 F 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
+530.4 R .634(ord is re)-.1 F -.05(ga)-.15 G .633(rded as a).05 F F3
(pattern)4.383 E F0 3.133(,a).24 G .633(nd replaced)-3.133 F 1.34(with \
an alphabetically sorted list of \214lenames matching the pattern \(see)
-108 513.6 R F1 -.09(Pa)3.84 G(tter).09 E 3.59(nM)-.135 G(atching)-3.59 E
+108 542.4 R F1 -.09(Pa)3.84 G(tter).09 E 3.59(nM)-.135 G(atching)-3.59 E
F0(belo)3.59 E 3.84(w\). If)-.25 F(no)3.84 E .534
-(matching \214lenames are found, and the shell option)108 525.6 R F4
+(matching \214lenames are found, and the shell option)108 554.4 R F4
(nullglob)3.034 E F0 .534(is not enabled, the w)3.034 F .534
-(ord is left unchanged.)-.1 F(If)5.534 E(the)108 537.6 Q F4(nullglob)
+(ord is left unchanged.)-.1 F(If)5.534 E(the)108 566.4 Q F4(nullglob)
3.284 E F0 .785(option is set, and no matches are found, the w)3.284 F
.785(ord is remo)-.1 F -.15(ve)-.15 G 3.285(d. If).15 F(the)3.285 E F4
(failglob)3.285 E F0 .785(shell option is)3.285 F .754(set, and no matc\
hes are found, an error message is printed and the command is not e)108
-549.6 R -.15(xe)-.15 G 3.254(cuted. If).15 F .754(the shell)3.254 F
-(option)108 561.6 Q F4(nocaseglob)3.263 E F0 .763
+578.4 R -.15(xe)-.15 G 3.254(cuted. If).15 F .754(the shell)3.254 F
+(option)108 590.4 Q F4(nocaseglob)3.263 E F0 .763
(is enabled, the match is performed without re)3.263 F -.05(ga)-.15 G
.764(rd to the case of alphabetic characters.).05 F .039
-(When a pattern is used for pathname e)108 573.6 R .039
+(When a pattern is used for pathname e)108 602.4 R .039
(xpansion, the character)-.15 F F4 -.63(``)2.539 G -.55(.').63 G(')-.08
E F0 .039(at the start of a name or immediately fol-)5.039 F(lo)108
-585.6 Q .81(wing a slash must be matched e)-.25 F(xplicitly)-.15 E 3.31
-(,u)-.65 G .81(nless the shell option)-3.31 F F4(dotglob)3.31 E F0 .81
-(is set.)3.31 F .81(The \214lenames)5.81 F F4 -.63(``)3.31 G -.55(.').63
-G(')-.08 E F0(and)5.81 E F4 -.63(``)108 597.6 S(..).63 E -.63('')-.55 G
-F0 1.182(must al)6.812 F -.1(wa)-.1 G 1.182(ys be matched e).1 F
-(xplicitly)-.15 E 3.682(,e)-.65 G -.15(ve)-3.932 G 3.682(ni).15 G(f)
--3.682 E F4(dotglob)3.682 E F0 1.182(is set.)3.682 F 1.181
-(In other cases, the)6.182 F F4 -.63(``)3.681 G -.55(.').63 G(')-.08 E
-F0 1.181(character is not)6.181 F .613(treated specially)108 609.6 R
-5.613(.W)-.65 G .613
-(hen matching a pathname, the slash character must al)-5.613 F -.1(wa)
--.1 G .614(ys be matched e).1 F .614(xplicitly by a)-.15 F .655
-(slash in the pattern, b)108 621.6 R .655(ut in other matching conte)-.2
-F .655(xts it can be matched by a special pattern character as de-)-.15
-F .719(scribed belo)108 633.6 R 3.219(wu)-.25 G(nder)-3.219 E F1 -.09
-(Pa)3.219 G(tter).09 E 2.969(nM)-.135 G(atching)-2.969 E F2(.)A F0 .719
-(See the description of)5.219 F F4(shopt)3.219 E F0(belo)3.219 E 3.22
-(wu)-.25 G(nder)-3.22 E F1 .72(SHELL B)3.22 F(UIL)-.09 E .72(TIN COM-)
--.828 F(MANDS)108 645.6 Q F0(for a description of the)2.25 E F4
-(nocaseglob)2.5 E F0(,)A F4(nullglob)2.5 E F0(,)A F4(failglob)2.5 E F0
-2.5(,a)C(nd)-2.5 E F4(dotglob)2.5 E F0(shell options.)2.5 E(The)108
-662.4 Q F1(GLOBIGNORE)2.562 E F0 .062(shell v)2.312 F .061
+614.4 Q .19(wing a slash must be matched e)-.25 F(xplicitly)-.15 E 2.69
+(,u)-.65 G .19(nless the shell option)-2.69 F F4(dotglob)2.691 E F0 .191
+(is set.)2.691 F .191(In order to match the \214le-)5.191 F(names)108
+626.4 Q F4 -.63(``)3.645 G -.55(.').63 G(')-.08 E F0(and)6.145 E F4 -.63
+(``)3.645 G(..).63 E -.63('')-.55 G F0 3.645(,t).63 G 1.145
+(he pattern must be)-3.645 F 1.145(gin with `)-.15 F(`.)-.74 E 2.625
+-.74('' \()-.7 H 1.145(for e).74 F 1.145(xample, `)-.15 F(`.?')-.74 E
+1.145('\), e)-.74 F -.15(ve)-.25 G 3.645(ni).15 G(f)-3.645 E F4(dotglob)
+3.644 E F0 1.144(is set.)3.644 F 1.144(If the)6.144 F F4(globskipdots)
+108 638.4 Q F0 .153(shell option is enabled, the \214lenames)2.653 F F4
+-.63(``)2.653 G -.55(.').63 G(')-.08 E F0(and)5.153 E F4 -.63(``)2.654 G
+(..).63 E -.63('')-.55 G F0 .154(are ne)5.784 F -.15(ve)-.25 G 2.654(rm)
+.15 G .154(atched, e)-2.654 F -.15(ve)-.25 G 2.654(ni).15 G 2.654(ft)
+-2.654 G .154(he pattern be-)-2.654 F .12(gins with a)108 650.4 R F4
+-.63(``)2.62 G -.55(.').63 G(')-.08 E F0 5.12(.W)C .12
+(hen not matching pathnames, the)-5.12 F F4 -.63(``)2.62 G -.55(.').63 G
+(')-.08 E F0 .12(character is not treated specially)5.12 F 5.12(.W)-.65
+G .12(hen matching)-5.12 F 3.54(ap)108 662.4 S 1.04
+(athname, the slash character must al)-3.54 F -.1(wa)-.1 G 1.04
+(ys be matched e).1 F 1.041(xplicitly by a slash in the pattern, b)-.15
+F 1.041(ut in other)-.2 F .132(matching conte)108 674.4 R .132
+(xts it can be matched by a special pattern character as described belo)
+-.15 F 2.631(wu)-.25 G(nder)-2.631 E F1 -.09(Pa)2.631 G(tter).09 E 2.381
+(nM)-.135 G(atch-)-2.381 E(ing)108 686.4 Q F2(.)A F0 .605
+(See the description of)5.105 F F4(shopt)3.105 E F0(belo)3.105 E 3.106
+(wu)-.25 G(nder)-3.106 E F1 .606(SHELL B)3.106 F(UIL)-.09 E .606
+(TIN COMMANDS)-.828 F F0 .606(for a description of the)2.856 F F4(no-)
+3.106 E(caseglob)108 698.4 Q F0(,)A F4(nullglob)2.5 E F0(,)A F4
+(globskipdots)2.5 E F0(,)A F4(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F4
+(dotglob)2.5 E F0(shell options.)2.5 E(The)108 715.2 Q F1(GLOBIGNORE)
+2.562 E F0 .062(shell v)2.312 F .061
(ariable may be used to restrict the set of \214le names matching a)-.25
F F3(pattern)3.811 E F0 5.061(.I).24 G(f)-5.061 E F1(GLO-)2.561 E
-(BIGNORE)108 674.4 Q F0 1.096(is set, each matching \214le name that al\
-so matches one of the patterns in)3.346 F F1(GLOBIGNORE)3.597 E F0 1.097
-(is re-)3.347 F(mo)108 686.4 Q -.15(ve)-.15 G 2.851(df).15 G .351
-(rom the list of matches.)-2.851 F .351(If the)5.351 F F4(nocaseglob)
-2.851 E F0 .351(option is set, the matching ag)2.851 F .351
-(ainst the patterns in)-.05 F F1(GLO-)2.85 E(BIGNORE)108 698.4 Q F0 1.48
-(is performed without re)3.73 F -.05(ga)-.15 G 1.48(rd to case.).05 F
-1.48(The \214lenames)6.48 F F4 -.63(``)3.98 G -.55(.').63 G(')-.08 E F0
-(and)6.48 E F4 -.63(``)3.98 G(..).63 E -.63('')-.55 G F0 1.481(are al)
-7.11 F -.1(wa)-.1 G 1.481(ys ignored when).1 F F1(GLOBIGNORE)108 710.4 Q
-F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15(ve)-.25 G
-1.627 -.4(r, s).15 H(etting).4 E F1(GLOBIGNORE)3.327 E F0 .827
-(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of)-.25 F
-.682(enabling the)108 722.4 R F4(dotglob)3.182 E F0 .682
-(shell option, so all other \214lenames be)3.182 F .682(ginning with a)
--.15 F F4 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.)
-5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(GNU Bash 5.1)72 768
-Q(2020 October 29)141.235 E(26)190.395 E 0 Cg EP
-%%Page: 27 27
+(BIGNORE)108 727.2 Q F0 2.015(is set, each matching \214le name that al\
+so matches one of the patterns in)4.264 F F1(GLOBIGNORE)4.515 E F0(is)
+4.265 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(27)185.115 E 0
+Cg EP
+%%Page: 28 28
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(beha)108 84 Q
-1.185(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F
-/F1 10/Times-Bold@0 SF -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684
-(,m)C(ak)-3.684 E(e)-.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184
-(one of the patterns in)6.184 F/F2 9/Times-Bold@0 SF(GLOBIGNORE)3.684 E
-/F3 9/Times-Roman@0 SF(.)A F0(The)108 96 Q F1(dotglob)3.131 E F0 .631
-(option is disabled when)3.131 F F2(GLOBIGNORE)3.132 E F0 .632
-(is unset.)2.882 F .632(The pattern matching honors the setting of)5.632
-F(the)108 108 Q F1(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108
-124.8 S(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 141.6 Q 3.138
-(yc)-.15 G .638(haracter that appears in a pattern, other than the spec\
-ial pattern characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H
-(atches).65 E 2.721(itself. The)108 153.6 R .221
-(NUL character may not occur in a pattern.)2.721 F 2.721(Ab)5.221 G .221
-(ackslash escapes the follo)-2.721 F .222(wing character; the es-)-.25 F
-.418(caping backslash is discarded when matching.)108 165.6 R .418
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(remo)108 84 Q -.15
+(ve)-.15 G 3.915(df).15 G 1.415(rom the list of matches.)-3.915 F 1.415
+(If the)6.415 F/F1 10/Times-Bold@0 SF(nocaseglob)3.915 E F0 1.415
+(option is set, the matching ag)3.915 F 1.414(ainst the patterns in)-.05
+F/F2 9/Times-Bold@0 SF(GLOBIGNORE)108 96 Q F0 .146
+(is performed without re)2.396 F -.05(ga)-.15 G .146(rd to case.).05 F
+.146(The \214lenames)5.146 F F1 -.63(``)2.646 G -.55(.').63 G(')-.08 E
+F0(and)5.147 E F1 -.63(``)2.647 G(..).63 E -.63('')-.55 G F0 .147
+(are al)5.777 F -.1(wa)-.1 G .147(ys ignored when).1 F F2(GLOBIGNORE)108
+108 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15(ve)
+-.25 G 1.627 -.4(r, s).15 H(etting).4 E F2(GLOBIGNORE)3.327 E F0 .827
+(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of)-.25 F
+.682(enabling the)108 120 R F1(dotglob)3.182 E F0 .682
+(shell option, so all other \214lenames be)3.182 F .682(ginning with a)
+-.15 F F1 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.)
+5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(beha)108 132 Q 1.185
+(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F F1
+-.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e)-.1 E
+F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184(one of the patterns in)
+6.184 F F2(GLOBIGNORE)3.684 E/F3 9/Times-Roman@0 SF(.)A F0(The)108 144 Q
+F1(dotglob)3.131 E F0 .631(option is disabled when)3.131 F F2
+(GLOBIGNORE)3.132 E F0 .632(is unset.)2.882 F .632
+(The pattern matching honors the setting of)5.632 F(the)108 156 Q F1
+(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 172.8 S(tter).1 E
+2.5(nM)-.15 G(atching)-2.5 E F0(An)108 189.6 Q 3.138(yc)-.15 G .638(har\
+acter that appears in a pattern, other than the special pattern charact\
+ers described belo)-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 2.721
+(itself. The)108 201.6 R .221(NUL character may not occur in a pattern.)
+2.721 F 2.721(Ab)5.221 G .221(ackslash escapes the follo)-2.721 F .222
+(wing character; the es-)-.25 F .418
+(caping backslash is discarded when matching.)108 213.6 R .418
(The special pattern characters must be quoted if the)5.418 F 2.918(ya)
--.15 G .418(re to)-2.918 F(be matched literally)108 177.6 Q(.)-.65 E
-(The special pattern characters ha)108 194.4 Q .3 -.15(ve t)-.2 H
-(he follo).15 E(wing meanings:)-.25 E F1(*)144 211.2 Q F0 .376
-(Matches an)180 211.2 R 2.876(ys)-.15 G .376
+-.15 G .418(re to)-2.918 F(be matched literally)108 225.6 Q(.)-.65 E
+(The special pattern characters ha)108 242.4 Q .3 -.15(ve t)-.2 H
+(he follo).15 E(wing meanings:)-.25 E F1(*)144 259.2 Q F0 .376
+(Matches an)180 259.2 R 2.876(ys)-.15 G .376
(tring, including the null string.)-2.876 F .376(When the)5.376 F F1
-(globstar)2.876 E F0 .377(shell option is enabled,)2.876 F(and)180 223.2
+(globstar)2.876 E F0 .377(shell option is enabled,)2.876 F(and)180 271.2
Q F1(*)3.275 E F0 .775(is used in a pathname e)3.275 F .775
(xpansion conte)-.15 F .775(xt, tw)-.15 F 3.275(oa)-.1 G(djacent)-3.275
E F1(*)3.275 E F0 3.275(su)C .775(sed as a single pattern)-3.275 F 1.058
(will match all \214les and zero or more directories and subdirectories\
-.)180 235.2 R 1.058(If follo)6.058 F 1.058(wed by a)-.25 F F1(/)3.558 E
-F0(,)A(tw)180 247.2 Q 2.5(oa)-.1 G(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C
-(ill match only directories and subdirectories.)-2.5 E F1(?)144 259.2 Q
-F0(Matches an)180 259.2 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E
-F1([...])144 271.2 Q F0 .579(Matches an)180 271.2 R 3.079(yo)-.15 G .579
+.)180 283.2 R 1.058(If follo)6.058 F 1.058(wed by a)-.25 F F1(/)3.558 E
+F0(,)A(tw)180 295.2 Q 2.5(oa)-.1 G(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C
+(ill match only directories and subdirectories.)-2.5 E F1(?)144 307.2 Q
+F0(Matches an)180 307.2 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E
+F1([...])144 319.2 Q F0 .579(Matches an)180 319.2 R 3.079(yo)-.15 G .579
(ne of the enclosed characters.)-3.079 F 3.079(Ap)5.579 G .578
(air of characters separated by a h)-3.079 F(yphen)-.05 E .684
-(denotes a)180 283.2 R/F4 10/Times-Italic@0 SF -.15(ra)3.184 G(ng).15 E
+(denotes a)180 331.2 R/F4 10/Times-Italic@0 SF -.15(ra)3.184 G(ng).15 E
3.184(ee)-.1 G(xpr)-3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)
-3.184 H .684(haracter that f).15 F .684(alls between those tw)-.1 F
-3.185(oc)-.1 G .685(haracters, inclu-)-3.185 F(si)180 295.2 Q -.15(ve)
+3.185(oc)-.1 G .685(haracters, inclu-)-3.185 F(si)180 343.2 Q -.15(ve)
-.25 G 3.713(,u).15 G 1.213(sing the current locale')-3.713 F 3.712(sc)
-.55 G 1.212(ollating sequence and character set, is matched.)-3.712 F
-1.212(If the)6.212 F 1.123(\214rst character follo)180 307.2 R 1.123
+1.212(If the)6.212 F 1.123(\214rst character follo)180 355.2 R 1.123
(wing the)-.25 F F1([)3.623 E F0 1.123(is a)3.623 F F1(!)3.623 E F0
1.124(or a)6.123 F F1(^)3.624 E F0 1.124(then an)3.624 F 3.624(yc)-.15 G
-1.124(haracter not enclosed is matched.)-3.624 F .895
-(The sorting order of characters in range e)180 319.2 R .894
-(xpressions is determined by the current locale)-.15 F .375(and the v)
-180 331.2 R .375(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0
-(or)2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375
-(ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8
-F .068(ditional interpretation of range e)180 343.2 R .068
-(xpressions, where)-.15 F F1([a\255d])2.568 E F0 .067(is equi)2.567 F
--.25(va)-.25 G .067(lent to).25 F F1([abcd])2.567 E F0 2.567(,s)C .067
-(et v)-2.567 F(alue)-.25 E .156(of the)180 355.2 R F1(LC_ALL)2.656 E F0
-.156(shell v)2.656 F .156(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C
-2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0
-.157(shell option.)2.657 F(A)5.157 E 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 367.2 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F
-(including it as the \214rst character in the set.)180 379.2 Q -.4(Wi)
-180 397.2 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F4
--.15(ch)3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571
-(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F4(class)A F1
-(:])A F0 3.071(,w)C(here)-3.071 E F4(class)3.071 E F0
-(is one of the follo)180 409.2 Q
+1.124(haracter not enclosed is matched.)-3.624 F 1.045
+(The sorting order of characters in range e)180 367.2 R 1.044
+(xpressions, and the characters included in the)-.15 F 2.34
+(range, are determined by the current locale and the v)180 379.2 R 2.341
+(alues of the)-.25 F F2(LC_COLLA)4.841 E(TE)-.855 E F0(or)4.591 E F2
+(LC_ALL)180 391.2 Q F0 1.079(shell v)3.329 F 1.079(ariables, if set.)
+-.25 F 2.679 -.8(To o)6.079 H 1.079
+(btain the traditional interpretation of range e).8 F(xpres-)-.15 E .392
+(sions, where)180 403.2 R F1([a\255d])2.892 E F0 .392(is equi)2.892 F
+-.25(va)-.25 G .392(lent to).25 F F1([abcd])2.893 E F0 2.893(,s)C .393
+(et v)-2.893 F .393(alue of the)-.25 F F1(LC_ALL)2.893 E F0 .393
+(shell v)2.893 F .393(ariable to)-.25 F F1(C)2.893 E F0(,)A .9
+(or enable the)180 415.2 R F1(globasciiranges)3.4 E F0 .9(shell option.)
+3.4 F(A)5.899 E F1<ad>3.399 E F0 .899
+(may be matched by including it as the)3.399 F .405
+(\214rst or last character in the set.)180 427.2 R(A)5.405 E F1(])2.905
+E F0 .405(may be matched by including it as the \214rst character)2.905
+F(in the set.)180 439.2 Q -.4(Wi)180 457.2 S(thin).4 E F1([)3.071 E F0
+(and)3.071 E F1(])3.071 E F0(,)A F4 -.15(ch)3.071 G(ar).15 E .571
+(acter classes)-.15 F F0 .571(can be speci\214ed using the syntax)3.071
+F F1([:)3.07 E F4(class)A F1(:])A F0 3.07(,w)C(here)-3.07 E F4(class)
+3.07 E F0(is one of the follo)180 469.2 Q
(wing classes de\214ned in the POSIX standard:)-.25 E F1 5.889
-(alnum alpha ascii blank cntrl digit graph lo)180 421.2 R 5.889
-(wer print punct space up-)-.1 F 5(per w)180 433.2 R 5(ord xdigit)-.1 F
-F0 4.289(Ac)180 445.2 S 1.789(haracter class matches an)-4.289 F 4.289
-(yc)-.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E
-F1 -.1(wo)4.29 G(rd).1 E F0(character)4.29 E
-(class matches letters, digits, and the character _.)180 457.2 Q -.4(Wi)
-180 475.2 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537
-(,a)C(n)-4.537 E F4 2.037(equivalence class)4.537 F F0 2.036
-(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F4(c)A F1(=])
-A F0 4.536(,w)C(hich)-4.536 E .125(matches all characters with the same\
- collation weight \(as de\214ned by the current locale\) as)180 487.2 R
-(the character)180 499.2 Q F4(c)2.5 E F0(.)A -.4(Wi)180 517.2 S(thin).4
+(alnum alpha ascii blank cntrl digit graph lo)180 481.2 R 5.889
+(wer print punct space up-)-.1 F 5(per w)180 493.2 R 5(ord xdigit)-.1 F
+F0 4.29(Ac)180 505.2 S 1.789(haracter class matches an)-4.29 F 4.289(yc)
+-.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1
+-.1(wo)4.289 G(rd).1 E F0(character)4.289 E
+(class matches letters, digits, and the character _.)180 517.2 Q -.4(Wi)
+180 535.2 S(thin).4 E F1([)4.536 E F0(and)4.536 E F1(])4.536 E F0 4.536
+(,a)C(n)-4.536 E F4 2.036(equivalence class)4.536 F F0 2.037
+(can be speci\214ed using the syntax)4.536 F F1([=)4.537 E F4(c)A F1(=])
+A F0 4.537(,w)C(hich)-4.537 E .125(matches all characters with the same\
+ collation weight \(as de\214ned by the current locale\) as)180 547.2 R
+(the character)180 559.2 Q F4(c)2.5 E F0(.)A -.4(Wi)180 577.2 S(thin).4
E F1([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.)
2.5 E F4(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F4
-(symbol)2.5 E F0(.)A .705(If the)108 534 R F1(extglob)3.205 E F0 .705
-(shell option is enabled using the)3.205 F F1(shopt)3.205 E F0 -.2(bu)
-3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704
-(xtended pattern matching operators)-.15 F .255(are recognized.)108 546
-R .255(In the follo)5.255 F .255(wing description, a)-.25 F F4
-(pattern-list)2.755 E F0 .255
-(is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E
-F0(.)A(Composite patterns may be formed using one or more of the follo)
-108 558 Q(wing sub-patterns:)-.25 E F1(?\()144 582 Q F4(pattern-list)
-.833 E F1(\)).833 E F0(Matches zero or one occurrence of the gi)180 594
-Q -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(*\()144 606 Q F4
+(symbol)2.5 E F0(.)A .539(If the)108 594 R F1(extglob)3.039 E F0 .539
+(shell option is enabled using the)3.039 F F1(shopt)3.039 E F0 -.2(bu)
+3.039 G .54(iltin, the shell recognizes se).2 F -.15(ve)-.25 G .54
+(ral e).15 F .54(xtended pattern)-.15 F .038(matching operators.)108 606
+R .038(In the follo)5.038 F .038(wing description, a)-.25 F F4
+(pattern-list)2.538 E F0 .037
+(is a list of one or more patterns separated by)2.538 F(a)108 618 Q F1
+(|)2.5 E F0 5(.C)C
+(omposite patterns may be formed using one or more of the follo)-5 E
+(wing sub-patterns:)-.25 E F1(?\()144 642 Q F4(pattern-list).833 E F1
+(\)).833 E F0(Matches zero or one occurrence of the gi)180 654 Q -.15
+(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(*\()144 666 Q F4(pattern-list)
+.833 E F1(\)).833 E F0(Matches zero or more occurrences of the gi)180
+678 Q -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 690 Q F4
(pattern-list).833 E F1(\)).833 E F0
-(Matches zero or more occurrences of the gi)180 618 Q -.15(ve)-.25 G 2.5
-(np).15 G(atterns)-2.5 E F1(+\()144 630 Q F4(pattern-list).833 E F1(\))
-.833 E F0(Matches one or more occurrences of the gi)180 642 Q -.15(ve)
--.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 654 Q F4(pattern-list).833
-E F1(\)).833 E F0(Matches one of the gi)180 666 Q -.15(ve)-.25 G 2.5(np)
-.15 G(atterns)-2.5 E F1(!\()144 678 Q F4(pattern-list).833 E F1(\)).833
-E F0(Matches an)180 690 Q(ything e)-.15 E(xcept one of the gi)-.15 E
--.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E .969(Complicated e)108 706.8
-R .969(xtended pattern matching ag)-.15 F .969
-(ainst long strings is slo)-.05 F 2.268 -.65(w, e)-.25 H .968
-(specially when the patterns contain).65 F .09
-(alternations and the strings contain multiple matches.)108 718.8 R .091
-(Using separate matches ag)5.091 F .091(ainst shorter strings, or us-)
--.05 F(ing arrays of strings instead of a single long string, may be f)
-108 730.8 Q(aster)-.1 E(.)-.55 E(GNU Bash 5.1)72 768 Q(2020 October 29)
-141.235 E(27)190.395 E 0 Cg EP
-%%Page: 28 28
+(Matches one or more occurrences of the gi)180 702 Q -.15(ve)-.25 G 2.5
+(np).15 G(atterns)-2.5 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955
+E(28)185.115 E 0 Cg EP
+%%Page: 29 29
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(Quote Remo)87 84 Q -.1(va)-.1 G(l).1 E F0 1.113
-(After the preceding e)108 96 R 1.113
+SF(@\()144 84 Q/F2 10/Times-Italic@0 SF(pattern-list).833 E F1(\)).833 E
+F0(Matches one of the gi)180 96 Q -.15(ve)-.25 G 2.5(np).15 G(atterns)
+-2.5 E F1(!\()144 108 Q F2(pattern-list).833 E F1(\)).833 E F0
+(Matches an)180 120 Q(ything e)-.15 E(xcept one of the gi)-.15 E -.15
+(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E(The)108 136.8 Q F1(extglob)A F0
+.477(option changes the beha)2.977 F .477(vior of the parser)-.2 F 2.977
+(,s)-.4 G .478(ince the parentheses are normally treated as opera-)
+-2.977 F .105(tors with syntactic meaning.)108 148.8 R 1.705 -.8(To e)
+5.105 H .105(nsure that e).8 F .105
+(xtended matching patterns are parsed correctly)-.15 F 2.604(,m)-.65 G
+(ak)-2.604 E 2.604(es)-.1 G .104(ure that)-2.604 F F1(extglob)108 160.8
+Q F0 1.355(is enabled before parsing constructs containing the patterns\
+, including shell functions and com-)3.854 F(mand substitutions.)108
+172.8 Q .988(When matching \214lenames, the)108 189.6 R F1(dotglob)3.488
+E F0 .988
+(shell option determines the set of \214lenames that are tested: when)
+3.488 F F1(dotglob)108 201.6 Q F0 1.391
+(is enabled, the set of \214lenames includes all \214les be)3.891 F
+1.392(ginning with `)-.15 F(`.)-.74 E -.74('')-.7 G 3.892(,b).74 G 1.392
+(ut `)-4.092 F(`.)-.74 E 2.872 -.74('' a)-.7 H 1.392(nd `).74 F(`..)-.74
+E 2.872 -.74('' m)-.7 H 1.392(ust be).74 F .298
+(matched by a pattern or sub-pattern that be)108 213.6 R .298
+(gins with a dot; when it is disabled, the set does not include an)-.15
+F(y)-.15 E .327(\214lenames be)108 225.6 R .327(ginning with `)-.15 F
+(`.)-.74 E 1.807 -.74('' u)-.7 H .327
+(nless the pattern or sub-pattern be).74 F .327(gins with a `)-.15 F(`.)
+-.74 E -.74('')-.7 G 5.327(.A).74 G 2.827(sa)-5.327 G(bo)-2.827 E -.15
+(ve)-.15 G 2.828(,`).15 G(`.)-3.568 E 1.808 -.74('' o)-.7 H .328
+(nly has a).74 F(special meaning when matching \214lenames.)108 237.6 Q
+.969(Complicated e)108 254.4 R .969(xtended pattern matching ag)-.15 F
+.969(ainst long strings is slo)-.05 F 2.268 -.65(w, e)-.25 H .968
+(specially when the patterns contain).65 F .09
+(alternations and the strings contain multiple matches.)108 266.4 R .091
+(Using separate matches ag)5.091 F .091(ainst shorter strings, or us-)
+-.05 F(ing arrays of strings instead of a single long string, may be f)
+108 278.4 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 295.2 Q -.1(va)-.1 G
+(l).1 E F0 1.113(After the preceding e)108 307.2 R 1.113
(xpansions, all unquoted occurrences of the characters)-.15 F F1(\\)
3.613 E F0(,)A F1<08>3.612 E F0 3.612(,a)C(nd)-3.612 E F1(")4.445 E F0
-1.112(that did not result)4.445 F(from one of the abo)108 108 Q .3 -.15
-(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F2 10.95
-/Times-Bold@0 SF(REDIRECTION)72 124.8 Q F0 .545(Before a command is e)
-108 136.8 R -.15(xe)-.15 G .545(cuted, its input and output may be).15 F
-/F3 10/Times-Italic@0 SF -.37(re)3.045 G(dir).37 E(ected)-.37 E F0 .545
-(using a special notation interpreted)3.815 F .405(by the shell.)108
-148.8 R .405(Redirection allo)5.405 F .405(ws commands' \214le handles \
-to be duplicated, opened, closed, made to refer to)-.25 F(dif)108 160.8
-Q 1.019(ferent \214les, and can change the \214les the command reads fr\
-om and writes to.)-.25 F 1.02(Redirection may also be)6.02 F .215
-(used to modify \214le handles in the current shell e)108 172.8 R -.15
-(xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E
+1.112(that did not result)4.445 F(from one of the abo)108 319.2 Q .3
+-.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F3
+10.95/Times-Bold@0 SF(REDIRECTION)72 336 Q F0 .545
+(Before a command is e)108 348 R -.15(xe)-.15 G .545
+(cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E
+(ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .429
+(by the shell.)108 360 R F2(Redir)5.428 E(ection)-.37 E F0(allo)2.928 E
+.428(ws commands' \214le handles to be duplicated, opened, closed, made\
+ to refer to)-.25 F(dif)108 372 Q 1.019(ferent \214les, and can change \
+the \214les the command reads from and writes to.)-.25 F 1.02
+(Redirection may also be)6.02 F .215
+(used to modify \214le handles in the current shell e)108 384 R -.15(xe)
+-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E
.215(wing redirection operators)-.25 F .862(may precede or appear an)108
-184.8 R .862(ywhere within a)-.15 F F3 .862(simple command)3.702 F F0
-.862(or may follo)4.132 F 3.362(wa)-.25 G F3(command).2 E F0 5.862(.R)
-.77 G .862(edirections are)-5.862 F(processed in the order the)108 196.8
-Q 2.5(ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771
-(Each redirection that may be preceded by a \214le descriptor number ma\
-y instead be preceded by a w)108 213.6 R .771(ord of)-.1 F .292
-(the form {)108 225.6 R F3(varname)A F0 2.793(}. In)B .293
+396 R .862(ywhere within a)-.15 F F2 .862(simple command)3.702 F F0 .862
+(or may follo)4.132 F 3.362(wa)-.25 G F2(command).2 E F0 5.862(.R).77 G
+.862(edirections are)-5.862 F(processed in the order the)108 408 Q 2.5
+(ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Eac\
+h redirection that may be preceded by a \214le descriptor number may in\
+stead be preceded by a w)108 424.8 R .771(ord of)-.1 F .292(the form {)
+108 436.8 R F2(varname)A F0 2.793(}. In)B .293
(this case, for each redirection operator e)2.793 F .293
-(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 237.6 S
+(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 448.8 S
.679(le descriptor greater than or equal to 10 and assign it to)-3.18 F
-F3(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679
-(&- or <&- is preceded by {)-3.179 F F3(var)A(-)-.2 E(name)108 249.6 Q
-F0 .599(}, the v)B .599(alue of)-.25 F F3(varname)3.099 E F0 .599
-(de\214nes the \214le descriptor to close.)3.099 F .6(If {)5.6 F F3
+F2(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679
+(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 460.8 Q
+F0 .599(}, the v)B .599(alue of)-.25 F F2(varname)3.099 E F0 .599
+(de\214nes the \214le descriptor to close.)3.099 F .6(If {)5.6 F F2
(varname)A F0 3.1(}i)C 3.1(ss)-3.1 G .6(upplied, the redirection)-3.1 F
-1.238(persists be)108 261.6 R 1.238(yond the scope of the command, allo)
--.15 F 1.238(wing the shell programmer to manage the \214le descriptor)
--.25 F(himself.)108 273.6 Q .283(In the follo)108 290.4 R .284(wing des\
-criptions, if the \214le descriptor number is omitted, and the \214rst \
-character of the redirect-)-.25 F .513(ion operator is)108 302.4 R F1(<)
+.794(persists be)108 472.8 R .794(yond the scope of the command, allo)
+-.15 F .793(wing the shell programmer to manage the \214le descriptor')
+-.25 F(s)-.55 E(lifetime manually)108 484.8 Q 5(.T)-.65 G(he)-5 E F1 -.1
+(va)2.5 G(rr).1 E(edir_close)-.18 E F0(shell option manages this beha)
+2.5 E(vior)-.2 E(.)-.55 E .283(In the follo)108 501.6 R .284(wing descr\
+iptions, if the \214le descriptor number is omitted, and the \214rst ch\
+aracter of the redirect-)-.25 F .513(ion operator is)108 513.6 R F1(<)
3.012 E F0 3.012(,t)C .512
(he redirection refers to the standard input \(\214le descriptor 0\).)
-3.012 F .512(If the \214rst character of the)5.512 F
-(redirection operator is)108 314.4 Q F1(>)2.5 E F0 2.5(,t)C
+(redirection operator is)108 525.6 Q F1(>)2.5 E F0 2.5(,t)C
(he redirection refers to the standard output \(\214le descriptor 1\).)
--2.5 E .824(The w)108 331.2 R .824(ord follo)-.1 F .824
+-2.5 E .824(The w)108 542.4 R .824(ord follo)-.1 F .824
(wing the redirection operator in the follo)-.25 F .825
(wing descriptions, unless otherwise noted, is sub-)-.25 F .463
-(jected to brace e)108 343.2 R .463(xpansion, tilde e)-.15 F .462
+(jected to brace e)108 554.4 R .463(xpansion, tilde e)-.15 F .462
(xpansion, parameter and v)-.15 F .462(ariable e)-.25 F .462
-(xpansion, command substitution, arith-)-.15 F .866(metic e)108 355.2 R
+(xpansion, command substitution, arith-)-.15 F .866(metic e)108 566.4 R
.866(xpansion, quote remo)-.15 F -.25(va)-.15 G .866(l, pathname e).25 F
.867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867
-F .867(xpands to more than one)-.15 F -.1(wo)108 367.2 S(rd,).1 E F1
+F .867(xpands to more than one)-.15 F -.1(wo)108 578.4 S(rd,).1 E F1
(bash)2.5 E F0(reports an error)2.5 E(.)-.55 E
-(Note that the order of redirections is signi\214cant.)108 384 Q -.15
-(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 400.8 Q F1(>)2.5
-E F0(dirlist 2)2.5 E F1(>&)A F0(1)A
-(directs both standard output and standard error to the \214le)108 417.6
-Q F3(dirlist)2.85 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144
-434.4 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .505
-(directs only the standard output to \214le)108 451.2 R F3(dirlist)3.355
+(Note that the order of redirections is signi\214cant.)108 595.2 Q -.15
+(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 612 Q F1(>)2.5 E
+F0(dirlist 2)2.5 E F1(>&)A F0(1)A
+(directs both standard output and standard error to the \214le)108 628.8
+Q F2(dirlist)2.85 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144
+645.6 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .505
+(directs only the standard output to \214le)108 662.4 R F2(dirlist)3.355
E F0 3.005(,b).68 G .505(ecause the standard error w)-3.005 F .505
(as duplicated from the standard)-.1 F
-(output before the standard output w)108 463.2 Q(as redirected to)-.1 E
-F3(dirlist)2.85 E F0(.).68 E F1(Bash)108 480 Q F0 .598(handles se)3.098
-F -.15(ve)-.25 G .598(ral \214lenames specially when the).15 F 3.099(ya)
--.15 G .599(re used in redirections, as described in the follo)-3.099 F
-(wing)-.25 E 3.478(table. If)108 492 R .978
+(output before the standard output w)108 674.4 Q(as redirected to)-.1 E
+F2(dirlist)2.85 E F0(.).68 E F1(Bash)108 691.2 Q F0 .598(handles se)
+3.098 F -.15(ve)-.25 G .598(ral \214lenames specially when the).15 F
+3.099(ya)-.15 G .599(re used in redirections, as described in the follo)
+-3.099 F(wing)-.25 E 3.478(table. If)108 703.2 R .978
(the operating system on which)3.478 F F1(bash)3.478 E F0 .978
(is running pro)3.478 F .977
(vides these special \214les, bash will use them;)-.15 F
-(otherwise it will emulate them internally with the beha)108 504 Q
-(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 520.8 Q(v/fd/)-.15
-E F3(fd)A F0(If)180 532.8 Q F3(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E
-(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F3(fd)2.5 E F0
-(is duplicated.)2.5 E F1(/de)144 544.8 Q(v/stdin)-.15 E F0
-(File descriptor 0 is duplicated.)180 556.8 Q F1(/de)144 568.8 Q
-(v/stdout)-.15 E F0(File descriptor 1 is duplicated.)180 580.8 Q F1(/de)
-144 592.8 Q(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180
-604.8 Q F1(/de)144 616.8 Q(v/tcp/)-.15 E F3(host)A F1(/)A F3(port)A F0
-(If)180 628.8 Q F3(host)2.996 E F0 .496(is a v)2.996 F .496
-(alid hostname or Internet address, and)-.25 F F3(port)2.997 E F0 .497
+(otherwise it will emulate them internally with the beha)108 715.2 Q
+(vior described belo)-.2 E -.65(w.)-.25 G(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(29)185.115 E 0 Cg EP
+%%Page: 30 30
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(/de)144 84 Q(v/fd/)-.15 E/F2 10/Times-Italic@0 SF(fd)A F0(If)180 96 Q
+F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E(ger)-.15 E 2.5<2c8c>-.4 G
+(le descriptor)-2.5 E F2(fd)2.5 E F0(is duplicated.)2.5 E F1(/de)144 108
+Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.)180 120 Q F1(/de)
+144 132 Q(v/stdout)-.15 E F0(File descriptor 1 is duplicated.)180 144 Q
+F1(/de)144 156 Q(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180
+168 Q F1(/de)144 180 Q(v/tcp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)
+180 192 Q F2(host)2.996 E F0 .496(is a v)2.996 F .496
+(alid hostname or Internet address, and)-.25 F F2(port)2.997 E F0 .497
(is an inte)2.997 F .497(ger port number or ser)-.15 F(-)-.2 E
-(vice name,)180 640.8 Q F1(bash)2.5 E F0
+(vice name,)180 204 Q F1(bash)2.5 E F0
(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144
-652.8 Q(v/udp/)-.15 E F3(host)A F1(/)A F3(port)A F0(If)180 664.8 Q F3
-(host)2.997 E F0 .497(is a v)2.997 F .497
-(alid hostname or Internet address, and)-.25 F F3(port)2.996 E F0 .496
+216 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 228 Q F2(host)
+2.997 E F0 .497(is a v)2.997 F .497
+(alid hostname or Internet address, and)-.25 F F2(port)2.996 E F0 .496
(is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E
-(vice name,)180 676.8 Q F1(bash)2.5 E F0
+(vice name,)180 240 Q F1(bash)2.5 E F0
(attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108
-693.6 S(ailure to open or create a \214le causes the redirection to f)
+256.8 S(ailure to open or create a \214le causes the redirection to f)
-2.6 E(ail.)-.1 E .045(Redirections using \214le descriptors greater th\
-an 9 should be used with care, as the)108 710.4 R 2.546(ym)-.15 G .046
+an 9 should be used with care, as the)108 273.6 R 2.546(ym)-.15 G .046
(ay con\215ict with \214le de-)-2.546 F
-(scriptors the shell uses internally)108 722.4 Q(.)-.65 E(GNU Bash 5.1)
-72 768 Q(2020 October 29)141.235 E(28)190.395 E 0 Cg EP
-%%Page: 29 29
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(Redir)87 84 Q(ecting Input)-.18 E F0 .391
+(scriptors the shell uses internally)108 285.6 Q(.)-.65 E F1(Redir)87
+302.4 Q(ecting Input)-.18 E F0 .391
(Redirection of input causes the \214le whose name results from the e)
-108 96 R .391(xpansion of)-.15 F/F2 10/Times-Italic@0 SF(wor)3.231 E(d)
--.37 E F0 .391(to be opened for read-)3.661 F(ing on \214le descriptor)
-108 108 Q F2(n)2.86 E F0 2.5(,o).24 G 2.5(rt)-2.5 G
+108 314.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391
+(to be opened for read-)3.661 F(ing on \214le descriptor)108 326.4 Q F2
+(n)2.86 E F0 2.5(,o).24 G 2.5(rt)-2.5 G
(he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E F0
(is not speci\214ed.)2.74 E
-(The general format for redirecting input is:)108 124.8 Q([)144 141.6 Q
-F2(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 158.4 Q
-(ecting Output)-.18 E F0 .174
+(The general format for redirecting input is:)108 343.2 Q([)144 360 Q F2
+(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 376.8 Q(ecting Output)
+-.18 E F0 .174
(Redirection of output causes the \214le whose name results from the e)
-108 170.4 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175
-(to be opened for writ-)3.445 F .084(ing on \214le descriptor)108 182.4
+108 388.8 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175
+(to be opened for writ-)3.445 F .084(ing on \214le descriptor)108 400.8
R F2(n)2.944 E F0 2.583(,o).24 G 2.583(rt)-2.583 G .083
(he standard output \(\214le descriptor 1\) if)-2.583 F F2(n)2.943 E F0
.083(is not speci\214ed.)2.823 F .083(If the \214le does not e)5.083 F
-(x-)-.15 E(ist it is created; if it does e)108 194.4 Q
+(x-)-.15 E(ist it is created; if it does e)108 412.8 Q
(xist it is truncated to zero size.)-.15 E
-(The general format for redirecting output is:)108 211.2 Q([)144 228 Q
+(The general format for redirecting output is:)108 429.6 Q([)144 446.4 Q
F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .154
-(If the redirection operator is)108 244.8 R F1(>)2.654 E F0 2.654(,a)C
+(If the redirection operator is)108 463.2 R F1(>)2.654 E F0 2.654(,a)C
.154(nd the)-2.654 F F1(noclob)2.654 E(ber)-.1 E F0 .154(option to the)
2.654 F F1(set)2.655 E F0 -.2(bu)2.655 G .155
-(iltin has been enabled, the redirection).2 F .658(will f)108 256.8 R
+(iltin has been enabled, the redirection).2 F .658(will f)108 475.2 R
.658(ail if the \214le whose name results from the e)-.1 F .658
(xpansion of)-.15 F F2(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G .657
(ists and is a re).15 F .657(gular \214le.)-.15 F .657(If the redi-)
-5.657 F .408(rection operator is)108 268.8 R F1(>|)2.909 E F0 2.909(,o)C
+5.657 F .408(rection operator is)108 487.2 R F1(>|)2.909 E F0 2.909(,o)C
2.909(rt)-2.909 G .409(he redirection operator is)-2.909 F F1(>)2.909 E
F0 .409(and the)2.909 F F1(noclob)2.909 E(ber)-.1 E F0 .409
(option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.909 G .409
(iltin command).2 F(is not enabled, the redirection is attempted e)108
-280.8 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by)
+499.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by)
-2.5 E F2(wor)2.5 E(d)-.37 E F0 -.15(ex)2.5 G(ists.).15 E F1 -.25(Ap)87
-297.6 S(pending Redir).25 E(ected Output)-.18 E F0 .642
-(Redirection of output in this f)108 309.6 R .642
+516 S(pending Redir).25 E(ected Output)-.18 E F0 .642
+(Redirection of output in this f)108 528 R .642
(ashion causes the \214le whose name results from the e)-.1 F .641
(xpansion of)-.15 F F2(wor)3.481 E(d)-.37 E F0 .641(to be)3.911 F .454
-(opened for appending on \214le descriptor)108 321.6 R F2(n)3.315 E F0
+(opened for appending on \214le descriptor)108 540 R F2(n)3.315 E F0
2.955(,o).24 G 2.955(rt)-2.955 G .455
(he standard output \(\214le descriptor 1\) if)-2.955 F F2(n)3.315 E F0
.455(is not speci\214ed.)3.195 F(If)5.455 E(the \214le does not e)108
-333.6 Q(xist it is created.)-.15 E
-(The general format for appending output is:)108 350.4 Q([)144 367.2 Q
-F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 384 Q
+552 Q(xist it is created.)-.15 E
+(The general format for appending output is:)108 568.8 Q([)144 585.6 Q
+F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 602.4 Q
(ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .249
-(This construct allo)108 396 R .249(ws both the standard output \(\214l\
-e descriptor 1\) and the standard error output \(\214le descrip-)-.25 F
-(tor 2\) to be redirected to the \214le whose name is the e)108 408 Q
-(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E(There are tw)108
-424.8 Q 2.5(of)-.1 G
+(This construct allo)108 614.4 R .249(ws both the standard output \(\
+\214le descriptor 1\) and the standard error output \(\214le descrip-)
+-.25 F(tor 2\) to be redirected to the \214le whose name is the e)108
+626.4 Q(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E
+(There are tw)108 643.2 Q 2.5(of)-.1 G
(ormats for redirecting standard output and standard error:)-2.5 E F1
-(&>)144 441.6 Q F2(wor)A(d)-.37 E F0(and)108 453.6 Q F1(>&)144 465.6 Q
-F2(wor)A(d)-.37 E F0(Of the tw)108 482.4 Q 2.5(of)-.1 G
+(&>)144 660 Q F2(wor)A(d)-.37 E F0(and)108 672 Q F1(>&)144 684 Q F2(wor)
+A(d)-.37 E F0(Of the tw)108 700.8 Q 2.5(of)-.1 G
(orms, the \214rst is preferred.)-2.5 E(This is semantically equi)5 E
--.25(va)-.25 G(lent to).25 E F1(>)144 499.2 Q F2(wor)A(d)-.37 E F0(2)2.5
-E F1(>&)A F0(1)A .114(When using the second form,)108 516 R F2(wor)2.614
-E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or)-.15 F F1
-<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
+-.25(va)-.25 G(lent to).25 E F1(>)144 717.6 Q F2(wor)A(d)-.37 E F0(2)2.5
+E F1(>&)A F0(1)A(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(30)
+185.115 E 0 Cg EP
+%%Page: 31 31
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .114
+(When using the second form,)108 84 R/F1 10/Times-Italic@0 SF(wor)2.614
+E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or)-.15 F/F2
+10/Times-Bold@0 SF<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
+96 Q F2(Duplicating File Descriptors)2.5 E F0(belo)2.5 E
+(w\) for compatibility reasons.)-.25 E F2 -.25(Ap)87 112.8 S
(pending Standard Output and Standard Err).25 E(or)-.18 E F0 .249
-(This construct allo)108 556.8 R .249(ws both the standard output \(\
+(This construct allo)108 124.8 R .249(ws both the standard output \(\
\214le descriptor 1\) and the standard error output \(\214le descrip-)
-.25 F(tor 2\) to be appended to the \214le whose name is the e)108
-568.8 Q(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E
+136.8 Q(xpansion of)-.15 E F1(wor)2.84 E(d)-.37 E F0(.).77 E
(The format for appending standard output and standard error is:)108
-585.6 Q F1(&>>)144 602.4 Q F2(wor)A(d)-.37 E F0
-(This is semantically equi)108 619.2 Q -.25(va)-.25 G(lent to).25 E F1
-(>>)144 636 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A(\(see)108
-652.8 Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E
-F1(Her)87 669.6 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of red\
+153.6 Q F2(&>>)144 170.4 Q F1(wor)A(d)-.37 E F0
+(This is semantically equi)108 187.2 Q -.25(va)-.25 G(lent to).25 E F2
+(>>)144 204 Q F1(wor)A(d)-.37 E F0(2)2.5 E F2(>&)A F0(1)A(\(see)108
+220.8 Q F2(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E
+F2(Her)87 237.6 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of red\
irection instructs the shell to read input from the current source unti\
-l a line containing only)108 681.6 R F2(delimiter)108.35 693.6 Q F0 .615
+l a line containing only)108 249.6 R F1(delimiter)108.35 261.6 Q F0 .615
(\(with no trailing blanks\) is seen.)3.845 F .615
(All of the lines read up to that point are then used as the stan-)5.615
-F(dard input \(or \214le descriptor)108 705.6 Q F2(n)2.5 E F0(if)2.5 E
-F2(n)2.5 E F0(is speci\214ed\) for a command.)2.5 E
-(The format of here-documents is:)108 722.4 Q(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(29)190.395 E 0 Cg EP
-%%Page: 30 30
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E([)144 84 Q/F1 10
-/Times-Italic@0 SF(n)A F0(])A/F2 10/Times-Bold@0 SF(<<)A F0([)A 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
+F(dard input \(or \214le descriptor)108 273.6 Q F1(n)2.5 E F0(if)2.5 E
+F1(n)2.5 E F0(is speci\214ed\) for a command.)2.5 E
+(The format of here-documents is:)108 290.4 Q([)144 307.2 Q F1(n)A F0(])
+A F2(<<)A F0([)A F2<ad>A F0(])A F1(wor)A(d)-.37 E(her)164 319.2 Q
+(e-document)-.37 E(delimiter)144 331.2 Q F0 .301(No parameter and v)108
+348 R .302(ariable e)-.25 F .302
(xpansion, command substitution, arithmetic e)-.15 F .302
(xpansion, or pathname e)-.15 F(xpansion)-.15 E .381(is performed on)108
-136.8 R F1(wor)3.221 E(d)-.37 E F0 5.381(.I).77 G 2.881(fa)-5.381 G .681
+360 R F1(wor)3.221 E(d)-.37 E F0 5.381(.I).77 G 2.881(fa)-5.381 G .681
-.15(ny p)-2.881 H .381(art of).15 F F1(wor)3.221 E(d)-.37 E F0 .381
(is quoted, the)3.651 F F1(delimiter)3.231 E F0 .381
(is the result of quote remo)3.611 F -.25(va)-.15 G 2.881(lo).25 G(n)
-2.881 E F1(wor)3.221 E(d)-.37 E F0(,).77 E .773
-(and the lines in the here-document are not e)108 148.8 R 3.274
+(and the lines in the here-document are not e)108 372 R 3.274
(xpanded. If)-.15 F F1(wor)3.274 E(d)-.37 E F0 .774
(is unquoted, all lines of the here-document)3.274 F 1.195
-(are subjected to parameter e)108 160.8 R 1.194
+(are subjected to parameter e)108 384 R 1.194
(xpansion, command substitution, and arithmetic e)-.15 F 1.194
-(xpansion, the character se-)-.15 F(quence)108 172.8 Q F2(\\<newline>)
-2.5 E F0(is ignored, and)2.5 E F2(\\)2.5 E F0
+(xpansion, the character se-)-.15 F(quence)108 396 Q F2(\\<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
+(If the redirection operator is)108 412.8 R F2(<<\255)3.101 E F0 3.101
(,t)C .601(hen all leading tab characters are stripped from input lines\
- and the line)-3.101 F(containing)108 201.6 Q F1(delimiter)2.85 E F0 5
+ and the line)-3.101 F(containing)108 424.8 Q F1(delimiter)2.85 E F0 5
(.T).73 G(his allo)-5 E
(ws here-documents within shell scripts to be indented in a natural f)
--.25 E(ashion.)-.1 E F2(Her)87 218.4 Q 2.5(eS)-.18 G(trings)-2.5 E F0
-2.5(Av)108 230.4 S(ariant of here documents, the format is:)-2.75 E([)
-144 247.2 Q F1(n)A F0(])A F2(<<<)A F1(wor)A(d)-.37 E F0(The)108 264 Q F1
-(wor)3.292 E(d)-.37 E F0(under)3.292 E .792(goes tilde e)-.18 F .792
+-.25 E(ashion.)-.1 E F2(Her)87 441.6 Q 2.5(eS)-.18 G(trings)-2.5 E F0
+2.5(Av)108 453.6 S(ariant of here documents, the format is:)-2.75 E([)
+144 470.4 Q F1(n)A F0(])A F2(<<<)A F1(wor)A(d)-.37 E F0(The)108 487.2 Q
+F1(wor)3.292 E(d)-.37 E F0(under)3.292 E .792(goes tilde e)-.18 F .792
(xpansion, parameter and v)-.15 F .792(ariable e)-.25 F .791
-(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 276 S
+(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 499.2 S
1.187(pansion, and quote remo).15 F -.25(va)-.15 G 3.687(l. P).25 F
1.187(athname e)-.15 F 1.187(xpansion and w)-.15 F 1.187
(ord splitting are not performed.)-.1 F 1.188(The result is)6.187 F .375
-(supplied as a single string, with a ne)108 288 R .374(wline appended, \
-to the command on its standard input \(or \214le descrip-)-.25 F(tor)108
-300 Q F1(n)2.5 E F0(if)2.5 E F1(n)2.5 E F0(is speci\214ed\).)2.5 E F2
-(Duplicating File Descriptors)87 316.8 Q F0(The redirection operator)108
-328.8 Q([)144 345.6 Q F1(n)A F0(])A F2(<&)A F1(wor)A(d)-.37 E F0 .126
-(is used to duplicate input \214le descriptors.)108 362.4 R(If)5.127 E
+(supplied as a single string, with a ne)108 511.2 R .374(wline appended\
+, to the command on its standard input \(or \214le descrip-)-.25 F(tor)
+108 523.2 Q F1(n)2.5 E F0(if)2.5 E F1(n)2.5 E F0(is speci\214ed\).)2.5 E
+F2(Duplicating File Descriptors)87 540 Q F0(The redirection operator)108
+552 Q([)144 568.8 Q F1(n)A F0(])A F2(<&)A F1(wor)A(d)-.37 E F0 .126
+(is used to duplicate input \214le descriptors.)108 585.6 R(If)5.127 E
F1(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127
(pands to one or more digits, the \214le descriptor denoted).15 F(by)108
-374.4 Q F1(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G
+597.6 Q F1(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G
2.958(ft)-2.958 G .457(hat \214le descriptor)-2.958 F 5.457(.I)-.55 G
2.957(ft)-5.457 G .457(he digits in)-2.957 F F1(wor)3.297 E(d)-.37 E F0
.457(do not specify a \214le descriptor open)3.727 F .149
-(for input, a redirection error occurs.)108 386.4 R(If)5.149 E F1(wor)
+(for input, a redirection error occurs.)108 609.6 R(If)5.149 E F1(wor)
2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F 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
+(the standard input \(\214le descriptor 0\) is used.)108 621.6 Q
+(The operator)108 638.4 Q([)144 655.2 Q F1(n)A F0(])A F2(>&)A F1(wor)A
+(d)-.37 E F0 .444
+(is used similarly to duplicate output \214le descriptors.)108 672 R(If)
+5.444 E F1(n)3.304 E F0 .443
(is not speci\214ed, the standard output \(\214le descrip-)3.183 F .565
-(tor 1\) is used.)108 460.8 R .565(If the digits in)5.565 F F1(wor)3.406
-E(d)-.37 E F0 .566(do not specify a \214le descriptor open for output, \
-a redirection error oc-)3.836 F 3.204(curs. If)108 472.8 R F1(wor)3.544
-E(d)-.37 E F0 -.25(eva)3.974 G .704(luates to).25 F F2<ad>3.204 E F0
+(tor 1\) is used.)108 684 R .565(If the digits in)5.565 F F1(wor)3.406 E
+(d)-.37 E F0 .566(do not specify a \214le descriptor open for output, a\
+ redirection error oc-)3.836 F 3.204(curs. If)108 696 R F1(wor)3.544 E
+(d)-.37 E F0 -.25(eva)3.974 G .704(luates to).25 F 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>
+.965(not e)108 708 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 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
+-3.466 F(pre)108 720 Q(viously)-.25 E(.)-.65 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(31)185.115 E 0 Cg EP
+%%Page: 32 32
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95
-/Times-Bold@0 SF(ALIASES)72 84 Q/F2 10/Times-Italic@0 SF(Aliases)108 96
-Q F0(allo)3.173 E 3.173(was)-.25 G .674(tring to be substituted for a w)
--3.173 F .674(ord when it is used as the \214rst w)-.1 F .674
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(Mo)87 84 Q(ving File Descriptors)-.1 E F0(The redirection operator)
+108 96 Q([)144 112.8 Q/F2 10/Times-Italic@0 SF(n)A F0(])A F1(<&)A F2
+(digit)A F1<ad>A F0(mo)108 129.6 Q -.15(ve)-.15 G 3.018(st).15 G .518
+(he \214le descriptor)-3.018 F F2(digit)3.018 E F0 .518
+(to \214le descriptor)3.018 F F2(n)3.378 E F0 3.018(,o).24 G 3.018(rt)
+-3.018 G .517(he standard input \(\214le descriptor 0\) if)-3.018 F F2
+(n)3.017 E F0 .517(is not speci-)3.017 F(\214ed.)108 141.6 Q F2(digit)5
+E F0(is closed after being duplicated to)2.5 E F2(n)2.5 E F0(.)A
+(Similarly)108 158.4 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)
+144 175.2 Q F2(n)A F0(])A F1(>&)A F2(digit)A F1<ad>A F0(mo)108 192 Q
+-.15(ve)-.15 G 2.767(st).15 G .267(he \214le descriptor)-2.767 F F2
+(digit)2.767 E F0 .267(to \214le descriptor)2.767 F F2(n)3.127 E F0
+2.767(,o).24 G 2.767(rt)-2.767 G .268
+(he standard output \(\214le descriptor 1\) if)-2.767 F F2(n)2.768 E F0
+.268(is not speci-)2.768 F(\214ed.)108 204 Q F1
+(Opening File Descriptors f)87 220.8 Q(or Reading and Writing)-.25 E F0
+(The redirection operator)108 232.8 Q([)144 249.6 Q F2(n)A F0(])A F1(<>)
+A F2(wor)A(d)-.37 E F0 .518(causes the \214le whose name is the e)108
+266.4 R .518(xpansion of)-.15 F F2(wor)3.358 E(d)-.37 E F0 .518
+(to be opened for both reading and writing on \214le de-)3.788 F
+(scriptor)108 278.4 Q F2(n)2.86 E F0 2.5(,o).24 G 2.5(ro)-2.5 G 2.5
+<6e8c>-2.5 G(le descriptor 0 if)-2.5 E F2(n)2.86 E F0
+(is not speci\214ed.)2.74 E(If the \214le does not e)5 E
+(xist, it is created.)-.15 E/F3 10.95/Times-Bold@0 SF(ALIASES)72 295.2 Q
+F2(Aliases)108 307.2 Q F0(allo)3.173 E 3.173(was)-.25 G .674
+(tring to be substituted for a w)-3.173 F .674
+(ord when it is used as the \214rst w)-.1 F .674
(ord of a simple command.)-.1 F .394(The shell maintains a list of alia\
-ses that may be set and unset with the)108 108 R/F3 10/Times-Bold@0 SF
-(alias)2.893 E F0(and)2.893 E F3(unalias)2.893 E F0 -.2(bu)2.893 G .393
-(iltin commands).2 F(\(see)108 120 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B)
-4.479 F(UIL)-.09 E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48
-(w\). The)-.25 F 1.98(\214rst w)4.48 F 1.98
-(ord of each simple command, if unquoted, is)-.1 F(check)108 132 Q .473
-(ed to see if it has an alias.)-.1 F .473(If so, that w)5.473 F .472
-(ord is replaced by the te)-.1 F .472(xt of the alias.)-.15 F .472
-(The characters)5.472 F F3(/)2.972 E F0(,)A F3($)2.972 E F0(,)A F3<92>
-2.972 E F0(,)A(and)108 144 Q F3(=)3.611 E F0 1.111(and an)3.611 F 3.611
-(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell)-3.611 F F2(metac)3.612 E
-(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112
+ses that may be set and unset with the)108 319.2 R F1(alias)2.893 E F0
+(and)2.893 E F1(unalias)2.893 E F0 -.2(bu)2.893 G .393(iltin commands).2
+F(\(see)108 331.2 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B)4.479 F(UIL)-.09
+E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48(w\). The)-.25 F 1.98
+(\214rst w)4.48 F 1.98(ord of each simple command, if unquoted, is)-.1 F
+(check)108 343.2 Q .473(ed to see if it has an alias.)-.1 F .473
+(If so, that w)5.473 F .472(ord is replaced by the te)-.1 F .472
+(xt of the alias.)-.15 F .472(The characters)5.472 F F1(/)2.972 E F0(,)A
+F1($)2.972 E F0(,)A F1<92>2.972 E F0(,)A(and)108 355.2 Q F1(=)3.611 E F0
+1.111(and an)3.611 F 3.611(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell)
+-3.611 F F2(metac)3.612 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112
(or quoting characters listed abo)3.612 F 1.412 -.15(ve m)-.15 H 1.112
-(ay not appear in an alias).15 F 3.62(name. The)108 156 R 1.12
+(ay not appear in an alias).15 F 3.62(name. The)108 367.2 R 1.12
(replacement te)3.62 F 1.119(xt may contain an)-.15 F 3.619(yv)-.15 G
1.119(alid shell input, including shell metacharacters.)-3.869 F 1.119
-(The \214rst)6.119 F -.1(wo)108 168 S .513(rd of the replacement te).1 F
-.513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514
+(The \214rst)6.119 F -.1(wo)108 379.2 S .513(rd of the replacement te).1
+F .513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514
(ord that is identical to an alias being e)-.1 F .514(xpanded is)-.15 F
-.296(not e)108 180 R .296(xpanded a second time.)-.15 F .296
-(This means that one may alias)5.296 F F3(ls)2.796 E F0(to)2.796 E F3
-.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F3
-(bash)2.795 E F0 .295(does not try)2.795 F .528(to recursi)108 192 R
+.296(not e)108 391.2 R .296(xpanded a second time.)-.15 F .296
+(This means that one may alias)5.296 F F1(ls)2.796 E F0(to)2.796 E F1
+.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F1
+(bash)2.795 E F0 .295(does not try)2.795 F .528(to recursi)108 403.2 R
-.15(ve)-.25 G .528(ly e).15 F .528(xpand the replacement te)-.15 F
3.028(xt. If)-.15 F .528(the last character of the alias v)3.028 F .529
(alue is a)-.25 F F2(blank)3.299 E F0 3.029(,t).67 G .529(hen the ne)
--3.029 F(xt)-.15 E(command w)108 204 Q(ord follo)-.1 E
+-3.029 F(xt)-.15 E(command w)108 415.2 Q(ord follo)-.1 E
(wing the alias is also check)-.25 E(ed for alias e)-.1 E(xpansion.)-.15
-E(Aliases are created and listed with the)108 220.8 Q F3(alias)2.5 E F0
-(command, and remo)2.5 E -.15(ve)-.15 G 2.5(dw).15 G(ith the)-2.5 E F3
-(unalias)2.5 E F0(command.)2.5 E .284
-(There is no mechanism for using ar)108 237.6 R .284
-(guments in the replacement te)-.18 F 2.784(xt. If)-.15 F(ar)2.784 E
-.284(guments are needed, a shell func-)-.18 F(tion should be used \(see)
-108 249.6 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E .282
-(Aliases are not e)108 266.4 R .282
-(xpanded when the shell is not interacti)-.15 F -.15(ve)-.25 G 2.782(,u)
-.15 G .282(nless the)-2.782 F F3(expand_aliases)2.783 E F0 .283
-(shell option is set us-)2.783 F(ing)108 278.4 Q F3(shopt)2.5 E F0
-(\(see the description of)2.5 E F3(shopt)2.5 E F0(under)2.5 E F4
+E(Aliases are created and listed with the)108 432 Q F1(alias)2.5 E F0
+(command, and remo)2.5 E -.15(ve)-.15 G 2.5(dw).15 G(ith the)-2.5 E F1
+(unalias)2.5 E F0(command.)2.5 E .742
+(There is no mechanism for using ar)108 448.8 R .741
+(guments in the replacement te)-.18 F 3.241(xt. If)-.15 F(ar)3.241 E
+.741(guments are needed, use a shell)-.18 F(function \(see)108 460.8 Q
+F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E .282(Aliases are not e)108
+477.6 R .282(xpanded when the shell is not interacti)-.15 F -.15(ve)-.25
+G 2.782(,u).15 G .282(nless the)-2.782 F F1(expand_aliases)2.783 E F0
+.283(shell option is set us-)2.783 F(ing)108 489.6 Q F1(shopt)2.5 E F0
+(\(see the description of)2.5 E F1(shopt)2.5 E F0(under)2.5 E F4
(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25
E .436
(The rules concerning the de\214nition and use of aliases are some)108
-295.2 R .435(what confusing.)-.25 F F3(Bash)5.435 E F0(al)2.935 E -.1
+506.4 R .435(what confusing.)-.25 F F1(Bash)5.435 E F0(al)2.935 E -.1
(wa)-.1 G .435(ys reads at least).1 F .67
-(one complete line of input, and all lines that mak)108 307.2 R 3.17(eu)
+(one complete line of input, and all lines that mak)108 518.4 R 3.17(eu)
-.1 G 3.17(pac)-3.17 G .67(ompound command, before e)-3.17 F -.15(xe)
-.15 G .67(cuting an).15 F 3.17(yo)-.15 G 3.17(ft)-3.17 G(he)-3.17 E
-1.059(commands on that line or the compound command.)108 319.2 R 1.059
+1.059(commands on that line or the compound command.)108 530.4 R 1.059
(Aliases are e)6.059 F 1.058(xpanded when a command is read, not)-.15 F
-.074(when it is e)108 331.2 R -.15(xe)-.15 G 2.574(cuted. Therefore,).15
+.074(when it is e)108 542.4 R -.15(xe)-.15 G 2.574(cuted. Therefore,).15
F .075(an alias de\214nition appearing on the same line as another comm\
-and does not)2.574 F(tak)108 343.2 Q 2.838(ee)-.1 G -.25(ff)-2.838 G
+and does not)2.574 F(tak)108 554.4 Q 2.838(ee)-.1 G -.25(ff)-2.838 G
.338(ect until the ne).25 F .338(xt line of input is read.)-.15 F .337
(The commands follo)5.337 F .337
(wing the alias de\214nition on that line are)-.25 F .551(not af)108
-355.2 R .551(fected by the ne)-.25 F 3.051(wa)-.25 G 3.051(lias. This)
+566.4 R .551(fected by the ne)-.25 F 3.051(wa)-.25 G 3.051(lias. This)
-3.051 F(beha)3.051 E .551(vior is also an issue when functions are e)
-.2 F -.15(xe)-.15 G 3.051(cuted. Aliases).15 F .552(are e)3.052 F(x-)
-.15 E .426(panded when a function de\214nition is read, not when the f\
-unction is e)108 367.2 R -.15(xe)-.15 G .425
+unction is e)108 578.4 R -.15(xe)-.15 G .425
(cuted, because a function de\214nition).15 F .403(is itself a command.)
-108 379.2 R .403
+108 590.4 R .403
(As a consequence, aliases de\214ned in a function are not a)5.403 F
-.25(va)-.2 G .404(ilable until after that func-).25 F .862(tion is e)
-108 391.2 R -.15(xe)-.15 G 3.362(cuted. T).15 F 3.362(ob)-.8 G 3.362(es)
+108 602.4 R -.15(xe)-.15 G 3.362(cuted. T).15 F 3.362(ob)-.8 G 3.362(es)
-3.362 G .862(afe, al)-3.362 F -.1(wa)-.1 G .862
-(ys put alias de\214nitions on a separate line, and do not use).1 F F3
-(alias)3.362 E F0 .862(in com-)3.362 F(pound commands.)108 403.2 Q -.15
-(Fo)108 420 S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G
-(ry purpose, aliases are superseded by shell functions.).15 E F1
-(FUNCTIONS)72 436.8 Q F0 3.467(As)108 448.8 S .967
+(ys put alias de\214nitions on a separate line, and do not use).1 F F1
+(alias)3.362 E F0 .862(in com-)3.362 F(pound commands.)108 614.4 Q -.15
+(Fo)108 631.2 S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G
+(ry purpose, aliases are superseded by shell functions.).15 E F3
+(FUNCTIONS)72 648 Q F0 3.467(As)108 660 S .967
(hell function, de\214ned as described abo)-3.467 F 1.267 -.15(ve u)-.15
H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0
-.968(stores a series of commands for)3.217 F 1.002(later e)108 460.8 R
+.968(stores a series of commands for)3.217 F 1.002(later e)108 672 R
-.15(xe)-.15 G 3.502(cution. When).15 F 1.002(the name of a shell funct\
ion is used as a simple command name, the list of com-)3.502 F .315
-(mands associated with that function name is e)108 472.8 R -.15(xe)-.15
-G 2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .316
+(mands associated with that function name is e)108 684 R -.15(xe)-.15 G
+2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .316
(cuted in the conte).15 F .316(xt of the current)-.15 F .036
-(shell; no ne)108 484.8 R 2.536(wp)-.25 G .036
+(shell; no ne)108 696 R 2.536(wp)-.25 G .036
(rocess is created to interpret them \(contrast this with the e)-2.536 F
-.15(xe)-.15 G .036(cution of a shell script\).).15 F .035(When a)5.035
-F .639(function is e)108 496.8 R -.15(xe)-.15 G .639(cuted, the ar).15 F
+F .639(function is e)108 708 R -.15(xe)-.15 G .639(cuted, the ar).15 F
.639
(guments to the function become the positional parameters during its e)
--.18 F -.15(xe)-.15 G(cution.).15 E .533(The special parameter)108 508.8
-R F3(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532
-(Special parameter)5.532 F F3(0)3.032 E F0 .532(is unchanged.)3.032 F
-.532(The \214rst ele-)5.532 F(ment of the)108 520.8 Q F4(FUNCN)2.5 E
-(AME)-.18 E F0 -.25(va)2.25 G
+-.18 F -.15(xe)-.15 G(cution.).15 E 1.659(The special parameter)108 720
+R F1(#)4.159 E F0 1.659(is updated to re\215ect the change.)4.159 F
+1.659(Special parameter)6.659 F F1(0)4.159 E F0 1.658(is unchanged.)
+4.158 F 1.658(The \214rst)6.658 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(32)185.115 E 0 Cg EP
+%%Page: 33 33
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(element of the)108
+84 Q/F1 9/Times-Bold@0 SF(FUNCN)2.5 E(AME)-.18 E F0 -.25(va)2.25 G
(riable is set to the name of the function while the function is e).25 E
-.15(xe)-.15 G(cuting.).15 E 1.25(All other aspects of the shell e)108
-537.6 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25
+100.8 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25
(vironment are identical between a function and its caller with)-.4 F
-1.215(these e)108 549.6 R 1.215(xceptions: the)-.15 F F4(DEB)3.715 E(UG)
--.09 E F0(and)3.465 E F3(RETURN)3.715 E F0 1.215
-(traps \(see the description of the)3.715 F F3(trap)3.714 E F0 -.2(bu)
-3.714 G 1.214(iltin under).2 F F4(SHELL)3.714 E -.09(BU)108 561.6 S(IL)
+1.215(these e)108 112.8 R 1.215(xceptions: the)-.15 F F1(DEB)3.715 E(UG)
+-.09 E F0(and)3.465 E/F2 10/Times-Bold@0 SF(RETURN)3.715 E F0 1.215
+(traps \(see the description of the)3.715 F F2(trap)3.714 E F0 -.2(bu)
+3.714 G 1.214(iltin under).2 F F1(SHELL)3.714 E -.09(BU)108 124.8 S(IL)
.09 E .478(TIN COMMANDS)-.828 F F0(belo)2.728 E .479
(w\) are not inherited unless the function has been gi)-.25 F -.15(ve)
--.25 G 2.979(nt).15 G(he)-2.979 E F3(trace)2.979 E F0(attrib)2.979 E
-.479(ute \(see)-.2 F .421(the description of the)108 573.6 R F4(declar)
+-.25 G 2.979(nt).15 G(he)-2.979 E F2(trace)2.979 E F0(attrib)2.979 E
+.479(ute \(see)-.2 F .421(the description of the)108 136.8 R F1(declar)
2.92 E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)
--.25 F F3 .42(\255o functrace)2.92 F F0 .42
-(shell option has been enabled with the)2.92 F F3(set)2.92 E F0 -.2(bu)
-108 585.6 S .071(iltin \(in which case all functions inherit the).2 F F3
-(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F3(RETURN)2.572 E F0 .072
-(traps\), and the)2.572 F F4(ERR)2.572 E F0 .072(trap is not inher)2.322
-F(-)-.2 E(ited unless the)108 597.6 Q F3(\255o errtrace)2.5 E F0
-(shell option has been enabled.)2.5 E -1.11(Va)108 614.4 S .656
-(riables local to the function may be declared with the)1.11 F F3(local)
-3.155 E F0 -.2(bu)3.155 G .655(iltin command.).2 F(Ordinarily)5.655 E
-3.155(,v)-.65 G .655(ariables and)-3.405 F .05(their v)108 626.4 R .05
-(alues are shared between the function and its caller)-.25 F 5.051(.I)
--.55 G 2.551(fav)-5.051 G .051(ariable is declared)-2.801 F F3(local)
-2.551 E F0 2.551(,t)C .051(he v)-2.551 F(ariable')-.25 E 2.551(sv)-.55 G
-(isi-)-2.551 E 1.186(ble scope is restricted to that function and its c\
-hildren \(including the functions it calls\).)108 638.4 R 1.185(Local v)
-6.185 F(ariables)-.25 E("shado)108 650.4 Q .154(w" v)-.25 F .154
-(ariables with the same name declared at pre)-.25 F .155(vious scopes.)
--.25 F -.15(Fo)5.155 G 2.655(ri).15 G .155(nstance, a local v)-2.655 F
-.155(ariable declared)-.25 F .67(in a function hides a global v)108
-662.4 R .669(ariable of the same name: references and assignments refer\
- to the local v)-.25 F(ari-)-.25 E .688(able, lea)108 674.4 R .688
-(ving the global v)-.2 F .688(ariable unmodi\214ed.)-.25 F .688
-(When the function returns, the global v)5.688 F .688
-(ariable is once ag)-.25 F(ain)-.05 E(visible.)108 686.4 Q .727
-(The shell uses)108 703.2 R F2 .727(dynamic scoping)3.227 F F0 .726
-(to control a v)3.227 F(ariable')-.25 E 3.226(sv)-.55 G .726
-(isibility within functions.)-3.226 F -.4(Wi)5.726 G .726
-(th dynamic scoping,).4 F .007(visible v)108 715.2 R .007
-(ariables and their v)-.25 F .007
+-.25 F F2 .42(\255o functrace)2.92 F F0 .42
+(shell option has been enabled with the)2.92 F F2(set)2.92 E F0 -.2(bu)
+108 148.8 S .071(iltin \(in which case all functions inherit the).2 F F2
+(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F2(RETURN)2.572 E F0 .072
+(traps\), and the)2.572 F F1(ERR)2.572 E F0 .072(trap is not inher)2.322
+F(-)-.2 E(ited unless the)108 160.8 Q F2(\255o errtrace)2.5 E F0
+(shell option has been enabled.)2.5 E -1.11(Va)108 177.6 S .368
+(riables local to the function may be declared with the)1.11 F F2(local)
+2.868 E F0 -.2(bu)2.868 G .368(iltin command \().2 F/F3 10
+/Times-Italic@0 SF .368(local variables)B F0 2.868(\). Ordinar)B(-)-.2 E
+(ily)108 189.6 Q 2.88(,v)-.65 G .38(ariables and their v)-3.13 F .38
+(alues are shared between the function and its caller)-.25 F 5.38(.I)
+-.55 G 2.88(fav)-5.38 G .38(ariable is declared)-3.13 F F2(local)2.88 E
+F0(,)A(the v)108 201.6 Q(ariable')-.25 E 2.5(sv)-.55 G(isible scope is \
+restricted to that function and its children \(including the functions \
+it calls\).)-2.5 E .727(In the follo)108 218.4 R .727
+(wing description, the)-.25 F F3(curr)3.227 E .727(ent scope)-.37 F F0
+.726(is a currently- e)3.226 F -.15(xe)-.15 G .726(cuting function.).15
+F(Pre)5.726 E .726(vious scopes consist)-.25 F 1.003(of that function')
+108 230.4 R 3.503(sc)-.55 G 1.004
+(aller and so on, back to the "global" scope, where the shell is not e)
+-3.503 F -.15(xe)-.15 G 1.004(cuting an).15 F 3.504(ys)-.15 G(hell)
+-3.504 E 3.41(function. Consequently)108 242.4 R 3.41(,al)-.65 G .91
+(ocal v)-3.41 F .909(ariable at the current scope is a v)-.25 F .909
+(ariable declared using the)-.25 F F2(local)3.409 E F0(or)3.409 E F2
+(de-)3.409 E(clar)108 254.4 Q(e)-.18 E F0 -.2(bu)2.5 G
+(iltins in the function that is currently e).2 E -.15(xe)-.15 G(cuting.)
+.15 E .635(Local v)108 271.2 R .635(ariables "shado)-.25 F .635(w" v)
+-.25 F .635(ariables with the same name declared at pre)-.25 F .636
+(vious scopes.)-.25 F -.15(Fo)5.636 G 3.136(ri).15 G .636
+(nstance, a local)-3.136 F -.25(va)108 283.2 S .581
+(riable declared in a function hides a global v).25 F .58
+(ariable of the same name: references and assignments refer)-.25 F .182
+(to the local v)108 295.2 R .182(ariable, lea)-.25 F .183
+(ving the global v)-.2 F .183(ariable unmodi\214ed.)-.25 F .183
+(When the function returns, the global v)5.183 F(ariable)-.25 E
+(is once ag)108 307.2 Q(ain visible.)-.05 E .727(The shell uses)108 324
+R F3 .727(dynamic scoping)3.227 F F0 .726(to control a v)3.227 F
+(ariable')-.25 E 3.226(sv)-.55 G .726(isibility within functions.)-3.226
+F -.4(Wi)5.726 G .726(th dynamic scoping,).4 F .007(visible v)108 336 R
+.007(ariables and their v)-.25 F .007
(alues are a result of the sequence of function calls that caused e)-.25
F -.15(xe)-.15 G .008(cution to reach).15 F .814(the current function.)
-108 727.2 R .813(The v)5.814 F .813(alue of a v)-.25 F .813
+108 348 R .813(The v)5.814 F .813(alue of a v)-.25 F .813
(ariable that a function sees depends on its v)-.25 F .813
-(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(GNU Bash 5.1)72
-768 Q(2020 October 29)141.235 E(31)190.395 E 0 Cg EP
-%%Page: 32 32
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(an)108 84 Q 2.116
--.65(y, w)-.15 H .816
+(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(an)108 360 Q
+2.116 -.65(y, w)-.15 H .816
(hether that caller is the "global" scope or another shell function.).65
F .817(This is also the v)5.816 F .817(alue that a local)-.25 F -.25(va)
-108 96 S(riable declaration "shado).25 E(ws", and the v)-.25 E
+108 372 S(riable declaration "shado).25 E(ws", and the v)-.25 E
(alue that is restored when the function returns.)-.25 E -.15(Fo)108
-112.8 S 2.724(re).15 G .224(xample, if a v)-2.874 F(ariable)-.25 E/F1 10
-/Times-Italic@0 SF(var)2.724 E F0 .223(is declared as local in function)
-2.724 F F1(func1)2.723 E F0 2.723(,a)C(nd)-2.723 E F1(func1)2.723 E F0
-.223(calls another function)2.723 F F1(func2)2.723 E F0(,)A .463
-(references to)108 124.8 R F1(var)2.963 E F0 .463(made from within)2.963
-F F1(func2)2.963 E F0 .463(will resolv)2.963 F 2.964(et)-.15 G 2.964(ot)
--2.964 G .464(he local v)-2.964 F(ariable)-.25 E F1(var)2.964 E F0(from)
-2.964 E F1(func1)2.964 E F0 2.964(,s)C(hado)-2.964 E .464(wing an)-.25 F
-(y)-.15 E(global v)108 136.8 Q(ariable named)-.25 E F1(var)2.5 E F0(.)A
-(The)108 153.6 Q/F2 10/Times-Bold@0 SF(unset)2.983 E F0 -.2(bu)2.983 G
-.483(iltin also acts using the same dynamic scope: if a v).2 F .482
+388.8 S 2.724(re).15 G .224(xample, if a v)-2.874 F(ariable)-.25 E F3
+(var)2.724 E F0 .223(is declared as local in function)2.724 F F3(func1)
+2.723 E F0 2.723(,a)C(nd)-2.723 E F3(func1)2.723 E F0 .223
+(calls another function)2.723 F F3(func2)2.723 E F0(,)A .463
+(references to)108 400.8 R F3(var)2.963 E F0 .463(made from within)2.963
+F F3(func2)2.963 E F0 .463(will resolv)2.963 F 2.964(et)-.15 G 2.964(ot)
+-2.964 G .464(he local v)-2.964 F(ariable)-.25 E F3(var)2.964 E F0(from)
+2.964 E F3(func1)2.964 E F0 2.964(,s)C(hado)-2.964 E .464(wing an)-.25 F
+(y)-.15 E(global v)108 412.8 Q(ariable named)-.25 E F3(var)2.5 E F0(.)A
+(The)108 429.6 Q F2(unset)2.983 E F0 -.2(bu)2.983 G .483
+(iltin also acts using the same dynamic scope: if a v).2 F .482
(ariable is local to the current scope,)-.25 F F2(unset)2.982 E F0 .19
-(will unset it; otherwise the unset will refer to the v)108 165.6 R .19
+(will unset it; otherwise the unset will refer to the v)108 441.6 R .19
(ariable found in an)-.25 F 2.69(yc)-.15 G .19
(alling scope as described abo)-2.69 F -.15(ve)-.15 G 5.19(.I).15 G(f)
--5.19 E 2.721(av)108 177.6 S .221(ariable at the current local scope is\
- unset, it will remain so until it is reset in that scope or until the \
-func-)-2.971 F .013(tion returns.)108 189.6 R .013
-(Once the function returns, an)5.013 F 2.513(yi)-.15 G .014
-(nstance of the v)-2.513 F .014(ariable at a pre)-.25 F .014
-(vious scope will become visible.)-.25 F .567(If the unset acts on a v)
-108 201.6 R .566(ariable at a pre)-.25 F .566(vious scope, an)-.25 F
-3.066(yi)-.15 G .566(nstance of a v)-3.066 F .566
-(ariable with that name that had been)-.25 F(shado)108 213.6 Q
-(wed will become visible.)-.25 E(The)108 230.4 Q F2(FUNCNEST)3.528 E F0
--.25(va)3.528 G 1.028(riable, if set to a numeric v).25 F 1.028
+-5.19 E 3.325(av)108 453.6 S .824(ariable at the current local scope is\
+ unset, it will remain so \(appearing as unset\) until it is reset in t\
+hat)-3.575 F 1.141(scope or until the function returns.)108 465.6 R
+1.141(Once the function returns, an)6.141 F 3.641(yi)-.15 G 1.141
+(nstance of the v)-3.641 F 1.142(ariable at a pre)-.25 F(vious)-.25 E
+.977(scope will become visible.)108 477.6 R .976
+(If the unset acts on a v)5.977 F .976(ariable at a pre)-.25 F .976
+(vious scope, an)-.25 F 3.476(yi)-.15 G .976(nstance of a v)-3.476 F
+(ariable)-.25 E .007(with that name that had been shado)108 489.6 R .008
+(wed will become visible \(see belo)-.25 F 2.508(wh)-.25 G .508 -.25
+(ow t)-2.508 H(he).25 E F2(localv)2.508 E(ar_unset)-.1 E F0 .008
+(shell option)2.508 F(changes this beha)108 501.6 Q(vior\).)-.2 E(The)
+108 518.4 Q F2(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028
+(riable, if set to a numeric v).25 F 1.028
(alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108
-242.4 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G
+530.4 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G
(cations that e).2 E(xceed the limit cause the entire command to abort.)
--.15 E .044(If the b)108 259.2 R .043(uiltin command)-.2 F F2 -.18(re)
+-.15 E .043(If the b)108 547.2 R .043(uiltin command)-.2 F F2 -.18(re)
2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043
(cuted in a function, the function completes and e).15 F -.15(xe)-.15 G
-.043(cution resumes with).15 F 1.011(the ne)108 271.2 R 1.011
+.044(cution resumes with).15 F 1.012(the ne)108 559.2 R 1.012
(xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G
-1.011(ommand associated with the)-3.511 F F2(RETURN)3.512 E F0 1.012
-(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 283.2 R
--.15(xe)-.15 G .214(cution resumes.).15 F .213
-(When a function completes, the v)5.214 F .213
+1.011(ommand associated with the)-3.511 F F2(RETURN)3.511 E F0 1.011
+(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 571.2 R
+-.15(xe)-.15 G .213(cution resumes.).15 F .213
+(When a function completes, the v)5.213 F .214
(alues of the positional parameters and the spe-)-.25 F(cial parameter)
-108 295.2 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E
+108 583.2 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E
2.5(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe)
--2.65 G(cution.).15 E 1.358
-(Function names and de\214nitions may be listed with the)108 312 R F2
+-2.65 G(cution.).15 E 1.359
+(Function names and de\214nitions may be listed with the)108 600 R F2
<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 324 R F2<ad46>3.39 E F0 .89(option to)3.39 F F2
+F0(or)3.858 E F2(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F
+3.39(mands. The)108 612 R 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 336 R 2.826(,i)-.4 G 2.826(ft)-2.826 G
-(he)-2.826 E F2(extdeb)2.826 E(ug)-.2 E F0 .326
-(shell option is enabled\).)2.826 F .327(Functions may be e)5.327 F .327
-(xported so that subshells)-.15 F 1.298(automatically ha)108 348 R 1.598
--.15(ve t)-.2 H 1.298(hem de\214ned with the).15 F 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 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 376.8 R -.15(ve)-.25 G 5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871
-E F0 -.25(va)2.871 G .371
+.047(\214le and line number)108 624 R 2.546(,i)-.4 G 2.546(ft)-2.546 G
+(he)-2.546 E F2(extdeb)2.546 E(ug)-.2 E F0 .046
+(shell option is enabled\).)2.546 F .046(Functions may be e)5.046 F .046
+(xported so that child shell)-.15 F .492
+(processes \(those created when e)108 636 R -.15(xe)-.15 G .492
+(cuting a separate shell in).15 F -.2(vo)-.4 G .492
+(cation\) automatically ha).2 F .793 -.15(ve t)-.2 H .493
+(hem de\214ned with).15 F(the)108 648 Q F2<ad66>3.201 E F0 .701
+(option to the)3.201 F F2(export)3.201 E F0 -.2(bu)3.201 G 3.201
+(iltin. A).2 F .7(function de\214nition may be deleted using the)3.201 F
+F2<ad66>3.2 E F0 .7(option to the)3.2 F F2(unset)3.2 E F0 -.2(bu)108 660
+S(iltin.).2 E .371(Functions may be recursi)108 676.8 R -.15(ve)-.25 G
+5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871 E F0 -.25(va)2.871 G .371
(riable may be used to limit the depth of the function call).25 F .323
-(stack and restrict the number of function in)108 388.8 R -.2(vo)-.4 G
+(stack and restrict the number of function in)108 688.8 R -.2(vo)-.4 G
2.822(cations. By).2 F(def)2.822 E .322
-(ault, no limit is imposed on the number of re-)-.1 F(cursi)108 400.8 Q
-.3 -.15(ve c)-.25 H(alls.).15 E/F3 10.95/Times-Bold@0 SF(ARITHMETIC EV)
-72 417.6 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 1.088
-(The shell allo)108 429.6 R 1.088(ws arithmetic e)-.25 F 1.089
-(xpressions to be e)-.15 F -.25(va)-.25 G 1.089
-(luated, under certain circumstances \(see the).25 F F2(let)3.589 E F0
-(and)3.589 E F2(de-)3.589 E(clar)108 441.6 Q(e)-.18 E F0 -.2(bu)3.453 G
-.953(iltin commands, the).2 F F2(\(\()3.453 E F0 .952
+(ault, no limit is imposed on the number of re-)-.1 F(cursi)108 700.8 Q
+.3 -.15(ve c)-.25 H(alls.).15 E(GNU Bash 5.2)72 768 Q(2022 September 19)
+135.955 E(33)185.115 E 0 Cg EP
+%%Page: 34 34
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95
+/Times-Bold@0 SF(ARITHMETIC EV)72 84 Q(ALU)-1.478 E -1.04(AT)-.657 G
+(ION)1.04 E F0 1.088(The shell allo)108 96 R 1.088(ws arithmetic e)-.25
+F 1.089(xpressions to be e)-.15 F -.25(va)-.25 G 1.089
+(luated, under certain circumstances \(see the).25 F/F2 10/Times-Bold@0
+SF(let)3.589 E F0(and)3.589 E F2(de-)3.589 E(clar)108 108 Q(e)-.18 E F0
+-.2(bu)3.453 G .953(iltin commands, the).2 F F2(\(\()3.453 E F0 .952
(compound command, and)3.452 F F2 .952(Arithmetic Expansion)3.452 F F0
-3.452(\). Ev)B .952(aluation is done in)-.25 F<8c78>108 453.6 Q 1.057
+3.452(\). Ev)B .952(aluation is done in)-.25 F<8c78>108 120 Q 1.057
(ed-width inte)-.15 F 1.057(gers with no check for o)-.15 F -.15(ve)-.15
G(r\215o).15 E 2.357 -.65(w, t)-.25 H 1.057(hough di).65 F 1.057
(vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .829
-(The operators and their precedence, associati)108 465.6 R(vity)-.25 E
+(The operators and their precedence, associati)108 132 R(vity)-.25 E
3.329(,a)-.65 G .829(nd v)-3.329 F .829
(alues are the same as in the C language.)-.25 F .828(The fol-)5.828 F
-(lo)108 477.6 Q .439(wing list of operators is grouped into le)-.25 F
--.15(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le)
-5.44 F -.15(ve)-.25 G .44(ls are listed in order).15 F
-(of decreasing precedence.)108 489.6 Q F1(id)108 506.4 Q F2(++)A F1(id)
-2.5 E 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 -.2(ex)108 84 S(pr).2 E/F2 10/Times-Bold@0 SF(?)A F1
--.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0(conditional operator)144
-96 Q F2 2.5(=*)108 108 S 2.5(=/)-2.5 G 2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5
-<3dad>-2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=)-2.5 E F0(assignment)144 120
-Q F1 -.2(ex)108 132 S(pr1).2 E F2(,)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0
-(comma)144 144 Q .68(Shell v)108 160.8 R .68(ariables are allo)-.25 F
-.68(wed as operands; parameter e)-.25 F .68
+(lo)108 144 Q .439(wing list of operators is grouped into le)-.25 F -.15
+(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le)5.44
+F -.15(ve)-.25 G .44(ls are listed in order).15 F
+(of decreasing precedence.)108 156 Q/F3 10/Times-Italic@0 SF(id)108
+172.8 Q F2(++)A F3(id)2.5 E F2<adad>A F0 -.25(va)144 184.8 S
+(riable post-increment and post-decrement).25 E F2 2.5<ad2b>108 196.8 S
+F0(unary minus and plus)144 196.8 Q F2(++)108 208.8 Q F3(id)A F2<adad>
+2.5 E F3(id)A F0 -.25(va)144 220.8 S
+(riable pre-increment and pre-decrement).25 E F2 2.5(!~)108 232.8 S F0
+(logical and bitwise ne)144 232.8 Q -.05(ga)-.15 G(tion).05 E F2(**)108
+244.8 Q F0 -.15(ex)144 244.8 S(ponentiation).15 E F2 2.5(*/%)108 256.8 S
+F0(multiplication, di)144 256.8 Q(vision, remainder)-.25 E F2 2.5<2bad>
+108 268.8 S F0(addition, subtraction)144 268.8 Q F2(<< >>)108 280.8 Q F0
+(left and right bitwise shifts)144 280.8 Q F2(<= >= < >)108 292.8 Q F0
+(comparison)144 304.8 Q F2(== !=)108 316.8 Q F0(equality and inequality)
+144 316.8 Q F2(&)108 328.8 Q F0(bitwise AND)144 328.8 Q F2(^)108 340.8 Q
+F0(bitwise e)144 340.8 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|)
+108 352.8 Q F0(bitwise OR)144 352.8 Q F2(&&)108 364.8 Q F0(logical AND)
+144 364.8 Q F2(||)108 376.8 Q F0(logical OR)144 376.8 Q F3 -.2(ex)108
+388.8 S(pr).2 E F2(?)A F3 -.2(ex)C(pr).2 E F2(:)A F3 -.2(ex)C(pr).2 E F0
+(conditional operator)144 400.8 Q F2 2.5(=*)108 412.8 S 2.5(=/)-2.5 G
+2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>-2.5 G 2.5(=<)-2.5 G
+(<= >>= &= ^= |=)-2.5 E F0(assignment)144 424.8 Q F3 -.2(ex)108 436.8 S
+(pr1).2 E F2(,)2.5 E F3 -.2(ex)2.5 G(pr2).2 E F0(comma)144 448.8 Q .68
+(Shell v)108 465.6 R .68(ariables are allo)-.25 F .68
+(wed as operands; parameter e)-.25 F .68
(xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F
--.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 172.8 R 1.007(ithin an e)-.4
+-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 477.6 R 1.007(ithin an e)-.4
F 1.007(xpression, shell v)-.15 F 1.007
(ariables may also be referenced by name without using the parameter)
--.25 F -.15(ex)108 184.8 S .165(pansion syntax.).15 F 2.665(As)5.165 G
+-.25 F -.15(ex)108 489.6 S .165(pansion syntax.).15 F 2.665(As)5.165 G
.165(hell v)-2.665 F .165(ariable that is null or unset e)-.25 F -.25
(va)-.25 G .165(luates to 0 when referenced by name without us-).25 F
-.42(ing the parameter e)108 196.8 R .42(xpansion syntax.)-.15 F .42
+.42(ing the parameter e)108 501.6 R .42(xpansion syntax.)-.15 F .42
(The v)5.42 F .421(alue of a v)-.25 F .421(ariable is e)-.25 F -.25(va)
-.25 G .421(luated as an arithmetic e).25 F .421(xpression when)-.15 F
-.154(it is referenced, or when a v)108 208.8 R .154
+.154(it is referenced, or when a v)108 513.6 R .154
(ariable which has been gi)-.25 F -.15(ve)-.25 G 2.654(nt).15 G(he)
--2.654 E F1(inte)2.654 E -.1(ge)-.4 G(r).1 E F0(attrib)2.654 E .153
+-2.654 E F3(inte)2.654 E -.1(ge)-.4 G(r).1 E F0(attrib)2.654 E .153
(ute using)-.2 F F2(declar)2.653 E 2.653<65ad>-.18 G(i)-2.653 E F0 .153
-(is assigned a)2.653 F -.25(va)108 220.8 S 2.857(lue. A).25 F .357
+(is assigned a)2.653 F -.25(va)108 525.6 S 2.857(lue. A).25 F .357
(null v)2.857 F .357(alue e)-.25 F -.25(va)-.25 G .357(luates to 0.).25
F 2.857(As)5.357 G .357(hell v)-2.857 F .357(ariable need not ha)-.25 F
-.657 -.15(ve i)-.2 H(ts).15 E F1(inte)2.857 E -.1(ge)-.4 G(r).1 E F0
-(attrib)2.857 E .357(ute turned on to be used)-.2 F(in an e)108 232.8 Q
-(xpression.)-.15 E(Inte)108 249.6 Q .518(ger constants follo)-.15 F
+.657 -.15(ve i)-.2 H(ts).15 E F3(inte)2.857 E -.1(ge)-.4 G(r).1 E F0
+(attrib)2.857 E .357(ute turned on to be used)-.2 F(in an e)108 537.6 Q
+(xpression.)-.15 E(Inte)108 554.4 Q .518(ger constants follo)-.15 F
3.018(wt)-.25 G .518(he C language de\214nition, without suf)-3.018 F
<8c78>-.25 E .517(es or character constants.)-.15 F .517(Constants with)
-5.517 F 3.282(al)108 261.6 S .782
+5.517 F 3.282(al)108 566.4 S .782
(eading 0 are interpreted as octal numbers.)-3.282 F 3.283(Al)5.782 G
.783(eading 0x or 0X denotes he)-3.283 F 3.283(xadecimal. Otherwise,)
--.15 F(num-)3.283 E .816(bers tak)108 273.6 R 3.316(et)-.1 G .816
-(he form [)-3.316 F F1(base#)A F0 .815(]n, where the optional)B F1(base)
+-.15 F(num-)3.283 E .816(bers tak)108 578.4 R 3.316(et)-.1 G .816
+(he form [)-3.316 F F3(base#)A F0 .815(]n, where the optional)B F3(base)
3.315 E F0 .815(is a decimal number between 2 and 64 representing)3.315
-F .349(the arithmetic base, and)108 285.6 R F1(n)2.849 E F0 .349
-(is a number in that base.)2.849 F(If)5.35 E F1(base#)2.85 E F0 .35
+F .349(the arithmetic base, and)108 590.4 R F3(n)2.849 E F0 .349
+(is a number in that base.)2.849 F(If)5.35 E F3(base#)2.85 E F0 .35
(is omitted, then base 10 is used.)2.85 F .35(When speci-)5.35 F(fying)
-108 297.6 Q F1(n)2.975 E F0 2.975(,i)C 2.975(fan)-2.975 G .474(on-digit\
+108 602.4 Q F3(n)2.975 E F0 2.975(,i)C 2.975(fan)-2.975 G .474(on-digit\
is required, the digits greater than 9 are represented by the lo)-2.975
F .474(wercase letters, the up-)-.25 F .518
-(percase letters, @, and _, in that order)108 309.6 R 5.518(.I)-.55 G(f)
--5.518 E F1(base)3.018 E F0 .518(is less than or equal to 36, lo)3.018 F
+(percase letters, @, and _, in that order)108 614.4 R 5.518(.I)-.55 G(f)
+-5.518 E F3(base)3.018 E F0 .518(is less than or equal to 36, lo)3.018 F
.518(wercase and uppercase letters)-.25 F
(may be used interchangeably to represent numbers between 10 and 35.)108
-321.6 Q .235(Operators are e)108 338.4 R -.25(va)-.25 G .235
+626.4 Q .235(Operators are e)108 643.2 R -.25(va)-.25 G .235
(luated in order of precedence.).25 F(Sub-e)5.234 E .234
(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .234
-(luated \214rst and may).25 F -.15(ove)108 350.4 S
-(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95
-/Times-Bold@0 SF(CONDITION)72 367.2 Q(AL EXPRESSIONS)-.219 E F0 .255
-(Conditional e)108 379.2 R .255(xpressions are used by the)-.15 F F2([[)
-2.755 E F0 .255(compound command and the)2.755 F F2(test)2.755 E F0(and)
-2.755 E F2([)2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F
-.134(\214le attrib)108 391.2 R .134
+(luated \214rst and may).25 F -.15(ove)108 655.2 S
+(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E F1
+(CONDITION)72 672 Q(AL EXPRESSIONS)-.219 E F0 .255(Conditional e)108 684
+R .255(xpressions are used by the)-.15 F F2([[)2.755 E F0 .255
+(compound command and the)2.755 F F2(test)2.755 E F0(and)2.755 E F2([)
+2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F .134
+(\214le attrib)108 696 R .134
(utes and perform string and arithmetic comparisons.)-.2 F(The)5.133 E
F2(test)2.633 E F0(and)2.633 E F2([)2.633 E F0 .133
-(commands determine their be-)2.633 F(ha)108 403.2 Q .197
+(commands determine their be-)2.633 F(ha)108 708 Q .197
(vior based on the number of ar)-.2 F .198
(guments; see the descriptions of those commands for an)-.18 F 2.698(yo)
--.15 G .198(ther command-)-2.698 F(speci\214c actions.)108 415.2 Q .235
-(Expressions are formed from the follo)108 432 R .234
-(wing unary or binary primaries.)-.25 F F2(Bash)5.234 E F0 .234
-(handles se)2.734 F -.15(ve)-.25 G .234(ral \214lenames spe-).15 F .424
-(cially when the)108 444 R 2.924(ya)-.15 G .424(re used in e)-2.924 F
-2.925(xpressions. If)-.15 F .425(the operating system on which)2.925 F
-F2(bash)2.925 E F0 .425(is running pro)2.925 F .425(vides these)-.15 F
-.345(special \214les, bash will use them; otherwise it will emulate the\
-m internally with this beha)108 456 R .344(vior: If an)-.2 F(y)-.15 E F1
-(\214le)2.844 E F0(ar)2.844 E(-)-.2 E .805
-(gument to one of the primaries is of the form)108 468 R F1(/de)3.305 E
-(v/fd/n)-.15 E F0 3.306(,t)C .806(hen \214le descriptor)-3.306 F F1(n)
-3.306 E F0 .806(is check)3.306 F 3.306(ed. If)-.1 F(the)3.306 E F1
+-.15 G .198(ther command-)-2.698 F(speci\214c actions.)108 720 Q
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(34)185.115 E 0 Cg EP
+%%Page: 35 35
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .235
+(Expressions are formed from the follo)108 84 R .234
+(wing unary or binary primaries.)-.25 F/F1 10/Times-Bold@0 SF(Bash)5.234
+E F0 .234(handles se)2.734 F -.15(ve)-.25 G .234(ral \214lenames spe-)
+.15 F .424(cially when the)108 96 R 2.924(ya)-.15 G .424(re used in e)
+-2.924 F 2.925(xpressions. If)-.15 F .425(the operating system on which)
+2.925 F F1(bash)2.925 E F0 .425(is running pro)2.925 F .425(vides these)
+-.15 F .345(special \214les, bash will use them; otherwise it will emul\
+ate them internally with this beha)108 108 R .344(vior: If an)-.2 F(y)
+-.15 E/F2 10/Times-Italic@0 SF(\214le)2.844 E F0(ar)2.844 E(-)-.2 E .805
+(gument to one of the primaries is of the form)108 120 R F2(/de)3.305 E
+(v/fd/n)-.15 E F0 3.306(,t)C .806(hen \214le descriptor)-3.306 F F2(n)
+3.306 E F0 .806(is check)3.306 F 3.306(ed. If)-.1 F(the)3.306 E F2
(\214le)3.306 E F0(ar)3.306 E(gu-)-.18 E .03
-(ment to one of the primaries is one of)108 480 R F1(/de)2.53 E(v/stdin)
--.15 E F0(,)A F1(/de)2.529 E(v/stdout)-.15 E F0 2.529(,o)C(r)-2.529 E F1
+(ment to one of the primaries is one of)108 132 R F2(/de)2.53 E(v/stdin)
+-.15 E F0(,)A F2(/de)2.529 E(v/stdout)-.15 E F0 2.529(,o)C(r)-2.529 E F2
(/de)2.529 E(v/stderr)-.15 E F0 2.529<2c8c>C .029
-(le descriptor 0, 1, or 2, respec-)-2.529 F(ti)108 492 Q -.15(ve)-.25 G
+(le descriptor 0, 1, or 2, respec-)-2.529 F(ti)108 144 Q -.15(ve)-.25 G
(ly).15 E 2.5(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .721
(Unless otherwise speci\214ed, primaries that operate on \214les follo)
-108 508.8 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar)
--3.221 F(get)-.18 E(of the link, rather than the link itself.)108 520.8
-Q 1.096(When used with)108 538.8 R F2([[)3.596 E F0 3.596(,t)C(he)-3.596
-E F2(<)3.596 E F0(and)3.595 E F2(>)3.595 E F0 1.095(operators sort le)
+108 160.8 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar)
+-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 172.8
+Q 1.096(When used with)108 190.8 R F1([[)3.596 E F0 3.596(,t)C(he)-3.596
+E F1(<)3.596 E F0(and)3.595 E F1(>)3.595 E F0 1.095(operators sort le)
3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.095
-E F2(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108
-550.8 Q 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
+E F1(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108
+202.8 Q F1<ad61>108 226.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 226.8 S
+(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1<ad62>108
+238.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 238.8 S(ue if).35 E F2(\214le)2.5
+E F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F1<ad63>108
+250.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 250.8 S(ue if).35 E F2(\214le)2.5
+E F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F1
+<ad64>108 262.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 262.8 S(ue if).35 E F2
+(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F1
+<ad65>108 274.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 274.8 S(ue if).35 E F2
+(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1<ad66>108 286.8 Q F2
+(\214le)2.5 E F0 -.35(Tr)144 286.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15
+(ex)2.5 G(ists and is a re).15 E(gular \214le.)-.15 E F1<ad67>108 298.8
+Q F2(\214le)2.5 E F0 -.35(Tr)144 298.8 S(ue if).35 E F2(\214le)2.5 E F0
+-.15(ex)2.5 G(ists and is set-group-id.).15 E F1<ad68>108 310.8 Q F2
+(\214le)2.5 E F0 -.35(Tr)144 310.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15
+(ex)2.5 G(ists and is a symbolic link.).15 E F1<ad6b>108 322.8 Q F2
+(\214le)2.5 E F0 -.35(Tr)144 322.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15
(ex)2.5 G(ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G
-(it is set.)-2.5 E 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
+(it is set.)-2.5 E F1<ad70>108 334.8 Q F2(\214le)2.5 E F0 -.35(Tr)144
+334.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and is a named pipe \(FIFO\).).15 E F1<ad72>108 346.8 Q F2(\214le)
+2.5 E F0 -.35(Tr)144 346.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5
+G(ists and is readable.).15 E F1<ad73>108 358.8 Q F2(\214le)2.5 E F0
+-.35(Tr)144 358.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and has a size greater than zero.).15 E F1<ad74>108 370.8 Q F2(fd)
+2.5 E F0 -.35(Tr)144 370.8 S(ue if \214le descriptor).35 E F2(fd)4.47 E
+F0(is open and refers to a terminal.)3.27 E F1<ad75>108 382.8 Q F2
+(\214le)2.5 E F0 -.35(Tr)144 382.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15
+(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F1<ad77>108
+394.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 394.8 S(ue if).35 E F2(\214le)2.5
+E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1<ad78>108 406.8 Q F2
+(\214le)2.5 E F0 -.35(Tr)144 406.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15
+(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F1<ad47>108
+418.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 418.8 S(ue if).35 E F2(\214le)2.5
+E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti)-.25
+E .3 -.15(ve g)-.25 H(roup id.).15 E F1<ad4c>108 430.8 Q F2(\214le)2.5 E
+F0 -.35(Tr)144 430.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and is a symbolic link.).15 E F1<ad4e>108 442.8 Q F2(\214le)2.5 E
+F0 -.35(Tr)144 442.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F1
+<ad4f>108 454.8 Q F2(\214le)2.5 E F0 -.35(Tr)144 454.8 S(ue if).35 E F2
+(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E
+(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F1<ad53>108 466.8 Q F2
+(\214le)2.5 E F0 -.35(Tr)144 466.8 S(ue if).35 E F2(\214le)2.5 E F0 -.15
+(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2(\214le1)108 478.8 Q F1
+(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 490.8 S(ue if).35 E F2
+(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0(refer to the same de)2.5
+E(vice and inode numbers.)-.25 E F2(\214le1)108 502.8 Q F0<ad>2.5 E F1
+(nt)A F2(\214le2)2.5 E F0 -.35(Tr)144 514.8 S(ue if).35 E F2(\214le1)2.5
+E F0(is ne)2.5 E(wer \(according to modi\214cation date\) than)-.25 E F2
+(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0
+-.15(ex)2.5 G(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2
+(\214le1)108 526.8 Q F0<ad>2.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144
+538.8 S(ue if).35 E F2(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2)
+2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5
+G(ists and).15 E F2(\214le1)2.5 E F0(does not.)2.5 E F1<ad6f>108 550.8 Q
+F2(optname)2.5 E F0 -.35(Tr)144 562.8 S .262(ue if the shell option).35
+F F2(optname)2.992 E F0 .262(is enabled.)2.942 F .262
+(See the list of options under the description of the)5.262 F F1<ad6f>
+2.763 E F0(option to the)144 574.8 Q F1(set)2.5 E F0 -.2(bu)2.5 G
+(iltin belo).2 E -.65(w.)-.25 G F1<ad76>108 586.8 Q F2(varname)2.5 E F0
+-.35(Tr)144 598.8 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)
+2.79 E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1<ad52>
+108 610.8 Q F2(varname)2.5 E F0 -.35(Tr)144 622.8 S(ue if the shell v)
+.35 E(ariable)-.25 E F2(varname)2.79 E F0
+(is set and is a name reference.)2.68 E F1<ad7a>108 634.8 Q F2(string)
+2.5 E F0 -.35(Tr)144 646.8 S(ue if the length of).35 E F2(string)2.5 E
+F0(is zero.)2.5 E F2(string)108 658.8 Q F1<ad6e>108 670.8 Q F2(string)
+2.5 E F0 -.35(Tr)144 682.8 S(ue if the length of).35 E F2(string)2.84 E
+F0(is non-zero.)2.72 E F2(string1)108 699.6 Q F1(==)2.5 E F2(string2)2.5
+E F0(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(35)185.115 E 0 Cg
+EP
+%%Page: 36 36
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-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.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
-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 336 Q F2(string)2.5 E F0 -.35(Tr)144 348 S
-(ue if the length of).35 E F2(string)2.5 E F0(is zero.)2.5 E F2(string)
-108 360 Q 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 400.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 412.8 Q F1
-(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 424.8 S .862
-(ue if the strings are equal.).35 F F1(=)5.861 E F0 .861
-(should be used with the)3.361 F F1(test)3.361 E F0 .861
-(command for POSIX conformance.)3.361 F .446(When used with the)144
-436.8 R F1([[)2.946 E F0 .446
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF(string1)108 84 Q/F2 10/Times-Bold@0 SF(=)2.5 E F1
+(string2)2.5 E F0 -.35(Tr)144 96 S .862(ue if the strings are equal.).35
+F F2(=)5.861 E F0 .861(should be used with the)3.361 F F2(test)3.361 E
+F0 .861(command for POSIX conformance.)3.361 F .446(When used with the)
+144 108 R F2([[)2.946 E F0 .446
(command, this performs pattern matching as described abo)2.946 F .747
--.15(ve \()-.15 H F1(Compound).15 E(Commands)144 448.8 Q F0(\).)A F2
-(string1)108 465.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 477.6 S
-(ue if the strings are not equal.).35 E F2(string1)108 494.4 Q F1(<)2.5
-E F2(string2)2.5 E F0 -.35(Tr)144 506.4 S(ue if).35 E F2(string1)2.5 E
-F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15
-E(.)-.65 E F2(string1)108 523.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35
-(Tr)144 535.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2
-(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33
-552 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF
-(OP)144 564 Q F0 .385(is one of)2.635 F F1(\255eq)2.885 E F0(,)A F1
-(\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A
-F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385
-(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2
+-.15(ve \()-.15 H F2(Compound).15 E(Commands)144 120 Q F0(\).)A F1
+(string1)108 136.8 Q F2(!=)2.5 E F1(string2)2.5 E F0 -.35(Tr)144 148.8 S
+(ue if the strings are not equal.).35 E F1(string1)108 165.6 Q F2(<)2.5
+E F1(string2)2.5 E F0 -.35(Tr)144 177.6 S(ue if).35 E F1(string1)2.5 E
+F0(sorts before)2.5 E F1(string2)2.5 E F0(le)2.5 E(xicographically)-.15
+E(.)-.65 E F1(string1)108 194.4 Q F2(>)2.5 E F1(string2)2.5 E F0 -.35
+(Tr)144 206.4 S(ue if).35 E F1(string1)2.5 E F0(sorts after)2.5 E F1
+(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F1(ar)108.33
+223.2 Q(g1)-.37 E F2(OP)2.5 E F1(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF
+(OP)144 235.2 Q F0 .385(is one of)2.635 F F2(\255eq)2.885 E F0(,)A F2
+(\255ne)2.885 E F0(,)A F2(\255lt)2.885 E F0(,)A F2(\255le)2.885 E F0(,)A
+F2(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F2(\255ge)2.885 E F0 5.385
+(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F1
(ar)2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\
-s than or equal to, greater than, or greater than or equal to)144 576 R
-F2(ar)144 588 Q(g2)-.37 E F0 3.59(,r)C(especti)-3.59 E -.15(ve)-.25 G
-(ly).15 E(.)-.65 E F2(Ar)7.1 E(g1)-.37 E F0(and)3.59 E F2(ar)3.92 E(g2)
+s than or equal to, greater than, or greater than or equal to)144 247.2
+R F1(ar)144 259.2 Q(g2)-.37 E F0 3.59(,r)C(especti)-3.59 E -.15(ve)-.25
+G(ly).15 E(.)-.65 E F1(Ar)7.1 E(g1)-.37 E F0(and)3.59 E F1(ar)3.92 E(g2)
-.37 E F0 1.089(may be positi)3.61 F 1.389 -.15(ve o)-.25 H 3.589(rn).15
G -2.25 -.15(eg a)-3.589 H(ti).15 E 1.389 -.15(ve i)-.25 H(nte).15 E
-3.589(gers. When)-.15 F 1.089(used with the)3.589 F F1([[)3.589 E F0
-(command,)144 600 Q F2(Ar)4.447 E(g1)-.37 E F0(and)3.437 E F2(Ar)4.447 E
-(g2)-.37 E F0 .937(are e)3.457 F -.25(va)-.25 G .937
+3.589(gers. When)-.15 F 1.089(used with the)3.589 F F2([[)3.589 E F0
+(command,)144 271.2 Q F1(Ar)4.447 E(g1)-.37 E F0(and)3.437 E F1(Ar)4.447
+E(g2)-.37 E F0 .937(are e)3.457 F -.25(va)-.25 G .937
(luated as arithmetic e).25 F .937(xpressions \(see)-.15 F F3 .937
-(ARITHMETIC EV)3.437 F(ALU)-1.215 E(A-)-.54 E(TION)144 612 Q F0(abo)2.25
-E -.15(ve)-.15 G(\).).15 E/F4 10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)
-72 628.8 Q(ANSION)-.81 E F0 .614(When a simple command is e)108 640.8 R
--.15(xe)-.15 G .614(cuted, the shell performs the follo).15 F .613
-(wing e)-.25 F .613(xpansions, assignments, and redi-)-.15 F
-(rections, from left to right, in the follo)108 652.8 Q(wing order)-.25
-E(.)-.55 E(1.)108 669.6 Q 1.848(The w)144 669.6 R 1.848
+(ARITHMETIC EV)3.437 F(ALU)-1.215 E(A-)-.54 E(TION)144 283.2 Q F0(abo)
+2.25 E -.15(ve)-.15 G(\).).15 E/F4 10.95/Times-Bold@0 SF
+(SIMPLE COMMAND EXP)72 300 Q(ANSION)-.81 E F0 .614
+(When a simple command is e)108 312 R -.15(xe)-.15 G .614
+(cuted, the shell performs the follo).15 F .613(wing e)-.25 F .613
+(xpansions, assignments, and redi-)-.15 F
+(rections, from left to right, in the follo)108 324 Q(wing order)-.25 E
+(.)-.55 E(1.)108 340.8 Q 1.848(The w)144 340.8 R 1.848
(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.849
(ariable assignments \(those preceding the command)-.25 F
-(name\) and redirections are sa)144 681.6 Q -.15(ve)-.2 G 2.5(df).15 G
-(or later processing.)-2.5 E(2.)108 698.4 Q .18(The w)144 698.4 R .18
+(name\) and redirections are sa)144 352.8 Q -.15(ve)-.2 G 2.5(df).15 G
+(or later processing.)-2.5 E(2.)108 369.6 Q .18(The w)144 369.6 R .18
(ords that are not v)-.1 F .179
(ariable assignments or redirections are e)-.25 F 2.679(xpanded. If)-.15
F(an)2.679 E 2.679(yw)-.15 G .179(ords remain af-)-2.779 F .346(ter e)
-144 710.4 R .346(xpansion, the \214rst w)-.15 F .346(ord is tak)-.1 F
+144 381.6 R .346(xpansion, the \214rst w)-.15 F .346(ord is tak)-.1 F
.347(en to be the name of the command and the remaining w)-.1 F .347
-(ords are)-.1 F(the ar)144 722.4 Q(guments.)-.18 E(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(34)190.395 E 0 Cg EP
-%%Page: 35 35
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(3.)108 84 Q
-(Redirections are performed as described abo)144 84 Q .3 -.15(ve u)-.15
-H(nder).15 E/F1 9/Times-Bold@0 SF(REDIRECTION)2.5 E/F2 9/Times-Roman@0
-SF(.)A F0(4.)108 100.8 Q .717(The te)144 100.8 R .717(xt after the)-.15
-F/F3 10/Times-Bold@0 SF(=)3.217 E F0 .717(in each v)3.217 F .717
-(ariable assignment under)-.25 F .717(goes tilde e)-.18 F .717
-(xpansion, parameter e)-.15 F(xpansion,)-.15 E .339
-(command substitution, arithmetic e)144 112.8 R .339
+(ords are)-.1 F(the ar)144 393.6 Q(guments.)-.18 E(3.)108 410.4 Q
+(Redirections are performed as described abo)144 410.4 Q .3 -.15(ve u)
+-.15 H(nder).15 E F3(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0(4.)
+108 427.2 Q .717(The te)144 427.2 R .717(xt after the)-.15 F F2(=)3.217
+E F0 .717(in each v)3.217 F .717(ariable assignment under)-.25 F .717
+(goes tilde e)-.18 F .717(xpansion, parameter e)-.15 F(xpansion,)-.15 E
+.339(command substitution, arithmetic e)144 439.2 R .339
(xpansion, and quote remo)-.15 F -.25(va)-.15 G 2.839(lb).25 G .339
-(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 124.8 Q
-.332(If no command name results, the v)108 141.6 R .332
-(ariable assignments af)-.25 F .332(fect the current shell en)-.25 F
-2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 153.6 S .757
-(riables are added to the en).25 F .757(vironment of the e)-.4 F -.15
-(xe)-.15 G .757(cuted command and do not af).15 F .757
-(fect the current shell en)-.25 F(vi-)-.4 E 3.177(ronment. If)108 165.6
-R(an)3.177 E 3.177(yo)-.15 G 3.177(ft)-3.177 G .677
-(he assignments attempts to assign a v)-3.177 F .677
-(alue to a readonly v)-.25 F .676(ariable, an error occurs, and)-.25 F
-(the command e)108 177.6 Q(xits with a non-zero status.)-.15 E .149
-(If no command name results, redirections are performed, b)108 194.4 R
-.149(ut do not af)-.2 F .15(fect the current shell en)-.25 F 2.65
-(vironment. A)-.4 F(redirection error causes the command to e)108 206.4
+(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 451.2 Q
+.587(If no command name results, the v)108 468 R .586
+(ariable assignments af)-.25 F .586(fect the current shell en)-.25 F
+3.086(vironment. In)-.4 F .586(the case of)3.086 F .371(such a command \
+\(one that consists only of assignment statements and redirections\), a\
+ssignment statements)108 480 R .835(are performed before redirections.)
+108 492 R .835(Otherwise, the v)5.835 F .835
+(ariables are added to the en)-.25 F .835(vironment of the e)-.4 F -.15
+(xe)-.15 G(cuted).15 E .838(command and do not af)108 504 R .838
+(fect the current shell en)-.25 F 3.338(vironment. If)-.4 F(an)3.338 E
+3.338(yo)-.15 G 3.338(ft)-3.338 G .839
+(he assignments attempts to assign a)-3.338 F -.25(va)108 516 S
+(lue to a readonly v).25 E(ariable, an error occurs, and the command e)
+-.25 E(xits with a non-zero status.)-.15 E .15
+(If no command name results, redirections are performed, b)108 532.8 R
+.149(ut do not af)-.2 F .149(fect the current shell en)-.25 F 2.649
+(vironment. A)-.4 F(redirection error causes the command to e)108 544.8
Q(xit with a non-zero status.)-.15 E 1.064
-(If there is a command name left after e)108 223.2 R 1.064(xpansion, e)
+(If there is a command name left after e)108 561.6 R 1.064(xpansion, e)
-.15 F -.15(xe)-.15 G 1.064(cution proceeds as described belo).15 F
-4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .068(command e)108
-235.2 R 2.568(xits. If)-.15 F .069(one of the e)2.568 F .069
-(xpansions contained a command substitution, the e)-.15 F .069
-(xit status of the command)-.15 F .467(is the e)108 247.2 R .466
-(xit status of the last command substitution performed.)-.15 F .466
-(If there were no command substitutions, the)5.466 F(command e)108 259.2
-Q(xits with a status of zero.)-.15 E/F4 10.95/Times-Bold@0 SF
-(COMMAND EXECUTION)72 276 Q F0 .546
-(After a command has been split into w)108 288 R .547
+4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .069(command e)108
+573.6 R 2.569(xits. If)-.15 F .069(one of the e)2.569 F .069
+(xpansions contained a command substitution, the e)-.15 F .068
+(xit status of the command)-.15 F .466(is the e)108 585.6 R .466
+(xit status of the last command substitution performed.)-.15 F .467
+(If there were no command substitutions, the)5.466 F(command e)108 597.6
+Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 614.4 Q F0
+.547(After a command has been split into w)108 626.4 R .546
(ords, if it results in a simple command and an optional list of ar)-.1
-F(gu-)-.18 E(ments, the follo)108 300 Q(wing actions are tak)-.25 E(en.)
--.1 E .379(If the command name contains no slashes, the shell attempts \
-to locate it.)108 316.8 R .379(If there e)5.379 F .379
+F(gu-)-.18 E(ments, the follo)108 638.4 Q(wing actions are tak)-.25 E
+(en.)-.1 E .379(If the command name contains no slashes, the shell atte\
+mpts to locate it.)108 655.2 R .379(If there e)5.379 F .379
(xists a shell function by)-.15 F .246(that name, that function is in)
-108 328.8 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G
-.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F1(FUNCTIONS)
-2.746 E F2(.)A F0 .246(If the name does not match a func-)4.746 F
-(tion, the shell searches for it in the list of shell b)108 340.8 Q 2.5
+108 667.2 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G
+.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F3(FUNCTIONS)
+2.746 E F5(.)A F0 .246(If the name does not match a func-)4.746 F
+(tion, the shell searches for it in the list of shell b)108 679.2 Q 2.5
(uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E
-(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .31
-(If the name is neither a shell function nor a b)108 357.6 R .309
-(uiltin, and contains no slashes,)-.2 F F3(bash)2.809 E F0 .309
-(searches each element of)2.809 F(the)108 369.6 Q F1 -.666(PA)3.162 G
-(TH)-.189 E F0 .662(for a directory containing an e)2.912 F -.15(xe)-.15
-G .662(cutable \214le by that name.).15 F F3(Bash)5.662 E F0 .663
-(uses a hash table to remember)3.162 F 1.915(the full pathnames of e)108
-381.6 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F3(hash)4.415 E
-F0(under)4.415 E F1 1.915(SHELL B)4.415 F(UIL)-.09 E 1.914(TIN COMMANDS)
--.828 F F0(belo)4.164 E 4.414(w\). A)-.25 F(full)4.414 E .719
-(search of the directories in)108 393.6 R F1 -.666(PA)3.219 G(TH)-.189 E
-F0 .72(is performed only if the command is not found in the hash table.)
-2.969 F .72(If the)5.72 F .956(search is unsuccessful, the shell search\
-es for a de\214ned shell function named)108 405.6 R F3(command_not_f)
-3.455 E(ound_han-)-.25 E(dle)108 417.6 Q F0 6.005(.I)C 3.505(ft)-6.005 G
-1.005(hat function e)-3.505 F 1.005(xists, it is in)-.15 F -.2(vo)-.4 G
--.1(ke).2 G 3.506(di).1 G 3.506(nas)-3.506 G 1.006(eparate e)-3.506 F
--.15(xe)-.15 G 1.006(cution en).15 F 1.006
-(vironment with the original command)-.4 F .256
-(and the original command')108 429.6 R 2.756(sa)-.55 G -.18(rg)-2.756 G
-.256(uments as its ar).18 F .256(guments, and the function')-.18 F 2.755
-(se)-.55 G .255(xit status becomes the e)-2.905 F .255(xit sta-)-.15 F
-.263(tus of that subshell.)108 441.6 R .263(If that function is not de\
-\214ned, the shell prints an error message and returns an e)5.263 F .263
-(xit sta-)-.15 F(tus of 127.)108 453.6 Q 1.089(If the search is success\
-ful, or if the command name contains one or more slashes, the shell e)
-108 470.4 R -.15(xe)-.15 G 1.089(cutes the).15 F .197
-(named program in a separate e)108 482.4 R -.15(xe)-.15 G .197
-(cution en).15 F 2.698(vironment. Ar)-.4 F .198
-(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .198
-(n, and the remain-).15 F(ing ar)108 494.4 Q
-(guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15
-(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.049(If this e)108 511.2 R
--.15(xe)-.15 G 1.049(cution f).15 F 1.049
-(ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.048
-(cutable format, and the \214le is not a directory).15 F 3.548(,i)-.65 G
-3.548(ti)-3.548 G 3.548(sa)-3.548 G(s-)-3.548 E .042(sumed to be a)108
-523.2 R/F5 10/Times-Italic@0 SF .042(shell script)2.542 F F0 2.542
-(,a\214)C .043(le containing shell commands.)-2.542 F 2.543(As)5.043 G
-.043(ubshell is spa)-2.543 F .043(wned to e)-.15 F -.15(xe)-.15 G .043
-(cute it.).15 F .043(This sub-)5.043 F .275
-(shell reinitializes itself, so that the ef)108 535.2 R .274
-(fect is as if a ne)-.25 F 2.774(ws)-.25 G .274(hell had been in)-2.774
-F -.2(vo)-.4 G -.1(ke).2 G 2.774(dt).1 G 2.774(oh)-2.774 G .274
-(andle the script, with the)-2.774 F -.15(ex)108 547.2 S 2.357
-(ception that the locations of commands remembered by the parent \(see)
-.15 F F3(hash)4.858 E F0(belo)4.858 E 4.858(wu)-.25 G(nder)-4.858 E F1
-(SHELL)4.858 E -.09(BU)108 559.2 S(IL).09 E(TIN COMMANDS)-.828 E F2(\))A
-F0(are retained by the child.)2.25 E .348(If the program is a \214le be)
-108 576 R .348(ginning with)-.15 F F3(#!)2.848 E F0 2.848(,t)C .347(he \
-remainder of the \214rst line speci\214es an interpreter for the pro-)
--2.848 F 3.178(gram. The)108 588 R .678(shell e)3.178 F -.15(xe)-.15 G
-.678(cutes the speci\214ed interpreter on operating systems that do not\
- handle this e).15 F -.15(xe)-.15 G(cutable).15 E .206(format themselv)
-108 600 R 2.706(es. The)-.15 F(ar)2.706 E .206
-(guments to the interpreter consist of a single optional ar)-.18 F .206
-(gument follo)-.18 F .206(wing the in-)-.25 F .267
-(terpreter name on the \214rst line of the program, follo)108 612 R .268
-(wed by the name of the program, follo)-.25 F .268(wed by the com-)-.25
-F(mand ar)108 624 Q(guments, if an)-.18 E -.65(y.)-.15 G F4
-(COMMAND EXECUTION ENVIR)72 640.8 Q(ONMENT)-.329 E F0(The shell has an)
-108 652.8 Q F5 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E(onment)-.45 E F0
-2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 E<83>108 669.6 Q
-1.406(open \214les inherited by the shell at in)144 669.6 R -.2(vo)-.4 G
-1.405(cation, as modi\214ed by redirections supplied to the).2 F F3
-(exec)3.905 E F0 -.2(bu)144 681.6 S(iltin).2 E<83>108 698.4 Q
-(the current w)144 698.4 Q(orking directory as set by)-.1 E F3(cd)2.5 E
-F0(,)A F3(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F3(popd)2.5 E F0 2.5(,o)C 2.5
-(ri)-2.5 G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E
-<83>108 715.2 Q(the \214le creation mode mask as set by)144 715.2 Q F3
-(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent)
--2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(35)190.395 E 0 Cg
-EP
-%%Page: 36 36
+(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .309
+(If the name is neither a shell function nor a b)108 696 R .31
+(uiltin, and contains no slashes,)-.2 F F2(bash)2.81 E F0 .31
+(searches each element of)2.81 F(the)108 708 Q F3 -.666(PA)3.163 G(TH)
+-.189 E F0 .662(for a directory containing an e)2.913 F -.15(xe)-.15 G
+.662(cutable \214le by that name.).15 F F2(Bash)5.662 E F0 .662
+(uses a hash table to remember)3.162 F 1.914(the full pathnames of e)108
+720 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F2(hash)4.415 E
+F0(under)4.415 E F3 1.915(SHELL B)4.415 F(UIL)-.09 E 1.915(TIN COMMANDS)
+-.828 F F0(belo)4.165 E 4.415(w\). A)-.25 F(full)4.415 E(GNU Bash 5.2)72
+768 Q(2022 September 19)135.955 E(36)185.115 E 0 Cg EP
+%%Page: 37 37
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q
-(current traps set by)144 84 Q/F1 10/Times-Bold@0 SF(trap)2.5 E F0<83>
-108 100.8 Q .256(shell parameters that are set by v)144 100.8 R .256
-(ariable assignment or with)-.25 F F1(set)2.756 E F0 .257
-(or inherited from the shell')2.756 F 2.757(sp)-.55 G(arent)-2.757 E
-(in the en)144 112.8 Q(vironment)-.4 E<83>108 129.6 Q
-(shell functions de\214ned during e)144 129.6 Q -.15(xe)-.15 G
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .72
+(search of the directories in)108 84 R/F1 9/Times-Bold@0 SF -.666(PA)
+3.22 G(TH)-.189 E F0 .719
+(is performed only if the command is not found in the hash table.)2.97 F
+.719(If the)5.719 F .956(search is unsuccessful, the shell searches for\
+ a de\214ned shell function named)108 96 R/F2 10/Times-Bold@0 SF
+(command_not_f)3.456 E(ound_han-)-.25 E(dle)108 108 Q F0 6.006(.I)C
+3.506(ft)-6.006 G 1.006(hat function e)-3.506 F 1.006(xists, it is in)
+-.15 F -.2(vo)-.4 G -.1(ke).2 G 3.506(di).1 G 3.506(nas)-3.506 G 1.005
+(eparate e)-3.506 F -.15(xe)-.15 G 1.005(cution en).15 F 1.005
+(vironment with the original command)-.4 F .255
+(and the original command')108 120 R 2.755(sa)-.55 G -.18(rg)-2.755 G
+.255(uments as its ar).18 F .256(guments, and the function')-.18 F 2.756
+(se)-.55 G .256(xit status becomes the e)-2.906 F .256(xit sta-)-.15 F
+.263(tus of that subshell.)108 132 R .263(If that function is not de\
+\214ned, the shell prints an error message and returns an e)5.263 F .263
+(xit sta-)-.15 F(tus of 127.)108 144 Q 1.089(If the search is successfu\
+l, or if the command name contains one or more slashes, the shell e)108
+160.8 R -.15(xe)-.15 G 1.09(cutes the).15 F .198
+(named program in a separate e)108 172.8 R -.15(xe)-.15 G .198
+(cution en).15 F 2.698(vironment. Ar)-.4 F .198
+(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197
+(n, and the remain-).15 F(ing ar)108 184.8 Q
+(guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15
+(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.048(If this e)108 201.6 R
+-.15(xe)-.15 G 1.048(cution f).15 F 1.048
+(ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.049
+(cutable format, and the \214le is not a directory).15 F 3.549(,i)-.65 G
+3.549(ti)-3.549 G 3.549(sa)-3.549 G(s-)-3.549 E .143(sumed to be a)108
+213.6 R/F3 10/Times-Italic@0 SF .143(shell script)2.643 F F0 2.643
+(,a\214)C .143(le containing shell commands, and the shell creates a ne)
+-2.643 F 2.643(wi)-.25 G .143(nstance of itself to)-2.643 F -.15(exe)108
+225.6 S .136(cute it.).15 F .136
+(This subshell reinitializes itself, so that the ef)5.136 F .137
+(fect is as if a ne)-.25 F 2.637(ws)-.25 G .137(hell had been in)-2.637
+F -.2(vo)-.4 G -.1(ke).2 G 2.637(dt).1 G 2.637(oh)-2.637 G(andle)-2.637
+E .866(the script, with the e)108 237.6 R .866
+(xception that the locations of commands remembered by the parent \(see)
+-.15 F F2(hash)3.365 E F0(belo)3.365 E(w)-.25 E(under)108 249.6 Q F1
+(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E/F4 9/Times-Roman@0 SF(\))
+A F0(are retained by the child.)2.25 E .347
+(If the program is a \214le be)108 266.4 R .347(ginning with)-.15 F F2
+(#!)2.847 E F0 2.847(,t)C .348(he remainder of the \214rst line speci\
+\214es an interpreter for the pro-)-2.847 F 3.178(gram. The)108 278.4 R
+.678(shell e)3.178 F -.15(xe)-.15 G .678(cutes the speci\214ed interpre\
+ter on operating systems that do not handle this e).15 F -.15(xe)-.15 G
+(cutable).15 E .206(format themselv)108 290.4 R 2.706(es. The)-.15 F(ar)
+2.706 E .206(guments to the interpreter consist of a single optional ar)
+-.18 F .206(gument follo)-.18 F .206(wing the in-)-.25 F .268
+(terpreter name on the \214rst line of the program, follo)108 302.4 R
+.267(wed by the name of the program, follo)-.25 F .267(wed by the com-)
+-.25 F(mand ar)108 314.4 Q(guments, if an)-.18 E -.65(y.)-.15 G/F5 10.95
+/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 331.2 Q(ONMENT)-.329 E F0
+(The shell has an)108 343.2 Q F3 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E
+(onment)-.45 E F0 2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25
+E<83>108 360 Q 1.405(open \214les inherited by the shell at in)144 360 R
+-.2(vo)-.4 G 1.406
+(cation, as modi\214ed by redirections supplied to the).2 F F2(exec)
+3.906 E F0 -.2(bu)144 372 S(iltin).2 E<83>108 388.8 Q(the current w)144
+388.8 Q(orking directory as set by)-.1 E F2(cd)2.5 E F0(,)A F2(pushd)2.5
+E F0 2.5(,o)C(r)-2.5 E F2(popd)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G
+(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E<83>108
+405.6 Q(the \214le creation mode mask as set by)144 405.6 Q F2(umask)2.5
+E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent)-2.5 E<83>
+108 422.4 Q(current traps set by)144 422.4 Q F2(trap)2.5 E F0<83>108
+439.2 Q .257(shell parameters that are set by v)144 439.2 R .256
+(ariable assignment or with)-.25 F F2(set)2.756 E F0 .256
+(or inherited from the shell')2.756 F 2.756(sp)-.55 G(arent)-2.756 E
+(in the en)144 451.2 Q(vironment)-.4 E<83>108 468 Q
+(shell functions de\214ned during e)144 468 Q -.15(xe)-.15 G
(cution or inherited from the shell').15 E 2.5(sp)-.55 G
-(arent in the en)-2.5 E(vironment)-.4 E<83>108 146.4 Q
-(options enabled at in)144 146.4 Q -.2(vo)-.4 G(cation \(either by def)
-.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F1(set)
-2.5 E F0<83>108 163.2 Q(options enabled by)144 163.2 Q F1(shopt)2.5 E F0
-<83>108 180 Q(shell aliases de\214ned with)144 180 Q F1(alias)2.5 E F0
-<83>108 196.8 Q -.25(va)144 196.8 S
+(arent in the en)-2.5 E(vironment)-.4 E<83>108 484.8 Q
+(options enabled at in)144 484.8 Q -.2(vo)-.4 G(cation \(either by def)
+.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F2(set)
+2.5 E F0<83>108 501.6 Q(options enabled by)144 501.6 Q F2(shopt)2.5 E F0
+<83>108 518.4 Q(shell aliases de\214ned with)144 518.4 Q F2(alias)2.5 E
+F0<83>108 535.2 Q -.25(va)144 535.2 S
(rious process IDs, including those of background jobs, the v).25 E
-(alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E
-/F2 9/Times-Bold@0 SF(PPID)2.5 E F0 .427
-(When a simple command other than a b)108 213.6 R .426
-(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .426
-(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.926(di).1 G 2.926(nas)
--2.926 G(eparate)-2.926 E -.15(exe)108 225.6 S .133(cution en).15 F .133
+(alue of)-.25 E F2($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E
+F1(PPID)2.5 E F0 .426(When a simple command other than a b)108 552 R
+.427(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427
+(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.927(di).1 G 2.927(nas)
+-2.927 G(eparate)-2.927 E -.15(exe)108 564 S .134(cution en).15 F .134
(vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F
-.134(otherwise noted, the v)2.634 F .134(alues are inherited from)-.25 F
-(the shell.)108 237.6 Q<83>108 254.4 Q 1.056(the shell')144 254.4 R
-3.556(so)-.55 G 1.056(pen \214les, plus an)-3.556 F 3.556(ym)-.15 G
-1.056
+.133(otherwise noted, the v)2.634 F .133(alues are inherited from)-.25 F
+(the shell.)108 576 Q<83>108 592.8 Q 1.055(the shell')144 592.8 R 3.555
+(so)-.55 G 1.055(pen \214les, plus an)-3.555 F 3.556(ym)-.15 G 1.056
(odi\214cations and additions speci\214ed by redirections to the com-)
--3.556 F(mand)144 266.4 Q<83>108 283.2 Q(the current w)144 283.2 Q
-(orking directory)-.1 E<83>108 300 Q(the \214le creation mode mask)144
-300 Q<83>108 316.8 Q .856(shell v)144 316.8 R .857
+-3.556 F(mand)144 604.8 Q<83>108 621.6 Q(the current w)144 621.6 Q
+(orking directory)-.1 E<83>108 638.4 Q(the \214le creation mode mask)144
+638.4 Q<83>108 655.2 Q .857(shell v)144 655.2 R .857
(ariables and functions mark)-.25 F .857(ed for e)-.1 F .857
(xport, along with v)-.15 F .857(ariables e)-.25 F .857
-(xported for the command,)-.15 F(passed in the en)144 328.8 Q(vironment)
--.4 E<83>108 345.6 Q .307(traps caught by the shell are reset to the v)
-144 345.6 R .306(alues inherited from the shell')-.25 F 2.806(sp)-.55 G
-.306(arent, and traps ignored)-2.806 F(by the shell are ignored)144
-357.6 Q 2.5(Ac)108 374.4 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5
-(di).1 G 2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E
+(xported for the command,)-.15 F(passed in the en)144 667.2 Q(vironment)
+-.4 E<83>108 684 Q .306(traps caught by the shell are reset to the v)144
+684 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G .307
+(arent, and traps ignored)-2.807 F(by the shell are ignored)144 696 Q
+2.5(Ac)108 712.8 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G
+2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E
(fect the shell')-.25 E 2.5(se)-.55 G -.15(xe)-2.65 G(cution en).15 E
-(vironment.)-.4 E .577(Command substitution, commands grouped with pare\
-ntheses, and asynchronous commands are in)108 391.2 R -.2(vo)-.4 G -.1
-(ke).2 G 3.078(di).1 G(n)-3.078 E 2.745(as)108 403.2 S .245(ubshell en)
--2.745 F .245(vironment that is a duplicate of the shell en)-.4 F .244
-(vironment, e)-.4 F .244(xcept that traps caught by the shell are)-.15 F
-.358(reset to the v)108 415.2 R .358
+(vironment.)-.4 E(A)108 729.6 Q F3(subshell)2.5 E F0(is a cop)2.5 E 2.5
+(yo)-.1 G 2.5(ft)-2.5 G(he shell process.)-2.5 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(37)185.115 E 0 Cg EP
+%%Page: 38 38
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .577(Command subs\
+titution, commands grouped with parentheses, and asynchronous commands \
+are in)108 84 R -.2(vo)-.4 G -.1(ke).2 G 3.077(di).1 G(n)-3.077 E 2.744
+(as)108 96 S .244(ubshell en)-2.744 F .244
+(vironment that is a duplicate of the shell en)-.4 F .245(vironment, e)
+-.4 F .245(xcept that traps caught by the shell are)-.15 F .359
+(reset to the v)108 108 R .358
(alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4
-G 2.858(cation. Builtin).2 F .359(commands that are in)2.859 F -.2(vo)
--.4 G -.1(ke).2 G(d).1 E .857(as part of a pipeline are also e)108 427.2
-R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.356
-(vironment. Changes)-.4 F .856(made to the subshell en)3.356 F(viron-)
--.4 E(ment cannot af)108 439.2 Q(fect the shell')-.25 E 2.5(se)-.55 G
--.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.376(Subshells spa)108
-456 R 1.376(wned to e)-.15 F -.15(xe)-.15 G 1.377
+G 2.858(cation. Builtin).2 F .358(commands that are in)2.858 F -.2(vo)
+-.4 G -.1(ke).2 G(d).1 E .856(as part of a pipeline are also e)108 120 R
+-.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.357
+(vironment. Changes)-.4 F .857(made to the subshell en)3.357 F(viron-)
+-.4 E(ment cannot af)108 132 Q(fect the shell')-.25 E 2.5(se)-.55 G -.15
+(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.377(Subshells spa)108
+148.8 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377
(cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F
-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
+/F1 10/Times-Bold@0 SF<ad65>3.876 E F0 1.376(option from the parent)
+3.876 F 2.5(shell. When)108 160.8 R(not in)2.5 E/F2 10/Times-Italic@0 SF
+(posix mode)2.5 E F0(,)A F1(bash)2.5 E F0(clears the)2.5 E F1<ad65>2.5 E
+F0(option in such subshells.)2.5 E .404(If a command is follo)108 177.6
+R .404(wed by a)-.25 F F1(&)2.904 E F0 .405(and job control is not acti)
+2.904 F -.15(ve)-.25 G 2.905(,t).15 G .405(he def)-2.905 F .405
+(ault standard input for the command)-.1 F .198(is the empty \214le)108
+189.6 R F2(/de)2.698 E(v/null)-.15 E F0 5.198(.O)C .198
+(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc).1 G .197
+(ommand inherits the \214le descriptors of the calling shell)-2.698 F
+(as modi\214ed by redirections.)108 201.6 Q/F3 10.95/Times-Bold@0 SF
+(ENVIR)72 218.4 Q(ONMENT)-.329 E F0 2.343(When a program is in)108 230.4
R -.2(vo)-.4 G -.1(ke).2 G 4.843(di).1 G 4.843(ti)-4.843 G 4.843(sg)
-4.843 G -2.15 -.25(iv e)-4.843 H 4.843(na).25 G 4.843(na)-4.843 G 2.343
-(rray of strings called the)-4.843 F F3(en)5.033 E(vir)-.4 E(onment)-.45
-E F0 7.343(.T).68 G 2.343(his is a list of)-7.343 F F3(name)108 549.6 Q
-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
+(rray of strings called the)-4.843 F F2(en)5.033 E(vir)-.4 E(onment)-.45
+E F0 7.343(.T).68 G 2.344(his is a list of)-7.343 F F2(name)108 242.4 Q
+F0<ad>A F2(value)A F0(pairs, of the form)2.5 E F2(name)2.86 E F0(=)A F2
+(value)A F0(.).18 E .439(The shell pro)108 259.2 R .438(vides se)-.15 F
-.15(ve)-.25 G .438(ral w).15 F .438(ays to manipulate the en)-.1 F
2.938(vironment. On)-.4 F(in)2.938 E -.2(vo)-.4 G .438
-(cation, the shell scans its o).2 F .439(wn en-)-.25 F .709(vironment a\
+(cation, the shell scans its o).2 F .438(wn en-)-.25 F .709(vironment a\
nd creates a parameter for each name found, automatically marking it fo\
-r)108 578.4 R F3 -.2(ex)3.208 G(port).2 E F0 .708(to child pro-)3.888 F
-2.703(cesses. Ex)108 590.4 R .203(ecuted commands inherit the en)-.15 F
+r)108 271.2 R F2 -.2(ex)3.209 G(port).2 E F0 .709(to child pro-)3.889 F
+2.704(cesses. Ex)108 283.2 R .203(ecuted commands inherit the en)-.15 F
2.703(vironment. The)-.4 F F1(export)2.703 E F0(and)2.703 E F1(declar)
-2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.704
-(wp)-.25 G(aram-)-2.704 E .332
-(eters and functions to be added to and deleted from the en)108 602.4 R
+2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.703
+(wp)-.25 G(aram-)-2.703 E .332
+(eters and functions to be added to and deleted from the en)108 295.2 R
2.832(vironment. If)-.4 F .332(the v)2.832 F .332
-(alue of a parameter in the en-)-.25 F .131
-(vironment is modi\214ed, the ne)108 614.4 R 2.631(wv)-.25 G .131
-(alue becomes part of the en)-2.881 F .132
-(vironment, replacing the old.)-.4 F .132(The en)5.132 F(vironment)-.4 E
-.321(inherited by an)108 626.4 R 2.821(ye)-.15 G -.15(xe)-2.971 G .321
+(alue of a parameter in the en-)-.25 F .132
+(vironment is modi\214ed, the ne)108 307.2 R 2.632(wv)-.25 G .131
+(alue becomes part of the en)-2.882 F .131
+(vironment, replacing the old.)-.4 F .131(The en)5.131 F(vironment)-.4 E
+.32(inherited by an)108 319.2 R 2.82(ye)-.15 G -.15(xe)-2.97 G .321
(cuted command consists of the shell').15 F 2.821(si)-.55 G .321
-(nitial en)-2.821 F .32(vironment, whose v)-.4 F .32(alues may be modi-)
--.25 F .533(\214ed in the shell, less an)108 638.4 R 3.033(yp)-.15 G
-.534(airs remo)-3.033 F -.15(ve)-.15 G 3.034(db).15 G 3.034(yt)-3.034 G
-(he)-3.034 E F1(unset)3.034 E F0 .534(command, plus an)3.034 F 3.034(ya)
--.15 G .534(dditions via the)-3.034 F F1(export)3.034 E F0(and)3.034 E
-F1(de-)3.034 E(clar)108 650.4 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)
-2.5 E .563(The en)108 667.2 R .563(vironment for an)-.4 F(y)-.15 E F3
-.563(simple command)3.403 F F0 .562
+(nitial en)-2.821 F .321(vironment, whose v)-.4 F .321
+(alues may be modi-)-.25 F .534(\214ed in the shell, less an)108 331.2 R
+3.034(yp)-.15 G .534(airs remo)-3.034 F -.15(ve)-.15 G 3.034(db).15 G
+3.034(yt)-3.034 G(he)-3.034 E F1(unset)3.034 E F0 .534(command, plus an)
+3.034 F 3.033(ya)-.15 G .533(dditions via the)-3.033 F F1(export)3.033 E
+F0(and)3.033 E F1(de-)3.033 E(clar)108 343.2 Q 2.5<65ad>-.18 G(x)-2.5 E
+F0(commands.)2.5 E .562(The en)108 360 R .562(vironment for an)-.4 F(y)
+-.15 E F2 .562(simple command)3.402 F F0 .563
(or function may be augmented temporarily by pre\214xing it with)3.833 F
-.202(parameter assignments, as described abo)108 679.2 R .502 -.15(ve i)
--.15 H(n).15 E F2 -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF
-(.)A F0 .202(These assignment statements af)4.702 F .203(fect only the)
--.25 F(en)108 691.2 Q(vironment seen by that command.)-.4 E .81(If the)
-108 708 R 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
+.203(parameter assignments, as described abo)108 372 R .502 -.15(ve i)
+-.15 H(n).15 E/F4 9/Times-Bold@0 SF -.666(PA)2.702 G(RAMETERS).666 E/F5
+9/Times-Roman@0 SF(.)A F0 .202(These assignment statements af)4.702 F
+.202(fect only the)-.25 F(en)108 384 Q(vironment seen by that command.)
+-.4 E .81(If the)108 400.8 R 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 F2(all)3.64 E F0 .81
+(parameter assignments are placed in)3.82 F(the en)108 412.8 Q
(vironment for a command, not just those that precede the command name.)
--.4 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(36)190.395 E 0 Cg
-EP
-%%Page: 37 37
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(When)108 84 Q/F1
-10/Times-Bold@0 SF(bash)3.585 E F0(in)3.585 E -.2(vo)-.4 G -.1(ke).2 G
-3.585(sa).1 G 3.585(ne)-3.585 G 1.085(xternal command, the v)-3.735 F
-(ariable)-.25 E F1(_)3.585 E F0 1.086
+-.4 E(When)108 429.6 Q F1(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1
+(ke).2 G 3.586(sa).1 G 3.586(ne)-3.586 G 1.086(xternal command, the v)
+-3.736 F(ariable)-.25 E F1(_)3.586 E F0 1.085
(is set to the full \214lename of the command and)3.586 F
-(passed to that command in its en)108 96 Q(vironment.)-.4 E/F2 10.95
-/Times-Bold@0 SF(EXIT ST)72 112.8 Q -1.04(AT)-.986 G(US)1.04 E F0 .151
-(The e)108 124.8 R .151(xit status of an e)-.15 F -.15(xe)-.15 G .151
-(cuted command is the v).15 F .15(alue returned by the)-.25 F/F3 10
-/Times-Italic@0 SF(waitpid)2.65 E F0 .15(system call or equi)2.65 F -.25
-(va)-.25 G .15(lent func-).25 F 2.847(tion. Exit)108 136.8 R .347
-(statuses f)2.847 F .347(all between 0 and 255, though, as e)-.1 F .347
-(xplained belo)-.15 F 1.647 -.65(w, t)-.25 H .347(he shell may use v).65
-F .348(alues abo)-.25 F .648 -.15(ve 1)-.15 H(25).15 E(specially)108
-148.8 Q 5.507(.E)-.65 G .507(xit statuses from shell b)-5.507 F .507
+(passed to that command in its en)108 441.6 Q(vironment.)-.4 E F3
+(EXIT ST)72 458.4 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 470.4 R
+.15(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v)
+.15 F .151(alue returned by the)-.25 F F2(waitpid)2.651 E F0 .151
+(system call or equi)2.651 F -.25(va)-.25 G .151(lent func-).25 F 2.848
+(tion. Exit)108 482.4 R .348(statuses f)2.848 F .347
+(all between 0 and 255, though, as e)-.1 F .347(xplained belo)-.15 F
+1.647 -.65(w, t)-.25 H .347(he shell may use v).65 F .347(alues abo)-.25
+F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 494.4 Q 5.506(.E)-.65 G
+.506(xit statuses from shell b)-5.506 F .507
(uiltins and compound commands are also limited to this range.)-.2 F
-(Under)5.506 E(certain circumstances, the shell will use special v)108
-160.8 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15
-(Fo)108 177.6 S 3.372(rt).15 G .872(he shell')-3.372 F 3.372(sp)-.55 G
-.873(urposes, a command which e)-3.372 F .873(xits with a zero e)-.15 F
-.873(xit status has succeeded.)-.15 F .873(An e)5.873 F .873
-(xit status of)-.15 F .049(zero indicates success.)108 189.6 R 2.549(An)
-5.049 G .049(on-zero e)-2.549 F .049(xit status indicates f)-.15 F 2.549
-(ailure. When)-.1 F 2.549(ac)2.549 G .048(ommand terminates on a f)
--2.549 F .048(atal sig-)-.1 F(nal)108 201.6 Q F3(N)2.5 E F0(,)A F1(bash)
-2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F3(N)A F0(as the e)2.5 E
-(xit status.)-.15 E .404
-(If a command is not found, the child process created to e)108 218.4 R
--.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .405
-(If a command is)5.405 F(found b)108 230.4 Q(ut is not e)-.2 E -.15(xe)
--.15 G(cutable, the return status is 126.).15 E(If a command f)108 247.2
+(Under)5.507 E(certain circumstances, the shell will use special v)108
+506.4 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15
+(Fo)108 523.2 S 3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G
+.873(urposes, a command which e)-3.373 F .873(xits with a zero e)-.15 F
+.873(xit status has succeeded.)-.15 F .872(An e)5.872 F .872
+(xit status of)-.15 F .048(zero indicates success.)108 535.2 R 2.548(An)
+5.048 G .049(on-zero e)-2.548 F .049(xit status indicates f)-.15 F 2.549
+(ailure. When)-.1 F 2.549(ac)2.549 G .049(ommand terminates on a f)
+-2.549 F .049(atal sig-)-.1 F(nal)108 547.2 Q F2(N)2.5 E F0(,)A F1(bash)
+2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F2(N)A F0(as the e)2.5 E
+(xit status.)-.15 E .405
+(If a command is not found, the child process created to e)108 564 R
+-.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .404
+(If a command is)5.404 F(found b)108 576 Q(ut is not e)-.2 E -.15(xe)
+-.15 G(cutable, the return status is 126.).15 E(If a command f)108 592.8
Q(ails because of an error during e)-.1 E
(xpansion or redirection, the e)-.15 E(xit status is greater than zero.)
--.15 E .081(Shell b)108 264 R .081
-(uiltin commands return a status of 0 \()-.2 F F3(true)A F0 2.581(\)i)C
-2.581(fs)-2.581 G .08(uccessful, and non-zero \()-2.581 F F3(false)A F0
-2.58(\)i)C 2.58(fa)-2.58 G 2.58(ne)-2.58 G .08(rror occurs while)-2.58 F
-(the)108 276 Q 2.967(ye)-.15 G -.15(xe)-3.117 G 2.967(cute. All).15 F
--.2(bu)2.967 G .467(iltins return an e).2 F .468
+-.15 E .08(Shell b)108 609.6 R .08
+(uiltin commands return a status of 0 \()-.2 F F2(true)A F0 2.581(\)i)C
+2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F2(false)A F0
+2.581(\)i)C 2.581(fa)-2.581 G 2.581(ne)-2.581 G .081(rror occurs while)
+-2.581 F(the)108 621.6 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968
+(cute. All).15 F -.2(bu)2.968 G .468(iltins return an e).2 F .468
(xit status of 2 to indicate incorrect usage, generally in)-.15 F -.25
-(va)-.4 G .468(lid options or).25 F(missing ar)108 288 Q(guments.)-.18 E
-F1(Bash)108 304.8 Q F0 .202(itself returns the e)2.702 F .202
-(xit status of the last command e)-.15 F -.15(xe)-.15 G .201
-(cuted, unless a syntax error occurs, in which case).15 F(it e)108 316.8
+(va)-.4 G .467(lid options or).25 F(missing ar)108 633.6 Q(guments.)-.18
+E(The e)108 650.4 Q(xit status of the last command is a)-.15 E -.25(va)
+-.2 G(ilable in the special parameter $?.).25 E F1(Bash)108 667.2 Q F0
+.201(itself returns the e)2.701 F .202(xit status of the last command e)
+-.15 F -.15(xe)-.15 G .202
+(cuted, unless a syntax error occurs, in which case).15 F(it e)108 679.2
Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F1
-(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F2
-(SIGN)72 333.6 Q(ALS)-.219 E F0(When)108 345.6 Q F1(bash)2.502 E F0 .002
+(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F3
+(SIGN)72 696 Q(ALS)-.219 E F0(When)108 708 Q F1(bash)2.503 E F0 .002
(is interacti)2.502 F -.15(ve)-.25 G 2.502(,i).15 G 2.502(nt)-2.502 G
.002(he absence of an)-2.502 F 2.502(yt)-.15 G .002(raps, it ignores)
--2.502 F/F4 9/Times-Bold@0 SF(SIGTERM)2.502 E F0 .002(\(so that)2.252 F
-F1 .002(kill 0)2.502 F F0 .002(does not kill an in-)2.502 F(teracti)108
-357.6 Q 1.216 -.15(ve s)-.25 H .916(hell\), and).15 F F4(SIGINT)3.416 E
-F0 .915(is caught and handled \(so that the)3.166 F F1(wait)3.415 E F0
--.2(bu)3.415 G .915(iltin is interruptible\).).2 F .915(In all cases,)
-5.915 F F1(bash)108 369.6 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E/F5
-9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E(fect,)-.25 E F1
-(bash)2.5 E F0(ignores)2.5 E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)
--.162 E F5(,)A F0(and)2.25 E F4(SIGTSTP)2.5 E F5(.)A F0(Non-b)108 386.4
-Q 1.064(uiltin commands run by)-.2 F F1(bash)3.564 E F0(ha)3.564 E 1.365
--.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 F 1.065
-(alues inherited by the shell from its)-.25 F 3.248(parent. When)108
-398.4 R .748(job control is not in ef)3.248 F .747
-(fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.247 E F0(and)
-2.997 E F4(SIGQ)3.247 E(UIT)-.09 E F0 .747(in addi-)2.997 F .652
-(tion to these inherited handlers.)108 410.4 R .653
-(Commands run as a result of command substitution ignore the k)5.652 F
--.15(ey)-.1 G(board-).15 E(generated job control signals)108 422.4 Q F4
-(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4
-(SIGTSTP)2.5 E F5(.)A F0 2.046(The shell e)108 439.2 R 2.046
-(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F4(SIGHUP)4.545 E
-F5(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.345
--.15(ve s)-.25 H 2.045(hell resends the).15 F F4(SIGHUP)108 451.2 Q F0
-1.004(to all jobs, running or stopped.)3.254 F 1.004
-(Stopped jobs are sent)6.004 F F4(SIGCONT)3.505 E F0 1.005
-(to ensure that the)3.255 F 3.505(yr)-.15 G(ecei)-3.505 E 1.305 -.15
-(ve t)-.25 H(he).15 E F4(SIGHUP)108 463.2 Q F5(.)A F0 2.53 -.8(To p)5.43
-H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal to a \
-particular job, it should be remo).15 F -.15(ve)-.15 G 3.429(df).15 G
-.929(rom the)-3.429 F 1.356(jobs table with the)108 475.2 R F1(diso)
-3.856 E(wn)-.1 E F0 -.2(bu)3.856 G 1.356(iltin \(see).2 F F4 1.356
-(SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.607 E
-1.357(w\) or mark)-.25 F 1.357(ed to not recei)-.1 F -.15(ve)-.25 G F4
-(SIGHUP)108 487.2 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A
-.166(If the)108 504 R F1(huponexit)2.666 E F0 .166
+-2.502 F F4(SIGTERM)2.502 E F0 .002(\(so that)2.252 F F1 .002(kill 0)
+2.502 F F0 .002(does not kill an in-)2.502 F(teracti)108 720 Q 1.215
+-.15(ve s)-.25 H .915(hell\), and).15 F F4(SIGINT)3.415 E F0 .915
+(is caught and handled \(so that the)3.165 F F1(wait)3.415 E F0 -.2(bu)
+3.416 G .916(iltin is interruptible\).).2 F .916(In all cases,)5.916 F
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(38)185.115 E 0 Cg EP
+%%Page: 39 39
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(bash)108 84 Q F0(ignores)2.5 E/F2 9/Times-Bold@0 SF(SIGQ)2.5 E(UIT)
+-.09 E/F3 9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E(fect,)
+-.25 E F1(bash)2.5 E F0(ignores)2.5 E F2(SIGTTIN)2.5 E F3(,)A F2(SIGTT)
+2.25 E(OU)-.162 E F3(,)A F0(and)2.25 E F2(SIGTSTP)2.5 E F3(.)A F0(Non-b)
+108 100.8 Q 1.065(uiltin commands run by)-.2 F F1(bash)3.565 E F0(ha)
+3.565 E 1.365 -.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 F
+1.064(alues inherited by the shell from its)-.25 F 3.247(parent. When)
+108 112.8 R .747(job control is not in ef)3.247 F .747
+(fect, asynchronous commands ignore)-.25 F F2(SIGINT)3.248 E F0(and)
+2.998 E F2(SIGQ)3.248 E(UIT)-.09 E F0 .748(in addi-)2.998 F .653
+(tion to these inherited handlers.)108 124.8 R .653
+(Commands run as a result of command substitution ignore the k)5.653 F
+-.15(ey)-.1 G(board-).15 E(generated job control signals)108 136.8 Q F2
+(SIGTTIN)2.5 E F3(,)A F2(SIGTT)2.25 E(OU)-.162 E F3(,)A F0(and)2.25 E F2
+(SIGTSTP)2.5 E F3(.)A F0 2.045(The shell e)108 153.6 R 2.045
+(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F2(SIGHUP)4.545 E
+F3(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.346
+-.15(ve s)-.25 H 2.046(hell resends the).15 F F2(SIGHUP)108 165.6 Q F0
+1.005(to all jobs, running or stopped.)3.255 F 1.004
+(Stopped jobs are sent)6.005 F F2(SIGCONT)3.504 E F0 1.004
+(to ensure that the)3.254 F 3.504(yr)-.15 G(ecei)-3.504 E 1.304 -.15
+(ve t)-.25 H(he).15 E F2(SIGHUP)108 177.6 Q F3(.)A F0 2.529 -.8(To p)
+5.429 H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal\
+ to a particular job, it should be remo).15 F -.15(ve)-.15 G 3.43(df).15
+G .93(rom the)-3.43 F 1.357(jobs table with the)108 189.6 R F1(diso)
+3.857 E(wn)-.1 E F0 -.2(bu)3.857 G 1.357(iltin \(see).2 F F2 1.356
+(SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.606 E
+1.356(w\) or mark)-.25 F 1.356(ed to not recei)-.1 F -.15(ve)-.25 G F2
+(SIGHUP)108 201.6 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A
+.166(If the)108 218.4 R F1(huponexit)2.666 E F0 .166
(shell option has been set with)2.666 F F1(shopt)2.666 E F0(,)A F1(bash)
-2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166
+2.666 E F0 .166(sends a)2.666 F F2(SIGHUP)2.666 E F0 .166
(to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108
-516 Q(xits.)-.15 E(If)108 532.8 Q F1(bash)3.046 E F0 .546(is w)3.046 F
+230.4 Q(xits.)-.15 E(If)108 247.2 Q F1(bash)3.047 E F0 .547(is w)3.047 F
.546(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G
3.046(sas).15 G .546(ignal for which a trap has been set, the trap)
--3.046 F .663(will not be e)108 544.8 R -.15(xe)-.15 G .663
+-3.046 F .662(will not be e)108 259.2 R -.15(xe)-.15 G .662
(cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E
-F0 .662(is w)3.163 F .662(aiting for an asynchronous command)-.1 F .326
-(via the)108 556.8 R F1(wait)2.826 E F0 -.2(bu)2.826 G .327(iltin, the \
+F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .327
+(via the)108 271.2 R F1(wait)2.827 E F0 -.2(bu)2.827 G .327(iltin, the \
reception of a signal for which a trap has been set will cause the).2 F
-F1(wait)2.827 E F0 -.2(bu)2.827 G .327(iltin to re-).2 F
-(turn immediately with an e)108 568.8 Q
+F1(wait)2.826 E F0 -.2(bu)2.826 G .326(iltin to re-).2 F
+(turn immediately with an e)108 283.2 Q
(xit status greater than 128, immediately after which the trap is e)-.15
-E -.15(xe)-.15 G(cuted.).15 E F2(JOB CONTR)72 585.6 Q(OL)-.329 E F3 -.25
-(Jo)108 597.6 S 3.369(bc).25 G(ontr)-3.369 E(ol)-.45 E F0 .868
-(refers to the ability to selecti)3.879 F -.15(ve)-.25 G .868
-(ly stop \().15 F F3(suspend)A F0 3.368(\)t)C .868(he e)-3.368 F -.15
-(xe)-.15 G .868(cution of processes and continue \().15 F F3 -.37(re)C
-(-).37 E(sume)108 609.6 Q F0 2.664(\)t)C .164(heir e)-2.664 F -.15(xe)
--.15 G .164(cution at a later point.).15 F 2.665(Au)5.165 G .165
+E -.15(xe)-.15 G(cuted.).15 E .498(When job control is not enabled, and)
+108 300 R F1(bash)2.998 E F0 .498(is w)2.998 F .498(aiting for a fore)
+-.1 F .499(ground command to complete, the shell re-)-.15 F(cei)108 312
+Q -.15(ve)-.25 G 2.606(sk).15 G -.15(ey)-2.706 G .105
+(board-generated signals such as).15 F F2(SIGINT)2.605 E F0 .105
+(\(usually generated by)2.355 F F1(^C)2.605 E F0 2.605(\)t)C .105
+(hat users commonly intend to)-2.605 F .423(send to that command.)108
+324 R .424(This happens because the shell and the command are in the sa\
+me process group as)5.424 F(the terminal, and)108 336 Q F1(^C)2.5 E F0
+(sends)2.5 E F2(SIGINT)2.5 E F0(to all processes in that process group.)
+2.25 E(When)108 352.8 Q F1(bash)3.801 E F0 1.3
+(is running without job control enabled and recei)3.8 F -.15(ve)-.25 G
+(s).15 E F2(SIGINT)3.8 E F0 1.3(while w)3.55 F 1.3(aiting for a fore)-.1
+F(ground)-.15 E .809(command, it w)108 364.8 R .809
+(aits until that fore)-.1 F .81
+(ground command terminates and then decides what to do about the)-.15 F
+F2(SIG-)3.31 E(INT)108 376.8 Q F3(:)A F0(1.)108 393.6 Q .003
+(If the command terminates due to the)144 393.6 R F2(SIGINT)2.503 E F3
+(,)A F1(bash)2.252 E F0 .002
+(concludes that the user meant to end the entire)2.502 F
+(script, and acts on the)144 405.6 Q F2(SIGINT)2.5 E F0
+(\(e.g., by running a)2.25 E F2(SIGINT)2.5 E F0(trap or e)2.25 E
+(xiting itself\);)-.15 E(2.)108 422.4 Q .288
+(If the command does not terminate due to)144 422.4 R F2(SIGINT)2.788 E
+F3(,)A F0 .288(the program handled the)2.538 F F2(SIGINT)2.789 E F0 .289
+(itself and did)2.539 F .728(not treat it as a f)144 434.4 R .728
+(atal signal.)-.1 F .728(In that case,)5.728 F F1(bash)3.228 E F0 .728
+(does not treat)3.228 F F2(SIGINT)3.228 E F0 .728(as a f)2.978 F .728
+(atal signal, either)-.1 F 3.228(,i)-.4 G(n-)-3.228 E .771
+(stead assuming that the)144 446.4 R F2(SIGINT)3.271 E F0 -.1(wa)3.021 G
+3.271(su).1 G .771(sed as part of the program')-3.271 F 3.272(sn)-.55 G
+.772(ormal operation \(e.g., emacs)-3.272 F .41
+(uses it to abort editing commands\) or deliberately discarded.)144
+458.4 R(Ho)5.409 E(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G F1(bash)3.309 E
+F0 .409(will run an)2.909 F 2.909(yt)-.15 G .409(rap set)-2.909 F(on)144
+470.4 Q F2(SIGINT)3.788 E F3(,)A F0 1.288(as it does with an)3.538 F
+3.788(yo)-.15 G 1.288(ther trapped signal it recei)-3.788 F -.15(ve)-.25
+G 3.789(sw).15 G 1.289(hile it is w)-3.789 F 1.289(aiting for the fore-)
+-.1 F(ground command to complete, for compatibility)144 482.4 Q(.)-.65 E
+/F4 10.95/Times-Bold@0 SF(JOB CONTR)72 499.2 Q(OL)-.329 E/F5 10
+/Times-Italic@0 SF -.25(Jo)108 511.2 S 3.369(bc).25 G(ontr)-3.369 E(ol)
+-.45 E F0 .868(refers to the ability to selecti)3.879 F -.15(ve)-.25 G
+.868(ly stop \().15 F F5(suspend)A F0 3.368(\)t)C .868(he e)-3.368 F
+-.15(xe)-.15 G .868(cution of processes and continue \().15 F F5 -.37
+(re)C(-).37 E(sume)108 523.2 Q F0 2.664(\)t)C .164(heir e)-2.664 F -.15
+(xe)-.15 G .164(cution at a later point.).15 F 2.665(Au)5.165 G .165
(ser typically emplo)-2.665 F .165(ys this f)-.1 F .165
(acility via an interacti)-.1 F .465 -.15(ve i)-.25 H(nterf).15 E .165
-(ace sup-)-.1 F(plied jointly by the operating system k)108 621.6 Q
+(ace sup-)-.1 F(plied jointly by the operating system k)108 535.2 Q
(ernel')-.1 E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15
-G(nd)-2.5 E F1(bash)2.5 E F0(.)A .785(The shell associates a)108 638.4 R
-F3(job)5.025 E F0 .785(with each pipeline.)3.515 F .784(It k)5.785 F
+G(nd)-2.5 E F1(bash)2.5 E F0(.)A .785(The shell associates a)108 552 R
+F5(job)5.025 E F0 .785(with each pipeline.)3.515 F .784(It k)5.785 F
.784(eeps a table of currently e)-.1 F -.15(xe)-.15 G .784
-(cuting jobs, which may be).15 F .324(listed with the)108 650.4 R F1
-(jobs)2.824 E F0 2.824(command. When)2.824 F F1(bash)2.825 E F0 .325
-(starts a job asynchronously \(in the)2.825 F F3(bac)3.095 E(kgr)-.2 E
-(ound)-.45 E F0 .325(\), it prints a line).77 F(that looks lik)108 662.4
-Q(e:)-.1 E([1] 25647)144 679.2 Q .241(indicating that this job is job n\
-umber 1 and that the process ID of the last process in the pipeline ass\
-ociated)108 696 R .732(with this job is 25647.)108 708 R .733
+(cuting jobs, which may be).15 F .324(listed with the)108 564 R F1(jobs)
+2.824 E F0 2.824(command. When)2.824 F F1(bash)2.825 E F0 .325
+(starts a job asynchronously \(in the)2.825 F F5(bac)3.095 E(kgr)-.2 E
+(ound)-.45 E F0 .325(\), it prints a line).77 F(that looks lik)108 576 Q
+(e:)-.1 E([1] 25647)144 592.8 Q .241(indicating that this job is job nu\
+mber 1 and that the process ID of the last process in the pipeline asso\
+ciated)108 609.6 R .732(with this job is 25647.)108 621.6 R .733
(All of the processes in a single pipeline are members of the same job)
-5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 720 Q F3(job)
-4.24 E F0(abstraction as the basis for job control.)2.73 E(GNU Bash 5.1)
-72 768 Q(2020 October 29)141.235 E(37)190.395 E 0 Cg EP
-%%Page: 38 38
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.982 -.8(To f)108
-84 T .382(acilitate the implementation of the user interf).7 F .382
-(ace to job control, the operating system maintains the no-)-.1 F 1.537
-(tion of a)108 96 R/F1 10/Times-Italic@0 SF(curr)4.037 E 1.537
-(ent terminal pr)-.37 F 1.537(ocess gr)-.45 F 1.537(oup ID)-.45 F F0
-6.537(.M)C 1.538(embers of this process group \(processes whose process)
--6.537 F .023
+5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 633.6 Q F5(job)
+4.24 E F0(abstraction as the basis for job control.)2.73 E 1.982 -.8
+(To f)108 650.4 T .382(acilitate the implementation of the user interf)
+.7 F .382(ace to job control, the operating system maintains the no-)-.1
+F 1.537(tion of a)108 662.4 R F5(curr)4.037 E 1.537(ent terminal pr)-.37
+F 1.537(ocess gr)-.45 F 1.537(oup ID)-.45 F F0 6.537(.M)C 1.538
+(embers of this process group \(processes whose process)-6.537 F .023
(group ID is equal to the current terminal process group ID\) recei)108
-108 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023
-(board-generated signals such as).15 F/F2 9/Times-Bold@0 SF(SIG-)2.522 E
-(INT)108 120 Q/F3 9/Times-Roman@0 SF(.)A F0 1.215
-(These processes are said to be in the)5.715 F F1(for)5.685 E -.4(eg)
--.37 G -.45(ro).4 G(und).45 E F0(.).77 E F1(Bac)6.795 E(kgr)-.2 E(ound)
--.45 E F0 1.216(processes are those whose process)4.485 F .146
-(group ID dif)108 132 R .146(fers from the terminal')-.25 F .146
+674.4 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023
+(board-generated signals such as).15 F F2(SIG-)2.522 E(INT)108 686.4 Q
+F3(.)A F0 1.215(These processes are said to be in the)5.715 F F5(for)
+5.685 E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F5(Bac)6.795 E
+(kgr)-.2 E(ound)-.45 E F0 1.216(processes are those whose process)4.485
+F .146(group ID dif)108 698.4 R .146(fers from the terminal')-.25 F .146
(s; such processes are immune to k)-.55 F -.15(ey)-.1 G .145
(board-generated signals.).15 F .145(Only fore-)5.145 F .16
-(ground processes are allo)108 144 R .16(wed to read from or)-.25 F 2.66
-(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F4 10
-/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter)
--2.66 F(-)-.2 E 3.052(minal. Background)108 156 R .551
-(processes which attempt to read from \(write to when)3.052 F F4 .551
+(ground processes are allo)108 710.4 R .16(wed to read from or)-.25 F
+2.66(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6
+10/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter)
+-2.66 F(-)-.2 E 3.052(minal. Background)108 722.4 R .551
+(processes which attempt to read from \(write to when)3.052 F F6 .551
(stty tostop)3.051 F F0 .551(is in ef)3.051 F .551(fect\) the)-.25 F
-.717(terminal are sent a)108 168 R F2 .717(SIGTTIN \(SIGTT)3.217 F(OU\))
--.162 E F0 .718(signal by the k)2.967 F(ernel')-.1 E 3.218(st)-.55 G
-.718(erminal dri)-3.218 F -.15(ve)-.25 G 1.518 -.4(r, w).15 H .718
-(hich, unless caught, sus-).4 F(pends the process.)108 180 Q 1.088
-(If the operating system on which)108 196.8 R/F5 10/Times-Bold@0 SF
-(bash)3.588 E F0 1.088(is running supports job control,)3.588 F F5(bash)
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(39)185.115 E 0 Cg EP
+%%Page: 40 40
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .717
+(terminal are sent a)108 84 R/F1 9/Times-Bold@0 SF .717(SIGTTIN \(SIGTT)
+3.217 F(OU\))-.162 E F0 .718(signal by the k)2.967 F(ernel')-.1 E 3.218
+(st)-.55 G .718(erminal dri)-3.218 F -.15(ve)-.25 G 1.518 -.4(r, w).15 H
+.718(hich, unless caught, sus-).4 F(pends the process.)108 96 Q 1.088
+(If the operating system on which)108 112.8 R/F2 10/Times-Bold@0 SF
+(bash)3.588 E F0 1.088(is running supports job control,)3.588 F F2(bash)
3.587 E F0 1.087(contains f)3.587 F 1.087(acilities to use it.)-.1 F -.8
-(Ty)108 208.8 S .301(ping the).8 F F1(suspend)3.141 E F0 .301
-(character \(typically)3.571 F F5(^Z)2.801 E F0 2.801(,C)C .301
+(Ty)108 124.8 S .301(ping the).8 F/F3 10/Times-Italic@0 SF(suspend)3.141
+E F0 .301(character \(typically)3.571 F F2(^Z)2.801 E F0 2.801(,C)C .301
(ontrol-Z\) while a process is running causes that process to be)-2.801
-F 2.143(stopped and returns control to)108 220.8 R F5(bash)4.642 E F0
-7.142(.T)C 2.142(yping the)-7.942 F F1 2.142(delayed suspend)4.992 F F0
-2.142(character \(typically)5.412 F F5(^Y)4.642 E F0 4.642(,C)C
+F 2.143(stopped and returns control to)108 136.8 R F2(bash)4.642 E F0
+7.142(.T)C 2.142(yping the)-7.942 F F3 2.142(delayed suspend)4.992 F F0
+2.142(character \(typically)5.412 F F2(^Y)4.642 E F0 4.642(,C)C
(ontrol-Y\))-4.642 E .021(causes the process to be stopped when it atte\
mpts to read input from the terminal, and control to be returned)108
-232.8 R(to)108 244.8 Q F5(bash)3.392 E F0 5.892(.T)C .892
+148.8 R(to)108 160.8 Q F2(bash)3.392 E F0 5.892(.T)C .892
(he user may then manipulate the state of this job, using the)-5.892 F
-F5(bg)3.392 E F0 .892(command to continue it in the)3.392 F .17
-(background, the)108 256.8 R F5(fg)2.67 E F0 .17
-(command to continue it in the fore)2.67 F .17(ground, or the)-.15 F F5
-(kill)2.67 E F0 .17(command to kill it.)2.67 F(A)5.17 E F5(^Z)2.67 E F0
-(tak)2.67 E .17(es ef-)-.1 F 1.419(fect immediately)108 268.8 R 3.919
+F2(bg)3.392 E F0 .892(command to continue it in the)3.392 F .17
+(background, the)108 172.8 R F2(fg)2.67 E F0 .17
+(command to continue it in the fore)2.67 F .17(ground, or the)-.15 F F2
+(kill)2.67 E F0 .17(command to kill it.)2.67 F(A)5.17 E F2(^Z)2.67 E F0
+(tak)2.67 E .17(es ef-)-.1 F 1.419(fect immediately)108 184.8 R 3.919
(,a)-.65 G 1.418(nd has the additional side ef)-3.919 F 1.418
(fect of causing pending output and typeahead to be dis-)-.25 F(carded.)
-108 280.8 Q .777(There are a number of w)108 297.6 R .777
-(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F5
-(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 309.6
-Q F1(jobspec)A F0 3.458(\). Job)B(number)3.458 E F1(n)3.818 E F0 .957
-(may be referred to as)3.697 F F5(%n)3.457 E F0 5.957(.A)C .957
+108 196.8 Q .777(There are a number of w)108 213.6 R .777
+(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F2
+(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 225.6
+Q F3(jobspec)A F0 3.458(\). Job)B(number)3.458 E F3(n)3.818 E F0 .957
+(may be referred to as)3.697 F F2(%n)3.457 E F0 5.957(.A)C .957
(job may also be referred to using a pre\214x of the)-2.5 F .59(name us\
ed to start it, or using a substring that appears in its command line.)
-108 321.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F5(%ce)3.09 E
+108 237.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F2(%ce)3.09 E
F0 .59(refers to a)3.09 F .385(stopped job whose command name be)108
-333.6 R .385(gins with)-.15 F F5(ce)2.885 E F0 5.385(.I)C 2.885(fap)
--5.385 G .385(re\214x matches more than one job,)-2.885 F F5(bash)2.885
-E F0 .385(reports an)2.885 F(error)108 345.6 Q 5.194(.U)-.55 G(sing)
--5.194 E F5(%?ce)2.694 E F0 2.694(,o)C 2.694(nt)-2.694 G .194
+249.6 R .385(gins with)-.15 F F2(ce)2.885 E F0 5.385(.I)C 2.885(fap)
+-5.385 G .385(re\214x matches more than one job,)-2.885 F F2(bash)2.885
+E F0 .385(reports an)2.885 F(error)108 261.6 Q 5.194(.U)-.55 G(sing)
+-5.194 E F2(%?ce)2.694 E F0 2.694(,o)C 2.694(nt)-2.694 G .194
(he other hand, refers to an)-2.694 F 2.694(yj)-.15 G .194
-(ob containing the string)-2.694 F F5(ce)2.694 E F0 .194
+(ob containing the string)-2.694 F F2(ce)2.694 E F0 .194
(in its command line.)2.694 F .194(If the)5.194 F .306
-(substring matches more than one job,)108 357.6 R F5(bash)2.806 E F0
+(substring matches more than one job,)108 273.6 R F2(bash)2.806 E F0
.306(reports an error)2.806 F 5.306(.T)-.55 G .306(he symbols)-5.306 F
-F5(%%)2.806 E F0(and)2.806 E F5(%+)2.806 E F0 .306(refer to the shell')
-2.806 F(s)-.55 E .132(notion of the)108 369.6 R F1(curr)2.832 E .133
+F2(%%)2.806 E F0(and)2.806 E F2(%+)2.806 E F0 .306(refer to the shell')
+2.806 F(s)-.55 E .132(notion of the)108 285.6 R F3(curr)2.832 E .133
(ent job)-.37 F F0 2.633(,w).23 G .133
(hich is the last job stopped while it w)-2.633 F .133(as in the fore)
-.1 F .133(ground or started in the back-)-.15 F 2.576(ground. The)108
-381.6 R F1(pr)3.826 E -.15(ev)-.37 G .076(ious job).15 F F0 .076
-(may be referenced using)2.806 F F5<25ad>2.576 E F0 5.076(.I)C 2.576(ft)
--5.076 G .075(here is only a single job,)-2.576 F F5(%+)2.575 E F0(and)
-2.575 E F5<25ad>2.575 E F0 .075(can both)2.575 F .317
-(be used to refer to that job)108 393.6 R 5.317(.I)-.4 G 2.817(no)-5.317
-G .317(utput pertaining to jobs \(e.g., the output of the)-2.817 F F5
+297.6 R F3(pr)3.826 E -.15(ev)-.37 G .076(ious job).15 F F0 .076
+(may be referenced using)2.806 F F2<25ad>2.576 E F0 5.076(.I)C 2.576(ft)
+-5.076 G .075(here is only a single job,)-2.576 F F2(%+)2.575 E F0(and)
+2.575 E F2<25ad>2.575 E F0 .075(can both)2.575 F .317
+(be used to refer to that job)108 309.6 R 5.317(.I)-.4 G 2.817(no)-5.317
+G .317(utput pertaining to jobs \(e.g., the output of the)-2.817 F F2
(jobs)2.817 E F0 .317(command\), the current)2.817 F .033(job is al)108
-405.6 R -.1(wa)-.1 G .033(ys \215agged with a).1 F F5(+)2.533 E F0 2.533
-(,a)C .033(nd the pre)-2.533 F .033(vious job with a)-.25 F F5<ad>2.533
+321.6 R -.1(wa)-.1 G .033(ys \215agged with a).1 F F2(+)2.533 E F0 2.533
+(,a)C .033(nd the pre)-2.533 F .033(vious job with a)-.25 F F2<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
+333.6 Q(.)-.4 E .443
+(Simply naming a job can be used to bring it into the fore)108 350.4 R
+(ground:)-.15 E F2(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for)
+-.15 F F2 -.63(``)2.944 G .444(fg %1').63 F(')-.63 E F0 2.944(,b)C
(ringing)-2.944 E 1.473(job 1 from the background into the fore)108
-446.4 R 3.973(ground. Similarly)-.15 F(,)-.65 E F5 -.63(``)3.972 G 1.472
+362.4 R 3.973(ground. Similarly)-.15 F(,)-.65 E F2 -.63(``)3.972 G 1.472
(%1 &').63 F(')-.63 E F0 1.472(resumes job 1 in the background,)3.972 F
-(equi)108 458.4 Q -.25(va)-.25 G(lent to).25 E F5 -.63(``)2.5 G(bg %1')
-.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 475.2 R
+(equi)108 374.4 Q -.25(va)-.25 G(lent to).25 E F2 -.63(``)2.5 G(bg %1')
+.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 391.2 R
-.15(ve)-.25 G 2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally)
-5.131 E(,)-.65 E F5(bash)2.631 E F0 -.1(wa)2.631 G .131
+5.131 E(,)-.65 E F2(bash)2.631 E F0 -.1(wa)2.631 G .131
(its until it is about to print a).1 F .158
-(prompt before reporting changes in a job')108 487.2 R 2.658(ss)-.55 G
+(prompt before reporting changes in a job')108 403.2 R 2.658(ss)-.55 G
.158(tatus so as to not interrupt an)-2.658 F 2.657(yo)-.15 G .157
-(ther output.)-2.657 F .157(If the)5.157 F 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
+(ther output.)-2.657 F .157(If the)5.157 F F2<ad62>2.657 E F0 .157
+(option to)2.657 F(the)108 415.2 Q F2(set)2.647 E F0 -.2(bu)2.647 G .147
+(iltin command is enabled,).2 F F2(bash)2.647 E F0 .148
(reports such changes immediately)2.648 F 5.148(.A)-.65 G .448 -.15
-(ny t)-5.148 H .148(rap on).15 F F2(SIGCHLD)2.648 E F0 .148(is e)2.398 F
--.15(xe)-.15 G(-).15 E(cuted for each child that e)108 511.2 Q(xits.)
--.15 E .033(If an attempt to e)108 528 R(xit)-.15 E F5(bash)2.533 E F0
+(ny t)-5.148 H .148(rap on).15 F F1(SIGCHLD)2.648 E F0 .148(is e)2.398 F
+-.15(xe)-.15 G(-).15 E(cuted for each child that e)108 427.2 Q(xits.)
+-.15 E .033(If an attempt to e)108 444 R(xit)-.15 E F2(bash)2.533 E F0
.033(is made while jobs are stopped \(or)2.533 F 2.532(,i)-.4 G 2.532
-(ft)-2.532 G(he)-2.532 E F5(checkjobs)2.532 E F0 .032
-(shell option has been enabled)2.532 F 1.002(using the)108 540 R F5
+(ft)-2.532 G(he)-2.532 E F2(checkjobs)2.532 E F0 .032
+(shell option has been enabled)2.532 F 1.002(using the)108 456 R F2
(shopt)3.502 E F0 -.2(bu)3.502 G 1.002
(iltin, running\), the shell prints a w).2 F 1.002
-(arning message, and, if the)-.1 F F5(checkjobs)3.503 E F0 1.003
+(arning message, and, if the)-.1 F F2(checkjobs)3.503 E F0 1.003
(option is en-)3.503 F .956(abled, lists the jobs and their statuses.)
-108 552 R(The)5.955 E F5(jobs)3.455 E F0 .955
+108 468 R(The)5.955 E F2(jobs)3.455 E F0 .955
(command may then be used to inspect their status.)3.455 F .955(If a)
-5.955 F .603(second attempt to e)108 564 R .604
+5.955 F .603(second attempt to e)108 480 R .604
(xit is made without an interv)-.15 F .604
(ening command, the shell does not print another w)-.15 F(arning,)-.1 E
-(and an)108 576 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .645
-(When the shell is w)108 592.8 R .645
-(aiting for a job or process using the)-.1 F F5(wait)3.144 E F0 -.2(bu)
-3.144 G .644(iltin, and job control is enabled,).2 F F5(wait)3.144 E F0
-(will)3.144 E .282(return when the job changes state. The)108 604.8 R F5
-<ad66>2.782 E F0 .282(option causes)2.782 F F5(wait)2.782 E F0 .282
+(and an)108 492 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .645
+(When the shell is w)108 508.8 R .645
+(aiting for a job or process using the)-.1 F F2(wait)3.144 E F0 -.2(bu)
+3.144 G .644(iltin, and job control is enabled,).2 F F2(wait)3.144 E F0
+(will)3.144 E .282(return when the job changes state. The)108 520.8 R F2
+<ad66>2.782 E F0 .282(option causes)2.782 F F2(wait)2.782 E F0 .282
(to w)2.782 F .282(ait until the job or process terminates be-)-.1 F
-(fore returning.)108 616.8 Q/F6 10.95/Times-Bold@0 SF(PR)72 633.6 Q
-(OMPTING)-.329 E F0 .645(When e)108 645.6 R -.15(xe)-.15 G .645
-(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F5(bash)3.145 E
-F0 .645(displays the primary prompt)3.145 F F2(PS1)3.145 E F0 .645
+(fore returning.)108 532.8 Q/F4 10.95/Times-Bold@0 SF(PR)72 549.6 Q
+(OMPTING)-.329 E F0 .645(When e)108 561.6 R -.15(xe)-.15 G .645
+(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F2(bash)3.145 E
+F0 .645(displays the primary prompt)3.145 F F1(PS1)3.145 E F0 .645
(when it is ready to read a command,)2.895 F .427
-(and the secondary prompt)108 657.6 R F2(PS2)2.927 E F0 .427
-(when it needs more input to complete a command.)2.677 F F5(Bash)5.428 E
-F0(displays)2.928 E F2(PS0)2.928 E F0(after)2.678 E .038
-(it reads a command b)108 669.6 R .038(ut before e)-.2 F -.15(xe)-.15 G
-.038(cuting it.).15 F F5(Bash)5.038 E F0(displays)2.537 E F2(PS4)2.537 E
+(and the secondary prompt)108 573.6 R F1(PS2)2.927 E F0 .427
+(when it needs more input to complete a command.)2.677 F F2(Bash)5.428 E
+F0(displays)2.928 E F1(PS0)2.928 E F0(after)2.678 E .038
+(it reads a command b)108 585.6 R .038(ut before e)-.2 F -.15(xe)-.15 G
+.038(cuting it.).15 F F2(Bash)5.038 E F0(displays)2.537 E F1(PS4)2.537 E
F0 .037(as described abo)2.287 F .337 -.15(ve b)-.15 H .037
-(efore tracing each com-).15 F 1.121(mand when the)108 681.6 R F5<ad78>
-3.621 E F0 1.122(option is enabled.)3.621 F F5(Bash)6.122 E F0(allo)
+(efore tracing each com-).15 F 1.121(mand when the)108 597.6 R F2<ad78>
+3.621 E F0 1.122(option is enabled.)3.621 F F2(Bash)6.122 E F0(allo)
3.622 E 1.122(ws these prompt strings to be customized by inserting a)
-.25 F(number of backslash-escaped special characters that are decoded \
-as follo)108 693.6 Q(ws:)-.25 E F5(\\a)144 705.6 Q F0
-(an ASCII bell character \(07\))180 705.6 Q F5(\\d)144 717.6 Q F0
-(the date in "W)180 717.6 Q(eekday Month Date" format \(e.g., "T)-.8 E
-(ue May 26"\))-.45 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(38)
-190.395 E 0 Cg EP
-%%Page: 39 39
+as follo)108 609.6 Q(ws:)-.25 E F2(\\a)144 621.6 Q F0
+(an ASCII bell character \(07\))180 621.6 Q F2(\\d)144 633.6 Q F0
+(the date in "W)180 633.6 Q(eekday Month Date" format \(e.g., "T)-.8 E
+(ue May 26"\))-.45 E F2(\\D{)144 645.6 Q F3(format)A F2(})A F0(the)180
+657.6 Q F3(format)3.927 E F0 1.427(is passed to)3.927 F F3(strftime)
+3.927 E F0 1.427
+(\(3\) and the result is inserted into the prompt string; an)B(empty)180
+669.6 Q F3(format)2.5 E F0
+(results in a locale-speci\214c time representation.)2.5 E
+(The braces are required)5 E F2(\\e)144 681.6 Q F0
+(an ASCII escape character \(033\))180 681.6 Q F2(\\h)144 693.6 Q F0
+(the hostname up to the \214rst `.)180 693.6 Q(')-.7 E F2(\\H)144 705.6
+Q F0(the hostname)180 705.6 Q F2(\\j)144 717.6 Q F0
+(the number of jobs currently managed by the shell)180 717.6 Q
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(40)185.115 E 0 Cg EP
+%%Page: 41 41
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(\\D{)144 84 Q/F2 10/Times-Italic@0 SF(format)A F1(})A F0(the)180 96 Q
-F2(format)3.927 E F0 1.427(is passed to)3.927 F F2(strftime)3.927 E F0
-1.427(\(3\) and the result is inserted into the prompt string; an)B
-(empty)180 108 Q F2(format)2.5 E F0
-(results in a locale-speci\214c time representation.)2.5 E
-(The braces are required)5 E F1(\\e)144 120 Q F0
-(an ASCII escape character \(033\))180 120 Q F1(\\h)144 132 Q F0
-(the hostname up to the \214rst `.)180 132 Q(')-.7 E F1(\\H)144 144 Q F0
-(the hostname)180 144 Q F1(\\j)144 156 Q F0
-(the number of jobs currently managed by the shell)180 156 Q F1(\\l)144
-168 Q F0(the basename of the shell')180 168 Q 2.5(st)-.55 G(erminal de)
--2.5 E(vice name)-.25 E F1(\\n)144 180 Q F0(ne)180 180 Q(wline)-.25 E F1
-(\\r)144 192 Q F0(carriage return)180 192 Q F1(\\s)144 204 Q F0
-(the name of the shell, the basename of)180 204 Q F1($0)2.5 E F0
+SF(\\l)144 84 Q F0(the basename of the shell')180 84 Q 2.5(st)-.55 G
+(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 96 Q F0(ne)180 96 Q
+(wline)-.25 E F1(\\r)144 108 Q F0(carriage return)180 108 Q F1(\\s)144
+120 Q F0(the name of the shell, the basename of)180 120 Q F1($0)2.5 E F0
(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1(\\t)144
-216 Q F0(the current time in 24-hour HH:MM:SS format)180 216 Q F1(\\T)
-144 228 Q F0(the current time in 12-hour HH:MM:SS format)180 228 Q F1
-(\\@)144 240 Q F0(the current time in 12-hour am/pm format)180 240 Q F1
-(\\A)144 252 Q F0(the current time in 24-hour HH:MM format)180 252 Q F1
-(\\u)144 264 Q F0(the username of the current user)180 264 Q F1(\\v)144
-276 Q F0(the v)180 276 Q(ersion of)-.15 E F1(bash)2.5 E F0
-(\(e.g., 2.00\))2.5 E F1(\\V)144 288 Q F0(the release of)180 288 Q F1
+132 Q F0(the current time in 24-hour HH:MM:SS format)180 132 Q F1(\\T)
+144 144 Q F0(the current time in 12-hour HH:MM:SS format)180 144 Q F1
+(\\@)144 156 Q F0(the current time in 12-hour am/pm format)180 156 Q F1
+(\\A)144 168 Q F0(the current time in 24-hour HH:MM format)180 168 Q F1
+(\\u)144 180 Q F0(the username of the current user)180 180 Q F1(\\v)144
+192 Q F0(the v)180 192 Q(ersion of)-.15 E F1(bash)2.5 E F0
+(\(e.g., 2.00\))2.5 E F1(\\V)144 204 Q F0(the release of)180 204 Q F1
(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5
-(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 300 Q F0 .115(the current w)
-180 300 R .115(orking directory)-.1 F 2.615(,w)-.65 G(ith)-2.615 E/F3 9
-/Times-Bold@0 SF($HOME)2.615 E F0(abbre)2.365 E .116
-(viated with a tilde \(uses the v)-.25 F .116(alue of the)-.25 F F3(PR)
-180 312 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E
-F1(\\W)144 324 Q F0(the basename of the current w)180 324 Q
-(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F3($HOME)2.5 E F0
-(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 336 Q F0
-(the history number of this command)180 336 Q F1(\\#)144 348 Q F0
-(the command number of this command)180 348 Q F1(\\$)144 360 Q F0
-(if the ef)180 360 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E
-F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 372 Q F2(nnn)
-A F0(the character corresponding to the octal number)180 372 Q F2(nnn)
-2.5 E F1(\\\\)144 384 Q F0 2.5(ab)180 384 S(ackslash)-2.5 E F1(\\[)144
-396 Q F0(be)180 396 Q 1.257(gin a sequence of non-printing characters, \
-which could be used to embed a terminal)-.15 F
-(control sequence into the prompt)180 408 Q F1(\\])144 420 Q F0
-(end a sequence of non-printing characters)180 420 Q .119
-(The command number and the history number are usually dif)108 436.8 R
+(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 216 Q F0 .119(the v)180 216
+R .119(alue of the)-.25 F F1(PWD)2.619 E F0 .119(shell v)2.619 F .119
+(ariable \()-.25 F F1($PWD)A F0 .119(\), with)B/F2 9/Times-Bold@0 SF
+($HOME)2.619 E F0(abbre)2.369 E .119(viated with a tilde \(uses)-.25 F
+(the v)180 228 Q(alue of the)-.25 E F2(PR)2.5 E(OMPT_DIR)-.27 E(TRIM)
+-.36 E F0 -.25(va)2.25 G(riable\)).25 E F1(\\W)144 240 Q F0
+(the basename of)180 240 Q F1($PWD)2.5 E F0 2.5(,w)C(ith)-2.5 E F2
+($HOME)2.5 E F0(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 252 Q
+F0(the history number of this command)180 252 Q F1(\\#)144 264 Q F0
+(the command number of this command)180 264 Q F1(\\$)144 276 Q F0
+(if the ef)180 276 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E
+F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 288 Q/F3 10
+/Times-Italic@0 SF(nnn)A F0
+(the character corresponding to the octal number)180 288 Q F3(nnn)2.5 E
+F1(\\\\)144 300 Q F0 2.5(ab)180 300 S(ackslash)-2.5 E F1(\\[)144 312 Q
+F0(be)180 312 Q 1.257(gin a sequence of non-printing characters, which \
+could be used to embed a terminal)-.15 F
+(control sequence into the prompt)180 324 Q F1(\\])144 336 Q F0
+(end a sequence of non-printing characters)180 336 Q .119
+(The command number and the history number are usually dif)108 352.8 R
.12(ferent: the history number of a command is its)-.25 F .547(position\
in the history list, which may include commands restored from the hist\
-ory \214le \(see)108 448.8 R F3(HIST)3.046 E(OR)-.162 E(Y)-.315 E F0
-(be-)2.796 E(lo)108 460.8 Q .354(w\), while the command number is the p\
+ory \214le \(see)108 364.8 R F2(HIST)3.046 E(OR)-.162 E(Y)-.315 E F0
+(be-)2.796 E(lo)108 376.8 Q .354(w\), while the command number is the p\
osition in the sequence of commands e)-.25 F -.15(xe)-.15 G .355
-(cuted during the current).15 F .823(shell session.)108 472.8 R .822
+(cuted during the current).15 F .823(shell session.)108 388.8 R .822
(After the string is decoded, it is e)5.823 F .822
(xpanded via parameter e)-.15 F .822(xpansion, command substitution,)
--.15 F .682(arithmetic e)108 484.8 R .682(xpansion, and quote remo)-.15
+-.15 F .682(arithmetic e)108 400.8 R .682(xpansion, and quote remo)-.15
F -.25(va)-.15 G .682(l, subject to the v).25 F .683(alue of the)-.25 F
F1(pr)3.183 E(omptv)-.18 E(ars)-.1 E F0 .683(shell option \(see the de-)
-3.183 F 1.198(scription of the)108 496.8 R F1(shopt)3.698 E F0 1.198
-(command under)3.698 F F3 1.197(SHELL B)3.697 F(UIL)-.09 E 1.197
+3.183 F 1.198(scription of the)108 412.8 R F1(shopt)3.698 E F0 1.198
+(command under)3.698 F F2 1.197(SHELL B)3.697 F(UIL)-.09 E 1.197
(TIN COMMANDS)-.828 F F0(belo)3.447 E 3.697(w\). This)-.25 F 1.197
(can ha)3.697 F 1.497 -.15(ve u)-.2 H(nw).15 E(anted)-.1 E .322(side ef)
-108 508.8 R .322(fects if escaped portions of the string appear within \
+108 424.8 R .322(fects if escaped portions of the string appear within \
command substitution or contain characters spe-)-.25 F(cial to w)108
-520.8 Q(ord e)-.1 E(xpansion.)-.15 E/F4 10.95/Times-Bold@0 SF(READLINE)
-72 537.6 Q F0 .151
+436.8 Q(ord e)-.1 E(xpansion.)-.15 E/F4 10.95/Times-Bold@0 SF(READLINE)
+72 453.6 Q F0 .151
(This is the library that handles reading input when using an interacti)
-108 549.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1
-(\255\255noediting)2.65 E F0(option)2.65 E .384(is gi)108 561.6 R -.15
+108 465.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1
+(\255\255noediting)2.65 E F0(option)2.65 E .384(is gi)108 477.6 R -.15
(ve)-.25 G 2.884(na).15 G 2.884(ts)-2.884 G .384(hell in)-2.884 F -.2
(vo)-.4 G 2.884(cation. Line).2 F .384
(editing is also used when using the)2.884 F 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
+2.885(iltin. By).2 F(de-)2.885 E -.1(fa)108 489.6 S 1.407
(ult, the line editing commands are similar to those of Emacs.).1 F
3.906(Av)6.406 G 1.406(i-style line editing interf)-3.906 F 1.406
-(ace is also)-.1 F -.2(av)108 585.6 S 3.35(ailable. Line)-.05 F .85
+(ace is also)-.1 F -.2(av)108 501.6 S 3.35(ailable. Line)-.05 F .85
(editing can be enabled at an)3.35 F 3.35(yt)-.15 G .85(ime using the)
-3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0
.85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E
-(\(see)108 597.6 Q F3 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS)
+(\(see)108 513.6 Q F2 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS)
-.828 F F0(belo)3.013 E 3.263(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of)
-3.263 F 3.263(fl)-.25 G .763
(ine editing after the shell is running, use the)-3.263 F F1(+o)3.262 E
-(emacs)108 609.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1
-(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 626.4 Q
+(emacs)108 525.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1
+(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 542.4 Q
F0 .463(In this section, the Emacs-style notation is used to denote k)
-108 638.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke)
-2.963 G .463(ys are denoted by C\255)-.05 F F2 -.1(ke)C(y)-.2 E F0(,)A
-1.153(e.g., C\255n means Control\255N.)108 650.4 R(Similarly)6.153 E(,)
--.65 E F2(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255)
--.05 F F2 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152
-(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 662.4 S .83
-(yboards without a)-.05 F F2(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65
-(y, M)-.05 H<ad>.65 E F2(x)A F0 .83(means ESC)3.33 F F2(x)3.33 E F0 3.33
+108 554.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke)
+2.963 G .463(ys are denoted by C\255)-.05 F F3 -.1(ke)C(y)-.2 E F0(,)A
+1.153(e.g., C\255n means Control\255N.)108 566.4 R(Similarly)6.153 E(,)
+-.65 E F3(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255)
+-.05 F F3 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152
+(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 578.4 S .83
+(yboards without a)-.05 F F3(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65
+(y, M)-.05 H<ad>.65 E F3(x)A F0 .83(means ESC)3.33 F F3(x)3.33 E F0 3.33
(,i)C .831(.e., press the Escape k)-3.33 F 1.131 -.15(ey t)-.1 H .831
-(hen the).15 F F2(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H
-.831(his mak).65 F(es)-.1 E .6(ESC the)108 674.4 R F2 .6(meta pr)3.1 F
-(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F2(x)A F0
-.599(means ESC\255Control\255)3.099 F F2(x)A F0 3.099(,o)C 3.099(rp)
+(hen the).15 F F3(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H
+.831(his mak).65 F(es)-.1 E .6(ESC the)108 590.4 R F3 .6(meta pr)3.1 F
+(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F3(x)A F0
+.599(means ESC\255Control\255)3.099 F F3(x)A F0 3.099(,o)C 3.099(rp)
-3.099 G .599(ress the Escape k)-3.099 F .899 -.15(ey t)-.1 H .599
-(hen hold).15 F(the Control k)108 686.4 Q .3 -.15(ey w)-.1 H
-(hile pressing the).15 E F2(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\))
-.65 E .595(Readline commands may be gi)108 703.2 R -.15(ve)-.25 G 3.096
-(nn).15 G(umeric)-3.096 E F2(ar)3.426 E(guments)-.37 E F0 3.096(,w).27 G
+(hen hold).15 F(the Control k)108 602.4 Q .3 -.15(ey w)-.1 H
+(hile pressing the).15 E F3(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\))
+.65 E .595(Readline commands may be gi)108 619.2 R -.15(ve)-.25 G 3.096
+(nn).15 G(umeric)-3.096 E F3(ar)3.426 E(guments)-.37 E F0 3.096(,w).27 G
.596(hich normally act as a repeat count.)-3.096 F(Sometimes,)5.596 E
-(ho)108 715.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti)
+(ho)108 631.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti)
.4 G 3.119(st)-3.119 G .619(he sign of the ar)-3.119 F .619
(gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne)
.15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619
-(ument to a command that).18 F 2.938(acts in the forw)108 727.2 R 2.938
-(ard direction \(e.g.,)-.1 F F1(kill\255line)5.438 E F0 5.438(\)c)C
-2.938(auses that command to act in a backw)-5.438 F 2.938
-(ard direction.)-.1 F(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
-(39)190.395 E 0 Cg EP
-%%Page: 40 40
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(Commands whose beha)108 84 Q(vior with ar)-.2 E(guments de)-.18 E
-(viates from this are noted belo)-.25 E -.65(w.)-.25 G .812
-(When a command is described as)108 100.8 R/F1 10/Times-Italic@0 SF
+(ument to a command that).18 F 1.018(acts in the forw)108 643.2 R 1.018
+(ard direction \(e.g.,)-.1 F F1(kill\255line)3.518 E F0 3.518(\)c)C
+1.018(auses that command to act in a backw)-3.518 F 1.019
+(ard direction.)-.1 F(Com-)6.019 E(mands whose beha)108 655.2 Q
+(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo)
+-.25 E -.65(w.)-.25 G .812(When a command is described as)108 672 R F3
(killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811
(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .811
-(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F1
-(yank-)-3.311 E(ing)108 112.8 Q F0 2.529(\). The)B .029(killed te)2.529
-F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F1
+(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F3
+(yank-)-3.311 E(ing)108 684 Q F0 2.529(\). The)B .029(killed te)2.529 F
+.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F3
.029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H
.029(ills cause the te).15 F .029(xt to be accumulated into one unit,)
--.15 F .567(which can be yank)108 124.8 R .567(ed all at once.)-.1 F
-.567(Commands which do not kill te)5.567 F .567
+-.15 F .567(which can be yank)108 696 R .567(ed all at once.)-.1 F .567
+(Commands which do not kill te)5.567 F .567
(xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.)
-108 136.8 Q/F2 10/Times-Bold@0 SF(Readline Initialization)87 153.6 Q F0
-.091(Readline is customized by putting commands in an initialization \
-\214le \(the)108 165.6 R F1(inputr)2.591 E(c)-.37 E F0 2.591
-(\214le\). The)2.591 F .092(name of this \214le)2.591 F .573(is tak)108
-177.6 R .573(en from the v)-.1 F .573(alue of the)-.25 F/F3 9
-/Times-Bold@0 SF(INPUTRC)3.073 E F0 -.25(va)2.823 G 3.073(riable. If).25
-F .573(that v)3.073 F .573(ariable is unset, the def)-.25 F .573
-(ault is)-.1 F F1(~/.inputr)2.573 E(c)-.37 E F0 5.572(.I).31 G 3.072(ft)
--5.572 G(hat)-3.072 E 3.061(\214le does)108 189.6 R .561(not e)3.061 F
-.562(xist or cannot be read, the ultimate def)-.15 F .562(ault is)-.1 F
-F1(/etc/inputr)4.212 E(c)-.37 E F0 5.562(.W).31 G .562
+108 708 Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(41)185.115 E
+0 Cg EP
+%%Page: 42 42
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(Readline Initialization)87 84 Q F0 .091(Readline is customized by pu\
+tting commands in an initialization \214le \(the)108 96 R/F2 10
+/Times-Italic@0 SF(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591
+F .092(name of this \214le)2.591 F .573(is tak)108 108 R .573
+(en from the v)-.1 F .573(alue of the)-.25 F/F3 9/Times-Bold@0 SF
+(INPUTRC)3.073 E F0 -.25(va)2.823 G 3.073(riable. If).25 F .573(that v)
+3.073 F .573(ariable is unset, the def)-.25 F .573(ault is)-.1 F F2
+(~/.inputr)2.573 E(c)-.37 E F0 5.572(.I).31 G 3.072(ft)-5.572 G(hat)
+-3.072 E 3.061(\214le does)108 120 R .561(not e)3.061 F .562
+(xist or cannot be read, the ultimate def)-.15 F .562(ault is)-.1 F F2
+(/etc/inputr)4.212 E(c)-.37 E F0 5.562(.W).31 G .562
(hen a program which uses the)-5.562 F .175(readline library starts up,\
- the initialization \214le is read, and the k)108 201.6 R .474 -.15
-(ey b)-.1 H .174(indings and v).15 F .174(ariables are set.)-.25 F .174
-(There are)5.174 F .238(only a fe)108 213.6 R 2.738(wb)-.25 G .238
+ the initialization \214le is read, and the k)108 132 R .474 -.15(ey b)
+-.1 H .174(indings and v).15 F .174(ariables are set.)-.25 F .174
+(There are)5.174 F .238(only a fe)108 144 R 2.738(wb)-.25 G .238
(asic constructs allo)-2.738 F .239
(wed in the readline initialization \214le.)-.25 F .239
(Blank lines are ignored.)5.239 F .239(Lines be)5.239 F(gin-)-.15 E .554
-(ning with a)108 225.6 R F2(#)3.054 E F0 .554(are comments.)3.054 F .554
-(Lines be)5.554 F .554(ginning with a)-.15 F F2($)3.054 E F0 .554
+(ning with a)108 156 R F1(#)3.054 E F0 .554(are comments.)3.054 F .554
+(Lines be)5.554 F .554(ginning with a)-.15 F F1($)3.054 E F0 .554
(indicate conditional constructs.)3.054 F .553(Other lines denote)5.553
-F -.1(ke)108 237.6 S 2.5(yb)-.05 G(indings and v)-2.5 E
-(ariable settings.)-.25 E .986(The def)108 254.4 R .986(ault k)-.1 F
--.15(ey)-.1 G .987(-bindings may be changed with an).15 F F1(inputr)
-3.497 E(c)-.37 E F0 3.487(\214le. Other)3.797 F .987
-(programs that use this library may)3.487 F(add their o)108 266.4 Q
-(wn commands and bindings.)-.25 E -.15(Fo)108 283.2 S 2.5(re).15 G
-(xample, placing)-2.65 E(M\255Control\255u: uni)144 300 Q -.15(ve)-.25 G
-(rsal\255ar).15 E(gument)-.18 E(or)108 312 Q(C\255Meta\255u: uni)144 324
-Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 336 Q F1
-(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G
-(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F1
-(univer)2.58 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.011(The follo)
-108 352.8 R 1.011(wing symbolic character names are recognized:)-.25 F
-F1 -.4(RU)3.511 G(BOUT).4 E F0(,)1.27 E F1(DEL)4.091 E F0(,).53 E F1
-(ESC)4.021 E F0(,).72 E F1(LFD)4.091 E F0(,).28 E F1(NEWLINE)4.21 E F0
-(,).73 E F1(RET)4.14 E F0(,)1.27 E F1(RETURN)108.63 364.8 Q F0(,)1.1 E
-F1(SPC)2.83 E F0(,).72 E F1(SP)2.83 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73
-G(nd)-2.5 E F1 -.5(TA)2.5 G(B).5 E F0(.).27 E .209
-(In addition to command names, readline allo)108 381.6 R .209(ws k)-.25
-F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209
+F -.1(ke)108 168 S 2.5(yb)-.05 G(indings and v)-2.5 E(ariable settings.)
+-.25 E .986(The def)108 184.8 R .986(ault k)-.1 F -.15(ey)-.1 G .987
+(-bindings may be changed with an).15 F F2(inputr)3.497 E(c)-.37 E F0
+3.487(\214le. Other)3.797 F .987(programs that use this library may)
+3.487 F(add their o)108 196.8 Q(wn commands and bindings.)-.25 E -.15
+(Fo)108 213.6 S 2.5(re).15 G(xample, placing)-2.65 E
+(M\255Control\255u: uni)144 230.4 Q -.15(ve)-.25 G(rsal\255ar).15 E
+(gument)-.18 E(or)108 242.4 Q(C\255Meta\255u: uni)144 254.4 Q -.15(ve)
+-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 266.4 Q F2(inputr)
+2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e)
+-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F2(univer)2.58 E
+(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.011(The follo)108 283.2 R
+1.011(wing symbolic character names are recognized:)-.25 F F2 -.4(RU)
+3.511 G(BOUT).4 E F0(,)1.27 E F2(DEL)4.091 E F0(,).53 E F2(ESC)4.021 E
+F0(,).72 E F2(LFD)4.091 E F0(,).28 E F2(NEWLINE)4.21 E F0(,).73 E F2
+(RET)4.14 E F0(,)1.27 E F2(RETURN)108.63 295.2 Q F0(,)1.1 E F2(SPC)2.83
+E F0(,).72 E F2(SP)2.83 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G(nd)-2.5 E
+F2 -.5(TA)2.5 G(B).5 E F0(.).27 E .209
+(In addition to command names, readline allo)108 312 R .209(ws k)-.25 F
+-.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209
(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i)
--.1 H(s).15 E(pressed \(a)108 393.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A F2
-(Readline K)87 410.4 Q(ey Bindings)-.25 E F0 .366
-(The syntax for controlling k)108 422.4 R .666 -.15(ey b)-.1 H .366
-(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 .366
+-.1 H(s).15 E(pressed \(a)108 324 Q F2(macr)2.5 E(o)-.45 E F0(\).)A F1
+(Readline K)87 340.8 Q(ey Bindings)-.25 E F0 .366
+(The syntax for controlling k)108 352.8 R .666 -.15(ey b)-.1 H .366
+(indings in the).15 F F2(inputr)2.876 E(c)-.37 E F0 .366
(\214le is simple.)3.176 F .366(All that is required is the name of the)
-5.366 F .263(command or the te)108 434.4 R .264(xt of a macro and a k)
+5.366 F .263(command or the te)108 364.8 R .264(xt of a macro and a k)
-.15 F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.)
.15 F .264(The name may be speci-)5.264 F .139(\214ed in one of tw)108
-446.4 R 2.638(ow)-.1 G .138(ays: as a symbolic k)-2.738 F .438 -.15
-(ey n)-.1 H .138(ame, possibly with).15 F F1(Meta\255)2.638 E F0(or)
-2.638 E F1(Contr)2.638 E(ol\255)-.45 E F0(pre\214x)2.638 E .138
-(es, or as a k)-.15 F .438 -.15(ey s)-.1 H(e-).15 E(quence.)108 458.4 Q
-.16(When using the form)108 475.2 R F2 -.1(ke)2.66 G(yname).1 E F0(:)A
-F1(function\255name).833 E F0(or)2.66 E F1(macr)2.66 E(o)-.45 E F0(,)A
-F1 -.1(ke)2.66 G(yname)-.2 E F0 .161(is the name of a k)2.84 F .461 -.15
-(ey s)-.1 H .161(pelled out in Eng-).15 F 2.5(lish. F)108 487.2 R(or e)
--.15 E(xample:)-.15 E(Control-u: uni)144 511.2 Q -.15(ve)-.25 G
-(rsal\255ar).15 E(gument)-.18 E(Meta-Rubout: backw)144 523.2 Q
-(ard-kill-w)-.1 E(ord)-.1 E(Control-o: "> output")144 535.2 Q .699
-(In the abo)108 552 R .998 -.15(ve ex)-.15 H(ample,).15 E F1(C\255u)
-3.038 E F0 .698(is bound to the function)3.448 F F2(uni)3.198 E -.1(ve)
--.1 G(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 .698
-(is bound to the func-)3.728 F(tion)108 564 Q F2(backward\255kill\255w)
-2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F1(C\255o)2.598 E F0 .258
-(is bound to run the macro e)2.938 F .259
+376.8 R 2.638(ow)-.1 G .138(ays: as a symbolic k)-2.738 F .438 -.15
+(ey n)-.1 H .138(ame, possibly with).15 F F2(Meta\255)2.638 E F0(or)
+2.638 E F2(Contr)2.638 E(ol\255)-.45 E F0(pre\214x)2.638 E .138
+(es, or as a k)-.15 F .438 -.15(ey s)-.1 H(e-).15 E(quence.)108 388.8 Q
+.16(When using the form)108 405.6 R F1 -.1(ke)2.66 G(yname).1 E F0(:)A
+F2(function\255name).833 E F0(or)2.66 E F2(macr)2.66 E(o)-.45 E F0(,)A
+F2 -.1(ke)2.66 G(yname)-.2 E F0 .161(is the name of a k)2.84 F .461 -.15
+(ey s)-.1 H .161(pelled out in Eng-).15 F 2.5(lish. F)108 417.6 R(or e)
+-.15 E(xample:)-.15 E(Control-u: uni)144 441.6 Q -.15(ve)-.25 G
+(rsal\255ar).15 E(gument)-.18 E(Meta-Rubout: backw)144 453.6 Q
+(ard-kill-w)-.1 E(ord)-.1 E(Control-o: "> output")144 465.6 Q .699
+(In the abo)108 482.4 R .998 -.15(ve ex)-.15 H(ample,).15 E F2(C\255u)
+3.038 E F0 .698(is bound to the function)3.448 F F1(uni)3.198 E -.1(ve)
+-.1 G(rsal\255ar).1 E(gument)-.1 E F0(,)A F2(M\255DEL)3.878 E F0 .698
+(is bound to the func-)3.728 F(tion)108 494.4 Q F1
+(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F2
+(C\255o)2.598 E F0 .258(is bound to run the macro e)2.938 F .259
(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108
-576 Q(xt)-.15 E/F4 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
-(into the line\).)2.5 E .056(In the second form,)108 592.8 R F2("k)2.556
-E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr)
-2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055
-(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15
+506.4 Q(xt)-.15 E/F4 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
+(into the line\).)2.5 E .056(In the second form,)108 523.2 R F1("k)2.556
+E(eyseq")-.1 E F0(:)A F2(function\255name).833 E F0(or)2.556 E F2(macr)
+2.556 E(o)-.45 E F0(,)A F1 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055
+(fers from)-.25 F F1 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15
(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284
-(denoting an entire k)108 604.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
+(denoting an entire k)108 535.2 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
ay be speci\214ed by placing the sequence within double quotes.).15 F
-(Some)6.284 E .386(GNU Emacs style k)108 616.8 R .686 -.15(ey e)-.1 H
+(Some)6.284 E .386(GNU Emacs style k)108 547.2 R .686 -.15(ey e)-.1 H
.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385
(xample, b)-.15 F .385(ut the symbolic character names)-.2 F
-(are not recognized.)108 628.8 Q("\\C\255u": uni)144 652.8 Q -.15(ve)
+(are not recognized.)108 559.2 Q("\\C\255u": uni)144 583.2 Q -.15(ve)
-.25 G(rsal\255ar).15 E(gument)-.18 E
-("\\C\255x\\C\255r": re\255read\255init\255\214le)144 664.8 Q
-("\\e[11~": "Function K)144 676.8 Q .3 -.15(ey 1)-.25 H(").15 E .314
-(In this e)108 693.6 R(xample,)-.15 E F1(C\255u)2.654 E F0 .314(is ag)
-3.064 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1
-G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0
-.315(is bound to the func-)3.545 F(tion)108 705.6 Q F2 -.18(re)2.5 G
-<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 F4
-(Function Key 1)2.5 E F0(.)A
-(The full set of GNU Emacs style escape sequences is)108 722.4 Q
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(40)190.395 E 0 Cg EP
-%%Page: 41 41
+("\\C\255x\\C\255r": re\255read\255init\255\214le)144 595.2 Q
+("\\e[11~": "Function K)144 607.2 Q .3 -.15(ey 1)-.25 H(").15 E .314
+(In this e)108 624 R(xample,)-.15 E F2(C\255u)2.654 E F0 .314(is ag)
+3.064 F .315(ain bound to the function)-.05 F F1(uni)2.815 E -.1(ve)-.1
+G(rsal\255ar).1 E(gument)-.1 E F0(.)A F2 .315(C\255x C\255r)5.155 F F0
+.315(is bound to the func-)3.545 F(tion)108 636 Q F1 -.18(re)2.5 G<ad72>
+.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F2(ESC [ 1 1 ~)
+3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F4(Function Key 1)
+2.5 E F0(.)A(The full set of GNU Emacs style escape sequences is)108
+652.8 Q F1<5c43ad>144 664.8 Q F0(control pre\214x)180 664.8 Q F1<5c4dad>
+144 676.8 Q F0(meta pre\214x)180 676.8 Q F1(\\e)144 688.8 Q F0
+(an escape character)180 688.8 Q F1(\\\\)144 700.8 Q F0(backslash)180
+700.8 Q F1(\\")144 712.8 Q F0(literal ")180 712.8 Q(GNU Bash 5.2)72 768
+Q(2022 September 19)135.955 E(42)185.115 E 0 Cg EP
+%%Page: 43 43
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<5c43ad>144 84 Q F0(control pre\214x)180 84 Q F1<5c4dad>144 96 Q F0
-(meta pre\214x)180 96 Q F1(\\e)144 108 Q F0(an escape character)180 108
-Q F1(\\\\)144 120 Q F0(backslash)180 120 Q F1(\\")144 132 Q F0
-(literal ")180 132 Q F1<5c08>144 144 Q F0(literal \010)180 144 Q(In add\
-ition to the GNU Emacs style escape sequences, a second set of backslas\
-h escapes is a)108 160.8 Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 172.8
-Q F0(alert \(bell\))180 172.8 Q F1(\\b)144 184.8 Q F0(backspace)180
-184.8 Q F1(\\d)144 196.8 Q F0(delete)180 196.8 Q F1(\\f)144 208.8 Q F0
-(form feed)180 208.8 Q F1(\\n)144 220.8 Q F0(ne)180 220.8 Q(wline)-.25 E
-F1(\\r)144 232.8 Q F0(carriage return)180 232.8 Q F1(\\t)144 244.8 Q F0
-(horizontal tab)180 244.8 Q F1(\\v)144 256.8 Q F0 -.15(ve)180 256.8 S
-(rtical tab).15 E F1(\\)144 268.8 Q/F2 10/Times-Italic@0 SF(nnn)A F0
-(the eight-bit character whose v)180 268.8 Q(alue is the octal v)-.25 E
+SF<5c08>144 84 Q F0(literal \010)180 84 Q(In addition to the GNU Emacs \
+style escape sequences, a second set of backslash escapes is a)108 100.8
+Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 112.8 Q F0(alert \(bell\))180
+112.8 Q F1(\\b)144 124.8 Q F0(backspace)180 124.8 Q F1(\\d)144 136.8 Q
+F0(delete)180 136.8 Q F1(\\f)144 148.8 Q F0(form feed)180 148.8 Q F1
+(\\n)144 160.8 Q F0(ne)180 160.8 Q(wline)-.25 E F1(\\r)144 172.8 Q F0
+(carriage return)180 172.8 Q F1(\\t)144 184.8 Q F0(horizontal tab)180
+184.8 Q F1(\\v)144 196.8 Q F0 -.15(ve)180 196.8 S(rtical tab).15 E F1
+(\\)144 208.8 Q/F2 10/Times-Italic@0 SF(nnn)A F0
+(the eight-bit character whose v)180 208.8 Q(alue is the octal v)-.25 E
(alue)-.25 E F2(nnn)2.5 E F0(\(one to three digits\))2.5 E F1(\\x)144
-280.8 Q F2(HH)A F0(the eight-bit character whose v)180 280.8 Q
+220.8 Q F2(HH)A F0(the eight-bit character whose v)180 220.8 Q
(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0
(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142
-(When entering the te)108 297.6 R 1.141(xt of a macro, single or double\
+(When entering the te)108 237.6 R 1.141(xt of a macro, single or double\
quotes must be used to indicate a macro de\214nition.)-.15 F .089
-(Unquoted te)108 309.6 R .089(xt is assumed to be a function name.)-.15
+(Unquoted te)108 249.6 R .089(xt is assumed to be a function name.)-.15
F .09(In the macro body)5.089 F 2.59(,t)-.65 G .09
(he backslash escapes described abo)-2.59 F -.15(ve)-.15 G(are e)108
-321.6 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G
+261.6 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G
(ther character in the macro te)-2.5 E(xt, including " and \010.)-.15 E
-F1(Bash)108 338.4 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F
+F1(Bash)108 278.4 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F
.73 -.15(ey b)-.1 H .429(indings to be displayed or modi\214ed with the)
.15 F F1(bind)2.929 E F0 -.2(bu)2.929 G .429(iltin command.).2 F .045
-(The editing mode may be switched during interacti)108 350.4 R .345 -.15
+(The editing mode may be switched during interacti)108 290.4 R .345 -.15
(ve u)-.25 H .046(se by using the).15 F 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
+(iltin command).2 F(\(see)108 302.4 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E
(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1
-(Readline V)87 379.2 Q(ariables)-.92 E F0 .044(Readline has v)108 391.2
+(Readline V)87 319.2 Q(ariables)-.92 E F0 .044(Readline has v)108 331.2
R .043(ariables that can be used to further customize its beha)-.25 F
(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043
-(riable may be set in the).25 F F2(inpu-)2.553 E(tr)108 403.2 Q(c)-.37 E
-F0(\214le with a statement of the form)2.81 E F1(set)144 420 Q F2
-(variable\255name value)2.5 E F0(or using the)108 432 Q F1(bind)2.5 E F0
+(riable may be set in the).25 F F2(inpu-)2.553 E(tr)108 343.2 Q(c)-.37 E
+F0(\214le with a statement of the form)2.81 E F1(set)144 360 Q F2
+(variable\255name value)2.5 E F0(or using the)108 372 Q F1(bind)2.5 E F0
-.2(bu)2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E
(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E .79
-(Except where noted, readline v)108 448.8 R .79(ariables can tak)-.25 F
+(Except where noted, readline v)108 388.8 R .79(ariables can tak)-.25 F
3.29(et)-.1 G .79(he v)-3.29 F(alues)-.25 E F1(On)3.29 E F0(or)3.29 E F1
(Off)3.29 E F0 .79(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).)
-.05 F(Unrecog-)5.79 E .449(nized v)108 460.8 R .448
+.05 F(Unrecog-)5.79 E .449(nized v)108 400.8 R .448
(ariable names are ignored.)-.25 F .448(When a v)5.448 F .448(ariable v)
-.25 F .448(alue is read, empty or null v)-.25 F .448
-(alues, "on" \(case-insensi-)-.25 F(ti)108 472.8 Q -.15(ve)-.25 G .467
+(alues, "on" \(case-insensi-)-.25 F(ti)108 412.8 Q -.15(ve)-.25 G .467
(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On)
2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25
F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .468
(he v)-5.468 F .468(ariables and their def)-.25 F(ault)-.1 E -.25(va)108
-484.8 S(lues are:).25 E F1(bell\255style \(audible\))108 501.6 Q F0 .011
-(Controls what happens when readline w)144 513.6 R .011
+424.8 S(lues are:).25 E F1(acti)108 441.6 Q -.1(ve)-.1 G<ad72>.1 E
+(egion\255start\255color)-.18 E F0 2.73(As)144 453.6 S .23(tring v)-2.73
+F .23(ariable that controls the te)-.25 F .229
+(xt color and background when displaying the te)-.15 F .229
+(xt in the acti)-.15 F -.15(ve)-.25 G(re)144 465.6 Q 1.526
+(gion \(see the description of)-.15 F F1(enable\255acti)4.026 E -.1(ve)
+-.1 G<ad72>.1 E(egion)-.18 E F0(belo)4.026 E 4.026(w\). This)-.25 F
+1.526(string must not tak)4.026 F 4.027(eu)-.1 G 4.027(pa)-4.027 G -.15
+(ny)-4.027 G(ph)144 477.6 Q .284
+(ysical character positions on the display)-.05 F 2.784(,s)-.65 G 2.784
+(oi)-2.784 G 2.784(ts)-2.784 G .283
+(hould consist only of terminal escape sequences.)-2.784 F .45
+(It is output to the terminal before displaying the te)144 489.6 R .45
+(xt in the acti)-.15 F .75 -.15(ve r)-.25 H -.15(eg).15 G 2.95
+(ion. This).15 F -.25(va)2.95 G .45(riable is reset to).25 F .379
+(the def)144 501.6 R .379(ault v)-.1 F .379(alue whene)-.25 F -.15(ve)
+-.25 G 2.879(rt).15 G .379(he terminal type changes.)-2.879 F .379
+(The def)5.379 F .379(ault v)-.1 F .378
+(alue is the string that puts the)-.25 F .654
+(terminal in standout mode, as obtained from the terminal')144 513.6 R
+3.155(st)-.55 G .655(erminfo description.)-3.155 F 3.155(As)5.655 G .655
+(ample v)-3.155 F(alue)-.25 E(might be)144 525.6 Q/F4 10/Courier@0 SF
+("\\e[01;33m")2.5 E F0(.)A F1(acti)108 537.6 Q -.1(ve)-.1 G<ad72>.1 E
+(egion\255end\255color)-.18 E F0 3.909(As)144 549.6 S 1.409(tring v)
+-3.909 F 1.408(ariable that "undoes" the ef)-.25 F 1.408(fects of)-.25 F
+F1(acti)3.908 E -.1(ve)-.1 G<ad72>.1 E(egion\255start\255color)-.18 E F0
+1.408(and restores "normal")3.908 F .216
+(terminal display appearance after displaying te)144 561.6 R .216
+(xt in the acti)-.15 F .516 -.15(ve r)-.25 H -.15(eg).15 G 2.716
+(ion. This).15 F .216(string must not tak)2.716 F 2.716(eu)-.1 G(p)
+-2.716 E(an)144 573.6 Q 3.738(yp)-.15 G -.05(hy)-3.738 G 1.238
+(sical character positions on the display).05 F 3.737(,s)-.65 G 3.737
+(oi)-3.737 G 3.737(ts)-3.737 G 1.237
+(hould consist only of terminal escape se-)-3.737 F 2.927(quences. It)
+144 585.6 R .427(is output to the terminal after displaying the te)2.927
+F .428(xt in the acti)-.15 F .728 -.15(ve r)-.25 H -.15(eg).15 G 2.928
+(ion. This).15 F -.25(va)2.928 G .428(riable is).25 F .519
+(reset to the def)144 597.6 R .518(ault v)-.1 F .518(alue whene)-.25 F
+-.15(ve)-.25 G 3.018(rt).15 G .518(he terminal type changes.)-3.018 F
+.518(The def)5.518 F .518(ault v)-.1 F .518(alue is the string that)-.25
+F .251(restores the terminal from standout mode, as obtained from the t\
+erminal')144 609.6 R 2.752(st)-.55 G .252(erminfo description.)-2.752 F
+(A)5.252 E(sample v)144 621.6 Q(alue might be)-.25 E F4("\\e[0m")2.5 E
+F0(.)A F1(bell\255style \(audible\))108 633.6 Q F0 .011
+(Controls what happens when readline w)144 645.6 R .011
(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F1(none)2.51
E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94
-(rings the bell.)144 525.6 R .94(If set to)5.94 F F1(visible)3.44 E F0
+(rings the bell.)144 657.6 R .94(If set to)5.94 F F1(visible)3.44 E F0
3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va)
-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0(,)A
-(readline attempts to ring the terminal')144 537.6 Q 2.5(sb)-.55 G(ell.)
--2.5 E F1(bind\255tty\255special\255chars \(On\))108 549.6 Q F0 .056
-(If set to)144 561.6 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempt\
+(readline attempts to ring the terminal')144 669.6 Q 2.5(sb)-.55 G(ell.)
+-2.5 E F1(bind\255tty\255special\255chars \(On\))108 681.6 Q F0 .056
+(If set to)144 693.6 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempt\
s to bind the control characters treated specially by the k)-2.556 F
-(ernel')-.1 E 2.555(st)-.55 G(ermi-)-2.555 E(nal dri)144 573.6 Q -.15
+(ernel')-.1 E 2.555(st)-.55 G(ermi-)-2.555 E(nal dri)144 705.6 Q -.15
(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va)
--.25 G(lents.).25 E F1(blink\255matching\255par)108 585.6 Q(en \(Off\))
--.18 E F0 .21(If set to)144 597.6 R F1(On)2.71 E F0 2.71(,r)C .21
-(eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21
-(he cursor to an opening parenthesis when a closing).15 F
-(parenthesis is inserted.)144 609.6 Q F1(color)108 621.6 Q
-(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to)
-144 633.6 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, r\
-eadline displays the common pre\214x of the set of possible)-3.015 F
-2.935(completions using a dif)144 645.6 R 2.935(ferent color)-.25 F
-7.936(.T)-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936
-(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 657.6 Q
-F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 669.6 Q
-(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 681.6 R F1(On)4.08 E
-F0 4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08
-F 1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144
-693.6 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E
-(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E
-(ariable.)-.25 E F1(comment\255begin \(`)108 705.6 Q(`#')-.63 E('\))-.63
-E F0 .884(The string that is inserted when the readline)144 717.6 R F1
-(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G
-3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 729.6 Q F1
-(M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0
-(in vi command mode.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
-E(41)190.395 E 0 Cg EP
-%%Page: 42 42
+-.25 G(lents.).25 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E
+(43)185.115 E 0 Cg EP
+%%Page: 44 44
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(completion\255display\255width \(\2551\))108 84 Q F0 1.453(The numbe\
-r of screen columns used to display possible matches when performing co\
-mpletion.)144 96 R .193(The v)144 108 R .193(alue is ignored if it is l\
-ess than 0 or greater than the terminal screen width.)-.25 F 2.694(Av)
-5.194 G .194(alue of 0 will)-2.944 F
-(cause matches to be displayed one per line.)144 120 Q(The def)5 E
-(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 132 Q
-(e\255case \(Off\))-.18 E F0(If set to)144 144 Q F1(On)2.5 E F0 2.5(,r)C
+SF(blink\255matching\255par)108 84 Q(en \(Off\))-.18 E F0 .21(If set to)
+144 96 R F1(On)2.71 E F0 2.71(,r)C .21(eadline attempts to brie\215y mo)
+-2.71 F .51 -.15(ve t)-.15 H .21
+(he cursor to an opening parenthesis when a closing).15 F
+(parenthesis is inserted.)144 108 Q F1(color)108 120 Q
+(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to)
+144 132 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\
+dline displays the common pre\214x of the set of possible)-3.015 F 2.935
+(completions using a dif)144 144 R 2.935(ferent color)-.25 F 7.936(.T)
+-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936
+(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 156 Q F0
+(en)3.077 E .577(vironment v)-.4 F 3.077(ariable. If)-.25 F .577
+(there is a color de\214nition in)3.077 F F1($LS_COLORS)3.077 E F0 .577
+(for the cus-)3.077 F .134(tom suf)144 168 R .135(\214x "readline-color\
+ed-completion-pre\214x", readline uses this color for the common pre\
+\214x in-)-.25 F(stead of its def)144 180 Q(ault.)-.1 E F1(color)108 192
+Q(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 204 R F1(On)4.08 E F0
+4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08 F
+1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144
+216 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the)
+-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E
+F1(comment\255begin \(`)108 228 Q(`#')-.63 E('\))-.63 E F0 .884
+(The string that is inserted when the readline)144 240 R F1
+(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G
+3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 252 Q F1
+(M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0
+(in vi command mode.)2.5 E F1(completion\255display\255width \(\2551\))
+108 264 Q F0 1.453(The number of screen columns used to display possibl\
+e matches when performing completion.)144 276 R .193(The v)144 288 R
+.193(alue is ignored if it is less than 0 or greater than the terminal \
+screen width.)-.25 F 2.694(Av)5.194 G .194(alue of 0 will)-2.944 F
+(cause matches to be displayed one per line.)144 300 Q(The def)5 E
+(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 312 Q
+(e\255case \(Off\))-.18 E F0(If set to)144 324 Q F1(On)2.5 E F0 2.5(,r)C
(eadline performs \214lename matching and completion in a case\255insen\
siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1
-(completion\255map\255case \(Off\))108 156 Q F0 .094(If set to)144 168 R
+(completion\255map\255case \(Off\))108 336 Q F0 .094(If set to)144 348 R
F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E
(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093
(yphens \()-.05 F/F2 10/Times-Italic@0 SF<ad>A F0 2.593(\)a)C .093
-(nd underscores)-2.593 F(\()144 180 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G
+(nd underscores)-2.593 F(\()144 360 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G
(qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E
.3 -.15(ve \214)-.25 H(lename matching and completion.).15 E F1
-(completion\255pr)108 192 Q(e\214x\255display\255length \(0\))-.18 E F0
+(completion\255pr)108 372 Q(e\214x\255display\255length \(0\))-.18 E F0
.829(The length in characters of the common pre\214x of a list of possi\
-ble completions that is displayed)144 204 R 1.275
-(without modi\214cation.)144 216 R 1.275(When set to a v)6.275 F 1.274
+ble completions that is displayed)144 384 R 1.275
+(without modi\214cation.)144 396 R 1.275(When set to a v)6.275 F 1.274
(alue greater than zero, common pre\214x)-.25 F 1.274
-(es longer than this)-.15 F -.25(va)144 228 S(lue are replaced with an \
+(es longer than this)-.15 F -.25(va)144 408 S(lue are replaced with an \
ellipsis when displaying possible completions.).25 E F1
-(completion\255query\255items \(100\))108 240 Q F0 .529
-(This determines when the user is queried about vie)144 252 R .53
+(completion\255query\255items \(100\))108 420 Q F0 .529
+(This determines when the user is queried about vie)144 432 R .53
(wing the number of possible completions gen-)-.25 F .561(erated by the)
-144 264 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061
+144 444 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061
F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56(ger v)
--.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 276 R
+-.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 456 R
.783(If the number of possible completions is greater than or equal to \
-the v)5.782 F .783(alue of this)-.25 F -.25(va)144 288 S .368
+the v)5.782 F .783(alue of this)-.25 F -.25(va)144 468 S .368
(riable, readline will ask whether or not the user wishes to vie).25 F
2.867(wt)-.25 G .367(hem; otherwise the)-2.867 F 2.867(ya)-.15 G .367
-(re simply)-2.867 F(listed on the terminal.)144 300 Q F1(con)108 312 Q
--.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 324 R F1(On)
-3.112 E F0 3.112(,r)C .613(eadline will con)-3.112 F -.15(ve)-.4 G .613
-(rt characters with the eighth bit set to an ASCII k).15 F .913 -.15
-(ey s)-.1 H .613(equence by).15 F .541
+(re simply)-2.867 F .672(listed on the terminal.)144 480 R 3.172(Az)
+5.672 G .673(ero v)-3.172 F .673(alue means readline should ne)-.25 F
+-.15(ve)-.25 G 3.173(ra).15 G .673(sk; ne)-3.173 F -.05(ga)-.15 G(ti).05
+E .973 -.15(ve v)-.25 H .673(alues are treated)-.1 F(as zero.)144 492 Q
+F1(con)108 504 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .613(If set to)
+144 516 R F1(On)3.113 E F0 3.113(,r)C .613(eadline will con)-3.113 F
+-.15(ve)-.4 G .613(rt characters with the eighth bit set to an ASCII k)
+.15 F .912 -.15(ey s)-.1 H .612(equence by).15 F .541
(stripping the eighth bit and pre\214xing an escape character \(in ef)
-144 336 R .541(fect, using escape as the)-.25 F F2 .541(meta pr)3.041 F
-(e-)-.37 E<8c78>144 348 Q F0 2.5(\). The)B(def)2.5 E(ault is)-.1 E F2
-(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E F2(Of)2.5 E(f)
--.18 E F0(if the locale contains eight-bit characters.)2.5 E F1
-(disable\255completion \(Off\))108 360 Q F0 .038(If set to)144 372 R F1
+144 528 R .541(fect, using escape as the)-.25 F F2 .542(meta pr)3.042 F
+(e-)-.37 E<8c78>144 540 Q F0 3.751(\). The)B(def)3.751 E 1.251(ault is)
+-.1 F F2(On)3.751 E F0 3.751(,b)C 1.251(ut readline will set it to)
+-3.951 F F2(Of)3.75 E(f)-.18 E F0 1.25
+(if the locale contains eight-bit characters.)3.75 F 1.141(This v)144
+552 R 1.141(ariable is dependent on the)-.25 F F1(LC_CTYPE)3.641 E F0
+1.141(locale cate)3.641 F(gory)-.15 E 3.641(,a)-.65 G 1.142
+(nd may change if the locale is)-3.641 F(changed.)144 564 Q F1
+(disable\255completion \(Off\))108 576 Q F0 .038(If set to)144 588 R F1
(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038
(ord completion.)-.1 F .038
(Completion characters will be inserted into the)5.038 F(line as if the)
-144 384 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0
-(.)A F1(echo\255contr)108 396 Q(ol\255characters \(On\))-.18 E F0 1.211
-(When set to)144 408 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G
-1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21
+144 600 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0
+(.)A F1(echo\255contr)108 612 Q(ol\255characters \(On\))-.18 E F0 1.21
+(When set to)144 624 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G 1.211
+(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211
(upport it, readline echoes a character)-3.711 F
-(corresponding to a signal generated from the k)144 420 Q -.15(ey)-.1 G
-(board.).15 E F1(editing\255mode \(emacs\))108 432 Q F0 .141
-(Controls whether readline be)144 444 R .141(gins with a set of k)-.15 F
-.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0
-(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0
-(can be set to either)144 456 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
-F0(.)A F1(emacs\255mode\255string \(@\))108 468 Q F0 .518(If the)144 480
-R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G
-.517(riable is enabled, this string is displayed immediately before the)
+(corresponding to a signal generated from the k)144 636 Q -.15(ey)-.1 G
+(board.).15 E F1(editing\255mode \(emacs\))108 648 Q F0 .142
+(Controls whether readline be)144 660 R .141(gins with a set of k)-.15 F
+.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0
+(or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0
+(can be set to either)144 672 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
+F0(.)A F1(emacs\255mode\255string \(@\))108 684 Q F0 .517(If the)144 696
+R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G
+.518(riable is enabled, this string is displayed immediately before the)
.25 F .622
-(last line of the primary prompt when emacs editing mode is acti)144 492
-R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F
-.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 504 S 3.34(yb)-.05 G
-.839(inding, so the standard set of meta- and control pre\214x)-3.34 F
-.839(es and backslash escape sequences is)-.15 F -.2(av)144 516 S 2.798
-(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298
-(gin and end sequences of non-printing characters, which)-.15 F
+(last line of the primary prompt when emacs editing mode is acti)144 708
+R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .621(alue is e)-.25 F
+.621(xpanded lik)-.15 F 3.121(ea)-.1 G -.1(ke)144 720 S 3.339(yb)-.05 G
+.839(inding, so the standard set of meta- and control pre\214x)-3.339 F
+.84(es and backslash escape sequences is)-.15 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(44)185.115 E 0 Cg EP
+%%Page: 45 45
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.2(av)144 84 S
+2.798(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F
+.298(gin and end sequences of non-printing characters, which)-.15 F
(can be used to embed a terminal control sequence into the mode string.)
-144 528 Q F1(enable\255brack)108 540 Q(eted\255paste \(On\))-.1 E F0
-1.222(When set to)144 552 R F1(On)3.721 E F0 3.721(,r)C 1.221
-(eadline will con\214gure the terminal in a w)-3.721 F 1.221
-(ay that will enable it to insert each)-.1 F .353
-(paste into the editing b)144 564 R(uf)-.2 E .353(fer as a single strin\
-g of characters, instead of treating each character as if)-.25 F .544
-(it had been read from the k)144 576 R -.15(ey)-.1 G 3.043(board. This)
-.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543
-(nt pasted characters from being interpreted as).15 F(editing commands.)
-144 588 Q F1(enable\255k)108 600 Q(eypad \(Off\))-.1 E F0 .892
-(When set to)144 612 R F1(On)3.393 E F0 3.393(,r)C .893
+144 96 Q/F1 10/Times-Bold@0 SF(enable\255acti)108 108 Q -.1(ve)-.1 G
+<ad72>.1 E(egion \(On\))-.18 E F0(The)144 120 Q/F2 10/Times-Italic@0 SF
+(point)3.245 E F0 .746(is the current cursor position, and)3.245 F F2
+(mark)3.246 E F0 .746(refers to a sa)3.246 F -.15(ve)-.2 G 3.246(dc).15
+G .746(ursor position.)-3.246 F .746(The te)5.746 F .746(xt be-)-.15 F
+.344(tween the point and mark is referred to as the)144 132 R F2 -.37
+(re)2.844 G(gion)-.03 E F0 5.344(.W)C .344(hen this v)-5.344 F .344
+(ariable is set to)-.25 F F2(On)2.844 E F0 2.844(,r)C .344(eadline al-)
+-2.844 F(lo)144 144 Q .098(ws certain commands to designate the re)-.25
+F .098(gion as)-.15 F F2(active)2.598 E F0 5.098(.W)C .098(hen the re)
+-5.098 F .098(gion is acti)-.15 F -.15(ve)-.25 G 2.598(,r).15 G .098
+(eadline high-)-2.598 F .971(lights the te)144 156 R .971(xt in the re)
+-.15 F .971(gion using the v)-.15 F .971(alue of the)-.25 F F1(acti)3.47
+E -.1(ve)-.1 G<ad72>.1 E(egion\255start\255color)-.18 E F0 3.47(,w)C .97
+(hich def)-3.47 F .97(aults to)-.1 F .484
+(the string that enables the terminal')144 168 R 2.985(ss)-.55 G .485
+(tandout mode.)-2.985 F .485(The acti)5.485 F .785 -.15(ve r)-.25 H -.15
+(eg).15 G .485(ion sho).15 F .485(ws the te)-.25 F .485(xt inserted by)
+-.15 F(brack)144 180 Q(eted-paste and an)-.1 E 2.5(ym)-.15 G(atching te)
+-2.5 E(xt found by incremental and non-incremental history searches.)
+-.15 E F1(enable\255brack)108 192 Q(eted\255paste \(On\))-.1 E F0 .841
+(When set to)144 204 R F1(On)3.341 E F0 3.341(,r)C .841(eadline con\214\
+gures the terminal to insert each paste into the editing b)-3.341 F(uf)
+-.2 E .84(fer as a)-.25 F .799(single string of characters, instead of \
+treating each character as if it had been read from the k)144 216 R -.15
+(ey)-.1 G(-).15 E 3.159(board. This)144 228 R(pre)3.159 E -.15(ve)-.25 G
+.659(nts readline from e).15 F -.15(xe)-.15 G .659(cuting an).15 F 3.158
+(ye)-.15 G .658(diting commands bound to k)-3.158 F .958 -.15(ey s)-.1 H
+.658(equences ap-).15 F(pearing in the pasted te)144 240 Q(xt.)-.15 E F1
+(enable\255k)108 252 Q(eypad \(Off\))-.1 E F0 .892(When set to)144 264 R
+F1(On)3.393 E F0 3.393(,r)C .893
(eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G
.893(pad when it is called.).15 F .893(Some sys-)5.893 F
-(tems need this to enable the arro)144 624 Q 2.5(wk)-.25 G -.15(ey)-2.6
-G(s.).15 E F1(enable\255meta\255k)108 636 Q(ey \(On\))-.1 E F0 .64
-(When set to)144 648 R F1(On)3.14 E F0 3.14(,r)C .64
+(tems need this to enable the arro)144 276 Q 2.5(wk)-.25 G -.15(ey)-2.6
+G(s.).15 E F1(enable\255meta\255k)108 288 Q(ey \(On\))-.1 E F0 .64
+(When set to)144 300 R F1(On)3.14 E F0 3.14(,r)C .64
(eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64
(eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64
-(he terminal claims to support).15 F(when it is called.)144 660 Q
+(he terminal claims to support).15 F(when it is called.)144 312 Q
(On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H
2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1
-(expand\255tilde \(Off\))108 672 Q F0(If set to)144 684 Q F1(On)2.5 E F0
+(expand\255tilde \(Off\))108 324 Q F0(If set to)144 336 Q F1(On)2.5 E F0
2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w)
--.15 E(ord completion.)-.1 E F1(history\255pr)108 696 Q(eser)-.18 E -.1
-(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 708 R F1(On)3.052
+-.15 E(ord completion.)-.1 E F1(history\255pr)108 348 Q(eser)-.18 E -.1
+(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 360 R F1(On)3.052
E F0 3.052(,t)C .552(he history code attempts to place point at the sam\
-e location on each history line re-)-3.052 F(trie)144 720 Q -.15(ve)-.25
+e location on each history line re-)-3.052 F(trie)144 372 Q -.15(ve)-.25
G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E
-F0(or)2.5 E F1(next-history)2.5 E F0(.)A(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(42)190.395 E 0 Cg EP
-%%Page: 43 43
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(history\255size \(unset\))108 84 Q F0 .949
-(Set the maximum number of history entries sa)144 96 R -.15(ve)-.2 G
-3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948
-(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482
-(history entries are deleted and no ne)144 108 R 2.982(we)-.25 G .483
-(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v)
-2.983 F .483(alue less than zero, the num-)-.25 F .278
-(ber of history entries is not limited.)144 120 R .277(By def)5.278 F
+F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1(history\255size \(unset\))
+108 384 Q F0 .949(Set the maximum number of history entries sa)144 396 R
+-.15(ve)-.2 G 3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)
+-3.448 F .948(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598
+E .482(history entries are deleted and no ne)144 408 R 2.982(we)-.25 G
+.483(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483
+(set to a v)2.983 F .483(alue less than zero, the num-)-.25 F .278
+(ber of history entries is not limited.)144 420 R .277(By def)5.278 F
.277(ault, the number of history entries is set to the v)-.1 F .277
-(alue of)-.25 F(the)144 132 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F
-3.41(ariable. If)-.25 F .911(an attempt is made to set)3.41 F/F2 10
-/Times-Italic@0 SF(history\255size)3.411 E F0 .911(to a non-numeric v)
-3.411 F(alue,)-.25 E
-(the maximum number of history entries will be set to 500.)144 144 Q F1
-(horizontal\255scr)108 156 Q(oll\255mode \(Off\))-.18 E F0 .449
-(When set to)144 168 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448
+(alue of)-.25 F(the)144 432 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F
+3.41(ariable. If)-.25 F .911(an attempt is made to set)3.41 F F2
+(history\255size)3.411 E F0 .911(to a non-numeric v)3.411 F(alue,)-.25 E
+(the maximum number of history entries will be set to 500.)144 444 Q F1
+(horizontal\255scr)108 456 Q(oll\255mode \(Off\))-.18 E F0 .449
+(When set to)144 468 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448
(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448
(crolling the input horizontally on a)-2.948 F 1.194(single screen line\
when it becomes longer than the screen width rather than wrapping to a\
- ne)144 180 R(w)-.25 E 2.5(line. This)144 192 R
+ ne)144 480 R(w)-.25 E 2.5(line. This)144 492 R
(setting is automatically enabled for terminals of height 1.)2.5 E F1
-(input\255meta \(Off\))108 204 Q F0 1.062(If set to)144 216 R F1(On)
+(input\255meta \(Off\))108 504 Q F0 1.062(If set to)144 516 R F1(On)
3.562 E F0 3.562(,r)C 1.061(eadline will enable eight-bit input \(that \
is, it will not strip the eighth bit from the)-3.562 F .335
-(characters it reads\), re)144 228 R -.05(ga)-.15 G .335
+(characters it reads\), re)144 528 R -.05(ga)-.15 G .335
(rdless of what the terminal claims it can support.).05 F .336(The name)
-5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as)144 240 S(ynon)
+5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as)144 540 S(ynon)
-2.865 E .365(ym for this v)-.15 F 2.864(ariable. The)-.25 F(def)2.864 E
.364(ault is)-.1 F F2(Of)2.864 E(f)-.18 E F0 2.864(,b)C .364
(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .364
-(if the locale contains)2.864 F(eight-bit characters.)144 252 Q F1
-(isear)108 264 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\))
+(if the locale contains)2.864 F 1.866(eight-bit characters.)144 552 R
+1.866(This v)6.866 F 1.867(ariable is dependent on the)-.25 F F1
+(LC_CTYPE)4.367 E F0 1.867(locale cate)4.367 F(gory)-.15 E 4.367(,a)-.65
+G 1.867(nd may)-4.367 F(change if the locale is changed.)144 564 Q F1
+(isear)108 576 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\))
-.63 E F0 .439(The string of characters that should terminate an increm\
-ental search without subsequently e)144 276 R -.15(xe)-.15 G(cut-).15 E
-.935(ing the character as a command.)144 288 R .935(If this v)5.935 F
-.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934
-(alue, the characters)-3.684 F F2(ESC)3.434 E F0(and)144 300 Q F2
+ental search without subsequently e)144 588 R -.15(xe)-.15 G(cut-).15 E
+.934(ing the character as a command.)144 600 R .935(If this v)5.935 F
+.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.435(nav).15 G .935
+(alue, the characters)-3.685 F F2(ESC)3.435 E F0(and)144 612 Q F2
(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke)
-108 312 S(ymap \(emacs\)).1 E F0 2.02(Set the current readline k)144 324
-R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021
-(alid k)-.25 F -.15(ey)-.1 G 2.021(map names is).15 F F2 2.021
-(emacs, emacs\255standar)4.521 F(d,)-.37 E .042
-(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 336 R F0 2.542(,a)C
+108 624 S(ymap \(emacs\)).1 E F0 2.021(Set the current readline k)144
+636 R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021
+(alid k)-.25 F -.15(ey)-.1 G 2.021(map names is).15 F F2 2.02
+(emacs, emacs\255standar)4.52 F(d,)-.37 E .041
+(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 648 R F0 2.542(,a)C
(nd)-2.542 E F2(vi\255insert)2.832 E F0(.).68 E F2(vi)5.042 E F0 .042
(is equi)2.542 F -.25(va)-.25 G .042(lent to).25 F F2(vi\255command)
-2.541 E F0(;)A F2(emacs)2.541 E F0 .448(is equi)144 348 R -.25(va)-.25 G
-.448(lent to).25 F F2(emacs\255standar)2.948 E(d)-.37 E F0 5.448(.T)C
-.448(he def)-5.448 F .448(ault v)-.1 F .449(alue is)-.25 F F2(emacs)
-3.139 E F0 2.949(;t).27 G .449(he v)-2.949 F .449(alue of)-.25 F F1
-(editing\255mode)2.949 E F0 .449(also af-)2.949 F(fects the def)144 360
-Q(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 372 S
-(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 384 R
+2.542 E F0(;)A F2(emacs)2.542 E F0 .449(is equi)144 660 R -.25(va)-.25 G
+.449(lent to).25 F F2(emacs\255standar)2.949 E(d)-.37 E F0 5.449(.T)C
+.449(he def)-5.449 F .449(ault v)-.1 F .449(alue is)-.25 F F2(emacs)
+3.139 E F0 2.948(;t).27 G .448(he v)-2.948 F .448(alue of)-.25 F F1
+(editing\255mode)2.948 E F0 .448(also af-)2.948 F(fects the def)144 672
+Q(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 684 S
+(yseq\255timeout \(500\)).1 E F0 .367(Speci\214es the duration)144 696 R
F2 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367
-(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s)
--.1 H(equence).15 E .524(\(one that can form a complete k)144 396 R .824
+(ait for a character when reading an ambiguous k)-.1 F .668 -.15(ey s)
+-.1 H(equence).15 E .525(\(one that can form a complete k)144 708 R .825
-.15(ey s)-.1 H .524(equence using the input read so f).15 F(ar)-.1 E
-3.025(,o)-.4 G 3.025(rc)-3.025 G .525(an tak)-3.025 F 3.025(ea)-.1 G
-.525(dditional in-)-3.025 F .807(put to complete a longer k)144 408 R
+3.024(,o)-.4 G 3.024(rc)-3.024 G .524(an tak)-3.024 F 3.024(ea)-.1 G
+.524(dditional in-)-3.024 F .806(put to complete a longer k)144 720 R
1.106 -.15(ey s)-.1 H 3.306(equence\). If).15 F .806(no input is recei)
-3.306 F -.15(ve)-.25 G 3.306(dw).15 G .806(ithin the timeout,)-3.306 F
-F2 -.37(re)3.306 G(adline).37 E F0(will)3.306 E .906(use the shorter b)
-144 420 R .907(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407
-(equence. The).15 F -.25(va)3.407 G .907
-(lue is speci\214ed in milliseconds, so a v).25 F .907(alue of)-.25 F
-.05(1000 means that)144 432 R F2 -.37(re)2.55 G(adline).37 E F0 .05
-(will w)2.55 F .05(ait one second for additional input.)-.1 F .05
-(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051
-(less than or equal to zero, or to a non-numeric v)144 444 R(alue,)-.25
-E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051
-(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed)
--2.552 E(to decide which k)144 456 Q .3 -.15(ey s)-.1 H
-(equence to complete.).15 E F1(mark\255dir)108 468 Q(ectories \(On\))
--.18 E F0(If set to)144 480 Q F1(On)2.5 E F0 2.5(,c)C
+3.306 F -.15(ve)-.25 G 3.306(dw).15 G .807(ithin the timeout,)-3.306 F
+F2 -.37(re)3.307 G(adline).37 E F0(will)3.307 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(45)185.115 E 0 Cg EP
+%%Page: 46 46
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .907
+(use the shorter b)144 84 R .907(ut complete k)-.2 F 1.207 -.15(ey s)-.1
+H 3.407(equence. The).15 F -.25(va)3.407 G .907
+(lue is speci\214ed in milliseconds, so a v).25 F .906(alue of)-.25 F
+.05(1000 means that)144 96 R/F1 10/Times-Italic@0 SF -.37(re)2.55 G
+(adline).37 E F0 .05(will w)2.55 F .05
+(ait one second for additional input.)-.1 F .05(If this v)5.05 F .05
+(ariable is set to a v)-.25 F(alue)-.25 E .051
+(less than or equal to zero, or to a non-numeric v)144 108 R(alue,)-.25
+E F1 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051
+(ait until another k)-.1 F .351 -.15(ey i)-.1 H 2.551(sp).15 G(ressed)
+-2.551 E(to decide which k)144 120 Q .3 -.15(ey s)-.1 H
+(equence to complete.).15 E/F2 10/Times-Bold@0 SF(mark\255dir)108 132 Q
+(ectories \(On\))-.18 E F0(If set to)144 144 Q F2(On)2.5 E F0 2.5(,c)C
(ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.)
-.15 E F1(mark\255modi\214ed\255lines \(Off\))108 492 Q F0(If set to)144
-504 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
--.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1
-(*)A F0(\).)A F1(mark\255symlink)108 516 Q(ed\255dir)-.1 E
-(ectories \(Off\))-.18 E F0 .175(If set to)144 528 R F1(On)2.675 E F0
+.15 E F2(mark\255modi\214ed\255lines \(Off\))108 156 Q F0(If set to)144
+168 Q F2(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
+-.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F2
+(*)A F0(\).)A F2(mark\255symlink)108 180 Q(ed\255dir)-.1 E
+(ectories \(Off\))-.18 E F0 .175(If set to)144 192 R F2(On)2.675 E F0
2.675(,c)C .175
(ompleted names which are symbolic links to directories ha)-2.675 F .475
--.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 540
-Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1
-(match\255hidden\255\214les \(On\))108 552 Q F0 .192(This v)144 564 R
-.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192
-(auses readline to match \214les whose names be)-2.692 F .193
-(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457
-(\214les\) when performing \214lename completion.)144 576 R .456
-(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.)
--2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F
-(user in the \214lename to be completed.)144 588 Q F1
-(menu\255complete\255display\255pr)108 600 Q(e\214x \(Off\))-.18 E F0
-1.585(If set to)144 612 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\
+-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 204
+Q(alue of)-.25 E F2(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F2
+(match\255hidden\255\214les \(On\))108 216 Q F0 .193(This v)144 228 R
+.193(ariable, when set to)-.25 F F2(On)2.693 E F0 2.693(,c)C .192
+(auses readline to match \214les whose names be)-2.693 F .192
+(gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456
+(\214les\) when performing \214lename completion.)144 240 R .456
+(If set to)5.456 F F2(Off)2.956 E F0 2.956(,t)C .456(he leading `.)
+-2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F
+(user in the \214lename to be completed.)144 252 Q F2
+(menu\255complete\255display\255pr)108 264 Q(e\214x \(Off\))-.18 E F0
+1.586(If set to)144 276 R F2(On)4.086 E F0 4.086(,m)C 1.585(enu complet\
ion displays the common pre\214x of the list of possible completions)
--4.085 F(\(which may be empty\) before c)144 624 Q
-(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 636 Q F0
-.507(If set to)144 648 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \
+-4.086 F(\(which may be empty\) before c)144 288 Q
+(ycling through the list.)-.15 E F2(output\255meta \(Off\))108 300 Q F0
+.506(If set to)144 312 R F2(On)3.006 E F0 3.006(,r)C .507(eadline will \
display characters with the eighth bit set directly rather than as a me\
-ta-)-3.007 F(pre\214x)144 660 Q .884(ed escape sequence.)-.15 F .884
-(The def)5.884 F .884(ault is)-.1 F F2(Of)3.384 E(f)-.18 E F0 3.384(,b)C
-.884(ut readline will set it to)-3.584 F F2(On)3.384 E F0 .885
-(if the locale contains)3.384 F(eight-bit characters.)144 672 Q F1
-(page\255completions \(On\))108 684 Q F0 .809(If set to)144 696 R F1(On)
-3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor)
+ta-)-3.006 F(pre\214x)144 324 Q .885(ed escape sequence.)-.15 F .884
+(The def)5.884 F .884(ault is)-.1 F F1(Of)3.384 E(f)-.18 E F0 3.384(,b)C
+.884(ut readline will set it to)-3.584 F F1(On)3.384 E F0 .884
+(if the locale contains)3.384 F 1.866(eight-bit characters.)144 336 R
+1.866(This v)6.866 F 1.867(ariable is dependent on the)-.25 F F2
+(LC_CTYPE)4.367 E F0 1.867(locale cate)4.367 F(gory)-.15 E 4.367(,a)-.65
+G 1.867(nd may)-4.367 F(change if the locale is changed.)144 348 Q F2
+(page\255completions \(On\))108 360 Q F0 .809(If set to)144 372 R F2(On)
+3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F1(mor)
3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808
(ager to display a screenful of possible comple-)-3.308 F
-(tions at a time.)144 708 Q(GNU Bash 5.1)72 768 Q(2020 October 29)
-141.235 E(43)190.395 E 0 Cg EP
-%%Page: 44 44
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(print\255completions\255horizontally \(Off\))108 84 Q F0 .227
-(If set to)144 96 R F1(On)2.727 E F0 2.727(,r)C .227(eadline will displ\
-ay completions with matches sorted horizontally in alphabetical or)
--2.727 F(-)-.2 E(der)144 108 Q 2.5(,r)-.4 G(ather than do)-2.5 E
-(wn the screen.)-.25 E F1 -2.29 -.18(re v)108 120 T
-(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 132 R
-F1(On)3.199 E F0 3.199(,r)C .699
+(tions at a time.)144 384 Q F2
+(print\255completions\255horizontally \(Off\))108 396 Q F0 .227
+(If set to)144 408 R F2(On)2.727 E F0 2.727(,r)C .227(eadline will disp\
+lay completions with matches sorted horizontally in alphabetical or)
+-2.727 F(-)-.2 E(der)144 420 Q 2.5(,r)-.4 G(ather than do)-2.5 E
+(wn the screen.)-.25 E F2 -2.29 -.18(re v)108 432 T
+(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 444 R
+F2(On)3.199 E F0 3.199(,r)C .699
(eadline will undo all changes to history lines before returning when)
--3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 144 S
+-3.199 F F2(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 456 S
2.686(cuted. By).15 F(def)2.686 E .186
(ault, history lines may be modi\214ed and retain indi)-.1 F .186
-(vidual undo lists across calls to)-.25 F F1 -.18(re)144 156 S(adline)
-.18 E F0(.)A F1(sho)108 168 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
-F0 .304(This alters the def)144 180 R .304(ault beha)-.1 F .304
-(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On)
+(vidual undo lists across calls to)-.25 F F2 -.18(re)144 468 S(adline)
+.18 E F0(.)A F2(sho)108 480 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
+F0 .304(This alters the def)144 492 R .304(ault beha)-.1 F .304
+(vior of the completion functions.)-.2 F .304(If set to)5.304 F F2(On)
2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H
(ore).15 E 1.264(than one possible completion cause the matches to be l\
-isted immediately instead of ringing the)144 192 R(bell.)144 204 Q F1
-(sho)108 216 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346
-(This alters the def)144 228 R 5.346(ault beha)-.1 F 5.345
+isted immediately instead of ringing the)144 504 R(bell.)144 516 Q F2
+(sho)108 528 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346
+(This alters the def)144 540 R 5.346(ault beha)-.1 F 5.345
(vior of the completion functions in a f)-.2 F 5.345(ashion similar to)
--.1 F F1(sho)144 240 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C
-4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691
+-.1 F F2(sho)144 552 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C
+4.19(fs)-6.69 G 1.691(et to)-4.19 F F2(On)4.191 E F0 4.191(,w)C 1.691
(ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691
-(ore than one possible completion).15 F 1.04(without an)144 252 R 3.54
+(ore than one possible completion).15 F 1.04(without an)144 564 R 3.54
(yp)-.15 G 1.039
(ossible partial completion \(the possible completions don')-3.54 F
3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\
-es to be listed immediately instead of ringing the bell.)144 264 Q F1
-(sho)108 276 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021
-(If set to)144 288 R F1(On)3.521 E F0 3.521(,a)C 1.022
+es to be listed immediately instead of ringing the bell.)144 576 Q F2
+(sho)108 588 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021
+(If set to)144 600 R F2(On)3.521 E F0 3.521(,a)C 1.022
(dd a string to the be)-3.521 F 1.022
(ginning of the prompt indicating the editing mode: emacs, vi)-.15 F
-(command, or vi insertion.)144 300 Q(The mode strings are user)5 E
-(-settable \(e.g.,)-.2 E/F2 10/Times-Italic@0 SF
-(emacs\255mode\255string)2.5 E F0(\).)A F1
-(skip\255completed\255text \(Off\))108 312 Q F0 .095(If set to)144 324 R
-F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095
+(command, or vi insertion.)144 612 Q(The mode strings are user)5 E
+(-settable \(e.g.,)-.2 E F1(emacs\255mode\255string)2.5 E F0(\).)A F2
+(skip\255completed\255text \(Off\))108 624 Q F0 .095(If set to)144 636 R
+F2(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095
(ault completion beha)-.1 F .094
-(vior when inserting a single match into the line.)-.2 F(It')144 336 Q
+(vior when inserting a single match into the line.)-.2 F(It')144 648 Q
2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046
(hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1
F .046(enabled, readline does not)2.546 F 1.394(insert characters from \
-the completion that match characters after point in the w)144 348 R
-1.394(ord being com-)-.1 F(pleted, so portions of the w)144 360 Q
-(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1
-(vi\255cmd\255mode\255string \(\(cmd\)\))108 372 Q F0 .517(If the)144
-384 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G
+the completion that match characters after point in the w)144 660 R
+1.394(ord being com-)-.1 F(pleted, so portions of the w)144 672 Q
+(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F2
+(vi\255cmd\255mode\255string \(\(cmd\)\))108 684 Q F0 .517(If the)144
+696 R F1(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G
.518(riable is enabled, this string is displayed immediately before the)
.25 F .475(last line of the primary prompt when vi editing mode is acti)
-144 396 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475
-(The v)5.475 F(alue)-.25 E .33(is e)144 408 R .33(xpanded lik)-.15 F
-2.83(eak)-.1 G .63 -.15(ey b)-2.93 H .33
-(inding, so the standard set of meta- and control pre\214x).15 F .33
-(es and backslash es-)-.15 F .245(cape sequences is a)144 420 R -.25(va)
--.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F
-.244(gin and end sequences of non-printing)-.15 F(characters, which can\
- be used to embed a terminal control sequence into the mode string.)144
-432 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 444 Q F0 .517
-(If the)144 456 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0
--.25(va)3.017 G .518
+144 708 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475
+(The v)5.475 F(alue)-.25 E 1.235(is e)144 720 R 1.235(xpanded lik)-.15 F
+3.735(eak)-.1 G 1.535 -.15(ey b)-3.835 H 1.236
+(inding, so the standard set of meta- and control pre\214x).15 F 1.236
+(es and backslash)-.15 F(GNU Bash 5.2)72 768 Q(2022 September 19)135.955
+E(46)185.115 E 0 Cg EP
+%%Page: 47 47
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .315
+(escape sequences is a)144 84 R -.25(va)-.2 G 2.815(ilable. Use).25 F
+.314(the \\1 and \\2 escapes to be)2.815 F .314
+(gin and end sequences of non-print-)-.15 F(ing characters, which can b\
+e used to embed a terminal control sequence into the mode string.)144 96
+Q/F1 10/Times-Bold@0 SF(vi\255ins\255mode\255string \(\(ins\)\))108 108
+Q F0 .517(If the)144 120 R/F2 10/Times-Italic@0 SF
+(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G .518
(riable is enabled, this string is displayed immediately before the).25
F .186(last line of the primary prompt when vi editing mode is acti)144
-468 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v)
-5.186 F .186(alue is)-.25 F -.15(ex)144 480 S .923(panded lik).15 F
+132 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v)
+5.186 F .186(alue is)-.25 F -.15(ex)144 144 S .923(panded lik).15 F
3.423(eak)-.1 G 1.223 -.15(ey b)-3.523 H .924
(inding, so the standard set of meta- and control pre\214x).15 F .924
-(es and backslash es-)-.15 F .245(cape sequences is a)144 492 R -.25(va)
+(es and backslash es-)-.15 F .245(cape sequences is a)144 156 R -.25(va)
-.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F
.244(gin and end sequences of non-printing)-.15 F(characters, which can\
be used to embed a terminal control sequence into the mode string.)144
-504 Q F1(visible\255stats \(Off\))108 516 Q F0 .846(If set to)144 528 R
+168 Q F1(visible\255stats \(Off\))108 180 Q F0 .846(If set to)144 192 R
F1(On)3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F
3.346(st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846
(\(2\) is appended to the \214lename)B
-(when listing possible completions.)144 540 Q F1
-(Readline Conditional Constructs)87 556.8 Q F0 .05
-(Readline implements a f)108 568.8 R .05(acility similar in spirit to t\
+(when listing possible completions.)144 204 Q F1
+(Readline Conditional Constructs)87 220.8 Q F0 .05
+(Readline implements a f)108 232.8 R .05(acility similar in spirit to t\
he conditional compilation features of the C preprocessor)-.1 F .096
-(which allo)108 580.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096
+(which allo)108 244.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096
(indings and v).15 F .096
(ariable settings to be performed as the result of tests.)-.25 F .097
-(There are four parser)5.096 F(directi)108 592.8 Q -.15(ve)-.25 G 2.5
-(su).15 G(sed.)-2.5 E F1($if)108 609.6 Q F0(The)144 609.6 Q F1($if)2.963
+(There are four parser)5.096 F(directi)108 256.8 Q -.15(ve)-.25 G 2.5
+(su).15 G(sed.)-2.5 E F1($if)108 273.6 Q F0(The)144 273.6 Q F1($if)2.963
E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\
he editing mode, the terminal being used,)-.25 F
-(or the application using readline.)144 621.6 Q(The te)5 E
+(or the application using readline.)144 285.6 Q(The te)5 E
(xt of the test, after an)-.15 E 2.5(yc)-.15 G(omparison operator)-2.5 E
-(,)-.4 E -.15(ex)146.5 633.6 S(tends to the end of the line; unless oth\
+(,)-.4 E -.15(ex)146.5 297.6 S(tends to the end of the line; unless oth\
erwise noted, no characters are required to isolate it.).15 E F1(mode)
-144 650.4 Q F0(The)180 650.4 Q F1(mode=)3.711 E F0 1.211(form of the)
+144 314.4 Q F0(The)180 314.4 Q F1(mode=)3.711 E F0 1.211(form of the)
3.711 F F1($if)3.711 E F0(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711
(su).15 G 1.211(sed to test whether readline is in emacs or vi)-3.711 F
-3.065(mode. This)180 662.4 R .565(may be used in conjunction with the)
+3.065(mode. This)180 326.4 R .565(may be used in conjunction with the)
3.065 F F1 .565(set k)3.065 F(eymap)-.1 E F0 .565
-(command, for instance, to)3.065 F .735(set bindings in the)180 674.4 R
+(command, for instance, to)3.065 F .735(set bindings in the)180 338.4 R
F2(emacs\255standar)3.235 E(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)
3.235 E F0 -.1(ke)3.235 G .735(ymaps only if readline is starting)-.05 F
-(out in emacs mode.)180 686.4 Q F1(term)144 703.2 Q F0(The)180 703.2 Q
+(out in emacs mode.)180 350.4 Q F1(term)144 367.2 Q F0(The)180 367.2 Q
F1(term=)3.197 E F0 .696
(form may be used to include terminal-speci\214c k)3.197 F .996 -.15
-(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 715.2 R
+(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 379.2 R
.954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154
(sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1
-(wo)3.154 G .654(rd on the right side of).1 F(the)180 727.2 Q F1(=)3.232
+(wo)3.154 G .654(rd on the right side of).1 F(the)180 391.2 Q F1(=)3.232
E F0 .732(is tested ag)3.232 F .732(ainst both the full name of the ter\
-minal and the portion of the terminal)-.05 F(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(44)190.395 E 0 Cg EP
-%%Page: 45 45
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(name before the \214rst)180 84 Q/F1 10/Times-Bold@0 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
+minal and the portion of the terminal)-.05 F(name before the \214rst)180
+403.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.84 E
-F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 100.8 S(rsion).1 E F0
-(The)180 112.8 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608
+F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 420 S(rsion).1 E F0
+(The)180 432 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608
(test may be used to perform comparisons ag)3.108 F .609
-(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 124.8 Q F1
--.1(ve)2.772 G(rsion).1 E F0 -.15(ex)2.772 G .272
+(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 444 Q F1 -.1
+(ve)2.772 G(rsion).1 E F0 -.15(ex)2.772 G .272
(pands to the current readline v).15 F 2.771(ersion. The)-.15 F .271
-(set of comparison operators in-)2.771 F(cludes)180 136.8 Q F1(=)3.063 E
+(set of comparison operators in-)2.771 F(cludes)180 456 Q F1(=)3.063 E
F0 3.063(,\()C(and)-3.063 E F1(==)3.063 E F0(\),)A F1(!=)3.063 E F0(,)A
F1(<=)3.063 E F0(,)A F1(>=)3.063 E F0(,)A F1(<)3.063 E F0 3.063(,a)C(nd)
-3.063 E F1(>)3.064 E F0 5.564(.T)C .564(he v)-5.564 F .564
(ersion number supplied on the right side)-.15 F .318
-(of the operator consists of a major v)180 148.8 R .318(ersion number)
--.15 F 2.818(,a)-.4 G 2.818(no)-2.818 G .318
-(ptional decimal point, and an op-)-2.818 F .1(tional minor v)180 160.8
-R .1(ersion \(e.g.,)-.15 F F1(7.1)2.6 E F0 .1(\). If the minor v)B .101
+(of the operator consists of a major v)180 468 R .318(ersion number)-.15
+F 2.818(,a)-.4 G 2.818(no)-2.818 G .318
+(ptional decimal point, and an op-)-2.818 F .1(tional minor v)180 480 R
+.1(ersion \(e.g.,)-.15 F F1(7.1)2.6 E F0 .1(\). If the minor v)B .101
(ersion is omitted, it is assumed to be)-.15 F F1(0)2.601 E F0 5.101(.T)
-C(he)-5.101 E .06(operator may be separated from the string)180 172.8 R
-F1 -.1(ve)2.56 G(rsion).1 E F0 .06(and from the v)2.56 F .06
-(ersion number ar)-.15 F(gument)-.18 E(by whitespace.)180 184.8 Q F1
-(application)144 201.6 Q F0(The)180 213.6 Q F1(application)3.003 E F0
+C(he)-5.101 E .06(operator may be separated from the string)180 492 R F1
+-.1(ve)2.56 G(rsion).1 E F0 .06(and from the v)2.56 F .06
+(ersion number ar)-.15 F(gument)-.18 E(by whitespace.)180 504 Q F1
+(application)144 520.8 Q F0(The)180 532.8 Q F1(application)3.003 E F0
.503(construct is used to include application-speci\214c settings.)3.003
F .503(Each program)5.503 F .114(using the readline library sets the)180
-225.6 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
+544.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
(nd an initialization \214le can test for a)-2.614 F .5(particular v)180
-237.6 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15
+556.8 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15
(ey s)-.1 H .501(equences to functions useful for a spe-).15 F .397
-(ci\214c program.)180 249.6 R -.15(Fo)5.397 G 2.896(ri).15 G .396
+(ci\214c program.)180 568.8 R -.15(Fo)5.397 G 2.896(ri).15 G .396
(nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15
-(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 261.6
-Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 285.6 Q F0
-(Bash)2.5 E 2.5(#Q)180 297.6 S(uote the current or pre)-2.5 E(vious w)
--.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 309.6 Q F1($endif)180
-321.6 Q F2(variable)144 338.4 Q F0(The)180 350.4 Q F2(variable)3.776 E
+(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 580.8
+Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 604.8 Q F0
+(Bash)2.5 E 2.5(#Q)180 616.8 S(uote the current or pre)-2.5 E(vious w)
+-.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 628.8 Q F1($endif)180
+640.8 Q F2(variable)144 657.6 Q F0(The)180 669.6 Q F2(variable)3.776 E
F0 1.276(construct pro)3.776 F 1.276
(vides simple equality tests for readline v)-.15 F 1.277(ariables and v)
-.25 F(alues.)-.25 E .08(The permitted comparison operators are)180
-362.4 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2
+681.6 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2
(!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .079
(ariable name must be sepa-)-.25 F .98(rated from the comparison operat\
-or by whitespace; the operator may be separated from)180 374.4 R .13
-(the v)180 386.4 R .13(alue on the right hand side by whitespace.)-.25 F
+or by whitespace; the operator may be separated from)180 693.6 R .13
+(the v)180 705.6 R .13(alue on the right hand side by whitespace.)-.25 F
.129(Both string and boolean v)5.129 F .129(ariables may be)-.25 F
-(tested. Boolean v)180 398.4 Q(ariables must be tested ag)-.25 E
+(tested. Boolean v)180 717.6 Q(ariables must be tested ag)-.25 E
(ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f)
--.18 E F0(.)A F1($endif)108 415.2 Q F0(This command, as seen in the pre)
-144 415.2 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0
-(command.)2.5 E F1($else)108 432 Q F0(Commands in this branch of the)144
-432 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15
-(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 448.8 Q
-F0 .356(This directi)144 460.8 R .656 -.15(ve t)-.25 H(ak).15 E .356
+-.18 E F0(.)A(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(47)
+185.115 E 0 Cg EP
+%%Page: 48 48
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF($endif)108 84 Q F0(This command, as seen in the pre)144 84 Q(vious e)
+-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.)2.5 E F1
+($else)108 100.8 Q F0(Commands in this branch of the)144 100.8 Q F1($if)
+2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 G
+(cuted if the test f).15 E(ails.)-.1 E F1($include)108 117.6 Q F0 .356
+(This directi)144 129.6 R .656 -.15(ve t)-.25 H(ak).15 E .356
(es a single \214lename as an ar)-.1 F .357
(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
-144 472.8 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
--.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1
-($include)144 496.8 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 513.6 Q
-(ching)-.18 E F0 .835(Readline pro)108 525.6 R .835
+144 141.6 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
+-.15(ve w)-.25 H(ould read).05 E/F2 10/Times-Italic@0 SF(/etc/inputr)2.5
+E(c)-.37 E F0(:)A F1($include)144 165.6 Q F2(/etc/inputr)5.833 E(c)-.37
+E F1(Sear)87 182.4 Q(ching)-.18 E F0 .835(Readline pro)108 194.4 R .835
(vides commands for searching through the command history \(see)-.15 F
/F3 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E
-.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 537.6 Q
+.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 206.4 Q
(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E
(emental)-.37 E F0(and)3.01 E F2(non-incr)2.86 E(emental)-.37 E F0(.).51
-E .697(Incremental searches be)108 554.4 R .697
+E .697(Incremental searches be)108 223.2 R .697
(gin before the user has \214nished typing the search string.)-.15 F
.698(As each character of the)5.698 F .113
-(search string is typed, readline displays the ne)108 566.4 R .112
+(search string is typed, readline displays the ne)108 235.2 R .112
(xt entry from the history matching the string typed so f)-.15 F(ar)-.1
E 5.112(.A)-.55 G(n)-5.112 E .542
-(incremental search requires only as man)108 578.4 R 3.042(yc)-.15 G
+(incremental search requires only as man)108 247.2 R 3.042(yc)-.15 G
.542(haracters as needed to \214nd the desired history entry)-3.042 F
5.542(.T)-.65 G .542(he char)-5.542 F(-)-.2 E .224
-(acters present in the v)108 590.4 R .224(alue of the)-.25 F F1(isear)
+(acters present in the v)108 259.2 R .224(alue of the)-.25 F F1(isear)
2.724 E(ch-terminators)-.18 E F0 -.25(va)2.724 G .224
(riable are used to terminate an incremental search.).25 F .66
-(If that v)108 602.4 R .66(ariable has not been assigned a v)-.25 F .66
+(If that v)108 271.2 R .66(ariable has not been assigned a v)-.25 F .66
(alue the Escape and Control-J characters will terminate an incre-)-.25
-F .097(mental search.)108 614.4 R .096(Control-G will abort an incremen\
+F .097(mental search.)108 283.2 R .096(Control-G will abort an incremen\
tal search and restore the original line.)5.097 F .096
(When the search is)5.096 F(terminated, the history entry containing th\
-e search string becomes the current line.)108 626.4 Q 2.938 -.8(To \214)
-108 643.2 T 1.339(nd other matching entries in the history list, type C\
-ontrol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675
-(search backw)108 655.2 R .675(ard or forw)-.1 F .675
+e search string becomes the current line.)108 295.2 Q 2.938 -.8(To \214)
+108 312 T 1.339(nd other matching entries in the history list, type Con\
+trol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675
+(search backw)108 324 R .675(ard or forw)-.1 F .675
(ard in the history for the ne)-.1 F .674
(xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.674
-(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 667.2 R .474 -.15(ey s)-.1
-H .174
+(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 336 R .474 -.15(ey s)-.1 H
+.174
(equence bound to a readline command will terminate the search and e).15
F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E
-.541(instance, a)108 679.2 R F2(ne)3.041 E(wline)-.15 E F0 .541
+.541(instance, a)108 348 R F2(ne)3.041 E(wline)-.15 E F0 .541
(will terminate the search and accept the line, thereby e)3.041 F -.15
-(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 691.2
-Q .653(Readline remembers the last incremental search string.)108 708 R
+(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 360 Q
+.653(Readline remembers the last incremental search string.)108 376.8 R
.653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an)
-3.153 F 3.153(yi)-.15 G(nterv)-3.153 E(en-)-.15 E
-(ing characters de\214ning a ne)108 720 Q 2.5(ws)-.25 G
+(ing characters de\214ning a ne)108 388.8 Q 2.5(ws)-.25 G
(earch string, an)-2.5 E 2.5(yr)-.15 G(emembered search string is used.)
--2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(45)190.395 E 0 Cg
-EP
-%%Page: 46 46
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .567(Non-incremen\
-tal searches read the entire search string before starting to search fo\
-r matching history lines.)108 84 R(The search string may be typed by th\
-e user or be part of the contents of the current line.)108 96 Q/F1 10
-/Times-Bold@0 SF(Readline Command Names)87 112.8 Q F0 1.391(The follo)
-108 124.8 R 1.391
+-2.5 E .567(Non-incremental searches read the entire search string befo\
+re starting to search for matching history lines.)108 405.6 R(The searc\
+h string may be typed by the user or be part of the contents of the cur\
+rent line.)108 417.6 Q F1(Readline Command Names)87 434.4 Q F0 1.391
+(The follo)108 446.4 R 1.391
(wing is a list of the names of the commands and the def)-.25 F 1.391
(ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F
-3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 136.8 R .122
+3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 458.4 R .122
(names without an accompan)2.622 F .122(ying k)-.15 F .421 -.15(ey s)-.1
H .121(equence are unbound by def).15 F 2.621(ault. In)-.1 F .121
-(the follo)2.621 F(wing)-.25 E(descriptions,)108 148.8 Q/F2 10
-/Times-Italic@0 SF(point)3.41 E F0 .91
-(refers to the current cursor position, and)3.41 F F2(mark)3.411 E F0
-.911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db).15 G
-3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 160.8 Q F0 2.5
+(the follo)2.621 F(wing)-.25 E(descriptions,)108 470.4 Q F2(point)3.41 E
+F0 .91(refers to the current cursor position, and)3.41 F F2(mark)3.411 E
+F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db)
+.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 482.4 Q F0 2.5
(command. The)2.5 F(te)2.5 E
(xt between the point and mark is referred to as the)-.15 E F2 -.37(re)
-2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 177.6 Q(or Mo)-.25 E(ving)-.1
-E(beginning\255of\255line \(C\255a\))108 189.6 Q F0(Mo)144 201.6 Q .3
+2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 499.2 Q(or Mo)-.25 E(ving)-.1
+E(beginning\255of\255line \(C\255a\))108 511.2 Q F0(Mo)144 523.2 Q .3
-.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E F1
-(end\255of\255line \(C\255e\))108 213.6 Q F0(Mo)144 225.6 Q .3 -.15
+(end\255of\255line \(C\255e\))108 535.2 Q F0(Mo)144 547.2 Q .3 -.15
(ve t)-.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108
-237.6 S(rward\255char \(C\255f\)).25 E F0(Mo)144 249.6 Q .3 -.15(ve f)
+559.2 S(rward\255char \(C\255f\)).25 E F0(Mo)144 571.2 Q .3 -.15(ve f)
-.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1
-(backward\255char \(C\255b\))108 261.6 Q F0(Mo)144 273.6 Q .3 -.15(ve b)
--.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 285.6 S(rward\255w)
-.25 E(ord \(M\255f\))-.1 E F0(Mo)144 297.6 Q .823 -.15(ve f)-.15 H(orw)
+(backward\255char \(C\255b\))108 583.2 Q F0(Mo)144 595.2 Q .3 -.15(ve b)
+-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 607.2 S(rward\255w)
+.25 E(ord \(M\255f\))-.1 E F0(Mo)144 619.2 Q .823 -.15(ve f)-.15 H(orw)
.15 E .523(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W)
-.1 F .522(ords are composed of alphanumeric characters \(let-)-.8 F
-(ters and digits\).)144 309.6 Q F1(backward\255w)108 321.6 Q
-(ord \(M\255b\))-.1 E F0(Mo)144 333.6 Q 1.71 -.15(ve b)-.15 H 1.41
+(ters and digits\).)144 631.2 Q F1(backward\255w)108 643.2 Q
+(ord \(M\255b\))-.1 E F0(Mo)144 655.2 Q 1.71 -.15(ve b)-.15 H 1.41
(ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91
(ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F
-(characters \(letters and digits\).)144 345.6 Q F1(shell\255f)108 357.6
-Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 369.6 Q .784 -.15(ve f)-.15 H
+(characters \(letters and digits\).)144 667.2 Q F1(shell\255f)108 679.2
+Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 691.2 Q .784 -.15(ve f)-.15 H
(orw).15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984
(ord. W)-.1 F .484(ords are delimited by non-quoted shell metacharac-)
--.8 F(ters.)144 381.6 Q F1(shell\255backward\255w)108 393.6 Q(ord)-.1 E
-F0(Mo)144 405.6 Q .908 -.15(ve b)-.15 H .609
-(ack to the start of the current or pre).15 F .609(vious w)-.25 F 3.109
-(ord. W)-.1 F .609(ords are delimited by non-quoted shell)-.8 F
-(metacharacters.)144 417.6 Q F1(pr)108 429.6 Q -.15(ev)-.18 G
-(ious\255scr).15 E(een\255line)-.18 E F0 .891(Attempt to mo)144 441.6 R
-1.191 -.15(ve p)-.15 H .891(oint to the same ph).15 F .891
-(ysical screen column on the pre)-.05 F .89(vious ph)-.25 F .89
-(ysical screen line.)-.05 F .87(This will not ha)144 453.6 R 1.17 -.15
-(ve t)-.2 H .87(he desired ef).15 F .87
-(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G
-3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 465.6 Q(ysical line or \
-if point is not greater than the length of the prompt plus the screen w\
-idth.)-.05 E F1(next\255scr)108 477.6 Q(een\255line)-.18 E F0 .638
-(Attempt to mo)144 489.6 R .938 -.15(ve p)-.15 H .638
+-.8 F(ters.)144 703.2 Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955
+E(48)185.115 E 0 Cg EP
+%%Page: 49 49
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(shell\255backward\255w)108 84 Q(ord)-.1 E F0(Mo)144 96 Q .908 -.15
+(ve b)-.15 H .609(ack to the start of the current or pre).15 F .609
+(vious w)-.25 F 3.109(ord. W)-.1 F .609
+(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 108 Q
+F1(pr)108 120 Q -.15(ev)-.18 G(ious\255scr).15 E(een\255line)-.18 E F0
+.891(Attempt to mo)144 132 R 1.191 -.15(ve p)-.15 H .891
+(oint to the same ph).15 F .891(ysical screen column on the pre)-.05 F
+.89(vious ph)-.25 F .89(ysical screen line.)-.05 F 1.055
+(This will not ha)144 144 R 1.355 -.15(ve t)-.2 H 1.055(he desired ef)
+.15 F 1.056(fect if the current readline line does not tak)-.25 F 3.556
+(eu)-.1 G 3.556(pm)-3.556 G 1.056(ore than one)-3.556 F(ph)144 156 Q(ys\
+ical line or if point is not greater than the length of the prompt plus\
+ the screen width.)-.05 E F1(next\255scr)108 168 Q(een\255line)-.18 E F0
+.638(Attempt to mo)144 180 R .938 -.15(ve p)-.15 H .638
(oint to the same ph).15 F .637(ysical screen column on the ne)-.05 F
-.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .008(will not ha)
-144 501.6 R .309 -.15(ve t)-.2 H .009(he desired ef).15 F .009
-(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G
-2.509(pm)-2.509 G .009(ore than one ph)-2.509 F(ysical)-.05 E .772(line\
- or if the length of the current Readline line is not greater than the \
-length of the prompt plus)144 513.6 R(the screen width.)144 525.6 Q F1
-(clear\255display \(M\255C\255l\))108 537.6 Q F0 1.498
-(Clear the screen and, if possible, the terminal')144 549.6 R 3.999(ss)
+.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .194(will not ha)
+144 192 R .494 -.15(ve t)-.2 H .194(he desired ef).15 F .194
+(fect if the current readline line does not tak)-.25 F 2.695(eu)-.1 G
+2.695(pm)-2.695 G .195(ore than one ph)-2.695 F(ysical)-.05 E .164(line\
+ or if the length of the current readline line is not greater than the \
+length of the prompt plus the)144 204 R(screen width.)144 216 Q F1
+(clear\255display \(M\255C\255l\))108 228 Q F0 1.498
+(Clear the screen and, if possible, the terminal')144 240 R 3.999(ss)
-.55 G 1.499(crollback b)-3.999 F(uf)-.2 E(fer)-.25 E 3.999(,t)-.4 G
1.499(hen redra)-3.999 F 3.999(wt)-.15 G 1.499(he current line,)-3.999 F
-(lea)144 561.6 Q(ving the current line at the top of the screen.)-.2 E
-F1(clear\255scr)108 573.6 Q(een \(C\255l\))-.18 E F0 1.36
-(Clear the screen, then redra)144 585.6 R 3.86(wt)-.15 G 1.36
+(lea)144 252 Q(ving the current line at the top of the screen.)-.2 E F1
+(clear\255scr)108 264 Q(een \(C\255l\))-.18 E F0 1.36
+(Clear the screen, then redra)144 276 R 3.86(wt)-.15 G 1.36
(he current line, lea)-3.86 F 1.36
-(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 597.6
-S(th an ar).4 E
+(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 288 S
+(th an ar).4 E
(gument, refresh the current line without clearing the screen.)-.18 E F1
--.18(re)108 609.6 S(draw\255curr).18 E(ent\255line)-.18 E F0
-(Refresh the current line.)144 621.6 Q F1(Commands f)87 638.4 Q
+-.18(re)108 300 S(draw\255curr).18 E(ent\255line)-.18 E F0
+(Refresh the current line.)144 312 Q F1(Commands f)87 328.8 Q
(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108
-650.4 Q(n\))-.15 E F0 .158(Accept the line re)144 662.4 R -.05(ga)-.15 G
+340.8 Q(n\))-.15 E F0 .158(Accept the line re)144 352.8 R -.05(ga)-.15 G
.158(rdless of where the cursor is.).05 F .158
(If this line is non-empty)5.158 F 2.659(,a)-.65 G .159
(dd it to the history list)-2.659 F .699(according to the state of the)
-144 674.4 R/F3 9/Times-Bold@0 SF(HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)
+144 364.8 R/F2 9/Times-Bold@0 SF(HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)
2.949 G 3.199(riable. If).25 F .699
(the line is a modi\214ed history line, then)3.199 F
-(restore the history line to its original state.)144 686.4 Q F1(pr)108
-698.4 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0
-(Fetch the pre)144 710.4 Q(vious command from the history list, mo)-.25
-E(ving back in the list.)-.15 E(GNU Bash 5.1)72 768 Q(2020 October 29)
-141.235 E(46)190.395 E 0 Cg EP
-%%Page: 47 47
+(restore the history line to its original state.)144 376.8 Q F1(pr)108
+388.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0
+(Fetch the pre)144 400.8 Q(vious command from the history list, mo)-.25
+E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 412.8
+Q F0(Fetch the ne)144 424.8 Q(xt command from the history list, mo)-.15
+E(ving forw)-.15 E(ard in the list.)-.1 E F1
+(beginning\255of\255history \(M\255<\))108 436.8 Q F0(Mo)144 448.8 Q .3
+-.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)
+-.65 E F1(end\255of\255history \(M\255>\))108 460.8 Q F0(Mo)144 472.8 Q
+.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5
+(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1
+(operate\255and\255get\255next \(C\255o\))108 484.8 Q F0 .947
+(Accept the current line for e)144 496.8 R -.15(xe)-.15 G .948
+(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15
+(ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F .73
+(history for editing.)144 508.8 R 3.23(An)5.73 G .73(umeric ar)-3.23 F
+.729
+(gument, if supplied, speci\214es the history entry to use instead of)
+-.18 F(the current line.)144 520.8 Q F1(fetch\255history)108 532.8 Q F0
+-.4(Wi)144 544.8 S .256(th a numeric ar).4 F .256
+(gument, fetch that entry from the history list and mak)-.18 F 2.757(ei)
+-.1 G 2.757(tt)-2.757 G .257(he current line.)-2.757 F -.4(Wi)5.257 G
+(th-).4 E(out an ar)144 556.8 Q(gument, mo)-.18 E .3 -.15(ve b)-.15 H
+(ack to the \214rst entry in the history list.).15 E F1 -2.29 -.18(re v)
+108 568.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.471
+(Search backw)144 580.8 R 1.471(ard starting at the current line and mo)
+-.1 F 1.47(ving `up' through the history as necessary)-.15 F(.)-.65 E
+(This is an incremental search.)144 592.8 Q F1 -.25(fo)108 604.8 S
+(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131
+(Search forw)144 616.8 R 1.131(ard starting at the current line and mo)
+-.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary)
+-.25 F(.)-.65 E(This is an incremental search.)144 628.8 Q F1
+(non\255incr)108 640.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H
+(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw)
+144 652.8 R .164(ard through the history starting at the current line u\
+sing a non-incremental search for)-.1 F 2.5(as)144 664.8 S
+(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 676.8 Q
+(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18
+E F0 1.353(Search forw)144 688.8 R 1.354(ard through the history using \
+a non-incremental search for a string supplied by the)-.1 F(user)144
+700.8 Q(.)-.55 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(49)
+185.115 E 0 Cg EP
+%%Page: 50 50
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(next\255history \(C\255n\))108 84 Q F0(Fetch the ne)144 96 Q
-(xt command from the history list, mo)-.15 E(ving forw)-.15 E
-(ard in the list.)-.1 E F1(beginning\255of\255history \(M\255<\))108 108
-Q F0(Mo)144 120 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G
-(he \214rst line in the history)-2.5 E(.)-.65 E F1
-(end\255of\255history \(M\255>\))108 132 Q F0(Mo)144 144 Q .3 -.15(ve t)
--.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5(,i)-.65 G
-(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18(re v)108
-156 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.47
-(Search backw)144 168 R 1.471(ard starting at the current line and mo)
--.1 F 1.471(ving `up' through the history as necessary)-.15 F(.)-.65 E
-(This is an incremental search.)144 180 Q F1 -.25(fo)108 192 S
-(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132
-(Search forw)144 204 R 1.132(ard starting at the current line and mo)-.1
-F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary)-.25
-F(.)-.65 E(This is an incremental search.)144 216 Q F1(non\255incr)108
-228 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H(rse\255sear).15 E
-(ch\255history \(M\255p\))-.18 E F0 .164(Search backw)144 240 R .164(ar\
-d through the history starting at the current line using a non-incremen\
-tal search for)-.1 F 2.5(as)144 252 S(tring supplied by the user)-2.5 E
-(.)-.55 E F1(non\255incr)108 264 Q(emental\255f)-.18 E(orward\255sear)
--.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 276 R
-1.354(ard through the history using a non-incremental search for a stri\
-ng supplied by the)-.1 F(user)144 288 Q(.)-.55 E F1(history\255sear)108
-300 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 312 R .249(a\
-rd through the history for the string of characters between the start o\
-f the current line)-.1 F(and the point.)144 324 Q
-(This is a non-incremental search.)5 E F1(history\255sear)108 336 Q
-(ch\255backward)-.18 E F0 .951(Search backw)144 348 R .951(ard through \
-the history for the string of characters between the start of the curre\
-nt)-.1 F(line and the point.)144 360 Q
-(This is a non-incremental search.)5 E F1(history\255substring\255sear)
-108 372 Q(ch\255backward)-.18 E F0 .95(Search backw)144 384 R .951(ard \
-through the history for the string of characters between the start of t\
-he current)-.1 F .007(line and the current cursor position \(the)144 396
-R/F2 10/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007
-(search string may match an)2.507 F .006(ywhere in a history)-.15 F 2.5
-(line. This)144 408 R(is a non-incremental search.)2.5 E F1
-(history\255substring\255sear)108 420 Q(ch\255f)-.18 E(orward)-.25 E F0
-.248(Search forw)144 432 R .249(ard through the history for the string \
-of characters between the start of the current line)-.1 F .319
-(and the point.)144 444 R .319(The search string may match an)5.319 F
-.319(ywhere in a history line.)-.15 F .318(This is a non-incremental)
-5.318 F(search.)144 456 Q F1(yank\255nth\255ar)108 468 Q 2.5(g\()-.1 G
-<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 480 R .622
+SF(history\255sear)108 84 Q(ch\255f)-.18 E(orward)-.25 E F0 .249
+(Search forw)144 96 R .249(ard through the history for the string of ch\
+aracters between the start of the current line)-.1 F(and the point.)144
+108 Q(This is a non-incremental search.)5 E F1(history\255sear)108 120 Q
+(ch\255backward)-.18 E F0 .95(Search backw)144 132 R .951(ard through t\
+he history for the string of characters between the start of the curren\
+t)-.1 F(line and the point.)144 144 Q(This is a non-incremental search.)
+5 E F1(history\255substring\255sear)108 156 Q(ch\255backward)-.18 E F0
+.951(Search backw)144 168 R .951(ard through the history for the string\
+ of characters between the start of the current)-.1 F .007
+(line and the current cursor position \(the)144 180 R/F2 10
+/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007
+(search string may match an)2.507 F .007(ywhere in a history)-.15 F 2.5
+(line. This)144 192 R(is a non-incremental search.)2.5 E F1
+(history\255substring\255sear)108 204 Q(ch\255f)-.18 E(orward)-.25 E F0
+.249(Search forw)144 216 R .249(ard through the history for the string \
+of characters between the start of the current line)-.1 F .318
+(and the point.)144 228 R .319(The search string may match an)5.318 F
+.319(ywhere in a history line.)-.15 F .319(This is a non-incremental)
+5.319 F(search.)144 240 Q F1(yank\255nth\255ar)108 252 Q 2.5(g\()-.1 G
+<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 264 R .622
(gument to the pre)-.18 F .622(vious command \(usually the second w)-.25
-F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .773(at point.)144
-492 R -.4(Wi)5.773 G .773(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0
+F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .772(at point.)144
+276 R -.4(Wi)5.773 G .773(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0
3.273(,i).24 G .773(nsert the)-3.273 F F2(n)3.273 E F0 .773(th w)B .773
(ord from the pre)-.1 F .773(vious command \(the w)-.25 F .773
-(ords in the)-.1 F(pre)144 504 Q .291(vious command be)-.25 F .291
+(ords in the)-.1 F(pre)144 288 Q .292(vious command be)-.25 F .292
(gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a)
-2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291
-(ument inserts the).18 F F2(n)2.791 E F0 .291(th w)B .292
-(ord from the end of)-.1 F .282(the pre)144 516 R .282(vious command.)
--.25 F .282(Once the ar)5.282 F(gument)-.18 E F2(n)2.781 E F0 .281
-(is computed, the ar)2.781 F .281(gument is e)-.18 F .281
-(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 528 Q
-(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 540 Q
-2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307
-(Insert the last ar)144 552 R 1.307(gument to the pre)-.18 F 1.307
-(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308
-(vious history entry\).)-.25 F -.4(Wi)144 564 S .204(th a numeric ar).4
-F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e)
--.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi)-5.203
-E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar)2.703 E
-(g)-.1 E F0(mo)144 576 Q .806 -.15(ve b)-.15 H .507
+(ument inserts the).18 F F2(n)2.791 E F0 .291(th w)B .291
+(ord from the end of)-.1 F .281(the pre)144 300 R .281(vious command.)
+-.25 F .281(Once the ar)5.281 F(gument)-.18 E F2(n)2.781 E F0 .281
+(is computed, the ar)2.781 F .281(gument is e)-.18 F .282
+(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 312 Q
+(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 324 Q
+2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.308
+(Insert the last ar)144 336 R 1.308(gument to the pre)-.18 F 1.307
+(vious command \(the last w)-.25 F 1.307(ord of the pre)-.1 F 1.307
+(vious history entry\).)-.25 F -.4(Wi)144 348 S .203(th a numeric ar).4
+F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e)
+-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.204(.S)C(uccessi)-5.204
+E .504 -.15(ve c)-.25 H .204(alls to).15 F F1(yank\255last\255ar)2.704 E
+(g)-.1 E F0(mo)144 360 Q .807 -.15(ve b)-.15 H .507
(ack through the history list, inserting the last w).15 F .507
(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E
-.416(to the \214rst call\) of each line in turn.)144 588 R(An)5.416 E
+.416(to the \214rst call\) of each line in turn.)144 372 R(An)5.416 E
2.916(yn)-.15 G .416(umeric ar)-2.916 F .416
-(gument supplied to these successi)-.18 F .715 -.15(ve c)-.25 H .415
-(alls de-).15 F 1.217(termines the direction to mo)144 600 R 1.518 -.15
+(gument supplied to these successi)-.18 F .716 -.15(ve c)-.25 H .416
+(alls de-).15 F 1.218(termines the direction to mo)144 384 R 1.518 -.15
(ve t)-.15 H 1.218(hrough the history).15 F 6.218(.A)-.65 G(ne)-2.5 E
--.05(ga)-.15 G(ti).05 E 1.518 -.15(ve a)-.25 H -.18(rg).15 G 1.218
+-.05(ga)-.15 G(ti).05 E 1.517 -.15(ve a)-.25 H -.18(rg).15 G 1.217
(ument switches the direction).18 F .494
-(through the history \(back or forw)144 612 R 2.994(ard\). The)-.1 F
+(through the history \(back or forw)144 396 R 2.994(ard\). The)-.1 F
.494(history e)2.994 F .494(xpansion f)-.15 F .494
(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144
-624 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.)
--.15 E F1(shell\255expand\255line \(M\255C\255e\))108 636 Q F0 .622
-(Expand the line as the shell does.)144 648 R .622
-(This performs alias and history e)5.622 F .623
-(xpansion as well as all of the)-.15 F(shell w)144 660 Q(ord e)-.1 E 2.5
+408 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.)
+-.15 E F1(shell\255expand\255line \(M\255C\255e\))108 420 Q F0 .623
+(Expand the line as the shell does.)144 432 R .622
+(This performs alias and history e)5.622 F .622
+(xpansion as well as all of the)-.15 F(shell w)144 444 Q(ord e)-.1 E 2.5
(xpansions. See)-.15 F/F3 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25
(YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G
(or a description of history e)-2.5 E(xpansion.)-.15 E F1
-(history\255expand\255line \(M\255^\))108 672 Q F0 .939
-(Perform history e)144 684 R .939(xpansion on the current line.)-.15 F
+(history\255expand\255line \(M\255^\))108 456 Q F0 .938
+(Perform history e)144 468 R .939(xpansion on the current line.)-.15 F
(See)5.939 E F3(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E
-(ANSION)-.666 E F0(belo)3.189 E 3.438(wf)-.25 G .938(or a descrip-)
--3.438 F(tion of history e)144 696 Q(xpansion.)-.15 E(GNU Bash 5.1)72
-768 Q(2020 October 29)141.235 E(47)190.395 E 0 Cg EP
-%%Page: 48 48
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(magic\255space)108 84 Q F0 .437(Perform history e)144 96 R .437
-(xpansion on the current line and insert a space.)-.15 F(See)5.438 E/F2
-9/Times-Bold@0 SF(HIST)2.938 E(OR)-.162 E 2.688(YE)-.315 G(XP)-2.688 E
-(ANSION)-.666 E F0(be-)2.688 E(lo)144 108 Q 2.5(wf)-.25 G
-(or a description of history e)-2.5 E(xpansion.)-.15 E F1
-(alias\255expand\255line)108 120 Q F0 .395(Perform alias e)144 132 R
-.395(xpansion on the current line.)-.15 F(See)5.395 E F2(ALIASES)2.895 E
-F0(abo)2.645 E .694 -.15(ve f)-.15 H .394(or a description of alias e)
-.15 F(xpan-)-.15 E(sion.)144 144 Q F1
-(history\255and\255alias\255expand\255line)108 156 Q F0
-(Perform history and alias e)144 168 Q(xpansion on the current line.)
--.15 E F1(insert\255last\255ar)108 180 Q(gument \(M\255.)-.1 E 2.5(,M)
-.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 192 S(ynon)-2.5 E(ym for)
+(ANSION)-.666 E F0(belo)3.189 E 3.439(wf)-.25 G .939(or a descrip-)
+-3.439 F(tion of history e)144 480 Q(xpansion.)-.15 E F1(magic\255space)
+108 492 Q F0 .438(Perform history e)144 504 R .438
+(xpansion on the current line and insert a space.)-.15 F(See)5.437 E F3
+(HIST)2.937 E(OR)-.162 E 2.687(YE)-.315 G(XP)-2.687 E(ANSION)-.666 E F0
+(be-)2.687 E(lo)144 516 Q 2.5(wf)-.25 G(or a description of history e)
+-2.5 E(xpansion.)-.15 E F1(alias\255expand\255line)108 528 Q F0 .394
+(Perform alias e)144 540 R .394(xpansion on the current line.)-.15 F
+(See)5.395 E F3(ALIASES)2.895 E F0(abo)2.645 E .695 -.15(ve f)-.15 H
+.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 552 Q F1
+(history\255and\255alias\255expand\255line)108 564 Q F0
+(Perform history and alias e)144 576 Q(xpansion on the current line.)
+-.15 E F1(insert\255last\255ar)108 588 Q(gument \(M\255.)-.1 E 2.5(,M)
+.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 600 S(ynon)-2.5 E(ym for)
-.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1
-(operate\255and\255get\255next \(C\255o\))108 204 Q F0 .947
-(Accept the current line for e)144 216 R -.15(xe)-.15 G .948
-(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15
-(ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F .73
-(history for editing.)144 228 R 3.23(An)5.73 G .73(umeric ar)-3.23 F
-.729
-(gument, if supplied, speci\214es the history entry to use instead of)
--.18 F(the current line.)144 240 Q F1
-(edit\255and\255execute\255command \(C\255x C\255e\))108 252 Q F0(In)144
-264 Q -.2(vo)-.4 G .346 -.1(ke a).2 H 2.646(ne).1 G .146
-(ditor on the current command line, and e)-2.646 F -.15(xe)-.15 G .146
-(cute the result as shell commands.).15 F F1(Bash)5.147 E F0(at-)2.647 E
-(tempts to in)144 276 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL)-.54
-E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0(and)
-2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E 2.5
-(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 292.8
-Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 304.8 Q F1
-(\(usually C\255d\))2.5 E F0 .799
-(The character indicating end-of-\214le as set, for e)144 316.8 R .799
-(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.298
-(ft)-5.799 G .798(his character is read when)-3.298 F .592
-(there are no characters on the line, and point is at the be)144 328.8 R
-.593(ginning of the line, Readline interprets it)-.15 F
-(as the end of input and returns)144 340.8 Q F2(EOF)2.5 E F3(.)A F1
-(delete\255char \(C\255d\))108 352.8 Q F0 .442
-(Delete the character at point.)144 364.8 R .442
-(If this function is bound to the same character as the tty)5.442 F F1
-(EOF)2.941 E F0(char)2.941 E(-)-.2 E(acter)144 376.8 Q 2.5(,a)-.4 G(s)
--2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H
-(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\))
-108 388.8 Q F0 .552(Delete the character behind the cursor)144 400.8 R
-5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553
-(umeric ar)-3.053 F .553(gument, sa)-.18 F .853 -.15(ve t)-.2 H .553
-(he deleted te).15 F .553(xt on)-.15 F(the kill ring.)144 412.8 Q F1
--.25(fo)108 424.8 S(rward\255backward\255delete\255char).25 E F0 .474
-(Delete the character under the cursor)144 436.8 R 2.974(,u)-.4 G .474
-(nless the cursor is at the end of the line, in which case the)-2.974 F
-(character behind the cursor is deleted.)144 448.8 Q F1
-(quoted\255insert \(C\255q, C\255v\))108 460.8 Q F0 .778(Add the ne)144
-472.8 R .779(xt character typed to the line v)-.15 F 3.279
-(erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279
-G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.279 E F0 3.279
-(,f)C(or)-3.279 E -.15(ex)144 484.8 S(ample.).15 E F1
-(tab\255insert \(C\255v T)108 496.8 Q(AB\))-.9 E F0
-(Insert a tab character)144 508.8 Q(.)-.55 E F1
-(self\255insert \(a, b, A, 1, !, ...\))108 520.8 Q F0
-(Insert the character typed.)144 532.8 Q F1
-(transpose\255chars \(C\255t\))108 544.8 Q F0 .322
-(Drag the character before point forw)144 556.8 R .321(ard o)-.1 F -.15
-(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .321
-(ving point forw)-.15 F .321(ard as well.)-.1 F .372
-(If point is at the end of the line, then this transposes the tw)144
-568.8 R 2.872(oc)-.1 G .373(haracters before point.)-2.872 F(Ne)5.373 E
--.05(ga)-.15 G(ti).05 E .673 -.15(ve a)-.25 H -.2(r-).15 G(guments ha)
-144 580.8 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
-(transpose\255w)108 592.8 Q(ords \(M\255t\))-.1 E F0 .024(Drag the w)144
-604.8 R .024(ord before point past the w)-.1 F .023(ord after point, mo)
--.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.523(rt).15 G .023(hat w)
--2.523 F .023(ord as well.)-.1 F .023(If point)5.023 F
-(is at the end of the line, this transposes the last tw)144 616.8 Q 2.5
-(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 628.8 Q
-(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144
-640.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F
--.05(ga)-.15 G(ti).05 E 1.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699
-(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 652.8 S(rd, b).1
-E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 664.8 Q
-(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 676.8 Q 1.648
-(wercase the current \(or follo)-.25 F 1.648(wing\) w)-.25 F 4.148
-(ord. W)-.1 F 1.647(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.947 -.15
-(ve a)-.25 H -.18(rg).15 G 1.647(ument, lo).18 F 1.647(wercase the pre)
--.25 F(vious)-.25 E -.1(wo)144 688.8 S(rd, b).1 E(ut do not mo)-.2 E .3
--.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 700.8 Q
-(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144
-712.8 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F
--.05(ga)-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.975
-(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 724.8 S(rd, b)
-.1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Bash 5.1)72
-768 Q(2020 October 29)141.235 E(48)190.395 E 0 Cg EP
-%%Page: 49 49
+(edit\255and\255execute\255command \(C\255x C\255e\))108 612 Q F0(In)144
+624 Q -.2(vo)-.4 G .347 -.1(ke a).2 H 2.647(ne).1 G .146
+(ditor on the current command line, and e)-2.647 F -.15(xe)-.15 G .146
+(cute the result as shell commands.).15 F F1(Bash)5.146 E F0(at-)2.646 E
+(tempts to in)144 636 Q -.2(vo)-.4 G -.1(ke).2 G F3($VISU)2.6 E(AL)-.54
+E/F4 9/Times-Roman@0 SF(,)A F3($EDIT)2.25 E(OR)-.162 E F4(,)A F0(and)
+2.25 E F2(emacs)2.5 E F0(as the editor)2.5 E 2.5(,i)-.4 G 2.5(nt)-2.5 G
+(hat order)-2.5 E(.)-.55 E F1(Commands f)87 652.8 Q(or Changing T)-.25 E
+(ext)-.92 E F2(end\255of\255\214le)108 664.8 Q F1(\(usually C\255d\))2.5
+E F0 .798(The character indicating end-of-\214le as set, for e)144 676.8
+R .799(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C
+3.299(ft)-5.799 G .799(his character is read when)-3.299 F .167
+(there are no characters on the line, and point is at the be)144 688.8 R
+.167(ginning of the line, readline interprets it as)-.15 F
+(the end of input and returns)144 700.8 Q F3(EOF)2.5 E F4(.)A F0
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(50)185.115 E 0 Cg EP
+%%Page: 51 51
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.1(ove)108 84 S(rwrite\255mode).1 E F0 -.8(To)144 96 S .438(ggle o)
-.8 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4(Wi)5.438 G .438(th an e)
-.4 F .438(xplicit positi)-.15 F .737 -.15(ve n)-.25 H .437(umeric ar).15
-F .437(gument, switches to o)-.18 F -.15(ve)-.15 G .437(rwrite mode.).15
-F -.4(Wi)144 108 S .78(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
+SF(delete\255char \(C\255d\))108 84 Q F0 .441
+(Delete the character at point.)144 96 R .442
+(If this function is bound to the same character as the tty)5.441 F F1
+(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 108 Q 2.5(,a)-.4 G(s)-2.5
+E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H
+(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\))
+108 120 Q F0 .553(Delete the character behind the cursor)144 132 R 5.553
+(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553
+(umeric ar)-3.053 F .552(gument, sa)-.18 F .852 -.15(ve t)-.2 H .552
+(he deleted te).15 F .552(xt on)-.15 F(the kill ring.)144 144 Q F1 -.25
+(fo)108 156 S(rward\255backward\255delete\255char).25 E F0 .473
+(Delete the character under the cursor)144 168 R 2.973(,u)-.4 G .474
+(nless the cursor is at the end of the line, in which case the)-2.973 F
+(character behind the cursor is deleted.)144 180 Q F1
+(quoted\255insert \(C\255q, C\255v\))108 192 Q F0 .779(Add the ne)144
+204 R .779(xt character typed to the line v)-.15 F 3.279(erbatim. This)
+-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279 G .779
+(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278(,f)C
+(or)-3.278 E -.15(ex)144 216 S(ample.).15 E F1(tab\255insert \(C\255v T)
+108 228 Q(AB\))-.9 E F0(Insert a tab character)144 240 Q(.)-.55 E F1
+(self\255insert \(a, b, A, 1, !, ...\))108 252 Q F0
+(Insert the character typed.)144 264 Q F1(transpose\255chars \(C\255t\))
+108 276 Q F0 .321(Drag the character before point forw)144 288 R .321
+(ard o)-.1 F -.15(ve)-.15 G 2.821(rt).15 G .321
+(he character at point, mo)-2.821 F .322(ving point forw)-.15 F .322
+(ard as well.)-.1 F .372
+(If point is at the end of the line, then this transposes the tw)144 300
+R 2.872(oc)-.1 G .372(haracters before point.)-2.872 F(Ne)5.372 E -.05
+(ga)-.15 G(ti).05 E .672 -.15(ve a)-.25 H -.2(r-).15 G(guments ha)144
+312 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
+(transpose\255w)108 324 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144
+336 R .023(ord before point past the w)-.1 F .023(ord after point, mo)
+-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w)
+-2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F
+(is at the end of the line, this transposes the last tw)144 348 Q 2.5
+(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 360 Q
+(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 372
+R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)
+-.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698
+(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 384 S(rd, b).1 E
+(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 396 Q
+(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 408 Q 1.647
+(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147
+(ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15
+(ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre)
+-.25 F(vious)-.25 E -.1(wo)144 420 S(rd, b).1 E(ut do not mo)-.2 E .3
+-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 432 Q
+(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 444
+R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga)
+-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974
+(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 456 S(rd, b).1
+E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 468
+S(rwrite\255mode).1 E F0 -.8(To)144 480 S .437(ggle o).8 F -.15(ve)-.15
+G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437
+(xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438
+(gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4
+(Wi)144 492 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
-.15(ve n)-.25 H .781(umeric ar).15 F .781
-(gument, switches to insert mode.)-.18 F .781(This command af)5.781 F
-(fects)-.25 E(only)144 120 Q F1(emacs)4.395 E F0(mode;)4.395 E F1(vi)
-4.395 E F0 1.894(mode does o)4.395 F -.15(ve)-.15 G 1.894(rwrite dif).15
+(gument, switches to insert mode.)-.18 F .78(This command af)5.781 F
+(fects)-.25 E(only)144 504 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi)
+4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15
F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10
-/Times-Italic@0 SF -.37(re)4.394 G(adline\(\)).37 E F0 1.894
-(starts in insert)4.394 F 3.968(mode. In)144 132 R -.15(ove)3.968 G
-1.468(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E
-F0 1.469(replace the te)3.969 F 1.469(xt at point rather than)-.15 F
-.958(pushing the te)144 144 R .958(xt to the right.)-.15 F .957
-(Characters bound to)5.958 F F1(backward\255delete\255char)3.457 E F0
-.957(replace the character)3.457 F(before point with a space.)144 156 Q
+/Times-Italic@0 SF -.37(re)4.395 G(adline\(\)).37 E F0 1.895
+(starts in insert)4.395 F 3.969(mode. In)144 516 R -.15(ove)3.969 G
+1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E
+F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F
+.957(pushing the te)144 528 R .957(xt to the right.)-.15 F .958
+(Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0
+.958(replace the character)3.458 F(before point with a space.)144 540 Q
(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87
-172.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 184.8 Q F0
-(Kill the te)144 196.8 Q(xt from point to the end of the line.)-.15 E F1
-(backward\255kill\255line \(C\255x Rubout\))108 208.8 Q F0(Kill backw)
-144 220.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
-(unix\255line\255discard \(C\255u\))108 232.8 Q F0(Kill backw)144 244.8
+556.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 568.8 Q F0
+(Kill the te)144 580.8 Q(xt from point to the end of the line.)-.15 E F1
+(backward\255kill\255line \(C\255x Rubout\))108 592.8 Q F0(Kill backw)
+144 604.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
+(unix\255line\255discard \(C\255u\))108 616.8 Q F0(Kill backw)144 628.8
Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E
(The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)
--2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 256.8 Q F0
+-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 640.8 Q F0
(Kill all characters on the current line, no matter where point is.)144
-268.8 Q F1(kill\255w)108 280.8 Q(ord \(M\255d\))-.1 E F0 .728
-(Kill from point to the end of the current w)144 292.8 R .729
-(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F .729
-(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 304.8 S
+652.8 Q F1(kill\255w)108 664.8 Q(ord \(M\255d\))-.1 E F0 .729
+(Kill from point to the end of the current w)144 676.8 R .728
+(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728
+(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 688.8 S
(rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G
-(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 316.8 Q
-(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 328.8 Q(ord behind point.)
+(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 700.8 Q
+(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 712.8 Q(ord behind point.)
-.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1
-(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 340.8 Q
-(ord)-.1 E F0 .729(Kill from point to the end of the current w)144 352.8
-R .728(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F
-.728(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 364.8 S
+(backward\255w)2.5 E(ord)-.1 E F0(.)A(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(51)185.115 E 0 Cg EP
+%%Page: 52 52
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(shell\255kill\255w)108 84 Q(ord)-.1 E F0 .728
+(Kill from point to the end of the current w)144 96 R .729
+(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F .729
+(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 108 S
(rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E
(orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w)
-108 376.8 Q(ord)-.1 E F0 3.025(Kill the w)144 388.8 R 3.025
+108 120 Q(ord)-.1 E F0 3.025(Kill the w)144 132 R 3.025
(ord behind point.)-.1 F -.8(Wo)8.025 G 3.025
(rd boundaries are the same as those used by).8 F F1(shell\255back-)
-5.525 E(ward\255w)144 400.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 412.8 Q
-(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 424.8 R .365
-(ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1
-F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15
-(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144
-436.8 Q F1(unix\255\214lename\255rubout)108 448.8 Q F0 .166(Kill the w)
-144 460.8 R .166
+5.525 E(ward\255w)144 144 Q(ord)-.1 E F0(.)A F1(unix\255w)108 156 Q
+(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 168 R .364
+(ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1
+F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15
+(ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144
+180 Q F1(unix\255\214lename\255rubout)108 192 Q F0 .167(Kill the w)144
+204 R .166
(ord behind point, using white space and the slash character as the w)
--.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 472.8 Q
+-.1 F .166(ord boundaries.)-.1 F(The)5.166 E(killed te)144 216 Q
(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.)
--2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 484.8 Q F0
-(Delete all spaces and tabs around point.)144 496.8 Q F1(kill\255r)108
-508.8 Q(egion)-.18 E F0(Kill the te)144 520.8 Q(xt in the current re)
--.15 E(gion.)-.15 E F1(copy\255r)108 532.8 Q(egion\255as\255kill)-.18 E
-F0(Cop)144 544.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
+-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 228 Q F0
+(Delete all spaces and tabs around point.)144 240 Q F1(kill\255r)108 252
+Q(egion)-.18 E F0(Kill the te)144 264 Q(xt in the current re)-.15 E
+(gion.)-.15 E F1(copy\255r)108 276 Q(egion\255as\255kill)-.18 E F0(Cop)
+144 288 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1
-(copy\255backward\255w)108 556.8 Q(ord)-.1 E F0(Cop)144 568.8 Q 4.801
-(yt)-.1 G 2.301(he w)-4.801 F 2.301(ord before point to the kill b)-.1 F
-(uf)-.2 E(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.3
-(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 580.8
-Q(ord)-.1 E F0(.)A F1(copy\255f)108 592.8 Q(orward\255w)-.25 E(ord)-.1 E
-F0(Cop)144 604.8 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo)
--.1 F 2.007(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008
-(.T)-.55 G 2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1
-F F1 -.25(fo)4.508 G -.37(r-).25 G(ward\255w)144 616.8 Q(ord)-.1 E F0(.)
-A F1(yank \(C\255y\))108 628.8 Q F0 -1(Ya)144 640.8 S
+(copy\255backward\255w)108 300 Q(ord)-.1 E F0(Cop)144 312 Q 4.8(yt)-.1 G
+2.3(he w)-4.8 F 2.3(ord before point to the kill b)-.1 F(uf)-.2 E(fer)
+-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.301
+(ord boundaries are the same as)-.1 F F1(back-)4.801 E(ward\255w)144 324
+Q(ord)-.1 E F0(.)A F1(copy\255f)108 336 Q(orward\255w)-.25 E(ord)-.1 E
+F0(Cop)144 348 Q 4.508(yt)-.1 G 2.008(he w)-4.508 F 2.008(ord follo)-.1
+F 2.008(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.007(.T)
+-.55 G 2.007(he w)-7.007 F 2.007(ord boundaries are the same as)-.1 F F1
+-.25(fo)4.507 G -.37(r-).25 G(ward\255w)144 360 Q(ord)-.1 E F0(.)A F1
+(yank \(C\255y\))108 372 Q F0 -1(Ya)144 384 S
(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25
-E F1(yank\255pop \(M\255y\))108 652.8 Q F0
-(Rotate the kill ring, and yank the ne)144 664.8 Q 2.5(wt)-.25 G 2.5
+E F1(yank\255pop \(M\255y\))108 396 Q F0
+(Rotate the kill ring, and yank the ne)144 408 Q 2.5(wt)-.25 G 2.5
(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
-F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 681.6 Q
-(guments)-.1 E(digit\255ar)108 693.6 Q
+F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 424.8 Q
+(guments)-.1 E(digit\255ar)108 436.8 Q
(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367
-(Add this digit to the ar)144 705.6 R .367
+(Add this digit to the ar)144 448.8 R .367
(gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18
-(rg)-2.867 G 2.867(ument. M\255\255).18 F .366(starts a ne)2.867 F -.05
-(ga)-.15 G(-).05 E(ti)144 717.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
-(ument.).18 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(49)190.395
-E 0 Cg EP
-%%Page: 50 50
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(uni)108 84 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778
-(This is another w)144 96 R .779(ay to specify an ar)-.1 F 3.279
-(gument. If)-.18 F .779(this command is follo)3.279 F .779
+(rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05
+(ga)-.15 G(-).05 E(ti)144 460.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
+(ument.).18 E F1(uni)108 472.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1
+E F0 .779(This is another w)144 484.8 R .779(ay to specify an ar)-.1 F
+3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778
(wed by one or more digits,)-.25 F 1.376
(optionally with a leading minus sign, those digits de\214ne the ar)144
-108 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
-120 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
+496.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
+508.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17
(ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other)
--.2 F(-)-.2 E .899(wise ignored.)144 132 R .898
-(As a special case, if this command is immediately follo)5.899 F .898
+-.2 F(-)-.2 E .898(wise ignored.)144 520.8 R .898
+(As a special case, if this command is immediately follo)5.898 F .898
(wed by a character that is)-.25 F 1.23
-(neither a digit nor minus sign, the ar)144 144 R 1.23
+(neither a digit nor minus sign, the ar)144 532.8 R 1.23
(gument count for the ne)-.18 F 1.23(xt command is multiplied by four)
--.15 F(.)-.55 E .823(The ar)144 156 R .823
+-.15 F(.)-.55 E .822(The ar)144 544.8 R .822
(gument count is initially one, so e)-.18 F -.15(xe)-.15 G .823
-(cuting this function the \214rst time mak).15 F .822(es the ar)-.1 F
-(gument)-.18 E(count four)144 168 Q 2.5(,as)-.4 G(econd time mak)-2.5 E
-(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing)
-87 184.8 Q(complete \(T)108 196.8 Q(AB\))-.9 E F0 1.137
-(Attempt to perform completion on the te)144 208.8 R 1.137
+(cuting this function the \214rst time mak).15 F .823(es the ar)-.1 F
+(gument)-.18 E(count four)144 556.8 Q 2.5(,as)-.4 G(econd time mak)-2.5
+E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing)
+87 573.6 Q(complete \(T)108 585.6 Q(AB\))-.9 E F0 1.137
+(Attempt to perform completion on the te)144 597.6 R 1.137
(xt before point.)-.15 F F1(Bash)6.137 E F0 1.137
-(attempts completion treating the)3.637 F(te)144 220.8 Q .533(xt as a v)
--.15 F .533(ariable \(if the te)-.25 F .533(xt be)-.15 F .533(gins with)
--.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .532(xt be)-.15 F
-.532(gins with)-.15 F F1(~)3.032 E F0 .532(\), hostname \(if the)B(te)
-144 232.8 Q .701(xt be)-.15 F .701(gins with)-.15 F F1(@)3.201 E F0 .701
-(\), or command \(including aliases and functions\) in turn.)B .702
+(attempts completion treating the)3.637 F(te)144 609.6 Q .532(xt as a v)
+-.15 F .532(ariable \(if the te)-.25 F .532(xt be)-.15 F .533(gins with)
+-.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .533(xt be)-.15 F
+.533(gins with)-.15 F F1(~)3.033 E F0 .533(\), hostname \(if the)B(te)
+144 621.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701
+(\), or command \(including aliases and functions\) in turn.)B .701
(If none of these pro-)5.701 F
-(duces a match, \214lename completion is attempted.)144 244.8 Q F1
-(possible\255completions \(M\255?\))108 256.8 Q F0
-(List the possible completions of the te)144 268.8 Q(xt before point.)
--.15 E F1(insert\255completions \(M\255*\))108 280.8 Q F0 .783
-(Insert all completions of the te)144 292.8 R .783
+(duces a match, \214lename completion is attempted.)144 633.6 Q F1
+(possible\255completions \(M\255?\))108 645.6 Q F0
+(List the possible completions of the te)144 657.6 Q(xt before point.)
+-.15 E F1(insert\255completions \(M\255*\))108 669.6 Q F0 .783
+(Insert all completions of the te)144 681.6 R .783
(xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H
-.783(een generated by).15 F F1(possible\255com-)3.282 E(pletions)144
-304.8 Q F0(.)A F1(menu\255complete)108 316.8 Q F0 .928(Similar to)144
-328.8 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628
+.783(een generated by).15 F F1(possible\255com-)3.283 E(pletions)144
+693.6 Q F0(.)A F1(menu\255complete)108 705.6 Q F0 .929(Similar to)144
+717.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629
F .929(ord to be completed with a single match from the list of)-.1 F
-1.194(possible completions.)144 340.8 R 1.194(Repeated e)6.194 F -.15
-(xe)-.15 G 1.194(cution of).15 F F1(menu\255complete)3.694 E F0 1.193
-(steps through the list of possible)3.694 F .828
-(completions, inserting each match in turn.)144 352.8 R .828
+1.193(possible completions.)144 729.6 R 1.193(Repeated e)6.193 F -.15
+(xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194
+(steps through the list of possible)3.694 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(52)185.115 E 0 Cg EP
+%%Page: 53 53
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .829
+(completions, inserting each match in turn.)144 84 R .828
(At the end of the list of completions, the bell is rung)5.828 F .727
-(\(subject to the setting of)144 364.8 R F1(bell\255style)3.227 E F0
-3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F
-.727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227
-E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.227 E F0 1.73
-(positions forw)144 376.8 R 1.73(ard in the list of matches; a ne)-.1 F
--.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73
-(ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1
-E(through the list.)144 388.8 Q(This command is intended to be bound to)
-5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E
-(ault.)-.1 E F1(menu\255complete\255backward)108 400.8 Q F0 .82
-(Identical to)144 412.8 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82
-(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82
+(\(subject to the setting of)144 96 R/F1 10/Times-Bold@0 SF
+(bell\255style)3.227 E F0 3.227(\)a)C .727(nd the original te)-3.227 F
+.727(xt is restored.)-.15 F .727(An ar)5.727 F .727(gument of)-.18 F/F2
+10/Times-Italic@0 SF(n)3.227 E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2
+(n)3.228 E F0 1.73(positions forw)144 108 R 1.73
+(ard in the list of matches; a ne)-.1 F -.05(ga)-.15 G(ti).05 E 2.03
+-.15(ve a)-.25 H -.18(rg).15 G 1.73(ument may be used to mo).18 F 2.03
+-.15(ve b)-.15 H(ackw).15 E(ard)-.1 E(through the list.)144 120 Q
+(This command is intended to be bound to)5 E F1 -.9(TA)2.5 G(B).9 E F0
+2.5(,b)C(ut is unbound by def)-2.7 E(ault.)-.1 E F1
+(menu\255complete\255backward)108 132 Q F0 .82(Identical to)144 144 R F1
+(menu\255complete)3.32 E F0 3.32(,b)C .82(ut mo)-3.52 F -.15(ve)-.15 G
+3.32(sb).15 G(ackw)-3.32 E .82
(ard through the list of possible completions, as if)-.1 F F1
-(menu\255complete)144 424.8 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5
-(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg)
-.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E
-F1(delete\255char\255or\255list)108 436.8 Q F0 .234
-(Deletes the character under the cursor if not at the be)144 448.8 R
-.234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char)
-2.735 E F0(\).)A .425(If at the end of the line, beha)144 460.8 R -.15
-(ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1
-(possible\255completions)2.925 E F0 5.425(.T)C .425
-(his command is unbound)-5.425 F(by def)144 472.8 Q(ault.)-.1 E F1
-(complete\255\214lename \(M\255/\))108 484.8 Q F0
-(Attempt \214lename completion on the te)144 496.8 Q(xt before point.)
--.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 508.8 Q
-F0(List the possible completions of the te)144 520.8 Q
+(menu\255complete)144 156 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5(nan)
+.15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg).15 G
+2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E F1
+(delete\255char\255or\255list)108 168 Q F0 .234
+(Deletes the character under the cursor if not at the be)144 180 R .234
+(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char)2.734
+E F0(\).)A .425(If at the end of the line, beha)144 192 R -.15(ve)-.2 G
+2.925(si).15 G .425(dentically to)-2.925 F F1(possible\255completions)
+2.925 E F0 5.425(.T)C .425(his command is unbound)-5.425 F(by def)144
+204 Q(ault.)-.1 E F1(complete\255\214lename \(M\255/\))108 216 Q F0
+(Attempt \214lename completion on the te)144 228 Q(xt before point.)-.15
+E F1(possible\255\214lename\255completions \(C\255x /\))108 240 Q F0
+(List the possible completions of the te)144 252 Q
(xt before point, treating it as a \214lename.)-.15 E F1
-(complete\255user)108 532.8 Q(name \(M\255~\))-.15 E F0
-(Attempt completion on the te)144 544.8 Q
+(complete\255user)108 264 Q(name \(M\255~\))-.15 E F0
+(Attempt completion on the te)144 276 Q
(xt before point, treating it as a username.)-.15 E F1(possible\255user)
-108 556.8 Q(name\255completions \(C\255x ~\))-.15 E F0
-(List the possible completions of the te)144 568.8 Q
+108 288 Q(name\255completions \(C\255x ~\))-.15 E F0
+(List the possible completions of the te)144 300 Q
(xt before point, treating it as a username.)-.15 E F1(complete\255v)108
-580.8 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144
-592.8 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E
-F1(possible\255v)108 604.8 Q(ariable\255completions \(C\255x $\))-.1 E
-F0(List the possible completions of the te)144 616.8 Q
+312 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 324 Q
(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1
-(complete\255hostname \(M\255@\))108 628.8 Q F0
-(Attempt completion on the te)144 640.8 Q
+(possible\255v)108 336 Q(ariable\255completions \(C\255x $\))-.1 E F0
+(List the possible completions of the te)144 348 Q
+(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1
+(complete\255hostname \(M\255@\))108 360 Q F0
+(Attempt completion on the te)144 372 Q
(xt before point, treating it as a hostname.)-.15 E F1
-(possible\255hostname\255completions \(C\255x @\))108 652.8 Q F0
-(List the possible completions of the te)144 664.8 Q
+(possible\255hostname\255completions \(C\255x @\))108 384 Q F0
+(List the possible completions of the te)144 396 Q
(xt before point, treating it as a hostname.)-.15 E F1
-(complete\255command \(M\255!\))108 676.8 Q F0 .58
-(Attempt completion on the te)144 688.8 R .581
-(xt before point, treating it as a command name.)-.15 F .581
-(Command comple-)5.581 F .715(tion attempts to match the te)144 700.8 R
+(complete\255command \(M\255!\))108 408 Q F0 .581
+(Attempt completion on the te)144 420 R .581
+(xt before point, treating it as a command name.)-.15 F .58
+(Command comple-)5.58 F .715(tion attempts to match the te)144 432 R
.715(xt ag)-.15 F .715(ainst aliases, reserv)-.05 F .715(ed w)-.15 F
.715(ords, shell functions, shell b)-.1 F .715(uiltins, and)-.2 F
-(\214nally e)144 712.8 Q -.15(xe)-.15 G
-(cutable \214lenames, in that order).15 E(.)-.55 E(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(50)190.395 E 0 Cg EP
-%%Page: 51 51
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(possible\255command\255completions \(C\255x !\))108 84 Q F0
-(List the possible completions of the te)144 96 Q
+(\214nally e)144 444 Q -.15(xe)-.15 G
+(cutable \214lenames, in that order).15 E(.)-.55 E F1
+(possible\255command\255completions \(C\255x !\))108 456 Q F0
+(List the possible completions of the te)144 468 Q
(xt before point, treating it as a command name.)-.15 E F1
-(dynamic\255complete\255history \(M\255T)108 108 Q(AB\))-.9 E F0 .424
-(Attempt completion on the te)144 120 R .425
-(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .425
+(dynamic\255complete\255history \(M\255T)108 480 Q(AB\))-.9 E F0 .425
+(Attempt completion on the te)144 492 R .425
+(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424
(ainst lines from the history list)-.05 F
-(for possible completion matches.)144 132 Q F1(dab)108 144 Q(br)-.1 E
--.15(ev)-.18 G(\255expand).15 E F0 .611
-(Attempt menu completion on the te)144 156 R .611
-(xt before point, comparing the te)-.15 F .61(xt ag)-.15 F .61
+(for possible completion matches.)144 504 Q F1(dab)108 516 Q(br)-.1 E
+-.15(ev)-.18 G(\255expand).15 E F0 .61
+(Attempt menu completion on the te)144 528 R .611
+(xt before point, comparing the te)-.15 F .611(xt ag)-.15 F .611
(ainst lines from the his-)-.05 F
-(tory list for possible completion matches.)144 168 Q F1
-(complete\255into\255braces \(M\255{\))108 180 Q F0 .4(Perform \214lena\
+(tory list for possible completion matches.)144 540 Q F1
+(complete\255into\255braces \(M\255{\))108 552 Q F0 .4(Perform \214lena\
me completion and insert the list of possible completions enclosed with\
-in braces so)144 192 R(the list is a)144 204 Q -.25(va)-.2 G
+in braces so)144 564 R(the list is a)144 576 Q -.25(va)-.2 G
(ilable to the shell \(see).25 E F1(Brace Expansion)2.5 E F0(abo)2.5 E
--.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 220.8 S(yboard Macr).25 E(os)-.18
-E(start\255kbd\255macr)108 232.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\))
-.833 E F0(Be)144 244.8 Q(gin sa)-.15 E
+-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 592.8 S(yboard Macr).25 E(os)-.18
+E(start\255kbd\255macr)108 604.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\))
+.833 E F0(Be)144 616.8 Q(gin sa)-.15 E
(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
-(board macro.).15 E F1(end\255kbd\255macr)108 256.8 Q 2.5(o\()-.18 G
-(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 268.8 Q
+(board macro.).15 E F1(end\255kbd\255macr)108 628.8 Q 2.5(o\()-.18 G
+(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 640.8 Q
(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
(board macro and store the de\214nition.).15 E F1
-(call\255last\255kbd\255macr)108 280.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
-E F0(Re-e)144 292.8 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1
-G .999(board macro de\214ned, by making the characters in the macro app\
-ear as if).15 F(typed at the k)144 304.8 Q -.15(ey)-.1 G(board.).15 E F1
-(print\255last\255kbd\255macr)108 316.8 Q 2.5(o\()-.18 G(\))-2.5 E F0
-(Print the last k)144 328.8 Q -.15(ey)-.1 G
-(board macro de\214ned in a format suitable for the).15 E/F2 10
-/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1
-(Miscellaneous)87 345.6 Q -.18(re)108 357.6 S<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
+(call\255last\255kbd\255macr)108 652.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
+E F0(Re-e)144 664.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey)
+-.1 G .999(board macro de\214ned, by making the characters in the macro\
+ appear as if).15 F(typed at the k)144 676.8 Q -.15(ey)-.1 G(board.).15
+E F1(print\255last\255kbd\255macr)108 688.8 Q 2.5(o\()-.18 G(\))-2.5 E
+F0(Print the last k)144 700.8 Q -.15(ey)-.1 G
+(board macro de\214ned in a format suitable for the).15 E F2(inputr)2.5
+E(c)-.37 E F0(\214le.)2.5 E(GNU Bash 5.2)72 768 Q(2022 September 19)
+135.955 E(53)185.115 E 0 Cg EP
+%%Page: 54 54
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(Miscellaneous)87 84 Q -.18(re)108 96 S<ad72>.18 E
+(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777
+(Read in the contents of the)144 108 R/F2 10/Times-Italic@0 SF(inputr)
+4.277 E(c)-.37 E F0 1.776(\214le, and incorporate an)4.276 F 4.276(yb)
+-.15 G 1.776(indings or v)-4.276 F 1.776(ariable assignments)-.25 F
+(found there.)144 120 Q F1(abort \(C\255g\))108 132 Q F0 3.248
+(Abort the current editing command and ring the terminal')144 144 R
+5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1
+(bell\255style)144 156 Q F0(\).)A F1(do\255lo)108 168 Q(wer)-.1 E
(case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F2(x)A F1 2.5(,.)
-C(..\))-2.5 E F0 1.738(If the meta\214ed character)144 441.6 R F2(x)
-4.238 E F0 1.739
-(is uppercase, run the command that is bound to the corresponding)4.238
-F(meta\214ed lo)144 453.6 Q(wercase character)-.25 E 5(.T)-.55 G
-(he beha)-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo)
-2.5 E(wercase.)-.25 E F1(pr)108 465.6 Q(e\214x\255meta \(ESC\))-.18 E F0
-(Metafy the ne)144 477.6 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0
-SF(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1
-(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 489.6 Q F0
-(Incremental undo, separately remembered for each line.)144 501.6 Q F1
--2.29 -.18(re v)108 513.6 T(ert\255line \(M\255r\)).08 E F0 .231
-(Undo all changes made to this line.)144 525.6 R .231(This is lik)5.231
-F 2.731(ee)-.1 G -.15(xe)-2.881 G .23(cuting the).15 F F1(undo)2.73 E F0
-.23(command enough times to re-)2.73 F
-(turn the line to its initial state.)144 537.6 Q F1
-(tilde\255expand \(M\255&\))108 549.6 Q F0(Perform tilde e)144 561.6 Q
+C(..\))-2.5 E F0 1.739(If the meta\214ed character)144 180 R F2(x)4.239
+E F0 1.739
+(is uppercase, run the command that is bound to the corresponding)4.239
+F(meta\214ed lo)144 192 Q(wercase character)-.25 E 5(.T)-.55 G(he beha)
+-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo)2.5 E
+(wercase.)-.25 E F1(pr)108 204 Q(e\214x\255meta \(ESC\))-.18 E F0
+(Metafy the ne)144 216 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF
+(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1
+(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 228 Q F0
+(Incremental undo, separately remembered for each line.)144 240 Q F1
+-2.29 -.18(re v)108 252 T(ert\255line \(M\255r\)).08 E F0 .23
+(Undo all changes made to this line.)144 264 R .231(This is lik)5.23 F
+2.731(ee)-.1 G -.15(xe)-2.881 G .231(cuting the).15 F F1(undo)2.731 E F0
+.231(command enough times to re-)2.731 F
+(turn the line to its initial state.)144 276 Q F1
+(tilde\255expand \(M\255&\))108 288 Q F0(Perform tilde e)144 300 Q
(xpansion on the current w)-.15 E(ord.)-.1 E F1
-(set\255mark \(C\255@, M\255<space>\))108 573.6 Q F0
-(Set the mark to the point.)144 585.6 Q(If a numeric ar)5 E
+(set\255mark \(C\255@, M\255<space>\))108 312 Q F0
+(Set the mark to the point.)144 324 Q(If a numeric ar)5 E
(gument is supplied, the mark is set to that position.)-.18 E F1
-(exchange\255point\255and\255mark \(C\255x C\255x\))108 597.6 Q F0(Sw)
-144 609.6 Q .282(ap the point with the mark.)-.1 F .283
+(exchange\255point\255and\255mark \(C\255x C\255x\))108 336 Q F0(Sw)144
+348 Q .283(ap the point with the mark.)-.1 F .283
(The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G
-2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa)
-144 621.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
-(character\255sear)108 633.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144
-645.6 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G
-3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
-(xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05
-(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre)
-144 657.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 669.6 Q
-(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 681.6 S 1.043
-(haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G
-3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044
-(vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E
--.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G
-(count searches for subsequent occurrences.)144 693.6 Q F1
-(skip\255csi\255sequence)108 705.6 Q F0 1.827
-(Read enough characters to consume a multi-k)144 717.6 R 2.126 -.15
-(ey s)-.1 H 1.826(equence such as those de\214ned for k).15 F -.15(ey)
--.1 G 4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 729.6 R
-.791(Such sequences be)5.79 F .791
+2.782(dp).15 G .282(osition, and the old)-2.782 F(cursor position is sa)
+144 360 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
+(character\255sear)108 372 Q(ch \(C\255]\))-.18 E F0 3.111(Ac)144 384 S
+.611(haracter is read and point is mo)-3.111 F -.15(ve)-.15 G 3.112(dt)
+.15 G 3.112(ot)-3.112 G .612(he ne)-3.112 F .612
+(xt occurrence of that character)-.15 F 5.612(.A)-.55 G(ne)-2.5 E -.05
+(ga)-.15 G(ti).05 E .912 -.15(ve a)-.25 H -.18(rg).15 G(u-).18 E
+(ment searches for pre)144 396 Q(vious occurrences.)-.25 E F1
+(character\255sear)108 408 Q(ch\255backward \(M\255C\255]\))-.18 E F0
+2.695(Ac)144 420 S .194(haracter is read and point is mo)-2.695 F -.15
+(ve)-.15 G 2.694(dt).15 G 2.694(ot)-2.694 G .194(he pre)-2.694 F .194
+(vious occurrence of that character)-.25 F 5.194(.A)-.55 G(ne)-2.5 E
+-.05(ga)-.15 G(ti).05 E .494 -.15(ve a)-.25 H -.2(r-).15 G
+(gument searches for subsequent occurrences.)144 432 Q F1
+(skip\255csi\255sequence)108 444 Q F0 1.826
+(Read enough characters to consume a multi-k)144 456 R 2.126 -.15(ey s)
+-.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)-.1 G
+4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 468 R .791
+(Such sequences be)5.791 F .791
(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(51)190.395 E 0 Cg EP
-%%Page: 52 52
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .332
-(If this sequence is bound to "\\[", k)144 84 R -.15(ey)-.1 G 2.831(sp)
-.15 G .331(roducing such sequences will ha)-2.831 F .631 -.15(ve n)-.2 H
-2.831(oe).15 G -.25(ff)-2.831 G .331(ect unless e).25 F(xplic-)-.15 E
-.026(itly bound to a readline command, instead of inserting stray chara\
-cters into the editing b)144 96 R(uf)-.2 E(fer)-.25 E 5.026(.T)-.55 G
-(his)-5.026 E(is unbound by def)144 108 Q(ault, b)-.1 E
-(ut usually bound to ESC\255[.)-.2 E/F1 10/Times-Bold@0 SF
-(insert\255comment \(M\255#\))108 120 Q F0 -.4(Wi)144 132 S .481
-(thout a numeric ar).4 F .481(gument, the v)-.18 F .481
-(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 -.25(va)
-2.981 G .48(riable is inserted at the).25 F(be)144 144 Q .244
-(ginning of the current line.)-.15 F .245(If a numeric ar)5.244 F .245
-(gument is supplied, this command acts as a toggle: if)-.18 F .322
-(the characters at the be)144 156 R .321
+.331(If this sequence is bound to "\\[", k)144 480 R -.15(ey)-.1 G 2.831
+(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15(ve n)
+-.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F(xplic-)
+-.15 E .026(itly bound to a readline command, instead of inserting stra\
+y characters into the editing b)144 492 R(uf)-.2 E(fer)-.25 E 5.026(.T)
+-.55 G(his)-5.026 E(is unbound by def)144 504 Q(ault, b)-.1 E
+(ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108
+516 Q F0 -.4(Wi)144 528 S .48(thout a numeric ar).4 F .48(gument, the v)
+-.18 F .481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0
+-.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 540 Q .245
+(ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244
+(gument is supplied, this command acts as a toggle: if)-.18 F .321
+(the characters at the be)144 552 R .321
(ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1
-(comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is)
--.25 F .831(inserted, otherwise the characters in)144 168 R F1
-(comment\255begin)3.331 E F0 .832(are deleted from the be)3.331 F .832
-(ginning of the line.)-.15 F 1.469
-(In either case, the line is accepted as if a ne)144 180 R 1.468
-(wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F
-1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 192 Q F0 .839
-(causes this command to mak)3.339 F 3.339(et)-.1 G .839
-(he current line a shell comment.)-3.339 F .84(If a numeric ar)5.84 F
-(gu-)-.18 E(ment causes the comment character to be remo)144 204 Q -.15
+(comment\255begin)2.821 E F0 2.822(,t)C .322(he v)-2.822 F .322(alue is)
+-.25 F .832(inserted, otherwise the characters in)144 564 R F1
+(comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831
+(ginning of the line.)-.15 F 1.468
+(In either case, the line is accepted as if a ne)144 576 R 1.468
+(wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F
+1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 588 Q F0 .84
+(causes this command to mak)3.34 F 3.339(et)-.1 G .839
+(he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F
+(gu-)-.18 E(ment causes the comment character to be remo)144 600 Q -.15
(ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G
-(cuted by the shell.).15 E F1(glob\255complete\255w)108 216 Q
-(ord \(M\255g\))-.1 E F0 .792(The w)144 228 R .791
-(ord before point is treated as a pattern for pathname e)-.1 F .791
-(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 240
-R(pattern is used to generate a list of matching \214lenames for possib\
-le completions.)2.5 E F1(glob\255expand\255w)108 252 Q(ord \(C\255x *\))
--.1 E F0 .175(The w)144 264 R .176
+(cuted by the shell.).15 E F1(spell\255corr)108 612 Q(ect\255w)-.18 E
+(ord \(C\255x s\))-.1 E F0 .42
+(Perform spelling correction on the current w)144 624 R .421
+(ord, treating it as a directory or \214lename, in the same)-.1 F -.1
+(wa)144 636 S 4.718(ya).1 G 4.718(st)-4.718 G(he)-4.718 E F1(cdspell)
+4.718 E F0 2.218(shell option.)4.718 F -.8(Wo)7.217 G 2.217
+(rd boundaries are the same as those used by).8 F F1(shell\255f)4.717 E
+(or)-.25 E(-)-.37 E(ward\255w)144 648 Q(ord)-.1 E F0(.)A F1
+(glob\255complete\255w)108 660 Q(ord \(M\255g\))-.1 E F0 .791(The w)144
+672 R .791(ord before point is treated as a pattern for pathname e)-.1 F
+.792(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144
+684 R(pattern is used to generate a list of matching \214lenames for po\
+ssible completions.)2.5 E F1(glob\255expand\255w)108 696 Q
+(ord \(C\255x *\))-.1 E F0 .176(The w)144 708 R .176
(ord before point is treated as a pattern for pathname e)-.1 F .176
(xpansion, and the list of matching \214le-)-.15 F .516
-(names is inserted, replacing the w)144 276 R 3.016(ord. If)-.1 F 3.016
+(names is inserted, replacing the w)144 720 R 3.016(ord. If)-.1 F 3.016
(an)3.016 G .516(umeric ar)-3.016 F .516
-(gument is supplied, an asterisk is appended)-.18 F(before pathname e)
-144 288 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\))
-108 300 Q F0 .923(The list of e)144 312 R .923(xpansions that w)-.15 F
-.923(ould ha)-.1 F 1.223 -.15(ve b)-.2 H .923(een generated by).15 F F1
-(glob\255expand\255w)3.423 E(ord)-.1 E F0 .923(is displayed, and)3.423 F
-.872(the line is redra)144 324 R 3.372(wn. If)-.15 F 3.372(an)3.372 G
-.872(umeric ar)-3.372 F .872
+(gument is supplied, an asterisk is appended)-.18 F(GNU Bash 5.2)72 768
+Q(2022 September 19)135.955 E(54)185.115 E 0 Cg EP
+%%Page: 55 55
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(before pathname e)
+144 84 Q(xpansion.)-.15 E/F1 10/Times-Bold@0 SF
+(glob\255list\255expansions \(C\255x g\))108 96 Q F0 .923(The list of e)
+144 108 R .923(xpansions that w)-.15 F .923(ould ha)-.1 F 1.223 -.15
+(ve b)-.2 H .923(een generated by).15 F F1(glob\255expand\255w)3.423 E
+(ord)-.1 E F0 .923(is displayed, and)3.423 F .872(the line is redra)144
+120 R 3.372(wn. If)-.15 F 3.372(an)3.372 G .872(umeric ar)-3.372 F .872
(gument is supplied, an asterisk is appended before pathname)-.18 F -.15
-(ex)144 336 S(pansion.).15 E F1(dump\255functions)108 348 Q F0 .626
-(Print all of the functions and their k)144 360 R .926 -.15(ey b)-.1 H
-.627(indings to the readline output stream.).15 F .627(If a numeric ar)
-5.627 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 372 Q
+(ex)144 132 S(pansion.).15 E F1(dump\255functions)108 144 Q F0 .627
+(Print all of the functions and their k)144 156 R .927 -.15(ey b)-.1 H
+.626(indings to the readline output stream.).15 F .626(If a numeric ar)
+5.626 F(gu-)-.18 E
+(ment is supplied, the output is formatted in such a w)144 168 Q
(ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr)
-2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 384 Q(ariables)-.1 E F0
-.763(Print all of the settable readline v)144 396 R .762
-(ariables and their v)-.25 F .762(alues to the readline output stream.)
--.25 F .762(If a nu-)5.762 F .108(meric ar)144 408 R .108
-(gument is supplied, the output is formatted in such a w)-.18 F .109
-(ay that it can be made part of an)-.1 F F2(in-)2.609 E(putr)144 420 Q
-(c)-.37 E F0(\214le.)2.5 E F1(dump\255macr)108 432 Q(os)-.18 E F0 .593
-(Print all of the readline k)144 444 R .893 -.15(ey s)-.1 H .592
-(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G
-3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 456 Q
+2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 180 Q(ariables)-.1 E F0
+.762(Print all of the settable readline v)144 192 R .762
+(ariables and their v)-.25 F .763(alues to the readline output stream.)
+-.25 F .763(If a nu-)5.763 F .109(meric ar)144 204 R .109
+(gument is supplied, the output is formatted in such a w)-.18 F .108
+(ay that it can be made part of an)-.1 F F2(in-)2.608 E(putr)144 216 Q
+(c)-.37 E F0(\214le.)2.5 E F1(dump\255macr)108 228 Q(os)-.18 E F0 .592
+(Print all of the readline k)144 240 R .892 -.15(ey s)-.1 H .592
+(equences bound to macros and the strings the).15 F 3.093(yo)-.15 G
+3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 252 Q
.528(gument is supplied, the output is formatted in such a w)-.18 F .528
-(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0
-(\214le.)144 468 Q F1(display\255shell\255v)108 480 Q
-(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 492 Q
+(ay that it can be made part of an)-.1 F F2(inputr)3.027 E(c)-.37 E F0
+(\214le.)144 264 Q F1(display\255shell\255v)108 276 Q
+(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 288 Q
(ersion information about the current instance of)-.15 E F1(bash)2.5 E
-F0(.)A F1(Pr)87 508.8 Q(ogrammable Completion)-.18 E F0 .147(When w)108
-520.8 R .147(ord completion is attempted for an ar)-.1 F .147
+F0(.)A F1(Pr)87 304.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108
+316.8 R .147(ord completion is attempted for an ar)-.1 F .147
(gument to a command for which a completion speci\214cation \(a)-.18 F
-F2(compspec)108 532.8 Q F0 3.828(\)h)C 1.329
-(as been de\214ned using the)-3.828 F F1(complete)3.829 E F0 -.2(bu)
+F2(compspec)108 328.8 Q F0 3.829(\)h)C 1.329
+(as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu)
3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829
-F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.329(w\), the)
--.25 F(programmable completion f)108 544.8 Q(acilities are in)-.1 E -.2
-(vo)-.4 G -.1(ke).2 G(d.).1 E .498
-(First, the command name is identi\214ed.)108 561.6 R .498
-(If the command w)5.498 F .497
-(ord is the empty string \(completion attempted at)-.1 F .233(the be)108
-573.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233
+F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.328(w\), the)
+-.25 F(programmable completion f)108 340.8 Q(acilities are in)-.1 E -.2
+(vo)-.4 G -.1(ke).2 G(d.).1 E .497
+(First, the command name is identi\214ed.)108 357.6 R .497
+(If the command w)5.497 F .498
+(ord is the empty string \(completion attempted at)-.1 F .234(the be)108
+369.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233
(ompspec de\214ned with the)-2.733 F 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\
+2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .233(If a comp-)
+5.233 F .481(spec has been de\214ned for that command, the compspec is \
+used to generate the list of possible completions)108 381.6 R .823
+(for the w)108 393.6 R 3.323(ord. If)-.1 F .823(the command w)3.323 F
+.822(ord is a full pathname, a compspec for the full pathname is search\
+ed for)-.1 F 2.866(\214rst. If)108 405.6 R .367(no compspec is found fo\
r the full pathname, an attempt is made to \214nd a compspec for the po\
-rtion)2.867 F(follo)108 621.6 Q .298(wing the \214nal slash.)-.25 F .298
-(If those searches do not result in a compspec, an)5.298 F 2.799(yc)-.15
-G .299(ompspec de\214ned with the)-2.799 F 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)
+rtion)2.866 F(follo)108 417.6 Q .299(wing the \214nal slash.)-.25 F .298
+(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15
+G .298(ompspec de\214ned with the)-2.798 F F1<ad44>2.798 E F0 .056
+(option to)108 429.6 R F1(complete)2.556 E F0 .056(is used as the def)
2.556 F 2.556(ault. If)-.1 F .056(there is no def)2.556 F .056
(ault compspec,)-.1 F F1(bash)2.556 E F0 .056(attempts alias e)2.556 F
-.056(xpansion on)-.15 F .332(the command w)108 645.6 R .332(ord as a \
+.057(xpansion on)-.15 F .333(the command w)108 441.6 R .332(ord as a \
\214nal resort, and attempts to \214nd a compspec for the command w)-.1
-F .332(ord from an)-.1 F 2.833(ys)-.15 G(uc-)-2.833 E(cessful e)108
-657.6 Q(xpansion.)-.15 E .817(Once a compspec has been found, it is use\
-d to generate the list of matching w)108 674.4 R 3.317(ords. If)-.1 F
-3.317(ac)3.317 G .817(ompspec is not)-3.317 F(found, the def)108 686.4 Q
+F .332(ord from an)-.1 F 2.832(ys)-.15 G(uc-)-2.832 E(cessful e)108
+453.6 Q(xpansion.)-.15 E .817(Once a compspec has been found, it is use\
+d to generate the list of matching w)108 470.4 R 3.317(ords. If)-.1 F
+3.317(ac)3.317 G .817(ompspec is not)-3.317 F(found, the def)108 482.4 Q
(ault)-.1 E F1(bash)2.5 E F0(completion as described abo)2.5 E .3 -.15
-(ve u)-.15 H(nder).15 E F1(Completing)2.5 E F0(is performed.)2.5 E .463
-(First, the actions speci\214ed by the compspec are used.)108 703.2 R
-.464(Only matches which are pre\214x)5.464 F .464(ed by the w)-.15 F
-.464(ord being)-.1 F .596(completed are returned.)108 715.2 R .596
-(When the)5.596 F F1<ad66>3.096 E F0(or)3.095 E F1<ad64>3.095 E F0 .595
+(ve u)-.15 H(nder).15 E F1(Completing)2.5 E F0(is performed.)2.5 E .464
+(First, the actions speci\214ed by the compspec are used.)108 499.2 R
+.463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F
+.463(ord being)-.1 F .595(completed are returned.)108 511.2 R .595
+(When the)5.595 F F1<ad66>3.095 E F0(or)3.095 E F1<ad64>3.095 E F0 .596
(option is used for \214lename or directory name completion, the)3.095 F
-(shell v)108 727.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0
-(is used to \214lter the matches.)2.25 E(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(52)190.395 E 0 Cg EP
-%%Page: 53 53
+(shell v)108 523.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0
+(is used to \214lter the matches.)2.25 E(An)108 540 Q 4.084(yc)-.15 G
+1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584
+(xpansion pattern to the)-.15 F F1<ad47>4.084 E F0 1.584
+(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 552 S
+.554(rds generated by the pattern need not match the w).1 F .555
+(ord being completed.)-.1 F(The)5.555 E F3(GLOBIGNORE)3.055 E F0 .555
+(shell v)2.805 F(ari-)-.25 E
+(able is not used to \214lter the matches, b)108 564 Q(ut the)-.2 E F3
+(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 580.8 Q
+.321(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18
+F 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
+592.8 R F3(IFS)2.912 E F0 .412(special v)2.662 F .412
+(ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F
+.413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092
+(using brace e)108 604.8 R .092(xpansion, tilde e)-.15 F .092
+(xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .091
+(xpansion, command substitution, and arith-)-.15 F 1.396(metic e)108
+616.8 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H
+(nder).15 E F3(EXP)3.896 E(ANSION)-.666 E/F4 9/Times-Roman@0 SF(.)A F0
+1.396(The results are split using the rules described)5.896 F(abo)108
+628.8 Q .51 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.71 G .21
+(rd Splitting).75 F F0 5.21(.T)C .209(he results of the e)-5.21 F .209
+(xpansion are pre\214x-matched ag)-.15 F .209(ainst the w)-.05 F .209
+(ord being com-)-.1 F(pleted, and the matching w)108 640.8 Q
+(ords become the possible completions.)-.1 E .233
+(After these matches ha)108 657.6 R .533 -.15(ve b)-.2 H .233
+(een generated, an).15 F 2.733(ys)-.15 G .234
+(hell function or command speci\214ed with the)-2.733 F F1<ad46>2.734 E
+F0(and)2.734 E F1<ad43>2.734 E F0(op-)2.734 E 4.209(tions is in)108
+669.6 R -.2(vo)-.4 G -.1(ke).2 G 6.709(d. When).1 F 4.208
+(the command or function is in)6.709 F -.2(vo)-.4 G -.1(ke).2 G 4.208
+(d, the).1 F F3(COMP_LINE)6.708 E F4(,)A F3(COMP_POINT)6.458 E F4(,)A F3
+(COMP_KEY)108 681.6 Q F4(,)A F0(and)2.407 E F3(COMP_TYPE)2.657 E F0 -.25
+(va)2.407 G .157(riables are assigned v).25 F .157
+(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .158
+(Shell V)2.658 F(ariables)-.92 E F0 5.158(.I)C(f)-5.158 E 3.486(as)108
+693.6 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G
+.986(d, the).1 F F3(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F3
+(COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986
+(riables are also set.).25 F(When)5.985 E .346
+(the function or command is in)108 705.6 R -.2(vo)-.4 G -.1(ke).2 G .346
+(d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.847(\)i)C
+2.847(st)-2.847 G .347(he name of the command whose ar)-2.847 F(guments)
+-.18 E .264(are being completed, the second ar)108 717.6 R .264
+(gument \()-.18 F F1($2)A F0 2.764(\)i)C 2.764(st)-2.764 G .264(he w)
+-2.764 F .263(ord being completed, and the third ar)-.1 F .263
+(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 729.6
+R .628(ord preceding the w)-.1 F .629
+(ord being completed on the current command line.)-.1 F .629
+(No \214ltering of the generated)5.629 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(55)185.115 E 0 Cg EP
+%%Page: 56 56
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(An)108 84 Q 4.084
-(yc)-.15 G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584
-(xpansion pattern to the)-.15 F/F1 10/Times-Bold@0 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
-.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.986 E .347
-(the function or command is in)108 249.6 R -.2(vo)-.4 G -.1(ke).2 G .347
-(d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.846(\)i)C
-2.846(st)-2.846 G .346(he name of the command whose ar)-2.846 F(guments)
--.18 E .263(are being completed, the second ar)108 261.6 R .263
-(gument \()-.18 F F1($2)A F0 2.763(\)i)C 2.763(st)-2.763 G .264(he w)
--2.763 F .264(ord being completed, and the third ar)-.1 F .264
-(gument \()-.18 F F1($3)A F0 2.764(\)i)C(s)-2.764 E .629(the w)108 273.6
-R .629(ord preceding the w)-.1 F .629
-(ord being completed on the current command line.)-.1 F .628
-(No \214ltering of the generated)5.629 F .714(completions ag)108 285.6 R
-.714(ainst the w)-.05 F .714(ord being completed is performed; the func\
-tion or command has complete free-)-.1 F(dom in generating the matches.)
-108 297.6 Q(An)108 314.4 Q 2.938(yf)-.15 G .437
-(unction speci\214ed with)-2.938 F 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 .437(acilities, including)-.1 F(the)108 326.4 Q F1
-(compgen)2.956 E F0 -.2(bu)2.956 G .456(iltin described belo).2 F 1.756
--.65(w, t)-.25 H 2.956(og).65 G .456(enerate the matches.)-2.956 F .457
-(It must put the possible completions in the)5.456 F F2(COMPREPL)108
-338.4 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25
-E(Ne)108 355.2 Q .081(xt, an)-.15 F 2.581(yc)-.15 G .081
-(ommand speci\214ed with the)-2.581 F 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
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .715
+(completions ag)108 84 R .715(ainst the w)-.05 F .714(ord being complet\
+ed is performed; the function or command has complete free-)-.1 F
+(dom in generating the matches.)108 96 Q(An)108 112.8 Q 2.937(yf)-.15 G
+.437(unction speci\214ed with)-2.937 F/F1 10/Times-Bold@0 SF<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 124.8 Q F1(compgen)2.957 E F0 -.2(bu)2.957 G .457
+(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og).65 G .456
+(enerate the matches.)-2.956 F .456
+(It must put the possible completions in the)5.456 F/F2 9/Times-Bold@0
+SF(COMPREPL)108 136.8 Q(Y)-.828 E F0(array v)2.25 E
+(ariable, one per array element.)-.25 E(Ne)108 153.6 Q .08(xt, an)-.15 F
+2.58(yc)-.15 G .08(ommand speci\214ed with the)-2.58 F 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
+165.6 R .359(should print a list of completions, one per line, to the s\
+tandard output.)2.859 F .358(Backslash may be used)5.359 F
+(to escape a ne)108 177.6 Q(wline, if necessary)-.25 E(.)-.65 E .376
+(After all of the possible completions are generated, an)108 194.4 R
+2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F1<ad58>2.877
+E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 206.4 R
+.682(\214lter is a pattern as used for pathname e)3.182 F .681
+(xpansion; a)-.15 F F1(&)3.181 E F0 .681
+(in the pattern is replaced with the te)3.181 F .681(xt of)-.15 F .522
+(the w)108 218.4 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G
+(iteral)-3.022 E F1(&)3.022 E F0 .523
(may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve)
--.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 432 R
-(An)5.849 E 3.349(yc)-.15 G .849
-(ompletion that matches the pattern will be remo)-3.349 F -.15(ve)-.15 G
-3.35(df).15 G .85(rom the list.)-3.35 F 3.35(Al)5.85 G(eading)-3.35 E F1
-(!)3.35 E F0(ne)108 444 Q -.05(ga)-.15 G .764
+-.15 G 3.023(db).15 G(efore)-3.023 E .85(attempting a match.)108 230.4 R
+(An)5.85 E 3.35(yc)-.15 G .849
+(ompletion that matches the pattern will be remo)-3.35 F -.15(ve)-.15 G
+3.349(df).15 G .849(rom the list.)-3.349 F 3.349(Al)5.849 G(eading)
+-3.349 E F1(!)3.349 E F0(ne)108 242.4 Q -.05(ga)-.15 G .764
(tes the pattern; in this case an).05 F 3.264(yc)-.15 G .764
(ompletion not matching the pattern will be remo)-3.264 F -.15(ve)-.15 G
-3.264(d. If).15 F(the)3.264 E F1(nocase-)3.264 E(match)108 456 Q F0
+3.264(d. If).15 F(the)3.265 E F1(nocase-)3.265 E(match)108 254.4 Q F0
(shell option is enabled, the match is performed without re)2.5 E -.05
(ga)-.15 G(rd to the case of alphabetic characters.).05 E(Finally)108
-472.8 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H .586(re\214x and suf).15
+271.2 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15
F .587(\214x speci\214ed with the)-.25 F 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)
+tion code as the list of possible completions.)108 283.2 Q .246
+(If the pre)108 300 R .247(viously-applied actions do not generate an)
-.25 F 2.747(ym)-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir)
-2.747 F(names)-.15 E F0 .247(option w)2.747 F .246(as supplied to)-.1 F
-F1(complete)108 513.6 Q F0(when the compspec w)2.5 E
-(as de\214ned, directory name completion is attempted.)-.1 E .461
-(If the)108 530.4 R F1 .462(\255o plusdirs)2.961 F F0 .462(option w)
+2.747 F(names)-.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F
+F1(complete)108 312 Q F0(when the compspec w)2.5 E
+(as de\214ned, directory name completion is attempted.)-.1 E .462
+(If the)108 328.8 R F1 .462(\255o plusdirs)2.962 F F0 .462(option w)
2.962 F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462
(when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1
-F(pletion is attempted and an)108 542.4 Q 2.5(ym)-.15 G
-(atches are added to the results of the other actions.)-2.5 E .56
-(By def)108 559.2 R .56(ault, if a compspec is found, whate)-.1 F -.15
-(ve)-.25 G 3.06(ri).15 G 3.06(tg)-3.06 G .559
-(enerates is returned to the completion code as the full set)-3.06 F
-.631(of possible completions.)108 571.2 R .631(The def)5.631 F(ault)-.1
-E F1(bash)3.131 E F0 .631
-(completions are not attempted, and the readline def)3.131 F .632
-(ault of \214le-)-.1 F .559(name completion is disabled.)108 583.2 R
-.559(If the)5.559 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w)
-3.059 F .559(as supplied to)-.1 F F1(complete)3.058 E F0 .558
-(when the compspec)3.058 F -.1(wa)108 595.2 S 3.171(sd).1 G .671
-(e\214ned, the)-3.171 F F1(bash)3.171 E F0(def)3.171 E .671
+F(pletion is attempted and an)108 340.8 Q 2.5(ym)-.15 G
+(atches are added to the results of the other actions.)-2.5 E .559
+(By def)108 357.6 R .559(ault, if a compspec is found, whate)-.1 F -.15
+(ve)-.25 G 3.059(ri).15 G 3.059(tg)-3.059 G .56
+(enerates is returned to the completion code as the full set)-3.059 F
+.632(of possible completions.)108 369.6 R .632(The def)5.632 F(ault)-.1
+E F1(bash)3.132 E F0 .631
+(completions are not attempted, and the readline def)3.131 F .631
+(ault of \214le-)-.1 F .558(name completion is disabled.)108 381.6 R
+.558(If the)5.558 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w)
+3.059 F .559(as supplied to)-.1 F F1(complete)3.059 E F0 .559
+(when the compspec)3.059 F -.1(wa)108 393.6 S 3.172(sd).1 G .672
+(e\214ned, the)-3.172 F F1(bash)3.172 E F0(def)3.172 E .671
(ault completions are attempted if the compspec generates no matches.)
--.1 F .672(If the)5.672 F 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 F .671(If the)5.671 F F1<ad6f>3.171 E(default)108 405.6 Q F0 1.207
+(option w)3.706 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0
1.207(when the compspec w)3.707 F 1.207(as de\214ned, readline')-.1 F
-3.707(sd)-.55 G(ef)-3.707 E 1.206(ault completion)-.1 F
+3.707(sd)-.55 G(ef)-3.707 E 1.207(ault completion)-.1 F
(will be performed if the compspec \(and, if attempted, the def)108
-619.2 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.)
+417.6 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.)
2.5 E .245(When a compspec indicates that directory name completion is \
-desired, the programmable completion func-)108 636 R .633(tions force r\
-eadline to append a slash to completed names which are symbolic links t\
-o directories, subject)108 648 R 2.761(to the v)108 660 R 2.761
-(alue of the)-.25 F F1(mark\255dir)5.261 E(ectories)-.18 E F0 2.761
-(readline v)5.261 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.762
-(rdless of the setting of the).05 F F1(mark-sym-)5.262 E(link)108 672 Q
-(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E
-.191(There is some support for dynamically modifying completions.)108
-688.8 R .19(This is most useful when used in combina-)5.191 F 1.172
-(tion with a def)108 700.8 R 1.172(ault completion speci\214ed with)-.1
+desired, the programmable completion func-)108 434.4 R .632(tions force\
+ readline to append a slash to completed names which are symbolic links\
+ to directories, subject)108 446.4 R 2.762(to the v)108 458.4 R 2.762
+(alue of the)-.25 F F1(mark\255dir)5.262 E(ectories)-.18 E F0 2.761
+(readline v)5.262 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.761
+(rdless of the setting of the).05 F F1(mark-sym-)5.261 E(link)108 470.4
+Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E
+.19(There is some support for dynamically modifying completions.)108
+487.2 R .191(This is most useful when used in combina-)5.191 F 1.172
+(tion with a def)108 499.2 R 1.172(ault completion speci\214ed with)-.1
F F1 1.172(complete \255D)3.672 F F0 6.172(.I)C(t')-6.172 E 3.672(sp)
-.55 G 1.172(ossible for shell functions e)-3.672 F -.15(xe)-.15 G 1.172
(cuted as).15 F .93(completion handlers to indicate that completion sho\
-uld be retried by returning an e)108 712.8 R .93(xit status of 124.)-.15
+uld be retried by returning an e)108 511.2 R .93(xit status of 124.)-.15
F .93(If a)5.93 F .1(shell function returns 124, and changes the compsp\
-ec associated with the command on which completion is)108 724.8 R
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(53)190.395 E 0 Cg EP
-%%Page: 54 54
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .666
-(being attempted \(supplied as the \214rst ar)108 84 R .665
-(gument when the function is e)-.18 F -.15(xe)-.15 G .665
-(cuted\), programmable completion).15 F .083(restarts from the be)108 96
-R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 G
-.084(ompspec for that command.)-2.584 F .084(This allo)5.084 F .084
-(ws a set of)-.25 F(completions to be b)108 108 Q(uilt dynamically as c\
-ompletion is attempted, rather than being loaded all at once.)-.2 E -.15
-(Fo)108 124.8 S 2.637(ri).15 G .137
-(nstance, assuming that there is a library of compspecs, each k)-2.637 F
+ec associated with the command on which completion is)108 523.2 R .665
+(being attempted \(supplied as the \214rst ar)108 535.2 R .666
+(gument when the function is e)-.18 F -.15(xe)-.15 G .666
+(cuted\), programmable completion).15 F .084(restarts from the be)108
+547.2 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)
+-.25 G .084(ompspec for that command.)-2.584 F .083(This allo)5.083 F
+.083(ws a set of)-.25 F(completions to be b)108 559.2 Q(uilt dynamicall\
+y as completion is attempted, rather than being loaded all at once.)-.2
+E -.15(Fo)108 576 S 2.636(ri).15 G .137
+(nstance, assuming that there is a library of compspecs, each k)-2.636 F
.137(ept in a \214le corresponding to the name of)-.1 F
-(the command, the follo)108 136.8 Q(wing def)-.25 E
+(the command, the follo)108 588 Q(wing def)-.25 E
(ault completion function w)-.1 E(ould load completions dynamically:)-.1
-E/F1 10/Courier@0 SF(_completion_loader\(\))108 153.6 Q({)108 165.6 Q 6
-(.")144 177.6 S
+E/F3 10/Courier@0 SF(_completion_loader\(\))108 604.8 Q({)108 616.8 Q 6
+(.")144 628.8 S
(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108
-189.6 Q(complete -D -F _completion_loader -o bashdefault -o default)108
-201.6 Q/F2 10.95/Times-Bold@0 SF(HIST)72 230.4 Q(OR)-.197 E(Y)-.383 E F0
-.371(When the)108 242.4 R/F3 10/Times-Bold@0 SF .371(\255o history)2.871
-F F0 .371(option to the)2.871 F F3(set)2.872 E F0 -.2(bu)2.872 G .372
-(iltin is enabled, the shell pro).2 F .372(vides access to the)-.15 F/F4
-10/Times-Italic@0 SF .372(command history)2.872 F F0(,)A .305
-(the list of commands pre)108 254.4 R .305(viously typed.)-.25 F .305
-(The v)5.305 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE)
-2.804 E F0 -.25(va)2.554 G .304(riable is used as the number of com-).25
-F .429(mands to sa)108 266.4 R .729 -.15(ve i)-.2 H 2.929(nah).15 G .429
-(istory list.)-2.929 F .429(The te)5.429 F .429(xt of the last)-.15 F F5
-(HISTSIZE)2.93 E F0 .43(commands \(def)2.68 F .43(ault 500\) is sa)-.1 F
--.15(ve)-.2 G 2.93(d. The).15 F(shell)2.93 E .287
+640.8 Q(complete -D -F _completion_loader -o bashdefault -o default)108
+652.8 Q/F4 10.95/Times-Bold@0 SF(HIST)72 681.6 Q(OR)-.197 E(Y)-.383 E F0
+.372(When the)108 693.6 R F1 .372(\255o history)2.872 F F0 .372
+(option to the)2.872 F F1(set)2.872 E F0 -.2(bu)2.872 G .372
+(iltin is enabled, the shell pro).2 F .371(vides access to the)-.15 F/F5
+10/Times-Italic@0 SF .371(command history)2.871 F F0(,)A .304
+(the list of commands pre)108 705.6 R .304(viously typed.)-.25 F .304
+(The v)5.304 F .304(alue of the)-.25 F F2(HISTSIZE)2.804 E F0 -.25(va)
+2.554 G .305(riable is used as the number of com-).25 F .43(mands to sa)
+108 717.6 R .73 -.15(ve i)-.2 H 2.93(nah).15 G .43(istory list.)-2.93 F
+.43(The te)5.43 F .429(xt of the last)-.15 F F2(HISTSIZE)2.929 E F0 .429
+(commands \(def)2.679 F .429(ault 500\) is sa)-.1 F -.15(ve)-.2 G 2.929
+(d. The).15 F(shell)2.929 E .287
(stores each command in the history list prior to parameter and v)108
-278.4 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E
-(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 290.4
-S 4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565
+729.6 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F2(EXP)2.787 E
+(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E(GNU Bash 5.2)72
+768 Q(2022 September 19)135.955 E(56)185.115 E 0 Cg EP
+%%Page: 57 57
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.2(bu)108 84 S
+4.066(ta).2 G 1.565(fter history e)-4.066 F 1.565
(xpansion is performed, subject to the v)-.15 F 1.565
-(alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0
-(and)3.816 E F5(HISTCONTR)108 302.4 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.)
-A F0 .082
+(alues of the shell v)-.25 F(ariables)-.25 E/F1 9/Times-Bold@0 SF
+(HISTIGNORE)4.065 E F0(and)3.815 E F1(HISTCONTR)108 96 Q(OL)-.27 E/F2 9
+/Times-Roman@0 SF(.)A F0 .082
(On startup, the history is initialized from the \214le named by the v)
-108 319.2 R(ariable)-.25 E F5(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1
-E F4(~/.bash_history)2.582 E F0(\).)A .315(The \214le named by the v)108
-331.2 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315
-(is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G
-.315(ontain no more than the number of)-2.815 F .659
-(lines speci\214ed by the v)108 343.2 R .659(alue of)-.25 F F5
-(HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F3(HISTFILESIZE)3.158 E F0
-.658(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 355.2 S
-.142(lue, or a numeric v).25 F .142
+108 112.8 R(ariable)-.25 E F1(HISTFILE)2.583 E F0(\(def)2.333 E(ault)-.1
+E/F3 10/Times-Italic@0 SF(~/.bash_history)2.583 E F0(\).)A .315
+(The \214le named by the v)108 124.8 R .315(alue of)-.25 F F1(HISTFILE)
+2.815 E F0 .315(is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815
+(oc)-2.815 G .315(ontain no more than the number of)-2.815 F .658
+(lines speci\214ed by the v)108 136.8 R .658(alue of)-.25 F F1
+(HISTFILESIZE)3.158 E F2(.)A F0(If)5.158 E/F4 10/Times-Bold@0 SF
+(HISTFILESIZE)3.158 E F0 .659(is unset, or set to null, a non-numeric)
+3.158 F -.25(va)108 148.8 S .142(lue, or a numeric v).25 F .142
(alue less than zero, the history \214le is not truncated.)-.25 F .142
-(When the history \214le is read, lines)5.142 F(be)108 367.2 Q 1.605
+(When the history \214le is read, lines)5.142 F(be)108 160.8 Q 1.604
(ginning with the history comment character follo)-.15 F 1.604
-(wed immediately by a digit are interpreted as time-)-.25 F .15
-(stamps for the follo)108 379.2 R .15(wing history line.)-.25 F .151
+(wed immediately by a digit are interpreted as time-)-.25 F .151
+(stamps for the follo)108 172.8 R .151(wing history line.)-.25 F .151
(These timestamps are optionally displayed depending on the v)5.151 F
-.151(alue of)-.25 F(the)108 391.2 Q F5(HISTTIMEFORMA)3.559 E(T)-.855 E
-F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059
-(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5
-($HISTSIZE)3.559 E F0 1.058(lines are)3.309 F .158
-(copied from the history list to)108 403.2 R F5($HISTFILE)2.658 E F6(.)A
-F0 .158(If the)4.658 F F3(histappend)2.658 E F0 .159
-(shell option is enabled \(see the description of)2.659 F F3(shopt)108
-415.2 Q F0(under)2.582 E F5 .082(SHELL B)2.582 F(UIL)-.09 E .082
+.15(alue of)-.25 F(the)108 184.8 Q F1(HISTTIMEFORMA)3.558 E(T)-.855 E F0
+-.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059
+(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F1
+($HISTSIZE)3.559 E F0 1.059(lines are)3.309 F .159
+(copied from the history list to)108 196.8 R F1($HISTFILE)2.659 E F2(.)A
+F0 .159(If the)4.659 F F4(histappend)2.658 E F0 .158
+(shell option is enabled \(see the description of)2.658 F F4(shopt)108
+208.8 Q F0(under)2.581 E F1 .081(SHELL B)2.581 F(UIL)-.09 E .081
(TIN COMMANDS)-.828 F F0(belo)2.332 E .082
(w\), the lines are appended to the history \214le, otherwise the)-.25 F
-.196(history \214le is o)108 427.2 R -.15(ve)-.15 G 2.696(rwritten. If)
-.15 F F5(HISTFILE)2.696 E F0 .197(is unset, or if the history \214le is\
- unwritable, the history is not sa)2.446 F -.15(ve)-.2 G(d.).15 E .584
-(If the)108 439.2 R F5(HISTTIMEFORMA)3.084 E(T)-.855 E F0 -.25(va)2.834
+.197(history \214le is o)108 220.8 R -.15(ve)-.15 G 2.697(rwritten. If)
+.15 F F1(HISTFILE)2.697 E F0 .196(is unset, or if the history \214le is\
+ unwritable, the history is not sa)2.447 F -.15(ve)-.2 G(d.).15 E .583
+(If the)108 232.8 R F1(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834
G .584
(riable is set, time stamps are written to the history \214le, mark).25
-F .583(ed with the his-)-.1 F 1.147(tory comment character)108 451.2 R
-3.647(,s)-.4 G 3.647(ot)-3.647 G(he)-3.647 E 3.647(ym)-.15 G 1.147
-(ay be preserv)-3.647 F 1.147(ed across shell sessions.)-.15 F 1.148
-(This uses the history comment)6.148 F 1.377
-(character to distinguish timestamps from other history lines.)108 463.2
-R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.876(,t)-.65 G
-1.376(he history \214le is)-3.876 F .756
-(truncated to contain no more than)108 475.2 R F5(HISTFILESIZE)3.257 E
-F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757
-(is unset, or set to null, a non-)3.007 F(numeric v)108 487.2 Q
+F .584(ed with the his-)-.1 F 1.148(tory comment character)108 244.8 R
+3.648(,s)-.4 G 3.648(ot)-3.648 G(he)-3.648 E 3.648(ym)-.15 G 1.147
+(ay be preserv)-3.648 F 1.147(ed across shell sessions.)-.15 F 1.147
+(This uses the history comment)6.147 F 1.376
+(character to distinguish timestamps from other history lines.)108 256.8
+R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.877(,t)-.65 G
+1.377(he history \214le is)-3.877 F .757
+(truncated to contain no more than)108 268.8 R F1(HISTFILESIZE)3.257 E
+F0 3.257(lines. If)3.007 F F1(HISTFILESIZE)3.257 E F0 .757
+(is unset, or set to null, a non-)3.007 F(numeric v)108 280.8 Q
(alue, or a numeric v)-.25 E
-(alue less than zero, the history \214le is not truncated.)-.25 E .299
-(The b)108 504 R .299(uiltin command)-.2 F F3(fc)2.799 E F0(\(see)2.799
-E F5 .299(SHELL B)2.799 F(UIL)-.09 E .299(TIN COMMANDS)-.828 F F0(belo)
-2.549 E .298(w\) may be used to list or edit and re-e)-.25 F -.15(xe)
--.15 G(-).15 E .471(cute a portion of the history list.)108 516 R(The)
-5.471 E F3(history)2.971 E F0 -.2(bu)2.971 G .472
-(iltin may be used to display or modify the history list and).2 F .002
-(manipulate the history \214le.)108 528 R .001
-(When using command-line editing, search commands are a)5.002 F -.25(va)
--.2 G .001(ilable in each edit-).25 F(ing mode that pro)108 540 Q
-(vide access to the history list.)-.15 E 1.485(The shell allo)108 556.8
-R 1.485(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486
+(alue less than zero, the history \214le is not truncated.)-.25 E .298
+(The b)108 297.6 R .298(uiltin command)-.2 F F4(fc)2.798 E F0(\(see)
+2.798 E F1 .298(SHELL B)2.798 F(UIL)-.09 E .298(TIN COMMANDS)-.828 F F0
+(belo)2.549 E .299(w\) may be used to list or edit and re-e)-.25 F -.15
+(xe)-.15 G(-).15 E .472(cute a portion of the history list.)108 309.6 R
+(The)5.472 E F4(history)2.972 E F0 -.2(bu)2.972 G .471
+(iltin may be used to display or modify the history list and).2 F .001
+(manipulate the history \214le.)108 321.6 R .001
+(When using command-line editing, search commands are a)5.001 F -.25(va)
+-.2 G .002(ilable in each edit-).25 F(ing mode that pro)108 333.6 Q
+(vide access to the history list.)-.15 E 1.486(The shell allo)108 350.4
+R 1.486(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486
(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt)
--3.986 G 1.486(he history list.)-3.986 F(The)6.486 E F5(HISTCONTR)3.986
-E(OL)-.27 E F0(and)3.736 E F5(HISTIGNORE)108 568.8 Q F0 -.25(va)2.708 G
-.458(riables may be set to cause the shell to sa).25 F .757 -.15(ve o)
--.2 H .457(nly a subset of the commands entered.).15 F(The)5.457 E F3
-(cmdhist)108 580.8 Q F0 .75
+-3.986 G 1.486(he history list.)-3.986 F(The)6.485 E F1(HISTCONTR)3.985
+E(OL)-.27 E F0(and)3.735 E F1(HISTIGNORE)108 362.4 Q F0 -.25(va)2.707 G
+.457(riables may be set to cause the shell to sa).25 F .758 -.15(ve o)
+-.2 H .458(nly a subset of the commands entered.).15 F(The)5.458 E F4
+(cmdhist)108 374.4 Q F0 .75
(shell option, if enabled, causes the shell to attempt to sa)3.25 F 1.05
-.15(ve e)-.2 H .75(ach line of a multi-line command in).15 F 1.077
-(the same history entry)108 592.8 R 3.577(,a)-.65 G 1.077
+(the same history entry)108 386.4 R 3.577(,a)-.65 G 1.077
(dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G
-1.077(yntactic correctness.)-3.577 F(The)6.077 E F3(lithist)3.576 E F0
-.373(shell option causes the shell to sa)108 604.8 R .674 -.15(ve t)-.2
-H .374(he command with embedded ne).15 F .374
-(wlines instead of semicolons.)-.25 F .374(See the)5.374 F .319
-(description of the)108 616.8 R F3(shopt)2.819 E F0 -.2(bu)2.819 G .318
-(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F
-(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .318
+1.077(yntactic correctness.)-3.577 F(The)6.077 E F4(lithist)3.577 E F0
+.374(shell option causes the shell to sa)108 398.4 R .674 -.15(ve t)-.2
+H .374(he command with embedded ne).15 F .373
+(wlines instead of semicolons.)-.25 F .373(See the)5.373 F .318
+(description of the)108 410.4 R F4(shopt)2.818 E F0 -.2(bu)2.818 G .318
+(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F1 .318(SHELL B)2.818 F
+(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319
(for information on setting and)2.568 F(unsetting shell options.)108
-628.8 Q F2(HIST)72 645.6 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E
-(ANSION)-.81 E F0 .61(The shell supports a history e)108 657.6 R .611
-(xpansion feature that is similar to the history e)-.15 F .611
-(xpansion in)-.15 F F3(csh)3.111 E F0 5.611(.T)C .611(his section)-5.611
-F .871(describes what syntax features are a)108 669.6 R -.25(va)-.2 G
-3.371(ilable. This).25 F .871(feature is enabled by def)3.371 F .87
-(ault for interacti)-.1 F 1.17 -.15(ve s)-.25 H .87(hells, and).15 F
-.949(can be disabled using the)108 681.6 R F3(+H)3.449 E F0 .949
-(option to the)3.449 F F3(set)3.449 E F0 -.2(bu)3.449 G .949
-(iltin command \(see).2 F F5 .949(SHELL B)3.449 F(UIL)-.09 E .95
-(TIN COMMANDS)-.828 F F0(be-)3.2 E(lo)108 693.6 Q 2.5
+422.4 Q/F5 10.95/Times-Bold@0 SF(HIST)72 439.2 Q(OR)-.197 E 2.738(YE)
+-.383 G(XP)-2.738 E(ANSION)-.81 E F0 .611
+(The shell supports a history e)108 451.2 R .611
+(xpansion feature that is similar to the history e)-.15 F .61
+(xpansion in)-.15 F F4(csh)3.11 E F0 5.61(.T)C .61(his section)-5.61 F
+.87(describes what syntax features are a)108 463.2 R -.25(va)-.2 G 3.371
+(ilable. This).25 F .871(feature is enabled by def)3.371 F .871
+(ault for interacti)-.1 F 1.171 -.15(ve s)-.25 H .871(hells, and).15 F
+.95(can be disabled using the)108 475.2 R F4(+H)3.449 E F0 .949
+(option to the)3.449 F F4(set)3.449 E F0 -.2(bu)3.449 G .949
+(iltin command \(see).2 F F1 .949(SHELL B)3.449 F(UIL)-.09 E .949
+(TIN COMMANDS)-.828 F F0(be-)3.199 E(lo)108 487.2 Q 2.5
(w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H
(hells do not perform history e).15 E(xpansion by def)-.15 E(ault.)-.1 E
-1.306(History e)108 710.4 R 1.306(xpansions introduce w)-.15 F 1.306(or\
-ds from the history list into the input stream, making it easy to repea\
-t)-.1 F .209(commands, insert the ar)108 722.4 R .209(guments to a pre)
--.18 F .21
-(vious command into the current input line, or \214x errors in pre)-.25
-F(vious)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(54)
-190.395 E 0 Cg EP
-%%Page: 55 55
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(commands quickly)
-108 84 Q(.)-.65 E 1.164(History e)108 100.8 R 1.163(xpansion is perform\
-ed immediately after a complete line is read, before the shell breaks i\
-t into)-.15 F -.1(wo)108 112.8 S .251
-(rds, and is performed on each line indi).1 F .251
-(vidually without taking quoting on pre)-.25 F .252
-(vious lines into account.)-.25 F(It)5.252 E(tak)108 124.8 Q .146
-(es place in tw)-.1 F 2.646(op)-.1 G 2.646(arts. The)-2.646 F .146(\214\
+1.305(History e)108 504 R 1.305(xpansions introduce w)-.15 F 1.306(ords\
+ from the history list into the input stream, making it easy to repeat)
+-.1 F .21(commands, insert the ar)108 516 R .21(guments to a pre)-.18 F
+.209(vious command into the current input line, or \214x errors in pre)
+-.25 F(vious)-.25 E(commands quickly)108 528 Q(.)-.65 E 1.163(History e)
+108 544.8 R 1.163(xpansion is performed immediately after a complete li\
+ne is read, before the shell breaks it into)-.15 F -.1(wo)108 556.8 S
+.252(rds, and is performed on each line indi).1 F .251
+(vidually without taking quoting on pre)-.25 F .251
+(vious lines into account.)-.25 F(It)5.251 E(tak)108 568.8 Q .145
+(es place in tw)-.1 F 2.645(op)-.1 G 2.646(arts. The)-2.645 F .146(\214\
rst is to determine which line from the history list to use during subs\
titution.)2.646 F .766(The second is to select portions of that line fo\
-r inclusion into the current one.)108 136.8 R .767
-(The line selected from the)5.767 F .254(history is the)108 148.8 R/F1
-10/Times-Italic@0 SF -.15(ev)2.754 G(ent).15 E F0 2.753(,a)C .253
-(nd the portions of that line that are acted upon are)-2.753 F F1(wor)
-2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F1(modi\214er)2.753 E(s)
--.1 E F0 .253(are a)2.753 F -.25(va)-.2 G(il-).25 E .538
-(able to manipulate the selected w)108 160.8 R 3.038(ords. The)-.1 F
-.538(line is brok)3.038 F .538(en into w)-.1 F .539(ords in the same f)
--.1 F .539(ashion as when reading)-.1 F .573(input, so that se)108 172.8
-R -.15(ve)-.25 G(ral).15 E F1(metac)3.073 E(har)-.15 E(acter)-.15 E F0
+r inclusion into the current one.)108 580.8 R .766
+(The line selected from the)5.766 F .253(history is the)108 592.8 R F3
+-.15(ev)2.753 G(ent).15 E F0 2.753(,a)C .253
+(nd the portions of that line that are acted upon are)-2.753 F F3(wor)
+2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F3(modi\214er)2.754 E(s)
+-.1 E F0 .254(are a)2.754 F -.25(va)-.2 G(il-).25 E .539
+(able to manipulate the selected w)108 604.8 R 3.039(ords. The)-.1 F
+.538(line is brok)3.038 F .538(en into w)-.1 F .538(ords in the same f)
+-.1 F .538(ashion as when reading)-.1 F .572(input, so that se)108 616.8
+R -.15(ve)-.25 G(ral).15 E F3(metac)3.072 E(har)-.15 E(acter)-.15 E F0
.572(-separated w)B .572(ords surrounded by quotes are considered one w)
--.1 F 3.072(ord. His-)-.1 F .355(tory e)108 184.8 R .355
+-.1 F 3.073(ord. His-)-.1 F .356(tory e)108 628.8 R .355
(xpansions are introduced by the appearance of the history e)-.15 F .355
-(xpansion character)-.15 F 2.855(,w)-.4 G .356(hich is)-2.855 F/F2 10
-/Times-Bold@0 SF(!)3.689 E F0 .356(by def)3.689 F(ault.)-.1 E .791
-(Only backslash \()108 196.8 R F2(\\).833 E F0 3.291(\)a).833 G .79
-(nd single quotes can quote the history e)-3.291 F .79
-(xpansion character)-.15 F 3.29(,b)-.4 G .79(ut the history e)-3.49 F
+(xpansion character)-.15 F 2.855(,w)-.4 G .355(hich is)-2.855 F F4(!)
+3.688 E F0 .355(by def)3.688 F(ault.)-.1 E .79(Only backslash \()108
+640.8 R F4(\\).833 E F0 3.29(\)a).833 G .79
+(nd single quotes can quote the history e)-3.29 F .79
+(xpansion character)-.15 F 3.291(,b)-.4 G .791(ut the history e)-3.491 F
(xpansion)-.15 E .789(character is also treated as quoted if it immedia\
-tely precedes the closing double quote in a double-quoted)108 208.8 R
-(string.)108 220.8 Q(Se)108 237.6 Q -.15(ve)-.25 G .03
+tely precedes the closing double quote in a double-quoted)108 652.8 R
+(string.)108 664.8 Q(Se)108 681.6 Q -.15(ve)-.25 G .03
(ral characters inhibit history e).15 F .03
(xpansion if found immediately follo)-.15 F .03(wing the history e)-.25
-F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 249.6 T
-3.162(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 G 3.162(su)-3.162 G
+F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 693.6 T
+3.163(ni).25 G 3.163(fi)-3.163 G 3.162(ti)-3.163 G 3.162(su)-3.162 G
.662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and)
--.25 F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2
-(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.163 E
-F0(will also inhibit e)108 261.6 Q(xpansion.)-.15 E(Se)108 278.4 Q -.15
-(ve)-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E
-F0 -.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109
-(vior of history e)-.2 F(xpansion.)-.15 E .231(If the)108 290.4 R F2
-(histv)2.731 E(erify)-.1 E F0 .231
-(shell option is enabled \(see the description of the)2.731 F F2(shopt)
-2.731 E F0 -.2(bu)2.731 G .231(iltin belo).2 F .231(w\), and)-.25 F F2
--.18(re)2.731 G(adline).18 E F0 .232(is be-)2.732 F .449(ing used, hist\
-ory substitutions are not immediately passed to the shell parser)108
-302.4 R 5.449(.I)-.55 G .448(nstead, the e)-5.449 F .448
-(xpanded line is)-.15 F 2.228(reloaded into the)108 314.4 R F2 -.18(re)
-4.728 G(adline).18 E F0 2.228(editing b)4.728 F(uf)-.2 E 2.228
-(fer for further modi\214cation.)-.25 F(If)7.228 E F2 -.18(re)4.728 G
-(adline).18 E F0 2.228(is being used, and the)4.728 F F2(histr)108 326.4
-Q(eedit)-.18 E F0 1.202(shell option is enabled, a f)3.702 F 1.202
-(ailed history substitution will be reloaded into the)-.1 F F2 -.18(re)
-3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 338.4 S -.25(ff).2 G
-.303(er for correction.).25 F(The)5.303 E 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
+-.25 F F4(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F4
+(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F4(\()3.162 E
+F0(will also inhibit e)108 705.6 Q(xpansion.)-.15 E(Se)108 722.4 Q -.15
+(ve)-.25 G .109(ral shell options settable with the).15 F F4(shopt)2.609
+E F0 -.2(bu)2.609 G .11(iltin may be used to tailor the beha).2 F .11
+(vior of history e)-.2 F(xpansion.)-.15 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(57)185.115 E 0 Cg EP
+%%Page: 58 58
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .232(If the)108 84
+R/F1 10/Times-Bold@0 SF(histv)2.732 E(erify)-.1 E F0 .231
+(shell option is enabled \(see the description of the)2.731 F F1(shopt)
+2.731 E F0 -.2(bu)2.731 G .231(iltin belo).2 F .231(w\), and)-.25 F F1
+-.18(re)2.731 G(adline).18 E F0 .231(is be-)2.731 F .449(ing used, hist\
+ory substitutions are not immediately passed to the shell parser)108 96
+R 5.449(.I)-.55 G .449(nstead, the e)-5.449 F .449(xpanded line is)-.15
+F 2.228(reloaded into the)108 108 R F1 -.18(re)4.728 G(adline).18 E F0
+2.228(editing b)4.728 F(uf)-.2 E 2.228(fer for further modi\214cation.)
+-.25 F(If)7.228 E F1 -.18(re)4.728 G(adline).18 E F0 2.228
+(is being used, and the)4.728 F F1(histr)108 120 Q(eedit)-.18 E F0 1.202
+(shell option is enabled, a f)3.702 F 1.202
+(ailed history substitution will be reloaded into the)-.1 F F1 -.18(re)
+3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 132 S -.25(ff).2 G
+.304(er for correction.).25 F(The)5.304 E F1<ad70>2.804 E F0 .304
+(option to the)2.804 F F1(history)2.804 E F0 -.2(bu)2.804 G .303
(iltin command may be used to see what a history e).2 F(x-)-.15 E .52
-(pansion will do before using it.)108 350.4 R(The)5.52 E 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
+(pansion will do before using it.)108 144 R(The)5.52 E F1<ad73>3.02 E F0
+.52(option to the)3.02 F F1(history)3.02 E F0 -.2(bu)3.02 G .52
(iltin may be used to add commands to the).2 F
-(end of the history list without actually e)108 362.4 Q -.15(xe)-.15 G
+(end of the history list without actually e)108 156 Q -.15(xe)-.15 G
(cuting them, so that the).15 E 2.5(ya)-.15 G(re a)-2.5 E -.25(va)-.2 G
-(ilable for subsequent recall.).25 E 1.108(The shell allo)108 379.2 R
+(ilable for subsequent recall.).25 E 1.109(The shell allo)108 172.8 R
1.108(ws control of the v)-.25 F 1.108
(arious characters used by the history e)-.25 F 1.108
-(xpansion mechanism \(see the de-)-.15 F .163(scription of)108 391.2 R
-F2(histchars)2.663 E F0(abo)2.663 E .463 -.15(ve u)-.15 H(nder).15 E F2
-.163(Shell V)2.663 F(ariables)-.92 E F0 2.663(\). The)B .162
+(xpansion mechanism \(see the de-)-.15 F .162(scription of)108 184.8 R
+F1(histchars)2.662 E F0(abo)2.662 E .462 -.15(ve u)-.15 H(nder).15 E F1
+.163(Shell V)2.662 F(ariables)-.92 E F0 2.663(\). The)B .163
(shell uses the history comment character to mark)2.663 F
-(history timestamps when writing the history \214le.)108 403.2 Q F2(Ev)
-87 420 Q(ent Designators)-.1 E F0 .204(An e)108 432 R -.15(ve)-.25 G
+(history timestamps when writing the history \214le.)108 196.8 Q F1(Ev)
+87 213.6 Q(ent Designators)-.1 E F0 .205(An e)108 225.6 R -.15(ve)-.25 G
.204(nt designator is a reference to a command line entry in the histor\
-y list.).15 F .205(Unless the reference is abso-)5.204 F(lute, e)108 444
-Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5(ot).15 G
-(he current position in the history list.)-2.5 E F2(!)108 460.8 Q F0
-1.608(Start a history substitution, e)144 460.8 R 1.608
-(xcept when follo)-.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 4.107
-(,n)C -.25(ew)-4.107 G 1.607(line, carriage return, = or \().25 F
-(\(when the)144 472.8 Q F2(extglob)2.5 E F0
-(shell option is enabled using the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G
-(iltin\).).2 E F2(!)108 484.8 Q F1(n)A F0(Refer to command line)144
-484.8 Q F1(n)2.86 E F0(.).24 E F2<21ad>108 496.8 Q F1(n)A F0
-(Refer to the current command minus)144 496.8 Q F1(n)2.86 E F0(.).24 E
-F2(!!)108 508.8 Q F0(Refer to the pre)144 508.8 Q(vious command.)-.25 E
-(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 520.8 Q F1(string)
-A F0 .865(Refer to the most recent command preceding the current positi\
-on in the history list starting with)144 520.8 R F1(string)144.34 532.8
-Q F0(.).22 E F2(!?)108 544.8 Q F1(string)A F2([?])A F0 1.503(Refer to t\
-he most recent command preceding the current position in the history li\
-st containing)144 556.8 R F1(string)144.34 568.8 Q F0 5.496(.T).22 G
-.496(he trailing)-5.496 F F2(?)2.996 E F0 .496(may be omitted if)2.996 F
-F1(string)3.336 E F0 .497(is follo)3.216 F .497(wed immediately by a ne)
--.25 F 2.997(wline. If)-.25 F F1(string)2.997 E F0(is)2.997 E .391(miss\
-ing, the string from the most recent search is used; it is an error if \
-there is no pre)144 580.8 R .39(vious search)-.25 F(string.)144 592.8 Q
-/F3 12/Times-Bold@0 SF(^)108 609.8 Q F1(string1)-5 I F3(^)5 I F1
-(string2)-5 I F3(^)5 I F0 .752(Quick substitution.)144 616.8 R .752
-(Repeat the pre)5.752 F .753(vious command, replacing)-.25 F F1(string1)
-3.593 E F0(with)3.253 E F1(string2)3.593 E F0 5.753(.E).02 G(qui)-5.753
-E -.25(va)-.25 G .753(lent to).25 F -.74(``)144 628.8 S(!!:s).74 E/F4 12
-/Times-Roman@0 SF(^)5 I F1(string1)-5 I F4(^)5 I F1(string2)-5 I F4(^)5
-I F0 1.48 -.74('' \()-5 L(see).74 E F2(Modi\214ers)2.5 E F0(belo)2.5 E
-(w\).)-.25 E F2(!#)108 640.8 Q F0(The entire command line typed so f)144
-640.8 Q(ar)-.1 E(.)-.55 E F2 -.75(Wo)87 657.6 S(rd Designators).75 E F0
--.8(Wo)108 669.6 S 1.314(rd designators are used to select desired w).8
-F 1.314(ords from the e)-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)
-3.814 E F0 1.313(separates the e)3.813 F -.15(ve)-.25 G 1.313
-(nt speci\214cation).15 F .529(from the w)108 681.6 R .529
-(ord designator)-.1 F 5.529(.I)-.55 G 3.029(tm)-5.529 G .529
-(ay be omitted if the w)-3.029 F .529(ord designator be)-.1 F .529
-(gins with a)-.15 F F2(^)3.029 E F0(,)A F2($)3.029 E F0(,)A F2(*)3.029 E
-F0(,)A 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
+y list.).15 F .204(Unless the reference is abso-)5.204 F(lute, e)108
+237.6 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5(ot)
+.15 G(he current position in the history list.)-2.5 E F1(!)108 254.4 Q
+F0 1.607(Start a history substitution, e)144 254.4 R 1.607
+(xcept when follo)-.15 F 1.607(wed by a)-.25 F F1(blank)4.107 E F0 4.107
+(,n)C -.25(ew)-4.107 G 1.608(line, carriage return, = or \().25 F
+(\(when the)144 266.4 Q F1(extglob)2.5 E F0
+(shell option is enabled using the)2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G
+(iltin\).).2 E F1(!)108 278.4 Q/F2 10/Times-Italic@0 SF(n)A F0
+(Refer to command line)144 278.4 Q F2(n)2.86 E F0(.).24 E F1<21ad>108
+290.4 Q F2(n)A F0(Refer to the current command minus)144 290.4 Q F2(n)
+2.86 E F0(.).24 E F1(!!)108 302.4 Q F0(Refer to the pre)144 302.4 Q
+(vious command.)-.25 E(This is a synon)5 E(ym for `!\2551'.)-.15 E F1(!)
+108 314.4 Q F2(string)A F0 .865(Refer to the most recent command preced\
+ing the current position in the history list starting with)144 314.4 R
+F2(string)144.34 326.4 Q F0(.).22 E F1(!?)108 338.4 Q F2(string)A F1
+([?])A F0 1.503(Refer to the most recent command preceding the current \
+position in the history list containing)144 350.4 R F2(string)144.34
+362.4 Q F0 5.497(.T).22 G .497(he trailing)-5.497 F F1(?)2.997 E F0 .497
+(may be omitted if)2.997 F F2(string)3.337 E F0 .496(is follo)3.216 F
+.496(wed immediately by a ne)-.25 F 2.996(wline. If)-.25 F F2(string)
+2.996 E F0(is)2.996 E .39(missing, the string from the most recent sear\
+ch is used; it is an error if there is no pre)144 374.4 R .391
+(vious search)-.25 F(string.)144 386.4 Q/F3 12/Times-Bold@0 SF(^)108
+403.4 Q F2(string1)-5 I F3(^)5 I F2(string2)-5 I F3(^)5 I F0 .753
+(Quick substitution.)144 410.4 R .753(Repeat the pre)5.753 F .753
+(vious command, replacing)-.25 F F2(string1)3.593 E F0(with)3.253 E F2
+(string2)3.592 E F0 5.752(.E).02 G(qui)-5.752 E -.25(va)-.25 G .752
+(lent to).25 F -.74(``)144 422.4 S(!!:s).74 E/F4 12/Times-Roman@0 SF(^)5
+I F2(string1)-5 I F4(^)5 I F2(string2)-5 I F4(^)5 I F0 1.48 -.74('' \()
+-5 L(see).74 E F1(Modi\214ers)2.5 E F0(belo)2.5 E(w\).)-.25 E F1(!#)108
+434.4 Q F0(The entire command line typed so f)144 434.4 Q(ar)-.1 E(.)
+-.55 E F1 -.75(Wo)87 451.2 S(rd Designators).75 E F0 -.8(Wo)108 463.2 S
+1.313(rd designators are used to select desired w).8 F 1.314
+(ords from the e)-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F1(:)3.814 E F0
+1.314(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation)
+.15 F .53(from the w)108 475.2 R .529(ord designator)-.1 F 5.529(.I)-.55
+G 3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529
+(ord designator be)-.1 F .529(gins with a)-.15 F F1(^)3.029 E F0(,)A F1
+($)3.029 E F0(,)A F1(*)3.029 E F0(,)A 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 .515
+(are numbered from the be)108 487.2 R .516
(ginning of the line, with the \214rst w)-.15 F .516
-(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)5.515 G .515(rds are in-)
-.8 F(serted into the current line separated by single spaces.)108 705.6
-Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(55)190.395 E 0 Cg EP
-%%Page: 56 56
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF 2.5(0\()108 84 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 96 Q 2.5
-(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E/F2
-10/Times-Italic@0 SF(n)108.36 108 Q F0(The)144 108 Q F2(n)2.5 E F0(th w)
-A(ord.)-.1 E F1(^)108 120 Q F0(The \214rst ar)144 120 Q 2.5
-(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1 E F1($)108 132 Q F0 .063
-(The last w)144 132 R 2.563(ord. This)-.1 F .063(is usually the last ar)
-2.563 F .064(gument, b)-.18 F .064(ut will e)-.2 F .064
-(xpand to the zeroth w)-.15 F .064(ord if there is only)-.1 F(one w)144
-144 Q(ord in the line.)-.1 E F1(%)108 156 Q F0 1.42(The \214rst w)144
-156 R 1.42(ord matched by the most recent `?)-.1 F F2(string)A F0 1.419
-(?' search, if the search string be)B 1.419(gins with a)-.15 F
-(character that is part of a w)144 168 Q(ord.)-.1 E F2(x)108.77 180 Q F1
-<ad>A F2(y)A F0 2.5(Ar)144 180 S(ange of w)-2.5 E(ords; `\255)-.1 E F2
+(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)5.516 G .516(rds are in-)
+.8 F(serted into the current line separated by single spaces.)108 499.2
+Q F1 2.5(0\()108 516 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 528 Q
+2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E
+F2(n)108.36 540 Q F0(The)144 540 Q F2(n)2.5 E F0(th w)A(ord.)-.1 E F1(^)
+108 552 Q F0(The \214rst ar)144 552 Q 2.5(gument. That)-.18 F(is, w)2.5
+E(ord 1.)-.1 E F1($)108 564 Q F0 .064(The last w)144 564 R 2.564
+(ord. This)-.1 F .064(is usually the last ar)2.564 F .064(gument, b)-.18
+F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F .063
+(ord if there is only)-.1 F(one w)144 576 Q(ord in the line.)-.1 E F1(%)
+108 588 Q F0 1.419(The \214rst w)144 588 R 1.419
+(ord matched by the most recent `?)-.1 F F2(string)A F0 1.42
+(?' search, if the search string be)B 1.42(gins with a)-.15 F
+(character that is part of a w)144 600 Q(ord.)-.1 E F2(x)108.77 612 Q F1
+<ad>A F2(y)A F0 2.5(Ar)144 612 S(ange of w)-2.5 E(ords; `\255)-.1 E F2
(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)
-108 192 Q F0 .315(All of the w)144 192 R .315(ords b)-.1 F .315
+108 624 Q F0 .316(All of the w)144 624 R .316(ords b)-.1 F .316
(ut the zeroth.)-.2 F .315(This is a synon)5.315 F .315(ym for `)-.15 F
F2(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*)
-2.816 E F0 .316(if there is)2.816 F(just one w)144 204 Q(ord in the e)
+2.815 E F0 .315(if there is)2.815 F(just one w)144 636 Q(ord in the e)
-.1 E -.15(ve)-.25 G(nt; the empty string is returned in that case.).15
-E F1(x*)108 216 Q F0(Abbre)144 216 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)
-A F1<78ad>108 228 Q F0(Abbre)144 228 Q(viates)-.25 E F2(x\255$)2.5 E F0
+E F1(x*)108 648 Q F0(Abbre)144 648 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)
+A F1<78ad>108 660 Q F0(Abbre)144 660 Q(viates)-.25 E F2(x\255$)2.5 E F0
(lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E
2.5(ord. If)-.1 F F1(x)2.5 E F0(is missing, it def)2.5 E(aults to 0.)-.1
-E(If a w)108 244.8 Q(ord designator is supplied without an e)-.1 E -.15
+E(If a w)108 676.8 Q(ord designator is supplied without an e)-.1 E -.15
(ve)-.25 G(nt speci\214cation, the pre).15 E
(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1
-(Modi\214ers)87 261.6 Q F0 .184(After the optional w)108 273.6 R .184
-(ord designator)-.1 F 2.684(,t)-.4 G .183
-(here may appear a sequence of one or more of the follo)-2.684 F .183
-(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 285.6 Q
+(Modi\214ers)87 693.6 Q F0 .183(After the optional w)108 705.6 R .183
+(ord designator)-.1 F 2.683(,t)-.4 G .184
+(here may appear a sequence of one or more of the follo)-2.683 F .184
+(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 717.6 Q
(These modify)5 E 2.5(,o)-.65 G 2.5(re)-2.5 G(dit, the w)-2.5 E
(ord or w)-.1 E(ords selected from the history e)-.1 E -.15(ve)-.25 G
-(nt.).15 E F1(h)108 302.4 Q F0(Remo)144 302.4 Q .3 -.15(ve a t)-.15 H
+(nt.).15 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(58)185.115
+E 0 Cg EP
+%%Page: 59 59
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(h)108 84 Q F0(Remo)144 84 Q .3 -.15(ve a t)-.15 H
(railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t)
-108 314.4 Q F0(Remo)144 314.4 Q .3 -.15(ve a)-.15 H
+108 96 Q F0(Remo)144 96 Q .3 -.15(ve a)-.15 H
(ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r)
-108 326.4 Q F0(Remo)144 326.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E
-(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E
-(ving the basename.)-.2 E F1(e)108 338.4 Q F0(Remo)144 338.4 Q .3 -.15
-(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108
-350.4 Q F0(Print the ne)144 350.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E
-(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 362.4 Q F0
-(Quote the substituted w)144 362.4 Q
-(ords, escaping further substitutions.)-.1 E F1(x)108 374.4 Q F0 .385
-(Quote the substituted w)144 374.4 R .385(ords as with)-.1 F F1(q)2.885
-E F0 2.885(,b)C .386(ut break into w)-3.085 F .386(ords at)-.1 F F1
-(blanks)2.886 E F0 .386(and ne)2.886 F 2.886(wlines. The)-.25 F F1(q)
-2.886 E F0(and)2.886 E F1(x)2.886 E F0(modi\214ers are mutually e)144
-386.4 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;t).15 G
-(he last one supplied is used.)-2.5 E F1(s/)108 398.4 Q F2(old)A F1(/)A
-F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 410.4 Q F2(ne)3.329 E(w)-.15 E
-F0 .469(for the \214rst occurrence of)3.279 F F2(old)3.199 E F0 .469
+108 108 Q F0(Remo)144 108 Q .3 -.15(ve a t)-.15 H(railing suf).15 E
+(\214x of the form)-.25 E/F2 10/Times-Italic@0 SF(.xxx)2.5 E F0 2.5(,l)C
+(ea)-2.5 E(ving the basename.)-.2 E F1(e)108 120 Q F0(Remo)144 120 Q .3
+-.15(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1
+(p)108 132 Q F0(Print the ne)144 132 Q 2.5(wc)-.25 G(ommand b)-2.5 E
+(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 144 Q F0
+(Quote the substituted w)144 144 Q
+(ords, escaping further substitutions.)-.1 E F1(x)108 156 Q F0 .386
+(Quote the substituted w)144 156 R .386(ords as with)-.1 F F1(q)2.886 E
+F0 2.886(,b)C .386(ut break into w)-3.086 F .385(ords at)-.1 F F1
+(blanks)2.885 E F0 .385(and ne)2.885 F 2.885(wlines. The)-.25 F F1(q)
+2.885 E F0(and)2.885 E F1(x)2.885 E F0(modi\214ers are mutually e)144
+168 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;t).15 G
+(he last one supplied is used.)-2.5 E F1(s/)108 180 Q F2(old)A F1(/)A F2
+(ne)A(w)-.15 E F1(/)A F0(Substitute)144 192 Q F2(ne)3.328 E(w)-.15 E F0
+.469(for the \214rst occurrence of)3.278 F F2(old)3.199 E F0 .469
(in the e)3.739 F -.15(ve)-.25 G .469(nt line.).15 F(An)5.469 E 2.969
-(yc)-.15 G .469(haracter may be used as the)-2.969 F .953
-(delimiter in place of /.)144 422.4 R .953
+(yc)-.15 G .469(haracter may be used as the)-2.969 F .954
+(delimiter in place of /.)144 204 R .953
(The \214nal delimiter is optional if it is the last character of the e)
-5.953 F -.15(ve)-.25 G .954(nt line.).15 F .131
-(The delimiter may be quoted in)144 434.4 R F2(old)2.861 E F0(and)3.401
-E F2(ne)2.991 E(w)-.15 E F0 .131(with a single backslash.)2.941 F .131
+5.953 F -.15(ve)-.25 G .953(nt line.).15 F .131
+(The delimiter may be quoted in)144 216 R F2(old)2.861 E F0(and)3.401 E
+F2(ne)2.991 E(w)-.15 E F0 .131(with a single backslash.)2.941 F .131
(If & appears in)5.131 F F2(ne)2.991 E(w)-.15 E F0 2.631(,i).31 G 2.631
-(ti)-2.631 G 2.631(sr)-2.631 G(e-)-2.631 E .619(placed by)144 446.4 R F2
+(ti)-2.631 G 2.631(sr)-2.631 G(e-)-2.631 E .62(placed by)144 228 R F2
(old)3.349 E F0 5.619(.A).77 G .619(single backslash will quote the &.)
-2.5 F(If)5.619 E F2(old)3.349 E F0 .619(is null, it is set to the last)
-3.889 F F2(old)3.349 E F0(substi-)3.89 E .487(tuted, or)144 458.4 R
-2.987(,i)-.4 G 2.987(fn)-2.987 G 2.987(op)-2.987 G(re)-2.987 E .486
+3.889 F F2(old)3.349 E F0(substi-)3.889 E .486(tuted, or)144 240 R 2.986
+(,i)-.4 G 2.986(fn)-2.986 G 2.986(op)-2.986 G(re)-2.986 E .486
(vious history substitutions took place, the last)-.25 F F2(string)3.326
-E F0 .486(in a)3.206 F F1(!?)2.986 E F2(string)A F1([?])A F0 2.986
-(search. If)5.486 F F2(ne)144.36 470.4 Q(w)-.15 E F0
+E F0 .487(in a)3.206 F F1(!?)2.987 E F2(string)A F1([?])A F0 2.987
+(search. If)5.487 F F2(ne)144.36 252 Q(w)-.15 E F0
(is null, each matching)2.81 E F2(old)2.73 E F0(is deleted.)3.27 E F1(&)
-108 482.4 Q F0(Repeat the pre)144 482.4 Q(vious substitution.)-.25 E F1
-(g)108 494.4 Q F0 .397(Cause changes to be applied o)144 494.4 R -.15
-(ve)-.15 G 2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398
-(nt line.).15 F .398(This is used in conjunction with `)5.398 F F1(:s)A
-F0 2.898('\()C(e.g.,)-2.898 E(`)144 506.4 Q F1(:gs/)A F2(old)A F1(/)A F2
-(ne)A(w)-.15 E F1(/)A F0 .351('\) or `)B F1(:&)A F0 2.851('. If)B .351
-(used with `)2.851 F F1(:s)A F0 .351(', an)B 2.851(yd)-.15 G .35
-(elimiter can be used in place of /, and the \214nal de-)-2.851 F
-(limiter is optional if it is the last character of the e)144 518.4 Q
--.15(ve)-.25 G(nt line.).15 E(An)5 E F1(a)2.5 E F0
-(may be used as a synon)2.5 E(ym for)-.15 E F1(g)2.5 E F0(.)A F1(G)108
-530.4 Q F0(Apply the follo)144 530.4 Q(wing `)-.25 E F1(s)A F0 2.5('o)C
-2.5(r`)-2.5 G F1(&)-2.5 E F0 2.5('m)C(odi\214er once to each w)-2.5 E
-(ord in the e)-.1 E -.15(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0
-SF(SHELL B)72 547.2 Q(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .062
-(Unless otherwise noted, each b)108 559.2 R .062(uiltin command documen\
-ted in this section as accepting options preceded by)-.2 F 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
+108 264 Q F0(Repeat the pre)144 264 Q(vious substitution.)-.25 E F1(g)
+108 276 Q F0 .398(Cause changes to be applied o)144 276 R -.15(ve)-.15 G
+2.898(rt).15 G .398(he entire e)-2.898 F -.15(ve)-.25 G .398(nt line.)
+.15 F .397(This is used in conjunction with `)5.398 F F1(:s)A F0 2.897
+('\()C(e.g.,)-2.897 E(`)144 288 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w)
+-.15 E F1(/)A F0 .35('\) or `)B F1(:&)A F0 2.85('. If)B .35(used with `)
+2.85 F F1(:s)A F0 .35(', an)B 2.85(yd)-.15 G .351
+(elimiter can be used in place of /, and the \214nal de-)-2.85 F
+(limiter is optional if it is the last character of the e)144 300 Q -.15
+(ve)-.25 G(nt line.).15 E(An)5 E F1(a)2.5 E F0(may be used as a synon)
+2.5 E(ym for)-.15 E F1(g)2.5 E F0(.)A F1(G)108 312 Q F0(Apply the follo)
+144 312 Q(wing `)-.25 E F1(s)A F0 2.5('o)C 2.5(r`)-2.5 G F1(&)-2.5 E F0
+2.5('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25
+G(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 328.8 Q(UIL)-.11 E
+(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 340.8
+R .062(uiltin command documented in this section as accepting options p\
+receded by)-.2 F F1<ad>108 352.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
F1(test)3.077 E F0(/)A F1([)A F0 -.2(bu)3.077 G .577
-(iltins do not accept options).2 F .461(and do not treat)108 583.2 R F1
+(iltins do not accept options).2 F .462(and do not treat)108 364.8 R F1
<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.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
+2.961 G .461(iltins accept and).2 F .26(process ar)108 376.8 R .26
+(guments be)-.18 F .26(ginning with)-.15 F 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 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>
+108 388.8 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
+400.8 Q -.15(ve)-.25 G(nt this interpretation.).15 E F1(:)108 418.8 Q F0
+([)2.5 E F2(ar)A(guments)-.37 E F0(])A .451(No ef)144 430.8 R .451
(fect; the command does nothing be)-.25 F .452(yond e)-.15 F(xpanding)
--.15 E F2(ar)3.282 E(guments)-.37 E F0 .451(and performing an)3.221 F
-2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. The)144 661.2 R
-(return status is zero.)2.5 E F1(.)110.5 678 Q F2(\214lename)6.666 E F0
-([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 690 Q(ce)-.18 E F2
-(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02
-(Read and e)144 702 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2
+-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an)3.222 F
+2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144 442.8 R
+(return status is zero.)2.5 E F1(.)110.5 459.6 Q F2(\214lename)6.666 E
+F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 471.6 Q(ce)-.18 E
+F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02
+(Read and e)144 483.6 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2
(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02
-(vironment and return the e)-.4 F(xit)-.15 E 1.331
-(status of the last command e)144 714 R -.15(xe)-.15 G 1.331(cuted from)
-.15 F F2(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331 E F2(\214lename)
-5.741 E F0 1.33(does not contain a slash, \214le-)4.011 F .488(names in)
-144 726 R/F4 9/Times-Bold@0 SF -.666(PA)2.988 G(TH)-.189 E F0 .488
-(are used to \214nd the directory containing)2.738 F F2(\214lename)4.899
-E F0 5.489(.T).18 G .489(he \214le searched for in)-5.489 F F4 -.666(PA)
-2.989 G(TH)-.189 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
-(56)190.395 E 0 Cg EP
-%%Page: 57 57
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .833
-(need not be e)144 84 R -.15(xe)-.15 G 3.333(cutable. When).15 F/F1 10
-/Times-Bold@0 SF(bash)3.333 E F0 .832(is not in)3.333 F/F2 10
-/Times-Italic@0 SF .832(posix mode)3.332 F F0 3.332(,t)C .832
-(he current directory is searched if no)-3.332 F .981
-(\214le is found in)144 96 R/F3 9/Times-Bold@0 SF -.666(PA)3.481 G(TH)
--.189 E/F4 9/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E
-(cepath)-.18 E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)
-3.481 G .981(iltin command is turned of).2 F .982(f, the)-.25 F F3 -.666
-(PA)144 108 S(TH)-.189 E F0 .112(is not searched.)2.363 F .112(If an)
-5.112 F(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)
-2.612 F 2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612
-F F2(\214lename)144 120 Q F0 .485(is e)2.985 F -.15(xe)-.15 G 2.985
-(cuted. Otherwise).15 F .485(the positional parameters are unchanged.)
-2.985 F .485(If the)5.485 F 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.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
+(vironment and return the e)-.4 F(xit)-.15 E 1.33
+(status of the last command e)144 495.6 R -.15(xe)-.15 G 1.331
+(cuted from).15 F F2(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331 E F2
+(\214lename)5.741 E F0 1.331(does not contain a slash, \214le-)4.011 F
+.023(names in)144 507.6 R/F4 9/Times-Bold@0 SF -.666(PA)2.523 G(TH)-.189
+E F0 .022(are used to \214nd the directory containing)2.273 F F2
+(\214lename)4.432 E F0 2.522(,b).18 G(ut)-2.722 E F2(\214lename)2.522 E
+F0 .022(does not need to be)2.522 F -.15(exe)144 519.6 S 3.86
+(cutable. The).15 F 1.36(\214le searched for in)3.86 F F4 -.666(PA)3.86
+G(TH)-.189 E F0 1.361(need not be e)3.61 F -.15(xe)-.15 G 3.861
+(cutable. When).15 F F1(bash)3.861 E F0 1.361(is not in)3.861 F F2
+(posix)3.861 E(mode)144 531.6 Q F0 2.772(,i)C 2.772(ts)-2.772 G .272
+(earches the current directory if no \214le is found in)-2.772 F F4
+-.666(PA)2.771 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .271(If the)
+4.771 F F1(sour)2.771 E(cepath)-.18 E F0 .271(option to the)2.771 F F1
+(shopt)144 543.6 Q F0 -.2(bu)3.659 G 1.159(iltin command is turned of).2
+F 1.159(f, the)-.25 F F4 -.666(PA)3.659 G(TH)-.189 E F0 1.159
+(is not searched.)3.409 F 1.16(If an)6.159 F(y)-.15 E F2(ar)3.66 E
+(guments)-.37 E F0 1.16(are supplied,)3.66 F(the)144 555.6 Q 3.692(yb)
+-.15 G 1.192(ecome the positional parameters when)-3.692 F F2
+(\214lename)3.692 E F0 1.192(is e)3.692 F -.15(xe)-.15 G 3.691
+(cuted. Otherwise).15 F 1.191(the positional pa-)3.691 F .82
+(rameters are unchanged.)144 567.6 R .82(If the)5.82 F F1<ad54>3.32 E F0
+.82(option is enabled,)3.32 F F1(.)3.32 E F0 .82(inherits an)3.32 F 3.32
+(yt)-.15 G .82(rap on)-3.32 F F1(DEB)3.32 E(UG)-.1 E F0 3.32(;i)C 3.32
+(fi)-3.32 G 3.32(ti)-3.32 G 3.32(sn)-3.32 G(ot,)-3.32 E(an)144 579.6 Q
+(y)-.15 E F1(DEB)3.323 E(UG)-.1 E F0 .823(trap string is sa)3.323 F -.15
+(ve)-.2 G 3.322(da).15 G .822(nd restored around the call to)-3.322 F F1
+(.)3.322 E F0 3.322(,a)C(nd)-3.322 E F1(.)3.322 E F0 .822(unsets the)
+3.322 F F1(DEB)3.322 E(UG)-.1 E F0(trap)3.322 E .226(while it e)144
+591.6 R -.15(xe)-.15 G 2.726(cutes. If).15 F F1<ad54>2.727 E F0 .227
+(is not set, and the sourced \214le changes the)2.727 F F1(DEB)2.727 E
+(UG)-.1 E F0 .227(trap, the ne)2.727 F 2.727(wv)-.25 G .227(alue is)
+-2.977 F .891(retained when)144 603.6 R F1(.)3.391 E F0 3.391
+(completes. The)3.391 F .891
+(return status is the status of the last command e)3.391 F .89
+(xited within the)-.15 F(script \(0 if no commands are e)144 615.6 Q
+-.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E
+F0(is not found or cannot be read.)2.68 E F1(alias)108 632.4 Q F0([)2.5
+E 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 644.4 Q F0 2.724(with no ar)5.224 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.224 E
-F2(name)144 220.8 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F
+(option prints the list of aliases in the form)5.224 F F1(alias)5.225 E
+F2(name)144 656.4 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F
.58(When ar)5.58 F .58
(guments are supplied, an alias is de\214ned for each)-.18 F F2(name)
-3.08 E F0(whose)144 232.8 Q F2(value)2.509 E F0 .009(is gi)2.509 F -.15
+3.08 E F0(whose)144 668.4 Q F2(value)2.508 E F0 .009(is gi)2.508 F -.15
(ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F2(value)
2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009
-(ord to be check)-.1 F .008(ed for alias substi-)-.1 F .579
-(tution when the alias is e)144 244.8 R 3.079(xpanded. F)-.15 F .579
+(ord to be check)-.1 F .009(ed for alias substi-)-.1 F .579
+(tution when the alias is e)144 680.4 R 3.079(xpanded. F)-.15 F .579
(or each)-.15 F F2(name)3.079 E F0 .579(in the ar)3.079 F .579
-(gument list for which no)-.18 F F2(value)3.079 E F0 .579(is sup-)3.079
-F 1.314(plied, the name and v)144 256.8 R 1.314
+(gument list for which no)-.18 F F2(value)3.079 E F0 .578(is sup-)3.078
+F 1.313(plied, the name and v)144 692.4 R 1.314
(alue of the alias is printed.)-.25 F F1(Alias)6.314 E F0 1.314
-(returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F
--.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E
-(which no alias has been de\214ned.)144 268.8 Q F1(bg)108 285.6 Q F0([)
-2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144
-297.6 R F2(jobspec)3.244 E F0 .745
-(in the background, as if it had been started with)3.244 F F1(&)3.245 E
-F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 309.6 Q F0 .672
-(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the)
--3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1
-(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418
-(when job control is disabled or)144 321.6 R 2.919(,w)-.4 G .419
-(hen run with job control enabled, an)-2.919 F 2.919(ys)-.15 G
-(peci\214ed)-2.919 E F2(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G
-(ot)-2.919 E(found or w)144 333.6 Q(as started without job control.)-.1
-E F1(bind)108 350.4 Q F0([)2.5 E 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
+(returns true unless a)3.814 F F2(name)3.814 E F0 1.314(is gi)3.814 F
+-.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E
+(which no alias has been de\214ned.)144 704.4 Q(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(59)185.115 E 0 Cg EP
+%%Page: 60 60
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(bg)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(jobspec)A F0(...])2.5
+E .745(Resume each suspended job)144 96 R F2(jobspec)3.245 E F0 .745
+(in the background, as if it had been started with)3.245 F F1(&)3.244 E
+F0 5.744(.I)C(f)-5.744 E F2(job-)4.984 E(spec)144 108 Q F0 .671
+(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the)
+-3.171 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1
+(bg)5.672 E F2(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419
+(when job control is disabled or)144 120 R 2.919(,w)-.4 G .419
+(hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G
+(peci\214ed)-2.918 E F2(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G
+(ot)-2.918 E(found or w)144 132 Q(as started without job control.)-.1 E
+F1(bind)108 148.8 Q F0([)2.5 E 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 160.8 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 374.4 Q F0
+F1<ad72>-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 172.8 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 386.4 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)2.5
+(\214lename)2.5 E F1(bind)108 184.8 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 398.4 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)
+(shell\255command)A F1(bind)108 196.8 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 410.4 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)
+(function\255name)A F1(bind)108 208.8 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 .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
-470.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 482.4 Q F2 -.1(ke)5.158 G
-(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af)
-.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E
-F2 -.1(ke)180 494.4 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193
+(adline\255command).37 E F1(bind)108 220.8 Q F2 -.37(re)2.5 G
+(adline-command-line).37 E F0 .238(Display current)144 232.8 R F1 -.18
+(re)2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239
+(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239
+(equence to a).15 F F1 -.18(re)2.739 G(adline).18 E F0 .239(function or)
+2.739 F .04(macro, or set a)144 244.8 R F1 -.18(re)2.54 G(adline).18 E
+F0 -.25(va)2.54 G 2.54(riable. Each).25 F .039(non-option ar)2.54 F .039
+(gument is a command as it w)-.18 F .039(ould appear in a)-.1 F F1 -.18
+(re)144 256.8 S(adline).18 E F0 .182(initialization \214le such as)2.681
+F F2(.inputr)2.912 E(c)-.37 E F0 2.682(,b).31 G .182
+(ut each binding or command must be passed as a sep-)-2.882 F 1.907
+(arate ar)144 268.8 R 1.907
+(gument; e.g., '"\\C\255x\\C\255r": re\255read\255init\255\214le'.)-.18
+F 1.907(Options, if supplied, ha)6.907 F 2.207 -.15(ve t)-.2 H 1.907
+(he follo).15 F(wing)-.25 E(meanings:)144 280.8 Q F1<ad6d>144 292.8 Q F2
+-.1(ke)2.5 G(ymap)-.2 E F0(Use)180 304.8 Q F2 -.1(ke)5.158 G(ymap)-.2 E
+F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af).15 F 2.659
+(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E F2 -.1(ke)
+180 316.8 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193
(emacs, emacs\255standar)5.693 F 3.192
(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E
-(vi\255command)180 506.4 Q F0 4.089(,a)C(nd)-4.089 E F2(vi\255insert)
+(vi\255command)180 328.8 Q F0 4.089(,a)C(nd)-4.089 E F2(vi\255insert)
4.379 E F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G
1.589(lent to).25 F F2(vi\255command)4.089 E F0(\()4.089 E F2(vi\255mo)A
-(ve)-.1 E F0 1.59(is also a syn-)4.089 F(on)180 518.4 Q(ym\);)-.15 E F2
+(ve)-.1 E F0 1.59(is also a syn-)4.089 F(on)180 340.8 Q(ym\);)-.15 E F2
(emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2
-(emacs\255standar)2.5 E(d)-.37 E F0(.)A 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)
+(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1<ad6c>144 352.8 Q F0
+(List the names of all)180 352.8 Q F1 -.18(re)2.5 G(adline).18 E F0
+(functions.)2.5 E F1<ad70>144 364.8 Q F0(Display)180 364.8 Q F1 -.18(re)
2.5 G(adline).18 E F0(function names and bindings in such a w)2.5 E
-(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E 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
+(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1<ad50>144 376.8
+Q F0(List current)180 376.8 Q F1 -.18(re)2.5 G(adline).18 E F0
+(function names and bindings.)2.5 E F1<ad73>144 388.8 Q F0(Display)180
+388.8 Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05
G 1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo)
--.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 578.4 S 2.5(yt).1 G
-(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E 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
+-.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 400.8 S 2.5(yt).1 G
+(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1<ad53>144 412.8 Q
+F0(Display)180 412.8 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5
(ys)-.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo)
--.15 G(utput.)-2.5 E F1<ad76>144 602.4 Q F0(Display)180 602.4 Q F1 -.18
+-.15 G(utput.)-2.5 E F1<ad76>144 424.8 Q F0(Display)180 424.8 Q F1 -.18
(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G
-(an be re-read.)-2.5 E F1<ad56>144 614.4 Q F0(List current)180 614.4 Q
+(an be re-read.)-2.5 E F1<ad56>144 436.8 Q F0(List current)180 436.8 Q
F1 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
-(alues.)-.25 E 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
+(alues.)-.25 E F1<ad66>144 448.8 Q F2(\214lename)2.5 E F0(Read k)180
+460.8 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A
+F1<ad71>144 472.8 Q F2(function)2.5 E F0(Query about which k)180 484.8 Q
-.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H
-(he named).1 E F2(function)2.5 E F0(.)A 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
+(he named).1 E F2(function)2.5 E F0(.)A F1<ad75>144 496.8 Q F2(function)
+2.5 E F0(Unbind all k)180 508.8 Q -.15(ey)-.1 G 2.5(sb).15 G
+(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1<ad72>144 520.8 Q
+F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 532.8 Q .3 -.15(ve a)-.15 H .3
-.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0
-(.)A(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(57)190.395 E 0 Cg
-EP
-%%Page: 58 58
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-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
+(.)A F1<ad78>144 544.8 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2
+(shell\255command)A F0(Cause)180 556.8 Q F2(shell\255command)4.325 E F0
1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve)
-.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F
-(When)6.825 E F2(shell\255com-)4.325 E(mand)180 108 Q F0 1.765(is e)
+(When)6.825 E F2(shell\255com-)4.325 E(mand)180 568.8 Q F0 1.765(is e)
4.265 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9
/Times-Bold@0 SF(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765
-(riable to the contents of the).25 F F1 -.18(re)180 120 S(adline).18 E
+(riable to the contents of the).25 F F1 -.18(re)180 580.8 S(adline).18 E
F0 .375(line b)2.874 F(uf)-.2 E .375(fer and the)-.25 F F3
(READLINE_POINT)2.875 E F0(and)2.625 E F3(READLINE_MARK)2.875 E F0 -.25
(va)2.625 G .375(riables to the).25 F 1.186
-(current location of the insertion point and the sa)180 132 R -.15(ve)
+(current location of the insertion point and the sa)180 592.8 R -.15(ve)
-.2 G 3.685(di).15 G 1.185(nsertion point \(the mark\), respec-)-3.685 F
-(ti)180 144 Q -.15(ve)-.25 G(ly).15 E 5.701(.I)-.65 G 3.201(ft)-5.701 G
-.701(he e)-3.201 F -.15(xe)-.15 G .701(cuted command changes the v).15 F
-.702(alue of an)-.25 F 3.202(yo)-.15 G(f)-3.202 E F3(READLINE_LINE)3.202
-E/F4 9/Times-Roman@0 SF(,)A F3(READ-)2.952 E(LINE_POINT)180 156 Q F4(,)A
-F0(or)3.581 E F3(READLINE_MARK)3.831 E F4(,)A F0 1.331(those ne)3.581 F
-3.831(wv)-.25 G 1.33(alues will be re\215ected in the editing)-4.081 F
-(state.)180 168 Q F1<ad58>144 180 Q F0 .829(List all k)180 180 R 1.129
--.15(ey s)-.1 H .829
+(ti)180 604.8 Q -.15(ve)-.25 G(ly).15 E 5.377(.T)-.65 G .377
+(he shell assigns an)-5.377 F 2.877(yn)-.15 G .377(umeric ar)-2.877 F
+.377(gument the user supplied to the)-.18 F F3(READLINE_AR-)2.878 E
+(GUMENT)180 616.8 Q F0 -.25(va)3.605 G 3.855(riable. If).25 F 1.355
+(there w)3.855 F 1.354(as no ar)-.1 F 1.354(gument, that v)-.18 F 1.354
+(ariable is not set.)-.25 F 1.354(If the e)6.354 F -.15(xe)-.15 G(cuted)
+.15 E .343(command changes the v)180 628.8 R .343(alue of an)-.25 F
+2.843(yo)-.15 G(f)-2.843 E F3(READLINE_LINE)2.844 E/F4 9/Times-Roman@0
+SF(,)A F3(READLINE_POINT)2.594 E F4(,)A F0(or)2.594 E F3(READ-)2.844 E
+(LINE_MARK)180 640.8 Q F4(,)A F0(those ne)2.25 E 2.5(wv)-.25 G
+(alues will be re\215ected in the editing state.)-2.75 E F1<ad58>144
+652.8 Q F0 .83(List all k)180 652.8 R 1.13 -.15(ey s)-.1 H .829
(equences bound to shell commands and the associated commands in a for)
-.15 F(-)-.2 E(mat that can be reused as input.)180 192 Q(The return v)
-144 208.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15
+.15 F(-)-.2 E(mat that can be reused as input.)180 664.8 Q(The return v)
+144 681.6 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15
(ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5
-E F1(br)108 225.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .055
-(Exit from within a)144 237.6 R F1 -.25(fo)2.555 G(r).25 E F0(,)A F1
-(while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1
+E F1(br)108 698.4 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054
+(Exit from within a)144 710.4 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1
+(while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1
(select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055
(is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G
-(ls.).15 E F2(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol 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
+(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 722.4 Q F2(n)3.075 E F0 .215(is greater than the\
+ number of enclosing loops, all enclosing loops are e)2.955 F 2.714
+(xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(GNU Bash 5.2)72 768
+Q(2022 September 19)135.955 E(60)185.115 E 0 Cg EP
+%%Page: 61 61
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(is 0 unless)144 84
+Q/F1 10/Times-Italic@0 SF(n)2.5 E F0(is not greater than or equal to 1.)
+2.5 E/F2 10/Times-Bold@0 SF -.2(bu)108 100.8 S(iltin).2 E F1(shell\255b)
+2.5 E(uiltin)-.2 E F0([)2.5 E F1(ar)A(guments)-.37 E F0(])A(Ex)144 112.8
+Q .77(ecute the speci\214ed shell b)-.15 F .77(uiltin, passing it)-.2 F
+F1(ar)3.601 E(guments)-.37 E F0 3.271(,a).27 G .771(nd return its e)
+-3.271 F .771(xit status.)-.15 F .771(This is useful)5.771 F .616
(when de\214ning a function whose name is the same as a shell b)144
-302.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144
-314.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0
+124.8 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144
+136.8 R .57(uiltin within the function.)-.2 F(The)5.57 E F2(cd)3.07 E F0
-.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E
-5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 326.4 Q(alse if)-.1
-E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E
-(uiltin command.)-.2 E F1(caller)108 343.2 Q F0([)2.5 E F2 -.2(ex)C(pr)
-.2 E F0(])A .253(Returns the conte)144 355.2 R .254(xt of an)-.15 F
+5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 148.8 Q(alse if)-.1
+E F1(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E
+(uiltin command.)-.2 E F2(caller)108 165.6 Q F0([)2.5 E F1 -.2(ex)C(pr)
+.2 E F0(])A .254(Returns the conte)144 177.6 R .254(xt of an)-.15 F
2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254
(ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G
-.254(cuted with the).15 F F1(.)2.754 E F0(or)2.754 E F1(sour)144 367.2 Q
-(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F2 -.2
-(ex)2.825 G(pr).2 E F0(,)A F1(caller)2.825 E F0 .324
+.254(cuted with the).15 F F2(.)2.753 E F0(or)2.753 E F2(sour)144 189.6 Q
+(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F1 -.2
+(ex)2.824 G(pr).2 E F0(,)A F2(caller)2.824 E F0 .324
(displays the line number and source \214lename of the current)2.824 F
-.253(subroutine call.)144 379.2 R .253(If a non-ne)5.253 F -.05(ga)-.15
-G(ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15
-F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .254
-(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\
+.254(subroutine call.)144 201.6 R .254(If a non-ne)5.254 F -.05(ga)-.15
+G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15
+F F1 -.2(ex)2.753 G(pr).2 E F0(,)A F2(caller)2.753 E F0 .253
+(displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\
tine name, and source \214le corresponding to that position in the curr\
-ent e)144 391.2 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e)
-144 403.2 Q(xtra information may be used, for e)-.15 E .001
-(xample, to print a stack trace.)-.15 F .001(The current frame is frame)
-5.001 F 3.02(0. The)144 415.2 R .52(return v)3.02 F .52
-(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519
-(cuting a subroutine call or).15 F F2 -.2(ex)3.019 G(pr).2 E F0 .519
-(does not corre-)3.019 F(spond to a v)144 427.2 Q
-(alid position in the call stack.)-.25 E F1(cd)108 444 Q F0([)2.5 E F1
-<ad4c>A F0(|[)A F1<ad50>A F0([)2.5 E F1<ad65>A F0(]] [\255@]] [)A F2
-(dir)A F0(])A .321(Change the current directory to)144 456 R F2(dir)
-2.821 E F0 5.321(.i)C(f)-5.321 E F2(dir)2.821 E F0 .322
-(is not supplied, the v)2.821 F .322(alue of the)-.25 F F3(HOME)2.822 E
-F0 .322(shell v)2.572 F .322(ariable is)-.25 F 1.036(the def)144 468 R
-3.536(ault. An)-.1 F 3.536(ya)-.15 G 1.035(dditional ar)-3.536 F 1.035
-(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.)
-3.535 F 1.035(The v)6.035 F(ariable)-.25 E F3(CDP)3.535 E -.855(AT)-.666
-G(H).855 E F0(de\214nes)3.285 E .826
-(the search path for the directory containing)144 480 R F2(dir)3.676 E
-F0 3.326(:e).73 G .826(ach directory name in)-3.326 F F3(CDP)3.326 E
--.855(AT)-.666 G(H).855 E F0 .827(is searched for)3.077 F F2(dir)144 492
-Q F0 5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665
-(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0
-.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664
-(ull directory name)-3.165 F(in)144 504 Q F3(CDP)3.101 E -.855(AT)-.666
-G(H).855 E F0 .601(is the same as the current directory)2.851 F 3.102
-(,i)-.65 G .602(.e., `)-3.102 F(`)-.74 E F1(.)A F0 -.74('')C 5.602(.I)
-.74 G(f)-5.602 E F2(dir)3.452 E F0(be)3.832 E .602
-(gins with a slash \(/\), then)-.15 F F3(CD-)3.102 E -.666(PA)144 516 S
-(TH)-.189 E F0 1.003(is not used.)3.254 F(The)6.003 E 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
+ent e)144 213.6 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001
+(This e)144 225.6 R .001(xtra information may be used, for e)-.15 F .001
+(xample, to print a stack trace.)-.15 F(The current frame is frame)5 E
+3.019(0. The)144 237.6 R .519(return v)3.019 F .519
+(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52
+(cuting a subroutine call or).15 F F1 -.2(ex)3.02 G(pr).2 E F0 .52
+(does not corre-)3.02 F(spond to a v)144 249.6 Q
+(alid position in the call stack.)-.25 E F2(cd)108 266.4 Q F0([)2.5 E F2
+<ad4c>A F0(|[)A F2<ad50>A F0([)2.5 E F2<ad65>A F0(]] [\255@]] [)A F1
+(dir)A F0(])A .322(Change the current directory to)144 278.4 R F1(dir)
+2.822 E F0 5.322(.i)C(f)-5.322 E F1(dir)2.822 E F0 .321
+(is not supplied, the v)2.822 F .321(alue of the)-.25 F/F3 9
+/Times-Bold@0 SF(HOME)2.821 E F0 .321(shell v)2.571 F .321(ariable is)
+-.25 F .929(the def)144 290.4 R 3.429(ault. The)-.1 F -.25(va)3.429 G
+(riable).25 E F3(CDP)3.429 E -.855(AT)-.666 G(H).855 E F0 .93
+(de\214nes the search path for the directory containing)3.179 F F1(dir)
+3.78 E F0 3.43(:e).73 G(ach)-3.43 E .407(directory name in)144 302.4 R
+F3(CDP)2.907 E -.855(AT)-.666 G(H).855 E F0 .407(is searched for)2.657 F
+F1(dir)2.907 E F0 5.407(.A)C(lternati)-5.407 E .707 -.15(ve d)-.25 H
+.407(irectory names in).15 F F3(CDP)2.907 E -.855(AT)-.666 G(H).855 E F0
+.406(are sepa-)2.656 F .799(rated by a colon \(:\).)144 314.4 R 3.299
+(An)5.799 G .799(ull directory name in)-3.299 F F3(CDP)3.299 E -.855(AT)
+-.666 G(H).855 E F0 .799(is the same as the current directory)3.049 F
+3.3(,i)-.65 G(.e.,)-3.3 E -.74(``)144 326.4 S F2(.).74 E F0 -.74('')C
+5.428(.I).74 G(f)-5.428 E F1(dir)3.278 E F0(be)3.658 E .428
+(gins with a slash \(/\), then)-.15 F F3(CDP)2.928 E -.855(AT)-.666 G(H)
+.855 E F0 .428(is not used.)2.678 F(The)5.428 E F2<ad50>2.927 E F0 .427
+(option causes)2.927 F F2(cd)2.927 E F0 .427(to use the)2.927 F(ph)144
+338.4 Q .167
+(ysical directory structure by resolving symbolic links while tra)-.05 F
+-.15(ve)-.2 G(rsing).15 E F1(dir)2.668 E F0 .168(and before processing)
+2.668 F 1.225(instances of)144 350.4 R F1(..)3.725 E F0(in)3.725 E F1
+(dir)3.725 E F0 1.225(\(see also the)3.725 F F2<ad50>3.725 E F0 1.225
+(option to the)3.725 F F2(set)3.725 E F0 -.2(bu)3.725 G 1.225
+(iltin command\); the).2 F F2<ad4c>3.725 E F0 1.225(option forces)3.725
+F .411(symbolic links to be follo)144 362.4 R .411
+(wed by resolving the link after processing instances of)-.25 F F1(..)
+2.911 E F0(in)2.911 E F1(dir)2.911 E F0 5.411(.I)C(f)-5.411 E F1(..)
+2.912 E F0(ap-)2.912 E .341(pears in)144 374.4 R F1(dir)2.841 E F0 2.841
+(,i)C 2.841(ti)-2.841 G 2.841(sp)-2.841 G .341(rocessed by remo)-2.841 F
+.341(ving the immediately pre)-.15 F .34(vious pathname component from)
+-.25 F F1(dir)2.84 E F0(,)A .175(back to a slash or the be)144 386.4 R
+.175(ginning of)-.15 F F1(dir)2.675 E F0 5.175(.I)C 2.675(ft)-5.175 G
+(he)-2.675 E F2<ad65>2.676 E F0 .176(option is supplied with)2.676 F F2
+<ad50>2.676 E F0 2.676(,a)C .176(nd the current w)-2.676 F(ork-)-.1 E
+.341(ing directory cannot be successfully determined after a successful\
+ directory change,)144 398.4 R F2(cd)2.84 E F0 .34(will return)2.84 F
+.356(an unsuccessful status.)144 410.4 R .356
+(On systems that support it, the)5.356 F F2<ad40>2.857 E F0 .357
+(option presents the e)2.857 F .357(xtended attrib)-.15 F(utes)-.2 E .07
+(associated with a \214le as a directory)144 422.4 R 5.07(.A)-.65 G
+2.569(na)-5.07 G -.18(rg)-2.569 G .069(ument of).18 F F2<ad>2.569 E F0
+.069(is con)2.569 F -.15(ve)-.4 G .069(rted to).15 F F3($OLDPWD)2.569 E
+F0 .069(before the direc-)2.319 F .306(tory change is attempted.)144
+434.4 R .306(If a non-empty directory name from)5.306 F F3(CDP)2.806 E
+-.855(AT)-.666 G(H).855 E F0 .306(is used, or if)2.556 F F2<ad>2.807 E
+F0 .307(is the \214rst)2.807 F(ar)144 446.4 Q .116(gument, and the dire\
+ctory change is successful, the absolute pathname of the ne)-.18 F 2.615
+(ww)-.25 G .115(orking direc-)-2.715 F .15
+(tory is written to the standard output.)144 458.4 R .15
+(If the directory change is successful,)5.15 F F2(cd)2.65 E F0 .15
+(sets the v)2.65 F .15(alue of the)-.25 F F2(PWD)144 470.4 Q F0(en)2.958
+E .458(vironment v)-.4 F .458(ariable to the ne)-.25 F 2.958(wd)-.25 G
+.458(irectory name, and sets the)-2.958 F F2(OLDPWD)2.957 E F0(en)2.957
+E .457(vironment v)-.4 F(ari-)-.25 E .125(able to the v)144 482.4 R .125
+(alue of the current w)-.25 F .126(orking directory before the change.)
+-.1 F .126(The return v)5.126 F .126(alue is true if the)-.25 F
+(directory w)144 494.4 Q(as successfully changed; f)-.1 E
+(alse otherwise.)-.1 E F2(command)108 511.2 Q F0([)2.5 E F2(\255pVv)A F0
+(])A F1(command)2.5 E F0([)2.5 E F1(ar)A(g)-.37 E F0(...])2.5 E(Run)144
+523.2 Q F1(command)2.765 E F0(with)3.335 E F1(ar)2.895 E(gs)-.37 E F0
+.065(suppressing the normal shell function lookup.)2.835 F .064(Only b)
+5.064 F .064(uiltin commands or)-.2 F .501(commands found in the)144
+535.2 R F3 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)
+-.15 G 3.002(cuted. If).15 F(the)3.002 E F2<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 547.2 R .4
+(ault v)-.1 F .4(alue for)-.25 F F3 -.666(PA)2.9 G(TH)-.189 E F0 .399
(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If)
-5.4 E .175(either the)144 712.8 R 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
+5.399 E .174(either the)144 559.2 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 F1
+(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 571.2 S .818(ingle w)-3.318 F
+.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo)
+-.4 G -.1(ke).2 G F1(command)3.617 E F0 .817(to be displayed; the)4.087
+F F2<ad56>144 583.2 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 595.2 R F1(command)3.705 E F0 -.1
+(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004
+(If neither option is supplied and an error occurred or)6.005 F F1
+(command)144.2 607.2 Q F0 1.598(cannot be found, the e)4.868 F 1.599
+(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599
+(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 619.2 S
+(iltin is the e).2 E(xit status of)-.15 E F1(command)2.7 E F0(.).77 E F2
+(compgen)108 636 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d)
+-.37 E F0(])A .013(Generate possible completion matches for)144 648 R F1
+(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513 E
+F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981
+(accepted by the)144 660 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981
+(iltin with the e).2 F .981(xception of)-.15 F 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 672 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 684 Q(acilities, while a)-.1 E -.25(va)-.2 G
+(ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25
+E .352(The matches will be generated in the same w)144 708 R .352
+(ay as if the programmable completion code had gen-)-.1 F .02(erated th\
+em directly from a completion speci\214cation with the same \215ags.)144
+720 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)2.52
+F(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(61)185.115 E 0 Cg EP
+%%Page: 62 62
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-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 208.8 R .352
-(ay as if the programmable completion code had gen-)-.1 F .02(erated th\
-em directly from a completion speci\214cation with the same \215ags.)144
-220.8 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)
-2.52 F(those completions matching)144 232.8 Q F2(wor)2.5 E(d)-.37 E F0
-(will be displayed.)2.5 E(The return v)144 256.8 Q
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(those completions matching)144 84 Q/F1 10/Times-Italic@0 SF(wor)2.5 E
+(d)-.37 E F0(will be displayed.)2.5 E(The return v)144 108 Q
(alue is true unless an in)-.25 E -.25(va)-.4 G
-(lid option is supplied, or no matches were generated.).25 E F1
-(complete)108 273.6 Q F0([)2.5 E F1(\255abcdefgjksuv)A F0 2.5(][)C F1
-<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
+(lid option is supplied, or no matches were generated.).25 E/F2 10
+/Times-Bold@0 SF(complete)108 124.8 Q F0([)2.5 E F2(\255abcdefgjksuv)A
+F0 2.5(][)C F2<ad6f>-2.5 E F1(comp-option)2.5 E F0 2.5(][)C F2(\255DEI)
+-2.5 E F0 2.5(][)C F2<ad41>-2.5 E F1(action)2.5 E F0 2.5(][)C F2<ad47>
+-2.5 E F1(globpat)2.5 E F0 2.5(][)C F2<ad57>-2.5 E F1(wor)2.5 E(dlist)
+-.37 E F0(])A([)144 136.8 Q F2<ad46>A F1(function)2.5 E F0 2.5(][)C F2
+<ad43>-2.5 E F1(command)2.5 E F0 2.5(][)C F2<ad58>-2.5 E F1(\214lterpat)
+2.5 E F0 2.5(][)C F2<ad50>-2.5 E F1(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C
+F2<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 F2(complete \255pr)108 148.8 Q F0([)2.5 E F2
+(\255DEI)A F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E .633(Specify ho)144
+160.8 R 3.133(wa)-.25 G -.18(rg)-3.133 G .633(uments to each).18 F F1
+(name)3.133 E F0 .633(should be completed.)3.133 F .634(If the)5.634 F
+F2<ad70>3.134 E F0 .634(option is supplied, or if no)3.134 F .14
+(options are supplied, e)144 172.8 R .139
+(xisting completion speci\214cations are printed in a w)-.15 F .139
+(ay that allo)-.1 F .139(ws them to be)-.25 F .31(reused as input.)144
+184.8 R(The)5.31 E 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 F1(name)
+2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F1
+(name)2.81 E F0(s)A 1.208
+(are supplied, all completion speci\214cations.)144 196.8 R(The)6.208 E
+F2<ad44>3.708 E F0 1.207(option indicates that other supplied options)
+3.707 F .5(and actions should apply to the `)144 208.8 R(`def)-.74 E
(ault')-.1 E 3('c)-.74 G .5
(ommand completion; that is, completion attempted on)-3 F 3.455(ac)144
-369.6 S .955(ommand for which no completion has pre)-3.455 F .955
-(viously been de\214ned.)-.25 F(The)5.955 E F1<ad45>3.455 E F0 .955
+220.8 S .955(ommand for which no completion has pre)-3.455 F .955
+(viously been de\214ned.)-.25 F(The)5.955 E F2<ad45>3.455 E F0 .955
(option indicates that)3.455 F .876
-(other supplied options and actions should apply to `)144 381.6 R
+(other supplied options and actions should apply to `)144 232.8 R
(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-)
--3.376 F .447(pletion attempted on a blank line.)144 393.6 R(The)5.447 E
-F1<ad49>2.947 E F0 .448
+-3.376 F .448(pletion attempted on a blank line.)144 244.8 R(The)5.447 E
+F2<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 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 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 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
+(should apply to completion on the initial non-assignment w)144 256.8 R
+.123(ord on the line, or after a command de-)-.1 F 1.021
+(limiter such as)144 268.8 R F2(;)3.521 E F0(or)3.521 E F2(|)3.521 E F0
+3.521(,w)C 1.021(hich is usually command name completion.)-3.521 F 1.02
+(If multiple options are sup-)6.02 F .707(plied, the)144 280.8 R F2
+<ad44>3.207 E F0 .707(option tak)3.207 F .707(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 .708(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F2
+<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 F2<ad44>3.208 E F0(,)A F2<ad45>144 292.8 Q F0 2.604(,o)C(r)
+-2.604 E F2<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 453.6 Q .153
+(case speci\214ed by the option.)144 304.8 Q .152
(The process of applying these completion speci\214cations when w)144
-477.6 R .152(ord completion is attempted is de-)-.1 F(scribed abo)144
-489.6 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E
-(ogrammable Completion)-.18 E F0(.)A .555
-(Other options, if speci\214ed, ha)144 513.6 R .855 -.15(ve t)-.2 H .555
+328.8 R .153(ord completion is attempted is de-)-.1 F(scribed abo)144
+340.8 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E
+(ogrammable Completion)-.18 E F0(.)A .556
+(Other options, if speci\214ed, ha)144 364.8 R .856 -.15(ve t)-.2 H .555
(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555
-(guments to the)-.18 F 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 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
+(guments to the)-.18 F F2<ad47>3.055 E F0(,)A F2<ad57>3.055 E F0 3.055
+(,a)C(nd)-3.055 E F2<ad58>3.055 E F0 .722(options \(and, if necessary)
+144 376.8 R 3.222(,t)-.65 G(he)-3.222 E F2<ad50>3.222 E F0(and)3.222 E
+F2<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 388.8 Q F2(complete)2.5 E F0 -.2(bu)2.5 G
+(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F2<ad6f>144 400.8 Q
+F1(comp-option)2.5 E F0(The)184 412.8 Q F1(comp-option)2.791 E F0 .291
(controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec')
.15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291
-(yond the simple)-.15 F(generation of completions.)184 573.6 Q F2
-(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 585.6 Q F0
-.281(Perform the rest of the def)224 597.6 R(ault)-.1 E F1(bash)2.781 E
+(yond the simple)-.15 F(generation of completions.)184 424.8 Q F1
+(comp-option)5 E F0(may be one of:)2.5 E F2(bashdefault)184 436.8 Q F0
+.281(Perform the rest of the def)224 448.8 R(ault)-.1 E F2(bash)2.781 E
F0 .281(completions if the compspec generates no)2.781 F(matches.)224
-609.6 Q F1(default)184 621.6 Q F0 2.875(Use readline')224 621.6 R 5.375
-(sd)-.55 G(ef)-5.375 E 2.876
+460.8 Q F2(default)184 472.8 Q F0 2.876(Use readline')224 472.8 R 5.376
+(sd)-.55 G(ef)-5.376 E 2.875
(ault \214lename completion if the compspec generates no)-.1 F(matches.)
-224 633.6 Q F1(dir)184 645.6 Q(names)-.15 E F0(Perform directory name c\
-ompletion if the compspec generates no matches.)224 657.6 Q F1
-(\214lenames)184 669.6 Q F0 -.7(Te)224 681.6 S .137(ll readline that th\
-e compspec generates \214lenames, so it can perform an).7 F 2.636<798c>
--.15 G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 693.6 R
+224 484.8 Q F2(dir)184 496.8 Q(names)-.15 E F0(Perform directory name c\
+ompletion if the compspec generates no matches.)224 508.8 Q F2
+(\214lenames)184 520.8 Q F0 -.7(Te)224 532.8 S .137(ll readline that th\
+e compspec generates \214lenames, so it can perform an).7 F 2.637<798c>
+-.15 G(le-)-2.637 E .134(name\255speci\214c processing \(lik)224 544.8 R
2.634(ea)-.1 G .134(dding a slash to directory names, quoting spe-)
-2.634 F .45(cial characters, or suppressing trailing spaces\).)224
-705.6 R .45(Intended to be used with shell)5.45 F(functions.)224 717.6 Q
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(59)190.395 E 0 Cg EP
-%%Page: 60 60
+556.8 R .45(Intended to be used with shell)5.45 F(functions.)224 568.8 Q
+F2(noquote)184 580.8 Q F0 -.7(Te)224 580.8 S .814
+(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F
+3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F
+(\214lenames is the def)224 592.8 Q(ault\).)-.1 E F2(nosort)184 604.8 Q
+F0 -.7(Te)224 604.8 S(ll readline not to sort the list of possible comp\
+letions alphabetically).7 E(.)-.65 E F2(nospace)184 616.8 Q F0 -.7(Te)
+224 616.8 S .22(ll readline not to append a space \(the def).7 F .22
+(ault\) to w)-.1 F .22(ords completed at the end)-.1 F(of the line.)224
+628.8 Q F2(plusdirs)184 640.8 Q F0 1.985(After an)224 640.8 R 4.485(ym)
+-.15 G 1.985
+(atches de\214ned by the compspec are generated, directory name)-4.485 F
+.583(completion is attempted and an)224 652.8 R 3.084(ym)-.15 G .584
+(atches are added to the results of the other)-3.084 F(actions.)224
+664.8 Q F2<ad41>144 676.8 Q F1(action)2.5 E F0(The)184 688.8 Q F1
+(action)2.5 E F0(may be one of the follo)2.5 E
+(wing to generate a list of possible completions:)-.25 E F2(alias)184
+700.8 Q F0(Alias names.)224 700.8 Q(May also be speci\214ed as)5 E F2
+<ad61>2.5 E F0(.)A(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(62)
+185.115 E 0 Cg EP
+%%Page: 63 63
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(noquote)184 84 Q F0 -.7(Te)224 84 S .814
-(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F
-3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F
-(\214lenames is the def)224 96 Q(ault\).)-.1 E F1(nosort)184 108 Q F0
--.7(Te)224 108 S(ll readline not to sort the list of possible completio\
-ns alphabetically).7 E(.)-.65 E F1(nospace)184 120 Q F0 -.7(Te)224 120 S
-.22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1
-F .22(ords completed at the end)-.1 F(of the line.)224 132 Q F1
-(plusdirs)184 144 Q F0 1.985(After an)224 144 R 4.485(ym)-.15 G 1.985
-(atches de\214ned by the compspec are generated, directory name)-4.485 F
-.584(completion is attempted and an)224 156 R 3.084(ym)-.15 G .584
-(atches are added to the results of the other)-3.084 F(actions.)224 168
-Q 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
-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)
+SF(arrayv)184 84 Q(ar)-.1 E F0(Array v)224 96 Q(ariable names.)-.25 E F1
+(binding)184 108 Q(Readline)224 108 Q F0 -.1(ke)2.5 G 2.5(yb)-.05 G
+(inding names.)-2.5 E F1 -.2(bu)184 120 S(iltin).2 E F0
+(Names of shell b)224 120 Q(uiltin commands.)-.2 E
+(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 132
+Q F0(Command names.)224 144 Q(May also be speci\214ed as)5 E F1<ad63>2.5
+E F0(.)A F1(dir)184 156 Q(ectory)-.18 E F0(Directory names.)224 168 Q
+(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 180
+Q F0(Names of disabled shell b)224 192 Q(uiltins.)-.2 E F1(enabled)184
+204 Q F0(Names of enabled shell b)224 204 Q(uiltins.)-.2 E F1(export)184
+216 Q F0(Names of e)224 216 Q(xported shell v)-.15 E 2.5(ariables. May)
-.25 F(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184
-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
+228 Q F0(File names.)224 228 Q(May also be speci\214ed as)5 E F1<ad66>
+2.5 E F0(.)A F1(function)184 240 Q F0(Names of shell functions.)224 252
+Q F1(gr)184 264 Q(oup)-.18 E F0(Group names.)224 264 Q
(May also be speci\214ed as)5 E F1<ad67>2.5 E F0(.)A F1(helptopic)184
-408 Q F0(Help topics as accepted by the)224 420 Q F1(help)2.5 E F0 -.2
-(bu)2.5 G(iltin.).2 E F1(hostname)184 432 Q F0(Hostnames, as tak)224 444
-Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF
-(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 456 Q F0
-(Job names, if job control is acti)224 456 Q -.15(ve)-.25 G 5(.M).15 G
-(ay also be speci\214ed as)-5 E 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)
+276 Q F0(Help topics as accepted by the)224 288 Q F1(help)2.5 E F0 -.2
+(bu)2.5 G(iltin.).2 E F1(hostname)184 300 Q F0(Hostnames, as tak)224 312
+Q(en from the \214le speci\214ed by the)-.1 E/F2 9/Times-Bold@0 SF
+(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 324 Q F0
+(Job names, if job control is acti)224 324 Q -.15(ve)-.25 G 5(.M).15 G
+(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 336 S
+(yw).1 E(ord)-.1 E F0(Shell reserv)224 348 Q(ed w)-.15 E 2.5(ords. May)
-.1 F(also be speci\214ed as)2.5 E F1<ad6b>2.5 E F0(.)A F1(running)184
-492 Q F0(Names of running jobs, if job control is acti)224 492 Q -.15
-(ve)-.25 G(.).15 E F1(ser)184 504 Q(vice)-.1 E F0(Service names.)224 504
-Q(May also be speci\214ed as)5 E 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
+360 Q F0(Names of running jobs, if job control is acti)224 360 Q -.15
+(ve)-.25 G(.).15 E F1(ser)184 372 Q(vice)-.1 E F0(Service names.)224 372
+Q(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 384
+Q F0 -1.11(Va)224 384 S(lid ar)1.11 E(guments for the)-.18 E 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 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
+(shopt)184 396 Q F0(Shell option names as accepted by the)224 396 Q F1
+(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 408 Q F0
+(Signal names.)224 408 Q F1(stopped)184 420 Q F0
+(Names of stopped jobs, if job control is acti)224 420 Q -.15(ve)-.25 G
+(.).15 E F1(user)184 432 Q F0(User names.)224 432 Q
+(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 444 S
+(riable).1 E F0(Names of all shell v)224 444 Q 2.5(ariables. May)-.25 F
+(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad43>144 456 Q/F3
+10/Times-Italic@0 SF(command)2.5 E(command)184 468 Q F0 1.056(is e)3.556
+F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056
+(vironment, and its output is used as the possible)-.4 F 2.5
+(completions. Ar)184 480 R(guments are passed as with the)-.18 E F1
+<ad46>2.5 E F0(option.)2.5 E F1<ad46>144 492 Q F3(function)2.5 E F0 .113
+(The shell function)184 504 R F3(function)2.614 E F0 .114(is e)2.614 F
-.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614
-(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 648 R
--.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1
-($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817
+(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 516 R
+-.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1
+($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816
(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407
-(are being completed, the second ar)184 660 R 1.407(gument \()-.18 F F1
+(are being completed, the second ar)184 528 R 1.407(gument \()-.18 F F1
($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407
-(ord being completed, and the)-.1 F .103(third ar)184 672 R .103
-(gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w)
--2.603 F .104(ord preceding the w)-.1 F .104
-(ord being completed on the current com-)-.1 F .102(mand line.)184 684 R
-.102(When it \214nishes, the possible completions are retrie)5.102 F
--.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the)
--.25 F F3(COMPREPL)184 696 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(60)190.395 E 0 Cg EP
-%%Page: 61 61
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-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 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
+(ord being completed, and the)-.1 F .104(third ar)184 540 R .104
+(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w)
+-2.604 F .104(ord preceding the w)-.1 F .103
+(ord being completed on the current com-)-.1 F .101(mand line.)184 552 R
+.101(When it \214nishes, the possible completions are retrie)5.101 F
+-.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the)
+-.25 F F2(COMPREPL)184 564 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E
+F1<ad47>144 576 Q F3(globpat)2.5 E F0 1.008(The pathname e)184 588 R
+1.008(xpansion pattern)-.15 F F3(globpat)3.507 E F0 1.007(is e)3.507 F
+1.007(xpanded to generate the possible comple-)-.15 F(tions.)184 600 Q
+F1<ad50>144 612 Q F3(pr)2.5 E(e\214x)-.37 E(pr)184 624 Q(e\214x)-.37 E
+F0 .534(is added at the be)3.034 F .534
(ginning of each possible completion after all other options ha)-.15 F
--.15(ve)-.2 G(been applied.)184 144 Q F1<ad53>144 156 Q F2(suf)2.5 E
-<8c78>-.18 E(suf)184 156 Q<8c78>-.18 E F0
+-.15(ve)-.2 G(been applied.)184 636 Q F1<ad53>144 648 Q F3(suf)2.5 E
+<8c78>-.18 E(suf)184 648 Q<8c78>-.18 E F0
(is appended to each possible completion after all other options ha)2.5
-E .3 -.15(ve b)-.2 H(een applied.).15 E 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
+E .3 -.15(ve b)-.2 H(een applied.).15 E F1<ad57>144 660 Q F3(wor)2.5 E
+(dlist)-.37 E F0(The)184 672 Q F3(wor)3.64 E(dlist)-.37 E F0 1.14
+(is split using the characters in the)3.64 F F2(IFS)3.64 E F0 1.139
+(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F .98
+(each resultant w)184 684 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15
+F .981(quoting is honored within)3.481 F F3(wor)3.481 E(dlist)-.37 E F0
+3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 696 Q .766
+(vide a mechanism for the w)-.15 F .765
(ords to contain shell metacharacters or characters in the)-.1 F -.25
-(va)184 216 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.)
+(va)184 708 S 1.964(lue of).25 F F2(IFS)4.464 E/F4 9/Times-Roman@0 SF(.)
A F0 1.964
(The possible completions are the members of the resultant list which)
-6.465 F(match the w)184 228 Q(ord being completed.)-.1 E 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 264 R 1.596
-(guments, and each completion)-.18 F(matching)184 276 Q F2(\214lterpat)
-3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704
-(rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0
-(in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705
-(tes the pattern;).05 F(in this case, an)184 288 Q 2.5(yc)-.15 G
+6.464 F(match the w)184 720 Q(ord being completed.)-.1 E(GNU Bash 5.2)72
+768 Q(2022 September 19)135.955 E(63)185.115 E 0 Cg EP
+%%Page: 64 64
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad58>144 84 Q/F2 10/Times-Italic@0 SF(\214lterpat)2.5 E(\214lterpat)
+184 96 Q F0 .456(is a pattern as used for pathname e)2.956 F 2.956
+(xpansion. It)-.15 F .455(is applied to the list of possible)2.956 F
+1.596(completions generated by the preceding options and ar)184 108 R
+1.596(guments, and each completion)-.18 F(matching)184 120 Q F2
+(\214lterpat)3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15
+G .704(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)
+3.204 E F0(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15
+G .704(tes the pattern;).05 F(in this case, an)184 132 Q 2.5(yc)-.15 G
(ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E
--.15(ve)-.15 G(d.).15 E .467(The return v)144 304.8 R .467
+-.15(ve)-.15 G(d.).15 E .466(The return v)144 148.8 R .466
(alue is true unless an in)-.25 F -.25(va)-.4 G .466
-(lid option is supplied, an option other than).25 F 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 316.8 R F2(name)3.861 E F0(ar)3.861 E 1.361
-(gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H
-1.362(ompletion speci\214cation for a).15 F F2(name)144 328.8 Q F0
+(lid option is supplied, an option other than).25 F 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 160.8 R F2(name)3.862 E F0(ar)3.862 E 1.361
+(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H
+1.361(ompletion speci\214cation for a).15 F F2(name)144 172.8 Q F0
(for which no speci\214cation e)2.5 E
(xists, or an error occurs adding a completion speci\214cation.)-.15 E
-F1(compopt)108 345.6 Q F0([)2.5 E F1<ad6f>A F2(option)2.5 E F0 2.5(][)C
+F1(compopt)108 189.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 357.6
+F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 201.6
R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0
-.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725
-(completion if no)144 369.6 R F2(name)3.225 E F0 3.225(sa)C .725
-(re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa)
-C .725(re gi)-3.225 F -.15(ve)-.25 G .726
-(n, display the completion options for).15 F(each)144 381.6 Q F2(name)
-3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v)
+.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726
+(completion if no)144 213.6 R F2(name)3.226 E F0 3.226(sa)C .726
+(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa)
+C .725(re gi)-3.225 F -.15(ve)-.25 G .725
+(n, display the completion options for).15 F(each)144 225.6 Q F2(name)
+3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v)
5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224
-F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 393.6 Q F0 -.2(bu)
-2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he)
+F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 237.6 Q F0 -.2(bu)
+2.678 G .178(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he)
-5.178 E F1<ad44>2.678 E F0 .178
(option indicates that other supplied options should apply to)2.678 F
-1.228(the `)144 405.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\
+1.227(the `)144 249.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\
mmand completion; that is, completion attempted on a command for which \
-no)-3.728 F 2.038(completion has pre)144 417.6 R 2.038
-(viously been de\214ned.)-.25 F(The)7.038 E F1<ad45>4.538 E F0 2.039
-(option indicates that other supplied options)4.538 F 1.539
-(should apply to `)144 429.6 R(`empty')-.74 E 4.039('c)-.74 G 1.538
+no)-3.727 F 2.039(completion has pre)144 261.6 R 2.039
+(viously been de\214ned.)-.25 F(The)7.038 E F1<ad45>4.538 E F0 2.038
+(option indicates that other supplied options)4.538 F 1.538
+(should apply to `)144 273.6 R(`empty')-.74 E 4.038('c)-.74 G 1.539
(ommand completion; that is, completion attempted on a blank line.)
--4.039 F(The)144 441.6 Q F1<ad49>3.02 E F0 .52(option indicates that ot\
+-4.038 F(The)144 285.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
+F .867(assignment w)144 297.6 R .868
(ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368
-E F0(or)3.368 E F1(|)3.368 E F0 3.367(,w)C .867(hich is usually com-)
--3.367 F(mand name completion.)144 465.6 Q .431(The return v)144 489.6 R
+E F0(or)3.368 E F1(|)3.368 E F0 3.368(,w)C .868(hich is usually com-)
+-3.368 F(mand name completion.)144 309.6 Q .432(The return v)144 333.6 R
.431(alue is true unless an in)-.25 F -.25(va)-.4 G .431
(lid option is supplied, an attempt is made to modify the op-).25 F
-(tions for a)144 501.6 Q F2(name)2.5 E F0
+(tions for a)144 345.6 Q F2(name)2.5 E F0
(for which no completion speci\214cation e)2.5 E
-(xists, or an output error occurs.)-.15 E F1(continue)108 518.4 Q F0([)
-2.5 E F2(n)A F0(])A .851(Resume the ne)144 530.4 R .851
-(xt iteration of the enclosing)-.15 F F1 -.25(fo)3.351 G(r).25 E F0(,)A
+(xists, or an output error occurs.)-.15 E F1(continue)108 362.4 Q F0([)
+2.5 E F2(n)A F0(])A .85(Resume the ne)144 374.4 R .85
+(xt iteration of the enclosing)-.15 F F1 -.25(fo)3.35 G(r).25 E F0(,)A
F1(while)3.351 E F0(,)A F1(until)3.351 E F0 3.351(,o)C(r)-3.351 E F1
-(select)3.35 E F0 3.35(loop. If)3.35 F F2(n)3.71 E F0 .85
-(is speci\214ed, re-)3.59 F .203(sume at the)144 542.4 R F2(n)2.703 E F0
-.203(th enclosing loop.)B F2(n)5.563 E F0 .203(must be)2.943 F/F5 10
-/Symbol 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
+(select)3.351 E F0 3.351(loop. If)3.351 F F2(n)3.711 E F0 .851
+(is speci\214ed, re-)3.591 F .204(sume at the)144 386.4 R F2(n)2.704 E
+F0 .204(th enclosing loop.)B F2(n)5.564 E F0 .204(must be)2.944 F/F3 10
+/Symbol SF<b3>2.704 E F0 2.703(1. If)2.704 F F2(n)3.063 E F0 .203
+(is greater than the number of enclosing loops,)2.943 F 1.183
+(the last enclosing loop \(the `)144 398.4 R(`top-le)-.74 E -.15(ve)-.25
+G(l').15 E 3.683('l)-.74 G 1.183(oop\) is resumed.)-3.683 F 1.184
+(The return v)6.184 F 1.184(alue is 0 unless)-.25 F F2(n)3.684 E F0
+1.184(is not)3.684 F(greater than or equal to 1.)144 410.4 Q F1(declar)
+108 427.2 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 2.5(][)C F1
<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 E F1(typeset)108 439.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
+2.5(].)C(..])-2.5 E 1.265(Declare v)144 451.2 R 1.265
+(ariables and/or gi)-.25 F 1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F
3.765(utes. If)-.2 F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265
-(re gi)-3.765 F -.15(ve)-.25 G 3.765(nt).15 G 1.265(hen display the v)
--3.765 F 1.265(alues of)-.25 F -.25(va)144 619.2 S 3.46(riables. The).25
+(re gi)-3.765 F -.15(ve)-.25 G 3.764(nt).15 G 1.264(hen display the v)
+-3.764 F 1.264(alues of)-.25 F -.25(va)144 463.2 S 3.46(riables. The).25
F 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
+G(hen)-5.96 E F1<ad70>3.46 E F0 .96(is used)3.46 F(with)144 475.2 Q F2
+(name)2.775 E F0(ar)2.775 E .275
(guments, additional options, other than)-.18 F 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
+2.775 E F1<ad46>2.775 E F0 2.775(,a)C .274(re ignored.)-2.775 F(When)
+5.274 E F1<ad70>2.774 E F0 .274(is supplied)2.774 F(without)144 487.2 Q
+F2(name)3.789 E F0(ar)3.789 E 1.289(guments, it will display the attrib)
+-.18 F 1.289(utes and v)-.2 F 1.29(alues of all v)-.25 F 1.29
+(ariables ha)-.25 F 1.29(ving the at-)-.2 F(trib)144 499.2 Q .38
(utes speci\214ed by the additional options.)-.2 F .38
(If no other options are supplied with)5.38 F 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
+(declar)2.88 E(e)-.18 E F0(will)2.88 E 1.106(display the attrib)144
+511.2 R 1.106(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606
+(ariables. The)-.25 F F1<ad66>3.606 E F0 1.107
+(option will restrict the display to)3.606 F .3(shell functions.)144
+523.2 R(The)5.3 E F1<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
+535.2 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F F1(extdeb)4.04 E
+(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F F1(shopt)4.04 E
+F0 4.04(,t)C 1.54(he source \214le)-4.04 F .648
+(name and line number where each)144 547.2 R F2(name)3.148 E F0 .648
(is de\214ned are displayed as well.)3.148 F(The)5.648 E 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
+F0 .648(option implies)3.148 F F1<ad66>144 559.2 Q F0 5.836(.T)C(he)
+-5.836 E F1<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 3.336(nw).15 G(hen)-3.336 E F1(de-)3.336 E(clar)144 727.2 Q
-(e)-.18 E F0 .818(is e)3.318 F -.15(xe)-.15 G .818
+(ve)-.25 G 3.337(nw).15 G(hen)-3.337 E F1(de-)3.337 E(clar)144 571.2 Q
+(e)-.18 E F0 .819(is e)3.319 F -.15(xe)-.15 G .819
(cuted in a shell function.).15 F .818
-(It is ignored in all other cases.)5.818 F(The)5.819 E 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
+(It is ignored in all other cases.)5.818 F(The)5.818 E F1<ad49>3.318 E
+F0 .818(option causes local)3.318 F -.25(va)144 583.2 S .693
+(riables to inherit the attrib).25 F .693(utes \(e)-.2 F .693(xcept the)
+-.15 F F2(namer)3.194 E(ef)-.37 E F0(attrib)3.194 E .694(ute\) and v)-.2
+F .694(alue of an)-.25 F 3.194(ye)-.15 G .694(xisting v)-3.344 F
+(ariable)-.25 E .82(with the same)144 595.2 R F2(name)3.32 E F0 .82
+(at a surrounding scope.)3.32 F .82(If there is no e)5.82 F .82
+(xisting v)-.15 F .82(ariable, the local v)-.25 F .82(ariable is)-.25 F
+.379(initially unset.)144 607.2 R .379(The follo)5.379 F .379
+(wing options can be used to restrict output to v)-.25 F .38
+(ariables with the speci\214ed)-.25 F(attrib)144 619.2 Q(ute or to gi)
+-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1<ad61>144
+631.2 Q F0(Each)180 631.2 Q F2(name)2.5 E F0(is an inde)2.5 E -.15(xe)
+-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5 E
+F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1<ad41>144 643.2 Q F0(Each)180
+643.2 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H
+(rray v).15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)
+-.15 G(\).).15 E F1<ad66>144 655.2 Q F0(Use function names only)180
+655.2 Q(.)-.65 E F1<ad69>144 667.2 Q F0 .558(The v)180 667.2 R .558
+(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25
+(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557
+(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 679.2 Q F0(abo)
+2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)
+-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F1<ad6c>144 691.2 Q
+F0 .909(When the v)180 691.2 R .909(ariable is assigned a v)-.25 F .909
+(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4
+G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 703.2 R
+(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1<ad6e>144 715.2
+Q F0(Gi)180 715.2 Q 1.62 -.15(ve e)-.25 H(ach).15 E F2(name)3.82 E F0
+(the)3.82 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319
+(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E
+1.518(That other v)180 727.2 R 1.518(ariable is de\214ned by the v)-.25
+F 1.519(alue of)-.25 F F2(name)4.019 E F0 6.519(.A)C 1.519
+(ll references, assignments, and)-6.519 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(64)185.115 E 0 Cg EP
+%%Page: 65 65
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S
-.694(riables to inherit the attrib).25 F .694(utes \(e)-.2 F .694
-(xcept the)-.15 F/F1 10/Times-Italic@0 SF(namer)3.194 E(ef)-.37 E F0
-(attrib)3.194 E .693(ute\) and v)-.2 F .693(alue of an)-.25 F 3.193(ye)
--.15 G .693(xisting v)-3.343 F(ariable)-.25 E .82(with the same)144 96 R
-F1(name)3.32 E F0 .82(at a surrounding scope.)3.32 F .82
-(If there is no e)5.82 F .82(xisting v)-.15 F .82(ariable, the local v)
--.25 F .82(ariable is)-.25 F .38(initially unset.)144 108 R .38
-(The follo)5.38 F .379(wing options can be used to restrict output to v)
--.25 F .379(ariables with the speci\214ed)-.25 F(attrib)144 120 Q
-(ute or to gi)-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2
-E/F2 10/Times-Bold@0 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 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
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(attrib)180 84 Q
+.227(ute modi\214cations to)-.2 F/F1 10/Times-Italic@0 SF(name)2.726 E
+F0 2.726(,e)C .226(xcept those using or changing the)-2.876 F/F2 10
+/Times-Bold@0 SF<ad6e>2.726 E F0(attrib)2.726 E .226(ute itself, are)-.2
+F .808(performed on the v)180 96 R .808(ariable referenced by)-.25 F F1
+(name)3.308 E F0 1.908 -.55('s v)D 3.308(alue. The).3 F .809
+(nameref attrib)3.309 F .809(ute cannot be)-.2 F(applied to array v)180
+108 Q(ariables.)-.25 E F2<ad72>144 120 Q F0(Mak)180 120 Q(e)-.1 E F1
+(name)3.655 E F0 3.655(sr)C(eadonly)-3.655 E 6.154(.T)-.65 G 1.154
+(hese names cannot then be assigned v)-6.154 F 1.154
+(alues by subsequent as-)-.25 F(signment statements or unset.)180 132 Q
+F2<ad74>144 144 Q F0(Gi)180 144 Q .729 -.15(ve e)-.25 H(ach).15 E F1
+(name)2.929 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E
2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2(DEB)2.929
-E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0
-(traps from the calling shell.)180 312 Q(The trace attrib)5 E
-(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2<ad75>144 324
-Q F0 .909(When the v)180 324 R .909(ariable is assigned a v)-.25 F .909
+E(UG)-.1 E F0(and)2.93 E F2(RETURN)2.93 E F0
+(traps from the calling shell.)180 156 Q(The trace attrib)5 E
+(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2<ad75>144 168
+Q F0 .91(When the v)180 168 R .909(ariable is assigned a v)-.25 F .909
(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15
-(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 336 R(lo)2.5
-E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E 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 364.8 R 2.643(ft)-.25 G .143
-(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .143
-(xceptions that)-.15 F F2(+a)2.643 E F0(and)2.643 E F2(+A)2.643 E F0
-.143(may not)2.643 F .578(be used to destro)144 376.8 R 3.079(ya)-.1 G
+(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 180 R(lo)
+2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad78>144
+192 Q F0(Mark)180 192 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
+(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .143
+(Using `+' instead of `\255' turns of)144 208.8 R 2.643(ft)-.25 G .143
+(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .144
+(xceptions that)-.15 F F2(+a)2.644 E F0(and)2.644 E F2(+A)2.644 E F0
+.144(may not)2.644 F .579(be used to destro)144 220.8 R 3.079(ya)-.1 G
.579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579
(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15
-F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 388.8 Q F2
-(declar)3.544 E(e)-.18 E F0(and)3.544 E F2(typeset)3.544 E F0(mak)3.544
-E 3.544(ee)-.1 G(ach)-3.544 E F1(name)3.543 E F0 1.043
-(local, as with the)3.543 F F2(local)3.543 E F0 1.043
-(command, unless the)3.543 F 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
+F 3.079(ute. When)-.2 F .578(used in a)3.078 F(function,)144 232.8 Q F2
+(declar)3.543 E(e)-.18 E F0(and)3.543 E F2(typeset)3.543 E F0(mak)3.543
+E 3.543(ee)-.1 G(ach)-3.543 E F1(name)3.543 E F0 1.043
+(local, as with the)3.543 F F2(local)3.544 E F0 1.044
+(command, unless the)3.544 F F2<ad67>3.544 E F0 1.205
+(option is supplied.)144 244.8 R 1.205(If a v)6.205 F 1.205
(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F1(value)A F0 3.705
(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205
-(ariable is set to)-.25 F F1(value)144 412.8 Q F0 5.218(.W)C .218
-(hen using)-5.218 F 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 424.8 R .882
+(ariable is set to)-.25 F F1(value)144 256.8 Q F0 5.217(.W)C .217
+(hen using)-5.217 F 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 268.8 R .882
(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882
(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882
-(alue is 0 unless an)-.25 F(in)144 436.8 Q -.25(va)-.4 G .366(lid optio\
+(alue is 0 unless an)-.25 F(in)144 280.8 Q -.25(va)-.4 G .365(lid optio\
n is encountered, an attempt is made to de\214ne a function using).25 F
-/F4 10/Courier@0 SF .365(\255f foo=bar)2.865 F F0 2.865(,a)C 2.865(na)
--2.865 G(t-)-2.865 E .548(tempt is made to assign a v)144 448.8 R .548
-(alue to a readonly v)-.25 F .549
-(ariable, an attempt is made to assign a v)-.25 F .549(alue to an)-.25 F
-1.749(array v)144 460.8 R 1.749
+/F3 10/Courier@0 SF .366(\255f foo=bar)2.866 F F0 2.866(,a)C 2.866(na)
+-2.866 G(t-)-2.866 E .549(tempt is made to assign a v)144 292.8 R .549
+(alue to a readonly v)-.25 F .548
+(ariable, an attempt is made to assign a v)-.25 F .548(alue to an)-.25 F
+1.748(array v)144 304.8 R 1.748
(ariable without using the compound assignment syntax \(see)-.25 F F2
-(Arrays)4.248 E F0(abo)4.248 E -.15(ve)-.15 G 1.748(\), one of the).15 F
-F1(names)144 472.8 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F
+(Arrays)4.249 E F0(abo)4.249 E -.15(ve)-.15 G 1.749(\), one of the).15 F
+F1(names)144 316.8 Q F0 .359(is not a v)2.859 F .359(alid shell v)-.25 F
.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G
-.359(eadonly status for a read-)-2.859 F 1.213(only v)144 484.8 R 1.213
+.359(eadonly status for a read-)-2.859 F 1.212(only v)144 328.8 R 1.213
(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213
-(rray status for an array v)-3.713 F 1.212(ariable, or an attempt is)
--.25 F(made to display a non-e)144 496.8 Q(xistent function with)-.15 E
-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
+(rray status for an array v)-3.713 F 1.213(ariable, or an attempt is)
+-.25 F(made to display a non-e)144 340.8 Q(xistent function with)-.15 E
+F2<ad66>2.5 E F0(.)A F2(dirs [\255clpv] [+)108 357.6 Q F1(n)A F2 2.5(][)
+C<ad>-2.5 E F1(n)A F2(])A F0 -.4(Wi)144 369.6 S .329
(thout options, displays the list of currently remembered directories.)
-.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238
-(single line with directory names separated by spaces.)144 537.6 R 1.238
-(Directories are added to the list with the)6.238 F F2(pushd)144 549.6 Q
-F0 .927(command; the)3.427 F F2(popd)3.428 E F0 .928(command remo)3.428
+.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238
+(single line with directory names separated by spaces.)144 381.6 R 1.238
+(Directories are added to the list with the)6.238 F F2(pushd)144 393.6 Q
+F0 .928(command; the)3.428 F F2(popd)3.428 E F0 .928(command remo)3.428
F -.15(ve)-.15 G 3.428(se).15 G .928(ntries from the list.)-3.428 F .928
-(The current directory is al-)5.928 F -.1(wa)144 561.6 S
-(ys the \214rst directory in the stack.).1 E 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
+(The current directory is al-)5.928 F -.1(wa)144 405.6 S
+(ys the \214rst directory in the stack.).1 E F2<ad63>144 417.6 Q F0
+(Clears the directory stack by deleting all of the entries.)180 417.6 Q
+F2<ad6c>144 429.6 Q F0 .881
+(Produces a listing using full pathnames; the def)180 429.6 R .882
(ault listing format uses a tilde to denote)-.1 F(the home directory)180
-597.6 Q(.)-.65 E 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
+441.6 Q(.)-.65 E F2<ad70>144 453.6 Q F0
+(Print the directory stack with one entry per line.)180 453.6 Q F2<ad76>
+144 465.6 Q F0 .273(Print the directory stack with one entry per line, \
+pre\214xing each entry with its inde)180 465.6 R 2.772(xi)-.15 G 2.772
+(nt)-2.772 G(he)-2.772 E(stack.)180 477.6 Q F2(+)144 489.6 Q F1(n)A F0
+1.564(Displays the)180 489.6 R F1(n)4.064 E F0 1.565
+(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F2
+(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
+(without options, starting with zero.)180 501.6 Q F2<ad>144 513.6 Q F1
+(n)A F0 1.194(Displays the)180 513.6 R F1(n)3.694 E F0 1.194
(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F
F2(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 681.6 Q .258(The return v)144
-698.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
+(without options, starting with zero.)180 525.6 Q .257(The return v)144
+542.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
(lid option is supplied or).25 F F1(n)2.758 E F0(inde)2.758 E -.15(xe)
-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
-.15 F(tory stack.)144 710.4 Q(GNU Bash 5.1)72 768 Q(2020 October 29)
-141.235 E(62)190.395 E 0 Cg EP
-%%Page: 63 63
+.15 F(tory stack.)144 554.4 Q F2(diso)108 571.2 Q(wn)-.1 E F0([)2.5 E F2
+(\255ar)A F0 2.5(][)C F2<ad68>-2.5 E F0 2.5(][)C F1(jobspec)-2.5 E F0
+(... |)2.5 E F1(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 583.2 S .122
+(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F1(jobspec)
+4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H
+2.622(obs. If).15 F F1(jobspec)4.362 E F0 .121(is not present, and)2.932
+F .096(neither the)144 595.2 R F2<ad61>2.596 E F0 .096(nor the)2.596 F
+F2<ad72>2.596 E F0 .096(option is supplied, the)2.596 F F1(curr)2.596 E
+.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F2
+<ad68>2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each)
+.15 F F1(jobspec)145.74 607.2 Q F0 .586(is not remo)3.396 F -.15(ve)-.15
+G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F
+.585(ed so that)-.1 F/F4 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585
+(is not sent to the job if the)2.835 F .962(shell recei)144 619.2 R -.15
+(ve)-.25 G 3.462(sa).15 G F4(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .962
+(If no)5.462 F F1(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F2
+<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.359(jobs; the)144 631.2 R F2
+<ad72>3.859 E F0 1.359(option without a)3.859 F F1(jobspec)5.599 E F0
+(ar)4.169 E 1.358(gument restricts operation to running jobs.)-.18 F
+1.358(The return)6.358 F -.25(va)144 643.2 S(lue is 0 unless a).25 E F1
+(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E
+F2(echo)108 660 Q F0([)2.5 E F2(\255neE)A F0 2.5(][)C F1(ar)-2.5 E(g)
+-.37 E F0(...])2.5 E .424(Output the)144 672 R F1(ar)2.924 E(g)-.37 E F0
+.424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924
+(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308
+(error occurs.)144 684 R(If)5.308 E F2<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 F2<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
+696 R .198(wing backslash-escaped characters is enabled.)-.25 F(The)
+5.198 E F2<ad45>2.698 E F0 .198(option disables the in-)2.698 F .067
+(terpretation of these escape characters, e)144 708 R -.15(ve)-.25 G
+2.567(no).15 G 2.567(ns)-2.567 G .067(ystems where the)-2.567 F 2.567
+(ya)-.15 G .067(re interpreted by def)-2.567 F 2.567(ault. The)-.1 F F2
+(xpg_echo)144 720 Q F0 .601
+(shell option may be used to dynamically determine whether or not)3.101
+F F2(echo)3.102 E F0 -.15(ex)3.102 G .602(pands these).15 F
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(65)185.115 E 0 Cg EP
+%%Page: 66 66
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(diso)108 84 Q(wn)-.1 E F0([)2.5 E F1(\255ar)A F0 2.5(][)C F1<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 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 156 S(lue is 0 unless a).25 E F2
-(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E
-F1(echo)108 172.8 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)
--.37 E F0(...])2.5 E .425(Output the)144 184.8 R F2(ar)2.925 E(g)-.37 E
-F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924
-(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307
-(error occurs.)144 196.8 R(If)5.307 E 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 .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 412.8 Q F2(HH)A F0(the eight-bit character whose v)180 412.8 Q
-(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0
-(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1
-(\\u)144 424.8 Q F2(HHHH)A F0 1.507
-(the Unicode \(ISO/IEC 10646\) character whose v)180 436.8 R 1.506
-(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
-4.006 E F0(\(one to four he)180 448.8 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
-(\\U)144 460.8 Q F2(HHHHHHHH)A F0 .547
-(the Unicode \(ISO/IEC 10646\) character whose v)180 472.8 R .547
-(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
-3.048 E(HHH)180 484.8 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
-(igits\))-2.5 E F1(enable)108 501.6 Q F0([)2.5 E 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 513.6 R
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .659
+(escape characters by def)144 84 R(ault.)-.1 E/F1 10/Times-Bold@0 SF
+(echo)5.659 E F0 .659(does not interpret)3.159 F 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 96 Q(wing escape sequences:)-.25 E F1(\\a)144
+108 Q F0(alert \(bell\))180 108 Q F1(\\b)144 120 Q F0(backspace)180 120
+Q F1(\\c)144 132 Q F0(suppress further output)180 132 Q F1(\\e)144 144 Q
+(\\E)144 156 Q F0(an escape character)180 156 Q F1(\\f)144 168 Q F0
+(form feed)180 168 Q F1(\\n)144 180 Q F0(ne)180 180 Q 2.5(wl)-.25 G(ine)
+-2.5 E F1(\\r)144 192 Q F0(carriage return)180 192 Q F1(\\t)144 204 Q F0
+(horizontal tab)180 204 Q F1(\\v)144 216 Q F0 -.15(ve)180 216 S
+(rtical tab).15 E F1(\\\\)144 228 Q F0(backslash)180 228 Q F1(\\0)144
+240 Q/F2 10/Times-Italic@0 SF(nnn)A F0(the eight-bit character whose v)
+180 240 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0
+(\(zero to three octal digits\))2.5 E F1(\\x)144 252 Q F2(HH)A F0
+(the eight-bit character whose v)180 252 Q(alue is the he)-.25 E
+(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
+-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(\\u)144 264 Q F2(HHHH)A F0
+1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 276 R 1.507
+(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
+4.007 E F0(\(one to four he)180 288 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
+(\\U)144 300 Q F2(HHHHHHHH)A F0 .548
+(the Unicode \(ISO/IEC 10646\) character whose v)180 312 R .547
+(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
+3.047 E(HHH)180 324 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\))
+-2.5 E F1(enable)108 340.8 Q F0([)2.5 E 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 .277(Enable and disable b)144 352.8 R
.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278
-(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833
-(the same name as a shell b)144 525.6 R .834(uiltin to be e)-.2 F -.15
+(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834
+(the same name as a shell b)144 364.8 R .834(uiltin to be e)-.2 F -.15
(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15
-(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99
-(the shell normally searches for b)144 537.6 R .989
-(uiltins before disk commands.)-.2 F(If)5.989 E 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 .648
-(abled; otherwise,)144 549.6 R F2(names)3.148 E F0 .648(are enabled.)
+(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989
+(the shell normally searches for b)144 376.8 R .989
+(uiltins before disk commands.)-.2 F(If)5.989 E 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 388.8 R F2(names)3.148 E F0 .648(are enabled.)
3.148 F -.15(Fo)5.648 G 3.148(re).15 G .648(xample, to use the)-3.298 F
-F1(test)3.148 E F0 .648(binary found via the)3.148 F F3 -.666(PA)3.148 G
-(TH)-.189 E F0(in-)2.899 E .539(stead of the shell b)144 561.6 R .538
-(uiltin v)-.2 F .538(ersion, run)-.15 F/F5 10/Courier@0 SF .538
-(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E 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
+F1(test)3.148 E F0 .648(binary found via the)3.148 F/F3 9/Times-Bold@0
+SF -.666(PA)3.148 G(TH)-.189 E F0(in-)2.898 E .538(stead of the shell b)
+144 400.8 R .538(uiltin v)-.2 F .538(ersion, run)-.15 F/F4 10/Courier@0
+SF .538(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F1<ad66>3.038 E
+F0 .539(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 412.8 S
1.365(iltin command).2 F F2(name)4.225 E F0 1.365(from shared object)
4.045 F F2(\214lename)5.775 E F0 3.865(,o).18 G 3.865(ns)-3.865 G 1.365
-(ystems that support dynamic loading.)-3.865 F(The)144 585.6 Q F1<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 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
-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 .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
+(ystems that support dynamic loading.)-3.865 F .606(Bash will use the v)
+144 424.8 R .606(alue of the)-.25 F F1 -.3(BA)3.106 G(SH_LO).3 E(AD)-.4
+E(ABLES_P)-.35 E -.95(AT)-.74 G(H).95 E F0 -.25(va)3.106 G .606
+(riable as a colon-separated list of).25 F .549
+(directories in which to search for)144 436.8 R F2(\214lename)3.049 E F0
+5.549(.T)C .549(he def)-5.549 F .548(ault is system-dependent.)-.1 F
+(The)5.548 E F1<ad64>3.048 E F0 .548(option will)3.048 F .546
+(delete a b)144 448.8 R .546(uiltin pre)-.2 F .546(viously loaded with)
+-.25 F F1<ad66>3.046 E F0 5.547(.I)C 3.047(fn)-5.547 G(o)-3.047 E F2
+(name)3.047 E F0(ar)3.047 E .547(guments are gi)-.18 F -.15(ve)-.25 G
+.547(n, or if the).15 F F1<ad70>3.047 E F0 .547(option is)3.047 F .546
+(supplied, a list of shell b)144 460.8 R .545(uiltins is printed.)-.2 F
+-.4(Wi)5.545 G .545(th no other option ar).4 F .545
+(guments, the list consists of all)-.18 F .695(enabled shell b)144 472.8
+R 3.195(uiltins. If)-.2 F F1<ad6e>3.195 E F0 .695
+(is supplied, only disabled b)3.195 F .695(uiltins are printed.)-.2 F
+(If)5.695 E F1<ad61>3.195 E F0 .695(is supplied, the)3.195 F .262
+(list printed includes all b)144 484.8 R .261
+(uiltins, with an indication of whether or not each is enabled.)-.2 F
+(If)5.261 E F1<ad73>2.761 E F0 .261(is sup-)2.761 F .268
+(plied, the output is restricted to the POSIX)144 496.8 R F2(special)
+2.768 E F0 -.2(bu)2.768 G 2.768(iltins. If).2 F .269
+(no options are supplied and a)2.768 F F2(name)2.769 E F0 .285
+(is not a shell b)144 508.8 R(uiltin,)-.2 E F1(enable)2.784 E F0 .284
+(will attempt to load)2.784 F F2(name)2.784 E F0 .284
+(from a shared object named)2.784 F F2(name)2.784 E F0 2.784(,a)C 2.784
+(si)-2.784 G 2.784(ft)-2.784 G(he)-2.784 E 1.41(command were)144 520.8 R
+F4 1.41(enable \255f)3.91 F F2 1.41(name name)3.91 F F0 6.41(.T)3.91 G
+1.41(he return v)-6.41 F 1.41(alue is 0 unless a)-.25 F F2(name)4.27 E
+F0 1.41(is not a shell)4.09 F -.2(bu)144 532.8 S
+(iltin or there is an error loading a ne).2 E 2.5(wb)-.25 G
+(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108 549.6 T(l).15
+E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 561.6 Q F2(ar)3.171
+E(g)-.37 E F0 3.171(sa)C .671
+(re read and concatenated together into a single command.)-3.171 F .67
+(This command is then read)5.67 F .478(and e)144 573.6 R -.15(xe)-.15 G
+.478(cuted by the shell, and its e).15 F .478
+(xit status is returned as the v)-.15 F .479(alue of)-.25 F F1 -2.3 -.15
+(ev a)2.979 H(l).15 E F0 5.479(.I)C 2.979(ft)-5.479 G .479(here are no)
+-2.979 F F2(ar)3.309 E(gs)-.37 E F0(,).27 E(or only null ar)144 585.6 Q
+(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1
+(exec)108 602.4 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<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 614.4 Q F2(command)3.006 E F0 .306
+(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805
+(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E
+(guments)-.37 E F0(become)3.075 E .176(the ar)144 626.4 R .176
+(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G
+(he)-2.676 E 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 .48(the zeroth ar)144 638.4 R .48(gument passed to)
+-.18 F F2(command)3.18 E F0 5.48(.T).77 G .48(his is what)-5.48 F F2(lo)
+3.07 E(gin)-.1 E F0 .48(\(1\) does.).24 F(The)5.48 E F1<ad63>2.98 E F0
+.48(option causes)2.98 F F2(com-)3.18 E(mand)144 650.4 Q F0 .638
+(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138
+(vironment. If)-.4 F 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 662.4 R 1.077(gument to the e)-.18 F -.15
+(xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0
+1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a)
+.15 F(non-interacti)144 674.4 Q .876 -.15(ve s)-.25 H .576(hell e).15 F
+.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577
+(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577
+F(ail-)-.1 E 3.32(ure. An)144 686.4 R(interacti)3.32 E 1.12 -.15(ve s)
+-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1
+F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82
+(xits uncondi-)-.15 F .287(tionally if)144 698.4 R F1(exec)2.787 E F0
+-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287
+(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak)
+-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,)
+.25 F(and the return status is 0.)144 710.4 Q
+(If there is a redirection error)5 E 2.5(,t)-.4 G
+(he return status is 1.)-2.5 E(GNU Bash 5.2)72 768 Q(2022 September 19)
+135.955 E(66)185.115 E 0 Cg EP
+%%Page: 67 67
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(exec)108 84 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<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.498 E F0 .638(as the)
-3.318 F 1.077(zeroth ar)144 144 R 1.077(gument to the e)-.18 F -.15(xe)
--.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077
-(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a).15 F
-(non-interacti)144 156 Q .877 -.15(ve s)-.25 H .577(hell e).15 F .577
-(xits, unless the)-.15 F F1(execfail)3.077 E F0 .577
-(shell option is enabled.)3.077 F .576(In that case, it returns f)5.577
-F(ail-)-.1 E 3.32(ure. An)144 168 R(interacti)3.32 E 1.12 -.15(ve s)-.25
-H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 F
--.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82
-(xits uncondi-)-.15 F .288(tionally if)144 180 R F1(exec)2.788 E F0 -.1
-(fa)2.788 G 2.788(ils. If).1 F F2(command)2.988 E F0 .288
-(is not speci\214ed, an)3.558 F 2.787(yr)-.15 G .287(edirections tak)
--2.787 F 2.787(ee)-.1 G -.25(ff)-2.787 G .287(ect in the current shell,)
-.25 F(and the return status is 0.)144 192 Q
-(If there is a redirection error)5 E 2.5(,t)-.4 G
-(he return status is 1.)-2.5 E F1(exit)108 208.8 Q F0([)2.5 E F2(n)A F0
-(])A .095(Cause the shell to e)144 208.8 R .095(xit with a status of)
--.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096
-(is omitted, the e)2.835 F .096(xit status is that of the last command)
--.15 F -.15(exe)144 220.8 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9
-/Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G
-(cuted before the shell terminates.).15 E F1(export)108 237.6 Q F0([)2.5
-E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E
-F0(]] ...)A F1(export \255p)108 249.6 Q F0 .257(The supplied)144 261.6 R
-F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F
-.257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15
-(xe)-.15 G(cuted).15 E 2.626(commands. If)144 273.6 R(the)2.626 E F1
-<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 .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
+SF(exit)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(n)A F0(])A .096
+(Cause the shell to e)144 84 R .096(xit with a status of)-.15 F F2(n)
+2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095(is omitted, the e)
+2.835 F .095(xit status is that of the last command)-.15 F -.15(exe)144
+96 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9/Times-Bold@0 SF(EXIT)2.5 E F0
+(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E F1
+(export)108 112.8 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5
+E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A F1(export \255p)108 124.8 Q F0
+.256(The supplied)144 136.8 R F2(names)3.117 E F0 .257(are mark)3.027 F
+.257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257
+(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.627
+(commands. If)144 148.8 R(the)2.627 E 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 160.8 Q F0 .048(option is supplied, a list of names of all e)2.547 F
+.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1
+<ad6e>2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 172.8 S
+1.447(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447
(rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G
1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d)
--.37 E F0 3.947(,t)C(he)-3.947 E -.25(va)144 309.6 S .742(lue of the v)
-.25 F .742(ariable is set to)-.25 F F2(wor)3.242 E(d)-.37 E F0(.)A F1
-(export)5.742 E F0 .742(returns an e)3.242 F .741
-(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .741(lid option is)
-.25 F .031(encountered, one of the)144 321.6 R F2(names)2.531 E F0 .031
-(is not a v)2.531 F .032(alid shell v)-.25 F .032(ariable name, or)-.25
-F 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
+-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 184.8 S .741(lue of the v)
+.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1
+(export)5.741 E F0 .742(returns an e)3.242 F .742
+(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is)
+.25 F .032(encountered, one of the)144 196.8 R F2(names)2.532 E F0 .032
+(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25
+F 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 208.8 Q F1(fc)108 225.6 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
-362.4 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
-(cmd)-2.5 E F0(])A .432
-(The \214rst form selects a range of commands from)144 374.4 R F2<8c72>
-4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .431
-(from the history list and displays or)3.612 F .141(edits and re-e)144
-386.4 R -.15(xe)-.15 G .141(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
+237.6 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
+(cmd)-2.5 E F0(])A .431
+(The \214rst form selects a range of commands from)144 249.6 R F2<8c72>
+4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432
+(from the history list and displays or)3.612 F .142(edits and re-e)144
+261.6 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
.45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141
(may be speci\214ed as a string \(to locate the last command)3.321 F(be)
-144 398.4 Q .311(ginning with that string\) or as a number \(an inde)
--.15 F 2.811(xi)-.15 G .31(nto the history list, where a ne)-2.811 F
--.05(ga)-.15 G(ti).05 E .61 -.15(ve n)-.25 H(umber).15 E .071
-(is used as an of)144 410.4 R .071
+144 273.6 Q .31(ginning with that string\) or as a number \(an inde)-.15
+F 2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05
+(ga)-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .071
+(is used as an of)144 285.6 R .071
(fset from the current command number\).)-.25 F .071(When listing, a)
5.071 F F2<8c72>2.571 E(st)-.1 E F0(or)2.571 E F2(last)2.571 E F0 .071
(of 0 is equi)2.571 F -.25(va)-.25 G(-).25 E .653
-(lent to \2551 and \2550 is equi)144 422.4 R -.25(va)-.25 G .653
+(lent to \2551 and \2550 is equi)144 297.6 R -.25(va)-.25 G .653
(lent to the current command \(usually the).25 F F1(fc)3.153 E F0 .653
-(command\); otherwise 0 is)3.153 F(equi)144 434.4 Q -.25(va)-.25 G .242
+(command\); otherwise 0 is)3.153 F(equi)144 309.6 Q -.25(va)-.25 G .242
(lent to \2551 and \2550 is in).25 F -.25(va)-.4 G 2.742(lid. If).25 F
F2(last)2.832 E F0 .242
(is not speci\214ed, it is set to the current command for list-)3.422 F
-.093(ing \(so that)144 446.4 R/F4 10/Courier@0 SF .093(fc \255l \25510)
-2.593 F F0 .093(prints the last 10 commands\) and to)2.593 F F2<8c72>
-4.502 E(st)-.1 E F0 2.592(otherwise. If)3.272 F F2<8c72>4.502 E(st)-.1 E
-F0 .092(is not speci-)3.272 F(\214ed, it is set to the pre)144 458.4 Q
-(vious command for editing and \25516 for listing.)-.25 E(The)144 482.4
+.092(ing \(so that)144 321.6 R/F4 10/Courier@0 SF .092(fc \255l \25510)
+2.592 F F0 .093(prints the last 10 commands\) and to)2.592 F F2<8c72>
+4.503 E(st)-.1 E F0 2.593(otherwise. If)3.273 F F2<8c72>4.503 E(st)-.1 E
+F0 .093(is not speci-)3.273 F(\214ed, it is set to the pre)144 333.6 Q
+(vious command for editing and \25516 for listing.)-.25 E(The)144 357.6
Q 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 494.4 R .438(If the)
+(rses the order of).15 F .438(the commands.)144 369.6 R .438(If the)
5.438 F 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
-.334(the editor gi)144 506.4 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E
-F2(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835
+.335(the editor gi)144 381.6 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E
+F2(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835
(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835
-F(If)5.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G
-(n,).15 E .631(the v)144 518.4 R .631(alue of the)-.25 F F3(FCEDIT)3.131
-E F0 -.25(va)2.881 G .631(riable is used, and the v).25 F .631(alue of)
--.25 F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.13 E F0 .63
-(is not set.)2.88 F .63(If nei-)5.63 F .005(ther v)144 530.4 R .005
+F(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G
+(n,).15 E .63(the v)144 393.6 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E
+F0 -.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25
+F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631
+(is not set.)2.881 F .631(If nei-)5.631 F .006(ther v)144 405.6 R .006
(ariable is set,)-.25 F F2(vi)4.171 E F0 .005(is used.)4.171 F .005
(When editing is complete, the edited commands are echoed and e)5.005 F
-(x-)-.15 E(ecuted.)144 542.4 Q .789(In the second form,)144 566.4 R F2
+(x-)-.15 E(ecuted.)144 417.6 Q .788(In the second form,)144 441.6 R F2
(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788
(cuted after each instance of).15 F F2(pat)3.288 E F0 .788
-(is replaced by)3.288 F F2 -.37(re)3.288 G(p).37 E F0(.)A F2(Com-)5.788
-E(mand)144 578.4 Q F0 .171(is interpreted the same as)2.671 F F2<8c72>
-2.671 E(st)-.1 E F0(abo)2.671 E -.15(ve)-.15 G 5.171(.A).15 G .172
-(useful alias to use with this is)-2.499 F F4 .172(r='fc \255s')2.672 F
-F0 2.672(,s)C 2.672(ot)-2.672 G(hat)-2.672 E(typing)144 590.4 Q F4 7.166
-(rc)3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166
-(ginning with)-.15 F F4(cc)3.666 E F0 1.165(and typing)3.666 F F4(r)
-3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F
-(mand.)144 602.4 Q .142(If the \214rst form is used, the return v)144
-626.4 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
+(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789
+E(mand)144 453.6 Q F0 .172(is interpreted the same as)2.672 F F2<8c72>
+2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171
+(useful alias to use with this is)-2.5 F F4 .171(r='fc \255s')2.671 F F0
+2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 465.6 Q F4 7.165
+(rc)3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166
+(ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r)
+3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F
+(mand.)144 477.6 Q .142(If the \214rst form is used, the return v)144
+501.6 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
(lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322
-E F2(last)2.732 E F0 .455(specify history lines out of range.)144 638.4
+E F2(last)2.732 E F0 .454(specify history lines out of range.)144 513.6
R .454(If the)5.454 F 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
+(option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455
+(alue of the)-.25 F .788(last command e)144 525.6 R -.15(xe)-.15 G .788
+(cuted or f).15 F .787
(ailure if an error occurs with the temporary \214le of commands.)-.1 F
-.788(If the)5.788 F 1.136
+.787(If the)5.787 F 1.135
(second form is used, the return status is that of the command re-e)144
-662.4 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F2(cmd)3.835 E F0 1.135
-(does not)4.405 F(specify a v)144 674.4 Q
+537.6 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136
+(does not)4.406 F(specify a v)144 549.6 Q
(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E
-(ailure.)-.1 E F1(fg)108 691.2 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)
-144 703.2 Q F2(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413
+(ailure.)-.1 E F1(fg)108 566.4 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)
+144 578.4 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413
(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413
(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0
-1.414(is not present, the)4.223 F(shell')144 715.2 Q 3.117(sn)-.55 G
-.617(otion of the)-3.117 F F2(curr)3.117 E .617(ent job)-.37 F F0 .617
-(is used.)3.117 F .617(The return v)5.617 F .616
-(alue is that of the command placed into the)-.25 F(fore)144 727.2 Q
-.362(ground, or f)-.15 F .362
-(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363
-(hen run with job control enabled, if)-2.862 F(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(64)190.395 E 0 Cg EP
-%%Page: 65 65
+1.413(is not present, the)4.223 F(shell')144 590.4 Q 3.116(sn)-.55 G
+.616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617
+(is used.)3.116 F .617(The return v)5.617 F .617
+(alue is that of the command placed into the)-.25 F(fore)144 602.4 Q
+.363(ground, or f)-.15 F .363
+(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362
+(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 614.4 Q
+F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0
+(speci\214es a job that w)2.81 E(as started without job control.)-.1 E
+F1(getopts)108 631.2 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A 2.5
+(g.)-.37 G(..)-2.5 E F0(])A F1(getopts)144 643.2 Q F0 .793
+(is used by shell procedures to parse positional parameters.)3.293 F F2
+(optstring)6.023 E F0 .793(contains the option)3.513 F .15
+(characters to be recognized; if a character is follo)144 655.2 R .149
+(wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449
+-.15(ve a)-.2 H(n).15 E(ar)144 667.2 Q .578
+(gument, which should be separated from it by white space.)-.18 F .579
+(The colon and question mark char)5.579 F(-)-.2 E .636
+(acters may not be used as option characters.)144 679.2 R .636
+(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts)
+3.136 E F0 .636(places the ne)3.136 F .635(xt op-)-.15 F .029
+(tion in the shell v)144 691.2 R(ariable)-.25 E F2(name)2.889 E F0 2.529
+(,i).18 G(nitializing)-2.529 E F2(name)2.889 E F0 .029(if it does not e)
+2.709 F .03(xist, and the inde)-.15 F 2.53(xo)-.15 G 2.53(ft)-2.53 G .03
+(he ne)-2.53 F .03(xt ar)-.15 F(gu-)-.18 E .066
+(ment to be processed into the v)144 703.2 R(ariable)-.25 E F3(OPTIND)
+2.566 E/F5 9/Times-Roman@0 SF(.)A F3(OPTIND)4.566 E F0 .065
+(is initialized to 1 each time the shell or a)2.315 F .885
+(shell script is in)144 715.2 R -.2(vo)-.4 G -.1(ke).2 G 3.385(d. When)
+.1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F1(getopts)
+3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F .567
+(the v)144 727.2 R(ariable)-.25 E F3(OPT)3.067 E(ARG)-.81 E F5(.)A F0
+.566(The shell does not reset)5.067 F F3(OPTIND)3.066 E F0 .566
+(automatically; it must be manually reset)2.816 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(67)185.115 E 0 Cg EP
+%%Page: 68 68
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
-/Times-Italic@0 SF(jobspec)145.74 84 Q F0(does not specify a v)2.81 E
-(alid job or)-.25 E F1(jobspec)4.24 E F0(speci\214es a job that w)2.81 E
-(as started without job control.)-.1 E/F2 10/Times-Bold@0 SF(getopts)108
-100.8 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A 2.5(g.)-.37 G(..)-2.5
-E F0(])A F2(getopts)144 112.8 Q F0 .793
-(is used by shell procedures to parse positional parameters.)3.294 F F1
-(optstring)6.023 E F0 .793(contains the option)3.513 F .149
-(characters to be recognized; if a character is follo)144 124.8 R .15
-(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45
--.15(ve a)-.2 H(n).15 E(ar)144 136.8 Q .579
-(gument, which should be separated from it by white space.)-.18 F .578
-(The colon and question mark char)5.579 F(-)-.2 E .636
-(acters may not be used as option characters.)144 148.8 R .636
-(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts)
-3.136 E F0 .636(places the ne)3.136 F .636(xt op-)-.15 F .03
-(tion in the shell v)144 160.8 R(ariable)-.25 E F1(name)2.89 E F0 2.53
-(,i).18 G(nitializing)-2.53 E F1(name)2.89 E F0 .029(if it does not e)
-2.71 F .029(xist, and the inde)-.15 F 2.529(xo)-.15 G 2.529(ft)-2.529 G
-.029(he ne)-2.529 F .029(xt ar)-.15 F(gu-)-.18 E .065
-(ment to be processed into the v)144 172.8 R(ariable)-.25 E/F3 9
-/Times-Bold@0 SF(OPTIND)2.565 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND)
-4.565 E F0 .066(is initialized to 1 each time the shell or a)2.315 F
-.885(shell script is in)144 184.8 R -.2(vo)-.4 G -.1(ke).2 G 3.385
-(d. When).1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F2
-(getopts)3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F
-.566(the v)144 196.8 R(ariable)-.25 E F3(OPT)3.066 E(ARG)-.81 E F4(.)A
-F0 .566(The shell does not reset)5.066 F F3(OPTIND)3.066 E F0 .567
-(automatically; it must be manually reset)2.816 F .39
-(between multiple calls to)144 208.8 R F2(getopts)2.89 E F0 .39
-(within the same shell in)2.89 F -.2(vo)-.4 G .389(cation if a ne).2 F
-2.889(ws)-.25 G .389(et of parameters is to)-2.889 F(be used.)144 220.8
-Q 2.043(When the end of options is encountered,)144 244.8 R F2(getopts)
-4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044
-(alue greater than zero.)-.25 F F3(OPTIND)144 256.8 Q F0
-(is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G
-(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0
-(is set to ?.)2.5 E F2(getopts)144 280.8 Q F0 .485
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .389
+(between multiple calls to)144 84 R/F1 10/Times-Bold@0 SF(getopts)2.889
+E F0 .389(within the same shell in)2.889 F -.2(vo)-.4 G .39
+(cation if a ne).2 F 2.89(ws)-.25 G .39(et of parameters is to)-2.89 F
+(be used.)144 96 Q 2.044(When the end of options is encountered,)144 120
+R F1(getopts)4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F
+2.043(alue greater than zero.)-.25 F/F2 9/Times-Bold@0 SF(OPTIND)144 132
+Q F0(is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G
+(he \214rst non-option ar)-2.5 E(gument, and)-.18 E/F3 10/Times-Italic@0
+SF(name)2.5 E F0(is set to ?.)2.5 E F1(getopts)144 156 Q F0 .485
(normally parses the positional parameters, b)2.985 F .485
-(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F1(ar)3.315 E
-(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 292.8 Q F2(getopts)2.5 E
-F0(parses those instead.)2.5 E F2(getopts)144 316.8 Q F0 .345
+(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F3(ar)3.315 E
+(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 168 Q F1(getopts)2.5 E F0
+(parses those instead.)2.5 E F1(getopts)144 192 Q F0 .345
(can report errors in tw)2.845 F 2.845(ow)-.1 G 2.845(ays. If)-2.945 F
-.345(the \214rst character of)2.845 F F1(optstring)3.075 E F0 .345
-(is a colon,)3.065 F F1(silent)3.185 E F0 .345(error re-)3.525 F 1.669
-(porting is used.)144 328.8 R 1.668
-(In normal operation, diagnostic messages are printed when in)6.669 F
--.25(va)-.4 G 1.668(lid options or).25 F .393(missing option ar)144
-340.8 R .393(guments are encountered.)-.18 F .394(If the v)5.394 F
-(ariable)-.25 E F3(OPTERR)2.894 E F0 .394
-(is set to 0, no error messages)2.644 F(will be displayed, e)144 352.8 Q
--.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E
-F1(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 376.8 R
--.25(va)-.4 G .667(lid option is seen,).25 F F2(getopts)3.167 E F0 .667
-(places ? into)3.167 F F1(name)3.527 E F0 .666
-(and, if not silent, prints an error message)3.347 F .399(and unsets)144
-388.8 R F3(OPT)2.899 E(ARG)-.81 E F4(.)A F0(If)4.899 E F2(getopts)2.899
-E F0 .399(is silent, the option character found is placed in)2.899 F F3
-(OPT)2.899 E(ARG)-.81 E F0 .4(and no)2.65 F
-(diagnostic message is printed.)144 400.8 Q 1.242(If a required ar)144
-424.8 R 1.242(gument is not found, and)-.18 F F2(getopts)3.741 E F0
-1.241(is not silent, a question mark \()3.741 F F2(?).833 E F0 3.741
-(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F F1(name)144.36
-436.8 Q F0(,).18 E F3(OPT)2.713 E(ARG)-.81 E F0 .213
-(is unset, and a diagnostic message is printed.)2.463 F(If)5.213 E F2
-(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F2(:).833 E
-F0(\)).833 E(is placed in)144 448.8 Q F1(name)2.86 E F0(and)2.68 E F3
-(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F2
-(getopts)144 472.8 Q F0 .902
+.345(the \214rst character of)2.845 F F3(optstring)3.075 E F0 .345
+(is a colon,)3.065 F F3(silent)3.185 E F0 .345(error re-)3.525 F 1.668
+(porting is used.)144 204 R 1.668
+(In normal operation, diagnostic messages are printed when in)6.668 F
+-.25(va)-.4 G 1.669(lid options or).25 F .394(missing option ar)144 216
+R .394(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable)
+-.25 E F2(OPTERR)2.894 E F0 .394(is set to 0, no error messages)2.644 F
+(will be displayed, e)144 228 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5
+G(he \214rst character of)-2.5 E F3(optstring)2.73 E F0(is not a colon.)
+2.72 E .666(If an in)144 252 R -.25(va)-.4 G .666(lid option is seen,)
+.25 F F1(getopts)3.166 E F0 .667(places ? into)3.167 F F3(name)3.527 E
+F0 .667(and, if not silent, prints an error message)3.347 F .4
+(and unsets)144 264 R F2(OPT)2.9 E(ARG)-.81 E/F4 9/Times-Roman@0 SF(.)A
+F0(If)4.899 E F1(getopts)2.899 E F0 .399
+(is silent, the option character found is placed in)2.899 F F2(OPT)2.899
+E(ARG)-.81 E F0 .399(and no)2.649 F(diagnostic message is printed.)144
+276 Q 1.241(If a required ar)144 300 R 1.241(gument is not found, and)
+-.18 F F1(getopts)3.741 E F0 1.241(is not silent, a question mark \()
+3.741 F F1(?).833 E F0 3.742(\)i).833 G 3.742(sp)-3.742 G 1.242
+(laced in)-3.742 F F3(name)144.36 312 Q F0(,).18 E F2(OPT)2.714 E(ARG)
+-.81 E F0 .213(is unset, and a diagnostic message is printed.)2.463 F
+(If)5.213 E F1(getopts)2.713 E F0 .213(is silent, then a colon \()2.713
+F F1(:).833 E F0(\)).833 E(is placed in)144 324 Q F3(name)2.86 E F0(and)
+2.68 E F2(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)
+2.25 E F1(getopts)144 348 Q F0 .902
(returns true if an option, speci\214ed or unspeci\214ed, is found.)
-3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F
-(options is encountered or an error occurs.)144 484.8 Q F2(hash)108
-501.6 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2<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 513.6 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)
--.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F1(name)
+3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F
+(options is encountered or an error occurs.)144 360 Q F1(hash)108 376.8
+Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1<ad70>-2.5 E F3(\214lename)2.5 E
+F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F3(name)-2.5 E F0(])A .858
+(Each time)144 388.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4
+G -.1(ke).2 G .858(d, the full pathname of the command).1 F F3(name)
3.718 E F0 .858(is determined by searching)3.538 F .956
-(the directories in)144 525.6 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0
+(the directories in)144 400.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0
.956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956
-(viously-remembered pathname is discarded.)-.25 F .242(If the)144 537.6
-R 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
+(viously-remembered pathname is discarded.)-.25 F .243(If the)144 412.8
+R F1<ad70>2.743 E F0 .243
+(option is supplied, no path search is performed, and)2.743 F F3
+(\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F .615
+(of the command.)144 424.8 R(The)5.615 E 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 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
+(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 436.8 R .294
+(get the remembered location of each)-.18 F F3(name)2.793 E F0 5.293(.I)
+C 2.793(ft)-5.293 G(he)-2.793 E F1<ad74>2.793 E F0 .293
+(option is supplied,)2.793 F .028(the full pathname to which each)144
+448.8 R F3(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028
+(If multiple)5.028 F F3(name)2.528 E F0(ar)2.528 E .028
+(guments are sup-)-.18 F .176(plied with)144 460.8 R F1<ad74>2.676 E F0
+2.676(,t)C(he)-2.676 E F3(name)2.676 E F0 .175
+(is printed before the hashed full pathname.)2.676 F(The)5.175 E F1
+<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 472.8 R .783
(If no ar)5.783 F .783(guments are gi)-.18 F -.15(ve)-.25 G .783
-(n, or if only).15 F 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
+(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 484.8 R
+.807(The return status is true unless a)5.807 F F3(name)144.36 496.8 Q
F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.)
-.25 E F2(help)108 638.4 Q F0([)2.5 E F2(\255dms)A F0 2.5(][)C F1
-(pattern)-2.5 E F0(])A .867(Display helpful information about b)144
-650.4 R .867(uiltin commands.)-.2 F(If)5.867 E F1(pattern)4.617 E F0
-.866(is speci\214ed,)3.607 F F2(help)3.366 E F0(gi)3.366 E -.15(ve)-.25
-G 3.366(sd).15 G(etailed)-3.366 E .223(help on all commands matching)144
-662.4 R F1(pattern)3.973 E F0 2.723(;o).24 G .223
-(therwise help for all the b)-2.723 F .224
-(uiltins and shell control struc-)-.2 F(tures is printed.)144 674.4 Q F2
-<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
+.25 E F1(help)108 513.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F3
+(pattern)-2.5 E F0(])A .866(Display helpful information about b)144
+525.6 R .867(uiltin commands.)-.2 F(If)5.867 E F3(pattern)4.617 E F0
+.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25
+G 3.367(sd).15 G(etailed)-3.367 E .224(help on all commands matching)144
+537.6 R F3(pattern)3.974 E F0 2.723(;o).24 G .223
+(therwise help for all the b)-2.723 F .223
+(uiltins and shell control struc-)-.2 F(tures is printed.)144 549.6 Q F1
+<ad64>144 561.6 Q F0(Display a short description of each)180 561.6 Q F3
+(pattern)2.5 E F1<ad6d>144 573.6 Q F0(Display the description of each)
+180 573.6 Q F3(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G
+(ormat)-2.5 E F1<ad73>144 585.6 Q F0
+(Display only a short usage synopsis for each)180 585.6 Q F3(pattern)2.5
+E F0(The return status is 0 unless no command matches)144 602.4 Q F3
+(pattern)3.75 E F0(.).24 E F1(history [)108 619.2 Q F3(n)A F1(])A
+(history \255c)108 631.2 Q(history \255d)108 643.2 Q F3(of)2.5 E(fset)
+-.18 E F1(history \255d)108 655.2 Q F3(start)2.5 E F0<ad>A F3(end)A F1
+(history \255anrw)108 667.2 Q F0([)2.5 E F3(\214lename)A F0(])A F1
+(history \255p)108 679.2 Q F3(ar)2.5 E(g)-.37 E F0([)2.5 E F3(ar)A 2.5
+(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 691.2 Q F3(ar)2.5 E(g)
+-.37 E F0([)2.5 E F3(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144
+703.2 S .752
+(th no options, display the command history list with line numbers.).4 F
+.752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2
+G .381(been modi\214ed.)144 715.2 R .38(An ar)5.38 F .38(gument of)-.18
+F F3(n)3.24 E F0 .38(lists only the last)3.12 F F3(n)3.24 E F0 2.88
+(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E F2(HISTTIMEFOR-)
+2.88 E(MA)144 727.2 Q(T)-.855 E F0 1.491
+(is set and not null, it is used as a format string for)3.741 F F3
+(strftime)3.992 E F0 1.492(\(3\) to display the time stamp)B
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(68)185.115 E 0 Cg EP
+%%Page: 69 69
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(history [)108 84 Q/F2 10/Times-Italic@0 SF(n)A F1(])A(history \255c)
-108 96 Q(history \255d)108 108 Q F2(of)2.5 E(fset)-.18 E F1
-(history \255d)108 120 Q F2(start)2.5 E 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.251 E F0(ha)3.251 E -.15(ve)-.2
-G .38(been modi\214ed.)144 180 R .38(An ar)5.38 F .38(gument of)-.18 F
-F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88
-(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9
-/Times-Bold@0 SF(HISTTIMEFOR-)2.881 E(MA)144 192 Q(T)-.855 E F0 .265
-(is set and not null, it is used as a format string for)2.515 F F2
-(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019
-(ciated with each displayed history entry)144 204 R 6.019(.N)-.65 G
-3.519(oi)-6.019 G(nterv)-3.519 E 1.019
-(ening blank is printed between the formatted)-.15 F .176
-(time stamp and the history line.)144 216 R(If)5.176 E F2(\214lename)
-2.676 E F0 .176
-(is supplied, it is used as the name of the history \214le; if)2.676 F
-(not, the v)144 228 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)2.25
-E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E 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)
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .379
+(associated with each displayed history entry)144 84 R 5.379(.N)-.65 G
+2.878(oi)-5.379 G(nterv)-2.878 E .378
+(ening blank is printed between the format-)-.15 F .814
+(ted time stamp and the history line.)144 96 R(If)5.814 E/F1 10
+/Times-Italic@0 SF(\214lename)3.314 E F0 .814
+(is supplied, it is used as the name of the history)3.314 F
+(\214le; if not, the v)144 108 Q(alue of)-.25 E/F2 9/Times-Bold@0 SF
+(HISTFILE)2.5 E F0(is used.)2.25 E(Options, if supplied, ha)5 E .3 -.15
+(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E/F3 10/Times-Bold@0 SF
+<ad63>144 120 Q F0(Clear the history list by deleting all the entries.)
+180 120 Q F3<ad64>144 132 Q F1(of)2.5 E(fset)-.18 E F0 .39
+(Delete the history entry at position)180 144 R F1(of)2.889 E(fset)-.18
+E F0 5.389(.I)C(f)-5.389 E F1(of)2.889 E(fset)-.18 E F0 .389(is ne)2.889
+F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti)-2.889
+G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve)-.25 G
+.598(to one greater than the last history position, so ne)180 156 R -.05
+(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599
+(ndices count back from the end).15 F(of the history)180 168 Q 2.5(,a)
-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G
-(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1
-<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 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 360 Q
+(efers to the current)-2.5 E F3(history -d)2.5 E F0(command.)2.5 E F3
+<ad64>144 180 Q F1(start)2.5 E F0<ad>A F1(end)A F0 1.25
+(Delete the range of history entries between positions)180 192 R F1
+(start)3.75 E F0(and)3.75 E F1(end)3.75 E F0 3.75(,i)C(nclusi)-3.75 E
+-.15(ve)-.25 G 6.25(.P).15 G(ositi)-6.25 E -.15(ve)-.25 G(and ne)180 204
+Q -.05(ga)-.15 G(ti).05 E .3 -.15(ve v)-.25 H(alues for)-.1 E F1(start)
+2.5 E F0(and)2.5 E F1(end)2.5 E F0(are interpreted as described abo)2.5
+E -.15(ve)-.15 G(.).15 E F3<ad61>144 216 Q F0 .564(Append the `)180 216
+R(`ne)-.74 E(w')-.25 E 3.064('h)-.74 G .564
+(istory lines to the history \214le.)-3.064 F .565
+(These are history lines entered since)5.564 F(the be)180 228 Q
+(ginning of the current)-.15 E F3(bash)2.5 E F0(session, b)2.5 E
+(ut not already appended to the history \214le.)-.2 E F3<ad6e>144 240 Q
F0 .854(Read the history lines not already read from the history \214le\
- into the current history list.)180 360 R .773
-(These are lines appended to the history \214le since the be)180 372 R
-.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E
-(sion.)180 384 Q 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)
+ into the current history list.)180 240 R .772
+(These are lines appended to the history \214le since the be)180 252 R
+.773(ginning of the current)-.15 F F3(bash)3.273 E F0(ses-)3.273 E
+(sion.)180 264 Q F3<ad72>144 276 Q F0(Read the contents of the history \
+\214le and append them to the current history list.)180 276 Q F3<ad77>
+144 288 Q F0(Write the current history list to the history \214le, o)180
+288 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G
+(ontents.)-2.5 E F3<ad70>144 300 Q F0 .626
+(Perform history substitution on the follo)180 300 R(wing)-.25 E F1(ar)
+3.125 E(gs)-.37 E F0 .625(and display the result on the standard)3.125 F
+2.975(output. Does)180 312 R .475
+(not store the results in the history list.)2.975 F(Each)5.475 E F1(ar)
2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F
-(normal history e)180 444 Q(xpansion.)-.15 E 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)
+(normal history e)180 324 Q(xpansion.)-.15 E F3<ad73>144 336 Q F0 .363
+(Store the)180 336 R F1(ar)3.193 E(gs)-.37 E F0 .363
+(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362
+(he last command in the history list is)-5.363 F(remo)180 348 Q -.15(ve)
+-.15 G 2.5(db).15 G(efore the)-2.5 E F1(ar)2.83 E(gs)-.37 E F0
+(are added.)2.77 E .145(If the)144 364.8 R F2(HISTTIMEFORMA)2.645 E(T)
-.855 E F0 -.25(va)2.395 G .145
(riable is set, the time stamp information associated with each history)
-.25 F .668(entry is written to the history \214le, mark)144 496.8 R .669
-(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669
-(hen the history)-5.669 F .956(\214le is read, lines be)144 508.8 R .956
-(ginning with the history comment character follo)-.15 F .955
-(wed immediately by a digit)-.25 F .832
-(are interpreted as timestamps for the follo)144 520.8 R .832
-(wing history entry)-.25 F 5.833(.T)-.65 G .833(he return v)-5.833 F
-.833(alue is 0 unless an in-)-.25 F -.25(va)144 532.8 S .168(lid option\
+.25 F .669(entry is written to the history \214le, mark)144 376.8 R .669
+(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668
+(hen the history)-5.668 F .955(\214le is read, lines be)144 388.8 R .956
+(ginning with the history comment character follo)-.15 F .956
+(wed immediately by a digit)-.25 F .833
+(are interpreted as timestamps for the follo)144 400.8 R .833
+(wing history entry)-.25 F 5.832(.T)-.65 G .832(he return v)-5.832 F
+.832(alue is 0 unless an in-)-.25 F -.25(va)144 412.8 S .168(lid option\
is encountered, an error occurs while reading or writing the history \
-\214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)2.668 E(f-)-.18 E(set)
-144 544.8 Q F0(is supplied as an ar)2.5 E(gument to)-.18 E 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
+\214le, an in).25 F -.25(va)-.4 G(lid).25 E F1(of)2.669 E(f-)-.18 E(set)
+144 424.8 Q F0 .341(or range is supplied as an ar)2.841 F .341
+(gument to)-.18 F F3<ad64>2.841 E F0 2.841(,o)C 2.84(rt)-2.841 G .34
+(he history e)-2.84 F .34(xpansion supplied as an ar)-.15 F .34
+(gument to)-.18 F F3<ad70>144 436.8 Q F0 -.1(fa)2.5 G(ils.).1 E F3(jobs)
+108 453.6 Q F0([)2.5 E F3(\255lnprs)A F0 2.5(][)C F1(jobspec)A F0(... ])
+2.5 E F3(jobs \255x)108 465.6 Q F1(command)2.5 E F0([)2.5 E F1(ar)2.5 E
+(gs)-.37 E F0(... ])2.5 E(The \214rst form lists the acti)144 477.6 Q .3
+-.15(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H
+(he follo).15 E(wing meanings:)-.25 E F3<ad6c>144 489.6 Q F0
+(List process IDs in addition to the normal information.)180 489.6 Q F3
+<ad6e>144 501.6 Q F0 .193(Display information only about jobs that ha)
+180 501.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15
+F .194(as last noti-)-.1 F(\214ed of their status.)180 513.6 Q F3<ad70>
+144 525.6 Q F0(List only the process ID of the job')180 525.6 Q 2.5(sp)
+-.55 G(rocess group leader)-2.5 E(.)-.55 E F3<ad72>144 537.6 Q F0
+(Display only running jobs.)180 537.6 Q F3<ad73>144 549.6 Q F0
+(Display only stopped jobs.)180 549.6 Q(If)144 566.4 Q F1(jobspec)4.554
E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314
(n, output is restricted to information about that job).15 F 5.313(.T)
--.4 G .313(he return status is 0 unless)-5.313 F(an in)144 686.4 Q -.25
+-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 578.4 Q -.25
(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25
-E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 703.2 R F1
-<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)
+E F1(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 595.2 R F3
+<ad78>2.894 E F0 .394(option is supplied,)2.894 F F3(jobs)2.894 E F0
+.394(replaces an)2.894 F(y)-.15 E F1(jobspec)4.634 E F0 .394(found in)
+3.204 F F1(command)3.094 E F0(or)3.664 E F1(ar)3.224 E(gs)-.37 E F0 .395
+(with the corre-)3.164 F(sponding process group ID, and e)144 607.2 Q
+-.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(ar)
2.83 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15
-E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(66)190.395 E 0 Cg EP
-%%Page: 67 67
+E F3(kill)108 624 Q F0([)2.5 E F3<ad73>A F1(sigspec)2.5 E F0(|)2.5 E F3
+<ad6e>2.5 E F1(signum)2.5 E F0(|)2.5 E F3<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 F3
+(kill \255l)108 636 Q F0(|)A F3<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 648 R F1(sigspec)2.857 E F0(or)2.827 E F1(signum)2.857 E F0 .017
+(to the processes named by)2.837 F F1(pid)3.767 E F0(or)3.287 E F1
+(jobspec)4.257 E F0(.).31 E F1(sigspec)5.357 E F0(is)2.827 E .318
+(either a case-insensiti)144 660 R .618 -.15(ve s)-.25 H .318
+(ignal name such as).15 F F2(SIGKILL)2.818 E F0 .319
+(\(with or without the)2.569 F F2(SIG)2.819 E F0 .319
+(pre\214x\) or a signal)2.569 F(number;)144 672 Q F1(signum)3.268 E F0
+.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F1(sigspec)
+3.267 E F0 .427(is not present, then)3.237 F F2(SIGTERM)2.927 E F0 .427
+(is assumed.)2.677 F .427(An ar)5.427 F(-)-.2 E .313(gument of)144 684 R
+F3<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
+F3<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 696 R
+.119(guments are listed, and the return status is 0.)-.18 F(The)5.119 E
+F1 -.2(ex)2.619 G(it_status).2 E F0(ar)2.619 E(-)-.2 E .799(gument to)
+144 708 R F3<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 720 R
+(The)5.962 E F3<ad4c>3.462 E F0 .962(option is equi)3.462 F -.25(va)-.25
+G .962(lent to).25 F F3<ad6c>3.462 E F0(.)A F3(kill)5.962 E F0 .962
+(returns true if at least one signal w)3.462 F(as)-.1 E(GNU Bash 5.2)72
+768 Q(2022 September 19)135.955 E(69)185.115 E 0 Cg EP
+%%Page: 70 70
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(kill)108 84 Q F0([)2.5 E 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 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 192 Q(alse if an error occurs or an in)-.1
-E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2
-(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144
-220.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197
-(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197
-(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)
-2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 232.8 Q F2(ar)
-2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0
-(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(successfully sent, or f)144 84 Q(alse if an error occurs or an in)-.1 E
+-.25(va)-.4 G(lid option is encountered.).25 E/F1 10/Times-Bold@0 SF
+(let)108 100.8 Q/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0([)2.5 E F2
+(ar)A(g)-.37 E F0(...])2.5 E(Each)144 112.8 Q F2(ar)3.026 E(g)-.37 E F0
+.196(is an arithmetic e)2.916 F .197(xpression to be e)-.15 F -.25(va)
+-.25 G .197(luated \(see).25 F/F3 9/Times-Bold@0 SF .197(ARITHMETIC EV)
+2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)2.447 E -.15(ve)
+-.15 G 2.697(\). If).15 F(the last)144 124.8 Q F2(ar)2.83 E(g)-.37 E F0
+-.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0
+(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 141.6 Q F0([)2.5
E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
-(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.542(re).15 G .042(ach ar)
+(.. | \255 ])-2.5 E -.15(Fo)144 153.6 S 2.542(re).15 G .042(ach ar)
-2.542 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F2
(name)2.902 E F0 .042(is created, and assigned)2.722 F F2(value)2.832 E
F0 5.042(.T).18 G(he)-5.042 E F2(option)2.542 E F0 .041(can be)2.541 F
-(an)144 273.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652
+(an)144 165.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652
(he options accepted by)-3.152 F F1(declar)3.152 E(e)-.18 E F0 5.652(.W)
C(hen)-5.652 E F1(local)3.152 E F0 .653
(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144
-285.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H
+177.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H
.422(isible scope restricted to that function and its children.).15 F
(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F .509
-(of shell options is made local to the function in which)144 297.6 R F1
+(of shell options is made local to the function in which)144 189.6 R F1
(local)3.01 E F0 .51(is in)3.01 F -.2(vo)-.4 G -.1(ke).2 G .51
-(d: shell options changed us-).1 F 1.171(ing the)144 309.6 R F1(set)
+(d: shell options changed us-).1 F 1.171(ing the)144 201.6 R F1(set)
3.671 E F0 -.2(bu)3.671 G 1.171
(iltin inside the function are restored to their original v).2 F 1.17
-(alues when the function re-)-.25 F 3.38(turns. The)144 321.6 R .88
+(alues when the function re-)-.25 F 3.38(turns. The)144 213.6 R .88
(restore is ef)3.38 F .88(fected as if a series of)-.25 F F1(set)3.381 E
F0 .881(commands were e)3.381 F -.15(xe)-.15 G .881
(cuted to restore the v).15 F(alues)-.25 E .788
-(that were in place before the function.)144 333.6 R -.4(Wi)5.788 G .788
+(that were in place before the function.)144 225.6 R -.4(Wi)5.788 G .788
(th no operands,).4 F F1(local)3.288 E F0 .787(writes a list of local v)
-3.288 F .787(ariables to)-.25 F .654(the standard output.)144 345.6 R
+3.288 F .787(ariables to)-.25 F .654(the standard output.)144 237.6 R
.654(It is an error to use)5.654 F F1(local)3.154 E F0 .654
(when not within a function.)3.154 F .655(The return status is 0)5.654 F
-(unless)144 357.6 Q F1(local)2.5 E F0(is used outside a function, an in)
+(unless)144 249.6 Q F1(local)2.5 E F0(is used outside a function, an in)
2.5 E -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68 E
F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108
-374.4 Q F0(Exit a login shell.)144 374.4 Q F1(map\214le)108 391.2 Q F0
+266.4 Q F0(Exit a login shell.)144 266.4 Q F1(map\214le)108 283.2 Q F0
([)2.5 E 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 403.2 S(adarray).18 E F0([)2.5 E F1
+(ay)-.15 E F0(])A F1 -.18(re)108 295.2 S(adarray).18 E F0([)2.5 E F1
<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 .159(Read lines from the standard input into the inde)144 415.2 R
+(])A .159(Read lines from the standard input into the inde)144 307.2 R
-.15(xe)-.15 G 2.659(da).15 G .159(rray v)-2.659 F(ariable)-.25 E F2
(arr)2.989 E(ay)-.15 E F0 2.659(,o).32 G 2.658(rf)-2.659 G .158
-(rom \214le descriptor)-2.658 F F2(fd)4.628 E F0 1.248(if the)144 427.2
+(rom \214le descriptor)-2.658 F F2(fd)4.628 E F0 1.248(if the)144 319.2
R 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
+-6.249 F(ha)144 331.2 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad64>144 343.2 Q F0 .911
+(The \214rst character of)180 343.2 R F2(delim)3.411 E F0 .911
(is used to terminate each input line, rather than ne)3.411 F 3.41
-(wline. If)-.25 F F2(delim)180 463.2 Q F0(is the empty string,)2.5 E F1
+(wline. If)-.25 F F2(delim)180 355.2 Q F0(is the empty string,)2.5 E F1
(map\214le)2.5 E F0(will terminate a line when it reads a NUL character)
-2.5 E(.)-.55 E F1<ad6e>144 475.2 Q F0(Cop)180 475.2 Q 2.5(ya)-.1 G 2.5
+2.5 E(.)-.55 E F1<ad6e>144 367.2 Q F0(Cop)180 367.2 Q 2.5(ya)-.1 G 2.5
(tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)
-2.5 E F0(is 0, all lines are copied.)2.5 E 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
+2.5 E F0(is 0, all lines are copied.)2.5 E F1<ad4f>144 379.2 Q F0(Be)180
+379.2 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82
E(x)-.15 E F2(origin)2.73 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E
-2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E 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
+2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1<ad73>144 391.2 Q F0
+(Discard the \214rst)180 391.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1
+<ad74>144 403.2 Q F0(Remo)180 403.2 Q .3 -.15(ve a t)-.15 H(railing).15
E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E
-(wline\) from each line read.)-.25 E 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
+(wline\) from each line read.)-.25 E F1<ad75>144 415.2 Q F0
+(Read lines from \214le descriptor)180 415.2 Q F2(fd)2.5 E F0
+(instead of the standard input.)2.5 E F1<ad43>144 427.2 Q F0(Ev)180
+427.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2
(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F1<ad63>2.5 E F0
-(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
+(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1<ad63>144 439.2
+Q F0(Specify the number of lines read between each call to)180 439.2 Q
+F2(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 456 Q 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 .262(plied the inde)144 576 R 2.762(xo)-.15 G
+(luated, it is sup-).25 F .262(plied the inde)144 468 R 2.762(xo)-.15 G
2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be assig\
ned and the line to be assigned to that element)-.15 F .274
-(as additional ar)144 588 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E
+(as additional ar)144 480 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E
F0 .274(is e)2.774 F -.25(va)-.25 G .274
(luated after the line is read b).25 F .275
-(ut before the array element is)-.2 F(assigned.)144 600 Q
-(If not supplied with an e)144 616.8 Q(xplicit origin,)-.15 E F1
+(ut before the array element is)-.2 F(assigned.)144 492 Q
+(If not supplied with an e)144 508.8 Q(xplicit origin,)-.15 E F1
(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0
-(before assigning to it.)2.5 E F1(map\214le)144 633.6 Q F0 .797
+(before assigning to it.)2.5 E F1(map\214le)144 525.6 Q F0 .797
(returns successfully unless an in)3.298 F -.25(va)-.4 G .797
(lid option or option ar).25 F .797(gument is supplied,)-.18 F F2(arr)
-3.297 E(ay)-.15 E F0 .797(is in-)3.297 F -.25(va)144 645.6 S
+3.297 E(ay)-.15 E F0 .797(is in-)3.297 F -.25(va)144 537.6 S
(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0
(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E
-F1(popd)108 662.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0
-2.5(][)C<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
+F1(popd)108 554.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0
+2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144 566.4 Q -.15(ve)-.15 G 3.091
+(se).15 G .591(ntries from the directory stack.)-3.091 F .592
+(The elements are numbered from 0 starting at the \214rst)5.591 F .665
+(directory listed by)144 578.4 R F1(dirs)3.165 E F0 5.665(.W)C .665
+(ith no ar)-6.065 F(guments,)-.18 E F1(popd)3.165 E F0(remo)3.165 E -.15
+(ve)-.15 G 3.165(st).15 G .664(he top directory from the stack, and)
+-3.165 F(changes to the ne)144 590.4 Q 2.5(wt)-.25 G(op directory)-2.5 E
+5(.A)-.65 G -.18(rg)-5 G(uments, if supplied, ha).18 E .3 -.15(ve t)-.2
+H(he follo).15 E(wing meanings:)-.25 E F1<ad6e>144 602.4 Q F0 .551
+(Suppresses the normal change of directory when remo)180 602.4 R .551
(ving directories from the stack, so)-.15 F
-(that only the stack is manipulated.)180 722.4 Q(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(67)190.395 E 0 Cg EP
-%%Page: 68 68
+(that only the stack is manipulated.)180 614.4 Q F1(+)144 626.4 Q F2(n)A
+F0(Remo)180 626.4 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E
+F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25
+F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero,)-2.64 F .779
+(from the stack.)180 638.4 R -.15(Fo)5.779 G 3.279(re).15 G(xample:)
+-3.429 E/F4 10/Courier@0 SF .779(popd +0)3.279 F F0(remo)3.279 E -.15
+(ve)-.15 G 3.279(st).15 G .779(he \214rst directory)-3.279 F(,)-.65 E F4
+.78(popd +1)3.28 F F0 .78(the sec-)3.28 F(ond.)180 650.4 Q F1<ad>144
+662.4 Q F2(n)A F0(Remo)180 662.4 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76
+E F2(n)3.76 E F0 1.259(th entry counting from the right of the list sho)
+B 1.259(wn by)-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)
+-3.759 F 2.5(zero. F)180 674.4 R(or e)-.15 E(xample:)-.15 E F4(popd -0)
+2.5 E F0(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E
+(,)-.65 E F4(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .093
+(If the top element of the directory stack is modi\214ed, and the)144
+691.2 R F2(-n)2.593 E F0 .094(option w)2.594 F .094(as not supplied,)-.1
+F F1(popd)2.594 E F0(uses)2.594 E(the)144 703.2 Q F1(cd)2.697 E F0 -.2
+(bu)2.697 G .196
+(iltin to change to the directory at the top of the stack.).2 F .196
+(If the)5.196 F F1(cd)2.696 E F0 -.1(fa)2.696 G(ils,).1 E F1(popd)2.696
+E F0 .196(returns a non-)2.696 F(zero v)144 715.2 Q(alue.)-.25 E
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(70)185.115 E 0 Cg EP
+%%Page: 71 71
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15
-G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14
-(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1
-(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 96
-S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0(remo)
-2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)-.65 E
-F3(popd +1)2.5 E F0(the second.)2.5 E 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
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Otherwise,)144 84
+Q/F1 10/Times-Bold@0 SF(popd)2.67 E F0 .17(returns f)2.67 F .17
+(alse if an in)-.1 F -.25(va)-.4 G .171
+(lid option is encountered, the directory stack is empty).25 F 2.671(,o)
+-.65 G 2.671(ra)-2.671 G(non-e)144 96 Q
+(xistent directory stack entry is speci\214ed.)-.15 E 1.556(If the)144
+112.8 R F1(popd)4.056 E F0 1.556(command is successful, bash runs)4.056
+F F1(dirs)4.056 E F0 1.556(to sho)4.056 F 4.055(wt)-.25 G 1.555
+(he \214nal contents of the directory)-4.055 F
+(stack, and the return status is 0.)144 124.8 Q F1(printf)108 141.6 Q F0
+([)2.5 E F1<ad76>A/F2 10/Times-Italic@0 SF(var)2.5 E F0(])A F2(format)
+2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .357(Write the formatted)
+144 153.6 R F2(ar)2.857 E(guments)-.37 E F0 .357
+(to the standard output under the control of the)2.857 F F2(format)2.858
+E F0 5.358(.T)C(he)-5.358 E F1<ad76>2.858 E F0(op-)2.858 E .714
+(tion causes the output to be assigned to the v)144 165.6 R(ariable)-.25
E F2(var)3.214 E F0 .714(rather than being printed to the standard)3.214
-F(output.)144 213.6 Q(The)144 237.6 Q F2(format)3.018 E F0 .517(is a ch\
+F(output.)144 177.6 Q(The)144 201.6 Q F2(format)3.017 E F0 .517(is a ch\
aracter string which contains three types of objects: plain characters,\
- which are)3.018 F .704(simply copied to standard output, character esc\
-ape sequences, which are con)144 249.6 R -.15(ve)-.4 G .704
+ which are)3.017 F .704(simply copied to standard output, character esc\
+ape sequences, which are con)144 213.6 R -.15(ve)-.4 G .703
(rted and copied to).15 F .036(the standard output, and format speci\
-\214cations, each of which causes printing of the ne)144 261.6 R .036
-(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 273.6 Q(gument)-.37 E F0
-5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2
-(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032
-E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 285.6 Q
-(xtensions:)-.15 E F1(%b)144 297.6 Q F0(causes)180 297.6 Q F1(printf)
-2.596 E F0 .096(to e)2.596 F .096
+\214cations, each of which causes printing of the ne)144 225.6 R .037
+(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 237.6 Q(gument)-.37 E F0
+5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2
+(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031
+E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 249.6 Q
+(xtensions:)-.15 E F1(%b)144 261.6 Q F0(causes)180 261.6 Q F1(printf)
+2.595 E F0 .096(to e)2.595 F .096
(xpand backslash escape sequences in the corresponding)-.15 F F2(ar)
-2.596 E(gument)-.37 E F0 .095(in the)2.595 F(same w)180 309.6 Q(ay as)
--.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 321.6 Q F0(causes)180 321.6 Q
+2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 273.6 Q(ay as)
+-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 285.6 Q F0(causes)180 285.6 Q
F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E
(gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F
-(input.)180 333.6 Q F1(%\()144 345.6 Q F2(datefmt)A F1(\)T)A F0(causes)
-180 357.6 Q F1(printf)4.404 E F0 1.904
-(to output the date-time string resulting from using)4.404 F F2(datefmt)
-4.404 E F0 1.903(as a format)4.404 F .38(string for)180 369.6 R F2
+(input.)180 297.6 Q F1(%Q)144 309.6 Q F0(lik)180 309.6 Q(e)-.1 E F1(%q)
+2.5 E F0 2.5(,b)C(ut applies an)-2.7 E 2.5(ys)-.15 G
+(upplied precision to the)-2.5 E F2(ar)2.5 E(gument)-.37 E F0
+(before quoting it.)2.5 E F1(%\()144 321.6 Q F2(datefmt)A F1(\)T)A F0
+(causes)180 333.6 Q F1(printf)4.403 E F0 1.904
+(to output the date-time string resulting from using)4.403 F F2(datefmt)
+4.404 E F0 1.904(as a format)4.404 F .381(string for)180 345.6 R F2
(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar)
2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381
-(ger representing the number)-.15 F .293(of seconds since the epoch.)180
-381.6 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F
-.293(alues may be used: \2551 represents the)-.25 F .693
-(current time, and \2552 represents the time the shell w)180 393.6 R
-.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.194(d. If).1 F .694(no ar)
-3.194 F .694(gument is speci-)-.18 F .21(\214ed, con)180 405.6 R -.15
+(ger representing the number)-.15 F .292(of seconds since the epoch.)180
+357.6 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F
+.293(alues may be used: \2551 represents the)-.25 F .694
+(current time, and \2552 represents the time the shell w)180 369.6 R
+.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar)
+3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 381.6 R -.15
(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71
G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25
G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F
-F1(printf)2.71 E F0(beha)180 417.6 Q(vior)-.2 E(.)-.55 E .901
-(The %b, %q, and %T directi)144 434.4 R -.15(ve)-.25 G 3.401(sa).15 G
-.901(ll use the \214eld width and precision ar)-3.401 F .902
-(guments from the format)-.18 F .358(speci\214cation and write that man)
-144 446.4 R 2.858(yb)-.15 G .357
-(ytes from \(or use that wide a \214eld for\) the e)-2.858 F .357
+F1(printf)2.71 E F0(beha)180 393.6 Q(vior)-.2 E(.)-.55 E .902
+(The %b, %q, and %T directi)144 410.4 R -.15(ve)-.25 G 3.401(sa).15 G
+.901(ll use the \214eld width and precision ar)-3.401 F .901
+(guments from the format)-.18 F .357(speci\214cation and write that man)
+144 422.4 R 2.857(yb)-.15 G .358
+(ytes from \(or use that wide a \214eld for\) the e)-2.857 F .358
(xpanded ar)-.15 F(gument,)-.18 E
-(which usually contains more characters than the original.)144 458.4 Q
-(Ar)144 475.2 Q .463(guments to non-string format speci\214ers are trea\
-ted as C constants, e)-.18 F .464(xcept that a leading plus or)-.15 F
-1.259(minus sign is allo)144 487.2 R 1.259
+(which usually contains more characters than the original.)144 434.4 Q
+(Ar)144 451.2 Q .464(guments to non-string format speci\214ers are trea\
+ted as C constants, e)-.18 F .463(xcept that a leading plus or)-.15 F
+1.258(minus sign is allo)144 463.2 R 1.259
(wed, and if the leading character is a single or double quote, the v)
--.25 F 1.258(alue is the)-.25 F(ASCII v)144 499.2 Q(alue of the follo)
--.25 E(wing character)-.25 E(.)-.55 E(The)144 516 Q F2(format)2.514 E F0
-.015(is reused as necessary to consume all of the)2.514 F F2(ar)2.515 E
-(guments)-.37 E F0 5.015(.I)C 2.515(ft)-5.015 G(he)-2.515 E F2(format)
-2.515 E F0 .015(requires more)2.515 F F2(ar)2.515 E(-)-.2 E(guments)144
-528 Q F0 .566(than are supplied, the e)3.066 F .566
+-.25 F 1.259(alue is the)-.25 F(ASCII v)144 475.2 Q(alue of the follo)
+-.25 E(wing character)-.25 E(.)-.55 E(The)144 492 Q F2(format)2.515 E F0
+.015(is reused as necessary to consume all of the)2.515 F F2(ar)2.515 E
+(guments)-.37 E F0 5.015(.I)C 2.514(ft)-5.015 G(he)-2.514 E F2(format)
+2.514 E F0 .014(requires more)2.514 F F2(ar)2.514 E(-)-.2 E(guments)144
+504 Q F0 .565(than are supplied, the e)3.065 F .566
(xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066(si)
-.15 G 3.065(faz)-3.066 G .565(ero v)-3.065 F .565(alue or null string,)
--.25 F(as appropriate, had been supplied.)144 540 Q(The return v)5 E
+.15 G 3.066(faz)-3.066 G .566(ero v)-3.066 F .566(alue or null string,)
+-.25 F(as appropriate, had been supplied.)144 516 Q(The return v)5 E
(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd)
-108 556.8 Q F0([)2.5 E 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.916(od)-.1 G(irectories)-2.916 E 1.625
-(and returns 0, unless the directory stack is empty)144 604.8 R 6.625
-(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925
--.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 616.8 Q
-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)
+108 532.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 544.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 556.8 R 3.139(wt)
+-.25 G .639(op of the)-3.139 F .088(stack the current w)144 568.8 R .088
+(orking directory)-.1 F 5.088(.W)-.65 G .088(ith no ar)-5.488 F
+(guments,)-.18 E F1(pushd)2.589 E F0 -.15(ex)2.589 G .089
+(changes the top tw).15 F 2.589(oe)-.1 G .089(lements of)-2.589 F
+(the directory stack.)144 580.8 Q(Ar)5 E(guments, if supplied, ha)-.18 E
+.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad6e>144
+592.8 Q F0 1.811(Suppresses the normal change of directory when rotatin\
+g or adding directories to the)180 592.8 R
+(stack, so that only the stack is manipulated.)180 604.8 Q F1(+)144
+616.8 Q F2(n)A F0 1.267(Rotates the stack so that the)180 616.8 R F2(n)
3.767 E F0 1.268(th directory \(counting from the left of the list sho)B
-1.268(wn by)-.25 F F1(dirs)180 664.8 Q F0 2.5(,s)C
-(tarting with zero\) is at the top.)-2.5 E 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
+1.268(wn by)-.25 F F1(dirs)180 628.8 Q F0 2.5(,s)C
+(tarting with zero\) is at the top.)-2.5 E F1<ad>144 640.8 Q F2(n)A F0
+.92(Rotates the stack so that the)180 640.8 R F2(n)3.42 E F0 .92
(th directory \(counting from the right of the list sho)B .92(wn by)-.25
-F F1(dirs)180 688.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
--2.5 E F2(dir)144.35 700.8 Q F0(Adds)180 700.8 Q F2(dir)3.137 E F0 .287
-(to the directory stack at the top, making it the ne)3.517 F 2.788(wc)
--.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F
-(if it had been supplied as the ar)180 712.8 Q(gument to the)-.18 E F1
-(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 729.6 R F1(pushd)
-2.989 E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488
-(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F
-F1(pushd)2.988 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(68)
-190.395 E 0 Cg EP
-%%Page: 69 69
+F F1(dirs)180 652.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
+-2.5 E F2(dir)144.35 664.8 Q F0(Adds)180 664.8 Q F2(dir)2.85 E F0
+(to the directory stack at the top)3.23 E .434
+(After the stack has been modi\214ed, if the)144 681.6 R F1<ad6e>2.934 E
+F0 .434(option w)2.934 F .435(as not supplied,)-.1 F F1(pushd)2.935 E F0
+.435(uses the)2.935 F F1(cd)2.935 E F0 -.2(bu)2.935 G .435(iltin to).2 F
+(change to the directory at the top of the stack.)144 693.6 Q(If the)5 E
+F1(cd)2.5 E F0 -.1(fa)2.5 G(ils,).1 E F1(pushd)2.5 E F0
+(returns a non-zero v)2.5 E(alue.)-.25 E 1.78(Otherwise, if no ar)144
+710.4 R 1.78(guments are supplied,)-.18 F F1(pushd)4.28 E F0 1.78
+(returns 0 unless the directory stack is empty)4.28 F(.)-.65 E .881
+(When rotating the directory stack,)144 722.4 R F1(pushd)3.381 E F0 .881
+(returns 0 unless the directory stack is empty or a non-)3.381 F
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(71)185.115 E 0 Cg EP
+%%Page: 72 72
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.039
-(returns 0 unless the cd to)144 84 R/F1 10/Times-Italic@0 SF(dir)3.889 E
-F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 F/F2
-10/Times-Bold@0 SF(pushd)3.54 E F0 1.04(returns 0 unless the directory)
-3.54 F .847(stack is empty)144 96 R 3.347(,an)-.65 G(on-e)-3.347 E .847
-(xistent directory stack element is speci\214ed, or the directory chang\
-e to the)-.15 F(speci\214ed ne)144 108 Q 2.5(wc)-.25 G
-(urrent directory f)-2.5 E(ails.)-.1 E F2(pwd)108 124.8 Q F0([)2.5 E F2
-(\255LP)A F0(])A .844(Print the absolute pathname of the current w)144
-136.8 R .845(orking directory)-.1 F 5.845(.T)-.65 G .845
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(ex)144 84 S
+(istent directory stack element is speci\214ed.).15 E 1.278(If the)144
+100.8 R/F1 10/Times-Bold@0 SF(pushd)3.778 E F0 1.278
+(command is successful, bash runs)3.778 F F1(dirs)3.778 E F0 1.277
+(to sho)3.777 F 3.777(wt)-.25 G 1.277
+(he \214nal contents of the directory)-3.777 F(stack.)144 112.8 Q F1
+(pwd)108 129.6 Q F0([)2.5 E F1(\255LP)A F0(])A .844
+(Print the absolute pathname of the current w)144 141.6 R .845
+(orking directory)-.1 F 5.845(.T)-.65 G .845
(he pathname printed contains no)-5.845 F .182(symbolic links if the)144
-148.8 R 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
+153.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 .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
+(enabled. If)144 165.6 R(the)3.263 E F1<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
+ reading the name of the current directory or an in)144 177.6 R -.25(va)
+-.4 G .405(lid op-).25 F(tion is supplied.)144 189.6 Q F1 -.18(re)108
+206.4 S(ad).18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1<ad61>-3.816
+E/F2 10/Times-Italic@0 SF(aname)3.816 E F0 3.816(][)C F1<ad64>-3.816 E
+F2(delim)3.816 E F0 3.816(][)C F1<ad69>-3.816 E F2(te)3.816 E(xt)-.2 E
+F0 3.816(][)C F1<ad6e>-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817
+(][)C F1<ad4e>-3.817 E F2(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1
+<ad70>-3.817 E F2(pr)3.817 E(ompt)-.45 E F0 3.817(][)C F1<ad74>-3.817 E
+F2(timeout)3.817 E F0 3.817(][)C F1<ad75>-3.817 E F2(fd)3.817 E F0(])A
+([)108 218.4 Q F2(name)A F0(...])2.5 E .516(One line is read from the s\
+tandard input, or from the \214le descriptor)144 230.4 R F2(fd)3.016 E
+F0 .516(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 242.4 Q
+F1<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 F1 -.75
(Wo)2.935 G .435(rd Splitting).75 F F0 2.935(,a)C .436(nd the \214rst w)
--2.935 F .436(ord is as-)-.1 F .376(signed to the \214rst)144 249.6 R F1
+-2.935 F .436(ord is as-)-.1 F .376(signed to the \214rst)144 254.4 R F2
(name)3.236 E F0 2.876(,t).18 G .376(he second w)-2.876 F .376
-(ord to the second)-.1 F F1(name)3.236 E F0 2.876(,a).18 G .376
+(ord to the second)-.1 F F2(name)3.236 E F0 2.876(,a).18 G .376
(nd so on.)-2.876 F .375(If there are more w)5.376 F(ords)-.1 E .236
-(than names, the remaining w)144 261.6 R .237(ords and their interv)-.1
-F .237(ening delimiters are assigned to the last)-.15 F F1(name)3.097 E
-F0 5.237(.I).18 G(f)-5.237 E .875(there are fe)144 273.6 R .875(wer w)
+(than names, the remaining w)144 266.4 R .237(ords and their interv)-.1
+F .237(ening delimiters are assigned to the last)-.15 F F2(name)3.097 E
+F0 5.237(.I).18 G(f)-5.237 E .875(there are fe)144 278.4 R .875(wer w)
-.25 F .875(ords read from the input stream than names, the remaining n\
-ames are assigned)-.1 F .517(empty v)144 285.6 R 3.017(alues. The)-.25 F
+ames are assigned)-.1 F .517(empty v)144 290.4 R 3.017(alues. The)-.25 F
.517(characters in)3.017 F/F3 9/Times-Bold@0 SF(IFS)3.017 E F0 .518
(are used to split the line into w)2.767 F .518
-(ords using the same rules the)-.1 F .027(shell uses for e)144 297.6 R
-.026(xpansion \(described abo)-.15 F .326 -.15(ve u)-.15 H(nder).15 E F2
+(ords using the same rules the)-.1 F .027(shell uses for e)144 302.4 R
+.026(xpansion \(described abo)-.15 F .326 -.15(ve u)-.15 H(nder).15 E F1
-.75(Wo)2.526 G .026(rd Splitting).75 F F0 2.526(\). The)B .026
-(backslash character \()2.526 F F2(\\)A F0 2.526(\)m)C(ay)-2.526 E .488
-(be used to remo)144 309.6 R .788 -.15(ve a)-.15 H .788 -.15(ny s).15 H
+(backslash character \()2.526 F F1(\\)A F0 2.526(\)m)C(ay)-2.526 E .488
+(be used to remo)144 314.4 R .788 -.15(ve a)-.15 H .788 -.15(ny s).15 H
.488(pecial meaning for the ne).15 F .488
(xt character read and for line continuation.)-.15 F(Op-)5.489 E
-(tions, if supplied, ha)144 321.6 Q .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F2<ad61>144 333.6 Q F1(aname)2.5 E F0 1.026
-(The w)180 345.6 R 1.026
+(tions, if supplied, ha)144 326.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad61>144 338.4 Q F2(aname)2.5 E F0 1.026
+(The w)180 350.4 R 1.026
(ords are assigned to sequential indices of the array v)-.1 F(ariable)
--.25 E F1(aname)3.855 E F0 3.525(,s).18 G 1.025(tarting at 0.)-3.525 F
-F1(aname)180.33 357.6 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5
--.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F1(name)2.5 E F0
-(ar)2.5 E(guments are ignored.)-.18 E 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
+-.25 E F2(aname)3.855 E F0 3.525(,s).18 G 1.025(tarting at 0.)-3.525 F
+F2(aname)180.33 362.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5
+-.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0
+(ar)2.5 E(guments are ignored.)-.18 E F1<ad64>144 374.4 Q F2(delim)2.5 E
+F0 .28(The \214rst character of)180 386.4 R F2(delim)2.78 E F0 .281
(is used to terminate the input line, rather than ne)2.78 F 2.781
-(wline. If)-.25 F F1(de-)2.781 E(lim)180 393.6 Q F0
-(is the empty string,)2.5 E F2 -.18(re)2.5 G(ad).18 E F0
-(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2
-<ad65>144 405.6 Q F0 .373
-(If the standard input is coming from a terminal,)180 405.6 R F2 -.18
+(wline. If)-.25 F F2(de-)2.781 E(lim)180 398.4 Q F0
+(is the empty string,)2.5 E F1 -.18(re)2.5 G(ad).18 E F0
+(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F1
+<ad65>144 410.4 Q F0 .373
+(If the standard input is coming from a terminal,)180 410.4 R F1 -.18
(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo)
2.622 E -.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E
-.218(to obtain the line.)180 417.6 R .218
+.218(to obtain the line.)180 422.4 R .218
(Readline uses the current \(or def)5.218 F .218
(ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E
-(acti)180 429.6 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E
-(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E
-(ault \214lename completion.)-.1 E 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
+(acti)180 434.4 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E
+(ut uses readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E
+(ault \214lename completion.)-.1 E F1<ad69>144 446.4 Q F2(te)2.5 E(xt)
+-.2 E F0(If)180 446.4 Q F1 -.18(re)2.716 G(adline).18 E F0 .216
+(is being used to read the line,)2.716 F F2(te)2.716 E(xt)-.2 E F0 .216
(is placed into the editing b)2.716 F(uf)-.2 E .215(fer before edit-)
--.25 F(ing be)180 453.6 Q(gins.)-.15 E 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
+-.25 F(ing be)180 458.4 Q(gins.)-.15 E F1<ad6e>144 470.4 Q F2(nc)2.5 E
+(har)-.15 E(s)-.1 E F1 -.18(re)180 482.4 S(ad).18 E F0 .322
+(returns after reading)2.822 F F2(nc)2.823 E(har)-.15 E(s)-.1 E F0 .323
(characters rather than w)2.823 F .323
-(aiting for a complete line of in-)-.1 F(put, b)180 489.6 Q
-(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F1(nc)2.5 E(har)-.15
-E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F2
-<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)
+(aiting for a complete line of in-)-.1 F(put, b)180 494.4 Q
+(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15
+E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1
+<ad4e>144 506.4 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 518.4 S
+(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F2(nc)
3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F
1.269(aiting for a complete)-.1 F .274
-(line of input, unless EOF is encountered or)180 525.6 R F2 -.18(re)
+(line of input, unless EOF is encountered or)180 530.4 R F1 -.18(re)
2.775 G(ad).18 E F0 .275(times out.)2.775 F .275
(Delimiter characters encoun-)5.275 F 1.003
-(tered in the input are not treated specially and do not cause)180 537.6
-R F2 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F1(nc)
-3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 549.6 R .608
-(The result is not split on the characters in)5.608 F F2(IFS)3.108 E F0
-3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 561.6 S .67
+(tered in the input are not treated specially and do not cause)180 542.4
+R F1 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F2(nc)
+3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 554.4 R .608
+(The result is not split on the characters in)5.608 F F1(IFS)3.108 E F0
+3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 566.4 S .67
(riable is assigned e).25 F .669
(xactly the characters read \(with the e)-.15 F .669
-(xception of backslash; see the)-.15 F 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
+(xception of backslash; see the)-.15 F F1<ad72>180 578.4 Q F0
+(option belo)2.5 E(w\).)-.25 E F1<ad70>144 590.4 Q F2(pr)2.5 E(ompt)-.45
+E F0(Display)180 602.4 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161
(on standard error)3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne)
--3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 609.6 Q
+-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 614.4 Q
2.5(yi)-.15 G 2.5(nput. The)-2.5 F
-(prompt is displayed only if input is coming from a terminal.)2.5 E F2
-<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
+(prompt is displayed only if input is coming from a terminal.)2.5 E F1
+<ad72>144 626.4 Q F0 .544(Backslash does not act as an escape character)
+180 626.4 R 5.543(.T)-.55 G .543
(he backslash is considered to be part of)-5.543 F .492(the line.)180
-633.6 R .492(In particular)5.492 F 2.992(,ab)-.4 G(ackslash-ne)-2.992 E
+638.4 R .492(In particular)5.492 F 2.992(,ab)-.4 G(ackslash-ne)-2.992 E
.493(wline pair may not then be used as a line continua-)-.25 F(tion.)
-180 645.6 Q 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
+180 650.4 Q F1<ad73>144 662.4 Q F0(Silent mode.)180 662.4 Q
+(If input is coming from a terminal, characters are not echoed.)5 E F1
+<ad74>144 674.4 Q F2(timeout)2.5 E F0(Cause)180 686.4 Q F1 -.18(re)2.929
G(ad).18 E F0 .428(to time out and return f)2.929 F .428
(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56
-(ber of characters\) is not read within)180 693.6 R F1(timeout)3.061 E
-F0(seconds.)3.061 E F1(timeout)5.561 E F0 .561(may be a decimal number)
-3.061 F(with a fractional portion follo)180 705.6 Q
+(ber of characters\) is not read within)180 698.4 R F2(timeout)3.061 E
+F0(seconds.)3.061 E F2(timeout)5.561 E F0 .561(may be a decimal number)
+3.061 F(with a fractional portion follo)180 710.4 Q
(wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E
-.3 -.15(ve i)-.25 H(f).15 E F2 -.18(re)2.5 G(ad).18 E F0 .506(is readin\
+.3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\
g input from a terminal, pipe, or other special \214le; it has no ef)180
-717.6 R .506(fect when reading)-.25 F .59(from re)180 729.6 R .59
-(gular \214les.)-.15 F(If)5.59 E F2 -.18(re)3.09 G(ad).18 E F0 .589
-(times out,)3.09 F F2 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2
-G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589
-(artial input read into the speci\214ed).15 F(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(69)190.395 E 0 Cg EP
-%%Page: 70 70
+722.4 R .506(fect when reading)-.25 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(72)185.115 E 0 Cg EP
+%%Page: 73 73
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)180 84 S
-(riable).25 E/F1 10/Times-Italic@0 SF(name)2.77 E F0 5.27(.I)C(f)-5.27 E
-F1(timeout)2.77 E F0 .27(is 0,)2.77 F/F2 10/Times-Bold@0 SF -.18(re)2.77
-G(ad).18 E F0 .27(returns immediately)2.77 F 2.77(,w)-.65 G .27
-(ithout trying to read an)-2.77 F 2.77(yd)-.15 G(ata.)-2.77 E 1.12
-(The e)180 96 R 1.12(xit status is 0 if input is a)-.15 F -.25(va)-.2 G
-1.12(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G
-1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 108 R -.15(ex)2.5 G
-(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E
-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
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .59(from re)180 84
+R .59(gular \214les.)-.15 F(If)5.59 E/F1 10/Times-Bold@0 SF -.18(re)3.09
+G(ad).18 E F0 .589(times out,)3.09 F F1 -.18(re)3.089 G(ad).18 E F0(sa)
+3.089 E -.15(ve)-.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589
+(artial input read into the speci\214ed).15 F -.25(va)180 96 S(riable)
+.25 E/F2 10/Times-Italic@0 SF(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2
+(timeout)2.77 E F0 .27(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27
+(returns immediately)2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)
+-2.77 F 2.77(yd)-.15 G(ata.)-2.77 E .228(The e)180 108 R .228
+(xit status is 0 if input is a)-.15 F -.25(va)-.2 G .228
+(ilable on the speci\214ed \214le descriptor).25 F 2.728(,o)-.4 G 2.727
+(rt)-2.728 G .227(he read will re-)-2.727 F 1.224(turn EOF)180 120 R
+3.724(,n)-.8 G 1.224(on-zero otherwise.)-3.724 F 1.224(The e)6.224 F
+1.225(xit status is greater than 128 if the timeout is e)-.15 F(x-)-.15
+E(ceeded.)180 132 Q F1<ad75>144 144 Q F2(fd)2.5 E F0
+(Read input from \214le descriptor)180 144 Q F2(fd)2.5 E F0(.)A .522
+(If no)144 160.8 R F2(names)3.382 E F0 .522
(are supplied, the line read, without the ending delimiter b)3.292 F
-.522(ut otherwise unmodi\214ed, is)-.2 F 1.187(assigned to the v)144
-148.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9
+.522(ut otherwise unmodi\214ed, is)-.2 F 1.186(assigned to the v)144
+172.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9
/Times-Roman@0 SF(.)A F0 1.186(The e)5.686 F 1.186
-(xit status is zero, unless end-of-\214le is encountered,)-.15 F F2 -.18
-(re)3.686 G(ad).18 E F0 .96
+(xit status is zero, unless end-of-\214le is encountered,)-.15 F F1 -.18
+(re)3.687 G(ad).18 E F0 .961
(times out \(in which case the status is greater than 128\), a v)144
-160.8 R .961(ariable assignment error \(such as as-)-.25 F .707
-(signing to a readonly v)144 172.8 R .706(ariable\) occurs, or an in)
+184.8 R .96(ariable assignment error \(such as as-)-.25 F .706
+(signing to a readonly v)144 196.8 R .706(ariable\) occurs, or an in)
-.25 F -.25(va)-.4 G .706(lid \214le descriptor is supplied as the ar)
-.25 F .706(gument to)-.18 F 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
+.25 F .707(gument to)-.18 F F1<ad75>144 208.8 Q F0(.)A F1 -.18(re)108
+225.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1<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 237.6 R -.15(ve)-.25 G(n).15 E F2(names)3.27 E F0
.77(are mark)3.27 F .77(ed readonly; the v)-.1 F .77(alues of these)-.25
-F F1(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.097
-(quent assignment.)144 225.6 R 1.097(If the)6.097 F 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
+F F2(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.096
+(quent assignment.)144 249.6 R 1.096(If the)6.096 F 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 261.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 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
+-3.334 F F1<ad41>3.334 E F0 .834(option restricts the v)3.334 F(ari-)
+-.25 E .776(ables to associati)144 273.6 R 1.076 -.15(ve a)-.25 H 3.276
+(rrays. If).15 F .777(both options are supplied,)3.276 F 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 285.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 273.6 R(The)5.295 E F2
-<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 297.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 285.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144
-297.6 Q .718(wed by =)-.25 F F1(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
--3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F1(wor)
+144 309.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144
+321.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
+-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor)
3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in)
-5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the)
-144 309.6 R F1(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
--.25 F .26(ariable name, or)-.25 F 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 F1(n)2.88 E F0 .02(to its caller)2.76 F 5.02
-(.I)-.55 G(f)-5.02 E F1(n)2.88 E F0 .02(is omitted,)2.76 F .596
-(the return status is that of the last command e)144 362.4 R -.15(xe)
--.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E
-F2 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15
-G(cuted).15 E .267(by a trap handler)144 374.4 R 2.767(,t)-.4 G .267
+144 333.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
+-.25 F .26(ariable name, or)-.25 F F1<ad66>2.76 E F0 .26
+(is supplied with a)2.76 F F2(name)144.36 345.6 Q F0
+(that is not a function.)2.68 E F1 -.18(re)108 362.4 S(tur).18 E(n)-.15
+E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 374.4 R
+-.15(xe)-.15 G .02(cuting and return the v).15 F .021
+(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F
+5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597
+(the return status is that of the last command e)144 386.4 R -.15(xe)
+-.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E
+F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15
+G(cuted).15 E .267(by a trap handler)144 398.4 R 2.767(,t)-.4 G .267
(he last command used to determine the status is the last command e)
--2.767 F -.15(xe)-.15 G .267(cuted be-).15 F .02(fore the trap handler)
-144 386.4 R 5.02(.I)-.55 G(f)-5.02 E F2 -.18(re)2.52 G(tur).18 E(n)-.15
-E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F2(DEB)2.52
+-2.767 F -.15(xe)-.15 G .268(cuted be-).15 F .02(fore the trap handler)
+144 410.4 R 5.02(.I)-.55 G(f)-5.02 E F1 -.18(re)2.52 G(tur).18 E(n)-.15
+E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F1(DEB)2.52
E(UG)-.1 E F0 .02(trap, the last command used to deter)2.52 F(-)-.2 E
-.886(mine the status is the last command e)144 398.4 R -.15(xe)-.15 G
-.886(cuted by the trap handler before).15 F F2 -.18(re)3.385 G(tur).18 E
-(n)-.15 E F0 -.1(wa)3.385 G 3.385(si).1 G -1.9 -.4(nv o)-3.385 H -.1(ke)
-.4 G 3.385(d. If).1 F F2 -.18(re)144 410.4 S(tur).18 E(n)-.15 E F0 .627
-(is used outside a function, b)3.127 F .628(ut during e)-.2 F -.15(xe)
--.15 G .628(cution of a script by the).15 F F2(.)3.128 E F0(\()5.628 E
-F2(sour)A(ce)-.18 E F0 3.128(\)c)C .628(ommand, it)-3.128 F .589
-(causes the shell to stop e)144 422.4 R -.15(xe)-.15 G .589
-(cuting that script and return either).15 F F1(n)3.448 E F0 .588
-(or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e)
-144 434.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F
-.326(xit status of the script.)-.15 F(If)5.326 E F1(n)2.826 E F0 .326
-(is supplied, the return v)2.826 F .326(alue is)-.25 F .445
-(its least signi\214cant 8 bits.)144 446.4 R .444
-(The return status is non-zero if)5.445 F F2 -.18(re)2.944 G(tur).18 E
-(n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381
-(ment, or is used outside a function and not during e)144 458.4 R -.15
-(xe)-.15 G .381(cution of a script by).15 F F2(.)2.881 E F0(or)3.714 E
-F2(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15
-E .75(mand associated with the)144 470.4 R F2(RETURN)3.249 E F0 .749
+.885(mine the status is the last command e)144 422.4 R -.15(xe)-.15 G
+.886(cuted by the trap handler before).15 F F1 -.18(re)3.386 G(tur).18 E
+(n)-.15 E F0 -.1(wa)3.386 G 3.386(si).1 G -1.9 -.4(nv o)-3.386 H -.1(ke)
+.4 G 3.386(d. If).1 F F1 -.18(re)144 434.4 S(tur).18 E(n)-.15 E F0 .628
+(is used outside a function, b)3.128 F .628(ut during e)-.2 F -.15(xe)
+-.15 G .628(cution of a script by the).15 F F1(.)3.127 E F0(\()5.627 E
+F1(sour)A(ce)-.18 E F0 3.127(\)c)C .627(ommand, it)-3.127 F .588
+(causes the shell to stop e)144 446.4 R -.15(xe)-.15 G .588
+(cuting that script and return either).15 F F2(n)3.448 E F0 .589
+(or the e)3.329 F .589(xit status of the last com-)-.15 F .326(mand e)
+144 458.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F
+.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .325
+(is supplied, the return v)2.826 F .325(alue is)-.25 F .444
+(its least signi\214cant 8 bits.)144 470.4 R .444
+(The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E
+(n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381
+(ment, or is used outside a function and not during e)144 482.4 R -.15
+(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E
+F1(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E
+.749(mand associated with the)144 494.4 R F1(RETURN)3.249 E F0 .749
(trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15
-G .749(cution resumes after the function).15 F(or script.)144 482.4 Q F2
-(set)108 499.2 Q F0([)2.5 E F2(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C
-F2<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 535.2
-R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783
-(riables cannot be).25 F 2.946(reset. In)144 547.2 R F1 .447(posix mode)
-2.946 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447
-(ariables are listed.)-.25 F .447
-(The output is sorted according to the current)5.447 F 3.531
-(locale. When)144 559.2 R 1.031(options are speci\214ed, the)3.531 F
-3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An)
--.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F .584
-(after option processing are treated as v)144 571.2 R .585
-(alues for the positional parameters and are assigned, in or)-.25 F(-)
--.2 E(der)144 583.2 Q 2.5(,t)-.4 G(o)-2.5 E F2($1)2.5 E F0(,)A F2($2)2.5
-E F0(,)A F2 2.5(... $)2.5 F F1(n)A F0 5(.O)C(ptions, if speci\214ed, ha)
--5 E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F2<ad61>144
-595.2 Q F0 1.378(Each v)184 595.2 R 1.377
+G .75(cution resumes after the function).15 F(or script.)144 506.4 Q F1
+(set)108 523.2 Q F0([)2.5 E F1(\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1
+<ad6f>-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F1<adad>-2.5 E F0 2.5
+(][)C F1<ad>-2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1
+(set)108 535.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)
+-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F1<adad>-2.5 E F0 2.5(][)C F1
+<ad>-2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144
+547.2 S .574(thout options, display the name and v).4 F .574
+(alue of each shell v)-.25 F .573
+(ariable in a format that can be reused)-.25 F .113
+(as input for setting or resetting the currently-set v)144 559.2 R 2.613
+(ariables. Read-only)-.25 F -.25(va)2.613 G .113
+(riables cannot be reset.).25 F(In)5.113 E F2 1.032(posix mode)144 571.2
+R F0 3.532(,o)C 1.032(nly shell v)-3.532 F 1.032(ariables are listed.)
+-.25 F 1.032(The output is sorted according to the current locale.)6.032
+F .58(When options are speci\214ed, the)144 583.2 R 3.081(ys)-.15 G .581
+(et or unset shell attrib)-3.081 F 3.081(utes. An)-.2 F 3.081(ya)-.15 G
+-.18(rg)-3.081 G .581(uments remaining after op-).18 F .161
+(tion processing are treated as v)144 595.2 R .161
+(alues for the positional parameters and are assigned, in order)-.25 F
+2.66(,t)-.4 G(o)-2.66 E F1($1)2.66 E F0(,)A F1($2)144 607.2 Q F0(,)A F1
+2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 -.15
+(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad61>144 619.2 Q F0
+1.377(Each v)184 619.2 R 1.377
(ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve)
--.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F
-1.377(ute and)-.2 F(mark)184 607.2 Q(ed for e)-.1 E(xport to the en)-.15
-E(vironment of subsequent commands.)-.4 E 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 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 .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
+-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F
+1.378(ute and)-.2 F(mark)184 631.2 Q(ed for e)-.1 E(xport to the en)-.15
+E(vironment of subsequent commands.)-.4 E F1<ad62>144 643.2 Q F0 .132
+(Report the status of terminated background jobs immediately)184 643.2 R
+2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E
+(primary prompt.)184 655.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)
+-.25 H(nly when job control is enabled.).15 E F1<ad65>144 667.2 Q F0
+.087(Exit immediately if a)184 667.2 R F2(pipeline)2.587 E F0 .087
+(\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F
+F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 679.2 Q
+F2 1.521(compound command)4.021 F F0(\(see)4.021 E F3 1.521
+(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F
+1.521(xits with a non-zero status.)-.15 F .079(The shell does not e)184
+691.2 R .079(xit if the command that f)-.15 F .08
+(ails is part of the command list immediately)-.1 F(follo)184 703.2 Q
+1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0
+-.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654
+(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv)
+4.154 E(ed)-.15 E -.1(wo)184 715.2 S .581(rds, part of an).1 F 3.081(yc)
+-.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1
+(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582
+(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 727.2 R
+F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c)
+-3.418 H .918(ommand in a pipeline b).15 F .917
+(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(73)185.115 E 0 Cg EP
+%%Page: 74 74
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .178(not e)184 84
-R 2.678(xit. A)-.15 F .178(trap on)2.678 F/F1 10/Times-Bold@0 SF(ERR)
-2.678 E F0 2.678(,i)C 2.678(fs)-2.678 G .178(et, is e)-2.678 F -.15(xe)
--.15 G .178(cuted before the shell e).15 F 2.677(xits. This)-.15 F .177
-(option applies to)2.677 F .617(the shell en)184 96 R .617
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)184 84 S
+.66(lue is being in).25 F -.15(ve)-.4 G .66(rted with).15 F/F1 10
+/Times-Bold@0 SF(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661
+(ompound command other than a subshell returns a)-3.161 F 1.113
+(non-zero status because a command f)184 96 R 1.112(ailed while)-.1 F F1
+<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 108 R 2.677
+(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678
+(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178
+(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178
+(option applies to)2.678 F .618(the shell en)184 120 R .617
(vironment and each subshell en)-.4 F .617(vironment separately \(see)
--.4 F/F2 9/Times-Bold@0 SF .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)
-184 108 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643
+-.4 F/F2 9/Times-Bold@0 SF .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)
+184 132 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643
(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15
-(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 120 Q
-.998(If a compound command or shell function e)184 138 R -.15(xe)-.15 G
-.999(cutes in a conte).15 F .999(xt where)-.15 F 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 .643(cuting all).15 F(the commands in the subshell.)184 144 Q
+.999(If a compound command or shell function e)184 162 R -.15(xe)-.15 G
+.999(cutes in a conte).15 F .998(xt where)-.15 F F1<ad65>3.498 E F0 .998
+(is being ig-)3.498 F .089(nored, none of the commands e)184 174 R -.15
(xe)-.15 G .089(cuted within the compound command or function body).15 F
-.502(will be af)184 162 R .502(fected by the)-.25 F F1<ad65>3.002 E F0
+.503(will be af)184 186 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 .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 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
+<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 198 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 210 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 222 Q F1
+<ad66>144 234 Q F0(Disable pathname e)184 234 Q(xpansion.)-.15 E F1
+<ad68>144 246 Q F0 .988(Remember the location of commands as the)184 246
R 3.488(ya)-.15 G .988(re look)-3.488 F .988(ed up for e)-.1 F -.15(xe)
--.15 G 3.488(cution. This).15 F .987(is en-)3.487 F(abled by def)184 234
-Q(ault.)-.1 E F1<ad6b>144 246 Q F0 .513(All ar)184 246 R .514
+-.15 G 3.488(cution. This).15 F .988(is en-)3.488 F(abled by def)184 258
+Q(ault.)-.1 E F1<ad6b>144 270 Q F0 .514(All ar)184 270 R .514
(guments in the form of assignment statements are placed in the en)-.18
-F .514(vironment for a)-.4 F
-(command, not just those that precede the command name.)184 258 Q F1
-<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 282 R F2 .651(JOB CONTR)3.151 F
-(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .651
-(processes run in a separate)3.151 F .679(process group.)184 294 R .678
+F .513(vironment for a)-.4 F
+(command, not just those that precede the command name.)184 282 Q F1
+<ad6d>144 294 Q F0 .148(Monitor mode.)184 294 R .148
+(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F
+.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651
+(on systems that support it \(see)184 306 R F2 .651(JOB CONTR)3.151 F
+(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65
+(processes run in a separate)3.151 F .678(process group.)184 318 R .679
(When a background job completes, the shell prints a line containing it\
-s)5.679 F -.15(ex)184 306 S(it status.).15 E 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 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
+s)5.678 F -.15(ex)184 330 S(it status.).15 E F1<ad6e>144 342 Q F0 .653
+(Read commands b)184 342 R .653(ut do not e)-.2 F -.15(xe)-.15 G .653
+(cute them.).15 F .652(This may be used to check a shell script for)
+5.653 F(syntax errors.)184 354 Q(This is ignored by interacti)5 E .3
+-.15(ve s)-.25 H(hells.).15 E F1<ad6f>144 366 Q/F3 10/Times-Italic@0 SF
+(option\255name)2.5 E F0(The)184 378 Q F3(option\255name)2.5 E F0
+(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 390 Q F0
+(Same as)224 402 Q F1<ad61>2.5 E F0(.)A F1(braceexpand)184 414 Q F0
+(Same as)224 426 Q F1<ad42>2.5 E F0(.)A F1(emacs)184 438 Q F0 .089
+(Use an emacs-style command line editing interf)224 438 R 2.589
(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95
-(when the shell is interacti)224 426 R -.15(ve)-.25 G 3.45(,u).15 G .95
+(when the shell is interacti)224 450 R -.15(ve)-.25 G 3.45(,u).15 G .95
(nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E
-F0 2.5(option. This)224 438 R(also af)2.5 E(fects the editing interf)
+F0 2.5(option. This)224 462 R(also af)2.5 E(fects the editing interf)
-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err)
-184 450 Q(exit)-.18 E F0(Same as)224 450 Q 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)
+184 474 Q(exit)-.18 E F0(Same as)224 474 Q F1<ad65>2.5 E F0(.)A F1
+(errtrace)184 486 Q F0(Same as)224 486 Q F1<ad45>2.5 E F0(.)A F1
+(functrace)184 498 Q F0(Same as)224 510 Q F1<ad54>2.5 E F0(.)A F1
+(hashall)184 522 Q F0(Same as)224 522 Q F1<ad68>2.5 E F0(.)A F1
+(histexpand)184 534 Q F0(Same as)224 546 Q F1<ad48>2.5 E F0(.)A F1
+(history)184 558 Q F0 .586(Enable command history)224 558 R 3.087(,a)
-.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15
H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF
-(.)A F0 .587(This option is)5.087 F(on by def)224 546 Q
+(.)A F0 .587(This option is)5.087 F(on by def)224 570 Q
(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184
-558 Q(eeof)-.18 E F0 1.656(The ef)224 570 R 1.656
+582 Q(eeof)-.18 E F0 1.657(The ef)224 594 R 1.657
(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10)
-4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224
-582 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
-.15 E F1 -.1(ke)184 594 S(yw).1 E(ord)-.1 E F0(Same as)224 606 Q F1
-<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
+4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224
+606 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
+.15 E F1 -.1(ke)184 618 S(yw).1 E(ord)-.1 E F0(Same as)224 630 Q F1
+<ad6b>2.5 E F0(.)A F1(monitor)184 642 Q F0(Same as)224 642 Q F1<ad6d>2.5
+E F0(.)A F1(noclob)184 654 Q(ber)-.1 E F0(Same as)224 666 Q F1<ad43>2.5
+E F0(.)A F1(noexec)184 678 Q F0(Same as)224 678 Q F1<ad6e>2.5 E F0(.)A
+F1(noglob)184 690 Q F0(Same as)224 690 Q F1<ad66>2.5 E F0(.)A F1(nolog)
+184 702 Q F0(Currently ignored.)224 702 Q F1(notify)184 714 Q F0
+(Same as)224 714 Q F1<ad62>2.5 E F0(.)A(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(74)185.115 E 0 Cg EP
+%%Page: 75 75
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(ph)184 84 Q(ysical)-.15 E F0(Same as)224 84 Q 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 108 R
+SF(nounset)184 84 Q F0(Same as)224 84 Q F1<ad75>2.5 E F0(.)A F1(onecmd)
+184 96 Q F0(Same as)224 96 Q F1<ad74>2.5 E F0(.)A F1(ph)184 108 Q
+(ysical)-.15 E F0(Same as)224 108 Q F1<ad50>2.5 E F0(.)A F1(pipefail)184
+120 Q F0 1.029(If set, the return v)224 120 R 1.029
+(alue of a pipeline is the v)-.25 F 1.03
+(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 132 R
1.136
(xit with a non-zero status, or zero if all commands in the pipeline)
--.15 F -.15(ex)224 120 S(it successfully).15 E 5(.T)-.65 G
-(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 132 Q F0
-2.091(Change the beha)224 132 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
+-.15 F -.15(ex)224 144 S(it successfully).15 E 5(.T)-.65 G
+(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 156 Q F0
+2.09(Change the beha)224 156 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091
(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224
-144 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9
-/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E .955
-(for a reference to a document that details ho)224 156 R 3.454(wp)-.25 G
-.954(osix mode af)-3.454 F .954(fects bash')-.25 F 3.454(sb)-.55 G(e-)
--3.454 E(ha)224 168 Q(vior)-.2 E(.)-.55 E F1(pri)184 180 Q(vileged)-.1 E
-F0(Same as)224 192 Q 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
-270 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0
-3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072
-(commands to recreate the current)3.572 F
-(option settings is displayed on the standard output.)184 282 Q F1<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 306 R 1.501
-(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A
-F3 -.27(BA)184 318 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G
-(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G
-.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F
-(vironment,)-.4 E .379(are ignored.)184 330 R .379
-(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15
-(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462
-(user \(group\) id, and the)184 342 R 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 354 Q .694 -.15(ve u)-.25 H .394
+168 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9
+/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E .954
+(for a reference to a document that details ho)224 180 R 3.455(wp)-.25 G
+.955(osix mode af)-3.455 F .955(fects bash')-.25 F 3.455(sb)-.55 G(e-)
+-3.455 E(ha)224 192 Q(vior)-.2 E(.)-.55 E F1(pri)184 204 Q(vileged)-.1 E
+F0(Same as)224 216 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 228 S(rbose).1 E
+F0(Same as)224 228 Q F1<ad76>2.5 E F0(.)A F1(vi)184 240 Q F0 .209
+(Use a vi-style command line editing interf)224 240 R 2.709(ace. This)
+-.1 F .209(also af)2.709 F .209(fects the editing in-)-.25 F(terf)224
+252 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1
+(xtrace)184 264 Q F0(Same as)224 264 Q F1<ad78>2.5 E F0(.)A(If)184 282 Q
+F1<ad6f>3.052 E F0 .552(is supplied with no)3.052 F F2(option\255name)
+3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553
+(alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184
+294 Q F0 1.072(is supplied with no)3.572 F F2(option\255name)3.572 E F0
+3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071
+(commands to recreate the current)3.571 F
+(option settings is displayed on the standard output.)184 306 Q F1<ad70>
+144 318 Q F0 -.45(Tu)184 318 S 1.071(rn on).45 F F2(privile)4.821 E -.1
+(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F
+F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.072
+(\214les are not pro-)3.322 F 1.501
+(cessed, shell functions are not inherited from the en)184 330 R 1.5
+(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3
+-.27(BA)184 342 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H)
+.855 E F4(,)A F0(and)2.774 E F3(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G
+.524(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F
+(vironment,)-.4 E .38(are ignored.)184 354 R .38
+(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u)
+-.25 H .379(ser \(group\) id not equal to the real).15 F .461
+(user \(group\) id, and the)184 366 R 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 378 Q .695 -.15(ve u)-.25 H .395
(ser id is set to the real user id.).15 F .395(If the)5.395 F F1<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 366 R -.45(Tu)5.387 G
-.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886
-F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F
-(set to the real user and group ids.)184 378 Q 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 414 R 2.683
-(xpansion. If)-.15 F -.15(ex)2.683 G .182
-(pansion is attempted on an unset v).15 F(ari-)-.25 E .746
-(able or parameter)184 426 R 3.246(,t)-.4 G .746
-(he shell prints an error message, and, if not interacti)-3.246 F -.15
-(ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184
-438 Q 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
-474 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F
-1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0
-(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 486 Q
-(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1
-<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 534 R .553(may be o)3.053 F -.15(ve)-.15 G .553
+2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25
+E -.15(ve)-.25 G .386(user id is not reset.)184 390 R -.45(Tu)5.386 G
+.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886
+F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F
+(set to the real user and group ids.)184 402 Q F1<ad72>144 414 Q F0
+(Enable restricted shell mode.)184 414 Q
+(This option cannot be unset once it has been set.)5 E F1<ad74>144 426 Q
+F0(Exit after reading and e)184 426 Q -.15(xe)-.15 G
+(cuting one command.).15 E F1<ad75>144 438 Q F0 -.35(Tr)184 438 S .774
+(eat unset v).35 F .773(ariables and parameters other than the special \
+parameters "@" and "*", or)-.25 F .459(array v)184 450 R .459(ariables \
+subscripted with "@" or "*", as an error when performing parameter e)
+-.25 F(x-)-.15 E 2.891(pansion. If)184 462 R -.15(ex)2.891 G .391
+(pansion is attempted on an unset v).15 F .391(ariable or parameter)-.25
+F 2.89(,t)-.4 G .39(he shell prints an)-2.89 F
+(error message, and, if not interacti)184 474 Q -.15(ve)-.25 G 2.5(,e)
+.15 G(xits with a non-zero status.)-2.65 E F1<ad76>144 486 Q F0
+(Print shell input lines as the)184 486 Q 2.5(ya)-.15 G(re read.)-2.5 E
+F1<ad78>144 498 Q F0 .315(After e)184 498 R .315(xpanding each)-.15 F F2
+.315(simple command)2.815 F F0(,)A F1 -.25(fo)2.815 G(r).25 E F0
+(command,)2.815 E F1(case)2.815 E F0(command,)2.815 E F1(select)2.815 E
+F0(command,)2.815 E 1.236(or arithmetic)184 510 R F1 -.25(fo)3.736 G(r)
+.25 E F0 1.236(command, display the e)3.736 F 1.236(xpanded v)-.15 F
+1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0(follo)3.486 E 1.236
+(wed by the com-)-.25 F(mand and its e)184 522 Q(xpanded ar)-.15 E
+(guments or associated w)-.18 E(ord list.)-.1 E F1<ad42>144 534 Q F0
+1.205(The shell performs brace e)184 534 R 1.205(xpansion \(see)-.15 F
+F1 1.205(Brace Expansion)3.705 F F0(abo)3.705 E -.15(ve)-.15 G 3.706
+(\). This).15 F 1.206(is on by de-)3.706 F -.1(fa)184 546 S(ult.).1 E F1
+<ad43>144 558 Q F0 .214(If set,)184 558 R F1(bash)2.714 E F0 .214
+(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214
+(xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0
+2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F
+3.053(tors. This)184 570 R .553(may be o)3.053 F -.15(ve)-.15 G .553
(rridden when creating output \214les by using the redirection opera-)
-.15 F(tor)184 546 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
-<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 570 R -.15(xe)-.15 G .839(cuted in a subshell en).15
-F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838
-(trap is normally not inherited in)3.338 F(such cases.)184 582 Q F1
-<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 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 1.452
-(that change the current w)184 630 R 1.452(orking directory)-.1 F 6.452
-(.I)-.65 G 3.953(tu)-6.452 G 1.453(ses the ph)-3.953 F 1.453
-(ysical directory structure in-)-.05 F 3.335(stead. By)184 642 R(def)
-3.335 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834
+.15 F(tor)184 582 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
+<ad45>144 594 Q F0 .104(If set, an)184 594 R 2.604(yt)-.15 G .104
+(rap on)-2.604 F F1(ERR)2.604 E F0 .103
+(is inherited by shell functions, command substitutions, and com-)2.604
+F .838(mands e)184 606 R -.15(xe)-.15 G .838(cuted in a subshell en).15
+F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839
+(trap is normally not inherited in)3.339 F(such cases.)184 618 Q F1
+<ad48>144 630 Q F0(Enable)184 630 Q F1(!)3.032 E F0 .532
+(style history substitution.)5.532 F .531(This option is on by def)5.532
+F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 642 Q -.15
+(ve)-.25 G(.).15 E F1<ad50>144 654 Q F0 .959
+(If set, the shell does not resolv)184 654 R 3.459(es)-.15 G .959
+(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96
+(cuting commands such as).15 F F1(cd)3.46 E F0 1.453
+(that change the current w)184 666 R 1.453(orking directory)-.1 F 6.453
+(.I)-.65 G 3.952(tu)-6.453 G 1.452(ses the ph)-3.952 F 1.452
+(ysical directory structure in-)-.05 F 3.334(stead. By)184 678 R(def)
+3.334 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834
(ws the logical chain of directories when performing com-)-.25 F
-(mands which change the current directory)184 654 Q(.)-.65 E 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
+(mands which change the current directory)184 690 Q(.)-.65 E F1<ad54>144
+702 Q F0 .89(If set, an)184 702 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1
(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89
(are inherited by shell functions, command)3.39 F 1.932
-(substitutions, and commands e)184 678 R -.15(xe)-.15 G 1.932
+(substitutions, and commands e)184 714 R -.15(xe)-.15 G 1.932
(cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E
-(UG)-.1 E F0(and)4.432 E F1(RETURN)184 690 Q F0
-(traps are normally not inherited in such cases.)2.5 E 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
+(UG)-.1 E F0(and)4.432 E F1(RETURN)184 726 Q F0
+(traps are normally not inherited in such cases.)2.5 E(GNU Bash 5.2)72
+768 Q(2022 September 19)135.955 E(75)185.115 E 0 Cg EP
+%%Page: 76 76
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-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 136.8 R 2.677(f. The)-.25 F .178
+SF<adad>144 84 Q F0 .401(If no ar)184 84 R .401(guments follo)-.18 F
+2.901(wt)-.25 G .401
+(his option, then the positional parameters are unset.)-2.901 F
+(Otherwise,)5.4 E(the positional parameters are set to the)184 96 Q/F2
+10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni)
+.15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>2.5 E
+F0(.)A F1<ad>144 108 Q F0 .796
+(Signal the end of options, cause all remaining)184 108 R F2(ar)3.297 E
+(g)-.37 E F0 3.297(st)C 3.297(ob)-3.297 G 3.297(ea)-3.297 G .797
+(ssigned to the positional pa-)-3.297 F 3.022(rameters. The)184 120 R F1
+<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 132 Q .425(The options are of)144 148.8
+R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425
+(ault unless otherwise noted.)-.1 F .425
+(Using + rather than \255 causes these options)5.425 F .178
+(to be turned of)144 160.8 R 2.678(f. The)-.25 F .178
(options can also be speci\214ed as ar)2.678 F .178(guments to an in)
--.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066
-(current set of options may be found in)144 148.8 R F1<24ad>2.566 E F0
+-.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066
+(current set of options may be found in)144 172.8 R F1<24ad>2.566 E F0
5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066
-(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F
-(is encountered.)144 160.8 Q F1(shift)108 177.6 Q F0([)2.5 E F2(n)A F0
-(])A .428(The positional parameters from)144 189.6 R F2(n)2.928 E F0
-.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G
-.429(rameters represented by the num-).15 F(bers)144 201.6 Q F1($#)2.583
-E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E 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 213.6 R(If)5.06 E F2(n)2.92 E F0
+(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F
+(is encountered.)144 184.8 Q F1(shift)108 201.6 Q F0([)2.5 E F2(n)A F0
+(])A .429(The positional parameters from)144 213.6 R F2(n)2.929 E F0
+.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G
+.428(rameters represented by the num-).15 F(bers)144 225.6 Q F1($#)2.582
+E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E 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 237.6 R(If)5.06 E F2(n)2.92 E F0
.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F
(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56
-(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 225.6 R
-.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0
-.143(is greater than)2.883 F F1($#)2.643 E F0
-(or less than zero; otherwise 0.)144 237.6 Q F1(shopt)108 254.4 Q F0([)
+(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 249.6 R
+.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0
+.144(is greater than)2.884 F F1($#)2.644 E F0
+(or less than zero; otherwise 0.)144 261.6 Q F1(shopt)108 278.4 Q F0([)
2.5 E F1(\255pqsu)A F0 2.5(][)C F1<ad6f>-2.5 E F0 2.5(][)C F2(optname)
--2.5 E F0(...])2.5 E -.8(To)144 266.4 S .639(ggle the v).8 F .639
+-2.5 E F0(...])2.5 E -.8(To)144 290.4 S .64(ggle the v).8 F .639
(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E
-5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375
-(listed belo)144 278.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H
-2.875(ft).4 G(he)-2.875 E 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 302.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H
+2.874(ft).4 G(he)-2.874 E 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 2.565(mand. W)144 290.4 R .065
+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 314.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 302.4 R F2
+F .074(dication of whether or not each is set; if)144 326.4 R F2
(optnames)2.574 E F0 .074
(are supplied, the output is restricted to those op-)2.574 F 3.105
-(tions. The)144 314.4 R F1<ad70>3.105 E F0 .605(option causes output to\
+(tions. The)144 338.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 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
+E(options ha)144 350.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad73>144 362.4 Q F0(Enable \(set\) each)180
+362.4 Q F2(optname)2.5 E F0(.)A F1<ad75>144 374.4 Q F0
+(Disable \(unset\) each)180 374.4 Q F2(optname)2.5 E F0(.)A F1<ad71>144
+386.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\
+tus indicates whether the)180 386.4 R F2(optname)2.504 E F0(is)2.504 E
+.256(set or unset.)180 398.4 R .256(If multiple)5.256 F F2(optname)2.756
+E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G
+(ith)-2.756 E F1<ad71>2.756 E F0 2.755(,t)C .255
+(he return status is zero if)-2.755 F(all)180 410.4 Q F2(optnames)2.5 E
+F0(are enabled; non-zero otherwise.)2.5 E F1<ad6f>144 422.4 Q F0
+(Restricts the v)180 422.4 Q(alues of)-.25 E F2(optname)2.5 E F0
(to be those de\214ned for the)2.5 E 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 415.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 439.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 .983
-(set or unset, respecti)144 427.2 R -.15(ve)-.25 G(ly).15 E 5.983(.U)
--.65 G .983(nless otherwise noted, the)-5.983 F F1(shopt)3.484 E F0 .984
-(options are disabled \(unset\) by de-)3.484 F -.1(fa)144 439.2 S(ult.)
-.1 E 1.544(The return status when listing options is zero if all)144 456
-R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)4.044 F
+E F0(sho)3.124 E .624(ws only those options which are)-.25 F .984
+(set or unset, respecti)144 451.2 R -.15(ve)-.25 G(ly).15 E 5.984(.U)
+-.65 G .984(nless otherwise noted, the)-5.984 F F1(shopt)3.484 E F0 .983
+(options are disabled \(unset\) by de-)3.483 F -.1(fa)144 463.2 S(ult.)
+.1 E 1.544(The return status when listing options is zero if all)144 480
+R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.)4.045 F
.696
(When setting or unsetting options, the return status is zero unless an)
-144 468 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell)
--.25 F(option.)144 480 Q(The list of)144 496.8 Q F1(shopt)2.5 E F0
-(options is:)2.5 E F1(assoc_expand_once)144 514.8 Q F0 1.945
-(If set, the shell suppresses multiple e)184 526.8 R -.25(va)-.25 G
-1.944(luation of associati).25 F 2.244 -.15(ve a)-.25 H 1.944
-(rray subscripts during).15 F .885(arithmetic e)184 538.8 R .885
+144 492 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell)
+-.25 F(option.)144 504 Q(The list of)144 520.8 Q F1(shopt)2.5 E F0
+(options is:)2.5 E F1(assoc_expand_once)144 538.8 Q F0 1.944
+(If set, the shell suppresses multiple e)184 550.8 R -.25(va)-.25 G
+1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945
+(rray subscripts during).15 F .885(arithmetic e)184 562.8 R .885
(xpression e)-.15 F -.25(va)-.25 G .885(luation, while e).25 F -.15(xe)
-.15 G .885(cuting b).15 F .885(uiltins that can perform v)-.2 F .885
-(ariable as-)-.25 F(signments, and while e)184 550.8 Q -.15(xe)-.15 G
+(ariable as-)-.25 F(signments, and while e)184 574.8 Q -.15(xe)-.15 G
(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1
-(autocd)144 562.8 Q F0 .2
-(If set, a command name that is the name of a directory is e)184 562.8 R
--.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E
-(ment to the)184 574.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
+(autocd)144 586.8 Q F0 .199
+(If set, a command name that is the name of a directory is e)184 586.8 R
+-.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E
+(ment to the)184 598.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
(option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E
-F1(cdable_v)144 586.8 Q(ars)-.1 E F0 .155(If set, an ar)184 598.8 R .155
-(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156
+F1(cdable_v)144 610.8 Q(ars)-.1 E F0 .156(If set, an ar)184 622.8 R .156
+(gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155
(iltin command that is not a directory is assumed to be the).2 F
-(name of a v)184 610.8 Q(ariable whose v)-.25 E
-(alue is the directory to change to.)-.25 E F1(cdspell)144 622.8 Q F0
+(name of a v)184 634.8 Q(ariable whose v)-.25 E
+(alue is the directory to change to.)-.25 E F1(cdspell)144 646.8 Q F0
1.055
(If set, minor errors in the spelling of a directory component in a)184
-622.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987
-(corrected. The)184 634.8 R 1.487(errors check)3.987 F 1.487
-(ed for are transposed characters, a missing character)-.1 F 3.988(,a)
--.4 G(nd)-3.988 E .77(one character too man)184 646.8 R 4.57 -.65(y. I)
+646.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988
+(corrected. The)184 658.8 R 1.488(errors check)3.988 F 1.487
+(ed for are transposed characters, a missing character)-.1 F 3.987(,a)
+-.4 G(nd)-3.987 E .77(one character too man)184 670.8 R 4.57 -.65(y. I)
-.15 H 3.27(fac).65 G .77
(orrection is found, the corrected \214lename is printed, and)-3.27 F
-(the command proceeds.)184 658.8 Q
+(the command proceeds.)184 682.8 Q
(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.)
-.15 E F1(checkhash)144 670.8 Q F0 .736(If set,)184 682.8 R F1(bash)3.236
-E F0 .736(checks that a command found in the hash table e)3.236 F .737
+.15 E F1(checkhash)144 694.8 Q F0 .737(If set,)184 706.8 R F1(bash)3.237
+E F0 .736(checks that a command found in the hash table e)3.237 F .736
(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184
-694.8 Q(If a hashed command no longer e)5 E
-(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 706.8
-Q F0 .449(If set,)184 718.8 R F1(bash)2.949 E F0 .449
-(lists the status of an)2.949 F 2.949(ys)-.15 G .448
-(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15
-F -.15(ve)-.25 G 3.438(shell. If)184 730.8 R(an)3.438 E 3.438(yj)-.15 G
-.938(obs are running, this causes the e)-3.438 F .938
-(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(73)190.395 E 0 Cg EP
-%%Page: 74 74
+718.8 Q(If a hashed command no longer e)5 E
+(xists, a normal path search is performed.)-.15 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(76)185.115 E 0 Cg EP
+%%Page: 77 77
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .817
-(attempted without an interv)184 84 R .817(ening command \(see)-.15 F/F1
-9/Times-Bold@0 SF .816(JOB CONTR)3.316 F(OL)-.27 E F0(abo)3.066 E -.15
-(ve)-.15 G 3.316(\). The).15 F .816(shell al-)3.316 F -.1(wa)184 96 S
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(checkjobs)144 84 Q F0 .448(If set,)184 96 R F1(bash)2.948 E F0 .448
+(lists the status of an)2.948 F 2.949(ys)-.15 G .449
+(topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15
+F -.15(ve)-.25 G 2.662(shell. If)184 108 R(an)2.662 E 2.661(yj)-.15 G
+.161(obs are running, this causes the e)-2.661 F .161
+(xit to be deferred until a second e)-.15 F .161(xit is at-)-.15 F 1.472
+(tempted without an interv)184 120 R 1.473(ening command \(see)-.15 F/F2
+9/Times-Bold@0 SF 1.473(JOB CONTR)3.973 F(OL)-.27 E F0(abo)3.723 E -.15
+(ve)-.15 G 3.973(\). The).15 F 1.473(shell al-)3.973 F -.1(wa)184 132 S
(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G(obs are stopped.)
--2.5 E/F2 10/Times-Bold@0 SF(checkwinsize)144 108 Q F0 1.09(If set,)184
-120 R F2(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09
-(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09
-(uiltin\) command and, if)-.2 F(necessary)184 132 Q 3.351(,u)-.65 G .851
-(pdates the v)-3.351 F .85(alues of)-.25 F F1(LINES)3.35 E F0(and)3.1 E
-F1(COLUMNS)3.35 E/F3 9/Times-Roman@0 SF(.)A F0 .85
-(This option is enabled by de-)5.35 F -.1(fa)184 144 S(ult.).1 E F2
-(cmdhist)144 156 Q F0 .172(If set,)184 156 R F2(bash)2.672 E F0 .172
-(attempts to sa)2.672 F .472 -.15(ve a)-.2 H .173
+-2.5 E F1(checkwinsize)144 144 Q F0 1.09(If set,)184 156 R F1(bash)3.59
+E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09(ize after each e)
+-3.59 F 1.09(xternal \(non-b)-.15 F 1.09(uiltin\) command and, if)-.2 F
+(necessary)184 168 Q 3.35(,u)-.65 G .85(pdates the v)-3.35 F .85
+(alues of)-.25 F F2(LINES)3.35 E F0(and)3.1 E F2(COLUMNS)3.35 E/F3 9
+/Times-Roman@0 SF(.)A F0 .85(This option is enabled by de-)5.35 F -.1
+(fa)184 180 S(ult.).1 E F1(cmdhist)144 192 Q F0 .173(If set,)184 192 R
+F1(bash)2.673 E F0 .173(attempts to sa)2.673 F .473 -.15(ve a)-.2 H .172
(ll lines of a multiple-line command in the same history en-).15 F(try)
-184 168 Q 5.597(.T)-.65 G .597(his allo)-5.597 F .597
+184 204 Q 5.596(.T)-.65 G .597(his allo)-5.596 F .597
(ws easy re-editing of multi-line commands.)-.25 F .597
-(This option is enabled by de-)5.597 F -.1(fa)184 180 S 1.287(ult, b).1
+(This option is enabled by de-)5.597 F -.1(fa)184 216 S 1.288(ult, b).1
F 1.288(ut only has an ef)-.2 F 1.288
-(fect if command history is enabled, as described abo)-.25 F 1.588 -.15
-(ve u)-.15 H(nder).15 E F1(HIST)184 192 Q(OR)-.162 E(Y)-.315 E F3(.)A F2
-(compat31)144 204 Q(compat32)144 216 Q(compat40)144 228 Q(compat41)144
-240 Q(compat42)144 252 Q(compat43)144 264 Q(compat44)144 276 Q F0 .889
-(These control aspects of the shell')184 288 R 3.389(sc)-.55 G .889
-(ompatibility mode \(see)-3.389 F F1 .889(SHELL COMP)3.389 F -.855(AT)
--.666 G(IBILITY).855 E(MODE)184 300 Q F0(belo)2.25 E(w\).)-.25 E F2
-(complete_fullquote)144 316.8 Q F0 .653(If set,)184 328.8 R F2(bash)
-3.153 E F0 .653(quotes all shell metacharacters in \214lenames and dire\
-ctory names when per)3.153 F(-)-.2 E 1.525(forming completion.)184 340.8
-R 1.524(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15
-G 4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F
-2.667(from the set of characters that will be quoted in completed \214l\
-enames when these)184 352.8 R .029(metacharacters appear in shell v)184
-364.8 R .028(ariable references in w)-.25 F .028(ords to be completed.)
--.1 F .028(This means)5.028 F 1.072(that dollar signs in v)184 376.8 R
-1.073(ariable names that e)-.25 F 1.073
+(fect if command history is enabled, as described abo)-.25 F 1.587 -.15
+(ve u)-.15 H(nder).15 E F2(HIST)184 228 Q(OR)-.162 E(Y)-.315 E F3(.)A F1
+(compat31)144 240 Q(compat32)144 252 Q(compat40)144 264 Q(compat41)144
+276 Q(compat42)144 288 Q(compat43)144 300 Q(compat44)144 312 Q(compat50)
+144 324 Q F0 .889(These control aspects of the shell')184 336 R 3.389
+(sc)-.55 G .889(ompatibility mode \(see)-3.389 F F2 .889(SHELL COMP)
+3.389 F -.855(AT)-.666 G(IBILITY).855 E(MODE)184 348 Q F0(belo)2.25 E
+(w\).)-.25 E F1(complete_fullquote)144 364.8 Q F0 .654(If set,)184 376.8
+R F1(bash)3.153 E F0 .653(quotes all shell metacharacters in \214lename\
+s and directory names when per)3.153 F(-)-.2 E 1.524
+(forming completion.)184 388.8 R 1.524(If not set,)6.524 F F1(bash)4.024
+E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524
+(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\
+haracters that will be quoted in completed \214lenames when these)184
+400.8 R .028(metacharacters appear in shell v)184 412.8 R .028
+(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029
+(This means)5.029 F 1.073(that dollar signs in v)184 424.8 R 1.073
+(ariable names that e)-.25 F 1.073
(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25
-(ev e)184 388.8 T 1.923 -.4(r, a).25 H 1.423 -.15(ny d).4 H 1.123
+(ev e)184 436.8 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123
(ollar signs appearing in \214lenames will not be quoted, either).15 F
-6.123(.T)-.55 G 1.122(his is acti)-6.123 F -.15(ve)-.25 G .59
+6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59
(only when bash is using backslashes to quote completed \214lenames.)184
-400.8 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 412.8 Q
+448.8 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 460.8 Q
(ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E
-(ersions through 4.2.)-.15 E F2(dir)144 429.6 Q(expand)-.18 E F0 .487
-(If set,)184 441.6 R F2(bash)2.987 E F0 .486
+(ersions through 4.2.)-.15 E F1(dir)144 477.6 Q(expand)-.18 E F0 .486
+(If set,)184 489.6 R F1(bash)2.986 E F0 .486
(replaces directory names with the results of w)2.986 F .486(ord e)-.1 F
-.486(xpansion when perform-)-.15 F .179(ing \214lename completion.)184
-453.6 R .179(This changes the contents of the readline editing b)5.179 F
-(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184
-465.6 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
-(hat the user typed.)-2.5 E F2(dirspell)144 482.4 Q F0 .859(If set,)184
-482.4 R F2(bash)3.359 E F0 .858
-(attempts spelling correction on directory names during w)3.359 F .858
+.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184
+501.6 R .179(This changes the contents of the readline editing b)5.18 F
+(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,)
+184 513.6 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
+(hat the user typed.)-2.5 E F1(dirspell)144 530.4 Q F0 .858(If set,)184
+530.4 R F1(bash)3.358 E F0 .858
+(attempts spelling correction on directory names during w)3.358 F .859
(ord completion if)-.1 F
-(the directory name initially supplied does not e)184 494.4 Q(xist.)-.15
-E F2(dotglob)144 511.2 Q F0 .165(If set,)184 511.2 R F2(bash)2.665 E F0
+(the directory name initially supplied does not e)184 542.4 Q(xist.)-.15
+E F1(dotglob)144 559.2 Q F0 .165(If set,)184 559.2 R F1(bash)2.665 E F0
.165(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665
('i)-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F
-(xpansion.)-.15 E(The \214lenames)184 523.2 Q F2 -.63(``)2.5 G -.55(.')
-.63 G(')-.08 E F0(and)5 E F2 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0
+(xpansion.)-.15 E(The \214lenames)184 571.2 Q F1 -.63(``)2.5 G -.55(.')
+.63 G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0
(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5
-(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F2(dotglob)2.5 E F0
-(is set.)2.5 E F2(execfail)144 540 Q F0 .517(If set, a non-interacti)184
-540 R .817 -.15(ve s)-.25 H .517(hell will not e).15 F .516
-(xit if it cannot e)-.15 F -.15(xe)-.15 G .516
+(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0
+(is set.)2.5 E F1(execfail)144 588 Q F0 .516(If set, a non-interacti)184
+588 R .816 -.15(ve s)-.25 H .516(hell will not e).15 F .516
+(xit if it cannot e)-.15 F -.15(xe)-.15 G .517
(cute the \214le speci\214ed as an ar).15 F(-)-.2 E(gument to the)184
-552 Q F2(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E
-.3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F2(exec)2.5 E F0
--.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 568.8 Q F0 .716
-(If set, aliases are e)184 580.8 R .717(xpanded as described abo)-.15 F
-1.017 -.15(ve u)-.15 H(nder).15 E F1(ALIASES)3.217 E F3(.)A F0 .717
-(This option is enabled)5.217 F(by def)184 592.8 Q(ault for interacti)
--.1 E .3 -.15(ve s)-.25 H(hells.).15 E F2(extdeb)144 609.6 Q(ug)-.2 E F0
-.17(If set at shell in)184 621.6 R -.2(vo)-.4 G .17
+600 Q F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E
+.3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E F0
+-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 616.8 Q F0 .717
+(If set, aliases are e)184 628.8 R .717(xpanded as described abo)-.15 F
+1.017 -.15(ve u)-.15 H(nder).15 E F2(ALIASES)3.217 E F3(.)A F0 .716
+(This option is enabled)5.217 F(by def)184 640.8 Q(ault for interacti)
+-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(extdeb)144 657.6 Q(ug)-.2 E F0
+.17(If set at shell in)184 669.6 R -.2(vo)-.4 G .17
(cation, or in a shell startup \214le, arrange to e).2 F -.15(xe)-.15 G
-.17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.081
-(before the shell starts, identical to the)184 633.6 R F2<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
+.17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.082
+(before the shell starts, identical to the)184 681.6 R F1<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 693.6 Q
+(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184
+710.4 Q F0(The)220 710.4 Q 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 674.4
-Q(gument.)-.18 E F2(2.)184 691.2 Q F0 1.667(If the command run by the)
-220 691.2 R F2(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)
-4.167 F 1.667(alue, the ne)-.25 F(xt)-.15 E
-(command is skipped and not e)220 703.2 Q -.15(xe)-.15 G(cuted.).15 E
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(74)190.395 E 0 Cg EP
-%%Page: 75 75
+(number corresponding to each function name supplied as an ar)220 722.4
+Q(gument.)-.18 E(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(77)
+185.115 E 0 Cg EP
+%%Page: 78 78
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(3.)184 84 Q F0 .841(If the command run by the)220 84 R F1(DEB)3.341 E
-(UG)-.1 E F0 .841(trap returns a v)3.341 F .84
-(alue of 2, and the shell is)-.25 F -.15(exe)220 96 S .488
+SF(2.)184 84 Q F0 1.667(If the command run by the)220 84 R F1(DEB)4.167
+E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F 1.667
+(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 96 Q
+-.15(xe)-.15 G(cuted.).15 E F1(3.)184 112.8 Q F0 .84
+(If the command run by the)220 112.8 R F1(DEB)3.34 E(UG)-.1 E F0 .841
+(trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15
+(exe)220 124.8 S .488
(cuting in a subroutine \(a shell function or a shell script e).15 F
-.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1
-(sour)220 108 Q(ce)-.18 E F0 -.2(bu)2.5 G
+(sour)220 136.8 Q(ce)-.18 E F0 -.2(bu)2.5 G
(iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E
-(n)-.15 E F0(.)A F1(4.)184 124.8 Q/F2 9/Times-Bold@0 SF -.27(BA)220
-124.8 S(SH_ARGC).27 E F0(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0
+(n)-.15 E F0(.)A F1(4.)184 153.6 Q/F2 9/Times-Bold@0 SF -.27(BA)220
+153.6 S(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0
.904(are updated as described in their descriptions)3.154 F(abo)220
-136.8 Q -.15(ve)-.15 G(.).15 E F1(5.)184 153.6 Q F0 1.637(Function trac\
-ing is enabled: command substitution, shell functions, and sub-)220
-153.6 R(shells in)220 165.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)
+165.6 Q -.15(ve)-.15 G(\).).15 E F1(5.)184 182.4 Q F0 1.637(Function tr\
+acing is enabled: command substitution, shell functions, and sub-)220
+182.4 R(shells in)220 194.4 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)
-2.5 E F1(\()2.5 E/F3 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0
(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0
-(traps.)2.5 E F1(6.)184 182.4 Q F0 1.082(Error tracing is enabled: comm\
-and substitution, shell functions, and subshells)220 182.4 R(in)220
-194.4 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3
+(traps.)2.5 E F1(6.)184 211.2 Q F0 1.082(Error tracing is enabled: comm\
+and substitution, shell functions, and subshells)220 211.2 R(in)220
+223.2 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3
(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)
-2.5 E F1(extglob)144 211.2 Q F0 .4(If set, the e)184 211.2 R .4
+2.5 E F1(extglob)144 240 Q F0 .4(If set, the e)184 240 R .4
(xtended pattern matching features described abo)-.15 F .7 -.15(ve u)
--.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 223.2 Q
-F0(are enabled.)2.5 E F1(extquote)144 240 Q F0 .86(If set,)184 252 R F1
-($)3.36 E F0<08>A F3(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0
+-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 252 Q
+F0(are enabled.)2.5 E F1(extquote)144 268.8 Q F0 .86(If set,)184 280.8 R
+F1($)3.36 E F0<08>A F3(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0
(")A F3(string)A F0 3.36("q)C .86(uoting is performed within)-3.36 F F1
(${)3.36 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)3.36 G .86
-(pansions en-).15 F(closed in double quotes.)184 264 Q
-(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 280.8 Q
-F0 .242(If set, patterns which f)184 280.8 R .243
+(pansions en-).15 F(closed in double quotes.)184 292.8 Q
+(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 309.6 Q
+F0 .243(If set, patterns which f)184 309.6 R .243
(ail to match \214lenames during pathname e)-.1 F .243
-(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 292.8 Q(.)
--.55 E F1 -.25(fo)144 309.6 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
-.937(If set, the suf)184 321.6 R<8c78>-.25 E .936(es speci\214ed by the)
+(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 321.6 Q(.)
+-.55 E F1 -.25(fo)144 338.4 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
+.936(If set, the suf)184 350.4 R<8c78>-.25 E .936(es speci\214ed by the)
-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w)
--.25 F .936(ords to be ignored)-.1 F .32(when performing w)184 333.6 R
+-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 362.4 R
.32(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G
-.32(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.948
-(pletions. See)184 345.6 R F2 .448(SHELL V)2.948 F(ARIABLES)-1.215 E F0
-(abo)2.698 E .748 -.15(ve f)-.15 H .448(or a description of).15 F F2
-(FIGNORE)2.947 E/F4 9/Times-Roman@0 SF(.)A F0 .447(This option is)4.947
-F(enabled by def)184 357.6 Q(ault.)-.1 E F1(globasciiranges)144 374.4 Q
-F0 2.518(If set, range e)184 386.4 R 2.519
-(xpressions used in pattern matching brack)-.15 F 2.519(et e)-.1 F 2.519
-(xpressions \(see)-.15 F F2 -.09(Pa)5.019 G(tter).09 E(n)-.135 E
-(Matching)184 398.4 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b).15 G(eha)
--3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214
+.32(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947
+(pletions. See)184 374.4 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0
+(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2
+(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948
+F(enabled by def)184 386.4 Q(ault.)-.1 E F1(globasciiranges)144 403.2 Q
+F0 2.519(If set, range e)184 415.2 R 2.519
+(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518
+(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E
+(Matching)184 427.2 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha)
+-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214
(nt)-3.214 G .714(he traditional C locale when performing comparisons.)
--3.214 F 1.02(That is, the current locale')184 410.4 R 3.52(sc)-.55 G
+-3.214 F 1.02(That is, the current locale')184 439.2 R 3.52(sc)-.55 G
1.02(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F
-F1(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 422.4 R F1
-(A)3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper)
--3.457 F .957(-case and lo)-.2 F(wer)-.25 E .956
-(-case ASCII characters will collate)-.2 F(together)184 434.4 Q(.)-.55 E
-F1(globstar)144 451.2 Q F0 .518(If set, the pattern)184 451.2 R F1(**)
+F1(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 451.2 R F1
+(A)3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)
+-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957
+(-case ASCII characters will collate)-.2 F(together)184 463.2 Q(.)-.55 E
+F1(globskipdots)144 480 Q F0 .285(If set, pathname e)184 492 R .285
+(xpansion will ne)-.15 F -.15(ve)-.25 G 2.785(rm).15 G .285
+(atch the \214lenames)-2.785 F F1 -.63(``)2.785 G -.55(.').63 G(')-.08 E
+F0(and)5.285 E F1 -.63(``)2.784 G(..).63 E -.63('')-.55 G F0 2.784(,e)
+.63 G -.15(ve)-3.034 G 2.784(ni).15 G 2.784(ft)-2.784 G .284(he pat-)
+-2.784 F(tern be)184 504 Q(gins with a)-.15 E F1 -.63(``)2.5 G -.55(.')
+.63 G(')-.08 E F0 5(.T)C(his option is enabled by def)-5 E(ault.)-.1 E
+F1(globstar)144 520.8 Q F0 .518(If set, the pattern)184 520.8 R F1(**)
3.018 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F
.519(xt will match all \214les and zero)-.15 F .432
-(or more directories and subdirectories.)184 463.2 R .431
+(or more directories and subdirectories.)184 532.8 R .431
(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0
2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184
-475.2 Q F1(gnu_errfmt)144 492 Q F0(If set, shell error messages are wri\
-tten in the standard GNU error message format.)184 504 Q F1(histappend)
-144 520.8 Q F0 .676
+544.8 Q F1(gnu_errfmt)144 561.6 Q F0(If set, shell error messages are w\
+ritten in the standard GNU error message format.)184 573.6 Q F1
+(histappend)144 590.4 Q F0 .676
(If set, the history list is appended to the \214le named by the v)184
-532.8 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G
-(ri-).25 E(able when the shell e)184 544.8 Q(xits, rather than o)-.15 E
--.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 561.6 Q(eedit)
--.18 E F0 .576(If set, and)184 573.6 R F1 -.18(re)3.076 G(adline).18 E
+602.4 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G
+(ri-).25 E(able when the shell e)184 614.4 Q(xits, rather than o)-.15 E
+-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 631.2 Q(eedit)
+-.18 E F0 .576(If set, and)184 643.2 R F1 -.18(re)3.076 G(adline).18 E
F0 .575(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15
G .575(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F
-(tory substitution.)184 585.6 Q F1(histv)144 602.4 Q(erify)-.1 E F0 .402
-(If set, and)184 614.4 R F1 -.18(re)2.903 G(adline).18 E F0 .403
+(tory substitution.)184 655.2 Q F1(histv)144 672 Q(erify)-.1 E F0 .402
+(If set, and)184 684 R F1 -.18(re)2.903 G(adline).18 E F0 .403
(is being used, the results of history substitution are not immediately)
-2.903 F .662(passed to the shell parser)184 626.4 R 5.662(.I)-.55 G .661
+2.903 F .662(passed to the shell parser)184 696 R 5.662(.I)-.55 G .661
(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161
-G(adline).18 E F0(editing)3.161 E -.2(bu)184 638.4 S -.25(ff).2 G(er).25
-E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1
-(hostcomplete)144 655.2 Q F0 1.181(If set, and)184 667.2 R F1 -.18(re)
-3.681 G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0
-1.182(will attempt to perform hostname completion)3.682 F 1.381
-(when a w)184 679.2 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381
-(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E
-F2(READLINE)3.88 E F0(abo)184 691.2 Q -.15(ve)-.15 G 2.5(\). This).15 F
-(is enabled by def)2.5 E(ault.)-.1 E(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(75)190.395 E 0 Cg EP
-%%Page: 76 76
+G(adline).18 E F0(editing)3.161 E -.2(bu)184 708 S -.25(ff).2 G(er).25 E
+2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(78)185.115 E 0 Cg EP
+%%Page: 79 79
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(huponexit)144 84 Q F0(If set,)184 96 Q F1(bash)2.5 E F0(will send)2.5
-E/F2 9/Times-Bold@0 SF(SIGHUP)2.5 E F0(to all jobs when an interacti)
-2.25 E .3 -.15(ve l)-.25 H(ogin shell e).15 E(xits.)-.15 E F1
-(inherit_err)144 112.8 Q(exit)-.18 E F0 .219
-(If set, command substitution inherits the v)184 124.8 R .219
+SF(hostcomplete)144 84 Q F0 1.181(If set, and)184 96 R F1 -.18(re)3.681
+G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182
+(will attempt to perform hostname completion)3.682 F 1.381(when a w)184
+108 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381
+(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E
+/F2 9/Times-Bold@0 SF(READLINE)3.88 E F0(abo)184 120 Q -.15(ve)-.15 G
+2.5(\). This).15 F(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144
+136.8 Q F0(If set,)184 148.8 Q F1(bash)2.5 E F0(will send)2.5 E F2
+(SIGHUP)2.5 E F0(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25
+H(ogin shell e).15 E(xits.)-.15 E F1(inherit_err)144 165.6 Q(exit)-.18 E
+F0 .219(If set, command substitution inherits the v)184 177.6 R .219
(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .22
-(option, instead of unsetting)2.719 F(it in the subshell en)184 136.8 Q
+(option, instead of unsetting)2.719 F(it in the subshell en)184 189.6 Q
2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10
/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti)
-144 153.6 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 165.6 R
+144 206.4 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 218.4 R
2.83(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E
F0 .33(to cause that w)2.83 F .33(ord and all remaining characters on)
--.1 F .967(that line to be ignored in an interacti)184 177.6 R 1.267
+-.1 F .967(that line to be ignored in an interacti)184 230.4 R 1.267
-.15(ve s)-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217
E -.15(ve)-.15 G 3.467(\). This).15 F .968(option is)3.468 F
-(enabled by def)184 189.6 Q(ault.)-.1 E F1(lastpipe)144 206.4 Q F0 .066
-(If set, and job control is not acti)184 206.4 R -.15(ve)-.25 G 2.566
+(enabled by def)184 242.4 Q(ault.)-.1 E F1(lastpipe)144 259.2 Q F0 .066
+(If set, and job control is not acti)184 259.2 R -.15(ve)-.25 G 2.566
(,t).15 G .066(he shell runs the last command of a pipeline not e)-2.566
F -.15(xe)-.15 G(-).15 E
-(cuted in the background in the current shell en)184 218.4 Q(vironment.)
--.4 E F1(lithist)144 235.2 Q F0 .654(If set, and the)184 235.2 R F1
-(cmdhist)3.154 E F0 .654(option is enabled, multi-line commands are sa)
-3.154 F -.15(ve)-.2 G 3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)
--3.155 F(with embedded ne)184 247.2 Q
+(cuted in the background in the current shell en)184 271.2 Q(vironment.)
+-.4 E F1(lithist)144 288 Q F0 .654(If set, and the)184 288 R F1(cmdhist)
+3.154 E F0 .654(option is enabled, multi-line commands are sa)3.154 F
+-.15(ve)-.2 G 3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F
+(with embedded ne)184 300 Q
(wlines rather than using semicolon separators where possible.)-.25 E F1
-(localv)144 264 Q(ar_inherit)-.1 E F0 .422(If set, local v)184 276 R
+(localv)144 316.8 Q(ar_inherit)-.1 E F0 .422(If set, local v)184 328.8 R
.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422
(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184
-288 S .173(ists at a pre).15 F .173(vious scope before an)-.25 F 2.673
+340.8 S .173(ists at a pre).15 F .173(vious scope before an)-.25 F 2.673
(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .174
-(The nameref attrib)5.174 F .174(ute is not)-.2 F(inherited.)184 300 Q
-F1(localv)144 316.8 Q(ar_unset)-.1 E F0 .329(If set, calling)184 328.8 R
+(The nameref attrib)5.174 F .174(ute is not)-.2 F(inherited.)184 352.8 Q
+F1(localv)144 369.6 Q(ar_unset)-.1 E F0 .329(If set, calling)184 381.6 R
F1(unset)2.829 E F0 .329(on local v)2.829 F .329(ariables in pre)-.25 F
.328(vious function scopes marks them so subse-)-.25 F .543(quent looku\
ps \214nd them unset until that function returns. This is identical to \
-the beha)184 340.8 R(v-)-.2 E(ior of unsetting local v)184 352.8 Q
-(ariables at the current function scope.)-.25 E F1(login_shell)144 369.6
+the beha)184 393.6 R(v-)-.2 E(ior of unsetting local v)184 405.6 Q
+(ariables at the current function scope.)-.25 E F1(login_shell)144 422.4
Q F0 .486
(The shell sets this option if it is started as a login shell \(see)184
-381.6 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve)
--.15 G 2.986(\). The).15 F -.25(va)184 393.6 S(lue may not be changed.)
-.25 E F1(mailwar)144 410.4 Q(n)-.15 E F0 .814(If set, and a \214le that)
-184 422.4 R F1(bash)3.314 E F0 .815
+434.4 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve)
+-.15 G 2.986(\). The).15 F -.25(va)184 446.4 S(lue may not be changed.)
+.25 E F1(mailwar)144 463.2 Q(n)-.15 E F0 .814(If set, and a \214le that)
+184 475.2 R F1(bash)3.314 E F0 .815
(is checking for mail has been accessed since the last time it)3.314 F
--.1(wa)184 434.4 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
+-.1(wa)184 487.2 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
(`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i)
--.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144
-451.2 Q F0 .325(If set, and)184 463.2 R F1 -.18(re)2.825 G(adline).18 E
-F0 .325(is being used,)2.825 F F1(bash)2.824 E F0 .324
+-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 504
+Q F0 .325(If set, and)184 516 R F1 -.18(re)2.825 G(adline).18 E F0 .325
+(is being used,)2.825 F F1(bash)2.824 E F0 .324
(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E
F0 .324(for possible)2.574 F
-(completions when completion is attempted on an empty line.)184 475.2 Q
-F1(nocaseglob)144 492 Q F0 .436(If set,)184 504 R F1(bash)2.936 E F0
+(completions when completion is attempted on an empty line.)184 528 Q F1
+(nocaseglob)144 544.8 Q F0 .436(If set,)184 556.8 R F1(bash)2.936 E F0
.436(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)
--.25 H .437(ashion when performing pathname).05 F -.15(ex)184 516 S
+-.25 H .437(ashion when performing pathname).05 F -.15(ex)184 568.8 S
(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E
--.15(ve)-.15 G(\).).15 E F1(nocasematch)144 532.8 Q F0 1.194(If set,)184
-544.8 R F1(bash)3.694 E F0 1.194
+-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 585.6 Q F0 1.194(If set,)184
+597.6 R F1(bash)3.694 E F0 1.194
(matches patterns in a case\255insensiti)3.694 F 1.493 -.15(ve f)-.25 H
-1.193(ashion when performing matching).05 F .551(while e)184 556.8 R
+1.193(ashion when performing matching).05 F .551(while e)184 609.6 R
-.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E
F0 .551(conditional commands, when performing pattern substitution)3.051
-F -.1(wo)184 568.8 S .623(rd e).1 F .623(xpansions, or when \214ltering\
+F -.1(wo)184 621.6 S .623(rd e).1 F .623(xpansions, or when \214ltering\
possible completions as part of programmable com-)-.15 F(pletion.)184
-580.8 Q F1(nullglob)144 597.6 Q F0 .854(If set,)184 609.6 R F1(bash)
-3.354 E F0(allo)3.354 E .855(ws patterns which match no \214les \(see)
--.25 F F1 -.1(Pa)3.355 G .855(thname Expansion).1 F F0(abo)3.355 E -.15
-(ve)-.15 G 3.355(\)t).15 G(o)-3.355 E -.15(ex)184 621.6 S
-(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144
-638.4 Q(ogcomp)-.18 E F0 .677(If set, the programmable completion f)184
-650.4 R .677(acilities \(see)-.1 F F1(Pr)3.176 E .676
-(ogrammable Completion)-.18 F F0(abo)3.176 E -.15(ve)-.15 G(\)).15 E
-(are enabled.)184 662.4 Q(This option is enabled by def)5 E(ault.)-.1 E
-F1(pr)144 679.2 Q(ogcomp_alias)-.18 E F0 2.124
-(If set, and programmable completion is enabled,)184 691.2 R F1(bash)
-4.624 E F0 2.124(treats a command name that)4.624 F(doesn')184 703.2 Q
-3.289(th)-.18 G -2.25 -.2(av e)-3.289 H(an)3.489 E 3.289(yc)-.15 G .789
-(ompletions as a possible alias and attempts alias e)-3.289 F .788
-(xpansion. If it has)-.15 F 1.473(an alias,)184 715.2 R F1(bash)3.973 E
-F0 1.473(attempts programmable completion using the command w)3.973 F
-1.473(ord resulting)-.1 F(from the e)184 727.2 Q(xpanded alias.)-.15 E
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(76)190.395 E 0 Cg EP
-%%Page: 77 77
+633.6 Q F1(noexpand_translation)144 650.4 Q F0 1.117(If set,)184 662.4 R
+F1(bash)3.617 E F0 1.117(encloses the translated results of $"..." quot\
+ing in single quotes instead of)3.617 F(double quotes.)184 674.4 Q
+(If the string is not translated, this has no ef)5 E(fect.)-.25 E F1
+(nullglob)144 691.2 Q F0 .855(If set,)184 703.2 R F1(bash)3.355 E F0
+(allo)3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1
+-.1(Pa)3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G
+3.354(\)t).15 G(o)-3.354 E -.15(ex)184 715.2 S
+(pand to a null string, rather than themselv).15 E(es.)-.15 E
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(79)185.115 E 0 Cg EP
+%%Page: 80 80
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(pr)144 84 Q(omptv)-.18 E(ars)-.1 E F0 1.448
-(If set, prompt strings under)184 96 R 1.448(go parameter e)-.18 F 1.447
-(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 108 S .17
-(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17
-(fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9
-/Times-Bold@0 SF(PR)2.671 E(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G
-(.).15 E(This option is enabled by def)184 120 Q(ault.)-.1 E F1 -.18(re)
-144 136.8 S(stricted_shell).18 E F0 1.069
+SF(patsub_r)144 84 Q(eplacement)-.18 E F0 .105(If set,)184 96 R F1(bash)
+2.605 E F0 -.15(ex)2.605 G .105(pands occurrences of).15 F F1(&)2.606 E
+F0 .106(in the replacement string of pattern substitution to)2.606 F
+.528(the te)184 108 R .528
+(xt matched by the pattern, as described under)-.15 F F1 -.1(Pa)3.027 G
+.527(rameter Expansion).1 F F0(abo)3.027 E -.15(ve)-.15 G 5.527(.T).15 G
+(his)-5.527 E(option is enabled by def)184 120 Q(ault.)-.1 E F1(pr)144
+136.8 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184
+148.8 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677
+(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E
+(are enabled.)184 160.8 Q(This option is enabled by def)5 E(ault.)-.1 E
+F1(pr)144 177.6 Q(ogcomp_alias)-.18 E F0 2.124
+(If set, and programmable completion is enabled,)184 189.6 R F1(bash)
+4.624 E F0 2.124(treats a command name that)4.624 F(doesn')184 201.6 Q
+3.288(th)-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789
+(ompletions as a possible alias and attempts alias e)-3.288 F .789
+(xpansion. If it has)-.15 F 1.473(an alias,)184 213.6 R F1(bash)3.973 E
+F0 1.473(attempts programmable completion using the command w)3.973 F
+1.473(ord resulting)-.1 F(from the e)184 225.6 Q(xpanded alias.)-.15 E
+F1(pr)144 242.4 Q(omptv)-.18 E(ars)-.1 E F0 1.447
+(If set, prompt strings under)184 254.4 R 1.448(go parameter e)-.18 F
+1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184
+266.4 S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G
+.17(fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9
+/Times-Bold@0 SF(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G
+(.).15 E(This option is enabled by def)184 278.4 Q(ault.)-.1 E F1 -.18
+(re)144 295.2 S(stricted_shell).18 E F0 1.069
(The shell sets this option if it is started in restricted mode \(see)
-184 148.8 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 160.8 Q 2.86
+184 307.2 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 319.2 Q 2.86
(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36
(This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G
-(-).15 E(cuted, allo)184 172.8 Q(wing the startup \214les to disco)-.25
+(-).15 E(cuted, allo)184 331.2 Q(wing the startup \214les to disco)-.25
E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5
-E F1(shift_v)144 189.6 Q(erbose)-.1 E F0 .502(If set, the)184 201.6 R F1
-(shift)3.002 E F0 -.2(bu)3.002 G .501
-(iltin prints an error message when the shift count e).2 F .501
-(xceeds the number)-.15 F(of positional parameters.)184 213.6 Q F1(sour)
-144 230.4 Q(cepath)-.18 E F0 .77(If set, the)184 242.4 R F1(sour)3.27 E
-(ce)-.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47
-F .771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771
-(to \214nd the directory containing the)3.021 F
-(\214le supplied as an ar)184 254.4 Q 2.5(gument. This)-.18 F
-(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 271.2 Q F0
-(If set, the)184 283.2 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E
-(xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend)
-108 300 Q F0([)2.5 E 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
+E F1(shift_v)144 348 Q(erbose)-.1 E F0 .501(If set, the)184 360 R F1
+(shift)3.001 E F0 -.2(bu)3.001 G .501
+(iltin prints an error message when the shift count e).2 F .502
+(xceeds the number)-.15 F(of positional parameters.)184 372 Q F1(sour)
+144 388.8 Q(cepath)-.18 E F0 .771(If set, the)184 400.8 R F1(.)3.271 E
+F0(\()3.271 E F1(sour)A(ce)-.18 E F0 3.271(\)b)C .771(uiltin uses the v)
+-3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77
+(to \214nd the directory containing the)3.02 F(\214le supplied as an ar)
+184 412.8 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E
+(ault.)-.1 E F1 -.1(va)144 429.6 S(rr).1 E(edir_close)-.18 E F0 .74(If \
+set, the shell automatically closes \214le descriptors assigned using t\
+he)184 441.6 R/F3 10/Times-Italic@0 SF({varname})3.24 E F0(redi-)3.24 E
+.424(rection syntax \(see)184 453.6 R F2(REDIRECTION)2.924 E F0(abo)
+2.674 E -.15(ve)-.15 G 2.924(\)i).15 G .424(nstead of lea)-2.924 F .424
+(ving them open when the com-)-.2 F(mand completes.)184 465.6 Q F1
+(xpg_echo)144 482.4 Q F0(If set, the)184 494.4 Q F1(echo)2.5 E F0 -.2
+(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15 E
+(ault.)-.1 E F1(suspend)108 511.2 Q F0([)2.5 E F1<ad66>A F0(])A .909
+(Suspend the e)144 523.2 R -.15(xe)-.15 G .909
+(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.41(sa).15 G
+F2(SIGCONT)A F0 3.41(signal. A)3.16 F .91(login shell, or a shell)3.41 F
+.753(without job control enabled, cannot be suspended; the)144 535.2 R
+F1<ad66>3.253 E F0 .752(option can be used to o)3.252 F -.15(ve)-.15 G
+.752(rride this and).15 F .107(force the suspension.)144 547.2 R .107(T\
+he return status is 0 unless the shell is a login shell or job control \
+is not en-)5.107 F(abled and)144 559.2 Q F1<ad66>2.5 E F0
+(is not supplied.)2.5 E F1(test)108 576 Q F3 -.2(ex)2.5 G(pr).2 E F1([)
+108 588 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878
+(Return a status of 0 \(true\) or 1 \(f)144 588 R .877
(alse\) depending on the e)-.1 F -.25(va)-.25 G .877
-(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 376.8
-S(pr).2 E F0 5.53(.E).73 G .53
+(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 600 S
+(pr).2 E F0 5.53(.E).73 G .53
(ach operator and operand must be a separate ar)-5.53 F 3.03
(gument. Expressions)-.18 F .53(are composed of the)3.03 F 1.361
-(primaries described abo)144 388.8 R 1.661 -.15(ve u)-.15 H(nder).15 E
-F2(CONDITION)3.861 E 1.36(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)
-A F1(test)5.86 E F0 1.36(does not accept an)3.86 F 3.86(yo)-.15 G(p-)
--3.86 E(tions, nor does it accept and ignore an ar)144 400.8 Q
-(gument of)-.18 E 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
+(primaries described abo)144 612 R 1.661 -.15(ve u)-.15 H(nder).15 E F2
+(CONDITION)3.861 E 1.36(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A
+F1(test)5.86 E F0 1.36(does not accept an)3.86 F 3.86(yo)-.15 G(p-)-3.86
+E(tions, nor does it accept and ignore an ar)144 624 Q(gument of)-.18 E
+F1<adad>2.5 E F0(as signifying the end of options.)2.5 E .785
+(Expressions may be combined using the follo)144 642 R .786
(wing operators, listed in decreasing order of prece-)-.25 F 3.412
-(dence. The)144 430.8 R -.25(eva)3.412 G .912
+(dence. The)144 654 R -.25(eva)3.412 G .912
(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F
4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F
-(used when there are \214v)144 442.8 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G
-(ore ar)-2.5 E(guments.)-.18 E F1(!)144 454.8 Q F3 -.2(ex)2.5 G(pr).2 E
-F0 -.35(Tr)180 454.8 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23
-E(alse.)-.1 E F1(\()144 466.8 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0
-.26(Returns the v)180 466.8 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2
-E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26
-(rride the normal precedence of opera-).15 F(tors.)180 478.8 Q F3 -.2
-(ex)144 490.8 S(pr1).2 E 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
+(used when there are \214v)144 666 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G(ore ar)
+-2.5 E(guments.)-.18 E F1(!)144 678 Q F3 -.2(ex)2.5 G(pr).2 E F0 -.35
+(Tr)180 678 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.)
+-.1 E F1(\()144 690 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26
+(Returns the v)180 690 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 E F0
+5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26
+(rride the normal precedence of opera-).15 F(tors.)180 702 Q
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(80)185.115 E 0 Cg EP
+%%Page: 81 81
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF -.2(ex)144 84 S(pr1).2 E F0<ad>2.5 E/F2 10
+/Times-Bold@0 SF(a)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 96 S
+(ue if both).35 E F1 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F1 -.2(ex)2.5 G
+(pr2).2 E F0(are true.)2.52 E F1 -.2(ex)144 108 S(pr1).2 E F0<ad>2.5 E
+F2(o)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 120 S(ue if either).35 E
+F1 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0
+(is true.)2.52 E F2(test)144 136.8 Q F0(and)2.5 E F2([)2.5 E F0 -.25
+(eva)2.5 G(luate conditional e).25 E
(xpressions using a set of rules based on the number of ar)-.15 E
-(guments.)-.18 E 2.5(0a)144 561.6 S -.18(rg)-2.5 G(uments).18 E(The e)
-180 573.6 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 585.6 S -.18
-(rg)-2.5 G(ument).18 E(The e)180 597.6 Q
+(guments.)-.18 E 2.5(0a)144 154.8 S -.18(rg)-2.5 G(uments).18 E(The e)
+180 166.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 178.8 S -.18
+(rg)-2.5 G(ument).18 E(The e)180 190.8 Q
(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18
-E 2.5(2a)144 609.6 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
-180 621.6 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
+E 2.5(2a)144 202.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
+180 214.8 R .37(gument is)-.18 F F2(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
F .37(xpression is true if and only if the second ar)-.15 F .37
-(gument is null.)-.18 F .379(If the \214rst ar)180 633.6 R .38
+(gument is null.)-.18 F .379(If the \214rst ar)180 226.8 R .38
(gument is one of the unary conditional operators listed abo)-.18 F .68
--.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 645.6 Q .553
-(AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552
-(xpression is true if the unary test is true.)-.15 F .552
-(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 657.6 Q
+-.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180
+238.8 Q .553(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552
+(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F
+.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 250.8 Q
(alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E
-(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 669.6 S -.18(rg)-2.5 G
-(uments).18 E .236(The follo)180 681.6 R .236
+(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 262.8 S -.18(rg)-2.5 G
+(uments).18 E .236(The follo)180 274.8 R .236
(wing conditions are applied in the order listed.)-.25 F .236
(If the second ar)5.236 F .236(gument is one of)-.18 F .855
-(the binary conditional operators listed abo)180 693.6 R 1.155 -.15
-(ve u)-.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F
-F4(,)A F0(the)3.104 E .578(result of the e)180 705.6 R .578(xpression i\
+(the binary conditional operators listed abo)180 286.8 R 1.155 -.15
+(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F
+F4(,)A F0(the)3.104 E .578(result of the e)180 298.8 R .578(xpression i\
s the result of the binary test using the \214rst and third ar)-.15 F
-(guments)-.18 E 1.333(as operands.)180 717.6 R(The)6.333 E F1<ad61>3.833
-E F0(and)3.833 E F1<ad6f>3.832 E F0 1.332
+(guments)-.18 E 1.333(as operands.)180 310.8 R(The)6.333 E F2<ad61>3.833
+E F0(and)3.833 E F2<ad6f>3.832 E F0 1.332
(operators are considered binary operators when there are)3.832 F .558
-(three ar)180 729.6 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058
-F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F
+(three ar)180 322.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058
+F .558(gument is)-.18 F F2(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F
.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F
-(o-ar)-.1 E(gument)-.18 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
-E(77)190.395 E 0 Cg EP
-%%Page: 78 78
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .521
-(test using the second and third ar)180 84 R 3.021(guments. If)-.18 F
-.521(the \214rst ar)3.021 F .52(gument is e)-.18 F(xactly)-.15 E/F1 10
-/Times-Bold@0 SF(\()3.02 E F0 .52(and the third)3.02 F(ar)180 96 Q .485
-(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 2.985(,t)C .485
-(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18
-F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 108 Q
-(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 120 S -.18(rg)-2.5 G
-(uments).18 E .385(If the \214rst ar)180 132 R .385(gument is)-.18 F F1
-(!)2.885 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15
-G .384(tion of the three-ar).05 F .384(gument e)-.18 F .384
-(xpression com-)-.15 F .284(posed of the remaining ar)180 144 R 2.784
-(guments. Otherwise,)-.18 F .284(the e)2.784 F .284
-(xpression is parsed and e)-.15 F -.25(va)-.25 G .285(luated ac-).25 F
-(cording to precedence using the rules listed abo)180 156 Q -.15(ve)-.15
-G(.).15 E 2.5(5o)144 168 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 E
-1.635(The e)180 180 R 1.635(xpression is parsed and e)-.15 F -.25(va)
--.25 G 1.635(luated according to precedence using the rules listed).25 F
-(abo)180 192 Q -.15(ve)-.15 G(.).15 E(When used with)144 210 Q F1(test)
-2.5 E F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5
-E F1(>)2.5 E F0(operators sort le)2.5 E
-(xicographically using ASCII ordering.)-.15 E F1(times)108 226.8 Q F0
+(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180
+334.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52
+(gument is e)-.18 F(xactly)-.15 E F2(\()3.02 E F0 .52(and the third)3.02
+F(ar)180 346.8 Q .485(gument is e)-.18 F(xactly)-.15 E F2(\))2.985 E F0
+2.985(,t)C .485(he result is the one-ar)-2.985 F .485
+(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E
+(wise, the e)180 358.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144
+370.8 S -.18(rg)-2.5 G(uments).18 E .43(The follo)180 382.8 R .43
+(wing conditions are applied in the order listed.)-.25 F .429
+(If the \214rst ar)5.429 F .429(gument is)-.18 F F2(!)2.929 E F0 2.929
+(,t)C .429(he re-)-2.929 F 1.314(sult is the ne)180 394.8 R -.05(ga)-.15
+G 1.314(tion of the three-ar).05 F 1.314(gument e)-.18 F 1.314
+(xpression composed of the remaining ar)-.15 F(gu-)-.18 E 2.745
+(ments. the)180 406.8 R(tw)2.745 E(o-ar)-.1 E .245
+(gument test using the second and third ar)-.18 F 2.744(guments. If)-.18
+F .244(the \214rst ar)2.744 F(gument)-.18 E .309(is e)180 418.8 R
+(xactly)-.15 E F2(\()2.809 E F0 .309(and the fourth ar)2.809 F .309
+(gument is e)-.18 F(xactly)-.15 E F2(\))2.809 E F0 2.809(,t)C .31
+(he result is the tw)-2.809 F(o-ar)-.1 E .31(gument test of the)-.18 F
+.184(second and third ar)180 430.8 R 2.684(guments. Otherwise,)-.18 F
+.184(the e)2.684 F .183(xpression is parsed and e)-.15 F -.25(va)-.25 G
+.183(luated according).25 F(to precedence using the rules listed abo)180
+442.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 454.8 S 2.5(rm)-2.5 G(ore ar)
+-2.5 E(guments)-.18 E 1.635(The e)180 466.8 R 1.635
+(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635
+(luated according to precedence using the rules listed).25 F(abo)180
+478.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 496.8 Q F2(test)2.5 E
+F0(or)2.5 E F2([)2.5 E F0 2.5(,t)C(he)-2.5 E F2(<)2.5 E F0(and)2.5 E F2
+(>)2.5 E F0(operators sort le)2.5 E
+(xicographically using ASCII ordering.)-.15 E F2(times)108 513.6 Q F0
1.229(Print the accumulated user and system times for the shell and for\
- processes run from the shell.)144 226.8 R(The return status is 0.)144
-238.8 Q F1(trap)108 255.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E
-/F2 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])
-2.5 E .683(The command)144 267.6 R F2(ar)3.513 E(g)-.37 E F0 .683
-(is to be read and e)3.403 F -.15(xe)-.15 G .682
-(cuted when the shell recei).15 F -.15(ve)-.25 G 3.182(ss).15 G
-(ignal\(s\))-3.182 E F2(sigspec)3.522 E F0 5.682(.I).31 G(f)-5.682 E F2
-(ar)3.512 E(g)-.37 E F0(is)3.402 E .608(absent \(and there is a single)
-144 279.6 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F1<ad>3.108 E
-F0 3.108(,e)C .608
+ processes run from the shell.)144 513.6 R(The return status is 0.)144
+525.6 Q F2(trap)108 542.4 Q F0([)2.5 E F2(\255lp)A F0 2.5(][)C([)-2.5 E
+F1(ar)A(g)-.37 E F0(])A F1(sigspec)2.5 E F0(...])2.5 E .682(The command)
+144 554.4 R F1(ar)3.512 E(g)-.37 E F0 .682(is to be read and e)3.402 F
+-.15(xe)-.15 G .682(cuted when the shell recei).15 F -.15(ve)-.25 G
+3.183(ss).15 G(ignal\(s\))-3.183 E F1(sigspec)3.523 E F0 5.683(.I).31 G
+(f)-5.683 E F1(ar)3.513 E(g)-.37 E F0(is)3.403 E .609
+(absent \(and there is a single)144 566.4 R F1(sigspec)3.108 E F0 3.108
+(\)o)C(r)-3.108 E F2<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
+.658(\(the v)144 578.4 R .658(alue it had upon entrance to the shell\).)
+-.25 F(If)5.658 E F1(ar)3.488 E(g)-.37 E F0 .659
+(is the null string the signal speci\214ed by each)3.378 F F1(sigspec)
+144.34 590.4 Q F0 .581
+(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G
+-.1(ke).2 G 3.08(s. If).1 F F1(ar)3.41 E(g)-.37 E F0 .58
+(is not present and)3.3 F F2<ad70>3.08 E F0(has)3.08 E 1.214
+(been supplied, then the trap commands associated with each)144 602.4 R
+F1(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215
+F(gu-)-.18 E .86(ments are supplied or if only)144 614.4 R 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 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
+(signal. The)144 626.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 638.4 R F1(sigspec)4.651 E F0 1.811
+(is either a signal name de\214ned in <)4.621 F F1(signal.h)A F0 1.81
+(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E
+(names are case insensiti)144 650.4 Q .3 -.15(ve a)-.25 H(nd the).15 E
+F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E .666(If a)144 668.4 R F1
+(sigspec)3.506 E F0(is)3.476 E F3(EXIT)3.166 E F0 .666
+(\(0\) the command)2.916 F F1(ar)3.496 E(g)-.37 E F0 .666(is e)3.386 F
+-.15(xe)-.15 G .666(cuted on e).15 F .667(xit from the shell.)-.15 F
+.667(If a)5.667 F F1(sigspec)3.507 E F0(is)3.477 E F3(DE-)3.167 E -.09
+(BU)144 680.4 S(G).09 E F4(,)A F0 .484(the command)2.734 F F1(ar)3.314 E
+(g)-.37 E F0 .484(is e)3.204 F -.15(xe)-.15 G .484(cuted before e).15 F
+-.15(ve)-.25 G(ry).15 E F1 .483(simple command)2.984 F F0(,)A F1(for)
+2.983 E F0(command,)2.983 E F1(case)2.983 E F0(command,)2.983 E F1
+(select)144 692.4 Q F0 .562(command, e)3.062 F -.15(ve)-.25 G .563
+(ry arithmetic).15 F F1(for)3.063 E F0 .563
+(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .563
+(cutes in a shell).15 F .623(function \(see)144 704.4 R F3 .622
(SHELL GRAMMAR)3.122 F F0(abo)2.872 E -.15(ve)-.15 G 3.122(\). Refer).15
-F .622(to the description of the)3.122 F F1(extdeb)3.122 E(ug)-.2 E F0
-.622(option to the)3.122 F F1(shopt)144 429.6 Q F0 -.2(bu)2.996 G .496
-(iltin for details of its ef).2 F .496(fect on the)-.25 F F1(DEB)2.996 E
-(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E F2(sigspec)3.336 E F0(is)
-3.306 E F3(RETURN)2.996 E F4(,)A F0 .496(the command)2.746 F F2(ar)
-144.33 441.6 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18
+F .622(to the description of the)3.122 F F2(extdeb)3.122 E(ug)-.2 E F0
+.622(option to the)3.122 F F2(shopt)144 716.4 Q F0 -.2(bu)2.996 G .496
+(iltin for details of its ef).2 F .496(fect on the)-.25 F F2(DEB)2.996 E
+(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E F1(sigspec)3.336 E F0(is)
+3.306 E F3(RETURN)2.996 E F4(,)A F0 .496(the command)2.746 F F1(ar)
+144.33 728.4 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18
(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G .18
-(cuted with the).15 F F1(.)2.68 E F0(or)2.68 E F1(sour)2.68 E(ce)-.18 E
-F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F -.15(exe)144 453.6 S
-(cuting.).15 E .961(If a)144 471.6 R F2(sigspec)3.801 E F0(is)3.771 E F3
-(ERR)3.461 E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E(g)-.37 E
-F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25
-G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\
-gle simple command\), a list, or a compound command returns a non\255ze\
-ro e)144 483.6 R .185(xit status, subject to)-.15 F .452(the follo)144
-495.6 R .452(wing conditions.)-.25 F(The)5.452 E F3(ERR)2.952 E F0 .451
-(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451
-(ailed command is part of the com-)-.1 F .387
-(mand list immediately follo)144 507.6 R .387(wing a)-.25 F F1(while)
-2.887 E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388
-(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388
-(statement, part)4.848 F .778(of a command e)144 519.6 R -.15(xe)-.15 G
-.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778
-(list e)3.278 F .778(xcept the command follo)-.15 F .778
-(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0
-3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 531.6 R
-1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)
--3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F
-F1(!)3.78 E F0(.)A(These are the same conditions obe)144 543.6 Q
-(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E 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
-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 .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 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
+(cuted with the).15 F F2(.)2.68 E F0(or)2.68 E F2(sour)2.68 E(ce)-.18 E
+F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(81)185.115 E 0 Cg EP
+%%Page: 82 82
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.223
-(commands is not consulted when using)144 84 R/F1 10/Times-Bold@0 SF
-<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
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(exe)144 84 S
+(cuting.).15 E .96(If a)144 102 R/F1 10/Times-Italic@0 SF(sigspec)3.8 E
+F0(is)3.77 E/F2 9/Times-Bold@0 SF(ERR)3.46 E/F3 9/Times-Roman@0 SF(,)A
+F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0 .961(is e)3.681 F
+-.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461(rap).15 G
+.961(ipeline \(which may consist of a)-3.461 F .185(single simple comma\
+nd\), a list, or a compound command returns a non\255zero e)144 114 R
+.184(xit status, subject to)-.15 F .451(the follo)144 126 R .451
+(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451
+(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452
+(ailed command is part of the com-)-.1 F .388
+(mand list immediately follo)144 138 R .388(wing a)-.25 F/F4 10
+/Times-Bold@0 SF(while)2.888 E F0(or)2.888 E F4(until)2.888 E F0 -.1(ke)
+2.888 G(yw)-.05 E .388(ord, part of the test in an)-.1 F F1(if)2.897 E
+F0 .387(statement, part)4.847 F .777(of a command e)144 150 R -.15(xe)
+-.15 G .778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E
+F0 .778(list e)3.278 F .778(xcept the command follo)-.15 F .778
+(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0
+3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 162 R 1.28
+(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78
+F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!)
+3.78 E F0(.)A(These are the same conditions obe)144 174 Q(yed by the)
+-.15 E F4(err)2.5 E(exit)-.18 E F0(\()2.5 E F4<ad65>A F0 2.5(\)o)C
+(ption.)-2.5 E .132
+(Signals ignored upon entry to the shell cannot be trapped or reset.)144
+192 R -.35(Tr)5.133 G .133(apped signals that are not be-).35 F .117
+(ing ignored are reset to their original v)144 204 R .117
+(alues in a subshell or subshell en)-.25 F .117
+(vironment when one is cre-)-.4 F 2.5(ated. The)144 216 R
+(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F1(sigspec)2.84 E F0
+(is in)2.81 E -.25(va)-.4 G(lid; otherwise).25 E F4(trap)2.5 E F0
+(returns true.)2.5 E F4(type)108 232.8 Q F0([)2.5 E F4(\255aftpP)A F0(])
+A F1(name)2.5 E F0([)2.5 E F1(name)A F0(...])2.5 E -.4(Wi)144 244.8 S
+.173(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F1
+(name)3.033 E F0 -.1(wo)2.853 G .174
+(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F
+F4<ad74>144 256.8 Q F0 .715(option is used,)3.215 F F4(type)3.215 E F0
+.715(prints a string which is one of)3.215 F F1(alias)3.545 E F0(,).27 E
+F1 -.1(ke)3.215 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)5.185 E F0
+(,).24 E F1 -.2(bu)3.215 G(iltin).2 E F0 3.215(,o).24 G(r)-3.215 E F1
+(\214le)5.125 E F0(if)3.395 E F1(name)144.36 268.8 Q F0 .086
+(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086
+(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15
+(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F1
+(name)2.947 E F0 .087(is not)2.767 F .119
+(found, then nothing is printed, and an e)144 280.8 R .118
+(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F
+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 292.8 R .855
+(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0
+.855(were speci\214ed as a com-)3.535 F .529(mand name, or nothing if)
+144 304.8 R/F5 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028
+G .528(uld not return).1 F F1(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528
+E F4<ad50>3.028 E F0 .528(option forces a)3.028 F F2 -.666(PA)3.028 G
+(TH)-.189 E F0 .006(search for each)144 316.8 R F1(name)2.506 E F0 2.506
+(,e)C -.15(ve)-2.756 G 2.506(ni).15 G(f)-2.506 E F5 .007(type -t name)
+2.506 F F0 -.1(wo)2.507 G .007(uld not return).1 F F1(\214le)4.417 E F0
+5.007(.I).18 G 2.507(fac)-5.007 G .007(ommand is hashed,)-2.507 F F4
+<ad70>2.507 E F0(and)144 328.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
+340.8 Q F0 .823(option is used,)3.323 F F4(type)3.323 E F0 .824
+(prints all of the places that contain an e)3.323 F -.15(xe)-.15 G .824
+(cutable named).15 F F1(name)3.684 E F0 5.824(.T).18 G .824(his in-)
+-5.824 F 1.176(cludes aliases and functions, if and only if the)144
+352.8 R F4<ad70>3.676 E F0 1.176(option is not also used.)3.676 F 1.176
+(The table of hashed)6.176 F 1.223(commands is not consulted when using)
+144 364.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 376.8 R F4(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F4(type)
+5.326 E F0 .326(returns true if all of the ar)2.826 F .325
+(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325
+(re not)-2.825 F(found.)144 388.8 Q F4(ulimit)108 405.6 Q F0([)2.5 E F4
+(\255HS)A F0(])A F4<ad61>2.5 E(ulimit)108 417.6 Q F0([)2.5 E F4(\255HS)A
+F0 2.5(][)C F4(\255bcde\214klmnpqrstuvxPR)-2.5 E(T)-.4 E F0([)2.5 E F1
+(limit)A F0(]])A(Pro)144 429.6 Q .243(vides control o)-.15 F -.15(ve)
+-.15 G 2.743(rt).15 G .243(he resources a)-2.743 F -.25(va)-.2 G .244
(ilable to the shell and to processes started by it, on systems).25 F
-.943(that allo)144 160.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F
-(The)5.943 E F1<ad48>3.443 E F0(and)3.443 E F1<ad53>3.444 E F0 .944
+.944(that allo)144 441.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F
+(The)5.944 E F4<ad48>3.444 E F0(and)3.444 E F4<ad53>3.444 E F0 .943
(options specify that the hard or soft limit is set for the)3.444 F(gi)
-144 172.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208
+144 453.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208
(hard limit cannot be increased by a non-root user once it is set; a so\
-ft limit may)2.709 F .425(be increased up to the v)144 184.8 R .425
-(alue of the hard limit.)-.25 F .426(If neither)5.425 F 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
+ft limit may)2.708 F .426(be increased up to the v)144 465.6 R .426
+(alue of the hard limit.)-.25 F .425(If neither)5.426 F 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
+477.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139
(can be a number in the unit speci\214ed for the resource or one)3.319 F
-.741(of the special v)144 208.8 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1
-(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w)
-C .741(hich stand for the current hard limit, the current)-3.241 F .024
-(soft limit, and no limit, respecti)144 220.8 R -.15(ve)-.25 G(ly).15 E
-5.023(.I)-.65 G(f)-5.023 E F2(limit)2.613 E F0 .023
+.742(of the special v)144 489.6 R(alues)-.25 E F4(hard)3.242 E F0(,)A F4
+(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w)
+C .741(hich stand for the current hard limit, the current)-3.241 F .023
+(soft limit, and no limit, respecti)144 501.6 R -.15(ve)-.25 G(ly).15 E
+5.023(.I)-.65 G(f)-5.023 E F1(limit)2.613 E F0 .023
(is omitted, the current v)3.203 F .023
-(alue of the soft limit of the re-)-.25 F .984
-(source is printed, unless the)144 232.8 R F1<ad48>3.484 E F0 .984
-(option is gi)3.484 F -.15(ve)-.25 G 3.484(n. When).15 F .985
+(alue of the soft limit of the re-)-.25 F .985
+(source is printed, unless the)144 513.6 R F4<ad48>3.485 E F0 .984
+(option is gi)3.485 F -.15(ve)-.25 G 3.484(n. When).15 F .984
(more than one resource is speci\214ed, the)3.484 F .7
-(limit name and unit, if appropriate, are printed before the v)144 244.8
+(limit name and unit, if appropriate, are printed before the v)144 525.6
R 3.2(alue. Other)-.25 F .7(options are interpreted as)3.2 F(follo)144
-256.8 Q(ws:)-.25 E 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
+537.6 Q(ws:)-.25 E F4<ad61>144 549.6 Q F0
+(All current limits are reported; no limits are set)180 549.6 Q F4<ad62>
+144 561.6 Q F0(The maximum sock)180 561.6 Q(et b)-.1 E(uf)-.2 E
+(fer size)-.25 E F4<ad63>144 573.6 Q F0
+(The maximum size of core \214les created)180 573.6 Q F4<ad64>144 585.6
+Q F0(The maximum size of a process')180 585.6 Q 2.5(sd)-.55 G(ata se)
+-2.5 E(gment)-.15 E F4<ad65>144 597.6 Q F0
+(The maximum scheduling priority \("nice"\))180 597.6 Q F4<ad66>144
+609.6 Q F0
(The maximum size of \214les written by the shell and its children)180
-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\
+609.6 Q F4<ad69>144 621.6 Q F0(The maximum number of pending signals)180
+621.6 Q F4<ad6b>144 633.6 Q F0
+(The maximum number of kqueues that may be allocated)180 633.6 Q F4
+<ad6c>144 645.6 Q F0(The maximum size that may be lock)180 645.6 Q
+(ed into memory)-.1 E F4<ad6d>144 657.6 Q F0
+(The maximum resident set size \(man)180 657.6 Q 2.5(ys)-.15 G
+(ystems do not honor this limit\))-2.5 E F4<ad6e>144 669.6 Q F0 .791(Th\
e maximum number of open \214le descriptors \(most systems do not allo)
-180 388.8 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F
-(be set\))180 400.8 Q 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
-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 .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
+180 669.6 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F
+(be set\))180 681.6 Q F4<ad70>144 693.6 Q F0
+(The pipe size in 512-byte blocks \(this may not be set\))180 693.6 Q F4
+<ad71>144 705.6 Q F0
+(The maximum number of bytes in POSIX message queues)180 705.6 Q F4
+<ad72>144 717.6 Q F0(The maximum real-time scheduling priority)180 717.6
+Q(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(82)185.115 E 0 Cg EP
+%%Page: 83 83
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad73>144 84 Q F0(The maximum stack size)180 84 Q F1<ad74>144 96 Q F0
+(The maximum amount of cpu time in seconds)180 96 Q F1<ad75>144 108 Q F0
+(The maximum number of processes a)180 108 Q -.25(va)-.2 G
+(ilable to a single user).25 E F1<ad76>144 120 Q F0 .47
+(The maximum amount of virtual memory a)180 120 R -.25(va)-.2 G .47
+(ilable to the shell and, on some systems, to).25 F(its children)180 132
+Q F1<ad78>144 144 Q F0(The maximum number of \214le locks)180 144 Q F1
+<ad50>144 156 Q F0(The maximum number of pseudoterminals)180 156 Q F1
+<ad52>144 168 Q F0(The maximum time a real-time process can run before \
+blocking, in microseconds)180 168 Q F1<ad54>144 180 Q F0
+(The maximum number of threads)180 180 Q(If)144 196.8 Q/F2 10
+/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G
+.468(n, and the).15 F 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 .044
+(no option is gi)144 208.8 R -.15(ve)-.25 G .044(n, then).15 F F1<ad66>
+2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045
+(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1
+<ad74>2.545 E F0 2.545(,w)C .045(hich is)-2.545 F .67(in seconds;)144
+220.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 597.6 Q F0(,)A F1<ad6e>3.737 E F0 3.737(,a)C(nd)-3.737 E
+A F1<ad6b>144 232.8 Q F0(,)A F1<ad6e>3.736 E F0 3.736(,a)C(nd)-3.736 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
+F1<ad66>3.736 E F0 3.736(,w)C 1.237(hich are in)-3.736 F .239
+(512-byte increments.)144 244.8 R .238
+(The return status is 0 unless an in)5.239 F -.25(va)-.4 G .238
(lid option or ar).25 F .238(gument is supplied, or an)-.18 F
-(error occurs while setting a ne)144 621.6 Q 2.5(wl)-.25 G(imit.)-2.5 E
-F1(umask)108 638.4 Q F0([)2.5 E F1<ad70>A F0 2.5(][)C F1<ad53>-2.5 E F0
+(error occurs while setting a ne)144 256.8 Q 2.5(wl)-.25 G(imit.)-2.5 E
+F1(umask)108 273.6 Q F0([)2.5 E 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
+(The user \214le-creation mask is set to)144 285.6 R F2(mode)3.06 E F0
5.18(.I).18 G(f)-5.18 E F2(mode)3.06 E F0(be)2.86 E .18
(gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\
therwise it is interpreted as a symbolic mode mask similar to that acce\
-pted by)144 662.4 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
-674.4 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
+pted by)144 297.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
+309.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382
(alue of the mask is printed.)-.25 F(The)5.382 E F1<ad53>2.882 E F0 .382
(option causes the mask to be)2.882 F .547
-(printed in symbolic form; the def)144 686.4 R .547
+(printed in symbolic form; the def)144 321.6 R .547
(ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G
(he)-3.047 E F1<ad70>3.047 E F0 .547(option is supplied, and)3.047 F F2
-(mode)144.38 698.4 Q F0 .552
-(is omitted, the output is in a form that may be reused as input.)3.232
-F .551(The return status is 0 if the)5.551 F(mode w)144 710.4 Q
+(mode)144.38 333.6 Q F0 .551
+(is omitted, the output is in a form that may be reused as input.)3.231
+F .552(The return status is 0 if the)5.552 F(mode w)144 345.6 Q
(as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E
-(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E
-(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(79)190.395 E 0 Cg EP
-%%Page: 80 80
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(unalias)108 84 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C/F2 10
-/Times-Italic@0 SF(name)-2.5 E F0(...])2.5 E(Remo)144 96 Q 1.057 -.15
-(ve e)-.15 H(ach).15 E F2(name)3.257 E F0 .757
-(from the list of de\214ned aliases.)3.257 F(If)5.758 E 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
+(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1
+(unalias)108 362.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0
+(...])2.5 E(Remo)144 374.4 Q 1.058 -.15(ve e)-.15 H(ach).15 E F2(name)
+3.258 E F0 .758(from the list of de\214ned aliases.)3.258 F(If)5.758 E
+F1<ad61>3.258 E F0 .757(is supplied, all alias de\214nitions are re-)
+3.258 F(mo)144 386.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
(alue is true unless a supplied)-.25 E F2(name)2.86 E F0
-(is not a de\214ned alias.)2.68 E F1(unset)108 124.8 Q F0<5bad>2.5 E F1
+(is not a de\214ned alias.)2.68 E F1(unset)108 403.2 Q F0<5bad>2.5 E F1
(fv)A F0 2.5(][)C<ad>-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...])
-2.5 E -.15(Fo)144 136.8 S 3.804(re).15 G(ach)-3.804 E F2(name)4.164 E F0
-3.804(,r).18 G(emo)-3.804 E 1.604 -.15(ve t)-.15 H 1.304
+2.5 E -.15(Fo)144 415.2 S 3.803(re).15 G(ach)-3.803 E F2(name)4.163 E F0
+3.803(,r).18 G(emo)-3.803 E 1.603 -.15(ve t)-.15 H 1.303
(he corresponding v).15 F 1.303(ariable or function.)-.25 F 1.303
-(If the)6.303 F 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
+(If the)6.303 F F1<ad76>3.804 E F0 1.304(option is gi)3.804 F -.15(ve)
+-.25 G 1.304(n, each).15 F F2(name)144.36 427.2 Q F0 .465
+(refers to a shell v)3.145 F .464(ariable, and that v)-.25 F .464
+(ariable is remo)-.25 F -.15(ve)-.15 G 2.964(d. Read-only).15 F -.25(va)
+2.964 G .464(riables may not be un-).25 F 2.768(set. If)144 439.2 R F1
+<ad66>2.768 E F0 .269(is speci\214ed, each)2.768 F F2(name)3.129 E F0
.269(refers to a shell function, and the function de\214nition is remo)
-2.949 F -.15(ve)-.15 G(d.).15 E .403(If the)144 172.8 R F1<ad6e>2.903 E
+2.949 F -.15(ve)-.15 G(d.).15 E .404(If the)144 451.2 R F1<ad6e>2.904 E
F0 .404(option is supplied, and)2.904 F F2(name)2.904 E F0 .404(is a v)
2.904 F .404(ariable with the)-.25 F F2(namer)2.904 E(ef)-.37 E F0
-(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .404(will be unset)2.904 F
-.72(rather than the v)144 184.8 R .72(ariable it references.)-.25 F F1
-<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
+(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .403(will be unset)2.904 F
+.719(rather than the v)144 463.2 R .719(ariable it references.)-.25 F F1
+<ad6e>5.719 E F0 .719(has no ef)3.219 F .719(fect if the)-.25 F F1<ad66>
+3.22 E F0 .72(option is supplied.)3.22 F .72(If no options)5.72 F .737
+(are supplied, each)144 475.2 R F2(name)3.237 E F0 .737(refers to a v)
+3.237 F .737(ariable; if there is no v)-.25 F .736
+(ariable by that name, a function with)-.25 F 1.761(that name, if an)144
+487.2 R 3.061 -.65(y, i)-.15 H 4.261(su).65 G 4.261(nset. Each)-4.261 F
1.761(unset v)4.261 F 1.761(ariable or function is remo)-.25 F -.15(ve)
--.15 G 4.261(df).15 G 1.761(rom the en)-4.261 F(vironment)-.4 E 3.171
-(passed to subsequent commands.)144 220.8 R 3.172(If an)8.172 F 5.672
+-.15 G 4.262(df).15 G 1.762(rom the en)-4.262 F(vironment)-.4 E 3.172
+(passed to subsequent commands.)144 499.2 R 3.172(If an)8.172 F 5.672
(yo)-.15 G(f)-5.672 E/F3 9/Times-Bold@0 SF -.27(BA)5.672 G(SH_ALIASES)
-.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.422 G(SH_ARGV0).27 E F4(,)A
-F3 -.27(BA)5.422 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 232.8 S
-(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.482 G(SH_SUBSHELL).27 E F4(,)A F3
+.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.421 G(SH_ARGV0).27 E F4(,)A
+F3 -.27(BA)5.421 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 511.2 S
+(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.481 G(SH_SUBSHELL).27 E F4(,)A F3
-.27(BA)11.482 G(SHPID).27 E F4(,)A F3(COMP_W)11.482 E(ORDBREAKS)-.09 E
-F4(,)A F3(DIRST)11.481 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL)
-144 244.8 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN)
+F4(,)A F3(DIRST)11.482 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL)
+144 523.2 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN)
2.67 E(AME)-.18 E F4(,)A F3(GR)2.67 E(OUPS)-.27 E F4(,)A F3(HISTCMD)2.67
E F4(,)A F3(LINENO)2.67 E F4(,)A F3(RANDOM)2.67 E F4(,)A F3(SECONDS)144
-256.8 Q F4(,)A F0(or)4.03 E F3(SRANDOM)4.28 E F0 1.779(are unset, the)
-4.03 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F
--.15(ve)-.25 G 4.279(ni).15 G 4.279(ft)-4.279 G(he)-4.279 E 4.279(ya)
--.15 G 1.779(re subse-)-4.279 F(quently reset.)144 268.8 Q(The e)5 E
-(xit status is true unless a)-.15 E F2(name)2.86 E F0(is readonly)2.68 E
-(.)-.65 E F1(wait)108 285.6 Q F0([)2.5 E F1(\255fn)A F0 2.5(][)C F1
-<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
+535.2 Q F4(,)A F0(or)4.029 E F3(SRANDOM)4.279 E F0 1.779(are unset, the)
+4.029 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F
+-.15(ve)-.25 G 4.279(ni).15 G 4.28(ft)-4.279 G(he)-4.28 E 4.28(ya)-.15 G
+1.78(re subse-)-4.28 F(quently reset.)144 547.2 Q(The e)5 E
+(xit status is true unless a)-.15 E F2(name)2.86 E F0
+(is readonly or may not be unset.)2.68 E F1(wait)108 564 Q F0([)2.5 E F1
+(\255fn)A F0 2.5(][)C F1<ad70>-2.5 E F2(varname)2.5 E F0 2.5(][)C F2
+(id ...)-2.5 E F0(])A -.8(Wa)144 576 S .659(it for each speci\214ed chi\
+ld process and return its termination status.).8 F(Each)5.659 E F2(id)
+3.169 E F0 .658(may be a process)3.928 F .008
+(ID or a job speci\214cation; if a job spec is gi)144 588 R -.15(ve)-.25
+G .009(n, all processes in that job').15 F 2.509(sp)-.55 G .009
+(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f)-5.009 E
+F2(id)144.01 600 Q F0 .442(is not gi)3.712 F -.15(ve)-.25 G(n,).15 E F1
+(wait)2.942 E F0 -.1(wa)2.942 G .441
(its for all running background jobs and the last-e).1 F -.15(xe)-.15 G
-.442(cuted process substitu-).15 F .598
-(tion, if its process id is the same as)144 333.6 R F1($!)3.098 E F0
-3.098(,a)C .598(nd the return status is zero.)-3.098 F .597(If the)5.597
-F 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
+.441(cuted process substitu-).15 F .597
+(tion, if its process id is the same as)144 612 R F1($!)3.098 E F0 3.098
+(,a)C .598(nd the return status is zero.)-3.098 F .598(If the)5.598 F F1
+<ad6e>3.098 E F0 .598(option is supplied,)3.098 F F1(wait)144 624 Q F0
+-.1(wa)3.083 G .583(its for a single job from the list of).1 F F2(id)
+3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083 E
+F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj)-.15
+G .582(ob, to complete and)-3.083 F .403(returns its e)144 636 R .403
+(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403
+(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .573
+(are supplied and the shell has no unw)144 648 R .573
+(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .572
+(If the)5.573 F F1<ad70>3.072 E F0 .572(option is)3.072 F .39
(supplied, the process or job identi\214er of the job for which the e)
-144 381.6 R .39(xit status is returned is assigned to)-.15 F .905(the v)
-144 393.6 R(ariable)-.25 E F2(varname)3.405 E F0 .905
+144 660 R .39(xit status is returned is assigned to)-.15 F .905(the v)
+144 672 R(ariable)-.25 E F2(varname)3.405 E F0 .905
(named by the option ar)3.405 F 3.405(gument. The)-.18 F -.25(va)3.405 G
.905(riable will be unset initially).25 F 3.405(,b)-.65 G(efore)-3.405 E
-(an)144 405.6 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39
+(an)144 684 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39
(is useful only when the)3.89 F 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
+(option,)3.89 E .575(when job control is enabled, forces)144 696 R F1
(wait)3.075 E F0 .575(to w)3.075 F .575(ait for)-.1 F F2(id)3.075 E F0
-.575(to terminate before returning its status, in-)3.075 F .635
-(stead of returning when it changes status.)144 429.6 R(If)5.635 E F2
-(id)3.145 E F0 .635(speci\214es a non-e)3.905 F .635
-(xistent process or job, the return)-.15 F(status is 127.)144 441.6 Q
-(Otherwise, the return status is the e)5 E
-(xit status of the last process or job w)-.15 E(aited for)-.1 E(.)-.55 E
-/F5 10.95/Times-Bold@0 SF(SHELL COMP)72 458.4 Q -1.04(AT)-.81 G
-(IBILITY MODE)1.04 E F0 .911
-(Bash-4.0 introduced the concept of a `shell compatibility le)108 470.4
-R -.15(ve)-.25 G .912(l', speci\214ed as a set of options to the shopt)
-.15 F -.2(bu)108 482.4 S(iltin).2 E F1(compat31)3.378 E F0(,)A F1
-(compat32)3.378 E F0(,)A F1(compat40)3.378 E F0(,)A F1(compat41)3.378 E
-F0 3.378(,a)C .878(nd so on\).)-3.378 F .877
-(There is only one current compatibility)5.878 F(le)108 494.4 Q -.15(ve)
--.25 G 3.253(l-).15 G 3.253(-e)-3.253 G .753(ach option is mutually e)
--3.253 F(xclusi)-.15 E -.15(ve)-.25 G 5.753(.T).15 G .753
-(he compatibility le)-5.753 F -.15(ve)-.25 G 3.254(li).15 G 3.254(si)
--3.254 G .754(ntended to allo)-3.254 F 3.254(wu)-.25 G .754
-(sers to select be-)-3.254 F(ha)108 506.4 Q 1.084(vior from pre)-.2 F
-1.084(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F
-1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.583(ym)-.15 G 1.083
-(igrate scripts to use)-3.583 F(current features and beha)108 518.4 Q
-(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G
-(ntended to be a temporary solution.)-2.5 E 1.456
-(This section does not mention beha)108 535.2 R 1.457
-(vior that is standard for a particular v)-.2 F 1.457
-(ersion \(e.g., setting)-.15 F F1(compat32)3.957 E F0 .887
-(means that quoting the rhs of the re)108 547.2 R(ge)-.15 E .886
-(xp matching operator quotes special re)-.15 F(ge)-.15 E .886
-(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 559.2 Q
-(ault beha)-.1 E(vior in bash-3.2 and abo)-.2 E -.15(ve)-.15 G(\).).15 E
-.522(If a user enables, say)108 576 R(,)-.65 E F1(compat32)3.023 E F0
-3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)-.25
-F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .523
-(ls up to and includ-).15 F .26(ing the current compatibility le)108 588
-R -.15(ve)-.25 G 2.76(l. The).15 F .259
-(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.759(lc).15
-G .259(ontrols beha)-2.759 F .259(vior that changed)-.2 F 1.645
-(in that v)108 600 R 1.646(ersion of)-.15 F F1(bash)4.146 E F0 4.146(,b)
-C 1.646(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15(ve b)
--.2 H 1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F 1.646
-(or instance, the)-.15 F .761
-(change to use locale-based comparisons with the)108 612 R F1([[)3.261 E
-F0 .76(command came in bash-4.1, and earlier v)3.261 F .76(ersions used)
--.15 F 1.904(ASCII-based comparisons, so enabling)108 624 R F1(compat32)
-4.404 E F0 1.905(will enable ASCII-based comparisons as well.)4.404 F
-(That)6.905 E .296(granularity may not be suf)108 636 R .296
-(\214cient for all uses, and as a result users should emplo)-.25 F 2.796
-(yc)-.1 G .295(ompatibility le)-2.796 F -.15(ve)-.25 G .295(ls care-).15
-F(fully)108 648 Q 5(.R)-.65 G(ead the documentation for a particular fe\
-ature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .531
-(Bash-4.3 introduced a ne)108 664.8 R 3.031(ws)-.25 G .531(hell v)-3.031
-F(ariable:)-.25 E F3 -.27(BA)3.031 G(SH_COMP).27 E -.855(AT)-.666 G F4
-(.).855 E F0 .531(The v)5.031 F .531(alue assigned to this v)-.25 F .532
-(ariable \(a decimal)-.25 F -.15(ve)108 676.8 S .108(rsion number lik)
-.15 F 2.608(e4)-.1 G .108(.2, or an inte)-2.608 F .108
-(ger corresponding to the)-.15 F F1(compat)2.607 E F2(NN)A F0 .107
-(option, lik)2.607 F 2.607(e4)-.1 G .107(2\) determines the com-)-2.607
-F(patibility le)108 688.8 Q -.15(ve)-.25 G(l.).15 E .387
-(Starting with bash-4.4, Bash has be)108 705.6 R .388
-(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.888
-(ls. Ev).15 F(entually)-.15 E 2.888(,t)-.65 G .388(he options will)
--2.888 F(be remo)108 717.6 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G
--.2(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F3 -.27(BA)2.5 G(SH_COMP).27 E -.855
-(AT)-.666 G F4(.).855 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
-E(80)190.395 E 0 Cg EP
-%%Page: 81 81
+.574(to terminate before returning its status, in-)3.075 F .635
+(stead of returning when it changes status.)144 708 R(If)5.635 E F2(id)
+3.145 E F0 .635(speci\214es a non-e)3.905 F .635
+(xistent process or job, the return)-.15 F 1.694(status is 127.)144 720
+R(If)6.694 E F1(wait)4.194 E F0 1.694(is interrupted by a signal, the r\
+eturn status will be greater than 128, as)4.194 F(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(83)185.115 E 0 Cg EP
+%%Page: 84 84
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.164
-(Bash-5.0 is the \214nal v)108 84 R 1.164
-(ersion for which there will be an indi)-.15 F 1.163
-(vidual shopt option for the pre)-.25 F 1.163(vious v)-.25 F(ersion.)
--.15 E(Users should use)108 96 Q/F1 9/Times-Bold@0 SF -.27(BA)2.5 G
-(SH_COMP).27 E -.855(AT)-.666 G F0(on bash-5.0 and later v)3.105 E
-(ersions.)-.15 E 1.613(The follo)108 112.8 R 1.613
-(wing table describes the beha)-.25 F 1.613
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .113
+(described under)144 84 R/F1 10/Times-Bold@0 SF(SIGN)2.613 E(ALS)-.2 E
+F0(abo)2.613 E -.15(ve)-.15 G 5.113(.O).15 G .113
+(therwise, the return status is the e)-5.113 F .114
+(xit status of the last process)-.15 F(or job w)144 96 Q(aited for)-.1 E
+(.)-.55 E/F2 10.95/Times-Bold@0 SF(SHELL COMP)72 112.8 Q -1.04(AT)-.81 G
+(IBILITY MODE)1.04 E F0 1.355(Bash-4.0 introduced the concept of a)108
+124.8 R/F3 10/Times-Italic@0 SF 1.355(shell compatibility le)3.855 F
+(vel)-.15 E F0 3.855(,s)C 1.354
+(peci\214ed as a set of options to the shopt)-3.855 F -.2(bu)108 136.8 S
+.398(iltin \().2 F F1(compat31)2.898 E F0(,)A F1(compat32)2.898 E F0(,)A
+F1(compat40)2.898 E F0(,)A F1(compat41)2.898 E F0 2.898(,a)C .399
+(nd so on\).)-2.898 F .399(There is only one current compatibility)5.399
+F(le)108 148.8 Q -.15(ve)-.25 G 3.254(l-).15 G 3.254(-e)-3.254 G .754
+(ach option is mutually e)-3.254 F(xclusi)-.15 E -.15(ve)-.25 G 5.754
+(.T).15 G .754(he compatibility le)-5.754 F -.15(ve)-.25 G 3.253(li).15
+G 3.253(si)-3.253 G .753(ntended to allo)-3.253 F 3.253(wu)-.25 G .753
+(sers to select be-)-3.253 F(ha)108 160.8 Q 1.083(vior from pre)-.2 F
+1.083(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F
+1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.584(ym)-.15 G 1.084
+(igrate scripts to use)-3.584 F(current features and beha)108 172.8 Q
+(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G
+(ntended to be a temporary solution.)-2.5 E 1.457
+(This section does not mention beha)108 189.6 R 1.457
+(vior that is standard for a particular v)-.2 F 1.456
+(ersion \(e.g., setting)-.15 F F1(compat32)3.956 E F0 .886
+(means that quoting the rhs of the re)108 201.6 R(ge)-.15 E .886
+(xp matching operator quotes special re)-.15 F(ge)-.15 E .887
+(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 213.6 Q
+(ault beha)-.1 E(vior in bash-3.2 and subsequent v)-.2 E(ersions\).)-.15
+E .523(If a user enables, say)108 230.4 R(,)-.65 E F1(compat32)3.023 E
+F0 3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)
+-.25 F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .522
+(ls up to and includ-).15 F .259(ing the current compatibility le)108
+242.4 R -.15(ve)-.25 G 2.759(l. The).15 F .259
+(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.76(lc).15 G
+.26(ontrols beha)-2.76 F .26(vior that changed)-.2 F 1.646(in that v)108
+254.4 R 1.646(ersion of)-.15 F F1(bash)4.146 E F0 4.146(,b)C 1.646
+(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15(ve b)-.2 H
+1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F 1.645
+(or instance, the)-.15 F .76
+(change to use locale-based comparisons with the)108 266.4 R F1([[)3.261
+E F0 .761(command came in bash-4.1, and earlier v)3.261 F .761
+(ersions used)-.15 F 1.905(ASCII-based comparisons, so enabling)108
+278.4 R F1(compat32)4.405 E F0 1.904
+(will enable ASCII-based comparisons as well.)4.405 F(That)6.904 E .295
+(granularity may not be suf)108 290.4 R .296
+(\214cient for all uses, and as a result users should emplo)-.25 F 2.796
+(yc)-.1 G .296(ompatibility le)-2.796 F -.15(ve)-.25 G .296(ls care-).15
+F(fully)108 302.4 Q 5(.R)-.65 G(ead the documentation for a particular \
+feature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .532
+(Bash-4.3 introduced a ne)108 319.2 R 3.032(ws)-.25 G .531(hell v)-3.032
+F(ariable:)-.25 E/F4 9/Times-Bold@0 SF -.27(BA)3.031 G(SH_COMP).27 E
+-.855(AT)-.666 G/F5 9/Times-Roman@0 SF(.).855 E F0 .531(The v)5.031 F
+.531(alue assigned to this v)-.25 F .531(ariable \(a decimal)-.25 F -.15
+(ve)108 331.2 S .107(rsion number lik).15 F 2.607(e4)-.1 G .107
+(.2, or an inte)-2.607 F .107(ger corresponding to the)-.15 F F1(compat)
+2.608 E F3(NN)A F0 .108(option, lik)2.608 F 2.608(e4)-.1 G .108
+(2\) determines the com-)-2.608 F(patibility le)108 343.2 Q -.15(ve)-.25
+G(l.).15 E .388(Starting with bash-4.4, Bash has be)108 360 R .388
+(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.887
+(ls. Ev).15 F(entually)-.15 E 2.887(,t)-.65 G .387(he options will)
+-2.887 F(be remo)108 372 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G -.2
+(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F4 -.27(BA)2.5 G(SH_COMP).27 E -.855
+(AT)-.666 G F5(.).855 E F0 1.163(Bash-5.0 is the \214nal v)108 388.8 R
+1.163(ersion for which there will be an indi)-.15 F 1.164
+(vidual shopt option for the pre)-.25 F 1.164(vious v)-.25 F(ersion.)
+-.15 E(Users should use)108 400.8 Q F4 -.27(BA)2.5 G(SH_COMP).27 E -.855
+(AT)-.666 G F0(on bash-5.0 and later v)3.105 E(ersions.)-.15 E 1.614
+(The follo)108 417.6 R 1.613(wing table describes the beha)-.25 F 1.613
(vior changes controlled by each compatibility le)-.2 F -.15(ve)-.25 G
-4.113(ls).15 G 4.114(etting. The)-4.113 F/F2 10/Times-Bold@0 SF(compat)
-108 124.8 Q/F3 10/Times-Italic@0 SF(NN)A F0 1.186
-(tag is used as shorthand for setting the compatibility le)3.686 F -.15
-(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F3(NN)3.686 E F0 1.186
-(using one of the follo)3.686 F(wing)-.25 E 3.806(mechanisms. F)108
-136.8 R 1.306(or v)-.15 F 1.306
+4.113(ls).15 G 4.113(etting. The)-4.113 F F1(compat)108 429.6 Q F3(NN)A
+F0 1.186(tag is used as shorthand for setting the compatibility le)3.685
+F -.15(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F3(NN)3.686 E F0 1.186
+(using one of the follo)3.686 F(wing)-.25 E 3.807(mechanisms. F)108
+441.6 R 1.307(or v)-.15 F 1.307
(ersions prior to bash-5.0, the compatibility le)-.15 F -.15(ve)-.25 G
-3.807(lm).15 G 1.307(ay be set using the corresponding)-3.807 F F2
-(compat)108 148.8 Q F3(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502
+3.806(lm).15 G 1.306(ay be set using the corresponding)-3.806 F F1
+(compat)108 453.6 Q F3(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502
G 3.002(rb).15 G .502(ash-4.3 and later v)-3.002 F .502(ersions, the)
--.15 F F1 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va)
+-.15 F F4 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va)
3.607 G .502(riable is preferred, and it).25 F
-(is required for bash-5.1 and later v)108 160.8 Q(ersions.)-.15 E F2
-(compat31)108 177.6 Q F0<83>144 189.6 Q(quoting the rhs of the)180 189.6
-Q F2([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15
+(is required for bash-5.1 and later v)108 465.6 Q(ersions.)-.15 E F1
+(compat31)108 482.4 Q F0<83>144 494.4 Q(quoting the rhs of the)180 494.4
+Q F1([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15
G 2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect)
--.25 E F2(compat32)108 206.4 Q F0<83>144 218.4 Q .35
-(interrupting a command list such as "a ; b ; c" causes the e)180 218.4
-R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .018
-(in the list \(in bash-4.0 and later v)180 230.4 R .018
-(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.517(dt)
-.15 G .017(he interrupt, so in-)-2.517 F
-(terrupting one command in a list aborts the e)180 242.4 Q -.15(xe)-.15
-G(cution of the entire list\)).15 E F2(compat40)108 259.2 Q F0<83>144
-271.2 Q(the)180 271.2 Q F2(<)2.673 E F0(and)2.673 E F2(>)2.673 E F0 .173
-(operators to the)2.673 F F2([[)2.673 E F0 .173
+-.25 E F1(compat32)108 511.2 Q F0<83>144 523.2 Q .35
+(interrupting a command list such as "a ; b ; c" causes the e)180 523.2
+R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .017
+(in the list \(in bash-4.0 and later v)180 535.2 R .018
+(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.518(dt)
+.15 G .018(he interrupt, so in-)-2.518 F
+(terrupting one command in a list aborts the e)180 547.2 Q -.15(xe)-.15
+G(cution of the entire list\)).15 E F1(compat40)108 564 Q F0<83>144 576
+Q(the)180 576 Q F1(<)2.674 E F0(and)2.674 E F1(>)2.673 E F0 .173
+(operators to the)2.673 F F1([[)2.673 E F0 .173
(command do not consider the current locale when compar)2.673 F(-)-.2 E
-.068(ing strings; the)180 283.2 R 2.568(yu)-.15 G .068
-(se ASCII ordering.)-2.568 F .068(Bash v)5.068 F .067
-(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 295.2 Q F3
-(str)4.742 E(cmp)-.37 E F0 1.902
-(\(3\); bash-4.1 and later use the current locale').19 F 4.403(sc)-.55 G
-1.903(ollation sequence and)-4.403 F F3(str)4.743 E(-)-.2 E(coll)180
-307.2 Q F0(\(3\).).51 E F2(compat41)108 324 Q F0<83>144 336 Q(in)180 336
-Q F3(posix)3.79 E F0(mode,)3.79 E F2(time)3.79 E F0 1.29(may be follo)
+.067(ing strings; the)180 588 R 2.567(yu)-.15 G .067(se ASCII ordering.)
+-2.567 F .068(Bash v)5.068 F .068
+(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 600 Q F3
+(str)4.743 E(cmp)-.37 E F0 1.903
+(\(3\); bash-4.1 and later use the current locale').19 F 4.402(sc)-.55 G
+1.902(ollation sequence and)-4.402 F F3(str)4.742 E(-)-.2 E(coll)180 612
+Q F0(\(3\).).51 E F1(compat41)108 628.8 Q F0<83>144 640.8 Q(in)180 640.8
+Q F3(posix)3.79 E F0(mode,)3.79 E F1(time)3.79 E F0 1.29(may be follo)
3.79 F 1.29(wed by options and still be recognized as a reserv)-.25 F
-(ed)-.15 E -.1(wo)180 348 S(rd \(this is POSIX interpretation 267\)).1 E
-<83>144 360 Q(in)180 360 Q F3(posix)2.708 E F0 .208
-(mode, the parser requires that an e)2.708 F -.15(ve)-.25 G 2.708(nn).15
-G .208(umber of single quotes occur in the)-2.708 F F3(wor)2.709 E(d)
--.37 E F0 .282(portion of a double-quoted parameter e)180 372 R .282
-(xpansion and treats them specially)-.15 F 2.781(,s)-.65 G 2.781(ot)
--2.781 G .281(hat charac-)-2.781 F(ters within the single quotes are co\
-nsidered quoted \(this is POSIX interpretation 221\))180 384 Q F2
-(compat42)108 400.8 Q F0<83>144 412.8 Q 1.055(the replacement string in\
- double-quoted pattern substitution does not under)180 412.8 R 1.056
-(go quote re-)-.18 F(mo)180 424.8 Q -.25(va)-.15 G(l, as it does in v)
-.25 E(ersions after bash-4.2)-.15 E<83>144 436.8 Q .021
-(in posix mode, single quotes are considered special when e)180 436.8 R
-.021(xpanding the)-.15 F F3(wor)2.52 E(d)-.37 E F0 .02(portion of a)2.52
-F .017(double-quoted parameter e)180 448.8 R .017
+(ed)-.15 E -.1(wo)180 652.8 S(rd \(this is POSIX interpretation 267\)).1
+E<83>144 664.8 Q(in)180 664.8 Q F3(posix)2.709 E F0 .208
+(mode, the parser requires that an e)2.709 F -.15(ve)-.25 G 2.708(nn).15
+G .208(umber of single quotes occur in the)-2.708 F F3(wor)2.708 E(d)
+-.37 E F0 .281(portion of a double-quoted parameter e)180 676.8 R .282
+(xpansion and treats them specially)-.15 F 2.782(,s)-.65 G 2.782(ot)
+-2.782 G .282(hat charac-)-2.782 F(ters within the single quotes are co\
+nsidered quoted \(this is POSIX interpretation 221\))180 688.8 Q F1
+(compat42)108 705.6 Q F0<83>144 717.6 Q 1.056(the replacement string in\
+ double-quoted pattern substitution does not under)180 717.6 R 1.055
+(go quote re-)-.18 F(mo)180 729.6 Q -.25(va)-.15 G(l, as it does in v)
+.25 E(ersions after bash-4.2)-.15 E(GNU Bash 5.2)72 768 Q
+(2022 September 19)135.955 E(84)185.115 E 0 Cg EP
+%%Page: 85 85
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>144 84 Q .021
+(in posix mode, single quotes are considered special when e)180 84 R
+.021(xpanding the)-.15 F/F1 10/Times-Italic@0 SF(wor)2.521 E(d)-.37 E F0
+.021(portion of a)2.521 F .018(double-quoted parameter e)180 96 R .017
(xpansion and can be used to quote a closing brace or other spe-)-.15 F
-.999(cial character \(this is part of POSIX interpretation 221\); in la\
-ter v)180 460.8 R .998(ersions, single quotes)-.15 F
-(are not special within double-quoted w)180 472.8 Q(ord e)-.1 E
-(xpansions)-.15 E F2(compat43)108 489.6 Q F0<83>144 501.6 Q 1.07
-(the shell does not print a w)180 501.6 R 1.071
-(arning message if an attempt is made to use a quoted com-)-.1 F .249
-(pound assignment as an ar)180 513.6 R .248
-(gument to declare \(declare -a foo='\(1 2\)'\). Later v)-.18 F .248
-(ersions w)-.15 F(arn)-.1 E(that this usage is deprecated)180 525.6 Q
-<83>144 537.6 Q -.1(wo)180 537.6 S .5(rd e).1 F .501
-(xpansion errors are considered non-f)-.15 F .501
-(atal errors that cause the current command to)-.1 F -.1(fa)180 549.6 S
+.998(cial character \(this is part of POSIX interpretation 221\); in la\
+ter v)180 108 R .999(ersions, single quotes)-.15 F
+(are not special within double-quoted w)180 120 Q(ord e)-.1 E(xpansions)
+-.15 E/F2 10/Times-Bold@0 SF(compat43)108 136.8 Q F0<83>144 148.8 Q
+1.071(the shell does not print a w)180 148.8 R 1.07
+(arning message if an attempt is made to use a quoted com-)-.1 F .71
+(pound assignment as an ar)180 160.8 R .711
+(gument to declare \(e.g., declare -a foo=\010\(1 2\)\010\). Later v)
+-.18 F(ersions)-.15 E -.1(wa)180 172.8 S
+(rn that this usage is deprecated).1 E<83>144 184.8 Q -.1(wo)180 184.8 S
+.501(rd e).1 F .501(xpansion errors are considered non-f)-.15 F .501
+(atal errors that cause the current command to)-.1 F -.1(fa)180 196.8 S
.605(il, e).1 F -.15(ve)-.25 G 3.105(ni).15 G 3.105(np)-3.105 G .605
(osix mode \(the def)-3.105 F .605(ault beha)-.1 F .605(vior is to mak)
-.2 F 3.105(et)-.1 G .605(hem f)-3.105 F .605
-(atal errors that cause the)-.1 F(shell to e)180 561.6 Q(xit\))-.15 E
-<83>144 573.6 Q .354(when e)180 573.6 R -.15(xe)-.15 G .354
-(cuting a shell function, the loop state \(while/until/etc.\)).15 F .355
-(is not reset, so)5.354 F F2(br)2.855 E(eak)-.18 E F0(or)2.855 E F2
-(continue)180 585.6 Q F0 .052
+(atal errors that cause the)-.1 F(shell to e)180 208.8 Q(xit\))-.15 E
+<83>144 220.8 Q .355(when e)180 220.8 R -.15(xe)-.15 G .354
+(cuting a shell function, the loop state \(while/until/etc.\)).15 F .354
+(is not reset, so)5.354 F F2(br)2.854 E(eak)-.18 E F0(or)2.854 E F2
+(continue)180 232.8 Q F0 .052
(in that function will break or continue loops in the calling conte)
-2.553 F .052(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre)
-180 597.6 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 614.4 Q F0<83>
-144 626.4 Q .719(the shell sets up the v)180 626.4 R .719(alues used by)
--.25 F F1 -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E F1 -.27(BA)3.219
-G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.219(yc)-.15 G .719(an e)-3.219
-F(xpand)-.15 E(to the shell')180 638.4 Q 2.5(sp)-.55 G
+2.552 F .053(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre)
+180 244.8 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 261.6 Q F0<83>
+144 273.6 Q .719(the shell sets up the v)180 273.6 R .719(alues used by)
+-.25 F/F3 9/Times-Bold@0 SF -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E
+F3 -.27(BA)3.219 G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.218(yc)-.15 G
+.718(an e)-3.218 F(xpand)-.15 E(to the shell')180 285.6 Q 2.5(sp)-.55 G
(ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fe)-2.5 G
-(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 650.4 Q
-2.635(as)180 650.4 S .135(ubshell inherits loops from its parent conte)
--2.635 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2
-(continue)2.634 E F0 .134(will cause the sub-)2.634 F(shell to e)180
-662.4 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre)
-2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 674.4 Q -.25(va)
-180 674.4 S .618(riable assignments preceding b).25 F .618(uiltins lik)
+(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 297.6 Q
+2.634(as)180 297.6 S .134(ubshell inherits loops from its parent conte)
+-2.634 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2
+(continue)2.635 E F0 .135(will cause the sub-)2.635 F(shell to e)180
+309.6 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre)
+2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 321.6 Q -.25(va)
+180 321.6 S .619(riable assignments preceding b).25 F .618(uiltins lik)
-.2 F(e)-.1 E F2(export)3.118 E F0(and)3.118 E F2 -.18(re)3.118 G
-(adonly).18 E F0 .618(that set attrib)3.118 F .619(utes con-)-.2 F .12
-(tinue to af)180 686.4 R .12(fect v)-.25 F .119
-(ariables with the same name in the calling en)-.25 F .119(vironment e)
--.4 F -.15(ve)-.25 G 2.619(ni).15 G 2.619(ft)-2.619 G .119(he shell is)
--2.619 F(not in posix mode)180 698.4 Q(GNU Bash 5.1)72 768 Q
-(2020 October 29)141.235 E(81)190.395 E 0 Cg EP
-%%Page: 82 82
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(compat50)108 84 Q F0<83>144 96 Q 1.209(Bash-5.1 changed the w)180 96
-R(ay)-.1 E/F2 9/Times-Bold@0 SF($RANDOM)3.709 E F0 1.209
-(is generated to introduce slightly more random-)3.459 F 1.019
-(ness. If the shell compatibility le)180 108 R -.15(ve)-.25 G 3.518(li)
-.15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 E 3.518
-(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.018
-(rts to the method from).25 F .732(bash-5.0 and pre)180 120 R .732
-(vious v)-.25 F .733
+(adonly).18 E F0 .618(that set attrib)3.118 F .618(utes con-)-.2 F .119
+(tinue to af)180 333.6 R .119(fect v)-.25 F .119
+(ariables with the same name in the calling en)-.25 F .12(vironment e)
+-.4 F -.15(ve)-.25 G 2.62(ni).15 G 2.62(ft)-2.62 G .12(he shell is)-2.62
+F(not in posix mode)180 345.6 Q F2(compat50)108 362.4 Q F0<83>144 374.4
+Q 1.209(Bash-5.1 changed the w)180 374.4 R(ay)-.1 E F3($RANDOM)3.709 E
+F0 1.209(is generated to introduce slightly more random-)3.459 F 1.018
+(ness. If the shell compatibility le)180 386.4 R -.15(ve)-.25 G 3.518
+(li).15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 E
+3.518(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.019
+(rts to the method from).25 F .733(bash-5.0 and pre)180 398.4 R .733
+(vious v)-.25 F .732
(ersions, so seeding the random number generator by assigning a)-.15 F
--.25(va)180 132 S(lue to).25 E F2(RANDOM)2.5 E F0
-(will produce the same sequence as in bash-5.0)2.25 E<83>144 144 Q .696
-(If the command hash table is empty)180 144 R 3.196(,b)-.65 G .696
-(ash v)-3.196 F .695(ersions prior to bash-5.1 printed an informa-)-.15
-F 1.32(tional message to that ef)180 156 R 1.321(fect, e)-.25 F -.15(ve)
--.25 G 3.821(nw).15 G 1.321
+-.25(va)180 410.4 S(lue to).25 E F3(RANDOM)2.5 E F0
+(will produce the same sequence as in bash-5.0)2.25 E<83>144 422.4 Q
+.695(If the command hash table is empty)180 422.4 R 3.196(,b)-.65 G .696
+(ash v)-3.196 F .696(ersions prior to bash-5.1 printed an informa-)-.15
+F 1.321(tional message to that ef)180 434.4 R 1.321(fect, e)-.25 F -.15
+(ve)-.25 G 3.821(nw).15 G 1.321
(hen producing output that can be reused as input.)-3.821 F
-(Bash-5.1 suppresses that message when the)180 168 Q 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
+(Bash-5.1 suppresses that message when the)180 446.4 Q F2<ad6c>2.5 E F0
+(option is supplied.)2.5 E F2(compat51)108 463.2 Q F0<83>144 475.2 Q
+(The)180 475.2 Q F2(unset)2.954 E F0 -.2(bu)2.954 G .454
+(iltin treats attempts to unset array subscripts).2 F F2(@)2.955 E F0
+(and)2.955 E F2(*)2.955 E F0(dif)2.955 E .455(ferently depending)-.25 F
+(on whether the array is inde)180 487.2 Q -.15(xe)-.15 G 2.5(do).15 G
+2.5(ra)-2.5 G(ssociati)-2.5 E -.15(ve)-.25 G 2.5(,a).15 G(nd dif)-2.5 E
+(ferently than in pre)-.25 E(vious v)-.25 E(ersions.)-.15 E/F4 10.95
+/Times-Bold@0 SF(RESTRICTED SHELL)72 504 Q F0(If)108 516 Q F2(bash)3.582
+E F0 1.081(is started with the name)3.581 F F2(rbash)3.581 E F0 3.581
+(,o)C 3.581(rt)-3.581 G(he)-3.581 E 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 208.8 R .476
+(cation, the shell becomes re-).2 F 2.976(stricted. A)108 528 R .476
(restricted shell is used to set up an en)2.976 F .476
(vironment more controlled than the standard shell.)-.4 F .477(It be-)
-5.477 F(ha)108 220.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E
-F1(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E
-(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 237.6 Q
-(changing directories with)144 237.6 Q F1(cd)2.5 E F0<83>108 254.4 Q
-(setting or unsetting the v)144 254.4 Q(alues of)-.25 E F2(SHELL)2.5 E
-/F4 9/Times-Roman@0 SF(,)A F2 -.666(PA)2.25 G(TH)-.189 E F4(,)A F2
-(HISTFILE)2.25 E F4(,)A F2(ENV)2.25 E F4(,)A F0(or)2.25 E F2 -.27(BA)2.5
-G(SH_ENV).27 E F0<83>108 271.2 Q(specifying command names containing)144
-271.2 Q F1(/)2.5 E F0<83>108 288 Q(specifying a \214lename containing a)
-144 288 Q F1(/)2.5 E F0(as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E
-F0 -.2(bu)5 G(iltin command).2 E<83>108 304.8 Q
-(specifying a \214lename containing a slash as an ar)144 304.8 Q
-(gument to the)-.18 E F1(history)2.5 E F0 -.2(bu)2.5 G(iltin command).2
-E<83>108 321.6 Q .45
-(specifying a \214lename containing a slash as an ar)144 321.6 R .449
-(gument to the)-.18 F 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
+5.477 F(ha)108 540 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F2
+(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E
+(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 556.8 Q
+(changing directories with)144 556.8 Q F2(cd)2.5 E F0<83>108 573.6 Q
+(setting or unsetting the v)144 573.6 Q(alues of)-.25 E F3(SHELL)2.5 E
+/F5 9/Times-Roman@0 SF(,)A F3 -.666(PA)2.25 G(TH)-.189 E F5(,)A F3
+(HISTFILE)2.25 E F5(,)A F3(ENV)2.25 E F5(,)A F0(or)2.25 E F3 -.27(BA)2.5
+G(SH_ENV).27 E F0<83>108 590.4 Q(specifying command names containing)144
+590.4 Q F2(/)2.5 E F0<83>108 607.2 Q
+(specifying a \214lename containing a)144 607.2 Q F2(/)2.5 E F0
+(as an ar)2.5 E(gument to the)-.18 E F2(.)2.5 E F0 -.2(bu)5 G
+(iltin command).2 E<83>108 624 Q
+(specifying a \214lename containing a slash as an ar)144 624 Q
+(gument to the)-.18 E F2(history)2.5 E F0 -.2(bu)2.5 G(iltin command).2
+E<83>108 640.8 Q .45
+(specifying a \214lename containing a slash as an ar)144 640.8 R .449
+(gument to the)-.18 F 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 652.8 Q
+<83>108 669.6 Q(importing function de\214nitions from the shell en)144
+669.6 Q(vironment at startup)-.4 E<83>108 686.4 Q(parsing the v)144
+686.4 Q(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E
+(vironment at startup)-.4 E<83>108 703.2 Q(redirecting output using the\
+ >, >|, <>, >&, &>, and >> redirection operators)144 703.2 Q
+(GNU Bash 5.2)72 768 Q(2022 September 19)135.955 E(85)185.115 E 0 Cg EP
+%%Page: 86 86
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q
+(using the)144 84 Q/F1 10/Times-Bold@0 SF(exec)2.5 E F0 -.2(bu)2.5 G
(iltin command to replace the shell with another command).2 E<83>108
-417.6 Q(adding or deleting b)144 417.6 Q(uiltin commands with the)-.2 E
+100.8 Q(adding or deleting b)144 100.8 Q(uiltin commands with the)-.2 E
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
+(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 117.6 Q
+(using the)144 117.6 Q F1(enable)2.5 E F0 -.2(bu)2.5 G
(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108
-451.2 Q(specifying the)144 451.2 Q 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
+134.4 Q(specifying the)144 134.4 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 151.2 Q
+(turning of)144 151.2 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F1
+(set +r)2.5 E F0(or)2.5 E F1(shopt -u r)2.5 E(estricted_shell)-.18 E F0
+(.)A(These restrictions are enforced after an)108 168 Q 2.5(ys)-.15 G
(tartup \214les are read.)-2.5 E 1.566
-(When a command that is found to be a shell script is e)108 501.6 R -.15
-(xe)-.15 G 1.567(cuted \(see).15 F F2 1.567(COMMAND EXECUTION)4.067 F F0
-(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1(rbash)108 513.6 Q F0(turns of)
-2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15
-E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F3(SEE ALSO)72
-530.4 Q/F5 10/Times-Italic@0 SF(Bash Refer)108 542.4 Q(ence Manual)-.37
-E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F5
-(The Gnu Readline Libr)108 554.4 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
-(ox and Chet Rame)-.15 E(y)-.15 E F5(The Gnu History Libr)108 566.4 Q
+(When a command that is found to be a shell script is e)108 184.8 R -.15
+(xe)-.15 G 1.567(cuted \(see).15 F/F2 9/Times-Bold@0 SF 1.567
+(COMMAND EXECUTION)4.067 F F0(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1
+(rbash)108 196.8 Q F0(turns of)2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H
+(estrictions in the shell spa).15 E(wned to e)-.15 E -.15(xe)-.15 G
+(cute the script.).15 E/F3 10.95/Times-Bold@0 SF(SEE ALSO)72 213.6 Q/F4
+10/Times-Italic@0 SF(Bash Refer)108 225.6 Q(ence Manual)-.37 E F0 2.5
+(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F4
+(The Gnu Readline Libr)108 237.6 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu History Libr)108 249.6 Q
(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E
-F5 -.8(Po)108 578.4 S(rtable Oper).8 E
+F4 -.8(Po)108 261.6 S(rtable Oper).8 E
(ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities)
--.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 590.4 Q
-(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 602.4 Q
-(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F5(sh)
-108 614.4 Q F0(\(1\),)A F5(ksh)2.5 E F0(\(1\),)A F5(csh)2.5 E F0(\(1\))A
-F5(emacs)108 626.4 Q F0(\(1\),)A F5(vi)2.5 E F0(\(1\))A F5 -.37(re)108
-638.4 S(adline).37 E F0(\(3\))A F3(FILES)72 655.2 Q F5(/bin/bash)109.666
-667.2 Q F0(The)144 679.2 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E
-F5(/etc/pr)109.666 691.2 Q(o\214le)-.45 E F0
-(The systemwide initialization \214le, e)144 703.2 Q -.15(xe)-.15 G
-(cuted for login shells).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)
-141.235 E(82)190.395 E 0 Cg EP
-%%Page: 83 83
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
-/Times-Italic@0 SF(~/.bash_pr)109.666 84 Q(o\214le)-.45 E F0
-(The personal initialization \214le, e)144 96 Q -.15(xe)-.15 G
-(cuted for login shells).15 E F1(~/.bashr)109.666 108 Q(c)-.37 E F0
-(The indi)144 120 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G
-(-shell startup \214le).15 E F1(~/.bash_lo)109.666 132 Q(gout)-.1 E F0
-(The indi)144 144 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe)
--.15 G(cuted when a login shell e).15 E(xits)-.15 E F1(~/.inputr)109.666
-156 Q(c)-.37 E F0(Indi)144 168 Q(vidual)-.25 E F1 -.37(re)2.5 G(adline)
-.37 E F0(initialization \214le)2.5 E/F2 10.95/Times-Bold@0 SF -.548(AU)
-72 184.8 S(THORS).548 E F0(Brian F)108 196.8 Q(ox, Free Softw)-.15 E
-(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 208.8 Q(g)-.18 E
-(Chet Rame)108 225.6 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)
--.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108
-237.6 Q(y@case.edu)-.15 E F2 -.11(BU)72 254.4 S 2.738(GR).11 G(EPOR)
--2.738 E(TS)-.438 E F0 .568(If you \214nd a b)108 266.4 R .568(ug in)-.2
-F/F3 10/Times-Bold@0 SF(bash,)3.068 E F0 .568(you should report it.)
+-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 273.6 Q
+(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 285.6 Q
+(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh)
+108 297.6 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A
+F4(emacs)108 309.6 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108
+321.6 S(adline).37 E F0(\(3\))A F3(FILES)72 338.4 Q F4(/bin/bash)109.666
+350.4 Q F0(The)144 362.4 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E
+F4(/etc/pr)109.666 374.4 Q(o\214le)-.45 E F0
+(The systemwide initialization \214le, e)144 386.4 Q -.15(xe)-.15 G
+(cuted for login shells).15 E F4(~/.bash_pr)109.666 398.4 Q(o\214le)-.45
+E F0(The personal initialization \214le, e)144 410.4 Q -.15(xe)-.15 G
+(cuted for login shells).15 E F4(~/.bashr)109.666 422.4 Q(c)-.37 E F0
+(The indi)144 434.4 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G
+(-shell startup \214le).15 E F4(~/.bash_lo)109.666 446.4 Q(gout)-.1 E F0
+(The indi)144 458.4 Q(vidual login shell cleanup \214le, e)-.25 E -.15
+(xe)-.15 G(cuted when a login shell e).15 E(xits)-.15 E F4
+(~/.bash_history)109.666 470.4 Q F0(The def)144 482.4 Q(ault v)-.1 E
+(alue of)-.25 E F1(HISTFILE)2.5 E F0 2.5(,t)C
+(he \214le in which bash sa)-2.5 E -.15(ve)-.2 G 2.5(st).15 G
+(he command history)-2.5 E F4(~/.inputr)109.666 494.4 Q(c)-.37 E F0
+(Indi)144 506.4 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline).37 E F0
+(initialization \214le)2.5 E F3 -.548(AU)72 523.2 S(THORS).548 E F0
+(Brian F)108 535.2 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 E
+(bfox@gnu.or)108 547.2 Q(g)-.18 E(Chet Rame)108 564 Q 1.3 -.65(y, C)-.15
+H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G
+(rsity).15 E(chet.rame)108 576 Q(y@case.edu)-.15 E F3 -.11(BU)72 592.8 S
+2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568(If you \214nd a b)108
+604.8 R .568(ug in)-.2 F F1(bash,)3.068 E F0 .568(you should report it.)
3.068 F .568(But \214rst, you should mak)5.568 F 3.068(es)-.1 G .568
(ure that it really is a b)-3.068 F .567(ug, and)-.2 F 5.625
-(that it appears in the latest v)108 278.4 R 5.625(ersion of)-.15 F F3
+(that it appears in the latest v)108 616.8 R 5.625(ersion of)-.15 F F1
(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626
(ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626
-(ilable from).25 F F1(ftp://ftp.gnu.or)108 290.4 Q(g/pub/gnu/bash/)-.37
-E F0(.)A .411(Once you ha)108 307.2 R .711 -.15(ve d)-.2 H .411
+(ilable from).25 F F4(ftp://ftp.gnu.or)108 628.8 Q(g/pub/gnu/bash/)-.37
+E F0(and)2.5 E F4(http://git.savannah.gnu.or)2.5 E
+(g/cgit/bash.git/snapshot/bash-master)-.37 E(.tar)-1.11 E(.gz)-1.11 E F0
+(.)A .411(Once you ha)108 645.6 R .711 -.15(ve d)-.2 H .411
(etermined that a b).15 F .411(ug actually e)-.2 F .411(xists, use the)
--.15 F F1(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41
-(ug report.)-.2 F(If)5.41 E .594(you ha)108 319.2 R .894 -.15(ve a \214)
+-.15 F F4(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41
+(ug report.)-.2 F(If)5.41 E .594(you ha)108 657.6 R .894 -.15(ve a \214)
-.2 H .595(x, you are encouraged to mail that as well!).15 F .595
(Suggestions and `philosophical' b)5.595 F .595(ug reports may)-.2 F
-(be mailed to)108 331.2 Q F1 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0
-(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3(gnu.bash.b)2.5 E(ug)
--.2 E F0(.)A(ALL b)108 348 Q(ug reports should include:)-.2 E(The v)108
-364.8 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 376.8 Q
-(are and operating system)-.1 E(The compiler used to compile)108 388.8 Q
-2.5(Ad)108 400.8 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E
-2.5(As)108 412.8 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G
-(rcises the b).15 E(ug)-.2 E F1(bashb)108.27 429.6 Q(ug)-.2 E F0
+(be mailed to)108 669.6 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0
+(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F1(gnu.bash.b)2.5 E(ug)
+-.2 E F0(.)A(ALL b)108 686.4 Q(ug reports should include:)-.2 E(The v)
+108 703.2 Q(ersion number of)-.15 E F1(bash)2.5 E F0(GNU Bash 5.2)72 768
+Q(2022 September 19)135.955 E(86)185.115 E 0 Cg EP
+%%Page: 87 87
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The hardw)108 84 Q
+(are and operating system)-.1 E(The compiler used to compile)108 96 Q
+2.5(Ad)108 108 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E
+2.5(As)108 120 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G
+(rcises the b).15 E(ug)-.2 E/F1 10/Times-Italic@0 SF(bashb)108.27 136.8
+Q(ug)-.2 E F0
(inserts the \214rst three items automatically into the template it pro)
2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108
-446.4 Q(ug reports concerning this manual page should be directed to)-.2
+153.6 Q(ug reports concerning this manual page should be directed to)-.2
E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.)
-.25 E F2 -.11(BU)72 463.2 S(GS).11 E F0(It')108 475.2 Q 2.5(st)-.55 G
-(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869
-(There are some subtle dif)108 492 R 1.869(ferences between)-.25 F F3
-(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F
-F3(sh)4.368 E F0 4.368(,m)C 1.868(ostly because of the)-4.368 F/F4 9
-/Times-Bold@0 SF(POSIX)108 504 Q F0(speci\214cation.)2.25 E
-(Aliases are confusing in some uses.)108 520.8 Q(Shell b)108 537.6 Q
+.25 E/F2 10.95/Times-Bold@0 SF -.11(BU)72 170.4 S(GS).11 E F0(It')108
+182.4 Q 2.5(st)-.55 G(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869
+(There are some subtle dif)108 199.2 R 1.869(ferences between)-.25 F/F3
+10/Times-Bold@0 SF(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869
+(ersions of)-.15 F F3(sh)4.368 E F0 4.368(,m)C 1.868
+(ostly because of the)-4.368 F/F4 9/Times-Bold@0 SF(POSIX)108 211.2 Q F0
+(speci\214cation.)2.25 E(Aliases are confusing in some uses.)108 228 Q
+(Shell b)108 244.8 Q
(uiltin commands and functions are not stoppable/restartable.)-.2 E
1.315(Compound commands and command sequences of the form `a ; b ; c' a\
-re not handled gracefully when)108 554.4 R .39
-(process suspension is attempted.)108 566.4 R .389
+re not handled gracefully when)108 261.6 R .39
+(process suspension is attempted.)108 273.6 R .389
(When a process is stopped, the shell immediately e)5.39 F -.15(xe)-.15
G .389(cutes the ne).15 F .389(xt com-)-.15 F .192
-(mand in the sequence.)108 578.4 R .192(It suf)5.192 F .192(\214ces to \
+(mand in the sequence.)108 285.6 R .192(It suf)5.192 F .192(\214ces to \
place the sequence of commands between parentheses to force it into a)
--.25 F(subshell, which may be stopped as a unit.)108 590.4 Q(Array v)108
-607.2 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E
-(There may be only one acti)108 624 Q .3 -.15(ve c)-.25 H
-(oprocess at a time.).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
-E(83)190.395 E 0 Cg EP
+-.25 F(subshell, which may be stopped as a unit.)108 297.6 Q(Array v)108
+314.4 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E
+(There may be only one acti)108 331.2 Q .3 -.15(ve c)-.25 H
+(oprocess at a time.).15 E(GNU Bash 5.2)72 768 Q(2022 September 19)
+135.955 E(87)185.115 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/doc/bashbug.0 b/doc/bashbug.0
index 373c47b1..58f08de2 100644
--- a/doc/bashbug.0
+++ b/doc/bashbug.0
@@ -49,4 +49,4 @@ AAUUTTHHOORRSS
-GNU Bash 5.1 2020 August 1 BASHBUG(1)
+GNU Bash 5.2 2020 August 1 BASHBUG(1)
diff --git a/doc/bashbug.ps b/doc/bashbug.ps
index 9c60a331..55fe45ce 100644
--- a/doc/bashbug.ps
+++ b/doc/bashbug.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.4
-%%CreationDate: Fri Aug 7 11:58:10 2020
+%%CreationDate: Tue Jan 11 16:04:43 2022
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
@@ -290,7 +290,7 @@ F2(EDIT)108 300 Q(OR)-.18 E F0 .327(Speci\214es the preferred editor)144
(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 463.2 Q(g)-.18 E
(Chet Rame)108 480 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)-.8
E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet@po.cwru.edu)
-108 492 Q(GNU Bash 5.1)72 768 Q(2020 August 1)145.395 E(1)199.555 E 0 Cg
+108 492 Q(GNU Bash 5.2)72 768 Q(2020 August 1)145.395 E(1)199.555 E 0 Cg
EP
%%Trailer
end
diff --git a/doc/bashref.dvi b/doc/bashref.dvi
index 2b682d27..a7a571b8 100644
--- a/doc/bashref.dvi
+++ b/doc/bashref.dvi
Binary files differ
diff --git a/doc/bashref.html b/doc/bashref.html
index 6a4c3ab8..928b3ff1 100644
--- a/doc/bashref.html
+++ b/doc/bashref.html
@@ -1,13 +1,16 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
+<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This text is a brief description of the features that are present in
-the Bash shell (version 5.1, 29 October 2020).
+the Bash shell (version 5.2, 19 September 2022).
-This is Edition 5.1, last updated 29 October 2020,
+This is Edition 5.2, last updated 19 September 2022,
of The GNU Bash Reference Manual,
-for Bash, Version 5.1.
+for Bash, Version 5.2.
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2022 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -15,9 +18,6 @@ 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.7, http://www.gnu.org/software/texinfo/ -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Bash Reference Manual</title>
<meta name="description" content="Bash Reference Manual">
@@ -25,17 +25,21 @@ A copy of the license is included in the section entitled
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
<link href="#Top" rel="start" title="Top">
<link href="#Indexes" rel="index" title="Indexes">
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
<link href="dir.html#Top" rel="up" title="(dir)">
+<link href="#Introduction" rel="next" title="Introduction">
+<link href="dir.html#Top" rel="prev" title="(dir)">
<style type="text/css">
<!--
+a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
-div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
@@ -44,6 +48,7 @@ pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
+span:hover a.copiable-anchor {visibility: visible}
ul.no-bullet {list-style: none}
-->
</style>
@@ -63,7 +68,36 @@ ul.no-bullet {list-style: none}
-<span id="SEC_Contents"></span>
+
+<div class="top" id="Top">
+<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>
+<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.2, 19 September 2022).
+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.2, last updated 19 September 2022,
+of <cite>The GNU Bash Reference Manual</cite>,
+for <code>Bash</code>, Version 5.2.
+</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
+borrowed concepts from are the Bourne Shell (<samp>sh</samp>), the Korn Shell
+(<samp>ksh</samp>), and the C-shell (<samp>csh</samp> and its successor,
+<samp>tcsh</samp>). The following menu breaks the features up into
+categories, noting which features were inspired by other shells and
+which are specific to Bash.
+</p>
+<p>This manual is meant as a brief introduction to features found in
+Bash. The Bash manual page should be used as the definitive
+reference on shell behavior.
+</p>
+
+<div class="Contents_element" id="SEC_Contents">
<h2 class="contents-heading">Table of Contents</h2>
<div class="contents">
@@ -266,85 +300,22 @@ ul.no-bullet {list-style: none}
</ul></li>
</ul>
</div>
-
-
-<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>
-<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.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.1, last updated 29 October 2020,
-of <cite>The GNU Bash Reference Manual</cite>,
-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
-borrowed concepts from are the Bourne Shell (<samp>sh</samp>), the Korn Shell
-(<samp>ksh</samp>), and the C-shell (<samp>csh</samp> and its successor,
-<samp>tcsh</samp>). The following menu breaks the features up into
-categories, noting which features were inspired by other shells and
-which are specific to Bash.
-</p>
-<p>This manual is meant as a brief introduction to features found in
-Bash. The Bash manual page should be used as the definitive
-reference on shell behavior.
-</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.
-</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
- 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;.
-</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.
-</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.
-</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.
-</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
- 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
- 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
-</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.
-</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.
-</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
- 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.
-</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.
-</td></tr>
-</table>
-
<hr>
-<span id="Introduction"></span><div class="header">
+<div class="chapter" id="Introduction">
+<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>
+Next: <a href="#Definitions" accesskey="n" rel="next">Definitions</a>, Up: <a href="#Top" 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="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.
-</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.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#What-is-Bash_003f" accesskey="1">What is Bash?</a></li>
+<li><a href="#What-is-a-shell_003f" accesskey="2">What is a shell?</a></li>
+</ul>
<hr>
-<span id="What-is-Bash_003f"></span><div class="header">
+<div class="section" id="What-is-Bash_003f">
+<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>
@@ -374,7 +345,9 @@ independently-supported ports exist for <small>MS-DOS</small>, <small>OS/2</smal
and Windows platforms.
</p>
<hr>
-<span id="What-is-a-shell_003f"></span><div class="header">
+</div>
+<div class="section" id="What-is-a-shell_003f">
+<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>
@@ -433,146 +406,132 @@ editing, command history and aliases. Each of these features is
described in this manual.
</p>
<hr>
-<span id="Definitions"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Definitions">
+<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>
+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">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="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><span id="index-POSIX"></span>
-<p>A family of open system standards based on Unix. Bash
+<dt id='index-POSIX'><span><code>POSIX</code><a href='#index-POSIX' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
</p>
</dd>
-<dt><code>blank</code></dt>
+<dt><span><code>blank</code></span></dt>
<dd><p>A space or tab character.
</p>
</dd>
-<dt><code>builtin</code></dt>
-<dd><span id="index-builtin-1"></span>
-<p>A command that is implemented internally by the shell itself, rather
+<dt id='index-builtin-1'><span><code>builtin</code><a href='#index-builtin-1' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-control-operator"></span>
-<p>A <code>token</code> that performs a control function. It is a <code>newline</code>
+<dt id='index-control-operator'><span><code>control operator</code><a href='#index-control-operator' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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;,
&lsquo;<samp>|</samp>&rsquo;, &lsquo;<samp>|&amp;</samp>&rsquo;, &lsquo;<samp>(</samp>&rsquo;, or &lsquo;<samp>)</samp>&rsquo;.
</p>
</dd>
-<dt><code>exit status</code></dt>
-<dd><span id="index-exit-status"></span>
-<p>The value returned by a command to its caller. The value is restricted
+<dt id='index-exit-status'><span><code>exit status</code><a href='#index-exit-status' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-field"></span>
-<p>A unit of text that is the result of one of the shell expansions. After
+<dt id='index-field'><span><code>field</code><a href='#index-field' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-filename"></span>
-<p>A string of characters used to identify a file.
+<dt id='index-filename'><span><code>filename</code><a href='#index-filename' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>A string of characters used to identify a file.
</p>
</dd>
-<dt><code>job</code></dt>
-<dd><span id="index-job"></span>
-<p>A set of processes comprising a pipeline, and any processes descended
+<dt id='index-job'><span><code>job</code><a href='#index-job' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-job-control"></span>
-<p>A mechanism by which users can selectively stop (suspend) and restart
+<dt id='index-job-control'><span><code>job control</code><a href='#index-job-control' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>A mechanism by which users can selectively stop (suspend) and restart
(resume) execution of processes.
</p>
</dd>
-<dt><code>metacharacter</code></dt>
-<dd><span id="index-metacharacter"></span>
-<p>A character that, when unquoted, separates words. A metacharacter is
+<dt id='index-metacharacter'><span><code>metacharacter</code><a href='#index-metacharacter' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
&lsquo;<samp>&gt;</samp>&rsquo;.
</p>
</dd>
-<dt><code>name</code></dt>
-<dd><span id="index-name"></span>
-<span id="index-identifier"></span>
+<dt id='index-name'><span><code>name</code><a href='#index-name' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
Also referred to as an <code>identifier</code>.
</p>
</dd>
-<dt><code>operator</code></dt>
-<dd><span id="index-operator_002c-shell"></span>
-<p>A <code>control operator</code> or a <code>redirection operator</code>.
+<dt id='index-operator_002c-shell'><span><code>operator</code><a href='#index-operator_002c-shell' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-process-group"></span>
-<p>A collection of related processes each having the same process
+<dt id='index-process-group'><span><code>process group</code><a href='#index-process-group' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-process-group-ID"></span>
-<p>A unique identifier that represents a <code>process group</code>
+<dt id='index-process-group-ID'><span><code>process group ID</code><a href='#index-process-group-ID' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>A unique identifier that represents a <code>process group</code>
during its lifetime.
</p>
</dd>
-<dt><code>reserved word</code></dt>
-<dd><span id="index-reserved-word"></span>
-<p>A <code>word</code> that has a special meaning to the shell. Most reserved
+<dt id='index-reserved-word'><span><code>reserved word</code><a href='#index-reserved-word' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-return-status"></span>
-<p>A synonym for <code>exit status</code>.
+<dt id='index-return-status'><span><code>return status</code><a href='#index-return-status' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>A synonym for <code>exit status</code>.
</p>
</dd>
-<dt><code>signal</code></dt>
-<dd><span id="index-signal"></span>
-<p>A mechanism by which a process may be notified by the kernel
+<dt id='index-signal'><span><code>signal</code><a href='#index-signal' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-special-builtin"></span>
-<p>A shell builtin command that has been classified as special by the
+<dt id='index-special-builtin'><span><code>special builtin</code><a href='#index-special-builtin' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-token"></span>
-<p>A sequence of characters considered a single unit by the shell.
+<dt id='index-token'><span><code>token</code><a href='#index-token' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-word"></span>
-<p>A sequence of characters treated as a unit by the shell.
+<dt id='index-word'><span><code>word</code><a href='#index-word' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>A sequence of characters treated as a unit by the shell.
Words may not include unquoted <code>metacharacters</code>.
</p></dd>
</dl>
<hr>
-<span id="Basic-Shell-Features"></span><div class="header">
+</div>
+<div class="chapter" id="Basic-Shell-Features">
+<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>
+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">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="Basic-Shell-Features-1"></span><h2 class="chapter">3 Basic Shell Features</h2>
<span id="index-Bourne-shell"></span>
@@ -590,40 +549,24 @@ shell expansions,
<i>redirections</i>, which are a way to direct input and output from
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.
-</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.
-</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.
-</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.
-</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
- 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.
-</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.
-</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.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Shell-Syntax" accesskey="1">Shell Syntax</a></li>
+<li><a href="#Shell-Commands" accesskey="2">Shell Commands</a></li>
+<li><a href="#Shell-Functions" accesskey="3">Shell Functions</a></li>
+<li><a href="#Shell-Parameters" accesskey="4">Shell Parameters</a></li>
+<li><a href="#Shell-Expansions" accesskey="5">Shell Expansions</a></li>
+<li><a href="#Redirections" accesskey="6">Redirections</a></li>
+<li><a href="#Executing-Commands" accesskey="7">Executing Commands</a></li>
+<li><a href="#Shell-Scripts" accesskey="8">Shell Scripts</a></li>
+</ul>
<hr>
-<span id="Shell-Syntax"></span><div class="header">
+<div class="section" id="Shell-Syntax">
+<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>
<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.
-</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.
-</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.
-</td></tr>
-</table>
<p>When the shell reads input, it proceeds through a
sequence of operations. If the input indicates the beginning of a
@@ -640,8 +583,14 @@ others, redirects input and output as needed, executes the specified
command, waits for the command&rsquo;s exit status, and makes that exit status
available for further inspection or processing.
</p>
+<ul class="section-toc">
+<li><a href="#Shell-Operation" accesskey="1">Shell Operation</a></li>
+<li><a href="#Quoting" accesskey="2">Quoting</a></li>
+<li><a href="#Comments" accesskey="3">Comments</a></li>
+</ul>
<hr>
-<span id="Shell-Operation"></span><div class="header">
+<div class="subsection" id="Shell-Operation">
+<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>
@@ -679,27 +628,14 @@ status (see <a href="#Exit-Status">Exit Status</a>).
</li></ol>
<hr>
-<span id="Quoting"></span><div class="header">
+</div>
+<div class="subsection" id="Quoting">
+<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>
<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
- 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
- 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
- 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.
-</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.
-</td></tr>
-</table>
<p>Quoting is used to remove the special meaning of certain
characters or words to the shell. Quoting can be used to
@@ -711,16 +647,24 @@ parameter expansion.
has special meaning to the shell and must be quoted if it is to
represent itself.
When the command history expansion facilities are being used
-(see <a href="#History-Interaction">History Interaction</a>), the
-<var>history expansion</var> character, usually &lsquo;<samp>!</samp>&rsquo;, must be quoted
+(see <a href="#History-Interaction">History Expansion</a>), the
+<em>history expansion</em> character, usually &lsquo;<samp>!</samp>&rsquo;, must be quoted
to prevent history expansion. See <a href="#Bash-History-Facilities">Bash History Facilities</a>, for
more details concerning history expansion.
</p>
<p>There are three quoting mechanisms: the
-<var>escape character</var>, single quotes, and double quotes.
-</p>
+<em>escape character</em>, single quotes, and double quotes.
+</p>
+<ul class="section-toc">
+<li><a href="#Escape-Character" accesskey="1">Escape Character</a></li>
+<li><a href="#Single-Quotes" accesskey="2">Single Quotes</a></li>
+<li><a href="#Double-Quotes" accesskey="3">Double Quotes</a></li>
+<li><a href="#ANSI_002dC-Quoting" accesskey="4">ANSI-C Quoting</a></li>
+<li><a href="#Locale-Translation" accesskey="5">Locale-Specific Translation</a></li>
+</ul>
<hr>
-<span id="Escape-Character"></span><div class="header">
+<div class="subsubsection" id="Escape-Character">
+<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>
@@ -733,7 +677,9 @@ is treated as a line continuation (that is, it is removed from
the input stream and effectively ignored).
</p>
<hr>
-<span id="Single-Quotes"></span><div class="header">
+</div>
+<div class="subsubsection" id="Single-Quotes">
+<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>
@@ -744,7 +690,9 @@ of each character within the quotes. A single quote may not occur
between single quotes, even when preceded by a backslash.
</p>
<hr>
-<span id="Double-Quotes"></span><div class="header">
+</div>
+<div class="subsubsection" id="Double-Quotes">
+<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>
@@ -776,73 +724,76 @@ 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>
-<span id="ANSI_002dC-Quoting"></span><div class="header">
+</div>
+<div class="subsubsection" id="ANSI_002dC-Quoting">
+<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>
+Next: <a href="#Locale-Translation" accesskey="n" rel="next">Locale-Specific 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>
<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
-as specified by the ANSI C standard. Backslash escape sequences, if
-present, are decoded as follows:
+<p>Character sequences of the form $&rsquo;<var>string</var>&rsquo; are treated as a special
+kind of single quotes.
+The sequence expands to <var>string</var>, with backslash-escaped characters
+in <var>string</var> replaced as specified by the ANSI C standard.
+Backslash escape sequences, if present, are decoded as follows:
</p>
<dl compact="compact">
-<dt><code>\a</code></dt>
+<dt><span><code>\a</code></span></dt>
<dd><p>alert (bell)
</p></dd>
-<dt><code>\b</code></dt>
+<dt><span><code>\b</code></span></dt>
<dd><p>backspace
</p></dd>
-<dt><code>\e</code></dt>
-<dt><code>\E</code></dt>
+<dt><span><code>\e</code></span></dt>
+<dt><span><code>\E</code></span></dt>
<dd><p>an escape character (not ANSI C)
</p></dd>
-<dt><code>\f</code></dt>
+<dt><span><code>\f</code></span></dt>
<dd><p>form feed
</p></dd>
-<dt><code>\n</code></dt>
+<dt><span><code>\n</code></span></dt>
<dd><p>newline
</p></dd>
-<dt><code>\r</code></dt>
+<dt><span><code>\r</code></span></dt>
<dd><p>carriage return
</p></dd>
-<dt><code>\t</code></dt>
+<dt><span><code>\t</code></span></dt>
<dd><p>horizontal tab
</p></dd>
-<dt><code>\v</code></dt>
+<dt><span><code>\v</code></span></dt>
<dd><p>vertical tab
</p></dd>
-<dt><code>\\</code></dt>
+<dt><span><code>\\</code></span></dt>
<dd><p>backslash
</p></dd>
-<dt><code>\'</code></dt>
+<dt><span><code>\'</code></span></dt>
<dd><p>single quote
</p></dd>
-<dt><code>\&quot;</code></dt>
+<dt><span><code>\&quot;</code></span></dt>
<dd><p>double quote
</p></dd>
-<dt><code>\?</code></dt>
+<dt><span><code>\?</code></span></dt>
<dd><p>question mark
</p></dd>
-<dt><code>\<var>nnn</var></code></dt>
+<dt><span><code>\<var>nnn</var></code></span></dt>
<dd><p>the eight-bit character whose value is the octal value <var>nnn</var>
(one to three octal digits)
</p></dd>
-<dt><code>\x<var>HH</var></code></dt>
+<dt><span><code>\x<var>HH</var></code></span></dt>
<dd><p>the eight-bit character whose value is the hexadecimal value <var>HH</var>
(one or two hex digits)
</p></dd>
-<dt><code>\u<var>HHHH</var></code></dt>
+<dt><span><code>\u<var>HHHH</var></code></span></dt>
<dd><p>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
<var>HHHH</var> (one to four hex digits)
</p></dd>
-<dt><code>\U<var>HHHHHHHH</var></code></dt>
+<dt><span><code>\U<var>HHHHHHHH</var></code></span></dt>
<dd><p>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
<var>HHHHHHHH</var> (one to eight hex digits)
</p></dd>
-<dt><code>\c<var>x</var></code></dt>
+<dt><span><code>\c<var>x</var></code></span></dt>
<dd><p>a control-<var>x</var> character
</p></dd>
</dl>
@@ -851,7 +802,9 @@ present, are decoded as follows:
been present.
</p>
<hr>
-<span id="Locale-Translation"></span><div class="header">
+</div>
+<div class="subsubsection" id="Locale-Translation">
+<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>
@@ -861,32 +814,142 @@ Previous: <a href="#ANSI_002dC-Quoting" accesskey="p" rel="prev">ANSI-C Quoting<
<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;)
+<p>Prefixing a double-quoted string with a dollar sign (&lsquo;<samp>$</samp>&rsquo;), such
+as <tt>$&quot;hello, world&quot;</tt>,
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.
+The <code>gettext</code> infrastructure performs the lookup and
+translation, using the <code>LC_MESSAGES</code>, <code>TEXTDOMAINDIR</code>,
+and <code>TEXTDOMAIN</code> shell variables, as explained below.
+See the gettext documentation for additional details not covered here.
If the current locale is <code>C</code> or <code>POSIX</code>,
-or if there are no translations available,
+if there are no translations available,
+of if the string is not translated,
the dollar sign is ignored.
-If the string is translated and replaced, the replacement is
-double-quoted.
+Since this is a form of double quoting, the string remains double-quoted
+by default, whether or not it is translated and replaced.
+If the <code>noexpand_translation</code> option is enabled
+using the <code>shopt</code> builtin (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>),
+translated strings are single-quoted instead of double-quoted.
</p>
+<p>The rest of this section is a brief overview of how you use gettext to
+create translations for strings in a shell script named <var>scriptname</var>.
+There are more details in the gettext documentation.
+</p>
+<hr>
+<span id="Creating-Internationalized-Scripts"></span><div class="header">
+<p>
+ &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="node-heading">Creating Internationalized Scripts</h4>
+<span id="index-internationalized-scripts"></span>
+<span id="index-string-translations"></span>
+<p>Once you&rsquo;ve marked the strings in your script
+that you want to translate using $&quot;...&quot;,
+you create a gettext &quot;template&quot; file using the command
+</p>
+<div class="example">
+<pre class="example">bash --dump-po-strings <var>scriptname</var> &gt; <var>domain</var>.pot
+</pre></div>
+
+<p>The <var>domain</var> is your <em>message domain</em>.
+It&rsquo;s just an arbitrary string that&rsquo;s used to identify the files gettext
+needs, like a package or script name.
+It needs to be unique among all
+the message domains on systems where you install the translations, so
+gettext knows which translations correspond to your script.
+You&rsquo;ll use the template file to create translations for each target language.
+The template file conventionally has the suffix &lsquo;<samp>.pot</samp>&rsquo;.
+</p>
+<p>You copy this template file to a separate file for each target language
+you want to support (called &quot;PO&quot; files, which use the suffix &lsquo;<samp>.po</samp>&rsquo;).
+PO files use various naming conventions, but
+when you are working to translate a template file into a particular
+language, you first copy the template file to a file whose name is the
+language you want to target, with the &lsquo;<samp>.po</samp>&rsquo; suffix.
+For instance, the Spanish translations of your strings would be
+in a file named &lsquo;<samp>es.po</samp>&rsquo;, and to get started using a message
+domain named &quot;example,&quot; you would run
+</p>
+<div class="example">
+<pre class="example">cp example.pot es.po
+</pre></div>
+
+<p>Ultimately, PO files are often named <var>domain</var>.po and installed in
+directories that contain multiple translation files for a particular language.
+</p>
+<p>Whichever naming convention you choose, you will need to translate the
+strings in the PO files into the appropriate languages.
+This has to be done manually.
+</p>
+<p>When you have the translations and PO files complete, you&rsquo;ll use the
+gettext tools to produce what are called &quot;MO&quot; files, which are compiled
+versions of the PO files the gettext tools use to look up translations
+efficiently.
+MO files are also called &quot;message catalog&quot; files.
+You use the <code>msgfmt</code> program to do this.
+For instance, if you had a file with Spanish translations, you could run
+</p>
+<div class="example">
+<pre class="example">msgfmt -o es.mo es.po
+</pre></div>
+
+<p>to produce the corresponding MO file.
+</p>
+<p>Once you have the MO files, you decide where to install them and use the
+<code>TEXTDOMAINDIR</code> shell variable to tell the gettext tools where they are.
+Make sure to use the same message domain to name the MO files
+as you did for the PO files when you install them.
+</p>
+<span id="index-LANG"></span>
<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
-suffix of &lsquo;<samp>.mo</samp>&rsquo;. If you use the <code>TEXTDOMAIN</code> variable, you
-may need to set the <code>TEXTDOMAINDIR</code> variable to the location of
-the message catalog files. Still others use both variables in this
-fashion:
-<code>TEXTDOMAINDIR</code>/<code>LC_MESSAGES</code>/LC_MESSAGES/<code>TEXTDOMAIN</code>.mo.
+<p>Your users will use the <code>LANG</code> or <code>LC_MESSAGES</code> shell variables to
+select the desired language.
+</p>
+<p>You set the <code>TEXTDOMAIN</code> variable to the script&rsquo;s message domain.
+As above, you use the message domain to name your translation files.
+</p>
+<p>You, or possibly your users, set the <code>TEXTDOMAINDIR</code> variable to the
+name of a directory where the message catalog files are stored.
+If you install the message files into the system&rsquo;s standard message catalog
+directory, you don&rsquo;t need to worry about this variable.
+</p>
+<p>The directory where the message catalog files are stored varies between
+systems.
+Some 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 the &lsquo;<samp>.mo</samp>&rsquo; suffix.
+If you use the <code>TEXTDOMAIN</code> variable, you may need to set the
+<code>TEXTDOMAINDIR</code> variable to the location of the message catalog files,
+as above.
+It&rsquo;s common to use both variables in this fashion:
+<code>$TEXTDOMAINDIR</code>/<code>$LC_MESSAGES</code>/LC_MESSAGES/<code>$TEXTDOMAIN</code>.mo.
+</p>
+<p>If you used that last convention, and you wanted to store the message
+catalog files with Spanish (es) and Esperanto (eo) translations into a
+local directory you use for custom translation files, you could run
+</p>
+<div class="example">
+<pre class="example">TEXTDOMAIN=example
+TEXTDOMAINDIR=/usr/local/share/locale
+
+cp es.mo ${TEXTDOMAINDIR}/es/LC_MESSAGES/${TEXTDOMAIN}.mo
+cp eo.mo ${TEXTDOMAINDIR}/eo/LC_MESSAGES/${TEXTDOMAIN}.mo
+</pre></div>
+
+<p>When all of this is done, and the message catalog files containing the
+compiled translations are installed in the correct location,
+your users will be able to see translated strings
+in any of the supported languages by setting the <code>LANG</code> or
+<code>LC_MESSAGES</code> environment variables before running your script.
</p>
<hr>
-<span id="Comments"></span><div class="header">
+</div>
+</div>
+<div class="subsection" id="Comments">
+<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>
@@ -905,7 +968,10 @@ See <a href="#Interactive-Shells">Interactive Shells</a>, for a description of w
a shell interactive.
</p>
<hr>
-<span id="Shell-Commands"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Shell-Commands">
+<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>
@@ -920,26 +986,19 @@ in a variety of ways: in a pipeline in which the output of one command
becomes the input of a second, in a loop or conditional construct, or in
some other grouping.
</p>
-<table class="menu" border="0" cellspacing="0">
-<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="#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="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="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="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="7">GNU Parallel</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Running commands in parallel.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Reserved-Words" accesskey="1">Reserved Words</a></li>
+<li><a href="#Simple-Commands" accesskey="2">Simple Commands</a></li>
+<li><a href="#Pipelines" accesskey="3">Pipelines</a></li>
+<li><a href="#Lists" accesskey="4">Lists of Commands</a></li>
+<li><a href="#Compound-Commands" accesskey="5">Compound Commands</a></li>
+<li><a href="#Coprocesses" accesskey="6">Coprocesses</a></li>
+<li><a href="#GNU-Parallel" accesskey="7">GNU Parallel</a></li>
+</ul>
<hr>
-<span id="Reserved-Words"></span><div class="header">
+<div class="subsection" id="Reserved-Words">
+<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>
@@ -965,7 +1024,9 @@ the first word of a command (see below for exceptions):
words if they are the third word in a <code>for</code> command.
</p>
<hr>
-<span id="Simple-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Simple-Commands">
+<div class="header">
<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>
@@ -984,9 +1045,11 @@ 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>
-<span id="Pipelines"></span><div class="header">
+</div>
+<div class="subsection" id="Pipelines">
+<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>
+Next: <a href="#Lists" accesskey="n" rel="next">Lists of Commands</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>
<span id="Pipelines-1"></span><h4 class="subsection">3.2.3 Pipelines</h4>
<span id="index-pipeline"></span>
@@ -1006,15 +1069,15 @@ one of the control operators &lsquo;<samp>|</samp>&rsquo; or &lsquo;<samp>|&amp;
<p>The output of each command in the pipeline is connected via a pipe
to the input of the next command.
That is, each command reads the previous command&rsquo;s output. This
-connection is performed before any redirections specified by the
-command.
+connection is performed before any redirections specified by
+<var>command1</var>.
</p>
<p>If &lsquo;<samp>|&amp;</samp>&rsquo; is used, <var>command1</var>&rsquo;s standard error, in addition to
its standard output, is connected to
<var>command2</var>&rsquo;s standard input through the pipe;
it is shorthand for <code>2&gt;&amp;1 |</code>.
This implicit redirection of the standard error to the standard output is
-performed after any redirections specified by the command.
+performed after any redirections specified by <var>command1</var>.
</p>
<p>The reserved word <code>time</code> causes timing statistics
to be printed for the pipeline once it finishes.
@@ -1038,14 +1101,17 @@ total user and system time consumed by the shell and its children.
The <code>TIMEFORMAT</code> variable may be used to specify the format of
the time information.
</p>
-<p>If the pipeline is not executed asynchronously (see <a href="#Lists">Lists</a>), the
+<p>If the pipeline is not executed asynchronously (see <a href="#Lists">Lists of Commands</a>), the
shell waits for all commands in the pipeline to complete.
</p>
-<p>Each command in a pipeline is executed in its own subshell, which is a
+<p>Each command in a multi-command pipeline,
+where pipes are created,
+is executed in its own <em>subshell</em>, which is a
separate process (see <a href="#Command-Execution-Environment">Command Execution Environment</a>).
If the <code>lastpipe</code> option is enabled using the <code>shopt</code> builtin
(see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>),
-the last element of a pipeline may be run by the shell process.
+the last element of a pipeline may be run by the shell process
+when job control is not active.
</p>
<p>The exit
status of a pipeline is the exit status of the last command in the
@@ -1061,7 +1127,9 @@ The shell waits for all commands in the pipeline to terminate before
returning a value.
</p>
<hr>
-<span id="Lists"></span><div class="header">
+</div>
+<div class="subsection" id="Lists">
+<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>
@@ -1082,8 +1150,8 @@ to delimit commands, equivalent to a semicolon.
</p>
<p>If a command is terminated by the control operator &lsquo;<samp>&amp;</samp>&rsquo;,
the shell executes the command asynchronously in a subshell.
-This is known as executing the command in the <var>background</var>,
-and these are referred to as <var>asynchronous</var> commands.
+This is known as executing the command in the <em>background</em>,
+and these are referred to as <em>asynchronous</em> commands.
The shell does not wait for the command to finish, and the return
status is 0 (true).
When job control is not active (see <a href="#Job-Control">Job Control</a>),
@@ -1120,21 +1188,15 @@ returns a non-zero exit status.
executed in the list.
</p>
<hr>
-<span id="Compound-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Compound-Commands">
+<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>
+Next: <a href="#Coprocesses" accesskey="n" rel="next">Coprocesses</a>, Previous: <a href="#Lists" accesskey="p" rel="prev">Lists of 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="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.
-</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.
-</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.
-</td></tr>
-</table>
<p>Compound commands are the shell programming language constructs.
Each construct begins with a reserved word or control operator and is
@@ -1149,8 +1211,14 @@ followed by a newline in place of a semicolon.
<p>Bash provides looping constructs, conditional commands, and mechanisms
to group commands and execute them as a unit.
</p>
+<ul class="section-toc">
+<li><a href="#Looping-Constructs" accesskey="1">Looping Constructs</a></li>
+<li><a href="#Conditional-Constructs" accesskey="2">Conditional Constructs</a></li>
+<li><a href="#Command-Grouping" accesskey="3">Grouping Commands</a></li>
+</ul>
<hr>
-<span id="Looping-Constructs"></span><div class="header">
+<div class="subsubsection" id="Looping-Constructs">
+<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>
@@ -1163,9 +1231,8 @@ Next: <a href="#Conditional-Constructs" accesskey="n" rel="next">Conditional Con
command&rsquo;s syntax, it may be replaced with one or more newlines.
</p>
<dl compact="compact">
-<dt><code>until</code></dt>
-<dd><span id="index-until"></span>
-<span id="index-do"></span>
+<dt id='index-until'><span><code>until</code><a href='#index-until' class='copiable-anchor'> &para;</a></span></dt>
+<dd><span id="index-do"></span>
<span id="index-done"></span>
<p>The syntax of the <code>until</code> command is:
</p>
@@ -1179,9 +1246,8 @@ The return status is the exit status of the last command executed
in <var>consequent-commands</var>, or zero if none was executed.
</p>
</dd>
-<dt><code>while</code></dt>
-<dd><span id="index-while"></span>
-<p>The syntax of the <code>while</code> command is:
+<dt id='index-while'><span><code>while</code><a href='#index-while' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>The syntax of the <code>while</code> command is:
</p>
<div class="example">
<pre class="example">while <var>test-commands</var>; do <var>consequent-commands</var>; done
@@ -1193,9 +1259,8 @@ The return status is the exit status of the last command executed
in <var>consequent-commands</var>, or zero if none was executed.
</p>
</dd>
-<dt><code>for</code></dt>
-<dd><span id="index-for"></span>
-<p>The syntax of the <code>for</code> command is:
+<dt id='index-for'><span><code>for</code><a href='#index-for' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>The syntax of the <code>for</code> command is:
</p>
<div class="example">
<pre class="example">for <var>name</var> [ [in [<var>words</var> &hellip;] ] ; ] do <var>commands</var>; done
@@ -1235,17 +1300,18 @@ that is executed, or false if any of the expressions is invalid.
may be used to control loop execution.
</p>
<hr>
-<span id="Conditional-Constructs"></span><div class="header">
+</div>
+<div class="subsubsection" id="Conditional-Constructs">
+<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>
+Next: <a href="#Command-Grouping" accesskey="n" rel="next">Grouping Commands</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>
<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><span id="index-if"></span>
-<span id="index-then"></span>
+<dt id='index-if'><span><code>if</code><a href='#index-if' class='copiable-anchor'> &para;</a></span></dt>
+<dd><span id="index-then"></span>
<span id="index-else"></span>
<span id="index-elif"></span>
<span id="index-fi"></span>
@@ -1273,9 +1339,8 @@ The return status is the exit status of the last command executed, or
zero if no condition tested true.
</p>
</dd>
-<dt><code>case</code></dt>
-<dd><span id="index-case"></span>
-<span id="index-in"></span>
+<dt id='index-case'><span><code>case</code><a href='#index-case' class='copiable-anchor'> &para;</a></span></dt>
+<dd><span id="index-in"></span>
<span id="index-esac"></span>
<p>The syntax of the <code>case</code> command is:
</p>
@@ -1302,9 +1367,10 @@ as a <var>clause</var>.
The <var>word</var> undergoes tilde expansion, parameter expansion, command
substitution, arithmetic expansion, and quote removal
(see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>)
-before matching is
-attempted. Each <var>pattern</var> undergoes tilde expansion, parameter
-expansion, command substitution, and arithmetic expansion.
+before matching is attempted.
+Each <var>pattern</var> undergoes tilde expansion, parameter expansion,
+command substitution, arithmetic expansion, process substitution, and
+quote removal.
</p>
<p>There may be an arbitrary number of <code>case</code> clauses, each terminated
by a &lsquo;<samp>;;</samp>&rsquo;, &lsquo;<samp>;&amp;</samp>&rsquo;, or &lsquo;<samp>;;&amp;</samp>&rsquo;.
@@ -1342,9 +1408,8 @@ continuing the case statement execution as if the pattern list had not matched.
return status is the exit status of the <var>command-list</var> executed.
</p>
</dd>
-<dt><code>select</code></dt>
-<dd><span id="index-select"></span>
-
+<dt id='index-select'><span><code>select</code><a href='#index-select' class='copiable-anchor'> &para;</a></span></dt>
+<dd>
<p>The <code>select</code> construct allows the easy generation of menus.
It has almost the same syntax as the <code>for</code> command:
</p>
@@ -1353,16 +1418,16 @@ It has almost the same syntax as the <code>for</code> command:
</pre></div>
<p>The list of words following <code>in</code> is expanded, generating a list
-of items. The set of expanded words is printed on the standard
+of items, and the set of expanded words is printed on the standard
error output stream, each preceded by a number. If the
&lsquo;<samp>in <var>words</var></samp>&rsquo; is omitted, the positional parameters are printed,
as if &lsquo;<samp>in &quot;$@&quot;</samp>&rsquo; had been specified.
-The <code>PS3</code> prompt is then displayed and a line is read from the
-standard input.
+<code>select</code> then displays the <code>PS3</code>
+prompt and reads a line from the standard input.
If the line consists of a number corresponding to one of the displayed
words, then the value of <var>name</var> is set to that word.
If the line is empty, the words and prompt are displayed again.
-If <code>EOF</code> is read, the <code>select</code> command completes.
+If <code>EOF</code> is read, the <code>select</code> command completes and returns 1.
Any other value read causes <var>name</var> to be set to null.
The line read is saved in the variable <code>REPLY</code>.
</p>
@@ -1383,24 +1448,24 @@ done
</pre></div>
</dd>
-<dt><code>((&hellip;))</code></dt>
+<dt><span><code>((&hellip;))</code></span></dt>
<dd><div class="example">
<pre class="example">(( <var>expression</var> ))
</pre></div>
<p>The arithmetic <var>expression</var> is evaluated according to the rules
described below (see <a href="#Shell-Arithmetic">Shell Arithmetic</a>).
+The <var>expression</var> undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in <var>expression</var> are not treated specially
+are removed.
If the value of the expression is non-zero, the return status is 0;
-otherwise the return status is 1. This is exactly equivalent to
-</p><div class="example">
-<pre class="example">let &quot;<var>expression</var>&quot;
-</pre></div>
-<p>See <a href="#Bash-Builtins">Bash Builtins</a>, for a full description of the <code>let</code> builtin.
+otherwise the return status is 1.
</p>
+
</dd>
-<dt><code>[[&hellip;]]</code></dt>
-<dd><span id="index-_005b_005b"></span>
-<span id="index-_005d_005d"></span>
+<dt id='index-_005b_005b'><span><code>[[&hellip;]]</code><a href='#index-_005b_005b' class='copiable-anchor'> &para;</a></span></dt>
+<dd><span id="index-_005d_005d"></span>
<div class="example">
<pre class="example">[[ <var>expression</var> ]]
</pre></div>
@@ -1409,10 +1474,12 @@ otherwise the return status is 1. This is exactly equivalent to
the conditional expression <var>expression</var>.
Expressions are composed of the primaries described below in
<a href="#Bash-Conditional-Expressions">Bash Conditional Expressions</a>.
-Word splitting and filename expansion are not performed on the words
-between the <code>[[</code> and <code>]]</code>; tilde expansion, parameter and
+The words between the <code>[[</code> and <code>]]</code> do not undergo word splitting
+and filename expansion.
+The shell performs tilde expansion, parameter and
variable expansion, arithmetic expansion, command substitution, process
-substitution, and quote removal are performed.
+substitution, and quote removal on those words
+(the expansions that would occur if the words were enclosed in double quotes).
Conditional operators such as &lsquo;<samp>-f</samp>&rsquo; must be unquoted to be recognized
as primaries.
</p>
@@ -1430,78 +1497,110 @@ is enabled, the match is performed without regard to the case
of alphabetic characters.
The return value is 0 if the string matches (&lsquo;<samp>==</samp>&rsquo;) or does not
match (&lsquo;<samp>!=</samp>&rsquo;) the pattern, and 1 otherwise.
-Any part of the pattern may be quoted to force the quoted portion
-to be matched as a string.
+</p>
+<p>If you quote any part of the pattern,
+using any of the shell&rsquo;s quoting mechanisms,
+the quoted portion is matched literally.
+This means every character in the quoted portion matches itself,
+instead of having any special pattern matching meaning.
</p>
<p>An additional binary operator, &lsquo;<samp>=~</samp>&rsquo;, is available, with the same
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
+When you use &lsquo;<samp>=~</samp>&rsquo;, the string to the right of the operator is considered
+a <small>POSIX</small> extended regular expression pattern and matched accordingly
(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.
+The return value is 0 if the string matches the pattern, and 1 if it does not.
If the regular expression is syntactically incorrect, the conditional
-expression&rsquo;s return value is 2.
+expression returns 2.
If the <code>nocasematch</code> shell option
(see the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
is enabled, the match is performed without regard to the case
of alphabetic characters.
-Any part of the pattern may be quoted to force the quoted portion
-to be matched as a string.
-Bracket expressions in regular expressions must be treated carefully,
-since normal quoting characters lose their meanings between brackets.
+</p>
+<p>You can quote any part of the pattern
+to force the quoted portion to be matched literally
+instead of as a regular expression (see above).
If the pattern is stored in a shell variable, quoting the variable
-expansion forces the entire pattern to be matched as a string.
+expansion forces the entire pattern to be matched literally.
</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 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.
+If you want to force the pattern to match the entire string,
+anchor the pattern using the &lsquo;<samp>^</samp>&rsquo; and &lsquo;<samp>$</samp>&rsquo; regular expression
+operators.
</p>
<p>For example, the following will match a line
-(stored in the shell variable <var>line</var>)
+(stored in the shell variable <code>line</code>)
if there is a sequence of characters anywhere in the value consisting of
any number, including zero, of
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">
+immediately followed by 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></div>
-<p>That means values like &lsquo;<samp>aab</samp>&rsquo; and &lsquo;<samp> aaaaaab</samp>&rsquo; will match, as
-will a line containing a &lsquo;<samp>b</samp>&rsquo; anywhere in its value.
+<p>That means values for <code>line</code> like
+&lsquo;<samp>aab</samp>&rsquo;, &lsquo;<samp> aaaaaab</samp>&rsquo;, &lsquo;<samp>xaby</samp>&rsquo;, and &lsquo;<samp> ab</samp>&rsquo;
+will all match,
+as will a line containing a &lsquo;<samp>b</samp>&rsquo; anywhere in its value.
+</p>
+<p>If you want to match a character that&rsquo;s special to the regular expression
+grammar (&lsquo;<samp>^$|[]()\.*+?</samp>&rsquo;), it has to be quoted to remove its special
+meaning.
+This means that in the pattern &lsquo;<samp>xxx.txt</samp>&rsquo;, the &lsquo;<samp>.</samp>&rsquo; matches any
+character in the string (its usual regular expression meaning), but in the
+pattern &lsquo;<samp>&quot;xxx.txt&quot;</samp>&rsquo;, it can only match a literal &lsquo;<samp>.</samp>&rsquo;.
</p>
-<p>Storing the regular expression in a shell variable is often a useful
+<p>Likewise, if you want to include a character in your pattern that has a
+special meaning to the regular expression grammar, you must make sure it&rsquo;s
+not quoted.
+If you want to anchor a pattern at the beginning or end of the string,
+for instance, you cannot quote the &lsquo;<samp>^</samp>&rsquo; or &lsquo;<samp>$</samp>&rsquo;
+characters using any form of shell quoting.
+</p>
+<p>If you want to match &lsquo;<samp>initial string</samp>&rsquo; at the start of a line,
+the following will work:
+</p><div class="example">
+<pre class="example">[[ $line =~ ^&quot;initial string&quot; ]]
+</pre></div>
+<p>but this will not:
+</p><div class="example">
+<pre class="example">[[ $line =~ &quot;^initial string&quot; ]]
+</pre></div>
+<p>because in the second example the &lsquo;<samp>^</samp>&rsquo; is quoted and doesn&rsquo;t have its
+usual special meaning.
+</p>
+<p>It is sometimes difficult to specify a regular expression properly
+without using quotes, or to keep track of the quoting used by regular
+expressions while paying attention to
+shell quoting and the shell&rsquo;s quote removal.
+Storing the regular expression in a shell variable is often a useful
way to avoid problems with quoting characters that are special to the
shell.
-It is sometimes difficult to specify a regular expression literally
-without using quotes, or to keep track of the quoting used by regular
-expressions while paying attention to the shell&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">
+For example, the following is equivalent to the pattern used above:
+</p>
+<div class="example">
<pre class="example">pattern='[[:space:]]*(a)?b'
[[ $line =~ $pattern ]]
</pre></div>
-<p>If you want to match a character that&rsquo;s special to the regular expression
-grammar, it has to be quoted to remove its special meaning.
-This means that in the pattern &lsquo;<samp>xxx.txt</samp>&rsquo;, the &lsquo;<samp>.</samp>&rsquo; matches any
-character in the string (its usual regular expression meaning), but in the
-pattern &lsquo;<samp>&quot;xxx.txt&quot;</samp>&rsquo; it can only match a literal &lsquo;<samp>.</samp>&rsquo;.
-Shell programmers should take special care with backslashes, since backslashes
-are used both by the shell and regular expressions to remove the special
-meaning from the following character.
-The following two sets of commands are <em>not</em> equivalent:
-</p><div class="example">
+<p>Shell programmers should take special care with backslashes, since
+backslashes are used by both the shell and regular expressions to remove
+the special meaning from the following character.
+This means that after the shell&rsquo;s word expansions complete
+(see <a href="#Shell-Expansions">Shell Expansions</a>),
+any backslashes remaining in parts of the pattern
+that were originally not quoted can remove the
+special meaning of pattern characters.
+If any part of the pattern is quoted, the shell does its best to ensure that
+the regular expression treats those remaining backslashes as literal,
+if they appeared in a quoted portion.
+</p>
+<p>The following two sets of commands are <em>not</em> equivalent:
+</p>
+<div class="example">
<pre class="example">pattern='\.'
[[ . =~ $pattern ]]
@@ -1513,30 +1612,71 @@ The following two sets of commands are <em>not</em> equivalent:
<p>The first two matches will succeed, but the second two will not, because
in the second two the backslash will be part of the pattern to be matched.
-In the first two examples, the backslash removes the special meaning from
+In the first two examples, the pattern passed to the regular expression
+parser is &lsquo;<samp>\.</samp>&rsquo;. The backslash removes the special meaning from
&lsquo;<samp>.</samp>&rsquo;, so the literal &lsquo;<samp>.</samp>&rsquo; matches.
+In the second two examples, the pattern passed to the regular expression
+parser has the backslash quoted (e.g., &lsquo;<samp>\\\.</samp>&rsquo;), which will not match
+the string, since it does not contain a backslash.
If the string in the first examples were anything other than &lsquo;<samp>.</samp>&rsquo;, say
&lsquo;<samp>a</samp>&rsquo;, the pattern would not match, because the quoted &lsquo;<samp>.</samp>&rsquo; in the
pattern loses its special meaning of matching any single character.
</p>
+<p>Bracket expressions in regular expressions can be sources of errors as well,
+since characters that are normally special in regular expressions
+lose their special meanings between brackets.
+However, you can use bracket expressions to match special pattern characters
+without quoting them, so they are sometimes useful for this purpose.
+</p>
+<p>Though it might seem like a strange way to write it, the following pattern
+will match a &lsquo;<samp>.</samp>&rsquo; in the string:
+</p>
+<div class="example">
+<pre class="example">[[ . =~ [.] ]]
+</pre></div>
+
+<p>The shell performs any word expansions before passing the pattern
+to the regular expression functions,
+so you can assume that the shell&rsquo;s quoting takes precedence.
+As noted above, the regular expression parser will interpret any
+unquoted backslashes remaining in the pattern after shell expansion
+according to its own rules.
+The intention is to avoid making shell programmers quote things twice
+as much as possible, so shell quoting should be sufficient to quote
+special pattern characters where that&rsquo;s necessary.
+</p>
+<p>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 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>Bash sets
+<code>BASH_REMATCH</code>
+in the global scope; declaring it as a local variable will lead to
+unexpected results.
+</p>
<p>Expressions may be combined using the following operators, listed
in decreasing order of precedence:
</p>
<dl compact="compact">
-<dt><code>( <var>expression</var> )</code></dt>
+<dt><span><code>( <var>expression</var> )</code></span></dt>
<dd><p>Returns the value of <var>expression</var>.
This may be used to override the normal precedence of operators.
</p>
</dd>
-<dt><code>! <var>expression</var></code></dt>
+<dt><span><code>! <var>expression</var></code></span></dt>
<dd><p>True if <var>expression</var> is false.
</p>
</dd>
-<dt><code><var>expression1</var> &amp;&amp; <var>expression2</var></code></dt>
+<dt><span><code><var>expression1</var> &amp;&amp; <var>expression2</var></code></span></dt>
<dd><p>True if both <var>expression1</var> and <var>expression2</var> are true.
</p>
</dd>
-<dt><code><var>expression1</var> || <var>expression2</var></code></dt>
+<dt><span><code><var>expression1</var> || <var>expression2</var></code></span></dt>
<dd><p>True if either <var>expression1</var> or <var>expression2</var> is true.
</p></dd>
</dl>
@@ -1548,7 +1688,9 @@ value of the entire conditional expression.
</dl>
<hr>
-<span id="Command-Grouping"></span><div class="header">
+</div>
+<div class="subsubsection" id="Command-Grouping">
+<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>
@@ -1561,21 +1703,20 @@ to the entire command list. For example, the output of all the
commands in the list may be redirected to a single stream.
</p>
<dl compact="compact">
-<dt><code>()</code></dt>
+<dt><span><code>()</code></span></dt>
<dd><div class="example">
<pre class="example">( <var>list</var> )
</pre></div>
-<p>Placing a list of commands between parentheses causes a subshell
-environment to be created (see <a href="#Command-Execution-Environment">Command Execution Environment</a>), and each
-of the commands in <var>list</var> to be executed in that subshell. Since the
-<var>list</var> is executed in a subshell, variable assignments do not remain in
-effect after the subshell completes.
+<p>Placing a list of commands between parentheses forces the shell to create
+a subshell (see <a href="#Command-Execution-Environment">Command Execution Environment</a>), and each
+of the commands in <var>list</var> is executed in that subshell environment.
+Since the <var>list</var> is executed in a subshell, variable assignments do not
+remain in effect after the subshell completes.
</p>
</dd>
-<dt><code>{}</code></dt>
-<dd><span id="index-_007b"></span>
-<span id="index-_007d"></span>
+<dt id='index-_007b'><span><code>{}</code><a href='#index-_007b' class='copiable-anchor'> &para;</a></span></dt>
+<dd><span id="index-_007d"></span>
<div class="example">
<pre class="example">{ <var>list</var>; }
</pre></div>
@@ -1588,9 +1729,9 @@ The semicolon (or newline) following <var>list</var> is required.
<p>In addition to the creation of a subshell, there is a subtle difference
between these two constructs due to historical reasons. The braces
-are <code>reserved words</code>, so they must be separated from the <var>list</var>
+are reserved words, so they must be separated from the <var>list</var>
by <code>blank</code>s or other shell metacharacters.
-The parentheses are <code>operators</code>, and are
+The parentheses are operators, and are
recognized as separate tokens by the shell even if they are not separated
from the <var>list</var> by whitespace.
</p>
@@ -1598,7 +1739,10 @@ from the <var>list</var> by whitespace.
<var>list</var>.
</p>
<hr>
-<span id="Coprocesses"></span><div class="header">
+</div>
+</div>
+<div class="subsection" id="Coprocesses">
+<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>
@@ -1611,26 +1755,53 @@ A coprocess is executed asynchronously in a subshell, as if the command
had been terminated with the &lsquo;<samp>&amp;</samp>&rsquo; control operator, with a two-way pipe
established between the executing shell and the coprocess.
</p>
-<p>The format for a coprocess is:
-</p><div class="example">
+<p>The syntax for a coprocess is:
+</p>
+<div class="example">
<pre class="example">coproc [<var>NAME</var>] <var>command</var> [<var>redirections</var>]
</pre></div>
<p>This creates a coprocess named <var>NAME</var>.
-If <var>NAME</var> is not supplied, the default name is <var>COPROC</var>.
-<var>NAME</var> must not be supplied if <var>command</var> is a simple
-command (see <a href="#Simple-Commands">Simple Commands</a>); otherwise, it is interpreted as
-the first word of the simple command.
+<var>command</var> may be either a simple command (see <a href="#Simple-Commands">Simple Commands</a>)
+or a compound command (see <a href="#Compound-Commands">Compound Commands</a>).
+<var>NAME</var> is a shell variable name.
+If <var>NAME</var> is not supplied, the default name is <code>COPROC</code>.
+</p>
+<p>The recommended form to use for a coprocess is
+</p>
+<div class="example">
+<pre class="example">coproc <var>NAME</var> { <var>command</var>; }
+</pre></div>
+
+<p>This form is recommended because simple commands result in the coprocess
+always being named <code>COPROC</code>, and it is simpler to use and more complete
+than the other compound commands.
+</p>
+<p>There are other forms of coprocesses:
+</p>
+<div class="example">
+<pre class="example">coproc <var>NAME</var> <var>compound-command</var>
+coproc <var>compound-command</var>
+coproc <var>simple-command</var>
+</pre></div>
+
+<p>If <var>command</var> is a compound command, <var>NAME</var> is optional. The
+word following <code>coproc</code> determines whether that word is interpreted
+as a variable name: it is interpreted as <var>NAME</var> if it is not a
+reserved word that introduces a compound command.
+If <var>command</var> is a simple command, <var>NAME</var> is not allowed; this
+is to avoid confusion between <var>NAME</var> and the first word of the simple
+command.
</p>
<p>When the coprocess is executed, the shell creates an array variable
(see <a href="#Arrays">Arrays</a>)
-named <code>NAME</code> in the context of the executing shell.
+named <var>NAME</var> in the context of the executing shell.
The standard output of <var>command</var>
is connected via a pipe to a file descriptor in the executing shell,
-and that file descriptor is assigned to <code>NAME</code>[0].
+and that file descriptor is assigned to <var>NAME</var>[0].
The standard input of <var>command</var>
is connected via a pipe to a file descriptor in the executing shell,
-and that file descriptor is assigned to <code>NAME</code>[1].
+and that file descriptor is assigned to <var>NAME</var>[1].
This pipe is established before any redirections specified by the
command (see <a href="#Redirections">Redirections</a>).
The file descriptors can be utilized as arguments to shell commands
@@ -1639,7 +1810,7 @@ Other than those created to execute command and process substitutions,
the file descriptors are not available in subshells.
</p>
<p>The process ID of the shell spawned to execute the coprocess is
-available as the value of the variable <code>NAME</code>_PID.
+available as the value of the variable <code><var>NAME</var>_PID</code>.
The <code>wait</code>
builtin command may be used to wait for the coprocess to terminate.
</p>
@@ -1648,7 +1819,9 @@ the <code>coproc</code> command always returns success.
The return status of a coprocess is the exit status of <var>command</var>.
</p>
<hr>
-<span id="GNU-Parallel"></span><div class="header">
+</div>
+<div class="subsection" id="GNU-Parallel">
+<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>
@@ -1665,113 +1838,15 @@ Parallel provides shorthand references to many of the most common operations
the input source, and so on). Parallel can replace <code>xargs</code> or feed
commands from its input sources to several different instances of Bash.
</p>
-<p>For a complete description, refer to the GNU Parallel documentation. A few
-examples should provide a brief introduction to its use.
-</p>
-<p>For example, it is easy to replace <code>xargs</code> to gzip all html files in the
-current directory and its subdirectories:
-</p><div class="example">
-<pre class="example">find . -type f -name '*.html' -print | parallel gzip
-</pre></div>
-<p>If you need to protect special characters such as newlines in file names,
-use find&rsquo;s <samp>-print0</samp> option and parallel&rsquo;s <samp>-0</samp> option.
-</p>
-<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">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. <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">printf '%s\0' * | parallel -0 mv {} destdir
-</pre></div>
-
-<p>as alluded to above.
-</p>
-<p>This will run as many <code>mv</code> commands as there are files in the current
-directory.
-You can emulate a parallel <code>xargs</code> by adding the <samp>-X</samp> option:
-</p><div class="example">
-<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">
-<pre class="example"> while IFS= read -r x; do
- do-something1 &quot;$x&quot; &quot;config-$x&quot;
- do-something2 &lt; &quot;$x&quot;
- done &lt; file | process-output
-</pre></div>
-
-<p>with a more compact syntax reminiscent of lambdas:
-</p><div class="example">
-<pre class="example">cat list | parallel &quot;do-something1 {} config-{} ; do-something2 &lt; {}&quot; |
- process-output
-</pre></div>
-
-<p>Parallel provides a built-in mechanism to remove filename extensions, which
-lends itself to batch file transformations or renaming:
-</p><div class="example">
-<pre class="example">ls *.gz | parallel -j+0 &quot;zcat {} | bzip2 &gt;{.}.bz2 &amp;&amp; rm {}&quot;
-</pre></div>
-<p>This will recompress all files in the current directory with names ending
-in .gz using bzip2, running one job per CPU (-j+0) in parallel.
-(We use <code>ls</code> for brevity here; using <code>find</code> as above is more
-robust in the face of filenames containing unexpected characters.)
-Parallel can take arguments from the command line; the above can also be
-written as
-</p>
-<div class="example">
-<pre class="example">parallel &quot;zcat {} | bzip2 &gt;{.}.bz2 &amp;&amp; rm {}&quot; ::: *.gz
-</pre></div>
-
-<p>If a command generates output, you may want to preserve the input order in
-the output. For instance, the following command
-</p><div class="example">
-<pre class="example">{
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
-} | parallel traceroute
-</pre></div>
-<p>will display as output the traceroute invocation that finishes first.
-Adding the <samp>-k</samp> option
-</p><div class="example">
-<pre class="example">{
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
-} | parallel -k traceroute
-</pre></div>
-<p>will ensure that the output of <code>traceroute foss.org.my</code> is displayed first.
-</p>
-<p>Finally, Parallel can be used to run a sequence of shell commands in parallel,
-similar to &lsquo;<samp>cat file | bash</samp>&rsquo;.
-It is not uncommon to take a list of filenames, create a series of shell
-commands to operate on them, and feed that list of commands to a shell.
-Parallel can speed this up. Assuming that <samp>file</samp> contains a list of
-shell commands, one per line,
-</p>
-<div class="example">
-<pre class="example">parallel -j 10 &lt; file
-</pre></div>
-
-<p>will evaluate the commands using the shell (since no explicit command is
-supplied as an argument), in blocks of ten shell jobs at a time.
+<p>For a complete description, refer to the GNU Parallel documentation, which
+is available at
+<a href="https://www.gnu.org/software/parallel/parallel_tutorial.html">https://www.gnu.org/software/parallel/parallel_tutorial.html</a>.
</p>
<hr>
-<span id="Shell-Functions"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Shell-Functions">
+<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>
@@ -1803,16 +1878,16 @@ shell context; no new process is created to interpret them.
word <code>function</code> is optional.
If the <code>function</code> reserved
word is supplied, the parentheses are optional.
-The <var>body</var> of the function is the compound command
+The <em>body</em> of the function is the compound command
<var>compound-command</var> (see <a href="#Compound-Commands">Compound Commands</a>).
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.
+may be any compound command listed above.
+If the <code>function</code> reserved word is used, but the
+parentheses are not supplied, the braces are recommended.
<var>compound-command</var> is executed whenever <var>fname</var> is specified as the
-name of a command.
+name of a simple command.
When the shell is in <small>POSIX</small> mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>),
-<var>fname</var> must be a valid shell <var>name</var> and
+<var>fname</var> must be a valid shell name 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
@@ -1879,17 +1954,29 @@ return status is the exit status of the last command executed
before the <code>return</code>.
</p>
<p>Variables local to the function may be declared with the
-<code>local</code> builtin. These variables are visible only to
+<code>local</code> builtin (<em>local variables</em>).
+Ordinarily, variables and their values
+are shared between a function and its caller.
+These variables are visible only to
the function and the commands it invokes. This is particularly
important when a shell function calls other functions.
</p>
+<p>In the following description, the <em>current scope</em> is a currently-
+executing function.
+Previous scopes consist of that function&rsquo;s caller and so on,
+back to the &quot;global&quot; scope, where the shell is not executing
+any shell function.
+Consequently, a local variable at the current local scope is a variable
+declared using the <code>local</code> or <code>declare</code> builtins in the
+function that is currently executing.
+</p>
<p>Local variables &quot;shadow&quot; variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
</p>
-<p>The shell uses <var>dynamic scoping</var> to control a variable&rsquo;s visibility
+<p>The shell uses <em>dynamic scoping</em> to control a variable&rsquo;s visibility
within functions.
With dynamic scoping, visible variables and their values
are a result of the sequence of function calls that caused execution
@@ -1901,11 +1988,11 @@ This is also the value that a local variable
declaration &quot;shadows&quot;, and the value that is restored when the function
returns.
</p>
-<p>For example, if a variable <var>var</var> is declared as local in function
-<var>func1</var>, and <var>func1</var> calls another function <var>func2</var>,
-references to <var>var</var> made from within <var>func2</var> will resolve to the
-local variable <var>var</var> from <var>func1</var>, shadowing any global variable
-named <var>var</var>.
+<p>For example, if a variable <code>var</code> is declared as local in function
+<code>func1</code>, and <code>func1</code> calls another function <code>func2</code>,
+references to <code>var</code> made from within <code>func2</code> will resolve to the
+local variable <code>var</code> from <code>func1</code>, shadowing any global variable
+named <code>var</code>.
</p>
<p>The following script demonstrates this behavior.
When executed, the script displays
@@ -1935,20 +2022,23 @@ variable is local to the current scope, <code>unset</code> will unset it;
otherwise the unset will refer to the variable found in any calling scope
as described above.
If a variable at the current local scope is unset, it will remain so
+(appearing as unset)
until it is reset in that scope or until the function returns.
Once the function returns, any instance of the variable at a previous
scope will become visible.
If the unset acts on a variable at a previous scope, any instance of a
-variable with that name that had been shadowed will become visible.
+variable with that name that had been shadowed will become visible
+(see below how <code>localvar_unset</code>shell option changes this behavior).
</p>
<p>Function names and definitions may be listed with the
<samp>-f</samp> option to the <code>declare</code> (<code>typeset</code>)
-builtin command (see <a href="#Bash-Builtins">Bash Builtins</a>).
+builtin command (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
The <samp>-F</samp> option to <code>declare</code> or <code>typeset</code>
will list the function names only
(and optionally the source file and line number, if the <code>extdebug</code>
shell option is enabled).
-Functions may be exported so that subshells
+Functions may be exported so that child shell processes
+(those created when executing a separate shell invocation)
automatically have them defined with the
<samp>-f</samp> option to the <code>export</code> builtin
(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
@@ -1959,7 +2049,9 @@ function call stack and restrict the number of function invocations.
By default, no limit is placed on the number of recursive calls.
</p>
<hr>
-<span id="Shell-Parameters"></span><div class="header">
+</div>
+<div class="section" id="Shell-Parameters">
+<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>
@@ -1968,20 +2060,14 @@ Next: <a href="#Shell-Expansions" accesskey="n" rel="next">Shell Expansions</a>,
<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.
-</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.
-</td></tr>
-</table>
-<p>A <var>parameter</var> is an entity that stores values.
+<p>A <em>parameter</em> is an entity that stores values.
It can be a <code>name</code>, a number, or one of the special characters
listed below.
-A <var>variable</var> is a parameter denoted by a <code>name</code>.
-A variable has a <var>value</var> and zero or more <var>attributes</var>.
+A <em>variable</em> is a parameter denoted by a <code>name</code>.
+A variable has a <code>value</code> and zero or more <code>attributes</code>.
Attributes are assigned using the <code>declare</code> builtin command
-(see the description of the <code>declare</code> builtin in <a href="#Bash-Builtins">Bash Builtins</a>).
+(see the description of the <code>declare</code> builtin in <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
<p>A parameter is set if it has been assigned a value. The null string is
a valid value. Once a variable is set, it may be unset only by using
@@ -1995,17 +2081,16 @@ the <code>unset</code> builtin command.
is not given, the variable is assigned the null string. All
<var>value</var>s undergo tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote
-removal (detailed below). If the variable has its <code>integer</code>
+removal (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
+If the variable has its <code>integer</code>
attribute set, then <var>value</var>
is evaluated as an arithmetic expression even if the <code>$((&hellip;))</code>
expansion is not used (see <a href="#Arithmetic-Expansion">Arithmetic Expansion</a>).
-Word splitting is not performed, with the exception
-of <code>&quot;$@&quot;</code> as explained below.
-Filename expansion is not performed.
+Word splitting and filename expansion are not performed.
Assignment statements may also appear as arguments to the
<code>alias</code>,
<code>declare</code>, <code>typeset</code>, <code>export</code>, <code>readonly</code>,
-and <code>local</code> builtin commands (<var>declaration</var> commands).
+and <code>local</code> builtin commands (<em>declaration</em> commands).
When in <small>POSIX</small> mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>), these builtins may appear
in a command after one or more instances of the <code>command</code> builtin
and retain these assignment statement properties.
@@ -2015,8 +2100,8 @@ to a shell variable or array index (see <a href="#Arrays">Arrays</a>), the &lsqu
operator can be used to
append to or add to the variable&rsquo;s previous value.
This includes arguments to builtin commands such as <code>declare</code> that
-accept assignment statements (<var>declaration</var> commands).
-When &lsquo;<samp>+=</samp>&rsquo; is applied to a variable for which the <var>integer</var> attribute
+accept assignment statements (declaration commands).
+When &lsquo;<samp>+=</samp>&rsquo; is applied to a variable for which the <code>integer</code> attribute
has been set, <var>value</var> is evaluated as an arithmetic expression and
added to the variable&rsquo;s current value, which is also evaluated.
When &lsquo;<samp>+=</samp>&rsquo; is applied to an array variable using compound assignment
@@ -2028,10 +2113,10 @@ in an associative array.
When applied to a string-valued variable, <var>value</var> is expanded and
appended to the variable&rsquo;s value.
</p>
-<p>A variable can be assigned the <var>nameref</var> attribute using the
+<p>A variable can be assigned the <code>nameref</code> attribute using the
<samp>-n</samp> option to the <code>declare</code> or <code>local</code> builtin commands
-(see <a href="#Bash-Builtins">Bash Builtins</a>)
-to create a <var>nameref</var>, or a reference to another variable.
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>)
+to create a <em>nameref</em>, or a reference to another variable.
This allows variables to be manipulated indirectly.
Whenever the nameref variable is referenced, assigned to, unset, or has
its attributes modified (other than using or changing the nameref
@@ -2045,9 +2130,9 @@ argument, running
</p><div class="example">
<pre class="example">declare -n ref=$1
</pre></div>
-<p>inside the function creates a nameref variable <var>ref</var> whose value is
+<p>inside the function creates a nameref variable <code>ref</code> whose value is
the variable name passed as the first argument.
-References and assignments to <var>ref</var>, and changes to its attributes,
+References and assignments to <code>ref</code>, and changes to its attributes,
are treated as references, assignments, and attribute modifications
to the variable whose name was passed as <code>$1</code>.
</p>
@@ -2063,15 +2148,20 @@ Namerefs can be unset using the <samp>-n</samp> option to the <code>unset</code>
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>
+<ul class="section-toc">
+<li><a href="#Positional-Parameters" accesskey="1">Positional Parameters</a></li>
+<li><a href="#Special-Parameters" accesskey="2">Special Parameters</a></li>
+</ul>
<hr>
-<span id="Positional-Parameters"></span><div class="header">
+<div class="subsection" id="Positional-Parameters">
+<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>
<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
+<p>A <em>positional parameter</em> is a parameter denoted by one or more
digits, other than the single digit <code>0</code>. Positional parameters are
assigned from the shell&rsquo;s arguments when it is invoked,
and may be reassigned using the <code>set</code> builtin command.
@@ -2088,7 +2178,9 @@ temporarily replaced when a shell function is executed
digit is expanded, it must be enclosed in braces.
</p>
<hr>
-<span id="Special-Parameters"></span><div class="header">
+</div>
+<div class="subsection" id="Special-Parameters">
+<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>
@@ -2099,9 +2191,7 @@ Previous: <a href="#Positional-Parameters" accesskey="p" rel="prev">Positional P
only be referenced; assignment to them is not allowed.
</p>
<dl compact="compact">
-<dt><code>*</code>
-<span id="index-_002a"></span>
-</dt>
+<dt id='index-_002a'><span><code>*</code><a href='#index-_002a' class='copiable-anchor'> &para;</a></span></dt>
<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
@@ -2119,9 +2209,7 @@ If <code>IFS</code> is null, the parameters are joined without intervening
separators.
</p>
</dd>
-<dt><code>@</code>
-<span id="index-_0040"></span>
-</dt>
+<dt id='index-_0040'><span><code>@</code><a href='#index-_0040' class='copiable-anchor'> &para;</a></span></dt>
<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
@@ -2144,24 +2232,18 @@ When there are no positional parameters, <code>&quot;$@&quot;</code> and
expand to nothing (i.e., they are removed).
</p>
</dd>
-<dt><code>#</code>
-<span id="index-_0023"></span>
-</dt>
+<dt id='index-_0023'><span><code>#</code><a href='#index-_0023' class='copiable-anchor'> &para;</a></span></dt>
<dd><span id="index-_0024_0023"></span>
<p>($#) Expands to the number of positional parameters in decimal.
</p>
</dd>
-<dt><code>?</code>
-<span id="index-_003f"></span>
-</dt>
+<dt id='index-_003f'><span><code>?</code><a href='#index-_003f' class='copiable-anchor'> &para;</a></span></dt>
<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>
-<span id="index-_002d"></span>
-</dt>
+<dt id='index-_002d'><span><code>-</code><a href='#index-_002d' class='copiable-anchor'> &para;</a></span></dt>
<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>
@@ -2169,26 +2251,20 @@ builtin command, or those set by the shell itself
(such as the <samp>-i</samp> option).
</p>
</dd>
-<dt><code>$</code>
-<span id="index-_0024"></span>
-</dt>
+<dt id='index-_0024'><span><code>$</code><a href='#index-_0024' class='copiable-anchor'> &para;</a></span></dt>
<dd><span id="index-_0024_0024"></span>
-<p>($$) Expands to the process <small>ID</small> of the shell. In a <code>()</code> subshell, it
+<p>($$) Expands to the process <small>ID</small> of the shell. In a subshell, it
expands to the process <small>ID</small> of the invoking shell, not the subshell.
</p>
</dd>
-<dt><code>!</code>
-<span id="index-_0021-1"></span>
-</dt>
+<dt id='index-_0021-1'><span><code>!</code><a href='#index-_0021-1' class='copiable-anchor'> &para;</a></span></dt>
<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>
-<span id="index-0"></span>
-</dt>
+<dt id='index-0'><span><code>0</code><a href='#index-0' class='copiable-anchor'> &para;</a></span></dt>
<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
@@ -2201,7 +2277,10 @@ to the filename used to invoke Bash, as given by argument zero.
</dl>
<hr>
-<span id="Shell-Expansions"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Shell-Expansions">
+<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>
@@ -2221,29 +2300,6 @@ Next: <a href="#Redirections" accesskey="n" rel="next">Redirections</a>, Previou
</li><li> filename expansion
</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.
-</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.
-</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.
-</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.
-</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.
-</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
- 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
- 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.
-</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
- words.
-</td></tr>
-</table>
<p>The order of expansions is:
brace expansion;
@@ -2253,14 +2309,14 @@ word splitting;
and filename expansion.
</p>
<p>On systems that can support it, there is an additional expansion
-available: <var>process substitution</var>.
+available: <em>process substitution</em>.
This is performed at the
same time as tilde, parameter, variable, and arithmetic expansion and
command substitution.
</p>
<p>After these expansions are performed, quote characters present in the
original word are removed unless they have been quoted themselves
-(<var>quote removal</var>).
+(<em>quote removal</em>).
</p>
<p>Only brace expansion, word splitting, and filename expansion
can increase the number of words of the expansion; other expansions
@@ -2273,8 +2329,20 @@ The only exceptions to this are the expansions of
<p>After all expansions, <code>quote removal</code> (see <a href="#Quote-Removal">Quote Removal</a>)
is performed.
</p>
+<ul class="section-toc">
+<li><a href="#Brace-Expansion" accesskey="1">Brace Expansion</a></li>
+<li><a href="#Tilde-Expansion" accesskey="2">Tilde Expansion</a></li>
+<li><a href="#Shell-Parameter-Expansion" accesskey="3">Shell Parameter Expansion</a></li>
+<li><a href="#Command-Substitution" accesskey="4">Command Substitution</a></li>
+<li><a href="#Arithmetic-Expansion" accesskey="5">Arithmetic Expansion</a></li>
+<li><a href="#Process-Substitution" accesskey="6">Process Substitution</a></li>
+<li><a href="#Word-Splitting" accesskey="7">Word Splitting</a></li>
+<li><a href="#Filename-Expansion" accesskey="8">Filename Expansion</a></li>
+<li><a href="#Quote-Removal" accesskey="9">Quote Removal</a></li>
+</ul>
<hr>
-<span id="Brace-Expansion"></span><div class="header">
+<div class="subsection" id="Brace-Expansion">
+<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>
@@ -2284,7 +2352,7 @@ Next: <a href="#Tilde-Expansion" accesskey="n" rel="next">Tilde Expansion</a>, U
<p>Brace expansion is a mechanism by which arbitrary strings may be generated.
This mechanism is similar to
-<var>filename expansion</var> (see <a href="#Filename-Expansion">Filename Expansion</a>),
+<em>filename expansion</em> (see <a href="#Filename-Expansion">Filename Expansion</a>),
but the filenames generated need not exist.
Patterns to be brace expanded take the form of an optional <var>preamble</var>,
followed by either a series of comma-separated strings or a sequence expression
@@ -2304,7 +2372,7 @@ ade ace abe
</pre></div>
<p>A sequence expression takes the form <code>{<var>x</var>..<var>y</var>[..<var>incr</var>]}</code>,
-where <var>x</var> and <var>y</var> are either integers or single characters,
+where <var>x</var> and <var>y</var> are either integers or letters,
and <var>incr</var>, an optional increment, is an integer.
When integers are supplied, the expression expands to each number between
<var>x</var> and <var>y</var>, inclusive.
@@ -2313,10 +2381,11 @@ same width.
When either <var>x</var> or <var>y</var> begins with a zero, the shell
attempts to force all generated terms to contain the same number of digits,
zero-padding where necessary.
-When characters are supplied, the expression expands to each character
+When letters are supplied, the expression expands to each character
lexicographically between <var>x</var> and <var>y</var>, inclusive,
using the default C locale.
-Note that both <var>x</var> and <var>y</var> must be of the same type.
+Note that both <var>x</var> and <var>y</var> must be of the same type
+(integer or letter).
When the increment is supplied, it is used as the difference between
each term. The default increment is 1 or -1 as appropriate.
</p>
@@ -2349,7 +2418,9 @@ above example:
</pre></div>
<hr>
-<span id="Tilde-Expansion"></span><div class="header">
+</div>
+<div class="subsection" id="Tilde-Expansion">
+<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>
@@ -2359,10 +2430,10 @@ Next: <a href="#Shell-Parameter-Expansion" accesskey="n" rel="next">Shell Parame
<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,
-if there is no unquoted slash) are considered a <var>tilde-prefix</var>.
+if there is no unquoted slash) are considered a <em>tilde-prefix</em>.
If none of the characters in the tilde-prefix are quoted, the
characters in the tilde-prefix following the tilde are treated as a
-possible <var>login name</var>.
+possible <em>login name</em>.
If this login name is the null string, the tilde is replaced with the
value of the <code>HOME</code> shell variable.
If <code>HOME</code> is unset, the home directory of the user executing the
@@ -2397,35 +2468,35 @@ and the shell assigns the expanded value.
<p>The following table shows how Bash treats unquoted tilde-prefixes:
</p>
<dl compact="compact">
-<dt><code>~</code></dt>
+<dt><span><code>~</code></span></dt>
<dd><p>The value of <code>$HOME</code>
</p></dd>
-<dt><code>~/foo</code></dt>
+<dt><span><code>~/foo</code></span></dt>
<dd><p><samp>$HOME/foo</samp>
</p>
</dd>
-<dt><code>~fred/foo</code></dt>
+<dt><span><code>~fred/foo</code></span></dt>
<dd><p>The subdirectory <code>foo</code> of the home directory of the user
<code>fred</code>
</p>
</dd>
-<dt><code>~+/foo</code></dt>
+<dt><span><code>~+/foo</code></span></dt>
<dd><p><samp>$PWD/foo</samp>
</p>
</dd>
-<dt><code>~-/foo</code></dt>
+<dt><span><code>~-/foo</code></span></dt>
<dd><p><samp>${OLDPWD-'~-'}/foo</samp>
</p>
</dd>
-<dt><code>~<var>N</var></code></dt>
+<dt><span><code>~<var>N</var></code></span></dt>
<dd><p>The string that would be displayed by &lsquo;<samp>dirs +<var>N</var></samp>&rsquo;
</p>
</dd>
-<dt><code>~+<var>N</var></code></dt>
+<dt><span><code>~+<var>N</var></code></span></dt>
<dd><p>The string that would be displayed by &lsquo;<samp>dirs +<var>N</var></samp>&rsquo;
</p>
</dd>
-<dt><code>~-<var>N</var></code></dt>
+<dt><span><code>~-<var>N</var></code></span></dt>
<dd><p>The string that would be displayed by &lsquo;<samp>dirs -<var>N</var></samp>&rsquo;
</p></dd>
</dl>
@@ -2433,11 +2504,13 @@ and the shell assigns the expanded value.
<p>Bash also performs tilde expansion on words satisfying the conditions of
variable assignments (see <a href="#Shell-Parameters">Shell Parameters</a>)
when they appear as arguments to simple commands.
-Bash does not do this, except for the <var>declaration</var> commands listed
+Bash does not do this, except for the declaration commands listed
above, when in <small>POSIX</small> mode.
</p>
<hr>
-<span id="Shell-Parameter-Expansion"></span><div class="header">
+</div>
+<div class="subsection" id="Shell-Parameter-Expansion">
+<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>
@@ -2467,7 +2540,7 @@ or when <var>parameter</var> is followed by a character that is not to be
interpreted as part of its name.
</p>
<p>If the first character of <var>parameter</var> is an exclamation point (!),
-and <var>parameter</var> is not a <var>nameref</var>,
+and <var>parameter</var> is not a nameref,
it introduces a level of indirection.
Bash uses the value formed by expanding the rest of
<var>parameter</var> as the new <var>parameter</var>; this is then
@@ -2496,13 +2569,19 @@ the operator tests for both <var>parameter</var>&rsquo;s existence and that its
is not null; if the colon is omitted, the operator tests only for existence.
</p>
<dl compact="compact">
-<dt><code>${<var>parameter</var>:-<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:-<var>word</var>}</code></span></dt>
<dd><p>If <var>parameter</var> is unset or null, the expansion of
<var>word</var> is substituted. Otherwise, the value of
<var>parameter</var> is substituted.
</p>
+<div class="example">
+<pre class="example">$ v=123
+$ echo ${v-unset}
+123
+</pre></div>
+
</dd>
-<dt><code>${<var>parameter</var>:=<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:=<var>word</var>}</code></span></dt>
<dd><p>If <var>parameter</var>
is unset or null, the expansion of <var>word</var>
is assigned to <var>parameter</var>.
@@ -2510,8 +2589,15 @@ The value of <var>parameter</var> is then substituted.
Positional parameters and special parameters may not be assigned to
in this way.
</p>
+<div class="example">
+<pre class="example">$ var=
+$ : ${var:=DEFAULT}
+$ echo $var
+DEFAULT
+</pre></div>
+
</dd>
-<dt><code>${<var>parameter</var>:?<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:?<var>word</var>}</code></span></dt>
<dd><p>If <var>parameter</var>
is null or unset, the expansion of <var>word</var> (or a message
to that effect if <var>word</var>
@@ -2519,19 +2605,31 @@ is not present) is written to the standard error and the shell, if it
is not interactive, exits. Otherwise, the value of <var>parameter</var> is
substituted.
</p>
+<div class="example">
+<pre class="example">$ var=
+$ : ${var:?var is unset or null}
+bash: var: var is unset or null
+</pre></div>
+
</dd>
-<dt><code>${<var>parameter</var>:+<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:+<var>word</var>}</code></span></dt>
<dd><p>If <var>parameter</var>
is null or unset, nothing is substituted, otherwise the expansion of
<var>word</var> is substituted.
</p>
+<div class="example">
+<pre class="example">$ var=123
+$ echo ${var:+var is set and not null}
+var is set and not null
+</pre></div>
+
</dd>
-<dt><code>${<var>parameter</var>:<var>offset</var>}</code></dt>
-<dt><code>${<var>parameter</var>:<var>offset</var>:<var>length</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:<var>offset</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>:<var>offset</var>:<var>length</var>}</code></span></dt>
<dd><p>This is referred to as Substring Expansion.
It expands to up to <var>length</var> characters of the value of <var>parameter</var>
starting at the character specified by <var>offset</var>.
-If <var>parameter</var> is &lsquo;<samp>@</samp>&rsquo;, an indexed array subscripted by
+If <var>parameter</var> is &lsquo;<samp>@</samp>&rsquo; or &lsquo;<samp>*</samp>&rsquo;, an indexed array subscripted by
&lsquo;<samp>@</samp>&rsquo; or &lsquo;<samp>*</samp>&rsquo;, or an associative array name, the results differ as
described below.
If <var>length</var> is omitted, it expands to the substring of the value of
@@ -2606,8 +2704,8 @@ bc
$ echo ${array[0]: -7:-2}
bcdef
</pre>
-<p>If <var>parameter</var> is &lsquo;<samp>@</samp>&rsquo;, the result is <var>length</var> positional
-parameters beginning at <var>offset</var>.
+<p>If <var>parameter</var> is &lsquo;<samp>@</samp>&rsquo; or &lsquo;<samp>*</samp>&rsquo;, the result is <var>length</var>
+positional parameters beginning at <var>offset</var>.
A negative <var>offset</var> is taken relative to one greater than the greatest
positional parameter, so an offset of -1 evaluates to the last positional
parameter.
@@ -2669,16 +2767,16 @@ If <var>offset</var> is 0, and the positional parameters are used, <code>$0</cod
prefixed to the list.
</p>
</dd>
-<dt><code>${!<var>prefix</var>*}</code></dt>
-<dt><code>${!<var>prefix</var>@}</code></dt>
+<dt><span><code>${!<var>prefix</var>*}</code></span></dt>
+<dt><span><code>${!<var>prefix</var>@}</code></span></dt>
<dd><p>Expands to the names of variables whose names begin with <var>prefix</var>,
separated by the first character of the <code>IFS</code> special variable.
When &lsquo;<samp>@</samp>&rsquo; is used and the expansion appears within double quotes, each
variable name expands to a separate word.
</p>
</dd>
-<dt><code>${!<var>name</var>[@]}</code></dt>
-<dt><code>${!<var>name</var>[*]}</code></dt>
+<dt><span><code>${!<var>name</var>[@]}</code></span></dt>
+<dt><span><code>${!<var>name</var>[*]}</code></span></dt>
<dd><p>If <var>name</var> is an array variable, expands to the list of array indices
(keys) assigned in <var>name</var>.
If <var>name</var> is not an array, expands to 0 if <var>name</var> is set and null
@@ -2687,7 +2785,7 @@ When &lsquo;<samp>@</samp>&rsquo; is used and the expansion appears within doubl
key expands to a separate word.
</p>
</dd>
-<dt><code>${#<var>parameter</var>}</code></dt>
+<dt><span><code>${#<var>parameter</var>}</code></span></dt>
<dd><p>The length in characters of the expanded value of <var>parameter</var> is
substituted.
If <var>parameter</var> is &lsquo;<samp>*</samp>&rsquo; or &lsquo;<samp>@</samp>&rsquo;, the value substituted
@@ -2701,8 +2799,8 @@ interpreted as relative to one greater than the maximum index of
array, and an index of -1 references the last element.
</p>
</dd>
-<dt><code>${<var>parameter</var>#<var>word</var>}</code></dt>
-<dt><code>${<var>parameter</var>##<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>#<var>word</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>##<var>word</var>}</code></span></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
@@ -2719,8 +2817,8 @@ the pattern removal operation is applied to each member of the
array in turn, and the expansion is the resultant list.
</p>
</dd>
-<dt><code>${<var>parameter</var>%<var>word</var>}</code></dt>
-<dt><code>${<var>parameter</var>%%<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>%<var>word</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>%%<var>word</var>}</code></span></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>).
@@ -2737,23 +2835,99 @@ the pattern removal operation is applied to each member of the
array in turn, and the expansion is the resultant list.
</p>
</dd>
-<dt><code>${<var>parameter</var>/<var>pattern</var>/<var>string</var>}</code></dt>
-<dd>
-<p>The <var>pattern</var> is expanded to produce a pattern just as in
+<dt><span><code>${<var>parameter</var>/<var>pattern</var>/<var>string</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>//<var>pattern</var>/<var>string</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>/#<var>pattern</var>/<var>string</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>/%<var>pattern</var>/<var>string</var>}</code></span></dt>
+<dd><p>The <var>pattern</var> is expanded to produce a pattern just as in
filename expansion.
<var>Parameter</var> is expanded and the longest match of <var>pattern</var>
against its value is replaced with <var>string</var>.
+<var>string</var> undergoes tilde expansion, parameter and variable expansion,
+arithmetic expansion, command and process substitution, and quote removal.
The match is performed according to the rules described below
(see <a href="#Pattern-Matching">Pattern Matching</a>).
-If <var>pattern</var> begins with &lsquo;<samp>/</samp>&rsquo;, all matches of <var>pattern</var> are
-replaced with <var>string</var>. Normally only the first match is replaced.
-If <var>pattern</var> begins with &lsquo;<samp>#</samp>&rsquo;, it must match at the beginning
-of the expanded value of <var>parameter</var>.
-If <var>pattern</var> begins with &lsquo;<samp>%</samp>&rsquo;, it must match at the end
-of the expanded value of <var>parameter</var>.
-If <var>string</var> is null, matches of <var>pattern</var> are deleted
-and the <code>/</code> following <var>pattern</var> may be omitted.
-If the <code>nocasematch</code> shell option
+</p>
+<p>In the first form above, only the first match is replaced.
+If there are two slashes separating <var>parameter</var> and <var>pattern</var>
+(the second form above), all matches of <var>pattern</var> are
+replaced with <var>string</var>.
+If <var>pattern</var> is preceded by &lsquo;<samp>#</samp>&rsquo; (the third form above),
+it must match at the beginning of the expanded value of <var>parameter</var>.
+If <var>pattern</var> is preceded by &lsquo;<samp>%</samp>&rsquo; (the fourth form above),
+it must match at the end of the expanded value of <var>parameter</var>.
+If the expansion of <var>string</var> is null,
+matches of <var>pattern</var> are deleted.
+If <var>string</var> is null,
+matches of <var>pattern</var> are deleted
+and the &lsquo;<samp>/</samp>&rsquo; following <var>pattern</var> may be omitted.
+</p>
+<p>If the <code>patsub_replacement</code> shell option is enabled using <code>shopt</code>,
+any unquoted instances of &lsquo;<samp>&amp;</samp>&rsquo; in <var>string</var> are replaced with the
+matching portion of <var>pattern</var>.
+This is intended to duplicate a common <code>sed</code> idiom.
+</p>
+<p>Quoting any part of <var>string</var> inhibits replacement in the
+expansion of the quoted portion, including replacement strings stored
+in shell variables.
+Backslash will escape &lsquo;<samp>&amp;</samp>&rsquo; in <var>string</var>; the backslash is removed
+in order to permit a literal &lsquo;<samp>&amp;</samp>&rsquo; in the replacement string.
+Users should take care if <var>string</var> is double-quoted to avoid
+unwanted interactions between the backslash and double-quoting, since
+backslash has special meaning within double quotes.
+Pattern substitution performs the check for unquoted &lsquo;<samp>&amp;</samp>&rsquo; after
+expanding <var>string</var>,
+so users should ensure to properly quote any occurrences of &lsquo;<samp>&amp;</samp>&rsquo;
+they want to be taken literally in the replacement
+and ensure any instances of &lsquo;<samp>&amp;</samp>&rsquo; they want to be replaced are unquoted.
+</p>
+<p>For instance,
+</p>
+<div class="example">
+<pre class="example">var=abcdef
+rep='&amp; '
+echo ${var/abc/&amp; }
+echo &quot;${var/abc/&amp; }&quot;
+echo ${var/abc/$rep}
+echo &quot;${var/abc/$rep}&quot;
+</pre></div>
+
+<p>will display four lines of &quot;abc def&quot;, while
+</p>
+<div class="example">
+<pre class="example">var=abcdef
+rep='&amp; '
+echo ${var/abc/\&amp; }
+echo &quot;${var/abc/\&amp; }&quot;
+echo ${var/abc/&quot;&amp; &quot;}
+echo ${var/abc/&quot;$rep&quot;}
+</pre></div>
+
+<p>will display four lines of &quot;&amp; def&quot;.
+Like the pattern removal operators, double quotes surrounding the
+replacement string quote the expanded characters, while double quotes
+enclosing the entire parameter substitution do not, since
+the expansion is performed in a
+context that doesn&rsquo;t take any enclosing double quotes into account.
+</p>
+<p>Since backslash can escape &lsquo;<samp>&amp;</samp>&rsquo;, it can also escape a backslash in
+the replacement string.
+This means that &lsquo;<samp>\\</samp>&rsquo; will insert a literal
+backslash into the replacement, so these two <code>echo</code> commands
+</p>
+<div class="example">
+<pre class="example">var=abcdef
+rep='\\&amp;xyz'
+echo ${var/abc/\\&amp;xyz}
+echo ${var/abc/$rep}
+</pre></div>
+
+<p>will both output &lsquo;<samp>\abcxyzdef</samp>&rsquo;.
+</p>
+<p>It should rarely be necessary to enclose only <var>string</var> in double
+quotes.
+</p>
+<p>If the <code>nocasematch</code> shell option
(see the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
is enabled, the match is performed without regard to the case
of alphabetic characters.
@@ -2766,17 +2940,18 @@ the substitution operation is applied to each member of the
array in turn, and the expansion is the resultant list.
</p>
</dd>
-<dt><code>${<var>parameter</var>^<var>pattern</var>}</code></dt>
-<dt><code>${<var>parameter</var>^^<var>pattern</var>}</code></dt>
-<dt><code>${<var>parameter</var>,<var>pattern</var>}</code></dt>
-<dt><code>${<var>parameter</var>,,<var>pattern</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>^<var>pattern</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>^^<var>pattern</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>,<var>pattern</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>,,<var>pattern</var>}</code></span></dt>
<dd><p>This expansion modifies the case of alphabetic characters in <var>parameter</var>.
The <var>pattern</var> is expanded to produce a pattern just as in
filename expansion.
Each character in the expanded value of <var>parameter</var> is tested against
<var>pattern</var>, and, if it matches the pattern, its case is converted.
The pattern should not attempt to match more than one character.
-The &lsquo;<samp>^</samp>&rsquo; operator converts lowercase letters matching <var>pattern</var>
+</p>
+<p>The &lsquo;<samp>^</samp>&rsquo; operator converts lowercase letters matching <var>pattern</var>
to uppercase; the &lsquo;<samp>,</samp>&rsquo; operator converts matching uppercase letters
to lowercase.
The &lsquo;<samp>^^</samp>&rsquo; and &lsquo;<samp>,,</samp>&rsquo; expansions convert each matched character in the
@@ -2784,7 +2959,8 @@ expanded value; the &lsquo;<samp>^</samp>&rsquo; and &lsquo;<samp>,</samp>&rsquo
the first character in the expanded value.
If <var>pattern</var> is omitted, it is treated like a &lsquo;<samp>?</samp>&rsquo;, which matches
every character.
-If <var>parameter</var> is &lsquo;<samp>@</samp>&rsquo; or &lsquo;<samp>*</samp>&rsquo;,
+</p>
+<p>If <var>parameter</var> is &lsquo;<samp>@</samp>&rsquo; or &lsquo;<samp>*</samp>&rsquo;,
the case modification operation is applied to each positional
parameter in turn, and the expansion is the resultant list.
If <var>parameter</var>
@@ -2793,51 +2969,55 @@ the case modification operation is applied to each member of the
array in turn, and the expansion is the resultant list.
</p>
</dd>
-<dt><code>${<var>parameter</var>@<var>operator</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>@<var>operator</var>}</code></span></dt>
<dd><p>The expansion is either a transformation of the value of <var>parameter</var>
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>
+<dt><span><code>U</code></span></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>
+<dt><span><code>u</code></span></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>
+<dt><span><code>L</code></span></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>
+<dt><span><code>Q</code></span></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.
</p></dd>
-<dt><code>E</code></dt>
+<dt><span><code>E</code></span></dt>
<dd><p>The expansion is a string that is the value of <var>parameter</var> with backslash
escape sequences expanded as with the <code>$'&hellip;'</code> quoting mechanism.
</p></dd>
-<dt><code>P</code></dt>
+<dt><span><code>P</code></span></dt>
<dd><p>The expansion is a string that is the result of expanding the value of
<var>parameter</var> as if it were a prompt string (see <a href="#Controlling-the-Prompt">Controlling the Prompt</a>).
</p></dd>
-<dt><code>A</code></dt>
+<dt><span><code>A</code></span></dt>
<dd><p>The expansion is a string in the form of
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>
+<dt><span><code>K</code></span></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>
+<dt><span><code>a</code></span></dt>
<dd><p>The expansion is a string consisting of flag values representing
<var>parameter</var>&rsquo;s attributes.
</p></dd>
+<dt><span><code>k</code></span></dt>
+<dd><p>Like the &lsquo;<samp>K</samp>&rsquo; transformation, but expands the keys and values of
+indexed and associative arrays to separate words after word splitting.
+</p></dd>
</dl>
<p>If <var>parameter</var> is &lsquo;<samp>@</samp>&rsquo; or &lsquo;<samp>*</samp>&rsquo;,
@@ -2854,7 +3034,9 @@ expansion as described below.
</dl>
<hr>
-<span id="Command-Substitution"></span><div class="header">
+</div>
+<div class="subsection" id="Command-Substitution">
+<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>
@@ -2895,7 +3077,9 @@ form, escape the inner backquotes with backslashes.
filename expansion are not performed on the results.
</p>
<hr>
-<span id="Arithmetic-Expansion"></span><div class="header">
+</div>
+<div class="subsection" id="Arithmetic-Expansion">
+<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>
@@ -2910,8 +3094,10 @@ and the substitution of the result. The format for arithmetic expansion is:
<pre class="example">$(( <var>expression</var> ))
</pre></div>
-<p>The expression is treated as if it were within double quotes, but
-a double quote inside the parentheses is not treated specially.
+<p>The <var>expression</var> undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in <var>expression</var> are not treated specially
+and are removed.
All tokens in the expression undergo parameter and variable expansion,
command substitution, and quote removal.
The result is treated as the arithmetic expression to be evaluated.
@@ -2923,7 +3109,9 @@ If the expression is invalid, Bash prints a message indicating
failure to the standard error and no substitution occurs.
</p>
<hr>
-<span id="Process-Substitution"></span><div class="header">
+</div>
+<div class="subsection" id="Process-Substitution">
+<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>
@@ -2960,7 +3148,9 @@ parameter and variable expansion, command substitution, and arithmetic
expansion.
</p>
<hr>
-<span id="Word-Splitting"></span><div class="header">
+</div>
+<div class="subsection" id="Word-Splitting">
+<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>
@@ -3008,15 +3198,13 @@ null argument removal.
is performed.
</p>
<hr>
-<span id="Filename-Expansion"></span><div class="header">
+</div>
+<div class="subsection" id="Filename-Expansion">
+<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>
<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.
-</td></tr>
-</table>
<span id="index-expansion_002c-filename"></span>
<span id="index-expansion_002c-pathname"></span>
<span id="index-filename-expansion"></span>
@@ -3042,9 +3230,13 @@ without regard to the case of alphabetic characters.
<p>When a pattern is used for filename expansion, the character &lsquo;<samp>.</samp>&rsquo;
at the start of a filename or immediately following a slash
must be matched explicitly, unless the shell option <code>dotglob</code> is set.
-The filenames &lsquo;<samp>.</samp>&rsquo; and &lsquo;<samp>..</samp>&rsquo; must always be matched explicitly,
+In order to match the filenames &lsquo;<samp>.</samp>&rsquo; and &lsquo;<samp>..</samp>&rsquo;,
+the pattern must begin with &lsquo;<samp>.</samp>&rsquo; (for example, &lsquo;<samp>.?</samp>&rsquo;),
even if <code>dotglob</code> is set.
-In other cases, the &lsquo;<samp>.</samp>&rsquo; character is not treated specially.
+If the <code>globskipdots</code> shell option is enabled, the filenames
+&lsquo;<samp>.</samp>&rsquo; and &lsquo;<samp>..</samp>&rsquo; are never matched, even if the pattern begins
+with a &lsquo;<samp>.</samp>&rsquo;.
+When not matching filenames, the &lsquo;<samp>.</samp>&rsquo; character is not treated specially.
</p>
<p>When matching a filename, the slash character must always be
matched explicitly by a slash in the pattern, but in other matching
@@ -3053,6 +3245,7 @@ below (see <a href="#Pattern-Matching">Pattern Matching</a>).
</p>
<p>See the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>,
for a description of the <code>nocaseglob</code>, <code>nullglob</code>,
+<code>globskipdots</code>,
<code>failglob</code>, and <code>dotglob</code> options.
</p>
<p>The <code>GLOBIGNORE</code>
@@ -3075,8 +3268,12 @@ To get the old behavior of ignoring filenames beginning with a
The <code>dotglob</code> option is disabled when <code>GLOBIGNORE</code>
is unset.
</p>
+<ul class="section-toc">
+<li><a href="#Pattern-Matching" accesskey="1">Pattern Matching</a></li>
+</ul>
<hr>
-<span id="Pattern-Matching"></span><div class="header">
+<div class="subsubsection" id="Pattern-Matching">
+<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>
@@ -3094,7 +3291,7 @@ literally.
</p>
<p>The special pattern characters have the following meanings:
</p><dl compact="compact">
-<dt><code>*</code></dt>
+<dt><span><code>*</code></span></dt>
<dd><p>Matches any string, including the null string.
When the <code>globstar</code> shell option is enabled, and &lsquo;<samp>*</samp>&rsquo; is used in
a filename expansion context, two adjacent &lsquo;<samp>*</samp>&rsquo;s used as a single
@@ -3103,10 +3300,10 @@ subdirectories.
If followed by a &lsquo;<samp>/</samp>&rsquo;, two adjacent &lsquo;<samp>*</samp>&rsquo;s will match only
directories and subdirectories.
</p></dd>
-<dt><code>?</code></dt>
+<dt><span><code>?</code></span></dt>
<dd><p>Matches any single character.
</p></dd>
-<dt><code>[&hellip;]</code></dt>
+<dt><span><code>[&hellip;]</code></span></dt>
<dd><p>Matches any one of the enclosed characters. A pair of characters
separated by a hyphen denotes a <var>range expression</var>;
any character that falls between those two characters, inclusive,
@@ -3117,20 +3314,22 @@ then any character not enclosed is matched. A &lsquo;<samp>-</samp>&rsquo;
may be matched by including it as the first or last character
in the set. A &lsquo;<samp>]</samp>&rsquo; may be matched by including it as the first
character in the set.
-The sorting order of characters in range expressions is determined by
+The sorting order of characters in range expressions,
+and the characters included in the range,
+are determined by
the current locale and the values of the
<code>LC_COLLATE</code> and <code>LC_ALL</code> shell variables, if set.
</p>
<p>For example, in the default C locale, &lsquo;<samp>[a-dx-z]</samp>&rsquo; is equivalent to
&lsquo;<samp>[abcdxyz]</samp>&rsquo;. Many locales sort characters in dictionary order, and in
these locales &lsquo;<samp>[a-dx-z]</samp>&rsquo; is typically not equivalent to &lsquo;<samp>[abcdxyz]</samp>&rsquo;;
-it might be equivalent to &lsquo;<samp>[aBbCcDdxXyYz]</samp>&rsquo;, for example. To obtain
+it might be equivalent to &lsquo;<samp>[aBbCcDdxYyZz]</samp>&rsquo;, for example. To obtain
the traditional interpretation of ranges in bracket expressions, you can
force the use of the C locale by setting the <code>LC_COLLATE</code> or
<code>LC_ALL</code> environment variable to the value &lsquo;<samp>C</samp>&rsquo;, or enable the
<code>globasciiranges</code> shell option.
</p>
-<p>Within &lsquo;<samp>[</samp>&rsquo; and &lsquo;<samp>]</samp>&rsquo;, <var>character classes</var> can be specified
+<p>Within &lsquo;<samp>[</samp>&rsquo; and &lsquo;<samp>]</samp>&rsquo;, <em>character classes</em> can be specified
using the syntax
<code>[:</code><var>class</var><code>:]</code>, where <var>class</var> is one of the
following classes defined in the <small>POSIX</small> standard:
@@ -3142,7 +3341,7 @@ print punct space upper word xdigit
The <code>word</code> character class matches letters, digits, and the character
&lsquo;<samp>_</samp>&rsquo;.
</p>
-<p>Within &lsquo;<samp>[</samp>&rsquo; and &lsquo;<samp>]</samp>&rsquo;, an <var>equivalence class</var> can be
+<p>Within &lsquo;<samp>[</samp>&rsquo; and &lsquo;<samp>]</samp>&rsquo;, an <em>equivalence class</em> can be
specified using the syntax <code>[=</code><var>c</var><code>=]</code>, which
matches all characters with the same collation weight (as defined
by the current locale) as the character <var>c</var>.
@@ -3153,34 +3352,53 @@ matches the collating symbol <var>symbol</var>.
</dl>
<p>If the <code>extglob</code> shell option is enabled using the <code>shopt</code>
-builtin, several extended pattern matching operators are recognized.
+builtin, the shell recognizes several extended pattern matching operators.
In the following description, a <var>pattern-list</var> is a list of one
or more patterns separated by a &lsquo;<samp>|</samp>&rsquo;.
+When matching filenames, the <code>dotglob</code> shell option determines
+the set of filenames that are tested, as described above.
Composite patterns may be formed using one or more of the following
sub-patterns:
</p>
<dl compact="compact">
-<dt><code>?(<var>pattern-list</var>)</code></dt>
+<dt><span><code>?(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches zero or one occurrence of the given patterns.
</p>
</dd>
-<dt><code>*(<var>pattern-list</var>)</code></dt>
+<dt><span><code>*(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches zero or more occurrences of the given patterns.
</p>
</dd>
-<dt><code>+(<var>pattern-list</var>)</code></dt>
+<dt><span><code>+(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches one or more occurrences of the given patterns.
</p>
</dd>
-<dt><code>@(<var>pattern-list</var>)</code></dt>
+<dt><span><code>@(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches one of the given patterns.
</p>
</dd>
-<dt><code>!(<var>pattern-list</var>)</code></dt>
+<dt><span><code>!(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches anything except one of the given patterns.
</p></dd>
</dl>
+<p>The <code>extglob</code> option changes the behavior of the parser, since the
+parentheses are normally treated as operators with syntactic meaning.
+To ensure that extended matching patterns are parsed correctly, make sure
+that <code>extglob</code> is enabled before parsing constructs containing the
+patterns, including shell functions and command substitutions.
+</p>
+<p>When matching filenames, the <code>dotglob</code> shell option determines
+the set of filenames that are tested:
+when <code>dotglob</code> is enabled, the set of filenames includes all files
+beginning with &lsquo;<samp>.</samp>&rsquo;, but the filenames
+&lsquo;<samp>.</samp>&rsquo; and &lsquo;<samp>..</samp>&rsquo; must be matched by a
+pattern or sub-pattern that begins with a dot;
+when it is disabled, the set does not
+include any filenames beginning with &ldquo;.&rdquo; unless the pattern
+or sub-pattern begins with a &lsquo;<samp>.</samp>&rsquo;.
+As above, &lsquo;<samp>.</samp>&rsquo; only has a special meaning when matching filenames.
+</p>
<p>Complicated extended pattern matching against long strings is slow,
especially when the patterns contain alternations and the strings
contain multiple matches.
@@ -3188,7 +3406,10 @@ Using separate matches against shorter strings, or using arrays of
strings instead of a single long string, may be faster.
</p>
<hr>
-<span id="Quote-Removal"></span><div class="header">
+</div>
+</div>
+<div class="subsection" id="Quote-Removal">
+<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>
@@ -3199,7 +3420,10 @@ characters &lsquo;<samp>\</samp>&rsquo;, &lsquo;<samp>'</samp>&rsquo;, and &lsqu
result from one of the above expansions are removed.
</p>
<hr>
-<span id="Redirections"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Redirections">
+<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>
@@ -3207,9 +3431,9 @@ Next: <a href="#Executing-Commands" accesskey="n" rel="next">Executing Commands<
<span id="index-redirection"></span>
<p>Before a command is executed, its input and output
-may be <var>redirected</var>
+may be <em>redirected</em>
using a special notation interpreted by the shell.
-Redirection allows commands&rsquo; file handles to be
+<em>Redirection</em> allows commands&rsquo; 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.
@@ -3230,6 +3454,8 @@ 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&rsquo;s lifetime manually.
+The <code>varredir_close</code> shell option manages this behavior
+(see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
</p>
<p>In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is
@@ -3265,29 +3491,29 @@ special files, bash will use them; otherwise it will emulate them
internally with the behavior described below.
</p>
<dl compact="compact">
-<dt><code>/dev/fd/<var>fd</var></code></dt>
+<dt><span><code>/dev/fd/<var>fd</var></code></span></dt>
<dd><p>If <var>fd</var> is a valid integer, file descriptor <var>fd</var> is duplicated.
</p>
</dd>
-<dt><code>/dev/stdin</code></dt>
+<dt><span><code>/dev/stdin</code></span></dt>
<dd><p>File descriptor 0 is duplicated.
</p>
</dd>
-<dt><code>/dev/stdout</code></dt>
+<dt><span><code>/dev/stdout</code></span></dt>
<dd><p>File descriptor 1 is duplicated.
</p>
</dd>
-<dt><code>/dev/stderr</code></dt>
+<dt><span><code>/dev/stderr</code></span></dt>
<dd><p>File descriptor 2 is duplicated.
</p>
</dd>
-<dt><code>/dev/tcp/<var>host</var>/<var>port</var></code></dt>
+<dt><span><code>/dev/tcp/<var>host</var>/<var>port</var></code></span></dt>
<dd><p>If <var>host</var> is a valid hostname or Internet address, and <var>port</var>
is an integer port number or service name, Bash attempts to open
the corresponding TCP socket.
</p>
</dd>
-<dt><code>/dev/udp/<var>host</var>/<var>port</var></code></dt>
+<dt><span><code>/dev/udp/<var>host</var>/<var>port</var></code></span></dt>
<dd><p>If <var>host</var> is a valid hostname or Internet address, and <var>port</var>
is an integer port number or service name, Bash attempts to open
the corresponding UDP socket.
@@ -3300,7 +3526,20 @@ the corresponding UDP socket.
care, as they may conflict with file descriptors the shell uses
internally.
</p>
-<span id="Redirecting-Input"></span><h4 class="subsection">3.6.1 Redirecting Input</h4>
+<ul class="section-toc">
+<li><a href="#Redirecting-Input" accesskey="1">Redirecting Input</a></li>
+<li><a href="#Redirecting-Output" accesskey="2">Redirecting Output</a></li>
+<li><a href="#Appending-Redirected-Output" accesskey="3">Appending Redirected Output</a></li>
+<li><a href="#Redirecting-Standard-Output-and-Standard-Error" accesskey="4">Redirecting Standard Output and Standard Error</a></li>
+<li><a href="#Appending-Standard-Output-and-Standard-Error" accesskey="5">Appending Standard Output and Standard Error</a></li>
+<li><a href="#Here-Documents" accesskey="6">Here Documents</a></li>
+<li><a href="#Here-Strings" accesskey="7">Here Strings</a></li>
+<li><a href="#Duplicating-File-Descriptors" accesskey="8">Duplicating File Descriptors</a></li>
+<li><a href="#Moving-File-Descriptors" accesskey="9">Moving File Descriptors</a></li>
+<li><a href="#Opening-File-Descriptors-for-Reading-and-Writing">Opening File Descriptors for Reading and Writing</a></li>
+</ul>
+<div class="subsection" id="Redirecting-Input">
+<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>,
@@ -3312,7 +3551,9 @@ is not specified.
<pre class="example">[<var>n</var>]&lt;<var>word</var>
</pre></div>
-<span id="Redirecting-Output"></span><h4 class="subsection">3.6.2 Redirecting Output</h4>
+</div>
+<div class="subsection" id="Redirecting-Output">
+<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>,
@@ -3333,7 +3574,9 @@ 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>
-<span id="Appending-Redirected-Output"></span><h4 class="subsection">3.6.3 Appending Redirected Output</h4>
+</div>
+<div class="subsection" id="Appending-Redirected-Output">
+<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>
@@ -3346,7 +3589,9 @@ 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>
-<span id="Redirecting-Standard-Output-and-Standard-Error"></span><h4 class="subsection">3.6.4 Redirecting Standard Output and Standard Error</h4>
+</div>
+<div class="subsection" id="Redirecting-Standard-Output-and-Standard-Error">
+<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)
@@ -3371,7 +3616,9 @@ 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>
-<span id="Appending-Standard-Output-and-Standard-Error"></span><h4 class="subsection">3.6.5 Appending Standard Output and Standard Error</h4>
+</div>
+<div class="subsection" id="Appending-Standard-Output-and-Standard-Error">
+<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)
@@ -3388,7 +3635,9 @@ expansion of <var>word</var>.
</pre></div>
<p>(see Duplicating File Descriptors below).
</p>
-<span id="Here-Documents"></span><h4 class="subsection">3.6.6 Here Documents</h4>
+</div>
+<div class="subsection" id="Here-Documents">
+<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
@@ -3420,7 +3669,9 @@ line containing <var>delimiter</var>.
This allows here-documents within shell scripts to be indented in a
natural fashion.
</p>
-<span id="Here-Strings"></span><h4 class="subsection">3.6.7 Here Strings</h4>
+</div>
+<div class="subsection" id="Here-Strings">
+<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>
@@ -3435,7 +3686,9 @@ with a newline appended,
to the command on its
standard input (or file descriptor <var>n</var> if <var>n</var> is specified).
</p>
-<span id="Duplicating-File-Descriptors"></span><h4 class="subsection">3.6.8 Duplicating File Descriptors</h4>
+</div>
+<div class="subsection" id="Duplicating-File-Descriptors">
+<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>
@@ -3464,7 +3717,9 @@ 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>
-<span id="Moving-File-Descriptors"></span><h4 class="subsection">3.6.9 Moving File Descriptors</h4>
+</div>
+<div class="subsection" id="Moving-File-Descriptors">
+<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>-
@@ -3480,7 +3735,9 @@ 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>
-<span id="Opening-File-Descriptors-for-Reading-and-Writing"></span><h4 class="subsection">3.6.10 Opening File Descriptors for Reading and Writing</h4>
+</div>
+<div class="subsection" id="Opening-File-Descriptors-for-Reading-and-Writing">
+<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>
@@ -3491,34 +3748,27 @@ to be opened for both reading and writing on file descriptor
is not specified. If the file does not exist, it is created.
</p>
<hr>
-<span id="Executing-Commands"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Executing-Commands">
+<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>
<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
- 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.
-</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
- 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.
-</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
- 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
- receives a signal.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Simple-Command-Expansion" accesskey="1">Simple Command Expansion</a></li>
+<li><a href="#Command-Search-and-Execution" accesskey="2">Command Search and Execution</a></li>
+<li><a href="#Command-Execution-Environment" accesskey="3">Command Execution Environment</a></li>
+<li><a href="#Environment" accesskey="4">Environment</a></li>
+<li><a href="#Exit-Status" accesskey="5">Exit Status</a></li>
+<li><a href="#Signals" accesskey="6">Signals</a></li>
+</ul>
<hr>
-<span id="Simple-Command-Expansion"></span><div class="header">
+<div class="subsection" id="Simple-Command-Expansion">
+<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>
@@ -3548,7 +3798,11 @@ and quote removal before being assigned to the variable.
</li></ol>
<p>If no command name results, the variable assignments affect the current
-shell environment. Otherwise, the variables are added to the environment
+shell environment.
+In the case of such a command (one that consists only of assignment
+statements and redirections), assignment statements are performed before
+redirections.
+Otherwise, the variables are added to the environment
of the executed command and do not affect the current shell environment.
If any of the assignments attempts to assign a value to a readonly variable,
an error occurs, and the command exits with a non-zero status.
@@ -3564,7 +3818,9 @@ the exit status of the last command substitution performed. If there
were no command substitutions, the command exits with a status of zero.
</p>
<hr>
-<span id="Command-Search-and-Execution"></span><div class="header">
+</div>
+<div class="subsection" id="Command-Search-and-Execution">
+<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>
@@ -3610,7 +3866,7 @@ to the command are set to the arguments supplied, if any.
</li><li> If this execution fails because the file is not in executable
format, and the file is not a directory, it is assumed to be a
-<var>shell script</var> and the shell executes it as described in
+<em>shell script</em> and the shell executes it as described in
<a href="#Shell-Scripts">Shell Scripts</a>.
</li><li> If the command was not begun asynchronously, the shell waits for
@@ -3619,14 +3875,16 @@ the command to complete and collects its exit status.
</li></ol>
<hr>
-<span id="Command-Execution-Environment"></span><div class="header">
+</div>
+<div class="subsection" id="Command-Execution-Environment">
+<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>
<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
+<p>The shell has an <em>execution environment</em>, which consists of the
following:
</p>
<ul>
@@ -3655,7 +3913,7 @@ arguments) or by <code>set</code>
</li><li> shell aliases defined with <code>alias</code> (see <a href="#Aliases">Aliases</a>)
</li><li> various process <small>ID</small>s, including those of background jobs
-(see <a href="#Lists">Lists</a>), the value of <code>$$</code>, and the value of
+(see <a href="#Lists">Lists of Commands</a>), the value of <code>$$</code>, and the value of
<code>$PPID</code>
</li></ul>
@@ -3685,6 +3943,8 @@ shell&rsquo;s parent, and traps ignored by the shell are ignored
<p>A command invoked in this separate environment cannot affect the
shell&rsquo;s execution environment.
</p>
+<p>A <em>subshell</em> is a copy of the shell process.
+</p>
<p>Command substitution, commands grouped with parentheses,
and asynchronous commands are invoked in a
subshell environment that is a duplicate of the shell environment,
@@ -3704,7 +3964,9 @@ Otherwise, the invoked command inherits the file descriptors of the calling
shell as modified by redirections.
</p>
<hr>
-<span id="Environment"></span><div class="header">
+</div>
+<div class="subsection" id="Environment">
+<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>
@@ -3712,13 +3974,13 @@ Next: <a href="#Exit-Status" accesskey="n" rel="next">Exit Status</a>, Previous:
<span id="index-environment"></span>
<p>When a program is invoked it is given an array of strings
-called the <var>environment</var>.
+called the <em>environment</em>.
This is a list of name-value pairs, of the form <code>name=value</code>.
</p>
<p>Bash provides several ways to manipulate the environment.
On invocation, the shell scans its own environment and
creates a parameter for each name found, automatically marking
-it for <var>export</var>
+it for <code>export</code>
to child processes. Executed commands inherit the environment.
The <code>export</code> and &lsquo;<samp>declare -x</samp>&rsquo;
commands allow parameters and functions to be added to and
@@ -3746,7 +4008,9 @@ is set to the full pathname of the command and passed to that
command in its environment.
</p>
<hr>
-<span id="Exit-Status"></span><div class="header">
+</div>
+<div class="subsection" id="Exit-Status">
+<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>
@@ -3754,7 +4018,7 @@ Next: <a href="#Signals" accesskey="n" rel="next">Signals</a>, Previous: <a href
<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
+<code>waitpid</code> system call or equivalent function. Exit statuses
fall between 0 and 255, though, as explained below, the shell may
use values above 125 specially. Exit statuses from shell builtins and
compound commands are also limited to this range. Under certain
@@ -3779,7 +4043,7 @@ the exit status is greater than zero.
</p>
<p>The exit status is used by the Bash conditional commands
(see <a href="#Conditional-Constructs">Conditional Constructs</a>) and some of the list
-constructs (see <a href="#Lists">Lists</a>).
+constructs (see <a href="#Lists">Lists of Commands</a>).
</p>
<p>All of the Bash builtins return an exit status of zero if they succeed
and a non-zero status on failure, so they may be used by the
@@ -3787,8 +4051,13 @@ conditional and list constructs.
All builtins return an exit status of 2 to indicate incorrect usage,
generally invalid options or missing arguments.
</p>
+<p>The exit status of the last command is available in the special
+parameter $? (see <a href="#Special-Parameters">Special Parameters</a>).
+</p>
<hr>
-<span id="Signals"></span><div class="header">
+</div>
+<div class="subsection" id="Signals">
+<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>
@@ -3837,8 +4106,40 @@ which a trap has been set will cause the <code>wait</code> builtin to return
immediately with an exit status greater than 128, immediately after
which the trap is executed.
</p>
+<p>When job control is not enabled, and Bash is waiting for a foreground
+command to complete, the shell receives keyboard-generated signals
+such as <code>SIGINT</code> (usually generated by &lsquo;<samp>^C</samp>&rsquo;) that users
+commonly intend to send to that command.
+This happens because the shell and the command are in the same process
+group as the terminal, and &lsquo;<samp>^C</samp>&rsquo; sends <code>SIGINT</code> to all processes
+in that process group.
+See <a href="#Job-Control">Job Control</a>, for a more in-depth discussion of process groups.
+</p>
+<p>When Bash is running without job control enabled and receives <code>SIGINT</code>
+while waiting for a foreground command, it waits until that foreground
+command terminates and then decides what to do about the <code>SIGINT</code>:
+</p>
+<ol>
+<li> If the command terminates due to the <code>SIGINT</code>, Bash concludes
+that the user meant to end the entire script, and acts on the
+<code>SIGINT</code> (e.g., by running a <code>SIGINT</code> trap or exiting itself);
+
+</li><li> If the pipeline does not terminate due to <code>SIGINT</code>, the program
+handled the <code>SIGINT</code> itself and did not treat it as a fatal signal.
+In that case, Bash does not treat <code>SIGINT</code> as a fatal signal,
+either, instead assuming that the <code>SIGINT</code> was used as part of the
+program&rsquo;s normal operation (e.g., <code>emacs</code> uses it to abort editing
+commands) or deliberately discarded. However, Bash will run any
+trap set on <code>SIGINT</code>, as it does with any other trapped signal it
+receives while it is waiting for the foreground command to
+complete, for compatibility.
+</li></ol>
+
<hr>
-<span id="Shell-Scripts"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Shell-Scripts">
+<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>
@@ -3863,8 +4164,10 @@ are unset.
</p>
<p>A shell script may be made executable by using the <code>chmod</code> command
to turn on the execute bit. When Bash finds such a file while
-searching the <code>$PATH</code> for a command, it spawns a subshell to
-execute it. In other words, executing
+searching the <code>$PATH</code> for a command, it creates a
+new instance of itself
+to execute it.
+In other words, executing
</p><div class="example">
<pre class="example">filename <var>arguments</var>
</pre></div>
@@ -3910,25 +4213,15 @@ under another shell. It&rsquo;s a common idiom to use <code>env</code> to find
in <code>$PATH</code>.
</p>
<hr>
-<span id="Shell-Builtin-Commands"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Shell-Builtin-Commands">
+<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>
+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">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-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
- 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.
-</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
- 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
- POSIX.
-</td></tr>
-</table>
<p>Builtin commands are contained within the shell itself.
When the name of a builtin command is used as the first word of
@@ -3963,10 +4256,17 @@ Other builtins that accept arguments but are not specified as accepting
options interpret arguments beginning with &lsquo;<samp>-</samp>&rsquo; as invalid options and
require &lsquo;<samp>--</samp>&rsquo; to prevent this interpretation.
</p>
+<ul class="section-toc">
+<li><a href="#Bourne-Shell-Builtins" accesskey="1">Bourne Shell Builtins</a></li>
+<li><a href="#Bash-Builtins" accesskey="2">Bash Builtin Commands</a></li>
+<li><a href="#Modifying-Shell-Behavior" accesskey="3">Modifying Shell Behavior</a></li>
+<li><a href="#Special-Builtins" accesskey="4">Special Builtins</a></li>
+</ul>
<hr>
-<span id="Bourne-Shell-Builtins"></span><div class="header">
+<div class="section" id="Bourne-Shell-Builtins">
+<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>
+Next: <a href="#Bash-Builtins" accesskey="n" rel="next">Bash Builtin Commands</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>
<span id="Bourne-Shell-Builtins-1"></span><h3 class="section">4.1 Bourne Shell Builtins</h3>
@@ -3974,9 +4274,8 @@ Next: <a href="#Bash-Builtins" accesskey="n" rel="next">Bash Builtins</a>, Up: <
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><span id="index-_003a"></span>
-<div class="example">
+<dt id='index-_003a'><span><code>: <span class="roman">(a colon)</span></code><a href='#index-_003a' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">: [<var>arguments</var>]
</pre></div>
@@ -3984,35 +4283,34 @@ These commands are implemented as specified by the <small>POSIX</small> standard
The return status is zero.
</p>
</dd>
-<dt><code>. <span class="roman">(a period)</span></code></dt>
-<dd><span id="index-_002e"></span>
-<div class="example">
+<dt id='index-_002e'><span><code>. <span class="roman">(a period)</span></code><a href='#index-_002e' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">. <var>filename</var> [<var>arguments</var>]
</pre></div>
<p>Read and execute commands from the <var>filename</var> argument in the
current shell context. If <var>filename</var> does not contain a slash,
-the <code>PATH</code> variable is used to find <var>filename</var>.
-When Bash is not in <small>POSIX</small> mode, the current directory is searched
+the <code>PATH</code> variable is used to find <var>filename</var>,
+but <var>filename</var> does not need to be executable.
+When Bash is not in <small>POSIX</small> mode, it searches the current directory
if <var>filename</var> is not found in <code>$PATH</code>.
If any <var>arguments</var> are supplied, they become the positional
parameters when <var>filename</var> is executed. Otherwise the positional
parameters are unchanged.
-If the <samp>-T</samp> option is enabled, <code>source</code> inherits any trap on
+If the <samp>-T</samp> option is enabled, <code>.</code> inherits any trap on
<code>DEBUG</code>; if it is not, any <code>DEBUG</code> trap string is saved and
-restored around the call to <code>source</code>, and <code>source</code> unsets the
+restored around the call to <code>.</code>, and <code>.</code> unsets the
<code>DEBUG</code> trap while it executes.
If <samp>-T</samp> is not set, and the sourced file changes
-the <code>DEBUG</code> trap, the new value is retained when <code>source</code> completes.
+the <code>DEBUG</code> trap, the new value is retained when <code>.</code> completes.
The return status is the exit status of the last command executed, or
zero if no commands are executed. If <var>filename</var> is not found, or
cannot be read, the return status is non-zero.
This builtin is equivalent to <code>source</code>.
</p>
</dd>
-<dt><code>break</code></dt>
-<dd><span id="index-break"></span>
-<div class="example">
+<dt id='index-break'><span><code>break</code><a href='#index-break' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">break [<var>n</var>]
</pre></div>
@@ -4022,16 +4320,14 @@ If <var>n</var> is supplied, the <var>n</var>th enclosing loop is exited.
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><span id="index-cd"></span>
-<div class="example">
+<dt id='index-cd'><span><code>cd</code><a href='#index-cd' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">cd [-L|[-P [-e]] [-@] [<var>directory</var>]
</pre></div>
<p>Change the current working directory to <var>directory</var>.
If <var>directory</var> is not supplied, the value of the <code>HOME</code>
shell variable is used.
-Any additional arguments following <var>directory</var> are ignored.
If the shell variable
<code>CDPATH</code> exists, it is used as a search path:
each directory name in <code>CDPATH</code> is searched for
@@ -4067,13 +4363,17 @@ before the directory change is attempted.
successful, the absolute pathname of the new working directory is
written to the standard output.
</p>
+<p>If the directory change is successful, <code>cd</code> sets the value of the
+<code>PWD</code> environment variable to the new directory name, and sets the
+<code>OLDPWD</code> environment variable to the value of the current working
+directory before the change.
+</p>
<p>The return status is zero if the directory is successfully changed,
non-zero otherwise.
</p>
</dd>
-<dt><code>continue</code></dt>
-<dd><span id="index-continue"></span>
-<div class="example">
+<dt id='index-continue'><span><code>continue</code><a href='#index-continue' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">continue [<var>n</var>]
</pre></div>
@@ -4085,9 +4385,8 @@ is resumed.
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><span id="index-eval"></span>
-<div class="example">
+<dt id='index-eval'><span><code>eval</code><a href='#index-eval' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">eval [<var>arguments</var>]
</pre></div>
@@ -4098,9 +4397,8 @@ If there are no arguments or only empty arguments, the return status is
zero.
</p>
</dd>
-<dt><code>exec</code></dt>
-<dd><span id="index-exec"></span>
-<div class="example">
+<dt id='index-exec'><span><code>exec</code><a href='#index-exec' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">exec [-cl] [-a <var>name</var>] [<var>command</var> [<var>arguments</var>]]
</pre></div>
@@ -4124,9 +4422,8 @@ the current shell environment. If there are no redirection errors, the
return status is zero; otherwise the return status is non-zero.
</p>
</dd>
-<dt><code>exit</code></dt>
-<dd><span id="index-exit"></span>
-<div class="example">
+<dt id='index-exit'><span><code>exit</code><a href='#index-exit' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">exit [<var>n</var>]
</pre></div>
@@ -4135,9 +4432,8 @@ If <var>n</var> is omitted, the exit status is that of the last command executed
Any trap on <code>EXIT</code> is executed before the shell terminates.
</p>
</dd>
-<dt><code>export</code></dt>
-<dd><span id="index-export"></span>
-<div class="example">
+<dt id='index-export'><span><code>export</code><a href='#index-export' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">export [-fn] [-p] [<var>name</var>[=<var>value</var>]]
</pre></div>
@@ -4145,7 +4441,7 @@ Any trap on <code>EXIT</code> is executed before the shell terminates.
in the environment. If the <samp>-f</samp> option is supplied, the <var>name</var>s
refer to shell functions; otherwise the names refer to shell variables.
The <samp>-n</samp> option means to no longer mark each <var>name</var> for export.
-If no <var>names</var> are supplied, or if the <samp>-p</samp> option is given, a
+If no <var>name</var>s are supplied, or if the <samp>-p</samp> option is given, a
list of names of all exported variables is displayed.
The <samp>-p</samp> option displays output in a form that may be reused as input.
If a variable name is followed by =<var>value</var>, the value of
@@ -4156,9 +4452,8 @@ the names is not a valid shell variable name, or <samp>-f</samp> is supplied
with a name that is not a shell function.
</p>
</dd>
-<dt><code>getopts</code></dt>
-<dd><span id="index-getopts"></span>
-<div class="example">
+<dt id='index-getopts'><span><code>getopts</code><a href='#index-getopts' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">getopts <var>optstring</var> <var>name</var> [<var>arg</var> &hellip;]
</pre></div>
@@ -4212,9 +4507,8 @@ If <code>getopts</code> is silent, then a colon (&lsquo;<samp>:</samp>&rsquo;) i
<var>name</var> and <code>OPTARG</code> is set to the option character found.
</p>
</dd>
-<dt><code>hash</code></dt>
-<dd><span id="index-hash"></span>
-<div class="example">
+<dt id='index-hash'><span><code>hash</code><a href='#index-hash' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">hash [-r] [-p <var>filename</var>] [-dt] [<var>name</var>]
</pre></div>
@@ -4241,9 +4535,8 @@ The return status is zero unless a <var>name</var> is not found or an invalid
option is supplied.
</p>
</dd>
-<dt><code>pwd</code></dt>
-<dd><span id="index-pwd"></span>
-<div class="example">
+<dt id='index-pwd'><span><code>pwd</code><a href='#index-pwd' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">pwd [-LP]
</pre></div>
@@ -4257,9 +4550,8 @@ determining the name of the current directory or an invalid option
is supplied.
</p>
</dd>
-<dt><code>readonly</code></dt>
-<dd><span id="index-readonly"></span>
-<div class="example">
+<dt id='index-readonly'><span><code>readonly</code><a href='#index-readonly' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">readonly [-aAf] [-p] [<var>name</var>[=<var>value</var>]] &hellip;
</pre></div>
@@ -4284,9 +4576,8 @@ the <var>name</var> arguments is not a valid shell variable or function name,
or the <samp>-f</samp> option is supplied with a name that is not a shell function.
</p>
</dd>
-<dt><code>return</code></dt>
-<dd><span id="index-return"></span>
-<div class="example">
+<dt id='index-return'><span><code>return</code><a href='#index-return' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">return [<var>n</var>]
</pre></div>
@@ -4313,9 +4604,8 @@ argument or is used outside a function
and not during the execution of a script by <code>.</code> or <code>source</code>.
</p>
</dd>
-<dt><code>shift</code></dt>
-<dd><span id="index-shift"></span>
-<div class="example">
+<dt id='index-shift'><span><code>shift</code><a href='#index-shift' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">shift [<var>n</var>]
</pre></div>
@@ -4332,10 +4622,9 @@ The return status is zero unless <var>n</var> is greater than <code>$#</code> or
less than zero, non-zero otherwise.
</p>
</dd>
-<dt><code>test</code></dt>
-<dt><code>[</code></dt>
-<dd><span id="index-test"></span>
-<span id="index-_005b"></span>
+<dt id='index-test'><span><code>test</code><a href='#index-test' class='copiable-anchor'> &para;</a></span></dt>
+<dt><span><code>[</code></span></dt>
+<dd><span id="index-_005b"></span>
<div class="example">
<pre class="example">test <var>expr</var>
</pre></div>
@@ -4357,20 +4646,20 @@ The evaluation depends on the number of arguments; see below.
Operator precedence is used when there are five or more arguments.
</p>
<dl compact="compact">
-<dt><code>! <var>expr</var></code></dt>
+<dt><span><code>! <var>expr</var></code></span></dt>
<dd><p>True if <var>expr</var> is false.
</p>
</dd>
-<dt><code>( <var>expr</var> )</code></dt>
+<dt><span><code>( <var>expr</var> )</code></span></dt>
<dd><p>Returns the value of <var>expr</var>.
This may be used to override the normal precedence of operators.
</p>
</dd>
-<dt><code><var>expr1</var> -a <var>expr2</var></code></dt>
+<dt><span><code><var>expr1</var> -a <var>expr2</var></code></span></dt>
<dd><p>True if both <var>expr1</var> and <var>expr2</var> are true.
</p>
</dd>
-<dt><code><var>expr1</var> -o <var>expr2</var></code></dt>
+<dt><span><code><var>expr1</var> -o <var>expr2</var></code></span></dt>
<dd><p>True if either <var>expr1</var> or <var>expr2</var> is true.
</p></dd>
</dl>
@@ -4379,15 +4668,15 @@ This may be used to override the normal precedence of operators.
expressions using a set of rules based on the number of arguments.
</p>
<dl compact="compact">
-<dt>0 arguments</dt>
+<dt><span>0 arguments</span></dt>
<dd><p>The expression is false.
</p>
</dd>
-<dt>1 argument</dt>
+<dt><span>1 argument</span></dt>
<dd><p>The expression is true if, and only if, the argument is not null.
</p>
</dd>
-<dt>2 arguments</dt>
+<dt><span>2 arguments</span></dt>
<dd><p>If the first argument is &lsquo;<samp>!</samp>&rsquo;, the expression is true if and
only if the second argument is null.
If the first argument is one of the unary conditional operators
@@ -4397,7 +4686,7 @@ If the first argument is not a valid unary operator, the expression is
false.
</p>
</dd>
-<dt>3 arguments</dt>
+<dt><span>3 arguments</span></dt>
<dd><p>The following conditions are applied in the order listed.
</p>
<ol>
@@ -4416,14 +4705,21 @@ argument.
</li></ol>
</dd>
-<dt>4 arguments</dt>
-<dd><p>If the first argument is &lsquo;<samp>!</samp>&rsquo;, the result is the negation of
+<dt><span>4 arguments</span></dt>
+<dd><p>The following conditions are applied in the order listed.
+</p>
+<ol>
+<li> If the first argument is &lsquo;<samp>!</samp>&rsquo;, the result is the negation of
the three-argument expression composed of the remaining arguments.
-Otherwise, the expression is parsed and evaluated according to
+</li><li> If the first argument is exactly &lsquo;<samp>(</samp>&rsquo; and the fourth argument is
+exactly &lsquo;<samp>)</samp>&rsquo;, the result is the two-argument test of the second
+and third arguments.
+</li><li> Otherwise, the expression is parsed and evaluated according to
precedence using the rules listed above.
-</p>
+</li></ol>
+
</dd>
-<dt>5 or more arguments</dt>
+<dt><span>5 or more arguments</span></dt>
<dd><p>The expression is parsed and evaluated according to precedence
using the rules listed above.
</p></dd>
@@ -4433,9 +4729,8 @@ using the rules listed above.
operators sort lexicographically using ASCII ordering.
</p>
</dd>
-<dt><code>times</code></dt>
-<dd><span id="index-times"></span>
-<div class="example">
+<dt id='index-times'><span><code>times</code><a href='#index-times' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">times
</pre></div>
@@ -4443,9 +4738,8 @@ operators sort lexicographically using ASCII ordering.
The return status is zero.
</p>
</dd>
-<dt><code>trap</code></dt>
-<dd><span id="index-trap"></span>
-<div class="example">
+<dt id='index-trap'><span><code>trap</code><a href='#index-trap' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">trap [-lp] [<var>arg</var>] [<var>sigspec</var> &hellip;]
</pre></div>
@@ -4505,9 +4799,8 @@ values in a subshell or subshell environment when one is created.
valid signal.
</p>
</dd>
-<dt><code>umask</code></dt>
-<dd><span id="index-umask"></span>
-<div class="example">
+<dt id='index-umask'><span><code>umask</code><a href='#index-umask' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">umask [-p] [-S] [<var>mode</var>]
</pre></div>
@@ -4528,9 +4821,8 @@ of the umask is subtracted from <code>7</code>. Thus, a umask of <code>022</cod
results in permissions of <code>755</code>.
</p>
</dd>
-<dt><code>unset</code></dt>
-<dd><span id="index-unset"></span>
-<div class="example">
+<dt id='index-unset'><span><code>unset</code><a href='#index-unset' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">unset [-fnv] [<var>name</var>]
</pre></div>
@@ -4540,7 +4832,7 @@ If the <samp>-v</samp> option is given, each
If the <samp>-f</samp> option is given, the <var>name</var>s refer to shell
functions, and the function definition is removed.
If the <samp>-n</samp> option is supplied, and <var>name</var> is a variable with
-the <var>nameref</var> attribute, <var>name</var> will be unset rather than the
+the <code>nameref</code> 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
@@ -4549,12 +4841,14 @@ unset.
Readonly variables and functions may not be unset.
Some shell variables lose their special behavior if they are unset; such
behavior is noted in the description of the individual variables.
-The return status is zero unless a <var>name</var> is readonly.
+The return status is zero unless a <var>name</var> is readonly or may not be unset.
</p></dd>
</dl>
<hr>
-<span id="Bash-Builtins"></span><div class="header">
+</div>
+<div class="section" id="Bash-Builtins">
+<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>
@@ -4565,9 +4859,8 @@ or have been extended in Bash.
Some of these commands are specified in the <small>POSIX</small> standard.
</p>
<dl compact="compact">
-<dt><code>alias</code></dt>
-<dd><span id="index-alias"></span>
-<div class="example">
+<dt id='index-alias'><span><code>alias</code><a href='#index-alias' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">alias [-p] [<var>name</var>[=<var>value</var>] &hellip;]
</pre></div>
@@ -4580,15 +4873,15 @@ and value of the alias is printed.
Aliases are described in <a href="#Aliases">Aliases</a>.
</p>
</dd>
-<dt><code>bind</code></dt>
-<dd><span id="index-bind"></span>
-<div class="example">
+<dt id='index-bind'><span><code>bind</code><a href='#index-bind' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>]
bind [-m <var>keymap</var>] -f <var>filename</var>
bind [-m <var>keymap</var>] -x <var>keyseq:shell-command</var>
bind [-m <var>keymap</var>] <var>keyseq:function-name</var>
bind [-m <var>keymap</var>] <var>keyseq:readline-command</var>
+bind <var>readline-command-line</var>
</pre></div>
<p>Display current Readline (see <a href="#Command-Line-Editing">Command Line Editing</a>)
@@ -4603,7 +4896,7 @@ but each binding or command must be passed as a separate argument; e.g.,
<p>Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-m <var>keymap</var></code></dt>
+<dt><span><code>-m <var>keymap</var></code></span></dt>
<dd><p>Use <var>keymap</var> as the keymap to be affected by
the subsequent bindings. Acceptable <var>keymap</var>
names are
@@ -4619,55 +4912,55 @@ names are
synonym); <code>emacs</code> is equivalent to <code>emacs-standard</code>.
</p>
</dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>List the names of all Readline functions.
</p>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>Display Readline function names and bindings in such a way that they
can be used as input or in a Readline initialization file.
</p>
</dd>
-<dt><code>-P</code></dt>
+<dt><span><code>-P</code></span></dt>
<dd><p>List current Readline function names and bindings.
</p>
</dd>
-<dt><code>-v</code></dt>
+<dt><span><code>-v</code></span></dt>
<dd><p>Display Readline variable names and values in such a way that they
can be used as input or in a Readline initialization file.
</p>
</dd>
-<dt><code>-V</code></dt>
+<dt><span><code>-V</code></span></dt>
<dd><p>List current Readline variable names and values.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Display Readline key sequences bound to macros and the strings they output
in such a way that they can be used as input or in a Readline
initialization file.
</p>
</dd>
-<dt><code>-S</code></dt>
+<dt><span><code>-S</code></span></dt>
<dd><p>Display Readline key sequences bound to macros and the strings they output.
</p>
</dd>
-<dt><code>-f <var>filename</var></code></dt>
+<dt><span><code>-f <var>filename</var></code></span></dt>
<dd><p>Read key bindings from <var>filename</var>.
</p>
</dd>
-<dt><code>-q <var>function</var></code></dt>
+<dt><span><code>-q <var>function</var></code></span></dt>
<dd><p>Query about which keys invoke the named <var>function</var>.
</p>
</dd>
-<dt><code>-u <var>function</var></code></dt>
+<dt><span><code>-u <var>function</var></code></span></dt>
<dd><p>Unbind all keys bound to the named <var>function</var>.
</p>
</dd>
-<dt><code>-r <var>keyseq</var></code></dt>
+<dt><span><code>-r <var>keyseq</var></code></span></dt>
<dd><p>Remove any current binding for <var>keyseq</var>.
</p>
</dd>
-<dt><code>-x <var>keyseq:shell-command</var></code></dt>
+<dt><span><code>-x <var>keyseq:shell-command</var></code></span></dt>
<dd><p>Cause <var>shell-command</var> to be executed whenever <var>keyseq</var> is
entered.
When <var>shell-command</var> is executed, the shell sets the
@@ -4675,12 +4968,15 @@ When <var>shell-command</var> is executed, the shell sets the
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.
+The shell assigns any numeric argument the user supplied to the
+<code>READLINE_ARGUMENT</code> variable.
+If there was no argument, that variable is not set.
If the executed command changes the value of any of <code>READLINE_LINE</code>,
<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>
+<dt><span><code>-X</code></span></dt>
<dd><p>List all key sequences bound to shell commands and the associated commands
in a format that can be reused as input.
</p></dd>
@@ -4690,9 +4986,8 @@ in a format that can be reused as input.
error occurs.
</p>
</dd>
-<dt><code>builtin</code></dt>
-<dd><span id="index-builtin"></span>
-<div class="example">
+<dt id='index-builtin'><span><code>builtin</code><a href='#index-builtin' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">builtin [<var>shell-builtin</var> [<var>args</var>]]
</pre></div>
@@ -4704,9 +4999,8 @@ The return status is non-zero if <var>shell-builtin</var> is not a shell
builtin command.
</p>
</dd>
-<dt><code>caller</code></dt>
-<dd><span id="index-caller"></span>
-<div class="example">
+<dt id='index-caller'><span><code>caller</code><a href='#index-caller' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">caller [<var>expr</var>]
</pre></div>
@@ -4726,9 +5020,8 @@ call or <var>expr</var> does not correspond to a valid position in the
call stack.
</p>
</dd>
-<dt><code>command</code></dt>
-<dd><span id="index-command"></span>
-<div class="example">
+<dt id='index-command'><span><code>command</code><a href='#index-command' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">command [-pVv] <var>command</var> [<var>arguments</var> &hellip;]
</pre></div>
@@ -4753,9 +5046,8 @@ a more verbose description. In this case, the return status is
zero if <var>command</var> is found, and non-zero if not.
</p>
</dd>
-<dt><code>declare</code></dt>
-<dd><span id="index-declare"></span>
-<div class="example">
+<dt id='index-declare'><span><code>declare</code><a href='#index-declare' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">declare [-aAfFgiIlnrtux] [-p] [<var>name</var>[=<var>value</var>] &hellip;]
</pre></div>
@@ -4786,7 +5078,7 @@ 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)
+(except the <code>nameref</code> 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.
@@ -4795,32 +5087,32 @@ If there is no existing variable, the local variable is initially unset.
the specified attributes or to give variables attributes:
</p>
<dl compact="compact">
-<dt><code>-a</code></dt>
+<dt><span><code>-a</code></span></dt>
<dd><p>Each <var>name</var> is an indexed array variable (see <a href="#Arrays">Arrays</a>).
</p>
</dd>
-<dt><code>-A</code></dt>
+<dt><span><code>-A</code></span></dt>
<dd><p>Each <var>name</var> is an associative array variable (see <a href="#Arrays">Arrays</a>).
</p>
</dd>
-<dt><code>-f</code></dt>
+<dt><span><code>-f</code></span></dt>
<dd><p>Use function names only.
</p>
</dd>
-<dt><code>-i</code></dt>
+<dt><span><code>-i</code></span></dt>
<dd><p>The variable is to be treated as
an integer; arithmetic evaluation (see <a href="#Shell-Arithmetic">Shell Arithmetic</a>) is
performed when the variable is assigned a value.
</p>
</dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>When the variable is assigned a value, all upper-case characters are
converted to lower-case.
The upper-case attribute is disabled.
</p>
</dd>
-<dt><code>-n</code></dt>
-<dd><p>Give each <var>name</var> the <var>nameref</var> attribute, making
+<dt><span><code>-n</code></span></dt>
+<dd><p>Give each <var>name</var> the <code>nameref</code> attribute, making
it a name reference to another variable.
That other variable is defined by the value of <var>name</var>.
All references, assignments, and attribute modifications
@@ -4830,25 +5122,25 @@ to <var>name</var>, except for those using or changing the
The nameref attribute cannot be applied to array variables.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>Make <var>name</var>s readonly. These names cannot then be assigned values
by subsequent assignment statements or unset.
</p>
</dd>
-<dt><code>-t</code></dt>
+<dt><span><code>-t</code></span></dt>
<dd><p>Give each <var>name</var> the <code>trace</code> attribute.
Traced functions inherit the <code>DEBUG</code> and <code>RETURN</code> traps from
the calling shell.
The trace attribute has no special meaning for variables.
</p>
</dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>When the variable is assigned a value, all lower-case characters are
converted to upper-case.
The lower-case attribute is disabled.
</p>
</dd>
-<dt><code>-x</code></dt>
+<dt><span><code>-x</code></span></dt>
<dd><p>Mark each <var>name</var> for export to subsequent commands via
the environment.
</p></dd>
@@ -4872,15 +5164,14 @@ an attempt is made to define a function using &lsquo;<samp>-f foo=bar</samp>&rsq
an attempt is made to assign a value to a readonly variable,
an attempt is made to assign a value to an array variable without
using the compound assignment syntax (see <a href="#Arrays">Arrays</a>),
-one of the <var>names</var> is not a valid shell variable name,
+one of the <var>name</var>s is not a valid shell variable name,
an attempt is made to turn off readonly status for a readonly variable,
an attempt is made to turn off array status for an array variable,
or an attempt is made to display a non-existent function with <samp>-f</samp>.
</p>
</dd>
-<dt><code>echo</code></dt>
-<dd><span id="index-echo"></span>
-<div class="example">
+<dt id='index-echo'><span><code>echo</code><a href='#index-echo' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">echo [-neE] [<var>arg</var> &hellip;]
</pre></div>
@@ -4899,59 +5190,58 @@ escape characters by default.
</p>
<p><code>echo</code> interprets the following escape sequences:
</p><dl compact="compact">
-<dt><code>\a</code></dt>
+<dt><span><code>\a</code></span></dt>
<dd><p>alert (bell)
</p></dd>
-<dt><code>\b</code></dt>
+<dt><span><code>\b</code></span></dt>
<dd><p>backspace
</p></dd>
-<dt><code>\c</code></dt>
+<dt><span><code>\c</code></span></dt>
<dd><p>suppress further output
</p></dd>
-<dt><code>\e</code></dt>
-<dt><code>\E</code></dt>
+<dt><span><code>\e</code></span></dt>
+<dt><span><code>\E</code></span></dt>
<dd><p>escape
</p></dd>
-<dt><code>\f</code></dt>
+<dt><span><code>\f</code></span></dt>
<dd><p>form feed
</p></dd>
-<dt><code>\n</code></dt>
+<dt><span><code>\n</code></span></dt>
<dd><p>new line
</p></dd>
-<dt><code>\r</code></dt>
+<dt><span><code>\r</code></span></dt>
<dd><p>carriage return
</p></dd>
-<dt><code>\t</code></dt>
+<dt><span><code>\t</code></span></dt>
<dd><p>horizontal tab
</p></dd>
-<dt><code>\v</code></dt>
+<dt><span><code>\v</code></span></dt>
<dd><p>vertical tab
</p></dd>
-<dt><code>\\</code></dt>
+<dt><span><code>\\</code></span></dt>
<dd><p>backslash
</p></dd>
-<dt><code>\0<var>nnn</var></code></dt>
+<dt><span><code>\0<var>nnn</var></code></span></dt>
<dd><p>the eight-bit character whose value is the octal value <var>nnn</var>
(zero to three octal digits)
</p></dd>
-<dt><code>\x<var>HH</var></code></dt>
+<dt><span><code>\x<var>HH</var></code></span></dt>
<dd><p>the eight-bit character whose value is the hexadecimal value <var>HH</var>
(one or two hex digits)
</p></dd>
-<dt><code>\u<var>HHHH</var></code></dt>
+<dt><span><code>\u<var>HHHH</var></code></span></dt>
<dd><p>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
<var>HHHH</var> (one to four hex digits)
</p></dd>
-<dt><code>\U<var>HHHHHHHH</var></code></dt>
+<dt><span><code>\U<var>HHHHHHHH</var></code></span></dt>
<dd><p>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
<var>HHHHHHHH</var> (one to eight hex digits)
</p></dd>
</dl>
</dd>
-<dt><code>enable</code></dt>
-<dd><span id="index-enable"></span>
-<div class="example">
+<dt id='index-enable'><span><code>enable</code><a href='#index-enable' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">enable [-a] [-dnps] [-f <var>filename</var>] [<var>name</var> &hellip;]
</pre></div>
@@ -4972,6 +5262,9 @@ each builtin with an indication of whether or not it is enabled.
</p>
<p>The <samp>-f</samp> option means to load the new builtin command <var>name</var>
from shared object <var>filename</var>, on systems that support dynamic loading.
+Bash will use the value of the <code>BASH_LOADABLES_PATH</code> variable as a
+colon-separated list of directories in which to search for <var>filename</var>.
+The default is system-dependent.
The <samp>-d</samp> option will delete a builtin loaded with <samp>-f</samp>.
</p>
<p>If there are no options, a list of the shell builtins is displayed.
@@ -4979,13 +5272,17 @@ The <samp>-s</samp> option restricts <code>enable</code> to the <small>POSIX</sm
builtins. If <samp>-s</samp> is used with <samp>-f</samp>, the new builtin becomes
a special builtin (see <a href="#Special-Builtins">Special Builtins</a>).
</p>
+<p>If no options are supplied and a <var>name</var> is not a shell builtin,
+<code>enable</code> will attempt to load <var>name</var> from a shared object named
+<var>name</var>, as if the command were
+&lsquo;<samp>enable -f <var>name</var> <var>name</var></samp>&rsquo;.
+</p>
<p>The return status is zero unless a <var>name</var> is not a shell builtin
or there is an error loading a new builtin from a shared object.
</p>
</dd>
-<dt><code>help</code></dt>
-<dd><span id="index-help"></span>
-<div class="example">
+<dt id='index-help'><span><code>help</code><a href='#index-help' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">help [-dms] [<var>pattern</var>]
</pre></div>
@@ -4997,13 +5294,13 @@ the builtins is printed.
<p>Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-d</code></dt>
+<dt><span><code>-d</code></span></dt>
<dd><p>Display a short description of each <var>pattern</var>
</p></dd>
-<dt><code>-m</code></dt>
+<dt><span><code>-m</code></span></dt>
<dd><p>Display the description of each <var>pattern</var> in a manpage-like format
</p></dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Display only a short usage synopsis for each <var>pattern</var>
</p></dd>
</dl>
@@ -5011,9 +5308,8 @@ the builtins is printed.
<p>The return status is zero unless no command matches <var>pattern</var>.
</p>
</dd>
-<dt><code>let</code></dt>
-<dd><span id="index-let"></span>
-<div class="example">
+<dt id='index-let'><span><code>let</code><a href='#index-let' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">let <var>expression</var> [<var>expression</var> &hellip;]
</pre></div>
@@ -5024,9 +5320,8 @@ last <var>expression</var> evaluates to 0, <code>let</code> returns 1;
otherwise 0 is returned.
</p>
</dd>
-<dt><code>local</code></dt>
-<dd><span id="index-local"></span>
-<div class="example">
+<dt id='index-local'><span><code>local</code><a href='#index-local' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">local [<var>option</var>] <var>name</var>[=<var>value</var>] &hellip;
</pre></div>
@@ -5047,9 +5342,8 @@ 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><span id="index-logout"></span>
-<div class="example">
+<dt id='index-logout'><span><code>logout</code><a href='#index-logout' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">logout [<var>n</var>]
</pre></div>
@@ -5057,9 +5351,8 @@ readonly variable.
parent.
</p>
</dd>
-<dt><code>mapfile</code></dt>
-<dd><span id="index-mapfile"></span>
-<div class="example">
+<dt id='index-mapfile'><span><code>mapfile</code><a href='#index-mapfile' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>]
</pre></div>
@@ -5071,33 +5364,33 @@ The variable <code>MAPFILE</code> is the default <var>array</var>.
Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-d</code></dt>
+<dt><span><code>-d</code></span></dt>
<dd><p>The first character of <var>delim</var> is used to terminate each input line,
rather than newline.
If <var>delim</var> is the empty string, <code>mapfile</code> will terminate a line
when it reads a NUL character.
</p></dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Copy at most <var>count</var> lines. If <var>count</var> is 0, all lines are copied.
</p></dd>
-<dt><code>-O</code></dt>
+<dt><span><code>-O</code></span></dt>
<dd><p>Begin assigning to <var>array</var> at index <var>origin</var>.
The default index is 0.
</p></dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Discard the first <var>count</var> lines read.
</p></dd>
-<dt><code>-t</code></dt>
+<dt><span><code>-t</code></span></dt>
<dd><p>Remove a trailing <var>delim</var> (default newline) from each line read.
</p></dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>Read lines from file descriptor <var>fd</var> instead of the standard input.
</p></dd>
-<dt><code>-C</code></dt>
+<dt><span><code>-C</code></span></dt>
<dd><p>Evaluate <var>callback</var> each time <var>quantum</var> lines are read.
The <samp>-c</samp> option specifies <var>quantum</var>.
</p></dd>
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>Specify the number of lines read between each call to <var>callback</var>.
</p></dd>
</dl>
@@ -5118,9 +5411,8 @@ argument is supplied, <var>array</var> is invalid or unassignable, or <var>array
is not an indexed array.
</p>
</dd>
-<dt><code>printf</code></dt>
-<dd><span id="index-printf"></span>
-<div class="example">
+<dt id='index-printf'><span><code>printf</code><a href='#index-printf' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">printf [-v <var>var</var>] <var>format</var> [<var>arguments</var>]
</pre></div>
@@ -5138,16 +5430,20 @@ In addition to the standard <code>printf(1)</code> formats, <code>printf</code>
interprets the following extensions:
</p>
<dl compact="compact">
-<dt><code>%b</code></dt>
+<dt><span><code>%b</code></span></dt>
<dd><p>Causes <code>printf</code> to expand backslash escape sequences in the
corresponding <var>argument</var> in the same way as <code>echo -e</code>
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p></dd>
-<dt><code>%q</code></dt>
+<dt><span><code>%q</code></span></dt>
<dd><p>Causes <code>printf</code> to output the
corresponding <var>argument</var> in a format that can be reused as shell input.
</p></dd>
-<dt><code>%(<var>datefmt</var>)T</code></dt>
+<dt><span><code>%Q</code></span></dt>
+<dd><p>like <code>%q</code>, but applies any supplied precision to the <var>argument</var>
+before quoting it.
+</p></dd>
+<dt><span><code>%(<var>datefmt</var>)T</code></span></dt>
<dd><p>Causes <code>printf</code> to output the date-time string resulting from using
<var>datefmt</var> as a format string for <code>strftime</code>(3).
The corresponding <var>argument</var> is an integer representing the number of
@@ -5176,9 +5472,8 @@ appropriate, had been supplied. The return value is zero on success,
non-zero on failure.
</p>
</dd>
-<dt><code>read</code></dt>
-<dd><span id="index-read"></span>
-<div class="example">
+<dt id='index-read'><span><code>read</code><a href='#index-read' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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;]
</pre></div>
@@ -5203,38 +5498,38 @@ meaning for the next character read and for line continuation.
<p>Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-a <var>aname</var></code></dt>
+<dt><span><code>-a <var>aname</var></code></span></dt>
<dd><p>The words are assigned to sequential indices of the array variable
<var>aname</var>, starting at 0.
All elements are removed from <var>aname</var> before the assignment.
Other <var>name</var> arguments are ignored.
</p>
</dd>
-<dt><code>-d <var>delim</var></code></dt>
+<dt><span><code>-d <var>delim</var></code></span></dt>
<dd><p>The first character of <var>delim</var> is used to terminate the input line,
rather than newline.
If <var>delim</var> is the empty string, <code>read</code> will terminate a line
when it reads a NUL character.
</p>
</dd>
-<dt><code>-e</code></dt>
+<dt><span><code>-e</code></span></dt>
<dd><p>Readline (see <a href="#Command-Line-Editing">Command Line Editing</a>) is used to obtain the line.
Readline uses the current (or default, if line editing was not previously
active) editing settings, but uses Readline&rsquo;s default filename completion.
</p>
</dd>
-<dt><code>-i <var>text</var></code></dt>
+<dt><span><code>-i <var>text</var></code></span></dt>
<dd><p>If Readline is being used to read the line, <var>text</var> is placed into
the editing buffer before editing begins.
</p>
</dd>
-<dt><code>-n <var>nchars</var></code></dt>
+<dt><span><code>-n <var>nchars</var></code></span></dt>
<dd><p><code>read</code> returns after reading <var>nchars</var> characters rather than
waiting for a complete line of input, but honors a delimiter if fewer
than <var>nchars</var> characters are read before the delimiter.
</p>
</dd>
-<dt><code>-N <var>nchars</var></code></dt>
+<dt><span><code>-N <var>nchars</var></code></span></dt>
<dd><p><code>read</code> returns after reading exactly <var>nchars</var> characters rather
than waiting for a complete line of input, unless EOF is encountered or
<code>read</code> times out.
@@ -5246,25 +5541,25 @@ that the variable is assigned exactly the characters read
(with the exception of backslash; see the <samp>-r</samp> option below).
</p>
</dd>
-<dt><code>-p <var>prompt</var></code></dt>
+<dt><span><code>-p <var>prompt</var></code></span></dt>
<dd><p>Display <var>prompt</var>, without a trailing newline, before attempting
to read any input.
The prompt is displayed only if input is coming from a terminal.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>If this option is given, backslash does not act as an escape character.
The backslash is considered to be part of the line.
In particular, a backslash-newline pair may not then be used as a line
continuation.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Silent mode. If input is coming from a terminal, characters are
not echoed.
</p>
</dd>
-<dt><code>-t <var>timeout</var></code></dt>
+<dt><span><code>-t <var>timeout</var></code></span></dt>
<dd><p>Cause <code>read</code> to time out and return failure if a complete line of
input (or a specified number of characters)
is not read within <var>timeout</var> seconds.
@@ -5276,12 +5571,14 @@ 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 any data. The exit status is 0 if input is available on
-the specified file descriptor, non-zero otherwise.
+read any data.
+The exit status is 0 if input is available on the specified file descriptor,
+or the read will return EOF,
+non-zero otherwise.
The exit status is greater than 128 if the timeout is exceeded.
</p>
</dd>
-<dt><code>-u <var>fd</var></code></dt>
+<dt><span><code>-u <var>fd</var></code></span></dt>
<dd><p>Read input from file descriptor <var>fd</var>.
</p></dd>
</dl>
@@ -5296,9 +5593,8 @@ a variable assignment error (such as assigning to a readonly variable) occurs,
or an invalid file descriptor is supplied as the argument to <samp>-u</samp>.
</p>
</dd>
-<dt><code>readarray</code></dt>
-<dd><span id="index-readarray"></span>
-<div class="example">
+<dt id='index-readarray'><span><code>readarray</code><a href='#index-readarray' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>]
</pre></div>
@@ -5310,18 +5606,16 @@ if the <samp>-u</samp> option is supplied.
<p>A synonym for <code>mapfile</code>.
</p>
</dd>
-<dt><code>source</code></dt>
-<dd><span id="index-source"></span>
-<div class="example">
+<dt id='index-source'><span><code>source</code><a href='#index-source' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">source <var>filename</var>
</pre></div>
<p>A synonym for <code>.</code> (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
</p>
</dd>
-<dt><code>type</code></dt>
-<dd><span id="index-type"></span>
-<div class="example">
+<dt id='index-type'><span><code>type</code><a href='#index-type' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">type [-afptP] [<var>name</var> &hellip;]
</pre></div>
@@ -5354,13 +5648,12 @@ is not also used.
<p>If the <samp>-f</samp> option is used, <code>type</code> does not attempt to find
shell functions, as with the <code>command</code> builtin.
</p>
-<p>The return status is zero if all of the <var>names</var> are found, non-zero
+<p>The return status is zero if all of the <var>name</var>s are found, non-zero
if any are not found.
</p>
</dd>
-<dt><code>typeset</code></dt>
-<dd><span id="index-typeset"></span>
-<div class="example">
+<dt id='index-typeset'><span><code>typeset</code><a href='#index-typeset' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">typeset [-afFgrxilnrtux] [-p] [<var>name</var>[=<var>value</var>] &hellip;]
</pre></div>
@@ -5369,9 +5662,8 @@ shell.
It is a synonym for the <code>declare</code> builtin command.
</p>
</dd>
-<dt><code>ulimit</code></dt>
-<dd><span id="index-ulimit"></span>
-<div class="example">
+<dt id='index-ulimit'><span><code>ulimit</code><a href='#index-ulimit' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">ulimit [-HS] -a
ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [<var>limit</var>]
</pre></div>
@@ -5381,101 +5673,101 @@ started by the shell, on systems that allow such control. If an
option is given, it is interpreted as follows:
</p>
<dl compact="compact">
-<dt><code>-S</code></dt>
+<dt><span><code>-S</code></span></dt>
<dd><p>Change and report the soft limit associated with a resource.
</p>
</dd>
-<dt><code>-H</code></dt>
+<dt><span><code>-H</code></span></dt>
<dd><p>Change and report the hard limit associated with a resource.
</p>
</dd>
-<dt><code>-a</code></dt>
+<dt><span><code>-a</code></span></dt>
<dd><p>All current limits are reported; no limits are set.
</p>
</dd>
-<dt><code>-b</code></dt>
+<dt><span><code>-b</code></span></dt>
<dd><p>The maximum socket buffer size.
</p>
</dd>
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>The maximum size of core files created.
</p>
</dd>
-<dt><code>-d</code></dt>
+<dt><span><code>-d</code></span></dt>
<dd><p>The maximum size of a process&rsquo;s data segment.
</p>
</dd>
-<dt><code>-e</code></dt>
+<dt><span><code>-e</code></span></dt>
<dd><p>The maximum scheduling priority (&quot;nice&quot;).
</p>
</dd>
-<dt><code>-f</code></dt>
+<dt><span><code>-f</code></span></dt>
<dd><p>The maximum size of files written by the shell and its children.
</p>
</dd>
-<dt><code>-i</code></dt>
+<dt><span><code>-i</code></span></dt>
<dd><p>The maximum number of pending signals.
</p>
</dd>
-<dt><code>-k</code></dt>
+<dt><span><code>-k</code></span></dt>
<dd><p>The maximum number of kqueues that may be allocated.
</p>
</dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>The maximum size that may be locked into memory.
</p>
</dd>
-<dt><code>-m</code></dt>
+<dt><span><code>-m</code></span></dt>
<dd><p>The maximum resident set size (many systems do not honor this limit).
</p>
</dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>The maximum number of open file descriptors (most systems do not
allow this value to be set).
</p>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>The pipe buffer size.
</p>
</dd>
-<dt><code>-q</code></dt>
+<dt><span><code>-q</code></span></dt>
<dd><p>The maximum number of bytes in <small>POSIX</small> message queues.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>The maximum real-time scheduling priority.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>The maximum stack size.
</p>
</dd>
-<dt><code>-t</code></dt>
+<dt><span><code>-t</code></span></dt>
<dd><p>The maximum amount of cpu time in seconds.
</p>
</dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>The maximum number of processes available to a single user.
</p>
</dd>
-<dt><code>-v</code></dt>
+<dt><span><code>-v</code></span></dt>
<dd><p>The maximum amount of virtual memory available to the shell, and, on
some systems, to its children.
</p>
</dd>
-<dt><code>-x</code></dt>
+<dt><span><code>-x</code></span></dt>
<dd><p>The maximum number of file locks.
</p>
</dd>
-<dt><code>-P</code></dt>
+<dt><span><code>-P</code></span></dt>
<dd><p>The maximum number of pseudoterminals.
</p>
</dd>
-<dt><code>-R</code></dt>
+<dt><span><code>-R</code></span></dt>
<dd><p>The maximum time a real-time process can run before blocking, in microseconds.
</p>
</dd>
-<dt><code>-T</code></dt>
+<dt><span><code>-T</code></span></dt>
<dd><p>The maximum number of threads.
</p></dd>
</dl>
@@ -5511,9 +5803,8 @@ and, when in <small>POSIX</small> Mode (see <a href="#Bash-POSIX-Mode">Bash POSI
or an error occurs while setting a new limit.
</p>
</dd>
-<dt><code>unalias</code></dt>
-<dd><span id="index-unalias"></span>
-<div class="example">
+<dt id='index-unalias'><span><code>unalias</code><a href='#index-unalias' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">unalias [-a] [<var>name</var> &hellip; ]
</pre></div>
@@ -5524,22 +5815,22 @@ Aliases are described in <a href="#Aliases">Aliases</a>.
</dl>
<hr>
-<span id="Modifying-Shell-Behavior"></span><div class="header">
+</div>
+<div class="section" id="Modifying-Shell-Behavior">
+<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>
+Next: <a href="#Special-Builtins" accesskey="n" rel="next">Special Builtins</a>, Previous: <a href="#Bash-Builtins" accesskey="p" rel="prev">Bash Builtin Commands</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>
<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
- 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.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#The-Set-Builtin" accesskey="1">The Set Builtin</a></li>
+<li><a href="#The-Shopt-Builtin" accesskey="2">The Shopt Builtin</a></li>
+</ul>
<hr>
-<span id="The-Set-Builtin"></span><div class="header">
+<div class="subsection" id="The-Set-Builtin">
+<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>
@@ -5550,11 +5841,10 @@ allows you to change the values of shell options and set the positional
parameters, or to display the names and values of shell variables.
</p>
<dl compact="compact">
-<dt><code>set</code></dt>
-<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;]
+<dt id='index-set'><span><code>set</code><a href='#index-set' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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;]
</pre></div>
<p>If no options or arguments are supplied, <code>set</code> displays the names
@@ -5568,22 +5858,22 @@ In <small>POSIX</small> mode, only shell variables are listed.
Options, if specified, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-a</code></dt>
+<dt><span><code>-a</code></span></dt>
<dd><p>Each variable or function that is created or modified is given the
export attribute and marked for export to the environment of
subsequent commands.
</p>
</dd>
-<dt><code>-b</code></dt>
+<dt><span><code>-b</code></span></dt>
<dd><p>Cause the status of terminated background jobs to be reported
immediately, rather than before printing the next primary prompt.
</p>
</dd>
-<dt><code>-e</code></dt>
+<dt><span><code>-e</code></span></dt>
<dd><p>Exit immediately if
a pipeline (see <a href="#Pipelines">Pipelines</a>), which may consist of a single simple command
(see <a href="#Simple-Commands">Simple Commands</a>),
-a list (see <a href="#Lists">Lists</a>),
+a list (see <a href="#Lists">Lists of Commands</a>),
or a compound command (see <a href="#Compound-Commands">Compound Commands</a>)
returns a non-zero status.
The shell does not exit if the command that fails is part of the
@@ -5613,129 +5903,129 @@ effect until the compound command or the command containing the function
call completes.
</p>
</dd>
-<dt><code>-f</code></dt>
+<dt><span><code>-f</code></span></dt>
<dd><p>Disable filename expansion (globbing).
</p>
</dd>
-<dt><code>-h</code></dt>
+<dt><span><code>-h</code></span></dt>
<dd><p>Locate and remember (hash) commands as they are looked up for execution.
This option is enabled by default.
</p>
</dd>
-<dt><code>-k</code></dt>
+<dt><span><code>-k</code></span></dt>
<dd><p>All arguments in the form of assignment statements are placed
in the environment for a command, not just those that precede
the command name.
</p>
</dd>
-<dt><code>-m</code></dt>
+<dt><span><code>-m</code></span></dt>
<dd><p>Job control is enabled (see <a href="#Job-Control">Job Control</a>).
All processes run in a separate process group.
When a background job completes, the shell prints a line
containing its exit status.
</p>
</dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Read commands but do not execute them.
This may be used to check a script for syntax errors.
This option is ignored by interactive shells.
</p>
</dd>
-<dt><code>-o <var>option-name</var></code></dt>
+<dt><span><code>-o <var>option-name</var></code></span></dt>
<dd>
<p>Set the option corresponding to <var>option-name</var>:
</p>
<dl compact="compact">
-<dt><code>allexport</code></dt>
+<dt><span><code>allexport</code></span></dt>
<dd><p>Same as <code>-a</code>.
</p>
</dd>
-<dt><code>braceexpand</code></dt>
+<dt><span><code>braceexpand</code></span></dt>
<dd><p>Same as <code>-B</code>.
</p>
</dd>
-<dt><code>emacs</code></dt>
+<dt><span><code>emacs</code></span></dt>
<dd><p>Use an <code>emacs</code>-style line editing interface (see <a href="#Command-Line-Editing">Command Line Editing</a>).
This also affects the editing interface used for <code>read -e</code>.
</p>
</dd>
-<dt><code>errexit</code></dt>
+<dt><span><code>errexit</code></span></dt>
<dd><p>Same as <code>-e</code>.
</p>
</dd>
-<dt><code>errtrace</code></dt>
+<dt><span><code>errtrace</code></span></dt>
<dd><p>Same as <code>-E</code>.
</p>
</dd>
-<dt><code>functrace</code></dt>
+<dt><span><code>functrace</code></span></dt>
<dd><p>Same as <code>-T</code>.
</p>
</dd>
-<dt><code>hashall</code></dt>
+<dt><span><code>hashall</code></span></dt>
<dd><p>Same as <code>-h</code>.
</p>
</dd>
-<dt><code>histexpand</code></dt>
+<dt><span><code>histexpand</code></span></dt>
<dd><p>Same as <code>-H</code>.
</p>
</dd>
-<dt><code>history</code></dt>
+<dt><span><code>history</code></span></dt>
<dd><p>Enable command history, as described in <a href="#Bash-History-Facilities">Bash History Facilities</a>.
This option is on by default in interactive shells.
</p>
</dd>
-<dt><code>ignoreeof</code></dt>
+<dt><span><code>ignoreeof</code></span></dt>
<dd><p>An interactive shell will not exit upon reading EOF.
</p>
</dd>
-<dt><code>keyword</code></dt>
+<dt><span><code>keyword</code></span></dt>
<dd><p>Same as <code>-k</code>.
</p>
</dd>
-<dt><code>monitor</code></dt>
+<dt><span><code>monitor</code></span></dt>
<dd><p>Same as <code>-m</code>.
</p>
</dd>
-<dt><code>noclobber</code></dt>
+<dt><span><code>noclobber</code></span></dt>
<dd><p>Same as <code>-C</code>.
</p>
</dd>
-<dt><code>noexec</code></dt>
+<dt><span><code>noexec</code></span></dt>
<dd><p>Same as <code>-n</code>.
</p>
</dd>
-<dt><code>noglob</code></dt>
+<dt><span><code>noglob</code></span></dt>
<dd><p>Same as <code>-f</code>.
</p>
</dd>
-<dt><code>nolog</code></dt>
+<dt><span><code>nolog</code></span></dt>
<dd><p>Currently ignored.
</p>
</dd>
-<dt><code>notify</code></dt>
+<dt><span><code>notify</code></span></dt>
<dd><p>Same as <code>-b</code>.
</p>
</dd>
-<dt><code>nounset</code></dt>
+<dt><span><code>nounset</code></span></dt>
<dd><p>Same as <code>-u</code>.
</p>
</dd>
-<dt><code>onecmd</code></dt>
+<dt><span><code>onecmd</code></span></dt>
<dd><p>Same as <code>-t</code>.
</p>
</dd>
-<dt><code>physical</code></dt>
+<dt><span><code>physical</code></span></dt>
<dd><p>Same as <code>-P</code>.
</p>
</dd>
-<dt><code>pipefail</code></dt>
+<dt><span><code>pipefail</code></span></dt>
<dd><p>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.
</p>
</dd>
-<dt><code>posix</code></dt>
+<dt><span><code>posix</code></span></dt>
<dd><p>Change the behavior of Bash where the default operation differs
from the <small>POSIX</small> standard to match the standard
(see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
@@ -5743,26 +6033,26 @@ This is intended to make Bash behave as a strict superset of that
standard.
</p>
</dd>
-<dt><code>privileged</code></dt>
+<dt><span><code>privileged</code></span></dt>
<dd><p>Same as <code>-p</code>.
</p>
</dd>
-<dt><code>verbose</code></dt>
+<dt><span><code>verbose</code></span></dt>
<dd><p>Same as <code>-v</code>.
</p>
</dd>
-<dt><code>vi</code></dt>
+<dt><span><code>vi</code></span></dt>
<dd><p>Use a <code>vi</code>-style line editing interface.
This also affects the editing interface used for <code>read -e</code>.
</p>
</dd>
-<dt><code>xtrace</code></dt>
+<dt><span><code>xtrace</code></span></dt>
<dd><p>Same as <code>-x</code>.
</p></dd>
</dl>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>Turn on privileged mode.
In this mode, the <code>$BASH_ENV</code> and <code>$ENV</code> files are not
processed, shell functions are not inherited from the environment,
@@ -5777,22 +6067,29 @@ Turning this option off causes the effective user
and group ids to be set to the real user and group ids.
</p>
</dd>
-<dt><code>-t</code></dt>
+<dt><span><code>-r</code></span></dt>
+<dd><p>Enable restricted shell mode.
+This option cannot be unset once it has been set.
+</p>
+</dd>
+<dt><span><code>-t</code></span></dt>
<dd><p>Exit after reading and executing one command.
</p>
</dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>Treat unset variables and parameters other than the special parameters
-&lsquo;<samp>@</samp>&rsquo; or &lsquo;<samp>*</samp>&rsquo; as an error when performing parameter expansion.
+&lsquo;<samp>@</samp>&rsquo; or &lsquo;<samp>*</samp>&rsquo;,
+or array variables subscripted with &lsquo;<samp>@</samp>&rsquo; or &lsquo;<samp>*</samp>&rsquo;,
+as an error when performing parameter expansion.
An error message will be written to the standard error, and a non-interactive
shell will exit.
</p>
</dd>
-<dt><code>-v</code></dt>
+<dt><span><code>-v</code></span></dt>
<dd><p>Print shell input lines as they are read.
</p>
</dd>
-<dt><code>-x</code></dt>
+<dt><span><code>-x</code></span></dt>
<dd><p>Print a trace of simple commands, <code>for</code> commands, <code>case</code>
commands, <code>select</code> commands, and arithmetic <code>for</code> commands
and their arguments or associated word lists after they are
@@ -5801,28 +6098,28 @@ variable is expanded and the resultant value is printed before
the command and its expanded arguments.
</p>
</dd>
-<dt><code>-B</code></dt>
+<dt><span><code>-B</code></span></dt>
<dd><p>The shell will perform brace expansion (see <a href="#Brace-Expansion">Brace Expansion</a>).
This option is on by default.
</p>
</dd>
-<dt><code>-C</code></dt>
+<dt><span><code>-C</code></span></dt>
<dd><p>Prevent output redirection using &lsquo;<samp>&gt;</samp>&rsquo;, &lsquo;<samp>&gt;&amp;</samp>&rsquo;, and &lsquo;<samp>&lt;&gt;</samp>&rsquo;
from overwriting existing files.
</p>
</dd>
-<dt><code>-E</code></dt>
+<dt><span><code>-E</code></span></dt>
<dd><p>If set, any trap on <code>ERR</code> is inherited by shell functions, command
substitutions, and commands executed in a subshell environment.
The <code>ERR</code> trap is normally not inherited in such cases.
</p>
</dd>
-<dt><code>-H</code></dt>
-<dd><p>Enable &lsquo;<samp>!</samp>&rsquo; style history substitution (see <a href="#History-Interaction">History Interaction</a>).
+<dt><span><code>-H</code></span></dt>
+<dd><p>Enable &lsquo;<samp>!</samp>&rsquo; style history substitution (see <a href="#History-Interaction">History Expansion</a>).
This option is on by default for interactive shells.
</p>
</dd>
-<dt><code>-P</code></dt>
+<dt><span><code>-P</code></span></dt>
<dd><p>If set, do not resolve symbolic links when performing commands such as
<code>cd</code> which change the current directory. The physical directory
is used instead. By default, Bash follows
@@ -5847,7 +6144,7 @@ $ cd ..; pwd
</pre></div>
</dd>
-<dt><code>-T</code></dt>
+<dt><span><code>-T</code></span></dt>
<dd><p>If set, any trap on <code>DEBUG</code> and <code>RETURN</code> are inherited by
shell functions, command substitutions, and commands executed
in a subshell environment.
@@ -5855,13 +6152,13 @@ The <code>DEBUG</code> and <code>RETURN</code> traps are normally not inherited
in such cases.
</p>
</dd>
-<dt><code>--</code></dt>
+<dt><span><code>--</code></span></dt>
<dd><p>If no arguments follow this option, then the positional parameters are
unset. Otherwise, the positional parameters are set to the
<var>arguments</var>, even if some of them begin with a &lsquo;<samp>-</samp>&rsquo;.
</p>
</dd>
-<dt><code>-</code></dt>
+<dt><span><code>-</code></span></dt>
<dd><p>Signal the end of options, cause all remaining <var>arguments</var>
to be assigned to the positional parameters. The <samp>-x</samp>
and <samp>-v</samp> options are turned off.
@@ -5882,7 +6179,9 @@ The special parameter <code>#</code> is set to N.
</dl>
<hr>
-<span id="The-Shopt-Builtin"></span><div class="header">
+</div>
+<div class="subsection" id="The-Shopt-Builtin">
+<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>
@@ -5891,9 +6190,8 @@ Previous: <a href="#The-Set-Builtin" accesskey="p" rel="prev">The Set Builtin</a
<p>This builtin allows you to change additional shell optional behavior.
</p>
<dl compact="compact">
-<dt><code>shopt</code></dt>
-<dd><span id="index-shopt"></span>
-<div class="example">
+<dt id='index-shopt'><span><code>shopt</code><a href='#index-shopt' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">shopt [-pqsu] [-o] [<var>optname</var> &hellip;]
</pre></div>
@@ -5903,29 +6201,29 @@ The settings can be either those listed below, or, if the
option to the <code>set</code> builtin command (see <a href="#The-Set-Builtin">The Set Builtin</a>).
With no options, or with the <samp>-p</samp> option, a list of all settable
options is displayed, with an indication of whether or not each is set;
-if <var>optnames</var> are supplied, the output is restricted to those options.
+if <var>optname</var>s are supplied, the output is restricted to those options.
The <samp>-p</samp> option causes output to be displayed in a form that
may be reused as input.
Other options have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Enable (set) each <var>optname</var>.
</p>
</dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>Disable (unset) each <var>optname</var>.
</p>
</dd>
-<dt><code>-q</code></dt>
+<dt><span><code>-q</code></span></dt>
<dd><p>Suppresses normal output; the return status
indicates whether the <var>optname</var> is set or unset.
If multiple <var>optname</var> arguments are given with <samp>-q</samp>,
-the return status is zero if all <var>optnames</var> are enabled;
+the return status is zero if all <var>optname</var>s are enabled;
non-zero otherwise.
</p>
</dd>
-<dt><code>-o</code></dt>
+<dt><span><code>-o</code></span></dt>
<dd><p>Restricts the values of
<var>optname</var> to be those defined for the <samp>-o</samp> option to the
<code>set</code> builtin (see <a href="#The-Set-Builtin">The Set Builtin</a>).
@@ -5939,33 +6237,33 @@ those options which are set or unset, respectively.
<p>Unless otherwise noted, the <code>shopt</code> options are disabled (off)
by default.
</p>
-<p>The return status when listing options is zero if all <var>optnames</var>
+<p>The return status when listing options is zero if all <var>optname</var>s
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>
<p>The list of <code>shopt</code> options is:
</p><dl compact="compact">
-<dt><code>assoc_expand_once</code></dt>
+<dt><span><code>assoc_expand_once</code></span></dt>
<dd><p>If set, the shell suppresses multiple evaluation of associative array
subscripts during arithmetic expression evaluation, while executing
builtins that can perform variable assignments,
and while executing builtins that perform array dereferencing.
</p>
</dd>
-<dt><code>autocd</code></dt>
+<dt><span><code>autocd</code></span></dt>
<dd><p>If set, a command name that is the name of a directory is executed as if
it were the argument to the <code>cd</code> command.
This option is only used by interactive shells.
</p>
</dd>
-<dt><code>cdable_vars</code></dt>
+<dt><span><code>cdable_vars</code></span></dt>
<dd><p>If this is set, an argument to the <code>cd</code> builtin command that
is not a directory is assumed to be the name of a variable whose
value is the directory to change to.
</p>
</dd>
-<dt><code>cdspell</code></dt>
+<dt><span><code>cdspell</code></span></dt>
<dd><p>If set, minor errors in the spelling of a directory component in a
<code>cd</code> command will be corrected.
The errors checked for are transposed characters,
@@ -5975,13 +6273,13 @@ and the command proceeds.
This option is only used by interactive shells.
</p>
</dd>
-<dt><code>checkhash</code></dt>
+<dt><span><code>checkhash</code></span></dt>
<dd><p>If this is set, Bash checks that a command found in the hash
table exists before trying to execute it. If a hashed command no
longer exists, a normal path search is performed.
</p>
</dd>
-<dt><code>checkjobs</code></dt>
+<dt><span><code>checkjobs</code></span></dt>
<dd><p>If set, Bash lists the status of any stopped and running jobs before
exiting an interactive shell. If any jobs are running, this causes
the exit to be deferred until a second exit is attempted without an
@@ -5989,14 +6287,14 @@ intervening command (see <a href="#Job-Control">Job Control</a>).
The shell always postpones exiting if any jobs are stopped.
</p>
</dd>
-<dt><code>checkwinsize</code></dt>
+<dt><span><code>checkwinsize</code></span></dt>
<dd><p>If set, Bash checks the window size after each external (non-builtin)
command and, if necessary, updates the values of
<code>LINES</code> and <code>COLUMNS</code>.
This option is enabled by default.
</p>
</dd>
-<dt><code>cmdhist</code></dt>
+<dt><span><code>cmdhist</code></span></dt>
<dd><p>If set, Bash
attempts to save all lines of a multiple-line
command in the same history entry. This allows
@@ -6005,18 +6303,18 @@ This option is enabled by default, but only has an effect if command
history is enabled (see <a href="#Bash-History-Facilities">Bash History Facilities</a>).
</p>
</dd>
-<dt><code>compat31</code></dt>
-<dt><code>compat32</code></dt>
-<dt><code>compat40</code></dt>
-<dt><code>compat41</code></dt>
-<dt><code>compat42</code></dt>
-<dt><code>compat43</code></dt>
-<dt><code>compat44</code></dt>
+<dt><span><code>compat31</code></span></dt>
+<dt><span><code>compat32</code></span></dt>
+<dt><span><code>compat40</code></span></dt>
+<dt><span><code>compat41</code></span></dt>
+<dt><span><code>compat42</code></span></dt>
+<dt><span><code>compat43</code></span></dt>
+<dt><span><code>compat44</code></span></dt>
<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>
+<dt><span><code>complete_fullquote</code></span></dt>
<dd><p>If set, Bash
quotes all shell metacharacters in filenames and directory names when
performing completion.
@@ -6034,41 +6332,41 @@ This variable is set by default, which is the default Bash behavior in
versions through 4.2.
</p>
</dd>
-<dt><code>direxpand</code></dt>
+<dt><span><code>direxpand</code></span></dt>
<dd><p>If set, Bash
replaces directory names with the results of word expansion when performing
-filename completion. This changes the contents of the readline editing
+filename completion. This changes the contents of the Readline editing
buffer.
If not set, Bash attempts to preserve what the user typed.
</p>
</dd>
-<dt><code>dirspell</code></dt>
+<dt><span><code>dirspell</code></span></dt>
<dd><p>If set, Bash
attempts spelling correction on directory names during word completion
if the directory name initially supplied does not exist.
</p>
</dd>
-<dt><code>dotglob</code></dt>
+<dt><span><code>dotglob</code></span></dt>
<dd><p>If set, Bash includes filenames beginning with a &lsquo;.&rsquo; in
the results of filename expansion.
The filenames &lsquo;<samp>.</samp>&rsquo; and &lsquo;<samp>..</samp>&rsquo; must always be matched explicitly,
even if <code>dotglob</code> is set.
</p>
</dd>
-<dt><code>execfail</code></dt>
+<dt><span><code>execfail</code></span></dt>
<dd><p>If this is set, a non-interactive shell will not exit if
it cannot execute the file specified as an argument to the <code>exec</code>
builtin command. An interactive shell does not exit if <code>exec</code>
fails.
</p>
</dd>
-<dt><code>expand_aliases</code></dt>
+<dt><span><code>expand_aliases</code></span></dt>
<dd><p>If set, aliases are expanded as described below under Aliases,
<a href="#Aliases">Aliases</a>.
This option is enabled by default for interactive shells.
</p>
</dd>
-<dt><code>extdebug</code></dt>
+<dt><span><code>extdebug</code></span></dt>
<dd><p>If set at shell invocation,
or in a shell startup file,
arrange to execute the debugger profile
@@ -6076,7 +6374,7 @@ before the shell starts, identical to the <samp>--debugger</samp> option.
If set after invocation, behavior intended for use by debuggers is enabled:
</p>
<ol>
-<li> The <samp>-F</samp> option to the <code>declare</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>)
+<li> The <samp>-F</samp> option to the <code>declare</code> builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>)
displays the source file name and line number corresponding to each function
name supplied as an argument.
@@ -6101,23 +6399,23 @@ subshells invoked with <code>( <var>command</var> )</code> inherit the
</li></ol>
</dd>
-<dt><code>extglob</code></dt>
+<dt><span><code>extglob</code></span></dt>
<dd><p>If set, the extended pattern matching features described above
(see <a href="#Pattern-Matching">Pattern Matching</a>) are enabled.
</p>
</dd>
-<dt><code>extquote</code></dt>
+<dt><span><code>extquote</code></span></dt>
<dd><p>If set, <code>$'<var>string</var>'</code> and <code>$&quot;<var>string</var>&quot;</code> quoting is
performed within <code>${<var>parameter</var>}</code> expansions
enclosed in double quotes. This option is enabled by default.
</p>
</dd>
-<dt><code>failglob</code></dt>
+<dt><span><code>failglob</code></span></dt>
<dd><p>If set, patterns which fail to match filenames during filename expansion
result in an expansion error.
</p>
</dd>
-<dt><code>force_fignore</code></dt>
+<dt><span><code>force_fignore</code></span></dt>
<dd><p>If set, the suffixes specified by the <code>FIGNORE</code> shell variable
cause words to be ignored when performing word completion even if
the ignored words are the only possible completions.
@@ -6125,7 +6423,7 @@ See <a href="#Bash-Variables">Bash Variables</a>, for a description of <code>FIG
This option is enabled by default.
</p>
</dd>
-<dt><code>globasciiranges</code></dt>
+<dt><span><code>globasciiranges</code></span></dt>
<dd><p>If set, range expressions used in pattern matching bracket expressions
(see <a href="#Pattern-Matching">Pattern Matching</a>)
behave as if in the traditional C locale when performing
@@ -6135,136 +6433,158 @@ is not taken into account, so
and upper-case and lower-case ASCII characters will collate together.
</p>
</dd>
-<dt><code>globstar</code></dt>
+<dt><span><code>globskipdots</code></span></dt>
+<dd><p>If set, filename expansion will never match the filenames
+&lsquo;<samp>.</samp>&rsquo; and &lsquo;<samp>..</samp>&rsquo;,
+even if the pattern begins with a &lsquo;<samp>.</samp>&rsquo;.
+This option is enabled by default.
+</p>
+</dd>
+<dt><span><code>globstar</code></span></dt>
<dd><p>If set, the pattern &lsquo;<samp>**</samp>&rsquo; used in a filename expansion context will
match all files and zero or more directories and subdirectories.
If the pattern is followed by a &lsquo;<samp>/</samp>&rsquo;, only directories and
subdirectories match.
</p>
</dd>
-<dt><code>gnu_errfmt</code></dt>
+<dt><span><code>gnu_errfmt</code></span></dt>
<dd><p>If set, shell error messages are written in the standard <small>GNU</small> error
message format.
</p>
</dd>
-<dt><code>histappend</code></dt>
+<dt><span><code>histappend</code></span></dt>
<dd><p>If set, the history list is appended to the file named by the value
of the <code>HISTFILE</code>
variable when the shell exits, rather than overwriting the file.
</p>
</dd>
-<dt><code>histreedit</code></dt>
+<dt><span><code>histreedit</code></span></dt>
<dd><p>If set, and Readline
is being used, a user is given the opportunity to re-edit a
failed history substitution.
</p>
</dd>
-<dt><code>histverify</code></dt>
+<dt><span><code>histverify</code></span></dt>
<dd><p>If set, and Readline
is being used, the results of history substitution are not immediately
passed to the shell parser. Instead, the resulting line is loaded into
the Readline editing buffer, allowing further modification.
</p>
</dd>
-<dt><code>hostcomplete</code></dt>
+<dt><span><code>hostcomplete</code></span></dt>
<dd><p>If set, and Readline is being used, Bash will attempt to perform
hostname completion when a word containing a &lsquo;<samp>@</samp>&rsquo; is being
-completed (see <a href="#Commands-For-Completion">Commands For Completion</a>). This option is enabled
+completed (see <a href="#Commands-For-Completion">Letting Readline Type For You</a>). This option is enabled
by default.
</p>
</dd>
-<dt><code>huponexit</code></dt>
+<dt><span><code>huponexit</code></span></dt>
<dd><p>If set, Bash will send <code>SIGHUP</code> to all jobs when an interactive
login shell exits (see <a href="#Signals">Signals</a>).
</p>
</dd>
-<dt><code>inherit_errexit</code></dt>
+<dt><span><code>inherit_errexit</code></span></dt>
<dd><p>If set, command substitution inherits the value of the <code>errexit</code> option,
instead of unsetting it in the subshell environment.
This option is enabled when <small>POSIX</small> mode is enabled.
</p>
</dd>
-<dt><code>interactive_comments</code></dt>
+<dt><span><code>interactive_comments</code></span></dt>
<dd><p>Allow a word beginning with &lsquo;<samp>#</samp>&rsquo;
to cause that word and all remaining characters on that
line to be ignored in an interactive shell.
This option is enabled by default.
</p>
</dd>
-<dt><code>lastpipe</code></dt>
+<dt><span><code>lastpipe</code></span></dt>
<dd><p>If set, and job control is not active, the shell runs the last command of
a pipeline not executed in the background in the current shell environment.
</p>
</dd>
-<dt><code>lithist</code></dt>
+<dt><span><code>lithist</code></span></dt>
<dd><p>If enabled, and the <code>cmdhist</code>
option is enabled, multi-line commands are saved to the history with
embedded newlines rather than using semicolon separators where possible.
</p>
</dd>
-<dt><code>localvar_inherit</code></dt>
+<dt><span><code>localvar_inherit</code></span></dt>
<dd><p>If set, local variables inherit the value and attributes of a variable of
the same name that exists at a previous scope before any new value is
-assigned. The <var>nameref</var> attribute is not inherited.
+assigned. The <code>nameref</code> attribute is not inherited.
</p>
</dd>
-<dt><code>localvar_unset</code></dt>
+<dt><span><code>localvar_unset</code></span></dt>
<dd><p>If set, calling <code>unset</code> on local variables in previous function scopes
marks them so subsequent lookups find them unset until that function
returns. This is identical to the behavior of unsetting local variables
at the current function scope.
</p>
</dd>
-<dt><code>login_shell</code></dt>
+<dt><span><code>login_shell</code></span></dt>
<dd><p>The shell sets this option if it is started as a login shell
(see <a href="#Invoking-Bash">Invoking Bash</a>).
The value may not be changed.
</p>
</dd>
-<dt><code>mailwarn</code></dt>
+<dt><span><code>mailwarn</code></span></dt>
<dd><p>If set, and a file that Bash is checking for mail has been
accessed since the last time it was checked, the message
<code>&quot;The mail in <var>mailfile</var> has been read&quot;</code> is displayed.
</p>
</dd>
-<dt><code>no_empty_cmd_completion</code></dt>
+<dt><span><code>no_empty_cmd_completion</code></span></dt>
<dd><p>If set, and Readline is being used, Bash will not attempt to search
the <code>PATH</code> for possible completions when completion is attempted
on an empty line.
</p>
</dd>
-<dt><code>nocaseglob</code></dt>
+<dt><span><code>nocaseglob</code></span></dt>
<dd><p>If set, Bash matches filenames in a case-insensitive fashion when
performing filename expansion.
</p>
</dd>
-<dt><code>nocasematch</code></dt>
+<dt><span><code>nocasematch</code></span></dt>
<dd><p>If set, Bash matches patterns in a case-insensitive fashion when
performing matching while executing <code>case</code> or <code>[[</code>
-conditional commands,
+conditional commands (see <a href="#Conditional-Constructs">Conditional Constructs</a>,
when performing pattern substitution word expansions,
or when filtering possible completions as part of programmable completion.
</p>
</dd>
-<dt><code>nullglob</code></dt>
+<dt><span><code>noexpand_translation</code></span></dt>
+<dd><p>If set, Bash
+encloses the translated results of $&quot;...&quot; quoting in single quotes
+instead of double quotes.
+If the string is not translated, this has no effect.
+</p>
+</dd>
+<dt><span><code>nullglob</code></span></dt>
<dd><p>If set, Bash allows filename patterns which match no
files to expand to a null string, rather than themselves.
</p>
</dd>
-<dt><code>progcomp</code></dt>
+<dt><span><code>patsub_replacement</code></span></dt>
+<dd><p>If set, Bash
+expands occurrences of &lsquo;<samp>&amp;</samp>&rsquo; in the replacement string of pattern
+substitution to the text matched by the pattern, as described
+above (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
+This option is enabled by default.
+</p>
+</dd>
+<dt><span><code>progcomp</code></span></dt>
<dd><p>If set, the programmable completion facilities
(see <a href="#Programmable-Completion">Programmable Completion</a>) are enabled.
This option is enabled by default.
</p>
</dd>
-<dt><code>progcomp_alias</code></dt>
+<dt><span><code>progcomp_alias</code></span></dt>
<dd><p>If set, and programmable completion is enabled, Bash treats a command
name that doesn&rsquo;t have any completions as a possible alias and attempts
alias expansion. If it has an alias, Bash attempts programmable
completion using the command word resulting from the expanded alias.
</p>
</dd>
-<dt><code>promptvars</code></dt>
+<dt><span><code>promptvars</code></span></dt>
<dd><p>If set, prompt strings undergo
parameter expansion, command substitution, arithmetic
expansion, and quote removal after being expanded
@@ -6272,7 +6592,7 @@ as described below (see <a href="#Controlling-the-Prompt">Controlling the Prompt
This option is enabled by default.
</p>
</dd>
-<dt><code>restricted_shell</code></dt>
+<dt><span><code>restricted_shell</code></span></dt>
<dd><p>The shell sets this option if it is started in restricted mode
(see <a href="#The-Restricted-Shell">The Restricted Shell</a>).
The value may not be changed.
@@ -6280,19 +6600,25 @@ This is not reset when the startup files are executed, allowing
the startup files to discover whether or not a shell is restricted.
</p>
</dd>
-<dt><code>shift_verbose</code></dt>
+<dt><span><code>shift_verbose</code></span></dt>
<dd><p>If this is set, the <code>shift</code>
builtin prints an error message when the shift count exceeds the
number of positional parameters.
</p>
</dd>
-<dt><code>sourcepath</code></dt>
-<dd><p>If set, the <code>source</code> builtin uses the value of <code>PATH</code>
+<dt><span><code>sourcepath</code></span></dt>
+<dd><p>If set, the <code>.</code> (<code>source</code>) builtin uses the value of <code>PATH</code>
to find the directory containing the file supplied as an argument.
This option is enabled by default.
</p>
</dd>
-<dt><code>xpg_echo</code></dt>
+<dt><span><code>varredir_close</code></span></dt>
+<dd><p>If set, the shell automatically closes file descriptors assigned using the
+<code>{varname}</code> redirection syntax (see <a href="#Redirections">Redirections</a>) instead of
+leaving them open when the command completes.
+</p>
+</dd>
+<dt><span><code>xpg_echo</code></span></dt>
<dd><p>If set, the <code>echo</code> builtin expands backslash-escape sequences
by default.
</p>
@@ -6302,7 +6628,10 @@ by default.
</dl>
<hr>
-<span id="Special-Builtins"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Special-Builtins">
+<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>
@@ -6334,25 +6663,26 @@ shift trap unset<!-- /@w -->
</pre></div>
<hr>
-<span id="Shell-Variables"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Shell-Variables">
+<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>
+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">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-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
- 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.
-</td></tr>
-</table>
<p>This chapter describes the shell variables that Bash uses.
Bash automatically assigns default values to a number of variables.
</p>
+<ul class="section-toc">
+<li><a href="#Bourne-Shell-Variables" accesskey="1">Bourne Shell Variables</a></li>
+<li><a href="#Bash-Variables" accesskey="2">Bash Variables</a></li>
+</ul>
<hr>
-<span id="Bourne-Shell-Variables"></span><div class="header">
+<div class="section" id="Bourne-Shell-Variables">
+<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>
@@ -6362,41 +6692,31 @@ Next: <a href="#Bash-Variables" accesskey="n" rel="next">Bash Variables</a>, Up:
In some cases, Bash assigns a default value to the variable.
</p>
<dl compact="compact">
-<dt><code>CDPATH</code>
-<span id="index-CDPATH"></span>
-</dt>
+<dt id='index-CDPATH'><span><code>CDPATH</code><a href='#index-CDPATH' class='copiable-anchor'> &para;</a></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>
-<span id="index-HOME"></span>
-</dt>
+<dt id='index-HOME'><span><code>HOME</code><a href='#index-HOME' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The current user&rsquo;s home directory; the default for the <code>cd</code> builtin
command.
The value of this variable is also used by tilde expansion
(see <a href="#Tilde-Expansion">Tilde Expansion</a>).
</p>
</dd>
-<dt><code>IFS</code>
-<span id="index-IFS"></span>
-</dt>
+<dt id='index-IFS'><span><code>IFS</code><a href='#index-IFS' class='copiable-anchor'> &para;</a></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>
-<span id="index-MAIL"></span>
-</dt>
+<dt id='index-MAIL'><span><code>MAIL</code><a href='#index-MAIL' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>If this parameter is set to a filename or directory name
and the <code>MAILPATH</code> variable
is not set, Bash informs the user of the arrival of mail in
the specified file or Maildir-format directory.
</p>
</dd>
-<dt><code>MAILPATH</code>
-<span id="index-MAILPATH"></span>
-</dt>
+<dt id='index-MAILPATH'><span><code>MAILPATH</code><a href='#index-MAILPATH' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A colon-separated list of filenames which the shell periodically checks
for new mail.
Each list entry can specify the message that is printed when new mail
@@ -6406,21 +6726,15 @@ When used in the text of the message, <code>$_</code> expands to the name of
the current mail file.
</p>
</dd>
-<dt><code>OPTARG</code>
-<span id="index-OPTARG"></span>
-</dt>
+<dt id='index-OPTARG'><span><code>OPTARG</code><a href='#index-OPTARG' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The value of the last option argument processed by the <code>getopts</code> builtin.
</p>
</dd>
-<dt><code>OPTIND</code>
-<span id="index-OPTIND"></span>
-</dt>
+<dt id='index-OPTIND'><span><code>OPTIND</code><a href='#index-OPTIND' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The index of the last option argument processed by the <code>getopts</code> builtin.
</p>
</dd>
-<dt><code>PATH</code>
-<span id="index-PATH"></span>
-</dt>
+<dt id='index-PATH'><span><code>PATH</code><a href='#index-PATH' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A colon-separated list of directories in which the shell looks for
commands.
A zero-length (null) directory name in the value of <code>PATH</code> indicates the
@@ -6429,17 +6743,13 @@ A null directory name may appear as two adjacent colons, or as an initial
or trailing colon.
</p>
</dd>
-<dt><code>PS1</code>
-<span id="index-PS1"></span>
-</dt>
+<dt id='index-PS1'><span><code>PS1</code><a href='#index-PS1' class='copiable-anchor'> &para;</a></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
sequences that are expanded before <code>PS1</code> is displayed.
</p>
</dd>
-<dt><code>PS2</code>
-<span id="index-PS2"></span>
-</dt>
+<dt id='index-PS2'><span><code>PS2</code><a href='#index-PS2' class='copiable-anchor'> &para;</a></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
displayed.
@@ -6448,7 +6758,9 @@ displayed.
</dl>
<hr>
-<span id="Bash-Variables"></span><div class="header">
+</div>
+<div class="section" id="Bash-Variables">
+<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>
@@ -6462,9 +6774,7 @@ 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>
+<dt id='index-_005f'><span><code>_</code><a href='#index-_005f' class='copiable-anchor'> &para;</a></span></dt>
<dd><span id="index-_0024_005f"></span>
<p>($_, an underscore.)
At shell startup, set to the pathname used to invoke the
@@ -6477,15 +6787,11 @@ and placed in the environment exported to that command.
When checking mail, this parameter holds the name of the mail file.
</p>
</dd>
-<dt><code>BASH</code>
-<span id="index-BASH"></span>
-</dt>
+<dt id='index-BASH'><span><code>BASH</code><a href='#index-BASH' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The full pathname used to execute the current instance of Bash.
</p>
</dd>
-<dt><code>BASHOPTS</code>
-<span id="index-BASHOPTS"></span>
-</dt>
+<dt id='index-BASHOPTS'><span><code>BASHOPTS</code><a href='#index-BASHOPTS' class='copiable-anchor'> &para;</a></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
<code>shopt</code> builtin command (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
@@ -6496,9 +6802,7 @@ starts up, each shell option in the list will be enabled before
reading any startup files. This variable is readonly.
</p>
</dd>
-<dt><code>BASHPID</code>
-<span id="index-BASHPID"></span>
-</dt>
+<dt id='index-BASHPID'><span><code>BASHPID</code><a href='#index-BASHPID' class='copiable-anchor'> &para;</a></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
that do not require Bash to be re-initialized.
@@ -6508,9 +6812,7 @@ is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
-<dt><code>BASH_ALIASES</code>
-<span id="index-BASH_005fALIASES"></span>
-</dt>
+<dt id='index-BASH_005fALIASES'><span><code>BASH_ALIASES</code><a href='#index-BASH_005fALIASES' class='copiable-anchor'> &para;</a></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.
(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
@@ -6522,9 +6824,7 @@ is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
-<dt><code>BASH_ARGC</code>
-<span id="index-BASH_005fARGC"></span>
-</dt>
+<dt id='index-BASH_005fARGC'><span><code>BASH_ARGC</code><a href='#index-BASH_005fARGC' class='copiable-anchor'> &para;</a></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
parameters to the current subroutine (shell function or script executed
@@ -6540,9 +6840,7 @@ or referencing this variable when <code>extdebug</code> is not set,
may result in inconsistent values.
</p>
</dd>
-<dt><code>BASH_ARGV</code>
-<span id="index-BASH_005fARGV"></span>
-</dt>
+<dt id='index-BASH_005fARGV'><span><code>BASH_ARGV</code><a href='#index-BASH_005fARGV' class='copiable-anchor'> &para;</a></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
is at the top of the stack; the first parameter of the initial call is
@@ -6557,9 +6855,7 @@ or referencing this variable when <code>extdebug</code> is not set,
may result in inconsistent values.
</p>
</dd>
-<dt><code>BASH_ARGV0</code>
-<span id="index-BASH_005fARGV0"></span>
-</dt>
+<dt id='index-BASH_005fARGV0'><span><code>BASH_ARGV0</code><a href='#index-BASH_005fARGV0' class='copiable-anchor'> &para;</a></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>,
for the description of special parameter 0).
@@ -6570,9 +6866,7 @@ is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
-<dt><code>BASH_CMDS</code>
-<span id="index-BASH_005fCMDS"></span>
-</dt>
+<dt id='index-BASH_005fCMDS'><span><code>BASH_CMDS</code><a href='#index-BASH_005fCMDS' class='copiable-anchor'> &para;</a></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
(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
@@ -6584,9 +6878,7 @@ is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
-<dt><code>BASH_COMMAND</code>
-<span id="index-BASH_005fCOMMAND"></span>
-</dt>
+<dt id='index-BASH_005fCOMMAND'><span><code>BASH_COMMAND</code><a href='#index-BASH_005fCOMMAND' class='copiable-anchor'> &para;</a></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.
@@ -6595,9 +6887,7 @@ is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
-<dt><code>BASH_COMPAT</code>
-<span id="index-BASH_005fCOMPAT"></span>
-</dt>
+<dt id='index-BASH_005fCOMPAT'><span><code>BASH_COMPAT</code><a href='#index-BASH_005fCOMPAT' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The value is used to set the shell&rsquo;s compatibility level.
See <a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a>, for a description of the various
compatibility levels and their effects.
@@ -6616,25 +6906,19 @@ and set the compatibility level to 42.
The current version is also a valid value.
</p>
</dd>
-<dt><code>BASH_ENV</code>
-<span id="index-BASH_005fENV"></span>
-</dt>
+<dt id='index-BASH_005fENV'><span><code>BASH_ENV</code><a href='#index-BASH_005fENV' class='copiable-anchor'> &para;</a></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
to read before executing the script. See <a href="#Bash-Startup-Files">Bash Startup Files</a>.
</p>
</dd>
-<dt><code>BASH_EXECUTION_STRING</code>
-<span id="index-BASH_005fEXECUTION_005fSTRING"></span>
-</dt>
+<dt id='index-BASH_005fEXECUTION_005fSTRING'><span><code>BASH_EXECUTION_STRING</code><a href='#index-BASH_005fEXECUTION_005fSTRING' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The command argument to the <samp>-c</samp> invocation option.
</p>
</dd>
-<dt><code>BASH_LINENO</code>
-<span id="index-BASH_005fLINENO"></span>
-</dt>
+<dt id='index-BASH_005fLINENO'><span><code>BASH_LINENO</code><a href='#index-BASH_005fLINENO' class='copiable-anchor'> &para;</a></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.
+where each corresponding member of <code>FUNCNAME</code> was invoked.
<code>${BASH_LINENO[$i]}</code> is the line number in the source file
(<code>${BASH_SOURCE[$i+1]}</code>) where
<code>${FUNCNAME[$i]}</code> was called (or <code>${BASH_LINENO[$i-1]}</code> if
@@ -6642,17 +6926,13 @@ referenced within another shell function).
Use <code>LINENO</code> to obtain the current line number.
</p>
</dd>
-<dt><code>BASH_LOADABLES_PATH</code>
-<span id="index-BASH_005fLOADABLES_005fPATH"></span>
-</dt>
+<dt id='index-BASH_005fLOADABLES_005fPATH'><span><code>BASH_LOADABLES_PATH</code><a href='#index-BASH_005fLOADABLES_005fPATH' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A colon-separated list of directories in which the shell looks for
dynamically loadable builtins specified by the
<code>enable</code> command.
</p>
</dd>
-<dt><code>BASH_REMATCH</code>
-<span id="index-BASH_005fREMATCH"></span>
-</dt>
+<dt id='index-BASH_005fREMATCH'><span><code>BASH_REMATCH</code><a href='#index-BASH_005fREMATCH' class='copiable-anchor'> &para;</a></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
(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
@@ -6662,9 +6942,7 @@ The element with index <var>n</var> is the portion of the
string matching the <var>n</var>th parenthesized subexpression.
</p>
</dd>
-<dt><code>BASH_SOURCE</code>
-<span id="index-BASH_005fSOURCE"></span>
-</dt>
+<dt id='index-BASH_005fSOURCE'><span><code>BASH_SOURCE</code><a href='#index-BASH_005fSOURCE' class='copiable-anchor'> &para;</a></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
variable are defined.
@@ -6672,9 +6950,7 @@ The shell function <code>${FUNCNAME[$i]}</code> is defined in the file
<code>${BASH_SOURCE[$i]}</code> and called from <code>${BASH_SOURCE[$i+1]}</code>
</p>
</dd>
-<dt><code>BASH_SUBSHELL</code>
-<span id="index-BASH_005fSUBSHELL"></span>
-</dt>
+<dt id='index-BASH_005fSUBSHELL'><span><code>BASH_SUBSHELL</code><a href='#index-BASH_005fSUBSHELL' class='copiable-anchor'> &para;</a></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.
@@ -6683,49 +6959,43 @@ is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
-<dt><code>BASH_VERSINFO</code>
-<span id="index-BASH_005fVERSINFO"></span>
-</dt>
+<dt id='index-BASH_005fVERSINFO'><span><code>BASH_VERSINFO</code><a href='#index-BASH_005fVERSINFO' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A readonly array variable (see <a href="#Arrays">Arrays</a>)
whose members hold version information for this instance of Bash.
The values assigned to the array members are as follows:
</p>
<dl compact="compact">
-<dt><code>BASH_VERSINFO[0]</code></dt>
-<dd><p>The major version number (the <var>release</var>).
+<dt><span><code>BASH_VERSINFO[0]</code></span></dt>
+<dd><p>The major version number (the <em>release</em>).
</p>
</dd>
-<dt><code>BASH_VERSINFO[1]</code></dt>
-<dd><p>The minor version number (the <var>version</var>).
+<dt><span><code>BASH_VERSINFO[1]</code></span></dt>
+<dd><p>The minor version number (the <em>version</em>).
</p>
</dd>
-<dt><code>BASH_VERSINFO[2]</code></dt>
+<dt><span><code>BASH_VERSINFO[2]</code></span></dt>
<dd><p>The patch level.
</p>
</dd>
-<dt><code>BASH_VERSINFO[3]</code></dt>
+<dt><span><code>BASH_VERSINFO[3]</code></span></dt>
<dd><p>The build version.
</p>
</dd>
-<dt><code>BASH_VERSINFO[4]</code></dt>
-<dd><p>The release status (e.g., <var>beta1</var>).
+<dt><span><code>BASH_VERSINFO[4]</code></span></dt>
+<dd><p>The release status (e.g., <code>beta1</code>).
</p>
</dd>
-<dt><code>BASH_VERSINFO[5]</code></dt>
+<dt><span><code>BASH_VERSINFO[5]</code></span></dt>
<dd><p>The value of <code>MACHTYPE</code>.
</p></dd>
</dl>
</dd>
-<dt><code>BASH_VERSION</code>
-<span id="index-BASH_005fVERSION"></span>
-</dt>
+<dt id='index-BASH_005fVERSION'><span><code>BASH_VERSION</code><a href='#index-BASH_005fVERSION' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The version number of the current instance of Bash.
</p>
</dd>
-<dt><code>BASH_XTRACEFD</code>
-<span id="index-BASH_005fXTRACEFD"></span>
-</dt>
+<dt id='index-BASH_005fXTRACEFD'><span><code>BASH_XTRACEFD</code><a href='#index-BASH_005fXTRACEFD' class='copiable-anchor'> &para;</a></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;
is enabled to that file descriptor.
@@ -6740,9 +7010,7 @@ descriptor) and then unsetting it will result in the standard error
being closed.
</p>
</dd>
-<dt><code>CHILD_MAX</code>
-<span id="index-CHILD_005fMAX"></span>
-</dt>
+<dt id='index-CHILD_005fMAX'><span><code>CHILD_MAX</code><a href='#index-CHILD_005fMAX' class='copiable-anchor'> &para;</a></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
minimum, and there is a maximum value (currently 8192) that this may
@@ -6750,9 +7018,7 @@ not exceed.
The minimum value is system-dependent.
</p>
</dd>
-<dt><code>COLUMNS</code>
-<span id="index-COLUMNS"></span>
-</dt>
+<dt id='index-COLUMNS'><span><code>COLUMNS</code><a href='#index-COLUMNS' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Used by the <code>select</code> command to determine the terminal width
when printing selection lists.
Automatically set if the <code>checkwinsize</code> option is enabled
@@ -6760,27 +7026,21 @@ Automatically set if the <code>checkwinsize</code> option is enabled
<code>SIGWINCH</code>.
</p>
</dd>
-<dt><code>COMP_CWORD</code>
-<span id="index-COMP_005fCWORD"></span>
-</dt>
+<dt id='index-COMP_005fCWORD'><span><code>COMP_CWORD</code><a href='#index-COMP_005fCWORD' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>An index into <code>${COMP_WORDS}</code> of the word containing the current
cursor position.
This variable is available only in shell functions invoked by the
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMP_LINE</code>
-<span id="index-COMP_005fLINE"></span>
-</dt>
+<dt id='index-COMP_005fLINE'><span><code>COMP_LINE</code><a href='#index-COMP_005fLINE' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The current command line.
This variable is available only in shell functions and external
commands invoked by the
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMP_POINT</code>
-<span id="index-COMP_005fPOINT"></span>
-</dt>
+<dt id='index-COMP_005fPOINT'><span><code>COMP_POINT</code><a href='#index-COMP_005fPOINT' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The index of the current cursor position relative to the beginning of
the current command.
If the current cursor position is at the end of the current command,
@@ -6790,12 +7050,10 @@ commands invoked by the
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMP_TYPE</code>
-<span id="index-COMP_005fTYPE"></span>
-</dt>
+<dt id='index-COMP_005fTYPE'><span><code>COMP_TYPE</code><a href='#index-COMP_005fTYPE' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Set to an integer value corresponding to the type of completion attempted
that caused a completion function to be called:
-<var>TAB</var>, for normal completion,
+<tt class="key">TAB</tt>, for normal completion,
&lsquo;<samp>?</samp>&rsquo;, for listing completions after successive tabs,
&lsquo;<samp>!</samp>&rsquo;, for listing alternatives on partial word completion,
&lsquo;<samp>@</samp>&rsquo;, to list completions if the word is not unmodified,
@@ -6806,16 +7064,12 @@ commands invoked by the
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMP_KEY</code>
-<span id="index-COMP_005fKEY"></span>
-</dt>
+<dt id='index-COMP_005fKEY'><span><code>COMP_KEY</code><a href='#index-COMP_005fKEY' class='copiable-anchor'> &para;</a></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>
-<span id="index-COMP_005fWORDBREAKS"></span>
-</dt>
+<dt id='index-COMP_005fWORDBREAKS'><span><code>COMP_WORDBREAKS</code><a href='#index-COMP_005fWORDBREAKS' class='copiable-anchor'> &para;</a></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>
@@ -6823,9 +7077,7 @@ is unset, it loses its special properties,
even if it is subsequently reset.
</p>
</dd>
-<dt><code>COMP_WORDS</code>
-<span id="index-COMP_005fWORDS"></span>
-</dt>
+<dt id='index-COMP_005fWORDS'><span><code>COMP_WORDS</code><a href='#index-COMP_005fWORDS' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>An array variable consisting of the individual
words in the current command line.
The line is split into words as Readline would split it, using
@@ -6834,25 +7086,19 @@ This variable is available only in shell functions invoked by the
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMPREPLY</code>
-<span id="index-COMPREPLY"></span>
-</dt>
+<dt id='index-COMPREPLY'><span><code>COMPREPLY</code><a href='#index-COMPREPLY' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>An array variable from which Bash reads the possible completions
generated by a shell function invoked by the programmable completion
facility (see <a href="#Programmable-Completion">Programmable Completion</a>).
Each array element contains one possible completion.
</p>
</dd>
-<dt><code>COPROC</code>
-<span id="index-COPROC"></span>
-</dt>
+<dt id='index-COPROC'><span><code>COPROC</code><a href='#index-COPROC' class='copiable-anchor'> &para;</a></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>
-<span id="index-DIRSTACK"></span>
-</dt>
+<dt id='index-DIRSTACK'><span><code>DIRSTACK</code><a href='#index-DIRSTACK' class='copiable-anchor'> &para;</a></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
<code>dirs</code> builtin.
@@ -6865,29 +7111,23 @@ is unset, it loses its special properties, even if
it is subsequently reset.
</p>
</dd>
-<dt><code>EMACS</code>
-<span id="index-EMACS"></span>
-</dt>
+<dt id='index-EMACS'><span><code>EMACS</code><a href='#index-EMACS' class='copiable-anchor'> &para;</a></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
Emacs shell buffer and disables line editing.
</p>
</dd>
-<dt><code>ENV</code>
-<span id="index-ENV"></span>
-</dt>
-<dd><p>Expanded and executed similarlty to <code>BASH_ENV</code>
+<dt id='index-ENV'><span><code>ENV</code><a href='#index-ENV' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>Expanded and executed similarly 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>
-<span id="index-EPOCHREALTIME"></span>
-</dt>
+<dt id='index-EPOCHREALTIME'><span><code>EPOCHREALTIME</code><a href='#index-EPOCHREALTIME' class='copiable-anchor'> &para;</a></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
+(see the documentation for the C library function <code>time</code> for the
definition of Epoch).
Assignments to <code>EPOCHREALTIME</code> are ignored.
If <code>EPOCHREALTIME</code>
@@ -6895,28 +7135,22 @@ is unset, it loses its special properties, even if
it is subsequently reset.
</p>
</dd>
-<dt><code>EPOCHSECONDS</code>
-<span id="index-EPOCHSECONDS"></span>
-</dt>
+<dt id='index-EPOCHSECONDS'><span><code>EPOCHSECONDS</code><a href='#index-EPOCHSECONDS' class='copiable-anchor'> &para;</a></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).
+<code>time</code> 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
it is subsequently reset.
</p>
</dd>
-<dt><code>EUID</code>
-<span id="index-EUID"></span>
-</dt>
+<dt id='index-EUID'><span><code>EUID</code><a href='#index-EUID' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The numeric effective user id of the current user. This variable
is readonly.
</p>
</dd>
-<dt><code>EXECIGNORE</code>
-<span id="index-EXECIGNORE"></span>
-</dt>
+<dt id='index-EXECIGNORE'><span><code>EXECIGNORE</code><a href='#index-EXECIGNORE' class='copiable-anchor'> &para;</a></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
<code>PATH</code>.
@@ -6932,16 +7166,12 @@ The pattern matching honors the setting of the <code>extglob</code> shell
option.
</p>
</dd>
-<dt><code>FCEDIT</code>
-<span id="index-FCEDIT"></span>
-</dt>
+<dt id='index-FCEDIT'><span><code>FCEDIT</code><a href='#index-FCEDIT' class='copiable-anchor'> &para;</a></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>
-<span id="index-FIGNORE"></span>
-</dt>
+<dt id='index-FIGNORE'><span><code>FIGNORE</code><a href='#index-FIGNORE' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A colon-separated list of suffixes to ignore when performing
filename completion.
A filename whose suffix matches one of the entries in
@@ -6950,9 +7180,7 @@ is excluded from the list of matched filenames. A sample
value is &lsquo;<samp>.o:~</samp>&rsquo;
</p>
</dd>
-<dt><code>FUNCNAME</code>
-<span id="index-FUNCNAME"></span>
-</dt>
+<dt id='index-FUNCNAME'><span><code>FUNCNAME</code><a href='#index-FUNCNAME' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>An array variable containing the names of all shell functions
currently in the execution call stack.
The element with index 0 is the name of any currently-executing
@@ -6974,17 +7202,13 @@ The <code>caller</code> builtin displays the current call stack using this
information.
</p>
</dd>
-<dt><code>FUNCNEST</code>
-<span id="index-FUNCNEST"></span>
-</dt>
+<dt id='index-FUNCNEST'><span><code>FUNCNEST</code><a href='#index-FUNCNEST' class='copiable-anchor'> &para;</a></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
will cause the current command to abort.
</p>
</dd>
-<dt><code>GLOBIGNORE</code>
-<span id="index-GLOBIGNORE"></span>
-</dt>
+<dt id='index-GLOBIGNORE'><span><code>GLOBIGNORE</code><a href='#index-GLOBIGNORE' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A colon-separated list of patterns defining the set of file names to
be ignored by filename expansion.
If a file name matched by a filename expansion pattern also matches one
@@ -6994,9 +7218,7 @@ The pattern matching honors the setting of the <code>extglob</code> shell
option.
</p>
</dd>
-<dt><code>GROUPS</code>
-<span id="index-GROUPS"></span>
-</dt>
+<dt id='index-GROUPS'><span><code>GROUPS</code><a href='#index-GROUPS' class='copiable-anchor'> &para;</a></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.
@@ -7005,13 +7227,11 @@ is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
-<dt><code>histchars</code>
-<span id="index-histchars"></span>
-</dt>
+<dt id='index-histchars'><span><code>histchars</code><a href='#index-histchars' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Up to three characters which control history expansion, quick
-substitution, and tokenization (see <a href="#History-Interaction">History Interaction</a>).
+substitution, and tokenization (see <a href="#History-Interaction">History Expansion</a>).
The first character is the
-<var>history expansion</var> character, that is, the character which signifies the
+<em>history expansion</em> character, that is, the character which signifies the
start of a history expansion, normally &lsquo;<samp>!</samp>&rsquo;. The second character is the
character which signifies &lsquo;quick substitution&rsquo; when seen as the first
character on a line, normally &lsquo;<samp>^</samp>&rsquo;. The optional third character is the
@@ -7022,9 +7242,7 @@ remaining words on the line. It does not necessarily cause the shell
parser to treat the rest of the line as a comment.
</p>
</dd>
-<dt><code>HISTCMD</code>
-<span id="index-HISTCMD"></span>
-</dt>
+<dt id='index-HISTCMD'><span><code>HISTCMD</code><a href='#index-HISTCMD' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The history number, or index in the history list, of the current
command.
Assignments to <code>HISTCMD</code> are ignored.
@@ -7033,9 +7251,7 @@ is unset, it loses its special properties,
even if it is subsequently reset.
</p>
</dd>
-<dt><code>HISTCONTROL</code>
-<span id="index-HISTCONTROL"></span>
-</dt>
+<dt id='index-HISTCONTROL'><span><code>HISTCONTROL</code><a href='#index-HISTCONTROL' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A colon-separated list of values controlling how commands are saved on
the history list.
If the list of values includes &lsquo;<samp>ignorespace</samp>&rsquo;, lines which begin
@@ -7056,16 +7272,12 @@ not tested, and are added to the history regardless of the value of
<code>HISTCONTROL</code>.
</p>
</dd>
-<dt><code>HISTFILE</code>
-<span id="index-HISTFILE"></span>
-</dt>
+<dt id='index-HISTFILE'><span><code>HISTFILE</code><a href='#index-HISTFILE' class='copiable-anchor'> &para;</a></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>
-<span id="index-HISTFILESIZE"></span>
-</dt>
+<dt id='index-HISTFILESIZE'><span><code>HISTFILESIZE</code><a href='#index-HISTFILESIZE' class='copiable-anchor'> &para;</a></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,
if necessary, to contain no more than that number of lines
@@ -7078,9 +7290,7 @@ The shell sets the default value to the value of <code>HISTSIZE</code>
after reading any startup files.
</p>
</dd>
-<dt><code>HISTIGNORE</code>
-<span id="index-HISTIGNORE"></span>
-</dt>
+<dt id='index-HISTIGNORE'><span><code>HISTIGNORE</code><a href='#index-HISTIGNORE' class='copiable-anchor'> &para;</a></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
anchored at the beginning of the line and must match the complete
@@ -7103,9 +7313,7 @@ Combining these two patterns, separating them with a colon,
provides the functionality of <code>ignoreboth</code>.
</p>
</dd>
-<dt><code>HISTSIZE</code>
-<span id="index-HISTSIZE"></span>
-</dt>
+<dt id='index-HISTSIZE'><span><code>HISTSIZE</code><a href='#index-HISTSIZE' class='copiable-anchor'> &para;</a></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.
Numeric values less than zero result in every command being saved
@@ -7113,11 +7321,9 @@ on the history list (there is no limit).
The shell sets the default value to 500 after reading any startup files.
</p>
</dd>
-<dt><code>HISTTIMEFORMAT</code>
-<span id="index-HISTTIMEFORMAT"></span>
-</dt>
+<dt id='index-HISTTIMEFORMAT'><span><code>HISTTIMEFORMAT</code><a href='#index-HISTTIMEFORMAT' class='copiable-anchor'> &para;</a></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
+for <code>strftime</code> to print the time stamp associated with each history
entry displayed by the <code>history</code> builtin.
If this variable is set, time stamps are written to the history file so
they may be preserved across shell sessions.
@@ -7125,9 +7331,7 @@ This uses the history comment character to distinguish timestamps from
other history lines.
</p>
</dd>
-<dt><code>HOSTFILE</code>
-<span id="index-HOSTFILE"></span>
-</dt>
+<dt id='index-HOSTFILE'><span><code>HOSTFILE</code><a href='#index-HOSTFILE' class='copiable-anchor'> &para;</a></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.
The list of possible hostname completions may be changed while the shell
@@ -7141,21 +7345,15 @@ Bash attempts to read
When <code>HOSTFILE</code> is unset, the hostname list is cleared.
</p>
</dd>
-<dt><code>HOSTNAME</code>
-<span id="index-HOSTNAME"></span>
-</dt>
+<dt id='index-HOSTNAME'><span><code>HOSTNAME</code><a href='#index-HOSTNAME' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The name of the current host.
</p>
</dd>
-<dt><code>HOSTTYPE</code>
-<span id="index-HOSTTYPE"></span>
-</dt>
+<dt id='index-HOSTTYPE'><span><code>HOSTTYPE</code><a href='#index-HOSTTYPE' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A string describing the machine Bash is running on.
</p>
</dd>
-<dt><code>IGNOREEOF</code>
-<span id="index-IGNOREEOF"></span>
-</dt>
+<dt id='index-IGNOREEOF'><span><code>IGNOREEOF</code><a href='#index-IGNOREEOF' class='copiable-anchor'> &para;</a></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
of consecutive <code>EOF</code> characters that can be read as the
@@ -7166,38 +7364,28 @@ If the variable does not exist, then <code>EOF</code> signifies the end of
input to the shell. This is only in effect for interactive shells.
</p>
</dd>
-<dt><code>INPUTRC</code>
-<span id="index-INPUTRC"></span>
-</dt>
+<dt id='index-INPUTRC'><span><code>INPUTRC</code><a href='#index-INPUTRC' class='copiable-anchor'> &para;</a></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>
-<span id="index-INSIDE_005fEMACS"></span>
-</dt>
+<dt id='index-INSIDE_005fEMACS'><span><code>INSIDE_EMACS</code><a href='#index-INSIDE_005fEMACS' class='copiable-anchor'> &para;</a></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
and may disable line editing depending on the value of <code>TERM</code>.
</p>
</dd>
-<dt><code>LANG</code>
-<span id="index-LANG"></span>
-</dt>
+<dt id='index-LANG-1'><span><code>LANG</code><a href='#index-LANG-1' class='copiable-anchor'> &para;</a></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>
-<span id="index-LC_005fALL"></span>
-</dt>
+<dt id='index-LC_005fALL'><span><code>LC_ALL</code><a href='#index-LC_005fALL' class='copiable-anchor'> &para;</a></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>
-<span id="index-LC_005fCOLLATE"></span>
-</dt>
+<dt id='index-LC_005fCOLLATE'><span><code>LC_COLLATE</code><a href='#index-LC_005fCOLLATE' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>This variable determines the collation order used when sorting the
results of filename expansion, and
determines the behavior of range expressions, equivalence classes,
@@ -7205,46 +7393,34 @@ and collating sequences within filename expansion and pattern matching
(see <a href="#Filename-Expansion">Filename Expansion</a>).
</p>
</dd>
-<dt><code>LC_CTYPE</code>
-<span id="index-LC_005fCTYPE"></span>
-</dt>
+<dt id='index-LC_005fCTYPE'><span><code>LC_CTYPE</code><a href='#index-LC_005fCTYPE' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>This variable determines the interpretation of characters and the
behavior of character classes within filename expansion and pattern
matching (see <a href="#Filename-Expansion">Filename Expansion</a>).
</p>
</dd>
-<dt><code>LC_MESSAGES</code>
-<span id="index-LC_005fMESSAGES-1"></span>
-</dt>
+<dt id='index-LC_005fMESSAGES-1'><span><code>LC_MESSAGES</code><a href='#index-LC_005fMESSAGES-1' class='copiable-anchor'> &para;</a></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>).
+strings preceded by a &lsquo;<samp>$</samp>&rsquo; (see <a href="#Locale-Translation">Locale-Specific Translation</a>).
</p>
</dd>
-<dt><code>LC_NUMERIC</code>
-<span id="index-LC_005fNUMERIC"></span>
-</dt>
+<dt id='index-LC_005fNUMERIC'><span><code>LC_NUMERIC</code><a href='#index-LC_005fNUMERIC' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>This variable determines the locale category used for number formatting.
</p>
</dd>
-<dt><code>LC_TIME</code>
-<span id="index-LC_005fTIME"></span>
-</dt>
+<dt id='index-LC_005fTIME'><span><code>LC_TIME</code><a href='#index-LC_005fTIME' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>This variable determines the locale category used for data and time
formatting.
</p>
</dd>
-<dt><code>LINENO</code>
-<span id="index-LINENO"></span>
-</dt>
+<dt id='index-LINENO'><span><code>LINENO</code><a href='#index-LINENO' class='copiable-anchor'> &para;</a></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>
-<span id="index-LINES"></span>
-</dt>
+<dt id='index-LINES'><span><code>LINES</code><a href='#index-LINES' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Used by the <code>select</code> command to determine the column length
for printing selection lists.
Automatically set if the <code>checkwinsize</code> option is enabled
@@ -7252,16 +7428,12 @@ Automatically set if the <code>checkwinsize</code> option is enabled
<code>SIGWINCH</code>.
</p>
</dd>
-<dt><code>MACHTYPE</code>
-<span id="index-MACHTYPE"></span>
-</dt>
+<dt id='index-MACHTYPE'><span><code>MACHTYPE</code><a href='#index-MACHTYPE' class='copiable-anchor'> &para;</a></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>
-<span id="index-MAILCHECK"></span>
-</dt>
+<dt id='index-MAILCHECK'><span><code>MAILCHECK</code><a href='#index-MAILCHECK' class='copiable-anchor'> &para;</a></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.
The default is 60 seconds. When it is time to check
@@ -7270,44 +7442,32 @@ If this variable is unset, or set to a value that is not a number
greater than or equal to zero, the shell disables mail checking.
</p>
</dd>
-<dt><code>MAPFILE</code>
-<span id="index-MAPFILE"></span>
-</dt>
+<dt id='index-MAPFILE'><span><code>MAPFILE</code><a href='#index-MAPFILE' class='copiable-anchor'> &para;</a></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>
-<span id="index-OLDPWD"></span>
-</dt>
+<dt id='index-OLDPWD'><span><code>OLDPWD</code><a href='#index-OLDPWD' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The previous working directory as set by the <code>cd</code> builtin.
</p>
</dd>
-<dt><code>OPTERR</code>
-<span id="index-OPTERR"></span>
-</dt>
+<dt id='index-OPTERR'><span><code>OPTERR</code><a href='#index-OPTERR' class='copiable-anchor'> &para;</a></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>
-<span id="index-OSTYPE"></span>
-</dt>
+<dt id='index-OSTYPE'><span><code>OSTYPE</code><a href='#index-OSTYPE' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A string describing the operating system Bash is running on.
</p>
</dd>
-<dt><code>PIPESTATUS</code>
-<span id="index-PIPESTATUS"></span>
-</dt>
+<dt id='index-PIPESTATUS'><span><code>PIPESTATUS</code><a href='#index-PIPESTATUS' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>An array variable (see <a href="#Arrays">Arrays</a>)
containing a list of exit status values from the processes
in the most-recently-executed foreground pipeline (which may
contain only a single command).
</p>
</dd>
-<dt><code>POSIXLY_CORRECT</code>
-<span id="index-POSIXLY_005fCORRECT"></span>
-</dt>
+<dt id='index-POSIXLY_005fCORRECT'><span><code>POSIXLY_CORRECT</code><a href='#index-POSIXLY_005fCORRECT' class='copiable-anchor'> &para;</a></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
startup files, as if the <samp>--posix</samp> invocation option had been supplied.
@@ -7321,16 +7481,12 @@ When the shell enters <small>POSIX</small> mode, it sets this variable if it was
not already set.
</p>
</dd>
-<dt><code>PPID</code>
-<span id="index-PPID"></span>
-</dt>
+<dt id='index-PPID'><span><code>PPID</code><a href='#index-PPID' class='copiable-anchor'> &para;</a></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>
-<span id="index-PROMPT_005fCOMMAND"></span>
-</dt>
+<dt id='index-PROMPT_005fCOMMAND'><span><code>PROMPT_COMMAND</code><a href='#index-PROMPT_005fCOMMAND' class='copiable-anchor'> &para;</a></span></dt>
<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>).
@@ -7338,35 +7494,27 @@ 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>
-<span id="index-PROMPT_005fDIRTRIM"></span>
-</dt>
+<dt id='index-PROMPT_005fDIRTRIM'><span><code>PROMPT_DIRTRIM</code><a href='#index-PROMPT_005fDIRTRIM' class='copiable-anchor'> &para;</a></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
<code>\W</code> prompt string escapes (see <a href="#Controlling-the-Prompt">Controlling the Prompt</a>).
Characters removed are replaced with an ellipsis.
</p>
</dd>
-<dt><code>PS0</code>
-<span id="index-PS0"></span>
-</dt>
+<dt id='index-PS0'><span><code>PS0</code><a href='#index-PS0' class='copiable-anchor'> &para;</a></span></dt>
<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>
-<span id="index-PS3"></span>
-</dt>
+<dt id='index-PS3'><span><code>PS3</code><a href='#index-PS3' class='copiable-anchor'> &para;</a></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
<code>select</code> command prompts with &lsquo;<samp>#? </samp>&rsquo;
</p>
</dd>
-<dt><code>PS4</code>
-<span id="index-PS4"></span>
-</dt>
-<dd><p>The value of this parameter is expanded like <var>PS1</var>
+<dt id='index-PS4'><span><code>PS4</code><a href='#index-PS4' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>The value of this parameter is expanded like <code>PS1</code>
and the expanded value is the prompt printed before the command line
is echoed when the <samp>-x</samp> option is set (see <a href="#The-Set-Builtin">The Set Builtin</a>).
The first character of the expanded value is replicated multiple times,
@@ -7374,15 +7522,11 @@ as necessary, to indicate multiple levels of indirection.
The default is &lsquo;<samp>+ </samp>&rsquo;.
</p>
</dd>
-<dt><code>PWD</code>
-<span id="index-PWD"></span>
-</dt>
+<dt id='index-PWD'><span><code>PWD</code><a href='#index-PWD' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The current working directory as set by the <code>cd</code> builtin.
</p>
</dd>
-<dt><code>RANDOM</code>
-<span id="index-RANDOM"></span>
-</dt>
+<dt id='index-RANDOM'><span><code>RANDOM</code><a href='#index-RANDOM' class='copiable-anchor'> &para;</a></span></dt>
<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.
@@ -7391,62 +7535,53 @@ is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
-<dt><code>READLINE_LINE</code>
-<span id="index-READLINE_005fLINE"></span>
-</dt>
+<dt id='index-READLINE_005fARGUMENT'><span><code>READLINE_ARGUMENT</code><a href='#index-READLINE_005fARGUMENT' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>Any numeric argument given to a Readline command that was defined using
+&lsquo;<samp>bind -x</samp>&rsquo; (see <a href="#Bash-Builtins">Bash Builtin Commands</a>
+when it was invoked.
+</p>
+</dd>
+<dt id='index-READLINE_005fLINE'><span><code>READLINE_LINE</code><a href='#index-READLINE_005fLINE' class='copiable-anchor'> &para;</a></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>).
+with &lsquo;<samp>bind -x</samp>&rsquo; (see <a href="#Bash-Builtins">Bash Builtin Commands</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
+<dt id='index-READLINE_005fMARK'><span><code>READLINE_MARK</code><a href='#index-READLINE_005fMARK' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>The position of the <em>mark</em> (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>).
+with &lsquo;<samp>bind -x</samp>&rsquo; (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
The characters between the insertion point and the mark are often
-called the <var>region</var>.
+called the <em>region</em>.
</p>
</dd>
-<dt><code>READLINE_POINT</code>
-<span id="index-READLINE_005fPOINT"></span>
-</dt>
+<dt id='index-READLINE_005fPOINT'><span><code>READLINE_POINT</code><a href='#index-READLINE_005fPOINT' class='copiable-anchor'> &para;</a></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>).
+with &lsquo;<samp>bind -x</samp>&rsquo; (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
</dd>
-<dt><code>REPLY</code>
-<span id="index-REPLY"></span>
-</dt>
+<dt id='index-REPLY'><span><code>REPLY</code><a href='#index-REPLY' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The default variable for the <code>read</code> builtin.
</p>
</dd>
-<dt><code>SECONDS</code>
-<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
+<dt id='index-SECONDS'><span><code>SECONDS</code><a href='#index-SECONDS' class='copiable-anchor'> &para;</a></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
+The number of seconds at shell invocation and the current time are 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>
-<span id="index-SHELL"></span>
-</dt>
+<dt id='index-SHELL'><span><code>SHELL</code><a href='#index-SHELL' class='copiable-anchor'> &para;</a></span></dt>
<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>
-<span id="index-SHELLOPTS"></span>
-</dt>
+<dt id='index-SHELLOPTS'><span><code>SHELLOPTS</code><a href='#index-SHELLOPTS' class='copiable-anchor'> &para;</a></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
<code>set</code> builtin command (see <a href="#The-Set-Builtin">The Set Builtin</a>).
@@ -7457,16 +7592,12 @@ starts up, each shell option in the list will be enabled before
reading any startup files. This variable is readonly.
</p>
</dd>
-<dt><code>SHLVL</code>
-<span id="index-SHLVL"></span>
-</dt>
+<dt id='index-SHLVL'><span><code>SHLVL</code><a href='#index-SHLVL' class='copiable-anchor'> &para;</a></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>
+<dt id='index-SRANDOM'><span><code>SRANDOM</code><a href='#index-SRANDOM' class='copiable-anchor'> &para;</a></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
@@ -7478,9 +7609,7 @@ is unset, it loses its special properties,
even if it is subsequently reset.
</p>
</dd>
-<dt><code>TIMEFORMAT</code>
-<span id="index-TIMEFORMAT"></span>
-</dt>
+<dt id='index-TIMEFORMAT'><span><code>TIMEFORMAT</code><a href='#index-TIMEFORMAT' class='copiable-anchor'> &para;</a></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>
reserved word should be displayed.
@@ -7491,23 +7620,23 @@ The escape sequences and their meanings are as
follows; the braces denote optional portions.
</p>
<dl compact="compact">
-<dt><code>%%</code></dt>
+<dt><span><code>%%</code></span></dt>
<dd><p>A literal &lsquo;<samp>%</samp>&rsquo;.
</p>
</dd>
-<dt><code>%[<var>p</var>][l]R</code></dt>
+<dt><span><code>%[<var>p</var>][l]R</code></span></dt>
<dd><p>The elapsed time in seconds.
</p>
</dd>
-<dt><code>%[<var>p</var>][l]U</code></dt>
+<dt><span><code>%[<var>p</var>][l]U</code></span></dt>
<dd><p>The number of CPU seconds spent in user mode.
</p>
</dd>
-<dt><code>%[<var>p</var>][l]S</code></dt>
+<dt><span><code>%[<var>p</var>][l]S</code></span></dt>
<dd><p>The number of CPU seconds spent in system mode.
</p>
</dd>
-<dt><code>%P</code></dt>
+<dt><span><code>%P</code></span></dt>
<dd><p>The CPU percentage, computed as (%U + %S) / %R.
</p></dd>
</dl>
@@ -7531,11 +7660,9 @@ The value of <var>p</var> determines whether or not the fraction is included.
A trailing newline is added when the format string is displayed.
</p>
</dd>
-<dt><code>TMOUT</code>
-<span id="index-TMOUT"></span>
-</dt>
+<dt id='index-TMOUT'><span><code>TMOUT</code><a href='#index-TMOUT' class='copiable-anchor'> &para;</a></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>).
+default timeout for the <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
The <code>select</code> command (see <a href="#Conditional-Constructs">Conditional Constructs</a>) terminates
if input does not arrive after <code>TMOUT</code> seconds when input is coming
from a terminal.
@@ -7548,63 +7675,47 @@ terminates after waiting for that number of seconds if a complete
line of input does not arrive.
</p>
</dd>
-<dt><code>TMPDIR</code>
-<span id="index-TMPDIR"></span>
-</dt>
+<dt id='index-TMPDIR'><span><code>TMPDIR</code><a href='#index-TMPDIR' class='copiable-anchor'> &para;</a></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>
-<span id="index-UID"></span>
-</dt>
+<dt id='index-UID'><span><code>UID</code><a href='#index-UID' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>The numeric real user id of the current user. This variable is readonly.
</p>
</dd>
</dl>
<hr>
-<span id="Bash-Features"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Bash-Features">
+<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>
+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">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="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
- 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.
-</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.
-</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
- 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.
-</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.
-</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.
-</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.
-</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.
-</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.
-</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
- 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>
+<ul class="section-toc">
+<li><a href="#Invoking-Bash" accesskey="1">Invoking Bash</a></li>
+<li><a href="#Bash-Startup-Files" accesskey="2">Bash Startup Files</a></li>
+<li><a href="#Interactive-Shells" accesskey="3">Interactive Shells</a></li>
+<li><a href="#Bash-Conditional-Expressions" accesskey="4">Bash Conditional Expressions</a></li>
+<li><a href="#Shell-Arithmetic" accesskey="5">Shell Arithmetic</a></li>
+<li><a href="#Aliases" accesskey="6">Aliases</a></li>
+<li><a href="#Arrays" accesskey="7">Arrays</a></li>
+<li><a href="#The-Directory-Stack" accesskey="8">The Directory Stack</a></li>
+<li><a href="#Controlling-the-Prompt" accesskey="9">Controlling the Prompt</a></li>
+<li><a href="#The-Restricted-Shell">The Restricted Shell</a></li>
+<li><a href="#Bash-POSIX-Mode">Bash POSIX Mode</a></li>
+<li><a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a></li>
+</ul>
<hr>
-<span id="Invoking-Bash"></span><div class="header">
+<div class="section" id="Invoking-Bash">
+<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>
@@ -7626,57 +7737,57 @@ options that you can use. These options must appear on the command
line before the single-character options to be recognized.
</p>
<dl compact="compact">
-<dt><code>--debugger</code></dt>
+<dt><span><code>--debugger</code></span></dt>
<dd><p>Arrange for the debugger profile to be executed before the shell
starts. Turns on extended debugging mode (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>
for a description of the <code>extdebug</code> option to the <code>shopt</code>
builtin).
</p>
</dd>
-<dt><code>--dump-po-strings</code></dt>
+<dt><span><code>--dump-po-strings</code></span></dt>
<dd><p>A list of all double-quoted strings preceded by &lsquo;<samp>$</samp>&rsquo;
is printed on the standard output
in the <small>GNU</small> <code>gettext</code> PO (portable object) file format.
Equivalent to <samp>-D</samp> except for the output format.
</p>
</dd>
-<dt><code>--dump-strings</code></dt>
+<dt><span><code>--dump-strings</code></span></dt>
<dd><p>Equivalent to <samp>-D</samp>.
</p>
</dd>
-<dt><code>--help</code></dt>
+<dt><span><code>--help</code></span></dt>
<dd><p>Display a usage message on standard output and exit successfully.
</p>
</dd>
-<dt><code>--init-file <var>filename</var></code></dt>
-<dt><code>--rcfile <var>filename</var></code></dt>
+<dt><span><code>--init-file <var>filename</var></code></span></dt>
+<dt><span><code>--rcfile <var>filename</var></code></span></dt>
<dd><p>Execute commands from <var>filename</var> (instead of <samp>~/.bashrc</samp>)
in an interactive shell.
</p>
</dd>
-<dt><code>--login</code></dt>
+<dt><span><code>--login</code></span></dt>
<dd><p>Equivalent to <samp>-l</samp>.
</p>
</dd>
-<dt><code>--noediting</code></dt>
+<dt><span><code>--noediting</code></span></dt>
<dd><p>Do not use the <small>GNU</small> Readline library (see <a href="#Command-Line-Editing">Command Line Editing</a>)
to read command lines when the shell is interactive.
</p>
</dd>
-<dt><code>--noprofile</code></dt>
+<dt><span><code>--noprofile</code></span></dt>
<dd><p>Don&rsquo;t load the system-wide startup file <samp>/etc/profile</samp>
or any of the personal initialization files
<samp>~/.bash_profile</samp>, <samp>~/.bash_login</samp>, or <samp>~/.profile</samp>
when Bash is invoked as a login shell.
</p>
</dd>
-<dt><code>--norc</code></dt>
+<dt><span><code>--norc</code></span></dt>
<dd><p>Don&rsquo;t read the <samp>~/.bashrc</samp> initialization file in an
interactive shell. This is on by default if the shell is
invoked as <code>sh</code>.
</p>
</dd>
-<dt><code>--posix</code></dt>
+<dt><span><code>--posix</code></span></dt>
<dd><p>Change the behavior of Bash where the default operation differs
from the <small>POSIX</small> standard to match the standard. This
is intended to make Bash behave as a strict superset of that
@@ -7684,15 +7795,15 @@ standard. See <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>, for a description
<small>POSIX</small> mode.
</p>
</dd>
-<dt><code>--restricted</code></dt>
+<dt><span><code>--restricted</code></span></dt>
<dd><p>Make the shell a restricted shell (see <a href="#The-Restricted-Shell">The Restricted Shell</a>).
</p>
</dd>
-<dt><code>--verbose</code></dt>
+<dt><span><code>--verbose</code></span></dt>
<dd><p>Equivalent to <samp>-v</samp>. Print shell input lines as they&rsquo;re read.
</p>
</dd>
-<dt><code>--version</code></dt>
+<dt><span><code>--version</code></span></dt>
<dd><p>Show version information for this instance of
Bash on the standard output and exit successfully.
</p></dd>
@@ -7702,7 +7813,7 @@ Bash on the standard output and exit successfully.
invocation which are not available with the <code>set</code> builtin.
</p>
<dl compact="compact">
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>Read and execute commands from the first non-option argument
<var>command_string</var>, then exit.
If there are arguments after the <var>command_string</var>,
@@ -7712,12 +7823,12 @@ The assignment to <code>$0</code> sets the name of the shell, which is used
in warning and error messages.
</p>
</dd>
-<dt><code>-i</code></dt>
+<dt><span><code>-i</code></span></dt>
<dd><p>Force the shell to run interactively. Interactive shells are
described in <a href="#Interactive-Shells">Interactive Shells</a>.
</p>
</dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>Make this shell act as if it had been directly invoked by login.
When the shell is interactive, this is equivalent to starting a
login shell with &lsquo;<samp>exec -l bash</samp>&rsquo;.
@@ -7729,11 +7840,11 @@ See <a href="#Bash-Startup-Files">Bash Startup Files</a>, for a description of t
of a login shell.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>Make the shell a restricted shell (see <a href="#The-Restricted-Shell">The Restricted Shell</a>).
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>If this option is present, or if no arguments remain after option
processing, then commands are read from the standard input.
This option allows the positional parameters to be set
@@ -7741,16 +7852,16 @@ when invoking an interactive shell or when reading input
through a pipe.
</p>
</dd>
-<dt><code>-D</code></dt>
+<dt><span><code>-D</code></span></dt>
<dd><p>A list of all double-quoted strings preceded by &lsquo;<samp>$</samp>&rsquo;
is printed on the standard output.
These are the strings that
are subject to language translation when the current locale
-is not <code>C</code> or <code>POSIX</code> (see <a href="#Locale-Translation">Locale Translation</a>).
+is not <code>C</code> or <code>POSIX</code> (see <a href="#Locale-Translation">Locale-Specific Translation</a>).
This implies the <samp>-n</samp> option; no commands will be executed.
</p>
</dd>
-<dt><code>[-+]O [<var>shopt_option</var>]</code></dt>
+<dt><span><code>[-+]O [<var>shopt_option</var>]</code></span></dt>
<dd><p><var>shopt_option</var> is one of the shell options accepted by the
<code>shopt</code> builtin (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
If <var>shopt_option</var> is present, <samp>-O</samp> sets the value of that option;
@@ -7761,7 +7872,7 @@ If the invocation option is <samp>+O</samp>, the output is displayed in a format
that may be reused as input.
</p>
</dd>
-<dt><code>--</code></dt>
+<dt><span><code>--</code></span></dt>
<dd><p>A <code>--</code> signals the end of options and disables further option
processing.
Any arguments after the <code>--</code> are treated as filenames and arguments.
@@ -7792,7 +7903,9 @@ 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>
-<span id="Bash-Startup-Files"></span><div class="header">
+</div>
+<div class="section" id="Bash-Startup-Files">
+<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>
@@ -7889,10 +8002,12 @@ No other startup files are read.
<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
-daemon, usually <code>rshd</code>, or the secure shell daemon <code>sshd</code>.
-If Bash determines it is being run in
-this fashion, it reads and executes commands from <samp>~/.bashrc</samp>, if that
+connected to a network connection, as when executed by
+the historical remote shell daemon, usually <code>rshd</code>,
+or the secure shell daemon <code>sshd</code>.
+If Bash
+determines it is being run non-interactively in this fashion,
+it reads and executes commands from <samp>~/.bashrc</samp>, if that
file exists and is readable.
It will not do this if invoked as <code>sh</code>.
The <samp>--norc</samp> option may be used to inhibit this behavior, and the
@@ -7912,7 +8027,9 @@ 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>
-<span id="Interactive-Shells"></span><div class="header">
+</div>
+<div class="section" id="Interactive-Shells">
+<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>
@@ -7920,25 +8037,24 @@ Next: <a href="#Bash-Conditional-Expressions" accesskey="n" rel="next">Bash Cond
<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.
-</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.
-</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?
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#What-is-an-Interactive-Shell_003f" accesskey="1">What is an Interactive Shell?</a></li>
+<li><a href="#Is-this-Shell-Interactive_003f" accesskey="2">Is this Shell Interactive?</a></li>
+<li><a href="#Interactive-Shell-Behavior" accesskey="3">Interactive Shell Behavior</a></li>
+</ul>
<hr>
-<span id="What-is-an-Interactive-Shell_003f"></span><div class="header">
+<div class="subsection" id="What-is-an-Interactive-Shell_003f">
+<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>
<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
-specified, without specifying the <samp>-c</samp> option, and
+is one started without non-option arguments
+(unless <samp>-s</samp> is specified)
+and without specifying the <samp>-c</samp> option,
whose input and error output are both
connected to terminals (as determined by <code>isatty(3)</code>),
or one started with the <samp>-i</samp> option.
@@ -7950,7 +8066,9 @@ terminal.
when an interactive shell is started.
</p>
<hr>
-<span id="Is-this-Shell-Interactive_003f"></span><div class="header">
+</div>
+<div class="subsection" id="Is-this-Shell-Interactive_003f">
+<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>
@@ -7981,7 +8099,9 @@ fi
</pre></div>
<hr>
-<span id="Interactive-Shell-Behavior"></span><div class="header">
+</div>
+<div class="subsection" id="Interactive-Shell-Behavior">
+<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>
@@ -8005,7 +8125,7 @@ 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 values of the set elements of the <code>PROMPT_COMMANDS</code>
+</li><li> Bash executes the values of the set elements of the <code>PROMPT_COMMAND</code>
array variable as commands before printing the primary prompt, <code>$PS1</code>
(see <a href="#Bash-Variables">Bash Variables</a>).
@@ -8017,7 +8137,7 @@ instead of exiting immediately when it receives an <code>EOF</code> on its
standard input when reading a command (see <a href="#The-Set-Builtin">The Set Builtin</a>).
</li><li> Command history (see <a href="#Bash-History-Facilities">Bash History Facilities</a>)
-and history expansion (see <a href="#History-Interaction">History Interaction</a>)
+and history expansion (see <a href="#History-Interaction">History Expansion</a>)
are enabled by default.
Bash will save the command history to the file named by <code>$HISTFILE</code>
when a shell with history enabled exits.
@@ -8060,9 +8180,11 @@ status will not cause the shell to exit (see <a href="#Bash-POSIX-Mode">Bash POS
</li><li> Parser syntax errors will not cause the shell to exit.
-</li><li> Simple spelling correction for directory arguments to the <code>cd</code>
-builtin is enabled by default (see the description of the <code>cdspell</code>
+</li><li> If the <code>cdspell</code> shell option is enabled, the shell will attempt
+simple spelling correction for directory arguments to the <code>cd</code>
+builtin (see the description of the <code>cdspell</code>
option to the <code>shopt</code> builtin in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
+The <code>cdspell</code> option is only effective in interactive shells.
</li><li> The shell will check the value of the <code>TMOUT</code> variable and exit
if a command is not read within the specified number of seconds after
@@ -8071,7 +8193,10 @@ printing <code>$PS1</code> (see <a href="#Bash-Variables">Bash Variables</a>).
</li></ol>
<hr>
-<span id="Bash-Conditional-Expressions"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Bash-Conditional-Expressions">
+<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>
@@ -8079,7 +8204,10 @@ Next: <a href="#Shell-Arithmetic" accesskey="n" rel="next">Shell Arithmetic</a>,
<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>
+(see <a href="#Conditional-Constructs">Conditional Constructs</a>)
+and the <code>test</code> and <code>[</code> builtin commands
+(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
+The <code>test</code>
and <code>[</code> commands determine their behavior based on the number
of arguments; see the descriptions of those commands for any other
command-specific actions.
@@ -8107,130 +8235,130 @@ The <code>test</code> command uses ASCII ordering.
links and operate on the target of the link, rather than the link itself.
</p>
<dl compact="compact">
-<dt><code>-a <var>file</var></code></dt>
+<dt><span><code>-a <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists.
</p>
</dd>
-<dt><code>-b <var>file</var></code></dt>
+<dt><span><code>-b <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a block special file.
</p>
</dd>
-<dt><code>-c <var>file</var></code></dt>
+<dt><span><code>-c <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a character special file.
</p>
</dd>
-<dt><code>-d <var>file</var></code></dt>
+<dt><span><code>-d <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a directory.
</p>
</dd>
-<dt><code>-e <var>file</var></code></dt>
+<dt><span><code>-e <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists.
</p>
</dd>
-<dt><code>-f <var>file</var></code></dt>
+<dt><span><code>-f <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a regular file.
</p>
</dd>
-<dt><code>-g <var>file</var></code></dt>
+<dt><span><code>-g <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and its set-group-id bit is set.
</p>
</dd>
-<dt><code>-h <var>file</var></code></dt>
+<dt><span><code>-h <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a symbolic link.
</p>
</dd>
-<dt><code>-k <var>file</var></code></dt>
+<dt><span><code>-k <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and its &quot;sticky&quot; bit is set.
</p>
</dd>
-<dt><code>-p <var>file</var></code></dt>
+<dt><span><code>-p <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a named pipe (FIFO).
</p>
</dd>
-<dt><code>-r <var>file</var></code></dt>
+<dt><span><code>-r <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is readable.
</p>
</dd>
-<dt><code>-s <var>file</var></code></dt>
+<dt><span><code>-s <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and has a size greater than zero.
</p>
</dd>
-<dt><code>-t <var>fd</var></code></dt>
+<dt><span><code>-t <var>fd</var></code></span></dt>
<dd><p>True if file descriptor <var>fd</var> is open and refers to a terminal.
</p>
</dd>
-<dt><code>-u <var>file</var></code></dt>
+<dt><span><code>-u <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and its set-user-id bit is set.
</p>
</dd>
-<dt><code>-w <var>file</var></code></dt>
+<dt><span><code>-w <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is writable.
</p>
</dd>
-<dt><code>-x <var>file</var></code></dt>
+<dt><span><code>-x <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is executable.
</p>
</dd>
-<dt><code>-G <var>file</var></code></dt>
+<dt><span><code>-G <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is owned by the effective group id.
</p>
</dd>
-<dt><code>-L <var>file</var></code></dt>
+<dt><span><code>-L <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a symbolic link.
</p>
</dd>
-<dt><code>-N <var>file</var></code></dt>
+<dt><span><code>-N <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and has been modified since it was last read.
</p>
</dd>
-<dt><code>-O <var>file</var></code></dt>
+<dt><span><code>-O <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is owned by the effective user id.
</p>
</dd>
-<dt><code>-S <var>file</var></code></dt>
+<dt><span><code>-S <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a socket.
</p>
</dd>
-<dt><code><var>file1</var> -ef <var>file2</var></code></dt>
+<dt><span><code><var>file1</var> -ef <var>file2</var></code></span></dt>
<dd><p>True if <var>file1</var> and <var>file2</var> refer to the same device and
inode numbers.
</p>
</dd>
-<dt><code><var>file1</var> -nt <var>file2</var></code></dt>
+<dt><span><code><var>file1</var> -nt <var>file2</var></code></span></dt>
<dd><p>True if <var>file1</var> is newer (according to modification date)
than <var>file2</var>, or if <var>file1</var> exists and <var>file2</var> does not.
</p>
</dd>
-<dt><code><var>file1</var> -ot <var>file2</var></code></dt>
+<dt><span><code><var>file1</var> -ot <var>file2</var></code></span></dt>
<dd><p>True if <var>file1</var> is older than <var>file2</var>,
or if <var>file2</var> exists and <var>file1</var> does not.
</p>
</dd>
-<dt><code>-o <var>optname</var></code></dt>
+<dt><span><code>-o <var>optname</var></code></span></dt>
<dd><p>True if the shell option <var>optname</var> is enabled.
The list of options appears in the description of the <samp>-o</samp>
option to the <code>set</code> builtin (see <a href="#The-Set-Builtin">The Set Builtin</a>).
</p>
</dd>
-<dt><code>-v <var>varname</var></code></dt>
+<dt><span><code>-v <var>varname</var></code></span></dt>
<dd><p>True if the shell variable <var>varname</var> is set (has been assigned a value).
</p>
</dd>
-<dt><code>-R <var>varname</var></code></dt>
+<dt><span><code>-R <var>varname</var></code></span></dt>
<dd><p>True if the shell variable <var>varname</var> is set and is a name reference.
</p>
</dd>
-<dt><code>-z <var>string</var></code></dt>
+<dt><span><code>-z <var>string</var></code></span></dt>
<dd><p>True if the length of <var>string</var> is zero.
</p>
</dd>
-<dt><code>-n <var>string</var></code></dt>
-<dt><code><var>string</var></code></dt>
+<dt><span><code>-n <var>string</var></code></span></dt>
+<dt><span><code><var>string</var></code></span></dt>
<dd><p>True if the length of <var>string</var> is non-zero.
</p>
</dd>
-<dt><code><var>string1</var> == <var>string2</var></code></dt>
-<dt><code><var>string1</var> = <var>string2</var></code></dt>
+<dt><span><code><var>string1</var> == <var>string2</var></code></span></dt>
+<dt><span><code><var>string1</var> = <var>string2</var></code></span></dt>
<dd><p>True if the strings are equal.
When used with the <code>[[</code> command, this performs pattern matching as
described above (see <a href="#Conditional-Constructs">Conditional Constructs</a>).
@@ -8238,19 +8366,19 @@ described above (see <a href="#Conditional-Constructs">Conditional Constructs</a
<p>&lsquo;<samp>=</samp>&rsquo; should be used with the <code>test</code> command for <small>POSIX</small> conformance.
</p>
</dd>
-<dt><code><var>string1</var> != <var>string2</var></code></dt>
+<dt><span><code><var>string1</var> != <var>string2</var></code></span></dt>
<dd><p>True if the strings are not equal.
</p>
</dd>
-<dt><code><var>string1</var> &lt; <var>string2</var></code></dt>
+<dt><span><code><var>string1</var> &lt; <var>string2</var></code></span></dt>
<dd><p>True if <var>string1</var> sorts before <var>string2</var> lexicographically.
</p>
</dd>
-<dt><code><var>string1</var> &gt; <var>string2</var></code></dt>
+<dt><span><code><var>string1</var> &gt; <var>string2</var></code></span></dt>
<dd><p>True if <var>string1</var> sorts after <var>string2</var> lexicographically.
</p>
</dd>
-<dt><code><var>arg1</var> OP <var>arg2</var></code></dt>
+<dt><span><code><var>arg1</var> OP <var>arg2</var></code></span></dt>
<dd><p><code>OP</code> is one of
&lsquo;<samp>-eq</samp>&rsquo;, &lsquo;<samp>-ne</samp>&rsquo;, &lsquo;<samp>-lt</samp>&rsquo;, &lsquo;<samp>-le</samp>&rsquo;, &lsquo;<samp>-gt</samp>&rsquo;, or &lsquo;<samp>-ge</samp>&rsquo;.
These arithmetic binary operators return true if <var>arg1</var>
@@ -8264,7 +8392,9 @@ are evaluated as arithmetic expressions (see <a href="#Shell-Arithmetic">Shell A
</dl>
<hr>
-<span id="Shell-Arithmetic"></span><div class="header">
+</div>
+<div class="section" id="Shell-Arithmetic">
+<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>
@@ -8288,75 +8418,75 @@ equal-precedence operators.
The levels are listed in order of decreasing precedence.
</p>
<dl compact="compact">
-<dt><code><var>id</var>++ <var>id</var>--</code></dt>
+<dt><span><code><var>id</var>++ <var>id</var>--</code></span></dt>
<dd><p>variable post-increment and post-decrement
</p>
</dd>
-<dt><code>++<var>id</var> --<var>id</var></code></dt>
+<dt><span><code>++<var>id</var> --<var>id</var></code></span></dt>
<dd><p>variable pre-increment and pre-decrement
</p>
</dd>
-<dt><code>- +</code></dt>
+<dt><span><code>- +</code></span></dt>
<dd><p>unary minus and plus
</p>
</dd>
-<dt><code>! ~</code></dt>
+<dt><span><code>! ~</code></span></dt>
<dd><p>logical and bitwise negation
</p>
</dd>
-<dt><code>**</code></dt>
+<dt><span><code>**</code></span></dt>
<dd><p>exponentiation
</p>
</dd>
-<dt><code>* / %</code></dt>
+<dt><span><code>* / %</code></span></dt>
<dd><p>multiplication, division, remainder
</p>
</dd>
-<dt><code>+ -</code></dt>
+<dt><span><code>+ -</code></span></dt>
<dd><p>addition, subtraction
</p>
</dd>
-<dt><code>&lt;&lt; &gt;&gt;</code></dt>
+<dt><span><code>&lt;&lt; &gt;&gt;</code></span></dt>
<dd><p>left and right bitwise shifts
</p>
</dd>
-<dt><code>&lt;= &gt;= &lt; &gt;</code></dt>
+<dt><span><code>&lt;= &gt;= &lt; &gt;</code></span></dt>
<dd><p>comparison
</p>
</dd>
-<dt><code>== !=</code></dt>
+<dt><span><code>== !=</code></span></dt>
<dd><p>equality and inequality
</p>
</dd>
-<dt><code>&amp;</code></dt>
+<dt><span><code>&amp;</code></span></dt>
<dd><p>bitwise AND
</p>
</dd>
-<dt><code>^</code></dt>
+<dt><span><code>^</code></span></dt>
<dd><p>bitwise exclusive OR
</p>
</dd>
-<dt><code>|</code></dt>
+<dt><span><code>|</code></span></dt>
<dd><p>bitwise OR
</p>
</dd>
-<dt><code>&amp;&amp;</code></dt>
+<dt><span><code>&amp;&amp;</code></span></dt>
<dd><p>logical AND
</p>
</dd>
-<dt><code>||</code></dt>
+<dt><span><code>||</code></span></dt>
<dd><p>logical OR
</p>
</dd>
-<dt><code>expr ? expr : expr</code></dt>
+<dt><span><code>expr ? expr : expr</code></span></dt>
<dd><p>conditional operator
</p>
</dd>
-<dt><code>= *= /= %= += -= &lt;&lt;= &gt;&gt;= &amp;= ^= |=</code></dt>
+<dt><span><code>= *= /= %= += -= &lt;&lt;= &gt;&gt;= &amp;= ^= |=</code></span></dt>
<dd><p>assignment
</p>
</dd>
-<dt><code>expr1 , expr2</code></dt>
+<dt><span><code>expr1 , expr2</code></span></dt>
<dd><p>comma
</p></dd>
</dl>
@@ -8369,9 +8499,9 @@ A shell variable that is null or unset evaluates to 0 when referenced
by name without using the parameter expansion syntax.
The value of a variable is evaluated as an arithmetic expression
when it is referenced, or when a variable which has been given the
-<var>integer</var> attribute using &lsquo;<samp>declare -i</samp>&rsquo; is assigned a value.
+<code>integer</code> attribute using &lsquo;<samp>declare -i</samp>&rsquo; is assigned a value.
A null value evaluates to 0.
-A shell variable need not have its <var>integer</var> attribute turned on
+A shell variable need not have its <code>integer</code> attribute turned on
to be used in an expression.
</p>
<p>Integer constants follow the C language definition, without suffixes or
@@ -8395,14 +8525,16 @@ parentheses are evaluated first and may override the precedence
rules above.
</p>
<hr>
-<span id="Aliases"></span><div class="header">
+</div>
+<div class="section" id="Aliases">
+<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>
<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
+<p><em>Aliases</em> allow a string to be substituted for a word when it is used
as the first word of a simple command.
The shell maintains a list of aliases that may be set and unset with
the <code>alias</code> and <code>unalias</code> builtin commands.
@@ -8422,7 +8554,7 @@ This means that one may alias <code>ls</code> to <code>&quot;ls -F&quot;</code>,
for instance, and Bash does not try to recursively expand the
replacement text.
If the last character of the alias value is a
-<var>blank</var>, then the next command word following the
+<code>blank</code>, then the next command word following the
alias is also checked for alias expansion.
</p>
<p>Aliases are created and listed with the <code>alias</code>
@@ -8430,7 +8562,7 @@ command, and removed with the <code>unalias</code> command.
</p>
<p>There is no mechanism for using arguments in the replacement text,
as in <code>csh</code>.
-If arguments are needed, a shell function should be used
+If arguments are needed, use a shell function
(see <a href="#Shell-Functions">Shell Functions</a>).
</p>
<p>Aliases are not expanded when the shell is not interactive,
@@ -8460,7 +8592,9 @@ in compound commands.
<p>For almost every purpose, shell functions are preferred over aliases.
</p>
<hr>
-<span id="Arrays"></span><div class="header">
+</div>
+<div class="section" id="Arrays">
+<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>
@@ -8543,6 +8677,9 @@ interpreted as relative to one greater than the maximum index of
<var>name</var>, so negative indices count back from the end of the
array, and an index of -1 references the last element.
</p>
+<p>The &lsquo;<samp>+=</samp>&rsquo; operator will append to an array variable when assigning
+using the compound assignment syntax; see <a href="#Shell-Parameters">Shell Parameters</a> above.
+</p>
<p>Any element of an array may be referenced using
<code>${<var>name</var>[<var>subscript</var>]}</code>.
The braces are required to avoid
@@ -8593,8 +8730,14 @@ destroys the array element at index <var>subscript</var>.
Negative subscripts to indexed arrays are interpreted as described above.
Unsetting the last element of an array variable does not unset the variable.
<code>unset <var>name</var></code>, where <var>name</var> is an array, removes the
-entire array. A subscript of &lsquo;<samp>*</samp>&rsquo; or &lsquo;<samp>@</samp>&rsquo; also removes the
entire array.
+<code>unset <var>name</var>[<var>subscript</var>]</code> behaves differently
+depending on the array type when given a
+subscript of &lsquo;<samp>*</samp>&rsquo; or &lsquo;<samp>@</samp>&rsquo;.
+When <var>name</var> is an associative array, it removes the element with key
+&lsquo;<samp>*</samp>&rsquo; or &lsquo;<samp>@</samp>&rsquo;.
+If <var>name</var> is an indexed array, <code>unset</code> removes all of the elements,
+but does not remove the array itself.
</p>
<p>When using a variable name with a subscript as an argument to a command,
such as with <code>unset</code>, without using the word expansion syntax
@@ -8613,18 +8756,15 @@ builtins display array values in a way that allows them to be
reused as input.
</p>
<hr>
-<span id="The-Directory-Stack"></span><div class="header">
+</div>
+<div class="section" id="The-Directory-Stack">
+<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>
<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
- the directory stack.
-</td></tr>
-</table>
<p>The directory stack is a list of recently-visited directories. The
<code>pushd</code> builtin adds directories to the stack as it changes
@@ -8637,17 +8777,20 @@ of the directory stack.
<p>The contents of the directory stack are also visible
as the value of the <code>DIRSTACK</code> shell variable.
</p>
+<ul class="section-toc">
+<li><a href="#Directory-Stack-Builtins" accesskey="1">Directory Stack Builtins</a></li>
+</ul>
<hr>
-<span id="Directory-Stack-Builtins"></span><div class="header">
+<div class="subsection" id="Directory-Stack-Builtins">
+<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>
<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><span id="index-dirs"></span>
-<div class="example">
+<dt id='index-dirs'><span><code>dirs</code><a href='#index-dirs' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">dirs [-clpv] [+<var>N</var> | -<var>N</var>]
</pre></div>
@@ -8657,27 +8800,27 @@ are added to the list with the <code>pushd</code> command; the
The current directory is always the first directory in the stack.
</p>
<dl compact="compact">
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>Clears the directory stack by deleting all of the elements.
</p></dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>Produces a listing using full pathnames;
the default listing format uses a tilde to denote the home directory.
</p></dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>Causes <code>dirs</code> to print the directory stack with one entry per
line.
</p></dd>
-<dt><code>-v</code></dt>
+<dt><span><code>-v</code></span></dt>
<dd><p>Causes <code>dirs</code> to print the directory stack with one entry per
line, prefixing each entry with its index in the stack.
</p></dd>
-<dt><code>+<var>N</var></code></dt>
+<dt><span><code>+<var>N</var></code></span></dt>
<dd><p>Displays the <var>N</var>th directory (counting from the left of the
list printed by <code>dirs</code> when invoked without options), starting
with zero.
</p></dd>
-<dt><code>-<var>N</var></code></dt>
+<dt><span><code>-<var>N</var></code></span></dt>
<dd><p>Displays the <var>N</var>th directory (counting from the right of the
list printed by <code>dirs</code> when invoked without options), starting
with zero.
@@ -8685,80 +8828,116 @@ with zero.
</dl>
</dd>
-<dt><code>popd</code></dt>
-<dd><span id="index-popd"></span>
-<div class="example">
+<dt id='index-popd'><span><code>popd</code><a href='#index-popd' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">popd [-n] [+<var>N</var> | -<var>N</var>]
</pre></div>
-<p>When no arguments are given, <code>popd</code>
-removes the top directory from the stack and
-performs a <code>cd</code> to the new top directory.
+<p>Removes elements from the directory stack.
The elements are numbered from 0 starting at the first directory
-listed with <code>dirs</code>; that is, <code>popd</code> is equivalent to <code>popd +0</code>.
+listed by <code>dirs</code>;
+that is, <code>popd</code> is equivalent to <code>popd +0</code>.
+</p>
+<p>When no arguments are given, <code>popd</code>
+removes the top directory from the stack and changes to
+the new top directory.
+</p>
+<p>Arguments, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Suppresses the normal change of directory when removing directories
from the stack, so that only the stack is manipulated.
</p></dd>
-<dt><code>+<var>N</var></code></dt>
+<dt><span><code>+<var>N</var></code></span></dt>
<dd><p>Removes the <var>N</var>th directory (counting from the left of the
-list printed by <code>dirs</code>), starting with zero.
+list printed by <code>dirs</code>), starting with zero, from the stack.
</p></dd>
-<dt><code>-<var>N</var></code></dt>
+<dt><span><code>-<var>N</var></code></span></dt>
<dd><p>Removes the <var>N</var>th directory (counting from the right of the
-list printed by <code>dirs</code>), starting with zero.
+list printed by <code>dirs</code>), starting with zero, from the stack.
</p></dd>
</dl>
+<p>If the top element of the directory stack is modified, and
+the <samp>-n</samp> option was not supplied, <code>popd</code> uses the <code>cd</code>
+builtin to change to the directory at the top of the stack.
+If the <code>cd</code> fails, <code>popd</code> returns a non-zero value.
+</p>
+<p>Otherwise, <code>popd</code> returns an unsuccessful status if
+an invalid option is encountered, the directory stack
+is empty, or a non-existent directory stack entry is specified.
+</p>
+<p>If the <code>popd</code> command is successful,
+Bash runs <code>dirs</code> to show the final contents of the directory stack,
+and the return status is 0.
+</p>
<span id="index-pushd"></span>
</dd>
-<dt><code>pushd</code></dt>
+<dt><span><code>pushd</code></span></dt>
<dd><div class="example">
<pre class="example">pushd [-n] [<var>+N</var> | <var>-N</var> | <var>dir</var>]
</pre></div>
-<p>Save the current directory on the top of the directory stack
-and then <code>cd</code> to <var>dir</var>.
-With no arguments, <code>pushd</code> exchanges the top two directories
-and makes the new top the current directory.
+<p>Adds a directory to the top of the directory stack, or rotates
+the stack, making the new top of the stack the current working
+directory.
+With no arguments, <code>pushd</code> exchanges the top two elements
+of the directory stack.
+</p>
+<p>Arguments, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Suppresses the normal change of directory when rotating or
adding directories to the stack, so that only the stack is manipulated.
</p></dd>
-<dt><code>+<var>N</var></code></dt>
+<dt><span><code>+<var>N</var></code></span></dt>
<dd><p>Brings the <var>N</var>th directory (counting from the left of the
list printed by <code>dirs</code>, starting with zero) to the top of
the list by rotating the stack.
</p></dd>
-<dt><code>-<var>N</var></code></dt>
+<dt><span><code>-<var>N</var></code></span></dt>
<dd><p>Brings the <var>N</var>th directory (counting from the right of the
list printed by <code>dirs</code>, starting with zero) to the top of
the list by rotating the stack.
</p></dd>
-<dt><code><var>dir</var></code></dt>
-<dd><p>Makes <var>dir</var> be the top of the stack, making
-it the new current directory as if it had been supplied as an argument
-to the <code>cd</code> builtin.
+<dt><span><code><var>dir</var></code></span></dt>
+<dd><p>Makes <var>dir</var> be the top of the stack.
</p></dd>
</dl>
+
+<p>After the stack has been modified, if the <samp>-n</samp> option was not
+supplied, <code>pushd</code> uses the <code>cd</code> builtin to change to the
+directory at the top of the stack.
+If the <code>cd</code> fails, <code>pushd</code> returns a non-zero value.
+</p>
+<p>Otherwise, if no arguments are supplied, <code>pushd</code> returns 0 unless the
+directory stack is empty.
+When rotating the directory stack, <code>pushd</code> returns 0 unless
+the directory stack is empty or a non-existent directory stack element
+is specified.
+</p>
+<p>If the <code>pushd</code> command is successful,
+Bash runs <code>dirs</code> to show the final contents of the directory stack.
+</p>
</dd>
</dl>
<hr>
-<span id="Controlling-the-Prompt"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Controlling-the-Prompt">
+<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>
<span id="Controlling-the-Prompt-1"></span><h3 class="section">6.9 Controlling the Prompt</h3>
<span id="index-prompting"></span>
-<p>Bash examines the value of the array variable <code>PROMPT_COMMANDS</code> just before
+<p>Bash examines the value of the array variable <code>PROMPT_COMMAND</code> just before
printing each primary prompt.
-If any elements in <code>PROMPT_COMMANDS</code> are set and non-null, Bash
+If any elements in <code>PROMPT_COMMAND</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>
@@ -8767,90 +8946,91 @@ can appear in the prompt variables <code>PS0</code>, <code>PS1</code>, <code>PS2
<code>PS4</code>:
</p>
<dl compact="compact">
-<dt><code>\a</code></dt>
+<dt><span><code>\a</code></span></dt>
<dd><p>A bell character.
</p></dd>
-<dt><code>\d</code></dt>
+<dt><span><code>\d</code></span></dt>
<dd><p>The date, in &quot;Weekday Month Date&quot; format (e.g., &quot;Tue May 26&quot;).
</p></dd>
-<dt><code>\D{<var>format</var>}</code></dt>
+<dt><span><code>\D{<var>format</var>}</code></span></dt>
<dd><p>The <var>format</var> is passed to <code>strftime</code>(3) and the result is inserted
into the prompt string; an empty <var>format</var> results in a locale-specific
time representation. The braces are required.
</p></dd>
-<dt><code>\e</code></dt>
+<dt><span><code>\e</code></span></dt>
<dd><p>An escape character.
</p></dd>
-<dt><code>\h</code></dt>
+<dt><span><code>\h</code></span></dt>
<dd><p>The hostname, up to the first &lsquo;.&rsquo;.
</p></dd>
-<dt><code>\H</code></dt>
+<dt><span><code>\H</code></span></dt>
<dd><p>The hostname.
</p></dd>
-<dt><code>\j</code></dt>
+<dt><span><code>\j</code></span></dt>
<dd><p>The number of jobs currently managed by the shell.
</p></dd>
-<dt><code>\l</code></dt>
+<dt><span><code>\l</code></span></dt>
<dd><p>The basename of the shell&rsquo;s terminal device name.
</p></dd>
-<dt><code>\n</code></dt>
+<dt><span><code>\n</code></span></dt>
<dd><p>A newline.
</p></dd>
-<dt><code>\r</code></dt>
+<dt><span><code>\r</code></span></dt>
<dd><p>A carriage return.
</p></dd>
-<dt><code>\s</code></dt>
+<dt><span><code>\s</code></span></dt>
<dd><p>The name of the shell, the basename of <code>$0</code> (the portion
following the final slash).
</p></dd>
-<dt><code>\t</code></dt>
+<dt><span><code>\t</code></span></dt>
<dd><p>The time, in 24-hour HH:MM:SS format.
</p></dd>
-<dt><code>\T</code></dt>
+<dt><span><code>\T</code></span></dt>
<dd><p>The time, in 12-hour HH:MM:SS format.
</p></dd>
-<dt><code>\@</code></dt>
+<dt><span><code>\@</code></span></dt>
<dd><p>The time, in 12-hour am/pm format.
</p></dd>
-<dt><code>\A</code></dt>
+<dt><span><code>\A</code></span></dt>
<dd><p>The time, in 24-hour HH:MM format.
</p></dd>
-<dt><code>\u</code></dt>
+<dt><span><code>\u</code></span></dt>
<dd><p>The username of the current user.
</p></dd>
-<dt><code>\v</code></dt>
+<dt><span><code>\v</code></span></dt>
<dd><p>The version of Bash (e.g., 2.00)
</p></dd>
-<dt><code>\V</code></dt>
+<dt><span><code>\V</code></span></dt>
<dd><p>The release of Bash, version + patchlevel (e.g., 2.00.0)
</p></dd>
-<dt><code>\w</code></dt>
-<dd><p>The current working directory, with <code>$HOME</code> abbreviated with a tilde
+<dt><span><code>\w</code></span></dt>
+<dd><p>The value of the <code>PWD</code> shell variable (<code>$PWD</code>),
+with <code>$HOME</code> abbreviated with a tilde
(uses the <code>$PROMPT_DIRTRIM</code> variable).
</p></dd>
-<dt><code>\W</code></dt>
+<dt><span><code>\W</code></span></dt>
<dd><p>The basename of <code>$PWD</code>, with <code>$HOME</code> abbreviated with a tilde.
</p></dd>
-<dt><code>\!</code></dt>
+<dt><span><code>\!</code></span></dt>
<dd><p>The history number of this command.
</p></dd>
-<dt><code>\#</code></dt>
+<dt><span><code>\#</code></span></dt>
<dd><p>The command number of this command.
</p></dd>
-<dt><code>\$</code></dt>
+<dt><span><code>\$</code></span></dt>
<dd><p>If the effective uid is 0, <code>#</code>, otherwise <code>$</code>.
</p></dd>
-<dt><code>\<var>nnn</var></code></dt>
+<dt><span><code>\<var>nnn</var></code></span></dt>
<dd><p>The character whose ASCII code is the octal value <var>nnn</var>.
</p></dd>
-<dt><code>\\</code></dt>
+<dt><span><code>\\</code></span></dt>
<dd><p>A backslash.
</p></dd>
-<dt><code>\[</code></dt>
+<dt><span><code>\[</code></span></dt>
<dd><p>Begin a sequence of non-printing characters. This could be used to
embed a terminal control sequence into the prompt.
</p></dd>
-<dt><code>\]</code></dt>
+<dt><span><code>\]</code></span></dt>
<dd><p>End a sequence of non-printing characters.
</p></dd>
</dl>
@@ -8871,7 +9051,9 @@ appear within command substitution or contain characters special to
word expansion.
</p>
<hr>
-<span id="The-Restricted-Shell"></span><div class="header">
+</div>
+<div class="section" id="The-Restricted-Shell">
+<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>
@@ -8909,7 +9091,7 @@ option to the <code>hash</code> builtin command.
<samp>-f</samp> and <samp>-d</samp> options to the <code>enable</code> builtin.
</li><li> Using the <code>enable</code> builtin command to enable disabled shell builtins.
</li><li> Specifying the <samp>-p</samp> option to the <code>command</code> builtin.
-</li><li> Turning off restricted mode with &lsquo;<samp>set +r</samp>&rsquo; or &lsquo;<samp>set +o restricted</samp>&rsquo;.
+</li><li> Turning off restricted mode with &lsquo;<samp>set +r</samp>&rsquo; or &lsquo;<samp>shopt -u restricted_shell</samp>&rsquo;.
</li></ul>
<p>These restrictions are enforced after any startup files are read.
@@ -8921,8 +9103,8 @@ the shell spawned to execute the script.
<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,
+allow shell escapes are particularly vulnerable), changing the current
+directory to a non-writable directory other than <code>$HOME</code> 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>).
@@ -8932,7 +9114,9 @@ such as <code>jails</code>, <code>zones</code>, or <code>containers</code>.
</p>
<hr>
-<span id="Bash-POSIX-Mode"></span><div class="header">
+</div>
+<div class="section" id="Bash-POSIX-Mode">
+<div class="header">
<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>
@@ -8972,6 +9156,12 @@ example, <code>SIGTSTP</code>.
</li><li> Reserved words appearing in a context where reserved words are recognized
do not undergo alias expansion.
+</li><li> Alias expansion is performed when initially parsing a command substitution.
+The default mode generally defers it, when enabled, until the command
+substitution is executed. This means that command substitution will not
+expand aliases that are defined after the command substitution is initially
+parsed (e.g., as part of a function definition).
+
</li><li> The <small>POSIX</small> <code>PS1</code> and <code>PS2</code> expansions of &lsquo;<samp>!</samp>&rsquo; to
the history number and &lsquo;<samp>!!</samp>&rsquo; to &lsquo;<samp>!</samp>&rsquo; are enabled,
and parameter expansion is performed on the values of <code>PS1</code> and
@@ -9042,7 +9232,10 @@ a value to a readonly variable.
</li><li> A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a special
-builtin, but not with any other simple command.
+builtin, but not with any other simple command. For any other simple
+command, the shell aborts execution of that command, and execution continues
+at the top level (&quot;the shell shall not perform any further processing of the
+command in which the error occurred&quot;).
</li><li> A non-interactive shell exits with an error status if the iteration
variable in a <code>for</code> statement or the selection variable in a
@@ -9063,7 +9256,7 @@ the <code>eval</code> builtin.
</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.
-</li><li> When expanding the &lsquo;<samp>*</samp>&rsquo; special parameter in a pattern context where the
+</li><li> Expanding the &lsquo;<samp>*</samp>&rsquo; special parameter in a pattern context where the
expansion is double-quoted does not treat the <code>$*</code> as if it were
double-quoted.
@@ -9127,15 +9320,15 @@ shell function names and definitions.
variable values without quotes, unless they contain shell metacharacters,
even if the result contains nonprinting characters.
-</li><li> When the <code>cd</code> builtin is invoked in <var>logical</var> mode, and the pathname
+</li><li> When the <code>cd</code> builtin is invoked in logical mode, and the pathname
constructed from <code>$PWD</code> and the directory name supplied as an argument
does not refer to an existing directory, <code>cd</code> will fail instead of
-falling back to <var>physical</var> mode.
+falling back to physical mode.
</li><li> When the <code>cd</code> builtin cannot change a directory because the
length of the pathname
constructed from <code>$PWD</code> and the directory name supplied as an argument
-exceeds <var>PATH_MAX</var> when all symbolic links are expanded, <code>cd</code> will
+exceeds <code>PATH_MAX</code> when all symbolic links are expanded, <code>cd</code> will
fail instead of attempting to use only the supplied directory name.
</li><li> The <code>pwd</code> builtin verifies that the value it prints is the same as the
@@ -9171,6 +9364,11 @@ has been set.
If Bash receives a trapped signal while executing <code>read</code>, the trap
handler executes and <code>read</code> returns an exit status greater than 128.
+</li><li> The <code>printf</code> builtin uses <code>double</code> (via <code>strtod</code>) to convert
+arguments corresponding to floating point conversion specifiers, instead of
+<code>long double</code> if it&rsquo;s available. The &lsquo;<samp>L</samp>&rsquo; length modifier forces
+<code>printf</code> to use <code>long double</code> if it&rsquo;s available.
+
</li><li> Bash removes an exited background process&rsquo;s status from the list of such
statuses after the <code>wait</code> builtin is used to obtain it.
@@ -9195,7 +9393,9 @@ the <samp>--enable-strict-posix-default</samp> to <code>configure</code> when bu
(see <a href="#Optional-Features">Optional Features</a>).
</p>
<hr>
-<span id="Shell-Compatibility-Mode"></span><div class="header">
+</div>
+<div class="section" id="Shell-Compatibility-Mode">
+<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>
@@ -9203,8 +9403,8 @@ Previous: <a href="#Bash-POSIX-Mode" accesskey="p" rel="prev">Bash POSIX Mode</a
<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
+<p>Bash-4.0 introduced the concept of a <em>shell compatibility level</em>,
+specified as a set of options to the shopt builtin
(<code>compat31</code>,
<code>compat32</code>,
<code>compat40</code>,
@@ -9220,7 +9420,7 @@ behavior. It&rsquo;s intended to be a temporary solution.
<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).
+default behavior in bash-3.2 and subsequent versions).
</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.
@@ -9260,14 +9460,14 @@ For bash-4.3 and later versions, the <code>BASH_COMPAT</code> variable is prefer
and it is required for bash-5.1 and later versions.
</p>
<dl compact="compact">
-<dt><code>compat31</code></dt>
+<dt><span><code>compat31</code></span></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>
+<dt><span><code>compat32</code></span></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,
@@ -9277,7 +9477,7 @@ entire list)
</li></ul>
</dd>
-<dt><code>compat40</code></dt>
+<dt><span><code>compat40</code></span></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
@@ -9288,7 +9488,7 @@ strcoll(3).
</li></ul>
</dd>
-<dt><code>compat41</code></dt>
+<dt><span><code>compat41</code></span></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)
@@ -9300,7 +9500,7 @@ the single quotes are considered quoted
</li></ul>
</dd>
-<dt><code>compat42</code></dt>
+<dt><span><code>compat42</code></span></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
@@ -9313,11 +9513,11 @@ are not special within double-quoted word expansions
</li></ul>
</dd>
-<dt><code>compat43</code></dt>
+<dt><span><code>compat43</code></span></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
+(e.g., 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
@@ -9330,7 +9530,7 @@ the loop state to prevent this
</li></ul>
</dd>
-<dt><code>compat44</code></dt>
+<dt><span><code>compat44</code></span></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
@@ -9345,7 +9545,7 @@ mode
</li></ul>
</dd>
-<dt><code>compat50 (set using BASH_COMPAT)</code></dt>
+<dt><span><code>compat50 (set using BASH_COMPAT)</code></span></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
@@ -9357,32 +9557,66 @@ printed an informational message to that effect, even when producing
output that can be reused as input. Bash-5.1 suppresses that message
when the <samp>-l</samp> option is supplied.
</li></ul>
+
+</dd>
+<dt><span><code>compat51 (set using BASH_COMPAT)</code></span></dt>
+<dd><ul>
+<li> The <code>unset</code> builtin will unset the array <code>a</code> given an argument like
+&lsquo;<samp>a[@]</samp>&rsquo;.
+Bash-5.2 will unset an element with key &lsquo;<samp>@</samp>&rsquo; (associative arrays)
+or remove all the elements without unsetting the array (indexed arrays)
+</li><li> arithmetic commands ( ((...)) ) and the expressions in an arithmetic for
+statement can be expanded more than once
+</li><li> expressions used as arguments to arithmetic operators in the <code>[[</code>
+conditional command can be expanded more than once
+</li><li> the expressions in substring parameter brace expansion can be
+expanded more than once
+</li><li> the expressions in the $(( ... )) word expansion can be expanded
+more than once
+</li><li> arithmetic expressions used as indexed array subscripts can be
+expanded more than once
+</li><li> <code>test -v</code>, when given an argument of &lsquo;<samp>A[@]</samp>&rsquo;, where <var>A</var> is
+an existing associative array, will return true if the array has any set
+elements.
+Bash-5.2 will look for and report on a key named &lsquo;<samp>@</samp>&rsquo;
+</li><li> the ${<var>parameter</var>[:]=<var>value</var>} word expansion will return
+<var>value</var>, before any variable-specific transformations have been
+performed (e.g., converting to lowercase).
+Bash-5.2 will return the final value assigned to the variable.
+</li><li> Parsing command substitutions will behave as if extended glob
+(see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
+is enabled, so that parsing a command substitution containing an extglob
+pattern (say, as part of a shell function) will not fail.
+This assumes the intent is to enable extglob before the command is executed
+and word expansions are performed.
+It will fail at word expansion time if extglob hasn&rsquo;t been
+enabled by the time the command is executed.
+</li></ul>
</dd>
</dl>
<hr>
-<span id="Job-Control"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Job-Control">
+<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>
+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">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="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.
-</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
- 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
- control.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Job-Control-Basics" accesskey="1">Job Control Basics</a></li>
+<li><a href="#Job-Control-Builtins" accesskey="2">Job Control Builtins</a></li>
+<li><a href="#Job-Control-Variables" accesskey="3">Job Control Variables</a></li>
+</ul>
<hr>
-<span id="Job-Control-Basics"></span><div class="header">
+<div class="section" id="Job-Control-Basics">
+<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>
@@ -9431,9 +9665,9 @@ which, unless caught, suspends the process.
</p>
<p>If the operating system on which Bash is running supports
job control, Bash contains facilities to use it. Typing the
-<var>suspend</var> character (typically &lsquo;<samp>^Z</samp>&rsquo;, Control-Z) while a
+<em>suspend</em> character (typically &lsquo;<samp>^Z</samp>&rsquo;, Control-Z) while a
process is running causes that process to be stopped and returns
-control to Bash. Typing the <var>delayed suspend</var> character
+control to Bash. Typing the <em>delayed suspend</em> character
(typically &lsquo;<samp>^Y</samp>&rsquo;, Control-Y) causes the process to be stopped
when it attempts to read input from the terminal, and control to
be returned to Bash. The user then manipulates the state of
@@ -9444,7 +9678,7 @@ takes effect immediately, and has the additional side effect of
causing pending output and typeahead to be discarded.
</p>
<p>There are a number of ways to refer to a job in the shell. The
-character &lsquo;<samp>%</samp>&rsquo; introduces a job specification (<var>jobspec</var>).
+character &lsquo;<samp>%</samp>&rsquo; introduces a job specification (<em>jobspec</em>).
</p>
<p>Job number <code>n</code> may be referred to as &lsquo;<samp>%n</samp>&rsquo;.
The symbols &lsquo;<samp>%%</samp>&rsquo; and &lsquo;<samp>%+</samp>&rsquo; refer to the shell&rsquo;s notion of the
@@ -9496,16 +9730,17 @@ job changes state. The <samp>-f</samp> option causes <code>wait</code> to wait
until the job or process terminates before returning.
</p>
<hr>
-<span id="Job-Control-Builtins"></span><div class="header">
+</div>
+<div class="section" id="Job-Control-Builtins">
+<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>
<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><span id="index-bg"></span>
-<div class="example">
+<dt id='index-bg'><span><code>bg</code><a href='#index-bg' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">bg [<var>jobspec</var> &hellip;]
</pre></div>
@@ -9518,9 +9753,8 @@ enabled, or, when run with job control enabled, any
that was started without job control.
</p>
</dd>
-<dt><code>fg</code></dt>
-<dd><span id="index-fg"></span>
-<div class="example">
+<dt id='index-fg'><span><code>fg</code><a href='#index-fg' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">fg [<var>jobspec</var>]
</pre></div>
@@ -9532,9 +9766,8 @@ job control enabled, <var>jobspec</var> does not specify a valid job or
<var>jobspec</var> specifies a job that was started without job control.
</p>
</dd>
-<dt><code>jobs</code></dt>
-<dd><span id="index-jobs"></span>
-<div class="example">
+<dt id='index-jobs'><span><code>jobs</code><a href='#index-jobs' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">jobs [-lnprs] [<var>jobspec</var>]
jobs -x <var>command</var> [<var>arguments</var>]
</pre></div>
@@ -9543,24 +9776,24 @@ jobs -x <var>command</var> [<var>arguments</var>]
following meanings:
</p>
<dl compact="compact">
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>List process <small>ID</small>s in addition to the normal information.
</p>
</dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Display information only about jobs that have changed status since
the user was last notified of their status.
</p>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>List only the process <small>ID</small> of the job&rsquo;s process group leader.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>Display only running jobs.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Display only stopped jobs.
</p></dd>
</dl>
@@ -9576,9 +9809,8 @@ corresponding process group <small>ID</small>, and executes <var>command</var>,
passing it <var>argument</var>s, returning its exit status.
</p>
</dd>
-<dt><code>kill</code></dt>
-<dd><span id="index-kill"></span>
-<div class="example">
+<dt id='index-kill'><span><code>kill</code><a href='#index-kill' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>]
</pre></div>
@@ -9600,9 +9832,8 @@ The return status is zero if at least one signal was successfully sent,
or non-zero if an error occurs or an invalid option is encountered.
</p>
</dd>
-<dt><code>wait</code></dt>
-<dd><span id="index-wait"></span>
-<div class="example">
+<dt id='index-wait'><span><code>wait</code><a href='#index-wait' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">wait [-fn] [-p <var>varname</var>] [<var>jobspec</var> or <var>pid</var> &hellip;]
</pre></div>
@@ -9616,7 +9847,7 @@ 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
+from the list of <var>pid</var>s or <var>jobspec</var>s or, if no arguments are
supplied, any job,
to complete and returns its exit status.
If none of the supplied arguments is a child of the shell, or if no arguments
@@ -9629,15 +9860,18 @@ 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
+terminate before returning its status, instead 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.
+If <code>wait</code> is interrupted by a signal, the return status will be greater
+than 128, as described above (see <a href="#Signals">Signals</a>).
+Otherwise, the return status is the exit status
+of the last process or job waited for.
</p>
</dd>
-<dt><code>disown</code></dt>
-<dd><span id="index-disown"></span>
-<div class="example">
+<dt id='index-disown'><span><code>disown</code><a href='#index-disown' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">disown [-ar] [-h] [<var>jobspec</var> &hellip; | <var>pid</var> &hellip; ]
</pre></div>
@@ -9653,17 +9887,24 @@ mark all jobs; the <samp>-r</samp> option without a <var>jobspec</var>
argument restricts operation to running jobs.
</p>
</dd>
-<dt><code>suspend</code></dt>
-<dd><span id="index-suspend"></span>
-<div class="example">
+<dt id='index-suspend'><span><code>suspend</code><a href='#index-suspend' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">suspend [-f]
</pre></div>
<p>Suspend the execution of this shell until it receives a
<code>SIGCONT</code> signal.
-A login shell cannot be suspended; the <samp>-f</samp>
+A login shell,
+or a shell without job control enabled,
+cannot be suspended; the <samp>-f</samp>
option can be used to override this and force the suspension.
-</p></dd>
+The return status is 0 unless the shell is a login shell
+or job control is not enabled
+and
+<samp>-f</samp>
+is not supplied.
+</p>
+</dd>
</dl>
<p>When job control is not active, the <code>kill</code> and <code>wait</code>
@@ -9671,16 +9912,16 @@ builtins do not accept <var>jobspec</var> arguments. They must be
supplied process <small>ID</small>s.
</p>
<hr>
-<span id="Job-Control-Variables"></span><div class="header">
+</div>
+<div class="section" id="Job-Control-Variables">
+<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>
<span id="Job-Control-Variables-1"></span><h3 class="section">7.3 Job Control Variables</h3>
<dl compact="compact">
-<dt><code>auto_resume</code>
-<span id="index-auto_005fresume"></span>
-</dt>
+<dt id='index-auto_005fresume'><span><code>auto_resume</code><a href='#index-auto_005fresume' class='copiable-anchor'> &para;</a></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
commands without redirections are treated as candidates for resumption
@@ -9707,9 +9948,12 @@ analogous to the &lsquo;<samp>%</samp>&rsquo; job <small>ID</small>.
<hr>
-<span id="Command-Line-Editing"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Command-Line-Editing">
+<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>
+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">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="Command-Line-Editing-1"></span><h2 class="chapter">8 Command Line Editing</h2>
@@ -9720,7 +9964,7 @@ used by several different programs, including Bash.
Command line editing is enabled by default when using an interactive shell,
unless the <samp>--noediting</samp> option is supplied at shell invocation.
Line editing is also used when using the <samp>-e</samp> option to the
-<code>read</code> builtin command (see <a href="#Bash-Builtins">Bash Builtins</a>).
+<code>read</code> builtin command (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
By default, the line editing commands are similar to those of Emacs.
A vi-style line editing interface is also available.
Line editing can be enabled at any time using the <samp>-o emacs</samp> or
@@ -9728,32 +9972,20 @@ Line editing can be enabled at any time using the <samp>-o emacs</samp> or
(see <a href="#The-Set-Builtin">The Set Builtin</a>), or disabled 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.
-</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.
-</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.
-</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
- 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
- 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
- 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
- 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
- generating possible completions.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Introduction-and-Notation" accesskey="1">Introduction to Line Editing</a></li>
+<li><a href="#Readline-Interaction" accesskey="2">Readline Interaction</a></li>
+<li><a href="#Readline-Init-File" accesskey="3">Readline Init File</a></li>
+<li><a href="#Bindable-Readline-Commands" accesskey="4">Bindable Readline Commands</a></li>
+<li><a href="#Readline-vi-Mode" accesskey="5">Readline vi Mode</a></li>
+<li><a href="#Programmable-Completion" accesskey="6">Programmable Completion</a></li>
+<li><a href="#Programmable-Completion-Builtins" accesskey="7">Programmable Completion Builtins</a></li>
+<li><a href="#A-Programmable-Completion-Example" accesskey="8">A Programmable Completion Example</a></li>
+</ul>
<hr>
-<span id="Introduction-and-Notation"></span><div class="header">
+<div class="section" id="Introduction-and-Notation">
+<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>
@@ -9795,9 +10027,11 @@ The <tt class="key">RET</tt> key may be labeled <tt class="key">Return</tt> or <
some keyboards.
</p>
<hr>
-<span id="Readline-Interaction"></span><div class="header">
+</div>
+<div class="section" id="Readline-Interaction">
+<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>
+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 to Line Editing</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>
<span id="Readline-Interaction-1"></span><h3 class="section">8.2 Readline Interaction</h3>
<span id="index-interaction_002c-readline"></span>
@@ -9813,21 +10047,17 @@ the line, you simply press <tt class="key">RET</tt>. You do not have to be at t
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.
-</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.
-</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!
-</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.
-</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.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Readline-Bare-Essentials" accesskey="1">Readline Bare Essentials</a></li>
+<li><a href="#Readline-Movement-Commands" accesskey="2">Readline Movement Commands</a></li>
+<li><a href="#Readline-Killing-Commands" accesskey="3">Readline Killing Commands</a></li>
+<li><a href="#Readline-Arguments" accesskey="4">Readline Arguments</a></li>
+<li><a href="#Searching" accesskey="5">Searching for Commands in the History</a></li>
+</ul>
<hr>
-<span id="Readline-Bare-Essentials"></span><div class="header">
+<div class="subsection" id="Readline-Bare-Essentials">
+<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>
@@ -9855,34 +10085,36 @@ blank space created by the removal of the text. A list of the bare
essentials for editing the text of an input line follows.
</p>
<dl compact="compact">
-<dt><kbd>C-b</kbd></dt>
+<dt><span><kbd>C-b</kbd></span></dt>
<dd><p>Move back one character.
</p></dd>
-<dt><kbd>C-f</kbd></dt>
+<dt><span><kbd>C-f</kbd></span></dt>
<dd><p>Move forward one character.
</p></dd>
-<dt><tt class="key">DEL</tt> or <tt class="key">Backspace</tt></dt>
+<dt><span><tt class="key">DEL</tt> or <tt class="key">Backspace</tt></span></dt>
<dd><p>Delete the character to the left of the cursor.
</p></dd>
-<dt><kbd>C-d</kbd></dt>
+<dt><span><kbd>C-d</kbd></span></dt>
<dd><p>Delete the character underneath the cursor.
</p></dd>
-<dt>Printing&nbsp;characters<!-- /@w --></dt>
+<dt><span>Printing&nbsp;characters<!-- /@w --></span></dt>
<dd><p>Insert the character into the line at the cursor.
</p></dd>
-<dt><kbd>C-_</kbd> or <kbd>C-x C-u</kbd></dt>
+<dt><span><kbd>C-_</kbd> or <kbd>C-x C-u</kbd></span></dt>
<dd><p>Undo the last editing command. You can undo all the way back to an
empty line.
</p></dd>
</dl>
-<p>(Depending on your configuration, the <tt class="key">Backspace</tt> key be set to
+<p>(Depending on your configuration, the <tt class="key">Backspace</tt> key might be set to
delete the character to the left of the cursor and the <tt class="key">DEL</tt> key set
to delete the character underneath the cursor, like <kbd>C-d</kbd>, rather
than the character to the left of the cursor.)
</p>
<hr>
-<span id="Readline-Movement-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Readline-Movement-Commands">
+<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>
@@ -9896,19 +10128,19 @@ other commands have been added in addition to <kbd>C-b</kbd>, <kbd>C-f</kbd>,
about the line.
</p>
<dl compact="compact">
-<dt><kbd>C-a</kbd></dt>
+<dt><span><kbd>C-a</kbd></span></dt>
<dd><p>Move to the start of the line.
</p></dd>
-<dt><kbd>C-e</kbd></dt>
+<dt><span><kbd>C-e</kbd></span></dt>
<dd><p>Move to the end of the line.
</p></dd>
-<dt><kbd>M-f</kbd></dt>
+<dt><span><kbd>M-f</kbd></span></dt>
<dd><p>Move forward a word, where a word is composed of letters and digits.
</p></dd>
-<dt><kbd>M-b</kbd></dt>
+<dt><span><kbd>M-b</kbd></span></dt>
<dd><p>Move backward a word.
</p></dd>
-<dt><kbd>C-l</kbd></dt>
+<dt><span><kbd>C-l</kbd></span></dt>
<dd><p>Clear the screen, reprinting the current line at the top.
</p></dd>
</dl>
@@ -9918,7 +10150,9 @@ forward a word. It is a loose convention that control keystrokes
operate on characters while meta keystrokes operate on words.
</p>
<hr>
-<span id="Readline-Killing-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Readline-Killing-Commands">
+<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>
@@ -9947,23 +10181,23 @@ another line.
<p>Here is the list of commands for killing text.
</p>
<dl compact="compact">
-<dt><kbd>C-k</kbd></dt>
+<dt><span><kbd>C-k</kbd></span></dt>
<dd><p>Kill the text from the current cursor position to the end of the line.
</p>
</dd>
-<dt><kbd>M-d</kbd></dt>
+<dt><span><kbd>M-d</kbd></span></dt>
<dd><p>Kill from the cursor to the end of the current word, or, if between
words, to the end of the next word.
Word boundaries are the same as those used by <kbd>M-f</kbd>.
</p>
</dd>
-<dt><kbd>M-<span class="key">DEL</span></kbd></dt>
-<dd><p>Kill from the cursor the start of the current word, or, if between
+<dt><span><kbd>M-<span class="key">DEL</span></kbd></span></dt>
+<dd><p>Kill from the cursor to the start of the current word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by <kbd>M-b</kbd>.
</p>
</dd>
-<dt><kbd>C-w</kbd></dt>
+<dt><span><kbd>C-w</kbd></span></dt>
<dd><p>Kill from the cursor to the previous whitespace. This is different than
<kbd>M-<span class="key">DEL</span></kbd> because the word boundaries differ.
</p>
@@ -9974,20 +10208,22 @@ Word boundaries are the same as those used by <kbd>M-b</kbd>.
means to copy the most-recently-killed text from the kill buffer.
</p>
<dl compact="compact">
-<dt><kbd>C-y</kbd></dt>
+<dt><span><kbd>C-y</kbd></span></dt>
<dd><p>Yank the most recently killed text back into the buffer at the cursor.
</p>
</dd>
-<dt><kbd>M-y</kbd></dt>
+<dt><span><kbd>M-y</kbd></span></dt>
<dd><p>Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is <kbd>C-y</kbd> or <kbd>M-y</kbd>.
</p></dd>
</dl>
<hr>
-<span id="Readline-Arguments"></span><div class="header">
+</div>
+<div class="subsection" id="Readline-Arguments">
+<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>
+Next: <a href="#Searching" accesskey="n" rel="next">Searching for Commands in the History</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>
<span id="Readline-Arguments-1"></span><h4 class="subsection">8.2.4 Readline Arguments</h4>
@@ -10007,7 +10243,9 @@ 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>
-<span id="Searching"></span><div class="header">
+</div>
+<div class="subsection" id="Searching">
+<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>
@@ -10054,7 +10292,10 @@ to search for matching history lines. The search string may be
typed by the user or be part of the contents of the current line.
</p>
<hr>
-<span id="Readline-Init-File"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Readline-Init-File">
+<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>
@@ -10065,7 +10306,8 @@ Next: <a href="#Bindable-Readline-Commands" accesskey="n" rel="next">Bindable Re
keybindings installed by default, it is possible to use a different set
of keybindings.
Any user can customize programs that use Readline by putting
-commands in an <em>inputrc</em> file, conventionally in his home directory.
+commands in an <em>inputrc</em> file,
+conventionally in their home directory.
The name of this
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
@@ -10073,7 +10315,7 @@ 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>.
+See <a href="#Bash-Builtins">Bash Builtin Commands</a>.
</p>
<p>When a program which uses the Readline library starts up, the
init file is read, and the key bindings are set.
@@ -10081,21 +10323,15 @@ init file is read, and the key bindings are set.
<p>In addition, the <code>C-x C-r</code> command re-reads this init file, thus
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.
-</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.
-</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.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Readline-Init-File-Syntax" accesskey="1">Readline Init File Syntax</a></li>
+<li><a href="#Conditional-Init-Constructs" accesskey="2">Conditional Init Constructs</a></li>
+<li><a href="#Sample-Init-File" accesskey="3">Sample Init File</a></li>
+</ul>
<hr>
-<span id="Readline-Init-File-Syntax"></span><div class="header">
+<div class="subsection" id="Readline-Init-File-Syntax">
+<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>
@@ -10109,7 +10345,7 @@ constructs (see <a href="#Conditional-Init-Constructs">Conditional Init Construc
denote variable settings and key bindings.
</p>
<dl compact="compact">
-<dt>Variable Settings</dt>
+<dt><span>Variable Settings</span></dt>
<dd><p>You can modify the run-time behavior of Readline by
altering the values of variables in Readline
using the <code>set</code> command within the init file.
@@ -10135,64 +10371,86 @@ the value is null or empty, <var>on</var> (case-insensitive), or 1. Any other
value results in the variable being set to off.
</p>
<p>The <code>bind&nbsp;<span class="nolinebreak">-V</span></code><!-- /@w --> command lists the current Readline variable names
-and values. See <a href="#Bash-Builtins">Bash Builtins</a>.
+and values. See <a href="#Bash-Builtins">Bash Builtin Commands</a>.
</p>
<p>A great deal of run-time behavior is changeable with the following
variables.
</p>
<span id="index-variables_002c-readline"></span>
<dl compact="compact">
-<dt><code>bell-style</code></dt>
-<dd><span id="index-bell_002dstyle"></span>
-<p>Controls what happens when Readline wants to ring the terminal bell.
+<dt id='index-active_002dregion_002dstart_002dcolor'><span><code>active-region-start-color</code><a href='#index-active_002dregion_002dstart_002dcolor' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>A string variable that controls the text color and background when displaying
+the text in the active region (see the description of
+<code>enable-active-region</code> below).
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal before displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that puts the terminal in standout mode,
+as obtained from the terminal&rsquo;s terminfo description.
+A sample value might be &lsquo;<samp>\e[01;33m</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-active_002dregion_002dend_002dcolor'><span><code>active-region-end-color</code><a href='#index-active_002dregion_002dend_002dcolor' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>A string variable that &quot;undoes&quot; the effects of <code>active-region-start-color</code>
+and restores &quot;normal&quot; terminal display appearance after displaying text
+in the active region.
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal after displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that restores the terminal from standout mode,
+as obtained from the terminal&rsquo;s terminfo description.
+A sample value might be &lsquo;<samp>\e[0m</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-bell_002dstyle'><span><code>bell-style</code><a href='#index-bell_002dstyle' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
If set to &lsquo;<samp>audible</samp>&rsquo; (the default), Readline attempts to ring
the terminal&rsquo;s bell.
</p>
</dd>
-<dt><code>bind-tty-special-chars</code></dt>
-<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
+<dt id='index-bind_002dtty_002dspecial_002dchars'><span><code>bind-tty-special-chars</code><a href='#index-bind_002dtty_002dspecial_002dchars' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><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
+<dt id='index-blink_002dmatching_002dparen'><span><code>blink-matching-paren</code><a href='#index-blink_002dmatching_002dparen' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-colored_002dcompletion_002dprefix"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, when listing completions, Readline displays the
+<dt id='index-colored_002dcompletion_002dprefix'><span><code>colored-completion-prefix</code><a href='#index-colored_002dcompletion_002dprefix' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>
environment variable.
+If there is a color definition in <code>LS_COLORS</code> for the custom suffix
+&lsquo;<samp>readline-colored-completion-prefix</samp>&rsquo;, Readline uses this color for
+the common prefix instead of its default.
The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>colored-stats</code></dt>
-<dd><span id="index-colored_002dstats"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline displays possible completions using different
+<dt id='index-colored_002dstats'><span><code>colored-stats</code><a href='#index-colored_002dstats' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>
environment variable.
The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>comment-begin</code></dt>
-<dd><span id="index-comment_002dbegin"></span>
-<p>The string to insert at the beginning of the line when the
+<dt id='index-comment_002dbegin'><span><code>comment-begin</code><a href='#index-comment_002dbegin' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-completion_002ddisplay_002dwidth"></span>
-<p>The number of screen columns used to display possible matches
+<dt id='index-completion_002ddisplay_002dwidth'><span><code>completion-display-width</code><a href='#index-completion_002ddisplay_002dwidth' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
screen width.
@@ -10200,76 +10458,71 @@ A value of 0 will cause matches to be displayed one per line.
The default value is -1.
</p>
</dd>
-<dt><code>completion-ignore-case</code></dt>
-<dd><span id="index-completion_002dignore_002dcase"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline performs filename matching and completion
+<dt id='index-completion_002dignore_002dcase'><span><code>completion-ignore-case</code><a href='#index-completion_002dignore_002dcase' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><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
+<dt id='index-completion_002dmap_002dcase'><span><code>completion-map-case</code><a href='#index-completion_002dmap_002dcase' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>completion-prefix-display-length</code></dt>
-<dd><span id="index-completion_002dprefix_002ddisplay_002dlength"></span>
-<p>The length in characters of the common prefix of a list of possible
+<dt id='index-completion_002dprefix_002ddisplay_002dlength'><span><code>completion-prefix-display-length</code><a href='#index-completion_002dprefix_002ddisplay_002dlength' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
replaced with an ellipsis when displaying possible completions.
</p>
</dd>
-<dt><code>completion-query-items</code></dt>
-<dd><span id="index-completion_002dquery_002ditems"></span>
-<p>The number of possible completions that determines when the user is
+<dt id='index-completion_002dquery_002ditems'><span><code>completion-query-items</code><a href='#index-completion_002dquery_002ditems' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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 or equal to this value,
Readline will ask whether or not the user wishes to view them;
otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-A negative value means Readline should never ask.
+This variable must be set to an integer value greater than or equal to zero.
+A zero value means Readline should never ask; negative values are
+treated as zero.
The default limit is <code>100</code>.
</p>
</dd>
-<dt><code>convert-meta</code></dt>
-<dd><span id="index-convert_002dmeta"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will convert characters with the
+<dt id='index-convert_002dmeta'><span><code>convert-meta</code><a href='#index-convert_002dmeta' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
-meta-prefixed key sequence. The default value is &lsquo;<samp>on</samp>&rsquo;, but
+meta-prefixed key sequence.
+The default value is &lsquo;<samp>on</samp>&rsquo;, but
will be set to &lsquo;<samp>off</samp>&rsquo; if the locale is one that contains
eight-bit characters.
+This variable is dependent on the <code>LC_CTYPE</code> locale category, and
+may change if the locale is changed.
</p>
</dd>
-<dt><code>disable-completion</code></dt>
-<dd><span id="index-disable_002dcompletion"></span>
-<p>If set to &lsquo;<samp>On</samp>&rsquo;, Readline will inhibit word completion.
+<dt id='index-disable_002dcompletion'><span><code>disable-completion</code><a href='#index-disable_002dcompletion' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><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
+<dt id='index-echo_002dcontrol_002dcharacters'><span><code>echo-control-characters</code><a href='#index-echo_002dcontrol_002dcharacters' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-editing_002dmode"></span>
-<p>The <code>editing-mode</code> variable controls which default set of
+<dt id='index-editing_002dmode'><span><code>editing-mode</code><a href='#index-editing_002dmode' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
set to either &lsquo;<samp>emacs</samp>&rsquo; or &lsquo;<samp>vi</samp>&rsquo;.
</p>
</dd>
-<dt><code>emacs-mode-string</code></dt>
-<dd><span id="index-emacs_002dmode_002dstring"></span>
-<p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt id='index-emacs_002dmode_002dstring'><span><code>emacs-mode-string</code><a href='#index-emacs_002dmode_002dstring' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
key binding, so the standard set of meta- and control prefixes and
@@ -10280,46 +10533,58 @@ sequence into the mode string.
The default is &lsquo;<samp>@</samp>&rsquo;.
</p>
</dd>
-<dt><code>enable-bracketed-paste</code></dt>
-<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>On</samp>&rsquo;.
-</p>
-</dd>
-<dt><code>enable-keypad</code></dt>
-<dd><span id="index-enable_002dkeypad"></span>
-<p>When set to &lsquo;<samp>on</samp>&rsquo;, Readline will try to enable the application
+<dt id='index-enable_002dactive_002dregion'><span><code>enable-active-region</code><a href='#index-enable_002dactive_002dregion' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>The <em>point</em> is the current cursor position, and <em>mark</em> refers
+to a saved cursor position (see <a href="#Commands-For-Moving">Commands For Moving</a>).
+The text between the point and mark is referred to as the <em>region</em>.
+When this variable is set to &lsquo;<samp>On</samp>&rsquo;, Readline allows certain commands
+to designate the region as <em>active</em>.
+When the region is active, Readline highlights the text in the region using
+the value of the <code>active-region-start-color</code>, which defaults to the
+string that enables
+the terminal&rsquo;s standout mode.
+The active region shows the text inserted by bracketed-paste and any
+matching text found by incremental and non-incremental history searches.
+The default is &lsquo;<samp>On</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-enable_002dbracketed_002dpaste'><span><code>enable-bracketed-paste</code><a href='#index-enable_002dbracketed_002dpaste' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>When set to &lsquo;<samp>On</samp>&rsquo;, Readline configures the terminal to insert each
+paste into the editing buffer as a single string of characters, instead
+of treating each character as if it had been read from the keyboard.
+This is called putting the terminal into <em>bracketed paste mode</em>;
+it prevents Readline from executing any editing commands bound to key
+sequences appearing in the pasted text.
+The default is &lsquo;<samp>On</samp>&rsquo;.
+</p>
+</dd>
+<dt id='index-enable_002dkeypad'><span><code>enable-keypad</code><a href='#index-enable_002dkeypad' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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;.
</p>
</dd>
-<dt><code>enable-meta-key</code></dt>
+<dt><span><code>enable-meta-key</code></span></dt>
<dd><p>When set to &lsquo;<samp>on</samp>&rsquo;, Readline will try to enable any meta modifier
key the terminal claims to support when it is called. On many terminals,
the meta key is used to send eight-bit characters.
The default is &lsquo;<samp>on</samp>&rsquo;.
</p>
</dd>
-<dt><code>expand-tilde</code></dt>
-<dd><span id="index-expand_002dtilde"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, tilde expansion is performed when Readline
+<dt id='index-expand_002dtilde'><span><code>expand-tilde</code><a href='#index-expand_002dtilde' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><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
+<dt id='index-history_002dpreserve_002dpoint'><span><code>history-preserve-point</code><a href='#index-history_002dpreserve_002dpoint' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>
or <code>next-history</code>. The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>history-size</code></dt>
-<dd><span id="index-history_002dsize"></span>
-<p>Set the maximum number of history entries saved in the history list.
+<dt id='index-history_002dsize'><span><code>history-size</code><a href='#index-history_002dsize' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
If set to a value less than zero, the number of history entries is not
@@ -10329,9 +10594,8 @@ If an attempt is made to set <var>history-size</var> to a non-numeric value,
the maximum number of history entries will be set to 500.
</p>
</dd>
-<dt><code>horizontal-scroll-mode</code></dt>
-<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
+<dt id='index-horizontal_002dscroll_002dmode'><span><code>horizontal-scroll-mode</code><a href='#index-horizontal_002dscroll_002dmode' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
@@ -10339,28 +10603,27 @@ This variable is automatically set to &lsquo;<samp>on</samp>&rsquo; for terminal
By default, this variable is set to &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>input-meta</code></dt>
-<dd><span id="index-input_002dmeta"></span>
-<span id="index-meta_002dflag"></span>
+<dt id='index-input_002dmeta'><span><code>input-meta</code><a href='#index-input_002dmeta' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
default value is &lsquo;<samp>off</samp>&rsquo;, but Readline will set it to &lsquo;<samp>on</samp>&rsquo; if the
locale contains eight-bit characters.
The name <code>meta-flag</code> is a synonym for this variable.
+This variable is dependent on the <code>LC_CTYPE</code> locale category, and
+may change if the locale is changed.
</p>
</dd>
-<dt><code>isearch-terminators</code></dt>
-<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>).
+<dt id='index-isearch_002dterminators'><span><code>isearch-terminators</code><a href='#index-isearch_002dterminators' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>The string of characters that should terminate an incremental search without
+subsequently executing the character as a command (see <a href="#Searching">Searching for Commands in the History</a>).
If this variable has not been given a value, the characters <tt class="key">ESC</tt> and
<kbd>C-J</kbd> will terminate an incremental search.
</p>
</dd>
-<dt><code>keymap</code></dt>
-<dd><span id="index-keymap"></span>
-<p>Sets Readline&rsquo;s idea of the current keymap for key binding commands.
+<dt id='index-keymap'><span><code>keymap</code><a href='#index-keymap' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>Sets Readline&rsquo;s idea of the current keymap for key binding commands.
Built-in <code>keymap</code> names are
<code>emacs</code>,
<code>emacs-standard</code>,
@@ -10378,7 +10641,7 @@ The value of the <code>editing-mode</code> variable also affects the
default keymap.
</p>
</dd>
-<dt><code>keyseq-timeout</code></dt>
+<dt><span><code>keyseq-timeout</code></span></dt>
<dd><p>Specifies the duration Readline will wait for a character when reading an
ambiguous key sequence (one that can form a complete key sequence using
the input read so far, or can take additional input to complete a longer
@@ -10395,29 +10658,26 @@ decide which key sequence to complete.
The default value is <code>500</code>.
</p>
</dd>
-<dt><code>mark-directories</code></dt>
+<dt><span><code>mark-directories</code></span></dt>
<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, completed directory names have a slash
appended. The default is &lsquo;<samp>on</samp>&rsquo;.
</p>
</dd>
-<dt><code>mark-modified-lines</code></dt>
-<dd><span id="index-mark_002dmodified_002dlines"></span>
-<p>This variable, when set to &lsquo;<samp>on</samp>&rsquo;, causes Readline to display an
+<dt id='index-mark_002dmodified_002dlines'><span><code>mark-modified-lines</code><a href='#index-mark_002dmodified_002dlines' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-mark_002dsymlinked_002ddirectories"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, completed names which are symbolic links
+<dt id='index-mark_002dsymlinked_002ddirectories'><span><code>mark-symlinked-directories</code><a href='#index-mark_002dsymlinked_002ddirectories' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>).
The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>match-hidden-files</code></dt>
-<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
+<dt id='index-match_002dhidden_002dfiles'><span><code>match-hidden-files</code><a href='#index-match_002dhidden_002dfiles' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
If set to &lsquo;<samp>off</samp>&rsquo;, the leading &lsquo;<samp>.</samp>&rsquo; must be
@@ -10425,55 +10685,51 @@ supplied by the user in the filename to be completed.
This variable is &lsquo;<samp>on</samp>&rsquo; by default.
</p>
</dd>
-<dt><code>menu-complete-display-prefix</code></dt>
-<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
+<dt id='index-menu_002dcomplete_002ddisplay_002dprefix'><span><code>menu-complete-display-prefix</code><a href='#index-menu_002dcomplete_002ddisplay_002dprefix' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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><span id="index-output_002dmeta"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will display characters with the
+<dt id='index-output_002dmeta'><span><code>output-meta</code><a href='#index-output_002dmeta' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
The default is &lsquo;<samp>off</samp>&rsquo;, but Readline will set it to &lsquo;<samp>on</samp>&rsquo; if the
locale contains eight-bit characters.
+This variable is dependent on the <code>LC_CTYPE</code> locale category, and
+may change if the locale is changed.
</p>
</dd>
-<dt><code>page-completions</code></dt>
-<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
+<dt id='index-page_002dcompletions'><span><code>page-completions</code><a href='#index-page_002dcompletions' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
</p>
</dd>
-<dt><code>print-completions-horizontally</code></dt>
+<dt><span><code>print-completions-horizontally</code></span></dt>
<dd><p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the screen.
The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>revert-all-at-newline</code></dt>
-<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
+<dt id='index-revert_002dall_002dat_002dnewline'><span><code>revert-all-at-newline</code><a href='#index-revert_002dall_002dat_002dnewline' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
-calls to <code>readline</code>. The default is &lsquo;<samp>off</samp>&rsquo;.
+calls to <code>readline()</code>. The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>show-all-if-ambiguous</code></dt>
-<dd><span id="index-show_002dall_002dif_002dambiguous"></span>
-<p>This alters the default behavior of the completion functions. If
+<dt id='index-show_002dall_002dif_002dambiguous'><span><code>show-all-if-ambiguous</code><a href='#index-show_002dall_002dif_002dambiguous' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
matches to be listed immediately instead of ringing the bell.
The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>show-all-if-unmodified</code></dt>
-<dd><span id="index-show_002dall_002dif_002dunmodified"></span>
-<p>This alters the default behavior of the completion functions in
+<dt id='index-show_002dall_002dif_002dunmodified'><span><code>show-all-if-unmodified</code><a href='#index-show_002dall_002dif_002dunmodified' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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;,
words which have more than one possible completion without any
@@ -10483,19 +10739,17 @@ of ringing the bell.
The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>show-mode-in-prompt</code></dt>
-<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
+<dt id='index-show_002dmode_002din_002dprompt'><span><code>show-mode-in-prompt</code><a href='#index-show_002dmode_002din_002dprompt' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>).
The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>skip-completed-text</code></dt>
-<dd><span id="index-skip_002dcompleted_002dtext"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, this alters the default completion behavior when
+<dt id='index-skip_002dcompleted_002dtext'><span><code>skip-completed-text</code><a href='#index-skip_002dcompleted_002dtext' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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
+performing completion in the middle of a word. If enabled, Readline
does not insert characters from the completion that match characters
after point in the word being completed, so portions of the word
following the cursor are not duplicated.
@@ -10506,9 +10760,8 @@ completion.
The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
-<dt><code>vi-cmd-mode-string</code></dt>
-<dd><span id="index-vi_002dcmd_002dmode_002dstring"></span>
-<p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt id='index-vi_002dcmd_002dmode_002dstring'><span><code>vi-cmd-mode-string</code><a href='#index-vi_002dcmd_002dmode_002dstring' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
The value is expanded like a
@@ -10520,9 +10773,8 @@ sequence into the mode string.
The default is &lsquo;<samp>(cmd)</samp>&rsquo;.
</p>
</dd>
-<dt><code>vi-ins-mode-string</code></dt>
-<dd><span id="index-vi_002dins_002dmode_002dstring"></span>
-<p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt id='index-vi_002dins_002dmode_002dstring'><span><code>vi-ins-mode-string</code><a href='#index-vi_002dins_002dmode_002dstring' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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.
The value is expanded like a
@@ -10534,9 +10786,8 @@ sequence into the mode string.
The default is &lsquo;<samp>(ins)</samp>&rsquo;.
</p>
</dd>
-<dt><code>visible-stats</code></dt>
-<dd><span id="index-visible_002dstats"></span>
-<p>If set to &lsquo;<samp>on</samp>&rsquo;, a character denoting a file&rsquo;s type
+<dt id='index-visible_002dstats'><span><code>visible-stats</code><a href='#index-visible_002dstats' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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;.
</p>
@@ -10544,7 +10795,7 @@ completions. The default is &lsquo;<samp>off</samp>&rsquo;.
</dl>
</dd>
-<dt>Key Bindings</dt>
+<dt><span>Key Bindings</span></dt>
<dd><p>The syntax for controlling key bindings in the init file is
simple. First you need to find the name of the command that you
want to change. The following sections contain tables of the command
@@ -10560,15 +10811,15 @@ interpreted as part of the key name.
The name of the key can be expressed in different ways, depending on
what you find most comfortable.
</p>
-<p>In addition to command names, readline allows keys to be bound
+<p>In addition to command names, Readline allows keys to be bound
to a string that is inserted when the key is pressed (a <var>macro</var>).
</p>
<p>The <code>bind&nbsp;<span class="nolinebreak">-p</span></code><!-- /@w --> command displays Readline function names and
-bindings in a format that can put directly into an initialization file.
-See <a href="#Bash-Builtins">Bash Builtins</a>.
+bindings in a format that can be put directly into an initialization file.
+See <a href="#Bash-Builtins">Bash Builtin Commands</a>.
</p>
<dl compact="compact">
-<dt><var>keyname</var>:&nbsp;<var><span class="nolinebreak">function-name</span></var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --></dt>
+<dt><span><var>keyname</var>:&nbsp;<var><span class="nolinebreak">function-name</span></var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --></span></dt>
<dd><p><var>keyname</var> is the name of a key spelled out in English. For example:
</p><div class="example">
<pre class="example">Control-u: universal-argument
@@ -10599,7 +10850,7 @@ and
<var>TAB</var>.
</p>
</dd>
-<dt>&quot;<var>keyseq</var>&quot;:&nbsp;<var><span class="nolinebreak">function-name</span></var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --></dt>
+<dt><span>&quot;<var>keyseq</var>&quot;:&nbsp;<var><span class="nolinebreak">function-name</span></var>&nbsp;or&nbsp;<var>macro</var><!-- /@w --></span></dt>
<dd><p><var>keyseq</var> differs from <var>keyname</var> above in that strings
denoting an entire key sequence can be specified, by placing
the key sequence in double quotes. Some <small>GNU</small> Emacs style key
@@ -10625,22 +10876,22 @@ the text &lsquo;<samp>Function Key 1</samp>&rsquo;.
specifying key sequences:
</p>
<dl compact="compact">
-<dt><code><kbd>\C-</kbd></code></dt>
+<dt><span><code><kbd>\C-</kbd></code></span></dt>
<dd><p>control prefix
</p></dd>
-<dt><code><kbd>\M-</kbd></code></dt>
+<dt><span><code><kbd>\M-</kbd></code></span></dt>
<dd><p>meta prefix
</p></dd>
-<dt><code><kbd>\e</kbd></code></dt>
+<dt><span><code><kbd>\e</kbd></code></span></dt>
<dd><p>an escape character
</p></dd>
-<dt><code><kbd>\\</kbd></code></dt>
+<dt><span><code><kbd>\\</kbd></code></span></dt>
<dd><p>backslash
</p></dd>
-<dt><code><kbd>\&quot;</kbd></code></dt>
+<dt><span><code><kbd>\&quot;</kbd></code></span></dt>
<dd><p><tt class="key">&quot;</tt>, a double quotation mark
</p></dd>
-<dt><code><kbd>\'</kbd></code></dt>
+<dt><span><code><kbd>\'</kbd></code></span></dt>
<dd><p><tt class="key">'</tt>, a single quote or apostrophe
</p></dd>
</dl>
@@ -10649,35 +10900,35 @@ specifying key sequences:
set of backslash escapes is available:
</p>
<dl compact="compact">
-<dt><code>\a</code></dt>
+<dt><span><code>\a</code></span></dt>
<dd><p>alert (bell)
</p></dd>
-<dt><code>\b</code></dt>
+<dt><span><code>\b</code></span></dt>
<dd><p>backspace
</p></dd>
-<dt><code>\d</code></dt>
+<dt><span><code>\d</code></span></dt>
<dd><p>delete
</p></dd>
-<dt><code>\f</code></dt>
+<dt><span><code>\f</code></span></dt>
<dd><p>form feed
</p></dd>
-<dt><code>\n</code></dt>
+<dt><span><code>\n</code></span></dt>
<dd><p>newline
</p></dd>
-<dt><code>\r</code></dt>
+<dt><span><code>\r</code></span></dt>
<dd><p>carriage return
</p></dd>
-<dt><code>\t</code></dt>
+<dt><span><code>\t</code></span></dt>
<dd><p>horizontal tab
</p></dd>
-<dt><code>\v</code></dt>
+<dt><span><code>\v</code></span></dt>
<dd><p>vertical tab
</p></dd>
-<dt><code>\<var>nnn</var></code></dt>
+<dt><span><code>\<var>nnn</var></code></span></dt>
<dd><p>the eight-bit character whose value is the octal value <var>nnn</var>
(one to three digits)
</p></dd>
-<dt><code>\x<var>HH</var></code></dt>
+<dt><span><code>\x<var>HH</var></code></span></dt>
<dd><p>the eight-bit character whose value is the hexadecimal value <var>HH</var>
(one or two hex digits)
</p></dd>
@@ -10699,7 +10950,9 @@ insert a single &lsquo;<samp>\</samp>&rsquo; into the line:
</dl>
<hr>
-<span id="Conditional-Init-Constructs"></span><div class="header">
+</div>
+<div class="subsection" id="Conditional-Init-Constructs">
+<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>
@@ -10711,7 +10964,7 @@ bindings and variable settings to be performed as the result
of tests. There are four parser directives used.
</p>
<dl compact="compact">
-<dt><code>$if</code></dt>
+<dt><span><code>$if</code></span></dt>
<dd><p>The <code>$if</code> construct allows bindings to be made based on the
editing mode, the terminal being used, or the application using
Readline. The text of the test, after any comparison operator,
@@ -10719,7 +10972,7 @@ extends to the end of the line;
unless otherwise noted, no characters are required to isolate it.
</p>
<dl compact="compact">
-<dt><code>mode</code></dt>
+<dt><span><code>mode</code></span></dt>
<dd><p>The <code>mode=</code> form of the <code>$if</code> directive is used to test
whether Readline is in <code>emacs</code> or <code>vi</code> mode.
This may be used in conjunction
@@ -10728,7 +10981,7 @@ the <code>emacs-standard</code> and <code>emacs-ctlx</code> keymaps only if
Readline is starting out in <code>emacs</code> mode.
</p>
</dd>
-<dt><code>term</code></dt>
+<dt><span><code>term</code></span></dt>
<dd><p>The <code>term=</code> form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by the
terminal&rsquo;s function keys. The word on the right side of the
@@ -10738,7 +10991,7 @@ allows <code>sun</code> to match both <code>sun</code> and <code>sun-cmd</code>,
for instance.
</p>
</dd>
-<dt><code>version</code></dt>
+<dt><span><code>version</code></span></dt>
<dd><p>The <code>version</code> test may be used to perform comparisons against
specific Readline versions.
The <code>version</code> expands to the current Readline version.
@@ -10760,7 +11013,7 @@ $endif
</pre></div>
</dd>
-<dt><code>application</code></dt>
+<dt><span><code>application</code></span></dt>
<dd><p>The <var>application</var> construct is used to include
application-specific settings. Each program using the Readline
library sets the <var>application name</var>, and you can test for
@@ -10776,7 +11029,7 @@ $endif
</pre></div>
</dd>
-<dt><code>variable</code></dt>
+<dt><span><code>variable</code></span></dt>
<dd><p>The <var>variable</var> construct provides simple equality tests for Readline
variables and values.
The permitted comparison operators are &lsquo;<samp>=</samp>&rsquo;, &lsquo;<samp>==</samp>&rsquo;, and &lsquo;<samp>!=</samp>&rsquo;.
@@ -10796,17 +11049,17 @@ $endif
</dl>
</dd>
-<dt><code>$endif</code></dt>
+<dt><span><code>$endif</code></span></dt>
<dd><p>This command, as seen in the previous example, terminates an
<code>$if</code> command.
</p>
</dd>
-<dt><code>$else</code></dt>
+<dt><span><code>$else</code></span></dt>
<dd><p>Commands in this branch of the <code>$if</code> directive are executed if
the test fails.
</p>
</dd>
-<dt><code>$include</code></dt>
+<dt><span><code>$include</code></span></dt>
<dd><p>This directive takes a single filename as an argument and reads commands
and bindings from that file.
For example, the following directive reads from <samp>/etc/inputrc</samp>:
@@ -10817,7 +11070,9 @@ For example, the following directive reads from <samp>/etc/inputrc</samp>:
</dl>
<hr>
-<span id="Sample-Init-File"></span><div class="header">
+</div>
+<div class="subsection" id="Sample-Init-File">
+<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>
@@ -10929,36 +11184,21 @@ $endif
</pre></div>
<hr>
-<span id="Bindable-Readline-Commands"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Bindable-Readline-Commands">
+<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>
<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.
-</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.
-</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.
-</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.
-</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.
-</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.
-</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
-</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.
-</td></tr>
-</table>
<p>This section describes Readline commands that may be bound to key
sequences.
You can list your key bindings by executing
<code>bind&nbsp;<span class="nolinebreak">-P</span></code><!-- /@w --> or, for a more terse format, suitable for an
-<var>inputrc</var> file, <code>bind&nbsp;<span class="nolinebreak">-p</span></code><!-- /@w -->. (See <a href="#Bash-Builtins">Bash Builtins</a>.)
+<var>inputrc</var> file, <code>bind&nbsp;<span class="nolinebreak">-p</span></code><!-- /@w -->. (See <a href="#Bash-Builtins">Bash Builtin Commands</a>.)
Command names without an accompanying key sequence are unbound by default.
</p>
<p>In the following descriptions, <em>point</em> refers to the current cursor
@@ -10966,77 +11206,68 @@ position, and <em>mark</em> refers to a cursor position saved by the
<code>set-mark</code> command.
The text between the point and mark is referred to as the <em>region</em>.
</p>
+<ul class="section-toc">
+<li><a href="#Commands-For-Moving" accesskey="1">Commands For Moving</a></li>
+<li><a href="#Commands-For-History" accesskey="2">Commands For Manipulating The History</a></li>
+<li><a href="#Commands-For-Text" accesskey="3">Commands For Changing Text</a></li>
+<li><a href="#Commands-For-Killing" accesskey="4">Killing And Yanking</a></li>
+<li><a href="#Numeric-Arguments" accesskey="5">Specifying Numeric Arguments</a></li>
+<li><a href="#Commands-For-Completion" accesskey="6">Letting Readline Type For You</a></li>
+<li><a href="#Keyboard-Macros" accesskey="7">Keyboard Macros</a></li>
+<li><a href="#Miscellaneous-Commands" accesskey="8">Some Miscellaneous Commands</a></li>
+</ul>
<hr>
-<span id="Commands-For-Moving"></span><div class="header">
+<div class="subsection" id="Commands-For-Moving">
+<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>
+Next: <a href="#Commands-For-History" accesskey="n" rel="next">Commands For Manipulating The 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>
<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>
-<span id="index-beginning_002dof_002dline-_0028C_002da_0029"></span>
-</dt>
+<dt id='index-beginning_002dof_002dline-_0028C_002da_0029'><span><code>beginning-of-line (C-a)</code><a href='#index-beginning_002dof_002dline-_0028C_002da_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Move to the start of the current line.
</p>
</dd>
-<dt><code>end-of-line (C-e)</code>
-<span id="index-end_002dof_002dline-_0028C_002de_0029"></span>
-</dt>
+<dt id='index-end_002dof_002dline-_0028C_002de_0029'><span><code>end-of-line (C-e)</code><a href='#index-end_002dof_002dline-_0028C_002de_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Move to the end of the line.
</p>
</dd>
-<dt><code>forward-char (C-f)</code>
-<span id="index-forward_002dchar-_0028C_002df_0029"></span>
-</dt>
+<dt id='index-forward_002dchar-_0028C_002df_0029'><span><code>forward-char (C-f)</code><a href='#index-forward_002dchar-_0028C_002df_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Move forward a character.
</p>
</dd>
-<dt><code>backward-char (C-b)</code>
-<span id="index-backward_002dchar-_0028C_002db_0029"></span>
-</dt>
+<dt id='index-backward_002dchar-_0028C_002db_0029'><span><code>backward-char (C-b)</code><a href='#index-backward_002dchar-_0028C_002db_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Move back a character.
</p>
</dd>
-<dt><code>forward-word (M-f)</code>
-<span id="index-forward_002dword-_0028M_002df_0029"></span>
-</dt>
+<dt id='index-forward_002dword-_0028M_002df_0029'><span><code>forward-word (M-f)</code><a href='#index-forward_002dword-_0028M_002df_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-backward_002dword-_0028M_002db_0029"></span>
-</dt>
+<dt id='index-backward_002dword-_0028M_002db_0029'><span><code>backward-word (M-b)</code><a href='#index-backward_002dword-_0028M_002db_0029' class='copiable-anchor'> &para;</a></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 (M-C-f)</code>
-<span id="index-shell_002dforward_002dword-_0028M_002dC_002df_0029"></span>
-</dt>
+<dt id='index-shell_002dforward_002dword-_0028M_002dC_002df_0029'><span><code>shell-forward-word (M-C-f)</code><a href='#index-shell_002dforward_002dword-_0028M_002dC_002df_0029' class='copiable-anchor'> &para;</a></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 (M-C-b)</code>
-<span id="index-shell_002dbackward_002dword-_0028M_002dC_002db_0029"></span>
-</dt>
+<dt id='index-shell_002dbackward_002dword-_0028M_002dC_002db_0029'><span><code>shell-backward-word (M-C-b)</code><a href='#index-shell_002dbackward_002dword-_0028M_002dC_002db_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-previous_002dscreen_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-previous_002dscreen_002dline-_0028_0029'><span><code>previous-screen-line ()</code><a href='#index-previous_002dscreen_002dline-_0028_0029' class='copiable-anchor'> &para;</a></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
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.
</p>
</dd>
-<dt><code>next-screen-line ()</code>
-<span id="index-next_002dscreen_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-next_002dscreen_002dline-_0028_0029'><span><code>next-screen-line ()</code><a href='#index-next_002dscreen_002dline-_0028_0029' class='copiable-anchor'> &para;</a></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
Readline line does not take up more than one physical line or if the length
@@ -11044,41 +11275,35 @@ of the current Readline line is not greater than the length of the prompt
plus the screen width.
</p>
</dd>
-<dt><code>clear-display (M-C-l)</code>
-<span id="index-clear_002ddisplay-_0028M_002dC_002dl_0029"></span>
-</dt>
+<dt id='index-clear_002ddisplay-_0028M_002dC_002dl_0029'><span><code>clear-display (M-C-l)</code><a href='#index-clear_002ddisplay-_0028M_002dC_002dl_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-clear_002dscreen-_0028C_002dl_0029"></span>
-</dt>
+<dt id='index-clear_002dscreen-_0028C_002dl_0029'><span><code>clear-screen (C-l)</code><a href='#index-clear_002dscreen-_0028C_002dl_0029' class='copiable-anchor'> &para;</a></span></dt>
<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>
-<span id="index-redraw_002dcurrent_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-redraw_002dcurrent_002dline-_0028_0029'><span><code>redraw-current-line ()</code><a href='#index-redraw_002dcurrent_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Refresh the current line. By default, this is unbound.
</p>
</dd>
</dl>
<hr>
-<span id="Commands-For-History"></span><div class="header">
+</div>
+<div class="subsection" id="Commands-For-History">
+<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>
+Next: <a href="#Commands-For-Text" accesskey="n" rel="next">Commands For Changing 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>
<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>
-<span id="index-accept_002dline-_0028Newline-or-Return_0029"></span>
-</dt>
+<dt id='index-accept_002dline-_0028Newline-or-Return_0029'><span><code>accept-line (Newline or Return)</code><a href='#index-accept_002dline-_0028Newline-or-Return_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Accept the line regardless of where the cursor is.
If this line is
non-empty, add it to the history list according to the setting of
@@ -11087,68 +11312,50 @@ If this line is a modified history line, then restore the history line
to its original state.
</p>
</dd>
-<dt><code>previous-history (C-p)</code>
-<span id="index-previous_002dhistory-_0028C_002dp_0029"></span>
-</dt>
+<dt id='index-previous_002dhistory-_0028C_002dp_0029'><span><code>previous-history (C-p)</code><a href='#index-previous_002dhistory-_0028C_002dp_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-next_002dhistory-_0028C_002dn_0029"></span>
-</dt>
+<dt id='index-next_002dhistory-_0028C_002dn_0029'><span><code>next-history (C-n)</code><a href='#index-next_002dhistory-_0028C_002dn_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"></span>
-</dt>
+<dt id='index-beginning_002dof_002dhistory-_0028M_002d_003c_0029'><span><code>beginning-of-history (M-&lt;)</code><a href='#index-beginning_002dof_002dhistory-_0028M_002d_003c_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Move to the first line in the history.
</p>
</dd>
-<dt><code>end-of-history (M-&gt;)</code>
-<span id="index-end_002dof_002dhistory-_0028M_002d_003e_0029"></span>
-</dt>
+<dt id='index-end_002dof_002dhistory-_0028M_002d_003e_0029'><span><code>end-of-history (M-&gt;)</code><a href='#index-end_002dof_002dhistory-_0028M_002d_003e_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"></span>
-</dt>
+<dt id='index-reverse_002dsearch_002dhistory-_0028C_002dr_0029'><span><code>reverse-search-history (C-r)</code><a href='#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-forward_002dsearch_002dhistory-_0028C_002ds_0029"></span>
-</dt>
+<dt id='index-forward_002dsearch_002dhistory-_0028C_002ds_0029'><span><code>forward-search-history (C-s)</code><a href='#index-forward_002dsearch_002dhistory-_0028C_002ds_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"></span>
-</dt>
+<dt id='index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029'><span><code>non-incremental-reverse-search-history (M-p)</code><a href='#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029' class='copiable-anchor'> &para;</a></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
for a string supplied by the user.
The search string may match anywhere in a history line.
</p>
</dd>
-<dt><code>non-incremental-forward-search-history (M-n)</code>
-<span id="index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"></span>
-</dt>
+<dt id='index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029'><span><code>non-incremental-forward-search-history (M-n)</code><a href='#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029' class='copiable-anchor'> &para;</a></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
for a string supplied by the user.
The search string may match anywhere in a history line.
</p>
</dd>
-<dt><code>history-search-forward ()</code>
-<span id="index-history_002dsearch_002dforward-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dsearch_002dforward-_0028_0029'><span><code>history-search-forward ()</code><a href='#index-history_002dsearch_002dforward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Search forward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
@@ -11156,9 +11363,7 @@ This is a non-incremental search.
By default, this command is unbound.
</p>
</dd>
-<dt><code>history-search-backward ()</code>
-<span id="index-history_002dsearch_002dbackward-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dsearch_002dbackward-_0028_0029'><span><code>history-search-backward ()</code><a href='#index-history_002dsearch_002dbackward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Search backward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
@@ -11166,9 +11371,7 @@ This is a non-incremental search.
By default, this command is unbound.
</p>
</dd>
-<dt><code>history-substring-search-forward ()</code>
-<span id="index-history_002dsubstring_002dsearch_002dforward-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dsubstring_002dsearch_002dforward-_0028_0029'><span><code>history-substring-search-forward ()</code><a href='#index-history_002dsubstring_002dsearch_002dforward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Search forward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
@@ -11176,9 +11379,7 @@ This is a non-incremental search.
By default, this command is unbound.
</p>
</dd>
-<dt><code>history-substring-search-backward ()</code>
-<span id="index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dsubstring_002dsearch_002dbackward-_0028_0029'><span><code>history-substring-search-backward ()</code><a href='#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Search backward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
@@ -11186,9 +11387,7 @@ This is a non-incremental search.
By default, this command is unbound.
</p>
</dd>
-<dt><code>yank-nth-arg (M-C-y)</code>
-<span id="index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"></span>
-</dt>
+<dt id='index-yank_002dnth_002darg-_0028M_002dC_002dy_0029'><span><code>yank-nth-arg (M-C-y)</code><a href='#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Insert the first argument to the previous command (usually
the second word on the previous line) at point.
With an argument <var>n</var>,
@@ -11199,9 +11398,7 @@ Once the argument <var>n</var> is computed, the argument is extracted
as if the &lsquo;<samp>!<var>n</var></samp>&rsquo; history expansion had been specified.
</p>
</dd>
-<dt><code>yank-last-arg (M-. or M-_)</code>
-<span id="index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"></span>
-</dt>
+<dt id='index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029'><span><code>yank-last-arg (M-. or M-_)</code><a href='#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Insert last argument to the previous command (the last word of the
previous history entry).
With a numeric argument, behave exactly like <code>yank-nth-arg</code>.
@@ -11215,9 +11412,7 @@ 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>
+<dt id='index-operate_002dand_002dget_002dnext-_0028C_002do_0029'><span><code>operate-and-get-next (C-o)</code><a href='#index-operate_002dand_002dget_002dnext-_0028C_002do_0029' class='copiable-anchor'> &para;</a></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
@@ -11226,65 +11421,59 @@ A numeric argument, if supplied, specifies the history entry to use instead
of the current line.
</p>
</dd>
+<dt id='index-fetch_002dhistory-_0028_0029'><span><code>fetch-history ()</code><a href='#index-fetch_002dhistory-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>With a numeric argument, fetch that entry from the history list
+and make it the current line.
+Without an argument, move back to the first entry in the history list.
+</p>
+</dd>
</dl>
<hr>
-<span id="Commands-For-Text"></span><div class="header">
+</div>
+<div class="subsection" id="Commands-For-Text">
+<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>
+Next: <a href="#Commands-For-Killing" accesskey="n" rel="next">Killing And Yanking</a>, Previous: <a href="#Commands-For-History" accesskey="p" rel="prev">Commands For Manipulating The 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>
<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>
-<span id="index-end_002dof_002dfile-_0028usually-C_002dd_0029"></span>
-</dt>
+<dt id='index-end_002dof_002dfile-_0028usually-C_002dd_0029'><span><code><i>end-of-file</i> (usually C-d)</code><a href='#index-end_002dof_002dfile-_0028usually-C_002dd_0029' class='copiable-anchor'> &para;</a></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
on the line, and point is at the beginning of the line, Readline
interprets it as the end of input and returns <small>EOF</small>.
</p>
</dd>
-<dt><code>delete-char (C-d)</code>
-<span id="index-delete_002dchar-_0028C_002dd_0029"></span>
-</dt>
+<dt id='index-delete_002dchar-_0028C_002dd_0029'><span><code>delete-char (C-d)</code><a href='#index-delete_002dchar-_0028C_002dd_0029' class='copiable-anchor'> &para;</a></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>
commonly is, see above for the effects.
</p>
</dd>
-<dt><code>backward-delete-char (Rubout)</code>
-<span id="index-backward_002ddelete_002dchar-_0028Rubout_0029"></span>
-</dt>
+<dt id='index-backward_002ddelete_002dchar-_0028Rubout_0029'><span><code>backward-delete-char (Rubout)</code><a href='#index-backward_002ddelete_002dchar-_0028Rubout_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-forward_002dbackward_002ddelete_002dchar-_0028_0029"></span>
-</dt>
+<dt id='index-forward_002dbackward_002ddelete_002dchar-_0028_0029'><span><code>forward-backward-delete-char ()</code><a href='#index-forward_002dbackward_002ddelete_002dchar-_0028_0029' class='copiable-anchor'> &para;</a></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
deleted. By default, this is not bound to a key.
</p>
</dd>
-<dt><code>quoted-insert (C-q or C-v)</code>
-<span id="index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"></span>
-</dt>
+<dt id='index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029'><span><code>quoted-insert (C-q or C-v)</code><a href='#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029' class='copiable-anchor'> &para;</a></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.
</p>
</dd>
-<dt><code>self-insert (a, b, A, 1, !, &hellip;)</code>
-<span id="index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"></span>
-</dt>
+<dt id='index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029'><span><code>self-insert (a, b, A, 1, !, &hellip;)</code><a href='#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Insert yourself.
</p>
</dd>
-<dt><code>bracketed-paste-begin ()</code>
-<span id="index-bracketed_002dpaste_002dbegin-_0028_0029"></span>
-</dt>
+<dt id='index-bracketed_002dpaste_002dbegin-_0028_0029'><span><code>bracketed-paste-begin ()</code><a href='#index-bracketed_002dpaste_002dbegin-_0028_0029' class='copiable-anchor'> &para;</a></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.
It allows Readline to insert the pasted text as a single unit without treating
@@ -11298,9 +11487,7 @@ mark is active, Readline redisplay uses the terminal&rsquo;s standout mode to
denote the region.
</p>
</dd>
-<dt><code>transpose-chars (C-t)</code>
-<span id="index-transpose_002dchars-_0028C_002dt_0029"></span>
-</dt>
+<dt id='index-transpose_002dchars-_0028C_002dt_0029'><span><code>transpose-chars (C-t)</code><a href='#index-transpose_002dchars-_0028C_002dt_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Drag the character before the cursor forward over
the character at the cursor, moving the
cursor forward as well. If the insertion point
@@ -11309,39 +11496,29 @@ transposes the last two characters of the line.
Negative arguments have no effect.
</p>
</dd>
-<dt><code>transpose-words (M-t)</code>
-<span id="index-transpose_002dwords-_0028M_002dt_0029"></span>
-</dt>
+<dt id='index-transpose_002dwords-_0028M_002dt_0029'><span><code>transpose-words (M-t)</code><a href='#index-transpose_002dwords-_0028M_002dt_0029' class='copiable-anchor'> &para;</a></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.
</p>
</dd>
-<dt><code>upcase-word (M-u)</code>
-<span id="index-upcase_002dword-_0028M_002du_0029"></span>
-</dt>
+<dt id='index-upcase_002dword-_0028M_002du_0029'><span><code>upcase-word (M-u)</code><a href='#index-upcase_002dword-_0028M_002du_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-downcase_002dword-_0028M_002dl_0029"></span>
-</dt>
+<dt id='index-downcase_002dword-_0028M_002dl_0029'><span><code>downcase-word (M-l)</code><a href='#index-downcase_002dword-_0028M_002dl_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-capitalize_002dword-_0028M_002dc_0029"></span>
-</dt>
+<dt id='index-capitalize_002dword-_0028M_002dc_0029'><span><code>capitalize-word (M-c)</code><a href='#index-capitalize_002dword-_0028M_002dc_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-overwrite_002dmode-_0028_0029"></span>
-</dt>
+<dt id='index-overwrite_002dmode-_0028_0029'><span><code>overwrite-mode ()</code><a href='#index-overwrite_002dmode-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Toggle overwrite mode. With an explicit positive numeric argument,
switches to overwrite mode. With an explicit non-positive numeric
argument, switches to insert mode. This command affects only
@@ -11359,75 +11536,59 @@ before point with a space.
</dl>
<hr>
-<span id="Commands-For-Killing"></span><div class="header">
+</div>
+<div class="subsection" id="Commands-For-Killing">
+<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>
+Next: <a href="#Numeric-Arguments" accesskey="n" rel="next">Specifying Numeric Arguments</a>, Previous: <a href="#Commands-For-Text" accesskey="p" rel="prev">Commands For Changing 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>
<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>
-<span id="index-kill_002dline-_0028C_002dk_0029"></span>
-</dt>
+<dt id='index-kill_002dline-_0028C_002dk_0029'><span><code>kill-line (C-k)</code><a href='#index-kill_002dline-_0028C_002dk_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"></span>
-</dt>
+<dt id='index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029'><span><code>backward-kill-line (C-x Rubout)</code><a href='#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-unix_002dline_002ddiscard-_0028C_002du_0029"></span>
-</dt>
+<dt id='index-unix_002dline_002ddiscard-_0028C_002du_0029'><span><code>unix-line-discard (C-u)</code><a href='#index-unix_002dline_002ddiscard-_0028C_002du_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Kill backward from the cursor to the beginning of the current line.
</p>
</dd>
-<dt><code>kill-whole-line ()</code>
-<span id="index-kill_002dwhole_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-kill_002dwhole_002dline-_0028_0029'><span><code>kill-whole-line ()</code><a href='#index-kill_002dwhole_002dline-_0028_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-kill_002dword-_0028M_002dd_0029"></span>
-</dt>
+<dt id='index-kill_002dword-_0028M_002dd_0029'><span><code>kill-word (M-d)</code><a href='#index-kill_002dword-_0028M_002dd_0029' class='copiable-anchor'> &para;</a></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.
Word boundaries are the same as <code>forward-word</code>.
</p>
</dd>
-<dt><code>backward-kill-word (M-<span class="key">DEL</span>)</code>
-<span id="index-backward_002dkill_002dword-_0028M_002dDEL_0029"></span>
-</dt>
+<dt id='index-backward_002dkill_002dword-_0028M_002dDEL_0029'><span><code>backward-kill-word (M-<span class="key">DEL</span>)</code><a href='#index-backward_002dkill_002dword-_0028M_002dDEL_0029' class='copiable-anchor'> &para;</a></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 (M-C-d)</code>
-<span id="index-shell_002dkill_002dword-_0028M_002dC_002dd_0029"></span>
-</dt>
+<dt id='index-shell_002dkill_002dword-_0028M_002dC_002dd_0029'><span><code>shell-kill-word (M-C-d)</code><a href='#index-shell_002dkill_002dword-_0028M_002dC_002dd_0029' class='copiable-anchor'> &para;</a></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.
Word boundaries are the same as <code>shell-forward-word</code>.
</p>
</dd>
-<dt><code>shell-backward-kill-word ()</code>
-<span id="index-shell_002dbackward_002dkill_002dword-_0028_0029"></span>
-</dt>
+<dt id='index-shell_002dbackward_002dkill_002dword-_0028_0029'><span><code>shell-backward-kill-word ()</code><a href='#index-shell_002dbackward_002dkill_002dword-_0028_0029' class='copiable-anchor'> &para;</a></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>
+<dt id='index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029'><span><code>shell-transpose-words (M-C-t)</code><a href='#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029' class='copiable-anchor'> &para;</a></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
@@ -11436,88 +11597,68 @@ 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>
-<span id="index-unix_002dword_002drubout-_0028C_002dw_0029"></span>
-</dt>
+<dt id='index-unix_002dword_002drubout-_0028C_002dw_0029'><span><code>unix-word-rubout (C-w)</code><a href='#index-unix_002dword_002drubout-_0028C_002dw_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-unix_002dfilename_002drubout-_0028_0029"></span>
-</dt>
+<dt id='index-unix_002dfilename_002drubout-_0028_0029'><span><code>unix-filename-rubout ()</code><a href='#index-unix_002dfilename_002drubout-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>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.
</p>
</dd>
-<dt><code>delete-horizontal-space ()</code>
-<span id="index-delete_002dhorizontal_002dspace-_0028_0029"></span>
-</dt>
+<dt id='index-delete_002dhorizontal_002dspace-_0028_0029'><span><code>delete-horizontal-space ()</code><a href='#index-delete_002dhorizontal_002dspace-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Delete all spaces and tabs around point. By default, this is unbound.
</p>
</dd>
-<dt><code>kill-region ()</code>
-<span id="index-kill_002dregion-_0028_0029"></span>
-</dt>
+<dt id='index-kill_002dregion-_0028_0029'><span><code>kill-region ()</code><a href='#index-kill_002dregion-_0028_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-copy_002dregion_002das_002dkill-_0028_0029"></span>
-</dt>
+<dt id='index-copy_002dregion_002das_002dkill-_0028_0029'><span><code>copy-region-as-kill ()</code><a href='#index-copy_002dregion_002das_002dkill-_0028_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-copy_002dbackward_002dword-_0028_0029"></span>
-</dt>
+<dt id='index-copy_002dbackward_002dword-_0028_0029'><span><code>copy-backward-word ()</code><a href='#index-copy_002dbackward_002dword-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Copy the word before point to the kill buffer.
The word boundaries are the same as <code>backward-word</code>.
By default, this command is unbound.
</p>
</dd>
-<dt><code>copy-forward-word ()</code>
-<span id="index-copy_002dforward_002dword-_0028_0029"></span>
-</dt>
+<dt id='index-copy_002dforward_002dword-_0028_0029'><span><code>copy-forward-word ()</code><a href='#index-copy_002dforward_002dword-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Copy the word following point to the kill buffer.
The word boundaries are the same as <code>forward-word</code>.
By default, this command is unbound.
</p>
</dd>
-<dt><code>yank (C-y)</code>
-<span id="index-yank-_0028C_002dy_0029"></span>
-</dt>
+<dt id='index-yank-_0028C_002dy_0029'><span><code>yank (C-y)</code><a href='#index-yank-_0028C_002dy_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-yank_002dpop-_0028M_002dy_0029"></span>
-</dt>
+<dt id='index-yank_002dpop-_0028M_002dy_0029'><span><code>yank-pop (M-y)</code><a href='#index-yank_002dpop-_0028M_002dy_0029' class='copiable-anchor'> &para;</a></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>.
</p></dd>
</dl>
<hr>
-<span id="Numeric-Arguments"></span><div class="header">
+</div>
+<div class="subsection" id="Numeric-Arguments">
+<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>
+Next: <a href="#Commands-For-Completion" accesskey="n" rel="next">Letting Readline Type For You</a>, Previous: <a href="#Commands-For-Killing" accesskey="p" rel="prev">Killing And Yanking</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>
<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>
-<span id="index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"></span>
-</dt>
+<dt id='index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029'><span><code>digit-argument (<kbd>M-0</kbd>, <kbd>M-1</kbd>, &hellip; <kbd>M--</kbd>)</code><a href='#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-universal_002dargument-_0028_0029"></span>
-</dt>
+<dt id='index-universal_002dargument-_0028_0029'><span><code>universal-argument ()</code><a href='#index-universal_002dargument-_0028_0029' class='copiable-anchor'> &para;</a></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
leading minus sign, those digits define the argument.
@@ -11534,16 +11675,16 @@ By default, this is not bound to a key.
</dl>
<hr>
-<span id="Commands-For-Completion"></span><div class="header">
+</div>
+<div class="subsection" id="Commands-For-Completion">
+<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>
+Next: <a href="#Keyboard-Macros" accesskey="n" rel="next">Keyboard Macros</a>, Previous: <a href="#Numeric-Arguments" accesskey="p" rel="prev">Specifying 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>
<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>
-<span id="index-complete-_0028TAB_0029"></span>
-</dt>
+<dt id='index-complete-_0028TAB_0029'><span><code>complete (<span class="key">TAB</span>)</code><a href='#index-complete-_0028TAB_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Attempt to perform completion on the text before point.
The actual completion performed is application-specific.
Bash attempts completion treating the text as a variable (if the
@@ -11553,25 +11694,19 @@ command (including aliases and functions) in turn. If none
of these produces a match, filename completion is attempted.
</p>
</dd>
-<dt><code>possible-completions (M-?)</code>
-<span id="index-possible_002dcompletions-_0028M_002d_003f_0029"></span>
-</dt>
+<dt id='index-possible_002dcompletions-_0028M_002d_003f_0029'><span><code>possible-completions (M-?)</code><a href='#index-possible_002dcompletions-_0028M_002d_003f_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>List the possible completions of the text before point.
When displaying completions, Readline sets the number of columns used
for display to the value of <code>completion-display-width</code>, the value of
the environment variable <code>COLUMNS</code>, or the screen width, in that order.
</p>
</dd>
-<dt><code>insert-completions (M-*)</code>
-<span id="index-insert_002dcompletions-_0028M_002d_002a_0029"></span>
-</dt>
+<dt id='index-insert_002dcompletions-_0028M_002d_002a_0029'><span><code>insert-completions (M-*)</code><a href='#index-insert_002dcompletions-_0028M_002d_002a_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-menu_002dcomplete-_0028_0029"></span>
-</dt>
+<dt id='index-menu_002dcomplete-_0028_0029'><span><code>menu-complete ()</code><a href='#index-menu_002dcomplete-_0028_0029' class='copiable-anchor'> &para;</a></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.
Repeated execution of <code>menu-complete</code> steps through the list
@@ -11586,17 +11721,13 @@ This command is intended to be bound to <tt class="key">TAB</tt>, but is unbound
by default.
</p>
</dd>
-<dt><code>menu-complete-backward ()</code>
-<span id="index-menu_002dcomplete_002dbackward-_0028_0029"></span>
-</dt>
+<dt id='index-menu_002dcomplete_002dbackward-_0028_0029'><span><code>menu-complete-backward ()</code><a href='#index-menu_002dcomplete_002dbackward-_0028_0029' class='copiable-anchor'> &para;</a></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
negative argument.
</p>
</dd>
-<dt><code>delete-char-or-list ()</code>
-<span id="index-delete_002dchar_002dor_002dlist-_0028_0029"></span>
-</dt>
+<dt id='index-delete_002dchar_002dor_002dlist-_0028_0029'><span><code>delete-char-or-list ()</code><a href='#index-delete_002dchar_002dor_002dlist-_0028_0029' class='copiable-anchor'> &para;</a></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>).
If at the end of the line, behaves identically to
@@ -11604,64 +11735,46 @@ If at the end of the line, behaves identically to
This command is unbound by default.
</p>
</dd>
-<dt><code>complete-filename (M-/)</code>
-<span id="index-complete_002dfilename-_0028M_002d_002f_0029"></span>
-</dt>
+<dt id='index-complete_002dfilename-_0028M_002d_002f_0029'><span><code>complete-filename (M-/)</code><a href='#index-complete_002dfilename-_0028M_002d_002f_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Attempt filename completion on the text before point.
</p>
</dd>
-<dt><code>possible-filename-completions (C-x /)</code>
-<span id="index-possible_002dfilename_002dcompletions-_0028C_002dx-_002f_0029"></span>
-</dt>
+<dt id='index-possible_002dfilename_002dcompletions-_0028C_002dx-_002f_0029'><span><code>possible-filename-completions (C-x /)</code><a href='#index-possible_002dfilename_002dcompletions-_0028C_002dx-_002f_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-complete_002dusername-_0028M_002d_007e_0029"></span>
-</dt>
+<dt id='index-complete_002dusername-_0028M_002d_007e_0029'><span><code>complete-username (M-~)</code><a href='#index-complete_002dusername-_0028M_002d_007e_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-possible_002dusername_002dcompletions-_0028C_002dx-_007e_0029"></span>
-</dt>
+<dt id='index-possible_002dusername_002dcompletions-_0028C_002dx-_007e_0029'><span><code>possible-username-completions (C-x ~)</code><a href='#index-possible_002dusername_002dcompletions-_0028C_002dx-_007e_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-complete_002dvariable-_0028M_002d_0024_0029"></span>
-</dt>
+<dt id='index-complete_002dvariable-_0028M_002d_0024_0029'><span><code>complete-variable (M-$)</code><a href='#index-complete_002dvariable-_0028M_002d_0024_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029"></span>
-</dt>
+<dt id='index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029'><span><code>possible-variable-completions (C-x $)</code><a href='#index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-complete_002dhostname-_0028M_002d_0040_0029"></span>
-</dt>
+<dt id='index-complete_002dhostname-_0028M_002d_0040_0029'><span><code>complete-hostname (M-@)</code><a href='#index-complete_002dhostname-_0028M_002d_0040_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-possible_002dhostname_002dcompletions-_0028C_002dx-_0040_0029"></span>
-</dt>
+<dt id='index-possible_002dhostname_002dcompletions-_0028C_002dx-_0040_0029'><span><code>possible-hostname-completions (C-x @)</code><a href='#index-possible_002dhostname_002dcompletions-_0028C_002dx-_0040_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-complete_002dcommand-_0028M_002d_0021_0029"></span>
-</dt>
+<dt id='index-complete_002dcommand-_0028M_002d_0021_0029'><span><code>complete-command (M-!)</code><a href='#index-complete_002dcommand-_0028M_002d_0021_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Attempt completion on the text before point, treating
it as a command name. Command completion attempts to
match the text against aliases, reserved words, shell
@@ -11669,32 +11782,24 @@ functions, shell builtins, and finally executable filenames,
in that order.
</p>
</dd>
-<dt><code>possible-command-completions (C-x !)</code>
-<span id="index-possible_002dcommand_002dcompletions-_0028C_002dx-_0021_0029"></span>
-</dt>
+<dt id='index-possible_002dcommand_002dcompletions-_0028C_002dx-_0021_0029'><span><code>possible-command-completions (C-x !)</code><a href='#index-possible_002dcommand_002dcompletions-_0028C_002dx-_0021_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029"></span>
-</dt>
+<dt id='index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029'><span><code>dynamic-complete-history (M-<span class="key">TAB</span>)</code><a href='#index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Attempt completion on the text before point, comparing
the text against lines from the history list for possible
completion matches.
</p>
</dd>
-<dt><code>dabbrev-expand ()</code>
-<span id="index-dabbrev_002dexpand-_0028_0029"></span>
-</dt>
+<dt id='index-dabbrev_002dexpand-_0028_0029'><span><code>dabbrev-expand ()</code><a href='#index-dabbrev_002dexpand-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Attempt menu completion on the text before point, comparing
the text against lines from the history list for possible
completion matches.
</p>
</dd>
-<dt><code>complete-into-braces (M-{)</code>
-<span id="index-complete_002dinto_002dbraces-_0028M_002d_007b_0029"></span>
-</dt>
+<dt id='index-complete_002dinto_002dbraces-_0028M_002d_007b_0029'><span><code>complete-into-braces (M-{)</code><a href='#index-complete_002dinto_002dbraces-_0028M_002d_007b_0029' class='copiable-anchor'> &para;</a></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
(see <a href="#Brace-Expansion">Brace Expansion</a>).
@@ -11703,142 +11808,112 @@ enclosed within braces so the list is available to the shell
</dl>
<hr>
-<span id="Keyboard-Macros"></span><div class="header">
+</div>
+<div class="subsection" id="Keyboard-Macros">
+<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>
+Next: <a href="#Miscellaneous-Commands" accesskey="n" rel="next">Some Miscellaneous Commands</a>, Previous: <a href="#Commands-For-Completion" accesskey="p" rel="prev">Letting Readline Type For You</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>
<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>
-<span id="index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"></span>
-</dt>
+<dt id='index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029'><span><code>start-kbd-macro (C-x ()</code><a href='#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Begin saving the characters typed into the current keyboard macro.
</p>
</dd>
-<dt><code>end-kbd-macro (C-x ))</code>
-<span id="index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"></span>
-</dt>
+<dt id='index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029'><span><code>end-kbd-macro (C-x ))</code><a href='#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"></span>
-</dt>
+<dt id='index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029'><span><code>call-last-kbd-macro (C-x e)</code><a href='#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029' class='copiable-anchor'> &para;</a></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>
-<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
+<dt id='index-print_002dlast_002dkbd_002dmacro-_0028_0029'><span><code>print-last-kbd-macro ()</code><a href='#index-print_002dlast_002dkbd_002dmacro-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>Print the last keyboard macro defined in a format suitable for the
<var>inputrc</var> file.
</p>
</dd>
</dl>
<hr>
-<span id="Miscellaneous-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Miscellaneous-Commands">
+<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>
<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>
-<span id="index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"></span>
-</dt>
+<dt id='index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029'><span><code>re-read-init-file (C-x C-r)</code><a href='#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-abort-_0028C_002dg_0029"></span>
-</dt>
+<dt id='index-abort-_0028C_002dg_0029'><span><code>abort (C-g)</code><a href='#index-abort-_0028C_002dg_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Abort the current editing command and
ring the terminal&rsquo;s bell (subject to the setting of
<code>bell-style</code>).
</p>
</dd>
-<dt><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, &hellip;)</code>
-<span id="index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"></span>
-</dt>
+<dt id='index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029'><span><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, &hellip;)</code><a href='#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029' class='copiable-anchor'> &para;</a></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.
The behavior is undefined if <var>x</var> is already lower case.
</p>
</dd>
-<dt><code>prefix-meta (<span class="key">ESC</span>)</code>
-<span id="index-prefix_002dmeta-_0028ESC_0029"></span>
-</dt>
+<dt id='index-prefix_002dmeta-_0028ESC_0029'><span><code>prefix-meta (<span class="key">ESC</span>)</code><a href='#index-prefix_002dmeta-_0028ESC_0029' class='copiable-anchor'> &para;</a></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
<kbd>M-f</kbd>.
</p>
</dd>
-<dt><code>undo (C-_ or C-x C-u)</code>
-<span id="index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"></span>
-</dt>
+<dt id='index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029'><span><code>undo (C-_ or C-x C-u)</code><a href='#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Incremental undo, separately remembered for each line.
</p>
</dd>
-<dt><code>revert-line (M-r)</code>
-<span id="index-revert_002dline-_0028M_002dr_0029"></span>
-</dt>
+<dt id='index-revert_002dline-_0028M_002dr_0029'><span><code>revert-line (M-r)</code><a href='#index-revert_002dline-_0028M_002dr_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-tilde_002dexpand-_0028M_002d_0026_0029"></span>
-</dt>
+<dt id='index-tilde_002dexpand-_0028M_002d_0026_0029'><span><code>tilde-expand (M-&amp;)</code><a href='#index-tilde_002dexpand-_0028M_002d_0026_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Perform tilde expansion on the current word.
</p>
</dd>
-<dt><code>set-mark (C-@)</code>
-<span id="index-set_002dmark-_0028C_002d_0040_0029"></span>
-</dt>
+<dt id='index-set_002dmark-_0028C_002d_0040_0029'><span><code>set-mark (C-@)</code><a href='#index-set_002dmark-_0028C_002d_0040_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"></span>
-</dt>
+<dt id='index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029'><span><code>exchange-point-and-mark (C-x C-x)</code><a href='#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-character_002dsearch-_0028C_002d_005d_0029"></span>
-</dt>
+<dt id='index-character_002dsearch-_0028C_002d_005d_0029'><span><code>character-search (C-])</code><a href='#index-character_002dsearch-_0028C_002d_005d_0029' class='copiable-anchor'> &para;</a></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.
+character. A negative argument searches for previous occurrences.
</p>
</dd>
-<dt><code>character-search-backward (M-C-])</code>
-<span id="index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"></span>
-</dt>
+<dt id='index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029'><span><code>character-search-backward (M-C-])</code><a href='#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029' class='copiable-anchor'> &para;</a></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
+of that character. A negative argument searches for subsequent
occurrences.
</p>
</dd>
-<dt><code>skip-csi-sequence ()</code>
-<span id="index-skip_002dcsi_002dsequence-_0028_0029"></span>
-</dt>
+<dt id='index-skip_002dcsi_002dsequence-_0028_0029'><span><code>skip-csi-sequence ()</code><a href='#index-skip_002dcsi_002dsequence-_0028_0029' class='copiable-anchor'> &para;</a></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
Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
bound to &quot;\e[&quot;, keys producing such sequences will have no effect
-unless explicitly bound to a readline command, instead of inserting
+unless explicitly bound to a Readline command, instead of inserting
stray characters into the editing buffer. This is unbound by default,
but usually bound to ESC-[.
</p>
</dd>
-<dt><code>insert-comment (M-#)</code>
-<span id="index-insert_002dcomment-_0028M_002d_0023_0029"></span>
-</dt>
+<dt id='index-insert_002dcomment-_0028M_002d_0023_0029'><span><code>insert-comment (M-#)</code><a href='#index-insert_002dcomment-_0028M_002d_0023_0029' class='copiable-anchor'> &para;</a></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.
If a numeric argument is supplied, this command acts as a toggle: if
@@ -11853,107 +11928,85 @@ If a numeric argument causes the comment character to be removed, the line
will be executed by the shell.
</p>
</dd>
-<dt><code>dump-functions ()</code>
-<span id="index-dump_002dfunctions-_0028_0029"></span>
-</dt>
+<dt id='index-dump_002dfunctions-_0028_0029'><span><code>dump-functions ()</code><a href='#index-dump_002dfunctions-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Print all of the functions and their key bindings to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an <var>inputrc</var> file. This command is unbound by default.
</p>
</dd>
-<dt><code>dump-variables ()</code>
-<span id="index-dump_002dvariables-_0028_0029"></span>
-</dt>
+<dt id='index-dump_002dvariables-_0028_0029'><span><code>dump-variables ()</code><a href='#index-dump_002dvariables-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Print all of the settable variables and their values to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an <var>inputrc</var> file. This command is unbound by default.
</p>
</dd>
-<dt><code>dump-macros ()</code>
-<span id="index-dump_002dmacros-_0028_0029"></span>
-</dt>
+<dt id='index-dump_002dmacros-_0028_0029'><span><code>dump-macros ()</code><a href='#index-dump_002dmacros-_0028_0029' class='copiable-anchor'> &para;</a></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,
the output is formatted in such a way that it can be made part
of an <var>inputrc</var> file. This command is unbound by default.
</p>
</dd>
-<dt><code>glob-complete-word (M-g)</code>
-<span id="index-glob_002dcomplete_002dword-_0028M_002dg_0029"></span>
-</dt>
+<dt id='index-spell_002dcorrect_002dword-_0028C_002dx-s_0029'><span><code>spell-correct-word (C-x s)</code><a href='#index-spell_002dcorrect_002dword-_0028C_002dx-s_0029' class='copiable-anchor'> &para;</a></span></dt>
+<dd><p>Perform spelling correction on the current word, treating it as a directory
+or filename, in the same way as the <code>cdspell</code> shell option.
+Word boundaries are the same as those used by <code>shell-forward-word</code>.
+</p>
+</dd>
+<dt id='index-glob_002dcomplete_002dword-_0028M_002dg_0029'><span><code>glob-complete-word (M-g)</code><a href='#index-glob_002dcomplete_002dword-_0028M_002dg_0029' class='copiable-anchor'> &para;</a></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
generate a list of matching file names for possible completions.
</p>
</dd>
-<dt><code>glob-expand-word (C-x *)</code>
-<span id="index-glob_002dexpand_002dword-_0028C_002dx-_002a_0029"></span>
-</dt>
+<dt id='index-glob_002dexpand_002dword-_0028C_002dx-_002a_0029'><span><code>glob-expand-word (C-x *)</code><a href='#index-glob_002dexpand_002dword-_0028C_002dx-_002a_0029' class='copiable-anchor'> &para;</a></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.
If a numeric argument is supplied, a &lsquo;<samp>*</samp>&rsquo; is appended before
pathname expansion.
</p>
</dd>
-<dt><code>glob-list-expansions (C-x g)</code>
-<span id="index-glob_002dlist_002dexpansions-_0028C_002dx-g_0029"></span>
-</dt>
+<dt id='index-glob_002dlist_002dexpansions-_0028C_002dx-g_0029'><span><code>glob-list-expansions (C-x g)</code><a href='#index-glob_002dlist_002dexpansions-_0028C_002dx-g_0029' class='copiable-anchor'> &para;</a></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.
If a numeric argument is supplied, a &lsquo;<samp>*</samp>&rsquo; is appended before
pathname expansion.
</p>
</dd>
-<dt><code>display-shell-version (C-x C-v)</code>
-<span id="index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029"></span>
-</dt>
+<dt id='index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029'><span><code>display-shell-version (C-x C-v)</code><a href='#index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Display version information about the current instance of Bash.
</p>
</dd>
-<dt><code>shell-expand-line (M-C-e)</code>
-<span id="index-shell_002dexpand_002dline-_0028M_002dC_002de_0029"></span>
-</dt>
+<dt id='index-shell_002dexpand_002dline-_0028M_002dC_002de_0029'><span><code>shell-expand-line (M-C-e)</code><a href='#index-shell_002dexpand_002dline-_0028M_002dC_002de_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Expand the line as the shell does.
This performs alias and history expansion as well as all of the shell
word expansions (see <a href="#Shell-Expansions">Shell Expansions</a>).
</p>
</dd>
-<dt><code>history-expand-line (M-^)</code>
-<span id="index-history_002dexpand_002dline-_0028M_002d_005e_0029"></span>
-</dt>
+<dt id='index-history_002dexpand_002dline-_0028M_002d_005e_0029'><span><code>history-expand-line (M-^)</code><a href='#index-history_002dexpand_002dline-_0028M_002d_005e_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Perform history expansion on the current line.
</p>
</dd>
-<dt><code>magic-space ()</code>
-<span id="index-magic_002dspace-_0028_0029"></span>
-</dt>
+<dt id='index-magic_002dspace-_0028_0029'><span><code>magic-space ()</code><a href='#index-magic_002dspace-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Perform history expansion on the current line and insert a space
-(see <a href="#History-Interaction">History Interaction</a>).
+(see <a href="#History-Interaction">History Expansion</a>).
</p>
</dd>
-<dt><code>alias-expand-line ()</code>
-<span id="index-alias_002dexpand_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-alias_002dexpand_002dline-_0028_0029'><span><code>alias-expand-line ()</code><a href='#index-alias_002dexpand_002dline-_0028_0029' class='copiable-anchor'> &para;</a></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>
-<span id="index-history_002dand_002dalias_002dexpand_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dand_002dalias_002dexpand_002dline-_0028_0029'><span><code>history-and-alias-expand-line ()</code><a href='#index-history_002dand_002dalias_002dexpand_002dline-_0028_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Perform history and alias expansion on the current line.
</p>
</dd>
-<dt><code>insert-last-argument (M-. or M-_)</code>
-<span id="index-insert_002dlast_002dargument-_0028M_002d_002e-or-M_002d_005f_0029"></span>
-</dt>
+<dt id='index-insert_002dlast_002dargument-_0028M_002d_002e-or-M_002d_005f_0029'><span><code>insert-last-argument (M-. or M-_)</code><a href='#index-insert_002dlast_002dargument-_0028M_002d_002e-or-M_002d_005f_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>A synonym for <code>yank-last-arg</code>.
</p>
</dd>
-<dt><code>edit-and-execute-command (C-x C-e)</code>
-<span id="index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029"></span>
-</dt>
+<dt id='index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029'><span><code>edit-and-execute-command (C-x C-e)</code><a href='#index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Invoke an editor on the current command line, and execute the result as shell
commands.
Bash attempts to invoke
@@ -11966,7 +12019,10 @@ as the editor, in that order.
</dl>
<hr>
-<span id="Readline-vi-Mode"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Readline-vi-Mode">
+<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>
@@ -11990,7 +12046,9 @@ history lines with &lsquo;<samp>k</samp>&rsquo; and subsequent lines with &lsquo
so forth.
</p>
<hr>
-<span id="Programmable-Completion"></span><div class="header">
+</div>
+<div class="section" id="Programmable-Completion">
+<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>
@@ -12021,7 +12079,7 @@ for the command word from any successful expansion
<p>Once a compspec has been found, it is used to generate the list of
matching words.
If a compspec is not found, the default Bash completion
-described above (see <a href="#Commands-For-Completion">Commands For Completion</a>) is performed.
+described above (see <a href="#Commands-For-Completion">Letting Readline Type For You</a>) is performed.
</p>
<p>First, the actions specified by the compspec are used.
Only matches which are prefixed by the word being completed are
@@ -12152,7 +12210,9 @@ complete -D -F _completion_loader -o bashdefault -o default
</pre></div>
<hr>
-<span id="Programmable-Completion-Builtins"></span><div class="header">
+</div>
+<div class="section" id="Programmable-Completion-Builtins">
+<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>
@@ -12164,9 +12224,8 @@ facilities: one to specify how the arguments to a particular command are to
be completed, and two to modify the completion as it is happening.
</p>
<dl compact="compact">
-<dt><code>compgen</code></dt>
-<dd><span id="index-compgen"></span>
-<div class="example">
+<dt id='index-compgen'><span><code>compgen</code><a href='#index-compgen' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example"><code>compgen [<var>option</var>] [<var>word</var>]</code>
</pre></div>
@@ -12189,9 +12248,8 @@ will be displayed.
matches were generated.
</p>
</dd>
-<dt><code>complete</code></dt>
-<dd><span id="index-complete"></span>
-<div class="example">
+<dt id='index-complete'><span><code>complete</code><a href='#index-complete' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>]
[-P <var>prefix</var>] [-S <var>suffix</var>] <var>name</var> [<var>name</var> &hellip;]</code>
@@ -12232,27 +12290,27 @@ should be quoted to protect them from expansion before the
</p>
<dl compact="compact">
-<dt><code>-o <var>comp-option</var></code></dt>
+<dt><span><code>-o <var>comp-option</var></code></span></dt>
<dd><p>The <var>comp-option</var> controls several aspects of the compspec&rsquo;s behavior
beyond the simple generation of completions.
<var>comp-option</var> may be one of:
</p>
<dl compact="compact">
-<dt><code>bashdefault</code></dt>
+<dt><span><code>bashdefault</code></span></dt>
<dd><p>Perform the rest of the default Bash completions if the compspec
generates no matches.
</p>
</dd>
-<dt><code>default</code></dt>
+<dt><span><code>default</code></span></dt>
<dd><p>Use Readline&rsquo;s default filename completion if the compspec generates
no matches.
</p>
</dd>
-<dt><code>dirnames</code></dt>
+<dt><span><code>dirnames</code></span></dt>
<dd><p>Perform directory name completion if the compspec generates no matches.
</p>
</dd>
-<dt><code>filenames</code></dt>
+<dt><span><code>filenames</code></span></dt>
<dd><p>Tell Readline that the compspec generates filenames, so it can perform any
filename-specific processing (like adding a slash to directory names,
quoting special characters, or suppressing trailing spaces).
@@ -12260,21 +12318,21 @@ This option is intended to be used with shell functions specified
with <samp>-F</samp>.
</p>
</dd>
-<dt><code>noquote</code></dt>
+<dt><span><code>noquote</code></span></dt>
<dd><p>Tell Readline not to quote the completed words if they are filenames
(quoting filenames is the default).
</p>
</dd>
-<dt><code>nosort</code></dt>
+<dt><span><code>nosort</code></span></dt>
<dd><p>Tell Readline not to sort the list of possible completions alphabetically.
</p>
</dd>
-<dt><code>nospace</code></dt>
+<dt><span><code>nospace</code></span></dt>
<dd><p>Tell Readline not to append a space (the default) to words completed at
the end of the line.
</p>
</dd>
-<dt><code>plusdirs</code></dt>
+<dt><span><code>plusdirs</code></span></dt>
<dd><p>After any matches defined by the compspec are generated,
directory name completion is attempted and any
matches are added to the results of the other actions.
@@ -12283,118 +12341,119 @@ matches are added to the results of the other actions.
</dl>
</dd>
-<dt><code>-A <var>action</var></code></dt>
+<dt><span><code>-A <var>action</var></code></span></dt>
<dd><p>The <var>action</var> may be one of the following to generate a list of possible
completions:
</p>
<dl compact="compact">
-<dt><code>alias</code></dt>
+<dt><span><code>alias</code></span></dt>
<dd><p>Alias names. May also be specified as <samp>-a</samp>.
</p>
</dd>
-<dt><code>arrayvar</code></dt>
+<dt><span><code>arrayvar</code></span></dt>
<dd><p>Array variable names.
</p>
</dd>
-<dt><code>binding</code></dt>
+<dt><span><code>binding</code></span></dt>
<dd><p>Readline key binding names (see <a href="#Bindable-Readline-Commands">Bindable Readline Commands</a>).
</p>
</dd>
-<dt><code>builtin</code></dt>
+<dt><span><code>builtin</code></span></dt>
<dd><p>Names of shell builtin commands. May also be specified as <samp>-b</samp>.
</p>
</dd>
-<dt><code>command</code></dt>
+<dt><span><code>command</code></span></dt>
<dd><p>Command names. May also be specified as <samp>-c</samp>.
</p>
</dd>
-<dt><code>directory</code></dt>
+<dt><span><code>directory</code></span></dt>
<dd><p>Directory names. May also be specified as <samp>-d</samp>.
</p>
</dd>
-<dt><code>disabled</code></dt>
+<dt><span><code>disabled</code></span></dt>
<dd><p>Names of disabled shell builtins.
</p>
</dd>
-<dt><code>enabled</code></dt>
+<dt><span><code>enabled</code></span></dt>
<dd><p>Names of enabled shell builtins.
</p>
</dd>
-<dt><code>export</code></dt>
+<dt><span><code>export</code></span></dt>
<dd><p>Names of exported shell variables. May also be specified as <samp>-e</samp>.
</p>
</dd>
-<dt><code>file</code></dt>
+<dt><span><code>file</code></span></dt>
<dd><p>File names. May also be specified as <samp>-f</samp>.
</p>
</dd>
-<dt><code>function</code></dt>
+<dt><span><code>function</code></span></dt>
<dd><p>Names of shell functions.
</p>
</dd>
-<dt><code>group</code></dt>
+<dt><span><code>group</code></span></dt>
<dd><p>Group names. May also be specified as <samp>-g</samp>.
</p>
</dd>
-<dt><code>helptopic</code></dt>
-<dd><p>Help topics as accepted by the <code>help</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>).
+<dt><span><code>helptopic</code></span></dt>
+<dd><p>Help topics as accepted by the <code>help</code> builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
</dd>
-<dt><code>hostname</code></dt>
+<dt><span><code>hostname</code></span></dt>
<dd><p>Hostnames, as taken from the file specified by the
<code>HOSTFILE</code> shell variable (see <a href="#Bash-Variables">Bash Variables</a>).
</p>
</dd>
-<dt><code>job</code></dt>
+<dt><span><code>job</code></span></dt>
<dd><p>Job names, if job control is active. May also be specified as <samp>-j</samp>.
</p>
</dd>
-<dt><code>keyword</code></dt>
+<dt><span><code>keyword</code></span></dt>
<dd><p>Shell reserved words. May also be specified as <samp>-k</samp>.
</p>
</dd>
-<dt><code>running</code></dt>
+<dt><span><code>running</code></span></dt>
<dd><p>Names of running jobs, if job control is active.
</p>
</dd>
-<dt><code>service</code></dt>
+<dt><span><code>service</code></span></dt>
<dd><p>Service names. May also be specified as <samp>-s</samp>.
</p>
</dd>
-<dt><code>setopt</code></dt>
+<dt><span><code>setopt</code></span></dt>
<dd><p>Valid arguments for the <samp>-o</samp> option to the <code>set</code> builtin
(see <a href="#The-Set-Builtin">The Set Builtin</a>).
</p>
</dd>
-<dt><code>shopt</code></dt>
+<dt><span><code>shopt</code></span></dt>
<dd><p>Shell option names as accepted by the <code>shopt</code> builtin
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
</dd>
-<dt><code>signal</code></dt>
+<dt><span><code>signal</code></span></dt>
<dd><p>Signal names.
</p>
</dd>
-<dt><code>stopped</code></dt>
+<dt><span><code>stopped</code></span></dt>
<dd><p>Names of stopped jobs, if job control is active.
</p>
</dd>
-<dt><code>user</code></dt>
+<dt><span><code>user</code></span></dt>
<dd><p>User names. May also be specified as <samp>-u</samp>.
</p>
</dd>
-<dt><code>variable</code></dt>
+<dt><span><code>variable</code></span></dt>
<dd><p>Names of all shell variables. May also be specified as <samp>-v</samp>.
</p></dd>
</dl>
</dd>
-<dt><code>-C <var>command</var></code></dt>
+<dt><span><code>-C <var>command</var></code></span></dt>
<dd><p><var>command</var> is executed in a subshell environment, and its output is
used as the possible completions.
+Arguments are passed as with the <samp>-F</samp> option.
</p>
</dd>
-<dt><code>-F <var>function</var></code></dt>
+<dt><span><code>-F <var>function</var></code></span></dt>
<dd><p>The shell function <var>function</var> is executed in the current shell
environment.
When it is executed, $1 is the name of the command whose arguments are
@@ -12405,22 +12464,22 @@ When it finishes, the possible completions are retrieved from the value
of the <code>COMPREPLY</code> array variable.
</p>
</dd>
-<dt><code>-G <var>globpat</var></code></dt>
+<dt><span><code>-G <var>globpat</var></code></span></dt>
<dd><p>The filename expansion pattern <var>globpat</var> is expanded to generate
the possible completions.
</p>
</dd>
-<dt><code>-P <var>prefix</var></code></dt>
+<dt><span><code>-P <var>prefix</var></code></span></dt>
<dd><p><var>prefix</var> is added at the beginning of each possible completion
after all other options have been applied.
</p>
</dd>
-<dt><code>-S <var>suffix</var></code></dt>
+<dt><span><code>-S <var>suffix</var></code></span></dt>
<dd><p><var>suffix</var> is appended to each possible completion
after all other options have been applied.
</p>
</dd>
-<dt><code>-W <var>wordlist</var></code></dt>
+<dt><span><code>-W <var>wordlist</var></code></span></dt>
<dd><p>The <var>wordlist</var> is split using the characters in the
<code>IFS</code> special variable as delimiters, and each resultant word
is expanded.
@@ -12428,7 +12487,7 @@ The possible completions are the members of the resultant list which
match the word being completed.
</p>
</dd>
-<dt><code>-X <var>filterpat</var></code></dt>
+<dt><span><code>-X <var>filterpat</var></code></span></dt>
<dd><p><var>filterpat</var> is a pattern as used for filename expansion.
It is applied to the list of possible completions generated by the
preceding options and arguments, and each completion matching
@@ -12445,9 +12504,8 @@ a <var>name</var> for which no specification exists, or
an error occurs adding a completion specification.
</p>
</dd>
-<dt><code>compopt</code></dt>
-<dd><span id="index-compopt"></span>
-<div class="example">
+<dt id='index-compopt'><span><code>compopt</code><a href='#index-compopt' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example"><code>compopt</code> [-o <var>option</var>] [-DEI] [+o <var>option</var>] [<var>name</var>]
</pre></div>
<p>Modify completion options for each <var>name</var> according to the
@@ -12479,7 +12537,9 @@ specification exists, or an output error occurs.
</dl>
<hr>
-<span id="A-Programmable-Completion-Example"></span><div class="header">
+</div>
+<div class="section" id="A-Programmable-Completion-Example">
+<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>
@@ -12581,7 +12641,7 @@ via <var>CDPATH</var>: Readline can&rsquo;t tell those completions are directori
The <samp>-o nospace</samp> option tells Readline to not append a space
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
+completions &ndash; possible completions 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; or &lsquo;<samp>${</samp>&rsquo;, completions containing pathname
expansion patterns (see <a href="#Filename-Expansion">Filename Expansion</a>), and so on.
@@ -12602,9 +12662,12 @@ in the <samp>examples/complete</samp> subdirectory.
<span id="index-History_002c-how-to-use"></span>
<hr>
-<span id="Using-History-Interactively"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Using-History-Interactively">
+<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>
+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">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="Using-History-Interactively-1"></span><h2 class="chapter">9 Using History Interactively</h2>
@@ -12615,19 +12678,15 @@ It should be considered a user&rsquo;s guide.
For information on using the <small>GNU</small> History Library in other programs,
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
- 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
- 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.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Bash-History-Facilities" accesskey="1">Bash History Facilities</a></li>
+<li><a href="#Bash-History-Builtins" accesskey="2">Bash History Builtins</a></li>
+<li><a href="#History-Interaction" accesskey="3">History Expansion</a></li>
+</ul>
<hr>
-<span id="Bash-History-Facilities"></span><div class="header">
+<div class="section" id="Bash-History-Facilities">
+<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>
@@ -12657,7 +12716,7 @@ the value of the <code>HISTFILESIZE</code> variable.
When a shell with history enabled exits, the last
<code>$HISTSIZE</code> lines are copied from the history list to the file
named by <code>$HISTFILE</code>.
-If the <code>histappend</code> shell option is set (see <a href="#Bash-Builtins">Bash Builtins</a>),
+If the <code>histappend</code> shell option is set (see <a href="#Bash-Builtins">Bash Builtin Commands</a>),
the lines are appended to the history file,
otherwise the history file is overwritten.
If <code>HISTFILE</code>
@@ -12680,7 +12739,7 @@ The <code>history</code> builtin may be used to display or modify the history
list and manipulate the history file.
When using command-line editing, search commands
are available in each editing mode that provide access to the
-history list (see <a href="#Commands-For-History">Commands For History</a>).
+history list (see <a href="#Commands-For-History">Commands For Manipulating The History</a>).
</p>
<p>The shell allows control over which commands are saved on the history
list. The <code>HISTCONTROL</code> and <code>HISTIGNORE</code>
@@ -12697,9 +12756,11 @@ 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>
-<span id="Bash-History-Builtins"></span><div class="header">
+</div>
+<div class="section" id="Bash-History-Builtins">
+<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>
+Next: <a href="#History-Interaction" accesskey="n" rel="next">History Expansion</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>
<span id="Bash-History-Builtins-1"></span><h3 class="section">9.2 Bash History Builtins</h3>
<span id="index-history-builtins"></span>
@@ -12708,9 +12769,8 @@ Next: <a href="#History-Interaction" accesskey="n" rel="next">History Interactio
history list and history file.
</p>
<dl compact="compact">
-<dt><code>fc</code></dt>
-<dd><span id="index-fc"></span>
-<div class="example">
+<dt id='index-fc'><span><code>fc</code><a href='#index-fc' class='copiable-anchor'> &para;</a></span></dt>
+<dd><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>
</pre></div>
@@ -12751,9 +12811,8 @@ that typing &lsquo;<samp>r cc</samp>&rsquo; runs the last command beginning with
and typing &lsquo;<samp>r</samp>&rsquo; re-executes the last command (see <a href="#Aliases">Aliases</a>).
</p>
</dd>
-<dt><code>history</code></dt>
-<dd><span id="index-history"></span>
-<div class="example">
+<dt id='index-history'><span><code>history</code><a href='#index-history' class='copiable-anchor'> &para;</a></span></dt>
+<dd><div class="example">
<pre class="example">history [<var>n</var>]
history -c
history -d <var>offset</var>
@@ -12774,12 +12833,12 @@ and the history line.
<p>Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>Clear the history list. This may be combined
with the other options to replace the history list completely.
</p>
</dd>
-<dt><code>-d <var>offset</var></code></dt>
+<dt><span><code>-d <var>offset</var></code></span></dt>
<dd><p>Delete the history entry at position <var>offset</var>.
If <var>offset</var> is positive, it should be specified as it appears when
the history is displayed.
@@ -12789,55 +12848,63 @@ end of the history, and an index of &lsquo;<samp>-1</samp>&rsquo; refers to the
<code>history -d</code> command.
</p>
</dd>
-<dt><code>-d <var>start</var>-<var>end</var></code></dt>
-<dd><p>Delete the history entries between positions <var>start</var> and <var>end</var>,
-inclusive. Positive and negative values for <var>start</var> and <var>end</var>
+<dt><span><code>-d <var>start</var>-<var>end</var></code></span></dt>
+<dd><p>Delete the range of history entries between positions <var>start</var> and
+<var>end</var>, inclusive.
+Positive and negative values for <var>start</var> and <var>end</var>
are interpreted as described above.
</p>
</dd>
-<dt><code>-a</code></dt>
+<dt><span><code>-a</code></span></dt>
<dd><p>Append the new history lines to the history file.
These are history lines entered since the beginning of the current
Bash session, but not already appended to the history file.
</p>
</dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Append the history lines not already read from the history file
to the current history list. These are lines appended to the history
file since the beginning of the current Bash session.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>Read the history file and append its contents to
the history list.
</p>
</dd>
-<dt><code>-w</code></dt>
+<dt><span><code>-w</code></span></dt>
<dd><p>Write out the current history list to the history file.
</p>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>Perform history substitution on the <var>arg</var>s and display the result
on the standard output, without storing the results in the history list.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>The <var>arg</var>s are added to the end of
the history list as a single entry.
</p>
</dd>
</dl>
-<p>When any of the <samp>-w</samp>, <samp>-r</samp>, <samp>-a</samp>, or <samp>-n</samp> options is
-used, if <var>filename</var>
-is given, then it is used as the history file. If not, then
-the value of the <code>HISTFILE</code> variable is used.
+<p>If a <var>filename</var> argument is supplied
+when any of the <samp>-w</samp>, <samp>-r</samp>, <samp>-a</samp>, or <samp>-n</samp> options
+is used, Bash uses <var>filename</var> as the history file.
+If not, then the value of the <code>HISTFILE</code> variable is used.
+</p>
+<p>The return value is 0 unless an invalid option is encountered, an
+error occurs while reading or writing the history file, an invalid
+<var>offset</var> or range is supplied as an argument to <samp>-d</samp>, or the
+history expansion supplied as an argument to <samp>-p</samp> fails.
</p>
</dd>
</dl>
<hr>
-<span id="History-Interaction"></span><div class="header">
+</div>
+<div class="section" id="History-Interaction">
+<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>
@@ -12908,19 +12975,17 @@ as explained above (see <a href="#Bash-Variables">Bash Variables</a>). The shel
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.
-</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.
-</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.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Event-Designators" accesskey="1">Event Designators</a></li>
+<li><a href="#Word-Designators" accesskey="2">Word Designators</a></li>
+<li><a href="#Modifiers" accesskey="3">Modifiers</a></li>
+</ul>
<hr>
-<span id="Event-Designators"></span><div class="header">
+<div class="subsection" id="Event-Designators">
+<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>
+Next: <a href="#Word-Designators" accesskey="n" rel="next">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History 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>
<span id="Event-Designators-1"></span><h4 class="subsection">9.3.1 Event Designators</h4>
<span id="index-event-designators"></span>
@@ -12932,31 +12997,31 @@ position in the history list.
<span id="index-history-events"></span>
</p>
<dl compact="compact">
-<dt><code>!</code></dt>
+<dt><span><code>!</code></span></dt>
<dd><p>Start a history substitution, except when followed by a space, tab,
the end of the line, &lsquo;<samp>=</samp>&rsquo; or &lsquo;<samp>(</samp>&rsquo; (when the
<code>extglob</code> shell option is enabled using the <code>shopt</code> builtin).
</p>
</dd>
-<dt><code>!<var>n</var></code></dt>
+<dt><span><code>!<var>n</var></code></span></dt>
<dd><p>Refer to command line <var>n</var>.
</p>
</dd>
-<dt><code>!-<var>n</var></code></dt>
+<dt><span><code>!-<var>n</var></code></span></dt>
<dd><p>Refer to the command <var>n</var> lines back.
</p>
</dd>
-<dt><code>!!</code></dt>
+<dt><span><code>!!</code></span></dt>
<dd><p>Refer to the previous command. This is a synonym for &lsquo;<samp>!-1</samp>&rsquo;.
</p>
</dd>
-<dt><code>!<var>string</var></code></dt>
+<dt><span><code>!<var>string</var></code></span></dt>
<dd><p>Refer to the most recent command
preceding the current position in the history list
starting with <var>string</var>.
</p>
</dd>
-<dt><code>!?<var>string</var>[?]</code></dt>
+<dt><span><code>!?<var>string</var>[?]</code></span></dt>
<dd><p>Refer to the most recent command
preceding the current position in the history list
containing <var>string</var>.
@@ -12967,22 +13032,24 @@ 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>
+<dt><span><code>^<var>string1</var>^<var>string2</var>^</code></span></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>.
</p>
</dd>
-<dt><code>!#</code></dt>
+<dt><span><code>!#</code></span></dt>
<dd><p>The entire command line typed so far.
</p>
</dd>
</dl>
<hr>
-<span id="Word-Designators"></span><div class="header">
+</div>
+<div class="subsection" id="Word-Designators">
+<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>
+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 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>
<span id="Word-Designators-1"></span><h4 class="subsection">9.3.2 Word Designators</h4>
@@ -12996,17 +13063,17 @@ inserted into the current line separated by single spaces.
<p>For example,
</p>
<dl compact="compact">
-<dt><code>!!</code></dt>
+<dt><span><code>!!</code></span></dt>
<dd><p>designates the preceding command. When you type this, the preceding
command is repeated in toto.
</p>
</dd>
-<dt><code>!!:$</code></dt>
+<dt><span><code>!!:$</code></span></dt>
<dd><p>designates the last argument of the preceding command. This may be
shortened to <code>!$</code>.
</p>
</dd>
-<dt><code>!fi:2</code></dt>
+<dt><span><code>!fi:2</code></span></dt>
<dd><p>designates the second argument of the most recent command starting with
the letters <code>fi</code>.
</p></dd>
@@ -13015,42 +13082,42 @@ the letters <code>fi</code>.
<p>Here are the word designators:
</p>
<dl compact="compact">
-<dt><code>0 (zero)</code></dt>
+<dt><span><code>0 (zero)</code></span></dt>
<dd><p>The <code>0</code>th word. For many applications, this is the command word.
</p>
</dd>
-<dt><code><var>n</var></code></dt>
+<dt><span><code><var>n</var></code></span></dt>
<dd><p>The <var>n</var>th word.
</p>
</dd>
-<dt><code>^</code></dt>
+<dt><span><code>^</code></span></dt>
<dd><p>The first argument; that is, word 1.
</p>
</dd>
-<dt><code>$</code></dt>
+<dt><span><code>$</code></span></dt>
<dd><p>The last argument.
</p>
</dd>
-<dt><code>%</code></dt>
+<dt><span><code>%</code></span></dt>
<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>
+<dt><span><code><var>x</var>-<var>y</var></code></span></dt>
<dd><p>A range of words; &lsquo;<samp>-<var>y</var></samp>&rsquo; abbreviates &lsquo;<samp>0-<var>y</var></samp>&rsquo;.
</p>
</dd>
-<dt><code>*</code></dt>
+<dt><span><code>*</code></span></dt>
<dd><p>All of the words, except the <code>0</code>th. This is a synonym for &lsquo;<samp>1-$</samp>&rsquo;.
It is not an error to use &lsquo;<samp>*</samp>&rsquo; if there is just one word in the event;
the empty string is returned in that case.
</p>
</dd>
-<dt><code><var>x</var>*</code></dt>
+<dt><span><code><var>x</var>*</code></span></dt>
<dd><p>Abbreviates &lsquo;<samp><var>x</var>-$</samp>&rsquo;
</p>
</dd>
-<dt><code><var>x</var>-</code></dt>
+<dt><span><code><var>x</var>-</code></span></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>
@@ -13061,9 +13128,11 @@ If &lsquo;<samp>x</samp>&rsquo; is missing, it defaults to 0.
previous command is used as the event.
</p>
<hr>
-<span id="Modifiers"></span><div class="header">
+</div>
+<div class="subsection" id="Modifiers">
+<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>
+Previous: <a href="#Word-Designators" accesskey="p" rel="prev">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History 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>
<span id="Modifiers-1"></span><h4 class="subsection">9.3.3 Modifiers</h4>
@@ -13072,39 +13141,39 @@ 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>
+<dt><span><code>h</code></span></dt>
<dd><p>Remove a trailing pathname component, leaving only the head.
</p>
</dd>
-<dt><code>t</code></dt>
+<dt><span><code>t</code></span></dt>
<dd><p>Remove all leading pathname components, leaving the tail.
</p>
</dd>
-<dt><code>r</code></dt>
+<dt><span><code>r</code></span></dt>
<dd><p>Remove a trailing suffix of the form &lsquo;<samp>.<var>suffix</var></samp>&rsquo;, leaving
the basename.
</p>
</dd>
-<dt><code>e</code></dt>
+<dt><span><code>e</code></span></dt>
<dd><p>Remove all but the trailing suffix.
</p>
</dd>
-<dt><code>p</code></dt>
+<dt><span><code>p</code></span></dt>
<dd><p>Print the new command but do not execute it.
</p>
</dd>
-<dt><code>q</code></dt>
+<dt><span><code>q</code></span></dt>
<dd><p>Quote the substituted words, escaping further substitutions.
</p>
</dd>
-<dt><code>x</code></dt>
+<dt><span><code>x</code></span></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>
+<dt><span><code>s/<var>old</var>/<var>new</var>/</code></span></dt>
<dd><p>Substitute <var>new</var> for the first occurrence of <var>old</var> in the
event line.
Any character may be used as the delimiter in place of &lsquo;<samp>/</samp>&rsquo;.
@@ -13117,23 +13186,23 @@ 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.
+If <var>new</var> 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>
-<dt><code>&amp;</code></dt>
+<dt><span><code>&amp;</code></span></dt>
<dd><p>Repeat the previous substitution.
</p>
</dd>
-<dt><code>g</code></dt>
-<dt><code>a</code></dt>
+<dt><span><code>g</code></span></dt>
+<dt><span><code>a</code></span></dt>
<dd><p>Cause changes to be applied over the entire event line. Used in
conjunction with &lsquo;<samp>s</samp>&rsquo;, as in <code>gs/<var>old</var>/<var>new</var>/</code>,
or with &lsquo;<samp>&amp;</samp>&rsquo;.
</p>
</dd>
-<dt><code>G</code></dt>
+<dt><span><code>G</code></span></dt>
<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>
@@ -13141,9 +13210,13 @@ in the event.
</dl>
<hr>
-<span id="Installing-Bash"></span><div class="header">
+</div>
+</div>
+</div>
+<div class="chapter" id="Installing-Bash">
+<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>
+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">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="Installing-Bash-1"></span><h2 class="chapter">10 Installing Bash</h2>
@@ -13154,32 +13227,20 @@ non-Unix systems such as BeOS and Interix.
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.
-</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
- 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
- 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.
-</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.
-</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
- 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.
-</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
- building Bash.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Basic-Installation" accesskey="1">Basic Installation</a></li>
+<li><a href="#Compilers-and-Options" accesskey="2">Compilers and Options</a></li>
+<li><a href="#Compiling-For-Multiple-Architectures" accesskey="3">Compiling For Multiple Architectures</a></li>
+<li><a href="#Installation-Names" accesskey="4">Installation Names</a></li>
+<li><a href="#Specifying-the-System-Type" accesskey="5">Specifying the System Type</a></li>
+<li><a href="#Sharing-Defaults" accesskey="6">Sharing Defaults</a></li>
+<li><a href="#Operation-Controls" accesskey="7">Operation Controls</a></li>
+<li><a href="#Optional-Features" accesskey="8">Optional Features</a></li>
+</ul>
<hr>
-<span id="Basic-Installation"></span><div class="header">
+<div class="section" id="Basic-Installation">
+<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>
@@ -13210,7 +13271,14 @@ reporting script.
</li><li> Optionally, type &lsquo;<samp>make tests</samp>&rsquo; to run the Bash test suite.
</li><li> Type &lsquo;<samp>make install</samp>&rsquo; to install <code>bash</code> and <code>bashbug</code>.
-This will also install the manual pages and Info file.
+This will also install the manual pages and Info file, message translation
+files, some supplemental documentation, a number of example loadable
+builtin commands, and a set of header files for developing loadable
+builtins.
+You may need additional privileges to install <code>bash</code> to your
+desired destination, so &lsquo;<samp>sudo make install</samp>&rsquo; might be required.
+More information about controlling the locations where <code>bash</code> and
+other files are installed is below (see <a href="#Installation-Names">Installation Names</a>).
</li></ol>
@@ -13218,7 +13286,7 @@ This will also install the manual pages and Info file.
values for various system-dependent variables used during
compilation. It uses those values to create a <samp>Makefile</samp> in
each directory of the package (the top directory, the
-<samp>builtins</samp>, <samp>doc</samp>, and <samp>support</samp> directories,
+<samp>builtins</samp>, <samp>doc</samp>, <samp>po</samp>, and <samp>support</samp> directories,
each directory under <samp>lib</samp>, and several others). It also creates a
<samp>config.h</samp> file containing system-dependent definitions.
Finally, it creates a shell script named <code>config.status</code> that you
@@ -13262,10 +13330,10 @@ to do them, and mail diffs or instructions to
considered for the next release.
</p>
<p>The file <samp>configure.ac</samp> is used to create <code>configure</code>
-by a program called Autoconf. You only need
-<samp>configure.ac</samp> if you want to change it or regenerate
-<code>configure</code> using a newer version of Autoconf. If
-you do this, make sure you are using Autoconf version 2.50 or
+by a program called Autoconf.
+You only need <samp>configure.ac</samp> if you want to change it or regenerate
+<code>configure</code> using a newer version of Autoconf.
+If you do this, make sure you are using Autoconf version 2.69 or
newer.
</p>
<p>You can remove the program binaries and object files from the
@@ -13274,7 +13342,9 @@ 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>
-<span id="Compilers-and-Options"></span><div class="header">
+</div>
+<div class="section" id="Compilers-and-Options">
+<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>
@@ -13300,7 +13370,9 @@ can do that on the command line like this:
is available.
</p>
<hr>
-<span id="Compiling-For-Multiple-Architectures"></span><div class="header">
+</div>
+<div class="section" id="Compiling-For-Multiple-Architectures">
+<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>
@@ -13319,7 +13391,7 @@ supply the <samp>--srcdir=PATH</samp> argument to tell <code>configure</code> wh
source files are. <code>configure</code> automatically checks for the
source code in the directory that <code>configure</code> is in and in &lsquo;..&rsquo;.
</p>
-<p>If you have to use a <code>make</code> that does not supports the <code>VPATH</code>
+<p>If you have to use a <code>make</code> that does not support the <code>VPATH</code>
variable, you can compile Bash for one architecture at a
time in the source code directory. After you have installed
Bash for one architecture, use &lsquo;<samp>make distclean</samp>&rsquo; before
@@ -13340,35 +13412,69 @@ Bash for at least one architecture before you can create build
directories for other architectures.
</p>
<hr>
-<span id="Installation-Names"></span><div class="header">
+</div>
+<div class="section" id="Installation-Names">
+<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>
<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
-specify an installation prefix other than <samp>/usr/local</samp> by
+<samp>/usr/local/bin</samp>, <samp>/usr/local/man</samp>, etc.;
+that is, the <em>installation prefix</em> defaults to <samp>/usr/local</samp>.
+You can specify an installation prefix other than <samp>/usr/local</samp> by
giving <code>configure</code> the option <samp>--prefix=<var>PATH</var></samp>,
-or by specifying a value for the <code>DESTDIR</code> &lsquo;<samp>make</samp>&rsquo;
-variable when running &lsquo;<samp>make install</samp>&rsquo;.
+or by specifying a value for the <code>prefix</code> &lsquo;<samp>make</samp>&rsquo;
+variable when running &lsquo;<samp>make install</samp>&rsquo;
+(e.g., &lsquo;<samp>make install prefix=<var>PATH</var></samp>&rsquo;).
+The <code>prefix</code> variable provides a default for <code>exec_prefix</code> and
+other variables used when installing bash.
</p>
<p>You can specify separate installation prefixes for
architecture-specific files and architecture-independent files.
If you give <code>configure</code> the option
<samp>--exec-prefix=<var>PATH</var></samp>, &lsquo;<samp>make install</samp>&rsquo; will use
<var>PATH</var> as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
+Documentation and other data files will still use the regular prefix.
+</p>
+<p>If you would like to change the installation locations for a single run,
+you can specify these variables as arguments to <code>make</code>:
+&lsquo;<samp>make install exec_prefix=/</samp>&rsquo; will install <code>bash</code> and
+<code>bashbug</code> into <samp>/bin</samp> instead of the default <samp>/usr/local/bin</samp>.
+</p>
+<p>If you want to see the files bash will install and where it will install
+them without changing anything on your system, specify the variable
+<code>DESTDIR</code> as an argument to <code>make</code>. Its value should be the
+absolute directory path you&rsquo;d like to use as the root of your sample
+installation tree. For example,
+</p>
+<div class="example">
+<pre class="example">mkdir /fs1/bash-install
+make install DESTDIR=/fs1/bash-install
+</pre></div>
+
+<p>will install <code>bash</code> into <samp>/fs1/bash-install/usr/local/bin/bash</samp>,
+the documentation into directories within
+<samp>/fs1/bash-install/usr/local/share</samp>, the example loadable builtins into
+<samp>/fs1/bash-install/usr/local/lib/bash</samp>, and so on.
+You can use the usual <code>exec_prefix</code> and <code>prefix</code> variables to alter
+the directory paths beneath the value of <code>DESTDIR</code>.
+</p>
+<p>The GNU Makefile standards provide a more complete description of these
+variables and their effects.
</p>
<hr>
-<span id="Specifying-the-System-Type"></span><div class="header">
+</div>
+<div class="section" id="Specifying-the-System-Type">
+<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>
<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
+automatically, but needs to determine by the type of host Bash
will run on. Usually <code>configure</code> can figure that
out, but if it prints a message saying it can not guess the host
type, give it the <samp>--host=TYPE</samp> option. &lsquo;<samp>TYPE</samp>&rsquo; can
@@ -13380,7 +13486,9 @@ or a canonical name with three fields: &lsquo;<samp>CPU-COMPANY-SYSTEM</samp>&rs
values of each field.
</p>
<hr>
-<span id="Sharing-Defaults"></span><div class="header">
+</div>
+<div class="section" id="Sharing-Defaults">
+<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>
@@ -13397,7 +13505,9 @@ script. A warning: the Bash <code>configure</code> looks for a site script,
but not all <code>configure</code> scripts do.
</p>
<hr>
-<span id="Operation-Controls"></span><div class="header">
+</div>
+<div class="section" id="Operation-Controls">
+<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>
@@ -13407,29 +13517,29 @@ Next: <a href="#Optional-Features" accesskey="n" rel="next">Optional Features</a
operates.
</p>
<dl compact="compact">
-<dt><code>--cache-file=<var>file</var></code></dt>
+<dt><span><code>--cache-file=<var>file</var></code></span></dt>
<dd><p>Use and save the results of the tests in
<var>file</var> instead of <samp>./config.cache</samp>. Set <var>file</var> to
<samp>/dev/null</samp> to disable caching, for debugging
<code>configure</code>.
</p>
</dd>
-<dt><code>--help</code></dt>
+<dt><span><code>--help</code></span></dt>
<dd><p>Print a summary of the options to <code>configure</code>, and exit.
</p>
</dd>
-<dt><code>--quiet</code></dt>
-<dt><code>--silent</code></dt>
-<dt><code>-q</code></dt>
+<dt><span><code>--quiet</code></span></dt>
+<dt><span><code>--silent</code></span></dt>
+<dt><span><code>-q</code></span></dt>
<dd><p>Do not print messages saying which checks are being made.
</p>
</dd>
-<dt><code>--srcdir=<var>dir</var></code></dt>
+<dt><span><code>--srcdir=<var>dir</var></code></span></dt>
<dd><p>Look for the Bash source code in directory <var>dir</var>. Usually
<code>configure</code> can determine that directory automatically.
</p>
</dd>
-<dt><code>--version</code></dt>
+<dt><span><code>--version</code></span></dt>
<dd><p>Print the version of Autoconf used to generate the <code>configure</code>
script, and exit.
</p></dd>
@@ -13439,7 +13549,9 @@ script, and exit.
options. &lsquo;<samp>configure --help</samp>&rsquo; prints the complete list.
</p>
<hr>
-<span id="Optional-Features"></span><div class="header">
+</div>
+<div class="section" id="Optional-Features">
+<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>
@@ -13457,11 +13569,11 @@ that is enabled by default, use <samp>--disable-<var>feature</var></samp>.
<samp>--with-</samp> options that the Bash <code>configure</code> recognizes.
</p>
<dl compact="compact">
-<dt><code>--with-afs</code></dt>
+<dt><span><code>--with-afs</code></span></dt>
<dd><p>Define if you are using the Andrew File System from Transarc.
</p>
</dd>
-<dt><code>--with-bash-malloc</code></dt>
+<dt><span><code>--with-bash-malloc</code></span></dt>
<dd><p>Use the Bash version of
<code>malloc</code> in the directory <samp>lib/malloc</samp>. This is not the same
<code>malloc</code> that appears in <small>GNU</small> libc, but an older version
@@ -13473,17 +13585,17 @@ which this should be turned off, and <code>configure</code> disables this
option automatically for a number of systems.
</p>
</dd>
-<dt><code>--with-curses</code></dt>
+<dt><span><code>--with-curses</code></span></dt>
<dd><p>Use the curses library instead of the termcap library. This should
be supplied if your system has an inadequate or incomplete termcap
database.
</p>
</dd>
-<dt><code>--with-gnu-malloc</code></dt>
+<dt><span><code>--with-gnu-malloc</code></span></dt>
<dd><p>A synonym for <code>--with-bash-malloc</code>.
</p>
</dd>
-<dt><code>--with-installed-readline[=<var>PREFIX</var>]</code></dt>
+<dt><span><code>--with-installed-readline[=<var>PREFIX</var>]</code></span></dt>
<dd><p>Define this to make Bash link with a locally-installed version of Readline
rather than the version in <samp>lib/readline</samp>. This works only with
Readline 5.0 and later versions. If <var>PREFIX</var> is <code>yes</code> or not
@@ -13500,255 +13612,276 @@ the installed version of Readline in subdirectories of that directory
<var>PREFIX</var>/<code>lib</code>).
</p>
</dd>
-<dt><code>--with-purify</code></dt>
-<dd><p>Define this to use the Purify memory allocation checker from Rational
-Software.
+<dt><span><code>--with-libintl-prefix[=<var>PREFIX</var>]</code></span></dt>
+<dd><p>Define this to make Bash link with a locally-installed version of the
+libintl library instead of the version in <samp>lib/intl</samp>.
+</p>
+</dd>
+<dt><span><code>--with-libiconv-prefix[=<var>PREFIX</var>]</code></span></dt>
+<dd><p>Define this to make Bash look for libiconv in <var>PREFIX</var> instead of the
+standard system locations. There is no version included with Bash.
</p>
</dd>
-<dt><code>--enable-minimal-config</code></dt>
+<dt><span><code>--enable-minimal-config</code></span></dt>
<dd><p>This produces a shell with minimal features, close to the historical
Bourne shell.
</p></dd>
</dl>
<p>There are several <samp>--enable-</samp> options that alter how Bash is
-compiled and linked, rather than changing run-time features.
+compiled, linked, and installed, rather than changing run-time features.
</p>
<dl compact="compact">
-<dt><code>--enable-largefile</code></dt>
+<dt><span><code>--enable-largefile</code></span></dt>
<dd><p>Enable support for <a href="http://www.unix.org/version2/whatsnew/lfs20mar.html">large files</a> if the operating system requires special compiler options
to build programs which can access large files. This is enabled by
default, if the operating system provides large file support.
</p>
</dd>
-<dt><code>--enable-profiling</code></dt>
+<dt><span><code>--enable-profiling</code></span></dt>
<dd><p>This builds a Bash binary that produces profiling information to be
processed by <code>gprof</code> each time it is executed.
</p>
</dd>
-<dt><code>--enable-static-link</code></dt>
+<dt><span><code>--enable-separate-helpfiles</code></span></dt>
+<dd><p>Use external files for the documentation displayed by the <code>help</code> builtin
+instead of storing the text internally.
+</p>
+</dd>
+<dt><span><code>--enable-static-link</code></span></dt>
<dd><p>This causes Bash to be linked statically, if <code>gcc</code> is being used.
This could be used to build a version to use as root&rsquo;s shell.
-</p></dd>
+</p>
+</dd>
</dl>
<p>The &lsquo;<samp>minimal-config</samp>&rsquo; option can be used to disable all of
the following options, but it is processed first, so individual
options may be enabled using &lsquo;<samp>enable-<var>feature</var></samp>&rsquo;.
</p>
-<p>All of the following options except for &lsquo;<samp>disabled-builtins</samp>&rsquo;,
-&lsquo;<samp>direxpand-default</samp>&rsquo;, and
+<p>All of the following options except for
+&lsquo;<samp>alt-array-implementation</samp>&rsquo;,
+&lsquo;<samp>disabled-builtins</samp>&rsquo;,
+&lsquo;<samp>direxpand-default</samp>&rsquo;,
+&lsquo;<samp>strict-posix-default</samp>&rsquo;,
+and
&lsquo;<samp>xpg-echo-default</samp>&rsquo; are
enabled by default, unless the operating system does not provide the
necessary support.
</p>
<dl compact="compact">
-<dt><code>--enable-alias</code></dt>
+<dt><span><code>--enable-alias</code></span></dt>
<dd><p>Allow alias expansion and include the <code>alias</code> and <code>unalias</code>
builtins (see <a href="#Aliases">Aliases</a>).
</p>
</dd>
-<dt><code>--enable-arith-for-command</code></dt>
+<dt><span><code>--enable-alt-array-implementation</code></span></dt>
+<dd><p>This builds bash using an alternate implementation of arrays
+(see <a href="#Arrays">Arrays</a>) that provides faster access at the expense of using
+more memory (sometimes many times more, depending on how sparse an array is).
+</p>
+</dd>
+<dt><span><code>--enable-arith-for-command</code></span></dt>
<dd><p>Include support for the alternate form of the <code>for</code> command
that behaves like the C language <code>for</code> statement
(see <a href="#Looping-Constructs">Looping Constructs</a>).
</p>
</dd>
-<dt><code>--enable-array-variables</code></dt>
+<dt><span><code>--enable-array-variables</code></span></dt>
<dd><p>Include support for one-dimensional array shell variables
(see <a href="#Arrays">Arrays</a>).
</p>
</dd>
-<dt><code>--enable-bang-history</code></dt>
+<dt><span><code>--enable-bang-history</code></span></dt>
<dd><p>Include support for <code>csh</code>-like history substitution
-(see <a href="#History-Interaction">History Interaction</a>).
+(see <a href="#History-Interaction">History Expansion</a>).
</p>
</dd>
-<dt><code>--enable-brace-expansion</code></dt>
+<dt><span><code>--enable-brace-expansion</code></span></dt>
<dd><p>Include <code>csh</code>-like brace expansion
( <code>b{a,b}c</code> &rarr; <code>bac bbc</code> ).
See <a href="#Brace-Expansion">Brace Expansion</a>, for a complete description.
</p>
</dd>
-<dt><code>--enable-casemod-attributes</code></dt>
+<dt><span><code>--enable-casemod-attributes</code></span></dt>
<dd><p>Include support for case-modifying attributes in the <code>declare</code> builtin
-and assignment statements. Variables with the <var>uppercase</var> attribute,
+and assignment statements. Variables with the <code>uppercase</code> attribute,
for example, will have their values converted to uppercase upon assignment.
</p>
</dd>
-<dt><code>--enable-casemod-expansion</code></dt>
+<dt><span><code>--enable-casemod-expansion</code></span></dt>
<dd><p>Include support for case-modifying word expansions.
</p>
</dd>
-<dt><code>--enable-command-timing</code></dt>
+<dt><span><code>--enable-command-timing</code></span></dt>
<dd><p>Include support for recognizing <code>time</code> as a reserved word and for
displaying timing statistics for the pipeline following <code>time</code>
(see <a href="#Pipelines">Pipelines</a>).
This allows pipelines as well as shell builtins and functions to be timed.
</p>
</dd>
-<dt><code>--enable-cond-command</code></dt>
+<dt><span><code>--enable-cond-command</code></span></dt>
<dd><p>Include support for the <code>[[</code> conditional command.
(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
</p>
</dd>
-<dt><code>--enable-cond-regexp</code></dt>
+<dt><span><code>--enable-cond-regexp</code></span></dt>
<dd><p>Include support for matching <small>POSIX</small> regular expressions using the
&lsquo;<samp>=~</samp>&rsquo; binary operator in the <code>[[</code> conditional command.
(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
</p>
</dd>
-<dt><code>--enable-coprocesses</code></dt>
+<dt><span><code>--enable-coprocesses</code></span></dt>
<dd><p>Include support for coprocesses and the <code>coproc</code> reserved word
(see <a href="#Pipelines">Pipelines</a>).
</p>
</dd>
-<dt><code>--enable-debugger</code></dt>
+<dt><span><code>--enable-debugger</code></span></dt>
<dd><p>Include support for the bash debugger (distributed separately).
</p>
</dd>
-<dt><code>--enable-dev-fd-stat-broken</code></dt>
+<dt><span><code>--enable-dev-fd-stat-broken</code></span></dt>
<dd><p>If calling <code>stat</code> on /dev/fd/<var>N</var> returns different results than
calling <code>fstat</code> on file descriptor <var>N</var>, supply this option to
enable a workaround.
This has implications for conditional commands that test file attributes.
</p>
</dd>
-<dt><code>--enable-direxpand-default</code></dt>
+<dt><span><code>--enable-direxpand-default</code></span></dt>
<dd><p>Cause the <code>direxpand</code> shell option (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
to be enabled by default when the shell starts.
It is normally disabled by default.
</p>
</dd>
-<dt><code>--enable-directory-stack</code></dt>
+<dt><span><code>--enable-directory-stack</code></span></dt>
<dd><p>Include support for a <code>csh</code>-like directory stack and the
<code>pushd</code>, <code>popd</code>, and <code>dirs</code> builtins
(see <a href="#The-Directory-Stack">The Directory Stack</a>).
</p>
</dd>
-<dt><code>--enable-disabled-builtins</code></dt>
+<dt><span><code>--enable-disabled-builtins</code></span></dt>
<dd><p>Allow builtin commands to be invoked via &lsquo;<samp>builtin xxx</samp>&rsquo;
even after <code>xxx</code> has been disabled using &lsquo;<samp>enable -n xxx</samp>&rsquo;.
-See <a href="#Bash-Builtins">Bash Builtins</a>, for details of the <code>builtin</code> and
+See <a href="#Bash-Builtins">Bash Builtin Commands</a>, for details of the <code>builtin</code> and
<code>enable</code> builtin commands.
</p>
</dd>
-<dt><code>--enable-dparen-arithmetic</code></dt>
+<dt><span><code>--enable-dparen-arithmetic</code></span></dt>
<dd><p>Include support for the <code>((&hellip;))</code> command
(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
</p>
</dd>
-<dt><code>--enable-extended-glob</code></dt>
+<dt><span><code>--enable-extended-glob</code></span></dt>
<dd><p>Include support for the extended pattern matching features described
above under <a href="#Pattern-Matching">Pattern Matching</a>.
</p>
</dd>
-<dt><code>--enable-extended-glob-default</code></dt>
-<dd><p>Set the default value of the <var>extglob</var> shell option described
+<dt><span><code>--enable-extended-glob-default</code></span></dt>
+<dd><p>Set the default value of the <code>extglob</code> shell option described
above under <a href="#The-Shopt-Builtin">The Shopt Builtin</a> to be enabled.
</p>
</dd>
-<dt><code>--enable-function-import</code></dt>
+<dt><span><code>--enable-function-import</code></span></dt>
<dd><p>Include support for importing function definitions exported by another
instance of the shell from the environment. This option is enabled by
default.
</p>
</dd>
-<dt><code>--enable-glob-asciirange-default</code></dt>
-<dd><p>Set the default value of the <var>globasciiranges</var> shell option described
+<dt><span><code>--enable-glob-asciirange-default</code></span></dt>
+<dd><p>Set the default value of the <code>globasciiranges</code> shell option described
above under <a href="#The-Shopt-Builtin">The Shopt Builtin</a> to be enabled.
This controls the behavior of character ranges when used in pattern matching
bracket expressions.
</p>
</dd>
-<dt><code>--enable-help-builtin</code></dt>
+<dt><span><code>--enable-help-builtin</code></span></dt>
<dd><p>Include the <code>help</code> builtin, which displays help on shell builtins and
-variables (see <a href="#Bash-Builtins">Bash Builtins</a>).
+variables (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
</dd>
-<dt><code>--enable-history</code></dt>
+<dt><span><code>--enable-history</code></span></dt>
<dd><p>Include command history and the <code>fc</code> and <code>history</code>
builtin commands (see <a href="#Bash-History-Facilities">Bash History Facilities</a>).
</p>
</dd>
-<dt><code>--enable-job-control</code></dt>
+<dt><span><code>--enable-job-control</code></span></dt>
<dd><p>This enables the job control features (see <a href="#Job-Control">Job Control</a>),
if the operating system supports them.
</p>
</dd>
-<dt><code>--enable-multibyte</code></dt>
+<dt><span><code>--enable-multibyte</code></span></dt>
<dd><p>This enables support for multibyte characters if the operating
system provides the necessary support.
</p>
</dd>
-<dt><code>--enable-net-redirections</code></dt>
+<dt><span><code>--enable-net-redirections</code></span></dt>
<dd><p>This enables the special handling of filenames of the form
<code>/dev/tcp/<var>host</var>/<var>port</var></code> and
<code>/dev/udp/<var>host</var>/<var>port</var></code>
when used in redirections (see <a href="#Redirections">Redirections</a>).
</p>
</dd>
-<dt><code>--enable-process-substitution</code></dt>
+<dt><span><code>--enable-process-substitution</code></span></dt>
<dd><p>This enables process substitution (see <a href="#Process-Substitution">Process Substitution</a>) if
the operating system provides the necessary support.
</p>
</dd>
-<dt><code>--enable-progcomp</code></dt>
+<dt><span><code>--enable-progcomp</code></span></dt>
<dd><p>Enable the programmable completion facilities
(see <a href="#Programmable-Completion">Programmable Completion</a>).
If Readline is not enabled, this option has no effect.
</p>
</dd>
-<dt><code>--enable-prompt-string-decoding</code></dt>
+<dt><span><code>--enable-prompt-string-decoding</code></span></dt>
<dd><p>Turn on the interpretation of a number of backslash-escaped characters
in the <code>$PS0</code>, <code>$PS1</code>, <code>$PS2</code>, and <code>$PS4</code> prompt
strings. See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for a complete list of prompt
string escape sequences.
</p>
</dd>
-<dt><code>--enable-readline</code></dt>
+<dt><span><code>--enable-readline</code></span></dt>
<dd><p>Include support for command-line editing and history with the Bash
version of the Readline library (see <a href="#Command-Line-Editing">Command Line Editing</a>).
</p>
</dd>
-<dt><code>--enable-restricted</code></dt>
+<dt><span><code>--enable-restricted</code></span></dt>
<dd><p>Include support for a <em>restricted shell</em>. If this is enabled, Bash,
when called as <code>rbash</code>, enters a restricted mode. See
<a href="#The-Restricted-Shell">The Restricted Shell</a>, for a description of restricted mode.
</p>
</dd>
-<dt><code>--enable-select</code></dt>
+<dt><span><code>--enable-select</code></span></dt>
<dd><p>Include the <code>select</code> compound command, which allows the generation of
simple menus (see <a href="#Conditional-Constructs">Conditional Constructs</a>).
</p>
</dd>
-<dt><code>--enable-separate-helpfiles</code></dt>
-<dd><p>Use external files for the documentation displayed by the <code>help</code> builtin
-instead of storing the text internally.
-</p>
-</dd>
-<dt><code>--enable-single-help-strings</code></dt>
+<dt><span><code>--enable-single-help-strings</code></span></dt>
<dd><p>Store the text displayed by the <code>help</code> builtin as a single string for
each help topic. This aids in translating the text to different languages.
You may need to disable this if your compiler cannot handle very long string
literals.
</p>
</dd>
-<dt><code>--enable-strict-posix-default</code></dt>
+<dt><span><code>--enable-strict-posix-default</code></span></dt>
<dd><p>Make Bash <small>POSIX</small>-conformant by default (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
</p>
</dd>
-<dt><code>--enable-usg-echo-default</code></dt>
+<dt><span><code>--enable-translatable-strings</code></span></dt>
+<dd><p>Enable support for <code>$&quot;<var>string</var>&quot;</code> translatable strings
+(see <a href="#Locale-Translation">Locale-Specific Translation</a>).
+</p>
+</dd>
+<dt><span><code>--enable-usg-echo-default</code></span></dt>
<dd><p>A synonym for <code>--enable-xpg-echo-default</code>.
</p>
</dd>
-<dt><code>--enable-xpg-echo-default</code></dt>
+<dt><span><code>--enable-xpg-echo-default</code></span></dt>
<dd><p>Make the <code>echo</code> builtin expand backslash-escaped characters by default,
without requiring the <samp>-e</samp> option.
This sets the default value of the <code>xpg_echo</code> shell option to <code>on</code>,
which makes the Bash <code>echo</code> behave more like the version specified in
the Single Unix Specification, version 3.
-See <a href="#Bash-Builtins">Bash Builtins</a>, for a description of the escape sequences that
+See <a href="#Bash-Builtins">Bash Builtin Commands</a>, for a description of the escape sequences that
<code>echo</code> recognizes.
</p></dd>
</dl>
@@ -13762,9 +13895,12 @@ Read the comments associated with each definition for more
information about its effect.
</p>
<hr>
-<span id="Reporting-Bugs"></span><div class="header">
+</div>
+</div>
+<div class="appendix" id="Reporting-Bugs">
+<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>
+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">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="Reporting-Bugs-1"></span><h2 class="appendix">Appendix A Reporting Bugs</h2>
@@ -13773,7 +13909,8 @@ But first, you should
make sure that it really is a bug, and that it appears in the latest
version of Bash.
The latest version of Bash is always available for FTP from
-<a href="ftp://ftp.gnu.org/pub/gnu/bash/">ftp://ftp.gnu.org/pub/gnu/bash/</a>.
+<a href="ftp://ftp.gnu.org/pub/gnu/bash/">ftp://ftp.gnu.org/pub/gnu/bash/</a> and from
+<a href="http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz">http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz</a>.
</p>
<p>Once you have determined that a bug actually exists, use the
<code>bashbug</code> command to submit a bug report.
@@ -13799,9 +13936,11 @@ the template it provides for filing a bug report.
<a href="mailto:bug-bash@gnu.org">bug-bash@gnu.org</a>.
</p>
<hr>
-<span id="Major-Differences-From-The-Bourne-Shell"></span><div class="header">
+</div>
+<div class="appendix" id="Major-Differences-From-The-Bourne-Shell">
+<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>
+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">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="Major-Differences-From-The-Bourne-Shell-1"></span><h2 class="appendix">Appendix B Major Differences From The Bourne Shell</h2>
@@ -13836,7 +13975,7 @@ The Bash history list maintains timestamp information and uses the
value of the <code>HISTTIMEFORMAT</code> variable to display it.
</li><li> Bash implements <code>csh</code>-like history expansion
-(see <a href="#History-Interaction">History Interaction</a>).
+(see <a href="#History-Interaction">History Expansion</a>).
</li><li> Bash has one-dimensional array variables (see <a href="#Arrays">Arrays</a>), and the
appropriate variable expansions and assignment syntax to use them.
@@ -13851,7 +13990,7 @@ is supported (see <a href="#ANSI_002dC-Quoting">ANSI-C Quoting</a>).
locale-specific translation of the characters between the double
quotes. The <samp>-D</samp>, <samp>--dump-strings</samp>, and <samp>--dump-po-strings</samp>
invocation options list the translatable strings found in a script
-(see <a href="#Locale-Translation">Locale Translation</a>).
+(see <a href="#Locale-Translation">Locale-Specific Translation</a>).
</li><li> Bash implements the <code>!</code> keyword to negate the return value of
a pipeline (see <a href="#Pipelines">Pipelines</a>).
@@ -13907,15 +14046,15 @@ which expands to the substring of <code>var</code>&rsquo;s value of length
(see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
</li><li> The expansion
-<code>${var/[/]</code><var>pattern</var><code>[/</code><var>replacement</var><code>]}</code>,
+<code>${<var>var</var>/[/]</code><var>pattern</var><code>[/</code><var>replacement</var><code>]}</code>,
which matches <var>pattern</var> and replaces it with <var>replacement</var> in
-the value of <code>var</code>, is available (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
+the value of <var>var</var>, is available (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
</li><li> The expansion <code>${!<var>prefix</var>*}</code> expansion, which expands to
the names of all shell variables whose names begin with <var>prefix</var>,
is available (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-</li><li> Bash has <var>indirect</var> variable expansion using <code>${!word}</code>
+</li><li> Bash has indirect variable expansion using <code>${!word}</code>
(see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
</li><li> Bash can expand positional parameters beyond <code>$9</code> using
@@ -13944,8 +14083,8 @@ to negate the set of characters between the brackets.
The Bourne shell uses only &lsquo;<samp>!</samp>&rsquo;.
</li><li> Bash implements the full set of <small>POSIX</small> filename expansion operators,
-including <var>character classes</var>, <var>equivalence classes</var>, and
-<var>collating symbols</var> (see <a href="#Filename-Expansion">Filename Expansion</a>).
+including character classes, equivalence classes, and
+collating symbols (see <a href="#Filename-Expansion">Filename Expansion</a>).
</li><li> Bash implements extended pattern matching features when the <code>extglob</code>
shell option is enabled (see <a href="#Pattern-Matching">Pattern Matching</a>).
@@ -13955,7 +14094,7 @@ shell option is enabled (see <a href="#Pattern-Matching">Pattern Matching</a>).
</li><li> Bash functions are permitted to have local variables using the
<code>local</code> builtin, and thus useful recursive functions may be written
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> Variable assignments preceding commands affect only that command, even
builtins and functions (see <a href="#Environment">Environment</a>).
@@ -13993,13 +14132,13 @@ physical modes.
</li><li> Bash allows a function to override a builtin with the same name, and provides
access to that builtin&rsquo;s functionality within the function via the
-<code>builtin</code> and <code>command</code> builtins (see <a href="#Bash-Builtins">Bash Builtins</a>).
+<code>builtin</code> and <code>command</code> builtins (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> The <code>command</code> builtin allows selective disabling of functions
-when command lookup is performed (see <a href="#Bash-Builtins">Bash Builtins</a>).
+when command lookup is performed (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> Individual builtins may be enabled or disabled using the <code>enable</code>
-builtin (see <a href="#Bash-Builtins">Bash Builtins</a>).
+builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> The Bash <code>exec</code> builtin takes additional options that allow users
to control the contents of the environment passed to the executed
@@ -14022,12 +14161,12 @@ searching the <code>$PATH</code>, using &lsquo;<samp>hash -p</samp>&rsquo;
(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
</li><li> Bash includes a <code>help</code> builtin for quick reference to shell
-facilities (see <a href="#Bash-Builtins">Bash Builtins</a>).
+facilities (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> The <code>printf</code> builtin is available to display formatted output
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
-</li><li> The Bash <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>)
+</li><li> The Bash <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>)
will read a line ending in &lsquo;<samp>\</samp>&rsquo; with
the <samp>-r</samp> option, and will use the <code>REPLY</code> variable as a
default if no non-option arguments are supplied.
@@ -14063,7 +14202,7 @@ which specifies the behavior based on the number of arguments.
</li><li> Bash includes the <code>caller</code> builtin, which displays the context of
any active subroutine call (a shell function or a script executed with
-the <code>.</code> or <code>source</code> builtins). This supports the bash
+the <code>.</code> or <code>source</code> builtins). This supports the Bash
debugger.
</li><li> The <code>trap</code> builtin (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>) allows a
@@ -14088,7 +14227,7 @@ The <code>ERR</code> trap is not inherited by shell functions unless the
<p>The <code>trap</code> builtin (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>) allows a
<code>RETURN</code> pseudo-signal specification, similar to
<code>EXIT</code> and <code>DEBUG</code>.
-Commands specified with an <code>RETURN</code> trap are executed before
+Commands specified with a <code>RETURN</code> trap are executed before
execution resumes after a shell function or a shell script executed with
<code>.</code> or <code>source</code> returns.
The <code>RETURN</code> trap is not inherited by shell functions unless the
@@ -14096,7 +14235,7 @@ function has been given the <code>trace</code> attribute or the
<code>functrace</code> option has been enabled using the <code>shopt</code> builtin.
</p>
</li><li> The Bash <code>type</code> builtin is more extensive and gives more information
-about the names it finds (see <a href="#Bash-Builtins">Bash Builtins</a>).
+about the names it finds (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> The Bash <code>umask</code> builtin permits a <samp>-p</samp> option to cause
the output to be displayed in the form of a <code>umask</code> command
@@ -14137,7 +14276,11 @@ shell scripts.
<p>More features unique to Bash may be found in <a href="#Bash-Features">Bash Features</a>.
</p>
-<span id="Implementation-Differences-From-The-SVR4_002e2-Shell"></span><h3 class="appendixsec">B.1 Implementation Differences From The SVR4.2 Shell</h3>
+<ul class="section-toc">
+<li><a href="#Implementation-Differences-From-The-SVR4_002e2-Shell" accesskey="1">Implementation Differences From The SVR4.2 Shell</a></li>
+</ul>
+<div class="appendixsec" id="Implementation-Differences-From-The-SVR4_002e2-Shell">
+<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:
@@ -14185,9 +14328,12 @@ only for certain failures, as enumerated in the <small>POSIX</small> standard.
</li></ul>
<hr>
-<span id="GNU-Free-Documentation-License"></span><div class="header">
+</div>
+</div>
+<div class="appendix" id="GNU-Free-Documentation-License">
+<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>
+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">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="GNU-Free-Documentation-License-1"></span><h2 class="appendix">Appendix C GNU Free Documentation License</h2>
@@ -14661,31 +14807,27 @@ to permit their use in free software.
<hr>
-<span id="Indexes"></span><div class="header">
+</div>
+<div class="appendix" id="Indexes">
+<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>
+Previous: <a href="#GNU-Free-Documentation-License" accesskey="p" rel="prev">GNU Free Documentation License</a>, Up: <a href="#Top" 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="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" 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" 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" 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" 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" 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>
+<ul class="section-toc">
+<li><a href="#Builtin-Index" accesskey="1">Index of Shell Builtin Commands</a></li>
+<li><a href="#Reserved-Word-Index" accesskey="2">Index of Shell Reserved Words</a></li>
+<li><a href="#Variable-Index" accesskey="3">Parameter and Variable Index</a></li>
+<li><a href="#Function-Index" accesskey="4">Function Index</a></li>
+<li><a href="#Concept-Index" accesskey="5">Concept Index</a></li>
+</ul>
<hr>
-<span id="Builtin-Index"></span><div class="header">
+<div class="appendixsec" id="Builtin-Index">
+<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>
+Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Index of Shell Reserved Words</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>
<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>
@@ -14883,9 +15025,11 @@ Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Reserved Word Inde
</td></tr></table>
<hr>
-<span id="Reserved-Word-Index"></span><div class="header">
+</div>
+<div class="appendixsec" id="Reserved-Word-Index">
+<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>
+Next: <a href="#Variable-Index" accesskey="n" rel="next">Parameter and Variable Index</a>, Previous: <a href="#Builtin-Index" accesskey="p" rel="prev">Index of Shell Builtin Commands</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>
<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>
@@ -15003,9 +15147,11 @@ Next: <a href="#Variable-Index" accesskey="n" rel="next">Variable Index</a>, Pre
</td></tr></table>
<hr>
-<span id="Variable-Index"></span><div class="header">
+</div>
+<div class="appendixsec" id="Variable-Index">
+<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>
+Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Previous: <a href="#Reserved-Word-Index" accesskey="p" rel="prev">Index of Shell Reserved Words</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>
<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>
@@ -15106,6 +15252,8 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<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 id="Variable-Index_vr_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-active_002dregion_002dend_002dcolor"><code>active-region-end-color</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-active_002dregion_002dstart_002dcolor"><code>active-region-start-color</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-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 id="Variable-Index_vr_letter-B">B</th><td></td><td></td></tr>
@@ -15165,6 +15313,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<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>
<tr><td></td><td valign="top"><a href="#index-emacs_002dmode_002dstring"><code>emacs-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-enable_002dactive_002dregion"><code>enable-active-region</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-enable_002dbracketed_002dpaste"><code>enable-bracketed-paste</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-enable_002dkeypad"><code>enable-keypad</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-ENV"><code>ENV</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15213,11 +15362,12 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<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 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-LANG"><code>LANG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-LANG-1"><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>
<tr><td></td><td valign="top"><a href="#index-LC_005fCTYPE"><code>LC_CTYPE</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_005fMESSAGES"><code>LC_MESSAGES</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-LC_005fMESSAGES"><code>LC_MESSAGES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LC_005fMESSAGES-1"><code>LC_MESSAGES</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_005fNUMERIC"><code>LC_NUMERIC</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_005fTIME"><code>LC_TIME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15261,6 +15411,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td colspan="4"> <hr></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_005fARGUMENT"><code>READLINE_ARGUMENT</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>
@@ -15279,8 +15430,8 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<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 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-TEXTDOMAIN"><code>TEXTDOMAIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</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="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</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>
@@ -15354,9 +15505,11 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
</td></tr></table>
<hr>
-<span id="Function-Index"></span><div class="header">
+</div>
+<div class="appendixsec" id="Function-Index">
+<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>
+Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#Variable-Index" accesskey="p" rel="prev">Parameter and 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>
<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>
@@ -15459,6 +15612,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<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 id="Function-Index_fn_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-fetch_002dhistory-_0028_0029"><code>fetch-history ()</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_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>
@@ -15534,6 +15688,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<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-spell_002dcorrect_002dword-_0028C_002dx-s_0029"><code>spell-correct-word (C-x s)</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 id="Function-Index_fn_letter-T">T</th><td></td><td></td></tr>
@@ -15599,7 +15754,9 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
</td></tr></table>
<hr>
-<span id="Concept-Index"></span><div class="header">
+</div>
+<div class="appendixsec" id="Concept-Index">
+<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>
@@ -15734,6 +15891,7 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
<tr><td></td><td valign="top"><a href="#index-interactive-shell">interactive shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Invoking-Bash">Invoking Bash</a></td></tr>
<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></td><td valign="top"><a href="#index-internationalized-scripts">internationalized scripts</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</a></td></tr>
<tr><td colspan="4"> <hr></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>
@@ -15799,6 +15957,7 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
<tr><td></td><td valign="top"><a href="#index-special-builtin">special builtin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-special-builtin-1">special builtin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Builtins">Special Builtins</a></td></tr>
<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-string-translations">string translations</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</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 id="Concept-Index_cp_letter-T">T</th><td></td><td></td></tr>
@@ -15864,7 +16023,9 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
&nbsp;
</td></tr></table>
-<hr>
+</div>
+</div>
+</div>
diff --git a/doc/bashref.info b/doc/bashref.info
index 20ebf243..25372f9b 100644
--- a/doc/bashref.info
+++ b/doc/bashref.info
@@ -1,13 +1,13 @@
-This is bashref.info, produced by makeinfo version 6.7 from
+This is bashref.info, produced by makeinfo version 6.8 from
bashref.texi.
This text is a brief description of the features that are present in the
-Bash shell (version 5.1, 29 October 2020).
+Bash shell (version 5.2, 19 September 2022).
- This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 5.1.
+ This is Edition 5.2, last updated 19 September 2022, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.2.
- Copyright (C) 1988-2020 Free Software Foundation, Inc.
+ Copyright (C) 1988-2022 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -27,11 +27,11 @@ Bash Features
*************
This text is a brief description of the features that are present in the
-Bash shell (version 5.1, 29 October 2020). The Bash home page is
+Bash shell (version 5.2, 19 September 2022). The Bash home page is
<http://www.gnu.org/software/bash/>.
- This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 5.1.
+ This is Edition 5.2, last updated 19 September 2022, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.2.
Bash contains features that appear in other popular shells, and some
features that only appear in Bash. Some of the shells that Bash has
@@ -359,11 +359,11 @@ as such, and to prevent parameter expansion.
Each of the shell metacharacters (*note Definitions::) has special
meaning to the shell and must be quoted if it is to represent itself.
When the command history expansion facilities are being used (*note
-History Interaction::), the HISTORY EXPANSION character, usually '!',
+History Interaction::), the "history expansion" character, usually '!',
must be quoted to prevent history expansion. *Note Bash History
Facilities::, for more details concerning history expansion.
- There are three quoting mechanisms: the ESCAPE CHARACTER, single
+ There are three quoting mechanisms: the "escape character", single
quotes, and double quotes.

@@ -419,10 +419,11 @@ File: bashref.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Dou
3.1.2.4 ANSI-C Quoting
......................
-Words of the form '$'STRING'' are treated specially. The word expands
-to STRING, with backslash-escaped characters replaced as specified by
-the ANSI C standard. Backslash escape sequences, if present, are
-decoded as follows:
+Character sequences of the form $'STRING' are treated as a special kind
+of single quotes. The sequence expands to STRING, with
+backslash-escaped characters in STRING replaced as specified by the ANSI
+C standard. Backslash escape sequences, if present, are decoded as
+follows:
'\a'
alert (bell)
@@ -473,22 +474,114 @@ File: bashref.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoti
3.1.2.5 Locale-Specific Translation
...................................
-A double-quoted string preceded by a dollar sign ('$') will cause the
-string to be translated according to the current locale. The GETTEXT
-infrastructure performs the message catalog lookup and translation,
-using the 'LC_MESSAGES' and 'TEXTDOMAIN' shell variables, as explained
-below. See the gettext documentation for additional details. If the
-current locale is 'C' or 'POSIX', or if there are no translations
-available, the dollar sign is ignored. If the string is translated and
-replaced, the replacement is double-quoted.
+* Menu:
- Some systems use the message catalog selected by the 'LC_MESSAGES'
-shell variable. Others create the name of the message catalog from the
-value of the 'TEXTDOMAIN' shell variable, possibly adding a suffix of
-'.mo'. If you use the 'TEXTDOMAIN' variable, you may need to set the
-'TEXTDOMAINDIR' variable to the location of the message catalog files.
-Still others use both variables in this fashion:
-'TEXTDOMAINDIR'/'LC_MESSAGES'/LC_MESSAGES/'TEXTDOMAIN'.mo.
+* Creating Internationalized Scripts:: How to use translations and different
+ languages in your scripts.
+
+Prefixing a double-quoted string with a dollar sign ('$'), such as
+$"hello, world", will cause the string to be translated according to the
+current locale. The 'gettext' infrastructure performs the lookup and
+translation, using the 'LC_MESSAGES', 'TEXTDOMAINDIR', and 'TEXTDOMAIN'
+shell variables, as explained below. See the gettext documentation for
+additional details not covered here. If the current locale is 'C' or
+'POSIX', if there are no translations available, of if the string is not
+translated, the dollar sign is ignored. Since this is a form of double
+quoting, the string remains double-quoted by default, whether or not it
+is translated and replaced. If the 'noexpand_translation' option is
+enabled using the 'shopt' builtin (*note The Shopt Builtin::),
+translated strings are single-quoted instead of double-quoted.
+
+ The rest of this section is a brief overview of how you use gettext
+to create translations for strings in a shell script named SCRIPTNAME.
+There are more details in the gettext documentation.
+
+
+File: bashref.info, Node: Creating Internationalized Scripts, Up: Locale Translation
+
+Once you've marked the strings in your script that you want to translate
+using $"...", you create a gettext "template" file using the command
+
+ bash --dump-po-strings SCRIPTNAME > DOMAIN.pot
+
+The DOMAIN is your "message domain". It's just an arbitrary string
+that's used to identify the files gettext needs, like a package or
+script name. It needs to be unique among all the message domains on
+systems where you install the translations, so gettext knows which
+translations correspond to your script. You'll use the template file to
+create translations for each target language. The template file
+conventionally has the suffix '.pot'.
+
+ You copy this template file to a separate file for each target
+language you want to support (called "PO" files, which use the suffix
+'.po'). PO files use various naming conventions, but when you are
+working to translate a template file into a particular language, you
+first copy the template file to a file whose name is the language you
+want to target, with the '.po' suffix. For instance, the Spanish
+translations of your strings would be in a file named 'es.po', and to
+get started using a message domain named "example," you would run
+
+ cp example.pot es.po
+
+Ultimately, PO files are often named DOMAIN.po and installed in
+directories that contain multiple translation files for a particular
+language.
+
+ Whichever naming convention you choose, you will need to translate
+the strings in the PO files into the appropriate languages. This has to
+be done manually.
+
+ When you have the translations and PO files complete, you'll use the
+gettext tools to produce what are called "MO" files, which are compiled
+versions of the PO files the gettext tools use to look up translations
+efficiently. MO files are also called "message catalog" files. You use
+the 'msgfmt' program to do this. For instance, if you had a file with
+Spanish translations, you could run
+
+ msgfmt -o es.mo es.po
+
+to produce the corresponding MO file.
+
+ Once you have the MO files, you decide where to install them and use
+the 'TEXTDOMAINDIR' shell variable to tell the gettext tools where they
+are. Make sure to use the same message domain to name the MO files as
+you did for the PO files when you install them.
+
+ Your users will use the 'LANG' or 'LC_MESSAGES' shell variables to
+select the desired language.
+
+ You set the 'TEXTDOMAIN' variable to the script's message domain. As
+above, you use the message domain to name your translation files.
+
+ You, or possibly your users, set the 'TEXTDOMAINDIR' variable to the
+name of a directory where the message catalog files are stored. If you
+install the message files into the system's standard message catalog
+directory, you don't need to worry about this variable.
+
+ The directory where the message catalog files are stored varies
+between systems. Some use the message catalog selected by the
+'LC_MESSAGES' shell variable. Others create the name of the message
+catalog from the value of the 'TEXTDOMAIN' shell variable, possibly
+adding the '.mo' suffix. If you use the 'TEXTDOMAIN' variable, you may
+need to set the 'TEXTDOMAINDIR' variable to the location of the message
+catalog files, as above. It's common to use both variables in this
+fashion: '$TEXTDOMAINDIR'/'$LC_MESSAGES'/LC_MESSAGES/'$TEXTDOMAIN'.mo.
+
+ If you used that last convention, and you wanted to store the message
+catalog files with Spanish (es) and Esperanto (eo) translations into a
+local directory you use for custom translation files, you could run
+
+ TEXTDOMAIN=example
+ TEXTDOMAINDIR=/usr/local/share/locale
+
+ cp es.mo ${TEXTDOMAINDIR}/es/LC_MESSAGES/${TEXTDOMAIN}.mo
+ cp eo.mo ${TEXTDOMAINDIR}/eo/LC_MESSAGES/${TEXTDOMAIN}.mo
+
+ When all of this is done, and the message catalog files containing
+the compiled translations are installed in the correct location, your
+users will be able to see translated strings in any of the supported
+languages by setting the 'LANG' or 'LC_MESSAGES' environment variables
+before running your script.

File: bashref.info, Node: Comments, Prev: Quoting, Up: Shell Syntax
@@ -582,13 +675,13 @@ the control operators '|' or '|&'.
The output of each command in the pipeline is connected via a pipe to
the input of the next command. That is, each command reads the previous
command's output. This connection is performed before any redirections
-specified by the command.
+specified by COMMAND1.
If '|&' is used, COMMAND1's standard error, in addition to its
standard output, is connected to COMMAND2's standard input through the
pipe; it is shorthand for '2>&1 |'. This implicit redirection of the
standard error to the standard output is performed after any
-redirections specified by the command.
+redirections specified by COMMAND1.
The reserved word 'time' causes timing statistics to be printed for
the pipeline once it finishes. The statistics currently consist of
@@ -612,11 +705,12 @@ information.
If the pipeline is not executed asynchronously (*note Lists::), the
shell waits for all commands in the pipeline to complete.
- Each command in a pipeline is executed in its own subshell, which is
-a separate process (*note Command Execution Environment::). If the
-'lastpipe' option is enabled using the 'shopt' builtin (*note The Shopt
-Builtin::), the last element of a pipeline may be run by the shell
-process.
+ Each command in a multi-command pipeline, where pipes are created, is
+executed in its own "subshell", which is a separate process (*note
+Command Execution Environment::). If the 'lastpipe' option is enabled
+using the 'shopt' builtin (*note The Shopt Builtin::), the last element
+of a pipeline may be run by the shell process when job control is not
+active.
The exit status of a pipeline is the exit status of the last command
in the pipeline, unless the 'pipefail' option is enabled (*note The Set
@@ -645,8 +739,8 @@ commands, equivalent to a semicolon.
If a command is terminated by the control operator '&', the shell
executes the command asynchronously in a subshell. This is known as
-executing the command in the BACKGROUND, and these are referred to as
-ASYNCHRONOUS commands. The shell does not wait for the command to
+executing the command in the "background", and these are referred to as
+"asynchronous" commands. The shell does not wait for the command to
finish, and the return status is 0 (true). When job control is not
active (*note Job Control::), the standard input for asynchronous
commands, in the absence of any explicit redirections, is redirected
@@ -814,7 +908,8 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
substitution, arithmetic expansion, and quote removal (*note Shell
Parameter Expansion::) before matching is attempted. Each PATTERN
undergoes tilde expansion, parameter expansion, command
- substitution, and arithmetic expansion.
+ substitution, arithmetic expansion, process substitution, and quote
+ removal.
There may be an arbitrary number of 'case' clauses, each terminated
by a ';;', ';&', or ';;&'. The first pattern that matches
@@ -855,16 +950,16 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
select NAME [in WORDS ...]; do COMMANDS; done
The list of words following 'in' is expanded, generating a list of
- items. The set of expanded words is printed on the standard error
- output stream, each preceded by a number. If the 'in WORDS' is
- omitted, the positional parameters are printed, as if 'in "$@"' had
- been specified. The 'PS3' prompt is then displayed and a line is
- read from the standard input. If the line consists of a number
- corresponding to one of the displayed words, then the value of NAME
- is set to that word. If the line is empty, the words and prompt
- are displayed again. If 'EOF' is read, the 'select' command
- completes. Any other value read causes NAME to be set to null.
- The line read is saved in the variable 'REPLY'.
+ items, and the set of expanded words is printed on the standard
+ error output stream, each preceded by a number. If the 'in WORDS'
+ is omitted, the positional parameters are printed, as if 'in "$@"'
+ had been specified. 'select' then displays the 'PS3' prompt and
+ reads a line from the standard input. If the line consists of a
+ number corresponding to one of the displayed words, then the value
+ of NAME is set to that word. If the line is empty, the words and
+ prompt are displayed again. If 'EOF' is read, the 'select' command
+ completes and returns 1. Any other value read causes NAME to be
+ set to null. The line read is saved in the variable 'REPLY'.
The COMMANDS are executed after each selection until a 'break'
command is executed, at which point the 'select' command completes.
@@ -883,11 +978,11 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
(( EXPRESSION ))
The arithmetic EXPRESSION is evaluated according to the rules
- described below (*note Shell Arithmetic::). If the value of the
- expression is non-zero, the return status is 0; otherwise the
- return status is 1. This is exactly equivalent to
- let "EXPRESSION"
- *Note Bash Builtins::, for a full description of the 'let' builtin.
+ described below (*note Shell Arithmetic::). The EXPRESSION
+ undergoes the same expansions as if it were within double quotes,
+ but double quote characters in EXPRESSION are not treated specially
+ are removed. If the value of the expression is non-zero, the
+ return status is 0; otherwise the return status is 1.
'[[...]]'
[[ EXPRESSION ]]
@@ -895,12 +990,13 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
Return a status of 0 or 1 depending on the evaluation of the
conditional expression EXPRESSION. Expressions are composed of the
primaries described below in *note Bash Conditional Expressions::.
- Word splitting and filename expansion are not performed on the
- words between the '[[' and ']]'; tilde expansion, parameter and
- variable expansion, arithmetic expansion, command substitution,
- process substitution, and quote removal are performed. Conditional
- operators such as '-f' must be unquoted to be recognized as
- primaries.
+ The words between the '[[' and ']]' do not undergo word splitting
+ and filename expansion. The shell performs tilde expansion,
+ parameter and variable expansion, arithmetic expansion, command
+ substitution, process substitution, and quote removal on those
+ words (the expansions that would occur if the words were enclosed
+ in double quotes). Conditional operators such as '-f' must be
+ unquoted to be recognized as primaries.
When used with '[[', the '<' and '>' operators sort
lexicographically using the current locale.
@@ -913,67 +1009,92 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
'shopt' in *note The Shopt Builtin::) is enabled, the match is
performed without regard to the case of alphabetic characters. The
return value is 0 if the string matches ('==') or does not match
- ('!=') the pattern, and 1 otherwise. Any part of the pattern may
- be quoted to force the quoted portion to be matched as a string.
+ ('!=') the pattern, and 1 otherwise.
+
+ If you quote any part of the pattern, using any of the shell's
+ quoting mechanisms, the quoted portion is matched literally. This
+ means every character in the quoted portion matches itself, instead
+ of having any special pattern matching meaning.
An additional binary operator, '=~', is available, with the same
- precedence as '==' and '!='. When it is used, the string to the
+ precedence as '==' and '!='. When you use '=~', the string to the
right of the operator is considered a POSIX extended regular
- expression and matched accordingly (using the POSIX 'regcomp' and
- 'regexec' interfaces usually described in regex(3)). The return
- value is 0 if the string matches the pattern, and 1 otherwise. If
- the regular expression is syntactically incorrect, the conditional
- expression's return value is 2. If the 'nocasematch' shell option
- (see the description of 'shopt' in *note The Shopt Builtin::) is
- enabled, the match is performed without regard to the case of
- alphabetic characters. Any part of the pattern may be quoted to
- force the quoted portion to be matched as a string. Bracket
- expressions in regular expressions must be treated carefully, since
- normal quoting characters lose their meanings between brackets. If
- the pattern is stored in a shell variable, quoting the variable
- expansion forces the entire pattern to be matched as a string.
-
- The pattern will match if it matches any part of the string.
- Anchor the pattern using the '^' and '$' regular expression
- operators to force it to match the entire string. The array
- variable 'BASH_REMATCH' records which parts of the string matched
- the pattern. The element of 'BASH_REMATCH' with index 0 contains
- the portion of the string matching the entire regular expression.
- Substrings matched by parenthesized subexpressions within the
- regular expression are saved in the remaining 'BASH_REMATCH'
- indices. The element of 'BASH_REMATCH' with index N is the portion
- of the string matching the Nth parenthesized subexpression.
+ expression pattern and matched accordingly (using the POSIX
+ 'regcomp' and 'regexec' interfaces usually described in regex(3)).
+ The return value is 0 if the string matches the pattern, and 1 if
+ it does not. If the regular expression is syntactically incorrect,
+ the conditional expression returns 2. If the 'nocasematch' shell
+ option (see the description of 'shopt' in *note The Shopt
+ Builtin::) is enabled, the match is performed without regard to the
+ case of alphabetic characters.
+
+ You can quote any part of the pattern to force the quoted portion
+ to be matched literally instead of as a regular expression (see
+ above). If the pattern is stored in a shell variable, quoting the
+ variable expansion forces the entire pattern to be matched
+ literally.
+
+ The pattern will match if it matches any part of the string. If
+ you want to force the pattern to match the entire string, anchor
+ the pattern using the '^' and '$' regular expression operators.
For example, the following will match a line (stored in the shell
- variable LINE) if there is a sequence of characters anywhere in the
- value consisting of any number, including zero, of characters in
- the 'space' character class, zero or one instances of 'a', then a
- 'b':
+ variable 'line') if there is a sequence of characters anywhere in
+ the value consisting of any number, including zero, of characters
+ in the 'space' character class, immediately followed by zero or one
+ instances of 'a', then a 'b':
+
[[ $line =~ [[:space:]]*(a)?b ]]
- That means values like 'aab' and ' aaaaaab' will match, as will a
- line containing a 'b' anywhere in its value.
-
- Storing the regular expression in a shell variable is often a
- useful way to avoid problems with quoting characters that are
- special to the shell. It is sometimes difficult to specify a
- regular expression literally without using quotes, or to keep track
- of the quoting used by regular expressions while paying attention
- to the shell's quote removal. Using a shell variable to store the
- pattern decreases these problems. For example, the following is
- equivalent to the above:
+ That means values for 'line' like 'aab', ' aaaaaab', 'xaby', and '
+ ab' will all match, as will a line containing a 'b' anywhere in its
+ value.
+
+ If you want to match a character that's special to the regular
+ expression grammar ('^$|[]()\.*+?'), it has to be quoted to remove
+ its special meaning. This means that in the pattern 'xxx.txt', the
+ '.' matches any character in the string (its usual regular
+ expression meaning), but in the pattern '"xxx.txt"', it can only
+ match a literal '.'.
+
+ Likewise, if you want to include a character in your pattern that
+ has a special meaning to the regular expression grammar, you must
+ make sure it's not quoted. If you want to anchor a pattern at the
+ beginning or end of the string, for instance, you cannot quote the
+ '^' or '$' characters using any form of shell quoting.
+
+ If you want to match 'initial string' at the start of a line, the
+ following will work:
+ [[ $line =~ ^"initial string" ]]
+ but this will not:
+ [[ $line =~ "^initial string" ]]
+ because in the second example the '^' is quoted and doesn't have
+ its usual special meaning.
+
+ It is sometimes difficult to specify a regular expression properly
+ without using quotes, or to keep track of the quoting used by
+ regular expressions while paying attention to shell quoting and the
+ shell's quote removal. Storing the regular expression in a shell
+ variable is often a useful way to avoid problems with quoting
+ characters that are special to the shell. For example, the
+ following is equivalent to the pattern used above:
+
pattern='[[:space:]]*(a)?b'
[[ $line =~ $pattern ]]
- If you want to match a character that's special to the regular
- expression grammar, it has to be quoted to remove its special
- meaning. This means that in the pattern 'xxx.txt', the '.' matches
- any character in the string (its usual regular expression meaning),
- but in the pattern '"xxx.txt"' it can only match a literal '.'.
Shell programmers should take special care with backslashes, since
- backslashes are used both by the shell and regular expressions to
- remove the special meaning from the following character. The
- following two sets of commands are _not_ equivalent:
+ backslashes are used by both the shell and regular expressions to
+ remove the special meaning from the following character. This
+ means that after the shell's word expansions complete (*note Shell
+ Expansions::), any backslashes remaining in parts of the pattern
+ that were originally not quoted can remove the special meaning of
+ pattern characters. If any part of the pattern is quoted, the
+ shell does its best to ensure that the regular expression treats
+ those remaining backslashes as literal, if they appeared in a
+ quoted portion.
+
+ The following two sets of commands are _not_ equivalent:
+
pattern='\.'
[[ . =~ $pattern ]]
@@ -984,12 +1105,49 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
The first two matches will succeed, but the second two will not,
because in the second two the backslash will be part of the pattern
- to be matched. In the first two examples, the backslash removes
- the special meaning from '.', so the literal '.' matches. If the
+ to be matched. In the first two examples, the pattern passed to
+ the regular expression parser is '\.'. The backslash removes the
+ special meaning from '.', so the literal '.' matches. In the
+ second two examples, the pattern passed to the regular expression
+ parser has the backslash quoted (e.g., '\\\.'), which will not
+ match the string, since it does not contain a backslash. If the
string in the first examples were anything other than '.', say 'a',
the pattern would not match, because the quoted '.' in the pattern
loses its special meaning of matching any single character.
+ Bracket expressions in regular expressions can be sources of errors
+ as well, since characters that are normally special in regular
+ expressions lose their special meanings between brackets. However,
+ you can use bracket expressions to match special pattern characters
+ without quoting them, so they are sometimes useful for this
+ purpose.
+
+ Though it might seem like a strange way to write it, the following
+ pattern will match a '.' in the string:
+
+ [[ . =~ [.] ]]
+
+ The shell performs any word expansions before passing the pattern
+ to the regular expression functions, so you can assume that the
+ shell's quoting takes precedence. As noted above, the regular
+ expression parser will interpret any unquoted backslashes remaining
+ in the pattern after shell expansion according to its own rules.
+ The intention is to avoid making shell programmers quote things
+ twice as much as possible, so shell quoting should be sufficient to
+ quote special pattern characters where that's necessary.
+
+ The array variable 'BASH_REMATCH' records which parts of the string
+ matched the pattern. The element of 'BASH_REMATCH' with index 0
+ contains the portion of the string matching the entire regular
+ expression. Substrings matched by parenthesized subexpressions
+ within the regular expression are saved in the remaining
+ 'BASH_REMATCH' indices. The element of 'BASH_REMATCH' with index N
+ is the portion of the string matching the Nth parenthesized
+ subexpression.
+
+ Bash sets 'BASH_REMATCH' in the global scope; declaring it as a
+ local variable will lead to unexpected results.
+
Expressions may be combined using the following operators, listed
in decreasing order of precedence:
@@ -1024,9 +1182,9 @@ list may be redirected to a single stream.
'()'
( LIST )
- Placing a list of commands between parentheses causes a subshell
- environment to be created (*note Command Execution Environment::),
- and each of the commands in LIST to be executed in that subshell.
+ Placing a list of commands between parentheses forces the shell to
+ create a subshell (*note Command Execution Environment::), and each
+ of the commands in LIST is executed in that subshell environment.
Since the LIST is executed in a subshell, variable assignments do
not remain in effect after the subshell completes.
@@ -1039,10 +1197,10 @@ list may be redirected to a single stream.
In addition to the creation of a subshell, there is a subtle
difference between these two constructs due to historical reasons. The
-braces are 'reserved words', so they must be separated from the LIST by
-'blank's or other shell metacharacters. The parentheses are
-'operators', and are recognized as separate tokens by the shell even if
-they are not separated from the LIST by whitespace.
+braces are reserved words, so they must be separated from the LIST by
+'blank's or other shell metacharacters. The parentheses are operators,
+and are recognized as separate tokens by the shell even if they are not
+separated from the LIST by whitespace.
The exit status of both of these constructs is the exit status of
LIST.
@@ -1058,29 +1216,51 @@ A coprocess is executed asynchronously in a subshell, as if the command
had been terminated with the '&' control operator, with a two-way pipe
established between the executing shell and the coprocess.
- The format for a coprocess is:
+ The syntax for a coprocess is:
+
coproc [NAME] COMMAND [REDIRECTIONS]
-This creates a coprocess named NAME. If NAME is not supplied, the
-default name is COPROC. NAME must not be supplied if COMMAND is a
-simple command (*note Simple Commands::); otherwise, it is interpreted
-as the first word of the simple command.
+This creates a coprocess named NAME. COMMAND may be either a simple
+command (*note Simple Commands::) or a compound command (*note Compound
+Commands::). NAME is a shell variable name. If NAME is not supplied,
+the default name is 'COPROC'.
+
+ The recommended form to use for a coprocess is
+
+ coproc NAME { COMMAND; }
+
+This form is recommended because simple commands result in the coprocess
+always being named 'COPROC', and it is simpler to use and more complete
+than the other compound commands.
+
+ There are other forms of coprocesses:
+
+ coproc NAME COMPOUND-COMMAND
+ coproc COMPOUND-COMMAND
+ coproc SIMPLE-COMMAND
+
+If COMMAND is a compound command, NAME is optional. The word following
+'coproc' determines whether that word is interpreted as a variable name:
+it is interpreted as NAME if it is not a reserved word that introduces a
+compound command. If COMMAND is a simple command, NAME is not allowed;
+this is to avoid confusion between NAME and the first word of the simple
+command.
When the coprocess is executed, the shell creates an array variable
-(*note Arrays::) named 'NAME' in the context of the executing shell.
-The standard output of COMMAND is connected via a pipe to a file
+(*note Arrays::) named NAME in the context of the executing shell. The
+standard output of COMMAND is connected via a pipe to a file descriptor
+in the executing shell, and that file descriptor is assigned to NAME[0].
+The standard input of COMMAND is connected via a pipe to a file
descriptor in the executing shell, and that file descriptor is assigned
-to 'NAME'[0]. The standard input of COMMAND is connected via a pipe to
-a file descriptor in the executing shell, and that file descriptor is
-assigned to 'NAME'[1]. This pipe is established before any redirections
-specified by the command (*note Redirections::). The file descriptors
-can be utilized as arguments to shell commands and redirections using
-standard word expansions. Other than those created to execute command
-and process substitutions, the file descriptors are not available in
+to NAME[1]. This pipe is established before any redirections specified
+by the command (*note Redirections::). The file descriptors can be
+utilized as arguments to shell commands and redirections using standard
+word expansions. Other than those created to execute command and
+process substitutions, the file descriptors are not available in
subshells.
The process ID of the shell spawned to execute the coprocess is
-available as the value of the variable 'NAME'_PID. The 'wait' builtin
+available as the value of the variable 'NAME_PID'. The 'wait' builtin
command may be used to wait for the coprocess to terminate.
Since the coprocess is created as an asynchronous command, the
@@ -1105,88 +1285,9 @@ line, different ways to specify the input source, and so on). Parallel
can replace 'xargs' or feed commands from its input sources to several
different instances of Bash.
- For a complete description, refer to the GNU Parallel documentation.
-A few examples should provide a brief introduction to its use.
-
- For example, it is easy to replace 'xargs' to gzip all html files in
-the current directory and its subdirectories:
- find . -type f -name '*.html' -print | parallel gzip
-If you need to protect special characters such as newlines in file
-names, use find's '-print0' option and parallel's '-0' option.
-
- You can use Parallel to move files from the current directory when
-the number of files is too large to process with one 'mv' invocation:
- printf '%s\n' * | parallel mv {} destdir
-
- As you can see, the {} is replaced with each line read from standard
-input. While using 'ls' will work in most instances, it is not
-sufficient to deal with all filenames. 'printf' is a shell builtin, and
-therefore is not subject to the kernel's limit on the number of
-arguments to a program, so you can use '*' (but see below about the
-'dotglob' shell option). If you need to accommodate special characters
-in filenames, you can use
-
- printf '%s\0' * | parallel -0 mv {} destdir
-
-as alluded to above.
-
- This will run as many 'mv' commands as there are files in the current
-directory. You can emulate a parallel 'xargs' by adding the '-X'
-option:
- printf '%s\0' * | parallel -0 -X mv {} destdir
-
- (You may have to modify the pattern if you have the 'dotglob' option
-enabled.)
-
- GNU Parallel can replace certain common idioms that operate on lines
-read from a file (in this case, filenames listed one per line):
- while IFS= read -r x; do
- do-something1 "$x" "config-$x"
- do-something2 < "$x"
- done < file | process-output
-
-with a more compact syntax reminiscent of lambdas:
- cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" |
- process-output
-
- Parallel provides a built-in mechanism to remove filename extensions,
-which lends itself to batch file transformations or renaming:
- ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
-This will recompress all files in the current directory with names
-ending in .gz using bzip2, running one job per CPU (-j+0) in parallel.
-(We use 'ls' for brevity here; using 'find' as above is more robust in
-the face of filenames containing unexpected characters.) Parallel can
-take arguments from the command line; the above can also be written as
-
- parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
-
- If a command generates output, you may want to preserve the input
-order in the output. For instance, the following command
- {
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
- } | parallel traceroute
-will display as output the traceroute invocation that finishes first.
-Adding the '-k' option
- {
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
- } | parallel -k traceroute
-will ensure that the output of 'traceroute foss.org.my' is displayed
-first.
-
- Finally, Parallel can be used to run a sequence of shell commands in
-parallel, similar to 'cat file | bash'. It is not uncommon to take a
-list of filenames, create a series of shell commands to operate on them,
-and feed that list of commands to a shell. Parallel can speed this up.
-Assuming that 'file' contains a list of shell commands, one per line,
-
- parallel -j 10 < file
-
-will evaluate the commands using the shell (since no explicit command is
-supplied as an argument), in blocks of ten shell jobs at a time.
+ For a complete description, refer to the GNU Parallel documentation,
+which is available at
+<https://www.gnu.org/software/parallel/parallel_tutorial.html>.

File: bashref.info, Node: Shell Functions, Next: Shell Parameters, Prev: Shell Commands, Up: Basic Shell Features
@@ -1210,15 +1311,15 @@ new process is created to interpret them.
This defines a shell function named FNAME. The reserved word
'function' is optional. If the 'function' reserved word is supplied,
-the parentheses are optional. The BODY of the function is the compound
-command COMPOUND-COMMAND (*note Compound Commands::). That command is
-usually a LIST enclosed between { and }, but may be any compound command
-listed above, with one exception: If the 'function' reserved word is
-used, but the parentheses are not supplied, the braces are required.
+the parentheses are optional. The "body" of the function is the
+compound command COMPOUND-COMMAND (*note Compound Commands::). That
+command is usually a LIST enclosed between { and }, but may be any
+compound command listed above. If the 'function' reserved word is used,
+but the parentheses are not supplied, the braces are recommended.
COMPOUND-COMMAND is executed whenever FNAME is specified as the name of
-a command. When the shell is in POSIX mode (*note Bash POSIX Mode::),
-FNAME must be a valid shell NAME and may not be the same as one of the
-special builtins (*note Special Builtins::). In default mode, a
+a simple command. When the shell is in POSIX mode (*note Bash POSIX
+Mode::), FNAME must be a valid shell name and may not be the same as one
+of the special builtins (*note Special Builtins::). In default mode, a
function name can be any unquoted shell word that does not contain '$'.
Any redirections (*note Redirections::) associated with the shell
function are performed when the function is executed. A function
@@ -1271,9 +1372,17 @@ status; otherwise the function's return status is the exit status of the
last command executed before the 'return'.
Variables local to the function may be declared with the 'local'
-builtin. These variables are visible only to the function and the
-commands it invokes. This is particularly important when a shell
-function calls other functions.
+builtin ("local variables"). Ordinarily, variables and their values are
+shared between a function and its caller. These variables are visible
+only to the function and the commands it invokes. This is particularly
+important when a shell function calls other functions.
+
+ In the following description, the "current scope" is a currently-
+executing function. Previous scopes consist of that function's caller
+and so on, back to the "global" scope, where the shell is not executing
+any shell function. Consequently, a local variable at the current local
+scope is a variable declared using the 'local' or 'declare' builtins in
+the function that is currently executing.
Local variables "shadow" variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
@@ -1281,7 +1390,7 @@ hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
- The shell uses DYNAMIC SCOPING to control a variable's visibility
+ The shell uses "dynamic scoping" to control a variable's visibility
within functions. With dynamic scoping, visible variables and their
values are a result of the sequence of function calls that caused
execution to reach the current function. The value of a variable that a
@@ -1290,10 +1399,10 @@ that caller is the "global" scope or another shell function. This is
also the value that a local variable declaration "shadows", and the
value that is restored when the function returns.
- For example, if a variable VAR is declared as local in function
-FUNC1, and FUNC1 calls another function FUNC2, references to VAR made
-from within FUNC2 will resolve to the local variable VAR from FUNC1,
-shadowing any global variable named VAR.
+ For example, if a variable 'var' is declared as local in function
+'func1', and 'func1' calls another function 'func2', references to 'var'
+made from within 'func2' will resolve to the local variable 'var' from
+'func1', shadowing any global variable named 'var'.
The following script demonstrates this behavior. When executed, the
script displays
@@ -1318,17 +1427,19 @@ script displays
variable is local to the current scope, 'unset' will unset it; otherwise
the unset will refer to the variable found in any calling scope as
described above. If a variable at the current local scope is unset, it
-will remain so until it is reset in that scope or until the function
-returns. Once the function returns, any instance of the variable at a
-previous scope will become visible. If the unset acts on a variable at
-a previous scope, any instance of a variable with that name that had
-been shadowed will become visible.
+will remain so (appearing as unset) until it is reset in that scope or
+until the function returns. Once the function returns, any instance of
+the variable at a previous scope will become visible. If the unset acts
+on a variable at a previous scope, any instance of a variable with that
+name that had been shadowed will become visible (see below how
+'localvar_unset'shell option changes this behavior).
Function names and definitions may be listed with the '-f' option to
the 'declare' ('typeset') builtin command (*note Bash Builtins::). The
'-F' option to 'declare' or 'typeset' will list the function names only
(and optionally the source file and line number, if the 'extdebug' shell
-option is enabled). Functions may be exported so that subshells
+option is enabled). Functions may be exported so that child shell
+processes (those created when executing a separate shell invocation)
automatically have them defined with the '-f' option to the 'export'
builtin (*note Bourne Shell Builtins::).
@@ -1348,11 +1459,12 @@ File: bashref.info, Node: Shell Parameters, Next: Shell Expansions, Prev: She
* Positional Parameters:: The shell's command-line arguments.
* Special Parameters:: Parameters denoted by special characters.
-A PARAMETER is an entity that stores values. It can be a 'name', a
-number, or one of the special characters listed below. A VARIABLE is a
-parameter denoted by a 'name'. A variable has a VALUE and zero or more
-ATTRIBUTES. Attributes are assigned using the 'declare' builtin command
-(see the description of the 'declare' builtin in *note Bash Builtins::).
+A "parameter" is an entity that stores values. It can be a 'name', a
+number, or one of the special characters listed below. A "variable" is
+a parameter denoted by a 'name'. A variable has a 'value' and zero or
+more 'attributes'. Attributes are assigned using the 'declare' builtin
+command (see the description of the 'declare' builtin in *note Bash
+Builtins::).
A parameter is set if it has been assigned a value. The null string
is a valid value. Once a variable is set, it may be unset only by using
@@ -1362,24 +1474,23 @@ the 'unset' builtin command.
NAME=[VALUE]
If VALUE is not given, the variable is assigned the null string. All
VALUEs undergo tilde expansion, parameter and variable expansion,
-command substitution, arithmetic expansion, and quote removal (detailed
-below). If the variable has its 'integer' attribute set, then VALUE is
-evaluated as an arithmetic expression even if the '$((...))' expansion
-is not used (*note Arithmetic Expansion::). Word splitting is not
-performed, with the exception of '"$@"' as explained below. Filename
-expansion is not performed. Assignment statements may also appear as
-arguments to the 'alias', 'declare', 'typeset', 'export', 'readonly',
-and 'local' builtin commands (DECLARATION commands). When in POSIX mode
-(*note Bash POSIX Mode::), these builtins may appear in a command after
-one or more instances of the 'command' builtin and retain these
-assignment statement properties.
+command substitution, arithmetic expansion, and quote removal (*note
+Shell Parameter Expansion::). If the variable has its 'integer'
+attribute set, then VALUE is evaluated as an arithmetic expression even
+if the '$((...))' expansion is not used (*note Arithmetic Expansion::).
+Word splitting and filename expansion are not performed. Assignment
+statements may also appear as arguments to the 'alias', 'declare',
+'typeset', 'export', 'readonly', and 'local' builtin commands
+("declaration" commands). When in POSIX mode (*note Bash POSIX Mode::),
+these builtins may appear in a command after one or more instances of
+the 'command' builtin and retain these assignment statement properties.
In the context where an assignment statement is assigning a value to
a shell variable or array index (*note Arrays::), the '+=' operator can
be used to append to or add to the variable's previous value. This
includes arguments to builtin commands such as 'declare' that accept
-assignment statements (DECLARATION commands). When '+=' is applied to a
-variable for which the INTEGER attribute has been set, VALUE is
+assignment statements (declaration commands). When '+=' is applied to a
+variable for which the 'integer' attribute has been set, VALUE is
evaluated as an arithmetic expression and added to the variable's
current value, which is also evaluated. When '+=' is applied to an
array variable using compound assignment (*note Arrays::), the
@@ -1389,9 +1500,9 @@ maximum index (for indexed arrays), or added as additional key-value
pairs in an associative array. When applied to a string-valued
variable, VALUE is expanded and appended to the variable's value.
- A variable can be assigned the NAMEREF attribute using the '-n'
+ A variable can be assigned the 'nameref' attribute using the '-n'
option to the 'declare' or 'local' builtin commands (*note Bash
-Builtins::) to create a NAMEREF, or a reference to another variable.
+Builtins::) to create a "nameref", or a reference to another variable.
This allows variables to be manipulated indirectly. Whenever the
nameref variable is referenced, assigned to, unset, or has its
attributes modified (other than using or changing the nameref attribute
@@ -1401,9 +1512,9 @@ shell functions to refer to a variable whose name is passed as an
argument to the function. For instance, if a variable name is passed to
a shell function as its first argument, running
declare -n ref=$1
-inside the function creates a nameref variable REF whose value is the
+inside the function creates a nameref variable 'ref' whose value is the
variable name passed as the first argument. References and assignments
-to REF, and changes to its attributes, are treated as references,
+to 'ref', and changes to its attributes, are treated as references,
assignments, and attribute modifications to the variable whose name was
passed as '$1'.
@@ -1423,7 +1534,7 @@ File: bashref.info, Node: Positional Parameters, Next: Special Parameters, Up
3.4.1 Positional Parameters
---------------------------
-A POSITIONAL PARAMETER is a parameter denoted by one or more digits,
+A "positional parameter" is a parameter denoted by one or more digits,
other than the single digit '0'. Positional parameters are assigned
from the shell's arguments when it is invoked, and may be reassigned
using the 'set' builtin command. Positional parameter 'N' may be
@@ -1488,9 +1599,8 @@ only be referenced; assignment to them is not allowed.
shell itself (such as the '-i' option).
'$'
- ($$) Expands to the process ID of the shell. In a '()' subshell,
- it expands to the process ID of the invoking shell, not the
- subshell.
+ ($$) Expands to the process ID of the shell. In a subshell, it
+ expands to the process ID of the invoking shell, not the subshell.
'!'
($!) Expands to the process ID of the job most recently placed
@@ -1544,13 +1654,13 @@ substitution (done in a left-to-right fashion); word splitting; and
filename expansion.
On systems that can support it, there is an additional expansion
-available: PROCESS SUBSTITUTION. This is performed at the same time as
-tilde, parameter, variable, and arithmetic expansion and command
+available: "process substitution". This is performed at the same time
+as tilde, parameter, variable, and arithmetic expansion and command
substitution.
After these expansions are performed, quote characters present in the
-original word are removed unless they have been quoted themselves (QUOTE
-REMOVAL).
+original word are removed unless they have been quoted themselves
+("quote removal").
Only brace expansion, word splitting, and filename expansion can
increase the number of words of the expansion; other expansions expand a
@@ -1568,7 +1678,7 @@ File: bashref.info, Node: Brace Expansion, Next: Tilde Expansion, Up: Shell E
---------------------
Brace expansion is a mechanism by which arbitrary strings may be
-generated. This mechanism is similar to FILENAME EXPANSION (*note
+generated. This mechanism is similar to "filename expansion" (*note
Filename Expansion::), but the filenames generated need not exist.
Patterns to be brace expanded take the form of an optional PREAMBLE,
followed by either a series of comma-separated strings or a sequence
@@ -1583,17 +1693,17 @@ are not sorted; left to right order is preserved. For example,
ade ace abe
A sequence expression takes the form '{X..Y[..INCR]}', where X and Y
-are either integers or single characters, and INCR, an optional
-increment, is an integer. When integers are supplied, the expression
-expands to each number between X and Y, inclusive. Supplied integers
-may be prefixed with '0' to force each term to have the same width.
-When either X or Y begins with a zero, the shell attempts to force all
-generated terms to contain the same number of digits, zero-padding where
-necessary. When characters are supplied, the expression expands to each
-character lexicographically between X and Y, inclusive, using the
-default C locale. Note that both X and Y must be of the same type.
-When the increment is supplied, it is used as the difference between
-each term. The default increment is 1 or -1 as appropriate.
+are either integers or letters, and INCR, an optional increment, is an
+integer. When integers are supplied, the expression expands to each
+number between X and Y, inclusive. Supplied integers may be prefixed
+with '0' to force each term to have the same width. When either X or Y
+begins with a zero, the shell attempts to force all generated terms to
+contain the same number of digits, zero-padding where necessary. When
+letters are supplied, the expression expands to each character
+lexicographically between X and Y, inclusive, using the default C
+locale. Note that both X and Y must be of the same type (integer or
+letter). When the increment is supplied, it is used as the difference
+between each term. The default increment is 1 or -1 as appropriate.
Brace expansion is performed before any other expansions, and any
characters special to other expansions are preserved in the result. It
@@ -1623,9 +1733,9 @@ File: bashref.info, Node: Tilde Expansion, Next: Shell Parameter Expansion, P
If a word begins with an unquoted tilde character ('~'), all of the
characters up to the first unquoted slash (or all characters, if there
-is no unquoted slash) are considered a TILDE-PREFIX. If none of the
+is no unquoted slash) are considered a "tilde-prefix". If none of the
characters in the tilde-prefix are quoted, the characters in the
-tilde-prefix following the tilde are treated as a possible LOGIN NAME.
+tilde-prefix following the tilde are treated as a possible "login name".
If this login name is the null string, the tilde is replaced with the
value of the 'HOME' shell variable. If 'HOME' is unset, the home
directory of the user executing the shell is substituted instead.
@@ -1681,7 +1791,7 @@ assigns the expanded value.
Bash also performs tilde expansion on words satisfying the conditions
of variable assignments (*note Shell Parameters::) when they appear as
arguments to simple commands. Bash does not do this, except for the
-DECLARATION commands listed above, when in POSIX mode.
+declaration commands listed above, when in POSIX mode.

File: bashref.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions
@@ -1708,7 +1818,7 @@ parameter with more than one digit, or when PARAMETER is followed by a
character that is not to be interpreted as part of its name.
If the first character of PARAMETER is an exclamation point (!), and
-PARAMETER is not a NAMEREF, it introduces a level of indirection. Bash
+PARAMETER is not a nameref, it introduces a level of indirection. Bash
uses the value formed by expanding the rest of PARAMETER as the new
PARAMETER; this is then expanded and that value is used in the rest of
the expansion, rather than the expansion of the original PARAMETER.
@@ -1734,31 +1844,48 @@ omitted, the operator tests only for existence.
If PARAMETER is unset or null, the expansion of WORD is
substituted. Otherwise, the value of PARAMETER is substituted.
+ $ v=123
+ $ echo ${v-unset}
+ 123
+
'${PARAMETER:=WORD}'
If PARAMETER is unset or null, the expansion of WORD is assigned to
PARAMETER. The value of PARAMETER is then substituted. Positional
parameters and special parameters may not be assigned to in this
way.
+ $ var=
+ $ : ${var:=DEFAULT}
+ $ echo $var
+ DEFAULT
+
'${PARAMETER:?WORD}'
If PARAMETER is null or unset, the expansion of WORD (or a message
to that effect if WORD is not present) is written to the standard
error and the shell, if it is not interactive, exits. Otherwise,
the value of PARAMETER is substituted.
+ $ var=
+ $ : ${var:?var is unset or null}
+ bash: var: var is unset or null
+
'${PARAMETER:+WORD}'
If PARAMETER is null or unset, nothing is substituted, otherwise
the expansion of WORD is substituted.
+ $ var=123
+ $ echo ${var:+var is set and not null}
+ var is set and not null
+
'${PARAMETER:OFFSET}'
'${PARAMETER:OFFSET:LENGTH}'
This is referred to as Substring Expansion. It expands to up to
LENGTH characters of the value of PARAMETER starting at the
- character specified by OFFSET. If PARAMETER is '@', an indexed
- array subscripted by '@' or '*', or an associative array name, the
- results differ as described below. If LENGTH is omitted, it
- expands to the substring of the value of PARAMETER starting at the
- character specified by OFFSET and extending to the end of the
+ character specified by OFFSET. If PARAMETER is '@' or '*', an
+ indexed array subscripted by '@' or '*', or an associative array
+ name, the results differ as described below. If LENGTH is omitted,
+ it expands to the substring of the value of PARAMETER starting at
+ the character specified by OFFSET and extending to the end of the
value. LENGTH and OFFSET are arithmetic expressions (*note Shell
Arithmetic::).
@@ -1826,11 +1953,11 @@ omitted, the operator tests only for existence.
$ echo ${array[0]: -7:-2}
bcdef
- If PARAMETER is '@', the result is LENGTH positional parameters
- beginning at OFFSET. A negative OFFSET is taken relative to one
- greater than the greatest positional parameter, so an offset of -1
- evaluates to the last positional parameter. It is an expansion
- error if LENGTH evaluates to a number less than zero.
+ If PARAMETER is '@' or '*', the result is LENGTH positional
+ parameters beginning at OFFSET. A negative OFFSET is taken
+ relative to one greater than the greatest positional parameter, so
+ an offset of -1 evaluates to the last positional parameter. It is
+ an expansion error if LENGTH evaluates to a number less than zero.
The following examples illustrate substring expansion using
positional parameters:
@@ -1940,26 +2067,92 @@ omitted, the operator tests only for existence.
array in turn, and the expansion is the resultant list.
'${PARAMETER/PATTERN/STRING}'
-
+'${PARAMETER//PATTERN/STRING}'
+'${PARAMETER/#PATTERN/STRING}'
+'${PARAMETER/%PATTERN/STRING}'
The PATTERN is expanded to produce a pattern just as in filename
expansion. PARAMETER is expanded and the longest match of PATTERN
- against its value is replaced with STRING. The match is performed
- according to the rules described below (*note Pattern Matching::).
- If PATTERN begins with '/', all matches of PATTERN are replaced
- with STRING. Normally only the first match is replaced. If
- PATTERN begins with '#', it must match at the beginning of the
- expanded value of PARAMETER. If PATTERN begins with '%', it must
- match at the end of the expanded value of PARAMETER. If STRING is
- null, matches of PATTERN are deleted and the '/' following PATTERN
- may be omitted. If the 'nocasematch' shell option (see the
- description of 'shopt' in *note The Shopt Builtin::) is enabled,
- the match is performed without regard to the case of alphabetic
- characters. If PARAMETER is '@' or '*', the substitution operation
- is applied to each positional parameter in turn, and the expansion
- is the resultant list. If PARAMETER is an array variable
- subscripted with '@' or '*', the substitution operation is applied
- to each member of the array in turn, and the expansion is the
- resultant list.
+ against its value is replaced with STRING. STRING undergoes tilde
+ expansion, parameter and variable expansion, arithmetic expansion,
+ command and process substitution, and quote removal. The match is
+ performed according to the rules described below (*note Pattern
+ Matching::).
+
+ In the first form above, only the first match is replaced. If
+ there are two slashes separating PARAMETER and PATTERN (the second
+ form above), all matches of PATTERN are replaced with STRING. If
+ PATTERN is preceded by '#' (the third form above), it must match at
+ the beginning of the expanded value of PARAMETER. If PATTERN is
+ preceded by '%' (the fourth form above), it must match at the end
+ of the expanded value of PARAMETER. If the expansion of STRING is
+ null, matches of PATTERN are deleted. If STRING is null, matches
+ of PATTERN are deleted and the '/' following PATTERN may be
+ omitted.
+
+ If the 'patsub_replacement' shell option is enabled using 'shopt',
+ any unquoted instances of '&' in STRING are replaced with the
+ matching portion of PATTERN. This is intended to duplicate a
+ common 'sed' idiom.
+
+ Quoting any part of STRING inhibits replacement in the expansion of
+ the quoted portion, including replacement strings stored in shell
+ variables. Backslash will escape '&' in STRING; the backslash is
+ removed in order to permit a literal '&' in the replacement string.
+ Users should take care if STRING is double-quoted to avoid unwanted
+ interactions between the backslash and double-quoting, since
+ backslash has special meaning within double quotes. Pattern
+ substitution performs the check for unquoted '&' after expanding
+ STRING, so users should ensure to properly quote any occurrences of
+ '&' they want to be taken literally in the replacement and ensure
+ any instances of '&' they want to be replaced are unquoted.
+
+ For instance,
+
+ var=abcdef
+ rep='& '
+ echo ${var/abc/& }
+ echo "${var/abc/& }"
+ echo ${var/abc/$rep}
+ echo "${var/abc/$rep}"
+
+ will display four lines of "abc def", while
+
+ var=abcdef
+ rep='& '
+ echo ${var/abc/\& }
+ echo "${var/abc/\& }"
+ echo ${var/abc/"& "}
+ echo ${var/abc/"$rep"}
+
+ will display four lines of "& def". Like the pattern removal
+ operators, double quotes surrounding the replacement string quote
+ the expanded characters, while double quotes enclosing the entire
+ parameter substitution do not, since the expansion is performed in
+ a context that doesn't take any enclosing double quotes into
+ account.
+
+ Since backslash can escape '&', it can also escape a backslash in
+ the replacement string. This means that '\\' will insert a literal
+ backslash into the replacement, so these two 'echo' commands
+
+ var=abcdef
+ rep='\\&xyz'
+ echo ${var/abc/\\&xyz}
+ echo ${var/abc/$rep}
+
+ will both output '\abcxyzdef'.
+
+ It should rarely be necessary to enclose only STRING in double
+ quotes.
+
+ If the 'nocasematch' shell option (see the description of 'shopt'
+ in *note The Shopt Builtin::) is enabled, the match is performed
+ without regard to the case of alphabetic characters. If PARAMETER
+ is '@' or '*', the substitution operation is applied to each
+ positional parameter in turn, and the expansion is the resultant
+ list. If PARAMETER is an array variable subscripted with '@' or
+ '*', the substitution operation is applied to each member of the
+ array in turn, and the expansion is the resultant list.
'${PARAMETER^PATTERN}'
'${PARAMETER^^PATTERN}'
@@ -1970,18 +2163,22 @@ omitted, the operator tests only for existence.
filename expansion. Each character in the expanded value of
PARAMETER is tested against PATTERN, and, if it matches the
pattern, its case is converted. The pattern should not attempt to
- match more than one character. The '^' operator converts lowercase
- letters matching PATTERN to uppercase; the ',' operator converts
- matching uppercase letters to lowercase. The '^^' and ',,'
- expansions convert each matched character in the expanded value;
- the '^' and ',' expansions match and convert only the first
- character in the expanded value. If PATTERN is omitted, it is
- treated like a '?', which matches every character. If PARAMETER is
- '@' or '*', the case modification operation is applied to each
- positional parameter in turn, and the expansion is the resultant
- list. If PARAMETER is an array variable subscripted with '@' or
- '*', the case modification operation is applied to each member of
- the array in turn, and the expansion is the resultant list.
+ match more than one character.
+
+ The '^' operator converts lowercase letters matching PATTERN to
+ uppercase; the ',' operator converts matching uppercase letters to
+ lowercase. The '^^' and ',,' expansions convert each matched
+ character in the expanded value; the '^' and ',' expansions match
+ and convert only the first character in the expanded value. If
+ PATTERN is omitted, it is treated like a '?', which matches every
+ character.
+
+ If PARAMETER is '@' or '*', the case modification operation is
+ applied to each positional parameter in turn, and the expansion is
+ the resultant list. If PARAMETER is an array variable subscripted
+ with '@' or '*', the case modification operation is applied to each
+ member of the array in turn, and the expansion is the resultant
+ list.
'${PARAMETER@OPERATOR}'
The expansion is either a transformation of the value of PARAMETER
@@ -2021,6 +2218,10 @@ omitted, the operator tests only for existence.
'a'
The expansion is a string consisting of flag values
representing PARAMETER's attributes.
+ 'k'
+ Like the 'K' transformation, but expands the keys and values
+ of indexed and associative arrays to separate words after word
+ splitting.
If PARAMETER is '@' or '*', the operation is applied to each
positional parameter in turn, and the expansion is the resultant
@@ -2075,12 +2276,12 @@ is:
$(( EXPRESSION ))
- The expression is treated as if it were within double quotes, but a
-double quote inside the parentheses is not treated specially. All
-tokens in the expression undergo parameter and variable expansion,
-command substitution, and quote removal. The result is treated as the
-arithmetic expression to be evaluated. Arithmetic expansions may be
-nested.
+ The EXPRESSION undergoes the same expansions as if it were within
+double quotes, but double quote characters in EXPRESSION are not treated
+specially and are removed. All tokens in the expression undergo
+parameter and variable expansion, command substitution, and quote
+removal. The result is treated as the arithmetic expression to be
+evaluated. Arithmetic expansions may be nested.
The evaluation is performed according to the rules listed below
(*note Shell Arithmetic::). If the expression is invalid, Bash prints a
@@ -2175,9 +2376,12 @@ characters.
When a pattern is used for filename expansion, the character '.' at
the start of a filename or immediately following a slash must be matched
-explicitly, unless the shell option 'dotglob' is set. The filenames '.'
-and '..' must always be matched explicitly, even if 'dotglob' is set.
-In other cases, the '.' character is not treated specially.
+explicitly, unless the shell option 'dotglob' is set. In order to match
+the filenames '.' and '..', the pattern must begin with '.' (for
+example, '.?'), even if 'dotglob' is set. If the 'globskipdots' shell
+option is enabled, the filenames '.' and '..' are never matched, even if
+the pattern begins with a '.'. When not matching filenames, the '.'
+character is not treated specially.
When matching a filename, the slash character must always be matched
explicitly by a slash in the pattern, but in other matching contexts it
@@ -2185,8 +2389,8 @@ can be matched by a special pattern character as described below (*note
Pattern Matching::).
See the description of 'shopt' in *note The Shopt Builtin::, for a
-description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob'
-options.
+description of the 'nocaseglob', 'nullglob', 'globskipdots', 'failglob',
+and 'dotglob' options.
The 'GLOBIGNORE' shell variable may be used to restrict the set of
file names matching a pattern. If 'GLOBIGNORE' is set, each matching
@@ -2232,20 +2436,21 @@ characters must be quoted if they are to be matched literally.
character not enclosed is matched. A '-' may be matched by
including it as the first or last character in the set. A ']' may
be matched by including it as the first character in the set. The
- sorting order of characters in range expressions is determined by
- the current locale and the values of the 'LC_COLLATE' and 'LC_ALL'
- shell variables, if set.
+ sorting order of characters in range expressions, and the
+ characters included in the range, are determined by the current
+ locale and the values of the 'LC_COLLATE' and 'LC_ALL' shell
+ variables, if set.
For example, in the default C locale, '[a-dx-z]' is equivalent to
'[abcdxyz]'. Many locales sort characters in dictionary order, and
in these locales '[a-dx-z]' is typically not equivalent to
- '[abcdxyz]'; it might be equivalent to '[aBbCcDdxXyYz]', for
+ '[abcdxyz]'; it might be equivalent to '[aBbCcDdxYyZz]', for
example. To obtain the traditional interpretation of ranges in
bracket expressions, you can force the use of the C locale by
setting the 'LC_COLLATE' or 'LC_ALL' environment variable to the
value 'C', or enable the 'globasciiranges' shell option.
- Within '[' and ']', CHARACTER CLASSES can be specified using the
+ Within '[' and ']', "character classes" can be specified using the
syntax '[:'CLASS':]', where CLASS is one of the following classes
defined in the POSIX standard:
alnum alpha ascii blank cntrl digit graph lower
@@ -2254,8 +2459,8 @@ characters must be quoted if they are to be matched literally.
The 'word' character class matches letters, digits, and the
character '_'.
- Within '[' and ']', an EQUIVALENCE CLASS can be specified using the
- syntax '[='C'=]', which matches all characters with the same
+ Within '[' and ']', an "equivalence class" can be specified using
+ the syntax '[='C'=]', which matches all characters with the same
collation weight (as defined by the current locale) as the
character C.
@@ -2263,10 +2468,12 @@ characters must be quoted if they are to be matched literally.
symbol SYMBOL.
If the 'extglob' shell option is enabled using the 'shopt' builtin,
-several extended pattern matching operators are recognized. In the
-following description, a PATTERN-LIST is a list of one or more patterns
-separated by a '|'. Composite patterns may be formed using one or more
-of the following sub-patterns:
+the shell recognizes several extended pattern matching operators. In
+the following description, a PATTERN-LIST is a list of one or more
+patterns separated by a '|'. When matching filenames, the 'dotglob'
+shell option determines the set of filenames that are tested, as
+described above. Composite patterns may be formed using one or more of
+the following sub-patterns:
'?(PATTERN-LIST)'
Matches zero or one occurrence of the given patterns.
@@ -2283,6 +2490,20 @@ of the following sub-patterns:
'!(PATTERN-LIST)'
Matches anything except one of the given patterns.
+ The 'extglob' option changes the behavior of the parser, since the
+parentheses are normally treated as operators with syntactic meaning.
+To ensure that extended matching patterns are parsed correctly, make
+sure that 'extglob' is enabled before parsing constructs containing the
+patterns, including shell functions and command substitutions.
+
+ When matching filenames, the 'dotglob' shell option determines the
+set of filenames that are tested: when 'dotglob' is enabled, the set of
+filenames includes all files beginning with '.', but the filenames '.'
+and '..' must be matched by a pattern or sub-pattern that begins with a
+dot; when it is disabled, the set does not include any filenames
+beginning with "." unless the pattern or sub-pattern begins with a '.'.
+As above, '.' only has a special meaning when matching filenames.
+
Complicated extended pattern matching against long strings is slow,
especially when the patterns contain alternations and the strings
contain multiple matches. Using separate matches against shorter
@@ -2305,8 +2526,8 @@ File: bashref.info, Node: Redirections, Next: Executing Commands, Prev: Shell
3.6 Redirections
================
-Before a command is executed, its input and output may be REDIRECTED
-using a special notation interpreted by the shell. Redirection allows
+Before a command is executed, its input and output may be "redirected"
+using a special notation interpreted by the shell. "Redirection" allows
commands' file handles to be duplicated, opened, closed, made to refer
to different files, and can change the files the command reads from and
writes to. Redirection may also be used to modify file handles in the
@@ -2322,7 +2543,8 @@ file descriptor greater than 10 and assign it to {VARNAME}. If >&- or
<&- is preceded by {VARNAME}, the value of VARNAME defines the file
descriptor to close. If {VARNAME} is supplied, the redirection persists
beyond the scope of the command, allowing the shell programmer to manage
-the file descriptor's lifetime manually.
+the file descriptor's lifetime manually. The 'varredir_close' shell
+option manages this behavior (*note The Shopt Builtin::).
In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is '<', the
@@ -2584,11 +2806,13 @@ following order.
expansion, and quote removal before being assigned to the variable.
If no command name results, the variable assignments affect the
-current shell environment. Otherwise, the variables are added to the
-environment of the executed command and do not affect the current shell
-environment. If any of the assignments attempts to assign a value to a
-readonly variable, an error occurs, and the command exits with a
-non-zero status.
+current shell environment. In the case of such a command (one that
+consists only of assignment statements and redirections), assignment
+statements are performed before redirections. Otherwise, the variables
+are added to the environment of the executed command and do not affect
+the current shell environment. If any of the assignments attempts to
+assign a value to a readonly variable, an error occurs, and the command
+exits with a non-zero status.
If no command name results, redirections are performed, but do not
affect the current shell environment. A redirection error causes the
@@ -2642,8 +2866,8 @@ taken.
5. If this execution fails because the file is not in executable
format, and the file is not a directory, it is assumed to be a
- SHELL SCRIPT and the shell executes it as described in *note Shell
- Scripts::.
+ "shell script" and the shell executes it as described in *note
+ Shell Scripts::.
6. If the command was not begun asynchronously, the shell waits for
the command to complete and collects its exit status.
@@ -2654,7 +2878,8 @@ File: bashref.info, Node: Command Execution Environment, Next: Environment, P
3.7.3 Command Execution Environment
-----------------------------------
-The shell has an EXECUTION ENVIRONMENT, which consists of the following:
+The shell has an "execution environment", which consists of the
+following:
* open files inherited by the shell at invocation, as modified by
redirections supplied to the 'exec' builtin
@@ -2705,6 +2930,8 @@ inherited from the shell.
A command invoked in this separate environment cannot affect the
shell's execution environment.
+ A "subshell" is a copy of the shell process.
+
Command substitution, commands grouped with parentheses, and
asynchronous commands are invoked in a subshell environment that is a
duplicate of the shell environment, except that traps caught by the
@@ -2729,12 +2956,12 @@ File: bashref.info, Node: Environment, Next: Exit Status, Prev: Command Execu
-----------------
When a program is invoked it is given an array of strings called the
-ENVIRONMENT. This is a list of name-value pairs, of the form
+"environment". This is a list of name-value pairs, of the form
'name=value'.
Bash provides several ways to manipulate the environment. On
invocation, the shell scans its own environment and creates a parameter
-for each name found, automatically marking it for EXPORT to child
+for each name found, automatically marking it for 'export' to child
processes. Executed commands inherit the environment. The 'export' and
'declare -x' commands allow parameters and functions to be added to and
deleted from the environment. If the value of a parameter in the
@@ -2765,11 +2992,11 @@ File: bashref.info, Node: Exit Status, Next: Signals, Prev: Environment, Up:
-----------------
The exit status of an executed command is the value returned by the
-WAITPID system call or equivalent function. Exit statuses fall between
-0 and 255, though, as explained below, the shell may use values above
-125 specially. Exit statuses from shell builtins and compound commands
-are also limited to this range. Under certain circumstances, the shell
-will use special values to indicate specific failure modes.
+'waitpid' system call or equivalent function. Exit statuses fall
+between 0 and 255, though, as explained below, the shell may use values
+above 125 specially. Exit statuses from shell builtins and compound
+commands are also limited to this range. Under certain circumstances,
+the shell will use special values to indicate specific failure modes.
For the shell's purposes, a command which exits with a zero exit
status has succeeded. A non-zero exit status indicates failure. This
@@ -2795,6 +3022,9 @@ conditional and list constructs. All builtins return an exit status of
2 to indicate incorrect usage, generally invalid options or missing
arguments.
+ The exit status of the last command is available in the special
+parameter $? (*note Special Parameters::).
+

File: bashref.info, Node: Signals, Prev: Exit Status, Up: Executing Commands
@@ -2835,6 +3065,33 @@ the 'wait' builtin, the reception of a signal for which a trap has been
set will cause the 'wait' builtin to return immediately with an exit
status greater than 128, immediately after which the trap is executed.
+ When job control is not enabled, and Bash is waiting for a foreground
+command to complete, the shell receives keyboard-generated signals such
+as 'SIGINT' (usually generated by '^C') that users commonly intend to
+send to that command. This happens because the shell and the command
+are in the same process group as the terminal, and '^C' sends 'SIGINT'
+to all processes in that process group. See *note Job Control::, for a
+more in-depth discussion of process groups.
+
+ When Bash is running without job control enabled and receives
+'SIGINT' while waiting for a foreground command, it waits until that
+foreground command terminates and then decides what to do about the
+'SIGINT':
+
+ 1. If the command terminates due to the 'SIGINT', Bash concludes that
+ the user meant to end the entire script, and acts on the 'SIGINT'
+ (e.g., by running a 'SIGINT' trap or exiting itself);
+
+ 2. If the pipeline does not terminate due to 'SIGINT', the program
+ handled the 'SIGINT' itself and did not treat it as a fatal signal.
+ In that case, Bash does not treat 'SIGINT' as a fatal signal,
+ either, instead assuming that the 'SIGINT' was used as part of the
+ program's normal operation (e.g., 'emacs' uses it to abort editing
+ commands) or deliberately discarded. However, Bash will run any
+ trap set on 'SIGINT', as it does with any other trapped signal it
+ receives while it is waiting for the foreground command to
+ complete, for compatibility.
+

File: bashref.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic Shell Features
@@ -2857,8 +3114,8 @@ parameters are unset.
A shell script may be made executable by using the 'chmod' command to
turn on the execute bit. When Bash finds such a file while searching
-the '$PATH' for a command, it spawns a subshell to execute it. In other
-words, executing
+the '$PATH' for a command, it creates a new instance of itself to
+execute it. In other words, executing
filename ARGUMENTS
is equivalent to executing
bash filename ARGUMENTS
@@ -2962,19 +3219,20 @@ standard.
Read and execute commands from the FILENAME argument in the current
shell context. If FILENAME does not contain a slash, the 'PATH'
- variable is used to find FILENAME. When Bash is not in POSIX mode,
- the current directory is searched if FILENAME is not found in
- '$PATH'. If any ARGUMENTS are supplied, they become the positional
- parameters when FILENAME is executed. Otherwise the positional
- parameters are unchanged. If the '-T' option is enabled, 'source'
- inherits any trap on 'DEBUG'; if it is not, any 'DEBUG' trap string
- is saved and restored around the call to 'source', and 'source'
- unsets the 'DEBUG' trap while it executes. If '-T' is not set, and
- the sourced file changes the 'DEBUG' trap, the new value is
- retained when 'source' completes. The return status is the exit
- status of the last command executed, or zero if no commands are
- executed. If FILENAME is not found, or cannot be read, the return
- status is non-zero. This builtin is equivalent to 'source'.
+ variable is used to find FILENAME, but FILENAME does not need to be
+ executable. When Bash is not in POSIX mode, it searches the
+ current directory if FILENAME is not found in '$PATH'. If any
+ ARGUMENTS are supplied, they become the positional parameters when
+ FILENAME is executed. Otherwise the positional parameters are
+ unchanged. If the '-T' option is enabled, '.' inherits any trap on
+ 'DEBUG'; if it is not, any 'DEBUG' trap string is saved and
+ restored around the call to '.', and '.' unsets the 'DEBUG' trap
+ while it executes. If '-T' is not set, and the sourced file
+ changes the 'DEBUG' trap, the new value is retained when '.'
+ completes. The return status is the exit status of the last
+ command executed, or zero if no commands are executed. If FILENAME
+ is not found, or cannot be read, the return status is non-zero.
+ This builtin is equivalent to 'source'.
'break'
break [N]
@@ -2988,10 +3246,9 @@ standard.
cd [-L|[-P [-e]] [-@] [DIRECTORY]
Change the current working directory to DIRECTORY. If DIRECTORY is
- not supplied, the value of the 'HOME' shell variable is used. Any
- additional arguments following DIRECTORY are ignored. If the shell
- variable 'CDPATH' exists, it is used as a search path: each
- directory name in 'CDPATH' is searched for DIRECTORY, with
+ not supplied, the value of the 'HOME' shell variable is used. If
+ the shell variable 'CDPATH' exists, it is used as a search path:
+ each directory name in 'CDPATH' is searched for DIRECTORY, with
alternative directory names in 'CDPATH' separated by a colon (':').
If DIRECTORY begins with a slash, 'CDPATH' is not used.
@@ -3022,6 +3279,11 @@ standard.
absolute pathname of the new working directory is written to the
standard output.
+ If the directory change is successful, 'cd' sets the value of the
+ 'PWD' environment variable to the new directory name, and sets the
+ 'OLDPWD' environment variable to the value of the current working
+ directory before the change.
+
The return status is zero if the directory is successfully changed,
non-zero otherwise.
@@ -3073,7 +3335,7 @@ standard.
Mark each NAME to be passed to child processes in the environment.
If the '-f' option is supplied, the NAMEs refer to shell functions;
otherwise the names refer to shell variables. The '-n' option
- means to no longer mark each NAME for export. If no NAMES are
+ means to no longer mark each NAME for export. If no NAMEs are
supplied, or if the '-p' option is given, a list of names of all
exported variables is displayed. The '-p' option displays output
in a form that may be reused as input. If a variable name is
@@ -3277,10 +3539,16 @@ standard.
4. Otherwise, the expression is false.
4 arguments
- If the first argument is '!', the result is the negation of
- the three-argument expression composed of the remaining
- arguments. Otherwise, the expression is parsed and evaluated
- according to precedence using the rules listed above.
+ The following conditions are applied in the order listed.
+
+ 1. If the first argument is '!', the result is the negation
+ of the three-argument expression composed of the
+ remaining arguments.
+ 2. If the first argument is exactly '(' and the fourth
+ argument is exactly ')', the result is the two-argument
+ test of the second and third arguments.
+ 3. Otherwise, the expression is parsed and evaluated
+ according to precedence using the rules listed above.
5 or more arguments
The expression is parsed and evaluated according to precedence
@@ -3369,7 +3637,7 @@ standard.
given, each NAME refers to a shell variable and that variable is
removed. If the '-f' option is given, the NAMEs refer to shell
functions, and the function definition is removed. If the '-n'
- option is supplied, and NAME is a variable with the NAMEREF
+ option is supplied, and NAME is a variable with the 'nameref'
attribute, NAME will be unset rather than the variable it
references. '-n' has no effect if the '-f' option is supplied. If
no options are supplied, each NAME refers to a variable; if there
@@ -3377,7 +3645,8 @@ standard.
unset. Readonly variables and functions may not be unset. Some
shell variables lose their special behavior if they are unset; such
behavior is noted in the description of the individual variables.
- The return status is zero unless a NAME is readonly.
+ The return status is zero unless a NAME is readonly or may not be
+ unset.

File: bashref.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands
@@ -3406,6 +3675,7 @@ standard.
bind [-m KEYMAP] -x KEYSEQ:SHELL-COMMAND
bind [-m KEYMAP] KEYSEQ:FUNCTION-NAME
bind [-m KEYMAP] KEYSEQ:READLINE-COMMAND
+ bind READLINE-COMMAND-LINE
Display current Readline (*note Command Line Editing::) key and
function bindings, bind a key sequence to a Readline function or
@@ -3470,10 +3740,13 @@ standard.
'READLINE_LINE' variable to the contents of the Readline line
buffer and the 'READLINE_POINT' and 'READLINE_MARK' variables
to the current location of the insertion point and the saved
- insertion point (the MARK), respectively. If the executed
- command changes the value of any of 'READLINE_LINE',
- 'READLINE_POINT', or 'READLINE_MARK', those new values will be
- reflected in the editing state.
+ insertion point (the MARK), respectively. The shell assigns
+ any numeric argument the user supplied to the
+ 'READLINE_ARGUMENT' variable. If there was no argument, that
+ variable is not set. If the executed command changes the
+ value of any of 'READLINE_LINE', 'READLINE_POINT', or
+ 'READLINE_MARK', those new values will be reflected in the
+ editing state.
'-X'
List all key sequences bound to shell commands and the
@@ -3556,7 +3829,7 @@ standard.
It is ignored in all other cases.
The '-I' option causes local variables to inherit the attributes
- (except the NAMEREF attribute) and value of any existing variable
+ (except the 'nameref' attribute) and value of any existing variable
with the same NAME at a surrounding scope. If there is no existing
variable, the local variable is initially unset.
@@ -3583,7 +3856,7 @@ standard.
attribute is disabled.
'-n'
- Give each NAME the NAMEREF attribute, making it a name
+ Give each NAME the 'nameref' attribute, making it a name
reference to another variable. That other variable is defined
by the value of NAME. All references, assignments, and
attribute modifications to NAME, except for those using or
@@ -3626,7 +3899,7 @@ standard.
attempt is made to assign a value to a readonly variable, an
attempt is made to assign a value to an array variable without
using the compound assignment syntax (*note Arrays::), one of the
- NAMES is not a valid shell variable name, an attempt is made to
+ NAMEs is not a valid shell variable name, an attempt is made to
turn off readonly status for a readonly variable, an attempt is
made to turn off array status for an array variable, or an attempt
is made to display a non-existent function with '-f'.
@@ -3699,13 +3972,20 @@ standard.
The '-f' option means to load the new builtin command NAME from
shared object FILENAME, on systems that support dynamic loading.
- The '-d' option will delete a builtin loaded with '-f'.
+ Bash will use the value of the 'BASH_LOADABLES_PATH' variable as a
+ colon-separated list of directories in which to search for
+ FILENAME. The default is system-dependent. The '-d' option will
+ delete a builtin loaded with '-f'.
If there are no options, a list of the shell builtins is displayed.
The '-s' option restricts 'enable' to the POSIX special builtins.
If '-s' is used with '-f', the new builtin becomes a special
builtin (*note Special Builtins::).
+ If no options are supplied and a NAME is not a shell builtin,
+ 'enable' will attempt to load NAME from a shared object named NAME,
+ as if the command were 'enable -f NAME NAME'.
+
The return status is zero unless a NAME is not a shell builtin or
there is an error loading a new builtin from a shared object.
@@ -3826,6 +4106,9 @@ standard.
'%q'
Causes 'printf' to output the corresponding ARGUMENT in a
format that can be reused as shell input.
+ '%Q'
+ like '%q', but applies any supplied precision to the ARGUMENT
+ before quoting it.
'%(DATEFMT)T'
Causes 'printf' to output the date-time string resulting from
using DATEFMT as a format string for 'strftime'(3). The
@@ -3934,8 +4217,9 @@ standard.
partial input read into the specified variable NAME. If
TIMEOUT is 0, 'read' returns immediately, without trying to
read any data. The exit status is 0 if input is available on
- the specified file descriptor, non-zero otherwise. The exit
- status is greater than 128 if the timeout is exceeded.
+ the specified file descriptor, or the read will return EOF,
+ non-zero otherwise. The exit status is greater than 128 if
+ the timeout is exceeded.
'-u FD'
Read input from file descriptor FD.
@@ -3991,7 +4275,7 @@ standard.
If the '-f' option is used, 'type' does not attempt to find shell
functions, as with the 'command' builtin.
- The return status is zero if all of the NAMES are found, non-zero
+ The return status is zero if all of the NAMEs are found, non-zero
if any are not found.
'typeset'
@@ -4135,8 +4419,8 @@ allows you to change the values of shell options and set the positional
parameters, or to display the names and values of shell variables.
'set'
- set [--abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [ARGUMENT ...]
- set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [ARGUMENT ...]
+ set [-abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [--] [-] [ARGUMENT ...]
+ set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [--] [-] [ARGUMENT ...]
If no options or arguments are supplied, 'set' displays the names
and values of all shell variables and functions, sorted according
@@ -4317,14 +4601,19 @@ parameters, or to display the names and values of shell variables.
causes the effective user and group ids to be set to the real
user and group ids.
+ '-r'
+ Enable restricted shell mode. This option cannot be unset
+ once it has been set.
+
'-t'
Exit after reading and executing one command.
'-u'
Treat unset variables and parameters other than the special
- parameters '@' or '*' as an error when performing parameter
- expansion. An error message will be written to the standard
- error, and a non-interactive shell will exit.
+ parameters '@' or '*', or array variables subscripted with '@'
+ or '*', as an error when performing parameter expansion. An
+ error message will be written to the standard error, and a
+ non-interactive shell will exit.
'-v'
Print shell input lines as they are read.
@@ -4421,7 +4710,7 @@ This builtin allows you to change additional shell optional behavior.
option is used, those available with the '-o' option to the 'set'
builtin command (*note The Set Builtin::). With no options, or
with the '-p' option, a list of all settable options is displayed,
- with an indication of whether or not each is set; if OPTNAMES are
+ with an indication of whether or not each is set; if OPTNAMEs are
supplied, the output is restricted to those options. The '-p'
option causes output to be displayed in a form that may be reused
as input. Other options have the following meanings:
@@ -4435,7 +4724,7 @@ This builtin allows you to change additional shell optional behavior.
'-q'
Suppresses normal output; the return status indicates whether
the OPTNAME is set or unset. If multiple OPTNAME arguments
- are given with '-q', the return status is zero if all OPTNAMES
+ are given with '-q', the return status is zero if all OPTNAMEs
are enabled; non-zero otherwise.
'-o'
@@ -4448,7 +4737,7 @@ This builtin allows you to change additional shell optional behavior.
Unless otherwise noted, the 'shopt' options are disabled (off) by
default.
- The return status when listing options is zero if all OPTNAMES are
+ The return status when listing options is zero if all OPTNAMEs are
enabled, non-zero otherwise. When setting or unsetting options,
the return status is zero unless an OPTNAME is not a valid shell
option.
@@ -4532,7 +4821,7 @@ This builtin allows you to change additional shell optional behavior.
'direxpand'
If set, Bash replaces directory names with the results of word
expansion when performing filename completion. This changes
- the contents of the readline editing buffer. If not set, Bash
+ the contents of the Readline editing buffer. If not set, Bash
attempts to preserve what the user typed.
'dirspell'
@@ -4616,6 +4905,11 @@ This builtin allows you to change additional shell optional behavior.
upper-case and lower-case ASCII characters will collate
together.
+ 'globskipdots'
+ If set, filename expansion will never match the filenames '.'
+ and '..', even if the pattern begins with a '.'. This option
+ is enabled by default.
+
'globstar'
If set, the pattern '**' used in a filename expansion context
will match all files and zero or more directories and
@@ -4675,7 +4969,7 @@ This builtin allows you to change additional shell optional behavior.
'localvar_inherit'
If set, local variables inherit the value and attributes of a
variable of the same name that exists at a previous scope
- before any new value is assigned. The NAMEREF attribute is
+ before any new value is assigned. The 'nameref' attribute is
not inherited.
'localvar_unset'
@@ -4706,14 +5000,26 @@ This builtin allows you to change additional shell optional behavior.
'nocasematch'
If set, Bash matches patterns in a case-insensitive fashion
when performing matching while executing 'case' or '[['
- conditional commands, when performing pattern substitution
- word expansions, or when filtering possible completions as
- part of programmable completion.
+ conditional commands (*note Conditional Constructs::, when
+ performing pattern substitution word expansions, or when
+ filtering possible completions as part of programmable
+ completion.
+
+ 'noexpand_translation'
+ If set, Bash encloses the translated results of $"..."
+ quoting in single quotes instead of double quotes. If the
+ string is not translated, this has no effect.
'nullglob'
If set, Bash allows filename patterns which match no files to
expand to a null string, rather than themselves.
+ 'patsub_replacement'
+ If set, Bash expands occurrences of '&' in the replacement
+ string of pattern substitution to the text matched by the
+ pattern, as described above (*note Shell Parameter
+ Expansion::). This option is enabled by default.
+
'progcomp'
If set, the programmable completion facilities (*note
Programmable Completion::) are enabled. This option is
@@ -4745,9 +5051,15 @@ This builtin allows you to change additional shell optional behavior.
parameters.
'sourcepath'
- If set, the 'source' builtin uses the value of 'PATH' to find
- the directory containing the file supplied as an argument.
- This option is enabled by default.
+ If set, the '.' ('source') builtin uses the value of 'PATH' to
+ find the directory containing the file supplied as an
+ argument. This option is enabled by default.
+
+ 'varredir_close'
+ If set, the shell automatically closes file descriptors
+ assigned using the '{varname}' redirection syntax (*note
+ Redirections::) instead of leaving them open when the command
+ completes.
'xpg_echo'
If set, the 'echo' builtin expands backslash-escape sequences
@@ -4980,7 +5292,7 @@ Variables::).
'BASH_LINENO'
An array variable whose members are the line numbers in source
- files where each corresponding member of FUNCNAME was invoked.
+ files where each corresponding member of 'FUNCNAME' was invoked.
'${BASH_LINENO[$i]}' is the line number in the source file
('${BASH_SOURCE[$i+1]}') where '${FUNCNAME[$i]}' was called (or
'${BASH_LINENO[$i-1]}' if referenced within another shell
@@ -5017,10 +5329,10 @@ Variables::).
to the array members are as follows:
'BASH_VERSINFO[0]'
- The major version number (the RELEASE).
+ The major version number (the "release").
'BASH_VERSINFO[1]'
- The minor version number (the VERSION).
+ The minor version number (the "version").
'BASH_VERSINFO[2]'
The patch level.
@@ -5029,7 +5341,7 @@ Variables::).
The build version.
'BASH_VERSINFO[4]'
- The release status (e.g., BETA1).
+ The release status (e.g., 'beta1').
'BASH_VERSINFO[5]'
The value of 'MACHTYPE'.
@@ -5082,12 +5394,12 @@ Variables::).
'COMP_TYPE'
Set to an integer value corresponding to the type of completion
- attempted that caused a completion function to be called: TAB, for
- normal completion, '?', for listing completions after successive
- tabs, '!', for listing alternatives on partial word completion,
- '@', to list completions if the word is not unmodified, or '%', for
- menu completion. This variable is available only in shell
- functions and external commands invoked by the programmable
+ attempted that caused a completion function to be called: <TAB>,
+ for normal completion, '?', for listing completions after
+ successive tabs, '!', for listing alternatives on partial word
+ completion, '@', to list completions if the word is not unmodified,
+ or '%', for menu completion. This variable is available only in
+ shell functions and external commands invoked by the programmable
completion facilities (*note Programmable Completion::).
'COMP_KEY'
@@ -5133,7 +5445,7 @@ Variables::).
Emacs shell buffer and disables line editing.
'ENV'
- Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup
+ Expanded and executed similarly to 'BASH_ENV' (*note Bash Startup
Files::) when an interactive shell is invoked in POSIX Mode (*note
Bash POSIX Mode::).
@@ -5141,16 +5453,16 @@ Variables::).
Each time this parameter is referenced, it expands to the number of
seconds since the Unix Epoch as a floating point value with
micro-second granularity (see the documentation for the C library
- function TIME for the definition of Epoch). Assignments to
+ function 'time' for the definition of Epoch). Assignments to
'EPOCHREALTIME' are ignored. If 'EPOCHREALTIME' is unset, it loses
its special properties, even if it is subsequently reset.
'EPOCHSECONDS'
Each time this parameter is referenced, it expands to the number of
seconds since the Unix Epoch (see the documentation for the C
- library function TIME for the definition of Epoch). Assignments to
- 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it loses
- its special properties, even if it is subsequently reset.
+ library function 'time' for the definition of Epoch). Assignments
+ to 'EPOCHSECONDS' are ignored. If 'EPOCHSECONDS' is unset, it
+ loses its special properties, even if it is subsequently reset.
'EUID'
The numeric effective user id of the current user. This variable
@@ -5217,7 +5529,7 @@ Variables::).
'histchars'
Up to three characters which control history expansion, quick
substitution, and tokenization (*note History Interaction::). The
- first character is the HISTORY EXPANSION character, that is, the
+ first character is the "history expansion" character, that is, the
character which signifies the start of a history expansion,
normally '!'. The second character is the character which
signifies 'quick substitution' when seen as the first character on
@@ -5295,7 +5607,7 @@ Variables::).
'HISTTIMEFORMAT'
If this variable is set and not null, its value is used as a format
- string for STRFTIME to print the time stamp associated with each
+ string for 'strftime' to print the time stamp associated with each
history entry displayed by the 'history' builtin. If this variable
is set, time stamps are written to the history file so they may be
preserved across shell sessions. This uses the history comment
@@ -5449,7 +5761,7 @@ Variables::).
with '#? '
'PS4'
- The value of this parameter is expanded like PS1 and the expanded
+ The value of this parameter is expanded like 'PS1' and the expanded
value is the prompt printed before the command line is echoed when
the '-x' option is set (*note The Set Builtin::). The first
character of the expanded value is replicated multiple times, as
@@ -5465,15 +5777,19 @@ Variables::).
seeds the random number generator. If 'RANDOM' is unset, it loses
its special properties, even if it is subsequently reset.
+'READLINE_ARGUMENT'
+ Any numeric argument given to a Readline command that was defined
+ using 'bind -x' (*note Bash Builtins:: when it was invoked.
+
'READLINE_LINE'
The contents of the Readline line buffer, for use with 'bind -x'
(*note Bash Builtins::).
'READLINE_MARK'
- The position of the MARK (saved insertion point) in the Readline
+ The position of the "mark" (saved insertion point) in the Readline
line buffer, for use with 'bind -x' (*note Bash Builtins::). The
characters between the insertion point and the mark are often
- called the REGION.
+ called the "region".
'READLINE_POINT'
The position of the insertion point in the Readline line buffer,
@@ -5487,7 +5803,7 @@ Variables::).
started. Assignment to this variable resets the count to the value
assigned, and the expanded value becomes the value assigned plus
the number of seconds since the assignment. The number of seconds
- at shell invocation and the current time is always determined by
+ at shell invocation and the current time are always determined by
querying the system clock. If 'SECONDS' is unset, it loses its
special properties, even if it is subsequently reset.
@@ -5843,14 +6159,15 @@ Invoked by remote shell daemon
..............................
Bash attempts to determine when it is being run with its standard input
-connected to a network connection, as when executed by the remote shell
-daemon, usually 'rshd', or the secure shell daemon 'sshd'. If Bash
-determines it is being run in this fashion, it reads and executes
-commands from '~/.bashrc', if that file exists and is readable. It will
-not do this if invoked as 'sh'. The '--norc' option may be used to
-inhibit this behavior, and the '--rcfile' option may be used to force
-another file to be read, but neither 'rshd' nor 'sshd' generally invoke
-the shell with those options or allow them to be specified.
+connected to a network connection, as when executed by the historical
+remote shell daemon, usually 'rshd', or the secure shell daemon 'sshd'.
+If Bash determines it is being run non-interactively in this fashion, it
+reads and executes commands from '~/.bashrc', if that file exists and is
+readable. It will not do this if invoked as 'sh'. The '--norc' option
+may be used to inhibit this behavior, and the '--rcfile' option may be
+used to force another file to be read, but neither 'rshd' nor 'sshd'
+generally invoke the shell with those options or allow them to be
+specified.
Invoked with unequal effective and real UID/GIDs
................................................
@@ -5874,7 +6191,7 @@ File: bashref.info, Node: Interactive Shells, Next: Bash Conditional Expressio
* What is an Interactive Shell?:: What determines whether a shell is Interactive.
* Is this Shell Interactive?:: How to tell if a shell is interactive.
-* Interactive Shell Behavior:: What changes in a interactive shell?
+* Interactive Shell Behavior:: What changes in an interactive shell?

File: bashref.info, Node: What is an Interactive Shell?, Next: Is this Shell Interactive?, Up: Interactive Shells
@@ -5882,8 +6199,8 @@ File: bashref.info, Node: What is an Interactive Shell?, Next: Is this Shell I
6.3.1 What is an Interactive Shell?
-----------------------------------
-An interactive shell is one started without non-option arguments, unless
-'-s' is specified, without specifying the '-c' option, and whose input
+An interactive shell is one started without non-option arguments (unless
+'-s' is specified) and without specifying the '-c' option, whose input
and error output are both connected to terminals (as determined by
'isatty(3)'), or one started with the '-i' option.
@@ -5941,7 +6258,7 @@ several ways.
string escape sequences.
4. Bash executes the values of the set elements of the
- 'PROMPT_COMMANDS' array variable as commands before printing the
+ 'PROMPT_COMMAND' array variable as commands before printing the
primary prompt, '$PS1' (*note Bash Variables::).
5. Readline (*note Command Line Editing::) is used to read commands
@@ -5993,9 +6310,11 @@ several ways.
19. Parser syntax errors will not cause the shell to exit.
- 20. Simple spelling correction for directory arguments to the 'cd'
- builtin is enabled by default (see the description of the 'cdspell'
- option to the 'shopt' builtin in *note The Shopt Builtin::).
+ 20. If the 'cdspell' shell option is enabled, the shell will attempt
+ simple spelling correction for directory arguments to the 'cd'
+ builtin (see the description of the 'cdspell' option to the 'shopt'
+ builtin in *note The Shopt Builtin::). The 'cdspell' option is
+ only effective in interactive shells.
21. The shell will check the value of the 'TMOUT' variable and exit if
a command is not read within the specified number of seconds after
@@ -6007,10 +6326,11 @@ File: bashref.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic
6.4 Bash Conditional Expressions
================================
-Conditional expressions are used by the '[[' compound command and the
-'test' and '[' builtin commands. The 'test' and '[' commands determine
-their behavior based on the number of arguments; see the descriptions of
-those commands for any other command-specific actions.
+Conditional expressions are used by the '[[' compound command (*note
+Conditional Constructs::) and the 'test' and '[' builtin commands (*note
+Bourne Shell Builtins::). The 'test' and '[' commands determine their
+behavior based on the number of arguments; see the descriptions of those
+commands for any other command-specific actions.
Expressions may be unary or binary, and are formed from the following
primaries. Unary expressions are often used to examine the status of a
@@ -6228,8 +6548,8 @@ parameter expansion syntax. A shell variable that is null or unset
evaluates to 0 when referenced by name without using the parameter
expansion syntax. The value of a variable is evaluated as an arithmetic
expression when it is referenced, or when a variable which has been
-given the INTEGER attribute using 'declare -i' is assigned a value. A
-null value evaluates to 0. A shell variable need not have its INTEGER
+given the 'integer' attribute using 'declare -i' is assigned a value. A
+null value evaluates to 0. A shell variable need not have its 'integer'
attribute turned on to be used in an expression.
Integer constants follow the C language definition, without suffixes
@@ -6254,7 +6574,7 @@ File: bashref.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up:
6.6 Aliases
===========
-ALIASES allow a string to be substituted for a word when it is used as
+"Aliases" allow a string to be substituted for a word when it is used as
the first word of a simple command. The shell maintains a list of
aliases that may be set and unset with the 'alias' and 'unalias' builtin
commands.
@@ -6269,15 +6589,15 @@ is tested for aliases, but a word that is identical to an alias being
expanded is not expanded a second time. This means that one may alias
'ls' to '"ls -F"', for instance, and Bash does not try to recursively
expand the replacement text. If the last character of the alias value
-is a BLANK, then the next command word following the alias is also
+is a 'blank', then the next command word following the alias is also
checked for alias expansion.
Aliases are created and listed with the 'alias' command, and removed
with the 'unalias' command.
There is no mechanism for using arguments in the replacement text, as
-in 'csh'. If arguments are needed, a shell function should be used
-(*note Shell Functions::).
+in 'csh'. If arguments are needed, use a shell function (*note Shell
+Functions::).
Aliases are not expanded when the shell is not interactive, unless
the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt
@@ -6363,6 +6683,10 @@ negative number, that number is interpreted as relative to one greater
than the maximum index of NAME, so negative indices count back from the
end of the array, and an index of -1 references the last element.
+ The '+=' operator will append to an array variable when assigning
+using the compound assignment syntax; see *note Shell Parameters::
+above.
+
Any element of an array may be referenced using '${NAME[SUBSCRIPT]}'.
The braces are required to avoid conflicts with the shell's filename
expansion operators. If the SUBSCRIPT is '@' or '*', the word expands
@@ -6402,7 +6726,11 @@ NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT.
Negative subscripts to indexed arrays are interpreted as described
above. Unsetting the last element of an array variable does not unset
the variable. 'unset NAME', where NAME is an array, removes the entire
-array. A subscript of '*' or '@' also removes the entire array.
+array. 'unset NAME[SUBSCRIPT]' behaves differently depending on the
+array type when given a subscript of '*' or '@'. When NAME is an
+associative array, it removes the element with key '*' or '@'. If NAME
+is an indexed array, 'unset' removes all of the elements, but does not
+remove the array itself.
When using a variable name with a subscript as an argument to a
command, such as with 'unset', without using the word expansion syntax
@@ -6477,10 +6805,14 @@ File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack
'popd'
popd [-n] [+N | -N]
+ Removes elements from the directory stack. The elements are
+ numbered from 0 starting at the first directory listed by 'dirs';
+ that is, 'popd' is equivalent to 'popd +0'.
+
When no arguments are given, 'popd' removes the top directory from
- the stack and performs a 'cd' to the new top directory. The
- elements are numbered from 0 starting at the first directory listed
- with 'dirs'; that is, 'popd' is equivalent to 'popd +0'.
+ the stack and changes to the new top directory.
+
+ Arguments, if supplied, have the following meanings:
'-n'
Suppresses the normal change of directory when removing
@@ -6488,17 +6820,32 @@ File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack
manipulated.
'+N'
Removes the Nth directory (counting from the left of the list
- printed by 'dirs'), starting with zero.
+ printed by 'dirs'), starting with zero, from the stack.
'-N'
Removes the Nth directory (counting from the right of the list
- printed by 'dirs'), starting with zero.
+ printed by 'dirs'), starting with zero, from the stack.
+
+ If the top element of the directory stack is modified, and the '-n'
+ option was not supplied, 'popd' uses the 'cd' builtin to change to
+ the directory at the top of the stack. If the 'cd' fails, 'popd'
+ returns a non-zero value.
+
+ Otherwise, 'popd' returns an unsuccessful status if an invalid
+ option is encountered, the directory stack is empty, or a
+ non-existent directory stack entry is specified.
+
+ If the 'popd' command is successful, Bash runs 'dirs' to show the
+ final contents of the directory stack, and the return status is 0.
'pushd'
pushd [-n] [+N | -N | DIR]
- Save the current directory on the top of the directory stack and
- then 'cd' to DIR. With no arguments, 'pushd' exchanges the top two
- directories and makes the new top the current directory.
+ Adds a directory to the top of the directory stack, or rotates the
+ stack, making the new top of the stack the current working
+ directory. With no arguments, 'pushd' exchanges the top two
+ elements of the directory stack.
+
+ Arguments, if supplied, have the following meanings:
'-n'
Suppresses the normal change of directory when rotating or
@@ -6513,9 +6860,20 @@ File: bashref.info, Node: Directory Stack Builtins, Up: The Directory Stack
printed by 'dirs', starting with zero) to the top of the list
by rotating the stack.
'DIR'
- Makes DIR be the top of the stack, making it the new current
- directory as if it had been supplied as an argument to the
- 'cd' builtin.
+ Makes DIR be the top of the stack.
+
+ After the stack has been modified, if the '-n' option was not
+ supplied, 'pushd' uses the 'cd' builtin to change to the directory
+ at the top of the stack. If the 'cd' fails, 'pushd' returns a
+ non-zero value.
+
+ Otherwise, if no arguments are supplied, 'pushd' returns 0 unless
+ the directory stack is empty. When rotating the directory stack,
+ 'pushd' returns 0 unless the directory stack is empty or a
+ non-existent directory stack element is specified.
+
+ If the 'pushd' command is successful, Bash runs 'dirs' to show the
+ final contents of the directory stack.

File: bashref.info, Node: Controlling the Prompt, Next: The Restricted Shell, Prev: The Directory Stack, Up: Bash Features
@@ -6523,9 +6881,9 @@ File: bashref.info, Node: Controlling the Prompt, Next: The Restricted Shell,
6.9 Controlling the Prompt
==========================
-Bash examines the value of the array variable 'PROMPT_COMMANDS' just
+Bash examines the value of the array variable 'PROMPT_COMMAND' just
before printing each primary prompt. If any elements in
-'PROMPT_COMMANDS' are set and non-null, Bash executes each value, in
+'PROMPT_COMMAND' are set and non-null, Bash executes each value, in
numeric order, just as if it had been typed on the command line.
In addition, the following table describes the special characters
@@ -6571,8 +6929,8 @@ which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4':
'\V'
The release of Bash, version + patchlevel (e.g., 2.00.0)
'\w'
- The current working directory, with '$HOME' abbreviated with a
- tilde (uses the '$PROMPT_DIRTRIM' variable).
+ The value of the 'PWD' shell variable ('$PWD'), with '$HOME'
+ abbreviated with a tilde (uses the '$PROMPT_DIRTRIM' variable).
'\W'
The basename of '$PWD', with '$HOME' abbreviated with a tilde.
'\!'
@@ -6638,7 +6996,8 @@ with the exception that the following are disallowed or not performed:
* Using the 'enable' builtin command to enable disabled shell
builtins.
* Specifying the '-p' option to the 'command' builtin.
- * Turning off restricted mode with 'set +r' or 'set +o restricted'.
+ * Turning off restricted mode with 'set +r' or 'shopt -u
+ restricted_shell'.
These restrictions are enforced after any startup files are read.
@@ -6649,11 +7008,11 @@ spawned to execute the script.
The restricted shell mode is only one component of a useful
restricted environment. It should be accompanied by setting 'PATH' to a
value that allows execution of only a few verified commands (commands
-that allow shell escapes are particularly vulnerable), leaving the user
-in a non-writable directory other than his home directory after login,
-not allowing the restricted shell to execute shell scripts, and cleaning
-the environment of variables that cause some commands to modify their
-behavior (e.g., 'VISUAL' or 'PAGER').
+that allow shell escapes are particularly vulnerable), changing the
+current directory to a non-writable directory other than '$HOME' after
+login, not allowing the restricted shell to execute shell scripts, and
+cleaning the environment of variables that cause some commands to modify
+their behavior (e.g., 'VISUAL' or 'PAGER').
Modern systems provide more secure ways to implement a restricted
environment, such as 'jails', 'zones', or 'containers'.
@@ -6696,203 +7055,219 @@ startup files.
7. Reserved words appearing in a context where reserved words are
recognized do not undergo alias expansion.
- 8. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
+ 8. Alias expansion is performed when initially parsing a command
+ substitution. The default mode generally defers it, when enabled,
+ until the command substitution is executed. This means that
+ command substitution will not expand aliases that are defined after
+ the command substitution is initially parsed (e.g., as part of a
+ function definition).
+
+ 9. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
and '!!' to '!' are enabled, and parameter expansion is performed
on the values of 'PS1' and 'PS2' regardless of the setting of the
'promptvars' option.
- 9. The POSIX startup files are executed ('$ENV') rather than the
+ 10. The POSIX startup files are executed ('$ENV') rather than the
normal Bash files.
- 10. Tilde expansion is only performed on assignments preceding a
+ 11. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
- 11. The default history file is '~/.sh_history' (this is the default
+ 12. The default history file is '~/.sh_history' (this is the default
value of '$HISTFILE').
- 12. Redirection operators do not perform filename expansion on the
+ 13. Redirection operators do not perform filename expansion on the
word in the redirection unless the shell is interactive.
- 13. Redirection operators do not perform word splitting on the word in
+ 14. Redirection operators do not perform word splitting on the word in
the redirection.
- 14. Function names must be valid shell 'name's. That is, they may not
+ 15. Function names must be valid shell 'name's. That is, they may not
contain characters other than letters, digits, and underscores, and
may not start with a digit. Declaring a function with an invalid
name causes a fatal syntax error in non-interactive shells.
- 15. Function names may not be the same as one of the POSIX special
+ 16. Function names may not be the same as one of the POSIX special
builtins.
- 16. POSIX special builtins are found before shell functions during
+ 17. POSIX special builtins are found before shell functions during
command lookup.
- 17. When printing shell function definitions (e.g., by 'type'), Bash
+ 18. When printing shell function definitions (e.g., by 'type'), Bash
does not print the 'function' keyword.
- 18. Literal tildes that appear as the first character in elements of
+ 19. Literal tildes that appear as the first character in elements of
the 'PATH' variable are not expanded as described above under *note
Tilde Expansion::.
- 19. The 'time' reserved word may be used by itself as a command. When
+ 20. The 'time' reserved word may be used by itself as a command. When
used in this way, it displays timing statistics for the shell and
its completed children. The 'TIMEFORMAT' variable controls the
format of the timing information.
- 20. When parsing and expanding a ${...} expansion that appears within
+ 21. When parsing and expanding a ${...} expansion that appears within
double quotes, single quotes are no longer special and cannot be
used to quote a closing brace or other special character, unless
the operator is one of those defined to perform pattern removal.
In this case, they do not have to appear as matched pairs.
- 21. The parser does not recognize 'time' as a reserved word if the
+ 22. The parser does not recognize 'time' as a reserved word if the
next token begins with a '-'.
- 22. The '!' character does not introduce history expansion within a
+ 23. The '!' character does not introduce history expansion within a
double-quoted string, even if the 'histexpand' option is enabled.
- 23. If a POSIX special builtin returns an error status, a
+ 24. If a POSIX special builtin returns an error status, a
non-interactive shell exits. The fatal errors are those listed in
the POSIX standard, and include things like passing incorrect
options, redirection errors, variable assignment errors for
assignments preceding the command name, and so on.
- 24. A non-interactive shell exits with an error status if a variable
+ 25. A non-interactive shell exits with an error status if a variable
assignment error occurs when no command name follows the assignment
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
- 25. A non-interactive shell exits with an error status if a variable
+ 26. A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a
- special builtin, but not with any other simple command.
+ special builtin, but not with any other simple command. For any
+ other simple command, the shell aborts execution of that command,
+ and execution continues at the top level ("the shell shall not
+ perform any further processing of the command in which the error
+ occurred").
- 26. A non-interactive shell exits with an error status if the
+ 27. A non-interactive shell exits with an error status if the
iteration variable in a 'for' statement or the selection variable
in a 'select' statement is a readonly variable.
- 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not
+ 28. Non-interactive shells exit if FILENAME in '.' FILENAME is not
found.
- 28. Non-interactive shells exit if a syntax error in an arithmetic
+ 29. Non-interactive shells exit if a syntax error in an arithmetic
expansion results in an invalid expression.
- 29. Non-interactive shells exit if a parameter expansion error occurs.
+ 30. Non-interactive shells exit if a parameter expansion error occurs.
- 30. Non-interactive shells exit if there is a syntax error in a script
+ 31. Non-interactive shells exit if there is a syntax error in a script
read with the '.' or 'source' builtins, or in a string processed by
the 'eval' builtin.
- 31. While variable indirection is available, it may not be applied to
+ 32. While variable indirection is available, it may not be applied to
the '#' and '?' special parameters.
- 32. When expanding the '*' special parameter in a pattern context
- where the expansion is double-quoted does not treat the '$*' as if
- it were double-quoted.
+ 33. Expanding the '*' special parameter in a pattern context where the
+ expansion is double-quoted does not treat the '$*' as if it were
+ double-quoted.
- 33. Assignment statements preceding POSIX special builtins persist in
+ 34. Assignment statements preceding POSIX special builtins persist in
the shell environment after the builtin completes.
- 34. The 'command' builtin does not prevent builtins that take
+ 35. The 'command' builtin does not prevent builtins that take
assignment statements as arguments from expanding them as
assignment statements; when not in POSIX mode, assignment builtins
lose their assignment statement expansion properties when preceded
by 'command'.
- 35. The 'bg' builtin uses the required format to describe each job
+ 36. The 'bg' builtin uses the required format to describe each job
placed in the background, which does not include an indication of
whether the job is the current or previous job.
- 36. The output of 'kill -l' prints all the signal names on a single
+ 37. The output of 'kill -l' prints all the signal names on a single
line, separated by spaces, without the 'SIG' prefix.
- 37. The 'kill' builtin does not accept signal names with a 'SIG'
+ 38. The 'kill' builtin does not accept signal names with a 'SIG'
prefix.
- 38. The 'export' and 'readonly' builtin commands display their output
+ 39. The 'export' and 'readonly' builtin commands display their output
in the format required by POSIX.
- 39. The 'trap' builtin displays signal names without the leading
+ 40. The 'trap' builtin displays signal names without the leading
'SIG'.
- 40. The 'trap' builtin doesn't check the first argument for a possible
+ 41. The 'trap' builtin doesn't check the first argument for a possible
signal specification and revert the signal handling to the original
disposition if it is, unless that argument consists solely of
digits and is a valid signal number. If users want to reset the
handler for a given signal to the original disposition, they should
use '-' as the first argument.
- 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL
+ 42. 'trap -p' displays signals whose dispositions are set to SIG_DFL
and those that were ignored when the shell started.
- 42. The '.' and 'source' builtins do not search the current directory
+ 43. The '.' and 'source' builtins do not search the current directory
for the filename argument if it is not found by searching 'PATH'.
- 43. Enabling POSIX mode has the effect of setting the
+ 44. Enabling POSIX mode has the effect of setting the
'inherit_errexit' option, so subshells spawned to execute command
substitutions inherit the value of the '-e' option from the parent
shell. When the 'inherit_errexit' option is not enabled, Bash
clears the '-e' option in such subshells.
- 44. Enabling POSIX mode has the effect of setting the 'shift_verbose'
+ 45. Enabling POSIX mode has the effect of setting the 'shift_verbose'
option, so numeric arguments to 'shift' that exceed the number of
positional parameters will result in an error message.
- 45. When the 'alias' builtin displays alias definitions, it does not
+ 46. When the 'alias' builtin displays alias definitions, it does not
display them with a leading 'alias ' unless the '-p' option is
supplied.
- 46. When the 'set' builtin is invoked without options, it does not
+ 47. When the 'set' builtin is invoked without options, it does not
display shell function names and definitions.
- 47. When the 'set' builtin is invoked without options, it displays
+ 48. When the 'set' builtin is invoked without options, it displays
variable values without quotes, unless they contain shell
metacharacters, even if the result contains nonprinting characters.
- 48. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname
+ 49. When the 'cd' builtin is invoked in logical mode, and the pathname
constructed from '$PWD' and the directory name supplied as an
argument does not refer to an existing directory, 'cd' will fail
- instead of falling back to PHYSICAL mode.
+ instead of falling back to physical mode.
- 49. When the 'cd' builtin cannot change a directory because the length
+ 50. When the 'cd' builtin cannot change a directory because the length
of the pathname constructed from '$PWD' and the directory name
- supplied as an argument exceeds PATH_MAX when all symbolic links
+ supplied as an argument exceeds 'PATH_MAX' when all symbolic links
are expanded, 'cd' will fail instead of attempting to use only the
supplied directory name.
- 50. The 'pwd' builtin verifies that the value it prints is the same as
+ 51. The 'pwd' builtin verifies that the value it prints is the same as
the current directory, even if it is not asked to check the file
system with the '-P' option.
- 51. When listing the history, the 'fc' builtin does not include an
+ 52. When listing the history, the 'fc' builtin does not include an
indication of whether or not a history entry has been modified.
- 52. The default editor used by 'fc' is 'ed'.
+ 53. The default editor used by 'fc' is 'ed'.
- 53. The 'type' and 'command' builtins will not report a non-executable
+ 54. The 'type' and 'command' builtins will not report a non-executable
file as having been found, though the shell will attempt to execute
such a file if it is the only so-named file found in '$PATH'.
- 54. The 'vi' editing mode will invoke the 'vi' editor directly when
+ 55. The 'vi' editing mode will invoke the 'vi' editor directly when
the 'v' command is run, instead of checking '$VISUAL' and
'$EDITOR'.
- 55. When the 'xpg_echo' option is enabled, Bash does not attempt to
+ 56. When the 'xpg_echo' option is enabled, Bash does not attempt to
interpret any arguments to 'echo' as options. Each argument is
displayed, after escape characters are converted.
- 56. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
+ 57. The 'ulimit' builtin uses a block size of 512 bytes for the '-c'
and '-f' options.
- 57. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
+ 58. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not
interrupt the 'wait' builtin and cause it to return immediately.
The trap command is run once for each child that exits.
- 58. The 'read' builtin may be interrupted by a signal for which a trap
+ 59. The 'read' builtin may be interrupted by a signal for which a trap
has been set. If Bash receives a trapped signal while executing
'read', the trap handler executes and 'read' returns an exit status
greater than 128.
- 59. Bash removes an exited background process's status from the list
+ 60. The 'printf' builtin uses 'double' (via 'strtod') to convert
+ arguments corresponding to floating point conversion specifiers,
+ instead of 'long double' if it's available. The 'L' length
+ modifier forces 'printf' to use 'long double' if it's available.
+
+ 61. Bash removes an exited background process's status from the list
of such statuses after the 'wait' builtin is used to obtain it.
There is other POSIX behavior that Bash does not implement by default
@@ -6915,7 +7290,7 @@ File: bashref.info, Node: Shell Compatibility Mode, Prev: Bash POSIX Mode, Up
6.12 Shell Compatibility Mode
=============================
-Bash-4.0 introduced the concept of a 'shell compatibility level',
+Bash-4.0 introduced the concept of a "shell compatibility level",
specified as a set of options to the shopt builtin ('compat31',
'compat32', 'compat40', 'compat41', and so on). There is only one
current compatibility level - each option is mutually exclusive. The
@@ -6927,7 +7302,7 @@ be a temporary solution.
This section does not mention behavior that is standard for a
particular version (e.g., setting 'compat32' means that quoting the rhs
of the regexp matching operator quotes special regexp characters in the
-word, which is default behavior in bash-3.2 and above).
+word, which is default behavior in bash-3.2 and subsequent versions).
If a user enables, say, 'compat32', it may affect the behavior of
other compatibility levels up to and including the current compatibility
@@ -7004,8 +7379,8 @@ required for bash-5.1 and later versions.
'compat43'
* the shell does not print a warning message if an attempt is
made to use a quoted compound assignment as an argument to
- declare (declare -a foo='(1 2)'). Later versions warn that
- this usage is deprecated
+ declare (e.g., declare -a foo='(1 2)'). Later versions warn
+ that this usage is deprecated
* word expansion errors are considered non-fatal errors that
cause the current command to fail, even in posix mode (the
default behavior is to make them fatal errors that cause the
@@ -7040,6 +7415,38 @@ required for bash-5.1 and later versions.
when producing output that can be reused as input. Bash-5.1
suppresses that message when the '-l' option is supplied.
+'compat51 (set using BASH_COMPAT)'
+ * The 'unset' builtin will unset the array 'a' given an argument
+ like 'a[@]'. Bash-5.2 will unset an element with key '@'
+ (associative arrays) or remove all the elements without
+ unsetting the array (indexed arrays)
+ * arithmetic commands ( ((...)) ) and the expressions in an
+ arithmetic for statement can be expanded more than once
+ * expressions used as arguments to arithmetic operators in the
+ '[[' conditional command can be expanded more than once
+ * the expressions in substring parameter brace expansion can be
+ expanded more than once
+ * the expressions in the $(( ... )) word expansion can be
+ expanded more than once
+ * arithmetic expressions used as indexed array subscripts can be
+ expanded more than once
+ * 'test -v', when given an argument of 'A[@]', where A is an
+ existing associative array, will return true if the array has
+ any set elements. Bash-5.2 will look for and report on a key
+ named '@'
+ * the ${PARAMETER[:]=VALUE} word expansion will return VALUE,
+ before any variable-specific transformations have been
+ performed (e.g., converting to lowercase). Bash-5.2 will
+ return the final value assigned to the variable.
+ * Parsing command substitutions will behave as if extended glob
+ (*note The Shopt Builtin::) is enabled, so that parsing a
+ command substitution containing an extglob pattern (say, as
+ part of a shell function) will not fail. This assumes the
+ intent is to enable extglob before the command is executed and
+ word expansions are performed. It will fail at word expansion
+ time if extglob hasn't been enabled by the time the command is
+ executed.
+

File: bashref.info, Node: Job Control, Next: Command Line Editing, Prev: Bash Features, Up: Top
@@ -7093,19 +7500,19 @@ when 'stty tostop' is in effect) the terminal are sent a 'SIGTTIN'
caught, suspends the process.
If the operating system on which Bash is running supports job
-control, Bash contains facilities to use it. Typing the SUSPEND
+control, Bash contains facilities to use it. Typing the "suspend"
character (typically '^Z', Control-Z) while a process is running causes
that process to be stopped and returns control to Bash. Typing the
-DELAYED SUSPEND character (typically '^Y', Control-Y) causes the process
-to be stopped when it attempts to read input from the terminal, and
-control to be returned to Bash. The user then manipulates the state of
-this job, using the 'bg' command to continue it in the background, the
-'fg' command to continue it in the foreground, or the 'kill' command to
-kill it. A '^Z' takes effect immediately, and has the additional side
-effect of causing pending output and typeahead to be discarded.
+"delayed suspend" character (typically '^Y', Control-Y) causes the
+process to be stopped when it attempts to read input from the terminal,
+and control to be returned to Bash. The user then manipulates the state
+of this job, using the 'bg' command to continue it in the background,
+the 'fg' command to continue it in the foreground, or the 'kill' command
+to kill it. A '^Z' takes effect immediately, and has the additional
+side effect of causing pending output and typeahead to be discarded.
There are a number of ways to refer to a job in the shell. The
-character '%' introduces a job specification (JOBSPEC).
+character '%' introduces a job specification ("jobspec").
Job number 'n' may be referred to as '%n'. The symbols '%%' and '%+'
refer to the shell's notion of the current job, which is the last job
@@ -7234,7 +7641,7 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables,
for all running background jobs and the last-executed process
substitution, if its process id is the same as $!, and the return
status is zero. If the '-n' option is supplied, 'wait' waits for a
- single job from the list of PIDS or JOBSPECS or, if no arguments
+ single job from the list of PIDs or JOBSPECs or, if no arguments
are supplied, any job, to complete and returns its exit status. If
none of the supplied arguments is a child of the shell, or if no
arguments are supplied and the shell has no unwaited-for children,
@@ -7245,9 +7652,12 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables,
assignment. This is useful only when the '-n' option is supplied.
Supplying the '-f' option, when job control is enabled, forces
'wait' to wait for each PID or JOBSPEC to terminate before
- returning its status, intead of returning when it changes status.
+ returning its status, instead of returning when it changes status.
If neither JOBSPEC nor PID specifies an active child process of the
- shell, the return status is 127.
+ shell, the return status is 127. If 'wait' is interrupted by a
+ signal, the return status will be greater than 128, as described
+ above (*note Signals::). Otherwise, the return status is the exit
+ status of the last process or job waited for.
'disown'
disown [-ar] [-h] [JOBSPEC ... | PID ... ]
@@ -7265,8 +7675,11 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables,
suspend [-f]
Suspend the execution of this shell until it receives a 'SIGCONT'
- signal. A login shell cannot be suspended; the '-f' option can be
- used to override this and force the suspension.
+ signal. A login shell, or a shell without job control enabled,
+ cannot be suspended; the '-f' option can be used to override this
+ and force the suspension. The return status is 0 unless the shell
+ is a login shell or job control is not enabled and '-f' is not
+ supplied.
When job control is not active, the 'kill' and 'wait' builtins do not
accept JOBSPEC arguments. They must be supplied process IDs.
@@ -7427,9 +7840,9 @@ Printing characters
Undo the last editing command. You can undo all the way back to an
empty line.
-(Depending on your configuration, the <Backspace> key be set to delete
-the character to the left of the cursor and the <DEL> key set to delete
-the character underneath the cursor, like 'C-d', rather than the
+(Depending on your configuration, the <Backspace> key might be set to
+delete the character to the left of the cursor and the <DEL> key set to
+delete the character underneath the cursor, like 'C-d', rather than the
character to the left of the cursor.)

@@ -7491,9 +7904,9 @@ available to be yanked back later, when you are typing another line.
as those used by 'M-f'.
'M-<DEL>'
- Kill from the cursor the start of the current word, or, if between
- words, to the start of the previous word. Word boundaries are the
- same as those used by 'M-b'.
+ Kill from the cursor to the start of the current word, or, if
+ between words, to the start of the previous word. Word boundaries
+ are the same as those used by 'M-b'.
'C-w'
Kill from the cursor to the previous whitespace. This is different
@@ -7582,7 +7995,7 @@ File: bashref.info, Node: Readline Init File, Next: Bindable Readline Commands
Although the Readline library comes with a set of Emacs-like keybindings
installed by default, it is possible to use a different set of
keybindings. Any user can customize programs that use Readline by
-putting commands in an "inputrc" file, conventionally in his home
+putting commands in an "inputrc" file, conventionally in their home
directory. The name of this file is taken from the value of the shell
variable 'INPUTRC'. If that variable is unset, the default is
'~/.inputrc'. If that file does not exist or cannot be read, the
@@ -7641,6 +8054,32 @@ Variable Settings
A great deal of run-time behavior is changeable with the following
variables.
+ 'active-region-start-color'
+ A string variable that controls the text color and background
+ when displaying the text in the active region (see the
+ description of 'enable-active-region' below). This string
+ must not take up any physical character positions on the
+ display, so it should consist only of terminal escape
+ sequences. It is output to the terminal before displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that puts the terminal in standout mode,
+ as obtained from the terminal's terminfo description. A
+ sample value might be '\e[01;33m'.
+
+ 'active-region-end-color'
+ A string variable that "undoes" the effects of
+ 'active-region-start-color' and restores "normal" terminal
+ display appearance after displaying text in the active region.
+ This string must not take up any physical character positions
+ on the display, so it should consist only of terminal escape
+ sequences. It is output to the terminal after displaying the
+ text in the active region. This variable is reset to the
+ default value whenever the terminal type changes. The default
+ value is the string that restores the terminal from standout
+ mode, as obtained from the terminal's terminfo description. A
+ sample value might be '\e[0m'.
+
'bell-style'
Controls what happens when Readline wants to ring the terminal
bell. If set to 'none', Readline never rings the bell. If
@@ -7662,7 +8101,10 @@ Variable Settings
If set to 'on', when listing completions, Readline displays
the common prefix of the set of possible completions using a
different color. The color definitions are taken from the
- value of the 'LS_COLORS' environment variable. The default is
+ value of the 'LS_COLORS' environment variable. If there is a
+ color definition in 'LS_COLORS' for the custom suffix
+ 'readline-colored-completion-prefix', Readline uses this color
+ for the common prefix instead of its default. The default is
'off'.
'colored-stats'
@@ -7708,8 +8150,9 @@ Variable Settings
than or equal to this value, Readline will ask whether or not
the user wishes to view them; otherwise, they are simply
listed. This variable must be set to an integer value greater
- than or equal to 0. A negative value means Readline should
- never ask. The default limit is '100'.
+ than or equal to zero. A zero value means Readline should
+ never ask; negative values are treated as zero. The default
+ limit is '100'.
'convert-meta'
If set to 'on', Readline will convert characters with the
@@ -7717,7 +8160,9 @@ Variable Settings
eighth bit and prefixing an <ESC> character, converting them
to a meta-prefixed key sequence. The default value is 'on',
but will be set to 'off' if the locale is one that contains
- eight-bit characters.
+ eight-bit characters. This variable is dependent on the
+ 'LC_CTYPE' locale category, and may change if the locale is
+ changed.
'disable-completion'
If set to 'On', Readline will inhibit word completion.
@@ -7726,7 +8171,7 @@ Variable Settings
'echo-control-characters'
When set to 'on', on operating systems that indicate they
- support it, readline echoes a character corresponding to a
+ support it, Readline echoes a character corresponding to a
signal generated from the keyboard. The default is 'on'.
'editing-mode'
@@ -7745,13 +8190,27 @@ Variable Settings
non-printing characters, which can be used to embed a terminal
control sequence into the mode string. The default is '@'.
+ 'enable-active-region'
+ The "point" is the current cursor position, and "mark" refers
+ to a saved cursor position (*note Commands For Moving::). The
+ text between the point and mark is referred to as the
+ "region". When this variable is set to 'On', Readline allows
+ certain commands to designate the region as "active". When
+ the region is active, Readline highlights the text in the
+ region using the value of the 'active-region-start-color',
+ which defaults to the string that enables the terminal's
+ standout mode. The active region shows the text inserted by
+ bracketed-paste and any matching text found by incremental and
+ non-incremental history searches. The default is 'On'.
+
'enable-bracketed-paste'
- When set to 'On', Readline will configure the terminal in a
- way that will enable it to insert each paste into the editing
- buffer as a single string of characters, instead of treating
- each character as if it had been read from the keyboard. This
- can prevent pasted characters from being interpreted as
- editing commands. The default is 'On'.
+ When set to 'On', Readline configures the terminal to insert
+ each paste into the editing buffer as a single string of
+ characters, instead of treating each character as if it had
+ been read from the keyboard. This is called putting the
+ terminal into "bracketed paste mode"; it prevents Readline
+ from executing any editing commands bound to key sequences
+ appearing in the pasted text. The default is 'On'.
'enable-keypad'
When set to 'on', Readline will try to enable the application
@@ -7798,7 +8257,9 @@ Variable Settings
regardless of what the terminal claims it can support. The
default value is 'off', but Readline will set it to 'on' if
the locale contains eight-bit characters. The name
- 'meta-flag' is a synonym for this variable.
+ 'meta-flag' is a synonym for this variable. This variable is
+ dependent on the 'LC_CTYPE' locale category, and may change if
+ the locale is changed.
'isearch-terminators'
The string of characters that should terminate an incremental
@@ -7863,7 +8324,9 @@ Variable Settings
If set to 'on', Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
sequence. The default is 'off', but Readline will set it to
- 'on' if the locale contains eight-bit characters.
+ 'on' if the locale contains eight-bit characters. This
+ variable is dependent on the 'LC_CTYPE' locale category, and
+ may change if the locale is changed.
'page-completions'
If set to 'on', Readline uses an internal 'more'-like pager to
@@ -7879,7 +8342,8 @@ Variable Settings
If set to 'on', Readline will undo all changes to history
lines before returning when 'accept-line' is executed. By
default, history lines may be modified and retain individual
- undo lists across calls to 'readline'. The default is 'off'.
+ undo lists across calls to 'readline()'. The default is
+ 'off'.
'show-all-if-ambiguous'
This alters the default behavior of the completion functions.
@@ -7906,7 +8370,7 @@ Variable Settings
If set to 'on', this alters the default completion behavior
when inserting a single match into the line. It's only active
when performing completion in the middle of a word. If
- enabled, readline does not insert characters from the
+ enabled, Readline does not insert characters from the
completion that match characters after point in the word being
completed, so portions of the word following the cursor are
not duplicated. For instance, if this is enabled, attempting
@@ -7956,11 +8420,11 @@ Key Bindings
part of the key name. The name of the key can be expressed in
different ways, depending on what you find most comfortable.
- In addition to command names, readline allows keys to be bound to a
+ In addition to command names, Readline allows keys to be bound to a
string that is inserted when the key is pressed (a MACRO).
The 'bind -p' command displays Readline function names and bindings
- in a format that can put directly into an initialization file.
+ in a format that can be put directly into an initialization file.
*Note Bash Builtins::.
KEYNAME: FUNCTION-NAME or MACRO
@@ -8438,6 +8902,11 @@ File: bashref.info, Node: Commands For History, Next: Commands For Text, Prev
supplied, specifies the history entry to use instead of the current
line.
+'fetch-history ()'
+ With a numeric argument, fetch that entry from the history list and
+ make it the current line. Without an argument, move back to the
+ first entry in the history list.
+

File: bashref.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
@@ -8754,7 +9223,7 @@ File: bashref.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev
characters in the macro appear as if typed at the keyboard.
'print-last-kbd-macro ()'
- Print the last keboard macro defined in a format suitable for the
+ Print the last keyboard macro defined in a format suitable for the
INPUTRC file.

@@ -8801,12 +9270,12 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up:
'character-search (C-])'
A character is read and point is moved to the next occurrence of
- that character. A negative count searches for previous
+ that character. A negative argument searches for previous
occurrences.
'character-search-backward (M-C-])'
A character is read and point is moved to the previous occurrence
- of that character. A negative count searches for subsequent
+ of that character. A negative argument searches for subsequent
occurrences.
'skip-csi-sequence ()'
@@ -8814,7 +9283,7 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up:
those defined for keys like Home and End. Such sequences begin
with a Control Sequence Indicator (CSI), usually ESC-[. If this
sequence is bound to "\e[", keys producing such sequences will have
- no effect unless explicitly bound to a readline command, instead of
+ no effect unless explicitly bound to a Readline command, instead of
inserting stray characters into the editing buffer. This is
unbound by default, but usually bound to ESC-[.
@@ -8849,6 +9318,12 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up:
is formatted in such a way that it can be made part of an INPUTRC
file. This command is unbound by default.
+'spell-correct-word (C-x s)'
+ Perform spelling correction on the current word, treating it as a
+ directory or filename, in the same way as the 'cdspell' shell
+ option. Word boundaries are the same as those used by
+ 'shell-forward-word'.
+
'glob-complete-word (M-g)'
The word before point is treated as a pattern for pathname
expansion, with an asterisk implicitly appended. This pattern is
@@ -9249,7 +9724,8 @@ happening.
'-C COMMAND'
COMMAND is executed in a subshell environment, and its output
- is used as the possible completions.
+ is used as the possible completions. Arguments are passed as
+ with the '-F' option.
'-F FUNCTION'
The shell function FUNCTION is executed in the current shell
@@ -9411,7 +9887,7 @@ CDPATH: Readline can't tell those completions are directories). The '-o
nospace' option tells Readline to not append a space character to the
directory name, in case we want to append to it. The '-o bashdefault'
option brings in the rest of the "Bash default" completions - possible
-completion that Bash adds to the default Readline set. These include
+completions that Bash adds to the default Readline set. These include
things like command name completion, variable completion for words
beginning with '$' or '${', completions containing pathname expansion
patterns (*note Filename Expansion::), and so on.
@@ -9578,9 +10054,9 @@ history file.
-d' command.
'-d START-END'
- Delete the history entries between positions START and END,
- inclusive. Positive and negative values for START and END are
- interpreted as described above.
+ Delete the range of history entries between positions START
+ and END, inclusive. Positive and negative values for START
+ and END are interpreted as described above.
'-a'
Append the new history lines to the history file. These are
@@ -9609,9 +10085,14 @@ history file.
The ARGs are added to the end of the history list as a single
entry.
- When any of the '-w', '-r', '-a', or '-n' options is used, if
- FILENAME is given, then it is used as the history file. If not,
- then the value of the 'HISTFILE' variable is used.
+ If a FILENAME argument is supplied when any of the '-w', '-r',
+ '-a', or '-n' options is used, Bash uses FILENAME as the history
+ file. If not, then the value of the 'HISTFILE' variable is used.
+
+ The return value is 0 unless an invalid option is encountered, an
+ error occurs while reading or writing the history file, an invalid
+ OFFSET or range is supplied as an argument to '-d', or the history
+ expansion supplied as an argument to '-p' fails.

File: bashref.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively
@@ -9828,7 +10309,7 @@ or edit, the word or words selected from the history event.
'&' appears in NEW, it is replaced by OLD. A single backslash will
quote the '&'. If OLD is null, it is set to the last OLD
substituted, or, if no previous history substitutions took place,
- the last STRING in a !?STRING'[?]' search. If NEW is is null, each
+ the last STRING in a !?STRING'[?]' search. If NEW is null, each
matching OLD is deleted. The final delimiter is optional if it is
the last character on the input line.
@@ -9897,20 +10378,28 @@ These are installation instructions for Bash.
3. Optionally, type 'make tests' to run the Bash test suite.
4. Type 'make install' to install 'bash' and 'bashbug'. This will
- also install the manual pages and Info file.
+ also install the manual pages and Info file, message translation
+ files, some supplemental documentation, a number of example
+ loadable builtin commands, and a set of header files for developing
+ loadable builtins. You may need additional privileges to install
+ 'bash' to your desired destination, so 'sudo make install' might be
+ required. More information about controlling the locations where
+ 'bash' and other files are installed is below (*note Installation
+ Names::).
The 'configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a 'Makefile' in each directory of the package
-(the top directory, the 'builtins', 'doc', and 'support' directories,
-each directory under 'lib', and several others). It also creates a
-'config.h' file containing system-dependent definitions. Finally, it
-creates a shell script named 'config.status' that you can run in the
-future to recreate the current configuration, a file 'config.cache' that
-saves the results of its tests to speed up reconfiguring, and a file
-'config.log' containing compiler output (useful mainly for debugging
-'configure'). If at some point 'config.cache' contains results you
-don't want to keep, you may remove or edit it.
+(the top directory, the 'builtins', 'doc', 'po', and 'support'
+directories, each directory under 'lib', and several others). It also
+creates a 'config.h' file containing system-dependent definitions.
+Finally, it creates a shell script named 'config.status' that you can
+run in the future to recreate the current configuration, a file
+'config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file 'config.log' containing compiler output
+(useful mainly for debugging 'configure'). If at some point
+'config.cache' contains results you don't want to keep, you may remove
+or edit it.
To find out more about the options and arguments that the 'configure'
script understands, type
@@ -9941,7 +10430,7 @@ considered for the next release.
The file 'configure.ac' is used to create 'configure' by a program
called Autoconf. You only need 'configure.ac' if you want to change it
or regenerate 'configure' using a newer version of Autoconf. If you do
-this, make sure you are using Autoconf version 2.50 or newer.
+this, make sure you are using Autoconf version 2.69 or newer.
You can remove the program binaries and object files from the source
code directory by typing 'make clean'. To also remove the files that
@@ -9984,7 +10473,7 @@ need to supply the '--srcdir=PATH' argument to tell 'configure' where
the source files are. 'configure' automatically checks for the source
code in the directory that 'configure' is in and in '..'.
- If you have to use a 'make' that does not supports the 'VPATH'
+ If you have to use a 'make' that does not support the 'VPATH'
variable, you can compile Bash for one architecture at a time in the
source code directory. After you have installed Bash for one
architecture, use 'make distclean' before reconfiguring for another
@@ -10009,10 +10498,13 @@ File: bashref.info, Node: Installation Names, Next: Specifying the System Type
=======================
By default, 'make install' will install into '/usr/local/bin',
-'/usr/local/man', etc. You can specify an installation prefix other
-than '/usr/local' by giving 'configure' the option '--prefix=PATH', or
-by specifying a value for the 'DESTDIR' 'make' variable when running
-'make install'.
+'/usr/local/man', etc.; that is, the "installation prefix" defaults to
+'/usr/local'. You can specify an installation prefix other than
+'/usr/local' by giving 'configure' the option '--prefix=PATH', or by
+specifying a value for the 'prefix' 'make' variable when running 'make
+install' (e.g., 'make install prefix=PATH'). The 'prefix' variable
+provides a default for 'exec_prefix' and other variables used when
+installing bash.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
@@ -10020,6 +10512,30 @@ give 'configure' the option '--exec-prefix=PATH', 'make install' will
use PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
+ If you would like to change the installation locations for a single
+run, you can specify these variables as arguments to 'make': 'make
+install exec_prefix=/' will install 'bash' and 'bashbug' into '/bin'
+instead of the default '/usr/local/bin'.
+
+ If you want to see the files bash will install and where it will
+install them without changing anything on your system, specify the
+variable 'DESTDIR' as an argument to 'make'. Its value should be the
+absolute directory path you'd like to use as the root of your sample
+installation tree. For example,
+
+ mkdir /fs1/bash-install
+ make install DESTDIR=/fs1/bash-install
+
+will install 'bash' into '/fs1/bash-install/usr/local/bin/bash', the
+documentation into directories within
+'/fs1/bash-install/usr/local/share', the example loadable builtins into
+'/fs1/bash-install/usr/local/lib/bash', and so on. You can use the
+usual 'exec_prefix' and 'prefix' variables to alter the directory paths
+beneath the value of 'DESTDIR'.
+
+ The GNU Makefile standards provide a more complete description of
+these variables and their effects.
+

File: bashref.info, Node: Specifying the System Type, Next: Sharing Defaults, Prev: Installation Names, Up: Installing Bash
@@ -10027,7 +10543,7 @@ File: bashref.info, Node: Specifying the System Type, Next: Sharing Defaults,
===============================
There may be some features 'configure' can not figure out automatically,
-but need to determine by the type of host Bash will run on. Usually
+but needs to determine by the type of host Bash will run on. Usually
'configure' can figure that out, but if it prints a message saying it
can not guess the host type, give it the '--host=TYPE' option. 'TYPE'
can either be a short name for the system type, such as 'sun4', or a
@@ -10135,16 +10651,20 @@ the Bash 'configure' recognizes.
subdirectories of that directory (include files in PREFIX/'include'
and the library in PREFIX/'lib').
-'--with-purify'
- Define this to use the Purify memory allocation checker from
- Rational Software.
+'--with-libintl-prefix[=PREFIX]'
+ Define this to make Bash link with a locally-installed version of
+ the libintl library instead of the version in 'lib/intl'.
+
+'--with-libiconv-prefix[=PREFIX]'
+ Define this to make Bash look for libiconv in PREFIX instead of the
+ standard system locations. There is no version included with Bash.
'--enable-minimal-config'
This produces a shell with minimal features, close to the
historical Bourne shell.
- There are several '--enable-' options that alter how Bash is compiled
-and linked, rather than changing run-time features.
+ There are several '--enable-' options that alter how Bash is
+compiled, linked, and installed, rather than changing run-time features.
'--enable-largefile'
Enable support for large files
@@ -10157,6 +10677,10 @@ and linked, rather than changing run-time features.
This builds a Bash binary that produces profiling information to be
processed by 'gprof' each time it is executed.
+'--enable-separate-helpfiles'
+ Use external files for the documentation displayed by the 'help'
+ builtin instead of storing the text internally.
+
'--enable-static-link'
This causes Bash to be linked statically, if 'gcc' is being used.
This could be used to build a version to use as root's shell.
@@ -10165,14 +10689,21 @@ and linked, rather than changing run-time features.
following options, but it is processed first, so individual options may
be enabled using 'enable-FEATURE'.
- All of the following options except for 'disabled-builtins',
-'direxpand-default', and 'xpg-echo-default' are enabled by default,
-unless the operating system does not provide the necessary support.
+ All of the following options except for 'alt-array-implementation',
+'disabled-builtins', 'direxpand-default', 'strict-posix-default', and
+'xpg-echo-default' are enabled by default, unless the operating system
+does not provide the necessary support.
'--enable-alias'
Allow alias expansion and include the 'alias' and 'unalias'
builtins (*note Aliases::).
+'--enable-alt-array-implementation'
+ This builds bash using an alternate implementation of arrays (*note
+ Arrays::) that provides faster access at the expense of using more
+ memory (sometimes many times more, depending on how sparse an array
+ is).
+
'--enable-arith-for-command'
Include support for the alternate form of the 'for' command that
behaves like the C language 'for' statement (*note Looping
@@ -10192,7 +10723,7 @@ unless the operating system does not provide the necessary support.
'--enable-casemod-attributes'
Include support for case-modifying attributes in the 'declare'
- builtin and assignment statements. Variables with the UPPERCASE
+ builtin and assignment statements. Variables with the 'uppercase'
attribute, for example, will have their values converted to
uppercase upon assignment.
@@ -10251,7 +10782,7 @@ unless the operating system does not provide the necessary support.
described above under *note Pattern Matching::.
'--enable-extended-glob-default'
- Set the default value of the EXTGLOB shell option described above
+ Set the default value of the 'extglob' shell option described above
under *note The Shopt Builtin:: to be enabled.
'--enable-function-import'
@@ -10260,10 +10791,10 @@ unless the operating system does not provide the necessary support.
enabled by default.
'--enable-glob-asciirange-default'
- Set the default value of the GLOBASCIIRANGES shell option described
- above under *note The Shopt Builtin:: to be enabled. This controls
- the behavior of character ranges when used in pattern matching
- bracket expressions.
+ Set the default value of the 'globasciiranges' shell option
+ described above under *note The Shopt Builtin:: to be enabled.
+ This controls the behavior of character ranges when used in pattern
+ matching bracket expressions.
'--enable-help-builtin'
Include the 'help' builtin, which displays help on shell builtins
@@ -10314,10 +10845,6 @@ unless the operating system does not provide the necessary support.
Include the 'select' compound command, which allows the generation
of simple menus (*note Conditional Constructs::).
-'--enable-separate-helpfiles'
- Use external files for the documentation displayed by the 'help'
- builtin instead of storing the text internally.
-
'--enable-single-help-strings'
Store the text displayed by the 'help' builtin as a single string
for each help topic. This aids in translating the text to
@@ -10327,6 +10854,10 @@ unless the operating system does not provide the necessary support.
'--enable-strict-posix-default'
Make Bash POSIX-conformant by default (*note Bash POSIX Mode::).
+'--enable-translatable-strings'
+ Enable support for '$"STRING"' translatable strings (*note Locale
+ Translation::).
+
'--enable-usg-echo-default'
A synonym for '--enable-xpg-echo-default'.
@@ -10353,7 +10884,8 @@ Appendix A Reporting Bugs
Please report all bugs you find in Bash. But first, you should make
sure that it really is a bug, and that it appears in the latest version
of Bash. The latest version of Bash is always available for FTP from
-<ftp://ftp.gnu.org/pub/gnu/bash/>.
+<ftp://ftp.gnu.org/pub/gnu/bash/> and from
+<http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz>.
Once you have determined that a bug actually exists, use the
'bashbug' command to submit a bug report. If you have a fix, you are
@@ -10479,15 +11011,15 @@ the baseline reference.
substring of 'var''s value of length LENGTH, beginning at OFFSET,
is present (*note Shell Parameter Expansion::).
- * The expansion '${var/[/]'PATTERN'[/'REPLACEMENT']}', which matches
- PATTERN and replaces it with REPLACEMENT in the value of 'var', is
+ * The expansion '${VAR/[/]'PATTERN'[/'REPLACEMENT']}', which matches
+ PATTERN and replaces it with REPLACEMENT in the value of VAR, is
available (*note Shell Parameter Expansion::).
* The expansion '${!PREFIX*}' expansion, which expands to the names
of all shell variables whose names begin with PREFIX, is available
(*note Shell Parameter Expansion::).
- * Bash has INDIRECT variable expansion using '${!word}' (*note Shell
+ * Bash has indirect variable expansion using '${!word}' (*note Shell
Parameter Expansion::).
* Bash can expand positional parameters beyond '$9' using '${NUM}'.
@@ -10513,8 +11045,8 @@ the baseline reference.
shell uses only '!'.
* Bash implements the full set of POSIX filename expansion operators,
- including CHARACTER CLASSES, EQUIVALENCE CLASSES, and COLLATING
- SYMBOLS (*note Filename Expansion::).
+ including character classes, equivalence classes, and collating
+ symbols (*note Filename Expansion::).
* Bash implements extended pattern matching features when the
'extglob' shell option is enabled (*note Pattern Matching::).
@@ -10631,7 +11163,7 @@ the baseline reference.
* Bash includes the 'caller' builtin, which displays the context of
any active subroutine call (a shell function or a script executed
- with the '.' or 'source' builtins). This supports the bash
+ with the '.' or 'source' builtins). This supports the Bash
debugger.
* The 'trap' builtin (*note Bourne Shell Builtins::) allows a 'DEBUG'
@@ -10653,7 +11185,7 @@ the baseline reference.
The 'trap' builtin (*note Bourne Shell Builtins::) allows a
'RETURN' pseudo-signal specification, similar to 'EXIT' and
- 'DEBUG'. Commands specified with an 'RETURN' trap are executed
+ 'DEBUG'. Commands specified with a 'RETURN' trap are executed
before execution resumes after a shell function or a shell script
executed with '.' or 'source' returns. The 'RETURN' trap is not
inherited by shell functions unless the function has been given the
@@ -11252,94 +11784,94 @@ D.1 Index of Shell Builtin Commands
* :: Bourne Shell Builtins.
(line 11)
* [: Bourne Shell Builtins.
- (line 270)
+ (line 275)
* alias: Bash Builtins. (line 11)
* bg: Job Control Builtins.
(line 7)
* bind: Bash Builtins. (line 21)
* break: Bourne Shell Builtins.
- (line 36)
-* builtin: Bash Builtins. (line 104)
-* caller: Bash Builtins. (line 113)
+ (line 37)
+* builtin: Bash Builtins. (line 108)
+* caller: Bash Builtins. (line 117)
* cd: Bourne Shell Builtins.
- (line 44)
-* command: Bash Builtins. (line 130)
+ (line 45)
+* command: Bash Builtins. (line 134)
* compgen: Programmable Completion Builtins.
(line 12)
* complete: Programmable Completion Builtins.
(line 30)
* compopt: Programmable Completion Builtins.
- (line 237)
+ (line 238)
* continue: Bourne Shell Builtins.
- (line 85)
-* declare: Bash Builtins. (line 150)
+ (line 90)
+* declare: Bash Builtins. (line 154)
* dirs: Directory Stack Builtins.
(line 7)
* disown: Job Control Builtins.
- (line 101)
-* echo: Bash Builtins. (line 253)
-* enable: Bash Builtins. (line 302)
+ (line 104)
+* echo: Bash Builtins. (line 257)
+* enable: Bash Builtins. (line 306)
* eval: Bourne Shell Builtins.
- (line 94)
+ (line 99)
* exec: Bourne Shell Builtins.
- (line 102)
+ (line 107)
* exit: Bourne Shell Builtins.
- (line 120)
+ (line 125)
* export: Bourne Shell Builtins.
- (line 127)
+ (line 132)
* fc: Bash History Builtins.
(line 10)
* fg: Job Control Builtins.
(line 17)
* getopts: Bourne Shell Builtins.
- (line 143)
+ (line 148)
* hash: Bourne Shell Builtins.
- (line 187)
-* help: Bash Builtins. (line 331)
+ (line 192)
+* help: Bash Builtins. (line 342)
* history: Bash History Builtins.
(line 46)
* jobs: Job Control Builtins.
(line 27)
* kill: Job Control Builtins.
(line 58)
-* let: Bash Builtins. (line 350)
-* local: Bash Builtins. (line 358)
-* logout: Bash Builtins. (line 374)
-* mapfile: Bash Builtins. (line 379)
+* let: Bash Builtins. (line 361)
+* local: Bash Builtins. (line 369)
+* logout: Bash Builtins. (line 385)
+* mapfile: Bash Builtins. (line 390)
* popd: Directory Stack Builtins.
(line 35)
-* printf: Bash Builtins. (line 425)
+* printf: Bash Builtins. (line 436)
* pushd: Directory Stack Builtins.
- (line 53)
+ (line 69)
* pwd: Bourne Shell Builtins.
- (line 207)
-* read: Bash Builtins. (line 474)
-* readarray: Bash Builtins. (line 570)
+ (line 212)
+* read: Bash Builtins. (line 488)
+* readarray: Bash Builtins. (line 585)
* readonly: Bourne Shell Builtins.
- (line 217)
+ (line 222)
* return: Bourne Shell Builtins.
- (line 236)
+ (line 241)
* set: The Set Builtin. (line 11)
* shift: Bourne Shell Builtins.
- (line 257)
+ (line 262)
* shopt: The Shopt Builtin. (line 9)
-* source: Bash Builtins. (line 579)
+* source: Bash Builtins. (line 594)
* suspend: Job Control Builtins.
- (line 113)
+ (line 116)
* test: Bourne Shell Builtins.
- (line 270)
+ (line 275)
* times: Bourne Shell Builtins.
- (line 349)
+ (line 360)
* trap: Bourne Shell Builtins.
- (line 355)
-* type: Bash Builtins. (line 584)
-* typeset: Bash Builtins. (line 616)
-* ulimit: Bash Builtins. (line 622)
+ (line 366)
+* type: Bash Builtins. (line 599)
+* typeset: Bash Builtins. (line 631)
+* ulimit: Bash Builtins. (line 637)
* umask: Bourne Shell Builtins.
- (line 404)
-* unalias: Bash Builtins. (line 728)
+ (line 415)
+* unalias: Bash Builtins. (line 743)
* unset: Bourne Shell Builtins.
- (line 422)
+ (line 433)
* wait: Job Control Builtins.
(line 76)
@@ -11354,9 +11886,9 @@ D.2 Index of Shell Reserved Words
* !: Pipelines. (line 9)
* [[: Conditional Constructs.
- (line 125)
+ (line 126)
* ]]: Conditional Constructs.
- (line 125)
+ (line 126)
* {: Command Grouping. (line 21)
* }: Command Grouping. (line 21)
* case: Conditional Constructs.
@@ -11378,7 +11910,7 @@ D.2 Index of Shell Reserved Words
* in: Conditional Constructs.
(line 28)
* select: Conditional Constructs.
- (line 83)
+ (line 84)
* then: Conditional Constructs.
(line 7)
* time: Pipelines. (line 9)
@@ -11394,24 +11926,28 @@ D.3 Parameter and Variable Index
* Menu:
-* !: Special Parameters. (line 56)
+* !: Special Parameters. (line 55)
* #: Special Parameters. (line 39)
* $: Special Parameters. (line 51)
-* $!: Special Parameters. (line 57)
+* $!: Special Parameters. (line 56)
* $#: Special Parameters. (line 40)
* $$: Special Parameters. (line 52)
* $*: Special Parameters. (line 10)
* $-: Special Parameters. (line 47)
-* $0: Special Parameters. (line 62)
+* $0: Special Parameters. (line 61)
* $?: Special Parameters. (line 43)
* $@: Special Parameters. (line 23)
* $_: Bash Variables. (line 14)
* *: Special Parameters. (line 9)
* -: Special Parameters. (line 46)
-* 0: Special Parameters. (line 61)
+* 0: Special Parameters. (line 60)
* ?: Special Parameters. (line 42)
* @: Special Parameters. (line 22)
* _: Bash Variables. (line 13)
+* active-region-end-color: Readline Init File Syntax.
+ (line 51)
+* active-region-start-color: Readline Init File Syntax.
+ (line 38)
* auto_resume: Job Control Variables.
(line 6)
* BASH: Bash Variables. (line 23)
@@ -11435,31 +11971,31 @@ D.3 Parameter and Variable Index
* BASH_VERSION: Bash Variables. (line 181)
* BASH_XTRACEFD: Bash Variables. (line 184)
* bell-style: Readline Init File Syntax.
- (line 38)
+ (line 64)
* bind-tty-special-chars: Readline Init File Syntax.
- (line 45)
+ (line 71)
* blink-matching-paren: Readline Init File Syntax.
- (line 50)
+ (line 76)
* CDPATH: Bourne Shell Variables.
(line 9)
* CHILD_MAX: Bash Variables. (line 195)
* colored-completion-prefix: Readline Init File Syntax.
- (line 55)
+ (line 81)
* colored-stats: Readline Init File Syntax.
- (line 62)
+ (line 91)
* COLUMNS: Bash Variables. (line 202)
* comment-begin: Readline Init File Syntax.
- (line 68)
+ (line 97)
* completion-display-width: Readline Init File Syntax.
- (line 73)
+ (line 102)
* completion-ignore-case: Readline Init File Syntax.
- (line 80)
+ (line 109)
* completion-map-case: Readline Init File Syntax.
- (line 85)
+ (line 114)
* completion-prefix-display-length: Readline Init File Syntax.
- (line 91)
+ (line 120)
* completion-query-items: Readline Init File Syntax.
- (line 98)
+ (line 127)
* COMPREPLY: Bash Variables. (line 254)
* COMP_CWORD: Bash Variables. (line 208)
* COMP_KEY: Bash Variables. (line 237)
@@ -11469,29 +12005,31 @@ D.3 Parameter and Variable Index
* COMP_WORDBREAKS: Bash Variables. (line 241)
* COMP_WORDS: Bash Variables. (line 247)
* convert-meta: Readline Init File Syntax.
- (line 108)
+ (line 138)
* COPROC: Bash Variables. (line 260)
* DIRSTACK: Bash Variables. (line 264)
* disable-completion: Readline Init File Syntax.
- (line 116)
+ (line 148)
* echo-control-characters: Readline Init File Syntax.
- (line 121)
+ (line 153)
* editing-mode: Readline Init File Syntax.
- (line 126)
+ (line 158)
* EMACS: Bash Variables. (line 274)
* emacs-mode-string: Readline Init File Syntax.
- (line 132)
+ (line 164)
+* enable-active-region: Readline Init File Syntax.
+ (line 174)
* enable-bracketed-paste: Readline Init File Syntax.
- (line 142)
+ (line 187)
* enable-keypad: Readline Init File Syntax.
- (line 150)
+ (line 196)
* ENV: Bash Variables. (line 279)
* EPOCHREALTIME: Bash Variables. (line 284)
* EPOCHSECONDS: Bash Variables. (line 292)
* EUID: Bash Variables. (line 299)
* EXECIGNORE: Bash Variables. (line 303)
* expand-tilde: Readline Init File Syntax.
- (line 161)
+ (line 207)
* FCEDIT: Bash Variables. (line 316)
* FIGNORE: Bash Variables. (line 320)
* FUNCNAME: Bash Variables. (line 326)
@@ -11505,15 +12043,15 @@ D.3 Parameter and Variable Index
* HISTFILESIZE: Bash Variables. (line 402)
* HISTIGNORE: Bash Variables. (line 413)
* history-preserve-point: Readline Init File Syntax.
- (line 165)
+ (line 211)
* history-size: Readline Init File Syntax.
- (line 171)
+ (line 217)
* HISTSIZE: Bash Variables. (line 433)
* HISTTIMEFORMAT: Bash Variables. (line 440)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
- (line 180)
+ (line 226)
* HOSTFILE: Bash Variables. (line 448)
* HOSTNAME: Bash Variables. (line 459)
* HOSTTYPE: Bash Variables. (line 462)
@@ -11521,18 +12059,21 @@ D.3 Parameter and Variable Index
(line 18)
* IGNOREEOF: Bash Variables. (line 465)
* input-meta: Readline Init File Syntax.
- (line 189)
+ (line 235)
* INPUTRC: Bash Variables. (line 475)
* INSIDE_EMACS: Bash Variables. (line 479)
* isearch-terminators: Readline Init File Syntax.
- (line 197)
+ (line 245)
* keymap: Readline Init File Syntax.
- (line 204)
-* LANG: Bash Variables. (line 485)
+ (line 252)
+* LANG: Creating Internationalized Scripts.
+ (line 51)
+* LANG <1>: Bash Variables. (line 485)
* LC_ALL: Bash Variables. (line 489)
* LC_COLLATE: Bash Variables. (line 493)
* LC_CTYPE: Bash Variables. (line 500)
-* LC_MESSAGES: Locale Translation. (line 15)
+* LC_MESSAGES: Creating Internationalized Scripts.
+ (line 51)
* LC_MESSAGES <1>: Bash Variables. (line 505)
* LC_NUMERIC: Bash Variables. (line 509)
* LC_TIME: Bash Variables. (line 513)
@@ -11546,15 +12087,15 @@ D.3 Parameter and Variable Index
(line 27)
* MAPFILE: Bash Variables. (line 540)
* mark-modified-lines: Readline Init File Syntax.
- (line 234)
+ (line 282)
* mark-symlinked-directories: Readline Init File Syntax.
- (line 239)
+ (line 287)
* match-hidden-files: Readline Init File Syntax.
- (line 244)
+ (line 292)
* menu-complete-display-prefix: Readline Init File Syntax.
- (line 251)
+ (line 299)
* meta-flag: Readline Init File Syntax.
- (line 189)
+ (line 235)
* OLDPWD: Bash Variables. (line 544)
* OPTARG: Bourne Shell Variables.
(line 34)
@@ -11563,9 +12104,9 @@ D.3 Parameter and Variable Index
(line 38)
* OSTYPE: Bash Variables. (line 551)
* output-meta: Readline Init File Syntax.
- (line 256)
+ (line 304)
* page-completions: Readline Init File Syntax.
- (line 262)
+ (line 312)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 554)
@@ -11582,37 +12123,40 @@ D.3 Parameter and Variable Index
* PS4: Bash Variables. (line 595)
* PWD: Bash Variables. (line 603)
* RANDOM: Bash Variables. (line 606)
-* READLINE_LINE: Bash Variables. (line 612)
-* READLINE_MARK: Bash Variables. (line 616)
-* READLINE_POINT: Bash Variables. (line 622)
-* REPLY: Bash Variables. (line 626)
+* READLINE_ARGUMENT: Bash Variables. (line 612)
+* READLINE_LINE: Bash Variables. (line 616)
+* READLINE_MARK: Bash Variables. (line 620)
+* READLINE_POINT: Bash Variables. (line 626)
+* REPLY: Bash Variables. (line 630)
* revert-all-at-newline: Readline Init File Syntax.
- (line 272)
-* SECONDS: Bash Variables. (line 629)
-* SHELL: Bash Variables. (line 638)
-* SHELLOPTS: Bash Variables. (line 643)
-* SHLVL: Bash Variables. (line 652)
+ (line 322)
+* SECONDS: Bash Variables. (line 633)
+* SHELL: Bash Variables. (line 642)
+* SHELLOPTS: Bash Variables. (line 647)
+* SHLVL: Bash Variables. (line 656)
* show-all-if-ambiguous: Readline Init File Syntax.
- (line 278)
+ (line 329)
* show-all-if-unmodified: Readline Init File Syntax.
- (line 284)
+ (line 335)
* show-mode-in-prompt: Readline Init File Syntax.
- (line 293)
+ (line 344)
* skip-completed-text: Readline Init File Syntax.
- (line 299)
-* SRANDOM: Bash Variables. (line 657)
-* TEXTDOMAIN: Locale Translation. (line 15)
-* TEXTDOMAINDIR: Locale Translation. (line 15)
-* TIMEFORMAT: Bash Variables. (line 666)
-* TMOUT: Bash Variables. (line 704)
-* TMPDIR: Bash Variables. (line 716)
-* UID: Bash Variables. (line 720)
+ (line 350)
+* SRANDOM: Bash Variables. (line 661)
+* TEXTDOMAIN: Creating Internationalized Scripts.
+ (line 51)
+* TEXTDOMAINDIR: Creating Internationalized Scripts.
+ (line 51)
+* TIMEFORMAT: Bash Variables. (line 670)
+* TMOUT: Bash Variables. (line 708)
+* TMPDIR: Bash Variables. (line 720)
+* UID: Bash Variables. (line 724)
* vi-cmd-mode-string: Readline Init File Syntax.
- (line 312)
+ (line 363)
* vi-ins-mode-string: Readline Init File Syntax.
- (line 323)
+ (line 374)
* visible-stats: Readline Init File Syntax.
- (line 334)
+ (line 385)

File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -11628,7 +12172,7 @@ D.4 Function Index
* accept-line (Newline or Return): Commands For History.
(line 6)
* alias-expand-line (): Miscellaneous Commands.
- (line 125)
+ (line 131)
* backward-char (C-b): Commands For Moving. (line 15)
* backward-delete-char (Rubout): Commands For Text. (line 17)
* backward-kill-line (C-x Rubout): Commands For Killing.
@@ -11677,7 +12221,7 @@ D.4 Function Index
(line 57)
* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
* display-shell-version (C-x C-v): Miscellaneous Commands.
- (line 110)
+ (line 116)
* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
(line 14)
* downcase-word (M-l): Commands For Text. (line 62)
@@ -11690,7 +12234,7 @@ D.4 Function Index
* dynamic-complete-history (M-<TAB>): Commands For Completion.
(line 90)
* edit-and-execute-command (C-x C-e): Miscellaneous Commands.
- (line 134)
+ (line 140)
* end-kbd-macro (C-x )): Keyboard Macros. (line 9)
* end-of-file (usually C-d): Commands For Text. (line 6)
* end-of-history (M->): Commands For History.
@@ -11698,21 +12242,23 @@ D.4 Function Index
* end-of-line (C-e): Commands For Moving. (line 9)
* exchange-point-and-mark (C-x C-x): Miscellaneous Commands.
(line 37)
+* fetch-history (): Commands For History.
+ (line 103)
* forward-backward-delete-char (): Commands For Text. (line 21)
* forward-char (C-f): Commands For Moving. (line 12)
* forward-search-history (C-s): Commands For History.
(line 33)
* forward-word (M-f): Commands For Moving. (line 18)
* glob-complete-word (M-g): Miscellaneous Commands.
- (line 92)
-* glob-expand-word (C-x *): Miscellaneous Commands.
(line 98)
-* glob-list-expansions (C-x g): Miscellaneous Commands.
+* glob-expand-word (C-x *): Miscellaneous Commands.
(line 104)
+* glob-list-expansions (C-x g): Miscellaneous Commands.
+ (line 110)
* history-and-alias-expand-line (): Miscellaneous Commands.
- (line 128)
+ (line 134)
* history-expand-line (M-^): Miscellaneous Commands.
- (line 118)
+ (line 124)
* history-search-backward (): Commands For History.
(line 57)
* history-search-forward (): Commands For History.
@@ -11726,7 +12272,7 @@ D.4 Function Index
* insert-completions (M-*): Commands For Completion.
(line 22)
* insert-last-argument (M-. or M-_): Miscellaneous Commands.
- (line 131)
+ (line 137)
* kill-line (C-k): Commands For Killing.
(line 6)
* kill-region (): Commands For Killing.
@@ -11736,7 +12282,7 @@ D.4 Function Index
* kill-word (M-d): Commands For Killing.
(line 23)
* magic-space (): Miscellaneous Commands.
- (line 121)
+ (line 127)
* menu-complete (): Commands For Completion.
(line 26)
* menu-complete-backward (): Commands For Completion.
@@ -11784,7 +12330,7 @@ D.4 Function Index
(line 37)
* shell-backward-word (M-C-b): Commands For Moving. (line 30)
* shell-expand-line (M-C-e): Miscellaneous Commands.
- (line 113)
+ (line 119)
* shell-forward-word (M-C-f): Commands For Moving. (line 26)
* shell-kill-word (M-C-d): Commands For Killing.
(line 32)
@@ -11792,6 +12338,8 @@ D.4 Function Index
(line 41)
* skip-csi-sequence (): Miscellaneous Commands.
(line 52)
+* spell-correct-word (C-x s): Miscellaneous Commands.
+ (line 92)
* start-kbd-macro (C-x (): Keyboard Macros. (line 6)
* tilde-expand (M-&): Miscellaneous Commands.
(line 30)
@@ -11913,6 +12461,8 @@ D.5 Concept Index
* interactive shell: Invoking Bash. (line 131)
* interactive shell <1>: Interactive Shells. (line 6)
* internationalization: Locale Translation. (line 6)
+* internationalized scripts: Creating Internationalized Scripts.
+ (line 3)
* job: Definitions. (line 38)
* job control: Definitions. (line 42)
* job control <1>: Job Control Basics. (line 6)
@@ -11968,6 +12518,8 @@ D.5 Concept Index
* special builtin: Definitions. (line 82)
* special builtin <1>: Special Builtins. (line 6)
* startup files: Bash Startup Files. (line 6)
+* string translations: Creating Internationalized Scripts.
+ (line 3)
* suspending jobs: Job Control Basics. (line 6)
* tilde expansion: Tilde Expansion. (line 6)
* token: Definitions. (line 86)
@@ -11983,137 +12535,138 @@ D.5 Concept Index

Tag Table:
-Node: Top895
-Node: Introduction2813
-Node: What is Bash?3029
-Node: What is a shell?4143
-Node: Definitions6681
-Node: Basic Shell Features9632
-Node: Shell Syntax10851
-Node: Shell Operation11877
-Node: Quoting13170
-Node: Escape Character14470
-Node: Single Quotes14955
-Node: Double Quotes15303
-Node: ANSI-C Quoting16581
-Node: Locale Translation17840
-Node: Comments18993
-Node: Shell Commands19611
-Node: Reserved Words20549
-Node: Simple Commands21305
-Node: Pipelines21959
-Node: Lists24891
-Node: Compound Commands26682
-Node: Looping Constructs27694
-Node: Conditional Constructs30189
-Node: Command Grouping41760
-Node: Coprocesses43239
-Node: GNU Parallel45142
-Node: Shell Functions49443
-Node: Shell Parameters56650
-Node: Positional Parameters61063
-Node: Special Parameters61963
-Node: Shell Expansions65187
-Node: Brace Expansion67310
-Node: Tilde Expansion70033
-Node: Shell Parameter Expansion72650
-Node: Command Substitution87779
-Node: Arithmetic Expansion89134
-Node: Process Substitution90066
-Node: Word Splitting91186
-Node: Filename Expansion93130
-Node: Pattern Matching95679
-Node: Quote Removal99665
-Node: Redirections99960
-Node: Executing Commands109530
-Node: Simple Command Expansion110200
-Node: Command Search and Execution112154
-Node: Command Execution Environment114530
-Node: Environment117514
-Node: Exit Status119173
-Node: Signals120843
-Node: Shell Scripts122810
-Node: Shell Builtin Commands125822
-Node: Bourne Shell Builtins127860
-Node: Bash Builtins148789
-Node: Modifying Shell Behavior178898
-Node: The Set Builtin179243
-Node: The Shopt Builtin189656
-Node: Special Builtins204566
-Node: Shell Variables205545
-Node: Bourne Shell Variables205982
-Node: Bash Variables208086
-Node: Bash Features240720
-Node: Invoking Bash241733
-Node: Bash Startup Files247746
-Node: Interactive Shells252849
-Node: What is an Interactive Shell?253259
-Node: Is this Shell Interactive?253908
-Node: Interactive Shell Behavior254723
-Node: Bash Conditional Expressions258237
-Node: Shell Arithmetic262814
-Node: Aliases265754
-Node: Arrays268374
-Node: The Directory Stack274383
-Node: Directory Stack Builtins275167
-Node: Controlling the Prompt278135
-Node: The Restricted Shell281085
-Node: Bash POSIX Mode283679
-Node: Shell Compatibility Mode294715
-Node: Job Control301371
-Node: Job Control Basics301831
-Node: Job Control Builtins306827
-Node: Job Control Variables312227
-Node: Command Line Editing313383
-Node: Introduction and Notation315054
-Node: Readline Interaction316677
-Node: Readline Bare Essentials317868
-Node: Readline Movement Commands319651
-Node: Readline Killing Commands320611
-Node: Readline Arguments322529
-Node: Searching323573
-Node: Readline Init File325759
-Node: Readline Init File Syntax327018
-Node: Conditional Init Constructs347556
-Node: Sample Init File351752
-Node: Bindable Readline Commands354876
-Node: Commands For Moving356080
-Node: Commands For History358131
-Node: Commands For Text362924
-Node: Commands For Killing366573
-Node: Numeric Arguments369606
-Node: Commands For Completion370745
-Node: Keyboard Macros374936
-Node: Miscellaneous Commands375623
-Node: Readline vi Mode381307
-Node: Programmable Completion382214
-Node: Programmable Completion Builtins389994
-Node: A Programmable Completion Example400689
-Node: Using History Interactively405936
-Node: Bash History Facilities406620
-Node: Bash History Builtins409625
-Node: History Interaction414354
-Node: Event Designators417974
-Node: Word Designators419328
-Node: Modifiers421088
-Node: Installing Bash422899
-Node: Basic Installation424036
-Node: Compilers and Options427294
-Node: Compiling For Multiple Architectures428035
-Node: Installation Names429728
-Node: Specifying the System Type430546
-Node: Sharing Defaults431262
-Node: Operation Controls431935
-Node: Optional Features432893
-Node: Reporting Bugs443411
-Node: Major Differences From The Bourne Shell444605
-Node: GNU Free Documentation License461457
-Node: Indexes486634
-Node: Builtin Index487088
-Node: Reserved Word Index493915
-Node: Variable Index496363
-Node: Function Index512260
-Node: Concept Index525770
+Node: Top899
+Node: Introduction2821
+Node: What is Bash?3037
+Node: What is a shell?4151
+Node: Definitions6689
+Node: Basic Shell Features9640
+Node: Shell Syntax10859
+Node: Shell Operation11885
+Node: Quoting13178
+Node: Escape Character14482
+Node: Single Quotes14967
+Node: Double Quotes15315
+Node: ANSI-C Quoting16593
+Node: Locale Translation17903
+Node: Creating Internationalized Scripts19214
+Node: Comments23331
+Node: Shell Commands23949
+Node: Reserved Words24887
+Node: Simple Commands25643
+Node: Pipelines26297
+Node: Lists29296
+Node: Compound Commands31091
+Node: Looping Constructs32103
+Node: Conditional Constructs34598
+Node: Command Grouping49086
+Node: Coprocesses50564
+Node: GNU Parallel53227
+Node: Shell Functions54144
+Node: Shell Parameters62029
+Node: Positional Parameters66417
+Node: Special Parameters67319
+Node: Shell Expansions70533
+Node: Brace Expansion72660
+Node: Tilde Expansion75394
+Node: Shell Parameter Expansion78015
+Node: Command Substitution96366
+Node: Arithmetic Expansion97721
+Node: Process Substitution98689
+Node: Word Splitting99809
+Node: Filename Expansion101753
+Node: Pattern Matching104502
+Node: Quote Removal109504
+Node: Redirections109799
+Node: Executing Commands119459
+Node: Simple Command Expansion120129
+Node: Command Search and Execution122239
+Node: Command Execution Environment124617
+Node: Environment127652
+Node: Exit Status129315
+Node: Signals131099
+Node: Shell Scripts134548
+Node: Shell Builtin Commands137575
+Node: Bourne Shell Builtins139613
+Node: Bash Builtins161079
+Node: Modifying Shell Behavior191935
+Node: The Set Builtin192280
+Node: The Shopt Builtin202881
+Node: Special Builtins218793
+Node: Shell Variables219772
+Node: Bourne Shell Variables220209
+Node: Bash Variables222313
+Node: Bash Features255128
+Node: Invoking Bash256141
+Node: Bash Startup Files262154
+Node: Interactive Shells267285
+Node: What is an Interactive Shell?267696
+Node: Is this Shell Interactive?268345
+Node: Interactive Shell Behavior269160
+Node: Bash Conditional Expressions272789
+Node: Shell Arithmetic277431
+Node: Aliases280375
+Node: Arrays282988
+Node: The Directory Stack289379
+Node: Directory Stack Builtins290163
+Node: Controlling the Prompt294423
+Node: The Restricted Shell297388
+Node: Bash POSIX Mode299998
+Node: Shell Compatibility Mode311916
+Node: Job Control320483
+Node: Job Control Basics320943
+Node: Job Control Builtins325945
+Node: Job Control Variables331740
+Node: Command Line Editing332896
+Node: Introduction and Notation334567
+Node: Readline Interaction336190
+Node: Readline Bare Essentials337381
+Node: Readline Movement Commands339170
+Node: Readline Killing Commands340130
+Node: Readline Arguments342051
+Node: Searching343095
+Node: Readline Init File345281
+Node: Readline Init File Syntax346542
+Node: Conditional Init Constructs370128
+Node: Sample Init File374324
+Node: Bindable Readline Commands377448
+Node: Commands For Moving378652
+Node: Commands For History380703
+Node: Commands For Text385697
+Node: Commands For Killing389346
+Node: Numeric Arguments392379
+Node: Commands For Completion393518
+Node: Keyboard Macros397709
+Node: Miscellaneous Commands398397
+Node: Readline vi Mode404342
+Node: Programmable Completion405249
+Node: Programmable Completion Builtins413029
+Node: A Programmable Completion Example423781
+Node: Using History Interactively429029
+Node: Bash History Facilities429713
+Node: Bash History Builtins432718
+Node: History Interaction437742
+Node: Event Designators441362
+Node: Word Designators442716
+Node: Modifiers444476
+Node: Installing Bash446284
+Node: Basic Installation447421
+Node: Compilers and Options451143
+Node: Compiling For Multiple Architectures451884
+Node: Installation Names453576
+Node: Specifying the System Type455685
+Node: Sharing Defaults456402
+Node: Operation Controls457075
+Node: Optional Features458033
+Node: Reporting Bugs469252
+Node: Major Differences From The Bourne Shell470527
+Node: GNU Free Documentation License487376
+Node: Indexes512553
+Node: Builtin Index513007
+Node: Reserved Word Index519834
+Node: Variable Index522282
+Node: Function Index539056
+Node: Concept Index552840

End Tag Table
diff --git a/doc/bashref.pdf b/doc/bashref.pdf
index 50b64fba..eb8b766a 100644
--- a/doc/bashref.pdf
+++ b/doc/bashref.pdf
Binary files differ
diff --git a/doc/bashref.ps b/doc/bashref.ps
index 0ef38c1d..02ab1d34 100644
--- a/doc/bashref.ps
+++ b/doc/bashref.ps
@@ -1,8 +1,8 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 2020.1 Copyright 2020 Radical Eye Software
+%%Creator: dvips(k) 2021.1 Copyright 2021 Radical Eye Software
%%Title: bashref.dvi
-%%CreationDate: Wed Nov 18 20:13:07 2020
-%%Pages: 189
+%%CreationDate: Mon Sep 19 16:02:49 2022
+%%Pages: 196
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMMI12 CMMI10 CMCSC10
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2020.11.18:1513
+%DVIPSSource: TeX output 2022.09.19:1202
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -7613,23 +7613,23 @@ ifelse
%%Page: 1 1
TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5
b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31
-b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.1,)g(for)f
-Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.1.)3217 1697 y(Octob)s(er)f(2020)150
-4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46
-b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11
-b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
+b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.2,)g(for)f
+Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.2.)3118 1697 y(Septem)m(b)s(er)f
+(2022)150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11
+b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068
+y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
b(oundation)p 150 5141 3600 17 v eop end
%%Page: 2 2
TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f
(description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f
-(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.1,)c(29)f(Octob)s(er)f
-(2020\).)150 4523 y(This)35 b(is)g(Edition)h(5.1,)i(last)f(up)s(dated)d
-(29)i(Octob)s(er)g(2020,)j(of)c Fr(The)h(GNU)g(Bash)f(Reference)i(Man)m
-(ual)p Fu(,)150 4633 y(for)30 b Ft(Bash)p Fu(,)g(V)-8
-b(ersion)31 b(5.1.)150 4767 y(Cop)m(yrigh)m(t)602 4764
-y(c)577 4767 y Fq(\015)f Fu(1988{2020)35 b(F)-8 b(ree)31
-b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902
-y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8
+(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.2,)c(19)f(Septem)m(b)s
+(er)f(2022\).)150 4523 y(This)e(is)h(Edition)f(5.2,)j(last)e(up)s
+(dated)f(19)h(Septem)m(b)s(er)f(2022,)j(of)e Fr(The)f(GNU)i(Bash)e
+(Reference)i(Man)m(ual)p Fu(,)150 4633 y(for)g Ft(Bash)p
+Fu(,)g(V)-8 b(ersion)31 b(5.2.)150 4767 y(Cop)m(yrigh)m(t)602
+4764 y(c)577 4767 y Fq(\015)f Fu(1988{2022)35 b(F)-8
+b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390
+4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8
b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f
(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26
@@ -7691,434 +7691,434 @@ f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)30
b Fu(7)399 2438 y(3.1.3)93 b(Commen)m(ts)14 b Fn(:)i(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(7)275 2548 y(3.2)92
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(9)275 2548 y(3.2)92
b(Shell)30 b(Commands)9 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)23 b Fu(8)399 2658 y(3.2.1)93 b(Reserv)m(ed)31
+(:)h(:)f(:)23 b Fu(9)399 2658 y(3.2.1)93 b(Reserv)m(ed)31
b(W)-8 b(ords)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)40
-b Fu(8)399 2767 y(3.2.2)93 b(Simple)30 b(Commands)15
+b Fu(9)399 2767 y(3.2.2)93 b(Simple)30 b(Commands)15
b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b Fu(8)399 2877 y(3.2.3)93
-b(Pip)s(elines)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)40 b Fu(8)399 2986 y(3.2.4)93 b(Lists)30
-b(of)h(Commands)23 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)36 b Fu(9)399
+(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b Fu(9)399 2877 y(3.2.3)93
+b(Pip)s(elines)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)36 b Fu(10)399 2986 y(3.2.4)93 b(Lists)30
+b(of)h(Commands)20 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(10)399
3096 y(3.2.5)93 b(Comp)s(ound)28 b(Commands)9 b Fn(:)14
b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-22 b Fu(10)524 3205 y(3.2.5.1)93 b(Lo)s(oping)30 b(Constructs)16
+22 b Fu(11)524 3205 y(3.2.5.1)93 b(Lo)s(oping)30 b(Constructs)16
b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)29
-b Fu(10)524 3315 y(3.2.5.2)93 b(Conditional)31 b(Constructs)25
+b Fu(11)524 3315 y(3.2.5.2)93 b(Conditional)31 b(Constructs)25
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39
-b Fu(11)524 3425 y(3.2.5.3)93 b(Grouping)30 b(Commands)22
+b Fu(12)524 3425 y(3.2.5.3)93 b(Grouping)30 b(Commands)22
b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)36
-b Fu(15)399 3534 y(3.2.6)93 b(Copro)s(cesses)26 b Fn(:)15
+b Fu(17)399 3534 y(3.2.6)93 b(Copro)s(cesses)26 b Fn(:)15
b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(15)399
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(18)399
3644 y(3.2.7)93 b(GNU)31 b(P)m(arallel)13 b Fn(:)k(:)f(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)26 b Fu(16)275 3753 y(3.3)92 b(Shell)30
+(:)f(:)g(:)h(:)26 b Fu(19)275 3753 y(3.3)92 b(Shell)30
b(F)-8 b(unctions)16 b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)29 b Fu(18)275 3863 y(3.4)92 b(Shell)30 b(P)m(arameters)c
+(:)h(:)29 b Fu(19)275 3863 y(3.4)92 b(Shell)30 b(P)m(arameters)c
Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 b
-Fu(20)399 3973 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8
+Fu(21)399 3973 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8
b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)21 b Fu(21)399 4082 y(3.4.2)93 b(Sp)s(ecial)30
+h(:)f(:)h(:)21 b Fu(23)399 4082 y(3.4.2)93 b(Sp)s(ecial)30
b(P)m(arameters)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(21)275 4192
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(23)275 4192
y(3.5)92 b(Shell)30 b(Expansions)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)38 b Fu(22)399 4301 y(3.5.1)93 b(Brace)31
+(:)g(:)h(:)f(:)38 b Fu(24)399 4301 y(3.5.1)93 b(Brace)31
b(Expansion)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b
-Fu(23)399 4411 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b
+Fu(24)399 4411 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b
Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(24)399 4521 y(3.5.3)93
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(25)399 4521 y(3.5.3)93
b(Shell)30 b(P)m(arameter)i(Expansion)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(25)399 4630 y(3.5.4)93
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(26)399 4630 y(3.5.4)93
b(Command)29 b(Substitution)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(31)399 4740
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(34)399 4740
y(3.5.5)93 b(Arithmetic)31 b(Expansion)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b
-Fu(31)399 4849 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15
+Fu(34)399 4849 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15
b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)28 b Fu(32)399 4959 y(3.5.7)93 b(W)-8
+(:)f(:)g(:)h(:)28 b Fu(34)399 4959 y(3.5.7)93 b(W)-8
b(ord)31 b(Splitting)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41
-b Fu(32)399 5068 y(3.5.8)93 b(Filename)32 b(Expansion)22
+b Fu(35)399 5068 y(3.5.8)93 b(Filename)32 b(Expansion)22
b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)35 b Fu(33)524 5178 y(3.5.8.1)93 b(P)m(attern)31
+f(:)h(:)f(:)g(:)35 b Fu(35)524 5178 y(3.5.8.1)93 b(P)m(attern)31
b(Matc)m(hing)14 b Fn(:)k(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(33)399 5288 y(3.5.9)93
+h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(36)399 5288 y(3.5.9)93
b(Quote)31 b(Remo)m(v)-5 b(al)17 b Fn(:)g(:)e(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30
-b Fu(35)p eop end
+b Fu(38)p eop end
%%Page: -2 4
TeXDict begin -2 3 bop 3699 -116 a Fu(ii)275 83 y(3.6)92
b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)27 b Fu(35)399 193 y(3.6.1)93 b(Redirecting)31
+(:)h(:)f(:)g(:)27 b Fu(38)399 193 y(3.6.1)93 b(Redirecting)31
b(Input)11 b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(36)399 302
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(39)399 302
y(3.6.2)93 b(Redirecting)31 b(Output)15 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28
-b Fu(36)399 412 y(3.6.3)93 b(App)s(ending)28 b(Redirected)k(Output)20
+b Fu(39)399 412 y(3.6.3)93 b(App)s(ending)28 b(Redirected)k(Output)20
b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(36)399
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(39)399
521 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h(and)f(Standard)h
(Error)16 b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)29 b
-Fu(37)399 631 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and)h
+Fu(40)399 631 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and)h
(Standard)f(Error)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
-b Fu(37)399 741 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15
+b Fu(40)399 741 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15
b Fn(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(37)399 850 y(3.6.7)93
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(40)399 850 y(3.6.7)93
b(Here)31 b(Strings)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29
-b Fu(38)399 960 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25
+b Fu(41)399 960 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25
b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37
-b Fu(38)399 1069 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d
+b Fu(41)399 1069 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d
Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-40 b Fu(38)399 1179 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f
+40 b Fu(41)399 1179 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f
(for)f(Reading)h(and)f(W)-8 b(riting)29 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f
-(:)41 b Fu(38)275 1289 y(3.7)92 b(Executing)31 b(Commands)24
+(:)41 b Fu(41)275 1289 y(3.7)92 b(Executing)31 b(Commands)24
b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(39)399 1398 y(3.7.1)93
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(42)399 1398 y(3.7.1)93
b(Simple)30 b(Command)f(Expansion)11 b Fn(:)k(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)24 b Fu(39)399 1508 y(3.7.2)93 b(Command)29
+h(:)f(:)g(:)h(:)f(:)24 b Fu(42)399 1508 y(3.7.2)93 b(Command)29
b(Searc)m(h)i(and)f(Execution)15 b Fn(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-28 b Fu(39)399 1617 y(3.7.3)93 b(Command)29 b(Execution)i(En)m
+28 b Fu(42)399 1617 y(3.7.3)93 b(Command)29 b(Execution)i(En)m
(vironmen)m(t)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(40)399
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(43)399
1727 y(3.7.4)93 b(En)m(vironmen)m(t)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)39 b Fu(41)399 1836 y(3.7.5)93 b(Exit)31
+(:)f(:)g(:)h(:)39 b Fu(44)399 1836 y(3.7.5)93 b(Exit)31
b(Status)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29
-b Fu(41)399 1946 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)
+b Fu(44)399 1946 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(42)275
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(45)275
2056 y(3.8)92 b(Shell)30 b(Scripts)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(42)150 2306
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(46)150 2306
y Fs(4)135 b(Shell)45 b(Builtin)g(Commands)14 b Fo(:)20
b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)27 b Fs(44)275 2443 y Fu(4.1)92 b(Bourne)30
+(:)h(:)f(:)h(:)f(:)27 b Fs(48)275 2443 y Fu(4.1)92 b(Bourne)30
b(Shell)g(Builtins)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)29
-b Fu(44)275 2553 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13
+b Fu(48)275 2553 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13
b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)26 b Fu(51)275 2663 y(4.3)92 b(Mo)s(difying)30
+(:)f(:)g(:)h(:)f(:)26 b Fu(55)275 2663 y(4.3)92 b(Mo)s(difying)30
b(Shell)g(Beha)m(vior)18 b Fn(:)f(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(62)399
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(67)399
2772 y(4.3.1)93 b(The)30 b(Set)g(Builtin)14 b Fn(:)i(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)27 b Fu(62)399 2882 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21
+f(:)g(:)27 b Fu(67)399 2882 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21
b Fn(:)16 b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(66)275 2991 y(4.4)92
+h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(71)275 2991 y(4.4)92
b(Sp)s(ecial)30 b(Builtins)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)22 b Fu(72)150 3242 y Fs(5)135 b(Shell)45
+f(:)g(:)h(:)f(:)22 b Fu(77)150 3242 y Fs(5)135 b(Shell)45
b(V)-11 b(ariables)11 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(73)275 3379 y Fu(5.1)92
+f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(78)275 3379 y Fu(5.1)92
b(Bourne)30 b(Shell)g(V)-8 b(ariables)10 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-23 b Fu(73)275 3489 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26
+23 b Fu(78)275 3489 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38
-b Fu(73)150 3739 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32
+b Fu(78)150 3739 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32
b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-44 b Fs(86)275 3876 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16
+44 b Fs(91)275 3876 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16
b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)29
-b Fu(86)275 3986 y(6.2)92 b(Bash)30 b(Startup)g(Files)f
+b Fu(91)275 3986 y(6.2)92 b(Bash)30 b(Startup)g(Files)f
Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(88)275
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(93)275
4095 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)19 b Fn(:)d(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(89)399 4205 y(6.3.1)93
+(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(94)399 4205 y(6.3.1)93
b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)25 b
Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
-b Fu(90)399 4315 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m
+b Fu(95)399 4315 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m
(e?)22 b Fn(:)d(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)35 b Fu(90)399 4424 y(6.3.3)93 b(In)m(teractiv)m(e)33
+h(:)35 b Fu(95)399 4424 y(6.3.3)93 b(In)m(teractiv)m(e)33
b(Shell)d(Beha)m(vior)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(90)275 4534 y(6.4)92 b(Bash)30
+(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(95)275 4534 y(6.4)92 b(Bash)30
b(Conditional)h(Expressions)10 b Fn(:)k(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(91)275 4643 y(6.5)92
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(96)275 4643 y(6.5)92
b(Shell)30 b(Arithmetic)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)26 b Fu(93)275 4753 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
-b Fu(94)275 4863 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)
+(:)h(:)26 b Fu(98)275 4753 y(6.6)92 b(Aliases)18 b Fn(:)e(:)g(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)31
+b Fu(100)275 4863 y(6.7)92 b(Arra)m(ys)23 b Fn(:)15 b(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36
+b Fu(100)275 4972 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)14
+b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)27 b Fu(102)399 5082 y(6.8.1)93
+b(Directory)32 b(Stac)m(k)f(Builtins)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)33 b Fu(102)275 5191
+y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)10 b Fn(:)15
+b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)38
-b Fu(95)275 4972 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16
-b Fn(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(97)399 5082
-y(6.8.1)93 b(Directory)32 b(Stac)m(k)f(Builtins)23 b
-Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-36 b Fu(97)275 5191 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13
-b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(98)275 5301 y(6.10)92
-b(The)30 b(Restricted)h(Shell)9 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22
-b Fu(100)p eop end
+h(:)f(:)h(:)23 b Fu(104)275 5301 y(6.10)92 b(The)30 b(Restricted)h
+(Shell)9 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22 b Fu(105)p
+eop end
%%Page: -3 5
TeXDict begin -3 4 bop 3674 -116 a Fu(iii)275 83 y(6.11)92
b(Bash)31 b(POSIX)e(Mo)s(de)14 b Fn(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28
-b Fu(101)275 193 y(6.12)92 b(Shell)30 b(Compatibilit)m(y)i(Mo)s(de)25
+b Fu(106)275 193 y(6.12)92 b(Shell)30 b(Compatibilit)m(y)i(Mo)s(de)25
b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)38 b Fu(104)150 443 y Fs(7)135 b(Job)45 b(Con)l(trol)35
+h(:)38 b Fu(110)150 443 y Fs(7)135 b(Job)45 b(Con)l(trol)35
b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
-g(:)48 b Fs(107)275 580 y Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23
+g(:)48 b Fs(113)275 580 y Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23
b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(107)275 690
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(113)275 690
y(7.2)92 b(Job)30 b(Con)m(trol)h(Builtins)11 b Fn(:)k(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)24 b Fu(108)275 800 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8
+(:)f(:)24 b Fu(114)275 800 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8
b(ariables)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(110)150
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(116)150
1050 y Fs(8)135 b(Command)45 b(Line)g(Editing)11 b Fo(:)20
b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)k Fs(111)275 1187 y Fu(8.1)92 b(In)m(tro)s(duction)
+(:)g(:)h(:)f(:)h(:)k Fs(117)275 1187 y Fu(8.1)92 b(In)m(tro)s(duction)
30 b(to)h(Line)f(Editing)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(111)275 1297 y(8.2)92
+(:)h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(117)275 1297 y(8.2)92
b(Readline)31 b(In)m(teraction)14 b Fn(:)j(:)e(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)27
-b Fu(111)399 1406 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13
+b Fu(117)399 1406 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13
b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)26
-b Fu(112)399 1516 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
+b Fu(118)399 1516 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
(Commands)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27
-b Fu(112)399 1626 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24
+b Fu(118)399 1626 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24
b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
-b Fu(113)399 1735 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17
+b Fu(119)399 1735 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17
b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)30 b Fu(113)399 1845 y(8.2.5)93 b(Searc)m(hing)31
+(:)f(:)h(:)30 b Fu(119)399 1845 y(8.2.5)93 b(Searc)m(hing)31
b(for)f(Commands)f(in)h(the)h(History)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(113)275
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(119)275
1954 y(8.3)92 b(Readline)31 b(Init)f(File)8 b Fn(:)17
b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(114)399 2064
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(120)399 2064
y(8.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)21
b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)34
-b Fu(114)399 2174 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14
+b Fu(120)399 2174 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14
b Fn(:)h(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27
-b Fu(122)399 2283 y(8.3.3)93 b(Sample)30 b(Init)g(File)20
+b Fu(129)399 2283 y(8.3.3)93 b(Sample)30 b(Init)g(File)20
b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(124)275 2393 y(8.4)92
+(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(130)275 2393 y(8.4)92
b(Bindable)30 b(Readline)h(Commands)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(127)399 2502 y(8.4.1)93
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(133)399 2502 y(8.4.1)93
b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)16 b Fn(:)h(:)e(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(127)399
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(133)399
2612 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f
(History)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)39 b Fu(128)399 2721 y(8.4.3)93 b(Commands)29 b(F)-8
+f(:)39 b Fu(134)399 2721 y(8.4.3)93 b(Commands)29 b(F)-8
b(or)31 b(Changing)f(T)-8 b(ext)9 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)23 b Fu(130)399 2831 y(8.4.4)93 b(Killing)31
+h(:)f(:)23 b Fu(136)399 2831 y(8.4.4)93 b(Killing)31
b(And)e(Y)-8 b(anking)10 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(131)399
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(137)399
2941 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)25
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(132)399
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(138)399
3050 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8
b(or)31 b(Y)-8 b(ou)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33
-b Fu(133)399 3160 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9
+b Fu(139)399 3160 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9
b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(134)399 3269 y(8.4.8)93
+h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(140)399 3269 y(8.4.8)93
b(Some)30 b(Miscellaneous)j(Commands)14 b Fn(:)f(:)j(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)27 b Fu(135)275 3379 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e
+(:)f(:)27 b Fu(141)275 3379 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e
Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(137)275
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(143)275
3489 y(8.6)92 b(Programmable)30 b(Completion)25 b Fn(:)15
b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
-b Fu(137)275 3598 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14
+b Fu(143)275 3598 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14
b Fn(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(139)275
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(146)275
3708 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)8
b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(143)150 3958 y
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(150)150 3958 y
Fs(9)135 b(Using)45 b(History)h(In)l(teractiv)l(ely)28
b Fo(:)22 b(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)41 b Fs(146)275 4095 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8
+(:)h(:)41 b Fs(152)275 4095 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8
b(acilities)9 b Fn(:)19 b(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(146)275
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(152)275
4205 y(9.2)92 b(Bash)30 b(History)h(Builtins)d Fn(:)16
b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)41 b Fu(146)275 4315 y(9.3)92 b(History)31
+h(:)f(:)h(:)f(:)41 b Fu(152)275 4315 y(9.3)92 b(History)31
b(Expansion)10 b Fn(:)k(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)23
-b Fu(148)399 4424 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19
+b Fu(154)399 4424 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19
b Fn(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)32 b Fu(149)399 4534 y(9.3.2)93 b(W)-8
+(:)h(:)f(:)g(:)h(:)32 b Fu(155)399 4534 y(9.3.2)93 b(W)-8
b(ord)31 b(Designators)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(150)399
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(156)399
4643 y(9.3.3)93 b(Mo)s(di\014ers)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)29 b Fu(150)p eop end
+h(:)f(:)h(:)f(:)g(:)29 b Fu(156)p eop end
%%Page: -4 6
TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(10)135
b(Installing)46 b(Bash)16 b Fo(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)h(:)f(:)29 b Fs(152)275 220 y Fu(10.1)92 b(Basic)32
+f(:)h(:)f(:)29 b Fs(158)275 220 y Fu(10.1)92 b(Basic)32
b(Installation)8 b Fn(:)17 b(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22
-b Fu(152)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17
+b Fu(158)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17
b Fn(:)d(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)30 b Fu(153)275 439 y(10.3)92 b(Compiling)30
+(:)f(:)h(:)f(:)30 b Fu(159)275 439 y(10.3)92 b(Compiling)30
b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)10 b Fn(:)16
b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(153)275 549 y(10.4)92
+(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(159)275 549 y(10.4)92
b(Installation)32 b(Names)22 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)35
-b Fu(153)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s
+b Fu(160)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s
(e)21 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)34 b Fu(154)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24
+h(:)34 b Fu(160)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(154)275
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(160)275
878 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 b Fn(:)k(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)25 b Fu(154)275 987 y(10.8)92 b(Optional)31
+(:)h(:)f(:)25 b Fu(161)275 987 y(10.8)92 b(Optional)31
b(F)-8 b(eatures)19 b Fn(:)d(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)32
-b Fu(155)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46
+b Fu(161)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46
b(Bugs)21 b Fo(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)35 b Fs(160)150 1498 y(App)t(endix)44
+(:)f(:)g(:)h(:)f(:)35 b Fs(167)150 1498 y(App)t(endix)44
b(B)125 b(Ma)7 b(jor)46 b(Di\013erences)g(F)-11 b(rom)284
1639 y(The)45 b(Bourne)f(Shell)35 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)47 b Fs(161)275 1776 y Fu(B.1)92
+f(:)g(:)h(:)f(:)h(:)47 b Fs(168)275 1776 y Fu(B.1)92
b(Implemen)m(tation)31 b(Di\013erences)h(F)-8 b(rom)31
b(The)e(SVR4.2)j(Shell)22 b Fn(:)15 b(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)35 b Fu(165)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36
+(:)35 b Fu(172)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36
b(F)-11 b(ree)35 b(Do)t(cumen)l(tation)i(License)25 b
-Fo(:)20 b(:)29 b Fs(167)150 2305 y(App)t(endix)44 b(D)118
+Fo(:)20 b(:)29 b Fs(174)150 2305 y(App)t(endix)44 b(D)118
b(Indexes)27 b Fo(:)20 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)40
-b Fs(175)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h
+b Fs(182)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h
(Commands)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)38
-b Fu(175)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8
+b Fu(182)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8
b(ords)20 b Fn(:)c(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)34
-b Fu(176)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8
+b Fu(183)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8
b(ariable)32 b(Index)27 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)42 b Fu(177)275 2771 y(D.4)92 b(F)-8 b(unction)31
+h(:)f(:)g(:)42 b Fu(184)275 2771 y(D.4)92 b(F)-8 b(unction)31
b(Index)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
-b Fu(179)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b
+b Fu(186)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b
Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b
-Fu(181)p eop end
+Fu(188)p eop end
%%Page: 1 7
TeXDict begin 1 6 bop 3705 -116 a Fu(1)150 299 y Fp(1)80
b(In)l(tro)t(duction)150 604 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150
@@ -8267,7 +8267,7 @@ b(and)e(function)h(names.)630 4020 y(Also)31 b(referred)f(to)h(as)f(an)
h Ft(identifier)p Fu(.)150 4186 y Ft(operator)96 b Fu(A)38
b Ft(control)28 b(operator)36 b Fu(or)h(a)i Ft(redirection)27
b(operator)p Fu(.)61 b(See)38 b(Section)g(3.6)h([Redirec-)630
-4295 y(tions],)f(page)f(35,)i(for)d(a)g(list)h(of)f(redirection)h(op)s
+4295 y(tions],)f(page)f(38,)i(for)d(a)g(list)h(of)f(redirection)h(op)s
(erators.)58 b(Op)s(erators)35 b(con)m(tain)j(at)f(least)630
4405 y(one)31 b(unquoted)e Ft(metacharacter)p Fu(.)150
4570 y Ft(process)f(group)630 4680 y Fu(A)i(collection)k(of)c(related)h
@@ -8339,34 +8339,34 @@ y Fu(The)c(follo)m(wing)h(is)f(a)h(brief)e(description)i(of)f(the)g
(shell's)h(op)s(eration)f(when)f(it)i(reads)f(and)f(executes)j(a)150
3299 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h
(follo)m(wing:)199 3456 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g
-(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(42\),)k
+(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(46\),)k
(from)41 b(a)i(string)330 3566 y(supplied)30 b(as)h(an)g(argumen)m(t)h
(to)g(the)f Ft(-c)g Fu(in)m(v)m(o)s(cation)i(option)f(\(see)g(Section)g
-(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(86\),)h(or)e(from)g
+(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(91\),)h(or)e(from)g
(the)h(user's)f(terminal.)199 3821 y(2.)61 b(Breaks)43
b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d
(the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3931 y(Section)27
b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f
(separated)g(b)m(y)f Ft(metacharacters)p Fu(.)36 b(Alias)330
4040 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i
-(Section)f(6.6)g([Aliases],)i(page)e(94\).)199 4186 y(3.)61
-b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g(comp)s
-(ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330
-4296 y(mands],)30 b(page)h(8\).)199 4442 y(4.)61 b(P)m(erforms)40
+(Section)f(6.6)g([Aliases],)i(page)e(100\).)199 4186
+y(3.)61 b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g
+(comp)s(ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330
+4296 y(mands],)30 b(page)h(9\).)199 4442 y(4.)61 b(P)m(erforms)40
b(the)h(v)-5 b(arious)40 b(shell)h(expansions)f(\(see)h(Section)g(3.5)g
-([Shell)g(Expansions],)h(page)f(22\),)330 4551 y(breaking)35
+([Shell)g(Expansions],)h(page)f(24\),)330 4551 y(breaking)35
b(the)g(expanded)g(tok)m(ens)h(in)m(to)g(lists)f(of)g(\014lenames)h
(\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4661 y(pansion],)30
-b(page)h(33\))h(and)e(commands)g(and)g(argumen)m(ts.)199
+b(page)h(35\))h(and)e(commands)g(and)g(argumen)m(ts.)199
4807 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g
-(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(35\))g(and)e(re-)330
+(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(38\))g(and)e(re-)330
4916 y(mo)m(v)m(es)c(the)e(redirection)h(op)s(erators)g(and)f(their)g
(op)s(erands)f(from)h(the)h(argumen)m(t)f(list.)199 5062
y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)g(3.7)h
-([Executing)f(Commands],)f(page)h(39\).)199 5208 y(7.)61
+([Executing)f(Commands],)f(page)h(42\).)199 5208 y(7.)61
b(Optionally)40 b(w)m(aits)g(for)f(the)g(command)g(to)h(complete)g(and)
f(collects)i(its)f(exit)g(status)f(\(see)h(Sec-)330 5317
-y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(41\).)p
+y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(44\).)p
eop end
%%Page: 6 12
TeXDict begin 6 11 bop 150 -116 a Fu(Chapter)30 b(3:)41
@@ -8378,2350 +8378,2604 @@ y(Quoting)c(can)f(b)s(e)g(used)f(to)j(disable)e(sp)s(ecial)h(treatmen)m
(t)h(for)e(sp)s(ecial)h(c)m(haracters,)i(to)e(prev)m(en)m(t)g(reserv)m
(ed)150 665 y(w)m(ords)i(from)g(b)s(eing)g(recognized)h(as)g(suc)m(h,)f
(and)g(to)h(prev)m(en)m(t)g(parameter)g(expansion.)275
-795 y(Eac)m(h)22 b(of)g(the)g(shell)g(metac)m(haracters)i(\(see)f
+799 y(Eac)m(h)22 b(of)g(the)g(shell)g(metac)m(haracters)i(\(see)f
(Chapter)e(2)i([De\014nitions],)h(page)f(3\))g(has)e(sp)s(ecial)i
-(meaning)150 905 y(to)40 b(the)g(shell)f(and)g(m)m(ust)g(b)s(e)g
+(meaning)150 908 y(to)40 b(the)g(shell)f(and)g(m)m(ust)g(b)s(e)g
(quoted)g(if)h(it)g(is)f(to)h(represen)m(t)g(itself.)68
-b(When)39 b(the)h(command)f(history)150 1015 y(expansion)i(facilities)j
+b(When)39 b(the)h(command)f(history)150 1018 y(expansion)i(facilities)j
(are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m
-(teraction],)j(page)c(148\),)47 b(the)150 1124 y Fr(history)30
+(teraction],)j(page)c(154\),)47 b(the)150 1127 y Fr(history)30
b(expansion)h Fu(c)m(haracter,)h(usually)f(`)p Ft(!)p
Fu(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g
-(expansion.)41 b(See)150 1234 y(Section)22 b(9.1)g([Bash)f(History)h(F)
--8 b(acilities],)26 b(page)c(146,)j(for)20 b(more)h(details)h
-(concerning)g(history)f(expansion.)275 1364 y(There)37
+(expansion.)41 b(See)150 1237 y(Section)22 b(9.1)g([Bash)f(History)h(F)
+-8 b(acilities],)26 b(page)c(152,)j(for)20 b(more)h(details)h
+(concerning)g(history)f(expansion.)275 1370 y(There)37
b(are)h(three)f(quoting)h(mec)m(hanisms:)56 b(the)38
b Fr(escap)s(e)g(c)m(haracter)p Fu(,)j(single)d(quotes,)i(and)d(double)
-150 1474 y(quotes.)150 1665 y Fk(3.1.2.1)63 b(Escap)s(e)41
-b(Character)150 1812 y Fu(A)36 b(non-quoted)f(bac)m(kslash)h(`)p
+150 1480 y(quotes.)150 1677 y Fk(3.1.2.1)63 b(Escap)s(e)41
+b(Character)150 1824 y Fu(A)36 b(non-quoted)f(bac)m(kslash)h(`)p
Ft(\\)p Fu(')g(is)f(the)h(Bash)g(escap)s(e)f(c)m(haracter.)58
b(It)36 b(preserv)m(es)f(the)h(literal)h(v)-5 b(alue)36
-b(of)150 1921 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i
+b(of)150 1934 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i
(with)d(the)h(exception)g(of)g Ft(newline)p Fu(.)38 b(If)26
-b(a)h Ft(\\newline)d Fu(pair)i(app)s(ears,)150 2031 y(and)k(the)h(bac)m
+b(a)h Ft(\\newline)d Fu(pair)i(app)s(ears,)150 2043 y(and)k(the)h(bac)m
(kslash)g(itself)g(is)g(not)g(quoted,)g(the)f Ft(\\newline)f
Fu(is)h(treated)i(as)f(a)g(line)g(con)m(tin)m(uation)h(\(that)150
-2140 y(is,)f(it)g(is)f(remo)m(v)m(ed)h(from)f(the)h(input)e(stream)i
-(and)f(e\013ectiv)m(ely)j(ignored\).)150 2331 y Fk(3.1.2.2)63
-b(Single)42 b(Quotes)150 2478 y Fu(Enclosing)24 b(c)m(haracters)h(in)e
+2153 y(is,)f(it)g(is)f(remo)m(v)m(ed)h(from)f(the)h(input)e(stream)i
+(and)f(e\013ectiv)m(ely)j(ignored\).)150 2350 y Fk(3.1.2.2)63
+b(Single)42 b(Quotes)150 2497 y Fu(Enclosing)24 b(c)m(haracters)h(in)e
(single)h(quotes)g(\(`)p Ft(')p Fu('\))g(preserv)m(es)g(the)f(literal)i
(v)-5 b(alue)24 b(of)g(eac)m(h)g(c)m(haracter)h(within)150
-2588 y(the)31 b(quotes.)42 b(A)31 b(single)h(quote)f(ma)m(y)g(not)g(o)s
+2607 y(the)31 b(quotes.)42 b(A)31 b(single)h(quote)f(ma)m(y)g(not)g(o)s
(ccur)g(b)s(et)m(w)m(een)g(single)h(quotes,)f(ev)m(en)h(when)d
-(preceded)i(b)m(y)g(a)150 2697 y(bac)m(kslash.)150 2888
-y Fk(3.1.2.3)63 b(Double)42 b(Quotes)150 3035 y Fu(Enclosing)24
+(preceded)i(b)m(y)g(a)150 2717 y(bac)m(kslash.)150 2914
+y Fk(3.1.2.3)63 b(Double)42 b(Quotes)150 3061 y Fu(Enclosing)24
b(c)m(haracters)h(in)f(double)f(quotes)h(\(`)p Ft(")p
Fu('\))g(preserv)m(es)g(the)g(literal)h(v)-5 b(alue)24
-b(of)g(all)g(c)m(haracters)h(within)150 3145 y(the)34
+b(of)g(all)g(c)m(haracters)h(within)150 3170 y(the)34
b(quotes,)h(with)f(the)g(exception)h(of)f(`)p Ft($)p
Fu(',)h(`)p Ft(`)p Fu(',)g(`)p Ft(\\)p Fu(',)g(and,)f(when)f(history)g
-(expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3254
+(expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3280
y(When)c(the)g(shell)g(is)g(in)f Fm(posix)h Fu(mo)s(de)f(\(see)i
-(Section)g(6.11)g([Bash)f(POSIX)f(Mo)s(de],)i(page)g(101\),)h(the)e(`)p
-Ft(!)p Fu(')150 3364 y(has)d(no)g(sp)s(ecial)h(meaning)g(within)f
+(Section)g(6.11)g([Bash)f(POSIX)f(Mo)s(de],)i(page)g(106\),)h(the)e(`)p
+Ft(!)p Fu(')150 3390 y(has)d(no)g(sp)s(ecial)h(meaning)g(within)f
(double)g(quotes,)h(ev)m(en)g(when)f(history)g(expansion)g(is)g
-(enabled.)40 b(The)150 3474 y(c)m(haracters)h(`)p Ft($)p
+(enabled.)40 b(The)150 3499 y(c)m(haracters)h(`)p Ft($)p
Fu(')e(and)g(`)p Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f
(within)g(double)g(quotes)h(\(see)g(Section)g(3.5)150
-3583 y([Shell)29 b(Expansions],)g(page)h(22\).)41 b(The)28
+3609 y([Shell)29 b(Expansions],)g(page)h(24\).)41 b(The)28
b(bac)m(kslash)i(retains)f(its)h(sp)s(ecial)f(meaning)g(only)g(when)f
-(follo)m(w)m(ed)150 3693 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h
+(follo)m(w)m(ed)150 3718 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h
(c)m(haracters:)63 b(`)p Ft($)p Fu(',)43 b(`)p Ft(`)p
Fu(',)h(`)p Ft(")p Fu(',)g(`)p Ft(\\)p Fu(',)f(or)e Ft(newline)p
-Fu(.)69 b(Within)41 b(double)f(quotes,)150 3802 y(bac)m(kslashes)25
+Fu(.)69 b(Within)41 b(double)f(quotes,)150 3828 y(bac)m(kslashes)25
b(that)h(are)f(follo)m(w)m(ed)h(b)m(y)e(one)h(of)g(these)g(c)m
(haracters)h(are)f(remo)m(v)m(ed.)40 b(Bac)m(kslashes)26
-b(preceding)150 3912 y(c)m(haracters)35 b(without)e(a)h(sp)s(ecial)f
+b(preceding)150 3938 y(c)m(haracters)35 b(without)e(a)h(sp)s(ecial)f
(meaning)h(are)f(left)h(unmo)s(di\014ed.)47 b(A)34 b(double)f(quote)g
-(ma)m(y)h(b)s(e)f(quoted)150 4022 y(within)h(double)h(quotes)g(b)m(y)g
+(ma)m(y)h(b)s(e)f(quoted)150 4047 y(within)h(double)h(quotes)g(b)m(y)g
(preceding)g(it)g(with)g(a)g(bac)m(kslash.)55 b(If)35
-b(enabled,)h(history)f(expansion)g(will)150 4131 y(b)s(e)f(p)s
+b(enabled,)h(history)f(expansion)g(will)150 4157 y(b)s(e)f(p)s
(erformed)g(unless)g(an)h(`)p Ft(!)p Fu(')g(app)s(earing)f(in)h(double)
f(quotes)i(is)f(escap)s(ed)g(using)f(a)h(bac)m(kslash.)55
-b(The)150 4241 y(bac)m(kslash)31 b(preceding)f(the)h(`)p
-Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4371 y(The)41
+b(The)150 4266 y(bac)m(kslash)31 b(preceding)f(the)h(`)p
+Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4400 y(The)41
b(sp)s(ecial)h(parameters)f(`)p Ft(*)p Fu(')h(and)f(`)p
Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g(when)f(in)g(double)g
-(quotes)h(\(see)150 4481 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h
-(Expansion],)e(page)h(25\).)150 4672 y Fk(3.1.2.4)63
-b(ANSI-C)40 b(Quoting)150 4819 y Fu(W)-8 b(ords)43 b(of)f(the)h(form)f
-Ft($')p Fj(string)p Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8
-b(.)79 b(The)42 b(w)m(ord)g(expands)f(to)j Fr(string)p
-Fu(,)h(with)150 4928 y(bac)m(kslash-escap)s(ed)f(c)m(haracters)h
-(replaced)f(as)g(sp)s(eci\014ed)f(b)m(y)g(the)g(ANSI)g(C)g(standard.)79
-b(Bac)m(kslash)150 5038 y(escap)s(e)31 b(sequences,)g(if)f(presen)m(t,)
-h(are)g(deco)s(ded)f(as)g(follo)m(ws:)150 5189 y Ft(\\a)384
-b Fu(alert)31 b(\(b)s(ell\))150 5340 y Ft(\\b)384 b Fu(bac)m(kspace)p
-eop end
+(quotes)h(\(see)150 4509 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h
+(Expansion],)e(page)h(26\).)150 4707 y Fk(3.1.2.4)63
+b(ANSI-C)40 b(Quoting)150 4854 y Fu(Character)g(sequences)h(of)f(the)g
+(form)g($')p Fr(string)8 b Fu(')40 b(are)h(treated)g(as)f(a)h(sp)s
+(ecial)f(kind)f(of)i(single)f(quotes.)150 4963 y(The)e(sequence)i
+(expands)e(to)i Fr(string)p Fu(,)h(with)e(bac)m(kslash-escap)s(ed)h(c)m
+(haracters)g(in)f Fr(string)46 b Fu(replaced)40 b(as)150
+5073 y(sp)s(eci\014ed)32 b(b)m(y)h(the)g(ANSI)f(C)h(standard.)47
+b(Bac)m(kslash)34 b(escap)s(e)g(sequences,)g(if)e(presen)m(t,)i(are)f
+(deco)s(ded)g(as)150 5182 y(follo)m(ws:)150 5340 y Ft(\\a)384
+b Fu(alert)31 b(\(b)s(ell\))p eop end
%%Page: 7 13
TeXDict begin 7 12 bop 150 -116 a Fu(Chapter)30 b(3:)41
b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299
-y Ft(\\e)150 408 y(\\E)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)h
-(\(not)f(ANSI)f(C\))150 566 y Ft(\\f)384 b Fu(form)30
-b(feed)150 723 y Ft(\\n)384 b Fu(newline)150 880 y Ft(\\r)g
-Fu(carriage)32 b(return)150 1037 y Ft(\\t)384 b Fu(horizon)m(tal)32
-b(tab)150 1194 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150
-1351 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1508 y Ft(\\')g
-Fu(single)31 b(quote)150 1665 y Ft(\\")384 b Fu(double)30
-b(quote)150 1823 y Ft(\\?)384 b Fu(question)31 b(mark)150
-1980 y Ft(\\)p Fj(nnn)288 b Fu(the)36 b(eigh)m(t-bit)h(c)m(haracter)g
-(whose)f(v)-5 b(alue)36 b(is)f(the)h(o)s(ctal)h(v)-5
-b(alue)36 b Fr(nnn)e Fu(\(one)i(to)h(three)f(o)s(ctal)630
-2089 y(digits\))150 2246 y Ft(\\x)p Fj(HH)288 b Fu(the)36
-b(eigh)m(t-bit)i(c)m(haracter)f(whose)f(v)-5 b(alue)36
-b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36 b Fr(HH)46
-b Fu(\(one)37 b(or)f(t)m(w)m(o)630 2356 y(hex)30 b(digits\))150
-2513 y Ft(\\u)p Fj(HHHH)192 b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g
-(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g
-(hexadecimal)g(v)-5 b(alue)630 2623 y Fr(HHHH)41 b Fu(\(one)31
-b(to)g(four)f(hex)g(digits\))150 2780 y Ft(\\U)p Fj(HHHHHHHH)630
-2889 y Fu(the)j(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f
-(whose)e(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5
-b(alue)630 2999 y Fr(HHHHHHHH)42 b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g
-(digits\))150 3156 y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p
-Fr(x)38 b Fu(c)m(haracter)150 3313 y(The)30 b(expanded)f(result)i(is)f
+y Ft(\\b)384 b Fu(bac)m(kspace)150 466 y Ft(\\e)150 576
+y(\\E)g Fu(an)30 b(escap)s(e)h(c)m(haracter)h(\(not)f(ANSI)f(C\))150
+743 y Ft(\\f)384 b Fu(form)30 b(feed)150 911 y Ft(\\n)384
+b Fu(newline)150 1078 y Ft(\\r)g Fu(carriage)32 b(return)150
+1245 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)150 1413
+y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 1580 y Ft(\\\\)384
+b Fu(bac)m(kslash)150 1747 y Ft(\\')g Fu(single)31 b(quote)150
+1915 y Ft(\\")384 b Fu(double)30 b(quote)150 2082 y Ft(\\?)384
+b Fu(question)31 b(mark)150 2249 y Ft(\\)p Fj(nnn)288
+b Fu(the)36 b(eigh)m(t-bit)h(c)m(haracter)g(whose)f(v)-5
+b(alue)36 b(is)f(the)h(o)s(ctal)h(v)-5 b(alue)36 b Fr(nnn)e
+Fu(\(one)i(to)h(three)f(o)s(ctal)630 2359 y(digits\))150
+2526 y Ft(\\x)p Fj(HH)288 b Fu(the)36 b(eigh)m(t-bit)i(c)m(haracter)f
+(whose)f(v)-5 b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5
+b(alue)36 b Fr(HH)46 b Fu(\(one)37 b(or)f(t)m(w)m(o)630
+2636 y(hex)30 b(digits\))150 2803 y Ft(\\u)p Fj(HHHH)192
+b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f(whose)e
+(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 b(alue)630
+2913 y Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)f(hex)g(digits\))150
+3080 y Ft(\\U)p Fj(HHHHHHHH)630 3190 y Fu(the)j(Unico)s(de)f(\(ISO/IEC)
+g(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g
+(hexadecimal)g(v)-5 b(alue)630 3299 y Fr(HHHHHHHH)42
+b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3467
+y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p Fr(x)38
+b Fu(c)m(haracter)150 3638 y(The)30 b(expanded)f(result)i(is)f
(single-quoted,)i(as)f(if)f(the)g(dollar)h(sign)g(had)e(not)i(b)s(een)f
-(presen)m(t.)150 3510 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41
-b(T)-10 b(ranslation)150 3657 y Fu(A)28 b(double-quoted)g(string)f
-(preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Ft($)p
-Fu('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150
-3767 y(according)37 b(to)g(the)f(curren)m(t)g(lo)s(cale.)59
-b(The)36 b Fr(gettext)k Fu(infrastructure)35 b(p)s(erforms)g(the)h
-(message)h(catalog)150 3876 y(lo)s(okup)21 b(and)g(translation,)k
-(using)c(the)h Ft(LC_MESSAGES)d Fu(and)i Ft(TEXTDOMAIN)e
-Fu(shell)i(v)-5 b(ariables,)25 b(as)d(explained)150 3986
-y(b)s(elo)m(w.)57 b(See)36 b(the)g(gettext)i(do)s(cumen)m(tation)e(for)
-g(additional)g(details.)58 b(If)35 b(the)h(curren)m(t)f(lo)s(cale)j(is)
-e Ft(C)f Fu(or)150 4096 y Ft(POSIX)p Fu(,)g(or)g(if)g(there)g(are)h(no)
-f(translations)h(a)m(v)-5 b(ailable,)38 b(the)e(dollar)f(sign)g(is)g
-(ignored.)55 b(If)35 b(the)g(string)g(is)150 4205 y(translated)c(and)f
-(replaced,)h(the)f(replacemen)m(t)i(is)f(double-quoted.)275
-4339 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f
-(b)m(y)f(the)g Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39
-b(Others)150 4448 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)
-i(from)d(the)g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c
-Fu(shell)j(v)-5 b(ariable,)150 4558 y(p)s(ossibly)31
-b(adding)g(a)g(su\016x)g(of)h(`)p Ft(.mo)p Fu('.)43 b(If)31
-b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c Fu(v)-5 b(ariable,)33
-b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 4667 y(the)22
-b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 b(to)g(the)f(lo)s(cation)i
-(of)e(the)h(message)g(catalog)i(\014les.)38 b(Still)23
-b(others)f(use)g(b)s(oth)150 4777 y(v)-5 b(ariables)31
-b(in)f(this)g(fashion:)41 b Ft(TEXTDOMAINDIR)p Fu(/)p
-Ft(LC_MESSAGES)p Fu(/LC)p 2528 4777 28 4 v 34 w(MESSA)m(GES/)p
-Ft(TEXTDOMAIN)p Fu(.mo.)150 4974 y Fk(3.1.3)63 b(Commen)m(ts)150
-5121 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m
-(teractiv)m(e)j(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments)
-16 b Fu(option)150 5230 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h
-(enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e
-(66\),)i(a)d(w)m(ord)150 5340 y(b)s(eginning)26 b(with)g(`)p
-Ft(#)p Fu(')g(causes)h(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m
-(haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)p
-eop end
+(presen)m(t.)150 3845 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41
+b(T)-10 b(ranslation)150 3992 y Fu(Pre\014xing)38 b(a)h(double-quoted)g
+(string)f(with)g(a)h(dollar)g(sign)g(\(`)p Ft($)p Fu('\),)j(suc)m(h)c
+(as)h Ft($"hello,)45 b(world")p Fu(,)40 b(will)150 4102
+y(cause)33 b(the)f(string)h(to)g(b)s(e)f(translated)h(according)g(to)g
+(the)g(curren)m(t)f(lo)s(cale.)48 b(The)32 b Ft(gettext)e
+Fu(infrastruc-)150 4211 y(ture)41 b(p)s(erforms)e(the)i(lo)s(okup)g
+(and)f(translation,)45 b(using)40 b(the)i Ft(LC_MESSAGES)p
+Fu(,)e Ft(TEXTDOMAINDIR)p Fu(,)h(and)150 4321 y Ft(TEXTDOMAIN)34
+b Fu(shell)i(v)-5 b(ariables,)39 b(as)e(explained)f(b)s(elo)m(w.)60
+b(See)36 b(the)h(gettext)i(do)s(cumen)m(tation)e(for)f(addi-)150
+4430 y(tional)24 b(details)g(not)f(co)m(v)m(ered)i(here.)38
+b(If)23 b(the)g(curren)m(t)f(lo)s(cale)j(is)e Ft(C)g
+Fu(or)g Ft(POSIX)p Fu(,)g(if)g(there)g(are)g(no)g(translations)150
+4540 y(a)m(v)-5 b(ailable,)32 b(of)c(if)h(the)f(string)h(is)g(not)f
+(translated,)i(the)f(dollar)g(sign)f(is)h(ignored.)40
+b(Since)29 b(this)f(is)h(a)g(form)f(of)150 4650 y(double)d(quoting,)j
+(the)e(string)g(remains)f(double-quoted)h(b)m(y)g(default,)h(whether)e
+(or)h(not)g(it)g(is)g(translated)150 4759 y(and)i(replaced.)41
+b(If)28 b(the)h Ft(noexpand_translation)23 b Fu(option)29
+b(is)g(enabled)f(using)h(the)f Ft(shopt)g Fu(builtin)g(\(see)150
+4869 y(Section)33 b(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f(71\),)h
+(translated)f(strings)e(are)i(single-quoted)g(instead)g(of)150
+4978 y(double-quoted.)275 5121 y(The)39 b(rest)i(of)g(this)f(section)h
+(is)g(a)g(brief)f(o)m(v)m(erview)i(of)e(ho)m(w)h(y)m(ou)f(use)g
+(gettext)j(to)e(create)h(transla-)150 5230 y(tions)33
+b(for)f(strings)g(in)g(a)h(shell)f(script)h(named)f Fr(scriptname)p
+Fu(.)46 b(There)32 b(are)h(more)g(details)g(in)f(the)h(gettext)150
+5340 y(do)s(cumen)m(tation.)p eop end
%%Page: 8 14
TeXDict begin 8 13 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(8)150 299
-y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(8)275 299
+y(Once)34 b(y)m(ou'v)m(e)i(mark)m(ed)f(the)f(strings)h(in)f(y)m(our)g
+(script)h(that)g(y)m(ou)g(w)m(an)m(t)g(to)g(translate)h(using)e($)p
+Ft(")p Fu(...)p Ft(")p Fu(,)150 408 y(y)m(ou)d(create)h(a)e(gettext)j
+Ft(")p Fu(template)p Ft(")e Fu(\014le)g(using)f(the)g(command)390
+540 y Ft(bash)47 b(--dump-po-strings)c Fj(scriptname)i
+Ft(>)i Fj(domain)p Ft(.pot)150 671 y Fu(The)36 b Fr(domain)g
+Fu(is)g(y)m(our)h Fr(message)g(domain)p Fu(.)58 b(It's)37
+b(just)e(an)i(arbitrary)f(string)g(that's)h(used)e(to)i(iden)m(tify)150
+781 y(the)32 b(\014les)g(gettext)i(needs,)f(lik)m(e)g(a)f(pac)m(k)-5
+b(age)35 b(or)d(script)f(name.)46 b(It)32 b(needs)g(to)h(b)s(e)e
+(unique)g(among)i(all)g(the)150 891 y(message)41 b(domains)f(on)f
+(systems)h(where)g(y)m(ou)g(install)h(the)f(translations,)j(so)d
+(gettext)i(kno)m(ws)e(whic)m(h)150 1000 y(translations)27
+b(corresp)s(ond)e(to)i(y)m(our)f(script.)39 b(Y)-8 b(ou'll)28
+b(use)d(the)i(template)g(\014le)g(to)f(create)i(translations)f(for)150
+1110 y(eac)m(h)32 b(target)f(language.)43 b(The)29 b(template)j(\014le)
+f(con)m(v)m(en)m(tionally)i(has)d(the)h(su\016x)e(`)p
+Ft(.pot)p Fu('.)275 1241 y(Y)-8 b(ou)23 b(cop)m(y)g(this)g(template)h
+(\014le)f(to)h(a)f(separate)h(\014le)f(for)g(eac)m(h)h(target)g
+(language)g(y)m(ou)f(w)m(an)m(t)h(to)g(supp)s(ort)150
+1351 y(\(called)39 b Ft(")p Fu(PO)p Ft(")e Fu(\014les,)i(whic)m(h)f
+(use)f(the)h(su\016x)e(`)p Ft(.po)p Fu('\).)63 b(PO)37
+b(\014les)g(use)h(v)-5 b(arious)37 b(naming)h(con)m(v)m(en)m(tions,)150
+1461 y(but)31 b(when)g(y)m(ou)i(are)f(w)m(orking)g(to)h(translate)g(a)f
+(template)i(\014le)e(in)m(to)h(a)f(particular)g(language,)i(y)m(ou)f
+(\014rst)150 1570 y(cop)m(y)k(the)g(template)h(\014le)e(to)h(a)g
+(\014le)f(whose)h(name)f(is)g(the)h(language)h(y)m(ou)f(w)m(an)m(t)g
+(to)g(target,)j(with)c(the)150 1680 y(`)p Ft(.po)p Fu(')29
+b(su\016x.)39 b(F)-8 b(or)30 b(instance,)g(the)f(Spanish)f
+(translations)i(of)f(y)m(our)g(strings)g(w)m(ould)g(b)s(e)f(in)h(a)g
+(\014le)g(named)150 1789 y(`)p Ft(es.po)p Fu(',)h(and)f(to)j(get)f
+(started)g(using)f(a)h(message)g(domain)f(named)g Ft(")p
+Fu(example,)p Ft(")h Fu(y)m(ou)g(w)m(ould)f(run)390 1921
+y Ft(cp)47 b(example.pot)e(es.po)150 2052 y Fu(Ultimately)-8
+b(,)42 b(PO)37 b(\014les)g(are)h(often)g(named)f Fr(domain)p
+Fu(.p)s(o)g(and)g(installed)h(in)f(directories)i(that)f(con)m(tain)150
+2162 y(m)m(ultiple)31 b(translation)g(\014les)g(for)f(a)h(particular)f
+(language.)275 2293 y(Whic)m(hev)m(er)k(naming)f(con)m(v)m(en)m(tion)i
+(y)m(ou)e(c)m(ho)s(ose,)i(y)m(ou)e(will)g(need)g(to)g(translate)h(the)f
+(strings)g(in)g(the)150 2403 y(PO)d(\014les)g(in)m(to)i(the)e
+(appropriate)h(languages.)42 b(This)29 b(has)h(to)h(b)s(e)f(done)g(man)
+m(ually)-8 b(.)275 2534 y(When)35 b(y)m(ou)h(ha)m(v)m(e)g(the)g
+(translations)g(and)f(PO)g(\014les)g(complete,)k(y)m(ou'll)d(use)g(the)
+f(gettext)j(to)s(ols)e(to)150 2644 y(pro)s(duce)26 b(what)g(are)i
+(called)g Ft(")p Fu(MO)p Ft(")e Fu(\014les,)i(whic)m(h)e(are)h
+(compiled)h(v)m(ersions)f(of)g(the)g(PO)f(\014les)h(the)g(gettext)150
+2754 y(to)s(ols)42 b(use)f(to)h(lo)s(ok)g(up)e(translations)j
+(e\016cien)m(tly)-8 b(.)75 b(MO)42 b(\014les)f(are)g(also)i(called)f
+Ft(")p Fu(message)g(catalog)p Ft(")150 2863 y Fu(\014les.)k(Y)-8
+b(ou)33 b(use)f(the)g Ft(msgfmt)f Fu(program)h(to)h(do)f(this.)46
+b(F)-8 b(or)33 b(instance,)g(if)f(y)m(ou)h(had)f(a)g(\014le)h(with)e
+(Spanish)150 2973 y(translations,)g(y)m(ou)g(could)g(run)390
+3104 y Ft(msgfmt)46 b(-o)h(es.mo)g(es.po)150 3236 y Fu(to)31
+b(pro)s(duce)e(the)i(corresp)s(onding)e(MO)i(\014le.)275
+3367 y(Once)21 b(y)m(ou)h(ha)m(v)m(e)i(the)e(MO)f(\014les,)j(y)m(ou)e
+(decide)g(where)g(to)g(install)h(them)f(and)f(use)h(the)g
+Ft(TEXTDOMAINDIR)150 3477 y Fu(shell)32 b(v)-5 b(ariable)33
+b(to)g(tell)h(the)e(gettext)i(to)s(ols)f(where)f(they)g(are.)47
+b(Mak)m(e)34 b(sure)d(to)i(use)f(the)g(same)h(message)150
+3587 y(domain)d(to)h(name)g(the)f(MO)h(\014les)f(as)h(y)m(ou)f(did)g
+(for)g(the)h(PO)e(\014les)i(when)e(y)m(ou)i(install)g(them.)275
+3718 y(Y)-8 b(our)21 b(users)f(will)h(use)g(the)g Ft(LANG)f
+Fu(or)h Ft(LC_MESSAGES)d Fu(shell)j(v)-5 b(ariables)21
+b(to)h(select)h(the)e(desired)f(language.)275 3850 y(Y)-8
+b(ou)29 b(set)g(the)g Ft(TEXTDOMAIN)d Fu(v)-5 b(ariable)30
+b(to)f(the)g(script's)g(message)h(domain.)40 b(As)29
+b(ab)s(o)m(v)m(e,)h(y)m(ou)f(use)g(the)150 3959 y(message)i(domain)g
+(to)g(name)f(y)m(our)h(translation)g(\014les.)275 4091
+y(Y)-8 b(ou,)31 b(or)g(p)s(ossibly)f(y)m(our)g(users,)h(set)g(the)g
+Ft(TEXTDOMAINDIR)c Fu(v)-5 b(ariable)31 b(to)h(the)f(name)f(of)h(a)g
+(directory)150 4200 y(where)d(the)h(message)h(catalog)i(\014les)d(are)g
+(stored.)40 b(If)28 b(y)m(ou)i(install)f(the)g(message)h(\014les)f(in)m
+(to)h(the)f(system's)150 4310 y(standard)h(message)h(catalog)i
+(directory)-8 b(,)32 b(y)m(ou)e(don't)h(need)f(to)h(w)m(orry)f(ab)s
+(out)g(this)g(v)-5 b(ariable.)275 4441 y(The)31 b(directory)h(where)g
+(the)g(message)h(catalog)h(\014les)e(are)g(stored)g(v)-5
+b(aries)32 b(b)s(et)m(w)m(een)h(systems.)45 b(Some)150
+4551 y(use)24 b(the)h(message)g(catalog)j(selected)e(b)m(y)e(the)h
+Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 b(Others)24
+b(create)i(the)f(name)150 4661 y(of)i(the)h(message)g(catalog)i(from)d
+(the)g(v)-5 b(alue)27 b(of)h(the)f Ft(TEXTDOMAIN)e Fu(shell)i(v)-5
+b(ariable,)29 b(p)s(ossibly)d(adding)h(the)150 4770 y(`)p
+Ft(.mo)p Fu(')32 b(su\016x.)47 b(If)33 b(y)m(ou)g(use)f(the)h
+Ft(TEXTDOMAIN)d Fu(v)-5 b(ariable,)35 b(y)m(ou)e(ma)m(y)g(need)g(to)g
+(set)h(the)f Ft(TEXTDOMAINDIR)150 4880 y Fu(v)-5 b(ariable)26
+b(to)g(the)g(lo)s(cation)h(of)e(the)h(message)h(catalog)h(\014les,)e
+(as)g(ab)s(o)m(v)m(e.)40 b(It's)26 b(common)g(to)g(use)f(b)s(oth)f(v)-5
+b(ari-)150 4989 y(ables)31 b(in)f(this)g(fashion:)41
+b Ft($TEXTDOMAINDIR)p Fu(/)p Ft($LC_MESSAG)o(ES)p Fu(/LC)p
+2474 4989 28 4 v 34 w(MESSA)m(GES/)p Ft($TEXTDOMAIN)p
+Fu(.mo.)275 5121 y(If)i(y)m(ou)h(used)f(that)h(last)g(con)m(v)m(en)m
+(tion,)50 b(and)43 b(y)m(ou)h(w)m(an)m(ted)g(to)h(store)f(the)g
+(message)h(catalog)h(\014les)150 5230 y(with)28 b(Spanish)f(\(es\))i
+(and)f(Esp)s(eran)m(to)h(\(eo\))g(translations)h(in)m(to)f(a)g(lo)s
+(cal)h(directory)f(y)m(ou)f(use)g(for)h(custom)150 5340
+y(translation)i(\014les,)g(y)m(ou)g(could)f(run)p eop
+end
+%%Page: 9 15
+TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)390 299
+y Ft(TEXTDOMAIN=example)390 408 y(TEXTDOMAINDIR=/usr/local)o(/sha)o
+(re/l)o(oca)o(le)390 628 y(cp)47 b(es.mo)g(${TEXTDOMAINDIR}/es/LC_)o
+(MES)o(SAGE)o(S/${)o(TEX)o(TDOM)o(AIN})o(.mo)390 737
+y(cp)g(eo.mo)g(${TEXTDOMAINDIR}/eo/LC_)o(MES)o(SAGE)o(S/${)o(TEX)o
+(TDOM)o(AIN})o(.mo)275 868 y Fu(When)30 b(all)i(of)f(this)f(is)h(done,)
+g(and)f(the)h(message)h(catalog)h(\014les)e(con)m(taining)h(the)f
+(compiled)g(transla-)150 977 y(tions)c(are)g(installed)h(in)e(the)h
+(correct)h(lo)s(cation,)h(y)m(our)e(users)f(will)h(b)s(e)f(able)h(to)h
+(see)f(translated)h(strings)e(in)150 1087 y(an)m(y)k(of)f(the)h(supp)s
+(orted)d(languages)k(b)m(y)e(setting)h(the)g Ft(LANG)e
+Fu(or)h Ft(LC_MESSAGES)d Fu(en)m(vironmen)m(t)k(v)-5
+b(ariables)150 1197 y(b)s(efore)30 b(running)f(y)m(our)h(script.)150
+1388 y Fk(3.1.3)63 b(Commen)m(ts)150 1535 y Fu(In)21
+b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m(teractiv)m(e)j
+(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments)16
+b Fu(option)150 1645 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h
+(enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e
+(71\),)i(a)d(w)m(ord)150 1754 y(b)s(eginning)26 b(with)g(`)p
+Ft(#)p Fu(')g(causes)h(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m
+(haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)150
+1864 y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g
Ft(interactive_comments)38 b Fu(option)44 b(enabled)f(do)s(es)g(not)g
-(allo)m(w)150 408 y(commen)m(ts.)56 b(The)34 b Ft(interactive_comments)
-c Fu(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g(in)m(teractiv)m(e)j
-(shells.)55 b(See)150 518 y(Section)30 b(6.3)f([In)m(teractiv)m(e)j
-(Shells],)d(page)h(89,)g(for)e(a)i(description)e(of)h(what)g(mak)m(es)h
-(a)f(shell)g(in)m(teractiv)m(e.)150 757 y Fs(3.2)68 b(Shell)45
-b(Commands)150 916 y Fu(A)d(simple)g(shell)g(command)f(suc)m(h)h(as)g
-Ft(echo)29 b(a)h(b)g(c)41 b Fu(consists)i(of)f(the)f(command)h(itself)h
-(follo)m(w)m(ed)g(b)m(y)150 1026 y(argumen)m(ts,)31 b(separated)g(b)m
-(y)f(spaces.)275 1159 y(More)h(complex)h(shell)f(commands)g(are)g(comp)
-s(osed)g(of)g(simple)g(commands)g(arranged)g(together)h(in)150
-1269 y(a)f(v)-5 b(ariet)m(y)32 b(of)f(w)m(a)m(ys:)41
-b(in)31 b(a)g(pip)s(eline)f(in)g(whic)m(h)g(the)h(output)f(of)h(one)f
-(command)h(b)s(ecomes)f(the)h(input)f(of)150 1378 y(a)h(second,)f(in)h
-(a)f(lo)s(op)h(or)f(conditional)i(construct,)f(or)f(in)g(some)h(other)g
-(grouping.)150 1575 y Fk(3.2.1)63 b(Reserv)m(ed)40 b(W)-10
-b(ords)150 1722 y Fu(Reserv)m(ed)33 b(w)m(ords)g(are)g(w)m(ords)g(that)
+(allo)m(w)150 1973 y(commen)m(ts.)56 b(The)34 b Ft
+(interactive_comments)c Fu(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g
+(in)m(teractiv)m(e)j(shells.)55 b(See)150 2083 y(Section)30
+b(6.3)f([In)m(teractiv)m(e)j(Shells],)d(page)h(94,)g(for)e(a)i
+(description)e(of)h(what)g(mak)m(es)h(a)f(shell)g(in)m(teractiv)m(e.)
+150 2316 y Fs(3.2)68 b(Shell)45 b(Commands)150 2476 y
+Fu(A)d(simple)g(shell)g(command)f(suc)m(h)h(as)g Ft(echo)29
+b(a)h(b)g(c)41 b Fu(consists)i(of)f(the)f(command)h(itself)h(follo)m(w)
+m(ed)g(b)m(y)150 2585 y(argumen)m(ts,)31 b(separated)g(b)m(y)f(spaces.)
+275 2716 y(More)h(complex)h(shell)f(commands)g(are)g(comp)s(osed)g(of)g
+(simple)g(commands)g(arranged)g(together)h(in)150 2825
+y(a)f(v)-5 b(ariet)m(y)32 b(of)f(w)m(a)m(ys:)41 b(in)31
+b(a)g(pip)s(eline)f(in)g(whic)m(h)g(the)h(output)f(of)h(one)f(command)h
+(b)s(ecomes)f(the)h(input)f(of)150 2935 y(a)h(second,)f(in)h(a)f(lo)s
+(op)h(or)f(conditional)i(construct,)f(or)f(in)g(some)h(other)g
+(grouping.)150 3126 y Fk(3.2.1)63 b(Reserv)m(ed)40 b(W)-10
+b(ords)150 3273 y Fu(Reserv)m(ed)33 b(w)m(ords)g(are)g(w)m(ords)g(that)
g(ha)m(v)m(e)h(sp)s(ecial)g(meaning)f(to)h(the)f(shell.)49
-b(They)32 b(are)h(used)g(to)g(b)s(egin)150 1832 y(and)d(end)f(the)i
-(shell's)g(comp)s(ound)e(commands.)275 1965 y(The)k(follo)m(wing)i(w)m
+b(They)32 b(are)h(used)g(to)g(b)s(egin)150 3383 y(and)d(end)f(the)i
+(shell's)g(comp)s(ound)e(commands.)275 3514 y(The)k(follo)m(wing)i(w)m
(ords)e(are)h(recognized)i(as)e(reserv)m(ed)f(when)g(unquoted)g(and)g
-(the)h(\014rst)f(w)m(ord)h(of)g(a)150 2075 y(command)c(\(see)h(b)s(elo)
-m(w)g(for)f(exceptions\):)150 2208 y Ft(if)364 b(then)168
-b(elif)g(else)g(fi)336 b(time)150 2318 y(for)316 b(in)264
-b(until)120 b(while)g(do)336 b(done)150 2427 y(case)268
-b(esac)168 b(coproc)72 b(select)g(function)150 2537 y({)412
-b(})312 b([[)264 b(]])g(!)150 2670 y(in)33 b Fu(is)h(recognized)h(as)f
+(the)h(\014rst)f(w)m(ord)h(of)g(a)150 3623 y(command)c(\(see)h(b)s(elo)
+m(w)g(for)f(exceptions\):)150 3754 y Ft(if)364 b(then)168
+b(elif)g(else)g(fi)336 b(time)150 3863 y(for)316 b(in)264
+b(until)120 b(while)g(do)336 b(done)150 3973 y(case)268
+b(esac)168 b(coproc)72 b(select)g(function)150 4083 y({)412
+b(})312 b([[)264 b(]])g(!)150 4213 y(in)33 b Fu(is)h(recognized)h(as)f
(a)g(reserv)m(ed)f(w)m(ord)h(if)f(it)h(is)g(the)g(third)f(w)m(ord)g(of)
-h(a)g Ft(case)e Fu(or)i Ft(select)e Fu(command.)150 2780
+h(a)g Ft(case)e Fu(or)i Ft(select)e Fu(command.)150 4323
y Ft(in)e Fu(and)g Ft(do)f Fu(are)i(recognized)h(as)e(reserv)m(ed)h(w)m
(ords)f(if)g(they)h(are)f(the)h(third)f(w)m(ord)g(in)g(a)g
-Ft(for)g Fu(command.)150 2977 y Fk(3.2.2)63 b(Simple)41
-b(Commands)150 3124 y Fu(A)29 b(simple)f(command)g(is)h(the)g(kind)e
+Ft(for)g Fu(command.)150 4514 y Fk(3.2.2)63 b(Simple)41
+b(Commands)150 4661 y Fu(A)29 b(simple)f(command)g(is)h(the)g(kind)e
(of)i(command)f(encoun)m(tered)h(most)g(often.)40 b(It's)29
-b(just)f(a)h(sequence)g(of)150 3233 y(w)m(ords)22 b(separated)i(b)m(y)e
+b(just)f(a)h(sequence)g(of)150 4771 y(w)m(ords)22 b(separated)i(b)m(y)e
Ft(blank)p Fu(s,)i(terminated)f(b)m(y)g(one)g(of)g(the)g(shell's)g(con)
-m(trol)h(op)s(erators)f(\(see)h(Chapter)f(2)150 3343
+m(trol)h(op)s(erators)f(\(see)h(Chapter)f(2)150 4881
y([De\014nitions],)37 b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i
(generally)g(sp)s(eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j
-(with)150 3452 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that)
-h(command's)f(argumen)m(ts.)275 3586 y(The)h(return)h(status)g(\(see)i
-(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(41\))g(of)g(a)g(simple)f
-(command)g(is)h(its)150 3695 y(exit)38 b(status)f(as)g(pro)m(vided)f(b)
+(with)150 4990 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that)
+h(command's)f(argumen)m(ts.)275 5121 y(The)h(return)h(status)g(\(see)i
+(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(44\))g(of)g(a)g(simple)f
+(command)g(is)h(its)150 5230 y(exit)38 b(status)f(as)g(pro)m(vided)f(b)
m(y)h(the)g Fm(posix)f Fu(1003.1)j Ft(waitpid)c Fu(function,)j(or)f
-(128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 3805 y(w)m(as)31
-b(terminated)g(b)m(y)f(signal)h Fr(n)p Fu(.)150 4002
-y Fk(3.2.3)63 b(Pip)s(elines)150 4149 y Fu(A)21 b Ft(pipeline)d
+(128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 5340 y(w)m(as)31
+b(terminated)g(b)m(y)f(signal)h Fr(n)p Fu(.)p eop end
+%%Page: 10 16
+TeXDict begin 10 15 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(10)150 299
+y Fk(3.2.3)63 b(Pip)s(elines)150 446 y Fu(A)21 b Ft(pipeline)d
Fu(is)j(a)g(sequence)g(of)g(one)g(or)g(more)g(commands)f(separated)h(b)
m(y)g(one)g(of)g(the)g(con)m(trol)h(op)s(erators)150
-4259 y(`)p Ft(|)p Fu(')31 b(or)f(`)p Ft(|&)p Fu('.)275
-4392 y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390
-4525 y Ft([time)46 b([-p]])h([!])g Fj(command1)e Ft([)j(|)f(or)g(|&)g
-Fj(command2)f Ft(])h(...)150 4659 y Fu(The)25 b(output)f(of)i(eac)m(h)g
+555 y(`)p Ft(|)p Fu(')31 b(or)f(`)p Ft(|&)p Fu('.)275
+695 y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390 834
+y Ft([time)46 b([-p]])h([!])g Fj(command1)e Ft([)j(|)f(or)g(|&)g
+Fj(command2)f Ft(])h(...)150 974 y Fu(The)25 b(output)f(of)i(eac)m(h)g
(command)f(in)f(the)i(pip)s(eline)e(is)i(connected)g(via)f(a)h(pip)s(e)
-e(to)i(the)f(input)f(of)h(the)h(next)150 4768 y(command.)40
+e(to)i(the)f(input)f(of)h(the)h(next)150 1083 y(command.)40
b(That)29 b(is,)h(eac)m(h)h(command)e(reads)g(the)h(previous)f
-(command's)g(output.)40 b(This)29 b(connection)150 4878
+(command's)g(output.)40 b(This)29 b(connection)150 1193
y(is)h(p)s(erformed)f(b)s(efore)h(an)m(y)h(redirections)g(sp)s
-(eci\014ed)f(b)m(y)g(the)g(command.)275 5011 y(If)k(`)p
+(eci\014ed)f(b)m(y)g Fr(command1)p Fu(.)275 1333 y(If)k(`)p
Ft(|&)p Fu(')h(is)f(used,)i Fr(command1)7 b Fu('s)35
b(standard)f(error,)i(in)e(addition)h(to)h(its)f(standard)f(output,)i
-(is)e(con-)150 5121 y(nected)h(to)g Fr(command2)7 b Fu('s)35
+(is)e(con-)150 1442 y(nected)h(to)g Fr(command2)7 b Fu('s)35
b(standard)f(input)f(through)h(the)g(pip)s(e;)i(it)f(is)g(shorthand)e
-(for)h Ft(2>&1)29 b(|)p Fu(.)53 b(This)150 5230 y(implicit)41
+(for)h Ft(2>&1)29 b(|)p Fu(.)53 b(This)150 1552 y(implicit)41
b(redirection)f(of)g(the)g(standard)f(error)g(to)h(the)g(standard)f
-(output)g(is)h(p)s(erformed)e(after)j(an)m(y)150 5340
-y(redirections)31 b(sp)s(eci\014ed)f(b)m(y)g(the)g(command.)p
-eop end
-%%Page: 9 15
-TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)275 299
-y(The)36 b(reserv)m(ed)g(w)m(ord)g Ft(time)g Fu(causes)h(timing)g
-(statistics)h(to)f(b)s(e)f(prin)m(ted)g(for)g(the)h(pip)s(eline)f(once)
-h(it)150 408 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e
-(consist)h(of)f(elapsed)h(\(w)m(all-clo)s(c)m(k\))i(time)e(and)f(user)f
-(and)h(system)150 518 y(time)e(consumed)e(b)m(y)h(the)g(command's)g
-(execution.)44 b(The)31 b Ft(-p)f Fu(option)i(c)m(hanges)g(the)f
-(output)g(format)g(to)150 628 y(that)j(sp)s(eci\014ed)e(b)m(y)h
-Fm(posix)p Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e
-Fm(posix)h Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150
-737 y(Mo)s(de],)j(page)e(101\),)j(it)e(do)s(es)e(not)i(recognize)g
+(output)g(is)h(p)s(erformed)e(after)j(an)m(y)150 1661
+y(redirections)31 b(sp)s(eci\014ed)f(b)m(y)g Fr(command1)p
+Fu(.)275 1801 y(The)36 b(reserv)m(ed)g(w)m(ord)g Ft(time)g
+Fu(causes)h(timing)g(statistics)h(to)f(b)s(e)f(prin)m(ted)g(for)g(the)h
+(pip)s(eline)f(once)h(it)150 1910 y(\014nishes.)51 b(The)34
+b(statistics)i(curren)m(tly)e(consist)h(of)f(elapsed)h(\(w)m(all-clo)s
+(c)m(k\))i(time)e(and)f(user)f(and)h(system)150 2020
+y(time)e(consumed)e(b)m(y)h(the)g(command's)g(execution.)44
+b(The)31 b Ft(-p)f Fu(option)i(c)m(hanges)g(the)f(output)g(format)g(to)
+150 2130 y(that)j(sp)s(eci\014ed)e(b)m(y)h Fm(posix)p
+Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e Fm(posix)h
+Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150
+2239 y(Mo)s(de],)j(page)e(106\),)j(it)e(do)s(es)e(not)i(recognize)g
Ft(time)e Fu(as)h(a)h(reserv)m(ed)f(w)m(ord)f(if)h(the)g(next)g(tok)m
-(en)h(b)s(egins)150 847 y(with)d(a)g(`)p Ft(-)p Fu('.)49
+(en)h(b)s(egins)150 2349 y(with)d(a)g(`)p Ft(-)p Fu('.)49
b(The)33 b Ft(TIMEFORMAT)d Fu(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(set)
g(to)h(a)g(format)f(string)g(that)h(sp)s(eci\014es)f(ho)m(w)g(the)150
-956 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62
+2458 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62
b(See)38 b(Section)g(5.2)g([Bash)g(V)-8 b(ariables],)41
-b(page)d(73,)i(for)e(a)150 1066 y(description)27 b(of)g(the)h(a)m(v)-5
+b(page)d(78,)i(for)e(a)150 2568 y(description)27 b(of)g(the)h(a)m(v)-5
b(ailable)29 b(formats.)40 b(The)26 b(use)h(of)g Ft(time)f
Fu(as)i(a)f(reserv)m(ed)g(w)m(ord)g(p)s(ermits)f(the)h(timing)150
-1176 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s
+2677 y(of)38 b(shell)g(builtins,)i(shell)e(functions,)i(and)d(pip)s
(elines.)63 b(An)38 b(external)h Ft(time)e Fu(command)h(cannot)g(time)
-150 1285 y(these)31 b(easily)-8 b(.)275 1418 y(When)26
+150 2787 y(these)31 b(easily)-8 b(.)275 2927 y(When)26
b(the)h(shell)g(is)g(in)g Fm(posix)f Fu(mo)s(de)g(\(see)i(Section)f
-(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(101\),)h Ft(time)150
-1527 y Fu(ma)m(y)d(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39
+(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(106\),)h Ft(time)150
+3036 y Fu(ma)m(y)d(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39
b(In)25 b(this)h(case,)i(the)d(shell)h(displa)m(ys)g(the)g(total)h
-(user)e(and)g(system)h(time)150 1637 y(consumed)33 b(b)m(y)h(the)h
+(user)e(and)g(system)h(time)150 3146 y(consumed)33 b(b)m(y)h(the)h
(shell)f(and)f(its)i(c)m(hildren.)51 b(The)34 b Ft(TIMEFORMAT)d
Fu(v)-5 b(ariable)35 b(ma)m(y)g(b)s(e)e(used)g(to)i(sp)s(ecify)150
-1746 y(the)c(format)f(of)h(the)f(time)h(information.)275
-1879 y(If)24 b(the)h(pip)s(eline)g(is)g(not)g(executed)h(async)m
-(hronously)f(\(see)h(Section)g(3.2.4)h([Lists],)g(page)e(9\),)i(the)f
-(shell)150 1988 y(w)m(aits)31 b(for)f(all)i(commands)e(in)g(the)g(pip)s
-(eline)g(to)h(complete.)275 2121 y(Eac)m(h)e(command)g(in)g(a)g(pip)s
-(eline)g(is)g(executed)h(in)e(its)i(o)m(wn)f(subshell,)f(whic)m(h)h(is)
-g(a)g(separate)h(pro)s(cess)150 2230 y(\(see)g(Section)g(3.7.3)h
-([Command)e(Execution)h(En)m(vironmen)m(t],)g(page)g(40\).)41
-b(If)29 b(the)g Ft(lastpipe)e Fu(option)j(is)150 2340
-y(enabled)35 b(using)g(the)g Ft(shopt)f Fu(builtin)g(\(see)i(Section)g
-(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f(66\),)i(the)d(last)150
-2450 y(elemen)m(t)d(of)e(a)h(pip)s(eline)f(ma)m(y)h(b)s(e)f(run)f(b)m
-(y)h(the)h(shell)f(pro)s(cess.)275 2582 y(The)24 b(exit)i(status)f(of)h
-(a)f(pip)s(eline)g(is)g(the)g(exit)h(status)f(of)h(the)f(last)h
-(command)f(in)f(the)i(pip)s(eline,)g(unless)150 2692
-y(the)31 b Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i(Section)f
-(4.3.1)i([The)d(Set)h(Builtin],)g(page)h(62\).)42 b(If)30
-b Ft(pipefail)150 2801 y Fu(is)f(enabled,)g(the)f(pip)s(eline's)g
-(return)g(status)h(is)f(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g
-(\(righ)m(tmost\))i(command)d(to)h(exit)150 2911 y(with)34
-b(a)h(non-zero)g(status,)i(or)d(zero)i(if)e(all)i(commands)e(exit)h
-(successfully)-8 b(.)54 b(If)34 b(the)h(reserv)m(ed)g(w)m(ord)f(`)p
-Ft(!)p Fu(')150 3020 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i
-(status)f(is)f(the)h(logical)i(negation)f(of)e(the)h(exit)g(status)g
-(as)g(describ)s(ed)150 3130 y(ab)s(o)m(v)m(e.)63 b(The)38
-b(shell)f(w)m(aits)i(for)e(all)i(commands)e(in)g(the)h(pip)s(eline)f
-(to)h(terminate)h(b)s(efore)e(returning)g(a)150 3240
-y(v)-5 b(alue.)150 3435 y Fk(3.2.4)63 b(Lists)41 b(of)h(Commands)150
-3582 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more)
-h(pip)s(elines)f(separated)h(b)m(y)g(one)g(of)f(the)h(op)s(erators)g(`)
-p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 3691 y(`)p Ft(&&)p
-Fu(',)31 b(or)f(`)p Ft(||)p Fu(',)g(and)g(optionally)i(terminated)f(b)m
-(y)f(one)h(of)f(`)p Ft(;)p Fu(',)h(`)p Ft(&)p Fu(',)g(or)f(a)h
-Ft(newline)p Fu(.)275 3824 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p
-Ft(&&)p Fu(')d(and)g(`)p Ft(||)p Fu(')h(ha)m(v)m(e)h(equal)f
-(precedence,)i(follo)m(w)m(ed)f(b)m(y)f(`)p Ft(;)p Fu(')g(and)f(`)p
-Ft(&)p Fu(',)i(whic)m(h)150 3933 y(ha)m(v)m(e)32 b(equal)e(precedence.)
-275 4066 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h
+3255 y(the)c(format)f(of)h(the)f(time)h(information.)275
+3395 y(If)36 b(the)h(pip)s(eline)g(is)g(not)g(executed)h(async)m
+(hronously)f(\(see)h(Section)g(3.2.4)g([Lists],)i(page)e(10\),)i(the)
+150 3504 y(shell)31 b(w)m(aits)g(for)f(all)h(commands)f(in)g(the)h(pip)
+s(eline)f(to)h(complete.)275 3644 y(Eac)m(h)d(command)g(in)f(a)i(m)m
+(ulti-command)f(pip)s(eline,)h(where)e(pip)s(es)g(are)h(created,)i(is)e
+(executed)h(in)f(its)150 3753 y(o)m(wn)h Fr(subshell)p
+Fu(,)f(whic)m(h)h(is)g(a)g(separate)h(pro)s(cess)e(\(see)i(Section)g
+(3.7.3)g([Command)f(Execution)g(En)m(viron-)150 3863
+y(men)m(t],)d(page)e(43\).)40 b(If)23 b(the)h Ft(lastpipe)d
+Fu(option)j(is)g(enabled)g(using)f(the)h Ft(shopt)e Fu(builtin)h(\(see)
+i(Section)f(4.3.2)150 3973 y([The)i(Shopt)f(Builtin],)i(page)g(71\),)h
+(the)e(last)h(elemen)m(t)g(of)f(a)g(pip)s(eline)g(ma)m(y)g(b)s(e)f(run)
+g(b)m(y)g(the)h(shell)g(pro)s(cess)150 4082 y(when)j(job)h(con)m(trol)i
+(is)f(not)f(activ)m(e.)275 4222 y(The)24 b(exit)i(status)f(of)h(a)f
+(pip)s(eline)g(is)g(the)g(exit)h(status)f(of)h(the)f(last)h(command)f
+(in)f(the)i(pip)s(eline,)g(unless)150 4331 y(the)31 b
+Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i(Section)f(4.3.1)i
+([The)d(Set)h(Builtin],)g(page)h(67\).)42 b(If)30 b Ft(pipefail)150
+4441 y Fu(is)f(enabled,)g(the)f(pip)s(eline's)g(return)g(status)h(is)f
+(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g(\(righ)m(tmost\))i(command)d
+(to)h(exit)150 4550 y(with)34 b(a)h(non-zero)g(status,)i(or)d(zero)i
+(if)e(all)i(commands)e(exit)h(successfully)-8 b(.)54
+b(If)34 b(the)h(reserv)m(ed)g(w)m(ord)f(`)p Ft(!)p Fu(')150
+4660 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i(status)f(is)f(the)h
+(logical)i(negation)f(of)e(the)h(exit)g(status)g(as)g(describ)s(ed)150
+4770 y(ab)s(o)m(v)m(e.)63 b(The)38 b(shell)f(w)m(aits)i(for)e(all)i
+(commands)e(in)g(the)h(pip)s(eline)f(to)h(terminate)h(b)s(efore)e
+(returning)g(a)150 4879 y(v)-5 b(alue.)150 5083 y Fk(3.2.4)63
+b(Lists)41 b(of)h(Commands)150 5230 y Fu(A)37 b Ft(list)e
+Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more)h(pip)s(elines)f(separated)
+h(b)m(y)g(one)g(of)f(the)h(op)s(erators)g(`)p Ft(;)p
+Fu(',)i(`)p Ft(&)p Fu(',)150 5340 y(`)p Ft(&&)p Fu(',)31
+b(or)f(`)p Ft(||)p Fu(',)g(and)g(optionally)i(terminated)f(b)m(y)f(one)
+h(of)f(`)p Ft(;)p Fu(',)h(`)p Ft(&)p Fu(',)g(or)f(a)h
+Ft(newline)p Fu(.)p eop end
+%%Page: 11 17
+TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)275 299
+y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p Ft(&&)p
+Fu(')d(and)g(`)p Ft(||)p Fu(')h(ha)m(v)m(e)h(equal)f(precedence,)i
+(follo)m(w)m(ed)f(b)m(y)f(`)p Ft(;)p Fu(')g(and)f(`)p
+Ft(&)p Fu(',)i(whic)m(h)150 408 y(ha)m(v)m(e)32 b(equal)e(precedence.)
+275 536 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h
(app)s(ear)f(in)h(a)g Ft(list)e Fu(to)j(delimit)f(commands,)g(equiv-)
-150 4175 y(alen)m(t)i(to)f(a)g(semicolon.)275 4308 y(If)c(a)h(command)f
+150 646 y(alen)m(t)i(to)f(a)g(semicolon.)275 773 y(If)c(a)h(command)f
(is)h(terminated)g(b)m(y)g(the)g(con)m(trol)h(op)s(erator)f(`)p
Ft(&)p Fu(',)h(the)e(shell)h(executes)h(the)f(command)150
-4418 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28
+883 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28
b(is)h(kno)m(wn)f(as)h(executing)h(the)f(command)g(in)f(the)h
-Fr(bac)m(kground)p Fu(,)150 4527 y(and)42 b(these)i(are)f(referred)g
-(to)g(as)h Fr(async)m(hronous)i Fu(commands.)78 b(The)43
-b(shell)g(do)s(es)g(not)g(w)m(ait)h(for)f(the)150 4637
+Fr(bac)m(kground)p Fu(,)150 992 y(and)42 b(these)i(are)f(referred)g(to)
+g(as)h Fr(async)m(hronous)i Fu(commands.)78 b(The)43
+b(shell)g(do)s(es)g(not)g(w)m(ait)h(for)f(the)150 1102
y(command)34 b(to)h(\014nish,)f(and)f(the)h(return)f(status)i(is)f(0)g
(\(true\).)53 b(When)34 b(job)g(con)m(trol)h(is)f(not)h(activ)m(e)h
-(\(see)150 4746 y(Chapter)27 b(7)h([Job)f(Con)m(trol],)i(page)g(107\),)
+(\(see)150 1211 y(Chapter)27 b(7)h([Job)f(Con)m(trol],)i(page)g(113\),)
h(the)d(standard)g(input)f(for)i(async)m(hronous)f(commands,)h(in)f
-(the)150 4856 y(absence)k(of)f(an)m(y)h(explicit)h(redirections,)f(is)f
-(redirected)h(from)f Ft(/dev/null)p Fu(.)275 4988 y(Commands)19
+(the)150 1321 y(absence)k(of)f(an)m(y)h(explicit)h(redirections,)f(is)f
+(redirected)h(from)f Ft(/dev/null)p Fu(.)275 1448 y(Commands)19
b(separated)j(b)m(y)f(a)g(`)p Ft(;)p Fu(')g(are)h(executed)g(sequen)m
(tially;)k(the)21 b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150
-5098 y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i
+1558 y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i
(is)f(the)h(exit)g(status)g(of)g(the)f(last)h(command)f(executed.)275
-5230 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one)
+1685 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one)
g(or)f(more)h(pip)s(elines)e(separated)i(b)m(y)g(the)f(con)m(trol)i(op)
-s(er-)150 5340 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p
+s(er-)150 1795 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p
Ft(||)p Fu(',)h(resp)s(ectiv)m(ely)-8 b(.)42 b Fm(and)30
b Fu(and)f Fm(or)h Fu(lists)h(are)g(executed)g(with)f(left)h(asso)s
-(ciativit)m(y)-8 b(.)p eop end
-%%Page: 10 16
-TeXDict begin 10 15 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(10)275 299
-y(An)30 b Fm(and)f Fu(list)i(has)f(the)h(form)390 433
-y Fj(command1)46 b Ft(&&)h Fj(command2)150 567 y Fr(command2)38
-b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38
-b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g(\(success\).)275
-701 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 835
-y Fj(command1)46 b Ft(||)h Fj(command2)150 969 y Fr(command2)38
-b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38
-b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 1103
-y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h Fm(or)f
-Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f
-(executed)150 1213 y(in)d(the)h(list.)150 1412 y Fk(3.2.5)63
-b(Comp)s(ound)42 b(Commands)150 1558 y Fu(Comp)s(ound)29
-b(commands)h(are)i(the)f(shell)g(programming)f(language)j(constructs.)
-42 b(Eac)m(h)32 b(construct)f(b)s(e-)150 1668 y(gins)25
-b(with)f(a)i(reserv)m(ed)f(w)m(ord)f(or)h(con)m(trol)h(op)s(erator)f
-(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f(reserv)m(ed)150
-1778 y(w)m(ord)i(or)g(op)s(erator.)40 b(An)m(y)26 b(redirections)g
-(\(see)i(Section)f(3.6)g([Redirections],)h(page)f(35\))h(asso)s(ciated)
-f(with)150 1887 y(a)k(comp)s(ound)f(command)h(apply)f(to)i(all)g
-(commands)f(within)f(that)i(comp)s(ound)d(command)i(unless)f(ex-)150
-1997 y(plicitly)i(o)m(v)m(erridden.)275 2131 y(In)20
-b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s(ound)f
-(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150
-2240 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g
+(ciativit)m(y)-8 b(.)275 1923 y(An)30 b Fm(and)f Fu(list)i(has)f(the)h
+(form)390 2050 y Fj(command1)46 b Ft(&&)h Fj(command2)150
+2178 y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h
+Fr(command1)38 b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g
+(\(success\).)275 2305 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390
+2432 y Fj(command1)46 b Ft(||)h Fj(command2)150 2560
+y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h
+Fr(command1)38 b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275
+2687 y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h
+Fm(or)f Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h
+(command)f(executed)150 2797 y(in)d(the)h(list.)150 2982
+y Fk(3.2.5)63 b(Comp)s(ound)42 b(Commands)150 3129 y
+Fu(Comp)s(ound)29 b(commands)h(are)i(the)f(shell)g(programming)f
+(language)j(constructs.)42 b(Eac)m(h)32 b(construct)f(b)s(e-)150
+3239 y(gins)25 b(with)f(a)i(reserv)m(ed)f(w)m(ord)f(or)h(con)m(trol)h
+(op)s(erator)f(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f
+(reserv)m(ed)150 3348 y(w)m(ord)i(or)g(op)s(erator.)40
+b(An)m(y)26 b(redirections)g(\(see)i(Section)f(3.6)g([Redirections],)h
+(page)f(38\))h(asso)s(ciated)f(with)150 3458 y(a)k(comp)s(ound)f
+(command)h(apply)f(to)i(all)g(commands)f(within)f(that)i(comp)s(ound)d
+(command)i(unless)f(ex-)150 3568 y(plicitly)i(o)m(v)m(erridden.)275
+3695 y(In)20 b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)
+s(ound)f(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150
+3805 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g
(more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g
-(newline)150 2350 y(in)f(place)h(of)g(a)g(semicolon.)275
-2484 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e
+(newline)150 3914 y(in)f(place)h(of)g(a)g(semicolon.)275
+4042 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e
(commands,)j(and)44 b(mec)m(hanisms)i(to)g(group)150
-2594 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150
-2792 y Fk(3.2.5.1)63 b(Lo)s(oping)43 b(Constructs)150
-2939 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g
-(constructs.)275 3073 y(Note)k(that)f(wherev)m(er)g(a)g(`)p
+4151 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150
+4336 y Fk(3.2.5.1)63 b(Lo)s(oping)43 b(Constructs)150
+4483 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g
+(constructs.)275 4611 y(Note)k(that)f(wherev)m(er)g(a)g(`)p
Ft(;)p Fu(')g(app)s(ears)f(in)h(the)g(description)g(of)g(a)g(command's)
-g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 3183 y(replaced)c(with)f(one)h
-(or)f(more)g(newlines.)150 3341 y Ft(until)240 b Fu(The)30
+g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 4720 y(replaced)c(with)f(one)h
+(or)f(more)g(newlines.)150 4866 y Ft(until)240 b Fu(The)30
b(syn)m(tax)h(of)f(the)h Ft(until)e Fu(command)h(is:)870
-3476 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj
-(consequent-commands)p Ft(;)c(done)630 3610 y Fu(Execute)f
+4993 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj
+(consequent-commands)p Ft(;)c(done)630 5121 y Fu(Execute)f
Fr(consequen)m(t-commands)k Fu(as)41 b(long)h(as)f Fr(test-commands)46
-b Fu(has)41 b(an)g(exit)h(status)630 3719 y(whic)m(h)c(is)h(not)g
+b Fu(has)41 b(an)g(exit)h(status)630 5230 y(whic)m(h)c(is)h(not)g
(zero.)67 b(The)38 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)g
-(the)g(last)g(command)630 3829 y(executed)31 b(in)f Fr(consequen)m
-(t-commands)p Fu(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)150
-3987 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
-Ft(while)e Fu(command)h(is:)870 4122 y Ft(while)46 b
-Fj(test-commands)p Ft(;)e(do)j Fj(consequent-commands)p
-Ft(;)c(done)630 4256 y Fu(Execute)f Fr(consequen)m(t-commands)k
-Fu(as)41 b(long)h(as)f Fr(test-commands)46 b Fu(has)41
-b(an)g(exit)h(status)630 4365 y(of)34 b(zero.)53 b(The)34
-b(return)f(status)h(is)h(the)f(exit)h(status)g(of)f(the)g(last)h
-(command)f(executed)h(in)630 4475 y Fr(consequen)m(t-commands)p
-Fu(,)c(or)g(zero)g(if)f(none)g(w)m(as)h(executed.)150
-4633 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
-Ft(for)e Fu(command)i(is:)870 4768 y Ft(for)47 b Fj(name)g
-Ft([)g([in)g([)p Fj(words)f Ft(...)o(])i(])f(;)h(])f(do)g
-Fj(commands)p Ft(;)e(done)630 4902 y Fu(Expand)30 b Fr(w)m(ords)k
-Fu(\(see)d(Section)h(3.5)g([Shell)f(Expansions],)g(page)g(22\),)i(and)d
-(execute)i Fr(com-)630 5011 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem)
+(the)g(last)g(command)630 5340 y(executed)31 b(in)f Fr(consequen)m
+(t-commands)p Fu(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)p
+eop end
+%%Page: 12 18
+TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)150 299
+y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(while)e
+Fu(command)h(is:)870 436 y Ft(while)46 b Fj(test-commands)p
+Ft(;)e(do)j Fj(consequent-commands)p Ft(;)c(done)630
+573 y Fu(Execute)f Fr(consequen)m(t-commands)k Fu(as)41
+b(long)h(as)f Fr(test-commands)46 b Fu(has)41 b(an)g(exit)h(status)630
+683 y(of)34 b(zero.)53 b(The)34 b(return)f(status)h(is)h(the)f(exit)h
+(status)g(of)f(the)g(last)h(command)f(executed)h(in)630
+792 y Fr(consequen)m(t-commands)p Fu(,)c(or)g(zero)g(if)f(none)g(w)m
+(as)h(executed.)150 957 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f
+(the)h Ft(for)e Fu(command)i(is:)870 1094 y Ft(for)47
+b Fj(name)g Ft([)g([in)g([)p Fj(words)f Ft(...)o(])i(])f(;)h(])f(do)g
+Fj(commands)p Ft(;)e(done)630 1231 y Fu(Expand)30 b Fr(w)m(ords)k
+Fu(\(see)d(Section)h(3.5)g([Shell)f(Expansions],)g(page)g(24\),)i(and)d
+(execute)i Fr(com-)630 1341 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem)
m(b)s(er)f(in)g(the)h(resultan)m(t)g(list,)j(with)c Fr(name)46
-b Fu(b)s(ound)39 b(to)i(the)630 5121 y(curren)m(t)34
+b Fu(b)s(ound)39 b(to)i(the)630 1450 y(curren)m(t)34
b(mem)m(b)s(er.)53 b(If)35 b(`)p Ft(in)30 b Fj(words)p
Fu(')j(is)i(not)g(presen)m(t,)h(the)f Ft(for)e Fu(command)i(executes)h
-(the)630 5230 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g
+(the)630 1560 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g
(parameter)f(that)h(is)f(set,)i(as)e(if)g(`)p Ft(in)30
-b("$@")p Fu(')36 b(had)630 5340 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j
-(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(21\).)p
-eop end
-%%Page: 11 17
-TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)630 299
-y(The)27 b(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h
+b("$@")p Fu(')36 b(had)630 1670 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j
+(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(23\).)630
+1807 y(The)c(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h
(last)g(command)e(that)i(executes.)41 b(If)27 b(there)630
-408 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g
+1916 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g
Fr(w)m(ords)p Fu(,)i(no)e(commands)g(are)g(executed,)j(and)d(the)630
-518 y(return)29 b(status)i(is)f(zero.)630 644 y(An)g(alternate)i(form)e
-(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870
-771 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e
+2026 y(return)29 b(status)i(is)f(zero.)630 2163 y(An)g(alternate)i
+(form)e(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870
+2300 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e
Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f Fj(commands)e Ft(;)j(done)630
-897 y Fu(First,)38 b(the)f(arithmetic)h(expression)e
+2437 y Fu(First,)38 b(the)f(arithmetic)h(expression)e
Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g
-(rules)f(de-)630 1007 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g
-(6.5)g([Shell)g(Arithmetic],)j(page)d(93\).)77 b(The)42
-b(arithmetic)630 1116 y(expression)33 b Fr(expr2)41 b
+(rules)f(de-)630 2547 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g
+(6.5)g([Shell)g(Arithmetic],)j(page)d(98\).)77 b(The)42
+b(arithmetic)630 2656 y(expression)33 b Fr(expr2)41 b
Fu(is)34 b(then)f(ev)-5 b(aluated)35 b(rep)s(eatedly)f(un)m(til)g(it)g
-(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 1226
+(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 2766
y(time)23 b Fr(expr2)30 b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h
(v)-5 b(alue,)25 b Fr(commands)h Fu(are)d(executed)g(and)g(the)g
-(arith-)630 1335 y(metic)29 b(expression)f Fr(expr3)36
+(arith-)630 2876 y(metic)29 b(expression)f Fr(expr3)36
b Fu(is)28 b(ev)-5 b(aluated.)41 b(If)28 b(an)m(y)h(expression)f(is)g
-(omitted,)i(it)f(b)s(eha)m(v)m(es)g(as)630 1445 y(if)i(it)h(ev)-5
+(omitted,)i(it)f(b)s(eha)m(v)m(es)g(as)630 2985 y(if)i(it)h(ev)-5
b(aluates)32 b(to)g(1.)44 b(The)30 b(return)g(v)-5 b(alue)32
b(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f(in)630
-1555 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m
+3095 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m
(y)h(of)g(the)f(expressions)g(is)h(in)m(v)-5 b(alid.)275
-1698 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h
-(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(44\))g(ma)m(y)
-150 1807 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150
-1990 y Fk(3.2.5.2)63 b(Conditional)42 b(Constructs)150
-2154 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
-Ft(if)f Fu(command)g(is:)870 2280 y Ft(if)47 b Fj(test-commands)p
-Ft(;)d(then)965 2390 y Fj(consequent-commands)p Ft(;)870
-2500 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965
-2609 y Fj(more-consequents)p Ft(;])870 2719 y([else)j
-Fj(alternate-consequents)p Ft(;])870 2828 y(fi)630 2955
+3262 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h
+(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(48\))g(ma)m(y)
+150 3372 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150
+3576 y Fk(3.2.5.2)63 b(Conditional)42 b(Constructs)150
+3751 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
+Ft(if)f Fu(command)g(is:)870 3888 y Ft(if)47 b Fj(test-commands)p
+Ft(;)d(then)965 3997 y Fj(consequent-commands)p Ft(;)870
+4107 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965
+4217 y Fj(more-consequents)p Ft(;])870 4326 y([else)j
+Fj(alternate-consequents)p Ft(;])870 4436 y(fi)630 4573
y Fu(The)53 b Fr(test-commands)58 b Fu(list)c(is)g(executed,)60
b(and)53 b(if)g(its)h(return)e(status)i(is)f(zero,)61
-b(the)630 3064 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f
+b(the)630 4682 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f
(executed.)70 b(If)40 b Fr(test-commands)k Fu(returns)39
-b(a)h(non-zero)630 3174 y(status,)45 b(eac)m(h)e Ft(elif)d
+b(a)h(non-zero)630 4792 y(status,)45 b(eac)m(h)e Ft(elif)d
Fu(list)i(is)g(executed)h(in)e(turn,)j(and)d(if)g(its)h(exit)h(status)f
-(is)f(zero,)46 b(the)630 3284 y(corresp)s(onding)37 b
+(is)f(zero,)46 b(the)630 4902 y(corresp)s(onding)37 b
Fr(more-consequen)m(ts)42 b Fu(is)c(executed)g(and)f(the)h(command)g
-(completes.)63 b(If)630 3393 y(`)p Ft(else)29 b Fj
+(completes.)63 b(If)630 5011 y(`)p Ft(else)29 b Fj
(alternate-consequents)p Fu(')c(is)30 b(presen)m(t,)h(and)f(the)g
-(\014nal)g(command)g(in)g(the)g(\014nal)630 3503 y Ft(if)44
+(\014nal)g(command)g(in)g(the)g(\014nal)630 5121 y Ft(if)44
b Fu(or)g Ft(elif)f Fu(clause)i(has)f(a)h(non-zero)g(exit)g(status,)j
-(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 3612
+(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 5230
y(executed.)k(The)34 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)
-g(the)g(last)g(command)g(executed,)630 3722 y(or)30 b(zero)i(if)e(no)g
-(condition)h(tested)g(true.)150 3865 y Ft(case)288 b
-Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(case)e Fu(command)h(is:)870
-3991 y Ft(case)47 b Fj(word)f Ft(in)1061 4101 y([)h([\(])g
-Fj(pattern)f Ft([|)h Fj(pattern)p Ft(]...)m(\))h Fj(command-list)c
-Ft(;;]...)870 4211 y(esac)630 4337 y(case)20 b Fu(will)i(selectiv)m
-(ely)j(execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20
-b(to)i(the)g(\014rst)f Fr(pattern)630 4446 y Fu(that)h(matc)m(hes)h
-Fr(w)m(ord)p Fu(.)38 b(The)21 b(matc)m(h)h(is)g(p)s(erformed)e
-(according)j(to)f(the)g(rules)g(describ)s(ed)e(b)s(e-)630
-4556 y(lo)m(w)25 b(in)e(Section)i(3.5.8.1)h([P)m(attern)f(Matc)m
-(hing],)i(page)e(33.)39 b(If)23 b(the)h Ft(nocasematch)d
-Fu(shell)j(op-)630 4666 y(tion)j(\(see)g(the)f(description)g(of)g
-Ft(shopt)f Fu(in)g(Section)i(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f
-(66\))630 4775 y(is)40 b(enabled,)i(the)e(matc)m(h)h(is)e(p)s(erformed)
-g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630
-4885 y(c)m(haracters.)48 b(The)32 b(`)p Ft(|)p Fu(')g(is)h(used)e(to)i
-(separate)h(m)m(ultiple)f(patterns,)g(and)f(the)g(`)p
-Ft(\))p Fu(')h(op)s(erator)630 4994 y(terminates)f(a)f(pattern)g(list.)
-43 b(A)31 b(list)g(of)g(patterns)g(and)f(an)h(asso)s(ciated)h
-(command-list)g(is)630 5104 y(kno)m(wn)e(as)g(a)h Fr(clause)p
-Fu(.)630 5230 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h
+g(the)g(last)g(command)g(executed,)630 5340 y(or)30 b(zero)i(if)e(no)g
+(condition)h(tested)g(true.)p eop end
+%%Page: 13 19
+TeXDict begin 13 18 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)150 299
+y Ft(case)288 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(case)e
+Fu(command)h(is:)870 425 y Ft(case)47 b Fj(word)f Ft(in)1061
+535 y([)h([\(])g Fj(pattern)f Ft([|)h Fj(pattern)p Ft(]...)m(\))h
+Fj(command-list)c Ft(;;]...)870 645 y(esac)630 771 y(case)20
+b Fu(will)i(selectiv)m(ely)j(execute)e(the)e Fr(command-list)k
+Fu(corresp)s(onding)20 b(to)i(the)g(\014rst)f Fr(pattern)630
+881 y Fu(that)h(matc)m(hes)h Fr(w)m(ord)p Fu(.)38 b(The)21
+b(matc)m(h)h(is)g(p)s(erformed)e(according)j(to)f(the)g(rules)g
+(describ)s(ed)e(b)s(e-)630 990 y(lo)m(w)25 b(in)e(Section)i(3.5.8.1)h
+([P)m(attern)f(Matc)m(hing],)i(page)e(36.)39 b(If)23
+b(the)h Ft(nocasematch)d Fu(shell)j(op-)630 1100 y(tion)j(\(see)g(the)f
+(description)g(of)g Ft(shopt)f Fu(in)g(Section)i(4.3.2)h([The)e(Shopt)f
+(Builtin],)j(page)f(71\))630 1209 y(is)40 b(enabled,)i(the)e(matc)m(h)h
+(is)e(p)s(erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s
+(etic)630 1319 y(c)m(haracters.)48 b(The)32 b(`)p Ft(|)p
+Fu(')g(is)h(used)e(to)i(separate)h(m)m(ultiple)f(patterns,)g(and)f(the)
+g(`)p Ft(\))p Fu(')h(op)s(erator)630 1428 y(terminates)f(a)f(pattern)g
+(list.)43 b(A)31 b(list)g(of)g(patterns)g(and)f(an)h(asso)s(ciated)h
+(command-list)g(is)630 1538 y(kno)m(wn)e(as)g(a)h Fr(clause)p
+Fu(.)630 1665 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h
(with)e(`)p Ft(;;)p Fu(',)45 b(`)p Ft(;&)p Fu(',)f(or)d(`)p
Ft(;;&)p Fu('.)73 b(The)41 b Fr(w)m(ord)j Fu(under-)630
-5340 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g
-(command)f(substitution,)h(arithmetic)p eop end
-%%Page: 12 18
-TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)630 299
-y(expansion,)35 b(and)f(quote)g(remo)m(v)-5 b(al)36 b(\(see)f(Section)g
-(3.5.3)h([Shell)e(P)m(arameter)h(Expansion],)630 408
-y(page)22 b(25\))g(b)s(efore)f(matc)m(hing)h(is)g(attempted.)38
-b(Eac)m(h)22 b Fr(pattern)g Fu(undergo)s(es)e(tilde)i(expansion,)630
-518 y(parameter)31 b(expansion,)f(command)g(substitution,)h(and)f
-(arithmetic)h(expansion.)630 651 y(There)f(ma)m(y)g(b)s(e)f(an)h
-(arbitrary)g(n)m(um)m(b)s(er)f(of)h Ft(case)f Fu(clauses,)i(eac)m(h)g
-(terminated)g(b)m(y)e(a)i(`)p Ft(;;)p Fu(',)630 761 y(`)p
-Ft(;&)p Fu(',)c(or)e(`)p Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g
-(pattern)h(that)g(matc)m(hes)h(determines)e(the)h(command-list)g(that)
-630 870 y(is)35 b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g
-(use)g(`)p Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e
-(the)630 980 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m
-(a)m(ys)h(matc)m(h.)630 1113 y(Here)j(is)g(an)g(example)h(using)e
+1774 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g
+(command)f(substitution,)h(arithmetic)630 1884 y(expansion,)g(and)f
+(quote)g(remo)m(v)-5 b(al)36 b(\(see)f(Section)g(3.5.3)h([Shell)e(P)m
+(arameter)h(Expansion],)630 1993 y(page)i(26\))g(b)s(efore)e(matc)m
+(hing)i(is)f(attempted.)59 b(Eac)m(h)36 b Fr(pattern)g
+Fu(undergo)s(es)f(tilde)i(expan-)630 2103 y(sion,)e(parameter)g
+(expansion,)g(command)f(substitution,)h(arithmetic)h(expansion,)f(pro-)
+630 2212 y(cess)c(substitution,)f(and)g(quote)h(remo)m(v)-5
+b(al.)630 2339 y(There)30 b(ma)m(y)g(b)s(e)f(an)h(arbitrary)g(n)m(um)m
+(b)s(er)f(of)h Ft(case)f Fu(clauses,)i(eac)m(h)g(terminated)g(b)m(y)e
+(a)i(`)p Ft(;;)p Fu(',)630 2449 y(`)p Ft(;&)p Fu(',)c(or)e(`)p
+Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g(pattern)h(that)g(matc)m(hes)h
+(determines)e(the)h(command-list)g(that)630 2558 y(is)35
+b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g(use)g(`)p
+Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e(the)630
+2668 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m(a)m(ys)h
+(matc)m(h.)630 2794 y(Here)j(is)g(an)g(example)h(using)e
Ft(case)g Fu(in)g(a)h(script)g(that)h(could)f(b)s(e)f(used)g(to)h
-(describ)s(e)g(one)630 1223 y(in)m(teresting)d(feature)f(of)f(an)g
-(animal:)870 1356 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f
-(animal:)f(")870 1465 y(read)h(ANIMAL)870 1575 y(echo)g(-n)g("The)f
-($ANIMAL)g(has)h(")870 1684 y(case)g($ANIMAL)e(in)965
-1794 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965
-1904 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965
-2013 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870
-2123 y(esac)870 2232 y(echo)h(")g(legs.")630 2389 y Fu(If)40
+(describ)s(e)g(one)630 2904 y(in)m(teresting)d(feature)f(of)f(an)g
+(animal:)870 3030 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f
+(animal:)f(")870 3140 y(read)h(ANIMAL)870 3249 y(echo)g(-n)g("The)f
+($ANIMAL)g(has)h(")870 3359 y(case)g($ANIMAL)e(in)965
+3469 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965
+3578 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965
+3688 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870
+3797 y(esac)870 3907 y(echo)h(")g(legs.")630 4050 y Fu(If)40
b(the)i(`)p Ft(;;)p Fu(')e(op)s(erator)i(is)f(used,)i(no)e(subsequen)m
-(t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)630 2498
+(t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)630 4160
y(\014rst)c(pattern)h(matc)m(h.)67 b(Using)39 b(`)p Ft(;&)p
Fu(')g(in)f(place)i(of)f(`)p Ft(;;)p Fu(')g(causes)g(execution)h(to)g
-(con)m(tin)m(ue)630 2608 y(with)34 b(the)g Fr(command-list)j
+(con)m(tin)m(ue)630 4269 y(with)34 b(the)g Fr(command-list)j
Fu(asso)s(ciated)f(with)e(the)h(next)f(clause,)i(if)f(an)m(y)-8
-b(.)53 b(Using)34 b(`)p Ft(;;&)p Fu(')g(in)630 2718 y(place)c(of)f(`)p
+b(.)53 b(Using)34 b(`)p Ft(;;&)p Fu(')g(in)630 4379 y(place)c(of)f(`)p
Ft(;;)p Fu(')g(causes)h(the)f(shell)h(to)g(test)g(the)f(patterns)g(in)g
(the)g(next)h(clause,)g(if)f(an)m(y)-8 b(,)31 b(and)630
-2827 y(execute)26 b(an)m(y)f(asso)s(ciated)h Fr(command-list)h
+4489 y(execute)26 b(an)m(y)f(asso)s(ciated)h Fr(command-list)h
Fu(on)e(a)f(successful)h(matc)m(h,)i(con)m(tin)m(uing)e(the)g(case)630
-2937 y(statemen)m(t)32 b(execution)g(as)e(if)h(the)f(pattern)h(list)g
-(had)f(not)g(matc)m(hed.)630 3070 y(The)c(return)f(status)h(is)g(zero)h
+4598 y(statemen)m(t)32 b(execution)g(as)e(if)h(the)f(pattern)h(list)g
+(had)f(not)g(matc)m(hed.)630 4725 y(The)c(return)f(status)h(is)g(zero)h
(if)f(no)g Fr(pattern)g Fu(is)g(matc)m(hed.)40 b(Otherwise,)27
-b(the)g(return)e(status)630 3180 y(is)30 b(the)h(exit)g(status)g(of)f
-(the)h Fr(command-list)i Fu(executed.)150 3336 y Ft(select)630
-3469 y Fu(The)g Ft(select)f Fu(construct)i(allo)m(ws)h(the)f(easy)g
+b(the)g(return)e(status)630 4834 y(is)30 b(the)h(exit)g(status)g(of)f
+(the)h Fr(command-list)i Fu(executed.)150 4977 y Ft(select)630
+5104 y Fu(The)g Ft(select)f Fu(construct)i(allo)m(ws)h(the)f(easy)g
(generation)h(of)e(men)m(us.)50 b(It)34 b(has)f(almost)i(the)630
-3579 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870
-3712 y Ft(select)46 b Fj(name)h Ft([in)g Fj(words)f Ft(...)o(];)h(do)h
-Fj(commands)p Ft(;)d(done)630 3845 y Fu(The)25 b(list)h(of)f(w)m(ords)g
-(follo)m(wing)i Ft(in)d Fu(is)h(expanded,)h(generating)h(a)e(list)h(of)
-g(items.)39 b(The)25 b(set)h(of)630 3954 y(expanded)i(w)m(ords)h(is)g
-(prin)m(ted)f(on)h(the)g(standard)f(error)h(output)f(stream,)i(eac)m(h)
-g(preceded)630 4064 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37
-b(If)20 b(the)i(`)p Ft(in)30 b Fj(words)p Fu(')20 b(is)h(omitted,)j
-(the)d(p)s(ositional)h(parameters)g(are)f(prin)m(ted,)630
-4174 y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s
-(eci\014ed.)39 b(The)27 b Ft(PS3)g Fu(prompt)f(is)i(then)f(displa)m(y)m
-(ed)h(and)f(a)h(line)630 4283 y(is)h(read)f(from)h(the)f(standard)g
-(input.)39 b(If)29 b(the)g(line)g(consists)g(of)g(a)g(n)m(um)m(b)s(er)e
-(corresp)s(onding)630 4393 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h
-(w)m(ords,)g(then)f(the)g(v)-5 b(alue)36 b(of)f Fr(name)40
-b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 4502
-y(the)37 b(line)h(is)f(empt)m(y)-8 b(,)39 b(the)e(w)m(ords)g(and)f
-(prompt)g(are)i(displa)m(y)m(ed)f(again.)62 b(If)37 b
-Ft(EOF)f Fu(is)h(read,)630 4612 y(the)c Ft(select)e Fu(command)i
-(completes.)50 b(An)m(y)33 b(other)g(v)-5 b(alue)33 b(read)g(causes)g
-Fr(name)38 b Fu(to)c(b)s(e)e(set)630 4722 y(to)f(n)m(ull.)41
-b(The)30 b(line)g(read)h(is)f(sa)m(v)m(ed)h(in)g(the)f(v)-5
-b(ariable)31 b Ft(REPLY)p Fu(.)630 4855 y(The)42 b Fr(commands)j
-Fu(are)d(executed)h(after)g(eac)m(h)g(selection)h(un)m(til)e(a)h
-Ft(break)d Fu(command)i(is)630 4964 y(executed,)32 b(at)f(whic)m(h)f(p)
-s(oin)m(t)g(the)h Ft(select)d Fu(command)i(completes.)630
-5097 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f
-(to)i(pic)m(k)f(a)g(\014lename)h(from)e(the)h(curren)m(t)630
-5207 y(directory)-8 b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f
-(index)f(of)i(the)g(\014le)f(selected.)870 5340 y Ft(select)46
-b(fname)g(in)i(*;)p eop end
-%%Page: 13 19
-TeXDict begin 13 18 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)870 299
-y Ft(do)870 408 y(echo)47 b(you)g(picked)f($fname)g(\\\($REPLY\\\))870
-518 y(break;)870 628 y(done)150 788 y(\(\(...)o(\)\))870
-923 y(\(\()h Fj(expression)e Ft(\)\))630 1058 y Fu(The)33
-b(arithmetic)i Fr(expression)f Fu(is)f(ev)-5 b(aluated)35
-b(according)g(to)f(the)g(rules)f(describ)s(ed)g(b)s(elo)m(w)630
-1167 y(\(see)j(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)f(93\).)55
-b(If)34 b(the)h(v)-5 b(alue)35 b(of)g(the)g(expression)g(is)630
-1277 y(non-zero,)27 b(the)f(return)e(status)i(is)g(0;)h(otherwise)f
-(the)g(return)e(status)i(is)g(1.)39 b(This)25 b(is)g(exactly)630
-1386 y(equiv)-5 b(alen)m(t)32 b(to)870 1521 y Ft(let)47
-b(")p Fj(expression)p Ft(")630 1656 y Fu(See)25 b(Section)h(4.2)h
-([Bash)e(Builtins],)i(page)f(51,)i(for)c(a)i(full)f(description)g(of)g
-(the)h Ft(let)e Fu(builtin.)150 1816 y Ft([[...)o(]])870
-1951 y([[)47 b Fj(expression)e Ft(]])630 2086 y Fu(Return)25
-b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s(ending)e(on)h(the)h(ev)-5
-b(aluation)27 b(of)e(the)h(conditional)h(expres-)630
-2196 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29
-b(are)i(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s(elo)m
-(w)h(in)630 2305 y(Section)36 b(6.4)h([Bash)f(Conditional)g
-(Expressions],)h(page)f(91.)57 b(W)-8 b(ord)36 b(splitting)h(and)e
-(\014le-)630 2415 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j
-(the)f(w)m(ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f
-Ft(]])p Fu(;)i(tilde)630 2524 y(expansion,)e(parameter)g(and)f(v)-5
-b(ariable)31 b(expansion,)g(arithmetic)g(expansion,)g(command)630
-2634 y(substitution,)40 b(pro)s(cess)f(substitution,)h(and)e(quote)h
-(remo)m(v)-5 b(al)40 b(are)f(p)s(erformed.)63 b(Condi-)630
-2744 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p
-Ft(-f)p Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j
-(as)f(primaries.)630 2878 y(When)k(used)f(with)h Ft([[)p
-Fu(,)h(the)f(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g
-(sort)g(lexicographically)j(using)d(the)630 2988 y(curren)m(t)30
-b(lo)s(cale.)630 3123 y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p
-Ft(!=)p Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e
-(righ)m(t)h(of)g(the)g(op)s(erator)630 3232 y(is)31 b(considered)g(a)h
-(pattern)f(and)g(matc)m(hed)h(according)g(to)g(the)g(rules)f(describ)s
-(ed)f(b)s(elo)m(w)h(in)630 3342 y(Section)d(3.5.8.1)h([P)m(attern)f
-(Matc)m(hing],)h(page)f(33,)g(as)f(if)g(the)g Ft(extglob)d
-Fu(shell)j(option)g(w)m(ere)630 3452 y(enabled.)46 b(The)31
-b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p
-Ft(==)p Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630
-3561 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d
-Fu(in)i(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)45
-b(page)d(66\))630 3671 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s
-(erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630
-3780 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28
-b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p
-Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 3890 y(\(`)p
-Ft(!=)p Fu('\))j(the)f(pattern,)h(and)e(1)i(otherwise.)41
-b(An)m(y)30 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to)
-630 4000 y(force)h(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed)
-h(as)g(a)f(string.)630 4134 y(An)44 b(additional)h(binary)f(op)s
-(erator,)49 b(`)p Ft(=~)p Fu(',)f(is)c(a)m(v)-5 b(ailable,)51
-b(with)44 b(the)h(same)f(precedence)630 4244 y(as)c(`)p
-Ft(==)p Fu(')g(and)f(`)p Ft(!=)p Fu('.)69 b(When)40 b(it)g(is)g(used,)i
-(the)e(string)g(to)g(the)g(righ)m(t)h(of)f(the)g(op)s(erator)g(is)630
-4354 y(considered)23 b(a)g Fm(posix)g Fu(extended)g(regular)g
-(expression)g(and)f(matc)m(hed)i(accordingly)g(\(using)630
-4463 y(the)29 b Fm(posix)g Ft(regcomp)e Fu(and)h Ft(regexec)g
-Fu(in)m(terfaces)i(usually)f(describ)s(ed)f(in)h Fl(r)-5
-b(e)g(gex)11 b Fu(\(3\)\).)42 b(The)630 4573 y(return)20
-b(v)-5 b(alue)21 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(the)f
-(pattern,)j(and)c(1)h(otherwise.)38 b(If)21 b(the)g(regular)630
-4682 y(expression)k(is)h(syn)m(tactically)i(incorrect,)g(the)e
-(conditional)h(expression's)e(return)g(v)-5 b(alue)26
-b(is)630 4792 y(2.)39 b(If)24 b(the)h Ft(nocasematch)c
-Fu(shell)k(option)g(\(see)h(the)e(description)h(of)g
-Ft(shopt)e Fu(in)h(Section)h(4.3.2)630 4902 y([The)e(Shopt)g(Builtin],)
-j(page)e(66\))h(is)e(enabled,)i(the)f(matc)m(h)g(is)g(p)s(erformed)e
-(without)h(regard)630 5011 y(to)36 b(the)g(case)h(of)f(alphab)s(etic)g
-(c)m(haracters.)58 b(An)m(y)36 b(part)g(of)g(the)g(pattern)f(ma)m(y)i
-(b)s(e)e(quoted)630 5121 y(to)f(force)g(the)f(quoted)h(p)s(ortion)f(to)
-h(b)s(e)f(matc)m(hed)h(as)f(a)h(string.)50 b(Brac)m(k)m(et)35
-b(expressions)e(in)630 5230 y(regular)g(expressions)g(m)m(ust)g(b)s(e)f
-(treated)i(carefully)-8 b(,)35 b(since)e(normal)g(quoting)g(c)m
-(haracters)630 5340 y(lose)25 b(their)f(meanings)g(b)s(et)m(w)m(een)h
-(brac)m(k)m(ets.)40 b(If)23 b(the)h(pattern)h(is)f(stored)g(in)f(a)i
-(shell)f(v)-5 b(ariable,)p eop end
+5214 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870
+5340 y Ft(select)46 b Fj(name)h Ft([in)g Fj(words)f Ft(...)o(];)h(do)h
+Fj(commands)p Ft(;)d(done)p eop end
%%Page: 14 20
TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41
b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299
-y(quoting)41 b(the)f(v)-5 b(ariable)42 b(expansion)e(forces)h(the)f(en)
-m(tire)h(pattern)g(to)g(b)s(e)f(matc)m(hed)h(as)g(a)630
-408 y(string.)630 555 y(The)26 b(pattern)g(will)h(matc)m(h)g(if)f(it)h
-(matc)m(hes)h(an)m(y)e(part)h(of)f(the)h(string.)39 b(Anc)m(hor)26
-b(the)h(pattern)630 664 y(using)f(the)i(`)p Ft(^)p Fu(')f(and)f(`)p
-Ft($)p Fu(')h(regular)h(expression)e(op)s(erators)h(to)h(force)g(it)f
-(to)h(matc)m(h)g(the)f(en)m(tire)630 774 y(string.)81
-b(The)44 b(arra)m(y)g(v)-5 b(ariable)45 b Ft(BASH_REMATCH)40
-b Fu(records)k(whic)m(h)f(parts)h(of)g(the)g(string)630
-883 y(matc)m(hed)31 b(the)f(pattern.)41 b(The)30 b(elemen)m(t)i(of)e
-Ft(BASH_REMATCH)d Fu(with)j(index)g(0)g(con)m(tains)i(the)630
-993 y(p)s(ortion)20 b(of)h(the)g(string)f(matc)m(hing)i(the)f(en)m
-(tire)g(regular)g(expression.)37 b(Substrings)19 b(matc)m(hed)630
-1103 y(b)m(y)30 b(paren)m(thesized)g(sub)s(expressions)e(within)i(the)g
-(regular)g(expression)g(are)g(sa)m(v)m(ed)h(in)f(the)630
-1212 y(remaining)j Ft(BASH_REMATCH)c Fu(indices.)49 b(The)32
-b(elemen)m(t)i(of)f Ft(BASH_REMATCH)d Fu(with)i(index)g
-Fr(n)630 1322 y Fu(is)e(the)h(p)s(ortion)f(of)g(the)h(string)f(matc)m
-(hing)i(the)e Fr(n)p Fu(th)g(paren)m(thesized)h(sub)s(expression.)630
-1468 y(F)-8 b(or)34 b(example,)h(the)e(follo)m(wing)i(will)f(matc)m(h)g
-(a)g(line)f(\(stored)h(in)f(the)h(shell)f(v)-5 b(ariable)34
-b Fr(line)5 b Fu(\))630 1577 y(if)42 b(there)h(is)g(a)f(sequence)h(of)g
-(c)m(haracters)h(an)m(ywhere)e(in)g(the)h(v)-5 b(alue)43
-b(consisting)g(of)g(an)m(y)630 1687 y(n)m(um)m(b)s(er,)30
-b(including)h(zero,)h(of)f(c)m(haracters)i(in)e(the)g
-Ft(space)f Fu(c)m(haracter)i(class,)h(zero)f(or)f(one)630
-1797 y(instances)g(of)f(`)p Ft(a)p Fu(',)h(then)f(a)h(`)p
-Ft(b)p Fu(':)870 1943 y Ft([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c
-(]])630 2089 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p
-Ft(aab)p Fu(')e(and)h(`)30 b Ft(aaaaaab)p Fu(')22 b(will)i(matc)m(h,)j
-(as)d(will)g(a)g(line)g(con)m(taining)630 2198 y(a)31
-b(`)p Ft(b)p Fu(')f(an)m(ywhere)h(in)f(its)g(v)-5 b(alue.)630
-2345 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5
-b(ariable)31 b(is)g(often)g(a)g(useful)f(w)m(a)m(y)i(to)f(a)m(v)m(oid)
-630 2454 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp)
-s(ecial)g(to)h(the)f(shell.)41 b(It)31 b(is)g(sometimes)630
-2564 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f
-(literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)630
-2673 y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g
-(expressions)g(while)g(pa)m(ying)h(atten)m(tion)h(to)f(the)630
-2783 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25
-b(a)g(shell)g(v)-5 b(ariable)26 b(to)f(store)g(the)g(pattern)g
-(decreases)g(these)630 2892 y(problems.)40 b(F)-8 b(or)31
-b(example,)g(the)g(follo)m(wing)h(is)e(equiv)-5 b(alen)m(t)32
-b(to)f(the)g(ab)s(o)m(v)m(e:)870 3039 y Ft(pattern='[[:space:]]*\(a\))o
-(?b')870 3148 y([[)47 b($line)g(=~)g($pattern)e(]])630
-3294 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m
-(haracter)j(that's)e(sp)s(ecial)g(to)g(the)g(regular)f(expression)g
-(gram-)630 3404 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m
-(v)m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g
-(the)630 3513 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p
-Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)e(c)m(haracter)i(in)e(the)h(string)f
-(\(its)h(usual)f(regular)630 3623 y(expression)g(meaning\),)i(but)e(in)
-g(the)h(pattern)f(`)p Ft("xxx.txt")p Fu(')f(it)i(can)g(only)f(matc)m(h)
-i(a)e(literal)630 3733 y(`)p Ft(.)p Fu('.)56 b(Shell)35
-b(programmers)f(should)h(tak)m(e)i(sp)s(ecial)e(care)i(with)e(bac)m
-(kslashes,)i(since)f(bac)m(k-)630 3842 y(slashes)27 b(are)g(used)f(b)s
-(oth)g(b)m(y)h(the)f(shell)h(and)f(regular)h(expressions)g(to)g(remo)m
-(v)m(e)h(the)f(sp)s(ecial)630 3952 y(meaning)h(from)f(the)h(follo)m
-(wing)i(c)m(haracter.)41 b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f
-(of)g(commands)g(are)630 4061 y Fl(not)40 b Fu(equiv)-5
-b(alen)m(t:)870 4208 y Ft(pattern='\\.')870 4427 y([[)47
-b(.)h(=~)f($pattern)e(]])870 4536 y([[)i(.)h(=~)f(\\.)g(]])870
-4756 y([[)g(.)h(=~)f("$pattern")e(]])870 4865 y([[)i(.)h(=~)f('\\.')f
-(]])630 5011 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f
-(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f(not,)h(b)s(ecause)f
-(in)g(the)630 5121 y(second)39 b(t)m(w)m(o)i(the)e(bac)m(kslash)h(will)
-f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e(matc)m(hed.)68
-b(In)39 b(the)630 5230 y(\014rst)31 b(t)m(w)m(o)h(examples,)h(the)e
-(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g(meaning)f(from)g(`)p
-Ft(.)p Fu(',)h(so)g(the)630 5340 y(literal)f(`)p Ft(.)p
-Fu(')e(matc)m(hes.)42 b(If)28 b(the)i(string)f(in)g(the)g(\014rst)g
-(examples)g(w)m(ere)h(an)m(ything)g(other)f(than)p eop
-end
+y(The)32 b(list)i(of)f(w)m(ords)f(follo)m(wing)j Ft(in)d
+Fu(is)h(expanded,)g(generating)h(a)f(list)h(of)f(items,)h(and)f(the)630
+408 y(set)41 b(of)f(expanded)f(w)m(ords)g(is)i(prin)m(ted)e(on)h(the)g
+(standard)f(error)h(output)g(stream,)j(eac)m(h)630 518
+y(preceded)31 b(b)m(y)g(a)g(n)m(um)m(b)s(er.)42 b(If)31
+b(the)g(`)p Ft(in)f Fj(words)p Fu(')g(is)i(omitted,)g(the)g(p)s
+(ositional)g(parameters)630 628 y(are)k(prin)m(ted,)h(as)e(if)h(`)p
+Ft(in)30 b("$@")p Fu(')k(had)h(b)s(een)g(sp)s(eci\014ed.)56
+b Ft(select)33 b Fu(then)j(displa)m(ys)f(the)h Ft(PS3)630
+737 y Fu(prompt)42 b(and)h(reads)f(a)i(line)f(from)g(the)g(standard)f
+(input.)78 b(If)42 b(the)i(line)f(consists)g(of)h(a)630
+847 y(n)m(um)m(b)s(er)34 b(corresp)s(onding)h(to)h(one)g(of)g(the)g
+(displa)m(y)m(ed)g(w)m(ords,)h(then)e(the)h(v)-5 b(alue)36
+b(of)g Fr(name)630 956 y Fu(is)f(set)g(to)h(that)f(w)m(ord.)54
+b(If)34 b(the)h(line)g(is)g(empt)m(y)-8 b(,)37 b(the)e(w)m(ords)f(and)g
+(prompt)g(are)h(displa)m(y)m(ed)630 1066 y(again.)40
+b(If)26 b Ft(EOF)f Fu(is)g(read,)i(the)f Ft(select)f
+Fu(command)g(completes)i(and)f(returns)e(1.)40 b(An)m(y)26
+b(other)630 1176 y(v)-5 b(alue)30 b(read)f(causes)h Fr(name)k
+Fu(to)c(b)s(e)f(set)g(to)h(n)m(ull.)41 b(The)28 b(line)i(read)f(is)g
+(sa)m(v)m(ed)i(in)e(the)g(v)-5 b(ariable)630 1285 y Ft(REPLY)p
+Fu(.)630 1420 y(The)42 b Fr(commands)j Fu(are)d(executed)h(after)g(eac)
+m(h)g(selection)h(un)m(til)e(a)h Ft(break)d Fu(command)i(is)630
+1530 y(executed,)32 b(at)f(whic)m(h)f(p)s(oin)m(t)g(the)h
+Ft(select)d Fu(command)i(completes.)630 1665 y(Here)39
+b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f(to)i(pic)m(k)f(a)
+g(\014lename)h(from)e(the)h(curren)m(t)630 1774 y(directory)-8
+b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f(index)f(of)i(the)g
+(\014le)f(selected.)870 1909 y Ft(select)46 b(fname)g(in)i(*;)870
+2019 y(do)870 2128 y(echo)f(you)g(picked)f($fname)g(\\\($REPLY\\\))870
+2238 y(break;)870 2347 y(done)150 2508 y(\(\(...)o(\)\))870
+2642 y(\(\()h Fj(expression)e Ft(\)\))630 2777 y Fu(The)33
+b(arithmetic)i Fr(expression)f Fu(is)f(ev)-5 b(aluated)35
+b(according)g(to)f(the)g(rules)f(describ)s(ed)g(b)s(elo)m(w)630
+2887 y(\(see)22 b(Section)f(6.5)h([Shell)f(Arithmetic],)j(page)d(98\).)
+39 b(The)20 b Fr(expression)h Fu(undergo)s(es)f(the)h(same)630
+2996 y(expansions)35 b(as)h(if)f(it)h(w)m(ere)g(within)f(double)f
+(quotes,)k(but)d(double)f(quote)i(c)m(haracters)h(in)630
+3106 y Fr(expression)29 b Fu(are)h(not)f(treated)h(sp)s(ecially)g(are)g
+(remo)m(v)m(ed.)41 b(If)29 b(the)h(v)-5 b(alue)29 b(of)h(the)f
+(expression)630 3216 y(is)h(non-zero,)i(the)e(return)f(status)i(is)g
+(0;)g(otherwise)f(the)h(return)e(status)i(is)f(1.)150
+3376 y Ft([[...)o(]])870 3511 y([[)47 b Fj(expression)e
+Ft(]])630 3646 y Fu(Return)25 b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s
+(ending)e(on)h(the)h(ev)-5 b(aluation)27 b(of)e(the)h(conditional)h
+(expres-)630 3755 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29
+b(are)i(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s(elo)m
+(w)h(in)630 3865 y(Section)37 b(6.4)g([Bash)f(Conditional)h
+(Expressions],)g(page)g(96.)58 b(The)36 b(w)m(ords)f(b)s(et)m(w)m(een)i
+(the)630 3974 y Ft([[)h Fu(and)g Ft(]])g Fu(do)g(not)h(undergo)f(w)m
+(ord)g(splitting)h(and)f(\014lename)h(expansion.)65 b(The)38
+b(shell)630 4084 y(p)s(erforms)26 b(tilde)j(expansion,)f(parameter)g
+(and)g(v)-5 b(ariable)28 b(expansion,)h(arithmetic)g(expan-)630
+4194 y(sion,)j(command)g(substitution,)g(pro)s(cess)g(substitution,)g
+(and)f(quote)i(remo)m(v)-5 b(al)33 b(on)e(those)630 4303
+y(w)m(ords)k(\(the)h(expansions)g(that)g(w)m(ould)f(o)s(ccur)h(if)g
+(the)f(w)m(ords)h(w)m(ere)g(enclosed)g(in)f(double)630
+4413 y(quotes\).)41 b(Conditional)28 b(op)s(erators)g(suc)m(h)f(as)i(`)
+p Ft(-f)p Fu(')e(m)m(ust)h(b)s(e)f(unquoted)g(to)h(b)s(e)g(recognized)
+630 4522 y(as)j(primaries.)630 4657 y(When)k(used)f(with)h
+Ft([[)p Fu(,)h(the)f(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p
+Fu(')g(op)s(erators)g(sort)g(lexicographically)j(using)d(the)630
+4767 y(curren)m(t)30 b(lo)s(cale.)630 4902 y(When)22
+b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p Ft(!=)p Fu(')g(op)s(erators)h(are)
+g(used,)g(the)g(string)f(to)i(the)e(righ)m(t)h(of)g(the)g(op)s(erator)
+630 5011 y(is)31 b(considered)g(a)h(pattern)f(and)g(matc)m(hed)h
+(according)g(to)g(the)g(rules)f(describ)s(ed)f(b)s(elo)m(w)h(in)630
+5121 y(Section)d(3.5.8.1)h([P)m(attern)f(Matc)m(hing],)h(page)f(36,)g
+(as)f(if)g(the)g Ft(extglob)d Fu(shell)j(option)g(w)m(ere)630
+5230 y(enabled.)46 b(The)31 b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f
+(iden)m(tical)h(to)g(`)p Ft(==)p Fu('.)46 b(If)31 b(the)h
+Ft(nocasematch)d Fu(shell)j(option)630 5340 y(\(see)42
+b(the)f(description)g(of)h Ft(shopt)d Fu(in)i(Section)h(4.3.2)h([The)e
+(Shopt)f(Builtin],)45 b(page)d(71\))p eop end
%%Page: 15 21
TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41
b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)630 299
-y(`)p Ft(.)p Fu(',)29 b(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)g(w)m
-(ould)g(not)h(matc)m(h,)h(b)s(ecause)e(the)g(quoted)g(`)p
-Ft(.)p Fu(')h(in)e(the)i(pattern)630 408 y(loses)i(its)g(sp)s(ecial)g
-(meaning)f(of)h(matc)m(hing)g(an)m(y)g(single)g(c)m(haracter.)630
-542 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h
+y(is)40 b(enabled,)i(the)e(matc)m(h)h(is)e(p)s(erformed)g(without)g
+(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630 408
+y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28 b(is)g(0)g(if)g
+(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p Fu('\))f(or)g(do)s(es)f(not)
+h(matc)m(h)630 518 y(\(`)p Ft(!=)p Fu('\))j(the)g(pattern,)f(and)g(1)h
+(otherwise.)630 645 y(If)20 b(y)m(ou)h(quote)g(an)m(y)f(part)h(of)f
+(the)h(pattern,)h(using)e(an)m(y)h(of)f(the)h(shell's)g(quoting)g(mec)m
+(hanisms,)630 754 y(the)43 b(quoted)g(p)s(ortion)g(is)g(matc)m(hed)h
+(literally)-8 b(.)81 b(This)42 b(means)h(ev)m(ery)h(c)m(haracter)h(in)e
+(the)630 864 y(quoted)34 b(p)s(ortion)f(matc)m(hes)i(itself,)h(instead)
+e(of)f(ha)m(ving)i(an)m(y)f(sp)s(ecial)g(pattern)g(matc)m(hing)630
+973 y(meaning.)630 1100 y(An)f(additional)i(binary)e(op)s(erator,)i(`)p
+Ft(=~)p Fu(',)g(is)f(a)m(v)-5 b(ailable,)37 b(with)c(the)h(same)g
+(precedence)h(as)630 1209 y(`)p Ft(==)p Fu(')40 b(and)g(`)p
+Ft(!=)p Fu('.)70 b(When)40 b(y)m(ou)g(use)g(`)p Ft(=~)p
+Fu(',)j(the)d(string)h(to)f(the)h(righ)m(t)g(of)f(the)g(op)s(erator)h
+(is)630 1319 y(considered)36 b(a)g Fm(posix)f Fu(extended)g(regular)h
+(expression)g(pattern)f(and)g(matc)m(hed)i(accord-)630
+1428 y(ingly)k(\(using)f(the)h Fm(posix)f Ft(regcomp)f
+Fu(and)h Ft(regexec)e Fu(in)m(terfaces)k(usually)f(describ)s(ed)e(in)
+630 1538 y Fl(r)-5 b(e)g(gex)11 b Fu(\(3\)\).)56 b(The)34
+b(return)g(v)-5 b(alue)35 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h
+(the)f(pattern,)h(and)e(1)i(if)e(it)630 1648 y(do)s(es)39
+b(not.)66 b(If)38 b(the)h(regular)g(expression)g(is)g(syn)m(tactically)
+i(incorrect,)i(the)c(conditional)630 1757 y(expression)e(returns)e(2.)
+61 b(If)37 b(the)g Ft(nocasematch)d Fu(shell)j(option)h(\(see)g(the)f
+(description)g(of)630 1867 y Ft(shopt)d Fu(in)h(Section)h(4.3.2)h([The)
+e(Shopt)f(Builtin],)k(page)e(71\))g(is)g(enabled,)g(the)g(matc)m(h)g
+(is)630 1976 y(p)s(erformed)29 b(without)h(regard)h(to)g(the)f(case)i
+(of)e(alphab)s(etic)h(c)m(haracters.)630 2103 y(Y)-8
+b(ou)23 b(can)g(quote)g(an)m(y)g(part)g(of)g(the)g(pattern)f(to)i
+(force)f(the)g(quoted)g(p)s(ortion)f(to)h(b)s(e)f(matc)m(hed)630
+2212 y(literally)33 b(instead)f(of)g(as)f(a)h(regular)g(expression)f
+(\(see)h(ab)s(o)m(v)m(e\).)46 b(If)31 b(the)h(pattern)f(is)h(stored)630
+2322 y(in)h(a)i(shell)f(v)-5 b(ariable,)35 b(quoting)f(the)g(v)-5
+b(ariable)35 b(expansion)e(forces)i(the)f(en)m(tire)g(pattern)g(to)630
+2432 y(b)s(e)c(matc)m(hed)h(literally)-8 b(.)630 2558
+y(The)25 b(pattern)h(will)g(matc)m(h)h(if)e(it)i(matc)m(hes)f(an)m(y)h
+(part)e(of)h(the)g(string.)39 b(If)25 b(y)m(ou)h(w)m(an)m(t)h(to)f
+(force)630 2668 y(the)j(pattern)h(to)g(matc)m(h)g(the)f(en)m(tire)h
+(string,)g(anc)m(hor)g(the)f(pattern)h(using)e(the)i(`)p
+Ft(^)p Fu(')f(and)g(`)p Ft($)p Fu(')630 2777 y(regular)i(expression)f
+(op)s(erators.)630 2904 y(F)-8 b(or)31 b(example,)g(the)f(follo)m(wing)
+h(will)f(matc)m(h)h(a)g(line)f(\(stored)g(in)g(the)g(shell)g(v)-5
+b(ariable)31 b Ft(line)p Fu(\))630 3013 y(if)42 b(there)h(is)g(a)f
+(sequence)h(of)g(c)m(haracters)h(an)m(ywhere)e(in)g(the)h(v)-5
+b(alue)43 b(consisting)g(of)g(an)m(y)630 3123 y(n)m(um)m(b)s(er,)26
+b(including)g(zero,)i(of)f(c)m(haracters)g(in)f(the)h
+Ft(space)e Fu(c)m(haracter)j(class,)g(immediately)630
+3232 y(follo)m(w)m(ed)k(b)m(y)e(zero)h(or)g(one)f(instances)h(of)g(`)p
+Ft(a)p Fu(',)g(then)f(a)h(`)p Ft(b)p Fu(':)870 3359 y
+Ft([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c(]])630
+3485 y Fu(That)f(means)g(v)-5 b(alues)42 b(for)g Ft(line)f
+Fu(lik)m(e)i(`)p Ft(aab)p Fu(',)i(`)31 b Ft(aaaaaab)p
+Fu(',)43 b(`)p Ft(xaby)p Fu(',)i(and)c(`)31 b Ft(ab)p
+Fu(')42 b(will)g(all)630 3595 y(matc)m(h,)32 b(as)e(will)h(a)g(line)f
+(con)m(taining)i(a)f(`)p Ft(b)p Fu(')g(an)m(ywhere)f(in)g(its)h(v)-5
+b(alue.)630 3721 y(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)
+m(haracter)j(that's)e(sp)s(ecial)g(to)g(the)g(regular)f(expression)g
+(gram-)630 3831 y(mar)g(\(`)p Ft(^$|[]\(\)\\.*+?)p Fu('\),)e(it)j(has)f
+(to)h(b)s(e)e(quoted)h(to)h(remo)m(v)m(e)g(its)g(sp)s(ecial)g(meaning.)
+40 b(This)630 3941 y(means)24 b(that)h(in)f(the)h(pattern)f(`)p
+Ft(xxx.txt)p Fu(',)g(the)h(`)p Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)f(c)m
+(haracter)g(in)f(the)h(string)630 4050 y(\(its)34 b(usual)f(regular)g
+(expression)g(meaning\),)i(but)e(in)g(the)g(pattern)h(`)p
+Ft("xxx.txt")p Fu(',)e(it)i(can)630 4160 y(only)c(matc)m(h)i(a)f
+(literal)g(`)p Ft(.)p Fu('.)630 4286 y(Lik)m(ewise,)i(if)f(y)m(ou)g(w)m
+(an)m(t)g(to)h(include)e(a)h(c)m(haracter)h(in)e(y)m(our)h(pattern)g
+(that)g(has)f(a)h(sp)s(ecial)630 4396 y(meaning)21 b(to)h(the)g
+(regular)f(expression)g(grammar,)i(y)m(ou)f(m)m(ust)f(mak)m(e)h(sure)e
+(it's)i(not)g(quoted.)630 4505 y(If)44 b(y)m(ou)g(w)m(an)m(t)h(to)g
+(anc)m(hor)f(a)h(pattern)f(at)h(the)f(b)s(eginning)f(or)h(end)g(of)g
+(the)g(string,)k(for)630 4615 y(instance,)e(y)m(ou)d(cannot)g(quote)g
+(the)f(`)p Ft(^)p Fu(')h(or)f(`)p Ft($)p Fu(')g(c)m(haracters)i(using)e
+(an)m(y)g(form)g(of)h(shell)630 4725 y(quoting.)630 4851
+y(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(`)p Ft(initial)e
+(string)p Fu(')f(at)i(the)g(start)g(of)g(a)g(line,)g(the)g(follo)m
+(wing)h(will)630 4961 y(w)m(ork:)870 5087 y Ft([[)47
+b($line)g(=~)g(^"initial)e(string")h(]])630 5214 y Fu(but)30
+b(this)g(will)h(not:)870 5340 y Ft([[)47 b($line)g(=~)g("^initial)e
+(string")h(]])p eop end
+%%Page: 16 22
+TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)630 299
+y(b)s(ecause)42 b(in)h(the)f(second)h(example)g(the)g(`)p
+Ft(^)p Fu(')f(is)h(quoted)g(and)f(do)s(esn't)g(ha)m(v)m(e)i(its)e
+(usual)630 408 y(sp)s(ecial)31 b(meaning.)630 540 y(It)h(is)f
+(sometimes)h(di\016cult)g(to)g(sp)s(ecify)f(a)h(regular)g(expression)f
+(prop)s(erly)f(without)h(using)630 650 y(quotes,)c(or)f(to)g(k)m(eep)h
+(trac)m(k)g(of)e(the)h(quoting)g(used)f(b)m(y)h(regular)f(expressions)h
+(while)f(pa)m(ying)630 759 y(atten)m(tion)40 b(to)f(shell)f(quoting)h
+(and)e(the)h(shell's)h(quote)f(remo)m(v)-5 b(al.)65 b(Storing)38
+b(the)h(regular)630 869 y(expression)45 b(in)g(a)g(shell)h(v)-5
+b(ariable)46 b(is)f(often)g(a)h(useful)e(w)m(a)m(y)i(to)g(a)m(v)m(oid)h
+(problems)d(with)630 978 y(quoting)35 b(c)m(haracters)g(that)g(are)g
+(sp)s(ecial)g(to)g(the)f(shell.)53 b(F)-8 b(or)35 b(example,)h(the)e
+(follo)m(wing)i(is)630 1088 y(equiv)-5 b(alen)m(t)32
+b(to)f(the)f(pattern)h(used)f(ab)s(o)m(v)m(e:)870 1219
+y Ft(pattern='[[:space:]]*\(a\))o(?b')870 1329 y([[)47
+b($line)g(=~)g($pattern)e(]])630 1461 y Fu(Shell)29 b(programmers)f
+(should)f(tak)m(e)k(sp)s(ecial)e(care)g(with)g(bac)m(kslashes,)h(since)
+f(bac)m(kslashes)630 1570 y(are)22 b(used)f(b)m(y)h(b)s(oth)f(the)h
+(shell)g(and)f(regular)h(expressions)f(to)i(remo)m(v)m(e)g(the)f(sp)s
+(ecial)h(meaning)630 1680 y(from)j(the)g(follo)m(wing)i(c)m(haracter.)
+41 b(This)25 b(means)h(that)h(after)g(the)f(shell's)g(w)m(ord)g
+(expansions)630 1789 y(complete)i(\(see)f(Section)g(3.5)h([Shell)e
+(Expansions],)h(page)g(24\),)i(an)m(y)d(bac)m(kslashes)i(remain-)630
+1899 y(ing)44 b(in)f(parts)g(of)h(the)g(pattern)f(that)h(w)m(ere)g
+(originally)h(not)f(quoted)g(can)g(remo)m(v)m(e)h(the)630
+2008 y(sp)s(ecial)29 b(meaning)g(of)g(pattern)f(c)m(haracters.)42
+b(If)28 b(an)m(y)h(part)g(of)f(the)h(pattern)g(is)f(quoted,)i(the)630
+2118 y(shell)h(do)s(es)f(its)g(b)s(est)g(to)i(ensure)d(that)i(the)g
+(regular)f(expression)h(treats)g(those)g(remaining)630
+2228 y(bac)m(kslashes)g(as)g(literal,)h(if)e(they)h(app)s(eared)f(in)g
+(a)g(quoted)h(p)s(ortion.)630 2359 y(The)f(follo)m(wing)i(t)m(w)m(o)f
+(sets)g(of)g(commands)f(are)h Fl(not)39 b Fu(equiv)-5
+b(alen)m(t:)870 2491 y Ft(pattern='\\.')870 2710 y([[)47
+b(.)h(=~)f($pattern)e(]])870 2819 y([[)i(.)h(=~)f(\\.)g(]])870
+3039 y([[)g(.)h(=~)f("$pattern")e(]])870 3148 y([[)i(.)h(=~)f('\\.')f
+(]])630 3280 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f
+(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f(not,)h(b)s(ecause)f
+(in)g(the)630 3389 y(second)e(t)m(w)m(o)i(the)e(bac)m(kslash)h(will)f
+(b)s(e)g(part)g(of)g(the)g(pattern)g(to)h(b)s(e)f(matc)m(hed.)40
+b(In)26 b(the)i(\014rst)630 3499 y(t)m(w)m(o)33 b(examples,)f(the)g
+(pattern)f(passed)g(to)h(the)g(regular)f(expression)h(parser)e(is)i(`)p
+Ft(\\.)p Fu('.)43 b(The)630 3608 y(bac)m(kslash)35 b(remo)m(v)m(es)g
+(the)g(sp)s(ecial)f(meaning)h(from)e(`)p Ft(.)p Fu(',)j(so)e(the)h
+(literal)g(`)p Ft(.)p Fu(')g(matc)m(hes.)53 b(In)630
+3718 y(the)35 b(second)h(t)m(w)m(o)g(examples,)h(the)f(pattern)f
+(passed)g(to)h(the)f(regular)h(expression)f(parser)630
+3828 y(has)26 b(the)g(bac)m(kslash)g(quoted)g(\(e.g.,)j(`)p
+Ft(\\\\\\.)p Fu('\),)e(whic)m(h)e(will)h(not)g(matc)m(h)h(the)f
+(string,)h(since)f(it)630 3937 y(do)s(es)31 b(not)g(con)m(tain)h(a)g
+(bac)m(kslash.)43 b(If)31 b(the)g(string)g(in)g(the)g(\014rst)f
+(examples)i(w)m(ere)g(an)m(ything)630 4047 y(other)f(than)f(`)p
+Ft(.)p Fu(',)h(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)h(w)m(ould)f
+(not)h(matc)m(h,)g(b)s(ecause)g(the)f(quoted)h(`)p Ft(.)p
+Fu(')f(in)630 4156 y(the)h(pattern)f(loses)h(its)g(sp)s(ecial)g
+(meaning)g(of)f(matc)m(hing)i(an)m(y)e(single)h(c)m(haracter.)630
+4288 y(Brac)m(k)m(et)d(expressions)d(in)g(regular)h(expressions)f(can)h
+(b)s(e)e(sources)i(of)f(errors)g(as)h(w)m(ell,)i(since)630
+4398 y(c)m(haracters)43 b(that)f(are)g(normally)g(sp)s(ecial)g(in)f
+(regular)h(expressions)f(lose)i(their)e(sp)s(ecial)630
+4507 y(meanings)24 b(b)s(et)m(w)m(een)g(brac)m(k)m(ets.)40
+b(Ho)m(w)m(ev)m(er,)27 b(y)m(ou)e(can)f(use)f(brac)m(k)m(et)i
+(expressions)f(to)g(matc)m(h)630 4617 y(sp)s(ecial)31
+b(pattern)g(c)m(haracters)h(without)f(quoting)g(them,)f(so)h(they)g
+(are)g(sometimes)h(useful)630 4726 y(for)e(this)g(purp)s(ose.)630
+4858 y(Though)f(it)i(migh)m(t)g(seem)f(lik)m(e)i(a)e(strange)h(w)m(a)m
+(y)g(to)g(write)f(it,)h(the)g(follo)m(wing)g(pattern)g(will)630
+4967 y(matc)m(h)g(a)g(`)p Ft(.)p Fu(')g(in)f(the)g(string:)870
+5099 y Ft([[)47 b(.)h(=~)f([.])g(]])630 5230 y Fu(The)30
+b(shell)g(p)s(erforms)f(an)m(y)i(w)m(ord)f(expansions)g(b)s(efore)g
+(passing)g(the)g(pattern)h(to)g(the)f(reg-)630 5340 y(ular)44
+b(expression)g(functions,)k(so)d(y)m(ou)f(can)h(assume)f(that)h(the)g
+(shell's)g(quoting)f(tak)m(es)p eop end
+%%Page: 17 23
+TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)630 299
+y(precedence.)63 b(As)37 b(noted)h(ab)s(o)m(v)m(e,)j(the)d(regular)f
+(expression)h(parser)f(will)h(in)m(terpret)g(an)m(y)630
+408 y(unquoted)30 b(bac)m(kslashes)h(remaining)g(in)g(the)g(pattern)f
+(after)i(shell)e(expansion)h(according)630 518 y(to)40
+b(its)g(o)m(wn)f(rules.)68 b(The)39 b(in)m(ten)m(tion)i(is)e(to)h(a)m
+(v)m(oid)h(making)f(shell)f(programmers)g(quote)630 628
+y(things)31 b(t)m(wice)h(as)f(m)m(uc)m(h)f(as)h(p)s(ossible,)g(so)g
+(shell)g(quoting)g(should)f(b)s(e)g(su\016cien)m(t)h(to)g(quote)630
+737 y(sp)s(ecial)g(pattern)f(c)m(haracters)i(where)e(that's)h
+(necessary)-8 b(.)630 867 y(The)39 b(arra)m(y)h(v)-5
+b(ariable)40 b Ft(BASH_REMATCH)c Fu(records)j(whic)m(h)g(parts)g(of)g
+(the)h(string)f(matc)m(hed)630 977 y(the)34 b(pattern.)51
+b(The)33 b(elemen)m(t)i(of)f Ft(BASH_REMATCH)d Fu(with)i(index)g(0)h
+(con)m(tains)h(the)f(p)s(ortion)630 1086 y(of)39 b(the)g(string)g(matc)
+m(hing)h(the)g(en)m(tire)f(regular)h(expression.)66 b(Substrings)37
+b(matc)m(hed)j(b)m(y)630 1196 y(paren)m(thesized)k(sub)s(expressions)e
+(within)i(the)g(regular)g(expression)g(are)g(sa)m(v)m(ed)h(in)f(the)630
+1306 y(remaining)33 b Ft(BASH_REMATCH)c Fu(indices.)49
+b(The)32 b(elemen)m(t)i(of)f Ft(BASH_REMATCH)d Fu(with)i(index)g
+Fr(n)630 1415 y Fu(is)e(the)h(p)s(ortion)f(of)g(the)h(string)f(matc)m
+(hing)i(the)e Fr(n)p Fu(th)g(paren)m(thesized)h(sub)s(expression.)630
+1545 y(Bash)26 b(sets)h Ft(BASH_REMATCH)c Fu(in)j(the)g(global)i(scop)s
+(e;)f(declaring)g(it)g(as)g(a)f(lo)s(cal)i(v)-5 b(ariable)27
+b(will)630 1655 y(lead)k(to)g(unexp)s(ected)f(results.)630
+1785 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h
(follo)m(wing)h(op)s(erators,)g(listed)f(in)f(decreasing)630
-651 y(order)30 b(of)g(precedence:)630 808 y Ft(\()g Fj(expression)e
-Ft(\))1110 918 y Fu(Returns)i(the)h(v)-5 b(alue)31 b(of)g
-Fr(expression)p Fu(.)42 b(This)30 b(ma)m(y)i(b)s(e)e(used)g(to)i(o)m(v)
-m(erride)g(the)1110 1027 y(normal)e(precedence)h(of)g(op)s(erators.)630
-1184 y Ft(!)f Fj(expression)1110 1293 y Fu(T)-8 b(rue)30
-b(if)g Fr(expression)g Fu(is)h(false.)630 1450 y Fj(expression1)c
-Ft(&&)j Fj(expression2)1110 1560 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g
-Fr(expression1)38 b Fu(and)29 b Fr(expression2)38 b Fu(are)31
-b(true.)630 1716 y Fj(expression1)c Ft(||)j Fj(expression2)1110
-1826 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38
+1895 y(order)30 b(of)g(precedence:)630 2045 y Ft(\()g
+Fj(expression)e Ft(\))1110 2155 y Fu(Returns)i(the)h(v)-5
+b(alue)31 b(of)g Fr(expression)p Fu(.)42 b(This)30 b(ma)m(y)i(b)s(e)e
+(used)g(to)i(o)m(v)m(erride)g(the)1110 2264 y(normal)e(precedence)h(of)
+g(op)s(erators.)630 2415 y Ft(!)f Fj(expression)1110
+2524 y Fu(T)-8 b(rue)30 b(if)g Fr(expression)g Fu(is)h(false.)630
+2675 y Fj(expression1)c Ft(&&)j Fj(expression2)1110 2784
+y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expression1)38
+b Fu(and)29 b Fr(expression2)38 b Fu(are)31 b(true.)630
+2935 y Fj(expression1)c Ft(||)j Fj(expression2)1110 3045
+y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38
b Fu(or)30 b Fr(expression2)38 b Fu(is)30 b(true.)630
-1983 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g
+3195 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g
(ev)-5 b(aluate)27 b Fr(expression2)32 b Fu(if)25 b(the)g(v)-5
-b(alue)25 b(of)g Fr(expression1)630 2092 y Fu(is)30 b(su\016cien)m(t)h
+b(alue)25 b(of)g Fr(expression1)630 3305 y Fu(is)30 b(su\016cien)m(t)h
(to)g(determine)g(the)f(return)g(v)-5 b(alue)31 b(of)f(the)h(en)m(tire)
-g(conditional)h(expression.)150 2289 y Fk(3.2.5.3)63
-b(Grouping)43 b(Commands)150 2436 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m
+g(conditional)h(expression.)150 3495 y Fk(3.2.5.3)63
+b(Grouping)43 b(Commands)150 3642 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m
(o)h(w)m(a)m(ys)f(to)h(group)e(a)h(list)g(of)g(commands)f(to)i(b)s(e)e
-(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 2545
+(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 3752
y(mands)h(are)i(group)s(ed,)f(redirections)h(ma)m(y)g(b)s(e)e(applied)i
(to)g(the)f(en)m(tire)h(command)g(list.)44 b(F)-8 b(or)32
-b(example,)150 2655 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g
+b(example,)150 3861 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g
(the)h(list)g(ma)m(y)g(b)s(e)e(redirected)i(to)g(a)g(single)g(stream.)
-150 2812 y Ft(\(\))870 2945 y(\()47 b Fj(list)g Ft(\))630
-3078 y Fu(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i
-(paren)m(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630
-3188 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d
-(Execution)i(En)m(vironmen)m(t],)g(page)f(40\),)630 3297
-y(and)d(eac)m(h)h(of)g(the)f(commands)g(in)g Fr(list)j
-Fu(to)f(b)s(e)d(executed)j(in)e(that)h(subshell.)38 b(Since)28
-b(the)f Fr(list)630 3407 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5
-b(ariable)29 b(assignmen)m(ts)g(do)g(not)g(remain)f(in)g(e\013ect)j
-(after)e(the)630 3516 y(subshell)g(completes.)150 3673
-y Ft({})870 3806 y({)47 b Fj(list)p Ft(;)g(})630 3939
-y Fu(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f
+150 4012 y Ft(\(\))870 4142 y(\()47 b Fj(list)g Ft(\))630
+4272 y Fu(Placing)42 b(a)g(list)g(of)f(commands)g(b)s(et)m(w)m(een)h
+(paren)m(theses)f(forces)h(the)f(shell)h(to)g(create)h(a)630
+4381 y(subshell)33 b(\(see)h(Section)g(3.7.3)i([Command)c(Execution)j
+(En)m(vironmen)m(t],)g(page)f(43\),)i(and)630 4491 y(eac)m(h)g(of)f
+(the)h(commands)e(in)h Fr(list)i Fu(is)e(executed)h(in)f(that)h
+(subshell)e(en)m(vironmen)m(t.)55 b(Since)630 4601 y(the)33
+b Fr(list)j Fu(is)e(executed)g(in)f(a)g(subshell,)h(v)-5
+b(ariable)34 b(assignmen)m(ts)g(do)f(not)g(remain)g(in)g(e\013ect)630
+4710 y(after)e(the)f(subshell)g(completes.)150 4861 y
+Ft({})870 4991 y({)47 b Fj(list)p Ft(;)g(})630 5121 y
+Fu(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f
(braces)g(causes)h(the)f(list)h(to)g(b)s(e)f(executed)630
-4049 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42
+5230 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42
b(No)27 b(subshell)f(is)g(created.)41 b(The)26 b(semicolon)i(\(or)f
-(newline\))630 4159 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275
-4315 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j
-(there)e(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150
-4425 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67
-b(The)39 b(braces)g(are)h Ft(reserved)28 b(words)p Fu(,)40
-b(so)g(they)f(m)m(ust)150 4535 y(b)s(e)d(separated)h(from)f(the)g
-Fr(list)j Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m
-(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 4644
-y Ft(operators)p Fu(,)23 b(and)h(are)g(recognized)i(as)e(separate)i
-(tok)m(ens)f(b)m(y)f(the)g(shell)h(ev)m(en)g(if)f(they)g(are)h(not)f
-(separated)150 4754 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.)
-275 4887 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h
-(constructs)g(is)f(the)h(exit)g(status)f(of)h Fr(list)p
-Fu(.)150 5083 y Fk(3.2.6)63 b(Copro)s(cesses)150 5230
-y Fu(A)37 b Ft(coprocess)c Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m
-(y)g(the)h Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36
-b(copro)s(cess)h(is)150 5340 y(executed)g(async)m(hronously)g(in)f(a)h
-(subshell,)g(as)g(if)g(the)f(command)h(had)f(b)s(een)f(terminated)i
-(with)g(the)p eop end
-%%Page: 16 22
-TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)150 299
-y(`)p Ft(&)p Fu(')34 b(con)m(trol)h(op)s(erator,)g(with)f(a)g(t)m(w)m
+(newline\))630 5340 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)p
+eop end
+%%Page: 18 24
+TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)275 299
+y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j(there)e
+(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150
+408 y(t)m(w)m(o)f(constructs)f(due)g(to)g(historical)i(reasons.)78
+b(The)42 b(braces)i(are)f(reserv)m(ed)g(w)m(ords,)j(so)d(they)g(m)m
+(ust)150 518 y(b)s(e)36 b(separated)h(from)f(the)g Fr(list)j
+Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m(haracters.)62
+b(The)36 b(paren)m(theses)h(are)150 628 y(op)s(erators,)29
+b(and)e(are)i(recognized)g(as)g(separate)g(tok)m(ens)g(b)m(y)f(the)g
+(shell)g(ev)m(en)h(if)f(they)h(are)f(not)g(separated)150
+737 y(from)i(the)g Fr(list)j Fu(b)m(y)e(whitespace.)275
+865 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h(constructs)g
+(is)f(the)h(exit)g(status)f(of)h Fr(list)p Fu(.)150 1050
+y Fk(3.2.6)63 b(Copro)s(cesses)150 1197 y Fu(A)37 b Ft(coprocess)c
+Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m(y)g(the)h
+Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36 b(copro)s(cess)h(is)150
+1307 y(executed)g(async)m(hronously)g(in)f(a)h(subshell,)g(as)g(if)g
+(the)f(command)h(had)f(b)s(een)f(terminated)i(with)g(the)150
+1416 y(`)p Ft(&)p Fu(')d(con)m(trol)h(op)s(erator,)g(with)f(a)g(t)m(w)m
(o-w)m(a)m(y)i(pip)s(e)d(established)h(b)s(et)m(w)m(een)h(the)f
-(executing)h(shell)f(and)f(the)150 408 y(copro)s(cess.)275
-550 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390
-691 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g
-Ft([)p Fj(redirections)p Ft(])150 833 y Fu(This)39 b(creates)j(a)e
-(copro)s(cess)h(named)f Fr(NAME)p Fu(.)70 b(If)40 b Fr(NAME)46
-b Fu(is)40 b(not)g(supplied,)i(the)e(default)h(name)f(is)150
-942 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23
-b(not)g(b)s(e)e(supplied)h(if)g Fr(command)k Fu(is)d(a)g(simple)f
-(command)g(\(see)i(Section)f(3.2.2)150 1052 y([Simple)39
-b(Commands],)h(page)g(8\);)k(otherwise,)e(it)d(is)g(in)m(terpreted)h
-(as)f(the)g(\014rst)f(w)m(ord)h(of)g(the)g(simple)150
-1162 y(command.)275 1303 y(When)j(the)i(copro)s(cess)f(is)g(executed,)
-48 b(the)43 b(shell)g(creates)i(an)e(arra)m(y)g(v)-5
-b(ariable)44 b(\(see)g(Section)g(6.7)150 1413 y([Arra)m(ys],)32
-b(page)g(95\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h
-(executing)g(shell.)44 b(The)31 b(standard)f(output)150
-1522 y(of)39 b Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to)
-i(a)f(\014le)f(descriptor)h(in)f(the)h(executing)h(shell,)h(and)d(that)
-150 1632 y(\014le)i(descriptor)h(is)f(assigned)h(to)g
-Ft(NAME)p Fu([0].)70 b(The)40 b(standard)f(input)h(of)g
-Fr(command)k Fu(is)c(connected)h(via)150 1741 y(a)h(pip)s(e)f(to)i(a)f
-(\014le)g(descriptor)g(in)f(the)h(executing)i(shell,)h(and)c(that)h
-(\014le)g(descriptor)g(is)g(assigned)g(to)150 1851 y
-Ft(NAME)p Fu([1].)69 b(This)39 b(pip)s(e)g(is)h(established)g(b)s
-(efore)f(an)m(y)h(redirections)h(sp)s(eci\014ed)e(b)m(y)g(the)h
-(command)g(\(see)150 1961 y(Section)45 b(3.6)h([Redirections],)k(page)
-45 b(35\).)84 b(The)44 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized)
-h(as)g(argumen)m(ts)150 2070 y(to)d(shell)g(commands)f(and)g
+(executing)h(shell)f(and)f(the)150 1526 y(copro)s(cess.)275
+1653 y(The)c(syn)m(tax)i(for)f(a)h(copro)s(cess)g(is:)390
+1781 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g
+Ft([)p Fj(redirections)p Ft(])150 1909 y Fu(This)33 b(creates)i(a)f
+(copro)s(cess)g(named)f Fr(NAME)p Fu(.)51 b Fr(command)37
+b Fu(ma)m(y)d(b)s(e)f(either)h(a)g(simple)g(command)f(\(see)150
+2018 y(Section)44 b(3.2.2)i([Simple)d(Commands],)k(page)d(9\))g(or)g(a)
+g(comp)s(ound)e(command)h(\(see)i(Section)f(3.2.5)150
+2128 y([Comp)s(ound)e(Commands],)47 b(page)e(11\).)83
+b Fr(NAME)50 b Fu(is)44 b(a)g(shell)g(v)-5 b(ariable)45
+b(name.)82 b(If)44 b Fr(NAME)50 b Fu(is)44 b(not)150
+2237 y(supplied,)29 b(the)i(default)f(name)h(is)f Ft(COPROC)p
+Fu(.)275 2365 y(The)f(recommended)h(form)g(to)h(use)f(for)h(a)f(copro)s
+(cess)h(is)390 2492 y Ft(coproc)46 b Fj(NAME)h Ft({)g
+Fj(command)p Ft(;)f(})150 2620 y Fu(This)31 b(form)g(is)h(recommended)f
+(b)s(ecause)h(simple)g(commands)f(result)h(in)f(the)h(copro)s(cess)g
+(alw)m(a)m(ys)h(b)s(eing)150 2730 y(named)45 b Ft(COPROC)p
+Fu(,)i(and)e(it)h(is)f(simpler)g(to)h(use)f(and)g(more)g(complete)i
+(than)e(the)h(other)f(comp)s(ound)150 2839 y(commands.)275
+2967 y(There)29 b(are)i(other)g(forms)f(of)g(copro)s(cesses:)390
+3094 y Ft(coproc)46 b Fj(NAME)h(compound-command)390
+3204 y Ft(coproc)f Fj(compound-command)390 3313 y Ft(coproc)g
+Fj(simple-command)150 3441 y Fu(If)41 b Fr(command)46
+b Fu(is)41 b(a)i(comp)s(ound)d(command,)45 b Fr(NAME)i
+Fu(is)42 b(optional.)77 b(The)41 b(w)m(ord)g(follo)m(wing)j
+Ft(coproc)150 3551 y Fu(determines)27 b(whether)f(that)i(w)m(ord)f(is)g
+(in)m(terpreted)g(as)g(a)h(v)-5 b(ariable)28 b(name:)39
+b(it)27 b(is)g(in)m(terpreted)h(as)f Fr(NAME)150 3660
+y Fu(if)i(it)h(is)g(not)f(a)h(reserv)m(ed)f(w)m(ord)g(that)h(in)m(tro)s
+(duces)f(a)h(comp)s(ound)e(command.)40 b(If)29 b Fr(command)k
+Fu(is)c(a)h(simple)150 3770 y(command,)36 b Fr(NAME)k
+Fu(is)35 b(not)f(allo)m(w)m(ed;)39 b(this)34 b(is)h(to)g(a)m(v)m(oid)h
+(confusion)f(b)s(et)m(w)m(een)g Fr(NAME)40 b Fu(and)34
+b(the)h(\014rst)150 3879 y(w)m(ord)30 b(of)h(the)f(simple)g(command.)
+275 4007 y(When)42 b(the)i(copro)s(cess)f(is)g(executed,)48
+b(the)43 b(shell)g(creates)i(an)e(arra)m(y)g(v)-5 b(ariable)44
+b(\(see)g(Section)g(6.7)150 4117 y([Arra)m(ys],)h(page)e(100\))g(named)
+e Fr(NAME)48 b Fu(in)41 b(the)h(con)m(text)h(of)f(the)g(executing)h
+(shell.)75 b(The)41 b(standard)150 4226 y(output)32 b(of)h
+Fr(command)i Fu(is)e(connected)g(via)g(a)g(pip)s(e)f(to)h(a)g(\014le)f
+(descriptor)h(in)f(the)g(executing)i(shell,)g(and)150
+4336 y(that)d(\014le)g(descriptor)g(is)g(assigned)f(to)i
+Fr(NAME)5 b Fu([0].)43 b(The)31 b(standard)f(input)f(of)i
+Fr(command)j Fu(is)d(connected)150 4445 y(via)40 b(a)g(pip)s(e)f(to)h
+(a)g(\014le)g(descriptor)f(in)g(the)h(executing)h(shell,)h(and)d(that)h
+(\014le)g(descriptor)f(is)h(assigned)150 4555 y(to)f
+Fr(NAME)5 b Fu([1].)65 b(This)38 b(pip)s(e)f(is)h(established)g(b)s
+(efore)g(an)m(y)g(redirections)h(sp)s(eci\014ed)e(b)m(y)h(the)g
+(command)150 4664 y(\(see)33 b(Section)f(3.6)h([Redirections],)g(page)g
+(38\).)45 b(The)31 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized)i
+(as)f(argumen)m(ts)150 4774 y(to)42 b(shell)g(commands)f(and)g
(redirections)h(using)f(standard)g(w)m(ord)g(expansions.)74
-b(Other)41 b(than)g(those)150 2180 y(created)27 b(to)g(execute)g
+b(Other)41 b(than)g(those)150 4884 y(created)27 b(to)g(execute)g
(command)f(and)f(pro)s(cess)h(substitutions,)h(the)f(\014le)g
-(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 2289
-y(in)30 b(subshells.)275 2431 y(The)d(pro)s(cess)h(ID)h(of)f(the)h
+(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 4993
+y(in)30 b(subshells.)275 5121 y(The)d(pro)s(cess)h(ID)h(of)f(the)h
(shell)f(spa)m(wned)g(to)h(execute)h(the)e(copro)s(cess)h(is)f(a)m(v)-5
-b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 2540
-y(the)k(v)-5 b(ariable)33 b Ft(NAME)p 850 2540 28 4 v
-39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g(ma)m(y)h(b)s(e)f
-(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 2650
-y(to)e(terminate.)275 2791 y(Since)20 b(the)g(copro)s(cess)h(is)g
-(created)g(as)g(an)f(async)m(hronous)g(command,)i(the)f
-Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 2901 y(returns)29
-b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h(copro)s(cess)g(is)f
-(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)150 3107
-y Fk(3.2.7)63 b(GNU)41 b(P)m(arallel)150 3254 y Fu(There)30
-b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g(parallel)h(that)h(are)e
-(not)h(built)g(in)m(to)g(Bash.)41 b(GNU)31 b(P)m(arallel)i(is)150
-3364 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 3505
-y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j(can)d(b)s(e)g
-(used)g(to)h(build)f(and)g(run)f(commands)h(in)h(parallel.)150
-3615 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h(command)f(with)g
-(di\013eren)m(t)h(argumen)m(ts,)j(whether)39 b(they)i(are)g
-(\014lenames,)150 3724 y(usernames,)27 b(hostnames,)h(or)e(lines)h
-(read)f(from)h(\014les.)39 b(GNU)27 b(P)m(arallel)i(pro)m(vides)d
-(shorthand)g(references)150 3834 y(to)38 b(man)m(y)g(of)g(the)g(most)g
-(common)g(op)s(erations)g(\(input)f(lines,)j(v)-5 b(arious)38
-b(p)s(ortions)f(of)h(the)g(input)e(line,)150 3943 y(di\013eren)m(t)f(w)
-m(a)m(ys)h(to)f(sp)s(ecify)f(the)h(input)f(source,)i(and)e(so)h(on\).)
-54 b(P)m(arallel)36 b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150
-4053 y(commands)30 b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f
-(di\013eren)m(t)g(instances)g(of)g(Bash.)275 4194 y(F)-8
-b(or)33 b(a)g(complete)h(description,)g(refer)e(to)i(the)f(GNU)g(P)m
-(arallel)i(do)s(cumen)m(tation.)48 b(A)33 b(few)f(examples)150
-4304 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its)
-g(use.)275 4445 y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g
-(replace)h Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h
-(the)f(curren)m(t)g(directory)150 4555 y(and)30 b(its)h(sub)s
-(directories:)390 4696 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html')
-g(-print)g(|)h(parallel)f(gzip)150 4838 y Fu(If)30 b(y)m(ou)h(need)f
-(to)h(protect)h(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h
-(in)f(\014le)g(names,)h(use)f(\014nd's)f Ft(-print0)150
-4948 y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275
-5089 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h
-(\014les)f(from)f(the)h(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m
-(b)s(er)e(of)i(\014les)150 5199 y(is)c(to)s(o)i(large)f(to)g(pro)s
-(cess)f(with)g(one)h Ft(mv)f Fu(in)m(v)m(o)s(cation:)390
-5340 y Ft(printf)46 b('\045s\\n')g(*)i(|)f(parallel)f(mv)h({})g
-(destdir)p eop end
-%%Page: 17 23
-TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)275 299
-y(As)28 b(y)m(ou)h(can)g(see,)g(the)g Fi({})g Fu(is)g(replaced)g(with)f
-(eac)m(h)i(line)f(read)f(from)g(standard)g(input.)39
-b(While)29 b(using)150 408 y Ft(ls)34 b Fu(will)i(w)m(ork)f(in)g(most)g
-(instances,)i(it)f(is)f(not)g(su\016cien)m(t)h(to)g(deal)f(with)g(all)h
-(\014lenames.)55 b Ft(printf)33 b Fu(is)j(a)150 518 y(shell)31
-b(builtin,)f(and)g(therefore)h(is)g(not)g(sub)5 b(ject)30
-b(to)h(the)g(k)m(ernel's)g(limit)g(on)g(the)g(n)m(um)m(b)s(er)e(of)i
-(argumen)m(ts)150 628 y(to)37 b(a)f(program,)h(so)g(y)m(ou)f(can)g(use)
-g(`)p Ft(*)p Fu(')g(\(but)f(see)i(b)s(elo)m(w)f(ab)s(out)g(the)g
-Ft(dotglob)e Fu(shell)i(option\).)58 b(If)36 b(y)m(ou)150
-737 y(need)30 b(to)h(accommo)s(date)h(sp)s(ecial)f(c)m(haracters)h(in)e
-(\014lenames,)h(y)m(ou)g(can)f(use)390 877 y Ft(printf)46
-b('\045s\\0')g(*)i(|)f(parallel)f(-0)h(mv)g({})g(destdir)150
-1017 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275
-1157 y(This)e(will)i(run)e(as)h(man)m(y)h Ft(mv)e Fu(commands)h(as)h
-(there)f(are)h(\014les)f(in)h(the)f(curren)m(t)g(directory)-8
-b(.)42 b(Y)-8 b(ou)31 b(can)150 1267 y(em)m(ulate)h(a)f(parallel)g
-Ft(xargs)e Fu(b)m(y)h(adding)g(the)h Ft(-X)f Fu(option:)390
-1407 y Ft(printf)46 b('\045s\\0')g(*)i(|)f(parallel)f(-0)h(-X)g(mv)g
-({})g(destdir)275 1547 y Fu(\(Y)-8 b(ou)31 b(ma)m(y)g(ha)m(v)m(e)g(to)g
-(mo)s(dify)f(the)h(pattern)f(if)g(y)m(ou)h(ha)m(v)m(e)h(the)e
-Ft(dotglob)f Fu(option)h(enabled.\))275 1687 y(GNU)h(P)m(arallel)i(can)
-e(replace)h(certain)g(common)g(idioms)f(that)g(op)s(erate)h(on)f(lines)
-g(read)g(from)f(a)i(\014le)150 1797 y(\(in)e(this)h(case,)g
-(\014lenames)g(listed)g(one)f(p)s(er)g(line\):)390 1937
-y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 2046 y(do-something1)d
-("$x")j("config-$x")390 2156 y(do-something2)d(<)k("$x")390
-2265 y(done)f(<)g(file)g(|)g(process-output)150 2405
-y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g(of)g
-(lam)m(b)s(das:)390 2545 y Ft(cat)47 b(list)g(|)g(parallel)f
-("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|)
-915 2655 y(process-output)275 2795 y Fu(P)m(arallel)31
-b(pro)m(vides)e(a)h(built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h
-(\014lename)e(extensions,)i(whic)m(h)e(lends)g(itself)150
-2905 y(to)i(batc)m(h)g(\014le)g(transformations)f(or)g(renaming:)390
-3045 y Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g
-(>{.}.bz2)e(&&)j(rm)f({}")150 3185 y Fu(This)28 b(will)i(recompress)e
-(all)i(\014les)f(in)g(the)g(curren)m(t)g(directory)g(with)g(names)g
-(ending)f(in)h(.gz)h(using)f(bzip2,)150 3294 y(running)37
-b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p Ft(+)p Fu(0\))i(in)e(parallel.)66
-b(\(W)-8 b(e)40 b(use)e Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c
-Ft(find)g Fu(as)150 3404 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h
-(the)h(face)g(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m
-(haracters.\))57 b(P)m(arallel)150 3513 y(can)31 b(tak)m(e)h(argumen)m
-(ts)e(from)g(the)h(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also)
-g(b)s(e)f(written)g(as)390 3654 y Ft(parallel)46 b("zcat)g({})h(|)h
-(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)275 3794
-y Fu(If)24 b(a)i(command)f(generates)h(output,)g(y)m(ou)g(ma)m(y)f(w)m
-(an)m(t)h(to)g(preserv)m(e)g(the)f(input)f(order)h(in)g(the)g(output.)
-150 3903 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390
-4043 y Ft({)581 4153 y(echo)47 b(foss.org.my)d(;)581
-4262 y(echo)j(debian.org)e(;)581 4372 y(echo)i(freenetproject.org)42
-b(;)390 4482 y(})47 b(|)h(parallel)d(traceroute)150 4622
-y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m(v)m
-(o)s(cation)h(that)e(\014nishes)e(\014rst.)40 b(Adding)30
-b(the)g Ft(-k)g Fu(option)390 4762 y Ft({)581 4871 y(echo)47
-b(foss.org.my)d(;)581 4981 y(echo)j(debian.org)e(;)581
-5090 y(echo)i(freenetproject.org)42 b(;)390 5200 y(})47
-b(|)h(parallel)d(-k)j(traceroute)150 5340 y Fu(will)31
-b(ensure)e(that)i(the)g(output)f(of)g Ft(traceroute)e(foss.org.my)f
-Fu(is)k(displa)m(y)m(ed)g(\014rst.)p eop end
-%%Page: 18 24
-TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)275 299
-y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i(run)d(a)i
-(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar)f(to)150
-408 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35
-b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f(\014lenames,)h
-(create)g(a)g(series)f(of)g(shell)150 518 y(commands)24
-b(to)h(op)s(erate)h(on)e(them,)i(and)e(feed)g(that)h(list)h(of)e
-(commands)g(to)i(a)f(shell.)39 b(P)m(arallel)26 b(can)f(sp)s(eed)150
-628 y(this)30 b(up.)40 b(Assuming)30 b(that)h Ft(file)e
-Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h(one)f(p)s(er)g
-(line,)390 772 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150
-917 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h
-(shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i(an)
-150 1027 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h
-(jobs)f(at)h(a)g(time.)150 1283 y Fs(3.3)68 b(Shell)45
-b(F)-11 b(unctions)150 1442 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m
-(a)m(y)g(to)h(group)e(commands)g(for)h(later)g(execution)h(using)e(a)h
-(single)g(name)g(for)150 1552 y(the)f(group.)55 b(They)35
-b(are)g(executed)h(just)f(lik)m(e)h(a)g Ft(")p Fu(regular)p
-Ft(")f Fu(command.)54 b(When)35 b(the)h(name)f(of)g(a)h(shell)150
-1661 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e
-(list)h(of)f(commands)g(asso)s(ciated)i(with)d(that)150
-1771 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25
-b(functions)g(are)i(executed)f(in)f(the)h(curren)m(t)g(shell)g(con)m
-(text;)j(no)c(new)150 1881 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m
-(terpret)g(them.)275 2025 y(F)-8 b(unctions)30 b(are)h(declared)g
-(using)f(this)g(syn)m(tax:)390 2170 y Fj(fname)46 b Ft(\(\))i
-Fj(compound-command)43 b Ft([)k Fj(redirections)e Ft(])275
-2315 y Fu(or)390 2460 y Ft(function)h Fj(fname)g Ft([\(\)])h
-Fj(compound-command)c Ft([)k Fj(redirections)e Ft(])275
-2604 y Fu(This)37 b(de\014nes)h(a)h(shell)f(function)g(named)g
-Fr(fname)p Fu(.)65 b(The)38 b(reserv)m(ed)h(w)m(ord)f
-Ft(function)e Fu(is)j(optional.)150 2714 y(If)33 b(the)g
-Ft(function)e Fu(reserv)m(ed)i(w)m(ord)g(is)g(supplied,)g(the)g(paren)m
-(theses)h(are)f(optional.)50 b(The)33 b Fr(b)s(o)s(dy)39
-b Fu(of)34 b(the)150 2824 y(function)41 b(is)h(the)g(comp)s(ound)e
-(command)h Fr(comp)s(ound-command)j Fu(\(see)e(Section)h(3.2.5)g([Comp)
-s(ound)150 2933 y(Commands],)30 b(page)h(10\).)42 b(That)30
-b(command)g(is)g(usually)h(a)f Fr(list)j Fu(enclosed)e(b)s(et)m(w)m
-(een)g Fi({)g Fu(and)f Fi(})p Fu(,)h(but)e(ma)m(y)150
-3043 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v)
-m(e,)j(with)d(one)g(exception:)60 b(If)39 b(the)h Ft(function)e
-Fu(reserv)m(ed)150 3152 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m
-(theses)h(are)f(not)h(supplied,)g(the)f(braces)g(are)h(required.)63
-b Fr(comp)s(ound-)150 3262 y(command)37 b Fu(is)d(executed)g(whenev)m
-(er)f Fr(fname)39 b Fu(is)34 b(sp)s(eci\014ed)e(as)i(the)g(name)g(of)f
-(a)h(command.)50 b(When)34 b(the)150 3371 y(shell)e(is)f(in)g
-Fm(posix)f Fu(mo)s(de)h(\(see)i(Section)f(6.11)h([Bash)e(POSIX)g(Mo)s
-(de],)h(page)g(101\),)h Fr(fname)k Fu(m)m(ust)31 b(b)s(e)g(a)150
-3481 y(v)-5 b(alid)37 b(shell)f Fr(name)42 b Fu(and)36
-b(ma)m(y)h(not)f(b)s(e)g(the)g(same)h(as)g(one)f(of)h(the)g(sp)s(ecial)
-g(builtins)e(\(see)j(Section)f(4.4)150 3591 y([Sp)s(ecial)e(Builtins],)
-h(page)e(72\).)54 b(In)33 b(default)h(mo)s(de,)h(a)g(function)f(name)g
-(can)g(b)s(e)g(an)m(y)g(unquoted)g(shell)150 3700 y(w)m(ord)g(that)h
-(do)s(es)e(not)i(con)m(tain)g(`)p Ft($)p Fu('.)53 b(An)m(y)34
-b(redirections)h(\(see)g(Section)g(3.6)g([Redirections],)i(page)e(35\))
-150 3810 y(asso)s(ciated)30 b(with)e(the)h(shell)f(function)g(are)h(p)s
-(erformed)e(when)h(the)g(function)g(is)h(executed.)41
-b(A)28 b(function)150 3919 y(de\014nition)g(ma)m(y)h(b)s(e)f(deleted)h
-(using)f(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(unset)e
-Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)150 4029
-y(Shell)g(Builtins],)h(page)h(44\).)275 4174 y(The)26
-b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g(zero)h
-(unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly)150
-4283 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46
+b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 5230
+y(the)k(v)-5 b(ariable)33 b Fj(NAME)p Ft(_PID)p Fu(.)44
+b(The)32 b Ft(wait)g Fu(builtin)f(command)i(ma)m(y)g(b)s(e)e(used)h(to)
+h(w)m(ait)h(for)e(the)h(copro)s(cess)150 5340 y(to)e(terminate.)p
+eop end
+%%Page: 19 25
+TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)275 299
+y(Since)20 b(the)g(copro)s(cess)h(is)g(created)g(as)g(an)f(async)m
+(hronous)g(command,)i(the)f Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150
+408 y(returns)29 b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h
+(copro)s(cess)g(is)f(the)h(exit)g(status)g(of)f Fr(command)p
+Fu(.)150 609 y Fk(3.2.7)63 b(GNU)41 b(P)m(arallel)150
+756 y Fu(There)30 b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g
+(parallel)h(that)h(are)e(not)h(built)g(in)m(to)g(Bash.)41
+b(GNU)31 b(P)m(arallel)i(is)150 866 y(a)e(to)s(ol)g(to)g(do)f(just)g
+(that.)275 1001 y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j
+(can)d(b)s(e)g(used)g(to)h(build)f(and)g(run)f(commands)h(in)h
+(parallel.)150 1111 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h
+(command)f(with)g(di\013eren)m(t)h(argumen)m(ts,)j(whether)39
+b(they)i(are)g(\014lenames,)150 1221 y(usernames,)27
+b(hostnames,)h(or)e(lines)h(read)f(from)h(\014les.)39
+b(GNU)27 b(P)m(arallel)i(pro)m(vides)d(shorthand)g(references)150
+1330 y(to)38 b(man)m(y)g(of)g(the)g(most)g(common)g(op)s(erations)g
+(\(input)f(lines,)j(v)-5 b(arious)38 b(p)s(ortions)f(of)h(the)g(input)e
+(line,)150 1440 y(di\013eren)m(t)f(w)m(a)m(ys)h(to)f(sp)s(ecify)f(the)h
+(input)f(source,)i(and)e(so)h(on\).)54 b(P)m(arallel)36
+b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150 1549 y(commands)30
+b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f(di\013eren)m(t)g
+(instances)g(of)g(Bash.)275 1685 y(F)-8 b(or)28 b(a)h(complete)g
+(description,)g(refer)f(to)g(the)h(GNU)f(P)m(arallel)i(do)s(cumen)m
+(tation,)g(whic)m(h)e(is)g(a)m(v)-5 b(ailable)150 1795
+y(at)31 b Ft(https://www.gnu.org/softw)o(are)o(/par)o(alle)o(l/p)o
+(aral)o(lel_)o(tut)o(oria)o(l.ht)o(ml)p Fu(.)150 2038
+y Fs(3.3)68 b(Shell)45 b(F)-11 b(unctions)150 2197 y
+Fu(Shell)35 b(functions)h(are)g(a)g(w)m(a)m(y)g(to)h(group)e(commands)g
+(for)h(later)g(execution)h(using)e(a)h(single)g(name)g(for)150
+2307 y(the)f(group.)55 b(They)35 b(are)g(executed)h(just)f(lik)m(e)h(a)
+g Ft(")p Fu(regular)p Ft(")f Fu(command.)54 b(When)35
+b(the)h(name)f(of)g(a)h(shell)150 2416 y(function)j(is)g(used)f(as)h(a)
+h(simple)f(command)g(name,)i(the)e(list)h(of)f(commands)g(asso)s
+(ciated)i(with)d(that)150 2526 y(function)25 b(name)h(is)g(executed.)40
+b(Shell)25 b(functions)g(are)i(executed)f(in)f(the)h(curren)m(t)g
+(shell)g(con)m(text;)j(no)c(new)150 2635 y(pro)s(cess)30
+b(is)g(created)i(to)f(in)m(terpret)g(them.)275 2771 y(F)-8
+b(unctions)30 b(are)h(declared)g(using)f(this)g(syn)m(tax:)390
+2907 y Fj(fname)46 b Ft(\(\))i Fj(compound-command)43
+b Ft([)k Fj(redirections)e Ft(])275 3043 y Fu(or)390
+3179 y Ft(function)h Fj(fname)g Ft([\(\)])h Fj(compound-command)c
+Ft([)k Fj(redirections)e Ft(])275 3315 y Fu(This)37 b(de\014nes)h(a)h
+(shell)f(function)g(named)g Fr(fname)p Fu(.)65 b(The)38
+b(reserv)m(ed)h(w)m(ord)f Ft(function)e Fu(is)j(optional.)150
+3424 y(If)33 b(the)g Ft(function)e Fu(reserv)m(ed)i(w)m(ord)g(is)g
+(supplied,)g(the)g(paren)m(theses)h(are)f(optional.)50
+b(The)33 b Fr(b)s(o)s(dy)39 b Fu(of)34 b(the)150 3534
+y(function)41 b(is)h(the)g(comp)s(ound)e(command)h Fr(comp)s
+(ound-command)j Fu(\(see)e(Section)h(3.2.5)g([Comp)s(ound)150
+3644 y(Commands],)30 b(page)h(11\).)42 b(That)30 b(command)g(is)g
+(usually)h(a)f Fr(list)j Fu(enclosed)e(b)s(et)m(w)m(een)g
+Fi({)g Fu(and)f Fi(})p Fu(,)h(but)e(ma)m(y)150 3753 y(b)s(e)k(an)m(y)h
+(comp)s(ound)f(command)g(listed)i(ab)s(o)m(v)m(e.)52
+b(If)33 b(the)i Ft(function)c Fu(reserv)m(ed)j(w)m(ord)g(is)f(used,)i
+(but)e(the)150 3863 y(paren)m(theses)22 b(are)g(not)f(supplied,)h(the)g
+(braces)g(are)f(recommended.)38 b Fr(comp)s(ound-command)24
+b Fu(is)d(executed)150 3972 y(whenev)m(er)29 b Fr(fname)35
+b Fu(is)29 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)h(a)f(simple)h
+(command.)40 b(When)29 b(the)h(shell)f(is)h(in)f Fm(posix)150
+4082 y Fu(mo)s(de)i(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)s(de],)
+i(page)g(106\),)i Fr(fname)i Fu(m)m(ust)31 b(b)s(e)g(a)h(v)-5
+b(alid)31 b(shell)h(name)150 4192 y(and)h(ma)m(y)h(not)f(b)s(e)g(the)h
+(same)f(as)h(one)g(of)f(the)h(sp)s(ecial)g(builtins)e(\(see)j(Section)f
+(4.4)g([Sp)s(ecial)g(Builtins],)150 4301 y(page)d(77\).)43
+b(In)29 b(default)i(mo)s(de,)g(a)f(function)h(name)f(can)h(b)s(e)f(an)m
+(y)h(unquoted)e(shell)i(w)m(ord)f(that)h(do)s(es)g(not)150
+4411 y(con)m(tain)k(`)p Ft($)p Fu('.)52 b(An)m(y)34 b(redirections)g
+(\(see)h(Section)g(3.6)g([Redirections],)h(page)f(38\))g(asso)s(ciated)
+g(with)f(the)150 4520 y(shell)g(function)f(are)h(p)s(erformed)e(when)h
+(the)g(function)h(is)f(executed.)51 b(A)34 b(function)f(de\014nition)g
+(ma)m(y)i(b)s(e)150 4630 y(deleted)i(using)e(the)i Ft(-f)e
+Fu(option)i(to)f(the)h Ft(unset)d Fu(builtin)i(\(see)h(Section)g(4.1)g
+([Bourne)f(Shell)g(Builtins],)150 4739 y(page)31 b(48\).)275
+4875 y(The)26 b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g
+(zero)h(unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly)
+150 4985 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46
b(When)32 b(executed,)h(the)f(exit)h(status)g(of)f(a)g(function)150
-4393 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed)
-i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 4538 y(Note)22 b(that)f(for)f
+5095 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed)
+i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 5230 y(Note)22 b(that)f(for)f
(historical)i(reasons,)h(in)e(the)g(most)g(common)g(usage)g(the)g
-(curly)f(braces)h(that)g(surround)150 4647 y(the)38 b(b)s(o)s(dy)d(of)j
+(curly)f(braces)h(that)g(surround)150 5340 y(the)38 b(b)s(o)s(dy)d(of)j
(the)f(function)g(m)m(ust)g(b)s(e)g(separated)h(from)f(the)g(b)s(o)s
-(dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)150
-4757 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m
-(ords)g(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i
-(are)150 4866 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e
-(whitespace)h(or)g(another)g(shell)g(metac)m(haracter.)41
-b(Also,)28 b(when)150 4976 y(using)i(the)g(braces,)h(the)g
-Fr(list)i Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a)
-e(`)p Ft(&)p Fu(',)h(or)g(a)f(newline.)275 5121 y(When)i(a)i(function)f
-(is)g(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome)
-g(the)h(p)s(ositional)g(pa-)150 5230 y(rameters)42 b(during)e(its)i
+(dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)p
+eop end
+%%Page: 20 26
+TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299
+y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m(ords)g
+(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i(are)150
+408 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e(whitespace)h
+(or)g(another)g(shell)g(metac)m(haracter.)41 b(Also,)28
+b(when)150 518 y(using)i(the)g(braces,)h(the)g Fr(list)i
+Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a)e(`)p
+Ft(&)p Fu(',)h(or)g(a)f(newline.)275 669 y(When)i(a)i(function)f(is)g
+(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome)g
+(the)h(p)s(ositional)g(pa-)150 778 y(rameters)42 b(during)e(its)i
(execution)h(\(see)f(Section)g(3.4.1)h([P)m(ositional)h(P)m
-(arameters],)i(page)c(21\).)75 b(The)150 5340 y(sp)s(ecial)37
+(arameters],)i(page)c(23\).)75 b(The)150 888 y(sp)s(ecial)37
b(parameter)f(`)p Ft(#)p Fu(')g(that)h(expands)e(to)i(the)f(n)m(um)m(b)
-s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)p
-eop end
-%%Page: 19 25
-TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)150 299
-y(re\015ect)36 b(the)f(c)m(hange.)56 b(Sp)s(ecial)35
+s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)150
+998 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35
b(parameter)h Ft(0)f Fu(is)g(unc)m(hanged.)54 b(The)35
-b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 408
+b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 1107
y Fu(v)-5 b(ariable)31 b(is)g(set)f(to)i(the)e(name)h(of)f(the)h
(function)f(while)g(the)h(function)f(is)g(executing.)275
-540 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en)m
-(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g
-(and)150 650 y(its)35 b(caller)i(with)d(these)i(exceptions:)50
+1258 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en)
+m(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g
+(and)150 1367 y(its)35 b(caller)i(with)d(these)i(exceptions:)50
b(the)36 b Ft(DEBUG)d Fu(and)h Ft(RETURN)g Fu(traps)g(are)i(not)f
-(inherited)f(unless)h(the)150 759 y(function)26 b(has)g(b)s(een)f(giv)m
-(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g Ft(declare)e
-Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 869 y Fu(option)f(has)e
-(b)s(een)h(enabled)g(with)g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m
-(h)f(case)j(all)f(functions)e(inherit)h(the)g Ft(DEBUG)150
-978 y Fu(and)33 b Ft(RETURN)f Fu(traps\),)j(and)e(the)h
-Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f(unless)g(the)h
-Ft(-o)c(errtrace)h Fu(shell)j(option)150 1088 y(has)h(b)s(een)f
-(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f(Shell)g(Builtins],)i
-(page)f(44,)i(for)c(the)i(description)f(of)150 1198 y(the)c
-Ft(trap)e Fu(builtin.)275 1329 y(The)38 b Ft(FUNCNEST)f
-Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f(v)-5
-b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150
-1439 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25
+(inherited)f(unless)h(the)150 1477 y(function)26 b(has)g(b)s(een)f(giv)
+m(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g
+Ft(declare)e Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150
+1587 y Fu(option)f(has)e(b)s(een)h(enabled)g(with)g(the)g
+Ft(set)f Fu(builtin,)i(\(in)f(whic)m(h)f(case)j(all)f(functions)e
+(inherit)h(the)g Ft(DEBUG)150 1696 y Fu(and)33 b Ft(RETURN)f
+Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f
+(unless)g(the)h Ft(-o)c(errtrace)h Fu(shell)j(option)150
+1806 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f
+(Shell)g(Builtins],)i(page)f(48,)i(for)c(the)i(description)f(of)150
+1915 y(the)c Ft(trap)e Fu(builtin.)275 2066 y(The)38
+b Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)
+f(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150
+2176 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25
b(in)m(v)m(o)s(cations)i(that)e(exceed)g(the)g(limit)g(cause)g(the)g
-(en)m(tire)g(command)150 1548 y(to)31 b(ab)s(ort.)275
-1680 y(If)37 b(the)g(builtin)g(command)h Ft(return)d
+(en)m(tire)g(command)150 2285 y(to)31 b(ab)s(ort.)275
+2436 y(If)37 b(the)g(builtin)g(command)h Ft(return)d
Fu(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h
-(and)150 1789 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f
+(and)150 2545 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f
(after)i(the)f(function)f(call.)40 b(An)m(y)24 b(command)f(asso)s
-(ciated)150 1899 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed)
+(ciated)150 2655 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed)
g(b)s(efore)f(execution)i(resumes.)57 b(When)37 b(a)f(function)g
-(completes,)150 2008 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s
+(completes,)150 2765 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s
(ositional)h(parameters)f(and)g(the)g(sp)s(ecial)h(parameter)f(`)p
-Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 2118 y(v)-5
+Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 2874 y(v)-5
b(alues)26 b(they)f(had)g(prior)f(to)i(the)g(function's)f(execution.)40
b(If)25 b(a)h(n)m(umeric)f(argumen)m(t)h(is)f(giv)m(en)h(to)g
-Ft(return)p Fu(,)150 2228 y(that)j(is)g(the)f(function's)h(return)e
+Ft(return)p Fu(,)150 2984 y(that)j(is)g(the)f(function's)h(return)e
(status;)j(otherwise)f(the)f(function's)h(return)e(status)i(is)f(the)h
-(exit)h(status)150 2337 y(of)h(the)f(last)h(command)f(executed)i(b)s
-(efore)e(the)g Ft(return)p Fu(.)275 2469 y(V)-8 b(ariables)31
-b(lo)s(cal)g(to)f(the)g(function)f(ma)m(y)i(b)s(e)e(declared)h(with)f
-(the)h Ft(local)f Fu(builtin.)40 b(These)29 b(v)-5 b(ariables)150
-2578 y(are)25 b(visible)h(only)f(to)g(the)g(function)g(and)f(the)i
-(commands)e(it)i(in)m(v)m(ok)m(es.)40 b(This)24 b(is)h(particularly)h
-(imp)s(ortan)m(t)150 2688 y(when)j(a)i(shell)g(function)f(calls)h
-(other)g(functions.)275 2819 y(Lo)s(cal)41 b(v)-5 b(ariables)42
-b Ft(")p Fu(shado)m(w)p Ft(")e Fu(v)-5 b(ariables)42
-b(with)f(the)g(same)g(name)g(declared)h(at)f(previous)g(scop)s(es.)150
-2929 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5
+(exit)h(status)150 3093 y(of)h(the)f(last)h(command)f(executed)i(b)s
+(efore)e(the)g Ft(return)p Fu(.)275 3244 y(V)-8 b(ariables)29
+b(lo)s(cal)h(to)g(the)e(function)g(ma)m(y)i(b)s(e)e(declared)h(with)f
+(the)h Ft(local)e Fu(builtin)h(\()p Fr(lo)s(cal)i(v)-5
+b(ariables)t Fu(\).)150 3354 y(Ordinarily)d(,)35 b(v)-5
+b(ariables)35 b(and)f(their)g(v)-5 b(alues)35 b(are)g(shared)e(b)s(et)m
+(w)m(een)i(a)g(function)f(and)g(its)g(caller.)54 b(These)150
+3463 y(v)-5 b(ariables)30 b(are)f(visible)g(only)g(to)h(the)f(function)
+f(and)g(the)i(commands)e(it)h(in)m(v)m(ok)m(es.)42 b(This)28
+b(is)h(particularly)150 3573 y(imp)s(ortan)m(t)i(when)e(a)i(shell)f
+(function)g(calls)i(other)e(functions.)275 3724 y(In)j(the)h(follo)m
+(wing)i(description,)f(the)g Fr(curren)m(t)f(scop)s(e)39
+b Fu(is)34 b(a)h(curren)m(tly-)g(executing)g(function.)52
+b(Pre-)150 3833 y(vious)33 b(scop)s(es)g(consist)g(of)g(that)g
+(function's)g(caller)h(and)e(so)h(on,)h(bac)m(k)g(to)f(the)g
+Ft(")p Fu(global)p Ft(")h Fu(scop)s(e,)f(where)150 3943
+y(the)g(shell)g(is)g(not)g(executing)h(an)m(y)f(shell)g(function.)48
+b(Consequen)m(tly)-8 b(,)34 b(a)f(lo)s(cal)h(v)-5 b(ariable)34
+b(at)f(the)g(curren)m(t)150 4052 y(lo)s(cal)g(scop)s(e)f(is)f(a)h(v)-5
+b(ariable)33 b(declared)f(using)f(the)h Ft(local)e Fu(or)i
+Ft(declare)e Fu(builtins)h(in)g(the)h(function)f(that)150
+4162 y(is)f(curren)m(tly)h(executing.)275 4313 y(Lo)s(cal)41
+b(v)-5 b(ariables)42 b Ft(")p Fu(shado)m(w)p Ft(")e Fu(v)-5
+b(ariables)42 b(with)f(the)g(same)g(name)g(declared)h(at)f(previous)g
+(scop)s(es.)150 4422 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5
b(ariable)41 b(declared)g(in)f(a)h(function)f(hides)g(a)h(global)h(v)-5
-b(ariable)41 b(of)g(the)g(same)150 3039 y(name:)59 b(references)40
+b(ariable)41 b(of)g(the)g(same)150 4532 y(name:)59 b(references)40
b(and)f(assignmen)m(ts)h(refer)f(to)i(the)f(lo)s(cal)g(v)-5
b(ariable,)43 b(lea)m(ving)f(the)d(global)i(v)-5 b(ariable)150
-3148 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the)
+4641 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the)
g(global)i(v)-5 b(ariable)31 b(is)g(once)g(again)g(visible.)275
-3280 y(The)f(shell)h(uses)g Fr(dynamic)g(scoping)39 b
+4792 y(The)f(shell)h(uses)g Fr(dynamic)g(scoping)39 b
Fu(to)32 b(con)m(trol)g(a)f(v)-5 b(ariable's)32 b(visibilit)m(y)h
-(within)d(functions.)42 b(With)150 3389 y(dynamic)31
+(within)d(functions.)42 b(With)150 4902 y(dynamic)31
b(scoping,)i(visible)e(v)-5 b(ariables)32 b(and)f(their)h(v)-5
b(alues)32 b(are)f(a)h(result)g(of)f(the)h(sequence)g(of)f(function)150
-3499 y(calls)37 b(that)g(caused)g(execution)g(to)g(reac)m(h)g(the)g
+5011 y(calls)37 b(that)g(caused)g(execution)g(to)g(reac)m(h)g(the)g
(curren)m(t)f(function.)58 b(The)36 b(v)-5 b(alue)36
-b(of)h(a)g(v)-5 b(ariable)37 b(that)g(a)150 3608 y(function)24
+b(of)h(a)g(v)-5 b(ariable)37 b(that)g(a)150 5121 y(function)24
b(sees)g(dep)s(ends)f(on)h(its)g(v)-5 b(alue)25 b(within)e(its)i
(caller,)i(if)d(an)m(y)-8 b(,)26 b(whether)e(that)g(caller)i(is)e(the)g
-Ft(")p Fu(global)p Ft(")150 3718 y Fu(scop)s(e)41 b(or)g(another)g
+Ft(")p Fu(global)p Ft(")150 5230 y Fu(scop)s(e)41 b(or)g(another)g
(shell)g(function.)73 b(This)40 b(is)h(also)h(the)f(v)-5
b(alue)41 b(that)h(a)f(lo)s(cal)i(v)-5 b(ariable)41 b(declaration)150
-3828 y Ft(")p Fu(shado)m(ws)p Ft(")p Fu(,)30 b(and)g(the)g(v)-5
-b(alue)31 b(that)g(is)f(restored)h(when)e(the)i(function)f(returns.)275
-3959 y(F)-8 b(or)41 b(example,)j(if)d(a)g(v)-5 b(ariable)41
-b Fr(v)-5 b(ar)48 b Fu(is)40 b(declared)h(as)g(lo)s(cal)h(in)f
-(function)f Fr(func1)p Fu(,)j(and)d Fr(func1)48 b Fu(calls)150
-4069 y(another)33 b(function)g Fr(func2)p Fu(,)g(references)g(to)h
-Fr(v)-5 b(ar)39 b Fu(made)33 b(from)f(within)h Fr(func2)39
-b Fu(will)34 b(resolv)m(e)g(to)g(the)f(lo)s(cal)150 4178
-y(v)-5 b(ariable)31 b Fr(v)-5 b(ar)37 b Fu(from)30 b
-Fr(func1)p Fu(,)g(shado)m(wing)h(an)m(y)f(global)i(v)-5
-b(ariable)31 b(named)f Fr(v)-5 b(ar)p Fu(.)275 4310 y(The)29
-b(follo)m(wing)j(script)f(demonstrates)f(this)h(b)s(eha)m(vior.)40
-b(When)31 b(executed,)g(the)g(script)f(displa)m(ys)390
-4441 y Ft(In)47 b(func2,)f(var)h(=)h(func1)e(local)390
-4573 y(func1\(\))390 4682 y({)581 4792 y(local)g(var='func1)f(local')
-581 4902 y(func2)390 5011 y(})390 5230 y(func2\(\))390
-5340 y({)p eop end
-%%Page: 20 26
-TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)581 299
-y Ft(echo)47 b("In)f(func2,)h(var)f(=)i($var")390 408
-y(})390 628 y(var=global)390 737 y(func1)275 878 y Fu(The)32
-b Ft(unset)g Fu(builtin)g(also)i(acts)g(using)e(the)i(same)f(dynamic)g
-(scop)s(e:)46 b(if)33 b(a)g(v)-5 b(ariable)34 b(is)f(lo)s(cal)h(to)g
-(the)150 987 y(curren)m(t)i(scop)s(e,)h Ft(unset)e Fu(will)h(unset)g
-(it;)j(otherwise)e(the)f(unset)f(will)h(refer)g(to)h(the)f(v)-5
-b(ariable)37 b(found)d(in)150 1097 y(an)m(y)j(calling)h(scop)s(e)f(as)g
-(describ)s(ed)f(ab)s(o)m(v)m(e.)61 b(If)36 b(a)h(v)-5
-b(ariable)38 b(at)f(the)g(curren)m(t)g(lo)s(cal)h(scop)s(e)e(is)h
-(unset,)h(it)150 1207 y(will)27 b(remain)h(so)f(un)m(til)g(it)h(is)f
-(reset)h(in)f(that)g(scop)s(e)h(or)f(un)m(til)g(the)h(function)e
-(returns.)39 b(Once)27 b(the)g(function)150 1316 y(returns,)34
-b(an)m(y)h(instance)g(of)f(the)g(v)-5 b(ariable)35 b(at)g(a)g(previous)
-e(scop)s(e)i(will)f(b)s(ecome)h(visible.)52 b(If)34 b(the)g(unset)150
-1426 y(acts)e(on)f(a)h(v)-5 b(ariable)32 b(at)g(a)f(previous)g(scop)s
-(e,)h(an)m(y)f(instance)h(of)f(a)h(v)-5 b(ariable)32
-b(with)f(that)h(name)f(that)h(had)150 1535 y(b)s(een)e(shado)m(w)m(ed)g
-(will)h(b)s(ecome)g(visible.)275 1676 y(F)-8 b(unction)51
-b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h
-Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 1786 y
-Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g(command)h(\(see)h(Section)g
-(4.2)g([Bash)f(Builtins],)i(page)f(51\).)59 b(The)35
-b Ft(-F)h Fu(option)g(to)150 1895 y Ft(declare)e Fu(or)i
-Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g(\(and)g
-(optionally)h(the)f(source)g(\014le)h(and)150 2005 y(line)c(n)m(um)m(b)
-s(er,)g(if)f(the)h Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled\).)49
-b(F)-8 b(unctions)33 b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150
-2114 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f
-(with)h(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d
-Fu(builtin)i(\(see)150 2224 y(Section)31 b(4.1)h([Bourne)e(Shell)g
-(Builtins],)h(page)h(44\).)275 2365 y(F)-8 b(unctions)33
-b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 b(The)32 b Ft(FUNCNEST)f
-Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g(to)i(limit)g(the)f
-(depth)f(of)150 2474 y(the)27 b(function)f(call)i(stac)m(k)h(and)d
-(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f(in)m(v)m(o)s
-(cations.)42 b(By)27 b(default,)g(no)g(limit)150 2584
-y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f
-(calls.)150 2834 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150
-2993 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that)
-f(stores)g(v)-5 b(alues.)39 b(It)23 b(can)h(b)s(e)f(a)g
-Ft(name)p Fu(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s
-(ecial)150 3103 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39
-b(A)23 b Fr(v)-5 b(ariable)30 b Fu(is)23 b(a)g(parameter)h(denoted)f(b)
-m(y)h(a)f Ft(name)p Fu(.)37 b(A)24 b(v)-5 b(ariable)24
-b(has)f(a)g Fr(v)-5 b(alue)150 3212 y Fu(and)33 b(zero)i(or)f(more)g
-Fr(attributes)p Fu(.)52 b(A)m(ttributes)35 b(are)f(assigned)g(using)g
-(the)g Ft(declare)e Fu(builtin)h(command)150 3322 y(\(see)e(the)g
-(description)f(of)h(the)f Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2)
-g([Bash)g(Builtins],)g(page)g(51\).)275 3462 y(A)d(parameter)h(is)g
-(set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g(v)-5
-b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5
-b(alid)28 b(v)-5 b(alue.)41 b(Once)150 3572 y(a)31 b(v)-5
-b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f
-(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 3713
-y(A)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e(a)h
-(statemen)m(t)h(of)e(the)h(form)390 3853 y Fj(name)p
-Ft(=[)p Fj(value)p Ft(])150 3994 y Fu(If)j Fr(v)-5 b(alue)40
-b Fu(is)35 b(not)g(giv)m(en,)h(the)f(v)-5 b(ariable)35
-b(is)g(assigned)g(the)f(n)m(ull)h(string.)53 b(All)35
-b Fr(v)-5 b(alue)5 b Fu(s)35 b(undergo)f(tilde)h(ex-)150
-4103 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36
-b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150
-4213 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).)
-72 b(If)40 b(the)h(v)-5 b(ariable)41 b(has)g(its)g Ft(integer)e
-Fu(attribute)i(set,)j(then)150 4323 y Fr(v)-5 b(alue)38
-b Fu(is)33 b(ev)-5 b(aluated)34 b(as)f(an)g(arithmetic)h(expression)f
-(ev)m(en)h(if)e(the)h Ft($\(\(...)o(\)\))f Fu(expansion)h(is)g(not)g
-(used)150 4432 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f
-(page)h(31\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s
-(erformed,)f(with)150 4542 y(the)35 b(exception)h(of)f
-Ft("$@")f Fu(as)h(explained)g(b)s(elo)m(w.)54 b(Filename)36
-b(expansion)f(is)g(not)g(p)s(erformed.)53 b(Assign-)150
-4651 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s(ear)f(as)g
-(argumen)m(ts)h(to)g(the)g Ft(alias)p Fu(,)e Ft(declare)p
-Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 4761
-y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g(\()p
-Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f Fm(posix)f
-Fu(mo)s(de)150 4871 y(\(see)29 b(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s
-(de],)j(page)f(101\),)h(these)f(builtins)f(ma)m(y)h(app)s(ear)f(in)g(a)
-h(command)150 4980 y(after)34 b(one)g(or)f(more)h(instances)g(of)f(the)
-h Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g
-(statemen)m(t)150 5090 y(prop)s(erties.)275 5230 y(In)29
-b(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h(is)e
-(assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5
-b(ariable)31 b(or)150 5340 y(arra)m(y)24 b(index)f(\(see)h(Section)g
-(6.7)g([Arra)m(ys],)i(page)e(95\),)i(the)e(`)p Ft(+=)p
-Fu(')f(op)s(erator)g(can)h(b)s(e)f(used)f(to)i(app)s(end)e(to)i(or)p
+5340 y Ft(")p Fu(shado)m(ws)p Ft(")p Fu(,)30 b(and)g(the)g(v)-5
+b(alue)31 b(that)g(is)f(restored)h(when)e(the)i(function)f(returns.)p
eop end
%%Page: 21 27
TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299
-y(add)28 b(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5
-b(alue.)41 b(This)28 b(includes)g(argumen)m(ts)i(to)f(builtin)g
-(commands)f(suc)m(h)h(as)150 408 y Ft(declare)e Fu(that)i(accept)h
-(assignmen)m(t)f(statemen)m(ts)h(\()p Fr(declaration)h
-Fu(commands\).)40 b(When)28 b(`)p Ft(+=)p Fu(')h(is)f(applied)150
-518 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h
-Fr(in)m(teger)32 b Fu(attribute)24 b(has)g(b)s(een)f(set,)j
-Fr(v)-5 b(alue)29 b Fu(is)24 b(ev)-5 b(aluated)25 b(as)f(an)g
-(arithmetic)150 628 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5
-b(ariable's)30 b(curren)m(t)g(v)-5 b(alue,)31 b(whic)m(h)e(is)h(also)h
-(ev)-5 b(aluated.)42 b(When)29 b(`)p Ft(+=)p Fu(')h(is)150
-737 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26
-b(using)f(comp)s(ound)f(assignmen)m(t)i(\(see)g(Section)g(6.7)g([Arra)m
-(ys],)h(page)f(95\),)150 847 y(the)33 b(v)-5 b(ariable's)33
-b(v)-5 b(alue)33 b(is)g(not)g(unset)f(\(as)h(it)g(is)g(when)e(using)i
-(`)p Ft(=)p Fu('\),)g(and)f(new)g(v)-5 b(alues)33 b(are)g(app)s(ended)e
-(to)150 956 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h
-(than)f(the)g(arra)m(y's)h(maxim)m(um)f(index)f(\(for)i(indexed)e(arra)
-m(ys\),)j(or)150 1066 y(added)c(as)i(additional)g(k)m(ey-v)-5
-b(alue)26 b(pairs)f(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8
-b(.)40 b(When)24 b(applied)h(to)h(a)g(string-v)-5 b(alued)150
-1176 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31
-b(expanded)e(and)h(app)s(ended)f(to)i(the)f(v)-5 b(ariable's)32
-b(v)-5 b(alue.)275 1319 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f
-(assigned)i(the)f Fr(nameref)45 b Fu(attribute)29 b(using)f(the)g
-Ft(-n)f Fu(option)i(to)g(the)f Ft(declare)e Fu(or)150
-1428 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h
-([Bash)f(Builtins],)h(page)f(51\))h(to)f(create)i(a)e
-Fr(nameref)p Fu(,)g(or)g(a)150 1538 y(reference)f(to)g(another)f(v)-5
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)275 299
+y(F)-8 b(or)38 b(example,)h(if)f(a)f(v)-5 b(ariable)38
+b Ft(var)f Fu(is)g(declared)h(as)f(lo)s(cal)i(in)e(function)g
+Ft(func1)p Fu(,)g(and)g Ft(func1)f Fu(calls)150 408 y(another)29
+b(function)g Ft(func2)p Fu(,)f(references)i(to)f Ft(var)g
+Fu(made)g(from)f(within)h Ft(func2)f Fu(will)h(resolv)m(e)i(to)e(the)h
+(lo)s(cal)150 518 y(v)-5 b(ariable)31 b Ft(var)f Fu(from)g
+Ft(func1)p Fu(,)f(shado)m(wing)h(an)m(y)h(global)h(v)-5
+b(ariable)31 b(named)f Ft(var)p Fu(.)275 650 y(The)f(follo)m(wing)j
+(script)f(demonstrates)f(this)h(b)s(eha)m(vior.)40 b(When)31
+b(executed,)g(the)g(script)f(displa)m(ys)390 781 y Ft(In)47
+b(func2,)f(var)h(=)h(func1)e(local)390 913 y(func1\(\))390
+1022 y({)581 1132 y(local)g(var='func1)f(local')581 1241
+y(func2)390 1351 y(})390 1570 y(func2\(\))390 1680 y({)581
+1789 y(echo)i("In)f(func2,)h(var)f(=)i($var")390 1899
+y(})390 2118 y(var=global)390 2228 y(func1)275 2359 y
+Fu(The)32 b Ft(unset)g Fu(builtin)g(also)i(acts)g(using)e(the)i(same)f
+(dynamic)g(scop)s(e:)46 b(if)33 b(a)g(v)-5 b(ariable)34
+b(is)f(lo)s(cal)h(to)g(the)150 2469 y(curren)m(t)i(scop)s(e,)h
+Ft(unset)e Fu(will)h(unset)g(it;)j(otherwise)e(the)f(unset)f(will)h
+(refer)g(to)h(the)f(v)-5 b(ariable)37 b(found)d(in)150
+2578 y(an)m(y)27 b(calling)i(scop)s(e)e(as)g(describ)s(ed)f(ab)s(o)m(v)
+m(e.)41 b(If)26 b(a)h(v)-5 b(ariable)28 b(at)g(the)f(curren)m(t)g(lo)s
+(cal)h(scop)s(e)f(is)g(unset,)g(it)h(will)150 2688 y(remain)k(so)g
+(\(app)s(earing)g(as)h(unset\))e(un)m(til)i(it)f(is)g(reset)h(in)f
+(that)g(scop)s(e)h(or)f(un)m(til)g(the)g(function)g(returns.)150
+2798 y(Once)39 b(the)h(function)f(returns,)h(an)m(y)g(instance)g(of)f
+(the)h(v)-5 b(ariable)40 b(at)g(a)g(previous)f(scop)s(e)g(will)h(b)s
+(ecome)150 2907 y(visible.)k(If)31 b(the)h(unset)f(acts)h(on)g(a)g(v)-5
+b(ariable)32 b(at)g(a)g(previous)f(scop)s(e,)h(an)m(y)f(instance)i(of)e
+(a)h(v)-5 b(ariable)32 b(with)150 3017 y(that)23 b(name)g(that)h(had)e
+(b)s(een)g(shado)m(w)m(ed)h(will)g(b)s(ecome)h(visible)f(\(see)h(b)s
+(elo)m(w)f(ho)m(w)g Ft(localvar_unset)p Fu(shell)150
+3126 y(option)31 b(c)m(hanges)g(this)f(b)s(eha)m(vior\).)275
+3258 y(F)-8 b(unction)51 b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s
+(e)e(listed)h(with)f(the)h Ft(-f)f Fu(option)h(to)g(the)g
+Ft(declare)150 3368 y Fu(\()p Ft(typeset)p Fu(\))43 b(builtin)h
+(command)g(\(see)h(Section)g(4.2)g([Bash)g(Builtins],)j(page)d(55\).)83
+b(The)44 b Ft(-F)f Fu(option)150 3477 y(to)e Ft(declare)e
+Fu(or)i Ft(typeset)e Fu(will)i(list)g(the)g(function)f(names)h(only)g
+(\(and)f(optionally)i(the)f(source)g(\014le)150 3587
+y(and)g(line)h(n)m(um)m(b)s(er,)h(if)f(the)g Ft(extdebug)d
+Fu(shell)j(option)g(is)g(enabled\).)75 b(F)-8 b(unctions)42
+b(ma)m(y)g(b)s(e)f(exp)s(orted)150 3696 y(so)i(that)g(c)m(hild)g(shell)
+g(pro)s(cesses)g(\(those)g(created)h(when)e(executing)i(a)f(separate)h
+(shell)f(in)m(v)m(o)s(cation\))150 3806 y(automatically)34
+b(ha)m(v)m(e)e(them)e(de\014ned)g(with)g(the)h Ft(-f)f
+Fu(option)i(to)f(the)g Ft(export)e Fu(builtin)i(\(see)g(Section)h(4.1)
+150 3916 y([Bourne)e(Shell)h(Builtins],)g(page)g(48\).)275
+4047 y(F)-8 b(unctions)33 b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48
+b(The)32 b Ft(FUNCNEST)f Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g
+(to)i(limit)g(the)f(depth)f(of)150 4157 y(the)27 b(function)f(call)i
+(stac)m(k)h(and)d(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f
+(in)m(v)m(o)s(cations.)42 b(By)27 b(default,)g(no)g(limit)150
+4266 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f
+(calls.)150 4501 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150
+4660 y Fu(A)39 b Fr(parameter)45 b Fu(is)39 b(an)g(en)m(tit)m(y)h(that)
+f(stores)g(v)-5 b(alues.)66 b(It)39 b(can)g(b)s(e)f(a)h
+Ft(name)p Fu(,)h(a)f(n)m(um)m(b)s(er,)g(or)g(one)g(of)g(the)150
+4770 y(sp)s(ecial)c(c)m(haracters)h(listed)g(b)s(elo)m(w.)53
+b(A)35 b Fr(v)-5 b(ariable)41 b Fu(is)34 b(a)h(parameter)h(denoted)e(b)
+m(y)h(a)g Ft(name)p Fu(.)52 b(A)35 b(v)-5 b(ariable)150
+4880 y(has)41 b(a)h Ft(value)d Fu(and)i(zero)h(or)f(more)g
+Ft(attributes)p Fu(.)71 b(A)m(ttributes)42 b(are)f(assigned)h(using)f
+(the)g Ft(declare)150 4989 y Fu(builtin)29 b(command)g(\(see)h(the)g
+(description)f(of)g(the)h Ft(declare)d Fu(builtin)i(in)g(Section)h(4.2)
+g([Bash)g(Builtins],)150 5099 y(page)h(55\).)275 5230
+y(A)d(parameter)h(is)g(set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g
+(v)-5 b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5
+b(alid)28 b(v)-5 b(alue.)41 b(Once)150 5340 y(a)31 b(v)-5
+b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f
+(using)g(the)g Ft(unset)f Fu(builtin)h(command.)p eop
+end
+%%Page: 22 28
+TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)275 299
+y(A)30 b(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e
+(a)h(statemen)m(t)h(of)e(the)h(form)390 471 y Fj(name)p
+Ft(=[)p Fj(value)p Ft(])150 643 y Fu(If)43 b Fr(v)-5
+b(alue)49 b Fu(is)43 b(not)h(giv)m(en,)k(the)c(v)-5 b(ariable)44
+b(is)f(assigned)h(the)f(n)m(ull)h(string.)80 b(All)44
+b Fr(v)-5 b(alue)5 b Fu(s)43 b(undergo)g(tilde)150 753
+y(expansion,)25 b(parameter)f(and)f(v)-5 b(ariable)25
+b(expansion,)g(command)e(substitution,)i(arithmetic)g(expansion,)150
+862 y(and)i(quote)i(remo)m(v)-5 b(al)29 b(\(see)g(Section)f(3.5.3)i
+([Shell)e(P)m(arameter)h(Expansion],)f(page)h(26\).)41
+b(If)27 b(the)h(v)-5 b(ariable)150 972 y(has)35 b(its)h
+Ft(integer)e Fu(attribute)i(set,)i(then)d Fr(v)-5 b(alue)42
+b Fu(is)35 b(ev)-5 b(aluated)37 b(as)f(an)f(arithmetic)i(expression)f
+(ev)m(en)g(if)150 1082 y(the)i Ft($\(\(...)n(\)\))f Fu(expansion)g(is)g
+(not)h(used)e(\(see)j(Section)f(3.5.5)h([Arithmetic)f(Expansion],)h
+(page)f(34\).)150 1191 y(W)-8 b(ord)26 b(splitting)h(and)e(\014lename)h
+(expansion)g(are)g(not)h(p)s(erformed.)37 b(Assignmen)m(t)27
+b(statemen)m(ts)g(ma)m(y)g(also)150 1301 y(app)s(ear)22
+b(as)h(argumen)m(ts)g(to)h(the)f Ft(alias)p Fu(,)g Ft(declare)p
+Fu(,)f Ft(typeset)p Fu(,)h Ft(export)p Fu(,)g Ft(readonly)p
+Fu(,)f(and)g Ft(local)f Fu(builtin)150 1410 y(commands)31
+b(\()p Fr(declaration)j Fu(commands\).)44 b(When)32 b(in)f
+Fm(posix)g Fu(mo)s(de)g(\(see)h(Section)h(6.11)g([Bash)f(POSIX)150
+1520 y(Mo)s(de],)h(page)f(106\),)i(these)e(builtins)f(ma)m(y)h(app)s
+(ear)f(in)g(a)h(command)f(after)h(one)g(or)g(more)g(instances)g(of)150
+1630 y(the)f Ft(command)d Fu(builtin)i(and)g(retain)h(these)f
+(assignmen)m(t)i(statemen)m(t)g(prop)s(erties.)275 1802
+y(In)d(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h
+(is)e(assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5
+b(ariable)31 b(or)150 1911 y(arra)m(y)k(index)f(\(see)h(Section)g(6.7)g
+([Arra)m(ys],)h(page)f(100\),)i(the)e(`)p Ft(+=)p Fu(')f(op)s(erator)g
+(can)h(b)s(e)e(used)h(to)h(app)s(end)150 2021 y(to)h(or)g(add)e(to)j
+(the)e(v)-5 b(ariable's)36 b(previous)f(v)-5 b(alue.)57
+b(This)34 b(includes)h(argumen)m(ts)h(to)g(builtin)f(commands)150
+2131 y(suc)m(h)29 b(as)g Ft(declare)e Fu(that)i(accept)h(assignmen)m(t)
+g(statemen)m(ts)h(\(declaration)f(commands\).)41 b(When)28
+b(`)p Ft(+=)p Fu(')h(is)150 2240 y(applied)36 b(to)h(a)f(v)-5
+b(ariable)37 b(for)f(whic)m(h)f(the)i Ft(integer)d Fu(attribute)i(has)g
+(b)s(een)g(set,)i Fr(v)-5 b(alue)41 b Fu(is)36 b(ev)-5
+b(aluated)38 b(as)150 2350 y(an)28 b(arithmetic)h(expression)f(and)f
+(added)h(to)h(the)f(v)-5 b(ariable's)29 b(curren)m(t)e(v)-5
+b(alue,)30 b(whic)m(h)d(is)i(also)f(ev)-5 b(aluated.)150
+2459 y(When)43 b(`)p Ft(+=)p Fu(')g(is)h(applied)f(to)h(an)f(arra)m(y)h
+(v)-5 b(ariable)44 b(using)f(comp)s(ound)e(assignmen)m(t)j(\(see)h
+(Section)f(6.7)150 2569 y([Arra)m(ys],)g(page)d(100\),)k(the)c(v)-5
+b(ariable's)42 b(v)-5 b(alue)41 b(is)g(not)f(unset)h(\(as)g(it)g(is)g
+(when)e(using)h(`)p Ft(=)p Fu('\),)k(and)c(new)150 2679
+y(v)-5 b(alues)27 b(are)g(app)s(ended)f(to)h(the)g(arra)m(y)h(b)s
+(eginning)e(at)h(one)g(greater)i(than)d(the)h(arra)m(y's)h(maxim)m(um)e
+(index)150 2788 y(\(for)32 b(indexed)g(arra)m(ys\),)i(or)e(added)f(as)i
+(additional)g(k)m(ey-v)-5 b(alue)34 b(pairs)d(in)h(an)g(asso)s(ciativ)m
+(e)j(arra)m(y)-8 b(.)47 b(When)150 2898 y(applied)27
+b(to)h(a)f(string-v)-5 b(alued)28 b(v)-5 b(ariable,)29
+b Fr(v)-5 b(alue)32 b Fu(is)c(expanded)e(and)h(app)s(ended)e(to)j(the)f
+(v)-5 b(ariable's)28 b(v)-5 b(alue.)275 3070 y(A)28 b(v)-5
+b(ariable)28 b(can)h(b)s(e)e(assigned)h(the)h Ft(nameref)d
+Fu(attribute)i(using)g(the)g Ft(-n)f Fu(option)i(to)g(the)f
+Ft(declare)e Fu(or)150 3180 y Ft(local)f Fu(builtin)h(commands)g(\(see)
+i(Section)f(4.2)h([Bash)f(Builtins],)h(page)f(55\))h(to)f(create)i(a)e
+Fr(nameref)p Fu(,)g(or)g(a)150 3289 y(reference)f(to)g(another)f(v)-5
b(ariable.)40 b(This)24 b(allo)m(ws)j(v)-5 b(ariables)26
b(to)g(b)s(e)e(manipulated)h(indirectly)-8 b(.)40 b(Whenev)m(er)150
-1647 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g
+3399 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g
(assigned)h(to,)g(unset,)f(or)g(has)f(its)i(attributes)f(mo)s(di\014ed)
-f(\(other)150 1757 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f
+f(\(other)150 3508 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f
(attribute)i(itself)7 b(\),)29 b(the)d(op)s(eration)h(is)g(actually)h
-(p)s(erformed)d(on)150 1867 y(the)31 b(v)-5 b(ariable)31
+(p)s(erformed)d(on)150 3618 y(the)31 b(v)-5 b(ariable)31
b(sp)s(eci\014ed)f(b)m(y)g(the)h(nameref)f(v)-5 b(ariable's)31
b(v)-5 b(alue.)42 b(A)30 b(nameref)g(is)h(commonly)g(used)e(within)150
-1976 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5
+3727 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5
b(ariable)31 b(whose)f(name)h(is)f(passed)g(as)g(an)g(argumen)m(t)h(to)
-g(the)f(function.)150 2086 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5
+g(the)f(function.)150 3837 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5
b(ariable)31 b(name)f(is)h(passed)e(to)j(a)e(shell)h(function)f(as)h
-(its)f(\014rst)g(argumen)m(t,)h(running)390 2229 y Ft(declare)46
-b(-n)h(ref=$1)150 2372 y Fu(inside)31 b(the)h(function)f(creates)i(a)g
-(nameref)e(v)-5 b(ariable)32 b Fr(ref)49 b Fu(whose)32
-b(v)-5 b(alue)32 b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150
-2481 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30
-b(and)e(assignmen)m(ts)i(to)g Fr(ref)p Fu(,)f(and)g(c)m(hanges)h(to)g
-(its)f(attributes,)i(are)150 2591 y(treated)g(as)f(references,)g
+(its)f(\014rst)g(argumen)m(t,)h(running)390 4009 y Ft(declare)46
+b(-n)h(ref=$1)150 4181 y Fu(inside)30 b(the)g(function)g(creates)h(a)g
+(nameref)f(v)-5 b(ariable)30 b Ft(ref)g Fu(whose)g(v)-5
+b(alue)30 b(is)g(the)g(v)-5 b(ariable)31 b(name)f(passed)150
+4291 y(as)c(the)h(\014rst)e(argumen)m(t.)40 b(References)26
+b(and)g(assignmen)m(ts)h(to)g Ft(ref)p Fu(,)f(and)f(c)m(hanges)i(to)g
+(its)g(attributes,)h(are)150 4401 y(treated)j(as)f(references,)g
(assignmen)m(ts,)h(and)e(attribute)i(mo)s(di\014cations)f(to)h(the)f(v)
--5 b(ariable)30 b(whose)g(name)150 2701 y(w)m(as)h(passed)f(as)g
-Ft($1)p Fu(.)275 2844 y(If)h(the)g(con)m(trol)i(v)-5
+-5 b(ariable)30 b(whose)g(name)150 4510 y(w)m(as)h(passed)f(as)g
+Ft($1)p Fu(.)275 4682 y(If)h(the)g(con)m(trol)i(v)-5
b(ariable)32 b(in)g(a)f Ft(for)g Fu(lo)s(op)h(has)f(the)g(nameref)h
(attribute,)g(the)g(list)g(of)g(w)m(ords)f(can)h(b)s(e)150
-2953 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f
+4792 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f
(reference)g(will)g(b)s(e)f(established)h(for)g(eac)m(h)h(w)m(ord)e(in)
-h(the)g(list,)150 3063 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g
+h(the)g(list,)150 4902 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g
(executed.)41 b(Arra)m(y)30 b(v)-5 b(ariables)30 b(cannot)h(b)s(e)e
-(giv)m(en)h(the)g(nameref)g(attribute.)150 3172 y(Ho)m(w)m(ev)m(er,)39
+(giv)m(en)h(the)g(nameref)g(attribute.)150 5011 y(Ho)m(w)m(ev)m(er,)39
b(nameref)d(v)-5 b(ariables)36 b(can)g(reference)g(arra)m(y)g(v)-5
b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)150
-3282 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h
+5121 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h
Ft(-n)e Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section)
-g(4.1)h([Bourne)150 3392 y(Shell)43 b(Builtins],)j(page)e(44\).)79
+g(4.1)h([Bourne)150 5230 y(Shell)43 b(Builtins],)j(page)e(48\).)79
b(Otherwise,)45 b(if)e Ft(unset)e Fu(is)i(executed)h(with)e(the)h(name)
-g(of)g(a)g(nameref)150 3501 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m
+g(of)g(a)g(nameref)150 5340 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m
(t,)h(the)g(v)-5 b(ariable)31 b(referenced)f(b)m(y)g(the)h(nameref)f(v)
--5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 3709 y Fk(3.4.1)63
-b(P)m(ositional)41 b(P)m(arameters)150 3856 y Fu(A)28
-b Fr(p)s(ositional)h(parameter)35 b Fu(is)28 b(a)g(parameter)g(denoted)
-g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g(than)e(the)h(single)150
-3965 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are)
-g(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in)
-m(v)m(ok)m(ed,)150 4075 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using)
-e(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41
-b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 4185 y(referenced)34
+-5 b(ariable)31 b(will)g(b)s(e)f(unset.)p eop end
+%%Page: 23 29
+TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)150 299
+y Fk(3.4.1)63 b(P)m(ositional)41 b(P)m(arameters)150
+446 y Fu(A)28 b Fr(p)s(ositional)h(parameter)35 b Fu(is)28
+b(a)g(parameter)g(denoted)g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g
+(than)e(the)h(single)150 555 y(digit)34 b Ft(0)p Fu(.)48
+b(P)m(ositional)36 b(parameters)d(are)g(assigned)h(from)e(the)i
+(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in)m(v)m(ok)m(ed,)150
+665 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using)e(the)h
+Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41
+b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 775 y(referenced)34
b(as)h Ft(${N})p Fu(,)g(or)f(as)h Ft($N)e Fu(when)h Ft(N)g
Fu(consists)h(of)f(a)h(single)g(digit.)54 b(P)m(ositional)37
-b(parameters)d(ma)m(y)150 4294 y(not)j(b)s(e)f(assigned)h(to)g(with)f
+b(parameters)d(ma)m(y)150 884 y(not)j(b)s(e)f(assigned)h(to)g(with)f
(assignmen)m(t)i(statemen)m(ts.)61 b(The)36 b Ft(set)g
Fu(and)g Ft(shift)f Fu(builtins)h(are)h(used)f(to)150
-4404 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h
-(Builtin)g(Commands],)h(page)f(44\).)68 b(The)39 b(p)s(ositional)150
-4513 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h
+994 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h
+(Builtin)g(Commands],)h(page)f(48\).)68 b(The)39 b(p)s(ositional)150
+1103 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h
(shell)g(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150
-4623 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(18\).)275
-4766 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f
+1213 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(19\).)275
+1344 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f
(than)g(a)g(single)h(digit)g(is)f(expanded,)g(it)h(m)m(ust)150
-4876 y(b)s(e)h(enclosed)h(in)f(braces.)150 5083 y Fk(3.4.2)63
-b(Sp)s(ecial)41 b(P)m(arameters)150 5230 y Fu(The)d(shell)g(treats)h
+1454 y(b)s(e)h(enclosed)h(in)f(braces.)150 1646 y Fk(3.4.2)63
+b(Sp)s(ecial)41 b(P)m(arameters)150 1793 y Fu(The)d(shell)g(treats)h
(sev)m(eral)g(parameters)f(sp)s(ecially)-8 b(.)65 b(These)38
b(parameters)h(ma)m(y)f(only)g(b)s(e)g(referenced;)150
-5340 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)p
-eop end
-%%Page: 22 28
-TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299
-y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h
+1903 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150
+2056 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h
(parameters,)h(starting)f(from)f(one.)59 b(When)36 b(the)g(ex-)630
-408 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s
-(ositional)f(parameter)g(expands)f(to)i(a)630 518 y(separate)23
+2165 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s
+(ositional)f(parameter)g(expands)f(to)i(a)630 2275 y(separate)23
b(w)m(ord.)38 b(In)21 b(con)m(texts)j(where)e(it)g(is)h(p)s(erformed,)f
(those)h(w)m(ords)e(are)i(sub)5 b(ject)22 b(to)h(fur-)630
-628 y(ther)k(w)m(ord)g(splitting)i(and)e(\014lename)g(expansion.)40
+2384 y(ther)k(w)m(ord)g(splitting)i(and)e(\014lename)g(expansion.)40
b(When)27 b(the)h(expansion)f(o)s(ccurs)g(within)630
-737 y(double)37 b(quotes,)k(it)d(expands)f(to)h(a)g(single)h(w)m(ord)e
+2494 y(double)37 b(quotes,)k(it)d(expands)f(to)h(a)g(single)h(w)m(ord)e
(with)h(the)f(v)-5 b(alue)39 b(of)f(eac)m(h)g(parameter)630
-847 y(separated)g(b)m(y)g(the)f(\014rst)g(c)m(haracter)i(of)f(the)g
+2604 y(separated)g(b)m(y)g(the)f(\014rst)g(c)m(haracter)i(of)f(the)g
Ft(IFS)f Fu(sp)s(ecial)h(v)-5 b(ariable.)63 b(That)38
-b(is,)h Ft("$*")e Fu(is)630 956 y(equiv)-5 b(alen)m(t)39
+b(is,)h Ft("$*")e Fu(is)630 2713 y(equiv)-5 b(alen)m(t)39
b(to)g Ft("$1)p Fj(c)p Ft($2)p Fj(c)p Ft(...)m(")p Fu(,)h(where)d
Fr(c)44 b Fu(is)38 b(the)g(\014rst)g(c)m(haracter)h(of)f(the)g(v)-5
-b(alue)39 b(of)f(the)630 1066 y Ft(IFS)29 b Fu(v)-5 b(ariable.)41
+b(alue)39 b(of)f(the)630 2823 y Ft(IFS)29 b Fu(v)-5 b(ariable.)41
b(If)29 b Ft(IFS)g Fu(is)h(unset,)f(the)h(parameters)g(are)g(separated)
-g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 1176
+g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 2932
y(n)m(ull,)i(the)f(parameters)h(are)g(joined)f(without)g(in)m(terv)m
-(ening)i(separators.)150 1334 y Ft(@)432 b Fu(\($@\))43
+(ening)i(separators.)150 3085 y Ft(@)432 b Fu(\($@\))43
b(Expands)f(to)h(the)g(p)s(ositional)g(parameters,)k(starting)c(from)f
-(one.)78 b(In)42 b(con)m(texts)630 1444 y(where)35 b(w)m(ord)h
+(one.)78 b(In)42 b(con)m(texts)630 3195 y(where)35 b(w)m(ord)h
(splitting)g(is)g(p)s(erformed,)g(this)g(expands)e(eac)m(h)j(p)s
-(ositional)g(parameter)f(to)630 1553 y(a)d(separate)h(w)m(ord;)g(if)f
+(ositional)g(parameter)f(to)630 3304 y(a)d(separate)h(w)m(ord;)g(if)f
(not)g(within)g(double)f(quotes,)j(these)e(w)m(ords)g(are)g(sub)5
-b(ject)33 b(to)g(w)m(ord)630 1663 y(splitting.)60 b(In)36
+b(ject)33 b(to)g(w)m(ord)630 3414 y(splitting.)60 b(In)36
b(con)m(texts)j(where)d(w)m(ord)g(splitting)h(is)g(not)g(p)s(erformed,)
-g(this)f(expands)g(to)630 1773 y(a)c(single)h(w)m(ord)e(with)h(eac)m(h)
+g(this)f(expands)g(to)630 3523 y(a)c(single)h(w)m(ord)e(with)h(eac)m(h)
h(p)s(ositional)g(parameter)f(separated)g(b)m(y)g(a)g(space.)46
-b(When)32 b(the)630 1882 y(expansion)i(o)s(ccurs)h(within)e(double)i
+b(When)32 b(the)630 3633 y(expansion)i(o)s(ccurs)h(within)e(double)i
(quotes,)h(and)e(w)m(ord)g(splitting)h(is)g(p)s(erformed,)f(eac)m(h)630
-1992 y(parameter)23 b(expands)f(to)i(a)f(separate)h(w)m(ord.)37
+3743 y(parameter)23 b(expands)f(to)i(a)f(separate)h(w)m(ord.)37
b(That)23 b(is,)i Ft("$@")c Fu(is)i(equiv)-5 b(alen)m(t)24
-b(to)g Ft("$1")29 b("$2")630 2101 y(...)o Fu(.)39 b(If)26
+b(to)g Ft("$1")29 b("$2")630 3852 y(...)o Fu(.)39 b(If)26
b(the)g(double-quoted)g(expansion)f(o)s(ccurs)h(within)f(a)h(w)m(ord,)h
-(the)f(expansion)g(of)g(the)630 2211 y(\014rst)31 b(parameter)h(is)g
+(the)f(expansion)g(of)g(the)630 3962 y(\014rst)31 b(parameter)h(is)g
(joined)f(with)g(the)h(b)s(eginning)f(part)h(of)f(the)h(original)h(w)m
-(ord,)f(and)f(the)630 2321 y(expansion)25 b(of)g(the)h(last)g
+(ord,)f(and)f(the)630 4071 y(expansion)25 b(of)g(the)h(last)g
(parameter)f(is)h(joined)f(with)g(the)g(last)h(part)f(of)g(the)h
-(original)g(w)m(ord.)630 2430 y(When)i(there)g(are)g(no)g(p)s
+(original)g(w)m(ord.)630 4181 y(When)i(there)g(are)g(no)g(p)s
(ositional)g(parameters,)h Ft("$@")e Fu(and)g Ft($@)h
-Fu(expand)f(to)h(nothing)g(\(i.e.,)630 2540 y(they)j(are)f(remo)m(v)m
-(ed\).)150 2698 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m
+Fu(expand)f(to)h(nothing)g(\(i.e.,)630 4291 y(they)j(are)f(remo)m(v)m
+(ed\).)150 4443 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m
(um)m(b)s(er)e(of)h(p)s(ositional)i(parameters)e(in)g(decimal.)150
-2857 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status)
+4596 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status)
f(of)g(the)g(most)h(recen)m(tly)g(executed)g(foreground)630
-2967 y(pip)s(eline.)150 3125 y Ft(-)432 b Fu(\($-,)24
+4706 y(pip)s(eline.)150 4858 y Ft(-)432 b Fu(\($-,)24
b(a)e(h)m(yphen.\))37 b(Expands)20 b(to)i(the)f(curren)m(t)h(option)f
(\015ags)h(as)f(sp)s(eci\014ed)g(up)s(on)f(in)m(v)m(o)s(cation,)630
-3235 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i
+4968 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i
(set)f(b)m(y)f(the)h(shell)g(itself)g(\(suc)m(h)g(as)g(the)g
-Ft(-i)630 3344 y Fu(option\).)150 3503 y Ft($)432 b Fu(\($$\))31
-b(Expands)d(to)j(the)e(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41
-b(In)28 b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630
-3613 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g
-(not)g(the)f(subshell.)150 3771 y Ft(!)432 b Fu(\($!\))51
-b(Expands)32 b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f
-(most)h(recen)m(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630
-3881 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f
-(command)h(or)g(using)g(the)g Ft(bg)f Fu(builtin)630
-3990 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g
-(page)h(108\).)150 4149 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the)
-g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)83 b(This)44
-b(is)g(set)h(at)h(shell)630 4259 y(initialization.)d(If)27
+Ft(-i)630 5078 y Fu(option\).)150 5230 y Ft($)432 b Fu(\($$\))39
+b(Expands)c(to)j(the)f(pro)s(cess)g Fm(id)g Fu(of)g(the)g(shell.)61
+b(In)36 b(a)h(subshell,)h(it)g(expands)e(to)i(the)630
+5340 y(pro)s(cess)30 b Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g
+(not)g(the)f(subshell.)p eop end
+%%Page: 24 30
+TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)150 299
+y Ft(!)432 b Fu(\($!\))51 b(Expands)32 b(to)i(the)g(pro)s(cess)f
+Fm(id)h Fu(of)f(the)h(job)f(most)h(recen)m(tly)h(placed)f(in)m(to)g
+(the)g(bac)m(k-)630 408 y(ground,)26 b(whether)g(executed)g(as)h(an)f
+(async)m(hronous)f(command)h(or)g(using)g(the)g Ft(bg)f
+Fu(builtin)630 518 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h
+(Builtins],)g(page)h(114\).)150 675 y Ft(0)432 b Fu(\($0\))46
+b(Expands)d(to)i(the)g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)
+83 b(This)44 b(is)g(set)h(at)h(shell)630 785 y(initialization.)d(If)27
b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e(a)i(\014le)e(of)h(commands)g
-(\(see)g(Section)h(3.8)g([Shell)630 4368 y(Scripts],)g(page)g(42\),)h
+(\(see)g(Section)h(3.8)g([Shell)630 894 y(Scripts],)g(page)g(46\),)h
Ft($0)e Fu(is)h(set)g(to)g(the)f(name)h(of)f(that)h(\014le.)41
-b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4478 y
+b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 1004 y
Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)g
-(page)f(86\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630
-4587 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i
+(page)f(91\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630
+1113 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i
(if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 b(it)g(is)f(set)630
-4697 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f
-(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 4937
-y Fs(3.5)68 b(Shell)45 b(Expansions)150 5096 y Fu(Expansion)27
+1223 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f
+(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 1461
+y Fs(3.5)68 b(Shell)45 b(Expansions)150 1621 y Fu(Expansion)27
b(is)i(p)s(erformed)d(on)i(the)g(command)g(line)h(after)f(it)h(has)f(b)
s(een)f(split)h(in)m(to)i Ft(token)p Fu(s.)38 b(There)28
-b(are)150 5206 y(sev)m(en)j(kinds)e(of)i(expansion)f(p)s(erformed:)225
-5340 y Fq(\017)60 b Fu(brace)31 b(expansion)p eop end
-%%Page: 23 29
-TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)225 299
-y Fq(\017)60 b Fu(tilde)31 b(expansion)225 436 y Fq(\017)60
+b(are)150 1730 y(sev)m(en)j(kinds)e(of)i(expansion)f(p)s(erformed:)225
+1863 y Fq(\017)60 b Fu(brace)31 b(expansion)225 1997
+y Fq(\017)60 b Fu(tilde)31 b(expansion)225 2130 y Fq(\017)60
b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 b(expansion)225
-574 y Fq(\017)60 b Fu(command)30 b(substitution)225 711
-y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 849 y
-Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 986 y Fq(\017)60
-b Fu(\014lename)31 b(expansion)275 1155 y(The)24 b(order)h(of)h
-(expansions)f(is:)39 b(brace)25 b(expansion;)j(tilde)e(expansion,)g
-(parameter)g(and)f(v)-5 b(ariable)26 b(ex-)150 1264 y(pansion,)j
-(arithmetic)i(expansion,)f(and)f(command)g(substitution)g(\(done)g(in)h
-(a)f(left-to-righ)m(t)k(fashion\);)150 1374 y(w)m(ord)d(splitting;)h
-(and)f(\014lename)h(expansion.)275 1515 y(On)42 b(systems)h(that)h(can)
-g(supp)s(ort)e(it,)47 b(there)d(is)f(an)h(additional)g(expansion)f(a)m
-(v)-5 b(ailable:)69 b Fr(pro)s(cess)150 1624 y(substitution)p
-Fu(.)50 b(This)33 b(is)h(p)s(erformed)e(at)j(the)f(same)g(time)g(as)g
-(tilde,)i(parameter,)f(v)-5 b(ariable,)35 b(and)f(arith-)150
-1734 y(metic)d(expansion)g(and)e(command)i(substitution.)275
-1874 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m
+2263 y Fq(\017)60 b Fu(command)30 b(substitution)225
+2396 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225
+2529 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 2663
+y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 2820
+y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25
+b(expansion;)j(tilde)e(expansion,)g(parameter)g(and)f(v)-5
+b(ariable)26 b(ex-)150 2929 y(pansion,)j(arithmetic)i(expansion,)f(and)
+f(command)g(substitution)g(\(done)g(in)h(a)f(left-to-righ)m(t)k
+(fashion\);)150 3039 y(w)m(ord)d(splitting;)h(and)f(\014lename)h
+(expansion.)275 3172 y(On)c(systems)h(that)h(can)g(supp)s(ort)e(it,)i
+(there)g(is)f(an)g(additional)i(expansion)e(a)m(v)-5
+b(ailable:)42 b Fr(pro)s(cess)28 b(sub-)150 3282 y(stitution)p
+Fu(.)42 b(This)30 b(is)g(p)s(erformed)f(at)j(the)e(same)h(time)h(as)e
+(tilde,)i(parameter,)f(v)-5 b(ariable,)32 b(and)e(arithmetic)150
+3391 y(expansion)g(and)g(command)g(substitution.)275
+3524 y(After)g(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m
(haracters)h(presen)m(t)e(in)g(the)g(original)i(w)m(ord)e(are)150
-1984 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g
+3634 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g
(themselv)m(es)i(\()p Fr(quote)f(remo)m(v)-5 b(al)t Fu(\).)275
-2124 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e
+3767 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e
(\014lename)h(expansion)f(can)h(increase)g(the)g(n)m(um)m(b)s(er)150
-2234 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g
+3877 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g
(expand)g(a)g(single)h(w)m(ord)f(to)h(a)f(single)h(w)m(ord.)38
-b(The)24 b(only)150 2344 y(exceptions)i(to)f(this)g(are)g(the)g
+b(The)24 b(only)150 3986 y(exceptions)i(to)f(this)g(are)g(the)g
(expansions)g(of)g Ft("$@")f Fu(and)g Ft($*)g Fu(\(see)i(Section)f
-(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)150 2453 y(page)31
-b(21\),)h(and)e Ft("${)p Fj(name)p Ft([@]}")d Fu(and)i
+(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)150 4096 y(page)31
+b(23\),)h(and)e Ft("${)p Fj(name)p Ft([@]}")d Fu(and)i
Ft(${)p Fj(name)p Ft([*]})f Fu(\(see)j(Section)h(6.7)f([Arra)m(ys],)g
-(page)g(95\).)275 2594 y(After)41 b(all)i(expansions,)h
+(page)g(100\).)275 4229 y(After)41 b(all)i(expansions,)h
Ft(quote)29 b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m
-(v)-5 b(al],)47 b(page)42 b(35\))h(is)150 2703 y(p)s(erformed.)150
-2908 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 3055 y
+(v)-5 b(al],)47 b(page)42 b(38\))h(is)150 4339 y(p)s(erformed.)150
+4535 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 4682 y
Fu(Brace)32 b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h
(arbitrary)f(strings)h(ma)m(y)g(b)s(e)f(generated.)43
-b(This)30 b(mec)m(h-)150 3165 y(anism)35 b(is)h(similar)f(to)h
+b(This)30 b(mec)m(h-)150 4792 y(anism)35 b(is)h(similar)f(to)h
Fr(\014lename)g(expansion)f Fu(\(see)i(Section)f(3.5.8)h([Filename)g
-(Expansion],)f(page)g(33\),)150 3275 y(but)26 b(the)h(\014lenames)g
+(Expansion],)f(page)g(35\),)150 4902 y(but)26 b(the)h(\014lenames)g
(generated)h(need)f(not)g(exist.)40 b(P)m(atterns)28
b(to)f(b)s(e)g(brace)g(expanded)f(tak)m(e)i(the)f(form)g(of)150
-3384 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f
+5011 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f
(either)g(a)h(series)f(of)g(comma-separated)i(strings)d(or)h(a)h
-(sequence)150 3494 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i
+(sequence)150 5121 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i
(braces,)g(follo)m(w)m(ed)h(b)m(y)e(an)g(optional)h Fr(p)s(ostscript)p
-Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 3603 y(pre\014xed)28
+Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 5230 y(pre\014xed)28
b(to)h(eac)m(h)h(string)f(con)m(tained)h(within)e(the)h(braces,)g(and)g
(the)g(p)s(ostscript)f(is)h(then)f(app)s(ended)f(to)150
-3713 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ)
-m(t.)275 3853 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59
+5340 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ)
+m(t.)p eop end
+%%Page: 25 31
+TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)275 299
+y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59
b(The)36 b(results)g(of)h(eac)m(h)g(expanded)f(string)g(are)h(not)g
-(sorted;)150 3963 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m
-(ed.)41 b(F)-8 b(or)31 b(example,)390 4104 y Ft(bash$)46
-b(echo)h(a{d,c,b}e)390 4213 y(ade)g(ace)g(abe)275 4354
+(sorted;)150 408 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m
+(ed.)41 b(F)-8 b(or)31 b(example,)390 537 y Ft(bash$)46
+b(echo)h(a{d,c,b}e)390 647 y(ade)g(ace)g(abe)275 776
y Fu(A)23 b(sequence)g(expression)g(tak)m(es)i(the)e(form)g
Ft({)p Fj(x)p Ft(..)p Fj(y)p Ft([..)p Fj(incr)p Ft(]})p
Fu(,)e(where)i Fr(x)29 b Fu(and)23 b Fr(y)30 b Fu(are)24
-b(either)g(in)m(tegers)150 4463 y(or)42 b(single)h(c)m(haracters,)48
-b(and)41 b Fr(incr)p Fu(,)46 b(an)c(optional)i(incremen)m(t,)i(is)c(an)
-h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 4573
-y(supplied,)f(the)f(expression)f(expands)f(to)i(eac)m(h)h(n)m(um)m(b)s
-(er)d(b)s(et)m(w)m(een)i Fr(x)47 b Fu(and)41 b Fr(y)p
-Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 4682 y(in)m(tegers)33
-b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Ft(0)p Fu(')h(to)g(force)g
-(eac)m(h)g(term)g(to)g(ha)m(v)m(e)g(the)g(same)g(width.)42
-b(When)31 b(either)150 4792 y Fr(x)43 b Fu(or)36 b Fr(y)44
-b Fu(b)s(egins)36 b(with)g(a)h(zero,)i(the)e(shell)g(attempts)g(to)g
-(force)g(all)h(generated)f(terms)g(to)g(con)m(tain)h(the)150
-4902 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h
-(necessary)-8 b(.)57 b(When)35 b(c)m(haracters)i(are)f(supplied,)g(the)
-150 5011 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g
-(lexicographically)h(b)s(et)m(w)m(een)e Fr(x)30 b Fu(and)24
-b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 5121
-y(default)32 b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e
-Fr(x)39 b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h
-(same)f(t)m(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150
-5230 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s
-(et)m(w)m(een)g(eac)m(h)g(term.)41 b(The)29 b(default)g(incremen)m(t)h
-(is)f(1)h(or)f(-1)150 5340 y(as)i(appropriate.)p eop
-end
-%%Page: 24 30
-TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)275 299
-y(Brace)36 b(expansion)g(is)f(p)s(erformed)f(b)s(efore)h(an)m(y)h
-(other)g(expansions,)h(and)e(an)m(y)g(c)m(haracters)i(sp)s(ecial)150
-408 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f
-(result.)45 b(It)32 b(is)g(strictly)g(textual.)46 b(Bash)32
-b(do)s(es)f(not)h(apply)150 518 y(an)m(y)27 b(syn)m(tactic)i(in)m
-(terpretation)g(to)f(the)f(con)m(text)i(of)e(the)g(expansion)g(or)g
-(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)275 656
-y(A)h(correctly-formed)i(brace)f(expansion)f(m)m(ust)h(con)m(tain)h
-(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150
-766 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5
+b(either)g(in)m(tegers)150 886 y(or)34 b(letters,)i(and)d
+Fr(incr)p Fu(,)h(an)g(optional)g(incremen)m(t,)i(is)d(an)h(in)m(teger.)
+52 b(When)33 b(in)m(tegers)i(are)f(supplied,)g(the)150
+995 y(expression)f(expands)f(to)i(eac)m(h)g(n)m(um)m(b)s(er)e(b)s(et)m
+(w)m(een)i Fr(x)39 b Fu(and)33 b Fr(y)p Fu(,)h(inclusiv)m(e.)50
+b(Supplied)31 b(in)m(tegers)k(ma)m(y)f(b)s(e)150 1105
+y(pre\014xed)h(with)h(`)p Ft(0)p Fu(')g(to)h(force)g(eac)m(h)h(term)e
+(to)h(ha)m(v)m(e)g(the)g(same)g(width.)57 b(When)36 b(either)h
+Fr(x)42 b Fu(or)37 b Fr(y)43 b Fu(b)s(egins)150 1214
+y(with)37 b(a)h(zero,)j(the)c(shell)h(attempts)h(to)f(force)g(all)g
+(generated)h(terms)e(to)i(con)m(tain)g(the)e(same)h(n)m(um)m(b)s(er)150
+1324 y(of)30 b(digits,)h(zero-padding)f(where)f(necessary)-8
+b(.)41 b(When)30 b(letters)g(are)h(supplied,)d(the)i(expression)g
+(expands)150 1433 y(to)k(eac)m(h)g(c)m(haracter)h(lexicographically)h
+(b)s(et)m(w)m(een)e Fr(x)40 b Fu(and)32 b Fr(y)p Fu(,)i(inclusiv)m(e,)i
+(using)c(the)i(default)f(C)g(lo)s(cale.)150 1543 y(Note)f(that)f(b)s
+(oth)f Fr(x)37 b Fu(and)30 b Fr(y)38 b Fu(m)m(ust)31
+b(b)s(e)f(of)h(the)g(same)g(t)m(yp)s(e)g(\(in)m(teger)h(or)f(letter\).)
+43 b(When)30 b(the)h(incremen)m(t)150 1653 y(is)e(supplied,)g(it)h(is)f
+(used)f(as)i(the)f(di\013erence)h(b)s(et)m(w)m(een)g(eac)m(h)g(term.)41
+b(The)29 b(default)g(incremen)m(t)h(is)f(1)h(or)f(-1)150
+1762 y(as)i(appropriate.)275 1891 y(Brace)36 b(expansion)g(is)f(p)s
+(erformed)f(b)s(efore)h(an)m(y)h(other)g(expansions,)h(and)e(an)m(y)g
+(c)m(haracters)i(sp)s(ecial)150 2001 y(to)32 b(other)g(expansions)g
+(are)g(preserv)m(ed)f(in)h(the)f(result.)45 b(It)32 b(is)g(strictly)g
+(textual.)46 b(Bash)32 b(do)s(es)f(not)h(apply)150 2110
+y(an)m(y)27 b(syn)m(tactic)i(in)m(terpretation)g(to)f(the)f(con)m(text)
+i(of)e(the)g(expansion)g(or)g(the)h(text)g(b)s(et)m(w)m(een)f(the)h
+(braces.)275 2239 y(A)h(correctly-formed)i(brace)f(expansion)f(m)m(ust)
+h(con)m(tain)h(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150
+2349 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5
b(alid)33 b(sequence)g(expression.)48 b(An)m(y)33 b(incorrectly)h
-(formed)150 875 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275
-1013 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted)
+(formed)150 2458 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275
+2587 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted)
h(with)f(a)g(bac)m(kslash)h(to)g(prev)m(en)m(t)g(its)g(b)s(eing)f
-(considered)g(part)g(of)h(a)g(brace)150 1123 y(expression.)51
+(considered)g(part)g(of)h(a)g(brace)150 2697 y(expression.)51
b(T)-8 b(o)34 b(a)m(v)m(oid)i(con\015icts)e(with)g(parameter)g
(expansion,)h(the)f(string)g(`)p Ft(${)p Fu(')g(is)g(not)g(considered)
-150 1232 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g
+150 2807 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g
(brace)h(expansion)f(un)m(til)g(the)h(closing)h(`)p Ft(})p
-Fu('.)275 1370 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h
+Fu('.)275 2936 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h
(shorthand)f(when)g(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to)
-150 1480 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m
-(v)m(e)i(example:)390 1618 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o
-(ew,)o(dist)o(,bug)o(s})275 1756 y Fu(or)390 1894 y Ft(chown)g(root)h
+150 3045 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m
+(v)m(e)i(example:)390 3174 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o
+(ew,)o(dist)o(,bug)o(s})275 3303 y Fu(or)390 3432 y Ft(chown)g(root)h
(/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})150
-2097 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 2243 y
+3620 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 3767 y
Fu(If)29 b(a)h(w)m(ord)g(b)s(egins)f(with)g(an)h(unquoted)f(tilde)h(c)m
(haracter)h(\(`)p Ft(~)p Fu('\),)g(all)g(of)f(the)g(c)m(haracters)h(up)
-d(to)j(the)f(\014rst)150 2353 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m
+d(to)j(the)f(\014rst)150 3877 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m
(haracters,)h(if)e(there)g(is)f(no)h(unquoted)e(slash\))i(are)g
-(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 2463 y(If)38
+(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 3986 y(If)38
b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f(are)h
(quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150
-2572 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s
+4096 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s
(ossible)g Fr(login)h(name)p Fu(.)39 b(If)27 b(this)g(login)h(name)f
-(is)g(the)g(n)m(ull)g(string,)150 2682 y(the)35 b(tilde)g(is)g
+(is)g(the)g(n)m(ull)g(string,)150 4205 y(the)35 b(tilde)g(is)g
(replaced)g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g
Ft(HOME)e Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g
-Fu(is)h(unset,)g(the)g(home)150 2791 y(directory)e(of)g(the)f(user)g
+Fu(is)h(unset,)g(the)g(home)150 4315 y(directory)e(of)g(the)f(user)g
(executing)i(the)e(shell)h(is)f(substituted)g(instead.)47
-b(Otherwise,)33 b(the)g(tilde-pre\014x)150 2901 y(is)d(replaced)h(with)
+b(Otherwise,)33 b(the)g(tilde-pre\014x)150 4425 y(is)d(replaced)h(with)
f(the)h(home)f(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed)
-e(login)j(name.)275 3039 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p
+e(login)j(name.)275 4554 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p
Ft(~+)p Fu(',)g(the)g(v)-5 b(alue)33 b(of)g(the)g(shell)g(v)-5
b(ariable)34 b Ft(PWD)d Fu(replaces)j(the)f(tilde-pre\014x.)47
-b(If)150 3149 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p
+b(If)150 4663 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p
Fu(',)h(the)f(v)-5 b(alue)31 b(of)g(the)f(shell)h(v)-5
b(ariable)31 b Ft(OLDPWD)p Fu(,)e(if)h(it)h(is)g(set,)g(is)f
-(substituted.)275 3287 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the)
+(substituted.)275 4792 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the)
e(tilde)g(in)g(the)g(tilde-pre\014x)g(consist)g(of)g(a)h(n)m(um)m(b)s
-(er)d Fr(N)p Fu(,)j(optionally)150 3396 y(pre\014xed)22
+(er)d Fr(N)p Fu(,)j(optionally)150 4902 y(pre\014xed)22
b(b)m(y)h(a)h(`)p Ft(+)p Fu(')f(or)h(a)f(`)p Ft(-)p Fu(',)j(the)d
(tilde-pre\014x)g(is)h(replaced)f(with)g(the)h(corresp)s(onding)e
-(elemen)m(t)j(from)e(the)150 3506 y(directory)36 b(stac)m(k,)i(as)e(it)
+(elemen)m(t)j(from)e(the)150 5011 y(directory)36 b(stac)m(k,)i(as)e(it)
g(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)g(the)f
Ft(dirs)g Fu(builtin)g(in)m(v)m(ok)m(ed)i(with)e(the)g(c)m(haracters)
-150 3615 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g
+150 5121 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g
(an)f(argumen)m(t)h(\(see)h(Section)f(6.8)h([The)e(Directory)i(Stac)m
-(k],)150 3725 y(page)c(97\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans)
-e(the)h(tilde,)h(consists)f(of)g(a)f(n)m(um)m(b)s(er)f(without)i(a)f
-(leading)h(`)p Ft(+)p Fu(')g(or)150 3834 y(`)p Ft(-)p
-Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 3972 y(If)e(the)i(login)
-g(name)g(is)f(in)m(v)-5 b(alid,)31 b(or)g(the)f(tilde)h(expansion)f
-(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)275
-4110 y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m
-(k)m(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m
-(wing)150 4220 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p
-Ft(=)p Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g
-(also)h(p)s(erformed.)52 b(Consequen)m(tly)-8 b(,)37
-b(one)150 4330 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g
-(assignmen)m(ts)g(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p
-Fu(,)e(and)h Ft(CDPATH)p Fu(,)g(and)h(the)g(shell)150
-4439 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 4577
-y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g(Bash)h(treats)g
-(unquoted)e(tilde-pre\014xes:)150 4742 y Ft(~)432 b Fu(The)30
-b(v)-5 b(alue)31 b(of)f Ft($HOME)150 4905 y(~/foo)240
-b($HOME/foo)150 5068 y(~fred/foo)630 5177 y Fu(The)30
-b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f(directory)h(of)g(the)
-f(user)g Ft(fred)150 5340 y(~+/foo)192 b($PWD/foo)p eop
-end
-%%Page: 25 31
-TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)150 299
-y Ft(~-/foo)192 b(${OLDPWD-'~-'}/foo)150 471 y(~)p Fj(N)384
-b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m
-(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 644 y Ft(~+)p
-Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m
-(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 816 y
-Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g
-(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')275
-995 y(Bash)40 b(also)h(p)s(erforms)e(tilde)h(expansion)g(on)h(w)m(ords)
-e(satisfying)i(the)f(conditions)h(of)f(v)-5 b(ariable)41
-b(as-)150 1105 y(signmen)m(ts)f(\(see)h(Section)g(3.4)g([Shell)f(P)m
-(arameters],)k(page)d(20\))g(when)e(they)h(app)s(ear)f(as)i(argumen)m
-(ts)150 1215 y(to)c(simple)f(commands.)57 b(Bash)36 b(do)s(es)f(not)h
-(do)g(this,)i(except)f(for)e(the)h Fr(declaration)i Fu(commands)d
-(listed)150 1324 y(ab)s(o)m(v)m(e,)d(when)d(in)h Fm(posix)g
-Fu(mo)s(de.)150 1536 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f
-(Expansion)150 1683 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m
-(tro)s(duces)d(parameter)h(expansion,)j(command)d(substitution,)i(or)e
-(arithmetic)150 1793 y(expansion.)d(The)22 b(parameter)h(name)f(or)g
-(sym)m(b)s(ol)h(to)g(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)h(in)
-f(braces,)i(whic)m(h)150 1903 y(are)31 b(optional)g(but)f(serv)m(e)h
-(to)h(protect)f(the)g(v)-5 b(ariable)31 b(to)g(b)s(e)f(expanded)g(from)
-g(c)m(haracters)i(immediately)150 2012 y(follo)m(wing)g(it)f(whic)m(h)f
-(could)g(b)s(e)g(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275
-2160 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f
-(brace)g(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m
-(y)f(a)150 2269 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)
-j(and)c(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,)
-150 2379 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275
-2526 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p
+(k],)150 5230 y(page)34 b(102\).)50 b(If)32 b(the)h(tilde-pre\014x,)h
+(sans)e(the)h(tilde,)i(consists)e(of)g(a)h(n)m(um)m(b)s(er)d(without)i
+(a)g(leading)h(`)p Ft(+)p Fu(')f(or)150 5340 y(`)p Ft(-)p
+Fu(',)e(`)p Ft(+)p Fu(')f(is)h(assumed.)p eop end
+%%Page: 26 32
+TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)275 299
+y(If)29 b(the)i(login)g(name)g(is)f(in)m(v)-5 b(alid,)31
+b(or)g(the)f(tilde)h(expansion)f(fails,)i(the)e(w)m(ord)g(is)h(left)g
+(unc)m(hanged.)275 438 y(Eac)m(h)38 b(v)-5 b(ariable)38
+b(assignmen)m(t)h(is)e(c)m(hec)m(k)m(ed)j(for)d(unquoted)g
+(tilde-pre\014xes)h(immediately)g(follo)m(wing)150 547
+y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p Ft(=)p
+Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g(also)h(p)s
+(erformed.)52 b(Consequen)m(tly)-8 b(,)37 b(one)150 657
+y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g(assignmen)m(ts)g
+(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p Fu(,)e(and)h Ft(CDPATH)p
+Fu(,)g(and)h(the)g(shell)150 766 y(assigns)j(the)f(expanded)g(v)-5
+b(alue.)275 905 y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g
+(Bash)h(treats)g(unquoted)e(tilde-pre\014xes:)150 1071
+y Ft(~)432 b Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft($HOME)150
+1234 y(~/foo)240 b($HOME/foo)150 1398 y(~fred/foo)630
+1508 y Fu(The)30 b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f
+(directory)h(of)g(the)f(user)g Ft(fred)150 1671 y(~+/foo)192
+b($PWD/foo)150 1835 y(~-/foo)g(${OLDPWD-'~-'}/foo)150
+1998 y(~)p Fj(N)384 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g
+(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150
+2162 y Ft(~+)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)
+g(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p
+Fu(')150 2326 y Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m
+(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p
+Fj(N)p Fu(')275 2491 y(Bash)40 b(also)h(p)s(erforms)e(tilde)h
+(expansion)g(on)h(w)m(ords)e(satisfying)i(the)f(conditions)h(of)f(v)-5
+b(ariable)41 b(as-)150 2601 y(signmen)m(ts)f(\(see)h(Section)g(3.4)g
+([Shell)f(P)m(arameters],)k(page)d(21\))g(when)e(they)h(app)s(ear)f(as)
+i(argumen)m(ts)150 2710 y(to)c(simple)f(commands.)57
+b(Bash)36 b(do)s(es)f(not)h(do)g(this,)i(except)f(for)e(the)h
+(declaration)i(commands)d(listed)150 2820 y(ab)s(o)m(v)m(e,)d(when)d
+(in)h Fm(posix)g Fu(mo)s(de.)150 3024 y Fk(3.5.3)63 b(Shell)41
+b(P)m(arameter)f(Expansion)150 3170 y Fu(The)g(`)p Ft($)p
+Fu(')h(c)m(haracter)i(in)m(tro)s(duces)d(parameter)h(expansion,)j
+(command)d(substitution,)i(or)e(arithmetic)150 3280 y(expansion.)d(The)
+22 b(parameter)h(name)f(or)g(sym)m(b)s(ol)h(to)g(b)s(e)e(expanded)h(ma)
+m(y)h(b)s(e)f(enclosed)h(in)f(braces,)i(whic)m(h)150
+3390 y(are)31 b(optional)g(but)f(serv)m(e)h(to)h(protect)f(the)g(v)-5
+b(ariable)31 b(to)g(b)s(e)f(expanded)g(from)g(c)m(haracters)i
+(immediately)150 3499 y(follo)m(wing)g(it)f(whic)m(h)f(could)g(b)s(e)g
+(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275 3638
+y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f(brace)g
+(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m(y)f(a)
+150 3748 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)j(and)c
+(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,)150
+3857 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275
+3996 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p
Fi({)p Fr(parameter)7 b Fi(})p Fu(.)74 b(The)41 b(v)-5
-b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 2636 y(substituted.)43
+b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 4105 y(substituted.)43
b(The)31 b Fr(parameter)39 b Fu(is)31 b(a)h(shell)f(parameter)h(as)g
(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.4)h([Shell)150
-2746 y(P)m(arameters],)e(page)f(20\))h(or)e(an)g(arra)m(y)h(reference)f
-(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(95\).)42
-b(The)29 b(braces)150 2855 y(are)j(required)g(when)f
+4215 y(P)m(arameters],)28 b(page)f(21\))g(or)f(an)f(arra)m(y)h
+(reference)h(\(see)f(Section)h(6.7)g([Arra)m(ys],)g(page)g(100\).)41
+b(The)25 b(braces)150 4325 y(are)32 b(required)g(when)f
Fr(parameter)39 b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f
-(more)g(than)g(one)g(digit,)i(or)e(when)150 2965 y Fr(parameter)37
+(more)g(than)g(one)g(digit,)i(or)e(when)150 4434 y Fr(parameter)37
b Fu(is)31 b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f
(not)h(to)g(b)s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275
-3112 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42
+4573 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42
b Fu(is)35 b(an)g(exclamation)i(p)s(oin)m(t)e(\(!\),)i(and)d
-Fr(parameter)42 b Fu(is)34 b(not)i(a)150 3222 y Fr(nameref)p
-Fu(,)c(it)f(in)m(tro)s(duces)h(a)f(lev)m(el)i(of)f(indirection.)44
-b(Bash)31 b(uses)g(the)g(v)-5 b(alue)32 b(formed)f(b)m(y)g(expanding)g
-(the)150 3332 y(rest)c(of)f Fr(parameter)33 b Fu(as)27
-b(the)g(new)f Fr(parameter)7 b Fu(;)28 b(this)e(is)g(then)g(expanded)g
-(and)g(that)h(v)-5 b(alue)27 b(is)f(used)g(in)g(the)150
-3441 y(rest)33 b(of)f(the)h(expansion,)g(rather)g(than)f(the)h
-(expansion)f(of)h(the)g(original)g Fr(parameter)p Fu(.)48
-b(This)32 b(is)g(kno)m(wn)150 3551 y(as)42 b Ft(indirect)28
-b(expansion)p Fu(.)71 b(The)41 b(v)-5 b(alue)41 b(is)h(sub)5
-b(ject)41 b(to)h(tilde)g(expansion,)i(parameter)e(expansion,)150
-3660 y(command)31 b(substitution,)g(and)g(arithmetic)h(expansion.)43
-b(If)31 b Fr(parameter)38 b Fu(is)32 b(a)f(nameref,)h(this)f(expands)
-150 3770 y(to)d(the)g(name)g(of)f(the)h(v)-5 b(ariable)28
-b(referenced)g(b)m(y)f Fr(parameter)35 b Fu(instead)27
-b(of)h(p)s(erforming)e(the)i(complete)h(in-)150 3880
-y(direct)e(expansion.)39 b(The)25 b(exceptions)i(to)g(this)f(are)h(the)
-f(expansions)g(of)g($)p Fi({)p Fu(!)p Fr(pre\014x)6 b
-Fu(*)p Fi(})28 b Fu(and)d($)p Fi({)p Fu(!)p Fr(name)5
-b Fu([@])p Fi(})150 3989 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41
-b(The)28 b(exclamation)j(p)s(oin)m(t)f(m)m(ust)f(immediately)h(follo)m
-(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 4099 y(in)m(tro)s(duce)i
-(indirection.)275 4246 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m
-(w,)i Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j
-(parameter)e(expansion,)150 4356 y(command)30 b(substitution,)g(and)g
-(arithmetic)i(expansion.)275 4503 y(When)h(not)h(p)s(erforming)e
+Fr(parameter)42 b Fu(is)34 b(not)i(a)150 4682 y(nameref,)c(it)f(in)m
+(tro)s(duces)h(a)f(lev)m(el)i(of)f(indirection.)44 b(Bash)31
+b(uses)g(the)g(v)-5 b(alue)32 b(formed)f(b)m(y)g(expanding)g(the)150
+4792 y(rest)c(of)f Fr(parameter)33 b Fu(as)27 b(the)g(new)f
+Fr(parameter)7 b Fu(;)28 b(this)e(is)g(then)g(expanded)g(and)g(that)h
+(v)-5 b(alue)27 b(is)f(used)g(in)g(the)150 4902 y(rest)33
+b(of)f(the)h(expansion,)g(rather)g(than)f(the)h(expansion)f(of)h(the)g
+(original)g Fr(parameter)p Fu(.)48 b(This)32 b(is)g(kno)m(wn)150
+5011 y(as)42 b Ft(indirect)28 b(expansion)p Fu(.)71 b(The)41
+b(v)-5 b(alue)41 b(is)h(sub)5 b(ject)41 b(to)h(tilde)g(expansion,)i
+(parameter)e(expansion,)150 5121 y(command)31 b(substitution,)g(and)g
+(arithmetic)h(expansion.)43 b(If)31 b Fr(parameter)38
+b Fu(is)32 b(a)f(nameref,)h(this)f(expands)150 5230 y(to)d(the)g(name)g
+(of)f(the)h(v)-5 b(ariable)28 b(referenced)g(b)m(y)f
+Fr(parameter)35 b Fu(instead)27 b(of)h(p)s(erforming)e(the)i(complete)h
+(in-)150 5340 y(direct)e(expansion.)39 b(The)25 b(exceptions)i(to)g
+(this)f(are)h(the)f(expansions)g(of)g($)p Fi({)p Fu(!)p
+Fr(pre\014x)6 b Fu(*)p Fi(})28 b Fu(and)d($)p Fi({)p
+Fu(!)p Fr(name)5 b Fu([@])p Fi(})p eop end
+%%Page: 27 33
+TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)150 299
+y(describ)s(ed)28 b(b)s(elo)m(w.)41 b(The)28 b(exclamation)j(p)s(oin)m
+(t)f(m)m(ust)f(immediately)h(follo)m(w)g(the)g(left)f(brace)h(in)f
+(order)f(to)150 408 y(in)m(tro)s(duce)i(indirection.)275
+547 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m(w,)i
+Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j
+(parameter)e(expansion,)150 657 y(command)30 b(substitution,)g(and)g
+(arithmetic)i(expansion.)275 795 y(When)h(not)h(p)s(erforming)e
(substring)h(expansion,)h(using)g(the)f(form)h(describ)s(ed)e(b)s(elo)m
-(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 4613 y(Bash)d(tests)h(for)e(a)i
+(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 905 y(Bash)d(tests)h(for)e(a)i
(parameter)f(that)h(is)e(unset)h(or)g(n)m(ull.)48 b(Omitting)33
-b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 4723
+b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 1015
y(for)c(a)i(parameter)f(that)g(is)g(unset.)41 b(Put)31
b(another)f(w)m(a)m(y)-8 b(,)33 b(if)e(the)f(colon)i(is)f(included,)f
-(the)h(op)s(erator)g(tests)150 4832 y(for)36 b(b)s(oth)g
+(the)h(op)s(erator)g(tests)150 1124 y(for)36 b(b)s(oth)g
Fr(parameter)7 b Fu('s)37 b(existence)h(and)e(that)i(its)f(v)-5
b(alue)37 b(is)g(not)f(n)m(ull;)k(if)d(the)g(colon)h(is)e(omitted,)k
-(the)150 4942 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150
-5121 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p
-Ft(})630 5230 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m
+(the)150 1234 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150
+1399 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p
+Ft(})630 1509 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m
(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k Fu(is)c(substituted.)40
-b(Otherwise,)630 5340 y(the)31 b(v)-5 b(alue)30 b(of)h
-Fr(parameter)37 b Fu(is)31 b(substituted.)p eop end
-%%Page: 26 32
-TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)150 299
-y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 408
-y Fu(If)33 b Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f
-(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h
-Fr(parameter)p Fu(.)630 518 y(The)c(v)-5 b(alue)32 b(of)f
-Fr(parameter)38 b Fu(is)31 b(then)g(substituted.)42 b(P)m(ositional)33
-b(parameters)e(and)f(sp)s(ecial)630 628 y(parameters)h(ma)m(y)g(not)f
-(b)s(e)g(assigned)h(to)g(in)f(this)g(w)m(a)m(y)-8 b(.)150
-786 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630
-896 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h
-(the)f(expansion)g(of)g Fr(w)m(ord)k Fu(\(or)c(a)h(message)g(to)g(that)
-f(e\013ect)630 1005 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h
-(is)f(written)g(to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f
-(it)h(is)f(not)630 1115 y(in)m(teractiv)m(e,)33 b(exits.)42
-b(Otherwise,)30 b(the)h(v)-5 b(alue)31 b(of)f Fr(parameter)38
-b Fu(is)30 b(substituted.)150 1273 y Ft(${)p Fj(parameter)p
-Ft(:+)p Fj(word)p Ft(})630 1383 y Fu(If)35 b Fr(parameter)42
-b Fu(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i
-(otherwise)e(the)h(expansion)630 1492 y(of)31 b Fr(w)m(ord)i
-Fu(is)e(substituted.)150 1650 y Ft(${)p Fj(parameter)p
-Ft(:)p Fj(offset)p Ft(})150 1760 y(${)p Fj(parameter)p
-Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 1870
-y Fu(This)f(is)h(referred)f(to)h(as)g(Substring)f(Expansion.)41
-b(It)31 b(expands)f(to)h(up)f(to)h Fr(length)g Fu(c)m(harac-)630
-1979 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42
-b Fu(starting)36 b(at)g(the)f(c)m(haracter)i(sp)s(eci\014ed)d(b)m(y)h
-Fr(o\013set)p Fu(.)55 b(If)630 2089 y Fr(parameter)32
-b Fu(is)26 b(`)p Ft(@)p Fu(',)g(an)f(indexed)g(arra)m(y)h(subscripted)e
-(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(or)g(an)f(asso)s
-(ciativ)m(e)j(ar-)630 2198 y(ra)m(y)g(name,)h(the)f(results)g(di\013er)
-g(as)g(describ)s(ed)f(b)s(elo)m(w.)40 b(If)28 b Fr(length)g
-Fu(is)g(omitted,)i(it)f(expands)630 2308 y(to)e(the)g(substring)f(of)g
-(the)h(v)-5 b(alue)27 b(of)g Fr(parameter)33 b Fu(starting)28
-b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)630
-2418 y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the)
-g(v)-5 b(alue.)53 b Fr(length)34 b Fu(and)g Fr(o\013set)j
-Fu(are)e(arithmetic)630 2527 y(expressions)30 b(\(see)h(Section)g(6.5)h
-([Shell)e(Arithmetic],)i(page)f(93\).)630 2661 y(If)39
-b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m(b)s(er)f
-(less)h(than)f(zero,)k(the)d(v)-5 b(alue)40 b(is)g(used)e(as)i(an)g
-(o\013set)630 2771 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h
-(the)g(v)-5 b(alue)34 b(of)g Fr(parameter)p Fu(.)51 b(If)33
-b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 2880
-y(n)m(um)m(b)s(er)23 b(less)h(than)g(zero,)j(it)d(is)h(in)m(terpreted)f
-(as)g(an)h(o\013set)g(in)f(c)m(haracters)h(from)f(the)g(end)g(of)630
-2990 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38
-b Fu(rather)30 b(than)h(a)g(n)m(um)m(b)s(er)f(of)g(c)m(haracters,)j
-(and)d(the)h(expansion)630 3099 y(is)39 b(the)g(c)m(haracters)i(b)s(et)
-m(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67
-b(Note)40 b(that)g(a)g(negativ)m(e)h(o\013set)630 3209
-y(m)m(ust)27 b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h
-(least)g(one)f(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630
-3319 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630
-3453 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f
-(expansion)g(on)g(parameters)h(and)630 3562 y(subscripted)29
-b(arra)m(ys:)630 3696 y Ft($)47 b(string=01234567890abcdefgh)630
-3806 y($)g(echo)g(${string:7})630 3915 y(7890abcdefgh)630
-4025 y($)g(echo)g(${string:7:0})630 4244 y($)g(echo)g(${string:7:2})630
-4354 y(78)630 4463 y($)g(echo)g(${string:7:-2})630 4573
-y(7890abcdef)630 4682 y($)g(echo)g(${string:)e(-7})630
-4792 y(bcdefgh)630 4902 y($)i(echo)g(${string:)e(-7:0})630
-5121 y($)i(echo)g(${string:)e(-7:2})630 5230 y(bc)630
-5340 y($)i(echo)g(${string:)e(-7:-2})p eop end
-%%Page: 27 33
-TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)630 299
-y Ft(bcdef)630 408 y($)47 b(set)g(--)h(01234567890abcdefgh)630
-518 y($)f(echo)g(${1:7})630 628 y(7890abcdefgh)630 737
-y($)g(echo)g(${1:7:0})630 956 y($)g(echo)g(${1:7:2})630
-1066 y(78)630 1176 y($)g(echo)g(${1:7:-2})630 1285 y(7890abcdef)630
-1395 y($)g(echo)g(${1:)g(-7})630 1504 y(bcdefgh)630 1614
-y($)g(echo)g(${1:)g(-7:0})630 1833 y($)g(echo)g(${1:)g(-7:2})630
-1943 y(bc)630 2052 y($)g(echo)g(${1:)g(-7:-2})630 2162
-y(bcdef)630 2271 y($)g(array[0]=01234567890abcdef)o(gh)630
-2381 y($)g(echo)g(${array[0]:7})630 2491 y(7890abcdefgh)630
-2600 y($)g(echo)g(${array[0]:7:0})630 2819 y($)g(echo)g
-(${array[0]:7:2})630 2929 y(78)630 3039 y($)g(echo)g(${array[0]:7:-2})
-630 3148 y(7890abcdef)630 3258 y($)g(echo)g(${array[0]:)e(-7})630
-3367 y(bcdefgh)630 3477 y($)i(echo)g(${array[0]:)e(-7:0})630
-3696 y($)i(echo)g(${array[0]:)e(-7:2})630 3806 y(bc)630
-3915 y($)i(echo)g(${array[0]:)e(-7:-2})630 4025 y(bcdef)630
-4171 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p
-Fu(',)i(the)e(result)g(is)g Fr(length)h Fu(p)s(ositional)f(parameters)h
-(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 4281 y(A)36
-b(negativ)m(e)j Fr(o\013set)g Fu(is)e(tak)m(en)g(relativ)m(e)i(to)e
-(one)g(greater)g(than)f(the)h(greatest)h(p)s(ositional)630
-4390 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5
-b(aluates)30 b(to)e(the)g(last)h(p)s(ositional)g(parameter.)40
-b(It)28 b(is)g(an)630 4500 y(expansion)i(error)g(if)h
-Fr(length)f Fu(ev)-5 b(aluates)32 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i
-(than)f(zero.)630 4646 y(The)i(follo)m(wing)i(examples)f(illustrate)h
-(substring)d(expansion)i(using)f(p)s(ositional)h(param-)630
-4755 y(eters:)630 4902 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f
-(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630 5011
-y($)g(echo)g(${@:7})630 5121 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h
-(g)f(h)630 5230 y($)g(echo)g(${@:7:0})p eop end
+b(Otherwise,)630 1619 y(the)31 b(v)-5 b(alue)30 b(of)h
+Fr(parameter)37 b Fu(is)31 b(substituted.)870 1755 y
+Ft($)47 b(v=123)870 1865 y($)g(echo)g(${v-unset})870
+1974 y(123)150 2138 y(${)p Fj(parameter)p Ft(:=)p Fj(word)p
+Ft(})630 2248 y Fu(If)33 b Fr(parameter)40 b Fu(is)33
+b(unset)f(or)h(n)m(ull,)h(the)f(expansion)g(of)g Fr(w)m(ord)j
+Fu(is)d(assigned)g(to)h Fr(parameter)p Fu(.)630 2357
+y(The)c(v)-5 b(alue)32 b(of)f Fr(parameter)38 b Fu(is)31
+b(then)g(substituted.)42 b(P)m(ositional)33 b(parameters)e(and)f(sp)s
+(ecial)630 2467 y(parameters)h(ma)m(y)g(not)f(b)s(e)g(assigned)h(to)g
+(in)f(this)g(w)m(a)m(y)-8 b(.)870 2603 y Ft($)47 b(var=)870
+2713 y($)g(:)h(${var:=DEFAULT})870 2823 y($)f(echo)g($var)870
+2932 y(DEFAULT)150 3096 y(${)p Fj(parameter)p Ft(:?)p
+Fj(word)p Ft(})630 3205 y Fu(If)26 b Fr(parameter)33
+b Fu(is)26 b(n)m(ull)g(or)g(unset,)h(the)f(expansion)g(of)g
+Fr(w)m(ord)k Fu(\(or)c(a)h(message)g(to)g(that)f(e\013ect)630
+3315 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h(is)f(written)g
+(to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f(it)h(is)f(not)
+630 3425 y(in)m(teractiv)m(e,)33 b(exits.)42 b(Otherwise,)30
+b(the)h(v)-5 b(alue)31 b(of)f Fr(parameter)38 b Fu(is)30
+b(substituted.)870 3561 y Ft($)47 b(var=)870 3671 y($)g(:)h(${var:?var)
+d(is)i(unset)f(or)i(null})870 3780 y(bash:)e(var:)h(var)g(is)g(unset)f
+(or)i(null)150 3944 y(${)p Fj(parameter)p Ft(:+)p Fj(word)p
+Ft(})630 4053 y Fu(If)35 b Fr(parameter)42 b Fu(is)36
+b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i(otherwise)e
+(the)h(expansion)630 4163 y(of)31 b Fr(w)m(ord)i Fu(is)e(substituted.)
+870 4300 y Ft($)47 b(var=123)870 4409 y($)g(echo)g(${var:+var)e(is)i
+(set)g(and)g(not)g(null})870 4519 y(var)g(is)g(set)g(and)g(not)g(null)
+150 4682 y(${)p Fj(parameter)p Ft(:)p Fj(offset)p Ft(})150
+4792 y(${)p Fj(parameter)p Ft(:)p Fj(offset)p Ft(:)p
+Fj(lengt)o(h)p Ft(})630 4902 y Fu(This)30 b(is)h(referred)f(to)h(as)g
+(Substring)f(Expansion.)41 b(It)31 b(expands)f(to)h(up)f(to)h
+Fr(length)g Fu(c)m(harac-)630 5011 y(ters)k(of)g(the)h(v)-5
+b(alue)35 b(of)g Fr(parameter)42 b Fu(starting)36 b(at)g(the)f(c)m
+(haracter)i(sp)s(eci\014ed)d(b)m(y)h Fr(o\013set)p Fu(.)55
+b(If)630 5121 y Fr(parameter)41 b Fu(is)35 b(`)p Ft(@)p
+Fu(')f(or)h(`)p Ft(*)p Fu(',)g(an)g(indexed)f(arra)m(y)g(subscripted)g
+(b)m(y)g(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(or)g(an)f(asso-)630
+5230 y(ciativ)m(e)i(arra)m(y)e(name,)h(the)f(results)f(di\013er)g(as)h
+(describ)s(ed)e(b)s(elo)m(w.)51 b(If)33 b Fr(length)h
+Fu(is)g(omitted,)630 5340 y(it)d(expands)f(to)h(the)g(substring)e(of)h
+(the)h(v)-5 b(alue)31 b(of)g Fr(parameter)37 b Fu(starting)31
+b(at)h(the)e(c)m(haracter)p eop end
%%Page: 28 34
TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41
b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)630 299
-y Ft($)47 b(echo)g(${@:7:2})630 408 y(7)g(8)630 518 y($)g(echo)g
-(${@:7:-2})630 628 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630
-737 y($)g(echo)g(${@:)g(-7:2})630 847 y(b)g(c)630 956
-y($)g(echo)g(${@:0})630 1066 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h
-(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1176 y($)f(echo)g(${@:0:2})
-630 1285 y(./bash)f(1)630 1395 y($)h(echo)g(${@:)g(-7:0})630
-1677 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y)
+y(sp)s(eci\014ed)30 b(b)m(y)g Fr(o\013set)k Fu(and)c(extending)h(to)g
+(the)g(end)f(of)g(the)h(v)-5 b(alue.)42 b Fr(length)31
+b Fu(and)f Fr(o\013set)k Fu(are)630 408 y(arithmetic)e(expressions)e
+(\(see)h(Section)g(6.5)h([Shell)e(Arithmetic],)i(page)f(98\).)630
+555 y(If)39 b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m
+(b)s(er)f(less)h(than)f(zero,)k(the)d(v)-5 b(alue)40
+b(is)g(used)e(as)i(an)g(o\013set)630 664 y(in)33 b(c)m(haracters)i
+(from)f(the)f(end)g(of)h(the)g(v)-5 b(alue)34 b(of)g
+Fr(parameter)p Fu(.)51 b(If)33 b Fr(length)h Fu(ev)-5
+b(aluates)35 b(to)g(a)630 774 y(n)m(um)m(b)s(er)23 b(less)h(than)g
+(zero,)j(it)d(is)h(in)m(terpreted)f(as)g(an)h(o\013set)g(in)f(c)m
+(haracters)h(from)f(the)g(end)g(of)630 883 y(the)31 b(v)-5
+b(alue)31 b(of)g Fr(parameter)38 b Fu(rather)30 b(than)h(a)g(n)m(um)m
+(b)s(er)f(of)g(c)m(haracters,)j(and)d(the)h(expansion)630
+993 y(is)39 b(the)g(c)m(haracters)i(b)s(et)m(w)m(een)f
+Fr(o\013set)i Fu(and)c(that)i(result.)67 b(Note)40 b(that)g(a)g
+(negativ)m(e)h(o\013set)630 1103 y(m)m(ust)27 b(b)s(e)g(separated)g
+(from)g(the)g(colon)i(b)m(y)e(at)h(least)g(one)f(space)h(to)g(a)m(v)m
+(oid)h(b)s(eing)e(confused)630 1212 y(with)j(the)h(`)p
+Ft(:-)p Fu(')f(expansion.)630 1358 y(Here)43 b(are)g(some)f(examples)h
+(illustrating)g(substring)f(expansion)g(on)g(parameters)h(and)630
+1468 y(subscripted)29 b(arra)m(ys:)630 1614 y Ft($)47
+b(string=01234567890abcdefgh)630 1724 y($)g(echo)g(${string:7})630
+1833 y(7890abcdefgh)630 1943 y($)g(echo)g(${string:7:0})630
+2162 y($)g(echo)g(${string:7:2})630 2271 y(78)630 2381
+y($)g(echo)g(${string:7:-2})630 2491 y(7890abcdef)630
+2600 y($)g(echo)g(${string:)e(-7})630 2710 y(bcdefgh)630
+2819 y($)i(echo)g(${string:)e(-7:0})630 3039 y($)i(echo)g(${string:)e
+(-7:2})630 3148 y(bc)630 3258 y($)i(echo)g(${string:)e(-7:-2})630
+3367 y(bcdef)630 3477 y($)i(set)g(--)h(01234567890abcdefgh)630
+3587 y($)f(echo)g(${1:7})630 3696 y(7890abcdefgh)630
+3806 y($)g(echo)g(${1:7:0})630 4025 y($)g(echo)g(${1:7:2})630
+4134 y(78)630 4244 y($)g(echo)g(${1:7:-2})630 4354 y(7890abcdef)630
+4463 y($)g(echo)g(${1:)g(-7})630 4573 y(bcdefgh)630 4682
+y($)g(echo)g(${1:)g(-7:0})630 4902 y($)g(echo)g(${1:)g(-7:2})630
+5011 y(bc)630 5121 y($)g(echo)g(${1:)g(-7:-2})630 5230
+y(bcdef)630 5340 y($)g(array[0]=01234567890abcdef)o(gh)p
+eop end
+%%Page: 29 35
+TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299
+y Ft($)47 b(echo)g(${array[0]:7})630 408 y(7890abcdefgh)630
+518 y($)g(echo)g(${array[0]:7:0})630 737 y($)g(echo)g(${array[0]:7:2})
+630 847 y(78)630 956 y($)g(echo)g(${array[0]:7:-2})630
+1066 y(7890abcdef)630 1176 y($)g(echo)g(${array[0]:)e(-7})630
+1285 y(bcdefgh)630 1395 y($)i(echo)g(${array[0]:)e(-7:0})630
+1614 y($)i(echo)g(${array[0]:)e(-7:2})630 1724 y(bc)630
+1833 y($)i(echo)g(${array[0]:)e(-7:-2})630 1943 y(bcdef)630
+2071 y Fu(If)34 b Fr(parameter)41 b Fu(is)35 b(`)p Ft(@)p
+Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)e(result)g(is)h Fr(length)g
+Fu(p)s(ositional)g(parameters)g(b)s(eginning)630 2180
+y(at)27 b Fr(o\013set)p Fu(.)40 b(A)26 b(negativ)m(e)j
+Fr(o\013set)g Fu(is)d(tak)m(en)h(relativ)m(e)h(to)f(one)g(greater)g
+(than)f(the)g(greatest)i(p)s(o-)630 2290 y(sitional)i(parameter,)f(so)f
+(an)g(o\013set)i(of)e(-1)h(ev)-5 b(aluates)30 b(to)f(the)f(last)h(p)s
+(ositional)g(parameter.)630 2399 y(It)h(is)h(an)f(expansion)g(error)g
+(if)h Fr(length)f Fu(ev)-5 b(aluates)32 b(to)g(a)e(n)m(um)m(b)s(er)f
+(less)i(than)f(zero.)630 2527 y(The)i(follo)m(wing)i(examples)f
+(illustrate)h(substring)d(expansion)i(using)f(p)s(ositional)h(param-)
+630 2637 y(eters:)630 2765 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h
+(6)f(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630
+2874 y($)g(echo)g(${@:7})630 2984 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f
+(f)h(g)f(h)630 3093 y($)g(echo)g(${@:7:0})630 3313 y($)g(echo)g
+(${@:7:2})630 3422 y(7)g(8)630 3532 y($)g(echo)g(${@:7:-2})630
+3641 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630
+3751 y($)g(echo)g(${@:)g(-7:2})630 3861 y(b)g(c)630 3970
+y($)g(echo)g(${@:0})630 4080 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h
+(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 4189 y($)f(echo)g(${@:0:2})
+630 4299 y(./bash)f(1)630 4408 y($)h(echo)g(${@:)g(-7:0})630
+4646 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y)
g(name)g(subscripted)f(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p
-Ft(*)p Fu(',)h(the)e(result)g(is)630 1786 y(the)j Fr(length)g
+Ft(*)p Fu(',)h(the)e(result)g(is)630 4755 y(the)j Fr(length)g
Fu(mem)m(b)s(ers)f(of)h(the)f(arra)m(y)i(b)s(eginning)d(with)i
Ft(${)p Fj(parameter)p Ft([)p Fj(offset)p Ft(]})p Fu(.)60
-b(A)630 1896 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h
+b(A)630 4865 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h
(relativ)m(e)g(to)g(one)f(greater)g(than)g(the)f(maxim)m(um)h(index)f
-(of)h(the)630 2005 y(sp)s(eci\014ed)38 b(arra)m(y)-8
+(of)h(the)630 4975 y(sp)s(eci\014ed)38 b(arra)m(y)-8
b(.)65 b(It)38 b(is)g(an)h(expansion)f(error)f(if)i Fr(length)f
Fu(ev)-5 b(aluates)40 b(to)f(a)g(n)m(um)m(b)s(er)e(less)630
-2115 y(than)30 b(zero.)630 2287 y(These)23 b(examples)i(sho)m(w)e(ho)m
+5084 y(than)30 b(zero.)630 5212 y(These)23 b(examples)i(sho)m(w)e(ho)m
(w)h(y)m(ou)g(can)g(use)f(substring)f(expansion)i(with)f(indexed)g
-(arra)m(ys:)630 2459 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7)
-f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))630 2569
-y($)f(echo)g(${array[@]:7})630 2679 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h
-(e)f(f)h(g)f(h)630 2788 y($)g(echo)g(${array[@]:7:2})630
-2898 y(7)g(8)630 3007 y($)g(echo)g(${array[@]:)e(-7:2})630
-3117 y(b)i(c)630 3226 y($)g(echo)g(${array[@]:)e(-7:-2})630
-3336 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630
-3446 y($)g(echo)g(${array[@]:0})630 3555 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f
-(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 3665
-y($)g(echo)g(${array[@]:0:2})630 3774 y(0)g(1)630 3884
-y($)g(echo)g(${array[@]:)e(-7:0})630 4166 y Fu(Substring)25
+(arra)m(ys:)630 5340 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7)
+f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))p eop end
+%%Page: 30 36
+TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299
+y Ft($)47 b(echo)g(${array[@]:7})630 408 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f
+(d)h(e)f(f)h(g)f(h)630 518 y($)g(echo)g(${array[@]:7:2})630
+628 y(7)g(8)630 737 y($)g(echo)g(${array[@]:)e(-7:2})630
+847 y(b)i(c)630 956 y($)g(echo)g(${array[@]:)e(-7:-2})630
+1066 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630
+1176 y($)g(echo)g(${array[@]:0})630 1285 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f
+(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 1395
+y($)g(echo)g(${array[@]:0:2})630 1504 y(0)g(1)630 1614
+y($)g(echo)g(${array[@]:)e(-7:0})630 1855 y Fu(Substring)25
b(expansion)g(applied)h(to)h(an)f(asso)s(ciativ)m(e)j(arra)m(y)d(pro)s
-(duces)f(unde\014ned)f(results.)630 4338 y(Substring)32
+(duces)f(unde\014ned)f(results.)630 1987 y(Substring)32
b(indexing)i(is)f(zero-based)i(unless)e(the)h(p)s(ositional)g
-(parameters)g(are)g(used,)g(in)630 4448 y(whic)m(h)29
+(parameters)g(are)g(used,)g(in)630 2096 y(whic)m(h)29
b(case)i(the)f(indexing)g(starts)g(at)g(1)g(b)m(y)g(default.)41
b(If)29 b Fr(o\013set)k Fu(is)d(0,)g(and)f(the)h(p)s(ositional)630
-4557 y(parameters)h(are)f(used,)g Ft($0)g Fu(is)g(pre\014xed)g(to)h
-(the)f(list.)150 4792 y Ft(${!)p Fj(prefix)p Ft(*})150
-4902 y(${!)p Fj(prefix)p Ft(@})630 5011 y Fu(Expands)24
+2206 y(parameters)h(are)f(used,)g Ft($0)g Fu(is)g(pre\014xed)g(to)h
+(the)f(list.)150 2359 y Ft(${!)p Fj(prefix)p Ft(*})150
+2469 y(${!)p Fj(prefix)p Ft(@})630 2578 y Fu(Expands)24
b(to)h(the)g(names)g(of)g(v)-5 b(ariables)26 b(whose)f(names)f(b)s
(egin)h(with)f Fr(pre\014x)p Fu(,)i(separated)f(b)m(y)630
-5121 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f
+2688 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f
Fu(sp)s(ecial)i(v)-5 b(ariable.)41 b(When)29 b(`)p Ft(@)p
-Fu(')g(is)g(used)f(and)h(the)g(expan-)630 5230 y(sion)35
+Fu(')g(is)g(used)f(and)h(the)g(expan-)630 2798 y(sion)35
b(app)s(ears)g(within)f(double)h(quotes,)i(eac)m(h)f(v)-5
b(ariable)36 b(name)f(expands)g(to)g(a)h(separate)630
-5340 y(w)m(ord.)p eop end
-%%Page: 29 35
-TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)150 299
-y Ft(${!)p Fj(name)p Ft([@]})150 408 y(${!)p Fj(name)p
-Ft([*]})630 518 y Fu(If)26 b Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v)
--5 b(ariable,)29 b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)
-g(\(k)m(eys\))h(assigned)630 628 y(in)c Fr(name)p Fu(.)39
-b(If)24 b Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8
-b(,)27 b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24
-b(set)h(and)f(n)m(ull)g(otherwise.)630 737 y(When)39
-b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f(the)i(expansion)f(app)s(ears)g
-(within)f(double)h(quotes,)k(eac)m(h)d(k)m(ey)630 847
-y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 1011
-y Ft(${#)p Fj(parameter)p Ft(})630 1121 y Fu(The)40 b(length)g(in)g(c)m
-(haracters)i(of)e(the)h(expanded)e(v)-5 b(alue)41 b(of)f
-Fr(parameter)47 b Fu(is)40 b(substituted.)630 1230 y(If)i
-Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p
+2907 y(w)m(ord.)150 3061 y Ft(${!)p Fj(name)p Ft([@]})150
+3170 y(${!)p Fj(name)p Ft([*]})630 3280 y Fu(If)26 b
+Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v)-5 b(ariable,)29
+b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)g(\(k)m(eys\))h
+(assigned)630 3389 y(in)c Fr(name)p Fu(.)39 b(If)24 b
+Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 b(,)27
+b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 b(set)h(and)f(n)m(ull)g
+(otherwise.)630 3499 y(When)39 b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f
+(the)i(expansion)f(app)s(ears)g(within)f(double)h(quotes,)k(eac)m(h)d
+(k)m(ey)630 3608 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150
+3762 y Ft(${#)p Fj(parameter)p Ft(})630 3871 y Fu(The)40
+b(length)g(in)g(c)m(haracters)i(of)e(the)h(expanded)e(v)-5
+b(alue)41 b(of)f Fr(parameter)47 b Fu(is)40 b(substituted.)630
+3981 y(If)i Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p
Ft(@)p Fu(',)k(the)c(v)-5 b(alue)43 b(substituted)f(is)h(the)g(n)m(um)m
-(b)s(er)f(of)h(p)s(ositional)630 1340 y(parameters.)i(If)32
+(b)s(er)f(of)h(p)s(ositional)630 4091 y(parameters.)i(If)32
b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m
(y)g(`)p Ft(*)p Fu(')h(or)g(`)p Ft(@)p Fu(',)g(the)g(v)-5
-b(alue)630 1450 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i
+b(alue)630 4200 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i
(elemen)m(ts)i(in)d(the)h(arra)m(y)-8 b(.)43 b(If)30
-b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 1559
+b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 4310
y(arra)m(y)37 b(name)g(subscripted)f(b)m(y)h(a)g(negativ)m(e)i(n)m(um)m
(b)s(er,)f(that)f(n)m(um)m(b)s(er)f(is)g(in)m(terpreted)i(as)630
-1669 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f
+4419 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f
(index)g(of)g Fr(parameter)p Fu(,)50 b(so)c(negativ)m(e)630
-1778 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f
+4529 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f
(arra)m(y)-8 b(,)32 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)630
-1888 y(last)g(elemen)m(t.)150 2052 y Ft(${)p Fj(parameter)p
-Ft(#)p Fj(word)p Ft(})150 2162 y(${)p Fj(parameter)p
-Ft(##)p Fj(word)p Ft(})630 2271 y Fu(The)43 b Fr(w)m(ord)k
+4639 y(last)g(elemen)m(t.)150 4792 y Ft(${)p Fj(parameter)p
+Ft(#)p Fj(word)p Ft(})150 4902 y(${)p Fj(parameter)p
+Ft(##)p Fj(word)p Ft(})630 5011 y Fu(The)43 b Fr(w)m(ord)k
Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i
-(according)f(to)h(the)630 2381 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w)
+(according)f(to)h(the)630 5121 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w)
h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f
-(33\).)46 b(If)32 b(the)630 2491 y(pattern)37 b(matc)m(hes)h(the)f(b)s
+(36\).)46 b(If)32 b(the)630 5230 y(pattern)37 b(matc)m(hes)h(the)f(b)s
(eginning)f(of)h(the)g(expanded)f(v)-5 b(alue)38 b(of)f
-Fr(parameter)p Fu(,)i(then)e(the)630 2600 y(result)f(of)h(the)f
+Fr(parameter)p Fu(,)i(then)e(the)630 5340 y(result)f(of)h(the)f
(expansion)h(is)f(the)h(expanded)e(v)-5 b(alue)37 b(of)g
-Fr(parameter)43 b Fu(with)36 b(the)h(shortest)630 2710
+Fr(parameter)43 b Fu(with)36 b(the)h(shortest)p eop end
+%%Page: 31 37
+TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)630 299
y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(#)p Fu(')g(case\))h(or)e
(the)h(longest)h(matc)m(hing)f(pattern)g(\(the)g(`)p
-Ft(##)p Fu(')g(case\))630 2819 y(deleted.)49 b(If)32
+Ft(##)p Fu(')g(case\))630 408 y(deleted.)49 b(If)32 b
+Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p
+Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 b(al)34 b(op)s(eration)g(is)
+f(applied)f(to)630 518 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f
+(turn,)h(and)e(the)h(expansion)g(is)h(the)f(resultan)m(t)h(list.)61
+b(If)630 628 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5
+b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p
+Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 737
+y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e(of)h
+(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630
+847 y(the)h(resultan)m(t)g(list.)150 1019 y Ft(${)p Fj(parameter)p
+Ft(\045)p Fj(word)p Ft(})150 1129 y(${)p Fj(parameter)p
+Ft(\045\045)p Fj(word)p Ft(})630 1238 y Fu(The)43 b Fr(w)m(ord)k
+Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i
+(according)f(to)h(the)630 1348 y(rules)f(describ)s(ed)g(b)s(elo)m(w)h
+(\(see)h(Section)g(3.5.8.1)h([P)m(attern)f(Matc)m(hing],)51
+b(page)45 b(36\).)85 b(If)630 1457 y(the)43 b(pattern)g(matc)m(hes)h(a)
+g(trailing)g(p)s(ortion)e(of)h(the)g(expanded)g(v)-5
+b(alue)43 b(of)g Fr(parameter)p Fu(,)630 1567 y(then)c(the)g(result)g
+(of)h(the)f(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f
+Fr(parameter)46 b Fu(with)39 b(the)h(shortest)630 1677
+y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e
+(the)h(longest)h(matc)m(hing)f(pattern)g(\(the)g(`)p
+Ft(\045\045)p Fu(')g(case\))630 1786 y(deleted.)49 b(If)32
b Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p
Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 b(al)34 b(op)s(eration)g(is)
-f(applied)f(to)630 2929 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f
+f(applied)f(to)630 1896 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f
(turn,)h(and)e(the)h(expansion)g(is)h(the)f(resultan)m(t)h(list.)61
-b(If)630 3039 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5
+b(If)630 2005 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5
b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p
-Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 3148
+Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 2115
y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e(of)h
(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630
-3258 y(the)h(resultan)m(t)g(list.)150 3422 y Ft(${)p
-Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150 3532 y(${)p
-Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 3641
-y Fu(The)43 b Fr(w)m(ord)k Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h
-(pattern)g(and)f(matc)m(hed)i(according)f(to)h(the)630
-3751 y(rules)f(describ)s(ed)g(b)s(elo)m(w)h(\(see)h(Section)g(3.5.8.1)h
-([P)m(attern)f(Matc)m(hing],)51 b(page)45 b(33\).)85
-b(If)630 3861 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s
-(ortion)e(of)h(the)g(expanded)g(v)-5 b(alue)43 b(of)g
-Fr(parameter)p Fu(,)630 3970 y(then)c(the)g(result)g(of)h(the)f
-(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fr(parameter)46
-b Fu(with)39 b(the)h(shortest)630 4080 y(matc)m(hing)31
-b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e(the)h(longest)h
-(matc)m(hing)f(pattern)g(\(the)g(`)p Ft(\045\045)p Fu(')g(case\))630
-4189 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33
-b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5
-b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 4299 y(eac)m(h)38
-b(p)s(ositional)g(parameter)g(in)f(turn,)h(and)e(the)h(expansion)g(is)h
-(the)f(resultan)m(t)h(list.)61 b(If)630 4408 y Fr(parameter)38
-b Fu(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h
-(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5
-b(al)630 4518 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m
-(b)s(er)e(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g
-(is)630 4628 y(the)h(resultan)m(t)g(list.)150 4792 y
-Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p
-Ft(})630 4902 y Fu(The)37 b Fr(pattern)g Fu(is)g(expanded)g(to)h(pro)s
-(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630
-5011 y Fr(P)m(arameter)46 b Fu(is)38 b(expanded)f(and)g(the)i(longest)g
-(matc)m(h)g(of)f Fr(pattern)g Fu(against)h(its)f(v)-5
-b(alue)39 b(is)630 5121 y(replaced)31 b(with)g Fr(string)p
-Fu(.)42 b(The)30 b(matc)m(h)h(is)g(p)s(erformed)f(according)h(to)h(the)
-f(rules)f(describ)s(ed)630 5230 y(b)s(elo)m(w)f(\(see)h(Section)g
-(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f(33\).)41
-b(If)29 b Fr(pattern)g Fu(b)s(egins)f(with)630 5340 y(`)p
-Ft(/)p Fu(',)43 b(all)e(matc)m(hes)g(of)f Fr(pattern)g
-Fu(are)h(replaced)f(with)g Fr(string)p Fu(.)69 b(Normally)41
-b(only)f(the)h(\014rst)p eop end
-%%Page: 30 36
-TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299
-y(matc)m(h)28 b(is)f(replaced.)40 b(If)26 b Fr(pattern)h
-Fu(b)s(egins)f(with)h(`)p Ft(#)p Fu(',)h(it)f(m)m(ust)g(matc)m(h)h(at)g
-(the)f(b)s(eginning)f(of)630 408 y(the)32 b(expanded)f(v)-5
-b(alue)32 b(of)g Fr(parameter)p Fu(.)45 b(If)31 b Fr(pattern)h
-Fu(b)s(egins)f(with)g(`)p Ft(\045)p Fu(',)i(it)f(m)m(ust)g(matc)m(h)g
-(at)630 518 y(the)24 b(end)f(of)h(the)h(expanded)e(v)-5
-b(alue)24 b(of)g Fr(parameter)p Fu(.)39 b(If)24 b Fr(string)31
-b Fu(is)24 b(n)m(ull,)i(matc)m(hes)f(of)f Fr(pattern)630
-628 y Fu(are)36 b(deleted)g(and)f(the)g Ft(/)g Fu(follo)m(wing)i
-Fr(pattern)e Fu(ma)m(y)h(b)s(e)f(omitted.)57 b(If)34
-b(the)i Ft(nocasematch)630 737 y Fu(shell)31 b(option)h(\(see)g(the)g
-(description)f(of)g Ft(shopt)f Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f
-(Builtin],)630 847 y(page)45 b(66\))h(is)f(enabled,)j(the)d(matc)m(h)g
-(is)g(p)s(erformed)e(without)i(regard)f(to)h(the)g(case)h(of)630
-956 y(alphab)s(etic)36 b(c)m(haracters.)56 b(If)34 b
-Fr(parameter)42 b Fu(is)36 b(`)p Ft(@)p Fu(')f(or)g(`)p
-Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)630
-1066 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e
-(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630
-1176 y(list.)38 b(If)21 b Fr(parameter)28 b Fu(is)22
-b(an)f(arra)m(y)h(v)-5 b(ariable)22 b(subscripted)e(with)h(`)p
-Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)j(the)d(substitution)630
-1285 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e
-(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630
-1395 y(the)h(resultan)m(t)g(list.)150 1551 y Ft(${)p
-Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 1661 y(${)p
-Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 1771 y(${)p
-Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 1880 y(${)p
-Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 1990 y Fu(This)36
-b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f(alphab)s(etic)g(c)m
-(haracters)h(in)e Fr(parameter)p Fu(.)59 b(The)630 2099
-y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s(duce)d(a)j(pattern)e
-(just)g(as)h(in)g(\014lename)g(expansion.)47 b(Eac)m(h)630
-2209 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31
+2225 y(the)h(resultan)m(t)g(list.)150 2397 y Ft(${)p
+Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p
+Ft(})150 2506 y(${)p Fj(parameter)p Ft(//)p Fj(pattern)p
+Ft(/)p Fj(str)o(ing)p Ft(})150 2616 y(${)p Fj(parameter)p
+Ft(/#)p Fj(pattern)p Ft(/)p Fj(str)o(ing)p Ft(})150 2725
+y(${)p Fj(parameter)p Ft(/\045)p Fj(pattern)p Ft(/)p
+Fj(str)o(ing)p Ft(})630 2835 y Fu(The)37 b Fr(pattern)g
+Fu(is)g(expanded)g(to)h(pro)s(duce)e(a)h(pattern)g(just)g(as)h(in)e
+(\014lename)i(expansion.)630 2945 y Fr(P)m(arameter)46
+b Fu(is)38 b(expanded)f(and)g(the)i(longest)g(matc)m(h)g(of)f
+Fr(pattern)g Fu(against)h(its)f(v)-5 b(alue)39 b(is)630
+3054 y(replaced)30 b(with)e Fr(string)p Fu(.)41 b Fr(string)c
+Fu(undergo)s(es)28 b(tilde)i(expansion,)f(parameter)h(and)e(v)-5
+b(ariable)630 3164 y(expansion,)25 b(arithmetic)g(expansion,)g(command)
+e(and)g(pro)s(cess)g(substitution,)i(and)e(quote)630
+3273 y(remo)m(v)-5 b(al.)54 b(The)33 b(matc)m(h)j(is)e(p)s(erformed)f
+(according)i(to)g(the)f(rules)g(describ)s(ed)f(b)s(elo)m(w)i(\(see)630
+3383 y(Section)c(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)g(page)f(36\).)
+630 3524 y(In)45 b(the)g(\014rst)g(form)g(ab)s(o)m(v)m(e,)50
+b(only)c(the)f(\014rst)g(matc)m(h)h(is)f(replaced.)86
+b(If)45 b(there)h(are)g(t)m(w)m(o)630 3634 y(slashes)28
+b(separating)g Fr(parameter)35 b Fu(and)27 b Fr(pattern)g
+Fu(\(the)i(second)e(form)g(ab)s(o)m(v)m(e\),)j(all)f(matc)m(hes)630
+3743 y(of)d Fr(pattern)g Fu(are)g(replaced)g(with)f Fr(string)p
+Fu(.)40 b(If)25 b Fr(pattern)h Fu(is)f(preceded)h(b)m(y)f(`)p
+Ft(#)p Fu(')h(\(the)h(third)d(form)630 3853 y(ab)s(o)m(v)m(e\),)32
+b(it)e(m)m(ust)f(matc)m(h)i(at)f(the)g(b)s(eginning)e(of)i(the)g
+(expanded)f(v)-5 b(alue)30 b(of)f Fr(parameter)p Fu(.)41
+b(If)630 3962 y Fr(pattern)28 b Fu(is)g(preceded)g(b)m(y)g(`)p
+Ft(\045)p Fu(')g(\(the)h(fourth)e(form)h(ab)s(o)m(v)m(e\),)i(it)f(m)m
+(ust)f(matc)m(h)h(at)g(the)f(end)g(of)630 4072 y(the)i(expanded)e(v)-5
+b(alue)30 b(of)g Fr(parameter)p Fu(.)41 b(If)28 b(the)i(expansion)f(of)
+h Fr(string)37 b Fu(is)29 b(n)m(ull,)h(matc)m(hes)h(of)630
+4181 y Fr(pattern)d Fu(are)g(deleted.)41 b(If)28 b Fr(string)35
+b Fu(is)28 b(n)m(ull,)h(matc)m(hes)g(of)f Fr(pattern)g
+Fu(are)h(deleted)f(and)g(the)g(`)p Ft(/)p Fu(')630 4291
+y(follo)m(wing)k Fr(pattern)e Fu(ma)m(y)h(b)s(e)f(omitted.)630
+4432 y(If)f(the)h Ft(patsub_replacement)25 b Fu(shell)30
+b(option)g(is)f(enabled)h(using)f Ft(shopt)p Fu(,)g(an)m(y)h(unquoted)
+630 4542 y(instances)40 b(of)g(`)p Ft(&)p Fu(')g(in)f
+Fr(string)48 b Fu(are)40 b(replaced)g(with)g(the)g(matc)m(hing)g(p)s
+(ortion)g(of)g Fr(pattern)p Fu(.)630 4651 y(This)30 b(is)g(in)m(tended)
+g(to)h(duplicate)g(a)g(common)g Ft(sed)e Fu(idiom.)630
+4792 y(Quoting)g(an)m(y)f(part)h(of)f Fr(string)36 b
+Fu(inhibits)28 b(replacemen)m(t)i(in)e(the)g(expansion)h(of)f(the)h
+(quoted)630 4902 y(p)s(ortion,)j(including)g(replacemen)m(t)h(strings)f
+(stored)g(in)g(shell)g(v)-5 b(ariables.)46 b(Bac)m(kslash)34
+b(will)630 5011 y(escap)s(e)k(`)p Ft(&)p Fu(')g(in)f
+Fr(string)8 b Fu(;)42 b(the)c(bac)m(kslash)g(is)g(remo)m(v)m(ed)g(in)g
+(order)f(to)h(p)s(ermit)f(a)i(literal)g(`)p Ft(&)p Fu(')630
+5121 y(in)31 b(the)h(replacemen)m(t)h(string.)44 b(Users)32
+b(should)e(tak)m(e)k(care)e(if)g Fr(string)39 b Fu(is)32
+b(double-quoted)f(to)630 5230 y(a)m(v)m(oid)37 b(un)m(w)m(an)m(ted)f
+(in)m(teractions)i(b)s(et)m(w)m(een)e(the)g(bac)m(kslash)h(and)e
+(double-quoting,)j(since)630 5340 y(bac)m(kslash)31 b(has)f(sp)s(ecial)
+h(meaning)f(within)g(double)f(quotes.)42 b(P)m(attern)31
+b(substitution)f(p)s(er-)p eop end
+%%Page: 32 38
+TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)630 299
+y(forms)28 b(the)h(c)m(hec)m(k)i(for)d(unquoted)g(`)p
+Ft(&)p Fu(')h(after)g(expanding)g Fr(string)p Fu(,)g(so)g(users)f
+(should)g(ensure)630 408 y(to)33 b(prop)s(erly)e(quote)i(an)m(y)f(o)s
+(ccurrences)g(of)h(`)p Ft(&)p Fu(')f(they)g(w)m(an)m(t)h(to)g(b)s(e)f
+(tak)m(en)h(literally)h(in)e(the)630 518 y(replacemen)m(t)k(and)e
+(ensure)g(an)m(y)h(instances)g(of)g(`)p Ft(&)p Fu(')f(they)h(w)m(an)m
+(t)g(to)h(b)s(e)e(replaced)h(are)g(un-)630 628 y(quoted.)630
+756 y(F)-8 b(or)31 b(instance,)870 883 y Ft(var=abcdef)870
+993 y(rep='&)46 b(')870 1103 y(echo)h(${var/abc/&)d(})870
+1212 y(echo)j("${var/abc/&)d(}")870 1322 y(echo)j(${var/abc/$rep})870
+1431 y(echo)g("${var/abc/$rep}")630 1559 y Fu(will)31
+b(displa)m(y)f(four)g(lines)h(of)f Ft(")p Fu(ab)s(c)g(def)p
+Ft(")p Fu(,)g(while)870 1687 y Ft(var=abcdef)870 1797
+y(rep='&)46 b(')870 1906 y(echo)h(${var/abc/\\&)d(})870
+2016 y(echo)j("${var/abc/\\&)d(}")870 2125 y(echo)j(${var/abc/"&)d("})
+870 2235 y(echo)j(${var/abc/"$rep"})630 2363 y Fu(will)34
+b(displa)m(y)g(four)g(lines)g(of)g Ft(")p Fu(&)f(def)p
+Ft(")p Fu(.)51 b(Lik)m(e)35 b(the)f(pattern)g(remo)m(v)-5
+b(al)35 b(op)s(erators,)g(double)630 2472 y(quotes)23
+b(surrounding)c(the)k(replacemen)m(t)g(string)f(quote)h(the)f(expanded)
+f(c)m(haracters,)26 b(while)630 2582 y(double)43 b(quotes)i(enclosing)f
+(the)g(en)m(tire)h(parameter)f(substitution)f(do)h(not,)k(since)c(the)
+630 2692 y(expansion)e(is)h(p)s(erformed)e(in)h(a)h(con)m(text)h(that)f
+(do)s(esn't)f(tak)m(e)i(an)m(y)f(enclosing)g(double)630
+2801 y(quotes)31 b(in)m(to)g(accoun)m(t.)630 2929 y(Since)24
+b(bac)m(kslash)i(can)e(escap)s(e)h(`)p Ft(&)p Fu(',)h(it)f(can)g(also)h
+(escap)s(e)f(a)f(bac)m(kslash)i(in)e(the)g(replacemen)m(t)630
+3039 y(string.)39 b(This)26 b(means)g(that)h(`)p Ft(\\\\)p
+Fu(')g(will)f(insert)h(a)f(literal)i(bac)m(kslash)f(in)m(to)h(the)e
+(replacemen)m(t,)630 3148 y(so)31 b(these)f(t)m(w)m(o)i
+Ft(echo)d Fu(commands)870 3276 y Ft(var=abcdef)870 3386
+y(rep='\\\\&xyz')870 3495 y(echo)47 b(${var/abc/\\\\&xyz})870
+3605 y(echo)g(${var/abc/$rep})630 3733 y Fu(will)31 b(b)s(oth)e(output)
+h(`)p Ft(\\abcxyzdef)p Fu('.)630 3861 y(It)g(should)g(rarely)g(b)s(e)g
+(necessary)h(to)g(enclose)h(only)e Fr(string)38 b Fu(in)30
+b(double)g(quotes.)630 3988 y(If)j(the)h Ft(nocasematch)d
+Fu(shell)i(option)h(\(see)h(the)f(description)f(of)h
+Ft(shopt)e Fu(in)i(Section)g(4.3.2)630 4098 y([The)23
+b(Shopt)g(Builtin],)j(page)e(71\))h(is)e(enabled,)i(the)f(matc)m(h)g
+(is)g(p)s(erformed)e(without)h(regard)630 4208 y(to)31
+b(the)f(case)h(of)g(alphab)s(etic)f(c)m(haracters.)42
+b(If)30 b Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p
+Ft(*)p Fu(',)h(the)f(substitution)630 4317 y(op)s(eration)g(is)f
+(applied)g(to)h(eac)m(h)g(p)s(ositional)g(parameter)g(in)e(turn,)h(and)
+g(the)g(expansion)g(is)630 4427 y(the)i(resultan)m(t)h(list.)45
+b(If)30 b Fr(parameter)39 b Fu(is)31 b(an)g(arra)m(y)h(v)-5
+b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p
+Ft(*)p Fu(',)630 4536 y(the)e(substitution)g(op)s(eration)h(is)f
+(applied)g(to)h(eac)m(h)h(mem)m(b)s(er)e(of)g(the)g(arra)m(y)h(in)f
+(turn,)g(and)630 4646 y(the)h(expansion)f(is)g(the)h(resultan)m(t)g
+(list.)150 4792 y Ft(${)p Fj(parameter)p Ft(^)p Fj(pattern)p
+Ft(})150 4902 y(${)p Fj(parameter)p Ft(^^)p Fj(pattern)p
+Ft(})150 5011 y(${)p Fj(parameter)p Ft(,)p Fj(pattern)p
+Ft(})150 5121 y(${)p Fj(parameter)p Ft(,,)p Fj(pattern)p
+Ft(})630 5230 y Fu(This)36 b(expansion)g(mo)s(di\014es)g(the)g(case)i
+(of)f(alphab)s(etic)g(c)m(haracters)h(in)e Fr(parameter)p
+Fu(.)59 b(The)630 5340 y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s
+(duce)d(a)j(pattern)e(just)g(as)h(in)g(\014lename)g(expansion.)47
+b(Eac)m(h)p eop end
+%%Page: 33 39
+TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)630 299
+y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31
b(of)f Fr(parameter)37 b Fu(is)30 b(tested)h(against)h
-Fr(pattern)p Fu(,)e(and,)g(if)630 2318 y(it)j(matc)m(hes)h(the)g
+Fr(pattern)p Fu(,)e(and,)g(if)630 408 y(it)j(matc)m(hes)h(the)g
(pattern,)f(its)h(case)g(is)f(con)m(v)m(erted.)49 b(The)33
-b(pattern)g(should)f(not)h(attempt)630 2428 y(to)f(matc)m(h)g(more)f
-(than)g(one)g(c)m(haracter.)44 b(The)30 b(`)p Ft(^)p
-Fu(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m(ercase)i(letters)630
-2538 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p
-Ft(,)p Fu(')g(op)s(erator)g(con)m(v)m(erts)i(matc)m(hing)f(upp)s
-(ercase)630 2647 y(letters)e(to)f(lo)m(w)m(ercase.)50
-b(The)32 b(`)p Ft(^^)p Fu(')h(and)f(`)p Ft(,,)p Fu(')g(expansions)h
-(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630
-2757 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30
-b(the)e(`)p Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m
-(h)h(and)f(con)m(v)m(ert)i(only)630 2866 y(the)37 b(\014rst)g(c)m
-(haracter)i(in)e(the)g(expanded)g(v)-5 b(alue.)61 b(If)37
-b Fr(pattern)g Fu(is)h(omitted,)i(it)e(is)f(treated)630
-2976 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m
-(ery)f(c)m(haracter.)61 b(If)37 b Fr(parameter)43 b Fu(is)37
-b(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p Fu(',)j(the)e(case)630
-3086 y(mo)s(di\014cation)29 b(op)s(eration)f(is)g(applied)g(to)h(eac)m
-(h)h(p)s(ositional)f(parameter)f(in)g(turn,)g(and)g(the)630
-3195 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65
-b(If)37 b Fr(parameter)46 b Fu(is)38 b(an)g(arra)m(y)g(v)-5
-b(ariable)39 b(subscripted)630 3305 y(with)26 b(`)p Ft(@)p
-Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h(mo)s(di\014cation)f(op)s
-(eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m(b)s(er)e(of)h(the)630
-3414 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h(expansion)f(is)g(the)h
-(resultan)m(t)g(list.)150 3571 y Ft(${)p Fj(parameter)p
-Ft(@)p Fj(operator)p Ft(})630 3680 y Fu(The)d(expansion)h(is)f(either)h
-(a)g(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g
-Fr(parameter)35 b Fu(or)29 b(informa-)630 3790 y(tion)e(ab)s(out)f
-Fr(parameter)33 b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5
-b(alue)26 b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27
-b Fr(op)s(erator)630 3900 y Fu(is)j(a)h(single)g(letter:)630
-4056 y Ft(U)432 b Fu(The)31 b(expansion)g(is)g(a)g(string)h(that)f(is)h
-(the)f(v)-5 b(alue)32 b(of)f Fr(parameter)38 b Fu(with)31
-b(lo)m(w-)1110 4166 y(ercase)g(alphab)s(etic)g(c)m(haracters)h(con)m(v)
-m(erted)g(to)f(upp)s(ercase.)630 4322 y Ft(u)432 b Fu(The)34
-b(expansion)g(is)g(a)h(string)f(that)h(is)g(the)f(v)-5
-b(alue)35 b(of)f Fr(parameter)42 b Fu(with)34 b(the)1110
-4432 y(\014rst)c(c)m(haracter)i(con)m(v)m(erted)f(to)h(upp)s(ercase,)d
-(if)i(it)g(is)f(alphab)s(etic.)630 4589 y Ft(L)432 b
-Fu(The)33 b(expansion)h(is)g(a)g(string)g(that)h(is)f(the)g(v)-5
-b(alue)34 b(of)g Fr(parameter)41 b Fu(with)34 b(up-)1110
-4698 y(p)s(ercase)c(alphab)s(etic)h(c)m(haracters)h(con)m(v)m(erted)g
-(to)f(lo)m(w)m(ercase.)630 4855 y Ft(Q)432 b Fu(The)30
-b(expansion)h(is)g(a)g(string)f(that)i(is)f(the)g(v)-5
+b(pattern)g(should)f(not)h(attempt)630 518 y(to)e(matc)m(h)g(more)g
+(than)f(one)h(c)m(haracter.)630 650 y(The)f(`)p Ft(^)p
+Fu(')g(op)s(erator)g(con)m(v)m(erts)i(lo)m(w)m(ercase)g(letters)g(matc)
+m(hing)f Fr(pattern)f Fu(to)h(upp)s(ercase;)f(the)630
+760 y(`)p Ft(,)p Fu(')25 b(op)s(erator)f(con)m(v)m(erts)i(matc)m(hing)g
+(upp)s(ercase)d(letters)j(to)f(lo)m(w)m(ercase.)41 b(The)24
+b(`)p Ft(^^)p Fu(')g(and)g(`)p Ft(,,)p Fu(')630 870 y(expansions)31
+b(con)m(v)m(ert)i(eac)m(h)g(matc)m(hed)f(c)m(haracter)h(in)e(the)h
+(expanded)f(v)-5 b(alue;)32 b(the)g(`)p Ft(^)p Fu(')g(and)630
+979 y(`)p Ft(,)p Fu(')24 b(expansions)f(matc)m(h)i(and)e(con)m(v)m(ert)
+j(only)d(the)h(\014rst)f(c)m(haracter)j(in)d(the)h(expanded)f(v)-5
+b(alue.)630 1089 y(If)30 b Fr(pattern)g Fu(is)h(omitted,)g(it)g(is)g
+(treated)g(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)f(whic)m(h)g(matc)m(hes)i(ev)
+m(ery)f(c)m(haracter.)630 1221 y(If)23 b Fr(parameter)31
+b Fu(is)24 b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(case)h(mo)
+s(di\014cation)f(op)s(eration)g(is)g(applied)g(to)g(eac)m(h)h(p)s(osi-)
+630 1331 y(tional)h(parameter)e(in)h(turn,)f(and)g(the)h(expansion)f
+(is)g(the)h(resultan)m(t)g(list.)40 b(If)23 b Fr(parameter)32
+b Fu(is)630 1440 y(an)e(arra)m(y)g(v)-5 b(ariable)31
+b(subscripted)d(with)i(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p
+Fu(',)i(the)f(case)g(mo)s(di\014cation)h(op)s(eration)f(is)630
+1550 y(applied)d(to)g(eac)m(h)h(mem)m(b)s(er)e(of)h(the)g(arra)m(y)g
+(in)g(turn,)g(and)f(the)h(expansion)f(is)h(the)g(resultan)m(t)630
+1660 y(list.)150 1815 y Ft(${)p Fj(parameter)p Ft(@)p
+Fj(operator)p Ft(})630 1924 y Fu(The)h(expansion)h(is)f(either)h(a)g
+(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g Fr(parameter)35
+b Fu(or)29 b(informa-)630 2034 y(tion)e(ab)s(out)f Fr(parameter)33
+b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5 b(alue)26
+b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27 b Fr(op)s(erator)630
+2144 y Fu(is)j(a)h(single)g(letter:)630 2299 y Ft(U)432
+b Fu(The)31 b(expansion)g(is)g(a)g(string)h(that)f(is)h(the)f(v)-5
+b(alue)32 b(of)f Fr(parameter)38 b Fu(with)31 b(lo)m(w-)1110
+2408 y(ercase)g(alphab)s(etic)g(c)m(haracters)h(con)m(v)m(erted)g(to)f
+(upp)s(ercase.)630 2564 y Ft(u)432 b Fu(The)34 b(expansion)g(is)g(a)h
+(string)f(that)h(is)g(the)f(v)-5 b(alue)35 b(of)f Fr(parameter)42
+b Fu(with)34 b(the)1110 2673 y(\014rst)c(c)m(haracter)i(con)m(v)m
+(erted)f(to)h(upp)s(ercase,)d(if)i(it)g(is)f(alphab)s(etic.)630
+2829 y Ft(L)432 b Fu(The)33 b(expansion)h(is)g(a)g(string)g(that)h(is)f
+(the)g(v)-5 b(alue)34 b(of)g Fr(parameter)41 b Fu(with)34
+b(up-)1110 2938 y(p)s(ercase)c(alphab)s(etic)h(c)m(haracters)h(con)m(v)
+m(erted)g(to)f(lo)m(w)m(ercase.)630 3093 y Ft(Q)432 b
+Fu(The)30 b(expansion)h(is)g(a)g(string)f(that)i(is)f(the)g(v)-5
b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31 b(in)1110
-4964 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i(input.)630
-5121 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h(that)f(is)h
+3203 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i(input.)630
+3358 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h(that)f(is)h
(the)f(v)-5 b(alue)28 b(of)f Fr(parameter)34 b Fu(with)27
-b(bac)m(k-)1110 5230 y(slash)e(escap)s(e)h(sequences)f(expanded)g(as)g
+b(bac)m(k-)1110 3468 y(slash)e(escap)s(e)h(sequences)f(expanded)g(as)g
(with)g(the)h Ft($'...)o(')e Fu(quoting)i(mec)m(h-)1110
-5340 y(anism.)p eop end
-%%Page: 31 37
-TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)630 299
-y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g(string)g(that)g(is)g(the)
-g(result)g(of)g(expanding)f(the)h(v)-5 b(alue)24 b(of)1110
-408 y Fr(parameter)31 b Fu(as)24 b(if)f(it)h(w)m(ere)g(a)g(prompt)f
-(string)h(\(see)g(Section)h(6.9)g([Con)m(trolling)1110
-518 y(the)31 b(Prompt],)f(page)h(98\).)630 676 y Ft(A)432
-b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g(form)g(of)h(an)f
-(assignmen)m(t)h(statemen)m(t)h(or)1110 785 y Ft(declare)h
-Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 b(will)e(recreate)i
-Fr(parameter)36 b Fu(with)1110 895 y(its)31 b(attributes)g(and)e(v)-5
-b(alue.)630 1052 y Ft(K)432 b Fu(Pro)s(duces)33 b(a)i(p)s
-(ossibly-quoted)e(v)m(ersion)i(of)f(the)h(v)-5 b(alue)34
-b(of)h Fr(parameter)p Fu(,)g(ex-)1110 1162 y(cept)46
-b(that)h(it)f(prin)m(ts)f(the)h(v)-5 b(alues)47 b(of)f(indexed)f(and)g
-(asso)s(ciativ)m(e)k(arra)m(ys)1110 1271 y(as)37 b(a)g(sequence)f(of)h
-(quoted)g(k)m(ey-v)-5 b(alue)38 b(pairs)e(\(see)h(Section)h(6.7)f
-([Arra)m(ys],)1110 1381 y(page)31 b(95\).)630 1539 y
-Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f(consisting)h(of)g
-(\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h Fr(pa-)1110
-1648 y(rameter)7 b Fu('s)31 b(attributes.)630 1806 y(If)e
-Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p
+3577 y(anism.)630 3733 y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g
+(string)g(that)g(is)g(the)g(result)g(of)g(expanding)f(the)h(v)-5
+b(alue)24 b(of)1110 3842 y Fr(parameter)31 b Fu(as)24
+b(if)f(it)h(w)m(ere)g(a)g(prompt)f(string)h(\(see)g(Section)h(6.9)g
+([Con)m(trolling)1110 3952 y(the)31 b(Prompt],)f(page)h(104\).)630
+4107 y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g
+(form)g(of)h(an)f(assignmen)m(t)h(statemen)m(t)h(or)1110
+4217 y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31
+b(will)e(recreate)i Fr(parameter)36 b Fu(with)1110 4326
+y(its)31 b(attributes)g(and)e(v)-5 b(alue.)630 4482 y
+Ft(K)432 b Fu(Pro)s(duces)33 b(a)i(p)s(ossibly-quoted)e(v)m(ersion)i
+(of)f(the)h(v)-5 b(alue)34 b(of)h Fr(parameter)p Fu(,)g(ex-)1110
+4591 y(cept)46 b(that)h(it)f(prin)m(ts)f(the)h(v)-5 b(alues)47
+b(of)f(indexed)f(and)g(asso)s(ciativ)m(e)k(arra)m(ys)1110
+4701 y(as)37 b(a)g(sequence)f(of)h(quoted)g(k)m(ey-v)-5
+b(alue)38 b(pairs)e(\(see)h(Section)h(6.7)f([Arra)m(ys],)1110
+4810 y(page)31 b(100\).)630 4966 y Ft(a)432 b Fu(The)30
+b(expansion)g(is)g(a)h(string)f(consisting)h(of)g(\015ag)g(v)-5
+b(alues)30 b(represen)m(ting)h Fr(pa-)1110 5075 y(rameter)7
+b Fu('s)31 b(attributes.)630 5230 y Ft(k)432 b Fu(Lik)m(e)29
+b(the)g(`)p Ft(K)p Fu(')g(transformation,)g(but)f(expands)g(the)g(k)m
+(eys)i(and)d(v)-5 b(alues)29 b(of)g(in-)1110 5340 y(dexed)c(and)f(asso)
+s(ciativ)m(e)k(arra)m(ys)d(to)h(separate)f(w)m(ords)g(after)g(w)m(ord)g
+(splitting.)p eop end
+%%Page: 34 40
+TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)630 299
+y(If)29 b Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p
Ft(*)p Fu(',)g(the)g(op)s(eration)g(is)g(applied)f(to)i(eac)m(h)g(p)s
-(ositional)f(parameter)630 1915 y(in)24 b(turn,)g(and)f(the)h
-(expansion)g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23
-b Fr(parameter)31 b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630
-2025 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p
-Ft(*)p Fu(',)h(the)e(op)s(eration)h(is)g(applied)f(to)h(eac)m(h)h(mem)m
-(b)s(er)e(of)h(the)f(arra)m(y)630 2134 y(in)30 b(turn,)g(and)f(the)i
-(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 2268
-y(The)c(result)h(of)g(the)f(expansion)h(is)g(sub)5 b(ject)27
-b(to)h(w)m(ord)g(splitting)g(and)f(\014lename)h(expansion)630
-2378 y(as)j(describ)s(ed)e(b)s(elo)m(w.)150 2575 y Fk(3.5.4)63
-b(Command)41 b(Substitution)150 2722 y Fu(Command)f(substitution)h
+(ositional)f(parameter)630 408 y(in)24 b(turn,)g(and)f(the)h(expansion)
+g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23 b Fr(parameter)31
+b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630 518 y(subscripted)24
+b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p Ft(*)p Fu(',)h(the)e(op)s(eration)h
+(is)g(applied)f(to)h(eac)m(h)h(mem)m(b)s(er)e(of)h(the)f(arra)m(y)630
+628 y(in)30 b(turn,)g(and)f(the)i(expansion)f(is)h(the)f(resultan)m(t)h
+(list.)630 761 y(The)c(result)h(of)g(the)f(expansion)h(is)g(sub)5
+b(ject)27 b(to)h(w)m(ord)g(splitting)g(and)f(\014lename)h(expansion)630
+870 y(as)j(describ)s(ed)e(b)s(elo)m(w.)150 1067 y Fk(3.5.4)63
+b(Command)41 b(Substitution)150 1214 y Fu(Command)f(substitution)h
(allo)m(ws)i(the)e(output)g(of)h(a)f(command)g(to)h(replace)g(the)g
-(command)f(itself.)150 2831 y(Command)29 b(substitution)h(o)s(ccurs)h
+(command)f(itself.)150 1324 y(Command)29 b(substitution)h(o)s(ccurs)h
(when)e(a)i(command)f(is)g(enclosed)h(as)g(follo)m(ws:)390
-2965 y Ft($\()p Fj(command)p Ft(\))150 3098 y Fu(or)390
-3232 y Ft(`)p Fj(command)p Ft(`)150 3366 y Fu(Bash)20
+1457 y Ft($\()p Fj(command)p Ft(\))150 1590 y Fu(or)390
+1724 y Ft(`)p Fj(command)p Ft(`)150 1857 y Fu(Bash)20
b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i
Fr(command)h Fu(in)d(a)h(subshell)e(en)m(vironmen)m(t)i(and)f
-(replacing)150 3475 y(the)40 b(command)g(substitution)f(with)h(the)g
+(replacing)150 1966 y(the)40 b(command)g(substitution)f(with)h(the)g
(standard)f(output)g(of)h(the)g(command,)i(with)e(an)m(y)g(trailing)150
-3585 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g
+2076 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g
(not)g(deleted,)j(but)d(they)g(ma)m(y)h(b)s(e)e(remo)m(v)m(ed)i(during)
-150 3694 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g
+150 2186 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g
(substitution)h Ft($\(cat)e Fj(file)p Ft(\))g Fu(can)h(b)s(e)g
-(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 3804
+(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 2295
y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275
-3937 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g
+2428 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g
(substitution)g(is)g(used,)h(bac)m(kslash)f(retains)h(its)f(literal)150
-4047 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p
+2538 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p
Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p Fu('.)64
b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g(a)150
-4157 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72
+2648 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72
b(When)41 b(using)f(the)i Ft($\()p Fj(command)p Ft(\))c
-Fu(form,)43 b(all)150 4266 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)
+Fu(form,)43 b(all)150 2757 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)
f(paren)m(theses)h(mak)m(e)g(up)f(the)g(command;)h(none)f(are)h
-(treated)g(sp)s(ecially)-8 b(.)275 4400 y(Command)22
+(treated)g(sp)s(ecially)-8 b(.)275 2890 y(Command)22
b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 b(T)-8
b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g(escap)s(e)
-150 4509 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275
-4643 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f
+150 3000 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275
+3133 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f
(quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion)150
-4753 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150
-4950 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 5097
+3243 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150
+3440 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 3587
y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5
b(aluation)26 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g
-(substitution)150 5206 y(of)31 b(the)f(result.)41 b(The)30
-b(format)g(for)g(arithmetic)i(expansion)e(is:)390 5340
-y Ft($\(\()47 b Fj(expression)e Ft(\)\))p eop end
-%%Page: 32 38
-TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)275 299
-y(The)33 b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g(within)
-f(double)h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150
-408 y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8
-b(.)65 b(All)38 b(tok)m(ens)h(in)f(the)g(expression)f(undergo)g
-(parameter)150 518 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g(command)
-e(substitution,)i(and)e(quote)i(remo)m(v)-5 b(al.)41
-b(The)26 b(result)h(is)g(treated)h(as)150 628 y(the)j(arithmetic)g
-(expression)f(to)h(b)s(e)f(ev)-5 b(aluated.)42 b(Arithmetic)31
-b(expansions)g(ma)m(y)g(b)s(e)e(nested.)275 761 y(The)34
-b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e(according)i(to)g(the)g
-(rules)f(listed)h(b)s(elo)m(w)g(\(see)g(Section)g(6.5)h([Shell)150
-870 y(Arithmetic],)32 b(page)f(93\).)42 b(If)30 b(the)h(expression)f
-(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h(message)g
-(indicating)h(failure)150 980 y(to)f(the)g(standard)e(error)h(and)g(no)
-g(substitution)g(o)s(ccurs.)150 1177 y Fk(3.5.6)63 b(Pro)s(cess)42
-b(Substitution)150 1324 y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i
-(a)e(pro)s(cess's)g(input)f(or)h(output)g(to)h(b)s(e)f(referred)f(to)i
-(using)f(a)g(\014lename.)150 1433 y(It)d(tak)m(es)i(the)f(form)f(of)390
-1567 y Ft(<\()p Fj(list)p Ft(\))150 1700 y Fu(or)390
-1833 y Ft(>\()p Fj(list)p Ft(\))150 1966 y Fu(The)e(pro)s(cess)h
-Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 b(,)30 b(and)e(its)i
-(input)e(or)h(output)f(app)s(ears)h(as)g(a)g(\014lename.)41
-b(This)150 2076 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h
-(to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g(of)g(the)h
-(expansion.)38 b(If)150 2186 y(the)28 b Ft(>\()p Fj(list)p
-Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f(will)h
-(pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 b(If)26
-b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 2295 y(is)g(used,)g(the)
-f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h(should)e(b)s(e)h(read)h(to)
-g(obtain)g(the)f(output)g(of)h Fr(list)p Fu(.)40 b(Note)25
-b(that)150 2405 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m
-(een)i(the)f Ft(<)f Fu(or)h Ft(>)f Fu(and)g(the)h(left)h(paren)m
-(thesis,)f(otherwise)h(the)f(construct)150 2514 y(w)m(ould)j(b)s(e)g
-(in)m(terpreted)g(as)h(a)f(redirection.)59 b(Pro)s(cess)36
-b(substitution)g(is)h(supp)s(orted)d(on)i(systems)g(that)150
-2624 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p
-Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g(naming)g(op)s(en)g
-(\014les.)275 2757 y(When)36 b(a)m(v)-5 b(ailable,)40
-b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m(ultaneously)i
-(with)g(parameter)g(and)150 2867 y(v)-5 b(ariable)31
-b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.)
-150 3064 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150
-3210 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g
-(expansion,)g(command)g(substitution,)g(and)f(arithmetic)150
-3320 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h
-(quotes)h(for)f(w)m(ord)g(splitting.)275 3453 y(The)e(shell)g(treats)i
+(substitution)150 3696 y(of)31 b(the)f(result.)41 b(The)30
+b(format)g(for)g(arithmetic)i(expansion)e(is:)390 3829
+y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 3963 y Fu(The)34
+b Fr(expression)h Fu(undergo)s(es)f(the)h(same)h(expansions)e(as)i(if)f
+(it)g(w)m(ere)h(within)e(double)h(quotes,)i(but)150 4072
+y(double)g(quote)g(c)m(haracters)i(in)d Fr(expression)h
+Fu(are)g(not)g(treated)h(sp)s(ecially)g(and)f(are)g(remo)m(v)m(ed.)61
+b(All)38 b(to-)150 4182 y(k)m(ens)c(in)f(the)h(expression)f(undergo)g
+(parameter)h(and)f(v)-5 b(ariable)34 b(expansion,)h(command)e
+(substitution,)150 4291 y(and)41 b(quote)i(remo)m(v)-5
+b(al.)76 b(The)41 b(result)h(is)g(treated)h(as)f(the)g(arithmetic)h
+(expression)f(to)g(b)s(e)f(ev)-5 b(aluated.)150 4401
+y(Arithmetic)31 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)275
+4534 y(The)k(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e(according)i(to)g
+(the)g(rules)f(listed)h(b)s(elo)m(w)g(\(see)g(Section)g(6.5)h([Shell)
+150 4644 y(Arithmetic],)32 b(page)f(98\).)42 b(If)30
+b(the)h(expression)f(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h
+(message)g(indicating)h(failure)150 4753 y(to)f(the)g(standard)e(error)
+h(and)g(no)g(substitution)g(o)s(ccurs.)150 4950 y Fk(3.5.6)63
+b(Pro)s(cess)42 b(Substitution)150 5097 y Fu(Pro)s(cess)33
+b(substitution)g(allo)m(ws)i(a)e(pro)s(cess's)g(input)f(or)h(output)g
+(to)h(b)s(e)f(referred)f(to)i(using)f(a)g(\014lename.)150
+5207 y(It)d(tak)m(es)i(the)f(form)f(of)390 5340 y Ft(<\()p
+Fj(list)p Ft(\))p eop end
+%%Page: 35 41
+TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)150 299
+y(or)390 426 y Ft(>\()p Fj(list)p Ft(\))150 553 y Fu(The)28
+b(pro)s(cess)h Fr(list)j Fu(is)d(run)e(async)m(hronously)-8
+b(,)30 b(and)e(its)i(input)e(or)h(output)f(app)s(ears)h(as)g(a)g
+(\014lename.)41 b(This)150 663 y(\014lename)25 b(is)g(passed)g(as)g(an)
+g(argumen)m(t)h(to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g
+(of)g(the)h(expansion.)38 b(If)150 772 y(the)28 b Ft(>\()p
+Fj(list)p Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f
+(will)h(pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41
+b(If)26 b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150
+882 y(is)g(used,)g(the)f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h
+(should)e(b)s(e)h(read)h(to)g(obtain)g(the)f(output)g(of)h
+Fr(list)p Fu(.)40 b(Note)25 b(that)150 991 y(no)33 b(space)g(ma)m(y)g
+(app)s(ear)f(b)s(et)m(w)m(een)i(the)f Ft(<)f Fu(or)h
+Ft(>)f Fu(and)g(the)h(left)h(paren)m(thesis,)f(otherwise)h(the)f
+(construct)150 1101 y(w)m(ould)j(b)s(e)g(in)m(terpreted)g(as)h(a)f
+(redirection.)59 b(Pro)s(cess)36 b(substitution)g(is)h(supp)s(orted)d
+(on)i(systems)g(that)150 1210 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p
+Fm(fif)n(o)p Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g
+(naming)g(op)s(en)g(\014les.)275 1337 y(When)36 b(a)m(v)-5
+b(ailable,)40 b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m
+(ultaneously)i(with)g(parameter)g(and)150 1447 y(v)-5
+b(ariable)31 b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)
+i(expansion.)150 1631 y Fk(3.5.7)63 b(W)-10 b(ord)41
+b(Splitting)150 1778 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h
+(parameter)g(expansion,)g(command)g(substitution,)g(and)f(arithmetic)
+150 1888 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h
+(quotes)h(for)f(w)m(ord)g(splitting.)275 2015 y(The)e(shell)g(treats)i
(eac)m(h)g(c)m(haracter)g(of)f Ft($IFS)e Fu(as)i(a)g(delimiter,)h(and)e
-(splits)g(the)h(results)f(of)h(the)g(other)150 3563 y(expansions)22
+(splits)g(the)h(results)f(of)h(the)g(other)150 2125 y(expansions)22
b(in)m(to)i(w)m(ords)e(using)h(these)g(c)m(haracters)h(as)f(\014eld)f
(terminators.)39 b(If)22 b Ft(IFS)g Fu(is)h(unset,)h(or)e(its)h(v)-5
-b(alue)150 3672 y(is)36 b(exactly)j Ft(<space><tab><newline>)p
+b(alue)150 2234 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 3782
+b Ft(<space>)p Fu(,)36 b Ft(<tab>)p Fu(,)h(and)150 2344
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,)150
-3892 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f
+2453 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f
(at)h(the)f(b)s(eginning)f(or)h(end)f(serv)m(es)h(to)h(delimit)f(w)m
-(ords.)150 4001 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5
+(ords.)150 2563 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5
b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f
-(the)h(whitespace)f(c)m(haracters)150 4111 y Ft(space)p
+(the)h(whitespace)f(c)m(haracters)150 2672 y Ft(space)p
Fu(,)29 b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g
(the)f(b)s(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as)
-g(the)150 4220 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5
+g(the)150 2782 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5
b(alue)27 b(of)g Ft(IFS)e Fu(\(an)i Ft(IFS)e Fu(whitespace)i(c)m
-(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 4330
+(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 2892
y Ft(IFS)c Fu(that)h(is)g(not)f Ft(IFS)g Fu(whitespace,)j(along)f(with)
e(an)m(y)h(adjacen)m(t)h Ft(IFS)e Fu(whitespace)h(c)m(haracters,)i
-(delimits)150 4440 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f
+(delimits)150 3001 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f
Ft(IFS)g Fu(whitespace)h(c)m(haracters)h(is)e(also)h(treated)h(as)f(a)f
-(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 4549 y(of)31
+(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 3111 y(of)31
b Ft(IFS)e Fu(is)h(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275
-4682 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g
+3238 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g
Fu(or)g Ft('')p Fu(\))f(are)h(retained)h(and)e(passed)g(to)i(commands)e
-(as)i(empt)m(y)f(strings.)150 4792 y(Unquoted)37 b(implicit)i(n)m(ull)f
+(as)i(empt)m(y)f(strings.)150 3347 y(Unquoted)37 b(implicit)i(n)m(ull)f
(argumen)m(ts,)i(resulting)d(from)g(the)h(expansion)g(of)g(parameters)f
-(that)i(ha)m(v)m(e)150 4902 y(no)32 b(v)-5 b(alues,)33
+(that)i(ha)m(v)m(e)150 3457 y(no)32 b(v)-5 b(alues,)33
b(are)f(remo)m(v)m(ed.)47 b(If)32 b(a)g(parameter)h(with)e(no)h(v)-5
b(alue)33 b(is)f(expanded)f(within)h(double)f(quotes,)j(a)150
-5011 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f
+3567 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f
(passed)g(to)i(a)f(command)g(as)g(an)f(empt)m(y)i(string.)40
-b(When)150 5121 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as)
+b(When)150 3676 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as)
i(part)f(of)g(a)g(w)m(ord)g(whose)g(expansion)g(is)h(non-n)m(ull,)h
-(the)e(n)m(ull)150 5230 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69
+(the)e(n)m(ull)150 3786 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69
b(That)39 b(is,)j(the)e(w)m(ord)f Ft(-d'')f Fu(b)s(ecomes)i
Ft(-d)e Fu(after)i(w)m(ord)f(splitting)h(and)f(n)m(ull)150
-5340 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)p eop end
-%%Page: 33 39
-TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)275 299
-y(Note)31 b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g
-(is)f(p)s(erformed.)150 505 y Fk(3.5.8)63 b(Filename)41
-b(Expansion)150 652 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d
-(the)i Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h
-(4.3.1)g([The)e(Set)h(Builtin],)150 762 y(page)d(62\),)i(Bash)d(scans)h
-(eac)m(h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p
-Ft(*)p Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39
-b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 872 y(app)s(ears,)34
+3895 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 4022 y(Note)31
+b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g(is)f(p)s
+(erformed.)150 4207 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150
+4354 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d(the)i
+Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h(4.3.1)g
+([The)e(Set)h(Builtin],)150 4463 y(page)d(67\),)i(Bash)d(scans)h(eac)m
+(h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p Ft(*)p
+Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39
+b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 4573 y(app)s(ears,)34
b(and)f(is)g(not)h(quoted,)h(then)e(the)h(w)m(ord)f(is)h(regarded)f(as)
h(a)g Fr(pattern)p Fu(,)h(and)e(replaced)h(with)f(an)150
-981 y(alphab)s(etically)41 b(sorted)e(list)h(of)g(\014lenames)f(matc)m
+4682 y(alphab)s(etically)41 b(sorted)e(list)h(of)g(\014lenames)f(matc)m
(hing)i(the)e(pattern)g(\(see)i(Section)f(3.5.8.1)i([P)m(attern)150
-1091 y(Matc)m(hing],)e(page)e(33\).)60 b(If)36 b(no)h(matc)m(hing)g
+4792 y(Matc)m(hing],)e(page)e(36\).)60 b(If)36 b(no)h(matc)m(hing)g
(\014lenames)g(are)g(found,)g(and)f(the)g(shell)h(option)g
-Ft(nullglob)150 1200 y Fu(is)k(disabled,)i(the)f(w)m(ord)e(is)h(left)h
+Ft(nullglob)150 4902 y Fu(is)k(disabled,)i(the)f(w)m(ord)e(is)h(left)h
(unc)m(hanged.)72 b(If)40 b(the)h Ft(nullglob)e Fu(option)i(is)g(set,)k
-(and)40 b(no)h(matc)m(hes)150 1310 y(are)c(found,)g(the)g(w)m(ord)f(is)
+(and)40 b(no)h(matc)m(hes)150 5011 y(are)c(found,)g(the)g(w)m(ord)f(is)
g(remo)m(v)m(ed.)60 b(If)36 b(the)h Ft(failglob)d Fu(shell)j(option)g
-(is)g(set,)i(and)c(no)i(matc)m(hes)h(are)150 1420 y(found,)e(an)g
+(is)g(set,)i(and)c(no)i(matc)m(hes)h(are)150 5121 y(found,)e(an)g
(error)f(message)i(is)f(prin)m(ted)f(and)h(the)g(command)f(is)h(not)g
-(executed.)58 b(If)35 b(the)h(shell)g(option)150 1529
+(executed.)58 b(If)35 b(the)h(shell)g(option)150 5230
y Ft(nocaseglob)e Fu(is)j(enabled,)i(the)e(matc)m(h)h(is)f(p)s
(erformed)e(without)i(regard)g(to)h(the)f(case)h(of)f(alphab)s(etic)150
-1639 y(c)m(haracters.)275 1781 y(When)23 b(a)h(pattern)f(is)h(used)f
-(for)g(\014lename)h(expansion,)h(the)e(c)m(haracter)i(`)p
-Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g(\014lename)150
-1890 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f
-(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g
-Ft(dotglob)150 2000 y Fu(is)k(set.)41 b(The)28 b(\014lenames)g(`)p
-Ft(.)p Fu(')g(and)g(`)p Ft(..)p Fu(')g(m)m(ust)g(alw)m(a)m(ys)i(b)s(e)e
-(matc)m(hed)h(explicitly)-8 b(,)30 b(ev)m(en)f(if)g Ft(dotglob)d
-Fu(is)i(set.)150 2109 y(In)i(other)g(cases,)i(the)e(`)p
-Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8
-b(.)275 2251 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f
+5340 y(c)m(haracters.)p eop end
+%%Page: 36 42
+TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)275 299
+y(When)23 b(a)h(pattern)f(is)h(used)f(for)g(\014lename)h(expansion,)h
+(the)e(c)m(haracter)i(`)p Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g
+(\014lename)150 408 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m
+(ust)h(b)s(e)f(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g
+(shell)h(option)g Ft(dotglob)150 518 y Fu(is)36 b(set.)58
+b(In)35 b(order)g(to)i(matc)m(h)f(the)g(\014lenames)g(`)p
+Ft(.)p Fu(')g(and)g(`)p Ft(..)p Fu(',)h(the)f(pattern)g(m)m(ust)g(b)s
+(egin)f(with)h(`)p Ft(.)p Fu(')g(\(for)150 628 y(example,)42
+b(`)p Ft(.?)p Fu('\),)f(ev)m(en)f(if)f Ft(dotglob)d Fu(is)j(set.)67
+b(If)38 b(the)h Ft(globskipdots)d Fu(shell)j(option)g(is)g(enabled,)i
+(the)150 737 y(\014lenames)33 b(`)p Ft(.)p Fu(')g(and)f(`)p
+Ft(..)p Fu(')h(are)g(nev)m(er)g(matc)m(hed,)h(ev)m(en)g(if)e(the)h
+(pattern)g(b)s(egins)f(with)h(a)g(`)p Ft(.)p Fu('.)48
+b(When)33 b(not)150 847 y(matc)m(hing)e(\014lenames,)g(the)g(`)p
+Ft(.)p Fu(')f(c)m(haracter)i(is)f(not)f(treated)i(sp)s(ecially)-8
+b(.)275 985 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f
(c)m(haracter)j(m)m(ust)d(alw)m(a)m(ys)j(b)s(e)d(matc)m(hed)h
-(explicitly)i(b)m(y)e(a)150 2361 y(slash)d(in)f(the)h(pattern,)h(but)e
+(explicitly)i(b)m(y)e(a)150 1095 y(slash)d(in)f(the)h(pattern,)h(but)e
(in)h(other)g(matc)m(hing)h(con)m(texts)h(it)e(can)g(b)s(e)g(matc)m
-(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 2470 y(c)m(haracter)j(as)f
+(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 1205 y(c)m(haracter)j(as)f
(describ)s(ed)e(b)s(elo)m(w)h(\(see)i(Section)f(3.5.8.1)i([P)m(attern)e
-(Matc)m(hing],)i(page)e(33\).)275 2612 y(See)d(the)g(description)g(of)g
+(Matc)m(hing],)i(page)e(36\).)275 1343 y(See)d(the)g(description)g(of)g
Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g
-(66,)g(for)f(a)g(descrip-)150 2722 y(tion)j(of)f(the)h
-Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p
-Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 2864 y(The)36
-b Ft(GLOBIGNORE)d Fu(shell)k(v)-5 b(ariable)37 b(ma)m(y)g(b)s(e)f(used)
-g(to)h(restrict)g(the)g(set)g(of)g(\014le)f(names)h(matc)m(hing)150
-2973 y(a)42 b(pattern.)74 b(If)41 b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac)
-m(h)e(matc)m(hing)f(\014le)g(name)f(that)h(also)h(matc)m(hes)f(one)g
-(of)g(the)150 3083 y(patterns)34 b(in)g Ft(GLOBIGNORE)d
-Fu(is)k(remo)m(v)m(ed)g(from)f(the)g(list)h(of)f(matc)m(hes.)54
-b(If)33 b(the)i Ft(nocaseglob)c Fu(option)k(is)150 3192
-y(set,)c(the)e(matc)m(hing)i(against)g(the)f(patterns)f(in)h
-Ft(GLOBIGNORE)c Fu(is)k(p)s(erformed)e(without)i(regard)f(to)i(case.)
-150 3302 y(The)d(\014lenames)h Ft(.)g Fu(and)f Ft(..)h
-Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)f
-Fu(is)i(set)g(and)f(not)h(n)m(ull.)41 b(Ho)m(w)m(ev)m(er,)150
-3412 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5
-b(alue)30 b(has)f(the)g(e\013ect)i(of)f(enabling)f(the)h
-Ft(dotglob)d Fu(shell)i(option,)150 3521 y(so)j(all)h(other)f
-(\014lenames)g(b)s(eginning)f(with)h(a)g(`)p Ft(.)p Fu(')g(will)h(matc)
-m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s(eha)m(vior)g(of)h
-(ignoring)150 3631 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p
-Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p Fu(')f(one)h(of)f(the)g(patterns)g
-(in)g Ft(GLOBIGNORE)p Fu(.)37 b(The)29 b Ft(dotglob)150
-3740 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d
-Fu(is)k(unset.)150 3947 y Fk(3.5.8.1)63 b(P)m(attern)40
-b(Matc)m(hing)150 4094 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s
-(ears)f(in)g(a)h(pattern,)i(other)e(than)f(the)h(sp)s(ecial)g(pattern)g
-(c)m(haracters)h(describ)s(ed)150 4203 y(b)s(elo)m(w,)31
-b(matc)m(hes)g(itself.)42 b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y)
-e(not)h(o)s(ccur)f(in)g(a)h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s
-(es)150 4313 y(the)38 b(follo)m(wing)g(c)m(haracter;)43
-b(the)37 b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m
-(hing.)63 b(The)36 b(sp)s(ecial)150 4423 y(pattern)30
-b(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s
-(e)d(matc)m(hed)i(literally)-8 b(.)275 4564 y(The)29
-b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m(e)f(the)g(follo)m
-(wing)h(meanings:)150 4735 y Ft(*)432 b Fu(Matc)m(hes)31
-b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g(string.)41
-b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630
-4844 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h
+(71,)g(for)f(a)g(descrip-)150 1453 y(tion)j(of)f(the)h
+Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(globskipdots)p
+Fu(,)f Ft(failglob)p Fu(,)i(and)h Ft(dotglob)e Fu(options.)275
+1592 y(The)36 b Ft(GLOBIGNORE)d Fu(shell)k(v)-5 b(ariable)37
+b(ma)m(y)g(b)s(e)f(used)g(to)h(restrict)g(the)g(set)g(of)g(\014le)f
+(names)h(matc)m(hing)150 1701 y(a)42 b(pattern.)74 b(If)41
+b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac)m(h)e(matc)m(hing)f(\014le)g(name)
+f(that)h(also)h(matc)m(hes)f(one)g(of)g(the)150 1811
+y(patterns)34 b(in)g Ft(GLOBIGNORE)d Fu(is)k(remo)m(v)m(ed)g(from)f
+(the)g(list)h(of)f(matc)m(hes.)54 b(If)33 b(the)i Ft(nocaseglob)c
+Fu(option)k(is)150 1920 y(set,)c(the)e(matc)m(hing)i(against)g(the)f
+(patterns)f(in)h Ft(GLOBIGNORE)c Fu(is)k(p)s(erformed)e(without)i
+(regard)f(to)i(case.)150 2030 y(The)d(\014lenames)h Ft(.)g
+Fu(and)f Ft(..)h Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f
+Ft(GLOBIGNORE)f Fu(is)i(set)g(and)f(not)h(n)m(ull.)41
+b(Ho)m(w)m(ev)m(er,)150 2139 y(setting)30 b Ft(GLOBIGNORE)d
+Fu(to)j(a)f(non-n)m(ull)g(v)-5 b(alue)30 b(has)f(the)g(e\013ect)i(of)f
+(enabling)f(the)h Ft(dotglob)d Fu(shell)i(option,)150
+2249 y(so)j(all)h(other)f(\014lenames)g(b)s(eginning)f(with)h(a)g(`)p
+Ft(.)p Fu(')g(will)h(matc)m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s
+(eha)m(vior)g(of)h(ignoring)150 2359 y(\014lenames)c(b)s(eginning)f
+(with)h(a)h(`)p Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p
+Fu(')f(one)h(of)f(the)g(patterns)g(in)g Ft(GLOBIGNORE)p
+Fu(.)37 b(The)29 b Ft(dotglob)150 2468 y Fu(option)i(is)f(disabled)g
+(when)g Ft(GLOBIGNORE)d Fu(is)k(unset.)150 2672 y Fk(3.5.8.1)63
+b(P)m(attern)40 b(Matc)m(hing)150 2819 y Fu(An)m(y)24
+b(c)m(haracter)h(that)f(app)s(ears)f(in)g(a)h(pattern,)i(other)e(than)f
+(the)h(sp)s(ecial)g(pattern)g(c)m(haracters)h(describ)s(ed)150
+2928 y(b)s(elo)m(w,)31 b(matc)m(hes)g(itself.)42 b(The)29
+b Fm(nul)h Fu(c)m(haracter)i(ma)m(y)e(not)h(o)s(ccur)f(in)g(a)h
+(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s(es)150 3038
+y(the)38 b(follo)m(wing)g(c)m(haracter;)43 b(the)37 b(escaping)i(bac)m
+(kslash)e(is)h(discarded)f(when)f(matc)m(hing.)63 b(The)36
+b(sp)s(ecial)150 3147 y(pattern)30 b(c)m(haracters)i(m)m(ust)f(b)s(e)e
+(quoted)i(if)f(they)h(are)f(to)i(b)s(e)d(matc)m(hed)i(literally)-8
+b(.)275 3286 y(The)29 b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m
+(e)f(the)g(follo)m(wing)h(meanings:)150 3452 y Ft(*)432
+b Fu(Matc)m(hes)31 b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g
+(string.)41 b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630
+3561 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h
(\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p
-Ft(*)p Fu('s)630 4954 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc)
+Ft(*)p Fu('s)630 3671 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc)
m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630
-5064 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p
+3780 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p
Ft(/)p Fu(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Ft(*)p Fu('s)e(will)g
-(matc)m(h)h(only)f(directories)630 5173 y(and)k(sub)s(directories.)150
-5340 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.)p
-eop end
-%%Page: 34 40
-TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299
-y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g(the)g
-(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters)i
-(separated)e(b)m(y)g(a)630 408 y(h)m(yphen)k(denotes)i(a)g
+(matc)m(h)h(only)f(directories)630 3890 y(and)k(sub)s(directories.)150
+4054 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.)
+150 4217 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g
+(the)g(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters)
+i(separated)e(b)m(y)g(a)630 4327 y(h)m(yphen)k(denotes)i(a)g
Fr(range)g(expression)p Fu(;)f(an)m(y)h(c)m(haracter)h(that)f(falls)g
-(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 518 y(c)m(haracters,)d
+(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 4436 y(c)m(haracters,)d
(inclusiv)m(e,)f(using)d(the)h(curren)m(t)f(lo)s(cale's)j(collating)g
-(sequence)e(and)f(c)m(haracter)630 628 y(set,)31 b(is)f(matc)m(hed.)42
+(sequence)e(and)f(c)m(haracter)630 4546 y(set,)31 b(is)f(matc)m(hed.)42
b(If)30 b(the)g(\014rst)g(c)m(haracter)i(follo)m(wing)g(the)e(`)p
Ft([)p Fu(')h(is)f(a)h(`)p Ft(!)p Fu(')f(or)g(a)h(`)p
-Ft(^)p Fu(')g(then)f(an)m(y)630 737 y(c)m(haracter)c(not)f(enclosed)g
+Ft(^)p Fu(')g(then)f(an)m(y)630 4655 y(c)m(haracter)c(not)f(enclosed)g
(is)g(matc)m(hed.)40 b(A)25 b(`)p Fq(\000)p Fu(')f(ma)m(y)i(b)s(e)e
-(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 847
+(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 4765
y(\014rst)32 b(or)h(last)h(c)m(haracter)h(in)e(the)g(set.)50
b(A)33 b(`)p Ft(])p Fu(')g(ma)m(y)h(b)s(e)e(matc)m(hed)i(b)m(y)f
-(including)g(it)g(as)h(the)630 956 y(\014rst)25 b(c)m(haracter)i(in)e
-(the)h(set.)40 b(The)25 b(sorting)h(order)f(of)h(c)m(haracters)h(in)f
-(range)g(expressions)f(is)630 1066 y(determined)h(b)m(y)h(the)g(curren)
-m(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g
-Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 1176 y Fu(shell)31
-b(v)-5 b(ariables,)31 b(if)f(set.)630 1312 y(F)-8 b(or)34
-b(example,)g(in)f(the)g(default)g(C)f(lo)s(cale,)k(`)p
-Ft([a-dx-z])p Fu(')31 b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p
-Ft([abcdxyz])p Fu('.)630 1422 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m
-(haracters)h(in)e(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s
-(cales)630 1531 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e
-(equiv)-5 b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m
-(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 1641 y(to)34 b(`)p
-Ft([aBbCcDdxXyYz])p Fu(',)c(for)j(example.)49 b(T)-8
-b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)630
-1751 y(ranges)e(in)f(brac)m(k)m(et)i(expressions,)g(y)m(ou)f(can)g
-(force)g(the)g(use)f(of)h(the)g(C)f(lo)s(cale)i(b)m(y)f(setting)630
-1860 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i
-(v)-5 b(ariable)30 b(to)g(the)f(v)-5 b(alue)30 b(`)p
-Ft(C)p Fu(',)g(or)f(enable)h(the)630 1970 y Ft(globasciiranges)c
-Fu(shell)31 b(option.)630 2106 y(Within)23 b(`)p Ft([)p
-Fu(')h(and)e(`)p Ft(])p Fu(',)j Fr(c)m(haracter)g(classes)j
-Fu(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f(the)i(syn)m(tax)f
-Ft([:)p Fr(class)t Ft(:])p Fu(,)630 2216 y(where)30 b
-Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h(follo)m(wing)h(classes)f
-(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 2353
-y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g(lower)
-870 2462 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630
-2599 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m
-(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 b(The)41
-b Ft(word)630 2709 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h
+(including)g(it)g(as)h(the)630 4875 y(\014rst)c(c)m(haracter)j(in)d
+(the)h(set.)43 b(The)31 b(sorting)g(order)g(of)g(c)m(haracters)h(in)f
+(range)g(expressions,)630 4984 y(and)f(the)h(c)m(haracters)h(included)e
+(in)h(the)f(range,)i(are)f(determined)f(b)m(y)h(the)g(curren)m(t)f(lo)s
+(cale)630 5094 y(and)g(the)g(v)-5 b(alues)31 b(of)g(the)f
+Ft(LC_COLLATE)e Fu(and)h Ft(LC_ALL)g Fu(shell)i(v)-5
+b(ariables,)31 b(if)f(set.)630 5230 y(F)-8 b(or)34 b(example,)g(in)f
+(the)g(default)g(C)f(lo)s(cale,)k(`)p Ft([a-dx-z])p Fu(')31
+b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p Ft([abcdxyz])p
+Fu('.)630 5340 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m(haracters)h(in)e
+(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s(cales)p
+eop end
+%%Page: 37 43
+TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)630 299
+y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e(equiv)-5
+b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m(t)f(b)s(e)f
+(equiv)-5 b(alen)m(t)630 408 y(to)34 b(`)p Ft([aBbCcDdxYyZz])p
+Fu(',)c(for)j(example.)49 b(T)-8 b(o)33 b(obtain)h(the)f(traditional)h
+(in)m(terpretation)h(of)630 518 y(ranges)e(in)f(brac)m(k)m(et)i
+(expressions,)g(y)m(ou)f(can)g(force)g(the)g(use)f(of)h(the)g(C)f(lo)s
+(cale)i(b)m(y)f(setting)630 628 y(the)c Ft(LC_COLLATE)e
+Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i(v)-5 b(ariable)30
+b(to)g(the)f(v)-5 b(alue)30 b(`)p Ft(C)p Fu(',)g(or)f(enable)h(the)630
+737 y Ft(globasciiranges)c Fu(shell)31 b(option.)630
+873 y(Within)23 b(`)p Ft([)p Fu(')h(and)e(`)p Ft(])p
+Fu(',)j Fr(c)m(haracter)g(classes)j Fu(can)c(b)s(e)e(sp)s(eci\014ed)h
+(using)f(the)i(syn)m(tax)f Ft([:)p Fr(class)t Ft(:])p
+Fu(,)630 982 y(where)30 b Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h
+(follo)m(wing)h(classes)f(de\014ned)e(in)h(the)h Fm(posix)f
+Fu(standard:)870 1118 y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g
+(digit)g(graph)g(lower)870 1227 y(print)g(punct)g(space)f(upper)h(word)
+190 b(xdigit)630 1363 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h
+(an)m(y)f(c)m(haracter)h(b)s(elonging)f(to)g(that)g(class.)75
+b(The)41 b Ft(word)630 1472 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h
(letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p
-Ft(_)p Fu('.)630 2845 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p
+Ft(_)p Fu('.)630 1608 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p
Ft(])p Fu(',)i(an)e Fr(equiv)-5 b(alence)26 b(class)j
Fu(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h
-Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 2955 y(whic)m(h)29
+Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 1717 y(whic)m(h)29
b(matc)m(hes)i(all)f(c)m(haracters)h(with)e(the)h(same)g(collation)h(w)
-m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 3064
+m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 1827
y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h
-Fr(c)p Fu(.)630 3201 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p
+Fr(c)p Fu(.)630 1962 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p
Ft(])p Fu(',)j(the)d(syn)m(tax)h Ft([.)p Fr(sym)m(b)s(ol)t
Ft(.])e Fu(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d
-Fr(sym)m(b)s(ol)p Fu(.)275 3367 y(If)29 b(the)g Ft(extglob)f
+Fr(sym)m(b)s(ol)p Fu(.)275 2125 y(If)i(the)g Ft(extglob)f
Fu(shell)h(option)h(is)g(enabled)f(using)g(the)h Ft(shopt)e
-Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 3477
-y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58
-b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j
-Fu(is)d(a)g(list)g(of)150 3586 y(one)d(or)f(more)h(patterns)f
-(separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33
-b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150
-3696 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150
-3862 y Ft(?\()p Fj(pattern-list)p Ft(\))630 3971 y Fu(Matc)m(hes)h
-(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150
-4135 y Ft(*\()p Fj(pattern-list)p Ft(\))630 4245 y Fu(Matc)m(hes)h
+Fu(builtin,)i(the)g(shell)f(recognizes)j(sev)m(eral)150
+2234 y(extended)i(pattern)f(matc)m(hing)i(op)s(erators.)40
+b(In)26 b(the)i(follo)m(wing)h(description,)g(a)e Fr(pattern-list)k
+Fu(is)d(a)g(list)g(of)150 2344 y(one)23 b(or)f(more)h(patterns)g
+(separated)g(b)m(y)f(a)h(`)p Ft(|)p Fu('.)38 b(When)22
+b(matc)m(hing)i(\014lenames,)g(the)f Ft(dotglob)e Fu(shell)h(option)150
+2453 y(determines)h(the)h(set)g(of)g(\014lenames)f(that)h(are)g
+(tested,)i(as)d(describ)s(ed)g(ab)s(o)m(v)m(e.)39 b(Comp)s(osite)24
+b(patterns)f(ma)m(y)150 2563 y(b)s(e)30 b(formed)g(using)f(one)i(or)f
+(more)h(of)g(the)f(follo)m(wing)i(sub-patterns:)150 2725
+y Ft(?\()p Fj(pattern-list)p Ft(\))630 2835 y Fu(Matc)m(hes)g(zero)f
+(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150
+2996 y Ft(*\()p Fj(pattern-list)p Ft(\))630 3106 y Fu(Matc)m(hes)h
(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.)
-150 4408 y Ft(+\()p Fj(pattern-list)p Ft(\))630 4518
+150 3267 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3377
y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m
-(en)i(patterns.)150 4682 y Ft(@\()p Fj(pattern-list)p
-Ft(\))630 4791 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.)
-150 4955 y Ft(!\()p Fj(pattern-list)p Ft(\))630 5064
+(en)i(patterns.)150 3538 y Ft(@\()p Fj(pattern-list)p
+Ft(\))630 3648 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.)
+150 3809 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3919
y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g
-(patterns.)275 5230 y(Complicated)41 b(extended)f(pattern)g(matc)m
-(hing)h(against)h(long)f(strings)f(is)g(slo)m(w,)k(esp)s(ecially)d
-(when)150 5340 y(the)29 b(patterns)g(con)m(tain)i(alternations)f(and)f
-(the)g(strings)g(con)m(tain)h(m)m(ultiple)g(matc)m(hes.)42
-b(Using)29 b(separate)p eop end
-%%Page: 35 41
-TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)150 299
+(patterns.)275 4081 y(The)h Ft(extglob)f Fu(option)j(c)m(hanges)g(the)f
+(b)s(eha)m(vior)g(of)h(the)f(parser,)g(since)h(the)f(paren)m(theses)h
+(are)f(nor-)150 4190 y(mally)44 b(treated)g(as)f(op)s(erators)g(with)g
+(syn)m(tactic)i(meaning.)79 b(T)-8 b(o)44 b(ensure)e(that)i(extended)f
+(matc)m(hing)150 4300 y(patterns)30 b(are)g(parsed)f(correctly)-8
+b(,)32 b(mak)m(e)e(sure)g(that)g Ft(extglob)e Fu(is)h(enabled)h(b)s
+(efore)f(parsing)h(constructs)150 4410 y(con)m(taining)i(the)e
+(patterns,)h(including)f(shell)h(functions)f(and)f(command)h
+(substitutions.)275 4546 y(When)c(matc)m(hing)i(\014lenames,)g(the)f
+Ft(dotglob)e Fu(shell)i(option)h(determines)f(the)g(set)g(of)g
+(\014lenames)g(that)150 4656 y(are)34 b(tested:)47 b(when)33
+b Ft(dotglob)e Fu(is)i(enabled,)i(the)e(set)h(of)g(\014lenames)f
+(includes)g(all)h(\014les)g(b)s(eginning)e(with)150 4765
+y(`)p Ft(.)p Fu(',)d(but)e(the)g(\014lenames)h(`)p Ft(.)p
+Fu(')g(and)f(`)p Ft(..)p Fu(')g(m)m(ust)h(b)s(e)f(matc)m(hed)h(b)m(y)g
+(a)g(pattern)g(or)f(sub-pattern)g(that)h(b)s(egins)150
+4875 y(with)33 b(a)g(dot;)j(when)c(it)h(is)h(disabled,)f(the)h(set)g
+(do)s(es)e(not)i(include)f(an)m(y)g(\014lenames)g(b)s(eginning)g(with)g
+(\\.")150 4984 y(unless)24 b(the)g(pattern)h(or)f(sub-pattern)g(b)s
+(egins)g(with)g(a)g(`)p Ft(.)p Fu('.)39 b(As)25 b(ab)s(o)m(v)m(e,)i(`)p
+Ft(.)p Fu(')d(only)h(has)f(a)h(sp)s(ecial)g(meaning)150
+5094 y(when)k(matc)m(hing)j(\014lenames.)275 5230 y(Complicated)41
+b(extended)f(pattern)g(matc)m(hing)h(against)h(long)f(strings)f(is)g
+(slo)m(w,)k(esp)s(ecially)d(when)150 5340 y(the)29 b(patterns)g(con)m
+(tain)i(alternations)f(and)f(the)g(strings)g(con)m(tain)h(m)m(ultiple)g
+(matc)m(hes.)42 b(Using)29 b(separate)p eop end
+%%Page: 38 44
+TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299
y(matc)m(hes)38 b(against)g(shorter)e(strings,)i(or)f(using)f(arra)m
(ys)h(of)g(strings)f(instead)h(of)g(a)g(single)g(long)h(string,)150
-408 y(ma)m(y)31 b(b)s(e)f(faster.)150 614 y Fk(3.5.9)63
-b(Quote)41 b(Remo)m(v)-7 b(al)150 760 y Fu(After)32 b(the)g(preceding)g
+408 y(ma)m(y)31 b(b)s(e)f(faster.)150 603 y Fk(3.5.9)63
+b(Quote)41 b(Remo)m(v)-7 b(al)150 750 y Fu(After)32 b(the)g(preceding)g
(expansions,)h(all)f(unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m
(haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p
-Ft(")p Fu(')150 870 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g
+Ft(")p Fu(')150 860 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g
(the)f(ab)s(o)m(v)m(e)i(expansions)e(are)h(remo)m(v)m(ed.)150
-1120 y Fs(3.6)68 b(Redirections)150 1279 y Fu(Before)32
+1096 y Fs(3.6)68 b(Redirections)150 1255 y Fu(Before)32
b(a)f(command)f(is)h(executed,)h(its)f(input)e(and)h(output)h(ma)m(y)g
(b)s(e)f Fr(redirected)k Fu(using)c(a)i(sp)s(ecial)f(no-)150
-1389 y(tation)d(in)m(terpreted)f(b)m(y)f(the)h(shell.)40
-b(Redirection)27 b(allo)m(ws)h(commands')f(\014le)f(handles)g(to)i(b)s
-(e)e(duplicated,)150 1498 y(op)s(ened,)i(closed,)i(made)e(to)h(refer)f
-(to)h(di\013eren)m(t)f(\014les,)h(and)f(can)g(c)m(hange)h(the)g
-(\014les)f(the)g(command)g(reads)150 1608 y(from)39 b(and)g(writes)h
+1365 y(tation)d(in)m(terpreted)f(b)m(y)f(the)h(shell.)40
+b Fr(Redirection)27 b Fu(allo)m(ws)h(commands')f(\014le)f(handles)g(to)
+i(b)s(e)e(duplicated,)150 1475 y(op)s(ened,)i(closed,)i(made)e(to)h
+(refer)f(to)h(di\013eren)m(t)f(\014les,)h(and)f(can)g(c)m(hange)h(the)g
+(\014les)f(the)g(command)g(reads)150 1584 y(from)39 b(and)g(writes)h
(to.)69 b(Redirection)40 b(ma)m(y)g(also)h(b)s(e)e(used)g(to)h(mo)s
(dify)f(\014le)g(handles)g(in)g(the)h(curren)m(t)150
-1717 y(shell)e(execution)h(en)m(vironmen)m(t.)65 b(The)37
+1694 y(shell)e(execution)h(en)m(vironmen)m(t.)65 b(The)37
b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g(precede)h(or)f
-(app)s(ear)150 1827 y(an)m(ywhere)30 b(within)f(a)h(simple)f(command)h
+(app)s(ear)150 1803 y(an)m(ywhere)30 b(within)f(a)h(simple)f(command)h
(or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40 b(Redirections)30
-b(are)g(pro)s(cessed)150 1936 y(in)g(the)h(order)f(they)g(app)s(ear,)g
-(from)g(left)h(to)g(righ)m(t.)275 2077 y(Eac)m(h)45 b(redirection)h
+b(are)g(pro)s(cessed)150 1913 y(in)g(the)h(order)f(they)g(app)s(ear,)g
+(from)g(left)h(to)g(righ)m(t.)275 2045 y(Eac)m(h)45 b(redirection)h
(that)f(ma)m(y)h(b)s(e)e(preceded)g(b)m(y)h(a)h(\014le)f(descriptor)f
-(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e)150 2186
+(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e)150 2155
y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f
Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k
-(for)c(eac)m(h)i(redirection)f(op)s(erator)150 2296 y(except)37
+(for)c(eac)m(h)i(redirection)f(op)s(erator)150 2264 y(except)37
b Ft(>)p Fu(&-)e(and)g Ft(<)p Fu(&-,)i(the)f(shell)g(will)g(allo)s
(cate)j(a)d(\014le)g(descriptor)f(greater)i(than)f(10)g(and)f(assign)h
-(it)150 2406 y(to)e Fi({)p Fr(v)-5 b(arname)5 b Fi(})p
+(it)150 2374 y(to)e Fi({)p Fr(v)-5 b(arname)5 b Fi(})p
Fu(.)52 b(If)33 b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)g(preceded)h(b)
m(y)f Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)36 b(the)e(v)-5
b(alue)34 b(of)f Fr(v)-5 b(arname)39 b Fu(de\014nes)33
-b(the)150 2515 y(\014le)e(descriptor)g(to)h(close.)43
+b(the)150 2483 y(\014le)e(descriptor)g(to)h(close.)43
b(If)31 b Fi({)p Fr(v)-5 b(arname)5 b Fi(})32 b Fu(is)f(supplied,)f
(the)h(redirection)g(p)s(ersists)f(b)s(ey)m(ond)h(the)g(scop)s(e)150
-2625 y(of)42 b(the)f(command,)j(allo)m(wing)f(the)f(shell)g(programmer)
+2593 y(of)42 b(the)f(command,)j(allo)m(wing)f(the)f(shell)g(programmer)
f(to)h(manage)g(the)g(\014le)f(descriptor's)h(lifetime)150
-2734 y(man)m(ually)-8 b(.)275 2875 y(In)27 b(the)i(follo)m(wing)h
-(descriptions,)g(if)e(the)h(\014le)g(descriptor)f(n)m(um)m(b)s(er)g(is)
-g(omitted,)i(and)f(the)f(\014rst)g(c)m(har-)150 2984
-y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g(is)g(`)p
-Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g(standard)f
-(input)f(\(\014le)150 3094 y(descriptor)33 b(0\).)49
-b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f(redirection)g(op)s
-(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection)g(refers)150
-3203 y(to)e(the)g(standard)e(output)h(\(\014le)h(descriptor)f(1\).)275
-3344 y(The)h(w)m(ord)h(follo)m(wing)i(the)f(redirection)g(op)s(erator)f
-(in)g(the)h(follo)m(wing)h(descriptions,)f(unless)e(other-)150
-3453 y(wise)21 b(noted,)i(is)e(sub)5 b(jected)21 b(to)h(brace)f
-(expansion,)i(tilde)f(expansion,)h(parameter)e(expansion,)i(command)150
-3563 y(substitution,)31 b(arithmetic)h(expansion,)f(quote)h(remo)m(v)-5
-b(al,)33 b(\014lename)e(expansion,)g(and)f(w)m(ord)h(splitting.)150
-3672 y(If)f(it)h(expands)e(to)i(more)g(than)f(one)h(w)m(ord,)f(Bash)h
-(rep)s(orts)e(an)h(error.)275 3813 y(Note)h(that)g(the)g(order)f(of)g
-(redirections)h(is)g(signi\014can)m(t.)41 b(F)-8 b(or)31
-b(example,)h(the)e(command)390 3953 y Ft(ls)47 b(>)h
-Fj(dirlist)d Ft(2>&1)150 4093 y Fu(directs)28 b(b)s(oth)f(standard)g
-(output)g(\(\014le)h(descriptor)f(1\))i(and)e(standard)f(error)i
-(\(\014le)g(descriptor)f(2\))h(to)h(the)150 4203 y(\014le)h
-Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 4343 y
-Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 4484 y Fu(directs)28
+2703 y(man)m(ually)-8 b(.)41 b(The)29 b Ft(varredir_close)c
+Fu(shell)k(option)g(manages)h(this)f(b)s(eha)m(vior)g(\(see)h(Section)f
+(4.3.2)i([The)150 2812 y(Shopt)f(Builtin],)h(page)g(71\).)275
+2944 y(In)c(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g
+(descriptor)f(n)m(um)m(b)s(er)g(is)g(omitted,)i(and)f(the)f(\014rst)g
+(c)m(har-)150 3054 y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g
+(is)g(`)p Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g
+(standard)f(input)f(\(\014le)150 3164 y(descriptor)33
+b(0\).)49 b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f
+(redirection)g(op)s(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection)
+g(refers)150 3273 y(to)e(the)g(standard)e(output)h(\(\014le)h
+(descriptor)f(1\).)275 3405 y(The)h(w)m(ord)h(follo)m(wing)i(the)f
+(redirection)g(op)s(erator)f(in)g(the)h(follo)m(wing)h(descriptions,)f
+(unless)e(other-)150 3515 y(wise)21 b(noted,)i(is)e(sub)5
+b(jected)21 b(to)h(brace)f(expansion,)i(tilde)f(expansion,)h(parameter)
+e(expansion,)i(command)150 3625 y(substitution,)31 b(arithmetic)h
+(expansion,)f(quote)h(remo)m(v)-5 b(al,)33 b(\014lename)e(expansion,)g
+(and)f(w)m(ord)h(splitting.)150 3734 y(If)f(it)h(expands)e(to)i(more)g
+(than)f(one)h(w)m(ord,)f(Bash)h(rep)s(orts)e(an)h(error.)275
+3866 y(Note)h(that)g(the)g(order)f(of)g(redirections)h(is)g
+(signi\014can)m(t.)41 b(F)-8 b(or)31 b(example,)h(the)e(command)390
+3999 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 4131 y
+Fu(directs)28 b(b)s(oth)f(standard)g(output)g(\(\014le)h(descriptor)f
+(1\))i(and)e(standard)f(error)i(\(\014le)g(descriptor)f(2\))h(to)h(the)
+150 4240 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390
+4373 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 4505 y Fu(directs)28
b(only)f(the)h(standard)e(output)i(to)g(\014le)f Fr(dirlist)p
Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h(made)f(a)h(cop)m
-(y)150 4593 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g
+(y)150 4615 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g
(standard)g(output)g(w)m(as)g(redirected)h(to)g Fr(dirlist)p
-Fu(.)275 4733 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s
+Fu(.)275 4747 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s
(ecially)h(when)f(they)g(are)g(used)g(in)g(redirections,)i(as)e
-(describ)s(ed)150 4843 y(in)38 b(the)h(follo)m(wing)h(table.)66
+(describ)s(ed)150 4856 y(in)38 b(the)h(follo)m(wing)h(table.)66
b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)h(is)f
-(running)f(pro)m(vides)h(these)150 4953 y(sp)s(ecial)27
+(running)f(pro)m(vides)h(these)150 4966 y(sp)s(ecial)27
b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g(it)f(will)h(em)m
(ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m(vior)150
-5062 y(describ)s(ed)j(b)s(elo)m(w.)150 5230 y Ft(/dev/fd/)p
+5076 y(describ)s(ed)j(b)s(elo)m(w.)150 5230 y Ft(/dev/fd/)p
Fj(fd)630 5340 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 b(alid)31
b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i Fu(is)d(duplicated.)p
eop end
-%%Page: 36 42
-TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299
+%%Page: 39 45
+TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)150 299
y Ft(/dev/stdin)630 408 y Fu(File)32 b(descriptor)e(0)h(is)f
(duplicated.)150 577 y Ft(/dev/stdout)630 687 y Fu(File)i(descriptor)e
(1)h(is)f(duplicated.)150 856 y Ft(/dev/stderr)630 965
@@ -10782,9 +11036,9 @@ b Fu(to)e(b)s(e)e(op)s(ened)g(for)h(app)s(ending)e(on)i(\014le)g
(is)f(created.)275 5196 y(The)f(general)j(format)e(for)h(app)s(ending)e
(output)h(is:)390 5340 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)p
eop end
-%%Page: 37 43
-TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)150 299
+%%Page: 40 46
+TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)150 299
y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g
(Error)150 446 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g
(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g
@@ -10844,9 +11098,9 @@ Fu(',)g(and)f(`)p Ft(`)p Fu('.)275 5121 y(If)21 b(the)i(redirection)g
Fr(delimiter)p Fu(.)49 b(This)32 b(allo)m(ws)i(here-do)s(cumen)m(ts)f
(within)f(shell)i(scripts)e(to)150 5340 y(b)s(e)e(inden)m(ted)g(in)g(a)
h(natural)f(fashion.)p eop end
-%%Page: 38 44
-TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299
+%%Page: 41 47
+TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)150 299
y Fk(3.6.7)63 b(Here)41 b(Strings)150 446 y Fu(A)30 b(v)-5
b(arian)m(t)32 b(of)e(here)h(do)s(cumen)m(ts,)f(the)g(format)h(is:)390
600 y Ft([)p Fj(n)p Ft(]<<<)46 b Fj(word)275 753 y Fu(The)29
@@ -10909,9 +11163,9 @@ b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h
(descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47
b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 5340 y(exist,)e(it)g(is)g
(created.)p eop end
-%%Page: 39 45
-TeXDict begin 39 44 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(39)150 299
+%%Page: 42 48
+TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)150 299
y Fs(3.7)68 b(Executing)46 b(Commands)150 523 y Fk(3.7.1)63
b(Simple)41 b(Command)h(Expansion)150 670 y Fu(When)33
b(a)g(simple)g(command)g(is)g(executed,)h(the)g(shell)f(p)s(erforms)e
@@ -10924,12 +11178,12 @@ b(a)g(simple)g(command)g(is)g(executed,)h(the)g(shell)f(p)s(erforms)e
1157 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5
b(ariable)40 b(assignmen)m(ts)h(or)e(redirections)i(are)f(expanded)f
(\(see)h(Sec-)330 1267 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g
-(22\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h
+(24\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h
(the)e(\014rst)330 1376 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f
(the)g(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g
(are)g(the)h(argu-)330 1486 y(men)m(ts.)199 1620 y(3.)61
b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m
-(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(35\).)199
+(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(38\).)199
1754 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p
Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es)
e(tilde)i(expansion,)g(parameter)330 1864 y(expansion,)49
@@ -10938,383 +11192,433 @@ b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 1973 y(b)s(eing)30
b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 2132 y(If)32
b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34
b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m(viron-)
-150 2242 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26
-b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f(executed)h
-(command)g(and)150 2351 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h
-(shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g(the)f(assignmen)
-m(ts)i(attempts)f(to)h(assign)150 2461 y(a)j(v)-5 b(alue)39
-b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j
-(and)c(the)i(command)f(exits)h(with)g(a)f(non-zero)150
-2570 y(status.)275 2705 y(If)33 b(no)g(command)g(name)h(results,)g
-(redirections)g(are)g(p)s(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f
-(curren)m(t)150 2814 y(shell)d(en)m(vironmen)m(t.)41
-b(A)30 b(redirection)h(error)f(causes)h(the)g(command)f(to)h(exit)g
-(with)f(a)h(non-zero)g(status.)275 2948 y(If)26 b(there)i(is)f(a)h
-(command)f(name)h(left)g(after)g(expansion,)g(execution)h(pro)s(ceeds)e
-(as)g(describ)s(ed)f(b)s(elo)m(w.)150 3058 y(Otherwise,)39
-b(the)e(command)g(exits.)62 b(If)37 b(one)g(of)g(the)h(expansions)f
-(con)m(tained)h(a)g(command)f(substitu-)150 3167 y(tion,)i(the)d(exit)h
-(status)g(of)f(the)h(command)f(is)h(the)f(exit)h(status)g(of)f(the)h
-(last)g(command)f(substitution)150 3277 y(p)s(erformed.)55
-b(If)35 b(there)g(w)m(ere)h(no)g(command)f(substitutions,)i(the)e
-(command)h(exits)g(with)f(a)h(status)g(of)150 3387 y(zero.)150
-3585 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)150
-3732 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h(in)m(to)h(w)m
-(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g(and)f(an)150
-3842 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g(follo)m(wing)g
-(actions)h(are)f(tak)m(en.)199 3976 y(1.)61 b(If)24 b(the)g(command)g
-(name)g(con)m(tains)i(no)e(slashes,)i(the)e(shell)h(attempts)g(to)g(lo)
-s(cate)h(it.)39 b(If)24 b(there)g(exists)330 4085 y(a)h(shell)g
-(function)f(b)m(y)g(that)h(name,)h(that)f(function)f(is)h(in)m(v)m(ok)m
-(ed)h(as)e(describ)s(ed)g(in)g(Section)h(3.3)h([Shell)330
-4195 y(F)-8 b(unctions],)31 b(page)h(18.)199 4329 y(2.)61
-b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e(function,)j(the)e
-(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h(of)g(shell)330
-4439 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g(that)h(builtin)
-f(is)g(in)m(v)m(ok)m(ed.)199 4573 y(3.)61 b(If)40 b(the)g(name)h(is)f
-(neither)h(a)f(shell)h(function)f(nor)g(a)g(builtin,)j(and)d(con)m
-(tains)h(no)g(slashes,)i(Bash)330 4682 y(searc)m(hes)c(eac)m(h)g
-(elemen)m(t)g(of)g Ft($PATH)d Fu(for)i(a)g(directory)h(con)m(taining)g
-(an)f(executable)h(\014le)f(b)m(y)g(that)330 4792 y(name.)56
-b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)f(remem)m(b)s(er)f(the)h(full)
-f(pathnames)g(of)h(executable)h(\014les)e(to)330 4902
-y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f Fu(searc)m(hes)i(\(see)f(the)g
-(description)g(of)f Ft(hash)g Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)
-330 5011 y(Builtins],)37 b(page)f(44\).)55 b(A)35 b(full)g(searc)m(h)g
-(of)g(the)g(directories)h(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h
-(if)g(the)330 5121 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f
-(table.)39 b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g
-(shell)g(searc)m(hes)330 5230 y(for)e(a)h(de\014ned)e(shell)h(function)
-h(named)e Ft(command_not_found_handle)p Fu(.)32 b(If)23
-b(that)h(function)f(exists,)330 5340 y(it)33 b(is)f(in)m(v)m(ok)m(ed)i
-(in)e(a)h(separate)h(execution)f(en)m(vironmen)m(t)g(with)f(the)h
-(original)h(command)e(and)g(the)p eop end
-%%Page: 40 46
-TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)330 299
-y(original)26 b(command's)e(argumen)m(ts)h(as)g(its)g(argumen)m(ts,)h
-(and)e(the)h(function's)f(exit)i(status)f(b)s(ecomes)330
-408 y(the)j(exit)g(status)g(of)f(that)h(subshell.)39
+150 2242 y(men)m(t.)68 b(In)38 b(the)h(case)i(of)e(suc)m(h)g(a)g
+(command)g(\(one)h(that)g(consists)g(only)f(of)g(assignmen)m(t)h
+(statemen)m(ts)150 2351 y(and)27 b(redirections\),)i(assignmen)m(t)g
+(statemen)m(ts)g(are)f(p)s(erformed)e(b)s(efore)h(redirections.)41
+b(Otherwise,)28 b(the)150 2461 y(v)-5 b(ariables)27 b(are)g(added)e(to)
+i(the)g(en)m(vironmen)m(t)g(of)f(the)h(executed)g(command)f(and)g(do)g
+(not)h(a\013ect)h(the)e(cur-)150 2570 y(ren)m(t)32 b(shell)f(en)m
+(vironmen)m(t.)44 b(If)31 b(an)m(y)g(of)h(the)f(assignmen)m(ts)h
+(attempts)g(to)g(assign)g(a)f(v)-5 b(alue)32 b(to)g(a)g(readonly)150
+2680 y(v)-5 b(ariable,)31 b(an)g(error)f(o)s(ccurs,)g(and)g(the)g
+(command)g(exits)i(with)e(a)g(non-zero)h(status.)275
+2814 y(If)i(no)g(command)g(name)h(results,)g(redirections)g(are)g(p)s
+(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f(curren)m(t)150
+2924 y(shell)d(en)m(vironmen)m(t.)41 b(A)30 b(redirection)h(error)f
+(causes)h(the)g(command)f(to)h(exit)g(with)f(a)h(non-zero)g(status.)275
+3058 y(If)26 b(there)i(is)f(a)h(command)f(name)h(left)g(after)g
+(expansion,)g(execution)h(pro)s(ceeds)e(as)g(describ)s(ed)f(b)s(elo)m
+(w.)150 3167 y(Otherwise,)39 b(the)e(command)g(exits.)62
+b(If)37 b(one)g(of)g(the)h(expansions)f(con)m(tained)h(a)g(command)f
+(substitu-)150 3277 y(tion,)i(the)d(exit)h(status)g(of)f(the)h(command)
+f(is)h(the)f(exit)h(status)g(of)f(the)h(last)g(command)f(substitution)
+150 3387 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f
+(substitutions,)i(the)e(command)h(exits)g(with)f(a)h(status)g(of)150
+3496 y(zero.)150 3695 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h
+(Execution)150 3842 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h
+(in)m(to)h(w)m(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g
+(and)f(an)150 3951 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g
+(follo)m(wing)g(actions)h(are)f(tak)m(en.)199 4085 y(1.)61
+b(If)24 b(the)g(command)g(name)g(con)m(tains)i(no)e(slashes,)i(the)e
+(shell)h(attempts)g(to)g(lo)s(cate)h(it.)39 b(If)24 b(there)g(exists)
+330 4195 y(a)h(shell)g(function)f(b)m(y)g(that)h(name,)h(that)f
+(function)f(is)h(in)m(v)m(ok)m(ed)h(as)e(describ)s(ed)g(in)g(Section)h
+(3.3)h([Shell)330 4305 y(F)-8 b(unctions],)31 b(page)h(19.)199
+4439 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e
+(function,)j(the)e(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h
+(of)g(shell)330 4548 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g
+(that)h(builtin)f(is)g(in)m(v)m(ok)m(ed.)199 4682 y(3.)61
+b(If)40 b(the)g(name)h(is)f(neither)h(a)f(shell)h(function)f(nor)g(a)g
+(builtin,)j(and)d(con)m(tains)h(no)g(slashes,)i(Bash)330
+4792 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Ft($PATH)d
+Fu(for)i(a)g(directory)h(con)m(taining)g(an)f(executable)h(\014le)f(b)m
+(y)g(that)330 4902 y(name.)56 b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)
+f(remem)m(b)s(er)f(the)h(full)f(pathnames)g(of)h(executable)h(\014les)e
+(to)330 5011 y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f
+Fu(searc)m(hes)i(\(see)f(the)g(description)g(of)f Ft(hash)g
+Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)330 5121 y(Builtins],)37
+b(page)f(48\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h
+(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h(if)g(the)330
+5230 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f(table.)39
+b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g(shell)g(searc)m
+(hes)330 5340 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e
+Ft(command_not_found_handle)p Fu(.)32 b(If)23 b(that)h(function)f
+(exists,)p eop end
+%%Page: 43 49
+TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(43)330 299
+y(it)33 b(is)f(in)m(v)m(ok)m(ed)i(in)e(a)h(separate)h(execution)f(en)m
+(vironmen)m(t)g(with)f(the)h(original)h(command)e(and)g(the)330
+408 y(original)26 b(command's)e(argumen)m(ts)h(as)g(its)g(argumen)m
+(ts,)h(and)e(the)h(function's)f(exit)i(status)f(b)s(ecomes)330
+518 y(the)j(exit)g(status)g(of)f(that)h(subshell.)39
b(If)27 b(that)h(function)f(is)h(not)g(de\014ned,)f(the)g(shell)h(prin)
-m(ts)f(an)g(error)330 518 y(message)k(and)f(returns)f(an)i(exit)g
-(status)g(of)f(127.)199 654 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g
+m(ts)f(an)g(error)330 628 y(message)k(and)f(returns)f(an)i(exit)g
+(status)g(of)f(127.)199 759 y(4.)61 b(If)33 b(the)g(searc)m(h)h(is)g
(successful,)g(or)f(if)g(the)h(command)f(name)g(con)m(tains)i(one)f(or)
-f(more)g(slashes,)i(the)330 763 y(shell)g(executes)h(the)f(named)f
+f(more)g(slashes,)i(the)330 868 y(shell)g(executes)h(the)f(named)f
(program)g(in)h(a)g(separate)h(execution)f(en)m(vironmen)m(t.)55
-b(Argumen)m(t)35 b(0)330 873 y(is)30 b(set)h(to)h(the)e(name)h(giv)m
+b(Argumen)m(t)35 b(0)330 978 y(is)30 b(set)h(to)h(the)e(name)h(giv)m
(en,)g(and)f(the)h(remaining)f(argumen)m(ts)h(to)g(the)g(command)f(are)
-h(set)g(to)g(the)330 983 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8
-b(.)199 1118 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g
+h(set)g(to)g(the)330 1087 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8
+b(.)199 1218 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g
(the)f(\014le)h(is)g(not)g(in)f(executable)j(format,)f(and)e(the)h
-(\014le)g(is)g(not)330 1228 y(a)d(directory)-8 b(,)34
+(\014le)g(is)g(not)330 1328 y(a)d(directory)-8 b(,)34
b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fr(shell)g(script)h
Fu(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330
-1338 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(42.)199
-1473 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async)
+1438 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(46.)199
+1569 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async)
m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f
-(to)330 1583 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150
-1785 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150
-1932 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t)
+(to)330 1678 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150
+1870 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150
+2017 y Fu(The)30 b(shell)g(has)h(an)f Fr(execution)h(en)m(vironmen)m(t)
p Fu(,)h(whic)m(h)e(consists)h(of)f(the)h(follo)m(wing:)225
-2069 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f
+2148 y Fq(\017)60 b Fu(op)s(en)32 b(\014les)g(inherited)g(b)m(y)h(the)f
(shell)h(at)g(in)m(v)m(o)s(cation,)j(as)c(mo)s(di\014ed)g(b)m(y)g
-(redirections)h(supplied)e(to)330 2178 y(the)g Ft(exec)e
-Fu(builtin)225 2314 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking)
+(redirections)h(supplied)e(to)330 2258 y(the)g Ft(exec)e
+Fu(builtin)225 2389 y Fq(\017)60 b Fu(the)28 b(curren)m(t)g(w)m(orking)
h(directory)g(as)f(set)h(b)m(y)f Ft(cd)p Fu(,)g Ft(pushd)p
Fu(,)g(or)g Ft(popd)p Fu(,)g(or)g(inherited)g(b)m(y)g(the)h(shell)f(at)
-330 2424 y(in)m(v)m(o)s(cation)225 2560 y Fq(\017)60
+330 2498 y(in)m(v)m(o)s(cation)225 2629 y Fq(\017)60
b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)g(as)h(set)g(b)m(y)f
Ft(umask)f Fu(or)h(inherited)g(from)g(the)h(shell's)f(paren)m(t)225
-2695 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f
-Ft(trap)225 2831 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g
+2760 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m(y)f
+Ft(trap)225 2891 y Fq(\017)60 b Fu(shell)30 b(parameters)f(that)h(are)g
(set)g(b)m(y)g(v)-5 b(ariable)30 b(assignmen)m(t)g(or)g(with)f
-Ft(set)f Fu(or)i(inherited)f(from)g(the)330 2941 y(shell's)i(paren)m(t)
-f(in)g(the)h(en)m(vironmen)m(t)225 3077 y Fq(\017)60
+Ft(set)f Fu(or)i(inherited)f(from)g(the)330 3001 y(shell's)i(paren)m(t)
+f(in)g(the)h(en)m(vironmen)m(t)225 3132 y Fq(\017)60
b Fu(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e
(inherited)h(from)f(the)h(shell's)g(paren)m(t)f(in)h(the)330
-3186 y(en)m(vironmen)m(t)225 3322 y Fq(\017)60 b Fu(options)33
+3242 y(en)m(vironmen)m(t)225 3373 y Fq(\017)60 b Fu(options)33
b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or)
-g(with)g(command-line)g(argumen)m(ts\))h(or)330 3432
-y(b)m(y)c Ft(set)225 3567 y Fq(\017)60 b Fu(options)31
+g(with)g(command-line)g(argumen)m(ts\))h(or)330 3482
+y(b)m(y)c Ft(set)225 3613 y Fq(\017)60 b Fu(options)31
b(enabled)f(b)m(y)g Ft(shopt)f Fu(\(see)j(Section)f(4.3.2)h([The)e
-(Shopt)g(Builtin],)h(page)g(66\))225 3703 y Fq(\017)60
+(Shopt)g(Builtin],)h(page)g(71\))225 3744 y Fq(\017)60
b Fu(shell)31 b(aliases)g(de\014ned)f(with)g Ft(alias)f
-Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(94\))225
-3839 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f
+Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(100\))225
+3875 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f
Fm(id)p Fu(s,)55 b(including)49 b(those)i(of)e(bac)m(kground)h(jobs)f
-(\(see)i(Section)g(3.2.4)g([Lists],)330 3948 y(page)31
-b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Ft($$)p Fu(,)g(and)g(the)h(v)-5
-b(alue)31 b(of)f Ft($PPID)275 4112 y Fu(When)k(a)g(simple)h(command)f
+(\(see)i(Section)g(3.2.4)g([Lists],)330 3985 y(page)31
+b(10\),)h(the)f(v)-5 b(alue)30 b(of)h Ft($$)p Fu(,)f(and)g(the)g(v)-5
+b(alue)31 b(of)g Ft($PPID)275 4137 y Fu(When)j(a)g(simple)h(command)f
(other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f
-(executed,)i(it)f(is)150 4221 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g
+(executed,)i(it)f(is)150 4247 y(in)m(v)m(ok)m(ed)25 b(in)f(a)g
(separate)h(execution)g(en)m(vironmen)m(t)g(that)f(consists)g(of)h(the)
-f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 4331 y(noted,)31
+f(follo)m(wing.)40 b(Unless)24 b(otherwise)150 4356 y(noted,)31
b(the)f(v)-5 b(alues)31 b(are)g(inherited)f(from)g(the)g(shell.)225
-4468 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e
+4487 y Fq(\017)60 b Fu(the)31 b(shell's)h(op)s(en)e(\014les,)i(plus)e
(an)m(y)h(mo)s(di\014cations)h(and)e(additions)h(sp)s(eci\014ed)g(b)m
-(y)g(redirections)g(to)330 4578 y(the)g(command)225 4713
+(y)g(redirections)g(to)330 4597 y(the)g(command)225 4728
y Fq(\017)60 b Fu(the)31 b(curren)m(t)f(w)m(orking)g(directory)225
-4849 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225
-4985 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33
+4859 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225
+4990 y Fq(\017)60 b Fu(shell)32 b(v)-5 b(ariables)33
b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5
-b(ariables)32 b(exp)s(orted)g(for)g(the)330 5095 y(command,)e(passed)g
+b(ariables)32 b(exp)s(orted)g(for)g(the)330 5099 y(command,)e(passed)g
(in)g(the)h(en)m(vironmen)m(t)g(\(see)g(Section)g(3.7.4)i([En)m
-(vironmen)m(t],)e(page)g(41\))225 5230 y Fq(\017)60 b
+(vironmen)m(t],)e(page)g(44\))225 5230 y Fq(\017)60 b
Fu(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the)
f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g
(and)330 5340 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored)p
eop end
-%%Page: 41 47
-TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)275 299
+%%Page: 44 50
+TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(44)275 299
y(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g(en)m
(vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150
-408 y(en)m(vironmen)m(t.)275 552 y(Command)35 b(substitution,)j
-(commands)e(group)s(ed)f(with)i(paren)m(theses,)h(and)e(async)m
-(hronous)g(com-)150 662 y(mands)c(are)h(in)m(v)m(ok)m(ed)i(in)d(a)i
-(subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g(duplicate)h(of)f(the)g
-(shell)g(en)m(vironmen)m(t,)150 772 y(except)i(that)g(traps)f(caugh)m
-(t)h(b)m(y)f(the)h(shell)f(are)g(reset)h(to)g(the)f(v)-5
-b(alues)35 b(that)g(the)f(shell)h(inherited)e(from)150
-881 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49
+408 y(en)m(vironmen)m(t.)275 540 y(A)30 b Fr(subshell)j
+Fu(is)d(a)h(cop)m(y)g(of)g(the)f(shell)h(pro)s(cess.)275
+671 y(Command)k(substitution,)j(commands)e(group)s(ed)f(with)i(paren)m
+(theses,)h(and)e(async)m(hronous)g(com-)150 781 y(mands)c(are)h(in)m(v)
+m(ok)m(ed)i(in)d(a)i(subshell)e(en)m(vironmen)m(t)h(that)h(is)f(a)g
+(duplicate)h(of)f(the)g(shell)g(en)m(vironmen)m(t,)150
+891 y(except)i(that)g(traps)f(caugh)m(t)h(b)m(y)f(the)h(shell)f(are)g
+(reset)h(to)g(the)f(v)-5 b(alues)35 b(that)g(the)f(shell)h(inherited)e
+(from)150 1000 y(its)g(paren)m(t)f(at)h(in)m(v)m(o)s(cation.)49
b(Builtin)32 b(commands)g(that)h(are)g(in)m(v)m(ok)m(ed)h(as)e(part)g
-(of)h(a)f(pip)s(eline)g(are)h(also)150 991 y(executed)41
+(of)h(a)f(pip)s(eline)g(are)h(also)150 1110 y(executed)41
b(in)f(a)h(subshell)e(en)m(vironmen)m(t.)72 b(Changes)40
b(made)g(to)h(the)g(subshell)e(en)m(vironmen)m(t)i(cannot)150
-1100 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275
-1244 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions)
+1219 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275
+1351 y(Subshells)c(spa)m(wned)i(to)h(execute)g(command)f(substitutions)
g(inherit)g(the)g(v)-5 b(alue)31 b(of)f(the)h Ft(-e)e
-Fu(option)150 1354 y(from)23 b(the)i(paren)m(t)f(shell.)38
+Fu(option)150 1460 y(from)23 b(the)i(paren)m(t)f(shell.)38
b(When)24 b(not)g(in)g Fm(posix)f Fu(mo)s(de,)i(Bash)f(clears)h(the)f
-Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 1498
+Ft(-e)f Fu(option)i(in)e(suc)m(h)h(subshells.)275 1592
y(If)f(a)h(command)g(is)g(follo)m(w)m(ed)h(b)m(y)f(a)g(`)p
Ft(&)p Fu(')g(and)f(job)h(con)m(trol)h(is)f(not)g(activ)m(e,)k(the)c
-(default)g(standard)f(input)150 1607 y(for)35 b(the)g(command)g(is)g
+(default)g(standard)f(input)150 1701 y(for)35 b(the)g(command)g(is)g
(the)g(empt)m(y)h(\014le)f Ft(/dev/null)p Fu(.)52 b(Otherwise,)37
-b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 1717
+b(the)e(in)m(v)m(ok)m(ed)h(command)f(inherits)150 1811
y(the)c(\014le)f(descriptors)g(of)h(the)f(calling)i(shell)f(as)f(mo)s
-(di\014ed)g(b)m(y)g(redirections.)150 1926 y Fk(3.7.4)63
-b(En)m(vironmen)m(t)150 2073 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m
+(di\014ed)g(b)m(y)g(redirections.)150 2004 y Fk(3.7.4)63
+b(En)m(vironmen)m(t)150 2151 y Fu(When)29 b(a)g(program)f(is)h(in)m(v)m
(ok)m(ed)h(it)g(is)f(giv)m(en)g(an)g(arra)m(y)g(of)g(strings)g(called)h
(the)f Fr(en)m(vironmen)m(t)p Fu(.)41 b(This)28 b(is)h(a)150
-2182 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g
-Ft(name=value)p Fu(.)275 2326 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w)
+2261 y(list)i(of)g(name-v)-5 b(alue)31 b(pairs,)f(of)h(the)f(form)g
+Ft(name=value)p Fu(.)275 2392 y(Bash)39 b(pro)m(vides)g(sev)m(eral)i(w)
m(a)m(ys)g(to)f(manipulate)f(the)h(en)m(vironmen)m(t.)69
-b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 2436
+b(On)38 b(in)m(v)m(o)s(cation,)44 b(the)c(shell)150 2502
y(scans)g(its)h(o)m(wn)f(en)m(vironmen)m(t)h(and)f(creates)i(a)f
(parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)150
-2545 y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s
-(cesses.)39 b(Executed)26 b(commands)g(inherit)g(the)g(en)m(vironmen)m
-(t.)39 b(The)150 2655 y Ft(export)c Fu(and)i(`)p Ft(declare)29
+2611 y(marking)23 b(it)h(for)f Ft(export)f Fu(to)i(c)m(hild)g(pro)s
+(cesses.)38 b(Executed)24 b(commands)f(inherit)g(the)g(en)m(vironmen)m
+(t.)39 b(The)150 2721 y Ft(export)c Fu(and)i(`)p Ft(declare)29
b(-x)p Fu(')36 b(commands)h(allo)m(w)i(parameters)e(and)g(functions)g
-(to)h(b)s(e)e(added)h(to)h(and)150 2765 y(deleted)21
+(to)h(b)s(e)e(added)h(to)h(and)150 2830 y(deleted)21
b(from)f(the)h(en)m(vironmen)m(t.)38 b(If)20 b(the)h(v)-5
b(alue)21 b(of)g(a)g(parameter)g(in)f(the)g(en)m(vironmen)m(t)i(is)e
-(mo)s(di\014ed,)i(the)150 2874 y(new)31 b(v)-5 b(alue)32
+(mo)s(di\014ed,)i(the)150 2940 y(new)31 b(v)-5 b(alue)32
b(b)s(ecomes)f(part)h(of)f(the)h(en)m(vironmen)m(t,)g(replacing)h(the)e
(old.)44 b(The)31 b(en)m(vironmen)m(t)h(inherited)150
-2984 y(b)m(y)f(an)m(y)g(executed)h(command)f(consists)g(of)g(the)g
+3050 y(b)m(y)f(an)m(y)g(executed)h(command)f(consists)g(of)g(the)g
(shell's)h(initial)g(en)m(vironmen)m(t,)g(whose)f(v)-5
-b(alues)31 b(ma)m(y)h(b)s(e)150 3093 y(mo)s(di\014ed)26
+b(alues)31 b(ma)m(y)h(b)s(e)150 3159 y(mo)s(di\014ed)26
b(in)g(the)h(shell,)h(less)f(an)m(y)g(pairs)f(remo)m(v)m(ed)i(b)m(y)f
(the)g Ft(unset)e Fu(and)h(`)p Ft(export)j(-n)p Fu(')e(commands,)g
-(plus)150 3203 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d
-Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 3347
+(plus)150 3269 y(an)m(y)k(additions)f(via)h(the)g Ft(export)d
+Fu(and)i(`)p Ft(declare)f(-x)p Fu(')h(commands.)275 3400
y(The)j(en)m(vironmen)m(t)i(for)f(an)m(y)g(simple)h(command)f(or)g
(function)g(ma)m(y)g(b)s(e)g(augmen)m(ted)h(temp)s(orarily)150
-3457 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h
+3510 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h
(as)e(describ)s(ed)g(in)g(Section)i(3.4)g([Shell)e(P)m(arameters],)150
-3566 y(page)g(20.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g
+3619 y(page)g(21.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g
(a\013ect)f(only)g(the)f(en)m(vironmen)m(t)h(seen)g(b)m(y)f(that)h
-(command.)275 3710 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g
-(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(62\),)h(then)e(all)g
-(parameter)150 3820 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m
+(command.)275 3751 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g
+(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(67\),)h(then)e(all)g
+(parameter)150 3860 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m
(vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i(that)f
-(precede)g(the)150 3929 y(command)g(name.)275 4073 y(When)h(Bash)h(in)m
+(precede)g(the)150 3970 y(command)g(name.)275 4101 y(When)h(Bash)h(in)m
(v)m(ok)m(es)i(an)e(external)h(command,)f(the)g(v)-5
b(ariable)33 b(`)p Ft($_)p Fu(')f(is)g(set)h(to)f(the)g(full)g
-(pathname)150 4183 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g
-(command)f(in)g(its)h(en)m(vironmen)m(t.)150 4392 y Fk(3.7.5)63
-b(Exit)40 b(Status)150 4538 y Fu(The)26 b(exit)h(status)f(of)g(an)g
-(executed)h(command)f(is)g(the)h(v)-5 b(alue)26 b(returned)f(b)m(y)h
-(the)g Fr(w)m(aitpid)k Fu(system)d(call)g(or)150 4648
-y(equiv)-5 b(alen)m(t)33 b(function.)45 b(Exit)32 b(statuses)g(fall)g
-(b)s(et)m(w)m(een)h(0)f(and)f(255,)i(though,)f(as)g(explained)g(b)s
-(elo)m(w,)h(the)150 4758 y(shell)i(ma)m(y)g(use)f(v)-5
-b(alues)35 b(ab)s(o)m(v)m(e)g(125)h(sp)s(ecially)-8 b(.)54
-b(Exit)35 b(statuses)g(from)f(shell)h(builtins)f(and)f(comp)s(ound)150
-4867 y(commands)j(are)g(also)h(limited)g(to)g(this)f(range.)58
-b(Under)36 b(certain)h(circumstances,)h(the)e(shell)h(will)f(use)150
-4977 y(sp)s(ecial)31 b(v)-5 b(alues)31 b(to)g(indicate)g(sp)s(eci\014c)
-f(failure)h(mo)s(des.)275 5121 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s
-(oses,)e(a)j(command)e(whic)m(h)h(exits)g(with)g(a)g(zero)g(exit)h
-(status)f(has)f(succeeded.)150 5230 y(A)e(non-zero)h(exit)g(status)g
-(indicates)g(failure.)40 b(This)28 b(seemingly)i(coun)m(ter-in)m
-(tuitiv)m(e)i(sc)m(heme)e(is)f(used)g(so)150 5340 y(there)34
-b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m(y)g(to)h(indicate)g(success)f
-(and)f(a)h(v)-5 b(ariet)m(y)35 b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5
-b(arious)p eop end
-%%Page: 42 48
-TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)150 299
+(pathname)150 4211 y(of)f(the)f(command)g(and)g(passed)g(to)h(that)g
+(command)f(in)g(its)h(en)m(vironmen)m(t.)150 4404 y Fk(3.7.5)63
+b(Exit)40 b(Status)150 4551 y Fu(The)23 b(exit)i(status)f(of)h(an)e
+(executed)i(command)f(is)g(the)g(v)-5 b(alue)24 b(returned)f(b)m(y)h
+(the)g Ft(waitpid)e Fu(system)i(call)h(or)150 4661 y(equiv)-5
+b(alen)m(t)33 b(function.)45 b(Exit)32 b(statuses)g(fall)g(b)s(et)m(w)m
+(een)h(0)f(and)f(255,)i(though,)f(as)g(explained)g(b)s(elo)m(w,)h(the)
+150 4770 y(shell)i(ma)m(y)g(use)f(v)-5 b(alues)35 b(ab)s(o)m(v)m(e)g
+(125)h(sp)s(ecially)-8 b(.)54 b(Exit)35 b(statuses)g(from)f(shell)h
+(builtins)f(and)f(comp)s(ound)150 4880 y(commands)j(are)g(also)h
+(limited)g(to)g(this)f(range.)58 b(Under)36 b(certain)h(circumstances,)
+h(the)e(shell)h(will)f(use)150 4989 y(sp)s(ecial)31 b(v)-5
+b(alues)31 b(to)g(indicate)g(sp)s(eci\014c)f(failure)h(mo)s(des.)275
+5121 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s(oses,)e(a)j(command)e
+(whic)m(h)h(exits)g(with)g(a)g(zero)g(exit)h(status)f(has)f(succeeded.)
+150 5230 y(A)e(non-zero)h(exit)g(status)g(indicates)g(failure.)40
+b(This)28 b(seemingly)i(coun)m(ter-in)m(tuitiv)m(e)i(sc)m(heme)e(is)f
+(used)g(so)150 5340 y(there)34 b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m
+(y)g(to)h(indicate)g(success)f(and)f(a)h(v)-5 b(ariet)m(y)35
+b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5 b(arious)p eop
+end
+%%Page: 45 51
+TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(45)150 299
y(failure)38 b(mo)s(des.)62 b(When)37 b(a)h(command)f(terminates)i(on)e
(a)h(fatal)h(signal)g(whose)e(n)m(um)m(b)s(er)f(is)i
Fr(N)p Fu(,)i(Bash)150 408 y(uses)30 b(the)g(v)-5 b(alue)31
b(128)p Ft(+)p Fr(N)42 b Fu(as)30 b(the)h(exit)g(status.)275
-537 y(If)k(a)h(command)g(is)g(not)g(found,)g(the)g(c)m(hild)h(pro)s
+549 y(If)k(a)h(command)g(is)g(not)g(found,)g(the)g(c)m(hild)h(pro)s
(cess)e(created)i(to)g(execute)g(it)g(returns)d(a)j(status)f(of)150
-647 y(127.)42 b(If)30 b(a)h(command)f(is)g(found)f(but)h(is)g(not)h
+658 y(127.)42 b(If)30 b(a)h(command)f(is)g(found)f(but)h(is)g(not)h
(executable,)h(the)f(return)e(status)i(is)f(126.)275
-776 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f(during)
+798 y(If)i(a)i(command)f(fails)g(b)s(ecause)g(of)h(an)f(error)f(during)
g(expansion)h(or)g(redirection,)i(the)f(exit)g(status)150
-885 y(is)c(greater)i(than)e(zero.)275 1014 y(The)38 b(exit)h(status)g
+908 y(is)c(greater)i(than)e(zero.)275 1048 y(The)38 b(exit)h(status)g
(is)g(used)f(b)m(y)g(the)h(Bash)g(conditional)h(commands)e(\(see)h
-(Section)h(3.2.5.2)h([Con-)150 1123 y(ditional)i(Constructs],)h(page)f
-(11\))g(and)e(some)i(of)f(the)g(list)g(constructs)g(\(see)h(Section)f
-(3.2.4)i([Lists],)150 1233 y(page)31 b(9\).)275 1362
+(Section)h(3.2.5.2)h([Con-)150 1158 y(ditional)i(Constructs],)h(page)f
+(12\))g(and)e(some)i(of)f(the)g(list)g(constructs)g(\(see)h(Section)f
+(3.2.4)i([Lists],)150 1267 y(page)31 b(10\).)275 1407
y(All)40 b(of)g(the)h(Bash)f(builtins)f(return)g(an)h(exit)h(status)g
(of)f(zero)h(if)f(they)g(succeed)g(and)g(a)g(non-zero)150
-1471 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m(y)g(b)s(e)f(used)g
+1517 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m(y)g(b)s(e)f(used)g
(b)m(y)g(the)h(conditional)h(and)e(list)h(constructs.)50
-b(All)35 b(builtins)150 1581 y(return)e(an)i(exit)g(status)g(of)f(2)h
+b(All)35 b(builtins)150 1627 y(return)e(an)i(exit)g(status)g(of)f(2)h
(to)g(indicate)h(incorrect)f(usage,)h(generally)g(in)m(v)-5
-b(alid)35 b(options)g(or)f(missing)150 1691 y(argumen)m(ts.)150
-1878 y Fk(3.7.6)63 b(Signals)150 2025 y Fu(When)36 b(Bash)g(is)h(in)m
-(teractiv)m(e,)j(in)c(the)h(absence)f(of)h(an)m(y)f(traps,)i(it)e
-(ignores)h Ft(SIGTERM)d Fu(\(so)j(that)g(`)p Ft(kill)150
-2135 y(0)p Fu(')c(do)s(es)g(not)g(kill)g(an)g(in)m(teractiv)m(e)j
-(shell\),)f(and)d Ft(SIGINT)f Fu(is)i(caugh)m(t)h(and)f(handled)f(\(so)
-h(that)h(the)f Ft(wait)150 2244 y Fu(builtin)24 b(is)h(in)m
-(terruptible\).)39 b(When)24 b(Bash)g(receiv)m(es)j(a)d
-Ft(SIGINT)p Fu(,)h(it)g(breaks)f(out)h(of)f(an)m(y)h(executing)h(lo)s
-(ops.)150 2354 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g
-Ft(SIGQUIT)p Fu(.)42 b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h
-(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 2464 y(page)f(107\),)h
-(Bash)f(ignores)g Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h
-Ft(SIGTSTP)p Fu(.)275 2592 y(Non-builtin)h(commands)g(started)g(b)m(y)g
-(Bash)h(ha)m(v)m(e)g(signal)g(handlers)e(set)i(to)g(the)g(v)-5
-b(alues)31 b(inherited)150 2702 y(b)m(y)37 b(the)h(shell)g(from)f(its)h
-(paren)m(t.)62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f
-(e\013ect,)k(async)m(hronous)c(commands)150 2812 y(ignore)f
-Ft(SIGINT)e Fu(and)h Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f
-(inherited)f(handlers.)55 b(Commands)35 b(run)f(as)i(a)150
-2921 y(result)27 b(of)h(command)f(substitution)h(ignore)g(the)g(k)m
-(eyb)s(oard-generated)g(job)g(con)m(trol)h(signals)f
-Ft(SIGTTIN)p Fu(,)150 3031 y Ft(SIGTTOU)p Fu(,)h(and)g
-Ft(SIGTSTP)p Fu(.)275 3160 y(The)h(shell)i(exits)g(b)m(y)f(default)g
-(up)s(on)f(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42 b(Before)32
-b(exiting,)h(an)e(in)m(teractiv)m(e)j(shell)150 3269
-y(resends)41 b(the)i Ft(SIGHUP)e Fu(to)i(all)g(jobs,)i(running)c(or)h
-(stopp)s(ed.)76 b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g
-Ft(SIGCONT)d Fu(to)150 3379 y(ensure)32 b(that)h(they)g(receiv)m(e)i
-(the)e Ft(SIGHUP)p Fu(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell)
-g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 3488
-y(to)i(a)g(particular)g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h
-(from)g(the)f(jobs)g(table)i(with)e(the)h Ft(disown)e
-Fu(builtin)h(\(see)150 3598 y(Section)c(7.2)g([Job)e(Con)m(trol)i
-(Builtins],)g(page)g(108\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i
-Ft(SIGHUP)c Fu(using)i Ft(disown)150 3707 y(-h)p Fu(.)275
-3836 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f
-(set)i(with)f Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150
-3946 y(Builtin],)31 b(page)g(66\),)h(Bash)f(sends)e(a)i
+b(alid)35 b(options)g(or)f(missing)150 1736 y(argumen)m(ts.)275
+1876 y(The)f(exit)i(status)f(of)h(the)f(last)h(command)f(is)g(a)m(v)-5
+b(ailable)36 b(in)e(the)g(sp)s(ecial)h(parameter)f($?)52
+b(\(see)35 b(Sec-)150 1986 y(tion)c(3.4.2)h([Sp)s(ecial)f(P)m
+(arameters],)h(page)f(23\).)150 2191 y Fk(3.7.6)63 b(Signals)150
+2338 y Fu(When)36 b(Bash)g(is)h(in)m(teractiv)m(e,)j(in)c(the)h
+(absence)f(of)h(an)m(y)f(traps,)i(it)e(ignores)h Ft(SIGTERM)d
+Fu(\(so)j(that)g(`)p Ft(kill)150 2447 y(0)p Fu(')c(do)s(es)g(not)g
+(kill)g(an)g(in)m(teractiv)m(e)j(shell\),)f(and)d Ft(SIGINT)f
+Fu(is)i(caugh)m(t)h(and)f(handled)f(\(so)h(that)h(the)f
+Ft(wait)150 2557 y Fu(builtin)24 b(is)h(in)m(terruptible\).)39
+b(When)24 b(Bash)g(receiv)m(es)j(a)d Ft(SIGINT)p Fu(,)h(it)g(breaks)f
+(out)h(of)f(an)m(y)h(executing)h(lo)s(ops.)150 2667 y(In)31
+b(all)h(cases,)h(Bash)f(ignores)g Ft(SIGQUIT)p Fu(.)42
+b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h(\(see)f(Chapter)f(7)h
+([Job)g(Con)m(trol],)150 2776 y(page)f(113\),)h(Bash)f(ignores)g
+Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h Ft(SIGTSTP)p
+Fu(.)275 2916 y(Non-builtin)h(commands)g(started)g(b)m(y)g(Bash)h(ha)m
+(v)m(e)g(signal)g(handlers)e(set)i(to)g(the)g(v)-5 b(alues)31
+b(inherited)150 3026 y(b)m(y)37 b(the)h(shell)g(from)f(its)h(paren)m
+(t.)62 b(When)38 b(job)f(con)m(trol)i(is)e(not)h(in)f(e\013ect,)k
+(async)m(hronous)c(commands)150 3136 y(ignore)f Ft(SIGINT)e
+Fu(and)h Ft(SIGQUIT)e Fu(in)j(addition)f(to)i(these)f(inherited)f
+(handlers.)55 b(Commands)35 b(run)f(as)i(a)150 3245 y(result)27
+b(of)h(command)f(substitution)h(ignore)g(the)g(k)m(eyb)s
+(oard-generated)g(job)g(con)m(trol)h(signals)f Ft(SIGTTIN)p
+Fu(,)150 3355 y Ft(SIGTTOU)p Fu(,)h(and)g Ft(SIGTSTP)p
+Fu(.)275 3495 y(The)h(shell)i(exits)g(b)m(y)f(default)g(up)s(on)f
+(receipt)i(of)f(a)h Ft(SIGHUP)p Fu(.)42 b(Before)32 b(exiting,)h(an)e
+(in)m(teractiv)m(e)j(shell)150 3604 y(resends)41 b(the)i
+Ft(SIGHUP)e Fu(to)i(all)g(jobs,)i(running)c(or)h(stopp)s(ed.)76
+b(Stopp)s(ed)41 b(jobs)h(are)h(sen)m(t)g Ft(SIGCONT)d
+Fu(to)150 3714 y(ensure)32 b(that)h(they)g(receiv)m(e)i(the)e
+Ft(SIGHUP)p Fu(.)47 b(T)-8 b(o)33 b(prev)m(en)m(t)g(the)g(shell)g(from)
+g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 3824 y(to)i(a)g(particular)
+g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h(from)g(the)f(jobs)g
+(table)i(with)e(the)h Ft(disown)e Fu(builtin)h(\(see)150
+3933 y(Section)c(7.2)g([Job)e(Con)m(trol)i(Builtins],)g(page)g(114\))h
+(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i Ft(SIGHUP)c
+Fu(using)i Ft(disown)150 4043 y(-h)p Fu(.)275 4183 y(If)38
+b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f(set)i(with)f
+Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150
+4293 y(Builtin],)31 b(page)g(71\),)h(Bash)f(sends)e(a)i
Ft(SIGHUP)e Fu(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login)
-e(shell)g(exits.)275 4075 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g
+e(shell)g(exits.)275 4433 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g
(command)f(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic)
-m(h)h(a)g(trap)150 4184 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g
+m(h)h(a)g(trap)150 4542 y(has)c(b)s(een)f(set,)i(the)f(trap)g(will)g
(not)g(b)s(e)f(executed)i(un)m(til)f(the)g(command)f(completes.)55
-b(When)35 b(Bash)g(is)150 4294 y(w)m(aiting)j(for)f(an)g(async)m
+b(When)35 b(Bash)g(is)150 4652 y(w)m(aiting)j(for)f(an)g(async)m
(hronous)g(command)g(via)h(the)f Ft(wait)f Fu(builtin,)i(the)g
-(reception)g(of)f(a)g(signal)h(for)150 4403 y(whic)m(h)d(a)g(trap)g
+(reception)g(of)f(a)g(signal)h(for)150 4761 y(whic)m(h)d(a)g(trap)g
(has)g(b)s(een)f(set)h(will)h(cause)f(the)g Ft(wait)f
Fu(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150
-4513 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h)
-f(the)h(trap)f(is)g(executed.)150 4742 y Fs(3.8)68 b(Shell)45
-b(Scripts)150 4902 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le)
-f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h
-(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 5011 y(non-option)c
-(argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)f(neither)g(the)g
-Ft(-c)g Fu(nor)f Ft(-s)h Fu(option)g(is)g(supplied)f(\(see)150
-5121 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(86\),)i
-(Bash)d(reads)g(and)f(executes)i(commands)f(from)f(the)i(\014le,)150
-5230 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f
+4871 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h)
+f(the)h(trap)f(is)g(executed.)275 5011 y(When)41 b(job)g(con)m(trol)h
+(is)g(not)f(enabled,)k(and)40 b(Bash)i(is)f(w)m(aiting)i(for)e(a)h
+(foreground)e(command)h(to)150 5121 y(complete,)35 b(the)e(shell)h
+(receiv)m(es)g(k)m(eyb)s(oard-generated)g(signals)g(suc)m(h)e(as)i
+Ft(SIGINT)d Fu(\(usually)i(generated)150 5230 y(b)m(y)e(`)p
+Ft(^C)p Fu('\))h(that)g(users)e(commonly)i(in)m(tend)g(to)g(send)e(to)j
+(that)f(command.)43 b(This)31 b(happ)s(ens)e(b)s(ecause)j(the)150
+5340 y(shell)23 b(and)g(the)h(command)f(are)g(in)g(the)h(same)f(pro)s
+(cess)g(group)g(as)h(the)f(terminal,)i(and)e(`)p Ft(^C)p
+Fu(')g(sends)g Ft(SIGINT)p eop end
+%%Page: 46 52
+TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(46)150 299
+y(to)35 b(all)g(pro)s(cesses)f(in)g(that)g(pro)s(cess)g(group.)51
+b(See)35 b(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(113,)h(for)e(a)h
+(more)150 408 y(in-depth)30 b(discussion)f(of)i(pro)s(cess)f(groups.)
+275 542 y(When)35 b(Bash)h(is)g(running)f(without)h(job)f(con)m(trol)i
+(enabled)f(and)g(receiv)m(es)h Ft(SIGINT)e Fu(while)h(w)m(aiting)150
+651 y(for)g(a)h(foreground)f(command,)i(it)f(w)m(aits)g(un)m(til)g
+(that)g(foreground)f(command)g(terminates)h(and)f(then)150
+761 y(decides)31 b(what)f(to)h(do)f(ab)s(out)g(the)h
+Ft(SIGINT)p Fu(:)199 894 y(1.)61 b(If)29 b(the)h(command)f(terminates)i
+(due)d(to)j(the)e Ft(SIGINT)p Fu(,)g(Bash)g(concludes)h(that)g(the)g
+(user)f(mean)m(t)h(to)330 1004 y(end)25 b(the)h(en)m(tire)h(script,)g
+(and)f(acts)h(on)e(the)i Ft(SIGINT)d Fu(\(e.g.,)k(b)m(y)e(running)f(a)h
+Ft(SIGINT)e Fu(trap)i(or)g(exiting)330 1113 y(itself)7
+b(\);)199 1246 y(2.)61 b(If)39 b(the)g(pip)s(eline)g(do)s(es)g(not)h
+(terminate)g(due)f(to)h Ft(SIGINT)p Fu(,)g(the)g(program)f(handled)f
+(the)i Ft(SIGINT)330 1356 y Fu(itself)35 b(and)e(did)h(not)g(treat)h
+(it)g(as)f(a)g(fatal)i(signal.)52 b(In)33 b(that)i(case,)h(Bash)e(do)s
+(es)g(not)g(treat)i Ft(SIGINT)330 1466 y Fu(as)41 b(a)g(fatal)g
+(signal,)j(either,)g(instead)d(assuming)f(that)h(the)g
+Ft(SIGINT)d Fu(w)m(as)j(used)f(as)h(part)f(of)h(the)330
+1575 y(program's)32 b(normal)g(op)s(eration)h(\(e.g.,)h
+Ft(emacs)d Fu(uses)g(it)i(to)g(ab)s(ort)f(editing)h(commands\))f(or)g
+(delib-)330 1685 y(erately)41 b(discarded.)69 b(Ho)m(w)m(ev)m(er,)45
+b(Bash)40 b(will)h(run)d(an)m(y)j(trap)e(set)i(on)f Ft(SIGINT)p
+Fu(,)h(as)f(it)h(do)s(es)e(with)330 1794 y(an)m(y)31
+b(other)f(trapp)s(ed)f(signal)i(it)g(receiv)m(es)h(while)e(it)h(is)f(w)
+m(aiting)h(for)f(the)h(foreground)e(command)h(to)330
+1904 y(complete,)i(for)e(compatibilit)m(y)-8 b(.)150
+2142 y Fs(3.8)68 b(Shell)45 b(Scripts)150 2302 y Fu(A)30
+b(shell)f(script)h(is)f(a)h(text)h(\014le)f(con)m(taining)h(shell)f
+(commands.)40 b(When)29 b(suc)m(h)g(a)h(\014le)g(is)f(used)g(as)h(the)g
+(\014rst)150 2411 y(non-option)c(argumen)m(t)h(when)e(in)m(v)m(oking)i
+(Bash,)g(and)f(neither)g(the)g Ft(-c)g Fu(nor)f Ft(-s)h
+Fu(option)g(is)g(supplied)f(\(see)150 2521 y(Section)39
+b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(91\),)i(Bash)d(reads)g(and)f
+(executes)i(commands)f(from)f(the)i(\014le,)150 2630
+y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f
(creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 b(The)31
-b(shell)i(\014rst)e(searc)m(hes)150 5340 y(for)d(the)g(\014le)g(in)g
+b(shell)i(\014rst)e(searc)m(hes)150 2740 y(for)d(the)g(\014le)g(in)g
(the)g(curren)m(t)f(directory)-8 b(,)30 b(and)d(lo)s(oks)i(in)e(the)i
-(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)p
-eop end
-%%Page: 43 49
-TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(43)275 299
-y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f(sp)s
-(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g(\014le,)150
-408 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j(and)d(the)h(p)s
-(ositional)g(parameters)f(are)h(set)g(to)g(the)g(remain-)150
-518 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m(en.)67
-b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h(the)f(p)s
-(ositional)150 628 y(parameters)31 b(are)f(unset.)275
-762 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m
+(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)275
+2873 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f
+(sp)s(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g
+(\014le,)150 2983 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j
+(and)d(the)h(p)s(ositional)g(parameters)f(are)h(set)g(to)g(the)g
+(remain-)150 3092 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m
+(en.)67 b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h
+(the)f(p)s(ositional)150 3202 y(parameters)31 b(are)f(unset.)275
+3335 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m
(y)e(using)g(the)h Ft(chmod)e Fu(command)h(to)h(turn)e(on)i(the)150
-872 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h
+3445 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h
(\014le)f(while)g(searc)m(hing)h(the)f Ft($PATH)f Fu(for)h(a)h
-(command,)h(it)150 981 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h
-(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 1116
-y Ft(filename)46 b Fj(arguments)150 1250 y Fu(is)30 b(equiv)-5
-b(alen)m(t)32 b(to)f(executing)390 1385 y Ft(bash)47
-b(filename)e Fj(arguments)150 1519 y Fu(if)30 b Ft(filename)d
-Fu(is)j(an)f(executable)j(shell)e(script.)40 b(This)29
-b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e(e\013ect)150
-1629 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g(in)m(v)m(ok)
-m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h(exception)h
-(that)f(the)150 1738 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s
-(ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g
-Ft(hash)f Fu(in)h(Section)h(4.1)150 1848 y([Bourne)30
-b(Shell)h(Builtins],)g(page)g(44\))h(are)e(retained)h(b)m(y)f(the)h(c)m
-(hild.)275 1983 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g
-(a)g(part)f(of)h(the)g(op)s(erating)g(system's)f(command)h(execution)
-150 2092 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h
-(script)f(b)s(egins)g(with)g(the)g(t)m(w)m(o)i(c)m(haracters)g(`)p
-Ft(#!)p Fu(',)f(the)g(remainder)150 2202 y(of)27 b(the)g(line)g(sp)s
-(eci\014es)g(an)g(in)m(terpreter)g(for)g(the)g(program)g(and,)g(dep)s
-(ending)e(on)i(the)g(op)s(erating)h(system,)150 2311
-y(one)e(or)g(more)g(optional)h(argumen)m(ts)f(for)g(that)g(in)m
-(terpreter.)40 b(Th)m(us,)26 b(y)m(ou)g(can)g(sp)s(ecify)g(Bash,)h
-Ft(awk)p Fu(,)f(P)m(erl,)150 2421 y(or)k(some)h(other)g(in)m(terpreter)
-g(and)e(write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h
-(language.)275 2555 y(The)k(argumen)m(ts)h(to)h(the)f(in)m(terpreter)h
-(consist)f(of)h(one)f(or)g(more)g(optional)h(argumen)m(ts)f(follo)m
-(wing)150 2665 y(the)e(in)m(terpreter)g(name)g(on)g(the)g(\014rst)g
-(line)g(of)g(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y)e(the)g
-(name)g(of)g(the)g(script)150 2775 y(\014le,)k(follo)m(w)m(ed)g(b)m(y)e
-(the)g(rest)g(of)g(the)h(argumen)m(ts)f(supplied)f(to)i(the)f(script.)
-58 b(The)35 b(details)i(of)g(ho)m(w)f(the)150 2884 y(in)m(terpreter)26
-b(line)g(is)g(split)g(in)m(to)h(an)f(in)m(terpreter)g(name)g(and)f(a)h
-(set)h(of)e(argumen)m(ts)i(v)-5 b(ary)25 b(across)i(systems.)150
-2994 y(Bash)j(will)f(p)s(erform)g(this)g(action)i(on)e(op)s(erating)h
-(systems)g(that)g(do)f(not)h(handle)f(it)h(themselv)m(es.)42
-b(Note)150 3103 y(that)e(some)g(older)g(v)m(ersions)g(of)g(Unix)f
-(limit)i(the)f(in)m(terpreter)g(name)g(and)f(a)h(single)g(argumen)m(t)g
-(to)h(a)150 3213 y(maxim)m(um)21 b(of)g(32)h(c)m(haracters,)j(so)c
-(it's)h(not)g(p)s(ortable)f(to)h(assume)e(that)i(using)f(more)g(than)g
-(one)g(argumen)m(t)150 3323 y(will)31 b(w)m(ork.)275
-3457 y(Bash)h(scripts)g(often)g(b)s(egin)g(with)g Ft(#!)e(/bin/bash)g
-Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f(installed)i(in)150
-3567 y Ft(/bin)p Fu(\),)26 b(since)h(this)f(ensures)f(that)i(Bash)f
-(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h(script,)g(ev)m(en)g
-(if)f(it)h(is)f(executed)150 3676 y(under)h(another)h(shell.)41
-b(It's)28 b(a)h(common)g(idiom)f(to)h(use)f Ft(env)g
-Fu(to)h(\014nd)e Ft(bash)g Fu(ev)m(en)i(if)f(it's)i(b)s(een)d
-(installed)150 3786 y(in)h(another)g(directory:)40 b
-Ft(#!/usr/bin/env)27 b(bash)f Fu(will)j(\014nd)d(the)j(\014rst)e(o)s
+(command,)h(it)150 3554 y(creates)32 b(a)f(new)e(instance)i(of)g
+(itself)g(to)g(execute)h(it.)41 b(In)30 b(other)h(w)m(ords,)f
+(executing)390 3688 y Ft(filename)46 b Fj(arguments)150
+3821 y Fu(is)30 b(equiv)-5 b(alen)m(t)32 b(to)f(executing)390
+3954 y Ft(bash)47 b(filename)e Fj(arguments)150 4087
+y Fu(if)30 b Ft(filename)d Fu(is)j(an)f(executable)j(shell)e(script.)40
+b(This)29 b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e
+(e\013ect)150 4197 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)
+g(in)m(v)m(ok)m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h
+(exception)h(that)f(the)150 4306 y(lo)s(cations)25 b(of)g(commands)e
+(remem)m(b)s(ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f
+(description)g(of)g Ft(hash)f Fu(in)h(Section)h(4.1)150
+4416 y([Bourne)30 b(Shell)h(Builtins],)g(page)g(48\))h(are)e(retained)h
+(b)m(y)f(the)h(c)m(hild.)275 4549 y(Most)36 b(v)m(ersions)g(of)g(Unix)f
+(mak)m(e)h(this)g(a)g(part)f(of)h(the)g(op)s(erating)g(system's)f
+(command)h(execution)150 4659 y(mec)m(hanism.)50 b(If)33
+b(the)g(\014rst)g(line)h(of)f(a)h(script)f(b)s(egins)g(with)g(the)g(t)m
+(w)m(o)i(c)m(haracters)g(`)p Ft(#!)p Fu(',)f(the)g(remainder)150
+4768 y(of)27 b(the)g(line)g(sp)s(eci\014es)g(an)g(in)m(terpreter)g(for)
+g(the)g(program)g(and,)g(dep)s(ending)e(on)i(the)g(op)s(erating)h
+(system,)150 4878 y(one)e(or)g(more)g(optional)h(argumen)m(ts)f(for)g
+(that)g(in)m(terpreter.)40 b(Th)m(us,)26 b(y)m(ou)g(can)g(sp)s(ecify)g
+(Bash,)h Ft(awk)p Fu(,)f(P)m(erl,)150 4988 y(or)k(some)h(other)g(in)m
+(terpreter)g(and)e(write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h
+(in)f(that)h(language.)275 5121 y(The)k(argumen)m(ts)h(to)h(the)f(in)m
+(terpreter)h(consist)f(of)h(one)f(or)g(more)g(optional)h(argumen)m(ts)f
+(follo)m(wing)150 5230 y(the)e(in)m(terpreter)g(name)g(on)g(the)g
+(\014rst)g(line)g(of)g(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y)
+e(the)g(name)g(of)g(the)g(script)150 5340 y(\014le,)k(follo)m(w)m(ed)g
+(b)m(y)e(the)g(rest)g(of)g(the)h(argumen)m(ts)f(supplied)f(to)i(the)f
+(script.)58 b(The)35 b(details)i(of)g(ho)m(w)f(the)p
+eop end
+%%Page: 47 53
+TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(47)150 299
+y(in)m(terpreter)26 b(line)g(is)g(split)g(in)m(to)h(an)f(in)m
+(terpreter)g(name)g(and)f(a)h(set)h(of)e(argumen)m(ts)i(v)-5
+b(ary)25 b(across)i(systems.)150 408 y(Bash)j(will)f(p)s(erform)g(this)
+g(action)i(on)e(op)s(erating)h(systems)g(that)g(do)f(not)h(handle)f(it)
+h(themselv)m(es.)42 b(Note)150 518 y(that)e(some)g(older)g(v)m(ersions)
+g(of)g(Unix)f(limit)i(the)f(in)m(terpreter)g(name)g(and)f(a)h(single)g
+(argumen)m(t)g(to)h(a)150 628 y(maxim)m(um)21 b(of)g(32)h(c)m
+(haracters,)j(so)c(it's)h(not)g(p)s(ortable)f(to)h(assume)e(that)i
+(using)f(more)g(than)g(one)g(argumen)m(t)150 737 y(will)31
+b(w)m(ork.)275 872 y(Bash)h(scripts)g(often)g(b)s(egin)g(with)g
+Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f
+(installed)i(in)150 981 y Ft(/bin)p Fu(\),)26 b(since)h(this)f(ensures)
+f(that)i(Bash)f(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h
+(script,)g(ev)m(en)g(if)f(it)h(is)f(executed)150 1091
+y(under)h(another)h(shell.)41 b(It's)28 b(a)h(common)g(idiom)f(to)h
+(use)f Ft(env)g Fu(to)h(\014nd)e Ft(bash)g Fu(ev)m(en)i(if)f(it's)i(b)s
+(een)d(installed)150 1200 y(in)h(another)g(directory:)40
+b Ft(#!/usr/bin/env)27 b(bash)f Fu(will)j(\014nd)d(the)j(\014rst)e(o)s
(ccurrence)h(of)g Ft(bash)f Fu(in)h Ft($PATH)p Fu(.)p
eop end
-%%Page: 44 50
-TeXDict begin 44 49 bop 3659 -116 a Fu(44)150 299 y Fp(4)80
+%%Page: 48 54
+TeXDict begin 48 53 bop 3659 -116 a Fu(48)150 299 y Fp(4)80
b(Shell)53 b(Builtin)f(Commands)150 499 y Fu(Builtin)34
b(commands)f(are)h(con)m(tained)g(within)f(the)h(shell)g(itself.)50
b(When)34 b(the)f(name)h(of)f(a)h(builtin)f(com-)150
608 y(mand)26 b(is)i(used)e(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f
(simple)h(command)f(\(see)h(Section)g(3.2.2)h([Simple)f(Commands],)150
-718 y(page)21 b(8\),)j(the)d(shell)g(executes)h(the)f(command)f
+718 y(page)21 b(9\),)j(the)d(shell)g(executes)h(the)f(command)f
(directly)-8 b(,)24 b(without)d(in)m(v)m(oking)h(another)f(program.)37
b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g
(functionalit)m(y)h(imp)s(ossible)e(or)h(incon)m(v)m(enien)m(t)h(to)f
@@ -11327,12 +11631,12 @@ b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g
(other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150
1412 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f
(con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h
-(Builtins],)150 1521 y(page)37 b(108\),)i(the)d(directory)g(stac)m(k)h
-(\(see)g(Section)g(6.8.1)g([Directory)h(Stac)m(k)f(Builtins],)h(page)e
-(97\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h
-([Bash)f(History)g(Builtins],)h(page)g(146\),)h(and)d(the)h
+(Builtins],)150 1521 y(page)33 b(114\),)i(the)e(directory)g(stac)m(k)h
+(\(see)f(Section)h(6.8.1)g([Directory)g(Stac)m(k)g(Builtins],)g(page)f
+(102\),)i(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h
+([Bash)f(History)g(Builtins],)h(page)g(152\),)h(and)d(the)h
(programmable)150 1740 y(completion)32 b(facilities)g(\(see)g(Section)f
-(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(139\).)275
+(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(146\).)275
1868 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended)
g(b)m(y)g Fm(posix)g Fu(or)g(Bash.)275 1996 y(Unless)20
b(otherwise)h(noted,)h(eac)m(h)g(builtin)e(command)g(do)s(cumen)m(ted)g
@@ -11368,1999 +11672,2061 @@ Fr(\014lename)39 b Fu(argumen)m(t)34 b(in)f(the)h(curren)m(t)g(shell)
630 4134 y(con)m(text.)45 b(If)31 b Fr(\014lename)37
b Fu(do)s(es)31 b(not)g(con)m(tain)i(a)e(slash,)h(the)g
Ft(PATH)e Fu(v)-5 b(ariable)32 b(is)f(used)f(to)i(\014nd)630
-4244 y Fr(\014lename)p Fu(.)52 b(When)34 b(Bash)g(is)h(not)f(in)g
-Fm(posix)f Fu(mo)s(de,)i(the)g(curren)m(t)f(directory)g(is)g(searc)m
-(hed)630 4354 y(if)d Fr(\014lename)36 b Fu(is)31 b(not)h(found)d(in)i
-Ft($PATH)p Fu(.)41 b(If)31 b(an)m(y)g Fr(argumen)m(ts)k
-Fu(are)c(supplied,)f(they)i(b)s(ecome)630 4463 y(the)e(p)s(ositional)h
-(parameters)g(when)e Fr(\014lename)35 b Fu(is)30 b(executed.)42
-b(Otherwise)30 b(the)g(p)s(ositional)630 4573 y(parameters)40
-b(are)f(unc)m(hanged.)67 b(If)39 b(the)g Ft(-T)g Fu(option)g(is)h
-(enabled,)h Ft(source)d Fu(inherits)h(an)m(y)630 4682
-y(trap)31 b(on)g Ft(DEBUG)p Fu(;)f(if)i(it)f(is)g(not,)h(an)m(y)g
-Ft(DEBUG)e Fu(trap)h(string)g(is)g(sa)m(v)m(ed)h(and)f(restored)g
-(around)630 4792 y(the)41 b(call)i(to)e Ft(source)p Fu(,)i(and)d
-Ft(source)f Fu(unsets)i(the)g Ft(DEBUG)f Fu(trap)h(while)g(it)g
-(executes.)74 b(If)630 4902 y Ft(-T)39 b Fu(is)g(not)h(set,)j(and)c
-(the)g(sourced)h(\014le)f(c)m(hanges)i(the)e Ft(DEBUG)f
-Fu(trap,)k(the)e(new)f(v)-5 b(alue)40 b(is)630 5011 y(retained)e(when)e
-Ft(source)g Fu(completes.)63 b(The)37 b(return)f(status)h(is)h(the)f
-(exit)i(status)e(of)h(the)630 5121 y(last)g(command)e(executed,)j(or)e
-(zero)h(if)e(no)h(commands)f(are)h(executed.)61 b(If)36
-b Fr(\014lename)42 b Fu(is)630 5230 y(not)f(found,)h(or)e(cannot)h(b)s
-(e)f(read,)j(the)e(return)e(status)i(is)g(non-zero.)71
-b(This)40 b(builtin)g(is)630 5340 y(equiv)-5 b(alen)m(t)32
-b(to)f Ft(source)p Fu(.)p eop end
-%%Page: 45 51
-TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(45)150 299 y Ft(break)870
-428 y(break)46 b([)p Fj(n)p Ft(])630 558 y Fu(Exit)f(from)f(a)g
+4244 y Fr(\014lename)p Fu(,)38 b(but)e Fr(\014lename)41
+b Fu(do)s(es)36 b(not)h(need)f(to)h(b)s(e)e(executable.)60
+b(When)36 b(Bash)g(is)h(not)f(in)630 4354 y Fm(posix)26
+b Fu(mo)s(de,)i(it)g(searc)m(hes)g(the)f(curren)m(t)g(directory)g(if)h
+Fr(\014lename)k Fu(is)27 b(not)h(found)d(in)i Ft($PATH)p
+Fu(.)630 4463 y(If)39 b(an)m(y)h Fr(argumen)m(ts)j Fu(are)d(supplied,)h
+(they)e(b)s(ecome)h(the)g(p)s(ositional)g(parameters)g(when)630
+4573 y Fr(\014lename)i Fu(is)36 b(executed.)60 b(Otherwise)36
+b(the)h(p)s(ositional)g(parameters)g(are)g(unc)m(hanged.)58
+b(If)630 4682 y(the)33 b Ft(-T)g Fu(option)g(is)g(enabled,)h
+Ft(.)f Fu(inherits)g(an)m(y)g(trap)g(on)g Ft(DEBUG)p
+Fu(;)g(if)g(it)h(is)f(not,)h(an)m(y)f Ft(DEBUG)630 4792
+y Fu(trap)f(string)g(is)g(sa)m(v)m(ed)h(and)f(restored)g(around)f(the)i
+(call)g(to)g Ft(.)p Fu(,)f(and)g Ft(.)g Fu(unsets)f(the)h
+Ft(DEBUG)630 4902 y Fu(trap)f(while)h(it)g(executes.)46
+b(If)31 b Ft(-T)g Fu(is)g(not)h(set,)h(and)d(the)i(sourced)f(\014le)h
+(c)m(hanges)h(the)e Ft(DEBUG)630 5011 y Fu(trap,)e(the)f(new)g(v)-5
+b(alue)29 b(is)f(retained)h(when)e Ft(.)h Fu(completes.)42
+b(The)27 b(return)h(status)g(is)h(the)f(exit)630 5121
+y(status)k(of)f(the)h(last)g(command)f(executed,)i(or)f(zero)g(if)f(no)
+h(commands)f(are)h(executed.)44 b(If)630 5230 y Fr(\014lename)d
+Fu(is)36 b(not)g(found,)h(or)e(cannot)i(b)s(e)e(read,)j(the)e(return)f
+(status)h(is)g(non-zero.)58 b(This)630 5340 y(builtin)30
+b(is)g(equiv)-5 b(alen)m(t)32 b(to)f Ft(source)p Fu(.)p
+eop end
+%%Page: 49 55
+TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(49)150 299 y Ft(break)870
+433 y(break)46 b([)p Fj(n)p Ft(])630 568 y Fu(Exit)f(from)f(a)g
Ft(for)p Fu(,)k Ft(while)p Fu(,)e Ft(until)p Fu(,)h(or)d
Ft(select)f Fu(lo)s(op.)83 b(If)44 b Fr(n)g Fu(is)g(supplied,)j(the)e
-Fr(n)p Fu(th)630 667 y(enclosing)c(lo)s(op)f(is)h(exited.)70
+Fr(n)p Fu(th)630 677 y(enclosing)c(lo)s(op)f(is)h(exited.)70
b Fr(n)40 b Fu(m)m(ust)g(b)s(e)f(greater)j(than)d(or)i(equal)f(to)h(1.)
-70 b(The)40 b(return)630 777 y(status)31 b(is)f(zero)h(unless)f
+70 b(The)40 b(return)630 787 y(status)31 b(is)f(zero)h(unless)f
Fr(n)g Fu(is)g(not)h(greater)g(than)g(or)f(equal)h(to)g(1.)150
-927 y Ft(cd)870 1056 y(cd)47 b([-L|[-P)f([-e]])g([-@])h([)p
-Fj(directory)p Ft(])630 1186 y Fu(Change)27 b(the)g(curren)m(t)f(w)m
+946 y Ft(cd)870 1081 y(cd)47 b([-L|[-P)f([-e]])g([-@])h([)p
+Fj(directory)p Ft(])630 1215 y Fu(Change)27 b(the)g(curren)m(t)f(w)m
(orking)h(directory)g(to)h Fr(directory)p Fu(.)40 b(If)26
-b Fr(directory)35 b Fu(is)27 b(not)g(supplied,)630 1295
-y(the)f(v)-5 b(alue)26 b(of)f(the)h Ft(HOME)e Fu(shell)i(v)-5
-b(ariable)26 b(is)g(used.)38 b(An)m(y)25 b(additional)i(argumen)m(ts)e
-(follo)m(wing)630 1405 y Fr(directory)39 b Fu(are)31
-b(ignored.)41 b(If)30 b(the)h(shell)g(v)-5 b(ariable)31
-b Ft(CDPATH)e Fu(exists,)i(it)g(is)g(used)f(as)g(a)h(searc)m(h)630
-1514 y(path:)39 b(eac)m(h)29 b(directory)g(name)f(in)f
-Ft(CDPATH)g Fu(is)h(searc)m(hed)g(for)g Fr(directory)p
-Fu(,)h(with)f(alternativ)m(e)630 1624 y(directory)j(names)g(in)f
-Ft(CDPATH)f Fu(separated)j(b)m(y)e(a)h(colon)h(\(`)p
-Ft(:)p Fu('\).)43 b(If)30 b Fr(directory)39 b Fu(b)s(egins)30
-b(with)630 1733 y(a)h(slash,)f Ft(CDPATH)f Fu(is)h(not)h(used.)630
-1863 y(The)g Ft(-P)h Fu(option)g(means)g(to)h(not)f(follo)m(w)h(sym)m
-(b)s(olic)g(links:)44 b(sym)m(b)s(olic)32 b(links)g(are)g(resolv)m(ed)
-630 1973 y(while)41 b Ft(cd)f Fu(is)h(tra)m(v)m(ersing)h
+b Fr(directory)35 b Fu(is)27 b(not)g(supplied,)630 1325
+y(the)k(v)-5 b(alue)31 b(of)g(the)g Ft(HOME)e Fu(shell)i(v)-5
+b(ariable)32 b(is)f(used.)40 b(If)31 b(the)g(shell)g(v)-5
+b(ariable)31 b Ft(CDPATH)e Fu(exists,)630 1435 y(it)44
+b(is)f(used)g(as)h(a)f(searc)m(h)h(path:)67 b(eac)m(h)45
+b(directory)f(name)f(in)g Ft(CDPATH)f Fu(is)h(searc)m(hed)h(for)630
+1544 y Fr(directory)p Fu(,)k(with)c(alternativ)m(e)i(directory)f(names)
+e(in)h Ft(CDPATH)e Fu(separated)j(b)m(y)f(a)g(colon)630
+1654 y(\(`)p Ft(:)p Fu('\).)e(If)30 b Fr(directory)38
+b Fu(b)s(egins)30 b(with)g(a)h(slash,)f Ft(CDPATH)f Fu(is)h(not)h
+(used.)630 1788 y(The)g Ft(-P)h Fu(option)g(means)g(to)h(not)f(follo)m
+(w)h(sym)m(b)s(olic)g(links:)44 b(sym)m(b)s(olic)32 b(links)g(are)g
+(resolv)m(ed)630 1898 y(while)41 b Ft(cd)f Fu(is)h(tra)m(v)m(ersing)h
Fr(directory)49 b Fu(and)40 b(b)s(efore)g(pro)s(cessing)h(an)f
-(instance)i(of)f(`)p Ft(..)p Fu(')f(in)630 2082 y Fr(directory)p
-Fu(.)630 2212 y(By)34 b(default,)h(or)e(when)g(the)g
+(instance)i(of)f(`)p Ft(..)p Fu(')f(in)630 2007 y Fr(directory)p
+Fu(.)630 2142 y(By)34 b(default,)h(or)e(when)g(the)g
Ft(-L)g Fu(option)h(is)g(supplied,)f(sym)m(b)s(olic)h(links)f(in)h
-Fr(directory)42 b Fu(are)630 2321 y(resolv)m(ed)31 b(after)g
+Fr(directory)42 b Fu(are)630 2252 y(resolv)m(ed)31 b(after)g
Ft(cd)f Fu(pro)s(cesses)g(an)g(instance)h(of)g(`)p Ft(..)p
-Fu(')f(in)g Fr(directory)p Fu(.)630 2451 y(If)35 b(`)p
+Fu(')f(in)g Fr(directory)p Fu(.)630 2386 y(If)35 b(`)p
Ft(..)p Fu(')f(app)s(ears)h(in)f Fr(directory)p Fu(,)j(it)f(is)f(pro)s
(cessed)f(b)m(y)h(remo)m(ving)h(the)f(immediately)h(pre-)630
-2560 y(ceding)31 b(pathname)f(comp)s(onen)m(t,)h(bac)m(k)g(to)g(a)g
+2496 y(ceding)31 b(pathname)f(comp)s(onen)m(t,)h(bac)m(k)g(to)g(a)g
(slash)f(or)h(the)f(b)s(eginning)g(of)g Fr(directory)p
-Fu(.)630 2690 y(If)i(the)i Ft(-e)e Fu(option)h(is)g(supplied)f(with)g
+Fu(.)630 2630 y(If)i(the)i Ft(-e)e Fu(option)h(is)g(supplied)f(with)g
Ft(-P)h Fu(and)f(the)h(curren)m(t)g(w)m(orking)g(directory)g(cannot)630
-2800 y(b)s(e)k(successfully)g(determined)g(after)i(a)e(successful)h
+2740 y(b)s(e)k(successfully)g(determined)g(after)i(a)e(successful)h
(directory)g(c)m(hange,)i Ft(cd)d Fu(will)h(return)630
-2909 y(an)30 b(unsuccessful)f(status.)630 3039 y(On)41
+2849 y(an)30 b(unsuccessful)f(status.)630 2984 y(On)41
b(systems)h(that)h(supp)s(ort)d(it,)46 b(the)c Ft(-@)g
Fu(option)g(presen)m(ts)g(the)g(extended)g(attributes)630
-3148 y(asso)s(ciated)32 b(with)e(a)h(\014le)f(as)h(a)f(directory)-8
-b(.)630 3278 y(If)41 b Fr(directory)49 b Fu(is)41 b(`)p
+3093 y(asso)s(ciated)32 b(with)e(a)h(\014le)f(as)h(a)f(directory)-8
+b(.)630 3228 y(If)41 b Fr(directory)49 b Fu(is)41 b(`)p
Ft(-)p Fu(',)j(it)e(is)f(con)m(v)m(erted)h(to)g Ft($OLDPWD)d
-Fu(b)s(efore)i(the)g(directory)h(c)m(hange)g(is)630 3387
-y(attempted.)630 3517 y(If)33 b(a)h(non-empt)m(y)g(directory)g(name)f
+Fu(b)s(efore)i(the)g(directory)h(c)m(hange)g(is)630 3337
+y(attempted.)630 3472 y(If)33 b(a)h(non-empt)m(y)g(directory)g(name)f
(from)g Ft(CDPATH)f Fu(is)h(used,)h(or)g(if)f(`)p Ft(-)p
-Fu(')h(is)f(the)h(\014rst)f(argu-)630 3626 y(men)m(t,)28
+Fu(')h(is)f(the)h(\014rst)f(argu-)630 3582 y(men)m(t,)28
b(and)e(the)h(directory)g(c)m(hange)h(is)f(successful,)h(the)f
-(absolute)g(pathname)g(of)f(the)h(new)630 3736 y(w)m(orking)k
+(absolute)g(pathname)g(of)f(the)h(new)630 3691 y(w)m(orking)k
(directory)g(is)f(written)g(to)i(the)e(standard)g(output.)630
-3866 y(The)f(return)g(status)h(is)f(zero)i(if)e(the)h(directory)g(is)g
-(successfully)g(c)m(hanged,)g(non-zero)g(oth-)630 3975
-y(erwise.)150 4125 y Ft(continue)870 4254 y(continue)46
-b([)p Fj(n)p Ft(])630 4384 y Fu(Resume)32 b(the)g(next)g(iteration)i
+3826 y(If)i(the)i(directory)f(c)m(hange)h(is)f(successful,)h
+Ft(cd)e Fu(sets)h(the)h(v)-5 b(alue)33 b(of)g(the)g Ft(PWD)f
+Fu(en)m(vironmen)m(t)630 3935 y(v)-5 b(ariable)32 b(to)g(the)f(new)g
+(directory)g(name,)h(and)e(sets)i(the)f Ft(OLDPWD)e Fu(en)m(vironmen)m
+(t)j(v)-5 b(ariable)630 4045 y(to)31 b(the)g(v)-5 b(alue)31
+b(of)f(the)h(curren)m(t)f(w)m(orking)g(directory)h(b)s(efore)f(the)h(c)
+m(hange.)630 4179 y(The)e(return)g(status)h(is)f(zero)i(if)e(the)h
+(directory)g(is)g(successfully)g(c)m(hanged,)g(non-zero)g(oth-)630
+4289 y(erwise.)150 4448 y Ft(continue)870 4583 y(continue)46
+b([)p Fj(n)p Ft(])630 4717 y Fu(Resume)32 b(the)g(next)g(iteration)i
(of)e(an)g(enclosing)h Ft(for)p Fu(,)f Ft(while)p Fu(,)f
-Ft(until)p Fu(,)g(or)h Ft(select)f Fu(lo)s(op.)630 4493
+Ft(until)p Fu(,)g(or)h Ft(select)f Fu(lo)s(op.)630 4827
y(If)f Fr(n)h Fu(is)g(supplied,)e(the)j(execution)g(of)f(the)g
Fr(n)p Fu(th)f(enclosing)i(lo)s(op)f(is)f(resumed.)42
-b Fr(n)30 b Fu(m)m(ust)h(b)s(e)630 4603 y(greater)39
+b Fr(n)30 b Fu(m)m(ust)h(b)s(e)630 4936 y(greater)39
b(than)f(or)g(equal)g(to)h(1.)63 b(The)38 b(return)e(status)j(is)e
-(zero)i(unless)e Fr(n)h Fu(is)g(not)g(greater)630 4712
-y(than)30 b(or)g(equal)h(to)g(1.)150 4862 y Ft(eval)870
-4991 y(eval)47 b([)p Fj(arguments)p Ft(])630 5121 y Fu(The)25
+(zero)i(unless)e Fr(n)h Fu(is)g(not)g(greater)630 5046
+y(than)30 b(or)g(equal)h(to)g(1.)150 5205 y Ft(eval)870
+5340 y(eval)47 b([)p Fj(arguments)p Ft(])p eop end
+%%Page: 50 56
+TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(The)25
b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)f(a)g(single)h
-(command,)f(whic)m(h)g(is)f(then)630 5230 y(read)35 b(and)g(executed,)j
+(command,)f(whic)m(h)g(is)f(then)630 408 y(read)35 b(and)g(executed,)j
(and)d(its)h(exit)g(status)g(returned)e(as)h(the)h(exit)g(status)g(of)g
-Ft(eval)p Fu(.)54 b(If)630 5340 y(there)31 b(are)f(no)h(argumen)m(ts)f
+Ft(eval)p Fu(.)54 b(If)630 518 y(there)31 b(are)f(no)h(argumen)m(ts)f
(or)h(only)f(empt)m(y)h(argumen)m(ts,)g(the)f(return)g(status)g(is)h
-(zero.)p eop end
-%%Page: 46 52
-TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f
-(Builtin)h(Commands)2079 b(46)150 299 y Ft(exec)870 430
-y(exec)47 b([-cl])f([-a)h Fj(name)p Ft(])f([)p Fj(command)g
-Ft([)p Fj(arguments)p Ft(]])630 562 y Fu(If)36 b Fr(command)k
-Fu(is)c(supplied,)h(it)g(replaces)h(the)e(shell)h(without)f(creating)i
-(a)f(new)f(pro)s(cess.)630 671 y(If)k(the)h Ft(-l)e Fu(option)i(is)g
-(supplied,)h(the)e(shell)h(places)g(a)g(dash)f(at)h(the)f(b)s(eginning)
-g(of)h(the)630 781 y(zeroth)36 b(argumen)m(t)h(passed)e(to)h
-Fr(command)p Fu(.)57 b(This)35 b(is)h(what)f(the)h Ft(login)e
-Fu(program)i(do)s(es.)630 891 y(The)i Ft(-c)g Fu(option)g(causes)h
-Fr(command)j Fu(to)d(b)s(e)f(executed)h(with)f(an)g(empt)m(y)h(en)m
-(vironmen)m(t.)630 1000 y(If)c Ft(-a)g Fu(is)h(supplied,)f(the)h(shell)
-g(passes)f Fr(name)41 b Fu(as)36 b(the)f(zeroth)i(argumen)m(t)f(to)g
-Fr(command)p Fu(.)630 1110 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f
+(zero.)150 679 y Ft(exec)870 815 y(exec)47 b([-cl])f([-a)h
+Fj(name)p Ft(])f([)p Fj(command)g Ft([)p Fj(arguments)p
+Ft(]])630 950 y Fu(If)36 b Fr(command)k Fu(is)c(supplied,)h(it)g
+(replaces)h(the)e(shell)h(without)f(creating)i(a)f(new)f(pro)s(cess.)
+630 1060 y(If)k(the)h Ft(-l)e Fu(option)i(is)g(supplied,)h(the)e(shell)
+h(places)g(a)g(dash)f(at)h(the)f(b)s(eginning)g(of)h(the)630
+1169 y(zeroth)36 b(argumen)m(t)h(passed)e(to)h Fr(command)p
+Fu(.)57 b(This)35 b(is)h(what)f(the)h Ft(login)e Fu(program)i(do)s(es.)
+630 1279 y(The)i Ft(-c)g Fu(option)g(causes)h Fr(command)j
+Fu(to)d(b)s(e)f(executed)h(with)f(an)g(empt)m(y)h(en)m(vironmen)m(t.)
+630 1388 y(If)c Ft(-a)g Fu(is)h(supplied,)f(the)h(shell)g(passes)f
+Fr(name)41 b Fu(as)36 b(the)f(zeroth)i(argumen)m(t)f(to)g
+Fr(command)p Fu(.)630 1498 y(If)c Fr(command)j Fu(cannot)e(b)s(e)f
(executed)h(for)f(some)g(reason,)h(a)g(non-in)m(teractiv)m(e)i(shell)d
-(exits,)630 1219 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h
+(exits,)630 1608 y(unless)27 b(the)g Ft(execfail)e Fu(shell)i(option)h
(is)f(enabled.)40 b(In)27 b(that)g(case,)j(it)d(returns)f(failure.)40
-b(An)630 1329 y(in)m(teractiv)m(e)35 b(shell)d(returns)f(failure)h(if)g
+b(An)630 1717 y(in)m(teractiv)m(e)35 b(shell)d(returns)f(failure)h(if)g
(the)g(\014le)g(cannot)h(b)s(e)e(executed.)47 b(A)32
-b(subshell)f(exits)630 1439 y(unconditionally)j(if)g
+b(subshell)f(exits)630 1827 y(unconditionally)j(if)g
Ft(exec)f Fu(fails.)52 b(If)33 b(no)h Fr(command)j Fu(is)d(sp)s
-(eci\014ed,)h(redirections)f(ma)m(y)h(b)s(e)630 1548
+(eci\014ed,)h(redirections)f(ma)m(y)h(b)s(e)630 1936
y(used)30 b(to)i(a\013ect)g(the)f(curren)m(t)g(shell)g(en)m(vironmen)m
(t.)43 b(If)30 b(there)i(are)f(no)g(redirection)g(errors,)630
-1658 y(the)g(return)e(status)i(is)f(zero;)h(otherwise)g(the)g(return)e
-(status)i(is)f(non-zero.)150 1811 y Ft(exit)870 1943
-y(exit)47 b([)p Fj(n)p Ft(])630 2074 y Fu(Exit)30 b(the)g(shell,)h
+2046 y(the)g(return)e(status)i(is)f(zero;)h(otherwise)g(the)g(return)e
+(status)i(is)f(non-zero.)150 2207 y Ft(exit)870 2342
+y(exit)47 b([)p Fj(n)p Ft(])630 2478 y Fu(Exit)30 b(the)g(shell,)h
(returning)d(a)j(status)f(of)g Fr(n)f Fu(to)h(the)g(shell's)g(paren)m
-(t.)41 b(If)30 b Fr(n)f Fu(is)h(omitted,)h(the)630 2184
+(t.)41 b(If)30 b Fr(n)f Fu(is)h(omitted,)h(the)630 2587
y(exit)c(status)g(is)g(that)g(of)g(the)g(last)g(command)f(executed.)41
b(An)m(y)26 b(trap)h(on)f Ft(EXIT)f Fu(is)i(executed)630
-2293 y(b)s(efore)j(the)h(shell)f(terminates.)150 2447
-y Ft(export)870 2578 y(export)46 b([-fn])g([-p])h([)p
-Fj(name)p Ft([=)p Fj(value)p Ft(]])630 2710 y Fu(Mark)40
+2697 y(b)s(efore)j(the)h(shell)f(terminates.)150 2858
+y Ft(export)870 2993 y(export)46 b([-fn])g([-p])h([)p
+Fj(name)p Ft([=)p Fj(value)p Ft(]])630 3129 y Fu(Mark)40
b(eac)m(h)h Fr(name)k Fu(to)40 b(b)s(e)f(passed)g(to)i(c)m(hild)f(pro)s
(cesses)f(in)g(the)h(en)m(vironmen)m(t.)70 b(If)39 b(the)630
-2819 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h
+3238 y Ft(-f)33 b Fu(option)h(is)g(supplied,)f(the)h
Fr(name)5 b Fu(s)33 b(refer)g(to)i(shell)e(functions;)i(otherwise)f
-(the)g(names)630 2929 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41
+(the)g(names)630 3348 y(refer)c(to)h(shell)g(v)-5 b(ariables.)41
b(The)30 b Ft(-n)f Fu(option)i(means)f(to)h(no)f(longer)h(mark)f(eac)m
-(h)i Fr(name)j Fu(for)630 3039 y(exp)s(ort.)52 b(If)33
-b(no)h Fr(names)k Fu(are)c(supplied,)g(or)g(if)g(the)g
-Ft(-p)g Fu(option)g(is)g(giv)m(en,)j(a)d(list)h(of)f(names)630
-3148 y(of)d(all)h(exp)s(orted)e(v)-5 b(ariables)31 b(is)g(displa)m(y)m
+(h)i Fr(name)j Fu(for)630 3458 y(exp)s(ort.)51 b(If)34
+b(no)g Fr(name)5 b Fu(s)34 b(are)g(supplied,)g(or)g(if)g(the)g
+Ft(-p)f Fu(option)i(is)f(giv)m(en,)i(a)e(list)h(of)f(names)630
+3567 y(of)d(all)h(exp)s(orted)e(v)-5 b(ariables)31 b(is)g(displa)m(y)m
(ed.)43 b(The)30 b Ft(-p)g Fu(option)i(displa)m(ys)e(output)h(in)f(a)h
-(form)630 3258 y(that)25 b(ma)m(y)g(b)s(e)f(reused)g(as)h(input.)38
+(form)630 3677 y(that)25 b(ma)m(y)g(b)s(e)f(reused)g(as)h(input.)38
b(If)24 b(a)h(v)-5 b(ariable)25 b(name)g(is)g(follo)m(w)m(ed)h(b)m(y)e
(=)p Fr(v)-5 b(alue)p Fu(,)27 b(the)d(v)-5 b(alue)630
-3367 y(of)31 b(the)f(v)-5 b(ariable)31 b(is)g(set)g(to)g
-Fr(v)-5 b(alue)p Fu(.)630 3499 y(The)29 b(return)e(status)j(is)f(zero)h
+3786 y(of)31 b(the)f(v)-5 b(ariable)31 b(is)g(set)g(to)g
+Fr(v)-5 b(alue)p Fu(.)630 3922 y(The)29 b(return)e(status)j(is)f(zero)h
(unless)e(an)h(in)m(v)-5 b(alid)29 b(option)h(is)f(supplied,)f(one)i
-(of)f(the)g(names)630 3608 y(is)k(not)g(a)h(v)-5 b(alid)33
+(of)f(the)g(names)630 4031 y(is)k(not)g(a)h(v)-5 b(alid)33
b(shell)h(v)-5 b(ariable)33 b(name,)i(or)e Ft(-f)f Fu(is)h(supplied)f
-(with)h(a)g(name)g(that)h(is)f(not)h(a)630 3718 y(shell)d(function.)150
-3871 y Ft(getopts)870 4003 y(getopts)46 b Fj(optstring)f(name)i
-Ft([)p Fj(arg)f Ft(...])630 4134 y(getopts)28 b Fu(is)i(used)g(b)m(y)g
+(with)h(a)g(name)g(that)h(is)f(not)h(a)630 4141 y(shell)d(function.)150
+4302 y Ft(getopts)870 4437 y(getopts)46 b Fj(optstring)f(name)i
+Ft([)p Fj(arg)f Ft(...])630 4573 y(getopts)28 b Fu(is)i(used)g(b)m(y)g
(shell)g(scripts)g(to)g(parse)g(p)s(ositional)h(parameters.)41
-b Fr(optstring)d Fu(con-)630 4244 y(tains)k(the)g(option)f(c)m
+b Fr(optstring)d Fu(con-)630 4682 y(tains)k(the)g(option)f(c)m
(haracters)i(to)g(b)s(e)d(recognized;)49 b(if)42 b(a)f(c)m(haracter)j
-(is)d(follo)m(w)m(ed)i(b)m(y)f(a)630 4354 y(colon,)33
+(is)d(follo)m(w)m(ed)i(b)m(y)f(a)630 4792 y(colon,)33
b(the)f(option)g(is)g(exp)s(ected)g(to)h(ha)m(v)m(e)g(an)e(argumen)m
-(t,)i(whic)m(h)f(should)e(b)s(e)h(separated)630 4463
+(t,)i(whic)m(h)f(should)e(b)s(e)h(separated)630 4902
y(from)40 b(it)g(b)m(y)g(whitespace.)70 b(The)40 b(colon)h(\(`)p
Ft(:)p Fu('\))g(and)e(question)h(mark)g(\(`)p Ft(?)p
-Fu('\))h(ma)m(y)f(not)h(b)s(e)630 4573 y(used)d(as)g(option)h(c)m
+Fu('\))h(ma)m(y)f(not)h(b)s(e)630 5011 y(used)d(as)g(option)h(c)m
(haracters.)67 b(Eac)m(h)39 b(time)g(it)g(is)f(in)m(v)m(ok)m(ed,)k
-Ft(getopts)37 b Fu(places)i(the)g(next)630 4682 y(option)29
+Ft(getopts)37 b Fu(places)i(the)g(next)630 5121 y(option)29
b(in)f(the)h(shell)g(v)-5 b(ariable)30 b Fr(name)p Fu(,)f(initializing)
i Fr(name)j Fu(if)28 b(it)h(do)s(es)g(not)g(exist,)h(and)e(the)630
-4792 y(index)33 b(of)g(the)h(next)f(argumen)m(t)h(to)g(b)s(e)e(pro)s
+5230 y(index)33 b(of)g(the)h(next)f(argumen)m(t)h(to)g(b)s(e)e(pro)s
(cessed)h(in)m(to)h(the)g(v)-5 b(ariable)34 b Ft(OPTIND)p
-Fu(.)48 b Ft(OPTIND)630 4902 y Fu(is)41 b(initialized)i(to)f(1)f(eac)m
+Fu(.)48 b Ft(OPTIND)630 5340 y Fu(is)41 b(initialized)i(to)f(1)f(eac)m
(h)h(time)g(the)f(shell)g(or)g(a)g(shell)g(script)g(is)g(in)m(v)m(ok)m
-(ed.)74 b(When)41 b(an)630 5011 y(option)36 b(requires)e(an)h(argumen)m
-(t,)i Ft(getopts)c Fu(places)j(that)g(argumen)m(t)g(in)m(to)g(the)f(v)
--5 b(ariable)630 5121 y Ft(OPTARG)p Fu(.)55 b(The)35
-b(shell)g(do)s(es)h(not)g(reset)g Ft(OPTIND)e Fu(automatically;)41
-b(it)36 b(m)m(ust)f(b)s(e)g(man)m(ually)630 5230 y(reset)i(b)s(et)m(w)m
-(een)g(m)m(ultiple)h(calls)f(to)g Ft(getopts)e Fu(within)h(the)h(same)g
-(shell)f(in)m(v)m(o)s(cation)j(if)e(a)630 5340 y(new)30
-b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)p eop
-end
-%%Page: 47 53
-TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(When)41
-b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k Ft(getopts)39
-b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 408
-y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g(the)
-g(index)f(of)g(the)h(\014rst)f(non-option)g(argumen)m(t,)630
-518 y(and)g Fr(name)35 b Fu(is)c(set)g(to)g(`)p Ft(?)p
-Fu('.)630 655 y Ft(getopts)c Fu(normally)j(parses)e(the)i(p)s
+(ed.)74 b(When)41 b(an)p eop end
+%%Page: 51 57
+TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(51)630 299 y(option)36
+b(requires)e(an)h(argumen)m(t,)i Ft(getopts)c Fu(places)j(that)g
+(argumen)m(t)g(in)m(to)g(the)f(v)-5 b(ariable)630 408
+y Ft(OPTARG)p Fu(.)55 b(The)35 b(shell)g(do)s(es)h(not)g(reset)g
+Ft(OPTIND)e Fu(automatically;)41 b(it)36 b(m)m(ust)f(b)s(e)g(man)m
+(ually)630 518 y(reset)i(b)s(et)m(w)m(een)g(m)m(ultiple)h(calls)f(to)g
+Ft(getopts)e Fu(within)h(the)h(same)g(shell)f(in)m(v)m(o)s(cation)j(if)
+e(a)630 628 y(new)30 b(set)h(of)f(parameters)h(is)f(to)i(b)s(e)d(used.)
+630 771 y(When)41 b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k
+Ft(getopts)39 b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630
+881 y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g
+(the)g(index)f(of)g(the)h(\014rst)f(non-option)g(argumen)m(t,)630
+990 y(and)g Fr(name)35 b Fu(is)c(set)g(to)g(`)p Ft(?)p
+Fu('.)630 1133 y Ft(getopts)c Fu(normally)j(parses)e(the)i(p)s
(ositional)g(parameters,)g(but)e(if)i(more)f(argumen)m(ts)h(are)630
-765 y(supplied)f(as)i Fr(arg)38 b Fu(v)-5 b(alues,)31
-b Ft(getopts)e Fu(parses)h(those)h(instead.)630 902 y
-Ft(getopts)h Fu(can)h(rep)s(ort)g(errors)g(in)h(t)m(w)m(o)h(w)m(a)m
+1243 y(supplied)f(as)i Fr(arg)38 b Fu(v)-5 b(alues,)31
+b Ft(getopts)e Fu(parses)h(those)h(instead.)630 1386
+y Ft(getopts)h Fu(can)h(rep)s(ort)g(errors)g(in)h(t)m(w)m(o)h(w)m(a)m
(ys.)51 b(If)33 b(the)h(\014rst)e(c)m(haracter)k(of)d
-Fr(optstring)42 b Fu(is)34 b(a)630 1011 y(colon,)g Fr(silen)m(t)h
+Fr(optstring)42 b Fu(is)34 b(a)630 1496 y(colon,)g Fr(silen)m(t)h
Fu(error)d(rep)s(orting)f(is)i(used.)45 b(In)31 b(normal)h(op)s
-(eration,)h(diagnostic)h(messages)630 1121 y(are)c(prin)m(ted)e(when)g
+(eration,)h(diagnostic)h(messages)630 1606 y(are)c(prin)m(ted)e(when)g
(in)m(v)-5 b(alid)30 b(options)g(or)f(missing)g(option)g(argumen)m(ts)h
-(are)f(encoun)m(tered.)630 1230 y(If)34 b(the)g(v)-5
+(are)f(encoun)m(tered.)630 1715 y(If)34 b(the)g(v)-5
b(ariable)35 b Ft(OPTERR)d Fu(is)i(set)h(to)f(0,)i(no)e(error)g
(messages)h(will)f(b)s(e)f(displa)m(y)m(ed,)j(ev)m(en)f(if)630
-1340 y(the)c(\014rst)e(c)m(haracter)j(of)f Ft(optstring)d
-Fu(is)i(not)h(a)f(colon.)630 1477 y(If)39 b(an)h(in)m(v)-5
+1825 y(the)c(\014rst)e(c)m(haracter)j(of)f Ft(optstring)d
+Fu(is)i(not)h(a)f(colon.)630 1968 y(If)39 b(an)h(in)m(v)-5
b(alid)41 b(option)f(is)g(seen,)i Ft(getopts)c Fu(places)j(`)p
Ft(?)p Fu(')f(in)m(to)h Fr(name)k Fu(and,)d(if)e(not)g(silen)m(t,)630
-1587 y(prin)m(ts)f(an)h(error)f(message)h(and)f(unsets)g
+2078 y(prin)m(ts)f(an)h(error)f(message)h(and)f(unsets)g
Ft(OPTARG)p Fu(.)67 b(If)39 b Ft(getopts)f Fu(is)i(silen)m(t,)j(the)c
-(option)630 1696 y(c)m(haracter)32 b(found)d(is)h(placed)h(in)f
+(option)630 2187 y(c)m(haracter)32 b(found)d(is)h(placed)h(in)f
Ft(OPTARG)f Fu(and)h(no)g(diagnostic)i(message)f(is)g(prin)m(ted.)630
-1833 y(If)c(a)g(required)f(argumen)m(t)i(is)f(not)g(found,)g(and)f
+2330 y(If)c(a)g(required)f(argumen)m(t)i(is)f(not)g(found,)g(and)f
Ft(getopts)f Fu(is)i(not)h(silen)m(t,)h(a)e(question)g(mark)630
-1943 y(\(`)p Ft(?)p Fu('\))h(is)g(placed)g(in)f Fr(name)p
+2440 y(\(`)p Ft(?)p Fu('\))h(is)g(placed)g(in)f Fr(name)p
Fu(,)h Ft(OPTARG)e Fu(is)h(unset,)h(and)f(a)g(diagnostic)i(message)g
-(is)e(prin)m(ted.)39 b(If)630 2052 y Ft(getopts)28 b
+(is)e(prin)m(ted.)39 b(If)630 2550 y Ft(getopts)28 b
Fu(is)h(silen)m(t,)i(then)e(a)h(colon)h(\(`)p Ft(:)p
Fu('\))f(is)g(placed)g(in)f Fr(name)35 b Fu(and)29 b
-Ft(OPTARG)f Fu(is)h(set)h(to)h(the)630 2162 y(option)g(c)m(haracter)h
-(found.)150 2326 y Ft(hash)870 2463 y(hash)47 b([-r])f([-p)h
-Fj(filename)p Ft(])e([-dt])i([)p Fj(name)p Ft(])630 2600
+Ft(OPTARG)f Fu(is)h(set)h(to)h(the)630 2659 y(option)g(c)m(haracter)h
+(found.)150 2836 y Ft(hash)870 2980 y(hash)47 b([-r])f([-p)h
+Fj(filename)p Ft(])e([-dt])i([)p Fj(name)p Ft(])630 3123
y Fu(Eac)m(h)32 b(time)g Ft(hash)e Fu(is)h(in)m(v)m(ok)m(ed,)j(it)d
(remem)m(b)s(ers)g(the)g(full)g(pathnames)g(of)h(the)f(commands)630
-2710 y(sp)s(eci\014ed)i(as)i Fr(name)k Fu(argumen)m(ts,)c(so)g(they)f
+3232 y(sp)s(eci\014ed)i(as)i Fr(name)k Fu(argumen)m(ts,)c(so)g(they)f
(need)g(not)g(b)s(e)f(searc)m(hed)i(for)f(on)g(subsequen)m(t)630
-2819 y(in)m(v)m(o)s(cations.)79 b(The)41 b(commands)h(are)h(found)e(b)m
-(y)h(searc)m(hing)i(through)d(the)i(directories)630 2929
+3342 y(in)m(v)m(o)s(cations.)79 b(The)41 b(commands)h(are)h(found)e(b)m
+(y)h(searc)m(hing)i(through)d(the)i(directories)630 3452
y(listed)37 b(in)g Ft($PATH)p Fu(.)58 b(An)m(y)37 b(previously-remem)m
(b)s(ered)f(pathname)h(is)g(discarded.)59 b(The)37 b
-Ft(-p)630 3039 y Fu(option)d(inhibits)f(the)h(path)g(searc)m(h,)h(and)e
+Ft(-p)630 3561 y Fu(option)d(inhibits)f(the)h(path)g(searc)m(h,)h(and)e
Fr(\014lename)39 b Fu(is)34 b(used)f(as)h(the)f(lo)s(cation)j(of)e
-Fr(name)p Fu(.)630 3148 y(The)42 b Ft(-r)g Fu(option)h(causes)f(the)h
+Fr(name)p Fu(.)630 3671 y(The)42 b Ft(-r)g Fu(option)h(causes)f(the)h
(shell)g(to)g(forget)g(all)h(remem)m(b)s(ered)d(lo)s(cations.)79
-b(The)42 b Ft(-d)630 3258 y Fu(option)31 b(causes)g(the)f(shell)h(to)g
+b(The)42 b Ft(-d)630 3780 y Fu(option)31 b(causes)g(the)f(shell)h(to)g
(forget)h(the)f(remem)m(b)s(ered)e(lo)s(cation)j(of)f(eac)m(h)h
-Fr(name)p Fu(.)41 b(If)30 b(the)630 3367 y Ft(-t)39 b
+Fr(name)p Fu(.)41 b(If)30 b(the)630 3890 y Ft(-t)39 b
Fu(option)h(is)g(supplied,)g(the)g(full)f(pathname)h(to)g(whic)m(h)f
-(eac)m(h)i Fr(name)k Fu(corresp)s(onds)38 b(is)630 3477
+(eac)m(h)i Fr(name)k Fu(corresp)s(onds)38 b(is)630 4000
y(prin)m(ted.)i(If)28 b(m)m(ultiple)h Fr(name)34 b Fu(argumen)m(ts)29
b(are)g(supplied)f(with)g Ft(-t)p Fu(,)h(the)g Fr(name)34
-b Fu(is)28 b(prin)m(ted)630 3587 y(b)s(efore)h(the)i(hashed)e(full)g
+b Fu(is)28 b(prin)m(ted)630 4109 y(b)s(efore)h(the)i(hashed)e(full)g
(pathname.)41 b(The)29 b Ft(-l)g Fu(option)i(causes)f(output)f(to)i(b)s
-(e)e(displa)m(y)m(ed)630 3696 y(in)23 b(a)h(format)g(that)g(ma)m(y)g(b)
+(e)e(displa)m(y)m(ed)630 4219 y(in)23 b(a)h(format)g(that)g(ma)m(y)g(b)
s(e)f(reused)f(as)i(input.)37 b(If)23 b(no)h(argumen)m(ts)f(are)h(giv)m
-(en,)i(or)e(if)f(only)h Ft(-l)630 3806 y Fu(is)35 b(supplied,)f
+(en,)i(or)e(if)f(only)h Ft(-l)630 4328 y Fu(is)35 b(supplied,)f
(information)h(ab)s(out)g(remem)m(b)s(ered)f(commands)g(is)h(prin)m
-(ted.)53 b(The)34 b(return)630 3915 y(status)d(is)f(zero)h(unless)f(a)h
+(ted.)53 b(The)34 b(return)630 4438 y(status)d(is)f(zero)h(unless)f(a)h
Fr(name)k Fu(is)c(not)f(found)f(or)i(an)f(in)m(v)-5 b(alid)31
-b(option)g(is)f(supplied.)150 4080 y Ft(pwd)870 4217
-y(pwd)47 b([-LP])630 4354 y Fu(Prin)m(t)29 b(the)g(absolute)h(pathname)
+b(option)g(is)f(supplied.)150 4615 y Ft(pwd)870 4758
+y(pwd)47 b([-LP])630 4902 y Fu(Prin)m(t)29 b(the)g(absolute)h(pathname)
e(of)h(the)h(curren)m(t)e(w)m(orking)h(directory)-8 b(.)42
-b(If)28 b(the)h Ft(-P)f Fu(option)630 4463 y(is)39 b(supplied,)h(the)f
+b(If)28 b(the)h Ft(-P)f Fu(option)630 5011 y(is)39 b(supplied,)h(the)f
(pathname)g(prin)m(ted)g(will)g(not)h(con)m(tain)g(sym)m(b)s(olic)f
-(links.)67 b(If)38 b(the)i Ft(-L)630 4573 y Fu(option)k(is)g(supplied,)
+(links.)67 b(If)38 b(the)i Ft(-L)630 5121 y Fu(option)k(is)g(supplied,)
i(the)e(pathname)f(prin)m(ted)h(ma)m(y)g(con)m(tain)h(sym)m(b)s(olic)f
-(links.)80 b(The)630 4682 y(return)26 b(status)h(is)h(zero)g(unless)e
+(links.)80 b(The)630 5230 y(return)26 b(status)h(is)h(zero)g(unless)e
(an)h(error)g(is)g(encoun)m(tered)g(while)h(determining)f(the)g(name)
-630 4792 y(of)k(the)f(curren)m(t)g(directory)h(or)f(an)h(in)m(v)-5
-b(alid)31 b(option)g(is)f(supplied.)150 4956 y Ft(readonly)870
-5093 y(readonly)46 b([-aAf])g([-p])g([)p Fj(name)p Ft([=)p
-Fj(value)p Ft(]])e(...)630 5230 y Fu(Mark)33 b(eac)m(h)h
+630 5340 y(of)k(the)f(curren)m(t)g(directory)h(or)f(an)h(in)m(v)-5
+b(alid)31 b(option)g(is)f(supplied.)p eop end
+%%Page: 52 58
+TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(52)150 299 y Ft(readonly)870
+432 y(readonly)46 b([-aAf])g([-p])g([)p Fj(name)p Ft([=)p
+Fj(value)p Ft(]])e(...)630 565 y Fu(Mark)33 b(eac)m(h)h
Fr(name)39 b Fu(as)33 b(readonly)-8 b(.)49 b(The)32 b(v)-5
b(alues)34 b(of)f(these)g(names)g(ma)m(y)h(not)f(b)s(e)f(c)m(hanged)630
-5340 y(b)m(y)38 b(subsequen)m(t)g(assignmen)m(t.)65 b(If)38
+675 y(b)m(y)38 b(subsequen)m(t)g(assignmen)m(t.)65 b(If)38
b(the)h Ft(-f)f Fu(option)g(is)h(supplied,)g(eac)m(h)h
-Fr(name)j Fu(refers)38 b(to)p eop end
-%%Page: 48 54
-TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(a)37
-b(shell)g(function.)59 b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i
-Fr(name)k Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630
-408 y(v)-5 b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h
+Fr(name)j Fu(refers)38 b(to)630 784 y(a)f(shell)g(function.)59
+b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i Fr(name)k
+Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630 894 y(v)-5
+b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h
Fr(name)k Fu(refers)26 b(to)g(an)g(asso)s(ciativ)m(e)i(arra)m(y)f(v)-5
-b(ariable.)630 518 y(If)35 b(b)s(oth)g(options)h(are)h(supplied,)f
+b(ariable.)630 1003 y(If)35 b(b)s(oth)g(options)h(are)h(supplied,)f
Ft(-A)f Fu(tak)m(es)i(precedence.)58 b(If)35 b(no)h Fr(name)k
-Fu(argumen)m(ts)d(are)630 628 y(giv)m(en,)k(or)c(if)h(the)g
+Fu(argumen)m(ts)d(are)630 1113 y(giv)m(en,)k(or)c(if)h(the)g
Ft(-p)f Fu(option)h(is)f(supplied,)i(a)f(list)g(of)g(all)g(readonly)g
-(names)f(is)h(prin)m(ted.)630 737 y(The)32 b(other)g(options)g(ma)m(y)h
-(b)s(e)f(used)f(to)i(restrict)g(the)f(output)g(to)h(a)f(subset)g(of)g
-(the)g(set)h(of)630 847 y(readonly)c(names.)41 b(The)28
+(names)f(is)h(prin)m(ted.)630 1223 y(The)32 b(other)g(options)g(ma)m(y)
+h(b)s(e)f(used)f(to)i(restrict)g(the)f(output)g(to)h(a)f(subset)g(of)g
+(the)g(set)h(of)630 1332 y(readonly)c(names.)41 b(The)28
b Ft(-p)h Fu(option)h(causes)g(output)e(to)j(b)s(e)d(displa)m(y)m(ed)i
-(in)f(a)h(format)f(that)630 956 y(ma)m(y)j(b)s(e)e(reused)g(as)i
+(in)f(a)h(format)f(that)630 1442 y(ma)m(y)j(b)s(e)e(reused)g(as)i
(input.)42 b(If)30 b(a)i(v)-5 b(ariable)31 b(name)h(is)f(follo)m(w)m
(ed)h(b)m(y)f(=)p Fr(v)-5 b(alue)p Fu(,)32 b(the)f(v)-5
-b(alue)32 b(of)630 1066 y(the)i(v)-5 b(ariable)34 b(is)f(set)i(to)f
+b(alue)32 b(of)630 1551 y(the)i(v)-5 b(ariable)34 b(is)f(set)i(to)f
Fr(v)-5 b(alue)p Fu(.)50 b(The)33 b(return)g(status)g(is)h(zero)g
-(unless)f(an)g(in)m(v)-5 b(alid)34 b(option)630 1176
+(unless)f(an)g(in)m(v)-5 b(alid)34 b(option)630 1661
y(is)c(supplied,)f(one)h(of)g(the)g Fr(name)35 b Fu(argumen)m(ts)30
b(is)g(not)g(a)g(v)-5 b(alid)31 b(shell)f(v)-5 b(ariable)30
-b(or)g(function)630 1285 y(name,)h(or)f(the)h Ft(-f)e
+b(or)g(function)630 1771 y(name,)h(or)f(the)h Ft(-f)e
Fu(option)i(is)g(supplied)e(with)h(a)h(name)f(that)h(is)f(not)h(a)g
-(shell)f(function.)150 1462 y Ft(return)870 1606 y(return)46
-b([)p Fj(n)p Ft(])630 1749 y Fu(Cause)37 b(a)g(shell)h(function)f(to)g
+(shell)f(function.)150 1927 y Ft(return)870 2060 y(return)46
+b([)p Fj(n)p Ft(])630 2193 y Fu(Cause)37 b(a)g(shell)h(function)f(to)g
(stop)h(executing)g(and)e(return)h(the)g(v)-5 b(alue)37
-b Fr(n)g Fu(to)h(its)f(caller.)630 1858 y(If)h Fr(n)h
+b Fr(n)g Fu(to)h(its)f(caller.)630 2303 y(If)h Fr(n)h
Fu(is)g(not)g(supplied,)h(the)f(return)e(v)-5 b(alue)40
b(is)f(the)g(exit)g(status)g(of)g(the)g(last)h(command)630
-1968 y(executed)i(in)f(the)g(function.)72 b(If)41 b Ft(return)e
+2412 y(executed)i(in)f(the)g(function.)72 b(If)41 b Ft(return)e
Fu(is)i(executed)h(b)m(y)f(a)h(trap)f(handler,)i(the)e(last)630
-2078 y(command)d(used)f(to)i(determine)f(the)g(status)g(is)h(the)f
-(last)h(command)e(executed)i(b)s(efore)630 2187 y(the)27
+2522 y(command)d(used)f(to)i(determine)f(the)g(status)g(is)h(the)f
+(last)h(command)e(executed)i(b)s(efore)630 2632 y(the)27
b(trap)g(handler.)39 b(If)26 b Ft(return)g Fu(is)h(executed)h(during)d
-(a)j Ft(DEBUG)d Fu(trap,)j(the)f(last)h(command)630 2297
+(a)j Ft(DEBUG)d Fu(trap,)j(the)f(last)h(command)630 2741
y(used)f(to)h(determine)g(the)f(status)h(is)g(the)f(last)i(command)e
-(executed)h(b)m(y)g(the)f(trap)h(handler)630 2406 y(b)s(efore)e
+(executed)h(b)m(y)g(the)f(trap)h(handler)630 2851 y(b)s(efore)e
Ft(return)f Fu(w)m(as)i(in)m(v)m(ok)m(ed.)41 b Ft(return)25
b Fu(ma)m(y)i(also)g(b)s(e)f(used)g(to)h(terminate)h(execution)g(of)630
-2516 y(a)34 b(script)g(b)s(eing)g(executed)g(with)g(the)g
+2960 y(a)34 b(script)g(b)s(eing)g(executed)g(with)g(the)g
Ft(.)g Fu(\()p Ft(source)p Fu(\))f(builtin,)h(returning)f(either)i
-Fr(n)e Fu(or)h(the)630 2626 y(exit)j(status)f(of)g(the)g(last)h
+Fr(n)e Fu(or)h(the)630 3070 y(exit)j(status)f(of)g(the)g(last)h
(command)e(executed)i(within)e(the)h(script)g(as)g(the)g(exit)h(status)
-630 2735 y(of)i(the)g(script.)65 b(If)38 b Fr(n)g Fu(is)h(supplied,)h
+630 3180 y(of)i(the)g(script.)65 b(If)38 b Fr(n)g Fu(is)h(supplied,)h
(the)f(return)e(v)-5 b(alue)39 b(is)g(its)g(least)h(signi\014can)m(t)g
-(8)f(bits.)630 2845 y(An)m(y)g(command)f(asso)s(ciated)j(with)d(the)h
+(8)f(bits.)630 3289 y(An)m(y)g(command)f(asso)s(ciated)j(with)d(the)h
Ft(RETURN)e Fu(trap)i(is)g(executed)g(b)s(efore)g(execution)630
-2954 y(resumes)29 b(after)h(the)g(function)g(or)g(script.)40
+3399 y(resumes)29 b(after)h(the)g(function)g(or)g(script.)40
b(The)29 b(return)g(status)h(is)g(non-zero)g(if)g Ft(return)e
-Fu(is)630 3064 y(supplied)h(a)i(non-n)m(umeric)g(argumen)m(t)g(or)f(is)
+Fu(is)630 3508 y(supplied)h(a)i(non-n)m(umeric)g(argumen)m(t)g(or)f(is)
h(used)f(outside)h(a)g(function)f(and)g(not)h(during)630
-3173 y(the)g(execution)g(of)g(a)f(script)h(b)m(y)f Ft(.)g
-Fu(or)g Ft(source)p Fu(.)150 3351 y Ft(shift)870 3494
-y(shift)46 b([)p Fj(n)p Ft(])630 3637 y Fu(Shift)41 b(the)g(p)s
+3618 y(the)g(execution)g(of)g(a)f(script)h(b)m(y)f Ft(.)g
+Fu(or)g Ft(source)p Fu(.)150 3774 y Ft(shift)870 3907
+y(shift)46 b([)p Fj(n)p Ft(])630 4041 y Fu(Shift)41 b(the)g(p)s
(ositional)h(parameters)g(to)g(the)f(left)h(b)m(y)g Fr(n)p
-Fu(.)73 b(The)40 b(p)s(ositional)j(parameters)630 3747
+Fu(.)73 b(The)40 b(p)s(ositional)j(parameters)630 4150
y(from)34 b Fr(n)p Ft(+)p Fu(1)39 b(.)22 b(.)h(.)45 b
Ft($#)34 b Fu(are)g(renamed)g(to)h Ft($1)k Fu(.)22 b(.)g(.)46
b Ft($#)p Fu(-)p Fr(n)p Fu(.)51 b(P)m(arameters)36 b(represen)m(ted)e
-(b)m(y)g(the)630 3856 y(n)m(um)m(b)s(ers)d Ft($#)i Fu(do)m(wn)f(to)i
+(b)m(y)g(the)630 4260 y(n)m(um)m(b)s(ers)d Ft($#)i Fu(do)m(wn)f(to)i
Ft($#)p Fu(-)p Fr(n)p Ft(+)p Fu(1)e(are)h(unset.)48 b
Fr(n)32 b Fu(m)m(ust)h(b)s(e)f(a)h(non-negativ)m(e)i(n)m(um)m(b)s(er)d
-(less)630 3966 y(than)g(or)g(equal)h(to)g Ft($#)p Fu(.)46
+(less)630 4369 y(than)g(or)g(equal)h(to)g Ft($#)p Fu(.)46
b(If)31 b Fr(n)h Fu(is)g(zero)h(or)f(greater)i(than)e
-Ft($#)p Fu(,)g(the)h(p)s(ositional)g(parameters)630 4075
+Ft($#)p Fu(,)g(the)h(p)s(ositional)g(parameters)630 4479
y(are)e(not)h(c)m(hanged.)43 b(If)31 b Fr(n)g Fu(is)g(not)g(supplied,)f
(it)i(is)f(assumed)f(to)i(b)s(e)f(1.)43 b(The)31 b(return)f(status)630
-4185 y(is)g(zero)i(unless)d Fr(n)h Fu(is)g(greater)i(than)e
+4589 y(is)g(zero)i(unless)d Fr(n)h Fu(is)g(greater)i(than)e
Ft($#)g Fu(or)g(less)h(than)f(zero,)i(non-zero)e(otherwise.)150
-4362 y Ft(test)150 4472 y([)870 4615 y(test)47 b Fj(expr)630
-4758 y Fu(Ev)-5 b(aluate)43 b(a)f(conditional)h(expression)f
+4745 y Ft(test)150 4855 y([)870 4988 y(test)47 b Fj(expr)630
+5121 y Fu(Ev)-5 b(aluate)43 b(a)f(conditional)h(expression)f
Fr(expr)48 b Fu(and)41 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f
-(1)630 4868 y(\(false\).)g(Eac)m(h)31 b(op)s(erator)f(and)f(op)s(erand)
+(1)630 5230 y(\(false\).)g(Eac)m(h)31 b(op)s(erator)f(and)f(op)s(erand)
g(m)m(ust)h(b)s(e)f(a)i(separate)g(argumen)m(t.)41 b(Expressions)630
-4977 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s
-(elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)630
-5087 y(Expressions],)39 b(page)g(91.)64 b Ft(test)37
-b Fu(do)s(es)g(not)h(accept)i(an)m(y)e(options,)i(nor)e(do)s(es)f(it)h
-(accept)630 5197 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f
-Ft(--)g Fu(as)h(signifying)f(the)h(end)f(of)g(options.)630
-5340 y(When)g(the)h Ft([)f Fu(form)g(is)g(used,)g(the)g(last)i(argumen)
-m(t)e(to)i(the)e(command)g(m)m(ust)h(b)s(e)e(a)i Ft(])p
-Fu(.)p eop end
-%%Page: 49 55
-TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(Expressions)23
-b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s
-(erators,)g(listed)f(in)f(decreasing)630 408 y(order)30
-b(of)h(precedence.)43 b(The)30 b(ev)-5 b(aluation)33
-b(dep)s(ends)28 b(on)j(the)g(n)m(um)m(b)s(er)f(of)h(argumen)m(ts;)g
-(see)630 518 y(b)s(elo)m(w.)41 b(Op)s(erator)30 b(precedence)h(is)f
-(used)g(when)f(there)i(are)f(\014v)m(e)h(or)f(more)h(argumen)m(ts.)630
-673 y Ft(!)f Fj(expr)210 b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37
-b Fu(is)30 b(false.)630 829 y Ft(\()g Fj(expr)f Ft(\))133
-b Fu(Returns)23 b(the)i(v)-5 b(alue)25 b(of)f Fr(expr)p
-Fu(.)38 b(This)24 b(ma)m(y)h(b)s(e)e(used)h(to)h(o)m(v)m(erride)g(the)g
-(normal)1110 938 y(precedence)31 b(of)f(op)s(erators.)630
-1093 y Fj(expr1)f Ft(-a)h Fj(expr2)1110 1203 y Fu(T)-8
-b(rue)30 b(if)g(b)s(oth)g Fr(expr1)37 b Fu(and)30 b Fr(expr2)38
-b Fu(are)30 b(true.)630 1358 y Fj(expr1)f Ft(-o)h Fj(expr2)1110
-1468 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expr1)38 b
-Fu(or)30 b Fr(expr2)37 b Fu(is)31 b(true.)630 1623 y(The)37
-b Ft(test)f Fu(and)g Ft([)h Fu(builtins)g(ev)-5 b(aluate)39
-b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules)630
-1733 y(based)30 b(on)g(the)h(n)m(um)m(b)s(er)e(of)h(argumen)m(ts.)630
-1888 y(0)h(argumen)m(ts)1110 1998 y(The)f(expression)g(is)g(false.)630
-2153 y(1)h(argumen)m(t)1110 2262 y(The)f(expression)g(is)g(true)h(if,)f
-(and)g(only)g(if,)h(the)g(argumen)m(t)f(is)h(not)f(n)m(ull.)630
-2418 y(2)h(argumen)m(ts)1110 2527 y(If)f(the)h(\014rst)f(argumen)m(t)h
-(is)g(`)p Ft(!)p Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f
-(only)h(if)g(the)1110 2637 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50
-b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary)
-1110 2746 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f
-([Bash)g(Conditional)g(Expres-)1110 2856 y(sions],)34
-b(page)f(91\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e
-(test)j(is)f(true.)47 b(If)1110 2966 y(the)33 b(\014rst)g(argumen)m(t)h
-(is)f(not)g(a)h(v)-5 b(alid)34 b(unary)e(op)s(erator,)i(the)g
-(expression)f(is)1110 3075 y(false.)630 3230 y(3)e(argumen)m(ts)1110
-3340 y(The)f(follo)m(wing)i(conditions)f(are)f(applied)h(in)f(the)g
-(order)g(listed.)1159 3472 y(1.)61 b(If)29 b(the)g(second)g(argumen)m
-(t)h(is)f(one)h(of)f(the)h(binary)e(conditional)j(op)s(era-)1290
-3582 y(tors)c(\(see)h(Section)g(6.4)g([Bash)g(Conditional)f
-(Expressions],)h(page)f(91\),)1290 3692 y(the)d(result)g(of)f(the)h
-(expression)g(is)g(the)f(result)h(of)g(the)g(binary)f(test)h(using)1290
-3801 y(the)35 b(\014rst)e(and)h(third)g(argumen)m(ts)h(as)f(op)s
-(erands.)52 b(The)34 b(`)p Ft(-a)p Fu(')g(and)g(`)p Ft(-o)p
-Fu(')1290 3911 y(op)s(erators)24 b(are)g(considered)g(binary)f(op)s
-(erators)h(when)f(there)h(are)h(three)1290 4020 y(argumen)m(ts.)1159
-4153 y(2.)61 b(If)41 b(the)h(\014rst)e(argumen)m(t)i(is)f(`)p
+5340 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s
+(elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)p
+eop end
+%%Page: 53 59
+TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y(Expressions],)39
+b(page)g(96.)64 b Ft(test)37 b Fu(do)s(es)g(not)h(accept)i(an)m(y)e
+(options,)i(nor)e(do)s(es)f(it)h(accept)630 408 y(and)30
+b(ignore)h(an)f(argumen)m(t)h(of)f Ft(--)g Fu(as)h(signifying)f(the)h
+(end)f(of)g(options.)630 550 y(When)g(the)h Ft([)f Fu(form)g(is)g
+(used,)g(the)g(last)i(argumen)m(t)e(to)i(the)e(command)g(m)m(ust)h(b)s
+(e)e(a)i Ft(])p Fu(.)630 692 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m
+(bined)i(using)f(the)h(follo)m(wing)h(op)s(erators,)g(listed)f(in)f
+(decreasing)630 801 y(order)30 b(of)h(precedence.)43
+b(The)30 b(ev)-5 b(aluation)33 b(dep)s(ends)28 b(on)j(the)g(n)m(um)m(b)
+s(er)f(of)h(argumen)m(ts;)g(see)630 911 y(b)s(elo)m(w.)41
+b(Op)s(erator)30 b(precedence)h(is)f(used)g(when)f(there)i(are)f(\014v)
+m(e)h(or)f(more)h(argumen)m(ts.)630 1084 y Ft(!)f Fj(expr)210
+b Fu(T)-8 b(rue)30 b(if)g Fr(expr)37 b Fu(is)30 b(false.)630
+1258 y Ft(\()g Fj(expr)f Ft(\))133 b Fu(Returns)23 b(the)i(v)-5
+b(alue)25 b(of)f Fr(expr)p Fu(.)38 b(This)24 b(ma)m(y)h(b)s(e)e(used)h
+(to)h(o)m(v)m(erride)g(the)g(normal)1110 1367 y(precedence)31
+b(of)f(op)s(erators.)630 1541 y Fj(expr1)f Ft(-a)h Fj(expr2)1110
+1650 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g Fr(expr1)37
+b Fu(and)30 b Fr(expr2)38 b Fu(are)30 b(true.)630 1824
+y Fj(expr1)f Ft(-o)h Fj(expr2)1110 1934 y Fu(T)-8 b(rue)30
+b(if)g(either)h Fr(expr1)38 b Fu(or)30 b Fr(expr2)37
+b Fu(is)31 b(true.)630 2107 y(The)37 b Ft(test)f Fu(and)g
+Ft([)h Fu(builtins)g(ev)-5 b(aluate)39 b(conditional)f(expressions)f
+(using)g(a)g(set)h(of)f(rules)630 2217 y(based)30 b(on)g(the)h(n)m(um)m
+(b)s(er)e(of)h(argumen)m(ts.)630 2390 y(0)h(argumen)m(ts)1110
+2500 y(The)f(expression)g(is)g(false.)630 2673 y(1)h(argumen)m(t)1110
+2783 y(The)f(expression)g(is)g(true)h(if,)f(and)g(only)g(if,)h(the)g
+(argumen)m(t)f(is)h(not)f(n)m(ull.)630 2956 y(2)h(argumen)m(ts)1110
+3066 y(If)f(the)h(\014rst)f(argumen)m(t)h(is)g(`)p Ft(!)p
+Fu(',)g(the)g(expression)g(is)g(true)f(if)h(and)f(only)h(if)g(the)1110
+3176 y(second)j(argumen)m(t)f(is)h(n)m(ull.)50 b(If)33
+b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary)1110
+3285 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f([Bash)g
+(Conditional)g(Expres-)1110 3395 y(sions],)34 b(page)f(96\),)i(the)e
+(expression)f(is)h(true)g(if)g(the)g(unary)e(test)j(is)f(true.)47
+b(If)1110 3504 y(the)33 b(\014rst)g(argumen)m(t)h(is)f(not)g(a)h(v)-5
+b(alid)34 b(unary)e(op)s(erator,)i(the)g(expression)f(is)1110
+3614 y(false.)630 3787 y(3)e(argumen)m(ts)1110 3897 y(The)f(follo)m
+(wing)i(conditions)f(are)f(applied)h(in)f(the)g(order)g(listed.)1159
+4039 y(1.)61 b(If)29 b(the)g(second)g(argumen)m(t)h(is)f(one)h(of)f
+(the)h(binary)e(conditional)j(op)s(era-)1290 4148 y(tors)c(\(see)h
+(Section)g(6.4)g([Bash)g(Conditional)f(Expressions],)h(page)f(96\),)
+1290 4258 y(the)d(result)g(of)f(the)h(expression)g(is)g(the)f(result)h
+(of)g(the)g(binary)f(test)h(using)1290 4367 y(the)35
+b(\014rst)e(and)h(third)g(argumen)m(ts)h(as)f(op)s(erands.)52
+b(The)34 b(`)p Ft(-a)p Fu(')g(and)g(`)p Ft(-o)p Fu(')1290
+4477 y(op)s(erators)24 b(are)g(considered)g(binary)f(op)s(erators)h
+(when)f(there)h(are)h(three)1290 4587 y(argumen)m(ts.)1159
+4728 y(2.)61 b(If)41 b(the)h(\014rst)e(argumen)m(t)i(is)f(`)p
Ft(!)p Fu(',)k(the)d(v)-5 b(alue)41 b(is)h(the)f(negation)i(of)f(the)
-1290 4262 y(t)m(w)m(o-argumen)m(t)33 b(test)e(using)f(the)g(second)h
-(and)e(third)h(argumen)m(ts.)1159 4395 y(3.)61 b(If)35
+1290 4838 y(t)m(w)m(o-argumen)m(t)33 b(test)e(using)f(the)g(second)h
+(and)e(third)h(argumen)m(ts.)1159 4979 y(3.)61 b(If)35
b(the)h(\014rst)e(argumen)m(t)i(is)g(exactly)h(`)p Ft(\()p
-Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)1290 4504
+Fu(')f(and)f(the)g(third)g(argumen)m(t)h(is)1290 5089
y(exactly)i(`)p Ft(\))p Fu(',)g(the)f(result)f(is)h(the)f(one-argumen)m
-(t)i(test)f(of)f(the)h(second)1290 4614 y(argumen)m(t.)1159
-4746 y(4.)61 b(Otherwise,)30 b(the)h(expression)f(is)g(false.)630
-4902 y(4)h(argumen)m(ts)1110 5011 y(If)h(the)i(\014rst)e(argumen)m(t)h
-(is)g(`)p Ft(!)p Fu(',)h(the)f(result)g(is)g(the)g(negation)h(of)f(the)
-g(three-)1110 5121 y(argumen)m(t)h(expression)f(comp)s(osed)h(of)f(the)
-h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 5230 y(erwise,)34
-b(the)f(expression)g(is)g(parsed)g(and)f(ev)-5 b(aluated)34
-b(according)h(to)e(prece-)1110 5340 y(dence)e(using)e(the)i(rules)f
-(listed)h(ab)s(o)m(v)m(e.)p eop end
-%%Page: 50 56
-TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(5)31
-b(or)f(more)h(argumen)m(ts)1110 408 y(The)43 b(expression)f(is)i
-(parsed)e(and)g(ev)-5 b(aluated)45 b(according)f(to)f(precedence)1110
-518 y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)630
-690 y(When)40 b(used)f(with)g Ft(test)g Fu(or)h(`)p Ft([)p
-Fu(',)j(the)d(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g
-(sort)g(lexicographically)630 800 y(using)30 b(ASCI)s(I)f(ordering.)150
-972 y Ft(times)870 1113 y(times)630 1254 y Fu(Prin)m(t)37
-b(out)h(the)g(user)e(and)h(system)g(times)h(used)f(b)m(y)g(the)h(shell)
-f(and)g(its)h(c)m(hildren.)61 b(The)630 1363 y(return)29
-b(status)i(is)f(zero.)150 1536 y Ft(trap)870 1677 y(trap)47
-b([-lp])f([)p Fj(arg)p Ft(])g([)p Fj(sigspec)g Ft(...)o(])630
-1817 y Fu(The)d(commands)f(in)h Fr(arg)51 b Fu(are)44
-b(to)g(b)s(e)e(read)h(and)g(executed)h(when)e(the)h(shell)g(receiv)m
-(es)630 1927 y(signal)36 b Fr(sigsp)s(ec)p Fu(.)57 b(If)35
-b Fr(arg)44 b Fu(is)36 b(absen)m(t)g(\(and)f(there)h(is)g(a)f(single)i
-Fr(sigsp)s(ec)6 b Fu(\))35 b(or)h(equal)g(to)h(`)p Ft(-)p
-Fu(',)630 2037 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s(osition)g
-(is)f(reset)i(to)f(the)g(v)-5 b(alue)40 b(it)g(had)f(when)g(the)h
-(shell)630 2146 y(w)m(as)33 b(started.)47 b(If)32 b Fr(arg)41
-b Fu(is)32 b(the)h(n)m(ull)f(string,)i(then)e(the)g(signal)i(sp)s
-(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630 2256
-y Fu(is)g(ignored)h(b)m(y)f(the)g(shell)h(and)e(commands)h(it)h(in)m(v)
-m(ok)m(es.)51 b(If)33 b Fr(arg)41 b Fu(is)33 b(not)h(presen)m(t)f(and)g
-Ft(-p)630 2365 y Fu(has)g(b)s(een)g(supplied,)f(the)i(shell)f(displa)m
-(ys)h(the)f(trap)g(commands)g(asso)s(ciated)i(with)e(eac)m(h)630
-2475 y Fr(sigsp)s(ec)p Fu(.)47 b(If)31 b(no)i(argumen)m(ts)f(are)h
-(supplied,)e(or)i(only)f Ft(-p)g Fu(is)g(giv)m(en,)i
-Ft(trap)d Fu(prin)m(ts)h(the)g(list)630 2585 y(of)c(commands)f(asso)s
-(ciated)i(with)f(eac)m(h)h(signal)f(n)m(um)m(b)s(er)e(in)i(a)g(form)f
-(that)h(ma)m(y)h(b)s(e)e(reused)630 2694 y(as)f(shell)h(input.)38
-b(The)26 b Ft(-l)f Fu(option)i(causes)f(the)g(shell)h(to)g(prin)m(t)e
-(a)i(list)f(of)h(signal)g(names)f(and)630 2804 y(their)33
-b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47 b(Eac)m(h)34
-b Fr(sigsp)s(ec)39 b Fu(is)33 b(either)g(a)h(signal)g(name)f(or)g(a)g
-(signal)630 2913 y(n)m(um)m(b)s(er.)39 b(Signal)31 b(names)f(are)h
-(case)h(insensitiv)m(e)f(and)f(the)g Ft(SIG)g Fu(pre\014x)f(is)i
-(optional.)630 3054 y(If)k(a)g Fr(sigsp)s(ec)41 b Fu(is)35
-b Ft(0)g Fu(or)g Ft(EXIT)p Fu(,)g Fr(arg)43 b Fu(is)35
-b(executed)h(when)e(the)h(shell)h(exits.)55 b(If)35 b(a)g
-Fr(sigsp)s(ec)41 b Fu(is)630 3164 y Ft(DEBUG)p Fu(,)32
-b(the)g(command)g Fr(arg)40 b Fu(is)33 b(executed)g(b)s(efore)f(ev)m
-(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630 3273
-y(mand,)d Ft(case)g Fu(command,)h Ft(select)e Fu(command,)i(ev)m(ery)h
-(arithmetic)g Ft(for)d Fu(command,)j(and)630 3383 y(b)s(efore)22
-b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h(function.)37
-b(Refer)22 b(to)h(the)g(description)f(of)630 3493 y(the)i
-Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e Fu(builtin)h(\(see)i
-(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3602
-y(page)33 b(66\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g
-Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38
-b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3712 y(command)h
+(t)i(test)f(of)f(the)h(second)1290 5198 y(argumen)m(t.)1159
+5340 y(4.)61 b(Otherwise,)30 b(the)h(expression)f(is)g(false.)p
+eop end
+%%Page: 54 60
+TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(4)31
+b(argumen)m(ts)1110 408 y(The)f(follo)m(wing)i(conditions)f(are)f
+(applied)h(in)f(the)g(order)g(listed.)1159 544 y(1.)61
+b(If)39 b(the)i(\014rst)e(argumen)m(t)h(is)g(`)p Ft(!)p
+Fu(',)j(the)d(result)f(is)h(the)g(negation)i(of)e(the)1290
+653 y(three-argumen)m(t)k(expression)e(comp)s(osed)g(of)h(the)g
+(remaining)g(argu-)1290 763 y(men)m(ts.)1159 898 y(2.)61
+b(If)31 b(the)g(\014rst)f(argumen)m(t)i(is)f(exactly)i(`)p
+Ft(\()p Fu(')e(and)g(the)g(fourth)f(argumen)m(t)i(is)1290
+1008 y(exactly)38 b(`)p Ft(\))p Fu(',)f(the)f(result)g(is)g(the)g(t)m
+(w)m(o-argumen)m(t)i(test)f(of)f(the)g(second)1290 1118
+y(and)30 b(third)f(argumen)m(ts.)1159 1253 y(3.)61 b(Otherwise,)26
+b(the)f(expression)f(is)h(parsed)f(and)g(ev)-5 b(aluated)26
+b(according)g(to)1290 1363 y(precedence)31 b(using)f(the)g(rules)g
+(listed)h(ab)s(o)m(v)m(e.)630 1524 y(5)g(or)f(more)h(argumen)m(ts)1110
+1633 y(The)43 b(expression)f(is)i(parsed)e(and)g(ev)-5
+b(aluated)45 b(according)f(to)f(precedence)1110 1743
+y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)630
+1904 y(When)40 b(used)f(with)g Ft(test)g Fu(or)h(`)p
+Ft([)p Fu(',)j(the)d(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p
+Fu(')h(op)s(erators)g(sort)g(lexicographically)630 2014
+y(using)30 b(ASCI)s(I)f(ordering.)150 2175 y Ft(times)870
+2310 y(times)630 2446 y Fu(Prin)m(t)37 b(out)h(the)g(user)e(and)h
+(system)g(times)h(used)f(b)m(y)g(the)h(shell)f(and)g(its)h(c)m
+(hildren.)61 b(The)630 2555 y(return)29 b(status)i(is)f(zero.)150
+2716 y Ft(trap)870 2852 y(trap)47 b([-lp])f([)p Fj(arg)p
+Ft(])g([)p Fj(sigspec)g Ft(...)o(])630 2987 y Fu(The)d(commands)f(in)h
+Fr(arg)51 b Fu(are)44 b(to)g(b)s(e)e(read)h(and)g(executed)h(when)e
+(the)h(shell)g(receiv)m(es)630 3097 y(signal)36 b Fr(sigsp)s(ec)p
+Fu(.)57 b(If)35 b Fr(arg)44 b Fu(is)36 b(absen)m(t)g(\(and)f(there)h
+(is)g(a)f(single)i Fr(sigsp)s(ec)6 b Fu(\))35 b(or)h(equal)g(to)h(`)p
+Ft(-)p Fu(',)630 3206 y(eac)m(h)k(sp)s(eci\014ed)e(signal's)h(disp)s
+(osition)g(is)f(reset)i(to)f(the)g(v)-5 b(alue)40 b(it)g(had)f(when)g
+(the)h(shell)630 3316 y(w)m(as)33 b(started.)47 b(If)32
+b Fr(arg)41 b Fu(is)32 b(the)h(n)m(ull)f(string,)i(then)e(the)g(signal)
+i(sp)s(eci\014ed)d(b)m(y)i(eac)m(h)g Fr(sigsp)s(ec)630
+3425 y Fu(is)g(ignored)h(b)m(y)f(the)g(shell)h(and)e(commands)h(it)h
+(in)m(v)m(ok)m(es.)51 b(If)33 b Fr(arg)41 b Fu(is)33
+b(not)h(presen)m(t)f(and)g Ft(-p)630 3535 y Fu(has)g(b)s(een)g
+(supplied,)f(the)i(shell)f(displa)m(ys)h(the)f(trap)g(commands)g(asso)s
+(ciated)i(with)e(eac)m(h)630 3645 y Fr(sigsp)s(ec)p Fu(.)47
+b(If)31 b(no)i(argumen)m(ts)f(are)h(supplied,)e(or)i(only)f
+Ft(-p)g Fu(is)g(giv)m(en,)i Ft(trap)d Fu(prin)m(ts)h(the)g(list)630
+3754 y(of)c(commands)f(asso)s(ciated)i(with)f(eac)m(h)h(signal)f(n)m
+(um)m(b)s(er)e(in)i(a)g(form)f(that)h(ma)m(y)h(b)s(e)e(reused)630
+3864 y(as)f(shell)h(input.)38 b(The)26 b Ft(-l)f Fu(option)i(causes)f
+(the)g(shell)h(to)g(prin)m(t)e(a)i(list)f(of)h(signal)g(names)f(and)630
+3973 y(their)33 b(corresp)s(onding)f(n)m(um)m(b)s(ers.)47
+b(Eac)m(h)34 b Fr(sigsp)s(ec)39 b Fu(is)33 b(either)g(a)h(signal)g
+(name)f(or)g(a)g(signal)630 4083 y(n)m(um)m(b)s(er.)39
+b(Signal)31 b(names)f(are)h(case)h(insensitiv)m(e)f(and)f(the)g
+Ft(SIG)g Fu(pre\014x)f(is)i(optional.)630 4218 y(If)k(a)g
+Fr(sigsp)s(ec)41 b Fu(is)35 b Ft(0)g Fu(or)g Ft(EXIT)p
+Fu(,)g Fr(arg)43 b Fu(is)35 b(executed)h(when)e(the)h(shell)h(exits.)55
+b(If)35 b(a)g Fr(sigsp)s(ec)41 b Fu(is)630 4328 y Ft(DEBUG)p
+Fu(,)32 b(the)g(command)g Fr(arg)40 b Fu(is)33 b(executed)g(b)s(efore)f
+(ev)m(ery)h(simple)f(command,)h Ft(for)e Fu(com-)630
+4437 y(mand,)d Ft(case)g Fu(command,)h Ft(select)e Fu(command,)i(ev)m
+(ery)h(arithmetic)g Ft(for)d Fu(command,)j(and)630 4547
+y(b)s(efore)22 b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h
+(function.)37 b(Refer)22 b(to)h(the)g(description)f(of)630
+4657 y(the)i Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e
+Fu(builtin)h(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630
+4766 y(page)33 b(71\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)
+g Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38
+b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 4876 y(command)h
Fr(arg)41 b Fu(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g
-(function)g(or)f(a)h(script)g(executed)g(with)630 3821
+(function)g(or)f(a)h(script)g(executed)g(with)630 4985
y(the)e Ft(.)f Fu(or)g Ft(source)f Fu(builtins)g(\014nishes)h
-(executing.)630 3962 y(If)20 b(a)i Fr(sigsp)s(ec)27 b
+(executing.)630 5121 y(If)20 b(a)i Fr(sigsp)s(ec)27 b
Fu(is)21 b Ft(ERR)p Fu(,)h(the)f(command)g Fr(arg)29
b Fu(is)21 b(executed)h(whenev)m(er)e(a)i(pip)s(eline)e(\(whic)m(h)h
-(ma)m(y)630 4072 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h
+(ma)m(y)630 5230 y(consist)35 b(of)g(a)f(single)h(simple)g(command\),)h
(a)e(list,)j(or)d(a)h(comp)s(ound)e(command)h(returns)630
-4181 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41
+5340 y(a)41 b(non-zero)g(exit)h(status,)h(sub)5 b(ject)41
b(to)g(the)g(follo)m(wing)h(conditions.)72 b(The)40 b
-Ft(ERR)f Fu(trap)i(is)630 4291 y(not)c(executed)h(if)f(the)h(failed)f
-(command)g(is)g(part)g(of)h(the)f(command)g(list)h(immediately)630
-4401 y(follo)m(wing)30 b(an)e Ft(until)f Fu(or)i Ft(while)e
-Fu(k)m(eyw)m(ord,)i(part)g(of)f(the)h(test)g(follo)m(wing)h(the)f
-Ft(if)f Fu(or)g Ft(elif)630 4510 y Fu(reserv)m(ed)45
-b(w)m(ords,)j(part)c(of)h(a)g(command)g(executed)g(in)g(a)g
-Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630 4620
-y(command)28 b(follo)m(wing)j(the)d(\014nal)h Ft(&&)f
+Ft(ERR)f Fu(trap)i(is)p eop end
+%%Page: 55 61
+TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y(not)37
+b(executed)h(if)f(the)h(failed)f(command)g(is)g(part)g(of)h(the)f
+(command)g(list)h(immediately)630 408 y(follo)m(wing)30
+b(an)e Ft(until)f Fu(or)i Ft(while)e Fu(k)m(eyw)m(ord,)i(part)g(of)f
+(the)h(test)g(follo)m(wing)h(the)f Ft(if)f Fu(or)g Ft(elif)630
+518 y Fu(reserv)m(ed)45 b(w)m(ords,)j(part)c(of)h(a)g(command)g
+(executed)g(in)g(a)g Ft(&&)f Fu(or)h Ft(||)f Fu(list)h(except)h(the)630
+628 y(command)28 b(follo)m(wing)j(the)d(\014nal)h Ft(&&)f
Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f(in)h(a)g(pip)s(eline)f(but)g
-(the)h(last,)630 4729 y(or)d(if)g(the)f(command's)h(return)f(status)h
+(the)h(last,)630 737 y(or)d(if)g(the)f(command's)h(return)f(status)h
(is)g(b)s(eing)f(in)m(v)m(erted)i(using)e Ft(!)p Fu(.)39
-b(These)25 b(are)i(the)f(same)630 4839 y(conditions)31
+b(These)25 b(are)i(the)f(same)630 847 y(conditions)31
b(ob)s(ey)m(ed)f(b)m(y)h(the)f Ft(errexit)f Fu(\()p Ft(-e)p
-Fu(\))h(option.)630 4980 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i
+Fu(\))h(option.)630 974 y(Signals)37 b(ignored)f(up)s(on)f(en)m(try)i
(to)g(the)f(shell)h(cannot)g(b)s(e)f(trapp)s(ed)f(or)h(reset.)59
-b(T)-8 b(rapp)s(ed)630 5089 y(signals)28 b(that)f(are)h(not)f(b)s(eing)
+b(T)-8 b(rapp)s(ed)630 1084 y(signals)28 b(that)f(are)h(not)f(b)s(eing)
g(ignored)g(are)g(reset)h(to)g(their)f(original)h(v)-5
-b(alues)28 b(in)e(a)i(subshell)630 5199 y(or)i(subshell)g(en)m
-(vironmen)m(t)h(when)e(one)i(is)f(created.)630 5340 y(The)g(return)f
+b(alues)28 b(in)e(a)i(subshell)630 1194 y(or)i(subshell)g(en)m
+(vironmen)m(t)h(when)e(one)i(is)f(created.)630 1321 y(The)g(return)f
(status)i(is)f(zero)h(unless)f(a)h Fr(sigsp)s(ec)36 b
Fu(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 b(alid)31
-b(signal.)p eop end
-%%Page: 51 57
-TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(51)150 299 y Ft(umask)870
-434 y(umask)46 b([-p])h([-S])g([)p Fj(mode)p Ft(])630
-570 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f(\014le)h(creation)g
-(mask)g(to)g Fr(mo)s(de)p Fu(.)40 b(If)29 b Fr(mo)s(de)34
-b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 679 y(it)e(is)f(in)m
-(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s(er;)e(if)g(not,)h(it)g
-(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f(mo)s(de)630
-789 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g
-Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28
-b(omitted,)j(the)630 899 y(curren)m(t)39 b(v)-5 b(alue)40
-b(of)f(the)g(mask)g(is)h(prin)m(ted.)66 b(If)39 b(the)g
-Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630 1008
-y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m(ted)f(in)g(a)
-g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g Ft(-p)g
-Fu(option)h(is)630 1118 y(supplied,)f(and)f Fr(mo)s(de)37
+b(signal.)150 1467 y Ft(umask)870 1595 y(umask)46 b([-p])h([-S])g([)p
+Fj(mode)p Ft(])630 1722 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f
+(\014le)h(creation)g(mask)g(to)g Fr(mo)s(de)p Fu(.)40
+b(If)29 b Fr(mo)s(de)34 b Fu(b)s(egins)29 b(with)g(a)h(digit,)630
+1832 y(it)e(is)f(in)m(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s
+(er;)e(if)g(not,)h(it)g(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f
+(mo)s(de)630 1942 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f
+(the)g Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34
+b Fu(is)28 b(omitted,)j(the)630 2051 y(curren)m(t)39
+b(v)-5 b(alue)40 b(of)f(the)g(mask)g(is)h(prin)m(ted.)66
+b(If)39 b(the)g Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630
+2161 y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m(ted)f
+(in)g(a)g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g
+Ft(-p)g Fu(option)h(is)630 2270 y(supplied,)f(and)f Fr(mo)s(de)37
b Fu(is)32 b(omitted,)i(the)f(output)f(is)g(in)g(a)g(form)g(that)h(ma)m
-(y)g(b)s(e)e(reused)h(as)630 1227 y(input.)62 b(The)38
+(y)g(b)s(e)e(reused)h(as)630 2380 y(input.)62 b(The)38
b(return)f(status)h(is)g(zero)g(if)g(the)g(mo)s(de)g(is)g(successfully)
-g(c)m(hanged)g(or)g(if)g(no)630 1337 y Fr(mo)s(de)d Fu(argumen)m(t)c
-(is)f(supplied,)g(and)f(non-zero)i(otherwise.)630 1473
+g(c)m(hanged)g(or)g(if)g(no)630 2489 y Fr(mo)s(de)d Fu(argumen)m(t)c
+(is)f(supplied,)g(and)f(non-zero)i(otherwise.)630 2617
y(Note)38 b(that)e(when)g(the)g(mo)s(de)g(is)g(in)m(terpreted)h(as)f
(an)g(o)s(ctal)i(n)m(um)m(b)s(er,)e(eac)m(h)i(n)m(um)m(b)s(er)d(of)630
-1582 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p
+2727 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p
Fu(.)53 b(Th)m(us,)34 b(a)h(umask)e(of)i Ft(022)e Fu(results)h(in)g(p)s
-(ermissions)630 1692 y(of)d Ft(755)p Fu(.)150 1853 y
-Ft(unset)870 1989 y(unset)46 b([-fnv])g([)p Fj(name)p
-Ft(])630 2124 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35
+(ermissions)630 2836 y(of)d Ft(755)p Fu(.)150 2982 y
+Ft(unset)870 3110 y(unset)46 b([-fnv])g([)p Fj(name)p
+Ft(])630 3237 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35
b(or)f(function)f Fr(name)p Fu(.)52 b(If)33 b(the)i Ft(-v)e
-Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 2234
+Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 3347
y Fu(refers)27 b(to)h(a)g(shell)f(v)-5 b(ariable)28 b(and)f(that)h(v)-5
b(ariable)28 b(is)f(remo)m(v)m(ed.)41 b(If)27 b(the)g
-Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 2343 y(the)37
+Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 3457 y(the)37
b Fr(name)5 b Fu(s)37 b(refer)f(to)i(shell)f(functions,)h(and)e(the)h
(function)g(de\014nition)f(is)h(remo)m(v)m(ed.)61 b(If)630
-2453 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g
-Fr(name)38 b Fu(is)c(a)f(v)-5 b(ariable)34 b(with)g(the)f
-Fr(nameref)51 b Fu(attribute,)630 2563 y Fr(name)42 b
-Fu(will)37 b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5
-b(ariable)37 b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect)
-h(if)630 2672 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65
-b(If)39 b(no)g(options)h(are)f(supplied,)h(eac)m(h)h
-Fr(name)j Fu(refers)39 b(to)h(a)630 2782 y(v)-5 b(ariable;)45
-b(if)39 b(there)g(is)g(no)g(v)-5 b(ariable)40 b(b)m(y)f(that)h(name,)h
-(a)f(function)f(with)g(that)g(name,)j(if)630 2891 y(an)m(y)-8
+3566 y(the)34 b Ft(-n)e Fu(option)i(is)f(supplied,)h(and)e
+Fr(name)39 b Fu(is)33 b(a)h(v)-5 b(ariable)34 b(with)f(the)h
+Ft(nameref)d Fu(attribute,)630 3676 y Fr(name)42 b Fu(will)37
+b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5 b(ariable)37
+b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect)h(if)630
+3785 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 b(If)39
+b(no)g(options)h(are)f(supplied,)h(eac)m(h)h Fr(name)j
+Fu(refers)39 b(to)h(a)630 3895 y(v)-5 b(ariable;)45 b(if)39
+b(there)g(is)g(no)g(v)-5 b(ariable)40 b(b)m(y)f(that)h(name,)h(a)f
+(function)f(with)g(that)g(name,)j(if)630 4004 y(an)m(y)-8
b(,)34 b(is)e(unset.)46 b(Readonly)33 b(v)-5 b(ariables)33
b(and)f(functions)g(ma)m(y)h(not)f(b)s(e)g(unset.)46
-b(Some)33 b(shell)630 3001 y(v)-5 b(ariables)29 b(lose)h(their)e(sp)s
+b(Some)33 b(shell)630 4114 y(v)-5 b(ariables)29 b(lose)h(their)e(sp)s
(ecial)h(b)s(eha)m(vior)g(if)f(they)h(are)g(unset;)g(suc)m(h)f(b)s(eha)
-m(vior)h(is)g(noted)f(in)630 3110 y(the)35 b(description)h(of)f(the)g
+m(vior)h(is)g(noted)f(in)630 4224 y(the)35 b(description)h(of)f(the)g
(individual)g(v)-5 b(ariables.)56 b(The)34 b(return)g(status)i(is)f
-(zero)h(unless)f(a)630 3220 y Fr(name)h Fu(is)30 b(readonly)-8
-b(.)150 3464 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150
-3623 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m
-(h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h(b)s(een)f(extended)g(in)150
-3733 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g
-(in)g(the)h Fm(posix)e Fu(standard.)150 3895 y Ft(alias)870
-4031 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p
-Ft(])d(...)o(])630 4166 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f
-(the)h Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f
-(aliases)h(on)f(the)630 4276 y(standard)g(output)g(in)g(a)h(form)f
+(zero)h(unless)f(a)630 4333 y Fr(name)h Fu(is)30 b(readonly)g(or)h(ma)m
+(y)g(not)f(b)s(e)g(unset.)150 4560 y Fs(4.2)68 b(Bash)45
+b(Builtin)g(Commands)150 4720 y Fu(This)c(section)h(describ)s(es)f
+(builtin)f(commands)h(whic)m(h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h
+(b)s(een)f(extended)g(in)150 4829 y(Bash.)g(Some)30 b(of)h(these)g
+(commands)f(are)g(sp)s(eci\014ed)g(in)g(the)h Fm(posix)e
+Fu(standard.)150 4975 y Ft(alias)870 5103 y(alias)46
+b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p Ft(])d(...)o(])630
+5230 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f(the)h
+Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f
+(aliases)h(on)f(the)630 5340 y(standard)g(output)g(in)g(a)h(form)f
(that)h(allo)m(ws)h(them)e(to)h(b)s(e)f(reused)g(as)g(input.)39
-b(If)25 b(argumen)m(ts)630 4385 y(are)j(supplied,)e(an)i(alias)g(is)f
-(de\014ned)f(for)h(eac)m(h)h Fr(name)33 b Fu(whose)27
-b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26
-b(no)h Fr(v)-5 b(alue)630 4495 y Fu(is)37 b(giv)m(en,)j(the)d(name)g
-(and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61
-b(Aliases)38 b(are)f(describ)s(ed)f(in)630 4605 y(Section)31
-b(6.6)h([Aliases],)g(page)f(94.)150 4766 y Ft(bind)870
-4902 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870
-5011 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p
-Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870
-5121 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870
-5230 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command)
-870 5340 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name)p
-eop end
-%%Page: 52 58
-TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(52)870 299 y Ft(bind)47
-b([-m)g Fj(keymap)p Ft(])e Fj(keyseq:readline-command)630
-432 y Fu(Displa)m(y)22 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g
-([Command)f(Line)h(Editing],)j(page)e(111\))g(k)m(ey)630
-542 y(and)36 b(function)g(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g
-(to)h(a)f(Readline)g(function)f(or)h(macro,)630 651 y(or)44
-b(set)h(a)g(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45
+b(If)25 b(argumen)m(ts)p eop end
+%%Page: 56 62
+TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y(are)28
+b(supplied,)e(an)i(alias)g(is)f(de\014ned)f(for)h(eac)m(h)h
+Fr(name)33 b Fu(whose)27 b Fr(v)-5 b(alue)33 b Fu(is)27
+b(giv)m(en.)41 b(If)26 b(no)h Fr(v)-5 b(alue)630 408
+y Fu(is)37 b(giv)m(en,)j(the)d(name)g(and)g(v)-5 b(alue)37
+b(of)h(the)f(alias)h(is)f(prin)m(ted.)61 b(Aliases)38
+b(are)f(describ)s(ed)f(in)630 518 y(Section)31 b(6.6)h([Aliases],)g
+(page)f(100.)150 676 y Ft(bind)870 810 y(bind)47 b([-m)g
+Fj(keymap)p Ft(])e([-lpsvPSVX])870 920 y(bind)i([-m)g
+Fj(keymap)p Ft(])e([-q)i Fj(function)p Ft(])f([-u)g Fj(function)p
+Ft(])g([-r)h Fj(keyseq)p Ft(])870 1029 y(bind)g([-m)g
+Fj(keymap)p Ft(])e(-f)j Fj(filename)870 1139 y Ft(bind)f([-m)g
+Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command)870 1249
+y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name)870
+1358 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj(keyseq:readline-command)
+870 1468 y Ft(bind)i Fj(readline-command-line)630 1602
+y Fu(Displa)m(y)22 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g
+([Command)f(Line)h(Editing],)j(page)e(117\))g(k)m(ey)630
+1711 y(and)36 b(function)g(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g
+(to)h(a)f(Readline)g(function)f(or)h(macro,)630 1821
+y(or)44 b(set)h(a)g(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45
b(non-option)g(argumen)m(t)f(is)g(a)h(command)f(as)g(it)630
-761 y(w)m(ould)e(app)s(ear)f(in)h(a)h(Readline)g(initialization)i
+1931 y(w)m(ould)e(app)s(ear)f(in)h(a)h(Readline)g(initialization)i
(\014le)d(\(see)h(Section)g(8.3)g([Readline)g(Init)630
-870 y(File],)c(page)d(114\),)j(but)c(eac)m(h)h(binding)f(or)g(command)h
-(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate)630 980
+2040 y(File],)c(page)d(120\),)j(but)c(eac)m(h)h(binding)f(or)g(command)
+h(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate)630 2150
y(argumen)m(t;)31 b(e.g.,)h(`)p Ft("\\C-x\\C-r":re-read-init-f)o(ile)p
-Fu('.)630 1113 y(Options,)e(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m
-(wing)h(meanings:)630 1270 y Ft(-m)e Fj(keymap)66 b Fu(Use)54
+Fu('.)630 2284 y(Options,)e(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m
+(wing)h(meanings:)630 2442 y Ft(-m)e Fj(keymap)66 b Fu(Use)54
b Fr(k)m(eymap)j Fu(as)d(the)g(k)m(eymap)g(to)h(b)s(e)e(a\013ected)i(b)
-m(y)f(the)g(subsequen)m(t)1110 1379 y(bindings.)46 b(Acceptable)34
+m(y)f(the)g(subsequen)m(t)1110 2552 y(bindings.)46 b(Acceptable)34
b Fr(k)m(eymap)i Fu(names)c(are)h Ft(emacs)p Fu(,)f Ft(emacs-standard)p
-Fu(,)1110 1489 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p
+Fu(,)1110 2661 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p
Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p
-Fu(,)f(and)1110 1598 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44
+Fu(,)f(and)1110 2771 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44
b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c
-Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 1708 y(synon)m(ym\);)30
+Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 2880 y(synon)m(ym\);)30
b Ft(emacs)f Fu(is)i(equiv)-5 b(alen)m(t)32 b(to)f Ft(emacs-standard)p
-Fu(.)630 1864 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g
-(Readline)g(functions.)630 2021 y Ft(-p)384 b Fu(Displa)m(y)34
+Fu(.)630 3039 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g
+(Readline)g(functions.)630 3197 y Ft(-p)384 b Fu(Displa)m(y)34
b(Readline)f(function)g(names)g(and)f(bindings)f(in)i(suc)m(h)f(a)i(w)m
-(a)m(y)f(that)1110 2131 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g
-(in)g(a)h(Readline)g(initialization)i(\014le.)630 2287
+(a)m(y)f(that)1110 3306 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g
+(in)g(a)h(Readline)g(initialization)i(\014le.)630 3465
y Ft(-P)384 b Fu(List)31 b(curren)m(t)f(Readline)h(function)f(names)g
-(and)g(bindings.)630 2444 y Ft(-v)384 b Fu(Displa)m(y)25
+(and)g(bindings.)630 3623 y Ft(-v)384 b Fu(Displa)m(y)25
b(Readline)f(v)-5 b(ariable)25 b(names)f(and)f(v)-5 b(alues)24
-b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 2553
+b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 3733
y(can)31 b(b)s(e)e(used)h(as)h(input)e(or)h(in)g(a)h(Readline)g
-(initialization)j(\014le.)630 2710 y Ft(-V)384 b Fu(List)31
+(initialization)j(\014le.)630 3891 y Ft(-V)384 b Fu(List)31
b(curren)m(t)f(Readline)h(v)-5 b(ariable)31 b(names)f(and)g(v)-5
-b(alues.)630 2866 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g
+b(alues.)630 4049 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g
(sequences)f(b)s(ound)f(to)i(macros)g(and)f(the)g(strings)1110
-2976 y(they)d(output)f(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g
-(can)g(b)s(e)f(used)g(as)h(input)e(or)i(in)g(a)1110 3086
-y(Readline)d(initialization)i(\014le.)630 3242 y Ft(-S)384
+4159 y(they)d(output)f(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g
+(can)g(b)s(e)f(used)g(as)h(input)e(or)i(in)g(a)1110 4268
+y(Readline)d(initialization)i(\014le.)630 4427 y Ft(-S)384
b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g(sequences)f(b)s(ound)f(to)i
-(macros)g(and)f(the)g(strings)1110 3352 y(they)31 b(output.)630
-3508 y Ft(-f)f Fj(filename)1110 3618 y Fu(Read)h(k)m(ey)g(bindings)e
-(from)h Fr(\014lename)p Fu(.)630 3774 y Ft(-q)g Fj(function)1110
-3884 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h
-(the)f(named)f Fr(function)p Fu(.)630 4041 y Ft(-u)g
-Fj(function)1110 4150 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i
-(the)f(named)g Fr(function)p Fu(.)630 4307 y Ft(-r)g
-Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f
-(for)h Fr(k)m(eyseq)p Fu(.)630 4463 y Ft(-x)g Fj(keyseq:shell-command)
-1110 4573 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h
+(macros)g(and)f(the)g(strings)1110 4536 y(they)31 b(output.)630
+4695 y Ft(-f)f Fj(filename)1110 4804 y Fu(Read)h(k)m(ey)g(bindings)e
+(from)h Fr(\014lename)p Fu(.)630 4963 y Ft(-q)g Fj(function)1110
+5072 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h
+(the)f(named)f Fr(function)p Fu(.)630 5230 y Ft(-u)g
+Fj(function)1110 5340 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i
+(the)f(named)g Fr(function)p Fu(.)p eop end
+%%Page: 57 63
+TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y Ft(-r)30
+b Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f
+(for)h Fr(k)m(eyseq)p Fu(.)630 452 y Ft(-x)g Fj(keyseq:shell-command)
+1110 562 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h
(whenev)m(er)f Fr(k)m(eyseq)j Fu(is)d(en)m(tered.)1110
-4682 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51
-b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 4792
+671 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51
+b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 781
y(LINE)37 b Fu(v)-5 b(ariable)38 b(to)g(the)g(con)m(ten)m(ts)i(of)e
-(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 4902
-y Ft(READLINE_POINT)21 b Fu(and)k Ft(READLINE_MARK)c
-Fu(v)-5 b(ariables)26 b(to)g(the)g(curren)m(t)f(lo)s(ca-)1110
-5011 y(tion)f(of)g(the)g(insertion)g(p)s(oin)m(t)g(and)f(the)h(sa)m(v)m
-(ed)h(insertion)f(p)s(oin)m(t)g(\(the)g Fr(mark)6 b Fu(\),)1110
-5121 y(resp)s(ectiv)m(ely)-8 b(.)43 b(If)30 b(the)h(executed)g(command)
-g(c)m(hanges)g(the)g(v)-5 b(alue)31 b(of)g(an)m(y)g(of)1110
-5230 y Ft(READLINE_LINE)p Fu(,)40 b Ft(READLINE_POINT)p
-Fu(,)f(or)i Ft(READLINE_MARK)p Fu(,)e(those)i(new)1110
-5340 y(v)-5 b(alues)31 b(will)f(b)s(e)g(re\015ected)h(in)f(the)h
-(editing)g(state.)p eop end
-%%Page: 53 59
-TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y Ft(-X)384
+(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 891
+y Ft(READLINE_POINT)d Fu(and)j Ft(READLINE_MARK)d Fu(v)-5
+b(ariables)39 b(to)f(the)g(curren)m(t)g(lo-)1110 1000
+y(cation)46 b(of)f(the)g(insertion)g(p)s(oin)m(t)f(and)g(the)h(sa)m(v)m
+(ed)h(insertion)f(p)s(oin)m(t)f(\(the)1110 1110 y Fr(mark)6
+b Fu(\),)38 b(resp)s(ectiv)m(ely)-8 b(.)62 b(The)36 b(shell)h(assigns)g
+(an)m(y)g(n)m(umeric)g(argumen)m(t)g(the)1110 1219 y(user)43
+b(supplied)g(to)h(the)g Ft(READLINE_ARGUMENT)39 b Fu(v)-5
+b(ariable.)82 b(If)44 b(there)g(w)m(as)1110 1329 y(no)39
+b(argumen)m(t,)j(that)d(v)-5 b(ariable)40 b(is)f(not)g(set.)68
+b(If)38 b(the)h(executed)h(command)1110 1439 y(c)m(hanges)e(the)e(v)-5
+b(alue)37 b(of)g(an)m(y)g(of)g Ft(READLINE_LINE)p Fu(,)d
+Ft(READLINE_POINT)p Fu(,)h(or)1110 1548 y Ft(READLINE_MARK)p
+Fu(,)i(those)i(new)f(v)-5 b(alues)38 b(will)h(b)s(e)f(re\015ected)h(in)
+f(the)g(editing)1110 1658 y(state.)630 1811 y Ft(-X)384
b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s(ound)e(to)j(shell)g
-(commands)e(and)h(the)g(asso)s(ciated)1110 408 y(commands)j(in)g(a)h
+(commands)e(and)h(the)g(asso)s(ciated)1110 1921 y(commands)j(in)g(a)h
(format)g(that)f(can)h(b)s(e)f(reused)f(as)i(input.)630
-568 y(The)26 b(return)f(status)i(is)f(zero)i(unless)d(an)i(in)m(v)-5
+2074 y(The)26 b(return)f(status)i(is)f(zero)i(unless)d(an)i(in)m(v)-5
b(alid)27 b(option)g(is)f(supplied)f(or)i(an)f(error)g(o)s(ccurs.)150
-727 y Ft(builtin)870 862 y(builtin)46 b([)p Fj(shell-builtin)e
-Ft([)p Fj(args)p Ft(]])630 996 y Fu(Run)35 b(a)i(shell)f(builtin,)i
+2228 y Ft(builtin)870 2359 y(builtin)46 b([)p Fj(shell-builtin)e
+Ft([)p Fj(args)p Ft(]])630 2491 y Fu(Run)35 b(a)i(shell)f(builtin,)i
(passing)e(it)h Fr(args)p Fu(,)h(and)e(return)f(its)i(exit)g(status.)59
-b(This)35 b(is)i(useful)630 1106 y(when)29 b(de\014ning)h(a)g(shell)h
+b(This)35 b(is)i(useful)630 2600 y(when)29 b(de\014ning)h(a)g(shell)h
(function)f(with)g(the)g(same)h(name)f(as)h(a)g(shell)f(builtin,)g
-(retaining)630 1215 y(the)k(functionalit)m(y)h(of)f(the)f(builtin)g
+(retaining)630 2710 y(the)k(functionalit)m(y)h(of)f(the)f(builtin)g
(within)g(the)h(function.)50 b(The)33 b(return)g(status)h(is)f(non-)630
-1325 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f
-(builtin)g(command.)150 1484 y Ft(caller)870 1619 y(caller)46
-b([)p Fj(expr)p Ft(])630 1753 y Fu(Returns)34 b(the)g(con)m(text)j(of)e
+2819 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f
+(builtin)g(command.)150 2973 y Ft(caller)870 3104 y(caller)46
+b([)p Fj(expr)p Ft(])630 3236 y Fu(Returns)34 b(the)g(con)m(text)j(of)e
(an)m(y)g(activ)m(e)i(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h
-(a)g(script)630 1863 y(executed)c(with)f(the)h Ft(.)f
-Fu(or)g Ft(source)f Fu(builtins\).)630 1998 y(Without)45
+(a)g(script)630 3345 y(executed)c(with)f(the)h Ft(.)f
+Fu(or)g Ft(source)f Fu(builtins\).)630 3477 y(Without)45
b Fr(expr)p Fu(,)j Ft(caller)43 b Fu(displa)m(ys)i(the)f(line)h(n)m(um)
-m(b)s(er)f(and)g(source)g(\014lename)h(of)g(the)630 2107
+m(b)s(er)f(and)g(source)g(\014lename)h(of)g(the)630 3587
y(curren)m(t)35 b(subroutine)g(call.)58 b(If)35 b(a)h(non-negativ)m(e)i
(in)m(teger)f(is)f(supplied)e(as)i Fr(expr)p Fu(,)h Ft(caller)630
-2217 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d
+3696 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d
(name,)44 b(and)c(source)g(\014le)h(corresp)s(onding)e(to)630
-2326 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g
+3806 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g
(stac)m(k.)54 b(This)34 b(extra)h(information)g(ma)m(y)630
-2436 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m
+3915 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m
(k)h(trace.)42 b(The)29 b(curren)m(t)i(frame)f(is)g(frame)h(0.)630
-2570 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g
+4047 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g
(is)g(not)g(executing)h(a)f(subroutine)e(call)j(or)f
-Fr(expr)630 2680 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5
+Fr(expr)630 4156 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5
b(alid)30 b(p)s(osition)h(in)f(the)g(call)i(stac)m(k.)150
-2839 y Ft(command)870 2974 y(command)46 b([-pVv])g Fj(command)g
-Ft([)p Fj(arguments)f Ft(...)o(])630 3108 y Fu(Runs)32
+4310 y Ft(command)870 4441 y(command)46 b([-pVv])g Fj(command)g
+Ft([)p Fj(arguments)f Ft(...)o(])630 4573 y Fu(Runs)32
b Fr(command)k Fu(with)d Fr(argumen)m(ts)k Fu(ignoring)c(an)m(y)g
-(shell)h(function)e(named)h Fr(command)p Fu(.)630 3218
+(shell)h(function)e(named)h Fr(command)p Fu(.)630 4682
y(Only)39 b(shell)i(builtin)e(commands)h(or)g(commands)f(found)g(b)m(y)
-h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 3328 y(executed.)59
+h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 4792 y(executed.)59
b(If)36 b(there)h(is)f(a)h(shell)f(function)g(named)g
Ft(ls)p Fu(,)h(running)e(`)p Ft(command)29 b(ls)p Fu(')35
-b(within)630 3437 y(the)c(function)f(will)h(execute)g(the)g(external)g
+b(within)630 4902 y(the)c(function)f(will)h(execute)g(the)g(external)g
(command)g Ft(ls)f Fu(instead)g(of)h(calling)h(the)f(func-)630
-3547 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b
+5011 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b
Ft(-p)h Fu(option)g(means)g(to)h(use)f(a)g(default)h(v)-5
-b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 3656 y(guaran)m(teed)f(to)
+b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 5121 y(guaran)m(teed)f(to)
f(\014nd)e(all)j(of)f(the)g(standard)f(utilities.)52
-b(The)33 b(return)g(status)h(in)f(this)h(case)630 3766
+b(The)33 b(return)g(status)h(in)f(this)h(case)630 5230
y(is)29 b(127)g(if)g Fr(command)j Fu(cannot)d(b)s(e)e(found)h(or)g(an)g
(error)h(o)s(ccurred,)f(and)g(the)h(exit)g(status)g(of)630
-3875 y Fr(command)34 b Fu(otherwise.)630 4010 y(If)e(either)h(the)f
-Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g(a)h(description)f
-(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 4120 y(The)f
-Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f(indicating)g(the)g
-(command)g(or)g(\014le)g(name)g(used)630 4229 y(to)40
-b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m(y)m(ed;)44
-b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m(erb)s(ose)
-630 4339 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e
-(status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and)630
-4448 y(non-zero)31 b(if)f(not.)150 4608 y Ft(declare)870
-4742 y(declare)46 b([-aAfFgiIlnrtux])d([-p])k([)p Fj(name)p
-Ft([=)p Fj(value)p Ft(])d(...)o(])630 4877 y Fu(Declare)29
+5340 y Fr(command)34 b Fu(otherwise.)p eop end
+%%Page: 58 64
+TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y(If)32
+b(either)h(the)f Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g
+(a)h(description)f(of)h Fr(command)j Fu(is)c(prin)m(ted.)630
+408 y(The)f Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f
+(indicating)g(the)g(command)g(or)g(\014le)g(name)g(used)630
+518 y(to)40 b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m
+(y)m(ed;)44 b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m
+(erb)s(ose)630 628 y(description.)61 b(In)36 b(this)h(case,)j(the)e
+(return)e(status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and)
+630 737 y(non-zero)31 b(if)f(not.)150 897 y Ft(declare)870
+1031 y(declare)46 b([-aAfFgiIlnrtux])d([-p])k([)p Fj(name)p
+Ft([=)p Fj(value)p Ft(])d(...)o(])630 1166 y Fu(Declare)29
b(v)-5 b(ariables)28 b(and)e(giv)m(e)j(them)e(attributes.)40
b(If)27 b(no)g Fr(name)5 b Fu(s)27 b(are)h(giv)m(en,)h(then)e(displa)m
-(y)630 4986 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31
-b(instead.)630 5121 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f
+(y)630 1275 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31
+b(instead.)630 1410 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f
(the)h(attributes)g(and)e(v)-5 b(alues)36 b(of)f(eac)m(h)i
-Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 5230 y Fu(is)i(used)g(with)g
+Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 1519 y Fu(is)i(used)g(with)g
Fr(name)43 b Fu(argumen)m(ts,)e(additional)e(options,)i(other)d(than)g
-Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 5340 y(ignored.)p
-eop end
-%%Page: 54 60
-TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(When)40
-b Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k Fu(argumen)m(ts,)f
-Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630
-408 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5
+Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 1629 y(ignored.)630
+1763 y(When)g Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k
+Fu(argumen)m(ts,)f Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630
+1873 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5
b(ariables)31 b(ha)m(ving)h(the)f(attributes)g(sp)s(eci\014ed)f(b)m(y)h
-(the)g(addi-)630 518 y(tional)k(options.)52 b(If)34 b(no)g(other)g
-(options)g(are)g(supplied)f(with)h Ft(-p)p Fu(,)g Ft(declare)e
-Fu(will)j(displa)m(y)630 628 y(the)e(attributes)h(and)e(v)-5
-b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50 b(The)32
-b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630 737 y(displa)m(y)d(to)g
-(shell)f(functions.)630 877 y(The)41 b Ft(-F)f Fu(option)i(inhibits)e
-(the)i(displa)m(y)f(of)g(function)g(de\014nitions;)47
-b(only)41 b(the)g(function)630 986 y(name)30 b(and)f(attributes)i(are)f
-(prin)m(ted.)40 b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g
-(enabled)g(using)630 1096 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i
-([The)d(Shopt)f(Builtin],)k(page)e(66\),)i(the)d(source)h(\014le)f
-(name)h(and)630 1205 y(line)31 b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h
+(the)g(addi-)630 1983 y(tional)k(options.)52 b(If)34
+b(no)g(other)g(options)g(are)g(supplied)f(with)h Ft(-p)p
+Fu(,)g Ft(declare)e Fu(will)j(displa)m(y)630 2092 y(the)e(attributes)h
+(and)e(v)-5 b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50
+b(The)32 b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630
+2202 y(displa)m(y)d(to)g(shell)f(functions.)630 2336
+y(The)41 b Ft(-F)f Fu(option)i(inhibits)e(the)i(displa)m(y)f(of)g
+(function)g(de\014nitions;)47 b(only)41 b(the)g(function)630
+2446 y(name)30 b(and)f(attributes)i(are)f(prin)m(ted.)40
+b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled)g(using)
+630 2555 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f
+(Builtin],)k(page)e(71\),)i(the)d(source)h(\014le)f(name)h(and)630
+2665 y(line)31 b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h
Fr(name)36 b Fu(is)30 b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m
-(ell.)41 b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 1345
+(ell.)41 b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 2800
y(The)36 b Ft(-g)g Fu(option)h(forces)g(v)-5 b(ariables)37
b(to)g(b)s(e)f(created)i(or)e(mo)s(di\014ed)g(at)h(the)g(global)h(scop)
-s(e,)630 1455 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f
+s(e,)630 2909 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f
(a)g(shell)h(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630
-1564 y(cases.)630 1704 y(The)50 b Ft(-I)h Fu(option)g(causes)h(lo)s
+3019 y(cases.)630 3153 y(The)50 b Ft(-I)h Fu(option)g(causes)h(lo)s
(cal)g(v)-5 b(ariables)51 b(to)h(inherit)f(the)g(attributes)g(\(except)
-i(the)630 1813 y Fr(nameref)63 b Fu(attribute\))46 b(and)f(v)-5
-b(alue)45 b(of)h(an)m(y)f(existing)i(v)-5 b(ariable)46
-b(with)f(the)g(same)h Fr(name)630 1923 y Fu(at)40 b(a)f(surrounding)d
+i(the)630 3263 y Ft(nameref)43 b Fu(attribute\))j(and)f(v)-5
+b(alue)46 b(of)f(an)m(y)h(existing)g(v)-5 b(ariable)46
+b(with)f(the)g(same)h Fr(name)630 3372 y Fu(at)40 b(a)f(surrounding)d
(scop)s(e.)66 b(If)39 b(there)g(is)g(no)f(existing)i(v)-5
b(ariable,)42 b(the)d(lo)s(cal)h(v)-5 b(ariable)40 b(is)630
-2032 y(initially)32 b(unset.)630 2172 y(The)27 b(follo)m(wing)h
+3482 y(initially)32 b(unset.)630 3616 y(The)27 b(follo)m(wing)h
(options)g(can)f(b)s(e)g(used)f(to)i(restrict)g(output)e(to)i(v)-5
-b(ariables)28 b(with)f(the)g(sp)s(ec-)630 2281 y(i\014ed)j(attributes)h
+b(ariables)28 b(with)f(the)g(sp)s(ec-)630 3726 y(i\014ed)j(attributes)h
(or)f(to)h(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630
-2451 y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34
+3885 y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34
b(an)h(indexed)g(arra)m(y)g(v)-5 b(ariable)36 b(\(see)f(Section)h(6.7)g
-([Arra)m(ys],)1110 2560 y(page)31 b(95\).)630 2730 y
+([Arra)m(ys],)1110 3995 y(page)31 b(100\).)630 4154 y
Ft(-A)384 b Fu(Eac)m(h)24 b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m
(e)j(arra)m(y)e(v)-5 b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m
-(ys],)1110 2839 y(page)31 b(95\).)630 3009 y Ft(-f)384
-b Fu(Use)31 b(function)f(names)g(only)-8 b(.)630 3178
+(ys],)1110 4264 y(page)31 b(100\).)630 4423 y Ft(-f)384
+b Fu(Use)31 b(function)f(names)g(only)-8 b(.)630 4583
y Ft(-i)384 b Fu(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f
(treated)h(as)g(an)f(in)m(teger;)41 b(arithmetic)c(ev)-5
-b(aluation)1110 3288 y(\(see)29 b(Section)f(6.5)h([Shell)f
-(Arithmetic],)i(page)e(93\))h(is)f(p)s(erformed)e(when)h(the)1110
-3397 y(v)-5 b(ariable)31 b(is)g(assigned)f(a)h(v)-5 b(alue.)630
-3567 y Ft(-l)384 b Fu(When)26 b(the)g(v)-5 b(ariable)27
+b(aluation)1110 4692 y(\(see)29 b(Section)f(6.5)h([Shell)f
+(Arithmetic],)i(page)e(98\))h(is)f(p)s(erformed)e(when)h(the)1110
+4802 y(v)-5 b(ariable)31 b(is)g(assigned)f(a)h(v)-5 b(alue.)630
+4961 y Ft(-l)384 b Fu(When)26 b(the)g(v)-5 b(ariable)27
b(is)f(assigned)g(a)g(v)-5 b(alue,)28 b(all)f(upp)s(er-case)e(c)m
-(haracters)j(are)1110 3676 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)
+(haracters)j(are)1110 5071 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)
43 b(The)30 b(upp)s(er-case)g(attribute)h(is)g(disabled.)630
-3846 y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k
-Fu(the)27 b Fr(nameref)44 b Fu(attribute,)28 b(making)f(it)h(a)f(name)f
-(reference)1110 3955 y(to)32 b(another)g(v)-5 b(ariable.)46
+5230 y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k
+Fu(the)27 b Ft(nameref)d Fu(attribute,)29 b(making)e(it)g(a)g(name)f
+(reference)1110 5340 y(to)32 b(another)g(v)-5 b(ariable.)46
b(That)31 b(other)h(v)-5 b(ariable)33 b(is)f(de\014ned)e(b)m(y)i(the)g
-(v)-5 b(alue)32 b(of)1110 4065 y Fr(name)p Fu(.)54 b(All)35
-b(references,)h(assignmen)m(ts,)h(and)d(attribute)h(mo)s(di\014cations)
-g(to)1110 4174 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or)
-g(c)m(hanging)h(the)f Ft(-n)g Fu(attribute)h(itself,)i(are)1110
-4284 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25
-b(referenced)e(b)m(y)g Fr(name)5 b Fu('s)23 b(v)-5 b(alue.)39
-b(The)23 b(nameref)1110 4394 y(attribute)31 b(cannot)g(b)s(e)f(applied)
-g(to)h(arra)m(y)g(v)-5 b(ariables.)630 4563 y Ft(-r)384
-b Fu(Mak)m(e)25 b Fr(name)5 b Fu(s)23 b(readonly)-8 b(.)39
-b(These)24 b(names)f(cannot)h(then)f(b)s(e)g(assigned)h(v)-5
-b(alues)1110 4672 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h
-(statemen)m(ts)h(or)f(unset.)630 4842 y Ft(-t)384 b Fu(Giv)m(e)33
-b(eac)m(h)h Fr(name)j Fu(the)32 b Ft(trace)f Fu(attribute.)46
-b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 4951
-y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g(the)h(calling)h
-(shell.)40 b(The)27 b(trace)i(attribute)1110 5061 y(has)h(no)g(sp)s
-(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 5230 y
-Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29 b(is)f(assigned)h(a)f
-(v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m(haracters)f(are)1110
-5340 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 b(The)30
-b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)p eop
-end
-%%Page: 55 61
-TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y Ft(-x)384
-b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29 b(exp)s(ort)h(to)g
-(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110
-408 y(ronmen)m(t.)630 560 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g(`)
-p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f
-(the)g(exceptions)h(that)630 670 y(`)p Ft(+a)p Fu(')23
+(v)-5 b(alue)32 b(of)p eop end
+%%Page: 59 65
+TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(59)1110 299 y
+Fr(name)p Fu(.)54 b(All)35 b(references,)h(assignmen)m(ts,)h(and)d
+(attribute)h(mo)s(di\014cations)g(to)1110 408 y Fr(name)p
+Fu(,)27 b(except)f(for)f(those)h(using)f(or)g(c)m(hanging)h(the)f
+Ft(-n)g Fu(attribute)h(itself,)i(are)1110 518 y(p)s(erformed)22
+b(on)h(the)g(v)-5 b(ariable)25 b(referenced)e(b)m(y)g
+Fr(name)5 b Fu('s)23 b(v)-5 b(alue.)39 b(The)23 b(nameref)1110
+628 y(attribute)31 b(cannot)g(b)s(e)f(applied)g(to)h(arra)m(y)g(v)-5
+b(ariables.)630 785 y Ft(-r)384 b Fu(Mak)m(e)25 b Fr(name)5
+b Fu(s)23 b(readonly)-8 b(.)39 b(These)24 b(names)f(cannot)h(then)f(b)s
+(e)g(assigned)h(v)-5 b(alues)1110 894 y(b)m(y)30 b(subsequen)m(t)g
+(assignmen)m(t)h(statemen)m(ts)h(or)f(unset.)630 1052
+y Ft(-t)384 b Fu(Giv)m(e)33 b(eac)m(h)h Fr(name)j Fu(the)32
+b Ft(trace)f Fu(attribute.)46 b(T)-8 b(raced)32 b(functions)g(inherit)g
+(the)1110 1161 y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g
+(the)h(calling)h(shell.)40 b(The)27 b(trace)i(attribute)1110
+1271 y(has)h(no)g(sp)s(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630
+1428 y Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29
+b(is)f(assigned)h(a)f(v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m
+(haracters)f(are)1110 1538 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40
+b(The)30 b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)630
+1695 y Ft(-x)384 b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29
+b(exp)s(ort)h(to)g(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110
+1805 y(ronmen)m(t.)630 1962 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g
+(`)p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f
+(the)g(exceptions)h(that)630 2071 y(`)p Ft(+a)p Fu(')23
b(and)f(`)p Ft(+A)p Fu(')h(ma)m(y)h(not)f(b)s(e)f(used)g(to)i(destro)m
(y)g(arra)m(y)f(v)-5 b(ariables)24 b(and)e(`)p Ft(+r)p
-Fu(')h(will)g(not)g(remo)m(v)m(e)630 780 y(the)36 b(readonly)h
+Fu(')h(will)g(not)g(remo)m(v)m(e)630 2181 y(the)36 b(readonly)h
(attribute.)59 b(When)36 b(used)f(in)h(a)h(function,)g
-Ft(declare)d Fu(mak)m(es)j(eac)m(h)h Fr(name)630 889
+Ft(declare)d Fu(mak)m(es)j(eac)m(h)h Fr(name)630 2291
y Fu(lo)s(cal,)e(as)d(with)h(the)f Ft(local)f Fu(command,)j(unless)d
(the)i Ft(-g)f Fu(option)h(is)f(used.)49 b(If)33 b(a)h(v)-5
-b(ariable)630 999 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p
+b(ariable)630 2400 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p
Fr(v)-5 b(alue)p Fu(,)31 b(the)f(v)-5 b(alue)31 b(of)g(the)f(v)-5
b(ariable)32 b(is)e(set)h(to)g Fr(v)-5 b(alue)p Fu(.)630
-1130 y(When)41 b(using)g Ft(-a)g Fu(or)h Ft(-A)e Fu(and)h(the)h(comp)s
+2534 y(When)41 b(using)g Ft(-a)g Fu(or)h Ft(-A)e Fu(and)h(the)h(comp)s
(ound)e(assignmen)m(t)i(syn)m(tax)g(to)g(create)h(arra)m(y)630
-1239 y(v)-5 b(ariables,)28 b(additional)f(attributes)g(do)f(not)h(tak)m
+2643 y(v)-5 b(ariables,)28 b(additional)f(attributes)g(do)f(not)h(tak)m
(e)h(e\013ect)g(un)m(til)e(subsequen)m(t)g(assignmen)m(ts.)630
-1370 y(The)35 b(return)f(status)i(is)g(zero)g(unless)f(an)g(in)m(v)-5
+2777 y(The)35 b(return)f(status)i(is)g(zero)g(unless)f(an)g(in)m(v)-5
b(alid)36 b(option)g(is)g(encoun)m(tered,)h(an)f(attempt)630
-1480 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f(`)p
+2886 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f(`)p
Ft(-f)f(foo=bar)p Fu(',)h(an)h(attempt)g(is)g(made)g(to)h(assign)630
-1589 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5
+2996 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5
b(ariable,)47 b(an)42 b(attempt)h(is)f(made)g(to)h(assign)f(a)h(v)-5
-b(alue)42 b(to)h(an)630 1699 y(arra)m(y)30 b(v)-5 b(ariable)30
+b(alue)42 b(to)h(an)630 3105 y(arra)m(y)30 b(v)-5 b(ariable)30
b(without)g(using)e(the)i(comp)s(ound)e(assignmen)m(t)i(syn)m(tax)g
-(\(see)h(Section)f(6.7)630 1808 y([Arra)m(ys],)47 b(page)c(95\),)48
-b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)-5
-b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630
-1918 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g
+(\(see)h(Section)f(6.7)630 3215 y([Arra)m(ys],)43 b(page)d(100\),)k
+(one)c(of)g(the)g Fr(name)5 b Fu(s)40 b(is)f(not)h(a)g(v)-5
+b(alid)40 b(shell)g(v)-5 b(ariable)41 b(name,)h(an)630
+3324 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g
(for)g(a)h(readonly)f(v)-5 b(ariable,)29 b(an)e(attempt)630
-2028 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g
+3434 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g
(arra)m(y)h(v)-5 b(ariable,)30 b(or)e(an)g(attempt)i(is)e(made)g(to)630
-2137 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g
-Ft(-f)p Fu(.)150 2289 y Ft(echo)870 2420 y(echo)47 b([-neE])f([)p
-Fj(arg)g Ft(...])630 2551 y Fu(Output)31 b(the)i Fr(arg)8
+3544 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g
+Ft(-f)p Fu(.)150 3701 y Ft(echo)870 3834 y(echo)47 b([-neE])f([)p
+Fj(arg)g Ft(...])630 3968 y Fu(Output)31 b(the)i Fr(arg)8
b Fu(s,)33 b(separated)g(b)m(y)g(spaces,)g(terminated)g(with)f(a)h
-(newline.)47 b(The)32 b(return)630 2660 y(status)f(is)f(0)h(unless)f(a)
+(newline.)47 b(The)32 b(return)630 4077 y(status)f(is)f(0)h(unless)f(a)
h(write)g(error)f(o)s(ccurs.)41 b(If)30 b Ft(-n)g Fu(is)h(sp)s
-(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 2770
+(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 4187
y(suppressed.)38 b(If)29 b(the)h Ft(-e)f Fu(option)h(is)f(giv)m(en,)i
(in)m(terpretation)g(of)e(the)h(follo)m(wing)h(bac)m(kslash-)630
-2880 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78
+4296 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78
b(The)42 b Ft(-E)g Fu(option)h(disables)g(the)g(in)m(terpretation)h(of)
-630 2989 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g
+630 4406 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g
(systems)f(where)g(they)h(are)g(in)m(terpreted)g(b)m(y)f(default.)630
-3099 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e
+4516 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e
(used)g(to)h(dynamically)h(determine)f(whether)f(or)630
-3208 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g
+4625 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g
(b)m(y)f(default.)48 b Ft(echo)32 b Fu(do)s(es)g(not)i(in)m(terpret)630
-3318 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630
-3449 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f
-(sequences:)630 3601 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630
-3753 y Ft(\\b)384 b Fu(bac)m(kspace)630 3905 y Ft(\\c)g
-Fu(suppress)28 b(further)h(output)630 4057 y Ft(\\e)630
-4166 y(\\E)384 b Fu(escap)s(e)630 4318 y Ft(\\f)g Fu(form)30
-b(feed)630 4470 y Ft(\\n)384 b Fu(new)30 b(line)630 4622
-y Ft(\\r)384 b Fu(carriage)32 b(return)630 4774 y Ft(\\t)384
-b Fu(horizon)m(tal)32 b(tab)630 4926 y Ft(\\v)384 b Fu(v)m(ertical)32
-b(tab)630 5078 y Ft(\\\\)384 b Fu(bac)m(kslash)630 5230
+4735 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630
+4868 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f
+(sequences:)630 5026 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630
+5183 y Ft(\\b)384 b Fu(bac)m(kspace)630 5340 y Ft(\\c)g
+Fu(suppress)28 b(further)h(output)p eop end
+%%Page: 60 66
+TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(60)630 299 y Ft(\\e)630
+408 y(\\E)384 b Fu(escap)s(e)630 556 y Ft(\\f)g Fu(form)30
+b(feed)630 703 y Ft(\\n)384 b Fu(new)30 b(line)630 851
+y Ft(\\r)384 b Fu(carriage)32 b(return)630 998 y Ft(\\t)384
+b Fu(horizon)m(tal)32 b(tab)630 1145 y Ft(\\v)384 b Fu(v)m(ertical)32
+b(tab)630 1293 y Ft(\\\\)384 b Fu(bac)m(kslash)630 1440
y Ft(\\0)p Fj(nnn)240 b Fu(the)32 b(eigh)m(t-bit)i(c)m(haracter)g
(whose)e(v)-5 b(alue)33 b(is)f(the)g(o)s(ctal)i(v)-5
-b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 5340 y(three)e(o)s(ctal)g
-(digits\))p eop end
-%%Page: 56 62
-TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y Ft(\\x)p
-Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e(v)-5
-b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 b
-Fr(HH)1110 408 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630
-563 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41 b(Unico)s(de)g(\(ISO/IEC)f
-(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41 b(is)g(the)g(hex-)1110
-673 y(adecimal)32 b(v)-5 b(alue)31 b Fr(HHHH)41 b Fu(\(one)31
-b(to)g(four)e(hex)h(digits\))630 828 y Ft(\\U)p Fj(HHHHHHHH)1110
-938 y Fu(the)41 b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g
-(whose)e(v)-5 b(alue)41 b(is)g(the)g(hex-)1110 1047 y(adecimal)32
-b(v)-5 b(alue)31 b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e
-(digits\))150 1202 y Ft(enable)870 1334 y(enable)46 b([-a])h([-dnps])f
-([-f)g Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])630
-1467 y Fu(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56
+b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 1550 y(three)e(o)s(ctal)g
+(digits\))630 1697 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)
+m(haracter)g(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5
+b(alue)39 b Fr(HH)1110 1807 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
+(digits\))630 1954 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41
+b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5
+b(alue)41 b(is)g(the)g(hex-)1110 2064 y(adecimal)32 b(v)-5
+b(alue)31 b Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)e(hex)h(digits\))630
+2211 y Ft(\\U)p Fj(HHHHHHHH)1110 2321 y Fu(the)41 b(Unico)s(de)g
+(\(ISO/IEC)f(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41
+b(is)g(the)g(hex-)1110 2430 y(adecimal)32 b(v)-5 b(alue)31
+b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e(digits\))150
+2578 y Ft(enable)870 2706 y(enable)46 b([-a])h([-dnps])f([-f)g
+Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])630 2835
+y Fu(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56
b(Disabling)37 b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630
-1576 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h
-(builtin)e(to)i(b)s(e)f(executed)h(without)630 1686 y(sp)s(ecifying)27
+2944 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h
+(builtin)e(to)i(b)s(e)f(executed)h(without)630 3054 y(sp)s(ecifying)27
b(a)g(full)g(pathname,)g(ev)m(en)h(though)f(the)g(shell)g(normally)g
-(searc)m(hes)h(for)f(builtins)630 1795 y(b)s(efore)35
+(searc)m(hes)h(for)f(builtins)630 3163 y(b)s(efore)35
b(disk)g(commands.)55 b(If)35 b Ft(-n)g Fu(is)g(used,)h(the)g
Fr(name)5 b Fu(s)35 b(b)s(ecome)h(disabled.)55 b(Otherwise)630
-1905 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8
+3273 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8
b(or)45 b(example,)k(to)c(use)f(the)g Ft(test)f Fu(binary)h(found)f
-(via)h Ft($PATH)630 2015 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g
+(via)h Ft($PATH)630 3382 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g
(v)m(ersion,)h(t)m(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p
-Fu('.)630 2147 y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)
+Fu('.)630 3511 y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)
d(no)g Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f
-(shell)630 2256 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38
+(shell)630 3621 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38
b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g(all)h
-(enabled)630 2366 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h
+(enabled)630 3730 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h
Fu(option)g(means)g(to)g(list)h(eac)m(h)g(builtin)f(with)f(an)h
-(indication)h(of)630 2476 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.)
-630 2608 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g
+(indication)h(of)630 3840 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.)
+630 3968 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g
(builtin)f(command)h Fr(name)27 b Fu(from)22 b(shared)f(ob)5
-b(ject)630 2717 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp)
-s(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h
-(delete)630 2827 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p
-Fu(.)630 2959 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the)
-g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)52 b(The)33
-b Ft(-s)g Fu(option)630 3069 y(restricts)j Ft(enable)d
-Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54
+b(ject)630 4078 y Fr(\014lename)p Fu(,)31 b(on)f(systems)g(that)h(supp)
+s(ort)e(dynamic)h(loading.)41 b(Bash)31 b(will)f(use)g(the)h(v)-5
+b(alue)31 b(of)630 4187 y(the)39 b Ft(BASH_LOADABLES_PATH)34
+b Fu(v)-5 b(ariable)40 b(as)f(a)h(colon-separated)h(list)f(of)f
+(directories)h(in)630 4297 y(whic)m(h)31 b(to)h(searc)m(h)g(for)f
+Fr(\014lename)p Fu(.)44 b(The)31 b(default)g(is)h(system-dep)s(enden)m
+(t.)43 b(The)31 b Ft(-d)f Fu(option)630 4407 y(will)h(delete)g(a)g
+(builtin)f(loaded)h(with)f Ft(-f)p Fu(.)630 4535 y(If)j(there)i(are)f
+(no)g(options,)h(a)f(list)h(of)f(the)g(shell)g(builtins)g(is)g(displa)m
+(y)m(ed.)52 b(The)33 b Ft(-s)g Fu(option)630 4645 y(restricts)j
+Ft(enable)d Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54
b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630
-3178 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i
-(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(72\).)630
-3311 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i
-Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g
-(error)630 3420 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g
-(ob)5 b(ject.)150 3575 y Ft(help)870 3707 y(help)47 b([-dms])f([)p
-Fj(pattern)p Ft(])630 3840 y Fu(Displa)m(y)40 b(helpful)e(information)h
-(ab)s(out)g(builtin)f(commands.)66 b(If)38 b Fr(pattern)h
-Fu(is)g(sp)s(eci\014ed,)630 3949 y Ft(help)28 b Fu(giv)m(es)i(detailed)
-g(help)e(on)h(all)h(commands)e(matc)m(hing)i Fr(pattern)p
-Fu(,)g(otherwise)f(a)g(list)h(of)630 4059 y(the)h(builtins)e(is)i(prin)
-m(ted.)630 4191 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)
-m(wing)h(meanings:)630 4346 y Ft(-d)384 b Fu(Displa)m(y)32
-b(a)e(short)g(description)h(of)f(eac)m(h)i Fr(pattern)630
-4501 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h)
-h Fr(pattern)e Fu(in)g(a)h(manpage-lik)m(e)h(format)630
-4656 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h
-(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 4811 y Fu(The)f(return)f
-(status)i(is)f(zero)h(unless)f(no)g(command)h(matc)m(hes)g
-Fr(pattern)p Fu(.)150 4966 y Ft(let)870 5098 y(let)47
-b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630
-5230 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s
-(e)d(p)s(erformed)g(on)i(shell)g(v)-5 b(ariables.)74
-b(Eac)m(h)630 5340 y Fr(expression)31 b Fu(is)g(ev)-5
-b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)h(b)s(elo)m(w)f
-(in)f(Section)i(6.5)g([Shell)p eop end
-%%Page: 57 63
-TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y(Arithmetic],)51
-b(page)46 b(93.)87 b(If)45 b(the)g(last)h Fr(expression)g
-Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630
-408 y(otherwise)31 b(0)g(is)f(returned.)150 568 y Ft(local)870
-702 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p
-Fj(value)p Ft(])e(...)630 836 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m
-(t,)g(a)f(lo)s(cal)h(v)-5 b(ariable)27 b(named)e Fr(name)31
-b Fu(is)26 b(created,)i(and)d(assigned)h Fr(v)-5 b(alue)p
-Fu(.)630 946 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f(the)
-h(options)g(accepted)g(b)m(y)g Ft(declare)p Fu(.)59 b
-Ft(local)36 b Fu(can)i(only)630 1055 y(b)s(e)j(used)h(within)f(a)i
-(function;)48 b(it)42 b(mak)m(es)h(the)f(v)-5 b(ariable)43
-b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630
-1165 y(restricted)h(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78
-b(If)42 b Fr(name)48 b Fu(is)43 b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f
-(shell)630 1275 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f
-(function)g(in)g(whic)m(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48
-b(shell)34 b(options)630 1384 y(c)m(hanged)e(using)e(the)i
-Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g(restored)h(to)g
-(their)f(original)630 1494 y(v)-5 b(alues)36 b(when)e(the)i(function)f
+4754 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i
+(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(77\).)630
+4883 y(If)24 b(no)g(options)h(are)g(supplied)e(and)h(a)h
+Fr(name)k Fu(is)c(not)f(a)h(shell)g(builtin,)g Ft(enable)e
+Fu(will)i(attempt)630 4992 y(to)c(load)g Fr(name)26 b
+Fu(from)20 b(a)g(shared)g(ob)5 b(ject)21 b(named)f Fr(name)p
+Fu(,)j(as)d(if)h(the)f(command)h(w)m(ere)f(`)p Ft(enable)630
+5102 y(-f)30 b Fj(name)f(name)p Fu('.)630 5230 y(The)d(return)f(status)
+h(is)g(zero)h(unless)e(a)i Fr(name)k Fu(is)26 b(not)g(a)h(shell)f
+(builtin)g(or)g(there)g(is)g(an)g(error)630 5340 y(loading)31
+b(a)g(new)f(builtin)g(from)g(a)g(shared)g(ob)5 b(ject.)p
+eop end
+%%Page: 61 67
+TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(61)150 299 y Ft(help)870
+435 y(help)47 b([-dms])f([)p Fj(pattern)p Ft(])630 571
+y Fu(Displa)m(y)40 b(helpful)e(information)h(ab)s(out)g(builtin)f
+(commands.)66 b(If)38 b Fr(pattern)h Fu(is)g(sp)s(eci\014ed,)630
+681 y Ft(help)28 b Fu(giv)m(es)i(detailed)g(help)e(on)h(all)h(commands)
+e(matc)m(hing)i Fr(pattern)p Fu(,)g(otherwise)f(a)g(list)h(of)630
+790 y(the)h(builtins)e(is)i(prin)m(ted.)630 926 y(Options,)f(if)h
+(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630
+1089 y Ft(-d)384 b Fu(Displa)m(y)32 b(a)e(short)g(description)h(of)f
+(eac)m(h)i Fr(pattern)630 1251 y Ft(-m)384 b Fu(Displa)m(y)32
+b(the)e(description)g(of)h(eac)m(h)h Fr(pattern)e Fu(in)g(a)h
+(manpage-lik)m(e)h(format)630 1414 y Ft(-s)384 b Fu(Displa)m(y)32
+b(only)e(a)h(short)f(usage)h(synopsis)e(for)i(eac)m(h)g
+Fr(pattern)630 1576 y Fu(The)f(return)f(status)i(is)f(zero)h(unless)f
+(no)g(command)h(matc)m(hes)g Fr(pattern)p Fu(.)150 1739
+y Ft(let)870 1875 y(let)47 b Fj(expression)e Ft([)p Fj(expression)g
+Ft(...)o(])630 2011 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i
+(arithmetic)f(to)h(b)s(e)d(p)s(erformed)g(on)i(shell)g(v)-5
+b(ariables.)74 b(Eac)m(h)630 2120 y Fr(expression)31
+b Fu(is)g(ev)-5 b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)
+h(b)s(elo)m(w)f(in)f(Section)i(6.5)g([Shell)630 2230
+y(Arithmetic],)51 b(page)46 b(98.)87 b(If)45 b(the)g(last)h
+Fr(expression)g Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44
+b Fu(returns)g(1;)630 2340 y(otherwise)31 b(0)g(is)f(returned.)150
+2502 y Ft(local)870 2638 y(local)46 b([)p Fj(option)p
+Ft(])g Fj(name)p Ft([=)p Fj(value)p Ft(])e(...)630 2774
+y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m(t,)g(a)f(lo)s(cal)h(v)-5
+b(ariable)27 b(named)e Fr(name)31 b Fu(is)26 b(created,)i(and)d
+(assigned)h Fr(v)-5 b(alue)p Fu(.)630 2884 y(The)37 b
+Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f(the)h(options)g(accepted)g
+(b)m(y)g Ft(declare)p Fu(.)59 b Ft(local)36 b Fu(can)i(only)630
+2993 y(b)s(e)j(used)h(within)f(a)i(function;)48 b(it)42
+b(mak)m(es)h(the)f(v)-5 b(ariable)43 b Fr(name)48 b Fu(ha)m(v)m(e)43
+b(a)f(visible)h(scop)s(e)630 3103 y(restricted)h(to)f(that)h(function)e
+(and)g(its)i(c)m(hildren.)78 b(If)42 b Fr(name)48 b Fu(is)43
+b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f(shell)630 3212
+y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f(function)g(in)g(whic)m
+(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48 b(shell)34
+b(options)630 3322 y(c)m(hanged)e(using)e(the)i Ft(set)e
+Fu(builtin)h(inside)g(the)g(function)g(are)g(restored)h(to)g(their)f
+(original)630 3432 y(v)-5 b(alues)36 b(when)e(the)i(function)f
(returns.)54 b(The)35 b(restore)h(is)g(e\013ected)h(as)e(if)h(a)g
-(series)f(of)h Ft(set)630 1603 y Fu(commands)j(w)m(ere)g(executed)h(to)
+(series)f(of)h Ft(set)630 3541 y Fu(commands)j(w)m(ere)g(executed)h(to)
f(restore)h(the)f(v)-5 b(alues)39 b(that)h(w)m(ere)f(in)f(place)i(b)s
-(efore)f(the)630 1713 y(function.)j(The)30 b(return)g(status)h(is)g
+(efore)f(the)630 3651 y(function.)j(The)30 b(return)g(status)h(is)g
(zero)h(unless)e Ft(local)g Fu(is)h(used)f(outside)h(a)g(function,)g
-(an)630 1823 y(in)m(v)-5 b(alid)31 b Fr(name)k Fu(is)c(supplied,)e(or)i
+(an)630 3760 y(in)m(v)-5 b(alid)31 b Fr(name)k Fu(is)c(supplied,)e(or)i
Fr(name)k Fu(is)c(a)f(readonly)h(v)-5 b(ariable.)150
-1982 y Ft(logout)870 2116 y(logout)46 b([)p Fj(n)p Ft(])630
-2250 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i(status)g(of)f
-Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 2409 y
-Ft(mapfile)870 2544 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h
+3923 y Ft(logout)870 4059 y(logout)46 b([)p Fj(n)p Ft(])630
+4195 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i(status)g(of)f
+Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 4357 y
+Ft(mapfile)870 4493 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h
Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g Fj(count)p
-Ft(])1061 2653 y([-t])h([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
+Ft(])1061 4603 y([-t])h([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630
-2788 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
+4739 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p
-Fu(,)i(or)630 2897 y(from)28 b(\014le)h(descriptor)f
+Fu(,)i(or)630 4849 y(from)28 b(\014le)h(descriptor)f
Fr(fd)k Fu(if)c(the)h Ft(-u)f Fu(option)h(is)g(supplied.)39
b(The)28 b(v)-5 b(ariable)29 b Ft(MAPFILE)e Fu(is)i(the)630
-3007 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30
+4958 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30
b(if)g(supplied,)g(ha)m(v)m(e)h(the)g(follo)m(wing)h(meanings:)630
-3166 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f
+5121 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f
Fr(delim)g Fu(is)f(used)g(to)h(terminate)h(eac)m(h)g(input)d(line,)1110
-3275 y(rather)41 b(than)h(newline.)74 b(If)41 b Fr(delim)h
+5230 y(rather)41 b(than)h(newline.)74 b(If)41 b Fr(delim)h
Fu(is)g(the)f(empt)m(y)h(string,)j Ft(mapfile)40 b Fu(will)1110
-3385 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m
-(haracter.)630 3544 y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g
-Fr(coun)m(t)i Fu(lines.)41 b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h
-(lines)e(are)h(copied.)630 3703 y Ft(-O)384 b Fu(Begin)31
-b(assigning)g(to)g Fr(arra)m(y)39 b Fu(at)31 b(index)f
-Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f(is)g(0.)630
-3862 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j
-Fu(lines)e(read.)630 4021 y Ft(-t)384 b Fu(Remo)m(v)m(e)32
-b(a)f(trailing)g Fr(delim)g Fu(\(default)g(newline\))f(from)g(eac)m(h)i
-(line)f(read.)630 4180 y Ft(-u)384 b Fu(Read)31 b(lines)f(from)g
-(\014le)h(descriptor)f Fr(fd)j Fu(instead)e(of)f(the)h(standard)e
-(input.)630 4340 y Ft(-C)384 b Fu(Ev)-5 b(aluate)26 b
-Fr(callbac)m(k)33 b Fu(eac)m(h)26 b(time)g Fr(quan)m(tum)f
-Fu(lines)g(are)g(read.)39 b(The)25 b Ft(-c)f Fu(option)1110
-4449 y(sp)s(eci\014es)30 b Fr(quan)m(tum)p Fu(.)630 4608
-y Ft(-c)384 b Fu(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f
-(read)h(b)s(et)m(w)m(een)g(eac)m(h)g(call)h(to)f Fr(callbac)m(k)p
-Fu(.)630 4767 y(If)36 b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g
-Ft(-c)p Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60
-b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 4877 y(ev)-5
-b(aluated,)30 b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g
-(arra)m(y)g(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630
-4986 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i
-(as)e(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47
-b Fu(is)630 5096 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)
-g(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630
-5230 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g
+5340 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m
+(haracter.)p eop end
+%%Page: 62 68
+TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(62)630 299 y Ft(-n)384
+b Fu(Cop)m(y)30 b(at)h(most)g Fr(coun)m(t)i Fu(lines.)41
+b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h(lines)e(are)h(copied.)630
+446 y Ft(-O)384 b Fu(Begin)31 b(assigning)g(to)g Fr(arra)m(y)39
+b Fu(at)31 b(index)f Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f
+(is)g(0.)630 594 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g
+Fr(coun)m(t)j Fu(lines)e(read.)630 741 y Ft(-t)384 b
+Fu(Remo)m(v)m(e)32 b(a)f(trailing)g Fr(delim)g Fu(\(default)g
+(newline\))f(from)g(eac)m(h)i(line)f(read.)630 888 y
+Ft(-u)384 b Fu(Read)31 b(lines)f(from)g(\014le)h(descriptor)f
+Fr(fd)j Fu(instead)e(of)f(the)h(standard)e(input.)630
+1036 y Ft(-C)384 b Fu(Ev)-5 b(aluate)26 b Fr(callbac)m(k)33
+b Fu(eac)m(h)26 b(time)g Fr(quan)m(tum)f Fu(lines)g(are)g(read.)39
+b(The)25 b Ft(-c)f Fu(option)1110 1145 y(sp)s(eci\014es)30
+b Fr(quan)m(tum)p Fu(.)630 1293 y Ft(-c)384 b Fu(Sp)s(ecify)30
+b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f(read)h(b)s(et)m(w)m(een)g(eac)m
+(h)g(call)h(to)f Fr(callbac)m(k)p Fu(.)630 1440 y(If)36
+b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g Ft(-c)p
+Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60 b(When)36
+b Fr(callbac)m(k)44 b Fu(is)630 1550 y(ev)-5 b(aluated,)30
+b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g(arra)m(y)g
+(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630 1659 y(the)39
+b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i(as)e
+(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47 b
+Fu(is)630 1769 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)g
+(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630
+1897 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g
Ft(mapfile)c Fu(will)j(clear)g Fr(arra)m(y)34 b Fu(b)s(efore)24
-b(assigning)630 5340 y(to)31 b(it.)p eop end
-%%Page: 58 64
-TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(mapfile)41
+b(assigning)630 2007 y(to)31 b(it.)630 2135 y Ft(mapfile)41
b Fu(returns)g(successfully)i(unless)e(an)i(in)m(v)-5
b(alid)43 b(option)g(or)g(option)g(argumen)m(t)g(is)630
-408 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5
+2245 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5
b(alid)31 b(or)g(unassignable,)f(or)h Fr(arra)m(y)38
b Fu(is)31 b(not)f(an)h(indexed)e(arra)m(y)-8 b(.)150
-564 y Ft(printf)870 697 y(printf)46 b([-v)h Fj(var)p
-Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 830
+2392 y Ft(printf)870 2521 y(printf)46 b([-v)h Fj(var)p
+Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 2649
y Fu(W)-8 b(rite)27 b(the)g(formatted)f Fr(argumen)m(ts)k
Fu(to)d(the)f(standard)f(output)h(under)e(the)i(con)m(trol)i(of)e(the)
-630 939 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g
+630 2759 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g
(the)g(output)g(to)g(b)s(e)f(assigned)h(to)h(the)f(v)-5
-b(ariable)39 b Fr(v)-5 b(ar)630 1049 y Fu(rather)30 b(than)g(b)s(eing)g
-(prin)m(ted)g(to)h(the)g(standard)e(output.)630 1181
+b(ariable)39 b Fr(v)-5 b(ar)630 2869 y Fu(rather)30 b(than)g(b)s(eing)g
+(prin)m(ted)g(to)h(the)g(standard)e(output.)630 2997
y(The)36 b Fr(format)i Fu(is)f(a)f(c)m(haracter)i(string)e(whic)m(h)g
(con)m(tains)i(three)e(t)m(yp)s(es)g(of)h(ob)5 b(jects:)53
-b(plain)630 1291 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e
+b(plain)630 3107 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e
(copied)i(to)g(standard)f(output,)i(c)m(haracter)g(escap)s(e)e(se-)630
-1401 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to)
-g(the)g(standard)f(output,)i(and)f(format)630 1510 y(sp)s
+3216 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to)
+g(the)g(standard)f(output,)i(and)f(format)630 3326 y(sp)s
(eci\014cations,)j(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g(of)
h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)630
-1620 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e
+3435 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e
Fu(formats,)27 b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630
-1729 y(extensions:)630 1885 y Ft(\045b)384 b Fu(Causes)38
+3545 y(extensions:)630 3692 y Ft(\045b)384 b Fu(Causes)38
b Ft(printf)f Fu(to)j(expand)e(bac)m(kslash)h(escap)s(e)g(sequences)g
-(in)f(the)h(cor-)1110 1995 y(resp)s(onding)31 b Fr(argumen)m(t)j
+(in)f(the)h(cor-)1110 3802 y(resp)s(onding)31 b Fr(argumen)m(t)j
Fu(in)e(the)h(same)f(w)m(a)m(y)h(as)g Ft(echo)c(-e)j
-Fu(\(see)h(Section)g(4.2)1110 2104 y([Bash)e(Builtins],)g(page)g(51\).)
-630 2260 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e
+Fu(\(see)h(Section)g(4.2)1110 3912 y([Bash)e(Builtins],)g(page)g(55\).)
+630 4059 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e
Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j
-Fu(in)d(a)i(format)1110 2370 y(that)e(can)g(b)s(e)e(reused)h(as)h
-(shell)f(input.)630 2525 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110
-2635 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i
-(string)e(resulting)h(from)e(using)1110 2744 y Fr(datefm)m(t)45
-b Fu(as)d(a)g(format)g(string)g(for)g Ft(strftime)p Fu(\(3\).)74
-b(The)41 b(corresp)s(onding)1110 2854 y Fr(argumen)m(t)h
-Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the)g(n)m(um)m(b)s(er)f(of)
-h(seconds)g(since)1110 2964 y(the)24 b(ep)s(o)s(c)m(h.)38
-b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f(v)-5 b(alues)24
-b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25 b(represen)m(ts)1110
-3073 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g
-(time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.)1110
-3183 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m
+Fu(in)d(a)i(format)1110 4169 y(that)e(can)g(b)s(e)e(reused)h(as)h
+(shell)f(input.)630 4316 y Ft(\045Q)384 b Fu(lik)m(e)34
+b Ft(\045q)p Fu(,)f(but)f(applies)g(an)m(y)h(supplied)e(precision)i(to)
+h(the)e Fr(argumen)m(t)j Fu(b)s(efore)1110 4425 y(quoting)c(it.)630
+4573 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110 4682 y Fu(Causes)e
+Ft(printf)e Fu(to)j(output)f(the)g(date-time)i(string)e(resulting)h
+(from)e(using)1110 4792 y Fr(datefm)m(t)45 b Fu(as)d(a)g(format)g
+(string)g(for)g Ft(strftime)p Fu(\(3\).)74 b(The)41 b(corresp)s(onding)
+1110 4902 y Fr(argumen)m(t)h Fu(is)e(an)g(in)m(teger)i(represen)m(ting)
+e(the)g(n)m(um)m(b)s(er)f(of)h(seconds)g(since)1110 5011
+y(the)24 b(ep)s(o)s(c)m(h.)38 b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f
+(v)-5 b(alues)24 b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25
+b(represen)m(ts)1110 5121 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i
+(represen)m(ts)f(the)g(time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.)
+1110 5230 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m
(ersion)f(b)s(eha)m(v)m(es)g(as)g(if)f(-1)h(had)f(b)s(een)1110
-3292 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g
-Ft(printf)f Fu(b)s(eha)m(vior.)630 3448 y(The)d(\045b,)h(\045q,)h(and)e
-(\045T)g(directiv)m(es)j(all)e(use)g(the)g(\014eld)f(width)g(and)h
-(precision)g(argumen)m(ts)630 3558 y(from)f(the)g(format)h(sp)s
-(eci\014cation)g(and)e(write)i(that)f(man)m(y)h(b)m(ytes)f(from)g(\(or)
-h(use)e(that)i(wide)630 3667 y(a)42 b(\014eld)g(for\))g(the)h(expanded)
-e(argumen)m(t,)k(whic)m(h)d(usually)g(con)m(tains)h(more)f(c)m
-(haracters)630 3777 y(than)30 b(the)h(original.)630 3910
-y(Argumen)m(ts)d(to)h(non-string)e(format)i(sp)s(eci\014ers)e(are)h
-(treated)h(as)g(C)e(language)j(constan)m(ts,)630 4019
-y(except)22 b(that)g(a)g(leading)g(plus)e(or)h(min)m(us)f(sign)i(is)f
-(allo)m(w)m(ed,)k(and)c(if)g(the)g(leading)h(c)m(haracter)h(is)630
-4129 y(a)i(single)g(or)f(double)h(quote,)h(the)f(v)-5
-b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5 b(alue)25 b(of)f(the)h(follo)m
-(wing)h(c)m(haracter.)630 4261 y(The)31 b Fr(format)i
-Fu(is)f(reused)e(as)i(necessary)f(to)i(consume)e(all)h(of)f(the)h
-Fr(argumen)m(ts)p Fu(.)44 b(If)30 b(the)i Fr(for-)630
-4371 y(mat)c Fu(requires)e(more)g Fr(argumen)m(ts)k Fu(than)25
-b(are)i(supplied,)e(the)h(extra)h(format)f(sp)s(eci\014cations)630
-4481 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g(v)-5 b(alue)29
-b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b)s(een)g
-(supplied.)38 b(The)630 4590 y(return)29 b(v)-5 b(alue)31
-b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150
-4746 y Ft(read)870 4879 y(read)47 b([-ers])f([-a)h Fj(aname)p
+5340 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g
+Ft(printf)f Fu(b)s(eha)m(vior.)p eop end
+%%Page: 63 69
+TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(63)630 299 y(The)26
+b(\045b,)h(\045q,)h(and)e(\045T)g(directiv)m(es)j(all)e(use)g(the)g
+(\014eld)f(width)g(and)h(precision)g(argumen)m(ts)630
+408 y(from)f(the)g(format)h(sp)s(eci\014cation)g(and)e(write)i(that)f
+(man)m(y)h(b)m(ytes)f(from)g(\(or)h(use)e(that)i(wide)630
+518 y(a)42 b(\014eld)g(for\))g(the)h(expanded)e(argumen)m(t,)k(whic)m
+(h)d(usually)g(con)m(tains)h(more)f(c)m(haracters)630
+628 y(than)30 b(the)h(original.)630 760 y(Argumen)m(ts)d(to)h
+(non-string)e(format)i(sp)s(eci\014ers)e(are)h(treated)h(as)g(C)e
+(language)j(constan)m(ts,)630 870 y(except)22 b(that)g(a)g(leading)g
+(plus)e(or)h(min)m(us)f(sign)i(is)f(allo)m(w)m(ed,)k(and)c(if)g(the)g
+(leading)h(c)m(haracter)h(is)630 979 y(a)i(single)g(or)f(double)h
+(quote,)h(the)f(v)-5 b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5
+b(alue)25 b(of)f(the)h(follo)m(wing)h(c)m(haracter.)630
+1112 y(The)31 b Fr(format)i Fu(is)f(reused)e(as)i(necessary)f(to)i
+(consume)e(all)h(of)f(the)h Fr(argumen)m(ts)p Fu(.)44
+b(If)30 b(the)i Fr(for-)630 1222 y(mat)c Fu(requires)e(more)g
+Fr(argumen)m(ts)k Fu(than)25 b(are)i(supplied,)e(the)h(extra)h(format)f
+(sp)s(eci\014cations)630 1331 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g
+(v)-5 b(alue)29 b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b)
+s(een)g(supplied.)38 b(The)630 1441 y(return)29 b(v)-5
+b(alue)31 b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150
+1597 y Ft(read)870 1729 y(read)47 b([-ers])f([-a)h Fj(aname)p
Ft(])f([-d)h Fj(delim)p Ft(])f([-i)h Fj(text)p Ft(])f([-n)h
-Fj(nchars)p Ft(])1061 4988 y([-N)g Fj(nchars)p Ft(])f([-p)h
+Fj(nchars)p Ft(])1061 1839 y([-N)g Fj(nchars)p Ft(])f([-p)h
Fj(prompt)p Ft(])e([-t)i Fj(timeout)p Ft(])f([-u)h Fj(fd)p
-Ft(])g([)p Fj(name)f Ft(...)o(])630 5121 y Fu(One)38
+Ft(])g([)p Fj(name)f Ft(...)o(])630 1972 y Fu(One)38
b(line)g(is)g(read)g(from)g(the)g(standard)f(input,)j(or)e(from)f(the)i
-(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 5230 y(plied)34
+(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 2081 y(plied)34
b(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-u)g Fu(option,)i(split)f(in)m
(to)g(w)m(ords)f(as)g(describ)s(ed)g(ab)s(o)m(v)m(e)h(in)630
-5340 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(32,)j
-(and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)p
-eop end
-%%Page: 59 65
-TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y(\014rst)32
-b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the)g(second)g
-Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32 b(there)h(are)g(more)630
-408 y(w)m(ords)39 b(than)g(names,)j(the)e(remaining)f(w)m(ords)g(and)g
-(their)h(in)m(terv)m(ening)g(delimiters)h(are)630 518
-y(assigned)29 b(to)h(the)g(last)g Fr(name)p Fu(.)40 b(If)29
-b(there)g(are)h(few)m(er)f(w)m(ords)g(read)g(from)g(the)g(input)g
-(stream)630 628 y(than)35 b(names,)i(the)e(remaining)h(names)f(are)h
-(assigned)f(empt)m(y)h(v)-5 b(alues.)56 b(The)34 b(c)m(haracters)630
-737 y(in)e(the)h(v)-5 b(alue)33 b(of)g(the)g Ft(IFS)f
-Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f(the)g(line)g(in)m(to)g
-(w)m(ords)g(using)f(the)630 847 y(same)d(rules)f(the)g(shell)h(uses)f
-(for)g(expansion)g(\(describ)s(ed)g(ab)s(o)m(v)m(e)i(in)e(Section)h
-(3.5.7)h([W)-8 b(ord)630 956 y(Splitting],)38 b(page)f(32\).)60
-b(The)35 b(bac)m(kslash)i(c)m(haracter)h(`)p Ft(\\)p
-Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m(e)h(an)m(y)630
-1066 y(sp)s(ecial)31 b(meaning)g(for)f(the)g(next)h(c)m(haracter)h
-(read)e(and)g(for)g(line)h(con)m(tin)m(uation.)630 1196
-y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h
-(meanings:)630 1348 y Ft(-a)e Fj(aname)114 b Fu(The)34
+2191 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(35,)j
+(and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)630
+2300 y(\014rst)32 b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the)
+g(second)g Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32
+b(there)h(are)g(more)630 2410 y(w)m(ords)39 b(than)g(names,)j(the)e
+(remaining)f(w)m(ords)g(and)g(their)h(in)m(terv)m(ening)g(delimiters)h
+(are)630 2519 y(assigned)29 b(to)h(the)g(last)g Fr(name)p
+Fu(.)40 b(If)29 b(there)g(are)h(few)m(er)f(w)m(ords)g(read)g(from)g
+(the)g(input)g(stream)630 2629 y(than)35 b(names,)i(the)e(remaining)h
+(names)f(are)h(assigned)f(empt)m(y)h(v)-5 b(alues.)56
+b(The)34 b(c)m(haracters)630 2739 y(in)e(the)h(v)-5 b(alue)33
+b(of)g(the)g Ft(IFS)f Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f
+(the)g(line)g(in)m(to)g(w)m(ords)g(using)f(the)630 2848
+y(same)d(rules)f(the)g(shell)h(uses)f(for)g(expansion)g(\(describ)s(ed)
+g(ab)s(o)m(v)m(e)i(in)e(Section)h(3.5.7)h([W)-8 b(ord)630
+2958 y(Splitting],)38 b(page)f(35\).)60 b(The)35 b(bac)m(kslash)i(c)m
+(haracter)h(`)p Ft(\\)p Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m
+(e)h(an)m(y)630 3067 y(sp)s(ecial)31 b(meaning)g(for)f(the)g(next)h(c)m
+(haracter)h(read)e(and)g(for)g(line)h(con)m(tin)m(uation.)630
+3200 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h
+(meanings:)630 3356 y Ft(-a)e Fj(aname)114 b Fu(The)34
b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m(tial)h(indices)e(of)g(the)g
-(arra)m(y)h(v)-5 b(ariable)1110 1457 y Fr(aname)p Fu(,)29
+(arra)m(y)h(v)-5 b(ariable)1110 3465 y Fr(aname)p Fu(,)29
b(starting)h(at)f(0.)40 b(All)29 b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i
-(from)d Fr(aname)34 b Fu(b)s(efore)1110 1567 y(the)d(assignmen)m(t.)41
+(from)d Fr(aname)34 b Fu(b)s(efore)1110 3575 y(the)d(assignmen)m(t.)41
b(Other)30 b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630
-1718 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f
+3731 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f
Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110
-1828 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h
+3840 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h
Fu(is)g(the)h(empt)m(y)f(string,)g Ft(read)f Fu(will)h(termi-)1110
-1937 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.)
-630 2089 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)
-f(Line)h(Editing],)50 b(page)45 b(111\))i(is)1110 2198
+3950 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.)
+630 4106 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)
+f(Line)h(Editing],)50 b(page)45 b(117\))i(is)1110 4215
y(used)37 b(to)i(obtain)g(the)f(line.)65 b(Readline)39
b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110
-2308 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k
-(editing)d(settings,)j(but)c(uses)1110 2418 y(Readline's)31
-b(default)g(\014lename)f(completion.)630 2569 y Ft(-i)g
+4325 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k
+(editing)d(settings,)j(but)c(uses)1110 4434 y(Readline's)31
+b(default)g(\014lename)f(completion.)630 4590 y Ft(-i)g
Fj(text)162 b Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g
(the)g(line,)j Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110
-2679 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630
-2830 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j
+4700 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630
+4855 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j
(reading)f Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m
-(aiting)1110 2939 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f
-(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 3049
+(aiting)1110 4965 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f
+(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 5075
y Fr(nc)m(hars)d Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g
-(delimiter.)630 3200 y Ft(-N)g Fj(nchars)66 b Ft(read)39
+(delimiter.)630 5230 y Ft(-N)g Fj(nchars)66 b Ft(read)39
b Fu(returns)f(after)j(reading)e(exactly)j Fr(nc)m(hars)h
-Fu(c)m(haracters)f(rather)d(than)1110 3310 y(w)m(aiting)32
+Fu(c)m(haracters)f(rather)d(than)1110 5340 y(w)m(aiting)32
b(for)f(a)g(complete)i(line)e(of)g(input,)g(unless)f(EOF)h(is)g(encoun)
-m(tered)g(or)1110 3420 y Ft(read)f Fu(times)i(out.)43
-b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g(in)f(the)g(input)g
-(are)1110 3529 y(not)g(treated)h(sp)s(ecially)f(and)f(do)h(not)g(cause)
-g Ft(read)e Fu(to)j(return)d(un)m(til)i Fr(nc)m(hars)1110
-3639 y Fu(c)m(haracters)26 b(are)f(read.)38 b(The)24
-b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e
-Ft(IFS)p Fu(;)1110 3748 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5
+m(tered)g(or)p eop end
+%%Page: 64 70
+TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(64)1110 299 y
+Ft(read)30 b Fu(times)i(out.)43 b(Delimiter)33 b(c)m(haracters)f
+(encoun)m(tered)g(in)f(the)g(input)g(are)1110 408 y(not)g(treated)h(sp)
+s(ecially)f(and)f(do)h(not)g(cause)g Ft(read)e Fu(to)j(return)d(un)m
+(til)i Fr(nc)m(hars)1110 518 y Fu(c)m(haracters)26 b(are)f(read.)38
+b(The)24 b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e
+Ft(IFS)p Fu(;)1110 628 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5
b(ariable)23 b(is)f(assigned)g(exactly)i(the)e(c)m(haracters)i(read)
-1110 3858 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g
-(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 4009 y
-Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p
-Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to)
-1110 4119 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m
-(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 4228 y(from)30
-b(a)h(terminal.)630 4380 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f
+1110 737 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g
+(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 894 y Ft(-p)f
+Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p Fu(,)g(without)e(a)h
+(trailing)h(newline,)h(b)s(efore)d(attempting)i(to)1110
+1004 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m(y)m
+(ed)h(only)f(if)g(input)g(is)g(coming)1110 1114 y(from)30
+b(a)h(terminal.)630 1271 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f
(giv)m(en,)k(bac)m(kslash)d(do)s(es)f(not)h(act)h(as)f(an)f(escap)s(e)h
-(c)m(haracter.)1110 4489 y(The)30 b(bac)m(kslash)i(is)f(considered)g
+(c)m(haracter.)1110 1380 y(The)30 b(bac)m(kslash)i(is)f(considered)g
(to)h(b)s(e)e(part)h(of)g(the)g(line.)43 b(In)30 b(particular,)i(a)1110
-4599 y(bac)m(kslash-newline)26 b(pair)e(ma)m(y)h(not)g(then)g(b)s(e)f
-(used)g(as)h(a)g(line)g(con)m(tin)m(uation.)630 4750
+1490 y(bac)m(kslash-newline)26 b(pair)e(ma)m(y)h(not)g(then)g(b)s(e)f
+(used)g(as)h(a)g(line)g(con)m(tin)m(uation.)630 1647
y Ft(-s)384 b Fu(Silen)m(t)28 b(mo)s(de.)40 b(If)27 b(input)f(is)i
(coming)g(from)f(a)h(terminal,)h(c)m(haracters)g(are)f(not)1110
-4860 y(ec)m(ho)s(ed.)630 5011 y Ft(-t)i Fj(timeout)1110
-5121 y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f
-(failure)i(if)g(a)g(complete)h(line)f(of)1110 5230 y(input)26
-b(\(or)h(a)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h
-(is)f(not)g(read)g(within)f Fr(time-)1110 5340 y(out)37
-b Fu(seconds.)53 b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n)
-m(um)m(b)s(er)d(with)h(a)h(fractional)p eop end
-%%Page: 60 66
-TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(60)1110 299 y(p)s(ortion)29
-b(follo)m(wing)h(the)f(decimal)h(p)s(oin)m(t.)40 b(This)29
-b(option)g(is)g(only)g(e\013ectiv)m(e)j(if)1110 408 y
-Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h(terminal,)i(pip)s(e,)e
-(or)g(other)f(sp)s(ecial)i(\014le;)1110 518 y(it)31 b(has)g(no)g
-(e\013ect)h(when)e(reading)h(from)g(regular)g(\014les.)42
-b(If)30 b Ft(read)g Fu(times)h(out,)1110 628 y Ft(read)d
-Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in)m(to)h(the)e(sp)s
-(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p Fu(.)1110
-737 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e Fu(returns)f
-(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110
-847 y(an)m(y)c(data.)44 b(The)31 b(exit)h(status)f(is)h(0)f(if)h(input)
-e(is)h(a)m(v)-5 b(ailable)34 b(on)d(the)h(sp)s(eci\014ed)1110
-956 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46
-b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 1066
-y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 1225
-y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h
-Fr(fd)p Fu(.)630 1385 y(If)h(no)g Fr(name)5 b Fu(s)33
-b(are)f(supplied,)g(the)h(line)g(read,)g(without)f(the)h(ending)f
-(delimiter)h(but)e(oth-)630 1494 y(erwise)36 b(unmo)s(di\014ed,)e(is)i
-(assigned)f(to)h(the)g(v)-5 b(ariable)36 b Ft(REPLY)p
-Fu(.)55 b(The)34 b(exit)j(status)e(is)h(zero,)630 1604
-y(unless)i(end-of-\014le)h(is)f(encoun)m(tered,)j Ft(read)d
-Fu(times)h(out)f(\(in)h(whic)m(h)f(case)h(the)g(status)g(is)630
-1714 y(greater)31 b(than)f(128\),)i(a)e(v)-5 b(ariable)30
+1757 y(ec)m(ho)s(ed.)630 1914 y Ft(-t)i Fj(timeout)1110
+2024 y Fu(Cause)23 b Ft(read)f Fu(to)i(time)f(out)h(and)e(return)g
+(failure)h(if)g(a)h(complete)g(line)g(of)f(input)1110
+2133 y(\(or)h(a)f(sp)s(eci\014ed)g(n)m(um)m(b)s(er)f(of)i(c)m
+(haracters\))h(is)e(not)h(read)f(within)g Fr(timeout)j
+Fu(sec-)1110 2243 y(onds.)43 b Fr(timeout)34 b Fu(ma)m(y)e(b)s(e)e(a)i
+(decimal)g(n)m(um)m(b)s(er)e(with)h(a)h(fractional)g(p)s(ortion)1110
+2352 y(follo)m(wing)39 b(the)f(decimal)g(p)s(oin)m(t.)63
+b(This)37 b(option)h(is)g(only)f(e\013ectiv)m(e)k(if)c
+Ft(read)1110 2462 y Fu(is)c(reading)h(input)e(from)h(a)h(terminal,)h
+(pip)s(e,)e(or)h(other)f(sp)s(ecial)h(\014le;)h(it)f(has)1110
+2572 y(no)f(e\013ect)i(when)d(reading)i(from)f(regular)g(\014les.)50
+b(If)33 b Ft(read)f Fu(times)i(out,)g Ft(read)1110 2681
+y Fu(sa)m(v)m(es)41 b(an)m(y)f(partial)h(input)e(read)g(in)m(to)i(the)f
+(sp)s(eci\014ed)f(v)-5 b(ariable)40 b Fr(name)p Fu(.)69
+b(If)1110 2791 y Fr(timeout)31 b Fu(is)c(0,)i Ft(read)d
+Fu(returns)h(immediately)-8 b(,)30 b(without)d(trying)h(to)g(read)g(an)
+m(y)1110 2900 y(data.)49 b(The)33 b(exit)h(status)f(is)g(0)g(if)g
+(input)f(is)h(a)m(v)-5 b(ailable)36 b(on)c(the)i(sp)s(eci\014ed)e
+(\014le)1110 3010 y(descriptor,)37 b(or)e(the)h(read)f(will)h(return)e
+(EOF,)h(non-zero)h(otherwise.)56 b(The)1110 3120 y(exit)31
+b(status)g(is)f(greater)i(than)e(128)i(if)e(the)h(timeout)g(is)f
+(exceeded.)630 3277 y Ft(-u)g Fj(fd)258 b Fu(Read)31
+b(input)e(from)h(\014le)g(descriptor)h Fr(fd)p Fu(.)630
+3434 y(If)h(no)g Fr(name)5 b Fu(s)33 b(are)f(supplied,)g(the)h(line)g
+(read,)g(without)f(the)h(ending)f(delimiter)h(but)e(oth-)630
+3544 y(erwise)36 b(unmo)s(di\014ed,)e(is)i(assigned)f(to)h(the)g(v)-5
+b(ariable)36 b Ft(REPLY)p Fu(.)55 b(The)34 b(exit)j(status)e(is)h
+(zero,)630 3653 y(unless)i(end-of-\014le)h(is)f(encoun)m(tered,)j
+Ft(read)d Fu(times)h(out)f(\(in)h(whic)m(h)f(case)h(the)g(status)g(is)
+630 3763 y(greater)31 b(than)f(128\),)i(a)e(v)-5 b(ariable)30
b(assignmen)m(t)h(error)f(\(suc)m(h)f(as)i(assigning)f(to)h(a)f
-(readonly)630 1823 y(v)-5 b(ariable\))30 b(o)s(ccurs,)f(or)f(an)h(in)m
+(readonly)630 3872 y(v)-5 b(ariable\))30 b(o)s(ccurs,)f(or)f(an)h(in)m
(v)-5 b(alid)29 b(\014le)g(descriptor)f(is)h(supplied)e(as)i(the)g
-(argumen)m(t)g(to)g Ft(-u)p Fu(.)150 1983 y Ft(readarray)870
-2092 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p
+(argumen)m(t)g(to)g Ft(-u)p Fu(.)150 4030 y Ft(readarray)870
+4139 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p
Ft(])f([-O)h Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])1061
-2202 y([-t])g([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
+4249 y([-t])g([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630
-2336 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
+4382 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p
-Fu(,)i(or)630 2446 y(from)30 b(\014le)g(descriptor)h
+Fu(,)i(or)630 4492 y(from)30 b(\014le)g(descriptor)h
Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630
-2580 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 2740
-y Ft(source)870 2874 y(source)46 b Fj(filename)630 3009
+4625 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 4783
+y Ft(source)870 4916 y(source)46 b Fj(filename)630 5049
y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g
-([Bourne)g(Shell)f(Builtins],)h(page)g(44\).)150 3168
-y Ft(type)870 3303 y(type)47 b([-afptP])e([)p Fj(name)i
-Ft(...)o(])630 3437 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p
-Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if)
-g(used)f(as)i(a)f(command)630 3547 y(name.)630 3681 y(If)g(the)g
-Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h(single)g
-(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p
-Fu(',)630 3791 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p
-Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h
-Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630
-3900 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g
-(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h
-Fr(name)40 b Fu(is)35 b(not)630 4010 y(found,)29 b(then)h(nothing)h(is)
-f(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630
-4144 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h
-Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g
-(that)h(w)m(ould)630 4254 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g
-Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630
-4389 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g
+([Bourne)g(Shell)f(Builtins],)h(page)g(48\).)150 5207
+y Ft(type)870 5340 y(type)47 b([-afptP])e([)p Fj(name)i
+Ft(...)o(])p eop end
+%%Page: 65 71
+TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y(F)-8
+b(or)42 b(eac)m(h)g Fr(name)p Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)
+g(b)s(e)g(in)m(terpreted)g(if)g(used)f(as)i(a)f(command)630
+408 y(name.)630 543 y(If)g(the)g Ft(-t)g Fu(option)h(is)f(used,)j
+Ft(type)c Fu(prin)m(ts)h(a)h(single)g(w)m(ord)f(whic)m(h)g(is)g(one)h
+(of)g(`)p Ft(alias)p Fu(',)630 653 y(`)p Ft(function)p
+Fu(',)32 b(`)p Ft(builtin)p Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p
+Ft(keyword)p Fu(',)f(if)h Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e
+(function,)630 762 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h
+(reserv)m(ed)g(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55
+b(If)34 b(the)h Fr(name)40 b Fu(is)35 b(not)630 872 y(found,)29
+b(then)h(nothing)h(is)f(prin)m(ted,)g(and)g Ft(type)f
+Fu(returns)g(a)i(failure)g(status.)630 1007 y(If)25 b(the)g
+Ft(-p)g Fu(option)h(is)f(used,)h Ft(type)e Fu(either)h(returns)g(the)g
+(name)g(of)h(the)f(disk)g(\014le)g(that)h(w)m(ould)630
+1116 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g Ft(-t)g
+Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630
+1251 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g
(eac)m(h)g Fr(name)p Fu(,)g(ev)m(en)g(if)g Ft(-t)f Fu(w)m(ould)g(not)h
-(return)630 4498 y(`)p Ft(file)p Fu('.)630 4633 y(If)f(a)g(command)g
+(return)630 1360 y(`)p Ft(file)p Fu('.)630 1495 y(If)f(a)g(command)g
(is)g(hashed,)f Ft(-p)h Fu(and)f Ft(-P)g Fu(prin)m(t)h(the)g(hashed)f
-(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 4742
+(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 1605
y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g
-Ft($PATH)p Fu(.)630 4877 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g
+Ft($PATH)p Fu(.)630 1739 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g
(used,)h Ft(type)e Fu(returns)f(all)j(of)f(the)g(places)h(that)f(con)m
-(tain)i(an)d(executable)630 4986 y(named)32 b Fr(\014le)p
+(tain)i(an)d(executable)630 1849 y(named)32 b Fr(\014le)p
Fu(.)49 b(This)32 b(includes)h(aliases)h(and)e(functions,)i(if)f(and)f
-(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 5096 y(not)d(also)g
-(used.)630 5230 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e
+(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 1958 y(not)d(also)g
+(used.)630 2093 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e
Ft(type)g Fu(do)s(es)h(not)h(attempt)g(to)g(\014nd)d(shell)j
-(functions,)f(as)g(with)630 5340 y(the)h Ft(command)d
-Fu(builtin.)p eop end
-%%Page: 61 67
-TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(61)630 299 y(The)31
-b(return)f(status)h(is)g(zero)h(if)f(all)h(of)f(the)h
-Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h(not)630
-408 y(found.)150 566 y Ft(typeset)870 700 y(typeset)46
-b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p Ft([=)p Fj(value)p
-Ft(])d(...)o(])630 834 y Fu(The)31 b Ft(typeset)e Fu(command)i(is)g
-(supplied)f(for)h(compatibilit)m(y)i(with)e(the)g(Korn)f(shell.)44
-b(It)31 b(is)630 943 y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f
-Fu(builtin)h(command.)150 1101 y Ft(ulimit)870 1235 y(ulimit)46
-b([-HS])g(-a)870 1344 y(ulimit)g([-HS])g([-bcdefiklmnpqrstuvxPRT])c([)p
-Fj(limit)p Ft(])630 1478 y(ulimit)25 b Fu(pro)m(vides)h(con)m(trol)i(o)
+(functions,)f(as)g(with)630 2203 y(the)h Ft(command)d
+Fu(builtin.)630 2337 y(The)j(return)e(status)j(is)f(zero)h(if)f(all)g
+(of)h(the)f Fr(name)5 b Fu(s)31 b(are)g(found,)f(non-zero)i(if)f(an)m
+(y)g(are)h(not)630 2447 y(found.)150 2607 y Ft(typeset)870
+2741 y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p
+Ft([=)p Fj(value)p Ft(])d(...)o(])630 2876 y Fu(The)31
+b Ft(typeset)e Fu(command)i(is)g(supplied)f(for)h(compatibilit)m(y)i
+(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 2985
+y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f Fu(builtin)h(command.)150
+3145 y Ft(ulimit)870 3280 y(ulimit)46 b([-HS])g(-a)870
+3389 y(ulimit)g([-HS])g([-bcdefiklmnpqrstuvxPRT])c([)p
+Fj(limit)p Ft(])630 3524 y(ulimit)25 b Fu(pro)m(vides)h(con)m(trol)i(o)
m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 b(to)e(pro)s(cesses)
-f(started)h(b)m(y)g(the)630 1588 y(shell,)i(on)f(systems)g(that)h(allo)
+f(started)h(b)m(y)g(the)630 3634 y(shell,)i(on)f(systems)g(that)h(allo)
m(w)h(suc)m(h)e(con)m(trol.)41 b(If)28 b(an)g(option)h(is)f(giv)m(en,)i
-(it)e(is)h(in)m(terpreted)630 1697 y(as)i(follo)m(ws:)630
-1855 y Ft(-S)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit)
-g(asso)s(ciated)h(with)e(a)h(resource.)630 2013 y Ft(-H)384
+(it)e(is)h(in)m(terpreted)630 3743 y(as)i(follo)m(ws:)630
+3903 y Ft(-S)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit)
+g(asso)s(ciated)h(with)e(a)h(resource.)630 4062 y Ft(-H)384
b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(hard)g(limit)h(asso)s(ciated)h
-(with)e(a)h(resource.)630 2171 y Ft(-a)384 b Fu(All)31
+(with)e(a)h(resource.)630 4222 y Ft(-a)384 b Fu(All)31
b(curren)m(t)f(limits)h(are)g(rep)s(orted;)f(no)g(limits)h(are)g(set.)
-630 2328 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i
-(bu\013er)e(size.)630 2486 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)
-h(of)g(core)g(\014les)f(created.)630 2644 y Ft(-d)384
+630 4382 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i
+(bu\013er)e(size.)630 4542 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)
+h(of)g(core)g(\014les)f(created.)630 4701 y Ft(-d)384
b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h
-(segmen)m(t.)630 2802 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m
+(segmen)m(t.)630 4861 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m
(heduling)h(priorit)m(y)f(\()p Ft(")p Fu(nice)p Ft(")p
-Fu(\).)630 2960 y Ft(-f)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g
+Fu(\).)630 5021 y Ft(-f)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g
(\014les)f(written)h(b)m(y)f(the)g(shell)h(and)f(its)h(c)m(hildren.)630
-3118 y Ft(-i)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s
-(ending)e(signals.)630 3275 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m
-(um)m(b)s(er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)630
-3433 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s
-(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 3591
-y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g
-(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 3701
-y(limit\).)630 3858 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s
-(er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)1110
-3968 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).)
-630 4126 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630
-4284 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m
-(ytes)g(in)f Fm(posix)f Fu(message)j(queues.)630 4441
+5180 y Ft(-i)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s
+(ending)e(signals.)630 5340 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m
+(um)m(b)s(er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)p
+eop end
+%%Page: 66 72
+TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(-l)384
+b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m
+(ed)i(in)m(to)f(memory)-8 b(.)630 467 y Ft(-m)384 b Fu(The)36
+b(maxim)m(um)g(residen)m(t)h(set)g(size)g(\(man)m(y)g(systems)f(do)h
+(not)f(honor)g(this)1110 576 y(limit\).)630 744 y Ft(-n)384
+b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s(er)e(of)i(op)s(en)f(\014le)h
+(descriptors)g(\(most)g(systems)g(do)1110 854 y(not)31
+b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).)630
+1022 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630
+1190 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m
+(ytes)g(in)f Fm(posix)f Fu(message)j(queues.)630 1358
y Ft(-r)384 b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f
-(priorit)m(y)-8 b(.)630 4599 y Ft(-s)384 b Fu(The)30
-b(maxim)m(um)g(stac)m(k)i(size.)630 4757 y Ft(-t)384
+(priorit)m(y)-8 b(.)630 1526 y Ft(-s)384 b Fu(The)30
+b(maxim)m(um)g(stac)m(k)i(size.)630 1694 y Ft(-t)384
b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g(time)h(in)f(seconds.)
-630 4915 y Ft(-u)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
+630 1862 y Ft(-u)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
(pro)s(cesses)f(a)m(v)-5 b(ailable)33 b(to)e(a)f(single)i(user.)630
-5073 y Ft(-v)384 b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f
+2030 y Ft(-v)384 b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f
(memory)g(a)m(v)-5 b(ailable)44 b(to)e(the)g(shell,)1110
-5182 y(and,)30 b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630
-5340 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
-(\014le)f(lo)s(c)m(ks.)p eop end
-%%Page: 62 68
-TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(62)630 299 y Ft(-P)384
-b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630
-478 y Ft(-R)384 b Fu(The)27 b(maxim)m(um)h(time)h(a)f(real-time)i(pro)s
-(cess)d(can)i(run)d(b)s(efore)i(blo)s(c)m(king,)h(in)1110
-587 y(microseconds.)630 766 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m
-(um)m(b)s(er)f(of)i(threads.)630 945 y(If)36 b Fr(limit)k
-Fu(is)c(giv)m(en,)k(and)c(the)h Ft(-a)f Fu(option)h(is)f(not)h(used,)h
-Fr(limit)h Fu(is)e(the)g(new)f(v)-5 b(alue)37 b(of)g(the)630
-1055 y(sp)s(eci\014ed)c(resource.)51 b(The)34 b(sp)s(ecial)g
-Fr(limit)j Fu(v)-5 b(alues)34 b Ft(hard)p Fu(,)g Ft(soft)p
-Fu(,)g(and)f Ft(unlimited)e Fu(stand)630 1164 y(for)h(the)g(curren)m(t)
-g(hard)f(limit,)i(the)g(curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)
-h(resp)s(ectiv)m(ely)-8 b(.)48 b(A)630 1274 y(hard)24
-b(limit)i(cannot)g(b)s(e)e(increased)h(b)m(y)g(a)h(non-ro)s(ot)f(user)f
-(once)i(it)g(is)f(set;)j(a)d(soft)g(limit)h(ma)m(y)630
-1384 y(b)s(e)37 b(increased)h(up)e(to)j(the)f(v)-5 b(alue)38
-b(of)f(the)h(hard)f(limit.)63 b(Otherwise,)39 b(the)f(curren)m(t)f(v)-5
-b(alue)630 1493 y(of)39 b(the)g(soft)h(limit)g(for)f(the)g(sp)s
-(eci\014ed)f(resource)h(is)g(prin)m(ted,)i(unless)e(the)g
-Ft(-H)f Fu(option)i(is)630 1603 y(supplied.)47 b(When)33
-b(more)g(than)g(one)g(resource)g(is)g(sp)s(eci\014ed,)g(the)g(limit)h
-(name)f(and)f(unit,)630 1712 y(if)27 b(appropriate,)h(are)f(prin)m(ted)
-g(b)s(efore)g(the)g(v)-5 b(alue.)40 b(When)27 b(setting)h(new)e
-(limits,)j(if)e(neither)630 1822 y Ft(-H)38 b Fu(nor)g
-Ft(-S)g Fu(is)h(supplied,)h(b)s(oth)e(the)h(hard)f(and)g(soft)h(limits)
-g(are)g(set.)67 b(If)38 b(no)h(option)g(is)630 1932 y(giv)m(en,)c(then)
-f Ft(-f)e Fu(is)i(assumed.)49 b(V)-8 b(alues)35 b(are)e(in)h(1024-b)m
-(yte)i(incremen)m(ts,)f(except)f(for)f Ft(-t)p Fu(,)630
-2041 y(whic)m(h)e(is)g(in)g(seconds;)h Ft(-R)p Fu(,)g(whic)m(h)f(is)g
-(in)g(microseconds;)h Ft(-p)p Fu(,)g(whic)m(h)f(is)g(in)g(units)g(of)g
-(512-)630 2151 y(b)m(yte)k(blo)s(c)m(ks;)j Ft(-P)p Fu(,)e
-Ft(-T)p Fu(,)f Ft(-b)p Fu(,)h Ft(-k)p Fu(,)f Ft(-n)g
-Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)g(are)g(unscaled)g(v)-5
-b(alues;)37 b(and,)f(when)630 2260 y(in)g Fm(posix)f
-Fu(Mo)s(de)h(\(see)g(Section)h(6.11)g([Bash)g(POSIX)d(Mo)s(de],)k(page)
-f(101\),)i Ft(-c)c Fu(and)g Ft(-f)p Fu(,)630 2370 y(whic)m(h)30
-b(are)h(in)f(512-b)m(yte)j(incremen)m(ts.)630 2514 y(The)h(return)g
-(status)h(is)f(zero)i(unless)e(an)g(in)m(v)-5 b(alid)36
-b(option)f(or)f(argumen)m(t)i(is)e(supplied,)h(or)630
-2624 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f(limit.)
-150 2803 y Ft(unalias)870 2947 y(unalias)46 b([-a])g([)p
-Fj(name)h Ft(...)g(])630 3091 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f
+2140 y(and,)30 b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630
+2308 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
+(\014le)f(lo)s(c)m(ks.)630 2476 y Ft(-P)384 b Fu(The)30
+b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630
+2643 y Ft(-R)384 b Fu(The)27 b(maxim)m(um)h(time)h(a)f(real-time)i(pro)
+s(cess)d(can)i(run)d(b)s(efore)i(blo)s(c)m(king,)h(in)1110
+2753 y(microseconds.)630 2921 y Ft(-T)384 b Fu(The)30
+b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(threads.)630 3089
+y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h
+Ft(-a)f Fu(option)h(is)f(not)h(used,)h Fr(limit)h Fu(is)e(the)g(new)f
+(v)-5 b(alue)37 b(of)g(the)630 3199 y(sp)s(eci\014ed)c(resource.)51
+b(The)34 b(sp)s(ecial)g Fr(limit)j Fu(v)-5 b(alues)34
+b Ft(hard)p Fu(,)g Ft(soft)p Fu(,)g(and)f Ft(unlimited)e
+Fu(stand)630 3308 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g
+(curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)h(resp)s(ectiv)m(ely)-8
+b(.)48 b(A)630 3418 y(hard)24 b(limit)i(cannot)g(b)s(e)e(increased)h(b)
+m(y)g(a)h(non-ro)s(ot)f(user)f(once)i(it)g(is)f(set;)j(a)d(soft)g
+(limit)h(ma)m(y)630 3527 y(b)s(e)37 b(increased)h(up)e(to)j(the)f(v)-5
+b(alue)38 b(of)f(the)h(hard)f(limit.)63 b(Otherwise,)39
+b(the)f(curren)m(t)f(v)-5 b(alue)630 3637 y(of)39 b(the)g(soft)h(limit)
+g(for)f(the)g(sp)s(eci\014ed)f(resource)h(is)g(prin)m(ted,)i(unless)e
+(the)g Ft(-H)f Fu(option)i(is)630 3747 y(supplied.)47
+b(When)33 b(more)g(than)g(one)g(resource)g(is)g(sp)s(eci\014ed,)g(the)g
+(limit)h(name)f(and)f(unit,)630 3856 y(if)27 b(appropriate,)h(are)f
+(prin)m(ted)g(b)s(efore)g(the)g(v)-5 b(alue.)40 b(When)27
+b(setting)h(new)e(limits,)j(if)e(neither)630 3966 y Ft(-H)38
+b Fu(nor)g Ft(-S)g Fu(is)h(supplied,)h(b)s(oth)e(the)h(hard)f(and)g
+(soft)h(limits)g(are)g(set.)67 b(If)38 b(no)h(option)g(is)630
+4075 y(giv)m(en,)c(then)f Ft(-f)e Fu(is)i(assumed.)49
+b(V)-8 b(alues)35 b(are)e(in)h(1024-b)m(yte)i(incremen)m(ts,)f(except)f
+(for)f Ft(-t)p Fu(,)630 4185 y(whic)m(h)e(is)g(in)g(seconds;)h
+Ft(-R)p Fu(,)g(whic)m(h)f(is)g(in)g(microseconds;)h Ft(-p)p
+Fu(,)g(whic)m(h)f(is)g(in)g(units)g(of)g(512-)630 4295
+y(b)m(yte)k(blo)s(c)m(ks;)j Ft(-P)p Fu(,)e Ft(-T)p Fu(,)f
+Ft(-b)p Fu(,)h Ft(-k)p Fu(,)f Ft(-n)g Fu(and)f Ft(-u)p
+Fu(,)h(whic)m(h)g(are)g(unscaled)g(v)-5 b(alues;)37 b(and,)f(when)630
+4404 y(in)g Fm(posix)f Fu(Mo)s(de)h(\(see)g(Section)h(6.11)g([Bash)g
+(POSIX)d(Mo)s(de],)k(page)f(106\),)i Ft(-c)c Fu(and)g
+Ft(-f)p Fu(,)630 4514 y(whic)m(h)30 b(are)h(in)f(512-b)m(yte)j
+(incremen)m(ts.)630 4653 y(The)h(return)g(status)h(is)f(zero)i(unless)e
+(an)g(in)m(v)-5 b(alid)36 b(option)f(or)f(argumen)m(t)i(is)e(supplied,)
+h(or)630 4762 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f
+(limit.)150 4930 y Ft(unalias)870 5069 y(unalias)46 b([-a])g([)p
+Fj(name)h Ft(...)g(])630 5208 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f
Fr(name)k Fu(from)39 b(the)i(list)f(of)g(aliases.)71
b(If)40 b Ft(-a)f Fu(is)h(supplied,)h(all)g(aliases)h(are)630
-3201 y(remo)m(v)m(ed.)g(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section)
-i(6.6)f([Aliases],)h(page)f(94.)150 3471 y Fs(4.3)68
-b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 3695 y Fk(4.3.1)63
-b(The)41 b(Set)g(Builtin)150 3842 y Fu(This)35 b(builtin)h(is)g(so)g
+5317 y(remo)m(v)m(ed.)g(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section)
+i(6.6)f([Aliases],)h(page)f(100.)p eop end
+%%Page: 67 73
+TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(67)150 299 y Fs(4.3)68
+b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 520 y Fk(4.3.1)63
+b(The)41 b(Set)g(Builtin)150 667 y Fu(This)35 b(builtin)h(is)g(so)g
(complicated)i(that)f(it)f(deserv)m(es)h(its)f(o)m(wn)g(section.)59
b Ft(set)35 b Fu(allo)m(ws)j(y)m(ou)e(to)h(c)m(hange)150
-3951 y(the)c(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f
+777 y(the)c(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f
(p)s(ositional)h(parameters,)h(or)e(to)h(displa)m(y)f(the)g(names)h
-(and)150 4061 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150
-4250 y Ft(set)870 4394 y(set)47 b([--abefhkmnptuvxBCEHPT])41
-b([-o)47 b Fj(option-name)p Ft(])e([)p Fj(argument)g
-Ft(...)o(])870 4504 y(set)i([+abefhkmnptuvxBCEHPT])42
-b([+o)47 b Fj(option-name)p Ft(])d([)p Fj(argument)h
-Ft(...)o(])630 4648 y Fu(If)22 b(no)h(options)g(or)g(argumen)m(ts)g
+(and)150 886 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150
+1041 y Ft(set)870 1172 y(set)47 b([-abefhkmnptuvxBCEHPT])42
+b([-o)47 b Fj(option-name)p Ft(])d([--])j([-])g([)p Fj(argument)e
+Ft(...)o(])870 1282 y(set)i([+abefhkmnptuvxBCEHPT])42
+b([+o)47 b Fj(option-name)p Ft(])d([--])j([-])g([)p Fj(argument)e
+Ft(...)o(])630 1414 y Fu(If)22 b(no)h(options)g(or)g(argumen)m(ts)g
(are)g(supplied,)g Ft(set)f Fu(displa)m(ys)g(the)h(names)g(and)f(v)-5
-b(alues)23 b(of)g(all)630 4757 y(shell)j(v)-5 b(ariables)27
+b(alues)23 b(of)g(all)630 1523 y(shell)j(v)-5 b(ariables)27
b(and)e(functions,)h(sorted)g(according)h(to)g(the)f(curren)m(t)f(lo)s
-(cale,)k(in)c(a)i(format)630 4867 y(that)i(ma)m(y)h(b)s(e)e(reused)g
+(cale,)k(in)c(a)i(format)630 1633 y(that)i(ma)m(y)h(b)s(e)e(reused)g
(as)h(input)f(for)h(setting)h(or)e(resetting)i(the)f(curren)m(tly-set)h
-(v)-5 b(ariables.)630 4977 y(Read-only)37 b(v)-5 b(ariables)37
+(v)-5 b(ariables.)630 1743 y(Read-only)37 b(v)-5 b(ariables)37
b(cannot)h(b)s(e)e(reset.)59 b(In)36 b Fm(posix)g Fu(mo)s(de,)i(only)f
-(shell)f(v)-5 b(ariables)38 b(are)630 5086 y(listed.)630
-5230 y(When)29 b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f
+(shell)f(v)-5 b(ariables)38 b(are)630 1852 y(listed.)630
+1984 y(When)29 b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f
(shell)h(attributes.)41 b(Options,)29 b(if)g(sp)s(ec-)630
-5340 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)p
-eop end
-%%Page: 63 69
-TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(63)630 299 y Ft(-a)384
-b Fu(Eac)m(h)37 b(v)-5 b(ariable)36 b(or)g(function)g(that)g(is)g
-(created)h(or)f(mo)s(di\014ed)f(is)h(giv)m(en)h(the)1110
-408 y(exp)s(ort)28 b(attribute)h(and)f(mark)m(ed)g(for)g(exp)s(ort)g
-(to)h(the)g(en)m(vironmen)m(t)f(of)h(sub-)1110 518 y(sequen)m(t)i
-(commands.)630 682 y Ft(-b)384 b Fu(Cause)44 b(the)h(status)g(of)f
-(terminated)h(bac)m(kground)g(jobs)f(to)h(b)s(e)f(rep)s(orted)1110
-792 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting)g
-(the)g(next)g(primary)g(prompt.)630 956 y Ft(-e)384 b
-Fu(Exit)65 b(immediately)g(if)f(a)h(pip)s(eline)e(\(see)i(Section)g
-(3.2.3)h([Pip)s(elines],)1110 1066 y(page)56 b(8\),)62
-b(whic)m(h)55 b(ma)m(y)h(consist)f(of)h(a)f(single)h(simple)f(command)g
-(\(see)1110 1176 y(Section)30 b(3.2.2)i([Simple)d(Commands],)g(page)h
-(8\),)h(a)f(list)g(\(see)h(Section)f(3.2.4)1110 1285
-y([Lists],)66 b(page)59 b(9\),)67 b(or)58 b(a)h(comp)s(ound)e(command)h
-(\(see)h(Section)g(3.2.5)1110 1395 y([Comp)s(ound)h(Commands],)70
-b(page)63 b(10\))g(returns)e(a)i(non-zero)f(status.)1110
-1504 y(The)41 b(shell)g(do)s(es)g(not)g(exit)h(if)f(the)h(command)f
-(that)h(fails)f(is)g(part)g(of)h(the)1110 1614 y(command)g(list)h
+2094 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630
+2248 y Ft(-a)384 b Fu(Eac)m(h)37 b(v)-5 b(ariable)36
+b(or)g(function)g(that)g(is)g(created)h(or)f(mo)s(di\014ed)f(is)h(giv)m
+(en)h(the)1110 2357 y(exp)s(ort)28 b(attribute)h(and)f(mark)m(ed)g(for)
+g(exp)s(ort)g(to)h(the)g(en)m(vironmen)m(t)f(of)h(sub-)1110
+2467 y(sequen)m(t)i(commands.)630 2621 y Ft(-b)384 b
+Fu(Cause)44 b(the)h(status)g(of)f(terminated)h(bac)m(kground)g(jobs)f
+(to)h(b)s(e)f(rep)s(orted)1110 2730 y(immediately)-8
+b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting)g(the)g(next)g
+(primary)g(prompt.)630 2885 y Ft(-e)384 b Fu(Exit)65
+b(immediately)g(if)f(a)h(pip)s(eline)e(\(see)i(Section)g(3.2.3)h([Pip)s
+(elines],)1110 2994 y(page)51 b(10\),)58 b(whic)m(h)50
+b(ma)m(y)h(consist)h(of)e(a)i(single)f(simple)g(command)f(\(see)1110
+3104 y(Section)30 b(3.2.2)i([Simple)d(Commands],)g(page)h(9\),)h(a)f
+(list)g(\(see)h(Section)f(3.2.4)1110 3213 y([Lists],)60
+b(page)55 b(10\),)60 b(or)54 b(a)g(comp)s(ound)e(command)h(\(see)i
+(Section)f(3.2.5)1110 3323 y([Comp)s(ound)60 b(Commands],)70
+b(page)63 b(11\))g(returns)e(a)i(non-zero)f(status.)1110
+3432 y(The)41 b(shell)g(do)s(es)g(not)g(exit)h(if)f(the)h(command)f
+(that)h(fails)f(is)g(part)g(of)h(the)1110 3542 y(command)g(list)h
(immediately)g(follo)m(wing)g(a)g Ft(while)e Fu(or)h
-Ft(until)e Fu(k)m(eyw)m(ord,)1110 1724 y(part)61 b(of)g(the)g(test)h
+Ft(until)e Fu(k)m(eyw)m(ord,)1110 3652 y(part)61 b(of)g(the)g(test)h
(in)e(an)h Ft(if)f Fu(statemen)m(t,)71 b(part)61 b(of)g(an)m(y)g
-(command)1110 1833 y(executed)50 b(in)e(a)h Ft(&&)f Fu(or)h
+(command)1110 3761 y(executed)50 b(in)e(a)h Ft(&&)f Fu(or)h
Ft(||)f Fu(list)h(except)g(the)g(command)g(follo)m(wing)h(the)1110
-1943 y(\014nal)37 b Ft(&&)g Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f
+3871 y(\014nal)37 b Ft(&&)g Fu(or)g Ft(||)p Fu(,)h(an)m(y)g(command)f
(in)g(a)g(pip)s(eline)g(but)g(the)g(last,)j(or)e(if)f(the)1110
-2052 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h
+3980 y(command's)c(return)f(status)h(is)g(b)s(eing)g(in)m(v)m(erted)h
(with)e Ft(!)p Fu(.)48 b(If)33 b(a)g(comp)s(ound)1110
-2162 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h
-(status)f(b)s(ecause)1110 2271 y(a)k(command)g(failed)g(while)g
+4090 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h
+(status)f(b)s(ecause)1110 4200 y(a)k(command)g(failed)g(while)g
Ft(-e)f Fu(w)m(as)i(b)s(eing)e(ignored,)j(the)e(shell)g(do)s(es)g(not)
-1110 2381 y(exit.)42 b(A)30 b(trap)g(on)h Ft(ERR)p Fu(,)e(if)i(set,)g
+1110 4309 y(exit.)42 b(A)30 b(trap)g(on)h Ft(ERR)p Fu(,)e(if)i(set,)g
(is)f(executed)i(b)s(efore)e(the)g(shell)h(exits.)1110
-2518 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g
-(and)f(eac)m(h)h(subshell)f(en-)1110 2628 y(vironmen)m(t)j(separately)i
+4441 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g
+(and)f(eac)m(h)h(subshell)f(en-)1110 4551 y(vironmen)m(t)j(separately)i
(\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110
-2737 y(vironmen)m(t],)i(page)f(40\),)i(and)d(ma)m(y)h(cause)f
-(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 2847 y(cuting)d(all)g
-(the)g(commands)f(in)g(the)g(subshell.)1110 2984 y(If)41
+4660 y(vironmen)m(t],)i(page)f(43\),)i(and)d(ma)m(y)h(cause)f
+(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 4770 y(cuting)d(all)g
+(the)g(commands)f(in)g(the)g(subshell.)1110 4902 y(If)41
b(a)g(comp)s(ound)e(command)i(or)g(shell)g(function)g(executes)h(in)f
-(a)g(con)m(text)1110 3093 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g
+(a)g(con)m(text)1110 5011 y(where)31 b Ft(-e)g Fu(is)g(b)s(eing)g
(ignored,)h(none)f(of)h(the)f(commands)g(executed)h(within)1110
-3203 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will)
-h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 3313 y Ft(-e)25
+5121 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will)
+h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 5230 y Ft(-e)25
b Fu(setting,)j(ev)m(en)e(if)g Ft(-e)f Fu(is)h(set)g(and)f(a)h(command)
-g(returns)e(a)i(failure)g(status.)1110 3422 y(If)32 b(a)i(comp)s(ound)d
+g(returns)e(a)i(failure)g(status.)1110 5340 y(If)32 b(a)i(comp)s(ound)d
(command)i(or)g(shell)g(function)f(sets)i Ft(-e)e Fu(while)h(executing)
-1110 3532 y(in)40 b(a)h(con)m(text)i(where)d Ft(-e)g
-Fu(is)h(ignored,)j(that)d(setting)h(will)f(not)g(ha)m(v)m(e)h(an)m(y)
-1110 3641 y(e\013ect)g(un)m(til)e(the)h(comp)s(ound)e(command)h(or)g
-(the)g(command)g(con)m(taining)1110 3751 y(the)31 b(function)f(call)h
-(completes.)630 3915 y Ft(-f)384 b Fu(Disable)31 b(\014lename)g
-(expansion)f(\(globbing\).)630 4080 y Ft(-h)384 b Fu(Lo)s(cate)33
-b(and)e(remem)m(b)s(er)h(\(hash\))g(commands)f(as)h(they)g(are)g(lo)s
-(ok)m(ed)h(up)e(for)1110 4189 y(execution.)42 b(This)29
-b(option)i(is)g(enabled)f(b)m(y)g(default.)630 4354 y
-Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g
-(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110
-4463 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f
-(those)i(that)f(precede)g(the)1110 4573 y(command)30
-b(name.)630 4737 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g
-(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(107\).)41
-b(All)1110 4847 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s
+p eop end
+%%Page: 68 74
+TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(68)1110 299 y(in)40
+b(a)h(con)m(text)i(where)d Ft(-e)g Fu(is)h(ignored,)j(that)d(setting)h
+(will)f(not)g(ha)m(v)m(e)h(an)m(y)1110 408 y(e\013ect)g(un)m(til)e(the)
+h(comp)s(ound)e(command)h(or)g(the)g(command)g(con)m(taining)1110
+518 y(the)31 b(function)f(call)h(completes.)630 682 y
+Ft(-f)384 b Fu(Disable)31 b(\014lename)g(expansion)f(\(globbing\).)630
+847 y Ft(-h)384 b Fu(Lo)s(cate)33 b(and)e(remem)m(b)s(er)h(\(hash\))g
+(commands)f(as)h(they)g(are)g(lo)s(ok)m(ed)h(up)e(for)1110
+956 y(execution.)42 b(This)29 b(option)i(is)g(enabled)f(b)m(y)g
+(default.)630 1121 y Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h
+(form)f(of)g(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110
+1230 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f
+(those)i(that)f(precede)g(the)1110 1340 y(command)30
+b(name.)630 1504 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g
+(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(113\).)41
+b(All)1110 1614 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s
(cess)f(group.)40 b(When)27 b(a)h(bac)m(kground)f(job)1110
-4956 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m
-(taining)i(its)f(exit)g(status.)630 5121 y Ft(-n)384
+1724 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m
+(taining)i(its)f(exit)g(status.)630 1888 y Ft(-n)384
b Fu(Read)38 b(commands)f(but)f(do)i(not)f(execute)i(them.)62
-b(This)37 b(ma)m(y)h(b)s(e)f(used)f(to)1110 5230 y(c)m(hec)m(k)d(a)e
+b(This)37 b(ma)m(y)h(b)s(e)f(used)f(to)1110 1998 y(c)m(hec)m(k)d(a)e
(script)g(for)g(syn)m(tax)h(errors.)42 b(This)30 b(option)i(is)f
-(ignored)g(b)m(y)g(in)m(terac-)1110 5340 y(tiv)m(e)h(shells.)p
-eop end
-%%Page: 64 70
-TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Ft(-o)30
-b Fj(option-name)1110 408 y Fu(Set)h(the)f(option)h(corresp)s(onding)e
-(to)i Fr(option-name)5 b Fu(:)1110 575 y Ft(allexport)1590
-685 y Fu(Same)30 b(as)h Ft(-a)p Fu(.)1110 852 y Ft(braceexpand)1590
-962 y Fu(Same)f(as)h Ft(-B)p Fu(.)1110 1129 y Ft(emacs)240
-b Fu(Use)25 b(an)f Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m
-(terface)h(\(see)g(Chapter)e(8)1590 1238 y([Command)33
-b(Line)g(Editing],)h(page)h(111\).)51 b(This)32 b(also)i(a\013ects)1590
-1348 y(the)d(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p
-Fu(.)1110 1515 y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p
-Fu(.)1110 1682 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p
-Fu(.)1110 1849 y Ft(functrace)1590 1958 y Fu(Same)f(as)h
-Ft(-T)p Fu(.)1110 2125 y Ft(hashall)144 b Fu(Same)30
-b(as)h Ft(-h)p Fu(.)1110 2292 y Ft(histexpand)1590 2402
-y Fu(Same)f(as)h Ft(-H)p Fu(.)1110 2569 y Ft(history)144
-b Fu(Enable)39 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h
-(Section)h(9.1)1590 2679 y([Bash)d(History)g(F)-8 b(acilities],)41
-b(page)c(146.)60 b(This)36 b(option)h(is)f(on)1590 2788
-y(b)m(y)30 b(default)h(in)f(in)m(teractiv)m(e)j(shells.)1110
-2955 y Ft(ignoreeof)1590 3065 y Fu(An)d(in)m(teractiv)m(e)j(shell)e
-(will)g(not)f(exit)h(up)s(on)e(reading)i(EOF.)1110 3232
-y Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110
-3399 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110
-3566 y Ft(noclobber)1590 3675 y Fu(Same)f(as)h Ft(-C)p
-Fu(.)1110 3842 y Ft(noexec)192 b Fu(Same)30 b(as)h Ft(-n)p
-Fu(.)1110 4009 y Ft(noglob)192 b Fu(Same)30 b(as)h Ft(-f)p
-Fu(.)1110 4176 y Ft(nolog)240 b Fu(Curren)m(tly)30 b(ignored.)1110
-4343 y Ft(notify)192 b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110
-4510 y Ft(nounset)144 b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110
-4677 y Ft(onecmd)192 b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110
-4844 y Ft(physical)96 b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110
-5011 y Ft(pipefail)96 b Fu(If)44 b(set,)k(the)d(return)e(v)-5
+(ignored)g(b)m(y)g(in)m(terac-)1110 2107 y(tiv)m(e)h(shells.)630
+2271 y Ft(-o)e Fj(option-name)1110 2381 y Fu(Set)h(the)f(option)h
+(corresp)s(onding)e(to)i Fr(option-name)5 b Fu(:)1110
+2545 y Ft(allexport)1590 2655 y Fu(Same)30 b(as)h Ft(-a)p
+Fu(.)1110 2819 y Ft(braceexpand)1590 2929 y Fu(Same)f(as)h
+Ft(-B)p Fu(.)1110 3093 y Ft(emacs)240 b Fu(Use)25 b(an)f
+Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m(terface)h(\(see)g
+(Chapter)e(8)1590 3203 y([Command)33 b(Line)g(Editing],)h(page)h
+(117\).)51 b(This)32 b(also)i(a\013ects)1590 3313 y(the)d(editing)g(in)
+m(terface)h(used)d(for)h Ft(read)f(-e)p Fu(.)1110 3477
+y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p Fu(.)1110
+3641 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p Fu(.)1110
+3806 y Ft(functrace)1590 3915 y Fu(Same)f(as)h Ft(-T)p
+Fu(.)1110 4080 y Ft(hashall)144 b Fu(Same)30 b(as)h Ft(-h)p
+Fu(.)1110 4244 y Ft(histexpand)1590 4354 y Fu(Same)f(as)h
+Ft(-H)p Fu(.)1110 4518 y Ft(history)144 b Fu(Enable)39
+b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h(Section)h(9.1)
+1590 4628 y([Bash)d(History)g(F)-8 b(acilities],)41 b(page)c(152.)60
+b(This)36 b(option)h(is)f(on)1590 4737 y(b)m(y)30 b(default)h(in)f(in)m
+(teractiv)m(e)j(shells.)1110 4902 y Ft(ignoreeof)1590
+5011 y Fu(An)d(in)m(teractiv)m(e)j(shell)e(will)g(not)f(exit)h(up)s(on)
+e(reading)i(EOF.)1110 5176 y Ft(keyword)144 b Fu(Same)30
+b(as)h Ft(-k)p Fu(.)1110 5340 y Ft(monitor)144 b Fu(Same)30
+b(as)h Ft(-m)p Fu(.)p eop end
+%%Page: 69 75
+TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(69)1110 299 y
+Ft(noclobber)1590 408 y Fu(Same)30 b(as)h Ft(-C)p Fu(.)1110
+570 y Ft(noexec)192 b Fu(Same)30 b(as)h Ft(-n)p Fu(.)1110
+731 y Ft(noglob)192 b Fu(Same)30 b(as)h Ft(-f)p Fu(.)1110
+892 y Ft(nolog)240 b Fu(Curren)m(tly)30 b(ignored.)1110
+1053 y Ft(notify)192 b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110
+1214 y Ft(nounset)144 b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110
+1375 y Ft(onecmd)192 b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110
+1537 y Ft(physical)96 b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110
+1698 y Ft(pipefail)96 b Fu(If)44 b(set,)k(the)d(return)e(v)-5
b(alue)45 b(of)f(a)h(pip)s(eline)e(is)i(the)f(v)-5 b(alue)45
-b(of)1590 5121 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h
-(exit)g(with)f(a)g(non-zero)1590 5230 y(status,)28 b(or)f(zero)g(if)f
+b(of)1590 1807 y(the)33 b(last)h(\(righ)m(tmost\))h(command)e(to)h
+(exit)g(with)f(a)g(non-zero)1590 1917 y(status,)28 b(or)f(zero)g(if)f
(all)i(commands)e(in)g(the)h(pip)s(eline)f(exit)i(suc-)1590
-5340 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h
-(default.)p eop end
-%%Page: 65 71
-TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(65)1110 299 y
-Ft(posix)240 b Fu(Change)30 b(the)g(b)s(eha)m(vior)h(of)f(Bash)g(where)
-g(the)g(default)h(op)s(era-)1590 408 y(tion)25 b(di\013ers)f(from)g
-(the)h Fm(posix)f Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590
-518 y(dard)h(\(see)j(Section)f(6.11)h([Bash)f(POSIX)e(Mo)s(de],)j(page)
-f(101\).)1590 628 y(This)37 b(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g
-(b)s(eha)m(v)m(e)g(as)g(a)f(strict)h(su-)1590 737 y(p)s(erset)30
-b(of)h(that)f(standard.)1110 911 y Ft(privileged)1590
-1020 y Fu(Same)g(as)h Ft(-p)p Fu(.)1110 1194 y Ft(verbose)144
-b Fu(Same)30 b(as)h Ft(-v)p Fu(.)1110 1367 y Ft(vi)384
-b Fu(Use)36 b(a)g Ft(vi)p Fu(-st)m(yle)g(line)g(editing)g(in)m
-(terface.)58 b(This)35 b(also)h(a\013ects)1590 1477 y(the)31
-b(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p
-Fu(.)1110 1650 y Ft(xtrace)192 b Fu(Same)30 b(as)h Ft(-x)p
-Fu(.)630 1824 y Ft(-p)384 b Fu(T)-8 b(urn)33 b(on)h(privileged)h(mo)s
-(de.)51 b(In)34 b(this)g(mo)s(de,)h(the)f Ft($BASH_ENV)e
-Fu(and)h Ft($ENV)1110 1934 y Fu(\014les)23 b(are)h(not)f(pro)s(cessed,)
-h(shell)g(functions)e(are)i(not)f(inherited)g(from)f(the)i(en-)1110
-2043 y(vironmen)m(t,)h(and)e(the)g Ft(SHELLOPTS)p Fu(,)f
+2027 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h
+(default.)1110 2188 y Ft(posix)240 b Fu(Change)30 b(the)g(b)s(eha)m
+(vior)h(of)f(Bash)g(where)g(the)g(default)h(op)s(era-)1590
+2297 y(tion)25 b(di\013ers)f(from)g(the)h Fm(posix)f
+Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590 2407 y(dard)h(\(see)j
+(Section)f(6.11)h([Bash)f(POSIX)e(Mo)s(de],)j(page)f(106\).)1590
+2516 y(This)37 b(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g(b)s(eha)m(v)m
+(e)g(as)g(a)f(strict)h(su-)1590 2626 y(p)s(erset)30 b(of)h(that)f
+(standard.)1110 2787 y Ft(privileged)1590 2897 y Fu(Same)g(as)h
+Ft(-p)p Fu(.)1110 3058 y Ft(verbose)144 b Fu(Same)30
+b(as)h Ft(-v)p Fu(.)1110 3219 y Ft(vi)384 b Fu(Use)36
+b(a)g Ft(vi)p Fu(-st)m(yle)g(line)g(editing)g(in)m(terface.)58
+b(This)35 b(also)h(a\013ects)1590 3329 y(the)31 b(editing)g(in)m
+(terface)h(used)d(for)h Ft(read)f(-e)p Fu(.)1110 3490
+y Ft(xtrace)192 b Fu(Same)30 b(as)h Ft(-x)p Fu(.)630
+3651 y Ft(-p)384 b Fu(T)-8 b(urn)33 b(on)h(privileged)h(mo)s(de.)51
+b(In)34 b(this)g(mo)s(de,)h(the)f Ft($BASH_ENV)e Fu(and)h
+Ft($ENV)1110 3761 y Fu(\014les)23 b(are)h(not)f(pro)s(cessed,)h(shell)g
+(functions)e(are)i(not)f(inherited)g(from)f(the)i(en-)1110
+3870 y(vironmen)m(t,)h(and)e(the)g Ft(SHELLOPTS)p Fu(,)f
Ft(BASHOPTS)p Fu(,)h Ft(CDPATH)e Fu(and)i Ft(GLOBIGNORE)1110
-2153 y Fu(v)-5 b(ariables,)23 b(if)e(they)g(app)s(ear)f(in)g(the)h(en)m
+3980 y Fu(v)-5 b(ariables,)23 b(if)e(they)g(app)s(ear)f(in)g(the)h(en)m
(vironmen)m(t,)i(are)e(ignored.)38 b(If)20 b(the)h(shell)1110
-2262 y(is)37 b(started)h(with)f(the)g(e\013ectiv)m(e)j(user)d
+4089 y(is)37 b(started)h(with)f(the)g(e\013ectiv)m(e)j(user)d
(\(group\))g(id)g(not)g(equal)h(to)g(the)f(real)1110
-2372 y(user)h(\(group\))h(id,)i(and)d(the)h Ft(-p)f Fu(option)i(is)e
-(not)i(supplied,)f(these)h(actions)1110 2482 y(are)32
+4199 y(user)h(\(group\))h(id,)i(and)d(the)h Ft(-p)f Fu(option)i(is)e
+(not)i(supplied,)f(these)h(actions)1110 4309 y(are)32
b(tak)m(en)i(and)d(the)h(e\013ectiv)m(e)j(user)c(id)h(is)g(set)h(to)f
-(the)h(real)f(user)g(id.)45 b(If)32 b(the)1110 2591 y
+(the)h(real)f(user)g(id.)45 b(If)32 b(the)1110 4418 y
Ft(-p)i Fu(option)h(is)g(supplied)f(at)h(startup,)h(the)f(e\013ectiv)m
-(e)i(user)d(id)g(is)h(not)g(reset.)1110 2701 y(T)-8 b(urning)35
+(e)i(user)d(id)g(is)h(not)g(reset.)1110 4528 y(T)-8 b(urning)35
b(this)i(option)g(o\013)g(causes)g(the)g(e\013ectiv)m(e)i(user)d(and)g
-(group)g(ids)g(to)1110 2810 y(b)s(e)30 b(set)h(to)g(the)f(real)h(user)f
-(and)g(group)g(ids.)630 2984 y Ft(-t)384 b Fu(Exit)31
-b(after)g(reading)f(and)g(executing)h(one)g(command.)630
-3157 y Ft(-u)384 b Fu(T)-8 b(reat)25 b(unset)e(v)-5 b(ariables)25
-b(and)e(parameters)h(other)h(than)e(the)h(sp)s(ecial)h(param-)1110
-3267 y(eters)35 b(`)p Ft(@)p Fu(')f(or)g(`)p Ft(*)p Fu(')h(as)f(an)g
-(error)g(when)f(p)s(erforming)g(parameter)i(expansion.)1110
-3377 y(An)28 b(error)h(message)g(will)g(b)s(e)f(written)h(to)h(the)e
-(standard)g(error,)h(and)f(a)h(non-)1110 3486 y(in)m(teractiv)m(e)k
-(shell)e(will)g(exit.)630 3660 y Ft(-v)384 b Fu(Prin)m(t)30
+(group)g(ids)g(to)1110 4637 y(b)s(e)30 b(set)h(to)g(the)f(real)h(user)f
+(and)g(group)g(ids.)630 4798 y Ft(-r)384 b Fu(Enable)32
+b(restricted)h(shell)f(mo)s(de.)45 b(This)31 b(option)i(cannot)g(b)s(e)
+e(unset)h(once)g(it)1110 4908 y(has)e(b)s(een)g(set.)630
+5069 y Ft(-t)384 b Fu(Exit)31 b(after)g(reading)f(and)g(executing)h
+(one)g(command.)630 5230 y Ft(-u)384 b Fu(T)-8 b(reat)25
+b(unset)e(v)-5 b(ariables)25 b(and)e(parameters)h(other)h(than)e(the)h
+(sp)s(ecial)h(param-)1110 5340 y(eters)32 b(`)p Ft(@)p
+Fu(')f(or)h(`)p Ft(*)p Fu(',)g(or)f(arra)m(y)h(v)-5 b(ariables)32
+b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p
+Fu(',)f(as)h(an)p eop end
+%%Page: 70 76
+TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(70)1110 299 y(error)24
+b(when)g(p)s(erforming)g(parameter)h(expansion.)39 b(An)24
+b(error)h(message)h(will)1110 408 y(b)s(e)37 b(written)h(to)h(the)f
+(standard)f(error,)i(and)f(a)g(non-in)m(teractiv)m(e)j(shell)d(will)
+1110 518 y(exit.)630 667 y Ft(-v)384 b Fu(Prin)m(t)30
b(shell)h(input)e(lines)i(as)g(they)f(are)h(read.)630
-3833 y Ft(-x)384 b Fu(Prin)m(t)21 b(a)h(trace)h(of)f(simple)f
-(commands,)i Ft(for)e Fu(commands,)i Ft(case)d Fu(commands,)1110
-3943 y Ft(select)29 b Fu(commands,)j(and)e(arithmetic)j
-Ft(for)d Fu(commands)h(and)f(their)i(argu-)1110 4052
+817 y Ft(-x)384 b Fu(Prin)m(t)21 b(a)h(trace)h(of)f(simple)f(commands,)
+i Ft(for)e Fu(commands,)i Ft(case)d Fu(commands,)1110
+927 y Ft(select)29 b Fu(commands,)j(and)e(arithmetic)j
+Ft(for)d Fu(commands)h(and)f(their)i(argu-)1110 1036
y(men)m(ts)h(or)f(asso)s(ciated)i(w)m(ord)e(lists)h(after)g(they)f(are)
-h(expanded)f(and)f(b)s(efore)1110 4162 y(they)i(are)g(executed.)49
+h(expanded)f(and)f(b)s(efore)1110 1146 y(they)i(are)g(executed.)49
b(The)32 b(v)-5 b(alue)33 b(of)g(the)g Ft(PS4)f Fu(v)-5
-b(ariable)34 b(is)f(expanded)f(and)1110 4271 y(the)24
+b(ariable)34 b(is)f(expanded)f(and)1110 1255 y(the)24
b(resultan)m(t)h(v)-5 b(alue)24 b(is)g(prin)m(ted)g(b)s(efore)f(the)h
-(command)g(and)f(its)i(expanded)1110 4381 y(argumen)m(ts.)630
-4555 y Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h
-(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 4664
-y(Expansion],)30 b(page)h(23\).)42 b(This)30 b(option)h(is)f(on)g(b)m
-(y)h(default.)630 4838 y Ft(-C)384 b Fu(Prev)m(en)m(t)25
+(command)g(and)f(its)i(expanded)1110 1365 y(argumen)m(ts.)630
+1514 y Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h
+(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 1624
+y(Expansion],)30 b(page)h(24\).)42 b(This)30 b(option)h(is)f(on)g(b)m
+(y)h(default.)630 1773 y Ft(-C)384 b Fu(Prev)m(en)m(t)25
b(output)e(redirection)h(using)f(`)p Ft(>)p Fu(',)i(`)p
Ft(>&)p Fu(',)g(and)e(`)p Ft(<>)p Fu(')g(from)h(o)m(v)m(erwriting)1110
-4947 y(existing)31 b(\014les.)630 5121 y Ft(-E)384 b
+1883 y(existing)31 b(\014les.)630 2032 y Ft(-E)384 b
Fu(If)39 b(set,)j(an)m(y)e(trap)f(on)g Ft(ERR)g Fu(is)g(inherited)g(b)m
-(y)g(shell)h(functions,)h(command)1110 5230 y(substitutions,)35
+(y)g(shell)h(functions,)h(command)1110 2142 y(substitutions,)35
b(and)e(commands)g(executed)i(in)f(a)g(subshell)f(en)m(vironmen)m(t.)
-1110 5340 y(The)d Ft(ERR)f Fu(trap)i(is)f(normally)h(not)f(inherited)g
-(in)g(suc)m(h)g(cases.)p eop end
-%%Page: 66 72
-TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(-H)384
-b Fu(Enable)38 b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g
-(\(see)h(Section)h(9.3)f([History)g(In-)1110 408 y(teraction],)g(page)d
-(148\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m
-(teractiv)m(e)1110 518 y(shells.)630 670 y Ft(-P)384
+1110 2252 y(The)d Ft(ERR)f Fu(trap)i(is)f(normally)h(not)f(inherited)g
+(in)g(suc)m(h)g(cases.)630 2401 y Ft(-H)384 b Fu(Enable)38
+b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g(\(see)h
+(Section)h(9.3)f([History)g(In-)1110 2511 y(teraction],)g(page)d
+(154\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m
+(teractiv)m(e)1110 2620 y(shells.)630 2770 y Ft(-P)384
b Fu(If)39 b(set,)j(do)d(not)g(resolv)m(e)i(sym)m(b)s(olic)e(links)g
-(when)f(p)s(erforming)g(commands)1110 780 y(suc)m(h)29
+(when)f(p)s(erforming)g(commands)1110 2879 y(suc)m(h)29
b(as)h Ft(cd)f Fu(whic)m(h)g(c)m(hange)h(the)g(curren)m(t)f(directory)
--8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 890 y(tory)j(is)g(used)f
-(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i
-(c)m(hain)f(of)1110 999 y(directories)j(when)d(p)s(erforming)h
+-8 b(.)42 b(The)28 b(ph)m(ysical)j(direc-)1110 2989 y(tory)j(is)g(used)
+f(instead.)52 b(By)34 b(default,)h(Bash)f(follo)m(ws)h(the)f(logical)i
+(c)m(hain)f(of)1110 3098 y(directories)j(when)d(p)s(erforming)h
(commands)g(whic)m(h)g(c)m(hange)i(the)f(curren)m(t)1110
-1109 y(directory)-8 b(.)1110 1240 y(F)g(or)42 b(example,)i(if)d
+3208 y(directory)-8 b(.)1110 3337 y(F)g(or)42 b(example,)i(if)d
Ft(/usr/sys)e Fu(is)i(a)g(sym)m(b)s(olic)g(link)g(to)h
-Ft(/usr/local/sys)1110 1349 y Fu(then:)1350 1480 y Ft($)47
-b(cd)h(/usr/sys;)d(echo)i($PWD)1350 1590 y(/usr/sys)1350
-1700 y($)g(cd)h(..;)f(pwd)1350 1809 y(/usr)1110 1940
-y Fu(If)30 b Ft(set)f(-P)h Fu(is)h(on,)f(then:)1350 2071
-y Ft($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 2181 y(/usr/local/sys)
-1350 2290 y($)g(cd)h(..;)f(pwd)1350 2400 y(/usr/local)630
-2552 y(-T)384 b Fu(If)34 b(set,)j(an)m(y)e(trap)g(on)g
+Ft(/usr/local/sys)1110 3447 y Fu(then:)1350 3577 y Ft($)47
+b(cd)h(/usr/sys;)d(echo)i($PWD)1350 3686 y(/usr/sys)1350
+3796 y($)g(cd)h(..;)f(pwd)1350 3905 y(/usr)1110 4035
+y Fu(If)30 b Ft(set)f(-P)h Fu(is)h(on,)f(then:)1350 4164
+y Ft($)47 b(cd)h(/usr/sys;)d(echo)i($PWD)1350 4274 y(/usr/local/sys)
+1350 4384 y($)g(cd)h(..;)f(pwd)1350 4493 y(/usr/local)630
+4643 y(-T)384 b Fu(If)34 b(set,)j(an)m(y)e(trap)g(on)g
Ft(DEBUG)e Fu(and)i Ft(RETURN)e Fu(are)i(inherited)g(b)m(y)f(shell)i
-(func-)1110 2662 y(tions,)k(command)d(substitutions,)h(and)f(commands)g
-(executed)h(in)f(a)h(sub-)1110 2771 y(shell)33 b(en)m(vironmen)m(t.)49
+(func-)1110 4752 y(tions,)k(command)d(substitutions,)h(and)f(commands)g
+(executed)h(in)f(a)h(sub-)1110 4862 y(shell)33 b(en)m(vironmen)m(t.)49
b(The)32 b Ft(DEBUG)g Fu(and)g Ft(RETURN)f Fu(traps)h(are)i(normally)f
-(not)1110 2881 y(inherited)d(in)g(suc)m(h)g(cases.)630
-3033 y Ft(--)384 b Fu(If)44 b(no)g(argumen)m(ts)g(follo)m(w)i(this)e
+(not)1110 4971 y(inherited)d(in)g(suc)m(h)g(cases.)630
+5121 y Ft(--)384 b Fu(If)44 b(no)g(argumen)m(ts)g(follo)m(w)i(this)e
(option,)k(then)c(the)h(p)s(ositional)g(parame-)1110
-3143 y(ters)31 b(are)g(unset.)40 b(Otherwise,)31 b(the)f(p)s(ositional)
-i(parameters)f(are)f(set)h(to)h(the)1110 3253 y Fr(argumen)m(ts)p
+5230 y(ters)31 b(are)g(unset.)40 b(Otherwise,)31 b(the)f(p)s(ositional)
+i(parameters)f(are)f(set)h(to)h(the)1110 5340 y Fr(argumen)m(ts)p
Fu(,)f(ev)m(en)g(if)f(some)h(of)g(them)f(b)s(egin)g(with)g(a)h(`)p
-Ft(-)p Fu('.)630 3405 y Ft(-)432 b Fu(Signal)45 b(the)g(end)f(of)h
-(options,)k(cause)c(all)h(remaining)e Fr(argumen)m(ts)49
-b Fu(to)d(b)s(e)1110 3515 y(assigned)33 b(to)h(the)g(p)s(ositional)g
-(parameters.)49 b(The)33 b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are)
-1110 3624 y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m
-(ts,)j(the)e(p)s(ositional)g(parameters)1110 3734 y(remain)30
-b(unc)m(hanged.)630 3886 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)
-p Ft(-)p Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g
-(o\013.)40 b(The)27 b(options)h(can)630 3996 y(also)36
-b(b)s(e)f(used)f(up)s(on)g(in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56
-b(The)34 b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630
-4105 y(found)29 b(in)h Ft($-)p Fu(.)630 4236 y(The)43
+Ft(-)p Fu('.)p eop end
+%%Page: 71 77
+TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(71)630 299 y Ft(-)432
+b Fu(Signal)45 b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e
+Fr(argumen)m(ts)49 b Fu(to)d(b)s(e)1110 408 y(assigned)33
+b(to)h(the)g(p)s(ositional)g(parameters.)49 b(The)33
+b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are)1110 518
+y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m(ts,)j(the)e
+(p)s(ositional)g(parameters)1110 628 y(remain)30 b(unc)m(hanged.)630
+775 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p
+Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g(o\013.)40
+b(The)27 b(options)h(can)630 884 y(also)36 b(b)s(e)f(used)f(up)s(on)g
+(in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56 b(The)34
+b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630
+994 y(found)29 b(in)h Ft($-)p Fu(.)630 1122 y(The)43
b(remaining)h(N)f Fr(argumen)m(ts)48 b Fu(are)c(p)s(ositional)g
-(parameters)g(and)f(are)h(assigned,)j(in)630 4346 y(order,)30
+(parameters)g(and)f(are)h(assigned,)j(in)630 1232 y(order,)30
b(to)h Ft($1)p Fu(,)f Ft($2)p Fu(,)36 b(.)22 b(.)g(.)42
b Ft($N)p Fu(.)e(The)30 b(sp)s(ecial)h(parameter)g Ft(#)f
-Fu(is)g(set)h(to)g(N.)630 4477 y(The)f(return)f(status)i(is)f(alw)m(a)m
+Fu(is)g(set)h(to)g(N.)630 1360 y(The)f(return)f(status)i(is)f(alw)m(a)m
(ys)i(zero)f(unless)f(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f
-(supplied.)150 4669 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150
-4816 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h
+(supplied.)150 1548 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150
+1695 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h
(additional)f(shell)f(optional)i(b)s(eha)m(vior.)150
-4968 y Ft(shopt)870 5099 y(shopt)46 b([-pqsu])g([-o])h([)p
-Fj(optname)e Ft(...])630 5230 y Fu(T)-8 b(oggle)37 b(the)e(v)-5
+1842 y Ft(shopt)870 1970 y(shopt)46 b([-pqsu])g([-o])h([)p
+Fj(optname)e Ft(...])630 2099 y Fu(T)-8 b(oggle)37 b(the)e(v)-5
b(alues)35 b(of)g(settings)h(con)m(trolling)g(optional)g(shell)f(b)s
-(eha)m(vior.)55 b(The)34 b(settings)630 5340 y(can)24
+(eha)m(vior.)55 b(The)34 b(settings)630 2208 y(can)24
b(b)s(e)g(either)h(those)f(listed)h(b)s(elo)m(w,)h(or,)f(if)g(the)f
Ft(-o)f Fu(option)i(is)f(used,)h(those)g(a)m(v)-5 b(ailable)26
-b(with)p eop end
-%%Page: 67 73
-TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y(the)30
-b Ft(-o)f Fu(option)i(to)f(the)g Ft(set)f Fu(builtin)h(command)f(\(see)
-i(Section)g(4.3.1)g([The)f(Set)g(Builtin],)630 408 y(page)i(62\).)45
-b(With)32 b(no)f(options,)h(or)g(with)f(the)g Ft(-p)g
-Fu(option,)h(a)g(list)g(of)f(all)i(settable)g(options)630
-518 y(is)g(displa)m(y)m(ed,)i(with)e(an)g(indication)h(of)g(whether)e
-(or)h(not)h(eac)m(h)g(is)g(set;)h(if)e Fr(optnames)38
-b Fu(are)630 628 y(supplied,)25 b(the)g(output)g(is)g(restricted)g(to)h
-(those)g(options.)39 b(The)24 b Ft(-p)h Fu(option)g(causes)g(output)630
-737 y(to)30 b(b)s(e)f(displa)m(y)m(ed)g(in)g(a)h(form)f(that)g(ma)m(y)h
-(b)s(e)f(reused)f(as)i(input.)39 b(Other)29 b(options)g(ha)m(v)m(e)i
-(the)630 847 y(follo)m(wing)h(meanings:)630 1004 y Ft(-s)384
+b(with)630 2318 y(the)k Ft(-o)f Fu(option)i(to)f(the)g
+Ft(set)f Fu(builtin)h(command)f(\(see)i(Section)g(4.3.1)g([The)f(Set)g
+(Builtin],)630 2427 y(page)i(67\).)45 b(With)32 b(no)f(options,)h(or)g
+(with)f(the)g Ft(-p)g Fu(option,)h(a)g(list)g(of)f(all)i(settable)g
+(options)630 2537 y(is)g(displa)m(y)m(ed,)i(with)e(an)g(indication)h
+(of)f(whether)g(or)g(not)g(eac)m(h)h(is)g(set;)h(if)e
+Fr(optname)5 b Fu(s)34 b(are)630 2647 y(supplied,)25
+b(the)g(output)g(is)g(restricted)g(to)h(those)g(options.)39
+b(The)24 b Ft(-p)h Fu(option)g(causes)g(output)630 2756
+y(to)30 b(b)s(e)f(displa)m(y)m(ed)g(in)g(a)h(form)f(that)g(ma)m(y)h(b)s
+(e)f(reused)f(as)i(input.)39 b(Other)29 b(options)g(ha)m(v)m(e)i(the)
+630 2866 y(follo)m(wing)h(meanings:)630 3013 y Ft(-s)384
b Fu(Enable)30 b(\(set\))i(eac)m(h)f Fr(optname)p Fu(.)630
-1161 y Ft(-u)384 b Fu(Disable)31 b(\(unset\))g(eac)m(h)h
-Fr(optname)p Fu(.)630 1319 y Ft(-q)384 b Fu(Suppresses)28
+3160 y Ft(-u)384 b Fu(Disable)31 b(\(unset\))g(eac)m(h)h
+Fr(optname)p Fu(.)630 3307 y Ft(-q)384 b Fu(Suppresses)28
b(normal)h(output;)h(the)g(return)e(status)i(indicates)h(whether)e(the)
-1110 1428 y Fr(optname)37 b Fu(is)31 b(set)h(or)f(unset.)43
+1110 3417 y Fr(optname)37 b Fu(is)31 b(set)h(or)f(unset.)43
b(If)31 b(m)m(ultiple)h Fr(optname)37 b Fu(argumen)m(ts)31
-b(are)h(giv)m(en)1110 1538 y(with)d Ft(-q)p Fu(,)g(the)g(return)f
-(status)h(is)g(zero)h(if)f(all)h Fr(optnames)j Fu(are)d(enabled;)f
-(non-)1110 1647 y(zero)i(otherwise.)630 1805 y Ft(-o)384
-b Fu(Restricts)22 b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27
-b Fu(to)22 b(b)s(e)e(those)i(de\014ned)e(for)h(the)g
-Ft(-o)f Fu(option)1110 1914 y(to)31 b(the)g Ft(set)e
+b(are)h(giv)m(en)1110 3527 y(with)d Ft(-q)p Fu(,)f(the)i(return)d
+(status)j(is)f(zero)g(if)g(all)h Fr(optname)5 b Fu(s)29
+b(are)h(enabled;)f(non-)1110 3636 y(zero)i(otherwise.)630
+3784 y Ft(-o)384 b Fu(Restricts)22 b(the)f(v)-5 b(alues)22
+b(of)f Fr(optname)27 b Fu(to)22 b(b)s(e)e(those)i(de\014ned)e(for)h
+(the)g Ft(-o)f Fu(option)1110 3893 y(to)31 b(the)g Ft(set)e
Fu(builtin)h(\(see)h(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f
-(62\).)630 2071 y(If)e(either)i Ft(-s)e Fu(or)h Ft(-u)f
+(67\).)630 4040 y(If)e(either)i Ft(-s)e Fu(or)h Ft(-u)f
Fu(is)h(used)f(with)g(no)h Fr(optname)35 b Fu(argumen)m(ts,)c
-Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 2181 y(options)h(whic)m(h)f
+Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 4150 y(options)h(whic)m(h)f
(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m(ely)-8 b(.)630
-2314 y(Unless)30 b(otherwise)h(noted,)g(the)g Ft(shopt)d
+4278 y(Unless)30 b(otherwise)h(noted,)g(the)g Ft(shopt)d
Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32 b(b)m(y)e(default.)630
-2448 y(The)d(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i
-(if)e(all)i Fr(optnames)i Fu(are)d(enabled,)g(non-)630
-2557 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g
-(options,)i(the)e(return)f(status)h(is)g(zero)630 2667
+4407 y(The)d(return)f(status)i(when)e(listing)j(options)e(is)h(zero)g
+(if)f(all)i Fr(optname)5 b Fu(s)27 b(are)h(enabled,)g(non-)630
+4516 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g
+(options,)i(the)e(return)f(status)h(is)g(zero)630 4626
y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5
-b(alid)30 b(shell)h(option.)630 2800 y(The)f(list)h(of)f
-Ft(shopt)f Fu(options)i(is:)630 2958 y Ft(assoc_expand_once)1110
-3067 y Fu(If)h(set,)i(the)e(shell)h(suppresses)e(m)m(ultiple)i(ev)-5
+b(alid)30 b(shell)h(option.)630 4754 y(The)f(list)h(of)f
+Ft(shopt)f Fu(options)i(is:)630 4902 y Ft(assoc_expand_once)1110
+5011 y Fu(If)h(set,)i(the)e(shell)h(suppresses)e(m)m(ultiple)i(ev)-5
b(aluation)34 b(of)e(asso)s(ciativ)m(e)j(arra)m(y)1110
-3177 y(subscripts)24 b(during)h(arithmetic)h(expression)g(ev)-5
-b(aluation,)28 b(while)e(executing)1110 3286 y(builtins)c(that)i(can)f
+5121 y(subscripts)24 b(during)h(arithmetic)h(expression)g(ev)-5
+b(aluation,)28 b(while)e(executing)1110 5230 y(builtins)c(that)i(can)f
(p)s(erform)f(v)-5 b(ariable)24 b(assignmen)m(ts,)h(and)e(while)g
-(executing)1110 3396 y(builtins)30 b(that)h(p)s(erform)e(arra)m(y)i
-(dereferencing.)630 3553 y Ft(autocd)192 b Fu(If)27 b(set,)h(a)g
-(command)f(name)g(that)h(is)f(the)g(name)g(of)h(a)f(directory)h(is)f
-(executed)1110 3663 y(as)j(if)f(it)h(w)m(ere)f(the)h(argumen)m(t)g(to)g
-(the)f Ft(cd)g Fu(command.)40 b(This)29 b(option)g(is)h(only)1110
-3772 y(used)g(b)m(y)g(in)m(teractiv)m(e)j(shells.)630
-3930 y Ft(cdable_vars)1110 4039 y Fu(If)h(this)h(is)g(set,)i(an)e
-(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i(is)f
-(not)1110 4149 y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h
+(executing)1110 5340 y(builtins)30 b(that)h(p)s(erform)e(arra)m(y)i
+(dereferencing.)p eop end
+%%Page: 72 78
+TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(72)630 299 y Ft(autocd)192
+b Fu(If)27 b(set,)h(a)g(command)f(name)g(that)h(is)f(the)g(name)g(of)h
+(a)f(directory)h(is)f(executed)1110 408 y(as)j(if)f(it)h(w)m(ere)f(the)
+h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 b(This)29
+b(option)g(is)h(only)1110 518 y(used)g(b)m(y)g(in)m(teractiv)m(e)j
+(shells.)630 682 y Ft(cdable_vars)1110 792 y Fu(If)h(this)h(is)g(set,)i
+(an)e(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i
+(is)f(not)1110 902 y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h
(name)f(of)h(a)g(v)-5 b(ariable)31 b(whose)g(v)-5 b(alue)31
-b(is)1110 4258 y(the)g(directory)f(to)i(c)m(hange)f(to.)630
-4416 y Ft(cdspell)144 b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g
+b(is)1110 1011 y(the)g(directory)f(to)i(c)m(hange)f(to.)630
+1176 y Ft(cdspell)144 b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g
(sp)s(elling)h(of)f(a)g(directory)h(comp)s(onen)m(t)f(in)g(a)h
-Ft(cd)1110 4525 y Fu(command)i(will)h(b)s(e)f(corrected.)43
+Ft(cd)1110 1285 y Fu(command)i(will)h(b)s(e)f(corrected.)43
b(The)30 b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110
-4635 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47
+1395 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47
b(and)40 b(a)i(c)m(haracter)h(to)s(o)g(man)m(y)-8 b(.)74
-b(If)42 b(a)1110 4744 y(correction)25 b(is)e(found,)g(the)h(corrected)g
-(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 4854
+b(If)42 b(a)1110 1504 y(correction)25 b(is)e(found,)g(the)h(corrected)g
+(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 1614
y(pro)s(ceeds.)40 b(This)30 b(option)h(is)f(only)h(used)e(b)m(y)h(in)m
-(teractiv)m(e)k(shells.)630 5011 y Ft(checkhash)1110
-5121 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f
-(command)f(found)g(in)g(the)h(hash)f(table)1110 5230
+(teractiv)m(e)k(shells.)630 1778 y Ft(checkhash)1110
+1888 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f
+(command)f(found)g(in)g(the)h(hash)f(table)1110 1998
y(exists)k(b)s(efore)f(trying)h(to)h(execute)g(it.)48
-b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 5340
-y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)p
-eop end
-%%Page: 68 74
-TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft(checkjobs)1110
-408 y Fu(If)28 b(set,)i(Bash)e(lists)h(the)g(status)g(of)f(an)m(y)h
-(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore)1110 518
-y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 b(If)41
-b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110
-628 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h
-(exit)g(is)g(attempted)h(without)e(an)1110 737 y(in)m(terv)m(ening)d
-(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(107\).)40
-b(The)1110 847 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h
-(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 1029 y Ft(checkwinsize)1110
-1139 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h
-(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 1249
+b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 2107
+y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630
+2271 y Ft(checkjobs)1110 2381 y Fu(If)d(set,)i(Bash)e(lists)h(the)g
+(status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore)
+1110 2491 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72
+b(If)41 b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110
+2600 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h
+(exit)g(is)g(attempted)h(without)e(an)1110 2710 y(in)m(terv)m(ening)d
+(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(113\).)40
+b(The)1110 2819 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h
+(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2984 y Ft(checkwinsize)1110
+3093 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h
+(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 3203
y(command)55 b(and,)60 b(if)55 b(necessary)-8 b(,)62
b(up)s(dates)54 b(the)h(v)-5 b(alues)55 b(of)g Ft(LINES)f
-Fu(and)1110 1358 y Ft(COLUMNS)p Fu(.)39 b(This)29 b(option)i(is)g
-(enabled)f(b)m(y)g(default.)630 1541 y Ft(cmdhist)144
+Fu(and)1110 3313 y Ft(COLUMNS)p Fu(.)39 b(This)29 b(option)i(is)g
+(enabled)f(b)m(y)g(default.)630 3477 y Ft(cmdhist)144
b Fu(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)g(lines)f
-(of)g(a)h(m)m(ultiple-line)g(command)1110 1650 y(in)c(the)g(same)g
+(of)g(a)h(m)m(ultiple-line)g(command)1110 3587 y(in)c(the)g(same)g
(history)g(en)m(try)-8 b(.)42 b(This)30 b(allo)m(ws)i(easy)g
-(re-editing)g(of)f(m)m(ulti-line)1110 1760 y(commands.)79
+(re-editing)g(of)f(m)m(ulti-line)1110 3696 y(commands.)79
b(This)43 b(option)g(is)h(enabled)f(b)m(y)g(default,)k(but)c(only)g
-(has)g(an)1110 1870 y(e\013ect)30 b(if)e(command)g(history)g(is)h
+(has)g(an)1110 3806 y(e\013ect)30 b(if)e(command)g(history)g(is)h
(enabled)f(\(see)h(Section)g(9.1)h([Bash)e(History)1110
-1979 y(F)-8 b(acilities],)34 b(page)d(146\).)630 2162
-y Ft(compat31)630 2271 y(compat32)630 2381 y(compat40)630
-2491 y(compat41)630 2600 y(compat42)630 2710 y(compat43)630
-2819 y(compat44)96 b Fu(These)39 b(con)m(trol)i(asp)s(ects)f(of)f(the)h
+3915 y(F)-8 b(acilities],)34 b(page)d(152\).)630 4080
+y Ft(compat31)630 4189 y(compat32)630 4299 y(compat40)630
+4408 y(compat41)630 4518 y(compat42)630 4628 y(compat43)630
+4737 y(compat44)96 b Fu(These)39 b(con)m(trol)i(asp)s(ects)f(of)f(the)h
(shell's)g(compatibilit)m(y)h(mo)s(de)e(\(see)h(Sec-)1110
-2929 y(tion)31 b(6.12)h([Shell)e(Compatibilit)m(y)i(Mo)s(de],)f(page)g
-(104\).)630 3112 y Ft(complete_fullquote)1110 3221 y
+4847 y(tion)31 b(6.12)h([Shell)e(Compatibilit)m(y)i(Mo)s(de],)f(page)g
+(110\).)630 5011 y Ft(complete_fullquote)1110 5121 y
Fu(If)g(set,)g(Bash)h(quotes)f(all)h(shell)f(metac)m(haracters)i(in)e
-(\014lenames)g(and)g(direc-)1110 3331 y(tory)g(names)f(when)g(p)s
+(\014lenames)g(and)g(direc-)1110 5230 y(tory)g(names)f(when)g(p)s
(erforming)f(completion.)43 b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m
-(es)1110 3440 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g
-(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)1110 3550
-y(that)f(will)g(b)s(e)f(quoted)g(in)g(completed)i(\014lenames)e(when)f
-(these)i(metac)m(har-)1110 3660 y(acters)29 b(app)s(ear)e(in)g(shell)h
-(v)-5 b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e
-(completed.)1110 3769 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)
--5 b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110
-3879 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,)
-g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 3988
+(es)1110 5340 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g
+(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)p eop end
+%%Page: 73 79
+TeXDict begin 73 78 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(73)1110 299 y(that)36
+b(will)g(b)s(e)f(quoted)g(in)g(completed)i(\014lenames)e(when)f(these)i
+(metac)m(har-)1110 408 y(acters)29 b(app)s(ear)e(in)g(shell)h(v)-5
+b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e(completed.)
+1110 518 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)-5
+b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110
+628 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,)g
+(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 737
y(\014lenames)j(will)h(not)f(b)s(e)g(quoted,)h(either.)41
b(This)28 b(is)i(activ)m(e)h(only)e(when)g(bash)1110
-4098 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f
-(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 4208
+847 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f
+(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 956
y(is)41 b(set)g(b)m(y)g(default,)j(whic)m(h)c(is)h(the)g(default)g
-(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 4317 y(through)30
-b(4.2.)630 4500 y Ft(direxpand)1110 4609 y Fu(If)k(set,)i(Bash)f
+(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 1066 y(through)30
+b(4.2.)630 1244 y Ft(direxpand)1110 1354 y Fu(If)k(set,)i(Bash)f
(replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g
-(ex-)1110 4719 y(pansion)k(when)g(p)s(erforming)f(\014lename)i
-(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 4829
-y(con)m(ten)m(ts)29 b(of)e(the)g(readline)h(editing)g(bu\013er.)38
-b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 4938
-y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)630
-5121 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s
-(elling)g(correction)g(on)g(directory)g(names)f(during)1110
-5230 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g
-(initially)h(supplied)e(do)s(es)h(not)1110 5340 y(exist.)p
-eop end
-%%Page: 69 75
-TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(69)630 299 y Ft(dotglob)144
-b Fu(If)36 b(set,)i(Bash)e(includes)g(\014lenames)g(b)s(eginning)f
-(with)h(a)g(`.')58 b(in)36 b(the)g(results)1110 408 y(of)f(\014lename)f
-(expansion.)53 b(The)33 b(\014lenames)i(`)p Ft(.)p Fu(')f(and)g(`)p
-Ft(..)p Fu(')g(m)m(ust)h(alw)m(a)m(ys)h(b)s(e)1110 518
+(ex-)1110 1463 y(pansion)k(when)g(p)s(erforming)f(\014lename)i
+(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 1573
+y(con)m(ten)m(ts)c(of)e(the)h(Readline)f(editing)h(bu\013er.)52
+b(If)33 b(not)i(set,)h(Bash)e(attempts)1110 1682 y(to)d(preserv)m(e)g
+(what)f(the)g(user)g(t)m(yp)s(ed.)630 1861 y Ft(dirspell)96
+b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s(elling)g(correction)g(on)g
+(directory)g(names)f(during)1110 1970 y(w)m(ord)36 b(completion)h(if)f
+(the)g(directory)g(name)g(initially)h(supplied)e(do)s(es)h(not)1110
+2080 y(exist.)630 2258 y Ft(dotglob)144 b Fu(If)36 b(set,)i(Bash)e
+(includes)g(\014lenames)g(b)s(eginning)f(with)h(a)g(`.')58
+b(in)36 b(the)g(results)1110 2367 y(of)f(\014lename)f(expansion.)53
+b(The)33 b(\014lenames)i(`)p Ft(.)p Fu(')f(and)g(`)p
+Ft(..)p Fu(')g(m)m(ust)h(alw)m(a)m(ys)h(b)s(e)1110 2477
y(matc)m(hed)31 b(explicitly)-8 b(,)33 b(ev)m(en)e(if)f
-Ft(dotglob)f Fu(is)h(set.)630 682 y Ft(execfail)96 b
+Ft(dotglob)f Fu(is)h(set.)630 2655 y Ft(execfail)96 b
Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m(teractiv)m(e)i(shell)e(will)
-f(not)h(exit)h(if)e(it)h(cannot)h(execute)1110 792 y(the)i(\014le)g(sp)
-s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)h(the)f Ft(exec)f
-Fu(builtin)h(command.)39 b(An)1110 902 y(in)m(teractiv)m(e)33
-b(shell)e(do)s(es)f(not)g(exit)i(if)e Ft(exec)f Fu(fails.)630
-1066 y Ft(expand_aliases)1110 1176 y Fu(If)j(set,)h(aliases)g(are)g
+f(not)h(exit)h(if)e(it)h(cannot)h(execute)1110 2765 y(the)i(\014le)g
+(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to)h(the)f
+Ft(exec)f Fu(builtin)h(command.)39 b(An)1110 2874 y(in)m(teractiv)m(e)
+33 b(shell)e(do)s(es)f(not)g(exit)i(if)e Ft(exec)f Fu(fails.)630
+3052 y Ft(expand_aliases)1110 3162 y Fu(If)j(set,)h(aliases)g(are)g
(expanded)e(as)h(describ)s(ed)f(b)s(elo)m(w)h(under)f(Aliases,)i(Sec-)
-1110 1285 y(tion)38 b(6.6)h([Aliases],)j(page)d(94.)64
-b(This)37 b(option)h(is)g(enabled)g(b)m(y)g(default)g(for)1110
-1395 y(in)m(teractiv)m(e)33 b(shells.)630 1559 y Ft(extdebug)96
+1110 3271 y(tion)i(6.6)h([Aliases],)h(page)e(100.)55
+b(This)33 b(option)i(is)g(enabled)f(b)m(y)h(default)f(for)1110
+3381 y(in)m(teractiv)m(e)f(shells.)630 3559 y Ft(extdebug)96
b Fu(If)35 b(set)i(at)f(shell)g(in)m(v)m(o)s(cation,)k(or)c(in)f(a)h
(shell)h(startup)e(\014le,)i(arrange)g(to)f(ex-)1110
-1669 y(ecute)h(the)f(debugger)g(pro\014le)g(b)s(efore)g(the)g(shell)h
-(starts,)h(iden)m(tical)g(to)f(the)1110 1778 y Ft(--debugger)32
+3669 y(ecute)h(the)f(debugger)g(pro\014le)g(b)s(efore)g(the)g(shell)h
+(starts,)h(iden)m(tical)g(to)f(the)1110 3778 y Ft(--debugger)32
b Fu(option.)56 b(If)35 b(set)h(after)g(in)m(v)m(o)s(cation,)j(b)s(eha)
-m(vior)c(in)m(tended)g(for)1110 1888 y(use)30 b(b)m(y)g(debuggers)g(is)
-h(enabled:)1159 2025 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g
+m(vior)c(in)m(tended)g(for)1110 3888 y(use)30 b(b)m(y)g(debuggers)g(is)
+h(enabled:)1159 4032 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g
Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290
-2134 y(Builtins],)29 b(page)g(51\))g(displa)m(ys)f(the)g(source)h
-(\014le)f(name)g(and)f(line)h(n)m(um-)1290 2244 y(b)s(er)h(corresp)s
+4141 y(Builtins],)29 b(page)g(55\))g(displa)m(ys)f(the)g(source)h
+(\014le)f(name)g(and)f(line)h(n)m(um-)1290 4251 y(b)s(er)h(corresp)s
(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-)
-1290 2354 y(men)m(t.)1159 2491 y(2.)61 b(If)20 b(the)h(command)g(run)e
+1290 4361 y(men)m(t.)1159 4504 y(2.)61 b(If)20 b(the)h(command)g(run)e
(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5
-b(alue,)1290 2600 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g
-(not)i(executed.)1159 2737 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m
+b(alue,)1290 4614 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g
+(not)i(executed.)1159 4758 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m
(y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38
-b(of)f(2,)1290 2847 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h
-(subroutine)e(\(a)i(shell)g(function)f(or)1290 2956 y(a)h(shell)g
+b(of)f(2,)1290 4867 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h
+(subroutine)e(\(a)i(shell)g(function)f(or)1290 4977 y(a)h(shell)g
(script)f(executed)h(b)m(y)g(the)f Ft(.)h Fu(or)f Ft(source)f
-Fu(builtins\),)i(the)g(shell)1290 3066 y(sim)m(ulates)d(a)g(call)h(to)f
-Ft(return)p Fu(.)1159 3203 y(4.)61 b Ft(BASH_ARGC)34
+Fu(builtins\),)i(the)g(shell)1290 5087 y(sim)m(ulates)d(a)g(call)h(to)f
+Ft(return)p Fu(.)1159 5230 y(4.)61 b Ft(BASH_ARGC)34
b Fu(and)i Ft(BASH_ARGV)e Fu(are)j(up)s(dated)e(as)h(describ)s(ed)g(in)
-g(their)1290 3313 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g
-(V)-8 b(ariables],)32 b(page)f(73\).)1159 3450 y(5.)61
+g(their)1290 5340 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g
+(V)-8 b(ariables],)32 b(page)f(78\).)p eop end
+%%Page: 74 80
+TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(74)1159 299 y(5.)61
b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56
-b(substitution,)63 b(shell)1290 3559 y(functions,)32
-b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f
-Fj(command)e Ft(\))j Fu(inherit)h(the)1290 3669 y Ft(DEBUG)d
-Fu(and)h Ft(RETURN)e Fu(traps.)1159 3806 y(6.)61 b(Error)41
-b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f
-(func-)1290 3915 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i
-(with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g
-Ft(ERR)1290 4025 y Fu(trap.)630 4189 y Ft(extglob)144
-b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g
-(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4299 y(Section)j(3.5.8.1)i
-([P)m(attern)f(Matc)m(hing],)g(page)f(33\))h(are)f(enabled.)630
-4463 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p
-Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e
-Fu(quoting)k(is)e(p)s(erformed)f(within)1110 4573 y Ft(${)p
-Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f
-(quotes.)55 b(This)33 b(option)1110 4682 y(is)d(enabled)h(b)m(y)f
-(default.)630 4847 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d
-(whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g
-(ex-)1110 4956 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630
-5121 y Ft(force_fignore)1110 5230 y Fu(If)43 b(set,)k(the)d(su\016xes)f
+b(substitution,)63 b(shell)1290 408 y(functions,)32 b(and)e(subshells)h
+(in)m(v)m(ok)m(ed)i(with)e Ft(\()f Fj(command)e Ft(\))j
+Fu(inherit)h(the)1290 518 y Ft(DEBUG)d Fu(and)h Ft(RETURN)e
+Fu(traps.)1159 662 y(6.)61 b(Error)41 b(tracing)i(is)f(enabled:)63
+b(command)42 b(substitution,)i(shell)f(func-)1290 772
+y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i(with)e
+Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g Ft(ERR)1290
+881 y Fu(trap.)630 1060 y Ft(extglob)144 b Fu(If)26 b(set,)i(the)f
+(extended)f(pattern)h(matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m
+(v)m(e)j(\(see)1110 1170 y(Section)j(3.5.8.1)i([P)m(attern)f(Matc)m
+(hing],)g(page)f(36\))h(are)f(enabled.)630 1349 y Ft(extquote)96
+b Fu(If)51 b(set,)58 b Ft($')p Fj(string)p Ft(')49 b
+Fu(and)i Ft($")p Fj(string)p Ft(")e Fu(quoting)k(is)e(p)s(erformed)f
+(within)1110 1458 y Ft(${)p Fj(parameter)p Ft(})31 b
+Fu(expansions)k(enclosed)g(in)g(double)f(quotes.)55 b(This)33
+b(option)1110 1568 y(is)d(enabled)h(b)m(y)f(default.)630
+1747 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d(whic)m(h)g(fail)h
+(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g(ex-)1110
+1856 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630
+2035 y Ft(force_fignore)1110 2145 y Fu(If)43 b(set,)k(the)d(su\016xes)f
(sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5
-b(ariable)44 b(cause)1110 5340 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h
-(when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)p
-eop end
-%%Page: 70 76
-TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(70)1110 299 y(ignored)37
-b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g(completions.)62
-b(See)37 b(Section)h(5.2)1110 408 y([Bash)24 b(V)-8 b(ariables],)27
-b(page)e(73,)h(for)d(a)h(description)g(of)g Ft(FIGNORE)p
-Fu(.)37 b(This)22 b(option)1110 518 y(is)30 b(enabled)h(b)m(y)f
-(default.)630 701 y Ft(globasciiranges)1110 810 y Fu(If)j(set,)h(range)
-f(expressions)g(used)f(in)h(pattern)g(matc)m(hing)h(brac)m(k)m(et)h
-(expres-)1110 920 y(sions)28 b(\(see)h(Section)h(3.5.8.1)g([P)m(attern)
-g(Matc)m(hing],)h(page)e(33\))g(b)s(eha)m(v)m(e)g(as)g(if)1110
-1029 y(in)i(the)g(traditional)i(C)d(lo)s(cale)j(when)d(p)s(erforming)g
-(comparisons.)44 b(That)31 b(is,)1110 1139 y(the)d(curren)m(t)g(lo)s
-(cale's)i(collating)h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g
-(accoun)m(t,)i(so)1110 1249 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i
-(b)s(et)m(w)m(een)e(`)p Ft(A)p Fu(')g(and)f(`)p Ft(B)p
-Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m(w)m(er-)1110
-1358 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i(together.)630
-1541 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern)f(`)p
-Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m(text)j
-(will)1110 1650 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or)f(more)
-g(directories)h(and)e(sub)s(directories.)54 b(If)1110
-1760 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p
-Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110
-1870 y(matc)m(h.)630 2052 y Ft(gnu_errfmt)1110 2162 y
-Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g
-(standard)f Fm(gnu)g Fu(error)1110 2271 y(message)c(format.)630
-2454 y Ft(histappend)1110 2564 y Fu(If)c(set,)j(the)e(history)g(list)g
+b(ariable)44 b(cause)1110 2254 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h
+(when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)1110
+2364 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g
+(completions.)62 b(See)37 b(Section)h(5.2)1110 2473 y([Bash)24
+b(V)-8 b(ariables],)27 b(page)e(78,)h(for)d(a)h(description)g(of)g
+Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 2583 y(is)30
+b(enabled)h(b)m(y)f(default.)630 2762 y Ft(globasciiranges)1110
+2871 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc)
+m(hing)h(brac)m(k)m(et)h(expres-)1110 2981 y(sions)28
+b(\(see)h(Section)h(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e
+(36\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 3091 y(in)i(the)g(traditional)i
+(C)d(lo)s(cale)j(when)d(p)s(erforming)g(comparisons.)44
+b(That)31 b(is,)1110 3200 y(the)d(curren)m(t)g(lo)s(cale's)i(collating)
+h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110
+3310 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p
+Ft(A)p Fu(')g(and)f(`)p Ft(B)p Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m
+(w)m(er-)1110 3419 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i
+(together.)630 3598 y Ft(globskipdots)1110 3708 y Fu(If)38
+b(set,)k(\014lename)d(expansion)f(will)h(nev)m(er)g(matc)m(h)h(the)f
+(\014lenames)g(`)p Ft(.)p Fu(')g(and)1110 3817 y(`)p
+Ft(..)p Fu(',)c(ev)m(en)g(if)g(the)f(pattern)g(b)s(egins)g(with)g(a)h
+(`)p Ft(.)p Fu('.)52 b(This)34 b(option)h(is)f(enabled)1110
+3927 y(b)m(y)c(default.)630 4106 y Ft(globstar)96 b Fu(If)38
+b(set,)j(the)e(pattern)f(`)p Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)
+h(expansion)f(con)m(text)j(will)1110 4215 y(matc)m(h)36
+b(all)g(\014les)f(and)f(zero)i(or)f(more)g(directories)h(and)e(sub)s
+(directories.)54 b(If)1110 4325 y(the)30 b(pattern)g(is)g(follo)m(w)m
+(ed)i(b)m(y)d(a)i(`)p Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s
+(directories)1110 4434 y(matc)m(h.)630 4613 y Ft(gnu_errfmt)1110
+4723 y Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)
+h(the)g(standard)f Fm(gnu)g Fu(error)1110 4832 y(message)c(format.)630
+5011 y Ft(histappend)1110 5121 y Fu(If)c(set,)j(the)e(history)g(list)g
(is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5
-b(alue)29 b(of)1110 2673 y(the)d Ft(HISTFILE)d Fu(v)-5
+b(alue)29 b(of)1110 5230 y(the)d Ft(HISTFILE)d Fu(v)-5
b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m
-(erwriting)1110 2783 y(the)31 b(\014le.)630 2966 y Ft(histreedit)1110
-3075 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g
+(erwriting)1110 5340 y(the)31 b(\014le.)p eop end
+%%Page: 75 81
+TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(75)630 299 y Ft(histreedit)1110
+408 y Fu(If)33 b(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g
(user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110
-3185 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630
-3367 y Ft(histverify)1110 3477 y Fu(If)35 b(set,)i(and)e(Readline)h(is)
-f(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110
-3587 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g
-(parser.)59 b(Instead,)38 b(the)1110 3696 y(resulting)i(line)f(is)h
+518 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630
+682 y Ft(histverify)1110 792 y Fu(If)35 b(set,)i(and)e(Readline)h(is)f
+(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110
+902 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g
+(parser.)59 b(Instead,)38 b(the)1110 1011 y(resulting)i(line)f(is)h
(loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing)
-1110 3806 y(further)29 b(mo)s(di\014cation.)630 3988
-y Ft(hostcomplete)1110 4098 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f
+1110 1121 y(further)29 b(mo)s(di\014cation.)630 1285
+y Ft(hostcomplete)1110 1395 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f
(b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110
-4208 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f
-(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 4317 y(pleted)g(\(see)h
+1504 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f
+(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 1614 y(pleted)g(\(see)h
(Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g
-(133\).)1110 4427 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)
-630 4609 y Ft(huponexit)1110 4719 y Fu(If)i(set,)i(Bash)f(will)h(send)d
+(139\).)1110 1724 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)
+630 1888 y Ft(huponexit)1110 1998 y Fu(If)i(set,)i(Bash)f(will)h(send)d
Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login)
-1110 4829 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g
-(page)f(42\).)630 5011 y Ft(inherit_errexit)1110 5121
+1110 2107 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g
+(page)f(45\).)630 2271 y Ft(inherit_errexit)1110 2381
y Fu(If)e(set,)h(command)g(substitution)f(inherits)g(the)g(v)-5
-b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 5230
+b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 2491
y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m
-(vironmen)m(t.)46 b(This)32 b(op-)1110 5340 y(tion)f(is)f(enabled)h
-(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)p eop end
-%%Page: 71 77
-TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(71)630 299 y Ft
-(interactive_comments)1110 408 y Fu(Allo)m(w)27 b(a)g(w)m(ord)e(b)s
+(vironmen)m(t.)46 b(This)32 b(op-)1110 2600 y(tion)f(is)f(enabled)h
+(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)630 2765
+y Ft(interactive_comments)1110 2874 y Fu(Allo)m(w)d(a)g(w)m(ord)e(b)s
(eginning)g(with)h(`)p Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and)
-f(all)i(remain-)1110 518 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g
+f(all)i(remain-)1110 2984 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g
(to)g(b)s(e)f(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110
-628 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630
-777 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f
+3093 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630
+3258 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f
(not)f(activ)m(e,)k(the)d(shell)f(runs)f(the)i(last)g(command)1110
-887 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m
-(kground)g(in)g(the)g(curren)m(t)g(shell)1110 996 y(en)m(vironmen)m(t.)
-630 1146 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h
+3367 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m
+(kground)g(in)g(the)g(curren)m(t)g(shell)1110 3477 y(en)m(vironmen)m
+(t.)630 3641 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h
Ft(cmdhist)e Fu(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110
-1255 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s
-(edded)g(newlines)h(rather)g(than)f(using)1110 1365 y(semicolon)32
-b(separators)f(where)e(p)s(ossible.)630 1514 y Ft(localvar_inherit)1110
-1624 y Fu(If)j(set,)h(lo)s(cal)g(v)-5 b(ariables)33 b(inherit)f(the)g
+3751 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s
+(edded)g(newlines)h(rather)g(than)f(using)1110 3861 y(semicolon)32
+b(separators)f(where)e(p)s(ossible.)630 4025 y Ft(localvar_inherit)1110
+4134 y Fu(If)j(set,)h(lo)s(cal)g(v)-5 b(ariables)33 b(inherit)f(the)g
(v)-5 b(alue)32 b(and)g(attributes)h(of)f(a)g(v)-5 b(ariable)1110
-1733 y(of)36 b(the)g(same)g(name)g(that)h(exists)f(at)h(a)f(previous)g
-(scop)s(e)g(b)s(efore)f(an)m(y)h(new)1110 1843 y(v)-5
-b(alue)31 b(is)f(assigned.)41 b(The)30 b Fr(nameref)48
-b Fu(attribute)31 b(is)f(not)h(inherited.)630 1993 y
-Ft(localvar_unset)1110 2102 y Fu(If)i(set,)i(calling)g
-Ft(unset)d Fu(on)i(lo)s(cal)g(v)-5 b(ariables)35 b(in)e(previous)g
-(function)g(scop)s(es)1110 2212 y(marks)26 b(them)g(so)g(subsequen)m(t)
-g(lo)s(okups)f(\014nd)g(them)h(unset)f(un)m(til)i(that)g(func-)1110
-2321 y(tion)40 b(returns.)68 b(This)39 b(is)g(iden)m(tical)j(to)e(the)g
-(b)s(eha)m(vior)g(of)g(unsetting)g(lo)s(cal)1110 2431
-y(v)-5 b(ariables)31 b(at)g(the)g(curren)m(t)f(function)g(scop)s(e.)630
-2580 y Ft(login_shell)1110 2690 y Fu(The)35 b(shell)h(sets)g(this)f
-(option)h(if)g(it)g(is)f(started)h(as)g(a)g(login)g(shell)g(\(see)g
-(Sec-)1110 2800 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g
-(86\).)41 b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m
-(hanged.)630 2949 y Ft(mailwarn)96 b Fu(If)34 b(set,)i(and)e(a)h
-(\014le)g(that)g(Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s
-(een)g(accessed)1110 3059 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)
-f(c)m(hec)m(k)m(ed,)k(the)c(message)h Ft("The)k(mail)h(in)f
-Fj(mail-)1110 3168 y(file)g Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)
-m(ed.)630 3318 y Ft(no_empty_cmd_completion)1110 3427
-y Fu(If)g(set,)g(and)g(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g
-(not)g(attempt)i(to)e(searc)m(h)1110 3537 y(the)25 b
-Ft(PATH)f Fu(for)h(p)s(ossible)f(completions)j(when)d(completion)i(is)f
-(attempted)h(on)1110 3646 y(an)k(empt)m(y)h(line.)630
-3796 y Ft(nocaseglob)1110 3905 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g
-(\014lenames)g(in)f(a)h(case-insensitiv)m(e)j(fashion)c(when)1110
-4015 y(p)s(erforming)29 b(\014lename)i(expansion.)630
-4164 y Ft(nocasematch)1110 4274 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g
-(patterns)g(in)f(a)h(case-insensitiv)m(e)i(fashion)d(when)1110
-4384 y(p)s(erforming)31 b(matc)m(hing)i(while)f(executing)i
-Ft(case)d Fu(or)h Ft([[)g Fu(conditional)h(com-)1110
-4493 y(mands,)d(when)g(p)s(erforming)g(pattern)h(substitution)g(w)m
-(ord)g(expansions,)g(or)1110 4603 y(when)g(\014ltering)i(p)s(ossible)f
-(completions)h(as)g(part)f(of)h(programmable)f(com-)1110
-4712 y(pletion.)630 4862 y Ft(nullglob)96 b Fu(If)23
-b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m(h)f(matc)m
-(h)h(no)g(\014les)f(to)i(expand)1110 4971 y(to)31 b(a)g(n)m(ull)f
-(string,)h(rather)f(than)g(themselv)m(es.)630 5121 y
-Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g(completion)g
-(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 5230
-y(grammable)45 b(Completion],)k(page)c(137\))h(are)f(enabled.)82
-b(This)44 b(option)h(is)1110 5340 y(enabled)30 b(b)m(y)h(default.)p
+4244 y(of)36 b(the)g(same)g(name)g(that)h(exists)f(at)h(a)f(previous)g
+(scop)s(e)g(b)s(efore)f(an)m(y)h(new)1110 4354 y(v)-5
+b(alue)31 b(is)f(assigned.)41 b(The)30 b Ft(nameref)e
+Fu(attribute)k(is)e(not)h(inherited.)630 4518 y Ft(localvar_unset)1110
+4628 y Fu(If)i(set,)i(calling)g Ft(unset)d Fu(on)i(lo)s(cal)g(v)-5
+b(ariables)35 b(in)e(previous)g(function)g(scop)s(es)1110
+4737 y(marks)26 b(them)g(so)g(subsequen)m(t)g(lo)s(okups)f(\014nd)g
+(them)h(unset)f(un)m(til)i(that)g(func-)1110 4847 y(tion)40
+b(returns.)68 b(This)39 b(is)g(iden)m(tical)j(to)e(the)g(b)s(eha)m
+(vior)g(of)g(unsetting)g(lo)s(cal)1110 4956 y(v)-5 b(ariables)31
+b(at)g(the)g(curren)m(t)f(function)g(scop)s(e.)630 5121
+y Ft(login_shell)1110 5230 y Fu(The)35 b(shell)h(sets)g(this)f(option)h
+(if)g(it)g(is)f(started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110
+5340 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(91\).)41
+b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m(hanged.)p
eop end
-%%Page: 72 78
-TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(72)630 299 y Ft(progcomp_alias)
-1110 408 y Fu(If)23 b(set,)j(and)d(programmable)h(completion)h(is)f
-(enabled,)h(Bash)f(treats)h(a)f(com-)1110 518 y(mand)34
+%%Page: 76 82
+TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(76)630 299 y Ft(mailwarn)96
+b Fu(If)34 b(set,)i(and)e(a)h(\014le)g(that)g(Bash)f(is)h(c)m(hec)m
+(king)h(for)f(mail)g(has)f(b)s(een)g(accessed)1110 408
+y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m(ed,)k(the)
+c(message)h Ft("The)k(mail)h(in)f Fj(mail-)1110 518 y(file)g
+Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)630
+701 y Ft(no_empty_cmd_completion)1110 810 y Fu(If)g(set,)g(and)g
+(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e
+(searc)m(h)1110 920 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f
+(completions)j(when)d(completion)i(is)f(attempted)h(on)1110
+1029 y(an)k(empt)m(y)h(line.)630 1212 y Ft(nocaseglob)1110
+1322 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)g(in)f(a)h
+(case-insensitiv)m(e)j(fashion)c(when)1110 1431 y(p)s(erforming)29
+b(\014lename)i(expansion.)630 1614 y Ft(nocasematch)1110
+1724 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g(patterns)g(in)f(a)h
+(case-insensitiv)m(e)i(fashion)d(when)1110 1833 y(p)s(erforming)31
+b(matc)m(hing)i(while)f(executing)i Ft(case)d Fu(or)h
+Ft([[)g Fu(conditional)h(com-)1110 1943 y(mands)25 b(\(see)i(Section)f
+(3.2.5.2)j([Conditional)e(Constructs],)f(page)h(12,)h(when)1110
+2052 y(p)s(erforming)e(pattern)i(substitution)f(w)m(ord)g(expansions,)h
+(or)f(when)g(\014ltering)1110 2162 y(p)s(ossible)j(completions)h(as)g
+(part)f(of)h(programmable)f(completion.)630 2345 y Ft
+(noexpand_translation)1110 2454 y Fu(If)23 b(set,)j(Bash)d(encloses)i
+(the)e(translated)h(results)g(of)f($)p Ft(")p Fu(...)p
+Ft(")h Fu(quoting)g(in)f(single)1110 2564 y(quotes)k(instead)g(of)g
+(double)f(quotes.)40 b(If)26 b(the)h(string)f(is)h(not)g(translated,)h
+(this)1110 2673 y(has)i(no)g(e\013ect.)630 2856 y Ft(nullglob)96
+b Fu(If)23 b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m
+(h)f(matc)m(h)h(no)g(\014les)f(to)i(expand)1110 2966
+y(to)31 b(a)g(n)m(ull)f(string,)h(rather)f(than)g(themselv)m(es.)630
+3148 y Ft(patsub_replacement)1110 3258 y Fu(If)38 b(set,)k(Bash)d
+(expands)e(o)s(ccurrences)i(of)g(`)p Ft(&)p Fu(')g(in)f(the)h
+(replacemen)m(t)h(string)1110 3367 y(of)47 b(pattern)g(substitution)g
+(to)h(the)f(text)h(matc)m(hed)g(b)m(y)f(the)g(pattern,)52
+b(as)1110 3477 y(describ)s(ed)45 b(ab)s(o)m(v)m(e)i(\(see)f(Section)h
+(3.5.3)g([Shell)f(P)m(arameter)h(Expansion],)1110 3587
+y(page)31 b(26\).)42 b(This)30 b(option)g(is)h(enabled)f(b)m(y)g
+(default.)630 3769 y Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f
+(programmable)g(completion)g(facilities)i(\(see)f(Section)f(8.6)h
+([Pro-)1110 3879 y(grammable)45 b(Completion],)k(page)c(143\))h(are)f
+(enabled.)82 b(This)44 b(option)h(is)1110 3988 y(enabled)30
+b(b)m(y)h(default.)630 4171 y Ft(progcomp_alias)1110
+4281 y Fu(If)23 b(set,)j(and)d(programmable)h(completion)h(is)f
+(enabled,)h(Bash)f(treats)h(a)f(com-)1110 4390 y(mand)34
b(name)h(that)g(do)s(esn't)f(ha)m(v)m(e)i(an)m(y)g(completions)f(as)g
-(a)g(p)s(ossible)g(alias)1110 628 y(and)40 b(attempts)i(alias)h
+(a)g(p)s(ossible)g(alias)1110 4500 y(and)40 b(attempts)i(alias)h
(expansion.)72 b(If)41 b(it)g(has)g(an)g(alias,)k(Bash)c(attempts)1110
-737 y(programmable)28 b(completion)h(using)e(the)h(command)f(w)m(ord)h
-(resulting)f(from)1110 847 y(the)k(expanded)e(alias.)630
-1006 y Ft(promptvars)1110 1116 y Fu(If)50 b(set,)56 b(prompt)49
+4609 y(programmable)28 b(completion)h(using)e(the)h(command)f(w)m(ord)h
+(resulting)f(from)1110 4719 y(the)k(expanded)e(alias.)630
+4902 y Ft(promptvars)1110 5011 y Fu(If)50 b(set,)56 b(prompt)49
b(strings)h(undergo)g(parameter)h(expansion,)k(command)1110
-1225 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo)
-m(v)-5 b(al)35 b(after)f(b)s(eing)1110 1335 y(expanded)53
+5121 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo)
+m(v)-5 b(al)35 b(after)f(b)s(eing)1110 5230 y(expanded)53
b(as)h(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section)f(6.9)h([Con)m
-(trolling)g(the)1110 1445 y(Prompt],)30 b(page)h(98\).)42
-b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)630
-1604 y Ft(restricted_shell)1110 1714 y Fu(The)40 b(shell)h(sets)g(this)
-g(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see)
-1110 1823 y(Section)32 b(6.10)h([The)d(Restricted)j(Shell],)e(page)h
-(100\).)45 b(The)30 b(v)-5 b(alue)32 b(ma)m(y)g(not)1110
-1933 y(b)s(e)g(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f
-(the)h(startup)g(\014les)f(are)i(executed,)1110 2042
-y(allo)m(wing)k(the)e(startup)f(\014les)h(to)g(disco)m(v)m(er)h
-(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 2152
-y(stricted.)630 2311 y Ft(shift_verbose)1110 2421 y Fu(If)g(this)g(is)g
-(set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f(an)h(error)g(message)
-i(when)d(the)1110 2531 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m
-(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 2690 y
-Ft(sourcepath)1110 2800 y Fu(If)22 b(set,)j(the)e Ft(source)e
-Fu(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Ft(PATH)e
-Fu(to)j(\014nd)d(the)h(directory)1110 2909 y(con)m(taining)29
-b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m(t.)40
-b(This)27 b(option)h(is)f(enabled)1110 3019 y(b)m(y)j(default.)630
-3178 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e
-Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f
-(de-)1110 3288 y(fault.)150 3528 y Fs(4.4)68 b(Sp)t(ecial)45
-b(Builtins)150 3688 y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e
-Fm(posix)g Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e
-(commands)g(as)h Fl(sp)-5 b(e-)150 3797 y(cial)p Fu(.)47
-b(When)33 b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g
-(sp)s(ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150
-3907 y(commands)e(in)g(three)h(resp)s(ects:)199 4042
-y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h(shell)h
-(functions)f(during)f(command)h(lo)s(okup.)199 4176 y(2.)61
-b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error)g(status,)h
-(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 4311
-y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f(command)
-g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m(t)330
-4420 y(after)i(the)f(command)h(completes.)275 4579 y(When)36
-b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f
-(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150
-4689 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41
-b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h
-(Section)h(6.11)150 4799 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(101.)275
-4933 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390
-5068 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f
-(readonly)f(return)h(set)390 5177 y(shift)g(trap)h(unset)p
+(trolling)g(the)1110 5340 y(Prompt],)30 b(page)h(104\).)43
+b(This)29 b(option)i(is)g(enabled)f(b)m(y)g(default.)p
eop end
-%%Page: 73 79
-TeXDict begin 73 78 bop 3659 -116 a Fu(73)150 299 y Fp(5)80
+%%Page: 77 83
+TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(77)630 299 y Ft
+(restricted_shell)1110 408 y Fu(The)40 b(shell)h(sets)g(this)g(option)g
+(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see)1110
+518 y(Section)32 b(6.10)h([The)d(Restricted)j(Shell],)e(page)h(105\).)
+45 b(The)30 b(v)-5 b(alue)32 b(ma)m(y)g(not)1110 628
+y(b)s(e)g(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f(the)h
+(startup)g(\014les)f(are)i(executed,)1110 737 y(allo)m(wing)k(the)e
+(startup)f(\014les)h(to)g(disco)m(v)m(er)h(whether)f(or)f(not)i(a)f
+(shell)g(is)g(re-)1110 847 y(stricted.)630 1006 y Ft(shift_verbose)1110
+1116 y Fu(If)g(this)g(is)g(set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m
+(ts)f(an)h(error)g(message)i(when)d(the)1110 1225 y(shift)30
+b(coun)m(t)h(exceeds)g(the)g(n)m(um)m(b)s(er)e(of)h(p)s(ositional)i
+(parameters.)630 1385 y Ft(sourcepath)1110 1494 y Fu(If)40
+b(set,)45 b(the)c Ft(.)f Fu(\()p Ft(source)p Fu(\))g(builtin)g(uses)h
+(the)g(v)-5 b(alue)41 b(of)g Ft(PATH)f Fu(to)h(\014nd)f(the)1110
+1604 y(directory)32 b(con)m(taining)g(the)g(\014le)f(supplied)f(as)h
+(an)g(argumen)m(t.)44 b(This)30 b(option)1110 1714 y(is)g(enabled)h(b)m
+(y)f(default.)630 1873 y Ft(varredir_close)1110 1983
+y Fu(If)i(set,)h(the)f(shell)h(automatically)i(closes)e(\014le)f
+(descriptors)g(assigned)g(using)1110 2092 y(the)40 b
+Ft({varname})c Fu(redirection)k(syn)m(tax)g(\(see)h(Section)f(3.6)g
+([Redirections],)1110 2202 y(page)h(38\))f(instead)h(of)e(lea)m(ving)j
+(them)e(op)s(en)f(when)g(the)h(command)f(com-)1110 2311
+y(pletes.)630 2471 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g
+Ft(echo)e Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f
+(b)m(y)f(de-)1110 2580 y(fault.)150 2821 y Fs(4.4)68
+b(Sp)t(ecial)45 b(Builtins)150 2980 y Fu(F)-8 b(or)35
+b(historical)h(reasons,)g(the)e Fm(posix)g Fu(standard)f(has)i
+(classi\014ed)f(sev)m(eral)i(builtin)e(commands)g(as)h
+Fl(sp)-5 b(e-)150 3090 y(cial)p Fu(.)47 b(When)33 b(Bash)f(is)h
+(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g(sp)s(ecial)g(builtins)
+e(di\013er)i(from)f(other)g(builtin)150 3200 y(commands)e(in)g(three)h
+(resp)s(ects:)199 3334 y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i
+(found)e(b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)
+199 3469 y(2.)61 b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h
+(error)g(status,)h(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199
+3603 y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f
+(command)g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m
+(t)330 3713 y(after)i(the)f(command)h(completes.)275
+3872 y(When)36 b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f
+Fu(mo)s(de,)j(these)f(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m
+(tly)h(than)150 3982 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e
+(commands.)41 b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s
+(ed)f(in)h(Section)h(6.11)150 4091 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g
+(106.)275 4226 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h
+(builtins:)390 4360 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h
+(exit)g(export)f(readonly)f(return)h(set)390 4470 y(shift)g(trap)h
+(unset)p eop end
+%%Page: 78 84
+TeXDict begin 78 83 bop 3659 -116 a Fu(78)150 299 y Fp(5)80
b(Shell)53 b(V)-13 b(ariables)150 504 y Fu(This)21 b(c)m(hapter)i
(describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.)
37 b(Bash)23 b(automatically)h(assigns)f(default)150
@@ -13377,7 +13743,7 @@ b Fu(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g
(for)f(the)h Ft(cd)f Fu(builtin)g(command.)38 b(The)630
1628 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37
b(is)g(also)g(used)e(b)m(y)h(tilde)h(expansion)f(\(see)i(Section)f
-(3.5.2)h([Tilde)630 1737 y(Expansion],)30 b(page)h(24\).)150
+(3.5.2)h([Tilde)630 1737 y(Expansion],)30 b(page)h(25\).)150
1885 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f
(separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e
(as)i(part)630 1995 y(of)31 b(expansion.)150 2143 y Ft(MAIL)288
@@ -13408,10 +13774,10 @@ Fu(builtin.)150 3392 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f
(colons,)g(or)f(as)g(an)630 3721 y(initial)f(or)e(trailing)h(colon.)150
3869 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55
b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Ft(\\s-\\v\\$)28
-b Fu('.)56 b(See)36 b(Section)g(6.9)630 3979 y([Con)m(trolling)42
-b(the)e(Prompt],)j(page)e(98,)j(for)c(the)g(complete)i(list)f(of)f
-(escap)s(e)h(sequences)630 4088 y(that)31 b(are)g(expanded)e(b)s(efore)
-h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4236 y Ft(PS2)336
+b Fu('.)56 b(See)36 b(Section)g(6.9)630 3979 y([Con)m(trolling)i(the)e
+(Prompt],)i(page)f(104,)i(for)d(the)h(complete)h(list)e(of)h(escap)s(e)
+g(sequences)630 4088 y(that)31 b(are)g(expanded)e(b)s(efore)h
+Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4236 y Ft(PS2)336
b Fu(The)28 b(secondary)g(prompt)g(string.)40 b(The)28
b(default)g(v)-5 b(alue)29 b(is)g(`)p Ft(>)h Fu('.)40
b Ft(PS2)28 b Fu(is)g(expanded)g(in)g(the)630 4346 y(same)j(w)m(a)m(y)g
@@ -13424,15 +13790,15 @@ b(few)g(v)-5 b(ariables)24 b(used)g(b)m(y)f(Bash)i(are)f(describ)s(ed)f
(in)h(di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)25
b(for)f(con)m(trolling)150 5082 y(the)31 b(job)f(con)m(trol)h
(facilities)i(\(see)e(Section)g(7.3)h([Job)e(Con)m(trol)h(V)-8
-b(ariables],)32 b(page)g(110\).)150 5230 y Ft(_)432 b
+b(ariables],)32 b(page)g(116\).)150 5230 y Ft(_)432 b
Fu(\($)p 716 5230 28 4 v 41 w(,)34 b(an)g(underscore.\))49
b(A)m(t)35 b(shell)f(startup,)g(set)g(to)g(the)g(pathname)f(used)g(to)h
(in)m(v)m(ok)m(e)i(the)630 5340 y(shell)e(or)g(shell)h(script)f(b)s
(eing)f(executed)j(as)e(passed)g(in)f(the)i(en)m(vironmen)m(t)f(or)g
(argumen)m(t)p eop end
-%%Page: 74 80
-TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y(list.)55
+%%Page: 79 85
+TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(list.)55
b(Subsequen)m(tly)-8 b(,)35 b(expands)f(to)i(the)f(last)g(argumen)m(t)h
(to)f(the)g(previous)f(simple)h(com-)630 408 y(mand)21
b(executed)i(in)e(the)i(foreground,)g(after)f(expansion.)38
@@ -13448,7 +13814,7 @@ b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t)g(instance)h
b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 b(alid)630
1212 y(argumen)m(t)37 b(for)g(the)g Ft(-s)f Fu(option)i(to)f(the)g
Ft(shopt)f Fu(builtin)g(command)h(\(see)g(Section)h(4.3.2)630
-1322 y([The)e(Shopt)g(Builtin],)i(page)f(66\).)60 b(The)36
+1322 y([The)e(Shopt)g(Builtin],)i(page)f(71\).)60 b(The)36
b(options)h(app)s(earing)f(in)g Ft(BASHOPTS)e Fu(are)i(those)630
1431 y(rep)s(orted)e(as)h(`)p Ft(on)p Fu(')f(b)m(y)h(`)p
Ft(shopt)p Fu('.)53 b(If)34 b(this)g(v)-5 b(ariable)36
@@ -13469,7 +13835,7 @@ b(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g
b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m
(ternal)h(list)630 2564 y(of)c(aliases)h(as)f(main)m(tained)g(b)m(y)g
(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f([Bourne)g
-(Shell)630 2673 y(Builtins],)31 b(page)g(44\).)42 b(Elemen)m(ts)31
+(Shell)630 2673 y(Builtins],)31 b(page)g(48\).)42 b(Elemen)m(ts)31
b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the)g(alias)h(list;)h
(ho)m(w-)630 2783 y(ev)m(er,)k(unsetting)f(arra)m(y)g(elemen)m(ts)g
(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b)s(e)f(remo)m
@@ -13488,7 +13854,7 @@ b(a)g(subroutine)f(is)h(executed,)i(the)e(n)m(um)m(b)s(er)f(of)h
(parameters)630 3733 y(passed)44 b(is)h(pushed)e(on)m(to)j
Ft(BASH_ARGC)p Fu(.)81 b(The)44 b(shell)h(sets)g Ft(BASH_ARGC)e
Fu(only)i(when)e(in)630 3842 y(extended)34 b(debugging)f(mo)s(de)g
-(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(66,)g(for)
+(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(71,)g(for)
630 3952 y(a)e(description)g(of)f(the)h Ft(extdebug)d
Fu(option)j(to)h(the)e Ft(shopt)g Fu(builtin\).)47 b(Setting)33
b Ft(extdebug)630 4061 y Fu(after)c(the)g(shell)g(has)g(started)g(to)g
@@ -13506,20 +13872,20 @@ y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f(on)m
(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 4902
y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g(debugging)g
(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 5011 y(Shopt)g(Builtin],)
-h(page)g(66,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d
+h(page)g(71,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d
Fu(option)j(to)g(the)f Ft(shopt)630 5121 y Fu(builtin\).)64
b(Setting)38 b Ft(extdebug)e Fu(after)j(the)f(shell)g(has)g(started)g
(to)h(execute)g(a)g(script,)h(or)630 5230 y(referencing)35
b(this)f(v)-5 b(ariable)35 b(when)e Ft(extdebug)f Fu(is)j(not)f(set,)j
(ma)m(y)e(result)f(in)g(inconsisten)m(t)630 5340 y(v)-5
b(alues.)p eop end
-%%Page: 75 81
-TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(BASH_ARGV0)630
+%%Page: 80 86
+TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(BASH_ARGV0)630
408 y Fu(When)31 b(referenced,)g(this)g(v)-5 b(ariable)32
b(expands)e(to)h(the)h(name)f(of)g(the)g(shell)g(or)g(shell)g(script)
630 518 y(\(iden)m(tical)42 b(to)e Ft($0)p Fu(;)j(See)d(Section)g
-(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)j(page)d(21,)j(for)c(the)h(de-)
+(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)j(page)d(23,)j(for)c(the)h(de-)
630 628 y(scription)32 b(of)g(sp)s(ecial)g(parameter)g(0\).)45
b(Assignmen)m(t)32 b(to)h Ft(BASH_ARGV0)c Fu(causes)j(the)f(v)-5
b(alue)630 737 y(assigned)34 b(to)h(also)g(b)s(e)e(assigned)h(to)g
@@ -13530,7 +13896,7 @@ Ft($0)p Fu(.)51 b(If)33 b Ft(BASH_ARGV0)f Fu(is)h(unset,)i(it)f(loses)h
b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m(ternal)h
(hash)630 1267 y(table)c(of)g(commands)f(as)g(main)m(tained)h(b)m(y)g
(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)630
-1377 y(Shell)42 b(Builtins],)k(page)d(44\).)77 b(Elemen)m(ts)43
+1377 y(Shell)42 b(Builtins],)k(page)d(48\).)77 b(Elemen)m(ts)43
b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the)i(hash)630
1486 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g(elemen)m(ts)
i(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630
@@ -13548,7 +13914,7 @@ b(If)30 b Ft(BASH_COMMAND)e Fu(is)i(unset,)h(it)g(loses)630
(subsequen)m(tly)g(reset.)150 2545 y Ft(BASH_COMPAT)630
2655 y Fu(The)i(v)-5 b(alue)33 b(is)g(used)f(to)h(set)g(the)g(shell's)g
(compatibilit)m(y)i(lev)m(el.)49 b(See)33 b(Section)h(6.12)g([Shell)630
-2765 y(Compatibilit)m(y)j(Mo)s(de],)h(page)e(104,)i(for)e(a)g
+2765 y(Compatibilit)m(y)j(Mo)s(de],)h(page)e(110,)i(for)e(a)g
(description)g(of)f(the)h(v)-5 b(arious)36 b(compatibilit)m(y)630
2874 y(lev)m(els)g(and)f(their)g(e\013ects.)55 b(The)34
b(v)-5 b(alue)36 b(ma)m(y)f(b)s(e)f(a)i(decimal)f(n)m(um)m(b)s(er)f
@@ -13565,7 +13931,7 @@ b(alid)31 b(compatibilit)m(y)i(lev)m(els,)f(the)f(shell)f(prin)m(ts)g
47 b(The)31 b(v)-5 b(alid)33 b(v)-5 b(alues)630 3532
y(corresp)s(ond)31 b(to)i(the)g(compatibilit)m(y)i(lev)m(els)f(describ)
s(ed)d(b)s(elo)m(w)i(\(see)g(Section)h(6.12)g([Shell)630
-3641 y(Compatibilit)m(y)d(Mo)s(de],)f(page)g(104\).)42
+3641 y(Compatibilit)m(y)d(Mo)s(de],)f(page)g(110\).)42
b(F)-8 b(or)30 b(example,)h(4.2)f(and)f(42)h(are)g(v)-5
b(alid)30 b(v)-5 b(alues)29 b(that)630 3751 y(corresp)s(ond)d(to)i(the)
f Ft(compat42)e(shopt)g Fu(option)j(and)e(set)i(the)f(compatibilit)m(y)
@@ -13576,24 +13942,23 @@ b(is)e(set)h(when)f(Bash)g(is)h(in)m(v)m(ok)m(ed)h(to)f(execute)h(a)e
(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 4171
y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g
(to)h(read)f(b)s(efore)g(executing)i(the)630 4281 y(script.)41
-b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(88.)150
+b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(93.)150
4482 y Ft(BASH_EXECUTION_STRING)630 4591 y Fu(The)f(command)g(argumen)m
(t)h(to)g(the)g Ft(-c)e Fu(in)m(v)m(o)s(cation)k(option.)150
-4792 y Ft(BASH_LINENO)630 4902 y Fu(An)62 b(arra)m(y)i(v)-5
-b(ariable)63 b(whose)g(mem)m(b)s(ers)e(are)j(the)e(line)h(n)m(um)m(b)s
-(ers)f(in)g(source)h(\014les)630 5011 y(where)46 b(eac)m(h)i(corresp)s
-(onding)d(mem)m(b)s(er)h(of)h Fr(FUNCNAME)53 b Fu(w)m(as)47
-b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 5121 y(LINENO[$i]})39
-b Fu(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g
-(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 5230 y(where)d
-Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i(\(or)e Ft
-(${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630
-5340 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31
-b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s
-(er.)p eop end
-%%Page: 76 82
-TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft
+4792 y Ft(BASH_LINENO)630 4902 y Fu(An)38 b(arra)m(y)g(v)-5
+b(ariable)39 b(whose)f(mem)m(b)s(ers)f(are)i(the)f(line)h(n)m(um)m(b)s
+(ers)d(in)i(source)g(\014les)g(where)630 5011 y(eac)m(h)h(corresp)s
+(onding)e(mem)m(b)s(er)g(of)h Ft(FUNCNAME)d Fu(w)m(as)k(in)m(v)m(ok)m
+(ed.)64 b Ft(${BASH_LINENO[$i]})630 5121 y Fu(is)74 b(the)g(line)h(n)m
+(um)m(b)s(er)e(in)g(the)i(source)f(\014le)g(\()p Ft
+(${BASH_SOURCE[$i+1]})p Fu(\))69 b(where)630 5230 y Ft(${FUNCNAME[$i]})
+32 b Fu(w)m(as)37 b(called)g(\(or)g Ft(${BASH_LINENO[$i-1]})31
+b Fu(if)36 b(referenced)g(within)630 5340 y(another)31
+b(shell)f(function\).)41 b(Use)31 b Ft(LINENO)d Fu(to)j(obtain)g(the)g
+(curren)m(t)f(line)h(n)m(um)m(b)s(er.)p eop end
+%%Page: 81 87
+TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(81)150 299 y Ft
(BASH_LOADABLES_PATH)630 408 y Fu(A)39 b(colon-separated)i(list)f(of)f
(directories)h(in)f(whic)m(h)g(the)g(shell)h(lo)s(oks)f(for)g
(dynamically)630 518 y(loadable)32 b(builtins)d(sp)s(eci\014ed)h(b)m(y)
@@ -13602,7 +13967,7 @@ g(the)h Ft(enable)e Fu(command.)150 673 y Ft(BASH_REMATCH)630
(are)h(assigned)g(b)m(y)f(the)h(`)p Ft(=~)p Fu(')g(binary)f(op)s
(erator)630 892 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e
(\(see)h(Section)g(3.2.5.2)i([Conditional)e(Constructs],)630
-1002 y(page)e(11\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f
+1002 y(page)e(12\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f
(the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630
1112 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27
b(elemen)m(t)j(with)d(index)h Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g
@@ -13622,9 +13987,9 @@ b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m
b(alue)28 b(is)f(0.)40 b(If)28 b Ft(BASH_SUBSHELL)630
2299 y Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial)h(prop)s(erties,)
f(ev)m(en)h(if)g(it)g(is)f(subsequen)m(tly)g(reset.)150
-2454 y Ft(BASH_VERSINFO)630 2564 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5
-b(ariable)37 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(95\))h
-(whose)f(mem)m(b)s(ers)630 2673 y(hold)c(v)m(ersion)h(information)f
+2454 y Ft(BASH_VERSINFO)630 2564 y Fu(A)i(readonly)g(arra)m(y)g(v)-5
+b(ariable)32 b(\(see)h(Section)g(6.7)f([Arra)m(ys],)h(page)g(100\))g
+(whose)f(mem)m(b)s(ers)630 2673 y(hold)g(v)m(ersion)h(information)f
(for)g(this)g(instance)h(of)g(Bash.)46 b(The)32 b(v)-5
b(alues)32 b(assigned)h(to)g(the)630 2783 y(arra)m(y)e(mem)m(b)s(ers)e
(are)i(as)g(follo)m(ws:)630 2938 y Ft(BASH_VERSINFO[0])1110
@@ -13635,10 +14000,10 @@ Fr(v)m(ersion)p Fu(\).)630 3468 y Ft(BASH_VERSINFO[2])1110
3577 y Fu(The)f(patc)m(h)h(lev)m(el.)630 3733 y Ft(BASH_VERSINFO[3])
1110 3842 y Fu(The)f(build)f(v)m(ersion.)630 3998 y Ft
(BASH_VERSINFO[4])1110 4107 y Fu(The)h(release)i(status)e(\(e.g.,)j
-Fr(b)s(eta1)7 b Fu(\).)630 4262 y Ft(BASH_VERSINFO[5])1110
-4372 y Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p
-Fu(.)150 4527 y Ft(BASH_VERSION)630 4637 y Fu(The)g(v)m(ersion)h(n)m
-(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150
+Ft(beta1)p Fu(\).)630 4262 y Ft(BASH_VERSINFO[5])1110
+4372 y Fu(The)d(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150
+4527 y Ft(BASH_VERSION)630 4637 y Fu(The)g(v)m(ersion)h(n)m(um)m(b)s
+(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150
4792 y Ft(BASH_XTRACEFD)630 4902 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i
(corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g
(Bash)g(will)g(write)g(the)630 5011 y(trace)37 b(output)f(generated)h
@@ -13650,9 +14015,9 @@ b(tracing)h(output)d(to)i(b)s(e)f(separated)g(from)g(diagnostic)h(and)f
(new)f(v)-5 b(alue.)630 5340 y(Unsetting)45 b Ft(BASH_XTRACEFD)40
b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f
(trace)p eop end
-%%Page: 77 83
-TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(output)33
+%%Page: 82 88
+TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(82)630 299 y(output)33
b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g(standard)e(error.)50
b(Note)35 b(that)g(setting)f Ft(BASH_XTRACEFD)c Fu(to)630
408 y(2)39 b(\(the)h(standard)e(error)g(\014le)h(descriptor\))h(and)e
@@ -13671,7 +14036,7 @@ Ft(select)e Fu(command)h(to)i(determine)f(the)f(terminal)i(width)d
(when)h(prin)m(ting)630 1358 y(selection)39 b(lists.)63
b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d
Fu(option)j(is)f(enabled)h(\(see)630 1468 y(Section)44
-b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(66\),)k(or)43
+b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(71\),)k(or)43
b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1577
y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1724 y
Ft(COMP_CWORD)630 1833 y Fu(An)38 b(index)g(in)m(to)h
@@ -13680,13 +14045,13 @@ Ft(${COMP_WORDS})c Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e
b(v)-5 b(ariable)41 b(is)f(a)m(v)-5 b(ailable)43 b(only)e(in)f(shell)h
(functions)f(in)m(v)m(ok)m(ed)i(b)m(y)e(the)h(pro-)630
2052 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g
-([Programmable)g(Completion],)630 2162 y(page)31 b(137\).)150
+([Programmable)g(Completion],)630 2162 y(page)31 b(143\).)150
2308 y Ft(COMP_LINE)630 2418 y Fu(The)38 b(curren)m(t)h(command)f
(line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5
b(ailable)41 b(only)d(in)h(shell)f(functions)630 2527
y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the)h
(programmable)f(completion)i(facilities)g(\(see)630 2637
-y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(137\).)150
+y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(143\).)150
2783 y Ft(COMP_POINT)630 2892 y Fu(The)25 b(index)g(of)h(the)g(curren)m
(t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of)
g(the)h(curren)m(t)630 3002 y(command.)40 b(If)27 b(the)h(curren)m(t)g
@@ -13697,22 +14062,21 @@ b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630
3221 y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g
(in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 3331
y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g
-(Completion],)h(page)f(137\).)150 3477 y Ft(COMP_TYPE)630
+(Completion],)h(page)f(143\).)150 3477 y Ft(COMP_TYPE)630
3587 y Fu(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28
b(corresp)s(onding)e(to)h(the)h(t)m(yp)s(e)f(of)g(completion)h
-(attempted)g(that)630 3696 y(caused)e(a)h(completion)h(function)e(to)h
-(b)s(e)f(called:)40 b Fr(T)-8 b(AB)p Fu(,)27 b(for)g(normal)f
-(completion,)j(`)p Ft(?)p Fu(',)e(for)630 3806 y(listing)35
-b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Ft(!)p
-Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630
-3915 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g
-(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)s(di\014ed,)f(or)h
-(`)p Ft(\045)p Fu(',)h(for)630 4025 y(men)m(u)i(completion.)41
-b(This)25 b(v)-5 b(ariable)27 b(is)g(a)m(v)-5 b(ailable)28
-b(only)f(in)f(shell)g(functions)g(and)g(external)630
-4134 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h
-(completion)g(facilities)i(\(see)e(Section)g(8.6)630
-4244 y([Programmable)e(Completion],)h(page)f(137\).)150
+(attempted)g(that)630 3696 y(caused)j(a)g(completion)h(function)e(to)h
+(b)s(e)f(called:)43 b Ft(TAB)p Fu(,)30 b(for)g(normal)h(completion,)h
+(`)p Ft(?)p Fu(',)f(for)630 3806 y(listing)k(completions)h(after)f
+(successiv)m(e)g(tabs,)h(`)p Ft(!)p Fu(',)g(for)e(listing)h(alternativ)
+m(es)i(on)d(partial)630 3915 y(w)m(ord)22 b(completion,)k(`)p
+Ft(@)p Fu(',)f(to)e(list)g(completions)h(if)f(the)g(w)m(ord)f(is)h(not)
+g(unmo)s(di\014ed,)f(or)h(`)p Ft(\045)p Fu(',)h(for)630
+4025 y(men)m(u)i(completion.)41 b(This)25 b(v)-5 b(ariable)27
+b(is)g(a)m(v)-5 b(ailable)28 b(only)f(in)f(shell)g(functions)g(and)g
+(external)630 4134 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g
+(programmable)h(completion)g(facilities)i(\(see)e(Section)g(8.6)630
+4244 y([Programmable)e(Completion],)h(page)f(143\).)150
4390 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i
(of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e
(curren)m(t)g(completion)630 4500 y(function.)150 4646
@@ -13727,25 +14091,25 @@ g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630
5340 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as)
h(Readline)h(w)m(ould)f(split)g(it,)53 b(using)47 b Ft(COMP_)p
eop end
-%%Page: 78 84
-TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(78)630 299 y Ft(WORDBREAKS)34
+%%Page: 83 89
+TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(83)630 299 y Ft(WORDBREAKS)34
b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 b(This)36
b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39 b(only)e(in)f(shell)h
(func-)630 408 y(tions)32 b(in)m(v)m(ok)m(ed)i(b)m(y)d(the)i
(programmable)f(completion)h(facilities)h(\(see)f(Section)g(8.6)g
-([Pro-)630 518 y(grammable)e(Completion],)g(page)g(137\).)150
+([Pro-)630 518 y(grammable)e(Completion],)g(page)g(143\).)150
676 y Ft(COMPREPLY)630 786 y Fu(An)37 b(arra)m(y)h(v)-5
b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e
(completions)j(generated)630 896 y(b)m(y)33 b(a)g(shell)h(function)f
(in)m(v)m(ok)m(ed)h(b)m(y)f(the)g(programmable)h(completion)g(facilit)m
(y)h(\(see)f(Sec-)630 1005 y(tion)g(8.6)g([Programmable)g(Completion],)
-h(page)f(137\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains)
+h(page)f(143\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains)
630 1115 y(one)c(p)s(ossible)f(completion.)150 1273 y
Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28
b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f
(from)h(and)f(input)630 1383 y(to)31 b(an)f(unnamed)f(copro)s(cess)i
-(\(see)g(Section)h(3.2.6)g([Copro)s(cesses],)f(page)g(15\).)150
+(\(see)g(Section)h(3.2.6)g([Copro)s(cesses],)f(page)g(18\).)150
1541 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28
b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f
(directory)i(stac)m(k.)41 b(Direc-)630 1650 y(tories)33
@@ -13766,40 +14130,39 @@ b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f
(v)-5 b(alue)630 2466 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h
(the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and)
h(disables)630 2576 y(line)d(editing.)150 2734 y Ft(ENV)336
-b Fu(Expanded)30 b(and)h(executed)h(similarlt)m(y)g(to)g
-Ft(BASH_ENV)d Fu(\(see)k(Section)f(6.2)g([Bash)g(Startup)630
-2844 y(Files],)39 b(page)e(88\))h(when)d(an)h(in)m(teractiv)m(e)j
-(shell)d(is)h(in)m(v)m(ok)m(ed)g(in)f Fm(posix)g Fu(Mo)s(de)g(\(see)h
-(Sec-)630 2953 y(tion)31 b(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g
-(101\).)150 3112 y Ft(EPOCHREALTIME)630 3221 y Fu(Eac)m(h)38
-b(time)f(this)g(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)
-f(n)m(um)m(b)s(er)f(of)h(seconds)630 3331 y(since)f(the)g(Unix)f(Ep)s
-(o)s(c)m(h)g(as)h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5
-b(alue)36 b(with)f(micro-second)i(gran)m(ularit)m(y)630
-3440 y(\(see)42 b(the)g(do)s(cumen)m(tation)g(for)f(the)g(C)g(library)g
-(function)g Fr(time)47 b Fu(for)41 b(the)h(de\014nition)f(of)630
-3550 y(Ep)s(o)s(c)m(h\).)82 b(Assignmen)m(ts)44 b(to)h
-Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83 b(If)43 b Ft(EPOCHREALTIME)e
-Fu(is)630 3660 y(unset,)30 b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s
-(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150
-3818 y Ft(EPOCHSECONDS)630 3927 y Fu(Eac)m(h)38 b(time)f(this)g
+b Fu(Expanded)33 b(and)h(executed)i(similarly)f(to)g
+Ft(BASH_ENV)d Fu(\(see)k(Section)f(6.2)h([Bash)f(Startup)630
+2844 y(Files],)k(page)e(93\))h(when)d(an)h(in)m(teractiv)m(e)j(shell)d
+(is)h(in)m(v)m(ok)m(ed)g(in)f Fm(posix)g Fu(Mo)s(de)g(\(see)h(Sec-)630
+2953 y(tion)31 b(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(106\).)150
+3112 y Ft(EPOCHREALTIME)630 3221 y Fu(Eac)m(h)38 b(time)f(this)g
(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)f(n)m(um)m(b)s
-(er)f(of)h(seconds)630 4037 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g
-(\(see)i(the)f(do)s(cumen)m(tation)g(for)g(the)f(C)h(library)f
-(function)g Fr(time)630 4147 y Fu(for)41 b(the)g(de\014nition)g(of)h
-(Ep)s(o)s(c)m(h\).)73 b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c
-Fu(are)k(ignored.)73 b(If)630 4256 y Ft(EPOCHSECONDS)27
-b Fu(is)j(unset,)g(it)g(loses)h(its)g(sp)s(ecial)f(prop)s(erties,)g(ev)
-m(en)h(if)f(it)g(is)g(subsequen)m(tly)630 4366 y(reset.)150
-4524 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d
-(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5
-b(ariable)31 b(is)f(readonly)-8 b(.)150 4682 y Ft(EXECIGNORE)630
-4792 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f
-(\(see)i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630
-4902 y(page)j(33\))g(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)g
-(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g(using)630
-5011 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)g(matc)m(h)
-h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630
+(er)f(of)h(seconds)630 3331 y(since)f(the)g(Unix)f(Ep)s(o)s(c)m(h)g(as)
+h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5 b(alue)36 b(with)f(micro-second)i
+(gran)m(ularit)m(y)630 3440 y(\(see)k(the)g(do)s(cumen)m(tation)h(for)e
+(the)h(C)f(library)g(function)g Ft(time)g Fu(for)g(the)h(de\014nition)f
+(of)630 3550 y(Ep)s(o)s(c)m(h\).)82 b(Assignmen)m(ts)44
+b(to)h Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83 b(If)43
+b Ft(EPOCHREALTIME)e Fu(is)630 3660 y(unset,)30 b(it)h(loses)g(its)g
+(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m
+(tly)f(reset.)150 3818 y Ft(EPOCHSECONDS)630 3927 y Fu(Eac)m(h)38
+b(time)f(this)g(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)
+f(n)m(um)m(b)s(er)f(of)h(seconds)630 4037 y(since)d(the)g(Unix)g(Ep)s
+(o)s(c)m(h)f(\(see)i(the)f(do)s(cumen)m(tation)h(for)e(the)i(C)e
+(library)h(function)f Ft(time)630 4147 y Fu(for)41 b(the)g
+(de\014nition)g(of)h(Ep)s(o)s(c)m(h\).)73 b(Assignmen)m(ts)41
+b(to)h Ft(EPOCHSECONDS)c Fu(are)k(ignored.)73 b(If)630
+4256 y Ft(EPOCHSECONDS)27 b Fu(is)j(unset,)g(it)g(loses)h(its)g(sp)s
+(ecial)f(prop)s(erties,)g(ev)m(en)h(if)f(it)g(is)g(subsequen)m(tly)630
+4366 y(reset.)150 4524 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g
+(e\013ectiv)m(e)j(user)d(id)g(of)g(the)h(curren)m(t)f(user.)40
+b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150
+4682 y Ft(EXECIGNORE)630 4792 y Fu(A)29 b(colon-separated)h(list)f(of)g
+(shell)g(patterns)f(\(see)i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m
+(hing],)630 4902 y(page)j(36\))g(de\014ning)e(the)h(list)g(of)g
+(\014lenames)g(to)g(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g
+(using)630 5011 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)
+g(matc)m(h)h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630
5121 y(executable)j(\014les)e(for)g(the)h(purp)s(oses)d(of)j
(completion)h(and)d(command)i(execution)g(via)g Ft(PATH)630
5230 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h(a\013ect)i(the)d(b)
@@ -13807,9 +14170,9 @@ s(eha)m(vior)h(of)g(the)g Ft([)p Fu(,)h Ft(test)p Fu(,)f(and)f
Ft([[)g Fu(commands.)630 5340 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g
(command)g(hash)f(table)i(are)g(not)f(sub)5 b(ject)41
b(to)g Ft(EXECIGNORE)p Fu(.)p eop end
-%%Page: 79 85
-TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(Use)30
+%%Page: 84 90
+TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(84)630 299 y(Use)30
b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f(library)g(\014les)g
(that)h(ha)m(v)m(e)h(the)f(executable)h(bit)e(set,)630
408 y(but)36 b(are)h(not)g(executable)i(\014les.)60 b(The)36
@@ -13869,7 +14232,7 @@ Fu(is)i(unset,)f(it)h(loses)h(its)630 3703 y(sp)s(ecial)f(prop)s
3864 y Ft(histchars)630 3973 y Fu(Up)c(to)g(three)g(c)m(haracters)i
(whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g
(substitution,)g(and)630 4083 y(tok)m(enization)k(\(see)f(Section)f
-(9.3)h([History)f(In)m(teraction],)i(page)f(148\).)41
+(9.3)h([History)f(In)m(teraction],)i(page)f(154\).)41
b(The)29 b(\014rst)e(c)m(harac-)630 4193 y(ter)j(is)f(the)g
Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m
(haracter)h(whic)m(h)d(signi\014es)i(the)630 4302 y(start)25
@@ -13894,9 +14257,9 @@ Fu(are)j(ignored.)61 b(If)37 b Ft(HISTCMD)e Fu(is)i(unset,)h(it)g
(loses)g(its)f(sp)s(ecial)630 5340 y(prop)s(erties,)30
b(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)p
eop end
-%%Page: 80 86
-TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(HISTCONTROL)630
+%%Page: 85 91
+TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(85)150 299 y Ft(HISTCONTROL)630
408 y Fu(A)40 b(colon-separated)i(list)f(of)f(v)-5 b(alues)40
b(con)m(trolling)i(ho)m(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630
518 y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5
@@ -13979,12 +14342,12 @@ b(v)-5 b(alues)26 b(less)g(than)630 4862 y(zero)i(result)e(in)h(ev)m
(startup)f(\014les.)150 5121 y Ft(HISTTIMEFORMAT)630
5230 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m
(ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g
-(for)630 5340 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp)
-f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m
+(for)630 5340 y Ft(strftime)26 b Fu(to)k(prin)m(t)e(the)g(time)i(stamp)
+e(asso)s(ciated)i(with)e(eac)m(h)i(history)f(en)m(try)f(displa)m(y)m
(ed)p eop end
-%%Page: 81 87
-TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(81)630 299 y(b)m(y)34
+%%Page: 86 92
+TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(86)630 299 y(b)m(y)34
b(the)f Ft(history)f Fu(builtin.)50 b(If)33 b(this)h(v)-5
b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g(written)f(to)i(the)630
408 y(history)26 b(\014le)g(so)g(they)g(ma)m(y)h(b)s(e)e(preserv)m(ed)g
@@ -14044,20 +14407,20 @@ y(a)i(lo)s(cale)h(category)-8 b(.)150 4125 y Ft(LC_COLLATE)630
(vior)f(of)g(range)h(expressions,)h(equiv-)630 4453 y(alence)e
(classes,)h(and)e(collating)i(sequences)e(within)f(\014lename)h
(expansion)g(and)f(pattern)630 4563 y(matc)m(hing)d(\(see)h(Section)f
-(3.5.8)h([Filename)g(Expansion],)e(page)h(33\).)150 4732
+(3.5.8)h([Filename)g(Expansion],)e(page)h(35\).)150 4732
y Ft(LC_CTYPE)96 b Fu(This)36 b(v)-5 b(ariable)37 b(determines)f(the)h
(in)m(terpretation)h(of)f(c)m(haracters)h(and)e(the)g(b)s(eha)m(vior)h
(of)630 4842 y(c)m(haracter)46 b(classes)g(within)e(\014lename)h
(expansion)g(and)f(pattern)h(matc)m(hing)h(\(see)f(Sec-)630
-4951 y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(33\).)150
+4951 y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(35\).)150
5121 y Ft(LC_MESSAGES)630 5230 y Fu(This)25 b(v)-5 b(ariable)27
b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted)
f(strings)g(pre-)630 5340 y(ceded)31 b(b)m(y)f(a)h(`)p
Ft($)p Fu(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8
b(ranslation],)32 b(page)f(7\).)p eop end
-%%Page: 82 88
-TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(82)150 299 y Ft(LC_NUMERIC)630
+%%Page: 87 93
+TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(87)150 299 y Ft(LC_NUMERIC)630
408 y Fu(This)30 b(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h
(category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150
573 y Ft(LC_TIME)144 b Fu(This)25 b(v)-5 b(ariable)26
@@ -14072,7 +14435,7 @@ Fu(command)i(to)g(determine)g(the)g(column)g(length)g(for)g(prin)m
(ting)630 1121 y(selection)c(lists.)63 b(Automatically)41
b(set)d(if)f(the)h Ft(checkwinsize)d Fu(option)j(is)f(enabled)h(\(see)
630 1230 y(Section)44 b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d
-(66\),)k(or)43 b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630
+(71\),)k(or)43 b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630
1340 y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1504
y Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f
(the)h(system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i
@@ -14099,16 +14462,16 @@ Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 b(1,)i(Bash)e(displa)m(ys)g
3039 y Fu(builtin)30 b(command.)150 3203 y Ft(OSTYPE)192
b Fu(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f
(is)h(running)d(on.)150 3367 y Ft(PIPESTATUS)630 3477
-y Fu(An)23 b(arra)m(y)h(v)-5 b(ariable)24 b(\(see)h(Section)f(6.7)h
-([Arra)m(ys],)g(page)f(95\))h(con)m(taining)g(a)f(list)g(of)g(exit)g
-(sta-)630 3587 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g
-(in)f(the)h(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630
-3696 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h
-(command\).)150 3861 y Ft(POSIXLY_CORRECT)630 3970 y
-Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g
-(when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630
-4080 y Fu(mo)s(de)46 b(\(see)h(Section)g(6.11)g([Bash)g(POSIX)e(Mo)s
-(de],)50 b(page)d(101\))h(b)s(efore)e(reading)g(the)630
+y Fu(An)48 b(arra)m(y)g(v)-5 b(ariable)49 b(\(see)g(Section)g(6.7)g
+([Arra)m(ys],)k(page)c(100\))g(con)m(taining)h(a)e(list)h(of)630
+3587 y(exit)32 b(status)f(v)-5 b(alues)31 b(from)f(the)h(pro)s(cesses)g
+(in)g(the)g(most-recen)m(tly-executed)j(foreground)630
+3696 y(pip)s(eline)c(\(whic)m(h)g(ma)m(y)h(con)m(tain)h(only)f(a)f
+(single)h(command\).)150 3861 y Ft(POSIXLY_CORRECT)630
+3970 y Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m
+(vironmen)m(t)g(when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g
+Fm(posix)630 4080 y Fu(mo)s(de)46 b(\(see)h(Section)g(6.11)g([Bash)g
+(POSIX)e(Mo)s(de],)50 b(page)d(106\))h(b)s(efore)e(reading)g(the)630
4189 y(startup)38 b(\014les,)j(as)e(if)g(the)g Ft(--posix)d
Fu(in)m(v)m(o)s(cation)41 b(option)e(had)f(b)s(een)g(supplied.)64
b(If)39 b(it)g(is)630 4299 y(set)31 b(while)f(the)h(shell)f(is)h
@@ -14128,16 +14491,16 @@ b(alue)24 b(of)g(eac)m(h)g(set)h(elemen)m(t)g(is)f(in)m(terpreted)630
b(this)h(is)630 5340 y(set)c(but)f(not)g(an)h(arra)m(y)g(v)-5
b(ariable,)26 b(its)f(v)-5 b(alue)25 b(is)f(used)g(as)h(a)f(command)g
(to)i(execute)f(instead.)p eop end
-%%Page: 83 89
-TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(83)150 299 y Ft(PROMPT_DIRTRIM)630
+%%Page: 88 94
+TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(88)150 299 y Ft(PROMPT_DIRTRIM)630
408 y Fu(If)27 b(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f
(zero,)i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er)
-e(of)h(trailing)630 518 y(directory)35 b(comp)s(onen)m(ts)g(to)h
-(retain)f(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g
-Ft(\\W)g Fu(prompt)g(string)630 628 y(escap)s(es)21 b(\(see)h(Section)f
-(6.9)h([Con)m(trolling)g(the)f(Prompt],)h(page)f(98\).)39
-b(Characters)21 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f
+e(of)h(trailing)630 518 y(directory)c(comp)s(onen)m(ts)h(to)f(retain)h
+(when)e(expanding)g(the)h Ft(\\w)g Fu(and)f Ft(\\W)g
+Fu(prompt)h(string)f(es-)630 628 y(cap)s(es)i(\(see)h(Section)g(6.9)g
+([Con)m(trolling)g(the)f(Prompt],)i(page)e(104\).)41
+b(Characters)24 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f
(an)g(ellipsis.)150 892 y Ft(PS0)336 b Fu(The)32 b(v)-5
b(alue)33 b(of)g(this)g(parameter)g(is)g(expanded)e(lik)m(e)j
Ft(PS1)e Fu(and)g(displa)m(y)m(ed)i(b)m(y)e(in)m(teractiv)m(e)630
@@ -14147,13 +14510,13 @@ b(v)-5 b(alue)35 b(of)f(this)g(v)-5 b(ariable)35 b(is)g(used)e(as)i
(the)f(prompt)g(for)g(the)g Ft(select)f Fu(command.)52
b(If)630 1267 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e
Ft(select)f Fu(command)h(prompts)f(with)h(`)p Ft(#?)g
-Fu(')150 1422 y Ft(PS4)336 b Fu(The)37 b(v)-5 b(alue)37
-b(of)g(this)g(parameter)h(is)f(expanded)f(lik)m(e)i Fr(PS1)44
-b Fu(and)37 b(the)g(expanded)f(v)-5 b(alue)38 b(is)630
-1532 y(the)d(prompt)f(prin)m(ted)g(b)s(efore)g(the)h(command)f(line)h
-(is)g(ec)m(ho)s(ed)g(when)f(the)h Ft(-x)f Fu(option)h(is)630
+Fu(')150 1422 y Ft(PS4)336 b Fu(The)38 b(v)-5 b(alue)39
+b(of)g(this)g(parameter)g(is)g(expanded)f(lik)m(e)i Ft(PS1)e
+Fu(and)g(the)h(expanded)f(v)-5 b(alue)39 b(is)630 1532
+y(the)c(prompt)f(prin)m(ted)g(b)s(efore)g(the)h(command)f(line)h(is)g
+(ec)m(ho)s(ed)g(when)f(the)h Ft(-x)f Fu(option)h(is)630
1641 y(set)k(\(see)h(Section)g(4.3.1)g([The)f(Set)g(Builtin],)j(page)e
-(62\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e(the)630
+(67\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e(the)630
1751 y(expanded)33 b(v)-5 b(alue)33 b(is)h(replicated)g(m)m(ultiple)g
(times,)h(as)f(necessary)-8 b(,)35 b(to)f(indicate)g(m)m(ultiple)630
1861 y(lev)m(els)e(of)e(indirection.)42 b(The)29 b(default)i(is)f(`)p
@@ -14166,141 +14529,145 @@ b(Assigning)25 b(a)f(v)-5 b(alue)25 b(to)g(this)f(v)-5
b(ariable)25 b(seeds)f(the)h(random)e(n)m(um)m(b)s(er)g(gener-)630
2390 y(ator.)41 b(If)27 b Ft(RANDOM)f Fu(is)h(unset,)h(it)g(loses)h
(its)f(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)f
-(subsequen)m(tly)630 2500 y(reset.)150 2655 y Ft(READLINE_LINE)630
-2765 y Fu(The)g(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g
-(bu\013er,)f(for)h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h
-(Section)h(4.2)630 2874 y([Bash)i(Builtins],)g(page)g(51\).)150
-3029 y Ft(READLINE_MARK)630 3139 y Fu(The)26 b(p)s(osition)h(of)g(the)g
-Fr(mark)32 b Fu(\(sa)m(v)m(ed)c(insertion)f(p)s(oin)m(t\))g(in)g(the)g
-(Readline)g(line)g(bu\013er,)g(for)630 3249 y(use)36
-b(with)f(`)p Ft(bind)30 b(-x)p Fu(')35 b(\(see)i(Section)g(4.2)g([Bash)
-f(Builtins],)i(page)f(51\).)58 b(The)35 b(c)m(haracters)630
-3358 y(b)s(et)m(w)m(een)c(the)g(insertion)f(p)s(oin)m(t)g(and)g(the)h
-(mark)f(are)h(often)f(called)i(the)f Fr(region)p Fu(.)150
-3513 y Ft(READLINE_POINT)630 3623 y Fu(The)23 b(p)s(osition)g(of)g(the)
-h(insertion)f(p)s(oin)m(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h
-(for)f(use)g(with)g(`)p Ft(bind)630 3733 y(-x)p Fu(')30
-b(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(51\).)150
-3888 y Ft(REPLY)240 b Fu(The)30 b(default)g(v)-5 b(ariable)32
-b(for)e(the)g Ft(read)g Fu(builtin.)150 4043 y Ft(SECONDS)144
-b Fu(This)40 b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s
-(er)e(of)i(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630
-4153 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43
+(subsequen)m(tly)630 2500 y(reset.)150 2655 y Ft(READLINE_ARGUMENT)630
+2765 y Fu(An)m(y)37 b(n)m(umeric)f(argumen)m(t)h(giv)m(en)g(to)g(a)g
+(Readline)g(command)f(that)h(w)m(as)g(de\014ned)e(using)630
+2874 y(`)p Ft(bind)29 b(-x)p Fu(')h(\(see)i(Section)f(4.2)g([Bash)g
+(Builtins],)g(page)h(55,)f(when)e(it)i(w)m(as)g(in)m(v)m(ok)m(ed.)150
+3029 y Ft(READLINE_LINE)630 3139 y Fu(The)c(con)m(ten)m(ts)i(of)f(the)g
+(Readline)g(line)g(bu\013er,)f(for)h(use)f(with)g(`)p
+Ft(bind)j(-x)p Fu(')d(\(see)h(Section)h(4.2)630 3249
+y([Bash)i(Builtins],)g(page)g(55\).)150 3404 y Ft(READLINE_MARK)630
+3513 y Fu(The)26 b(p)s(osition)h(of)g(the)g Fr(mark)32
+b Fu(\(sa)m(v)m(ed)c(insertion)f(p)s(oin)m(t\))g(in)g(the)g(Readline)g
+(line)g(bu\013er,)g(for)630 3623 y(use)36 b(with)f(`)p
+Ft(bind)30 b(-x)p Fu(')35 b(\(see)i(Section)g(4.2)g([Bash)f(Builtins],)
+i(page)f(55\).)58 b(The)35 b(c)m(haracters)630 3733 y(b)s(et)m(w)m(een)
+c(the)g(insertion)f(p)s(oin)m(t)g(and)g(the)h(mark)f(are)h(often)f
+(called)i(the)f Fr(region)p Fu(.)150 3888 y Ft(READLINE_POINT)630
+3998 y Fu(The)23 b(p)s(osition)g(of)g(the)h(insertion)f(p)s(oin)m(t)g
+(in)g(the)g(Readline)h(line)f(bu\013er,)h(for)f(use)g(with)g(`)p
+Ft(bind)630 4107 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g
+(Builtins],)g(page)g(55\).)150 4262 y Ft(REPLY)240 b
+Fu(The)30 b(default)g(v)-5 b(ariable)32 b(for)e(the)g
+Ft(read)g Fu(builtin.)150 4418 y Ft(SECONDS)144 b Fu(This)40
+b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i
+(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630
+4527 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43
b(resets)g(the)g(coun)m(t)g(to)g(the)g(v)-5 b(alue)43
-b(assigned,)j(and)c(the)630 4262 y(expanded)35 b(v)-5
+b(assigned,)j(and)c(the)630 4637 y(expanded)35 b(v)-5
b(alue)36 b(b)s(ecomes)h(the)f(v)-5 b(alue)36 b(assigned)g(plus)f(the)h
-(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 4372 y(the)24
-b(assignmen)m(t.)39 b(The)23 b(n)m(um)m(b)s(er)g(of)h(seconds)f(at)i
-(shell)f(in)m(v)m(o)s(cation)i(and)d(the)h(curren)m(t)f(time)630
-4482 y(is)j(alw)m(a)m(ys)i(determined)e(b)m(y)g(querying)g(the)h
-(system)f(clo)s(c)m(k.)41 b(If)26 b Ft(SECONDS)e Fu(is)i(unset,)h(it)g
-(loses)630 4591 y(its)k(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f
-(it)h(is)f(subsequen)m(tly)g(reset.)150 4746 y Ft(SHELL)240
-b Fu(This)24 b(en)m(vironmen)m(t)i(v)-5 b(ariable)26
-b(expands)e(to)i(the)g(full)f(pathname)g(to)h(the)f(shell.)39
-b(If)25 b(it)g(is)h(not)630 4856 y(set)36 b(when)f(the)h(shell)g
-(starts,)i(Bash)e(assigns)h(to)f(it)h(the)f(full)f(pathname)h(of)g(the)
-g(curren)m(t)630 4966 y(user's)30 b(login)h(shell.)150
-5121 y Ft(SHELLOPTS)630 5230 y Fu(A)g(colon-separated)h(list)f(of)g
-(enabled)f(shell)h(options.)41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h
-(list)g(is)g(a)g(v)-5 b(alid)630 5340 y(argumen)m(t)28
-b(for)f(the)h Ft(-o)e Fu(option)i(to)g(the)g Ft(set)e
-Fu(builtin)h(command)g(\(see)i(Section)f(4.3.1)h([The)p
-eop end
-%%Page: 84 90
-TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(84)630 299 y(Set)29
-b(Builtin],)h(page)f(62\).)42 b(The)28 b(options)h(app)s(earing)f(in)g
-Ft(SHELLOPTS)e Fu(are)j(those)h(rep)s(orted)630 408 y(as)g(`)p
-Ft(on)p Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29
-b(this)h(v)-5 b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f
-(Bash)h(starts)g(up,)630 518 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h
-(list)g(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h
-(startup)f(\014les.)630 628 y(This)30 b(v)-5 b(ariable)31
-b(is)f(readonly)-8 b(.)150 790 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21
-b(b)m(y)g(one)g(eac)m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g
-(started.)38 b(This)20 b(is)h(in)m(tended)630 899 y(to)31
-b(b)s(e)f(a)h(coun)m(t)g(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h
-(shells)f(are)h(nested.)150 1062 y Ft(SRANDOM)144 b Fu(This)36
-b(v)-5 b(ariable)37 b(expands)f(to)h(a)g(32-bit)h(pseudo-random)d(n)m
-(um)m(b)s(er)g(eac)m(h)j(time)f(it)g(is)g(ref-)630 1171
-y(erenced.)47 b(The)32 b(random)g(n)m(um)m(b)s(er)f(generator)j(is)e
-(not)h(linear)g(on)f(systems)h(that)g(supp)s(ort)630
-1281 y Ft(/dev/urandom)26 b Fu(or)k Ft(arc4random)p Fu(,)d(so)j(eac)m
-(h)g(returned)f(n)m(um)m(b)s(er)f(has)h(no)g(relationship)h(to)630
-1390 y(the)39 b(n)m(um)m(b)s(ers)e(preceding)i(it.)66
-b(The)38 b(random)g(n)m(um)m(b)s(er)f(generator)j(cannot)g(b)s(e)e
-(seeded,)630 1500 y(so)c(assignmen)m(ts)g(to)g(this)f(v)-5
-b(ariable)34 b(ha)m(v)m(e)h(no)e(e\013ect.)51 b(If)33
-b Ft(SRANDOM)e Fu(is)j(unset,)g(it)f(loses)i(its)630
-1610 y(sp)s(ecial)c(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g
-(subsequen)m(tly)f(reset.)150 1772 y Ft(TIMEFORMAT)630
-1881 y Fu(The)g(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f
-(as)h(a)g(format)h(string)f(sp)s(ecifying)f(ho)m(w)h(the)g(tim-)630
-1991 y(ing)37 b(information)f(for)h(pip)s(elines)f(pre\014xed)f(with)h
-(the)h Ft(time)e Fu(reserv)m(ed)i(w)m(ord)f(should)g(b)s(e)630
-2101 y(displa)m(y)m(ed.)k(The)27 b(`)p Ft(\045)p Fu(')h(c)m(haracter)h
-(in)m(tro)s(duces)e(an)h(escap)s(e)g(sequence)g(that)g(is)f(expanded)g
-(to)630 2210 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f
-(information.)59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i
-(meanings)630 2320 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)
-h(optional)h(p)s(ortions.)630 2482 y Ft(\045\045)384
-b Fu(A)30 b(literal)i(`)p Ft(\045)p Fu('.)630 2644 y
-Ft(\045[)p Fj(p)p Ft(][l]R)96 b Fu(The)30 b(elapsed)h(time)g(in)f
-(seconds.)630 2806 y Ft(\045[)p Fj(p)p Ft(][l]U)96 b
-Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g
-(user)f(mo)s(de.)630 2968 y Ft(\045[)p Fj(p)p Ft(][l]S)96
-b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g
-(system)g(mo)s(de.)630 3131 y Ft(\045P)384 b Fu(The)30
-b(CPU)g(p)s(ercen)m(tage,)i(computed)e(as)h(\(\045U)f
-Ft(+)g Fu(\045S\))g(/)h(\045R.)630 3293 y(The)23 b(optional)j
-Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h(precision,)i(the)e(n)m
-(um)m(b)s(er)f(of)h(fractional)h(digits)630 3402 y(after)36
-b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 b(v)-5 b(alue)36
-b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h(fraction)g(to)g
-(b)s(e)630 3512 y(output.)48 b(A)m(t)34 b(most)f(three)g(places)h
-(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y)h(b)s(e)e(sp)s
-(eci\014ed;)i(v)-5 b(alues)630 3622 y(of)31 b Fr(p)h
-Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42
+(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 4746 y(the)41
+b(assignmen)m(t.)72 b(The)40 b(n)m(um)m(b)s(er)f(of)i(seconds)f(at)h
+(shell)g(in)m(v)m(o)s(cation)i(and)c(the)i(curren)m(t)630
+4856 y(time)30 b(are)g(alw)m(a)m(ys)g(determined)f(b)m(y)g(querying)g
+(the)h(system)f(clo)s(c)m(k.)42 b(If)29 b Ft(SECONDS)e
+Fu(is)i(unset,)630 4966 y(it)i(loses)g(its)g(sp)s(ecial)g(prop)s
+(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)e(reset.)150
+5121 y Ft(SHELL)240 b Fu(This)24 b(en)m(vironmen)m(t)i(v)-5
+b(ariable)26 b(expands)e(to)i(the)g(full)f(pathname)g(to)h(the)f
+(shell.)39 b(If)25 b(it)g(is)h(not)630 5230 y(set)36
+b(when)f(the)h(shell)g(starts,)i(Bash)e(assigns)h(to)f(it)h(the)f(full)
+f(pathname)h(of)g(the)g(curren)m(t)630 5340 y(user's)30
+b(login)h(shell.)p eop end
+%%Page: 89 95
+TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(89)150 299 y Ft(SHELLOPTS)630
+408 y Fu(A)31 b(colon-separated)h(list)f(of)g(enabled)f(shell)h
+(options.)41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5
+b(alid)630 518 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e
+Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)h(command)g(\(see)i(Section)
+f(4.3.1)h([The)630 628 y(Set)g(Builtin],)h(page)f(67\).)42
+b(The)28 b(options)h(app)s(earing)f(in)g Ft(SHELLOPTS)e
+Fu(are)j(those)h(rep)s(orted)630 737 y(as)g(`)p Ft(on)p
+Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 b(this)h(v)-5
+b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)h
+(starts)g(up,)630 847 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list)g
+(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h(startup)f
+(\014les.)630 956 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8
+b(.)150 1121 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac)
+m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g(started.)38
+b(This)20 b(is)h(in)m(tended)630 1230 y(to)31 b(b)s(e)f(a)h(coun)m(t)g
+(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)150
+1395 y Ft(SRANDOM)144 b Fu(This)36 b(v)-5 b(ariable)37
+b(expands)f(to)h(a)g(32-bit)h(pseudo-random)d(n)m(um)m(b)s(er)g(eac)m
+(h)j(time)f(it)g(is)g(ref-)630 1504 y(erenced.)47 b(The)32
+b(random)g(n)m(um)m(b)s(er)f(generator)j(is)e(not)h(linear)g(on)f
+(systems)h(that)g(supp)s(ort)630 1614 y Ft(/dev/urandom)26
+b Fu(or)k Ft(arc4random)p Fu(,)d(so)j(eac)m(h)g(returned)f(n)m(um)m(b)s
+(er)f(has)h(no)g(relationship)h(to)630 1724 y(the)39
+b(n)m(um)m(b)s(ers)e(preceding)i(it.)66 b(The)38 b(random)g(n)m(um)m(b)
+s(er)f(generator)j(cannot)g(b)s(e)e(seeded,)630 1833
+y(so)c(assignmen)m(ts)g(to)g(this)f(v)-5 b(ariable)34
+b(ha)m(v)m(e)h(no)e(e\013ect.)51 b(If)33 b Ft(SRANDOM)e
+Fu(is)j(unset,)g(it)f(loses)i(its)630 1943 y(sp)s(ecial)c(prop)s
+(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150
+2107 y Ft(TIMEFORMAT)630 2217 y Fu(The)g(v)-5 b(alue)32
+b(of)f(this)g(parameter)g(is)g(used)f(as)h(a)g(format)h(string)f(sp)s
+(ecifying)f(ho)m(w)h(the)g(tim-)630 2326 y(ing)37 b(information)f(for)h
+(pip)s(elines)f(pre\014xed)f(with)h(the)h Ft(time)e Fu(reserv)m(ed)i(w)
+m(ord)f(should)g(b)s(e)630 2436 y(displa)m(y)m(ed.)k(The)27
+b(`)p Ft(\045)p Fu(')h(c)m(haracter)h(in)m(tro)s(duces)e(an)h(escap)s
+(e)g(sequence)g(that)g(is)f(expanded)g(to)630 2545 y(a)37
+b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.)59
+b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630
+2655 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h
+(p)s(ortions.)630 2819 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p
+Ft(\045)p Fu('.)630 2984 y Ft(\045[)p Fj(p)p Ft(][l]R)96
+b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 3148
+y Ft(\045[)p Fj(p)p Ft(][l]U)96 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h
+(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630
+3313 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f
+(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630
+3477 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e
+(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 3641
+y(The)23 b(optional)j Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h
+(precision,)i(the)e(n)m(um)m(b)s(er)f(of)h(fractional)h(digits)630
+3751 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35
+b(v)-5 b(alue)36 b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h
+(fraction)g(to)g(b)s(e)630 3861 y(output.)48 b(A)m(t)34
+b(most)f(three)g(places)h(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y)
+h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 3970 y(of)31
+b Fr(p)h Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42
b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5
-b(alue)30 b(3)h(is)g(used.)630 3758 y(The)54 b(optional)h
+b(alue)30 b(3)h(is)g(used.)630 4107 y(The)54 b(optional)h
Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54
-b(min)m(utes,)61 b(of)54 b(the)g(form)630 3867 y Fr(MM)10
+b(min)m(utes,)61 b(of)54 b(the)g(form)630 4217 y Fr(MM)10
b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5
b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f
-(fraction)h(is)630 3977 y(included.)630 4113 y(If)30
+(fraction)h(is)630 4326 y(included.)630 4463 y(If)30
b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f
-(it)h(had)f(the)h(v)-5 b(alue)870 4248 y Ft
+(it)h(had)f(the)h(v)-5 b(alue)870 4600 y Ft
($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630
-4384 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f
+4737 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f
(information)h(is)f(displa)m(y)m(ed.)62 b(A)37 b(trailing)i(newline)e
-(is)630 4494 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m
-(y)m(ed.)150 4656 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5
+(is)630 4847 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m
+(y)m(ed.)150 5011 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5
b(alue)23 b(greater)h(than)e(zero,)j Ft(TMOUT)d Fu(is)g(treated)i(as)e
-(the)h(default)g(timeout)g(for)g(the)630 4766 y Ft(read)31
+(the)h(default)g(timeout)g(for)g(the)630 5121 y Ft(read)31
b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g
-(51\).)47 b(The)32 b Ft(select)e Fu(command)630 4875
+(55\).)47 b(The)32 b Ft(select)e Fu(command)630 5230
y(\(see)f(Section)h(3.2.5.2)g([Conditional)g(Constructs],)e(page)i
-(11\))f(terminates)g(if)g(input)e(do)s(es)630 4985 y(not)k(arriv)m(e)g
+(12\))f(terminates)g(if)g(input)e(do)s(es)630 5340 y(not)k(arriv)m(e)g
(after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h(is)g(coming)h(from)f(a)
-h(terminal.)630 5121 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d
-(v)-5 b(alue)41 b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f
-(of)h(seconds)f(to)630 5230 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input)
-e(after)i(issuing)f(the)h(primary)e(prompt.)39 b(Bash)26
-b(terminates)h(after)630 5340 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m
-(b)s(er)e(of)h(seconds)h(if)f(a)h(complete)h(line)e(of)h(input)e(do)s
-(es)h(not)h(arriv)m(e.)p eop end
-%%Page: 85 91
-TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(85)150 299 y Ft(TMPDIR)192
-b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40
-b(as)f(the)h(name)f(of)h(a)g(directory)g(in)f(whic)m(h)g(Bash)h
-(creates)630 408 y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g
-(use.)150 568 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)
-g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31
-b(is)f(readonly)-8 b(.)p eop end
-%%Page: 86 92
-TeXDict begin 86 91 bop 3659 -116 a Fu(86)150 299 y Fp(6)80
+h(terminal.)p eop end
+%%Page: 90 96
+TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(90)630 299 y(In)40
+b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d(v)-5 b(alue)41
+b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f(of)h(seconds)f(to)
+630 408 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input)e(after)i(issuing)f
+(the)h(primary)e(prompt.)39 b(Bash)26 b(terminates)h(after)630
+518 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m(b)s(er)e(of)h(seconds)h(if)
+f(a)h(complete)h(line)e(of)h(input)e(do)s(es)h(not)h(arriv)m(e.)150
+677 y Ft(TMPDIR)192 b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5
+b(alue)40 b(as)f(the)h(name)f(of)h(a)g(directory)g(in)f(whic)m(h)g
+(Bash)h(creates)630 787 y(temp)s(orary)30 b(\014les)g(for)g(the)h
+(shell's)g(use.)150 946 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h
+(user)f(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30
+b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)p eop end
+%%Page: 91 97
+TeXDict begin 91 96 bop 3659 -116 a Fu(91)150 299 y Fp(6)80
b(Bash)54 b(F)-13 b(eatures)150 502 y Fu(This)30 b(c)m(hapter)h
(describ)s(es)e(features)i(unique)e(to)i(Bash.)150 731
y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 890 y Ft(bash)h([long-opt])e
@@ -14314,7 +14681,7 @@ b([-o)k Fj(option)p Ft(])581 1438 y([-O)h Fj(shopt_option)p
Ft(])d([)p Fj(argument)h Ft(...)o(])275 1567 y Fu(All)31
b(of)g(the)f(single-c)m(haracter)k(options)d(used)f(with)g(the)h
Ft(set)f Fu(builtin)g(\(see)h(Section)h(4.3.1)g([The)f(Set)150
-1676 y(Builtin],)45 b(page)c(62\))i(can)e(b)s(e)f(used)h(as)g(options)g
+1676 y(Builtin],)45 b(page)c(67\))i(can)e(b)s(e)f(used)h(as)g(options)g
(when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.)74 b(In)41
b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m(ulti-c)m
(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 b(These)38
@@ -14324,7 +14691,7 @@ b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j(options)e(to)g(b)s(e)f
(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e(executed)i(b)s(efore)f(the)g
(shell)g(starts.)49 b(T)-8 b(urns)630 2262 y(on)35 b(extended)g
(debugging)f(mo)s(de)h(\(see)g(Section)h(4.3.2)h([The)d(Shopt)g
-(Builtin],)j(page)f(66,)630 2371 y(for)30 b(a)h(description)f(of)h(the)
+(Builtin],)j(page)f(71,)630 2371 y(for)30 b(a)h(description)f(of)h(the)
f Ft(extdebug)f Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150
2519 y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i
(double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p Ft($)p
@@ -14342,7 +14709,7 @@ b(of)g Ft(~/.bashrc)p Fu(\))e(in)h(an)h(in)m(teractiv)m(e)i(shell.)150
3765 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g
Ft(-l)p Fu(.)150 3912 y Ft(--noediting)630 4022 y Fu(Do)h(not)e(use)h
(the)g Fm(gnu)f Fu(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command)
-f(Line)g(Editing],)630 4131 y(page)h(111\))h(to)f(read)g(command)f
+f(Line)g(Editing],)630 4131 y(page)h(117\))h(to)f(read)g(command)f
(lines)g(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150
4278 y Ft(--noprofile)630 4388 y Fu(Don't)22 b(load)g(the)g
(system-wide)f(startup)g(\014le)h Ft(/etc/profile)c Fu(or)j(an)m(y)h
@@ -14359,15 +14726,15 @@ b(the)h(b)s(eha)m(vior)f(of)g(Bash)h(where)e(the)i(default)f(op)s
y Fu(standard)35 b(to)h(matc)m(h)g(the)g(standard.)55
b(This)35 b(is)h(in)m(tended)f(to)h(mak)m(e)h(Bash)f(b)s(eha)m(v)m(e)g
(as)g(a)630 5230 y(strict)22 b(sup)s(erset)e(of)h(that)g(standard.)37
-b(See)21 b(Section)h(6.11)g([Bash)f(POSIX)f(Mo)s(de],)k(page)d(101,)630
+b(See)21 b(Section)h(6.11)g([Bash)f(POSIX)f(Mo)s(de],)k(page)d(106,)630
5340 y(for)30 b(a)h(description)f(of)h(the)f(Bash)h Fm(posix)f
Fu(mo)s(de.)p eop end
-%%Page: 87 93
-TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(87)150 299 y Ft(--restricted)630
+%%Page: 92 98
+TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y Ft(--restricted)630
408 y Fu(Mak)m(e)54 b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h
(Section)g(6.10)h([The)d(Restricted)j(Shell],)630 518
-y(page)31 b(100\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5
+y(page)31 b(105\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5
b(alen)m(t)31 b(to)g Ft(-v)p Fu(.)41 b(Prin)m(t)30 b(shell)g(input)g
(lines)g(as)h(they're)g(read.)150 946 y Ft(--version)630
1056 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h
@@ -14389,7 +14756,7 @@ b(assignmen)m(t)i(to)g Ft($0)f Fu(sets)g(the)h(name)f(of)g(the)g
(error)g(messages.)150 2192 y Ft(-i)384 b Fu(F)-8 b(orce)22
b(the)g(shell)f(to)g(run)f(in)m(teractiv)m(ely)-8 b(.)41
b(In)m(teractiv)m(e)23 b(shells)e(are)h(describ)s(ed)d(in)i(Section)h
-(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(89.)150
+(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(94.)150
2461 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h
(had)f(b)s(een)f(directly)i(in)m(v)m(ok)m(ed)h(b)m(y)f(login.)44
b(When)31 b(the)h(shell)630 2570 y(is)37 b(in)m(teractiv)m(e,)43
@@ -14400,11 +14767,11 @@ b(this)37 b(is)g(equiv)-5 b(alen)m(t)39 b(to)f(starting)h(a)e(login)i
2790 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29
b(bash)g(--login)p Fu(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell)
h(with)g(a)630 2899 y(Bash)26 b(login)g(shell.)39 b(See)26
-b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(88,)i(for)d(a)h
+b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(93,)i(for)d(a)h
(description)630 3009 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of)
f(a)h(login)g(shell.)150 3168 y Ft(-r)384 b Fu(Mak)m(e)54
b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The)
-d(Restricted)j(Shell],)630 3278 y(page)31 b(100\).)150
+d(Restricted)j(Shell],)630 3278 y(page)31 b(105\).)150
3437 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f
(if)g(no)f(argumen)m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h
(then)630 3547 y(commands)i(are)h(read)g(from)f(the)h(standard)f
@@ -14424,7 +14791,7 @@ b(implies)i(the)f Ft(-n)g Fu(option;)h(no)f(commands)g(will)h(b)s(e)f
Ft(])630 4523 y Fr(shopt)p 854 4523 V 40 w(option)44
b Fu(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h
Ft(shopt)d Fu(builtin)i(\(see)630 4633 y(Section)32 b(4.3.2)h([The)e
-(Shopt)f(Builtin],)i(page)g(66\).)44 b(If)31 b Fr(shopt)p
+(Shopt)f(Builtin],)i(page)g(71\).)44 b(If)31 b Fr(shopt)p
2724 4633 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f
Fu(sets)630 4742 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h
Ft(+O)e Fu(unsets)f(it.)39 b(If)23 b Fr(shopt)p 2423
@@ -14439,9 +14806,9 @@ f(a)h(format)f(that)630 5071 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.)
b(An)m(y)630 5340 y(argumen)m(ts)31 b(after)g(the)f Ft(--)g
Fu(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)p
eop end
-%%Page: 88 94
-TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(88)275 299 y(A)27 b
+%%Page: 93 99
+TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(93)275 299 y(A)27 b
Fl(lo)-5 b(gin)35 b Fu(shell)27 b(is)g(one)h(whose)f(\014rst)f(c)m
(haracter)j(of)e(argumen)m(t)h(zero)f(is)h(`)p Ft(-)p
Fu(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150
@@ -14453,13 +14820,13 @@ g(input)g(and)f(output)h(are)h(b)s(oth)f(connected)h(to)g(ter-)150
774 y(minals)g(\(as)g(determined)f(b)m(y)h Ft(isatty\(3\))p
Fu(\),)e(or)i(one)g(started)g(with)f(the)h Ft(-i)f Fu(option.)51
b(See)33 b(Section)i(6.3)150 884 y([In)m(teractiv)m(e)e(Shells],)e
-(page)g(89,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h
+(page)g(94,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h
(remain)g(after)h(option)f(pro)s(cessing,)h(and)e(neither)h(the)g
Ft(-c)g Fu(nor)f(the)h Ft(-s)g Fu(option)g(has)150 1140
y(b)s(een)44 b(supplied,)j(the)d(\014rst)g(argumen)m(t)h(is)g(assumed)e
(to)j(b)s(e)d(the)i(name)g(of)f(a)h(\014le)g(con)m(taining)h(shell)150
1250 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page)
-h(42\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h
+h(46\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h
(fashion,)150 1359 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f
(the)h(\014le,)i(and)c(the)i(p)s(ositional)g(parameters)g(are)g(set)g
(to)g(the)g(remaining)150 1469 y(argumen)m(ts.)h(Bash)26
@@ -14473,9 +14840,9 @@ b(If)26 b(no)g(commands)g(are)h(executed,)150 1688 y(the)k(exit)g
(exist)h(but)e(cannot)150 2216 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f
(an)h(error.)40 b(Tildes)30 b(are)g(expanded)f(in)h(\014lenames)g(as)g
(describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2326 y(Tilde)f(Expansion)g
-(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(24\).)275
+(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(25\).)275
2473 y(In)m(teractiv)m(e)h(shells)f(are)g(describ)s(ed)e(in)h(Section)h
-(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(89.)150
+(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(94.)150
2684 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j
(shell,)g(or)g(with)e Fh(--login)150 2831 y Fu(When)c(Bash)f(is)h(in)m
(v)m(ok)m(ed)h(as)f(an)g(in)m(teractiv)m(e)j(login)d(shell,)i(or)e(as)g
@@ -14514,9 +14881,9 @@ b(the)f(line)390 4725 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g
5340 y(v)-5 b(ariable)35 b Ft(BASH_ENV)d Fu(in)i(the)h(en)m(vironmen)m
(t,)h(expands)e(its)g(v)-5 b(alue)35 b(if)g(it)g(app)s(ears)e(there,)j
(and)e(uses)g(the)p eop end
-%%Page: 89 95
-TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y(expanded)30
+%%Page: 94 100
+TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y(expanded)30
b(v)-5 b(alue)30 b(as)h(the)g(name)f(of)h(a)f(\014le)h(to)g(read)f(and)
g(execute.)42 b(Bash)31 b(b)s(eha)m(v)m(es)g(as)g(if)f(the)g(follo)m
(wing)150 408 y(command)g(w)m(ere)h(executed:)390 552
@@ -14566,47 +14933,47 @@ Fu(v)-5 b(ariable)150 3044 y(and)30 b(commands)g(are)g(read)h(and)e
(read.)150 3362 y Fk(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h
(daemon)150 3509 y Fu(Bash)36 b(attempts)h(to)g(determine)f(when)f(it)i
(is)f(b)s(eing)g(run)e(with)i(its)g(standard)g(input)f(connected)i(to)g
-(a)150 3618 y(net)m(w)m(ork)h(connection,)j(as)c(when)g(executed)h(b)m
-(y)f(the)h(remote)g(shell)g(daemon,)h(usually)e Ft(rshd)p
-Fu(,)h(or)g(the)150 3728 y(secure)c(shell)f(daemon)h
-Ft(sshd)p Fu(.)49 b(If)33 b(Bash)g(determines)h(it)g(is)f(b)s(eing)g
-(run)f(in)i(this)f(fashion,)h(it)g(reads)g(and)150 3837
-y(executes)29 b(commands)e(from)g Ft(~/.bashrc)p Fu(,)e(if)j(that)g
-(\014le)f(exists)h(and)f(is)g(readable.)41 b(It)27 b(will)h(not)f(do)h
-(this)f(if)150 3947 y(in)m(v)m(ok)m(ed)k(as)f Ft(sh)p
-Fu(.)40 b(The)29 b Ft(--norc)f Fu(option)i(ma)m(y)g(b)s(e)f(used)f(to)j
-(inhibit)e(this)g(b)s(eha)m(vior,)h(and)f(the)h Ft(--rcfile)150
-4057 y Fu(option)36 b(ma)m(y)g(b)s(e)e(used)h(to)h(force)g(another)f
-(\014le)h(to)g(b)s(e)e(read,)j(but)d(neither)i Ft(rshd)e
-Fu(nor)h Ft(sshd)f Fu(generally)150 4166 y(in)m(v)m(ok)m(e)e(the)f
-(shell)f(with)h(those)f(options)h(or)f(allo)m(w)i(them)f(to)g(b)s(e)e
-(sp)s(eci\014ed.)150 4375 y Fk(In)m(v)m(ok)m(ed)40 b(with)g(unequal)h
-(e\013ectiv)m(e)e(and)i(real)g Fg(uid/gid)p Fk(s)150
-4522 y Fu(If)34 b(Bash)h(is)g(started)g(with)f(the)h(e\013ectiv)m(e)i
-(user)d(\(group\))h(id)f(not)h(equal)g(to)g(the)g(real)g(user)f
-(\(group\))h(id,)150 4631 y(and)26 b(the)i Ft(-p)e Fu(option)h(is)g
-(not)h(supplied,)e(no)h(startup)g(\014les)g(are)g(read,)h(shell)f
-(functions)g(are)g(not)g(inherited)150 4741 y(from)41
-b(the)g(en)m(vironmen)m(t,)j(the)d Ft(SHELLOPTS)p Fu(,)h
-Ft(BASHOPTS)p Fu(,)g Ft(CDPATH)p Fu(,)g(and)e Ft(GLOBIGNORE)e
-Fu(v)-5 b(ariables,)45 b(if)150 4850 y(they)28 b(app)s(ear)f(in)h(the)g
-(en)m(vironmen)m(t,)i(are)e(ignored,)h(and)e(the)h(e\013ectiv)m(e)j
-(user)c(id)h(is)g(set)g(to)h(the)f(real)h(user)150 4960
-y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m
-(v)m(o)s(cation,)k(the)c(startup)f(b)s(eha)m(vior)h(is)g(the)g(same,)i
-(but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.)
-150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p
-eop end
-%%Page: 90 96
-TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(90)150 299 y Fk(6.3.1)63
+(a)150 3618 y(net)m(w)m(ork)29 b(connection,)g(as)f(when)f(executed)i
+(b)m(y)e(the)h(historical)h(remote)g(shell)f(daemon,)g(usually)g
+Ft(rshd)p Fu(,)150 3728 y(or)e(the)g(secure)g(shell)g(daemon)f
+Ft(sshd)p Fu(.)38 b(If)26 b(Bash)g(determines)f(it)i(is)e(b)s(eing)h
+(run)e(non-in)m(teractiv)m(ely)29 b(in)c(this)150 3837
+y(fashion,)i(it)g(reads)e(and)h(executes)h(commands)f(from)f
+Ft(~/.bashrc)p Fu(,)g(if)h(that)h(\014le)f(exists)h(and)e(is)h
+(readable.)150 3947 y(It)g(will)f(not)h(do)g(this)f(if)g(in)m(v)m(ok)m
+(ed)i(as)f Ft(sh)p Fu(.)39 b(The)25 b Ft(--norc)e Fu(option)j(ma)m(y)g
+(b)s(e)f(used)g(to)h(inhibit)f(this)h(b)s(eha)m(vior,)150
+4057 y(and)g(the)h Ft(--rcfile)e Fu(option)j(ma)m(y)f(b)s(e)f(used)g
+(to)i(force)g(another)f(\014le)g(to)g(b)s(e)g(read,)h(but)e(neither)h
+Ft(rshd)e Fu(nor)150 4166 y Ft(sshd)k Fu(generally)j(in)m(v)m(ok)m(e)g
+(the)f(shell)f(with)g(those)h(options)g(or)f(allo)m(w)i(them)e(to)i(b)s
+(e)d(sp)s(eci\014ed.)150 4375 y Fk(In)m(v)m(ok)m(ed)40
+b(with)g(unequal)h(e\013ectiv)m(e)e(and)i(real)g Fg(uid/gid)p
+Fk(s)150 4522 y Fu(If)34 b(Bash)h(is)g(started)g(with)f(the)h
+(e\013ectiv)m(e)i(user)d(\(group\))h(id)f(not)h(equal)g(to)g(the)g
+(real)g(user)f(\(group\))h(id,)150 4631 y(and)26 b(the)i
+Ft(-p)e Fu(option)h(is)g(not)h(supplied,)e(no)h(startup)g(\014les)g
+(are)g(read,)h(shell)f(functions)g(are)g(not)g(inherited)150
+4741 y(from)41 b(the)g(en)m(vironmen)m(t,)j(the)d Ft(SHELLOPTS)p
+Fu(,)h Ft(BASHOPTS)p Fu(,)g Ft(CDPATH)p Fu(,)g(and)e
+Ft(GLOBIGNORE)e Fu(v)-5 b(ariables,)45 b(if)150 4850
+y(they)28 b(app)s(ear)f(in)h(the)g(en)m(vironmen)m(t,)i(are)e(ignored,)
+h(and)e(the)h(e\013ectiv)m(e)j(user)c(id)h(is)g(set)g(to)h(the)f(real)h
+(user)150 4960 y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f
+(supplied)g(at)h(in)m(v)m(o)s(cation,)k(the)c(startup)f(b)s(eha)m(vior)
+h(is)g(the)g(same,)i(but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g
+(is)g(not)h(reset.)150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47
+b(Shells)p eop end
+%%Page: 95 101
+TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y Fk(6.3.1)63
b(What)40 b(is)h(an)g(In)m(teractiv)m(e)e(Shell?)150
-446 y Fu(An)g(in)m(teractiv)m(e)k(shell)d(is)g(one)g(started)g(without)
-g(non-option)g(argumen)m(ts,)j(unless)c Ft(-s)h Fu(is)f(sp)s
-(eci\014ed,)150 555 y(without)30 b(sp)s(ecifying)g(the)g
-Ft(-c)f Fu(option,)h(and)g(whose)f(input)g(and)g(error)h(output)f(are)h
-(b)s(oth)f(connected)i(to)150 665 y(terminals)g(\(as)g(determined)f(b)m
-(y)g Ft(isatty\(3\))p Fu(\),)e(or)j(one)f(started)h(with)f(the)h
+446 y Fu(An)f(in)m(teractiv)m(e)j(shell)e(is)f(one)h(started)g(without)
+f(non-option)g(argumen)m(ts)h(\(unless)f Ft(-s)g Fu(is)g(sp)s
+(eci\014ed\))150 555 y(and)29 b(without)h(sp)s(ecifying)g(the)g
+Ft(-c)f Fu(option,)i(whose)e(input)g(and)g(error)h(output)f(are)h(b)s
+(oth)f(connected)i(to)150 665 y(terminals)g(\(as)g(determined)f(b)m(y)g
+Ft(isatty\(3\))p Fu(\),)e(or)j(one)f(started)h(with)f(the)h
Ft(-i)f Fu(option.)275 808 y(An)g(in)m(teractiv)m(e)j(shell)d
(generally)i(reads)e(from)g(and)g(writes)g(to)h(a)g(user's)f(terminal.)
275 952 y(The)i Ft(-s)g Fu(in)m(v)m(o)s(cation)j(option)f(ma)m(y)f(b)s
@@ -14634,8 +15001,8 @@ b(Shell)k(Beha)m(vior)150 3187 y Fu(When)30 b(the)h(shell)f(is)h
(eha)m(vior)f(in)g(sev)m(eral)i(w)m(a)m(ys.)199 3330
y(1.)61 b(Startup)37 b(\014les)g(are)h(read)f(and)g(executed)h(as)f
(describ)s(ed)g(in)g(Section)h(6.2)g([Bash)g(Startup)e(Files],)330
-3440 y(page)31 b(88.)199 3579 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g
-(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(107\))h(is)e(enabled)g(b)m
+3440 y(page)31 b(93.)199 3579 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g
+(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(113\))h(is)e(enabled)g(b)m
(y)g(default.)46 b(When)32 b(job)330 3689 y(con)m(trol)j(is)f(in)f
(e\013ect,)k(Bash)d(ignores)g(the)g(k)m(eyb)s(oard-generated)h(job)e
(con)m(trol)i(signals)g Ft(SIGTTIN)p Fu(,)330 3798 y
@@ -14646,1260 +15013,1377 @@ Fu(b)s(efore)h(reading)h(the)f(\014rst)g(line)h(of)f(a)h(command,)h
Fu(b)s(efore)h(reading)g(the)g(second)g(and)f(subsequen)m(t)g(lines)i
(of)f(a)g(m)m(ulti-line)h(com-)330 4156 y(mand.)42 b(Bash)31
b(expands)f(and)h(displa)m(ys)g Ft(PS0)f Fu(after)h(it)h(reads)f(a)g
-(command)g(but)f(b)s(efore)h(executing)330 4266 y(it.)62
-b(See)38 b(Section)g(6.9)h([Con)m(trolling)g(the)e(Prompt],)j(page)e
-(98,)i(for)d(a)h(complete)h(list)f(of)g(prompt)330 4375
+(command)g(but)f(b)s(efore)h(executing)330 4266 y(it.)54
+b(See)35 b(Section)h(6.9)f([Con)m(trolling)i(the)d(Prompt],)i(page)g
+(104,)h(for)d(a)h(complete)i(list)e(of)g(prompt)330 4375
y(string)30 b(escap)s(e)h(sequences.)199 4514 y(4.)61
-b(Bash)28 b(executes)h(the)e(v)-5 b(alues)28 b(of)g(the)g(set)g(elemen)
-m(ts)h(of)f(the)g Ft(PROMPT_COMMANDS)23 b Fu(arra)m(y)28
-b(v)-5 b(ariable)29 b(as)330 4624 y(commands)e(b)s(efore)f(prin)m(ting)
-h(the)g(primary)g(prompt,)g Ft($PS1)f Fu(\(see)i(Section)f(5.2)i([Bash)
-e(V)-8 b(ariables],)330 4733 y(page)31 b(73\).)199 4872
+b(Bash)31 b(executes)i(the)e(v)-5 b(alues)32 b(of)g(the)f(set)h(elemen)
+m(ts)g(of)g(the)f Ft(PROMPT_COMMAND)d Fu(arra)m(y)k(v)-5
+b(ariable)32 b(as)330 4624 y(commands)27 b(b)s(efore)f(prin)m(ting)h
+(the)g(primary)g(prompt,)g Ft($PS1)f Fu(\(see)i(Section)f(5.2)i([Bash)e
+(V)-8 b(ariables],)330 4733 y(page)31 b(78\).)199 4872
y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h([Command)g(Line)g
-(Editing],)h(page)g(111\))g(is)f(used)g(to)g(read)g(commands)330
+(Editing],)h(page)g(117\))g(is)f(used)g(to)g(read)g(commands)330
4982 y(from)k(the)g(user's)g(terminal.)199 5121 y(6.)61
b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g
Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 b(-o)36 b Fu(instead)h(of)f
(exiting)i(imme-)330 5230 y(diately)f(when)e(it)i(receiv)m(es)h(an)e
Ft(EOF)f Fu(on)h(its)g(standard)f(input)g(when)h(reading)g(a)g(command)
g(\(see)330 5340 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g
-(62\).)p eop end
-%%Page: 91 97
-TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(91)199 299 y(7.)61
+(67\).)p eop end
+%%Page: 96 102
+TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(96)199 299 y(7.)61
b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f(History)h(F)-8
-b(acilities],)51 b(page)45 b(146\))h(and)d(history)330
+b(acilities],)51 b(page)45 b(152\))h(and)d(history)330
408 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],)k
-(page)45 b(148\))h(are)f(enabled)g(b)m(y)f(default.)330
+(page)45 b(154\))h(are)f(enabled)g(b)m(y)f(default.)330
518 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g(the)
g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g(with)
330 628 y(history)i(enabled)h(exits.)199 762 y(8.)61
b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e
-(94\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 896
+(100\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 896
y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g
(ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page)
-f(42\).)154 1030 y(10.)61 b(In)29 b(the)g(absence)h(of)g(an)m(y)g
+f(45\).)154 1030 y(10.)61 b(In)29 b(the)g(absence)h(of)g(an)m(y)g
(traps,)f Ft(SIGINT)f Fu(is)h(caugh)m(t)i(and)e(handled)f(\(see)j
-(Section)f(3.7.6)h([Signals],)330 1140 y(page)g(42\).)42
+(Section)f(3.7.6)h([Signals],)330 1140 y(page)g(45\).)42
b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154
1274 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i
Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f
Ft(huponexit)e Fu(shell)330 1383 y(option)31 b(has)f(b)s(een)g(enabled)
-g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(42\).)154
+g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(45\).)154
1517 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g
(ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see)
-e(Section)h(4.3.1)g([The)330 1627 y(Set)g(Builtin],)g(page)g(62\).)154
+e(Section)h(4.3.1)g([The)330 1627 y(Set)g(Builtin],)g(page)g(67\).)154
1761 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s
(dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32
b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330
1871 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31
b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32
-b(page)f(73\).)154 2005 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i
+b(page)f(78\).)154 2005 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i
(references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34
b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330
2114 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g
-(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(62\).)154
+(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(67\).)154
2248 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f
(errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48
b(unset)g(or)h(n)m(ull)f(in)330 2358 y Ft(${)p Fj(var)p
Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g
-([Shell)e(P)m(arameter)i(Expansion],)e(page)h(25\).)154
+([Shell)e(P)m(arameter)i(Expansion],)e(page)h(26\).)154
2492 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f
(shell)h(builtins)f(will)g(not)h(cause)g(the)f(shell)h(to)g(exit.)154
2626 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f
(sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f
(cause)330 2736 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h
-([Bash)f(POSIX)e(Mo)s(de],)i(page)g(101\).)154 2870 y(18.)61
+([Bash)f(POSIX)e(Mo)s(de],)i(page)g(106\).)154 2870 y(18.)61
b(A)34 b(failed)g Ft(exec)f Fu(will)h(not)g(cause)g(the)g(shell)g(to)g
(exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330
-2980 y(page)e(44\).)154 3114 y(19.)61 b(P)m(arser)31
+2980 y(page)e(48\).)154 3114 y(19.)61 b(P)m(arser)31
b(syn)m(tax)f(errors)g(will)h(not)g(cause)g(the)f(shell)h(to)g(exit.)
-154 3248 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g
-(directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h
-(enabled)f(b)m(y)h(default)330 3357 y(\(see)35 b(the)g(description)f
-(of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f
-Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 3467 y(Shopt)30
-b(Builtin],)h(page)g(66\).)154 3601 y(21.)61 b(The)42
-b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h
-Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h
-(not)330 3711 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s
-(er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f
-Fu(\(see)i(Section)g(5.2)h([Bash)330 3820 y(V)-8 b(ariables],)32
-b(page)f(73\).)150 4060 y Fs(6.4)68 b(Bash)45 b(Conditional)h
-(Expressions)150 4220 y Fu(Conditional)26 b(expressions)g(are)g(used)f
-(b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h
-Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 4329 y(commands.)50
-b(The)33 b Ft(test)g Fu(and)f Ft([)i Fu(commands)f(determine)h(their)f
-(b)s(eha)m(vior)h(based)f(on)h(the)f(n)m(um)m(b)s(er)g(of)150
-4439 y(argumen)m(ts;)28 b(see)f(the)f(descriptions)g(of)g(those)g
-(commands)g(for)g(an)m(y)g(other)h(command-sp)s(eci\014c)e(actions.)275
-4573 y(Expressions)d(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8
+154 3248 y(20.)61 b(If)28 b(the)g Ft(cdspell)f Fu(shell)h(option)h(is)g
+(enabled,)g(the)f(shell)h(will)f(attempt)i(simple)e(sp)s(elling)h
+(correction)330 3357 y(for)f(directory)h(argumen)m(ts)g(to)g(the)g
+Ft(cd)e Fu(builtin)h(\(see)i(the)e(description)h(of)f(the)h
+Ft(cdspell)d Fu(option)j(to)330 3467 y(the)j Ft(shopt)e
+Fu(builtin)h(in)h(Section)g(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g
+(71\).)46 b(The)31 b Ft(cdspell)e Fu(option)330 3576
+y(is)h(only)h(e\013ectiv)m(e)i(in)d(in)m(teractiv)m(e)j(shells.)154
+3711 y(21.)61 b(The)42 b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5
+b(alue)43 b(of)f(the)h Ft(TMOUT)e Fu(v)-5 b(ariable)44
+b(and)e(exit)h(if)g(a)g(command)f(is)h(not)330 3820 y(read)30
+b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)g(of)i(seconds)f
+(after)g(prin)m(ting)g Ft($PS1)f Fu(\(see)i(Section)g(5.2)h([Bash)330
+3930 y(V)-8 b(ariables],)32 b(page)f(78\).)150 4170 y
+Fs(6.4)68 b(Bash)45 b(Conditional)h(Expressions)150 4329
+y Fu(Conditional)25 b(expressions)f(are)g(used)g(b)m(y)g(the)g
+Ft([[)g Fu(comp)s(ound)e(command)i(\(see)h(Section)g(3.2.5.2)i([Condi-)
+150 4439 y(tional)h(Constructs],)g(page)f(12\))h(and)e(the)h
+Ft(test)f Fu(and)g Ft([)h Fu(builtin)f(commands)h(\(see)g(Section)h
+(4.1)g([Bourne)150 4548 y(Shell)37 b(Builtins],)j(page)e(48\).)63
+b(The)36 b Ft(test)g Fu(and)h Ft([)g Fu(commands)g(determine)g(their)h
+(b)s(eha)m(vior)f(based)g(on)150 4658 y(the)29 b(n)m(um)m(b)s(er)f(of)h
+(argumen)m(ts;)h(see)f(the)h(descriptions)e(of)i(those)f(commands)g
+(for)f(an)m(y)i(other)f(command-)150 4768 y(sp)s(eci\014c)h(actions.)
+275 4902 y(Expressions)22 b(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8
b(,)24 b(and)f(are)g(formed)g(from)g(the)g(follo)m(wing)h(primaries.)38
-b(Unary)150 4682 y(expressions)c(are)g(often)g(used)g(to)g(examine)h
+b(Unary)150 5011 y(expressions)c(are)g(often)g(used)g(to)g(examine)h
(the)f(status)g(of)h(a)f(\014le.)52 b(There)33 b(are)h(string)g(op)s
-(erators)h(and)150 4792 y(n)m(umeric)c(comparison)g(op)s(erators)h(as)f
+(erators)h(and)150 5121 y(n)m(umeric)c(comparison)g(op)s(erators)h(as)f
(w)m(ell.)44 b(Bash)31 b(handles)g(sev)m(eral)h(\014lenames)g(sp)s
-(ecially)g(when)e(they)150 4902 y(are)35 b(used)e(in)i(expressions.)52
+(ecially)g(when)e(they)150 5230 y(are)35 b(used)e(in)i(expressions.)52
b(If)34 b(the)h(op)s(erating)f(system)h(on)f(whic)m(h)g(Bash)h(is)f
-(running)f(pro)m(vides)h(these)150 5011 y(sp)s(ecial)22
+(running)f(pro)m(vides)h(these)150 5340 y(sp)s(ecial)22
b(\014les,)i(Bash)e(will)g(use)f(them;)k(otherwise)d(it)g(will)g(em)m
-(ulate)h(them)f(in)m(ternally)h(with)e(this)h(b)s(eha)m(vior:)150
-5121 y(If)27 b(the)g Fr(\014le)33 b Fu(argumen)m(t)27
-b(to)h(one)g(of)f(the)h(primaries)f(is)g(of)h(the)f(form)g
-Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)i(\014le)h(descriptor)f
-Fr(N)150 5230 y Fu(is)g(c)m(hec)m(k)m(ed.)42 b(If)26
-b(the)h Fr(\014le)32 b Fu(argumen)m(t)c(to)f(one)h(of)f(the)g
-(primaries)f(is)h(one)h(of)f Ft(/dev/stdin)p Fu(,)e Ft(/dev/stdout)p
-Fu(,)150 5340 y(or)30 b Ft(/dev/stderr)p Fu(,)e(\014le)i(descriptor)h
-(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m
-(ed.)p eop end
-%%Page: 92 98
-TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(92)275 299 y(When)37
-b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p
-Ft(>)p Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h
-(curren)m(t)150 408 y(lo)s(cale.)k(The)30 b Ft(test)f
-Fu(command)i(uses)f(ASCI)s(I)e(ordering.)275 542 y(Unless)44
-b(otherwise)h(sp)s(eci\014ed,)j(primaries)c(that)h(op)s(erate)g(on)g
-(\014les)f(follo)m(w)i(sym)m(b)s(olic)f(links)g(and)150
-651 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h
-(than)f(the)g(link)h(itself.)150 808 y Ft(-a)f Fj(file)162
-b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)150
-965 y Ft(-b)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
-Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g
-(\014le.)150 1122 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30
-b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s
-(ecial)f(\014le.)150 1279 y Ft(-d)f Fj(file)162 b Fu(T)-8
-b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory)
--8 b(.)150 1436 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30
-b(if)g Fr(\014le)36 b Fu(exists.)150 1592 y Ft(-f)30
+(ulate)h(them)f(in)m(ternally)h(with)e(this)h(b)s(eha)m(vior:)p
+eop end
+%%Page: 97 103
+TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(97)150 299 y(If)27
+b(the)g Fr(\014le)33 b Fu(argumen)m(t)27 b(to)h(one)g(of)f(the)h
+(primaries)f(is)g(of)h(the)f(form)g Ft(/dev/fd/)p Fj(N)p
+Fu(,)e(then)i(\014le)h(descriptor)f Fr(N)150 408 y Fu(is)g(c)m(hec)m(k)
+m(ed.)42 b(If)26 b(the)h Fr(\014le)32 b Fu(argumen)m(t)c(to)f(one)h(of)
+f(the)g(primaries)f(is)h(one)h(of)f Ft(/dev/stdin)p Fu(,)e
+Ft(/dev/stdout)p Fu(,)150 518 y(or)30 b Ft(/dev/stderr)p
+Fu(,)e(\014le)i(descriptor)h(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8
+b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 655 y(When)37 b(used)g(with)g
+Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p
+Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h(curren)m
+(t)150 765 y(lo)s(cale.)k(The)30 b Ft(test)f Fu(command)i(uses)f(ASCI)s
+(I)e(ordering.)275 902 y(Unless)44 b(otherwise)h(sp)s(eci\014ed,)j
+(primaries)c(that)h(op)s(erate)g(on)g(\014les)f(follo)m(w)i(sym)m(b)s
+(olic)f(links)g(and)150 1011 y(op)s(erate)31 b(on)f(the)h(target)h(of)e
+(the)h(link,)f(rather)h(than)f(the)g(link)h(itself.)150
+1175 y Ft(-a)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+Fr(\014le)36 b Fu(exists.)150 1337 y Ft(-b)30 b Fj(file)162
+b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31
+b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g(\014le.)150
+1499 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s(ecial)
+f(\014le.)150 1661 y Ft(-d)f Fj(file)162 b Fu(T)-8 b(rue)30
+b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory)-8
+b(.)150 1823 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30
+b(if)g Fr(\014le)36 b Fu(exists.)150 1985 y Ft(-f)30
b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36
b Fu(exists)31 b(and)f(is)g(a)h(regular)f(\014le.)150
-1749 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+2147 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f
-(set.)150 1906 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30
+(set.)150 2309 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30
b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g
-(link.)150 2063 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30
+(link.)150 2471 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30
b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p
-Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 2220 y Ft(-p)g
+Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 2633 y Ft(-p)g
Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b
Fu(exists)31 b(and)f(is)g(a)h(named)f(pip)s(e)f(\(FIF)m(O\).)150
-2377 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+2795 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(readable.)150
-2534 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+2957 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f
-(zero.)150 2690 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30
+(zero.)150 3119 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30
b(if)g(\014le)h(descriptor)f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g
-(to)h(a)g(terminal.)150 2847 y Ft(-u)f Fj(file)162 b
+(to)h(a)g(terminal.)150 3281 y Ft(-u)f Fj(file)162 b
Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g
-(set-user-id)h(bit)f(is)h(set.)150 3004 y Ft(-w)f Fj(file)162
+(set-user-id)h(bit)f(is)h(set.)150 3443 y Ft(-w)f Fj(file)162
b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31
-b(and)f(is)g(writable.)150 3161 y Ft(-x)g Fj(file)162
+b(and)f(is)g(writable.)150 3605 y Ft(-x)g Fj(file)162
b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31
-b(and)f(is)g(executable.)150 3318 y Ft(-G)g Fj(file)162
+b(and)f(is)g(executable.)150 3767 y Ft(-G)g Fj(file)162
b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31
b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j(group)d(id.)150
-3475 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+3929 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150
-3632 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+4091 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h
-(since)g(it)h(w)m(as)g(last)g(read.)150 3789 y Ft(-O)f
+(since)g(it)h(w)m(as)g(last)g(read.)150 4253 y Ft(-O)f
Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b
Fu(exists)31 b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j
-(user)d(id.)150 3945 y Ft(-S)g Fj(file)162 b Fu(T)-8
+(user)d(id.)150 4416 y Ft(-S)g Fj(file)162 b Fu(T)-8
b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m
-(k)m(et.)150 4102 y Fj(file1)e Ft(-ef)g Fj(file2)630
-4212 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30
+(k)m(et.)150 4578 y Fj(file1)e Ft(-ef)g Fj(file2)630
+4687 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30
b Fr(\014le2)38 b Fu(refer)30 b(to)i(the)e(same)h(device)g(and)f(ino)s
-(de)g(n)m(um)m(b)s(ers.)150 4369 y Fj(file1)f Ft(-nt)g
-Fj(file2)630 4478 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32
+(de)g(n)m(um)m(b)s(ers.)150 4849 y Fj(file1)f Ft(-nt)g
+Fj(file2)630 4959 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32
b Fu(is)24 b(new)m(er)g(\(according)h(to)g(mo)s(di\014cation)f(date\))h
(than)f Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le1)31 b
-Fu(exists)630 4588 y(and)f Fr(\014le2)38 b Fu(do)s(es)30
-b(not.)150 4745 y Fj(file1)f Ft(-ot)g Fj(file2)630 4854
+Fu(exists)630 5068 y(and)f Fr(\014le2)38 b Fu(do)s(es)30
+b(not.)150 5230 y Fj(file1)f Ft(-ot)g Fj(file2)630 5340
y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(is)31 b(older)f(than)g
Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le2)38 b Fu(exists)31
-b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)150 5011
-y Ft(-o)g Fj(optname)630 5121 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h
-(option)f Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41
-b(list)h(of)f(options)h(app)s(ears)e(in)630 5230 y(the)33
-b(description)h(of)f(the)g Ft(-o)g Fu(option)g(to)h(the)g
-Ft(set)e Fu(builtin)h(\(see)h(Section)g(4.3.1)h([The)e(Set)630
-5340 y(Builtin],)e(page)g(62\).)p eop end
-%%Page: 93 99
-TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Ft(-v)30
-b Fj(varname)630 408 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5
-b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(\(has)g(b)s(een)e
-(assigned)i(a)g(v)-5 b(alue\).)150 565 y Ft(-R)30 b Fj(varname)630
-674 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32
-b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h
-(reference.)150 830 y Ft(-z)f Fj(string)66 b Fu(T)-8
-b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 b Fu(is)31
-b(zero.)150 987 y Ft(-n)f Fj(string)150 1096 y(string)192
-b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38
-b Fu(is)31 b(non-zero.)150 1252 y Fj(string1)d Ft(==)i
-Fj(string2)150 1362 y(string1)e Ft(=)i Fj(string2)630
-1472 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82
-b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-)
-630 1581 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m
-(v)m(e)j(\(see)f(Section)g(3.2.5.2)i([Conditional)630
-1691 y(Constructs],)30 b(page)h(11\).)630 1824 y(`)p
-Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e
-Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1980
-y Fj(string1)e Ft(!=)i Fj(string2)630 2089 y Fu(T)-8
+b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)p eop end
+%%Page: 98 104
+TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(98)150 299 y Ft(-o)30
+b Fj(optname)630 408 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h(option)f
+Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41 b(list)h(of)f(options)h
+(app)s(ears)e(in)630 518 y(the)33 b(description)h(of)f(the)g
+Ft(-o)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)g
+(4.3.1)h([The)e(Set)630 628 y(Builtin],)e(page)g(67\).)150
+783 y Ft(-v)f Fj(varname)630 892 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)
+f(v)-5 b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30
+b(set)h(\(has)g(b)s(een)e(assigned)i(a)g(v)-5 b(alue\).)150
+1047 y Ft(-R)30 b Fj(varname)630 1157 y Fu(T)-8 b(rue)30
+b(if)g(the)h(shell)f(v)-5 b(ariable)32 b Fr(v)-5 b(arname)35
+b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h(reference.)150
+1312 y Ft(-z)f Fj(string)66 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g
+(of)f Fr(string)38 b Fu(is)31 b(zero.)150 1467 y Ft(-n)f
+Fj(string)150 1576 y(string)192 b Fu(T)-8 b(rue)30 b(if)g(the)h(length)
+g(of)f Fr(string)38 b Fu(is)31 b(non-zero.)150 1731 y
+Fj(string1)d Ft(==)i Fj(string2)150 1841 y(string1)e
+Ft(=)i Fj(string2)630 1951 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g
+(are)g(equal.)82 b(When)44 b(used)f(with)g(the)h Ft([[)g
+Fu(command,)j(this)d(p)s(er-)630 2060 y(forms)d(pattern)g(matc)m(hing)i
+(as)f(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.2.5.2)i
+([Conditional)630 2170 y(Constructs],)30 b(page)h(12\).)630
+2302 y(`)p Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h
+Ft(test)e Fu(command)h(for)g Fm(posix)g Fu(conformance.)150
+2457 y Fj(string1)e Ft(!=)i Fj(string2)630 2567 y Fu(T)-8
b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150
-2246 y Fj(string1)e Ft(<)i Fj(string2)630 2355 y Fu(T)-8
+2722 y Fj(string1)e Ft(<)i Fj(string2)630 2831 y Fu(T)-8
b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(b)s(efore)f
-Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2511
-y Fj(string1)28 b Ft(>)i Fj(string2)630 2621 y Fu(T)-8
+Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2986
+y Fj(string1)28 b Ft(>)i Fj(string2)630 3096 y Fu(T)-8
b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(after)g
-Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2777
-y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2887 y Ft(OP)j Fu(is)h(one)g(of)h(`)
+Fr(string2)38 b Fu(lexicographically)-8 b(.)150 3251
+y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 3361 y Ft(OP)j Fu(is)h(one)g(of)h(`)
p Ft(-eq)p Fu(',)f(`)p Ft(-ne)p Fu(',)h(`)p Ft(-lt)p
Fu(',)g(`)p Ft(-le)p Fu(',)f(`)p Ft(-gt)p Fu(',)h(or)f(`)p
Ft(-ge)p Fu('.)51 b(These)34 b(arithmetic)h(binary)630
-2996 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44
+3470 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44
b Fu(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,)h(less)f
-(than)f(or)630 3106 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i
+(than)f(or)630 3580 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i
(than)d(or)i(equal)f(to)h Fr(arg2)p Fu(,)h(resp)s(ectiv)m(ely)-8
-b(.)42 b Fr(Arg1)36 b Fu(and)630 3215 y Fr(arg2)41 b
+b(.)42 b Fr(Arg1)36 b Fu(and)630 3689 y Fr(arg2)41 b
Fu(ma)m(y)34 b(b)s(e)f(p)s(ositiv)m(e)h(or)f(negativ)m(e)j(in)m
(tegers.)50 b(When)33 b(used)g(with)g(the)g Ft([[)g Fu(command,)630
-3325 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33
+3799 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33
b(ev)-5 b(aluated)35 b(as)e(arithmetic)i(expressions)d(\(see)j(Section)
-f(6.5)g([Shell)630 3435 y(Arithmetic],)e(page)f(93\).)150
-3672 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3832 y Fu(The)26
+f(6.5)g([Shell)630 3908 y(Arithmetic],)e(page)f(98\).)150
+4145 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 4304 y Fu(The)26
b(shell)h(allo)m(ws)h(arithmetic)f(expressions)g(to)g(b)s(e)f(ev)-5
b(aluated,)29 b(as)d(one)h(of)g(the)g(shell)f(expansions)h(or)f(b)m(y)
-150 3941 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g
+150 4414 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g
Ft(let)e Fu(builtin,)i(or)f(the)g Ft(-i)g Fu(option)h(to)f(the)h
-Ft(declare)d Fu(builtin.)275 4074 y(Ev)-5 b(aluation)27
+Ft(declare)d Fu(builtin.)275 4546 y(Ev)-5 b(aluation)27
b(is)g(done)f(in)g(\014xed-width)g(in)m(tegers)i(with)e(no)h(c)m(hec)m
(k)h(for)e(o)m(v)m(er\015o)m(w,)j(though)d(division)h(b)m(y)150
-4184 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39
+4656 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39
b(The)26 b(op)s(erators)h(and)g(their)g(precedence,)h(asso)s(ciativit)m
-(y)-8 b(,)32 b(and)150 4293 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h
+(y)-8 b(,)32 b(and)150 4765 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h
(in)e(the)h(C)g(language.)56 b(The)35 b(follo)m(wing)h(list)g(of)f(op)s
-(erators)g(is)g(group)s(ed)f(in)m(to)150 4403 y(lev)m(els)27
+(erators)g(is)g(group)s(ed)f(in)m(to)150 4875 y(lev)m(els)27
b(of)f(equal-precedence)i(op)s(erators.)39 b(The)25 b(lev)m(els)j(are)e
(listed)h(in)e(order)h(of)g(decreasing)g(precedence.)150
-4559 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31
+5030 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31
b(p)s(ost-incremen)m(t)g(and)f(p)s(ost-decremen)m(t)150
-4715 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31
-b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4871
-y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)150
-5028 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150
-5184 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 5340 y
-Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d
-(remainder)p eop end
-%%Page: 94 100
-TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y Ft(+)30
-b(-)354 b Fu(addition,)31 b(subtraction)150 460 y Ft(<<)f(>>)258
-b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150
-620 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 781
-y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150
-942 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 1103 y Ft(^)432
-b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1263 y Ft(|)432
-b Fu(bit)m(wise)31 b(OR)150 1424 y Ft(&&)384 b Fu(logical)33
-b(AND)150 1585 y Ft(||)384 b Fu(logical)33 b(OR)150 1746
-y Ft(expr)c(?)h(expr)f(:)h(expr)630 1855 y Fu(conditional)i(op)s
-(erator)150 2016 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g
-(^=)f(|=)630 2126 y Fu(assignmen)m(t)150 2287 y Ft(expr1)g(,)h(expr2)
-630 2396 y Fu(comma)275 2558 y(Shell)38 b(v)-5 b(ariables)39
+5185 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31
+b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 5340
+y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)p
+eop end
+%%Page: 99 105
+TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(99)150 299 y Ft(!)30
+b(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150
+482 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 664 y Ft(*)30
+b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d(remainder)150
+847 y Ft(+)g(-)354 b Fu(addition,)31 b(subtraction)150
+1030 y Ft(<<)f(>>)258 b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g
+(shifts)150 1213 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150
+1395 y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150
+1578 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 1761 y Ft(^)432
+b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1944 y Ft(|)432
+b Fu(bit)m(wise)31 b(OR)150 2126 y Ft(&&)384 b Fu(logical)33
+b(AND)150 2309 y Ft(||)384 b Fu(logical)33 b(OR)150 2492
+y Ft(expr)c(?)h(expr)f(:)h(expr)630 2601 y Fu(conditional)i(op)s
+(erator)150 2784 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g
+(^=)f(|=)630 2894 y Fu(assignmen)m(t)150 3076 y Ft(expr1)g(,)h(expr2)
+630 3186 y Fu(comma)275 3380 y(Shell)38 b(v)-5 b(ariables)39
b(are)g(allo)m(w)m(ed)i(as)e(op)s(erands;)i(parameter)e(expansion)g(is)
-f(p)s(erformed)g(b)s(efore)g(the)150 2667 y(expression)g(is)g(ev)-5
+f(p)s(erformed)g(b)s(efore)g(the)150 3490 y(expression)g(is)g(ev)-5
b(aluated.)66 b(Within)38 b(an)h(expression,)h(shell)e(v)-5
b(ariables)39 b(ma)m(y)g(also)g(b)s(e)f(referenced)g(b)m(y)150
-2777 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m
+3600 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m
(tax.)42 b(A)31 b(shell)f(v)-5 b(ariable)32 b(that)f(is)f(n)m(ull)h(or)
-f(unset)150 2886 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b)
+f(unset)150 3709 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b)
m(y)g(name)h(without)f(using)g(the)g(parameter)h(expansion)f(syn)m
-(tax.)150 2996 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5
+(tax.)150 3819 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5
b(ariable)36 b(is)g(ev)-5 b(aluated)38 b(as)e(an)g(arithmetic)h
-(expression)f(when)f(it)h(is)g(referenced,)i(or)150 3106
-y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m
-(en)j(the)e Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p
-Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 3215 y(a)j(v)-5
-b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5
-b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37
-b(need)e(not)h(ha)m(v)m(e)h(its)f Fr(in)m(teger)44 b
-Fu(attribute)150 3325 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g
-(expression.)275 3461 y(In)m(teger)41 b(constan)m(ts)g(follo)m(w)h(the)
-e(C)g(language)i(de\014nition,)g(without)f(su\016xes)e(or)h(c)m
-(haracter)i(con-)150 3570 y(stan)m(ts.)f(Constan)m(ts)31
-b(with)f(a)g(leading)h(0)f(are)h(in)m(terpreted)f(as)g(o)s(ctal)i(n)m
-(um)m(b)s(ers.)39 b(A)30 b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p
-Ft(0X)p Fu(')150 3680 y(denotes)g(hexadecimal.)42 b(Otherwise,)30
-b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f(form)g([)p Fr(base)5
-b Ft(#)p Fu(])p Fr(n)p Fu(,)30 b(where)f(the)i(optional)g
-Fr(base)150 3789 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m
-(een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and)
-g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3899 y(in)g(that)i(base.)40
+(expression)f(when)f(it)h(is)g(referenced,)i(or)150 3928
+y(when)27 b(a)h(v)-5 b(ariable)29 b(whic)m(h)e(has)h(b)s(een)f(giv)m
+(en)i(the)f Ft(integer)e Fu(attribute)i(using)g(`)p Ft(declare)g(-i)p
+Fu(')g(is)g(assigned)150 4038 y(a)33 b(v)-5 b(alue.)49
+b(A)33 b(n)m(ull)g(v)-5 b(alue)34 b(ev)-5 b(aluates)34
+b(to)g(0.)49 b(A)33 b(shell)g(v)-5 b(ariable)34 b(need)e(not)i(ha)m(v)m
+(e)g(its)f Ft(integer)e Fu(attribute)150 4148 y(turned)e(on)h(to)i(b)s
+(e)d(used)h(in)g(an)g(expression.)275 4305 y(In)m(teger)41
+b(constan)m(ts)g(follo)m(w)h(the)e(C)g(language)i(de\014nition,)g
+(without)f(su\016xes)e(or)h(c)m(haracter)i(con-)150 4415
+y(stan)m(ts.)f(Constan)m(ts)31 b(with)f(a)g(leading)h(0)f(are)h(in)m
+(terpreted)f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)39 b(A)30
+b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p Fu(')150
+4525 y(denotes)g(hexadecimal.)42 b(Otherwise,)30 b(n)m(um)m(b)s(ers)f
+(tak)m(e)i(the)f(form)g([)p Fr(base)5 b Ft(#)p Fu(])p
+Fr(n)p Fu(,)30 b(where)f(the)i(optional)g Fr(base)150
+4634 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m(een)h(2)h
+(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and)g
+Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 4744 y(in)g(that)i(base.)40
b(If)30 b Fr(base)5 b Ft(#)30 b Fu(is)f(omitted,)i(then)f(base)g(10)g
(is)g(used.)40 b(When)30 b(sp)s(ecifying)f Fr(n)p Fu(,)h(if)f(a)i
-(non-digit)f(is)150 4008 y(required,)k(the)g(digits)h(greater)g(than)e
+(non-digit)f(is)150 4853 y(required,)k(the)g(digits)h(greater)g(than)e
(9)i(are)f(represen)m(ted)g(b)m(y)f(the)h(lo)m(w)m(ercase)j(letters,)f
-(the)e(upp)s(ercase)150 4118 y(letters,)26 b(`)p Ft(@)p
+(the)e(upp)s(ercase)150 4963 y(letters,)26 b(`)p Ft(@)p
Fu(',)g(and)d(`)p Ft(_)p Fu(',)i(in)e(that)i(order.)38
b(If)23 b Fr(base)29 b Fu(is)23 b(less)h(than)g(or)f(equal)h(to)h(36,)h
-(lo)m(w)m(ercase)g(and)d(upp)s(ercase)150 4228 y(letters)32
+(lo)m(w)m(ercase)g(and)d(upp)s(ercase)150 5073 y(letters)32
b(ma)m(y)f(b)s(e)e(used)h(in)m(terc)m(hangeably)i(to)f(represen)m(t)g
(n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f(35.)275
-4364 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h
+5230 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h
(precedence.)85 b(Sub-expressions)44 b(in)g(paren)m(theses)i(are)150
-4473 y(ev)-5 b(aluated)32 b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g
-(the)g(precedence)g(rules)f(ab)s(o)m(v)m(e.)150 4716
-y Fs(6.6)68 b(Aliases)150 4875 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f
-(string)f(to)h(b)s(e)f(substituted)g(for)g(a)g(w)m(ord)g(when)g(it)h
-(is)f(used)f(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)150
-4985 y(simple)32 b(command.)45 b(The)31 b(shell)i(main)m(tains)f(a)h
-(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s(e)e(set)h(and)g(unset)f
-(with)h(the)150 5095 y Ft(alias)d Fu(and)h Ft(unalias)e
-Fu(builtin)i(commands.)275 5230 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m
-(h)i(simple)f(command,)g(if)f(unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g
-(see)f(if)g(it)g(has)f(an)g(alias.)150 5340 y(If)24 b(so,)i(that)g(w)m
-(ord)e(is)h(replaced)g(b)m(y)f(the)h(text)h(of)e(the)h(alias.)40
-b(The)24 b(c)m(haracters)i(`)p Ft(/)p Fu(',)h(`)p Ft($)p
-Fu(',)f(`)p Ft(`)p Fu(',)g(`)p Ft(=)p Fu(')f(and)f(an)m(y)h(of)p
-eop end
-%%Page: 95 101
-TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y(the)23
-b(shell)g(metac)m(haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g
-(ab)s(o)m(v)m(e)g(ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.)
-150 408 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e
-(v)-5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m
-(haracters.)40 b(The)150 518 y(\014rst)35 b(w)m(ord)g(of)h(the)g
-(replacemen)m(t)i(text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m
-(ord)g(that)g(is)g(iden)m(tical)i(to)e(an)150 628 y(alias)c(b)s(eing)f
-(expanded)f(is)h(not)g(expanded)f(a)h(second)g(time.)43
-b(This)30 b(means)h(that)g(one)g(ma)m(y)h(alias)g Ft(ls)e
-Fu(to)150 737 y Ft("ls)f(-F")p Fu(,)f(for)f(instance,)i(and)d(Bash)i
-(do)s(es)f(not)h(try)f(to)h(recursiv)m(ely)g(expand)e(the)i(replacemen)
-m(t)h(text.)40 b(If)150 847 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h
-(alias)g(v)-5 b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next)
-h(command)e(w)m(ord)h(follo)m(wing)i(the)150 956 y(alias)f(is)e(also)h
-(c)m(hec)m(k)m(ed)i(for)d(alias)h(expansion.)275 1096
-y(Aliases)e(are)f(created)i(and)d(listed)i(with)f(the)g
-Ft(alias)f Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g
-Ft(unalias)150 1206 y Fu(command.)275 1345 y(There)44
-b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g(in)f(the)h
-(replacemen)m(t)i(text,)i(as)d(in)e Ft(csh)p Fu(.)83
-b(If)150 1455 y(argumen)m(ts)37 b(are)h(needed,)g(a)g(shell)f(function)
-f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g([Shell)f(F)-8
-b(unctions],)150 1564 y(page)31 b(18\).)275 1704 y(Aliases)i(are)h(not)
-e(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j
-(unless)c(the)h Ft(expand_aliases)150 1813 y Fu(shell)e(option)f(is)h
+5340 y(ev)-5 b(aluated)32 b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g
+(the)g(precedence)g(rules)f(ab)s(o)m(v)m(e.)p eop end
+%%Page: 100 106
+TeXDict begin 100 105 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(100)150 299 y Fs(6.6)68
+b(Aliases)150 458 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f(string)f(to)h(b)s
+(e)f(substituted)g(for)g(a)g(w)m(ord)g(when)g(it)h(is)f(used)f(as)i
+(the)g(\014rst)e(w)m(ord)h(of)h(a)150 568 y(simple)32
+b(command.)45 b(The)31 b(shell)i(main)m(tains)f(a)h(list)f(of)g
+(aliases)i(that)e(ma)m(y)h(b)s(e)e(set)h(and)g(unset)f(with)h(the)150
+677 y Ft(alias)d Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275
+810 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m(h)i(simple)f(command,)g(if)f
+(unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g(see)f(if)g(it)g(has)f(an)g
+(alias.)150 920 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m(y)
+f(the)h(text)h(of)e(the)h(alias.)40 b(The)24 b(c)m(haracters)i(`)p
+Ft(/)p Fu(',)h(`)p Ft($)p Fu(',)f(`)p Ft(`)p Fu(',)g(`)p
+Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 1030 y(the)e(shell)g(metac)m
+(haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g(ab)s(o)m(v)m(e)g
+(ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.)150
+1139 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v)
+-5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m(haracters.)
+40 b(The)150 1249 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i
+(text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m(ord)g(that)g(is)g
+(iden)m(tical)i(to)e(an)150 1358 y(alias)c(b)s(eing)f(expanded)f(is)h
+(not)g(expanded)f(a)h(second)g(time.)43 b(This)30 b(means)h(that)g(one)
+g(ma)m(y)h(alias)g Ft(ls)e Fu(to)150 1468 y Ft("ls)f(-F")p
+Fu(,)f(for)f(instance,)i(and)d(Bash)i(do)s(es)f(not)h(try)f(to)h
+(recursiv)m(ely)g(expand)e(the)i(replacemen)m(t)h(text.)40
+b(If)150 1578 y(the)30 b(last)h(c)m(haracter)g(of)g(the)f(alias)h(v)-5
+b(alue)30 b(is)g(a)g Ft(blank)p Fu(,)f(then)h(the)g(next)g(command)g(w)
+m(ord)f(follo)m(wing)j(the)150 1687 y(alias)g(is)e(also)h(c)m(hec)m(k)m
+(ed)i(for)d(alias)h(expansion.)275 1820 y(Aliases)e(are)f(created)i
+(and)d(listed)i(with)f(the)g Ft(alias)f Fu(command,)h(and)g(remo)m(v)m
+(ed)h(with)f(the)g Ft(unalias)150 1930 y Fu(command.)275
+2063 y(There)44 b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g
+(in)f(the)h(replacemen)m(t)i(text,)i(as)d(in)e Ft(csh)p
+Fu(.)83 b(If)150 2172 y(argumen)m(ts)31 b(are)f(needed,)h(use)f(a)h
+(shell)f(function)g(\(see)i(Section)f(3.3)g([Shell)g(F)-8
+b(unctions],)31 b(page)g(19\).)275 2305 y(Aliases)i(are)h(not)e
+(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j
+(unless)c(the)h Ft(expand_aliases)150 2415 y Fu(shell)e(option)f(is)h
(set)g(using)f Ft(shopt)f Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g
-(Builtin],)h(page)g(66\).)275 1953 y(The)38 b(rules)h(concerning)h(the)
+(Builtin],)h(page)g(71\).)275 2548 y(The)38 b(rules)h(concerning)h(the)
f(de\014nition)g(and)g(use)g(of)g(aliases)i(are)e(somewhat)h
-(confusing.)67 b(Bash)150 2063 y(alw)m(a)m(ys)37 b(reads)f(at)h(least)g
+(confusing.)67 b(Bash)150 2657 y(alw)m(a)m(ys)37 b(reads)f(at)h(least)g
(one)f(complete)i(line)e(of)g(input,)h(and)e(all)i(lines)f(that)g(mak)m
-(e)h(up)e(a)h(comp)s(ound)150 2172 y(command,)29 b(b)s(efore)g
+(e)h(up)e(a)h(comp)s(ound)150 2767 y(command,)29 b(b)s(efore)g
(executing)i(an)m(y)e(of)h(the)f(commands)g(on)g(that)h(line)f(or)h
-(the)f(comp)s(ound)f(command.)150 2282 y(Aliases)g(are)g(expanded)e
+(the)f(comp)s(ound)f(command.)150 2877 y(Aliases)g(are)g(expanded)e
(when)g(a)i(command)f(is)g(read,)h(not)f(when)f(it)i(is)f(executed.)41
-b(Therefore,)28 b(an)f(alias)150 2391 y(de\014nition)36
+b(Therefore,)28 b(an)f(alias)150 2986 y(de\014nition)36
b(app)s(earing)h(on)f(the)h(same)g(line)g(as)g(another)g(command)f(do)s
-(es)g(not)h(tak)m(e)i(e\013ect)f(un)m(til)f(the)150 2501
+(es)g(not)h(tak)m(e)i(e\013ect)f(un)m(til)f(the)150 3096
y(next)i(line)g(of)g(input)f(is)h(read.)66 b(The)38 b(commands)h(follo)
m(wing)h(the)f(alias)h(de\014nition)e(on)h(that)g(line)h(are)150
-2610 y(not)33 b(a\013ected)h(b)m(y)f(the)g(new)f(alias.)49
+3205 y(not)33 b(a\013ected)h(b)m(y)f(the)g(new)f(alias.)49
b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e(functions)
-i(are)g(executed.)150 2720 y(Aliases)c(are)g(expanded)e(when)g(a)i
+i(are)g(executed.)150 3315 y(Aliases)c(are)g(expanded)e(when)g(a)i
(function)e(de\014nition)h(is)g(read,)h(not)f(when)g(the)g(function)g
-(is)g(executed,)150 2830 y(b)s(ecause)36 b(a)h(function)f(de\014nition)
+(is)g(executed,)150 3425 y(b)s(ecause)36 b(a)h(function)f(de\014nition)
f(is)i(itself)g(a)f(command.)58 b(As)36 b(a)h(consequence,)h(aliases)g
-(de\014ned)d(in)h(a)150 2939 y(function)28 b(are)h(not)g(a)m(v)-5
+(de\014ned)d(in)h(a)150 3534 y(function)28 b(are)h(not)g(a)m(v)-5
b(ailable)31 b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41
b(T)-8 b(o)29 b(b)s(e)f(safe,)i(alw)m(a)m(ys)g(put)e(alias)150
-3049 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h
+3644 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h
(use)f Ft(alias)f Fu(in)h(comp)s(ound)f(commands.)275
-3188 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i
+3777 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i
(functions)f(are)g(preferred)g(o)m(v)m(er)h(aliases.)150
-3437 y Fs(6.7)68 b(Arra)l(ys)150 3596 y Fu(Bash)33 b(pro)m(vides)g
+4014 y Fs(6.7)68 b(Arra)l(ys)150 4174 y Fu(Bash)33 b(pro)m(vides)g
(one-dimensional)g(indexed)f(and)h(asso)s(ciativ)m(e)i(arra)m(y)e(v)-5
b(ariables.)49 b(An)m(y)33 b(v)-5 b(ariable)33 b(ma)m(y)150
-3706 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e
+4283 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e
Ft(declare)e Fu(builtin)h(will)i(explicitly)g(declare)g(an)f(arra)m(y)
--8 b(.)46 b(There)32 b(is)150 3815 y(no)h(maxim)m(um)g(limit)h(on)f
+-8 b(.)46 b(There)32 b(is)150 4393 y(no)h(maxim)m(um)g(limit)h(on)f
(the)g(size)h(of)g(an)f(arra)m(y)-8 b(,)35 b(nor)d(an)m(y)i(requiremen)
-m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 3925
+m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 4503
y(or)26 b(assigned)h(con)m(tiguously)-8 b(.)41 b(Indexed)25
b(arra)m(ys)i(are)f(referenced)g(using)g(in)m(tegers)i(\(including)e
-(arithmetic)150 4034 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell)
-e(Arithmetic],)k(page)d(93\)\))h(and)d(are)i(zero-based;)k(asso)s
-(ciativ)m(e)150 4144 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59
+(arithmetic)150 4612 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell)
+e(Arithmetic],)k(page)d(98\)\))h(and)d(are)i(zero-based;)k(asso)s
+(ciativ)m(e)150 4722 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59
b(Unless)36 b(otherwise)h(noted,)h(indexed)e(arra)m(y)h(indices)f(m)m
-(ust)g(b)s(e)g(non-)150 4254 y(negativ)m(e)d(in)m(tegers.)275
-4393 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c
+(ust)g(b)s(e)g(non-)150 4831 y(negativ)m(e)d(in)m(tegers.)275
+4964 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c
(an)m(y)g(v)-5 b(ariable)28 b(is)g(assigned)f(to)h(using)f(the)g(syn)m
-(tax)390 4533 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p
-Fj(value)150 4672 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g
+(tax)390 5097 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p
+Fj(value)150 5230 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g
(an)f(arithmetic)i(expression)e(that)h(m)m(ust)g(ev)-5
b(aluate)36 b(to)f(a)g(n)m(um)m(b)s(er.)51 b(T)-8 b(o)150
-4782 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31
-b(use)390 4921 y Ft(declare)46 b(-a)h Fj(name)150 5061
-y Fu(The)30 b(syn)m(tax)390 5200 y Ft(declare)46 b(-a)h
-Fj(name)p Ft([)p Fj(subscript)p Ft(])150 5340 y Fu(is)30
-b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)p
-eop end
-%%Page: 96 102
-TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(96)150 299 y(Asso)s(ciativ)m(e)33
-b(arra)m(ys)d(are)h(created)h(using)390 427 y Ft(declare)46
-b(-A)h Fj(name)275 555 y Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s
-(eci\014ed)g(for)h(an)g(arra)m(y)g(v)-5 b(ariable)47
-b(using)e(the)h Ft(declare)e Fu(and)h Ft(readonly)150
-664 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g(applies)g(to)g(all)g
-(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 b(.)275 792 y(Arra)m(ys)30
-b(are)h(assigned)f(to)h(using)f(comp)s(ound)f(assignmen)m(ts)i(of)g
-(the)f(form)390 920 y Fj(name)p Ft(=\()p Fj(value1)44
-b(value2)j Ft(...)f(\))150 1048 y Fu(where)33 b(eac)m(h)i
-Fr(v)-5 b(alue)40 b Fu(ma)m(y)34 b(b)s(e)g(of)g(the)g(form)f
-Ft([)p Fj(subscript)p Ft(]=)p Fr(string)p Fu(.)48 b(Indexed)33
-b(arra)m(y)h(assignmen)m(ts)h(do)150 1157 y(not)26 b(require)f(an)m
-(ything)g(but)g Fr(string)p Fu(.)39 b(When)25 b(assigning)h(to)g
-(indexed)f(arra)m(ys,)i(if)e(the)h(optional)g(subscript)150
-1267 y(is)h(supplied,)f(that)h(index)g(is)f(assigned)h(to;)i(otherwise)
-e(the)g(index)g(of)f(the)h(elemen)m(t)i(assigned)d(is)h(the)g(last)150
-1377 y(index)j(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c
-(one.)41 b(Indexing)30 b(starts)h(at)g(zero.)275 1504
-y(Eac)m(h)26 b Fr(v)-5 b(alue)32 b Fu(in)26 b(the)h(list)g(undergo)s
-(es)e(all)i(the)g(shell)f(expansions)g(describ)s(ed)f(ab)s(o)m(v)m(e)j
-(\(see)f(Section)g(3.5)150 1614 y([Shell)j(Expansions],)h(page)g(22\).)
-275 1742 y(When)k(assigning)i(to)g(an)f(asso)s(ciativ)m(e)i(arra)m(y)-8
-b(,)39 b(the)d(w)m(ords)f(in)h(a)h(comp)s(ound)d(assignmen)m(t)j(ma)m
-(y)g(b)s(e)150 1851 y(either)31 b(assignmen)m(t)h(statemen)m(ts,)h(for)
-e(whic)m(h)g(the)g(subscript)f(is)h(required,)g(or)g(a)g(list)h(of)f(w)
-m(ords)f(that)i(is)150 1961 y(in)m(terpreted)g(as)g(a)g(sequence)f(of)h
+5340 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31
+b(use)p eop end
+%%Page: 101 107
+TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(101)390 299 y Ft(declare)46
+b(-a)h Fj(name)150 438 y Fu(The)30 b(syn)m(tax)390 577
+y Ft(declare)46 b(-a)h Fj(name)p Ft([)p Fj(subscript)p
+Ft(])150 715 y Fu(is)30 b(also)i(accepted;)g(the)e Fr(subscript)h
+Fu(is)g(ignored.)150 854 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h
+(created)h(using)390 993 y Ft(declare)46 b(-A)h Fj(name)275
+1132 y Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g
+(arra)m(y)g(v)-5 b(ariable)47 b(using)e(the)h Ft(declare)e
+Fu(and)h Ft(readonly)150 1241 y Fu(builtins.)40 b(Eac)m(h)31
+b(attribute)g(applies)g(to)g(all)g(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)
+-8 b(.)275 1380 y(Arra)m(ys)30 b(are)h(assigned)f(to)h(using)f(comp)s
+(ound)f(assignmen)m(ts)i(of)g(the)f(form)390 1519 y Fj(name)p
+Ft(=\()p Fj(value1)44 b(value2)j Ft(...)f(\))150 1658
+y Fu(where)33 b(eac)m(h)i Fr(v)-5 b(alue)40 b Fu(ma)m(y)34
+b(b)s(e)g(of)g(the)g(form)f Ft([)p Fj(subscript)p Ft(]=)p
+Fr(string)p Fu(.)48 b(Indexed)33 b(arra)m(y)h(assignmen)m(ts)h(do)150
+1767 y(not)26 b(require)f(an)m(ything)g(but)g Fr(string)p
+Fu(.)39 b(When)25 b(assigning)h(to)g(indexed)f(arra)m(ys,)i(if)e(the)h
+(optional)g(subscript)150 1877 y(is)h(supplied,)f(that)h(index)g(is)f
+(assigned)h(to;)i(otherwise)e(the)g(index)g(of)f(the)h(elemen)m(t)i
+(assigned)d(is)h(the)g(last)150 1987 y(index)j(assigned)h(to)g(b)m(y)f
+(the)g(statemen)m(t)j(plus)c(one.)41 b(Indexing)30 b(starts)h(at)g
+(zero.)275 2125 y(Eac)m(h)26 b Fr(v)-5 b(alue)32 b Fu(in)26
+b(the)h(list)g(undergo)s(es)e(all)i(the)g(shell)f(expansions)g(describ)
+s(ed)f(ab)s(o)m(v)m(e)j(\(see)f(Section)g(3.5)150 2235
+y([Shell)j(Expansions],)h(page)g(24\).)275 2374 y(When)k(assigning)i
+(to)g(an)f(asso)s(ciativ)m(e)i(arra)m(y)-8 b(,)39 b(the)d(w)m(ords)f
+(in)h(a)h(comp)s(ound)d(assignmen)m(t)j(ma)m(y)g(b)s(e)150
+2483 y(either)31 b(assignmen)m(t)h(statemen)m(ts,)h(for)e(whic)m(h)g
+(the)g(subscript)f(is)h(required,)g(or)g(a)g(list)h(of)f(w)m(ords)f
+(that)i(is)150 2593 y(in)m(terpreted)g(as)g(a)g(sequence)f(of)h
(alternating)h(k)m(eys)f(and)f(v)-5 b(alues:)44 b Fr(name)5
b Fu(=\()p Fr(k)m(ey1)40 b(v)-5 b(alue1)40 b(k)m(ey2)g(v)-5
-b(alue2)156 2071 y Fu(.)22 b(.)g(.)47 b(\).)57 b(These)35
+b(alue2)156 2703 y Fu(.)22 b(.)g(.)47 b(\).)57 b(These)35
b(are)i(treated)f(iden)m(tically)i(to)e Fr(name)5 b Fu(=\()36
b([)p Fr(k)m(ey1)7 b Fu(]=)p Fr(v)-5 b(alue1)46 b Fu([)p
Fr(k)m(ey2)7 b Fu(]=)p Fr(v)-5 b(alue2)51 b Fu(.)22 b(.)h(.)46
-b(\).)57 b(The)150 2180 y(\014rst)25 b(w)m(ord)f(in)h(the)h(list)g
+b(\).)57 b(The)150 2812 y(\014rst)25 b(w)m(ord)f(in)h(the)h(list)g
(determines)f(ho)m(w)g(the)h(remaining)f(w)m(ords)g(are)h(in)m
-(terpreted;)h(all)f(assignmen)m(ts)g(in)150 2290 y(a)31
+(terpreted;)h(all)f(assignmen)m(ts)g(in)150 2922 y(a)31
b(list)f(m)m(ust)h(b)s(e)e(of)h(the)h(same)f(t)m(yp)s(e.)41
b(When)30 b(using)g(k)m(ey/v)-5 b(alue)32 b(pairs,)e(the)g(k)m(eys)h
-(ma)m(y)g(not)f(b)s(e)g(missing)150 2399 y(or)g(empt)m(y;)h(a)g
+(ma)m(y)g(not)f(b)s(e)g(missing)150 3031 y(or)g(empt)m(y;)h(a)g
(\014nal)f(missing)g(v)-5 b(alue)31 b(is)g(treated)g(lik)m(e)h(the)e
-(empt)m(y)h(string.)275 2527 y(This)f(syn)m(tax)j(is)e(also)i(accepted)
+(empt)m(y)h(string.)275 3170 y(This)f(syn)m(tax)j(is)e(also)i(accepted)
g(b)m(y)f(the)f Ft(declare)f Fu(builtin.)44 b(Individual)31
-b(arra)m(y)h(elemen)m(ts)h(ma)m(y)g(b)s(e)150 2637 y(assigned)e(to)g
+b(arra)m(y)h(elemen)m(ts)h(ma)m(y)g(b)s(e)150 3280 y(assigned)e(to)g
(using)f(the)g Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p
Fj(value)25 b Fu(syn)m(tax)31 b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275
-2765 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8
+3419 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8
b(,)32 b(if)f Fr(name)36 b Fu(is)31 b(subscripted)e(b)m(y)i(a)g
-(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 2874 y(n)m(um)m(b)s(er)43
+(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 3528 y(n)m(um)m(b)s(er)43
b(is)h(in)m(terpreted)h(as)f(relativ)m(e)j(to)e(one)f(greater)i(than)e
(the)g(maxim)m(um)g(index)g(of)h Fr(name)p Fu(,)j(so)150
-2984 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g
+3638 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g
(end)g(of)g(the)h(arra)m(y)-8 b(,)29 b(and)e(an)g(index)g(of)g(-1)h
-(references)g(the)f(last)150 3093 y(elemen)m(t.)275 3221
-y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f
+(references)g(the)f(last)150 3747 y(elemen)m(t.)275 3886
+y(The)j(`)p Ft(+=)p Fu(')g(op)s(erator)h(will)g(app)s(end)e(to)i(an)g
+(arra)m(y)g(v)-5 b(ariable)32 b(when)d(assigning)i(using)g(the)f(comp)s
+(ound)150 3996 y(assignmen)m(t)h(syn)m(tax;)g(see)g(Section)g(3.4)h
+([Shell)e(P)m(arameters],)i(page)g(21,)f(ab)s(o)m(v)m(e.)275
+4134 y(An)m(y)d(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f
(referenced)g(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p
-Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 3331 y(required)f(to)j(a)m
+Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 4244 y(required)f(to)j(a)m
(v)m(oid)f(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion)
f(op)s(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150
-3440 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f
+4354 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f
(expands)f(to)i(all)g(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h
Fr(name)p Fu(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150
-3550 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g
+4463 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g
(quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j
-Ft(${)p Fj(name)p Ft([*]})150 3660 y Fu(expands)25 b(to)h(a)g(single)h
+Ft(${)p Fj(name)p Ft([*]})150 4573 y Fu(expands)25 b(to)h(a)g(single)h
(w)m(ord)e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem)
m(b)s(er)f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150
-3769 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29
+4682 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29
b(and)f Ft(${)p Fj(name)p Ft([@]})d Fu(expands)i(eac)m(h)i(elemen)m(t)h
(of)e Fr(name)33 b Fu(to)c(a)f(separate)h(w)m(ord.)150
-3879 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f
+4792 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f
Ft(${)p Fj(name)p Ft([@]})e Fu(expands)h(to)i(nothing.)47
-b(If)31 b(the)i(double-quoted)150 3988 y(expansion)39
+b(If)31 b(the)i(double-quoted)150 4902 y(expansion)39
b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)d(expansion)h(of)g(the)f
-(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 4098
+(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 5011
y(b)s(eginning)29 b(part)g(of)h(the)f(original)i(w)m(ord,)e(and)g(the)h
(expansion)f(of)h(the)f(last)i(parameter)e(is)h(joined)f(with)150
-4208 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40
+5121 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40
b(This)28 b(is)h(analogous)h(to)f(the)h(expansion)e(of)h(the)g(sp)s
-(ecial)h(param-)150 4317 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p
+(ecial)h(param-)150 5230 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p
Ft(*)p Fu('.)41 b Ft(${#)p Fj(name)p Ft([)p Fj(subscript)p
Ft(]})24 b Fu(expands)k(to)i(the)g(length)g(of)f Ft(${)p
Fj(name)p Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(If)150
-4427 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p
+5340 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p
Ft(*)p Fu(',)g(the)g(expansion)f(is)g(the)h(n)m(um)m(b)s(er)e(of)i
(elemen)m(ts)g(in)f(the)h(arra)m(y)-8 b(.)41 b(If)27
-b(the)g Fr(subscript)150 4536 y Fu(used)34 b(to)h(reference)g(an)f
-(elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)-5 b(aluates)36
-b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)150
-4646 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h
+b(the)g Fr(subscript)p eop end
+%%Page: 102 108
+TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(102)150 299 y(used)34
+b(to)h(reference)g(an)f(elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)
+-5 b(aluates)36 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)
+150 408 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h
(than)f(the)h(maxim)m(um)f(index)f(of)h(the)h(arra)m(y)-8
-b(,)33 b(so)g(negativ)m(e)150 4756 y(indices)d(coun)m(t)h(bac)m(k)h
+b(,)33 b(so)g(negativ)m(e)150 518 y(indices)d(coun)m(t)h(bac)m(k)h
(from)e(the)g(end)g(of)g(the)h(arra)m(y)-8 b(,)31 b(and)f(an)g(index)g
(of)h(-1)g(refers)f(to)h(the)g(last)g(elemen)m(t.)275
-4883 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42
+675 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42
b(without)e(a)h(subscript)e(is)i(equiv)-5 b(alen)m(t)42
-b(to)f(referencing)g(with)g(a)150 4993 y(subscript)35
+b(to)f(referencing)g(with)g(a)150 785 y(subscript)35
b(of)h(0.)57 b(An)m(y)36 b(reference)g(to)h(a)f(v)-5
b(ariable)36 b(using)g(a)g(v)-5 b(alid)36 b(subscript)f(is)h(legal,)j
-(and)c Ft(bash)g Fu(will)150 5103 y(create)d(an)e(arra)m(y)h(if)f
-(necessary)-8 b(.)275 5230 y(An)35 b(arra)m(y)i(v)-5
+(and)c Ft(bash)g Fu(will)150 894 y(create)d(an)e(arra)m(y)h(if)f
+(necessary)-8 b(.)275 1051 y(An)35 b(arra)m(y)i(v)-5
b(ariable)37 b(is)g(considered)f(set)h(if)f(a)h(subscript)e(has)h(b)s
(een)g(assigned)g(a)h(v)-5 b(alue.)59 b(The)36 b(n)m(ull)150
-5340 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)p
-eop end
-%%Page: 97 103
-TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(97)275 299 y(It)29
-b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i(\(indices\))f(of)f
-(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5 b(alues.)41
-b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p Fi(})150 408
-y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([*])p
-Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g(arra)m(y)g
-(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39 b(treatmen)m(t)150
-518 y(when)i(in)g(double)g(quotes)h(is)f(similar)h(to)h(the)e
-(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p
-Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 628 y(within)30
-b(double)g(quotes.)275 759 y(The)25 b Ft(unset)g Fu(builtin)g(is)h
+1161 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275
+1317 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i
+(\(indices\))f(of)f(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5
+b(alues.)41 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p
+Fi(})150 1427 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5
+b Fu([*])p Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g
+(arra)m(y)g(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39
+b(treatmen)m(t)150 1537 y(when)i(in)g(double)g(quotes)h(is)f(similar)h
+(to)h(the)e(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p
+Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 1646 y(within)30
+b(double)g(quotes.)275 1803 y(The)25 b Ft(unset)g Fu(builtin)g(is)h
(used)f(to)i(destro)m(y)f(arra)m(ys.)40 b Ft(unset)29
b Fj(name)p Ft([)p Fj(subscript)p Ft(])22 b Fu(destro)m(ys)k(the)g
-(arra)m(y)150 868 y(elemen)m(t)40 b(at)e(index)g Fr(subscript)p
+(arra)m(y)150 1913 y(elemen)m(t)40 b(at)e(index)g Fr(subscript)p
Fu(.)62 b(Negativ)m(e)41 b(subscripts)c(to)i(indexed)e(arra)m(ys)i(are)
-f(in)m(terpreted)h(as)f(de-)150 978 y(scrib)s(ed)30 b(ab)s(o)m(v)m(e.)
-42 b(Unsetting)31 b(the)g(last)g(elemen)m(t)h(of)f(an)g(arra)m(y)g(v)-5
-b(ariable)31 b(do)s(es)f(not)h(unset)f(the)h(v)-5 b(ariable.)150
-1087 y Ft(unset)29 b Fj(name)p Fu(,)e(where)h Fr(name)33
-b Fu(is)28 b(an)g(arra)m(y)-8 b(,)30 b(remo)m(v)m(es)f(the)f(en)m(tire)
-h(arra)m(y)-8 b(.)41 b(A)28 b(subscript)f(of)h(`)p Ft(*)p
-Fu(')g(or)g(`)p Ft(@)p Fu(')g(also)150 1197 y(remo)m(v)m(es)k(the)e(en)
-m(tire)i(arra)m(y)-8 b(.)275 1328 y(When)35 b(using)g(a)i(v)-5
-b(ariable)36 b(name)g(with)g(a)g(subscript)e(as)i(an)g(argumen)m(t)g
-(to)h(a)f(command,)h(suc)m(h)f(as)150 1438 y(with)k Ft(unset)p
-Fu(,)h(without)e(using)h(the)g(w)m(ord)f(expansion)h(syn)m(tax)g
-(describ)s(ed)f(ab)s(o)m(v)m(e,)44 b(the)c(argumen)m(t)g(is)150
-1547 y(sub)5 b(ject)25 b(to)h(the)g(shell's)g(\014lename)f(expansion.)
-39 b(If)25 b(\014lename)h(expansion)f(is)g(not)h(desired,)g(the)f
-(argumen)m(t)150 1657 y(should)k(b)s(e)h(quoted.)275
-1788 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p Fu(,)h(and)e
-Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g Ft(-a)e
-Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150 1897 y(arra)m(y)28
-b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f(an)h(asso)s(ciativ)m
-(e)i(arra)m(y)-8 b(.)40 b(If)27 b(b)s(oth)g(options)h(are)g(supplied,)f
-Ft(-A)f Fu(tak)m(es)150 2007 y(precedence.)55 b(The)35
-b Ft(read)f Fu(builtin)h(accepts)h(a)g Ft(-a)e Fu(option)i(to)g(assign)
-f(a)g(list)h(of)f(w)m(ords)g(read)g(from)g(the)150 2116
-y(standard)h(input)g(to)i(an)f(arra)m(y)-8 b(,)40 b(and)c(can)h(read)g
-(v)-5 b(alues)38 b(from)e(the)h(standard)g(input)f(in)m(to)i
-(individual)150 2226 y(arra)m(y)f(elemen)m(ts.)62 b(The)36
-b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g(arra)m(y)g
-(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150
-2336 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150
-2569 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150
-2729 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m
+f(in)m(terpreted)h(as)f(de-)150 2022 y(scrib)s(ed)30
+b(ab)s(o)m(v)m(e.)42 b(Unsetting)31 b(the)g(last)g(elemen)m(t)h(of)f
+(an)g(arra)m(y)g(v)-5 b(ariable)31 b(do)s(es)f(not)h(unset)f(the)h(v)-5
+b(ariable.)150 2132 y Ft(unset)29 b Fj(name)p Fu(,)39
+b(where)e Fr(name)43 b Fu(is)37 b(an)h(arra)m(y)-8 b(,)41
+b(remo)m(v)m(es)e(the)f(en)m(tire)g(arra)m(y)-8 b(.)64
+b Ft(unset)29 b Fj(name)p Ft([)p Fj(subscript)p Ft(])150
+2241 y Fu(b)s(eha)m(v)m(es)h(di\013eren)m(tly)g(dep)s(ending)d(on)j
+(the)f(arra)m(y)h(t)m(yp)s(e)f(when)g(giv)m(en)h(a)f(subscript)g(of)g
+(`)p Ft(*)p Fu(')g(or)h(`)p Ft(@)p Fu('.)40 b(When)150
+2351 y Fr(name)46 b Fu(is)40 b(an)h(asso)s(ciativ)m(e)i(arra)m(y)-8
+b(,)44 b(it)d(remo)m(v)m(es)h(the)f(elemen)m(t)h(with)e(k)m(ey)h(`)p
+Ft(*)p Fu(')g(or)f(`)p Ft(@)p Fu('.)72 b(If)40 b Fr(name)45
+b Fu(is)c(an)150 2461 y(indexed)30 b(arra)m(y)-8 b(,)31
+b Ft(unset)e Fu(remo)m(v)m(es)j(all)f(of)g(the)f(elemen)m(ts,)i(but)e
+(do)s(es)g(not)h(remo)m(v)m(e)h(the)e(arra)m(y)h(itself.)275
+2617 y(When)k(using)g(a)i(v)-5 b(ariable)36 b(name)g(with)g(a)g
+(subscript)e(as)i(an)g(argumen)m(t)g(to)h(a)f(command,)h(suc)m(h)f(as)
+150 2727 y(with)k Ft(unset)p Fu(,)h(without)e(using)h(the)g(w)m(ord)f
+(expansion)h(syn)m(tax)g(describ)s(ed)f(ab)s(o)m(v)m(e,)44
+b(the)c(argumen)m(t)g(is)150 2837 y(sub)5 b(ject)25 b(to)h(the)g
+(shell's)g(\014lename)f(expansion.)39 b(If)25 b(\014lename)h(expansion)
+f(is)g(not)h(desired,)g(the)f(argumen)m(t)150 2946 y(should)k(b)s(e)h
+(quoted.)275 3103 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p
+Fu(,)h(and)e Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g
+Ft(-a)e Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150
+3213 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f
+(an)h(asso)s(ciativ)m(e)i(arra)m(y)-8 b(.)40 b(If)27
+b(b)s(oth)g(options)h(are)g(supplied,)f Ft(-A)f Fu(tak)m(es)150
+3322 y(precedence.)55 b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g
+Ft(-a)e Fu(option)i(to)g(assign)f(a)g(list)h(of)f(w)m(ords)g(read)g
+(from)g(the)150 3432 y(standard)h(input)g(to)i(an)f(arra)m(y)-8
+b(,)40 b(and)c(can)h(read)g(v)-5 b(alues)38 b(from)e(the)h(standard)g
+(input)f(in)m(to)i(individual)150 3541 y(arra)m(y)f(elemen)m(ts.)62
+b(The)36 b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g
+(arra)m(y)g(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150
+3651 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150
+3925 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150
+4085 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m
(tly-visited)j(directories.)39 b(The)20 b Ft(pushd)g
-Fu(builtin)h(adds)g(directories)150 2838 y(to)42 b(the)f(stac)m(k)i(as)
+Fu(builtin)h(adds)g(directories)150 4194 y(to)42 b(the)f(stac)m(k)i(as)
e(it)h(c)m(hanges)g(the)f(curren)m(t)g(directory)-8 b(,)45
b(and)40 b(the)i Ft(popd)e Fu(builtin)g(remo)m(v)m(es)j(sp)s(eci\014ed)
-150 2948 y(directories)29 b(from)f(the)h(stac)m(k)h(and)d(c)m(hanges)j
+150 4304 y(directories)29 b(from)f(the)h(stac)m(k)h(and)d(c)m(hanges)j
(the)e(curren)m(t)g(directory)h(to)g(the)g(directory)f(remo)m(v)m(ed.)
-41 b(The)150 3058 y Ft(dirs)34 b Fu(builtin)g(displa)m(ys)h(the)g(con)m
+41 b(The)150 4414 y Ft(dirs)34 b Fu(builtin)g(displa)m(ys)h(the)g(con)m
(ten)m(ts)i(of)e(the)g(directory)h(stac)m(k.)56 b(The)34
-b(curren)m(t)h(directory)g(is)g(alw)m(a)m(ys)150 3167
+b(curren)m(t)h(directory)g(is)g(alw)m(a)m(ys)150 4523
y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h(directory)g(stac)m(k.)275
-3298 y(The)k(con)m(ten)m(ts)i(of)f(the)h(directory)f(stac)m(k)h(are)f
+4680 y(The)k(con)m(ten)m(ts)i(of)f(the)h(directory)f(stac)m(k)h(are)f
(also)h(visible)g(as)f(the)g(v)-5 b(alue)36 b(of)g(the)g
-Ft(DIRSTACK)e Fu(shell)150 3408 y(v)-5 b(ariable.)150
-3600 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150
-3768 y Ft(dirs)870 3899 y(dirs)47 b([-clpv])e([+)p Fj(N)i
-Ft(|)h(-)p Fj(N)p Ft(])630 4030 y Fu(Displa)m(y)35 b(the)f(list)g(of)g
-(curren)m(tly)g(remem)m(b)s(ered)f(directories.)51 b(Directories)36
-b(are)e(added)f(to)630 4140 y(the)28 b(list)h(with)f(the)g
-Ft(pushd)f Fu(command;)i(the)f Ft(popd)f Fu(command)h(remo)m(v)m(es)h
-(directories)g(from)630 4249 y(the)i(list.)41 b(The)30
-b(curren)m(t)g(directory)h(is)f(alw)m(a)m(ys)i(the)f(\014rst)e
-(directory)i(in)f(the)h(stac)m(k.)630 4402 y Ft(-c)384
-b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e(deleting)h(all)h
-(of)e(the)h(elemen)m(ts.)630 4554 y Ft(-l)384 b Fu(Pro)s(duces)31
-b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f(default)g(listing)h
-(format)1110 4664 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h
-(directory)-8 b(.)630 4816 y Ft(-p)384 b Fu(Causes)30
-b Ft(dirs)f Fu(to)i(prin)m(t)f(the)h(directory)g(stac)m(k)h(with)e(one)
-g(en)m(try)h(p)s(er)e(line.)630 4968 y Ft(-v)384 b Fu(Causes)36
-b Ft(dirs)f Fu(to)i(prin)m(t)f(the)g(directory)h(stac)m(k)h(with)e(one)
-h(en)m(try)f(p)s(er)f(line,)1110 5078 y(pre\014xing)30
-b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i(the)f(stac)m(k.)630
-5230 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 b(the)f Fr(N)10
-b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h(left)g(of)g(the)g
-(list)g(prin)m(ted)1110 5340 y(b)m(y)30 b Ft(dirs)f Fu(when)h(in)m(v)m
-(ok)m(ed)i(without)e(options\),)h(starting)g(with)g(zero.)p
-eop end
-%%Page: 98 104
-TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(98)630 299 y Ft(-)p
-Fj(N)384 b Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46
-b(directory)h(\(coun)m(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list)
-1110 408 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m
-(ed)j(without)f(options\),)h(starting)g(with)e(zero.)150
-583 y Ft(popd)870 725 y(popd)47 b([-n])f([+)p Fj(N)h
-Ft(|)h(-)p Fj(N)p Ft(])630 867 y Fu(When)32 b(no)g(argumen)m(ts)h(are)g
+Ft(DIRSTACK)e Fu(shell)150 4790 y(v)-5 b(ariable.)150
+5011 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150
+5194 y Ft(dirs)870 5340 y(dirs)47 b([-clpv])e([+)p Fj(N)i
+Ft(|)h(-)p Fj(N)p Ft(])p eop end
+%%Page: 103 109
+TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(103)630 299 y(Displa)m(y)35
+b(the)f(list)g(of)g(curren)m(tly)g(remem)m(b)s(ered)f(directories.)51
+b(Directories)36 b(are)e(added)f(to)630 408 y(the)28
+b(list)h(with)f(the)g Ft(pushd)f Fu(command;)i(the)f
+Ft(popd)f Fu(command)h(remo)m(v)m(es)h(directories)g(from)630
+518 y(the)i(list.)41 b(The)30 b(curren)m(t)g(directory)h(is)f(alw)m(a)m
+(ys)i(the)f(\014rst)e(directory)i(in)f(the)h(stac)m(k.)630
+676 y Ft(-c)384 b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e
+(deleting)h(all)h(of)e(the)h(elemen)m(ts.)630 833 y Ft(-l)384
+b Fu(Pro)s(duces)31 b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f
+(default)g(listing)h(format)1110 943 y(uses)d(a)h(tilde)g(to)g(denote)g
+(the)f(home)h(directory)-8 b(.)630 1100 y Ft(-p)384 b
+Fu(Causes)30 b Ft(dirs)f Fu(to)i(prin)m(t)f(the)h(directory)g(stac)m(k)
+h(with)e(one)g(en)m(try)h(p)s(er)e(line.)630 1258 y Ft(-v)384
+b Fu(Causes)36 b Ft(dirs)f Fu(to)i(prin)m(t)f(the)g(directory)h(stac)m
+(k)h(with)e(one)h(en)m(try)f(p)s(er)f(line,)1110 1367
+y(pre\014xing)30 b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i(the)f
+(stac)m(k.)630 1525 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23
+b(the)f Fr(N)10 b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h
+(left)g(of)g(the)g(list)g(prin)m(ted)1110 1634 y(b)m(y)30
+b Ft(dirs)f Fu(when)h(in)m(v)m(ok)m(ed)i(without)e(options\),)h
+(starting)g(with)g(zero.)630 1792 y Ft(-)p Fj(N)384 b
+Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46 b(directory)h(\(coun)m
+(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list)1110
+1902 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m(ed)j
+(without)f(options\),)h(starting)g(with)e(zero.)150 2059
+y Ft(popd)870 2193 y(popd)47 b([-n])f([+)p Fj(N)h Ft(|)h(-)p
+Fj(N)p Ft(])630 2326 y Fu(Remo)m(v)m(es)34 b(elemen)m(ts)g(from)e(the)h
+(directory)g(stac)m(k.)49 b(The)32 b(elemen)m(ts)i(are)f(n)m(um)m(b)s
+(ered)e(from)630 2436 y(0)38 b(starting)h(at)f(the)g(\014rst)f
+(directory)h(listed)g(b)m(y)g Ft(dirs)p Fu(;)j(that)d(is,)i
+Ft(popd)c Fu(is)i(equiv)-5 b(alen)m(t)39 b(to)630 2545
+y Ft(popd)29 b(+0)p Fu(.)630 2679 y(When)j(no)g(argumen)m(ts)h(are)g
(giv)m(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f(directory)h(from)
-f(the)g(stac)m(k)630 977 y(and)f(p)s(erforms)e(a)j Ft(cd)f
-Fu(to)h(the)f(new)g(top)h(directory)-8 b(.)44 b(The)31
-b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered)f(from)630 1086
-y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g(listed)h(with)f
-Ft(dirs)p Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5
-b(alen)m(t)33 b(to)630 1196 y Ft(popd)c(+0)p Fu(.)630
-1370 y Ft(-n)384 b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g
-(directory)g(when)e(remo)m(ving)j(directo-)1110 1480
-y(ries)f(from)g(the)h(stac)m(k,)h(so)f(that)g(only)f(the)h(stac)m(k)g
-(is)g(manipulated.)630 1655 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22
-b(the)f Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g
-(left)h(of)g(the)f(list)h(prin)m(ted)1110 1764 y(b)m(y)30
-b Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)630 1939
-y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g Fr(N)10
-b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g
-(the)g(list)1110 2048 y(prin)m(ted)30 b(b)m(y)g Ft(dirs)p
-Fu(\),)g(starting)h(with)f(zero.)150 2223 y Ft(pushd)870
-2365 y(pushd)46 b([-n])h([+)p Fj(N)g Ft(|)g Fj(-N)h Ft(|)f
-Fj(dir)p Ft(])630 2507 y Fu(Sa)m(v)m(e)30 b(the)e(curren)m(t)g
-(directory)h(on)f(the)h(top)f(of)h(the)f(directory)h(stac)m(k)h(and)e
-(then)g Ft(cd)f Fu(to)i Fr(dir)p Fu(.)630 2617 y(With)39
-b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the)f(top)f(t)m(w)m
-(o)i(directories)g(and)d(mak)m(es)j(the)630 2726 y(new)30
-b(top)g(the)h(curren)m(t)f(directory)-8 b(.)630 2901
-y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h(of)g
-(directory)f(when)g(rotating)h(or)f(adding)1110 3010
-y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h
-(stac)m(k)h(is)e(manipulated.)630 3185 y Ft(+)p Fj(N)384
-b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h
-(from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110
-3295 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)
-f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110
-3404 y(stac)m(k.)630 3579 y Ft(-)p Fj(N)384 b Fu(Brings)23
-b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i
-(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 3688 y(b)m(y)34
+f(the)g(stac)m(k)630 2789 y(and)e(c)m(hanges)h(to)g(the)g(new)f(top)g
+(directory)-8 b(.)630 2922 y(Argumen)m(ts,)31 b(if)f(supplied,)f(ha)m
+(v)m(e)j(the)e(follo)m(wing)i(meanings:)630 3080 y Ft(-n)384
+b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g(directory)g(when)e
+(remo)m(ving)j(directo-)1110 3189 y(ries)f(from)g(the)h(stac)m(k,)h(so)
+f(that)g(only)f(the)h(stac)m(k)g(is)g(manipulated.)630
+3347 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22 b(the)f
+Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g(left)h
+(of)g(the)f(list)h(prin)m(ted)1110 3456 y(b)m(y)30 b
+Ft(dirs)p Fu(\),)g(starting)h(with)f(zero,)i(from)e(the)g(stac)m(k.)630
+3614 y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g
+Fr(N)10 b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)
+g(of)g(the)g(list)1110 3724 y(prin)m(ted)30 b(b)m(y)g
+Ft(dirs)p Fu(\),)g(starting)h(with)f(zero,)i(from)e(the)g(stac)m(k.)630
+3881 y(If)d(the)h(top)g(elemen)m(t)h(of)f(the)g(directory)g(stac)m(k)h
+(is)e(mo)s(di\014ed,)h(and)f(the)h Ft(-n)f Fu(option)h(w)m(as)g(not)630
+3991 y(supplied,)j Ft(popd)g Fu(uses)g(the)h Ft(cd)f
+Fu(builtin)g(to)i(c)m(hange)g(to)f(the)g(directory)g(at)h(the)f(top)g
+(of)g(the)630 4100 y(stac)m(k.)42 b(If)30 b(the)h Ft(cd)e
+Fu(fails,)j Ft(popd)d Fu(returns)g(a)i(non-zero)g(v)-5
+b(alue.)630 4234 y(Otherwise,)34 b Ft(popd)f Fu(returns)f(an)h
+(unsuccessful)g(status)g(if)h(an)f(in)m(v)-5 b(alid)34
+b(option)g(is)g(encoun-)630 4343 y(tered,)39 b(the)d(directory)h(stac)m
+(k)i(is)d(empt)m(y)-8 b(,)39 b(or)e(a)g(non-existen)m(t)h(directory)f
+(stac)m(k)h(en)m(try)f(is)630 4453 y(sp)s(eci\014ed.)630
+4587 y(If)32 b(the)h Ft(popd)f Fu(command)h(is)g(successful,)g(Bash)g
+(runs)f Ft(dirs)f Fu(to)j(sho)m(w)f(the)g(\014nal)f(con)m(ten)m(ts)630
+4696 y(of)f(the)f(directory)h(stac)m(k,)h(and)e(the)g(return)g(status)g
+(is)h(0.)150 4854 y Ft(pushd)870 4987 y(pushd)46 b([-n])h([+)p
+Fj(N)g Ft(|)g Fj(-N)h Ft(|)f Fj(dir)p Ft(])630 5121 y
+Fu(Adds)27 b(a)h(directory)h(to)g(the)f(top)g(of)g(the)g(directory)h
+(stac)m(k,)h(or)e(rotates)h(the)f(stac)m(k,)j(making)630
+5230 y(the)37 b(new)g(top)g(of)g(the)g(stac)m(k)i(the)e(curren)m(t)f(w)
+m(orking)i(directory)-8 b(.)61 b(With)38 b(no)e(argumen)m(ts,)630
+5340 y Ft(pushd)29 b Fu(exc)m(hanges)j(the)e(top)h(t)m(w)m(o)h(elemen)m
+(ts)f(of)g(the)f(directory)h(stac)m(k.)p eop end
+%%Page: 104 110
+TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(104)630 299 y(Argumen)m(ts,)31
+b(if)f(supplied,)f(ha)m(v)m(e)j(the)e(follo)m(wing)i(meanings:)630
+455 y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h(of)g
+(directory)f(when)g(rotating)h(or)f(adding)1110 564 y(directories)31
+b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h(stac)m(k)h(is)e
+(manipulated.)630 720 y Ft(+)p Fj(N)384 b Fu(Brings)29
+b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h(from)e(the)g
+(left)i(of)e(the)h(list)g(prin)m(ted)1110 830 y(b)m(y)34
b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h
-(the)f(list)h(b)m(y)f(rotating)i(the)1110 3798 y(stac)m(k.)630
-3972 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27
-b(the)g(top)g(of)g(the)h(stac)m(k,)h(making)e(it)h(the)f(new)g(curren)m
-(t)g(direc-)1110 4082 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied)
-f(as)i(an)f(argumen)m(t)h(to)g(the)f Ft(cd)g Fu(builtin.)150
-4345 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150
-4505 y Fu(Bash)33 b(examines)h(the)f(v)-5 b(alue)33 b(of)h(the)f(arra)m
-(y)g(v)-5 b(ariable)34 b Ft(PROMPT_COMMANDS)29 b Fu(just)j(b)s(efore)h
-(prin)m(ting)g(eac)m(h)150 4614 y(primary)c(prompt.)40
-b(If)30 b(an)m(y)g(elemen)m(ts)i(in)e Ft(PROMPT_COMMANDS)c
-Fu(are)31 b(set)f(and)g(non-n)m(ull,)g(Bash)h(executes)150
-4724 y(eac)m(h)h(v)-5 b(alue,)31 b(in)f(n)m(umeric)g(order,)g(just)g
+(the)f(list)h(b)m(y)f(rotating)i(the)1110 939 y(stac)m(k.)630
+1095 y Ft(-)p Fj(N)384 b Fu(Brings)23 b(the)g Fr(N)10
+b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i(righ)m(t)f(of)g
+(the)h(list)f(prin)m(ted)1110 1205 y(b)m(y)34 b Ft(dirs)p
+Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h(the)f(list)h(b)
+m(y)f(rotating)i(the)1110 1314 y(stac)m(k.)630 1470 y
+Fj(dir)336 b Fu(Mak)m(es)32 b Fr(dir)k Fu(b)s(e)30 b(the)g(top)h(of)f
+(the)h(stac)m(k.)630 1626 y(After)39 b(the)g(stac)m(k)h(has)e(b)s(een)g
+(mo)s(di\014ed,)i(if)f(the)g Ft(-n)f Fu(option)h(w)m(as)g(not)g
+(supplied,)g Ft(pushd)630 1735 y Fu(uses)29 b(the)h Ft(cd)f
+Fu(builtin)g(to)h(c)m(hange)g(to)h(the)e(directory)h(at)g(the)g(top)g
+(of)f(the)h(stac)m(k.)42 b(If)29 b(the)h Ft(cd)630 1845
+y Fu(fails,)h Ft(pushd)e Fu(returns)g(a)i(non-zero)g(v)-5
+b(alue.)630 1978 y(Otherwise,)34 b(if)g(no)f(argumen)m(ts)h(are)g
+(supplied,)f Ft(pushd)f Fu(returns)g(0)i(unless)f(the)g(directory)630
+2087 y(stac)m(k)g(is)f(empt)m(y)-8 b(.)46 b(When)32 b(rotating)h(the)f
+(directory)g(stac)m(k,)i Ft(pushd)d Fu(returns)f(0)j(unless)e(the)630
+2197 y(directory)g(stac)m(k)h(is)e(empt)m(y)h(or)f(a)h(non-existen)m(t)
+h(directory)f(stac)m(k)g(elemen)m(t)h(is)f(sp)s(eci\014ed.)630
+2330 y(If)e(the)g Ft(pushd)f Fu(command)h(is)g(successful,)h(Bash)f
+(runs)f Ft(dirs)g Fu(to)i(sho)m(w)f(the)g(\014nal)g(con)m(ten)m(ts)630
+2439 y(of)i(the)f(directory)h(stac)m(k.)150 2676 y Fs(6.9)68
+b(Con)l(trolling)47 b(the)e(Prompt)150 2836 y Fu(Bash)37
+b(examines)h(the)f(v)-5 b(alue)37 b(of)g(the)h(arra)m(y)f(v)-5
+b(ariable)38 b Ft(PROMPT_COMMAND)33 b Fu(just)j(b)s(efore)h(prin)m
+(ting)g(eac)m(h)150 2945 y(primary)c(prompt.)49 b(If)33
+b(an)m(y)h(elemen)m(ts)h(in)f Ft(PROMPT_COMMAND)29 b
+Fu(are)34 b(set)h(and)e(non-n)m(ull,)h(Bash)g(executes)150
+3055 y(eac)m(h)e(v)-5 b(alue,)31 b(in)f(n)m(umeric)g(order,)g(just)g
(as)g(if)h(it)g(had)e(b)s(een)h(t)m(yp)s(ed)g(on)g(the)h(command)f
-(line.)275 4874 y(In)d(addition,)j(the)f(follo)m(wing)h(table)f
+(line.)275 3188 y(In)d(addition,)j(the)f(follo)m(wing)h(table)f
(describ)s(es)f(the)h(sp)s(ecial)g(c)m(haracters)h(whic)m(h)f(can)f
-(app)s(ear)g(in)h(the)150 4983 y(prompt)g(v)-5 b(ariables)32
+(app)s(ear)g(in)h(the)150 3297 y(prompt)g(v)-5 b(ariables)32
b Ft(PS0)p Fu(,)d Ft(PS1)p Fu(,)h Ft(PS2)p Fu(,)g(and)f
-Ft(PS4)p Fu(:)150 5165 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m
-(haracter.)150 5340 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f
+Ft(PS4)p Fu(:)150 3453 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m
+(haracter.)150 3609 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f
Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h
Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p
-Ft(")p Fu(\).)p eop end
-%%Page: 99 105
-TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(99)150 299 y Ft(\\D{)p
-Fj(format)p Ft(})630 408 y Fu(The)27 b Fr(format)i Fu(is)f(passed)e(to)
-i Ft(strftime)p Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m
-(to)h(the)g(prompt)630 518 y(string;)42 b(an)d(empt)m(y)f
-Fr(format)j Fu(results)d(in)g(a)h(lo)s(cale-sp)s(eci\014c)h(time)f
-(represen)m(tation.)65 b(The)630 628 y(braces)31 b(are)f(required.)150
-790 y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150
-952 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e
-(`.'.)150 1114 y Ft(\\H)384 b Fu(The)30 b(hostname.)150
-1276 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m
-(tly)h(managed)g(b)m(y)f(the)g(shell.)150 1438 y Ft(\\l)384
+Ft(")p Fu(\).)150 3765 y Ft(\\D{)p Fj(format)p Ft(})630
+3874 y Fu(The)c Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p
+Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt)
+630 3984 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g
+(a)h(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65
+b(The)630 4093 y(braces)31 b(are)f(required.)150 4249
+y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150
+4405 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e
+(`.'.)150 4561 y Ft(\\H)384 b Fu(The)30 b(hostname.)150
+4717 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m
+(tly)h(managed)g(b)m(y)f(the)g(shell.)150 4873 y Ft(\\l)384
b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g
-(name.)150 1600 y Ft(\\n)384 b Fu(A)30 b(newline.)150
-1763 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150
-1925 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f
+(name.)150 5028 y Ft(\\n)384 b Fu(A)30 b(newline.)150
+5184 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150
+5340 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f
(basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f
-(\014nal)e(slash\).)150 2087 y Ft(\\t)384 b Fu(The)30
-b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 2249
-y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.)
-150 2411 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f
-(format.)150 2573 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h
-(HH:MM)g(format.)150 2735 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g
-(the)h(curren)m(t)f(user.)150 2898 y Ft(\\v)384 b Fu(The)30
-b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150 3060
-y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g
-Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 3222
-y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8
-b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f
-(the)630 3331 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150
-3494 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p
-Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150
-3656 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f
-(command.)150 3818 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s
-(er)f(of)i(this)f(command.)150 3980 y Ft(\\$)384 b Fu(If)30
-b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g
-Ft($)p Fu(.)150 4142 y Ft(\\)p Fj(nnn)288 b Fu(The)30
-b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v)
--5 b(alue)31 b Fr(nnn)p Fu(.)150 4304 y Ft(\\\\)384 b
-Fu(A)30 b(bac)m(kslash.)150 4466 y Ft(\\[)384 b Fu(Begin)38
+(\014nal)e(slash\).)p eop end
+%%Page: 105 111
+TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(105)150 299 y Ft(\\t)384
+b Fu(The)30 b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150
+459 y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g
+(format.)150 619 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h
+(am/pm)f(format.)150 780 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f
+(24-hour)h(HH:MM)g(format.)150 940 y Ft(\\u)384 b Fu(The)30
+b(username)g(of)g(the)h(curren)m(t)f(user.)150 1100 y
+Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150
+1261 y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g
+Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 1421
+y Ft(\\w)384 b Fu(The)27 b(v)-5 b(alue)28 b(of)g(the)g
+Ft(PWD)f Fu(shell)h(v)-5 b(ariable)28 b(\()p Ft($PWD)p
+Fu(\),)g(with)g Ft($HOME)e Fu(abbreviated)i(with)f(a)h(tilde)630
+1530 y(\(uses)i(the)h Ft($PROMPT_DIRTRIM)26 b Fu(v)-5
+b(ariable\).)150 1691 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f
+Ft($PWD)p Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)
+150 1851 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i
+(this)f(command.)150 2011 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m
+(b)s(er)f(of)i(this)f(command.)150 2171 y Ft(\\$)384
+b Fu(If)30 b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p
+Fu(,)g(otherwise)g Ft($)p Fu(.)150 2332 y Ft(\\)p Fj(nnn)288
+b Fu(The)30 b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)
+s(ctal)i(v)-5 b(alue)31 b Fr(nnn)p Fu(.)150 2492 y Ft(\\\\)384
+b Fu(A)30 b(bac)m(kslash.)150 2652 y Ft(\\[)384 b Fu(Begin)38
b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61
b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630
-4576 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.)
-150 4738 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m
-(ting)g(c)m(haracters.)275 4902 y(The)25 b(command)h(n)m(um)m(b)s(er)f
+2762 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.)
+150 2922 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m
+(ting)g(c)m(haracters.)275 3083 y(The)25 b(command)h(n)m(um)m(b)s(er)f
(and)h(the)g(history)g(n)m(um)m(b)s(er)f(are)i(usually)f(di\013eren)m
-(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 5011
+(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 3192
y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f
(list,)i(whic)m(h)f(ma)m(y)g(include)f(commands)g(restored)g(from)150
-5121 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e
-(History)h(F)-8 b(acilities],)45 b(page)40 b(146\),)j(while)d(the)f
-(command)150 5230 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g
+3302 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e
+(History)h(F)-8 b(acilities],)45 b(page)40 b(152\),)j(while)d(the)f
+(command)150 3412 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g
(the)g(sequence)h(of)f(commands)g(executed)h(during)e(the)i(curren)m(t)
-f(shell)150 5340 y(session.)p eop end
-%%Page: 100 106
-TeXDict begin 100 105 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(100)275 299 y(After)28
-b(the)g(string)g(is)g(deco)s(ded,)g(it)g(is)g(expanded)f(via)i
-(parameter)f(expansion,)h(command)f(substitu-)150 408
-y(tion,)g(arithmetic)f(expansion,)g(and)e(quote)i(remo)m(v)-5
-b(al,)29 b(sub)5 b(ject)25 b(to)i(the)f(v)-5 b(alue)27
-b(of)f(the)g Ft(promptvars)e Fu(shell)150 518 y(option)i(\(see)h
-(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)j(page)e(66\).)41
-b(This)25 b(can)h(ha)m(v)m(e)h(un)m(w)m(an)m(ted)f(side)g(e\013ects)150
-628 y(if)i(escap)s(ed)f(p)s(ortions)g(of)h(the)g(string)f(app)s(ear)g
-(within)g(command)h(substitution)f(or)h(con)m(tain)g(c)m(haracters)150
-737 y(sp)s(ecial)j(to)g(w)m(ord)f(expansion.)150 1015
-y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 1174 y
-Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h
+f(shell)150 3521 y(session.)275 3657 y(After)28 b(the)g(string)g(is)g
+(deco)s(ded,)g(it)g(is)g(expanded)f(via)i(parameter)f(expansion,)h
+(command)f(substitu-)150 3766 y(tion,)g(arithmetic)f(expansion,)g(and)e
+(quote)i(remo)m(v)-5 b(al,)29 b(sub)5 b(ject)25 b(to)i(the)f(v)-5
+b(alue)27 b(of)f(the)g Ft(promptvars)e Fu(shell)150 3876
+y(option)i(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)j(page)e
+(71\).)41 b(This)25 b(can)h(ha)m(v)m(e)h(un)m(w)m(an)m(ted)f(side)g
+(e\013ects)150 3985 y(if)i(escap)s(ed)f(p)s(ortions)g(of)h(the)g
+(string)f(app)s(ear)g(within)g(command)h(substitution)f(or)h(con)m
+(tain)g(c)m(haracters)150 4095 y(sp)s(ecial)j(to)g(w)m(ord)f
+(expansion.)150 4337 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150
+4496 y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h
Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k
-Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 1284 y(in)m(v)m(o)s(cation,)
+Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 4606 y(in)m(v)m(o)s(cation,)
d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h
(shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150
-1393 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40
+4716 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40
b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f
-Ft(bash)e Fu(with)150 1503 y(the)31 b(exception)g(that)g(the)g(follo)m
+Ft(bash)e Fu(with)150 4825 y(the)31 b(exception)g(that)g(the)g(follo)m
(wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s(erformed:)225
-1662 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f
-Ft(cd)g Fu(builtin.)225 1809 y Fq(\017)60 b Fu(Setting)33
+4961 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f
+Ft(cd)g Fu(builtin.)225 5095 y Fq(\017)60 b Fu(Setting)33
b(or)g(unsetting)f(the)h(v)-5 b(alues)33 b(of)f(the)h
Ft(SHELL)p Fu(,)f Ft(PATH)p Fu(,)g Ft(HISTFILE)p Fu(,)f
Ft(ENV)p Fu(,)h(or)g Ft(BASH_ENV)e Fu(v)-5 b(ari-)330
-1919 y(ables.)225 2065 y Fq(\017)60 b Fu(Sp)s(ecifying)30
-b(command)g(names)g(con)m(taining)i(slashes.)225 2212
-y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m(taining)i
-(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(.)h
-Fu(builtin)e(command.)225 2359 y Fq(\017)60 b Fu(Sp)s(ecifying)33
-b(a)i(\014lename)f(con)m(taining)h(a)g(slash)e(as)i(an)e(argumen)m(t)i
-(to)g(the)f Ft(history)e Fu(builtin)h(com-)330 2469 y(mand.)225
-2615 y Fq(\017)60 b Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m
-(taining)h(a)e(slash)g(as)h(an)f(argumen)m(t)h(to)g(the)f
-Ft(-p)g Fu(option)h(to)g(the)f Ft(hash)330 2725 y Fu(builtin)e
-(command.)225 2872 y Fq(\017)60 b Fu(Imp)s(orting)30
-b(function)g(de\014nitions)g(from)f(the)i(shell)g(en)m(vironmen)m(t)g
-(at)g(startup.)225 3018 y Fq(\017)60 b Fu(P)m(arsing)31
-b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d Fu(from)h(the)i(shell)g
-(en)m(vironmen)m(t)g(at)g(startup.)225 3165 y Fq(\017)60
-b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p Ft(>)p
-Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p Ft(>&)p
-Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p Fu(')i(redirection)g(op)s
-(erators.)225 3312 y Fq(\017)60 b Fu(Using)31 b(the)f
-Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e(shell)h(with)f(another)h
-(command.)225 3459 y Fq(\017)60 b Fu(Adding)24 b(or)g(deleting)i
-(builtin)e(commands)g(with)h(the)f Ft(-f)g Fu(and)g Ft(-d)g
-Fu(options)h(to)h(the)e Ft(enable)f Fu(builtin.)225 3606
-y Fq(\017)60 b Fu(Using)31 b(the)f Ft(enable)f Fu(builtin)h(command)g
-(to)h(enable)g(disabled)f(shell)g(builtins.)225 3752
-y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(the)g Ft(-p)g Fu(option)h(to)g
-(the)g Ft(command)d Fu(builtin.)225 3899 y Fq(\017)60
-b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p
-Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p
-Fu('.)275 4096 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m
-(y)g(startup)f(\014les)g(are)h(read.)275 4255 y(When)j(a)i(command)e
-(that)i(is)f(found)f(to)h(b)s(e)g(a)g(shell)g(script)g(is)g(executed)h
-(\(see)g(Section)g(3.8)g([Shell)150 4364 y(Scripts],)25
-b(page)e(42\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h
-(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)g(script.)275
-4523 y(The)42 b(restricted)h(shell)g(mo)s(de)f(is)g(only)h(one)g(comp)s
-(onen)m(t)f(of)h(a)g(useful)f(restricted)h(en)m(vironmen)m(t.)150
-4633 y(It)36 b(should)g(b)s(e)f(accompanied)j(b)m(y)e(setting)h
-Ft(PATH)e Fu(to)i(a)g(v)-5 b(alue)37 b(that)g(allo)m(ws)g(execution)h
-(of)e(only)h(a)f(few)150 4743 y(v)m(eri\014ed)26 b(commands)g
-(\(commands)g(that)h(allo)m(w)h(shell)f(escap)s(es)f(are)h
-(particularly)g(vulnerable\),)g(lea)m(ving)150 4852 y(the)i(user)f(in)h
-(a)g(non-writable)h(directory)f(other)g(than)g(his)g(home)g(directory)g
-(after)h(login,)g(not)f(allo)m(wing)150 4962 y(the)j(restricted)g
-(shell)g(to)g(execute)h(shell)e(scripts,)h(and)f(cleaning)i(the)e(en)m
-(vironmen)m(t)i(of)e(v)-5 b(ariables)32 b(that)150 5071
-y(cause)f(some)g(commands)f(to)h(mo)s(dify)e(their)i(b)s(eha)m(vior)f
-(\(e.g.,)j Ft(VISUAL)28 b Fu(or)j Ft(PAGER)p Fu(\).)275
-5230 y(Mo)s(dern)e(systems)g(pro)m(vide)h(more)g(secure)g(w)m(a)m(ys)g
-(to)h(implemen)m(t)f(a)g(restricted)h(en)m(vironmen)m(t,)f(suc)m(h)150
-5340 y(as)h Ft(jails)p Fu(,)e Ft(zones)p Fu(,)g(or)h
-Ft(containers)p Fu(.)p eop end
-%%Page: 101 107
-TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(101)150 299 y Fs(6.11)68
-b(Bash)45 b(POSIX)f(Mo)t(de)150 458 y Fu(Starting)39
-b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f
-(executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150
-568 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f
-(more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m
-(hanging)150 677 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g(sp)
-s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h(Bash)f
-(default)h(di\013ers.)275 810 y(When)f(in)m(v)m(ok)m(ed)h(as)g
+5205 y(ables.)225 5340 y Fq(\017)60 b Fu(Sp)s(ecifying)30
+b(command)g(names)g(con)m(taining)i(slashes.)p eop end
+%%Page: 106 112
+TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(106)225 299 y Fq(\017)60
+b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m(taining)i(a)f(slash)f
+(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(.)h Fu(builtin)e(command.)225
+434 y Fq(\017)60 b Fu(Sp)s(ecifying)33 b(a)i(\014lename)f(con)m
+(taining)h(a)g(slash)e(as)i(an)e(argumen)m(t)i(to)g(the)f
+Ft(history)e Fu(builtin)h(com-)330 543 y(mand.)225 678
+y Fq(\017)60 b Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m(taining)h
+(a)e(slash)g(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(-p)g
+Fu(option)h(to)g(the)f Ft(hash)330 788 y Fu(builtin)e(command.)225
+923 y Fq(\017)60 b Fu(Imp)s(orting)30 b(function)g(de\014nitions)g
+(from)f(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225
+1058 y Fq(\017)60 b Fu(P)m(arsing)31 b(the)f(v)-5 b(alue)31
+b(of)g Ft(SHELLOPTS)d Fu(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g
+(startup.)225 1193 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g
+(the)h(`)p Ft(>)p Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p
+Fu(',)h(`)p Ft(>&)p Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p
+Ft(>>)p Fu(')i(redirection)g(op)s(erators.)225 1327 y
+Fq(\017)60 b Fu(Using)31 b(the)f Ft(exec)f Fu(builtin)h(to)h(replace)h
+(the)e(shell)h(with)f(another)h(command.)225 1462 y Fq(\017)60
+b Fu(Adding)24 b(or)g(deleting)i(builtin)e(commands)g(with)h(the)f
+Ft(-f)g Fu(and)g Ft(-d)g Fu(options)h(to)h(the)e Ft(enable)f
+Fu(builtin.)225 1597 y Fq(\017)60 b Fu(Using)31 b(the)f
+Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g(disabled)f(shell)g
+(builtins.)225 1732 y Fq(\017)60 b Fu(Sp)s(ecifying)30
+b(the)g Ft(-p)g Fu(option)h(to)g(the)g Ft(command)d Fu(builtin.)225
+1867 y Fq(\017)60 b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de)
+f(with)g(`)p Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(shopt)f(-u)h
+(restricted_shell)p Fu('.)275 2028 y(These)g(restrictions)h(are)g
+(enforced)f(after)h(an)m(y)g(startup)f(\014les)g(are)h(read.)275
+2163 y(When)j(a)i(command)e(that)i(is)f(found)f(to)h(b)s(e)g(a)g(shell)
+g(script)g(is)g(executed)h(\(see)g(Section)g(3.8)g([Shell)150
+2273 y(Scripts],)25 b(page)e(46\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m
+(y)f(restrictions)h(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)
+g(script.)275 2408 y(The)32 b(restricted)h(shell)g(mo)s(de)g(is)g(only)
+g(one)g(comp)s(onen)m(t)g(of)g(a)g(useful)f(restricted)i(en)m(vironmen)
+m(t.)49 b(It)150 2517 y(should)22 b(b)s(e)f(accompanied)j(b)m(y)e
+(setting)i Ft(PATH)d Fu(to)j(a)f(v)-5 b(alue)23 b(that)g(allo)m(ws)h
+(execution)f(of)g(only)g(a)g(few)f(v)m(eri\014ed)150
+2627 y(commands)35 b(\(commands)g(that)h(allo)m(w)g(shell)f(escap)s(es)
+h(are)f(particularly)h(vulnerable\),)h(c)m(hanging)f(the)150
+2737 y(curren)m(t)28 b(directory)g(to)h(a)f(non-writable)g(directory)g
+(other)g(than)g Ft($HOME)e Fu(after)j(login,)g(not)f(allo)m(wing)i(the)
+150 2846 y(restricted)25 b(shell)g(to)h(execute)g(shell)f(scripts,)h
+(and)e(cleaning)i(the)f(en)m(vironmen)m(t)h(of)f(v)-5
+b(ariables)25 b(that)g(cause)150 2956 y(some)31 b(commands)f(to)h(mo)s
+(dify)e(their)i(b)s(eha)m(vior)f(\(e.g.,)j Ft(VISUAL)28
+b Fu(or)j Ft(PAGER)p Fu(\).)275 3091 y(Mo)s(dern)e(systems)g(pro)m
+(vide)h(more)g(secure)g(w)m(a)m(ys)g(to)h(implemen)m(t)f(a)g
+(restricted)h(en)m(vironmen)m(t,)f(suc)m(h)150 3201 y(as)h
+Ft(jails)p Fu(,)e Ft(zones)p Fu(,)g(or)h Ft(containers)p
+Fu(.)150 3443 y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150
+3602 y Fu(Starting)39 b(Bash)f(with)g(the)h Ft(--posix)d
+Fu(command-line)j(option)g(or)f(executing)h(`)p Ft(set)30
+b(-o)g(posix)p Fu(')37 b(while)150 3712 y(Bash)26 b(is)g(running)e
+(will)j(cause)f(Bash)g(to)h(conform)f(more)g(closely)h(to)g(the)f
+Fm(posix)f Fu(standard)g(b)m(y)h(c)m(hanging)150 3821
+y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g(sp)s(eci\014ed)f(b)m
+(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h(Bash)f(default)h
+(di\013ers.)275 3957 y(When)f(in)m(v)m(ok)m(ed)h(as)g
Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h
-(reading)g(the)f(startup)g(\014les.)275 942 y(The)f(follo)m(wing)j
+(reading)g(the)f(startup)g(\014les.)275 4092 y(The)f(follo)m(wing)j
(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h
-Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 1074 y(1.)61 b(Bash)31
+Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 4227 y(1.)61 b(Bash)31
b(ensures)e(that)i(the)f Ft(POSIXLY_CORRECT)d Fu(v)-5
-b(ariable)31 b(is)f(set.)199 1206 y(2.)61 b(When)28 b(a)i(command)e(in)
+b(ariable)31 b(is)f(set.)199 4362 y(2.)61 b(When)28 b(a)i(command)e(in)
g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash)f(will)g(re-searc)m
-(h)h Ft($PATH)d Fu(to)i(\014nd)330 1316 y(the)i(new)e(lo)s(cation.)43
+(h)h Ft($PATH)d Fu(to)i(\014nd)330 4472 y(the)i(new)e(lo)s(cation.)43
b(This)29 b(is)i(also)g(a)m(v)-5 b(ailable)33 b(with)d(`)p
-Ft(shopt)f(-s)h(checkhash)p Fu('.)199 1448 y(3.)61 b(Bash)36
+Ft(shopt)f(-s)h(checkhash)p Fu('.)199 4607 y(3.)61 b(Bash)36
b(will)g(not)g(insert)g(a)g(command)f(without)h(the)g(execute)h(bit)f
-(set)g(in)m(to)h(the)f(command)g(hash)330 1558 y(table,)c(ev)m(en)f(if)
+(set)g(in)m(to)h(the)f(command)g(hash)330 4716 y(table,)c(ev)m(en)f(if)
f(it)h(returns)e(it)i(as)g(a)f(\(last-ditc)m(h\))j(result)d(from)g(a)h
-Ft($PATH)e Fu(searc)m(h.)199 1690 y(4.)61 b(The)42 b(message)h(prin)m
+Ft($PATH)e Fu(searc)m(h.)199 4851 y(4.)61 b(The)42 b(message)h(prin)m
(ted)e(b)m(y)h(the)g(job)g(con)m(trol)i(co)s(de)e(and)f(builtins)h
-(when)f(a)h(job)g(exits)h(with)f(a)330 1800 y(non-zero)31
-b(status)g(is)f(`Done\(status\)'.)199 1932 y(5.)61 b(The)40
+(when)f(a)h(job)g(exits)h(with)f(a)330 4961 y(non-zero)31
+b(status)g(is)f(`Done\(status\)'.)199 5095 y(5.)61 b(The)40
b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con)m(trol)h(co)s(de)g
(and)f(builtins)f(when)h(a)g(job)g(is)h(stopp)s(ed)e(is)330
-2041 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 b(where)f
+5205 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 b(where)f
Fr(signame)36 b Fu(is,)31 b(for)f(example,)h Ft(SIGTSTP)p
-Fu(.)199 2174 y(6.)61 b(Alias)31 b(expansion)g(is)f(alw)m(a)m(ys)i
-(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)199
-2306 y(7.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con)
-m(text)i(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not)
-330 2415 y(undergo)30 b(alias)h(expansion.)199 2548 y(8.)61
-b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i
-(`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p
-Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 2657 y(enabled,)26
-b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5
-b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330
-2767 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c
-Fu(option.)199 2899 y(9.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les)
-i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal)
-f(Bash)g(\014les.)154 3031 y(10.)61 b(Tilde)30 b(expansion)g(is)f(only)
-h(p)s(erformed)f(on)h(assignmen)m(ts)g(preceding)g(a)g(command)g(name,)
-g(rather)330 3141 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h
-(on)e(the)h(line.)154 3273 y(11.)61 b(The)30 b(default)g(history)h
-(\014le)f(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default)
-g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 3405
-y(12.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f
-(\014lename)h(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection)
-330 3515 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154
-3647 y(13.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e
+Fu(.)199 5340 y(6.)61 b(Alias)31 b(expansion)g(is)f(alw)m(a)m(ys)i
+(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)p
+eop end
+%%Page: 107 113
+TeXDict begin 107 112 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(107)199 299 y(7.)61
+b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con)m(text)i
+(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not)330
+408 y(undergo)30 b(alias)h(expansion.)199 536 y(8.)61
+b(Alias)45 b(expansion)e(is)h(p)s(erformed)f(when)f(initially)k
+(parsing)d(a)h(command)g(substitution.)80 b(The)330 646
+y(default)44 b(mo)s(de)g(generally)h(defers)f(it,)k(when)43
+b(enabled,)48 b(un)m(til)c(the)g(command)g(substitution)g(is)330
+756 y(executed.)77 b(This)42 b(means)g(that)h(command)f(substitution)f
+(will)i(not)g(expand)e(aliases)j(that)f(are)330 865 y(de\014ned)34
+b(after)h(the)g(command)f(substitution)h(is)g(initially)h(parsed)e
+(\(e.g.,)k(as)d(part)f(of)h(a)g(function)330 975 y(de\014nition\).)199
+1103 y(9.)61 b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g
+Ft(PS2)g Fu(expansions)g(of)i(`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)
+m(um)m(b)s(er)f(and)g(`)p Ft(!!)p Fu(')h(to)g(`)p Ft(!)p
+Fu(')h(are)330 1212 y(enabled,)26 b(and)f(parameter)g(expansion)g(is)g
+(p)s(erformed)e(on)i(the)g(v)-5 b(alues)25 b(of)g Ft(PS1)f
+Fu(and)h Ft(PS2)f Fu(regardless)330 1322 y(of)31 b(the)f(setting)i(of)e
+(the)h Ft(promptvars)c Fu(option.)154 1450 y(10.)61 b(The)30
+b Fm(posix)g Fu(startup)f(\014les)i(are)g(executed)g(\()p
+Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal)f(Bash)g(\014les.)154
+1577 y(11.)61 b(Tilde)30 b(expansion)g(is)f(only)h(p)s(erformed)f(on)h
+(assignmen)m(ts)g(preceding)g(a)g(command)g(name,)g(rather)330
+1687 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h(on)e(the)h
+(line.)154 1815 y(12.)61 b(The)30 b(default)g(history)h(\014le)f(is)h
+Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default)g(v)-5
+b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 1943 y(13.)61
+b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f(\014lename)h
+(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection)330
+2052 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154
+2180 y(14.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e
(w)m(ord)h(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154
-3779 y(14.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5
+2308 y(15.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5
b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y)
-g(not)g(con)m(tain)g(c)m(haracters)330 3889 y(other)e(than)g(letters,)h
+g(not)g(con)m(tain)g(c)m(haracters)330 2418 y(other)e(than)g(letters,)h
(digits,)h(and)d(underscores,)h(and)f(ma)m(y)h(not)g(start)h(with)e(a)h
-(digit.)49 b(Declaring)330 3999 y(a)31 b(function)f(with)g(an)g(in)m(v)
+(digit.)49 b(Declaring)330 2527 y(a)31 b(function)f(with)g(an)g(in)m(v)
-5 b(alid)31 b(name)g(causes)f(a)h(fatal)h(syn)m(tax)f(error)f(in)g
-(non-in)m(teractiv)m(e)j(shells.)154 4131 y(15.)61 b(F)-8
+(non-in)m(teractiv)m(e)j(shells.)154 2655 y(16.)61 b(F)-8
b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g(one)f
(of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154
-4263 y(16.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e
+2783 y(17.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e
(b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154
-4395 y(17.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f
+2911 y(18.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f
(de\014nitions)g(\(e.g.,)55 b(b)m(y)48 b Ft(type)p Fu(\),)k(Bash)d(do)s
-(es)f(not)h(prin)m(t)f(the)330 4505 y Ft(function)28
-b Fu(k)m(eyw)m(ord.)154 4637 y(18.)61 b(Literal)28 b(tildes)g(that)f
+(es)f(not)h(prin)m(t)f(the)330 3020 y Ft(function)28
+b Fu(k)m(eyw)m(ord.)154 3148 y(19.)61 b(Literal)28 b(tildes)g(that)f
(app)s(ear)f(as)i(the)f(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of)
e(the)g Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330
-4747 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section)
-i(3.5.2)h([Tilde)f(Expansion],)f(page)h(24.)154 4879
-y(19.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s
+3258 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section)
+i(3.5.2)h([Tilde)f(Expansion],)f(page)h(25.)154 3386
+y(20.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s
(e)g(used)f(b)m(y)h(itself)g(as)g(a)h(command.)40 b(When)30
-b(used)f(in)g(this)h(w)m(a)m(y)-8 b(,)330 4989 y(it)33
+b(used)f(in)g(this)h(w)m(a)m(y)-8 b(,)330 3495 y(it)33
b(displa)m(ys)g(timing)g(statistics)h(for)e(the)h(shell)g(and)f(its)g
(completed)i(c)m(hildren.)47 b(The)32 b Ft(TIMEFORMAT)330
-5098 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f
-(timing)h(information.)154 5230 y(20.)61 b(When)33 b(parsing)g(and)f
+3605 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f
+(timing)h(information.)154 3733 y(21.)61 b(When)33 b(parsing)g(and)f
(expanding)h(a)h($)p Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33
b Fu(expansion)g(that)h(app)s(ears)f(within)f(double)h(quotes,)330
-5340 y(single)42 b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f
-(cannot)i(b)s(e)e(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)p
-eop end
-%%Page: 102 108
-TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(102)330 299 y(other)31
-b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f(is)g(one)h
-(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330
-408 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h
-(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154
-547 y(21.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h
+3842 y(single)42 b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f
+(cannot)i(b)s(e)e(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330
+3952 y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s
+(erator)f(is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e
+(pattern)330 4061 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)
+e(do)g(not)h(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154
+4189 y(22.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h
Ft(time)d Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m
-(en)h(b)s(egins)d(with)i(a)330 656 y(`)p Ft(-)p Fu('.)154
-795 y(22.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e(not)
-h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h(double-quoted)g
-(string,)330 905 y(ev)m(en)g(if)f(the)h Ft(histexpand)d
-Fu(option)i(is)h(enabled.)154 1043 y(23.)61 b(If)24 b(a)g
-Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h(error)g(status,)i
-(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39 b(The)24
-b(fatal)330 1153 y(errors)30 b(are)h(those)f(listed)h(in)f(the)h
-Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i(passing)e
-(incorrect)330 1262 y(options,)43 b(redirection)d(errors,)i(v)-5
-b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i
-(preceding)f(the)330 1372 y(command)30 b(name,)h(and)f(so)g(on.)154
-1510 y(24.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e
+(en)h(b)s(egins)d(with)i(a)330 4299 y(`)p Ft(-)p Fu('.)154
+4427 y(23.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e
+(not)h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h
+(double-quoted)g(string,)330 4536 y(ev)m(en)g(if)f(the)h
+Ft(histexpand)d Fu(option)i(is)h(enabled.)154 4664 y(24.)61
+b(If)24 b(a)g Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h
+(error)g(status,)i(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39
+b(The)24 b(fatal)330 4774 y(errors)30 b(are)h(those)f(listed)h(in)f
+(the)h Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i
+(passing)e(incorrect)330 4883 y(options,)43 b(redirection)d(errors,)i
+(v)-5 b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i
+(preceding)f(the)330 4993 y(command)30 b(name,)h(and)f(so)g(on.)154
+5121 y(25.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e
(an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g
-(error)e(o)s(ccurs)330 1620 y(when)38 b(no)h(command)g(name)g(follo)m
+(error)e(o)s(ccurs)330 5230 y(when)38 b(no)h(command)g(name)g(follo)m
(ws)i(the)e(assignmen)m(t)h(statemen)m(ts.)69 b(A)39
-b(v)-5 b(ariable)40 b(assignmen)m(t)330 1729 y(error)30
+b(v)-5 b(ariable)40 b(assignmen)m(t)330 5340 y(error)30
b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g(assign)f(a)h(v)-5
-b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 1868
-y(25.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h
-(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g(error)e
-(o)s(ccurs)330 1977 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g
-(preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f
-(other)h(simple)330 2087 y(command.)154 2225 y(26.)61
-b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f(an)f(error)h
-(status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 b(in)f(a)g
-Ft(for)330 2335 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5
-b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f
-(readonly)h(v)-5 b(ariable.)154 2473 y(27.)61 b(Non-in)m(teractiv)m(e)
-34 b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b
-Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154
-2612 y(28.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g
-(syn)m(tax)g(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h
-(an)330 2721 y(in)m(v)-5 b(alid)31 b(expression.)154
-2860 y(29.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f
-(parameter)h(expansion)g(error)f(o)s(ccurs.)154 2998
-y(30.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h(is)f
-(a)h(syn)m(tax)g(error)f(in)g(a)h(script)f(read)g(with)h(the)f
-Ft(.)g Fu(or)h Ft(source)330 3108 y Fu(builtins,)30 b(or)g(in)g(a)h
-(string)g(pro)s(cessed)e(b)m(y)i(the)f Ft(eval)f Fu(builtin.)154
-3246 y(31.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m
-(v)-5 b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h
-(`)p Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330
-3356 y(parameters.)154 3494 y(32.)61 b(When)28 b(expanding)g(the)g(`)p
-Ft(*)p Fu(')g(sp)s(ecial)h(parameter)f(in)g(a)h(pattern)f(con)m(text)i
-(where)e(the)g(expansion)g(is)330 3604 y(double-quoted)i(do)s(es)g(not)
-h(treat)h(the)e Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154
-3742 y(33.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e
-Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s(ersist)g(in)f(the)i(shell)f
-(en)m(vironmen)m(t)330 3852 y(after)31 b(the)f(builtin)g(completes.)154
-3990 y(34.)61 b(The)31 b Ft(command)e Fu(builtin)i(do)s(es)g(not)h
-(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e)h(assignmen)m(t)f(statemen)m
-(ts)h(as)f(ar-)330 4100 y(gumen)m(ts)40 b(from)e(expanding)h(them)g(as)
-h(assignmen)m(t)g(statemen)m(ts;)46 b(when)38 b(not)i(in)f
-Fm(posix)f Fu(mo)s(de,)330 4209 y(assignmen)m(t)k(builtins)e(lose)h
-(their)g(assignmen)m(t)h(statemen)m(t)h(expansion)d(prop)s(erties)g
-(when)g(pre-)330 4319 y(ceded)31 b(b)m(y)f Ft(command)p
-Fu(.)154 4457 y(35.)61 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h
-(required)f(format)h(to)g(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f
-(the)h(bac)m(kground,)330 4567 y(whic)m(h)h(do)s(es)g(not)g(include)g
-(an)g(indication)h(of)f(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e
-(or)h(previous)g(job.)154 4706 y(36.)61 b(The)23 b(output)f(of)i(`)p
+b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)p eop
+end
+%%Page: 108 114
+TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(108)154 299 y(26.)61
+b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h(error)g
+(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g(error)e(o)s
+(ccurs)330 408 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g(preceding)e
+(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f(other)h
+(simple)330 518 y(command.)38 b(F)-8 b(or)23 b(an)m(y)g(other)g(simple)
+g(command,)h(the)f(shell)g(ab)s(orts)f(execution)i(of)f(that)g
+(command,)330 628 y(and)44 b(execution)i(con)m(tin)m(ues)g(at)g(the)f
+(top)g(lev)m(el)h(\()p Ft(")p Fu(the)f(shell)h(shall)f(not)g(p)s
+(erform)e(an)m(y)i(further)330 737 y(pro)s(cessing)30
+b(of)h(the)f(command)g(in)g(whic)m(h)h(the)f(error)g(o)s(ccurred)p
+Ft(")p Fu(\).)154 871 y(27.)61 b(A)43 b(non-in)m(teractiv)m(e)i(shell)e
+(exits)h(with)f(an)f(error)h(status)g(if)g(the)g(iteration)h(v)-5
+b(ariable)44 b(in)f(a)g Ft(for)330 981 y Fu(statemen)m(t)32
+b(or)f(the)f(selection)i(v)-5 b(ariable)32 b(in)e(a)g
+Ft(select)f Fu(statemen)m(t)j(is)f(a)f(readonly)h(v)-5
+b(ariable.)154 1115 y(28.)61 b(Non-in)m(teractiv)m(e)34
+b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b Ft(.)g
+Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154 1249 y(29.)61
+b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g(syn)m(tax)g
+(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h(an)330
+1358 y(in)m(v)-5 b(alid)31 b(expression.)154 1492 y(30.)61
+b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f(parameter)h
+(expansion)g(error)f(o)s(ccurs.)154 1626 y(31.)61 b(Non-in)m(teractiv)m
+(e)27 b(shells)c(exit)i(if)e(there)h(is)f(a)h(syn)m(tax)g(error)f(in)g
+(a)h(script)f(read)g(with)h(the)f Ft(.)g Fu(or)h Ft(source)330
+1736 y Fu(builtins,)30 b(or)g(in)g(a)h(string)g(pro)s(cessed)e(b)m(y)i
+(the)f Ft(eval)f Fu(builtin.)154 1870 y(32.)61 b(While)32
+b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m(v)-5 b(ailable,)34
+b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h(`)p
+Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330
+1979 y(parameters.)154 2113 y(33.)61 b(Expanding)21 b(the)h(`)p
+Ft(*)p Fu(')g(sp)s(ecial)h(parameter)f(in)g(a)g(pattern)h(con)m(text)g
+(where)f(the)g(expansion)g(is)g(double-)330 2223 y(quoted)31
+b(do)s(es)f(not)g(treat)i(the)e Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g
+(double-quoted.)154 2357 y(34.)61 b(Assignmen)m(t)23
+b(statemen)m(ts)h(preceding)e Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s
+(ersist)g(in)f(the)i(shell)f(en)m(vironmen)m(t)330 2466
+y(after)31 b(the)f(builtin)g(completes.)154 2600 y(35.)61
+b(The)31 b Ft(command)e Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f
+(builtins)g(that)h(tak)m(e)h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)
+330 2710 y(gumen)m(ts)40 b(from)e(expanding)h(them)g(as)h(assignmen)m
+(t)g(statemen)m(ts;)46 b(when)38 b(not)i(in)f Fm(posix)f
+Fu(mo)s(de,)330 2819 y(assignmen)m(t)k(builtins)e(lose)h(their)g
+(assignmen)m(t)h(statemen)m(t)h(expansion)d(prop)s(erties)g(when)g
+(pre-)330 2929 y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154
+3063 y(36.)61 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h(required)f
+(format)h(to)g(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f(the)h(bac)m
+(kground,)330 3173 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g
+(indication)h(of)f(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h
+(previous)g(job.)154 3306 y(37.)61 b(The)23 b(output)f(of)i(`)p
Ft(kill)29 b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g(signal)f(names)g
(on)g(a)h(single)g(line,)h(separated)e(b)m(y)g(spaces,)330
-4815 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154
-4954 y(37.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept)
+3416 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154
+3550 y(38.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept)
h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154
-5092 y(38.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f
+3684 y(39.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f
Fu(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in)g(the)h
-(format)g(re-)330 5202 y(quired)30 b(b)m(y)g Fm(posix)p
-Fu(.)154 5340 y(39.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g
+(format)g(re-)330 3794 y(quired)30 b(b)m(y)g Fm(posix)p
+Fu(.)154 3927 y(40.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g
(signal)i(names)e(without)g(the)h(leading)g Ft(SIG)p
-Fu(.)p eop end
-%%Page: 103 109
-TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(103)154 299 y(40.)61
-b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g(c)m(hec)m(k)h(the)g
-(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e(signal)i(sp)s
-(eci\014cation)330 408 y(and)30 b(rev)m(ert)i(the)e(signal)i(handling)e
-(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g(is,)g(unless)f(that)h
-(argumen)m(t)330 518 y(consists)e(solely)g(of)g(digits)g(and)f(is)g(a)h
-(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 b(If)28
-b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330
-628 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s
+Fu(.)154 4061 y(41.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g
+(c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e
+(signal)i(sp)s(eci\014cation)330 4171 y(and)30 b(rev)m(ert)i(the)e
+(signal)i(handling)e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g
+(is,)g(unless)f(that)h(argumen)m(t)330 4281 y(consists)e(solely)g(of)g
+(digits)g(and)f(is)g(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38
+b(If)28 b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330
+4390 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s
(osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst)
-f(argumen)m(t.)154 765 y(41.)61 b Ft(trap)29 b(-p)35
+f(argumen)m(t.)154 4524 y(42.)61 b Ft(trap)29 b(-p)35
b Fu(displa)m(ys)h(signals)h(whose)f(disp)s(ositions)f(are)h(set)h(to)f
-(SIG)p 2687 765 28 4 v 40 w(DFL)g(and)g(those)g(that)g(w)m(ere)330
-874 y(ignored)30 b(when)g(the)g(shell)h(started.)154
-1011 y(42.)61 b(The)21 b Ft(.)h Fu(and)f Ft(source)f
+(SIG)p 2687 4524 28 4 v 40 w(DFL)g(and)g(those)g(that)g(w)m(ere)330
+4634 y(ignored)30 b(when)g(the)g(shell)h(started.)154
+4768 y(43.)61 b(The)21 b Ft(.)h Fu(and)f Ft(source)f
Fu(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f(directory)h
-(for)g(the)g(\014lename)f(argumen)m(t)330 1121 y(if)30
+(for)g(the)g(\014lename)f(argumen)m(t)330 4877 y(if)30
b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g Ft(PATH)p
-Fu(.)154 1258 y(43.)61 b(Enabling)21 b Fm(posix)g Fu(mo)s(de)g(has)g
+Fu(.)154 5011 y(44.)61 b(Enabling)21 b Fm(posix)g Fu(mo)s(de)g(has)g
(the)g(e\013ect)i(of)e(setting)i(the)e Ft(inherit_errexit)d
-Fu(option,)23 b(so)f(subshells)330 1367 y(spa)m(wned)27
+Fu(option,)23 b(so)f(subshells)330 5121 y(spa)m(wned)27
b(to)i(execute)g(command)e(substitutions)h(inherit)f(the)h(v)-5
b(alue)28 b(of)g(the)g Ft(-e)f Fu(option)h(from)g(the)330
-1477 y(paren)m(t)37 b(shell.)62 b(When)37 b(the)g Ft(inherit_errexit)c
+5230 y(paren)m(t)37 b(shell.)62 b(When)37 b(the)g Ft(inherit_errexit)c
Fu(option)38 b(is)f(not)h(enabled,)h(Bash)e(clears)h(the)g
-Ft(-e)330 1587 y Fu(option)31 b(in)f(suc)m(h)g(subshells.)154
-1724 y(44.)61 b(Enabling)32 b Fm(posix)f Fu(mo)s(de)h(has)g(the)h
-(e\013ect)g(of)g(setting)g(the)g Ft(shift_verbose)28
-b Fu(option,)34 b(so)e(n)m(umeric)330 1833 y(argumen)m(ts)f(to)g
-Ft(shift)f Fu(that)h(exceed)h(the)e(n)m(um)m(b)s(er)g(of)h(p)s
-(ositional)g(parameters)g(will)g(result)g(in)f(an)330
-1943 y(error)g(message.)154 2080 y(45.)61 b(When)43 b(the)g
-Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i(it)d(do)
-s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 2189 y(leading)31
-b(`)p Ft(alias)e Fu(')i(unless)f(the)g Ft(-p)g Fu(option)h(is)f
-(supplied.)154 2326 y(46.)61 b(When)40 b(the)g Ft(set)f
-Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h(without)f(options,)j(it)e(do)s(es)
-f(not)g(displa)m(y)g(shell)g(function)330 2436 y(names)30
-b(and)g(de\014nitions.)154 2573 y(47.)61 b(When)36 b(the)g
-Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m(ed)i(without)e(options,)i(it)f
-(displa)m(ys)f(v)-5 b(ariable)37 b(v)-5 b(alues)37 b(without)330
-2682 y(quotes,)26 b(unless)d(they)i(con)m(tain)g(shell)f(metac)m
-(haracters,)k(ev)m(en)d(if)f(the)g(result)g(con)m(tains)i(nonprin)m
-(ting)330 2792 y(c)m(haracters.)154 2929 y(48.)61 b(When)35
-b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)i(in)d
-Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g(constructed)g
-(from)330 3039 y Ft($PWD)i Fu(and)h(the)h(directory)f(name)h(supplied)e
+Ft(-e)330 5340 y Fu(option)31 b(in)f(suc)m(h)g(subshells.)p
+eop end
+%%Page: 109 115
+TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(109)154 299 y(45.)61
+b(Enabling)32 b Fm(posix)f Fu(mo)s(de)h(has)g(the)h(e\013ect)g(of)g
+(setting)g(the)g Ft(shift_verbose)28 b Fu(option,)34
+b(so)e(n)m(umeric)330 408 y(argumen)m(ts)f(to)g Ft(shift)f
+Fu(that)h(exceed)h(the)e(n)m(um)m(b)s(er)g(of)h(p)s(ositional)g
+(parameters)g(will)g(result)g(in)f(an)330 518 y(error)g(message.)154
+662 y(46.)61 b(When)43 b(the)g Ft(alias)f Fu(builtin)g(displa)m(ys)i
+(alias)g(de\014nitions,)i(it)d(do)s(es)g(not)g(displa)m(y)h(them)f
+(with)g(a)330 771 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g
+Ft(-p)g Fu(option)h(is)f(supplied.)154 915 y(47.)61 b(When)40
+b(the)g Ft(set)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h(without)f
+(options,)j(it)e(do)s(es)f(not)g(displa)m(y)g(shell)g(function)330
+1025 y(names)30 b(and)g(de\014nitions.)154 1169 y(48.)61
+b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m(ed)i
+(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37
+b(v)-5 b(alues)37 b(without)330 1278 y(quotes,)26 b(unless)d(they)i
+(con)m(tain)g(shell)f(metac)m(haracters,)k(ev)m(en)d(if)f(the)g(result)
+g(con)m(tains)i(nonprin)m(ting)330 1388 y(c)m(haracters.)154
+1532 y(49.)61 b(When)35 b(the)h Ft(cd)e Fu(builtin)h(is)h(in)m(v)m(ok)m
+(ed)g(in)f(logical)j(mo)s(de,)e(and)f(the)h(pathname)f(constructed)g
+(from)330 1641 y Ft($PWD)i Fu(and)h(the)h(directory)f(name)h(supplied)e
(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g(an)f(existing)330
-3148 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f
-(falling)h(bac)m(k)h(to)f Fr(ph)m(ysical)j Fu(mo)s(de.)154
-3285 y(49.)61 b(When)37 b(the)h Ft(cd)f Fu(builtin)g(cannot)h(c)m
+1751 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f
+(falling)h(bac)m(k)h(to)f(ph)m(ysical)g(mo)s(de.)154
+1895 y(50.)61 b(When)37 b(the)h Ft(cd)f Fu(builtin)g(cannot)h(c)m
(hange)h(a)f(directory)g(b)s(ecause)g(the)g(length)g(of)f(the)h
-(pathname)330 3395 y(constructed)52 b(from)f Ft($PWD)f
-Fu(and)g(the)i(directory)g(name)f(supplied)f(as)i(an)f(argumen)m(t)h
-(exceeds)330 3504 y Fr(P)-8 b(A)g(TH)p 584 3504 V 41
-w(MAX)42 b Fu(when)31 b(all)j(sym)m(b)s(olic)e(links)h(are)f(expanded,)
-h Ft(cd)f Fu(will)g(fail)h(instead)g(of)g(attempting)330
-3614 y(to)e(use)f(only)h(the)f(supplied)f(directory)i(name.)154
-3751 y(50.)61 b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g
-(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h
-(curren)m(t)f(directory)-8 b(,)330 3861 y(ev)m(en)31
-b(if)f(it)h(is)g(not)f(ask)m(ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f
-(system)h(with)f(the)h Ft(-P)e Fu(option.)154 3998 y(51.)61
-b(When)35 b(listing)g(the)g(history)-8 b(,)36 b(the)f
-Ft(fc)g Fu(builtin)f(do)s(es)g(not)h(include)g(an)f(indication)i(of)f
-(whether)f(or)330 4107 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g
-(mo)s(di\014ed.)154 4244 y(52.)61 b(The)30 b(default)g(editor)h(used)f
-(b)m(y)g Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 4381 y(53.)61
-b(The)37 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g
-(rep)s(ort)f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330
-4491 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g
+(pathname)330 2004 y(constructed)27 b(from)g Ft($PWD)f
+Fu(and)h(the)g(directory)h(name)f(supplied)f(as)i(an)f(argumen)m(t)g
+(exceeds)h Ft(PATH_)330 2114 y(MAX)d Fu(when)g(all)h(sym)m(b)s(olic)g
+(links)g(are)g(expanded,)g Ft(cd)f Fu(will)h(fail)h(instead)f(of)g
+(attempting)h(to)f(use)g(only)330 2224 y(the)31 b(supplied)e(directory)
+i(name.)154 2367 y(51.)61 b(The)36 b Ft(pwd)f Fu(builtin)h(v)m
+(eri\014es)h(that)g(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f
+(same)h(as)f(the)h(curren)m(t)f(directory)-8 b(,)330
+2477 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m(ed)h(to)g(c)m(hec)m(k)h
+(the)f(\014le)f(system)h(with)f(the)h Ft(-P)e Fu(option.)154
+2621 y(52.)61 b(When)35 b(listing)g(the)g(history)-8
+b(,)36 b(the)f Ft(fc)g Fu(builtin)f(do)s(es)g(not)h(include)g(an)f
+(indication)i(of)f(whether)f(or)330 2730 y(not)d(a)f(history)h(en)m
+(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154 2874 y(53.)61
+b(The)30 b(default)g(editor)h(used)f(b)m(y)g Ft(fc)g
+Fu(is)g Ft(ed)p Fu(.)154 3018 y(54.)61 b(The)37 b Ft(type)g
+Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g(rep)s(ort)f(a)i
+(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330
+3128 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g
(execute)g(suc)m(h)f(a)g(\014le)g(if)g(it)g(is)g(the)g(only)g(so-named)
-g(\014le)330 4600 y(found)i(in)h Ft($PATH)p Fu(.)154
-4737 y(54.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m
+g(\014le)330 3237 y(found)i(in)h Ft($PATH)p Fu(.)154
+3381 y(55.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m
(ok)m(e)i(the)e Ft(vi)g Fu(editor)h(directly)f(when)f(the)i(`)p
-Ft(v)p Fu(')f(command)g(is)g(run,)330 4847 y(instead)e(of)f(c)m(hec)m
-(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 4984
-y(55.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j
+Ft(v)p Fu(')f(command)g(is)g(run,)330 3491 y(instead)e(of)f(c)m(hec)m
+(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 3634
+y(56.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j
(Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330
-5093 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54
+3744 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54
b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e)
-g(c)m(haracters)h(are)330 5203 y(con)m(v)m(erted.)154
-5340 y(56.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m
+g(c)m(haracters)h(are)330 3854 y(con)m(v)m(erted.)154
+3998 y(57.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m
(k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h Ft(-c)f
-Fu(and)g Ft(-f)f Fu(options.)p eop end
-%%Page: 104 110
-TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(104)154 299 y(57.)61
-b(The)39 b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g
-(is)g(set)h(on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g
-Ft(wait)330 408 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f
+Fu(and)g Ft(-f)f Fu(options.)154 4141 y(58.)61 b(The)39
+b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g(is)g(set)h
+(on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g
+Ft(wait)330 4251 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f
(immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j
-(for)f(eac)m(h)330 518 y(c)m(hild)31 b(that)g(exits.)154
-654 y(58.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m
+(for)f(eac)m(h)330 4361 y(c)m(hild)31 b(that)g(exits.)154
+4504 y(59.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m
(terrupted)h(b)m(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s
-(een)f(set.)40 b(If)27 b(Bash)330 764 y(receiv)m(es)41
+(een)f(set.)40 b(If)27 b(Bash)330 4614 y(receiv)m(es)41
b(a)f(trapp)s(ed)e(signal)i(while)f(executing)h Ft(read)p
Fu(,)h(the)e(trap)h(handler)e(executes)i(and)f Ft(read)330
-874 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154
-1010 y(59.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e
-(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h
-(after)330 1119 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain)
-g(it.)275 1284 y(There)j(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h
-(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m
-(en)i(when)d(in)150 1394 y Fm(posix)d Fu(mo)s(de.)40
-b(Sp)s(eci\014cally:)199 1532 y(1.)61 b(The)30 b Ft(fc)f
-Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h
-(edit)g(history)f(en)m(tries)h(if)f Ft(FCEDIT)f Fu(is)h(unset,)330
-1641 y(rather)g(than)g(defaulting)h(directly)g(to)g Ft(ed)p
-Fu(.)40 b Ft(fc)30 b Fu(uses)g Ft(ed)g Fu(if)g Ft(EDITOR)f
-Fu(is)h(unset.)199 1778 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i
-(Bash)e(requires)g(the)g Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e
-(enabled)h(for)g(the)g Ft(echo)f Fu(builtin)330 1887
-y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 2052 y(Bash)c(can)g(b)s(e)f
-(con\014gured)h(to)g(b)s(e)g Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g
-(default,)h(b)m(y)f(sp)s(ecifying)g(the)g Ft(--enable-)150
-2162 y(strict-posix-default)c Fu(to)27 b Ft(configure)e
-Fu(when)h(building)h(\(see)h(Section)g(10.8)g([Optional)g(F)-8
-b(eatures],)150 2271 y(page)31 b(155\).)150 2518 y Fs(6.12)68
-b(Shell)46 b(Compatibilit)l(y)h(Mo)t(de)150 2677 y Fu(Bash-4.0)30
-b(in)m(tro)s(duced)d(the)i(concept)g(of)f(a)h(`shell)f(compatibilit)m
-(y)i(lev)m(el',)h(sp)s(eci\014ed)d(as)g(a)h(set)f(of)h(options)150
-2786 y(to)i(the)f(shopt)g(builtin)g(\()p Ft(compat31)p
-Fu(,)e Ft(compat32)p Fu(,)h Ft(compat40)p Fu(,)f Ft(compat41)p
-Fu(,)g(and)i(so)g(on\).)41 b(There)30 b(is)g(only)150
-2896 y(one)f(curren)m(t)f(compatibilit)m(y)j(lev)m(el)f({)f(eac)m(h)h
-(option)f(is)g(m)m(utually)g(exclusiv)m(e.)41 b(The)28
-b(compatibilit)m(y)j(lev)m(el)150 3006 y(is)39 b(in)m(tended)g(to)h
-(allo)m(w)g(users)e(to)i(select)h(b)s(eha)m(vior)e(from)f(previous)h(v)
-m(ersions)g(that)h(is)f(incompatible)150 3115 y(with)d(new)m(er)g(v)m
-(ersions)g(while)g(they)g(migrate)h(scripts)f(to)h(use)f(curren)m(t)f
-(features)i(and)e(b)s(eha)m(vior.)58 b(It's)150 3225
-y(in)m(tended)30 b(to)h(b)s(e)f(a)h(temp)s(orary)f(solution.)275
-3363 y(This)k(section)j(do)s(es)e(not)h(men)m(tion)g(b)s(eha)m(vior)g
-(that)g(is)f(standard)g(for)g(a)h(particular)g(v)m(ersion)g(\(e.g.,)150
-3473 y(setting)24 b Ft(compat32)e Fu(means)h(that)h(quoting)g(the)f
-(rhs)g(of)g(the)h(regexp)f(matc)m(hing)i(op)s(erator)e(quotes)h(sp)s
-(ecial)150 3582 y(regexp)31 b(c)m(haracters)g(in)g(the)f(w)m(ord,)g
-(whic)m(h)g(is)h(default)f(b)s(eha)m(vior)h(in)f(bash-3.2)h(and)f(ab)s
-(o)m(v)m(e\).)275 3720 y(If)f(a)h(user)f(enables,)h(sa)m(y)-8
-b(,)31 b Ft(compat32)p Fu(,)d(it)i(ma)m(y)g(a\013ect)h(the)f(b)s(eha)m
-(vior)g(of)g(other)g(compatibilit)m(y)h(lev)m(els)150
-3830 y(up)23 b(to)h(and)f(including)h(the)g(curren)m(t)f(compatibilit)m
-(y)j(lev)m(el.)41 b(The)23 b(idea)h(is)g(that)g(eac)m(h)h(compatibilit)
-m(y)h(lev)m(el)150 3939 y(con)m(trols)35 b(b)s(eha)m(vior)f(that)g(c)m
-(hanged)g(in)f(that)h(v)m(ersion)g(of)g(Bash,)h(but)e(that)h(b)s(eha)m
-(vior)g(ma)m(y)g(ha)m(v)m(e)h(b)s(een)150 4049 y(presen)m(t)f(in)g
-(earlier)g(v)m(ersions.)52 b(F)-8 b(or)35 b(instance,)g(the)f(c)m
-(hange)h(to)g(use)f(lo)s(cale-based)h(comparisons)f(with)150
-4159 y(the)e Ft([[)f Fu(command)g(came)h(in)g(bash-4.1,)h(and)d
-(earlier)j(v)m(ersions)f(used)f(ASCI)s(I-based)f(comparisons,)i(so)150
-4268 y(enabling)27 b Ft(compat32)e Fu(will)i(enable)g(ASCI)s(I-based)e
-(comparisons)i(as)g(w)m(ell.)41 b(That)26 b(gran)m(ularit)m(y)i(ma)m(y)
-g(not)150 4378 y(b)s(e)i(su\016cien)m(t)i(for)f(all)g(uses,)g(and)g(as)
-g(a)g(result)g(users)f(should)g(emplo)m(y)i(compatibilit)m(y)h(lev)m
-(els)g(carefully)-8 b(.)150 4487 y(Read)31 b(the)f(do)s(cumen)m(tation)
-h(for)g(a)f(particular)h(feature)g(to)g(\014nd)e(out)h(the)h(curren)m
-(t)f(b)s(eha)m(vior.)275 4625 y(Bash-4.3)44 b(in)m(tro)s(duced)e(a)h
-(new)f(shell)h(v)-5 b(ariable:)65 b Ft(BASH_COMPAT)p
-Fu(.)75 b(The)42 b(v)-5 b(alue)43 b(assigned)g(to)g(this)150
-4735 y(v)-5 b(ariable)32 b(\(a)g(decimal)h(v)m(ersion)e(n)m(um)m(b)s
+4724 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154
+4867 y(60.)61 b(The)33 b Ft(printf)f Fu(builtin)i(uses)f
+Ft(double)f Fu(\(via)j Ft(strtod)p Fu(\))d(to)j(con)m(v)m(ert)g
+(argumen)m(ts)f(corresp)s(onding)f(to)330 4977 y(\015oating)40
+b(p)s(oin)m(t)f(con)m(v)m(ersion)h(sp)s(eci\014ers,)h(instead)e(of)g
+Ft(long)29 b(double)38 b Fu(if)h(it's)g(a)m(v)-5 b(ailable.)69
+b(The)39 b(`)p Ft(L)p Fu(')330 5087 y(length)31 b(mo)s(di\014er)e
+(forces)i Ft(printf)e Fu(to)i(use)f Ft(long)f(double)g
+Fu(if)h(it's)h(a)m(v)-5 b(ailable.)154 5230 y(61.)61
+b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e(pro)s(cess's)
+h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h(after)330
+5340 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain)g(it.)p
+eop end
+%%Page: 110 116
+TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(110)275 299 y(There)34
+b(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h(that)g(Bash)g(do)s(es)f
+(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m(en)i(when)d(in)150
+408 y Fm(posix)d Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)199
+549 y(1.)61 b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i
+Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h
+(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 658 y(rather)g(than)g(defaulting)h
+(directly)g(to)g Ft(ed)p Fu(.)40 b Ft(fc)30 b Fu(uses)g
+Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 796 y(2.)61
+b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g
+Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g
+Ft(echo)f Fu(builtin)330 905 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275
+1073 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g
+Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g(default,)h(b)m(y)f(sp)s
+(ecifying)g(the)g Ft(--enable-)150 1183 y(strict-posix-default)c
+Fu(to)27 b Ft(configure)e Fu(when)h(building)h(\(see)h(Section)g(10.8)g
+([Optional)g(F)-8 b(eatures],)150 1292 y(page)31 b(161\).)150
+1542 y Fs(6.12)68 b(Shell)46 b(Compatibilit)l(y)h(Mo)t(de)150
+1701 y Fu(Bash-4.0)33 b(in)m(tro)s(duced)f(the)f(concept)i(of)f(a)g
+Fr(shell)g(compatibilit)m(y)i(lev)m(el)p Fu(,)g(sp)s(eci\014ed)d(as)h
+(a)g(set)h(of)f(options)150 1811 y(to)f(the)f(shopt)g(builtin)g(\()p
+Ft(compat31)p Fu(,)e Ft(compat32)p Fu(,)h Ft(compat40)p
+Fu(,)f Ft(compat41)p Fu(,)g(and)i(so)g(on\).)41 b(There)30
+b(is)g(only)150 1920 y(one)f(curren)m(t)f(compatibilit)m(y)j(lev)m(el)f
+({)f(eac)m(h)h(option)f(is)g(m)m(utually)g(exclusiv)m(e.)41
+b(The)28 b(compatibilit)m(y)j(lev)m(el)150 2030 y(is)39
+b(in)m(tended)g(to)h(allo)m(w)g(users)e(to)i(select)h(b)s(eha)m(vior)e
+(from)f(previous)h(v)m(ersions)g(that)h(is)f(incompatible)150
+2139 y(with)d(new)m(er)g(v)m(ersions)g(while)g(they)g(migrate)h
+(scripts)f(to)h(use)f(curren)m(t)f(features)i(and)e(b)s(eha)m(vior.)58
+b(It's)150 2249 y(in)m(tended)30 b(to)h(b)s(e)f(a)h(temp)s(orary)f
+(solution.)275 2389 y(This)k(section)j(do)s(es)e(not)h(men)m(tion)g(b)s
+(eha)m(vior)g(that)g(is)f(standard)g(for)g(a)h(particular)g(v)m(ersion)
+g(\(e.g.,)150 2499 y(setting)d Ft(compat32)c Fu(means)i(that)i(quoting)
+e(the)h(rhs)f(of)g(the)h(regexp)g(matc)m(hing)h(op)s(erator)e(quotes)h
+(sp)s(e-)150 2608 y(cial)39 b(regexp)e(c)m(haracters)i(in)e(the)g(w)m
+(ord,)i(whic)m(h)e(is)g(default)h(b)s(eha)m(vior)f(in)g(bash-3.2)h(and)
+f(subsequen)m(t)150 2718 y(v)m(ersions\).)275 2858 y(If)29
+b(a)h(user)f(enables,)h(sa)m(y)-8 b(,)31 b Ft(compat32)p
+Fu(,)d(it)i(ma)m(y)g(a\013ect)h(the)f(b)s(eha)m(vior)g(of)g(other)g
+(compatibilit)m(y)h(lev)m(els)150 2968 y(up)23 b(to)h(and)f(including)h
+(the)g(curren)m(t)f(compatibilit)m(y)j(lev)m(el.)41 b(The)23
+b(idea)h(is)g(that)g(eac)m(h)h(compatibilit)m(y)h(lev)m(el)150
+3077 y(con)m(trols)35 b(b)s(eha)m(vior)f(that)g(c)m(hanged)g(in)f(that)
+h(v)m(ersion)g(of)g(Bash,)h(but)e(that)h(b)s(eha)m(vior)g(ma)m(y)g(ha)m
+(v)m(e)h(b)s(een)150 3187 y(presen)m(t)f(in)g(earlier)g(v)m(ersions.)52
+b(F)-8 b(or)35 b(instance,)g(the)f(c)m(hange)h(to)g(use)f(lo)s
+(cale-based)h(comparisons)f(with)150 3296 y(the)e Ft([[)f
+Fu(command)g(came)h(in)g(bash-4.1,)h(and)d(earlier)j(v)m(ersions)f
+(used)f(ASCI)s(I-based)f(comparisons,)i(so)150 3406 y(enabling)27
+b Ft(compat32)e Fu(will)i(enable)g(ASCI)s(I-based)e(comparisons)i(as)g
+(w)m(ell.)41 b(That)26 b(gran)m(ularit)m(y)i(ma)m(y)g(not)150
+3515 y(b)s(e)i(su\016cien)m(t)i(for)f(all)g(uses,)g(and)g(as)g(a)g
+(result)g(users)f(should)g(emplo)m(y)i(compatibilit)m(y)h(lev)m(els)g
+(carefully)-8 b(.)150 3625 y(Read)31 b(the)f(do)s(cumen)m(tation)h(for)
+g(a)f(particular)h(feature)g(to)g(\014nd)e(out)h(the)h(curren)m(t)f(b)s
+(eha)m(vior.)275 3765 y(Bash-4.3)44 b(in)m(tro)s(duced)e(a)h(new)f
+(shell)h(v)-5 b(ariable:)65 b Ft(BASH_COMPAT)p Fu(.)75
+b(The)42 b(v)-5 b(alue)43 b(assigned)g(to)g(this)150
+3875 y(v)-5 b(ariable)32 b(\(a)g(decimal)h(v)m(ersion)e(n)m(um)m(b)s
(er)f(lik)m(e)j(4.2,)g(or)e(an)h(in)m(teger)g(corresp)s(onding)f(to)h
-(the)f Ft(compat)p Fr(NN)150 4845 y Fu(option,)g(lik)m(e)h(42\))f
+(the)f Ft(compat)p Fr(NN)150 3984 y Fu(option,)g(lik)m(e)h(42\))f
(determines)g(the)f(compatibilit)m(y)j(lev)m(el.)275
-4983 y(Starting)e(with)g(bash-4.4,)h(Bash)f(has)g(b)s(egun)f
+4125 y(Starting)e(with)g(bash-4.4,)h(Bash)f(has)g(b)s(egun)f
(deprecating)h(older)h(compatibilit)m(y)h(lev)m(els.)44
-b(Ev)m(en)m(tu-)150 5092 y(ally)-8 b(,)32 b(the)e(options)h(will)g(b)s
+b(Ev)m(en)m(tu-)150 4234 y(ally)-8 b(,)32 b(the)e(options)h(will)g(b)s
(e)f(remo)m(v)m(ed)h(in)f(fa)m(v)m(or)i(of)e Ft(BASH_COMPAT)p
-Fu(.)275 5230 y(Bash-5.0)36 b(is)f(the)g(\014nal)f(v)m(ersion)i(for)e
+Fu(.)275 4374 y(Bash-5.0)36 b(is)f(the)g(\014nal)f(v)m(ersion)i(for)e
(whic)m(h)h(there)g(will)g(b)s(e)f(an)h(individual)f(shopt)h(option)g
-(for)g(the)150 5340 y(previous)30 b(v)m(ersion.)41 b(Users)30
+(for)g(the)150 4484 y(previous)30 b(v)m(ersion.)41 b(Users)30
b(should)g(use)g Ft(BASH_COMPAT)d Fu(on)j(bash-5.0)h(and)f(later)i(v)m
-(ersions.)p eop end
-%%Page: 105 111
-TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(105)275 299 y(The)24
-b(follo)m(wing)i(table)g(describ)s(es)e(the)i(b)s(eha)m(vior)f(c)m
-(hanges)h(con)m(trolled)g(b)m(y)f(eac)m(h)h(compatibilit)m(y)h(lev)m
-(el)150 408 y(setting.)43 b(The)30 b Ft(compat)p Fr(NN)39
-b Fu(tag)32 b(is)f(used)f(as)h(shorthand)e(for)h(setting)i(the)f
-(compatibilit)m(y)i(lev)m(el)f(to)g Fr(NN)150 518 y Fu(using)37
-b(one)h(of)g(the)g(follo)m(wing)h(mec)m(hanisms.)63 b(F)-8
-b(or)39 b(v)m(ersions)f(prior)f(to)h(bash-5.0,)j(the)d(compatibilit)m
-(y)150 628 y(lev)m(el)d(ma)m(y)f(b)s(e)e(set)i(using)e(the)i(corresp)s
-(onding)e Ft(compat)p Fr(NN)41 b Fu(shopt)33 b(option.)50
-b(F)-8 b(or)34 b(bash-4.3)f(and)g(later)150 737 y(v)m(ersions,)40
-b(the)e Ft(BASH_COMPAT)d Fu(v)-5 b(ariable)39 b(is)e(preferred,)i(and)e
-(it)i(is)f(required)f(for)g(bash-5.1)i(and)e(later)150
-847 y(v)m(ersions.)150 1025 y Ft(compat31)705 1165 y
-Fq(\017)60 b Fu(quoting)34 b(the)g(rhs)e(of)i(the)f Ft([[)g
-Fu(command's)h(regexp)f(matc)m(hing)i(op)s(erator)f(\(=)p
-Ft(~)p Fu(\))f(has)810 1275 y(no)d(sp)s(ecial)h(e\013ect)150
-1446 y Ft(compat32)705 1587 y Fq(\017)60 b Fu(in)m(terrupting)28
-b(a)g(command)g(list)h(suc)m(h)f(as)g Ft(")p Fu(a)g(;)h(b)f(;)h(c)p
-Ft(")f Fu(causes)h(the)f(execution)h(of)g(the)810 1697
-y(next)j(command)f(in)g(the)h(list)g(\(in)f(bash-4.0)h(and)f(later)i(v)
-m(ersions,)f(the)g(shell)f(acts)i(as)810 1806 y(if)i(it)i(receiv)m(ed)f
-(the)g(in)m(terrupt,)h(so)f(in)m(terrupting)f(one)h(command)f(in)g(a)h
-(list)g(ab)s(orts)810 1916 y(the)31 b(execution)g(of)g(the)f(en)m(tire)
-i(list\))150 2087 y Ft(compat40)705 2228 y Fq(\017)60
-b Fu(the)35 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')g(op)s(erators)h
-(to)g(the)g Ft([[)f Fu(command)h(do)f(not)h(consider)f(the)h(curren)m
-(t)810 2338 y(lo)s(cale)41 b(when)d(comparing)i(strings;)k(they)c(use)f
-(ASCI)s(I)f(ordering.)67 b(Bash)40 b(v)m(ersions)810
-2447 y(prior)f(to)i(bash-4.1)f(use)g(ASCI)s(I)e(collation)k(and)d
-(strcmp\(3\);)45 b(bash-4.1)c(and)e(later)810 2557 y(use)30
-b(the)h(curren)m(t)f(lo)s(cale's)i(collation)h(sequence)d(and)g
-(strcoll\(3\).)150 2728 y Ft(compat41)705 2869 y Fq(\017)60
-b Fu(in)29 b(p)s(osix)f(mo)s(de,)i Ft(time)e Fu(ma)m(y)h(b)s(e)g(follo)
-m(w)m(ed)i(b)m(y)e(options)g(and)g(still)h(b)s(e)e(recognized)j(as)810
-2979 y(a)g(reserv)m(ed)f(w)m(ord)g(\(this)h(is)f Fm(posix)g
-Fu(in)m(terpretation)i(267\))705 3119 y Fq(\017)60 b
-Fu(in)37 b(p)s(osix)f(mo)s(de,)i(the)g(parser)e(requires)g(that)i(an)f
-(ev)m(en)g(n)m(um)m(b)s(er)f(of)h(single)g(quotes)810
-3229 y(o)s(ccur)28 b(in)g(the)h Fr(w)m(ord)i Fu(p)s(ortion)d(of)h(a)g
-(double-quoted)f($)p Fi({)6 b Fu(.)23 b(.)f(.)11 b Fi(})29
-b Fu(parameter)g(expansion)810 3338 y(and)34 b(treats)h(them)f(sp)s
-(ecially)-8 b(,)37 b(so)e(that)g(c)m(haracters)g(within)f(the)h(single)
-g(quotes)g(are)810 3448 y(considered)30 b(quoted)h(\(this)f(is)h
-Fm(posix)e Fu(in)m(terpretation)j(221\))150 3620 y Ft(compat42)705
-3760 y Fq(\017)60 b Fu(the)29 b(replacemen)m(t)i(string)e(in)g
+(ersions.)275 4624 y(The)24 b(follo)m(wing)i(table)g(describ)s(es)e
+(the)i(b)s(eha)m(vior)f(c)m(hanges)h(con)m(trolled)g(b)m(y)f(eac)m(h)h
+(compatibilit)m(y)h(lev)m(el)150 4734 y(setting.)43 b(The)30
+b Ft(compat)p Fr(NN)39 b Fu(tag)32 b(is)f(used)f(as)h(shorthand)e(for)h
+(setting)i(the)f(compatibilit)m(y)i(lev)m(el)f(to)g Fr(NN)150
+4843 y Fu(using)37 b(one)h(of)g(the)g(follo)m(wing)h(mec)m(hanisms.)63
+b(F)-8 b(or)39 b(v)m(ersions)f(prior)f(to)h(bash-5.0,)j(the)d
+(compatibilit)m(y)150 4953 y(lev)m(el)d(ma)m(y)f(b)s(e)e(set)i(using)e
+(the)i(corresp)s(onding)e Ft(compat)p Fr(NN)41 b Fu(shopt)33
+b(option.)50 b(F)-8 b(or)34 b(bash-4.3)f(and)g(later)150
+5062 y(v)m(ersions,)40 b(the)e Ft(BASH_COMPAT)d Fu(v)-5
+b(ariable)39 b(is)e(preferred,)i(and)e(it)i(is)f(required)f(for)g
+(bash-5.1)i(and)e(later)150 5172 y(v)m(ersions.)150 5340
+y Ft(compat31)p eop end
+%%Page: 111 117
+TeXDict begin 111 116 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(111)705 299 y Fq(\017)60
+b Fu(quoting)34 b(the)g(rhs)e(of)i(the)f Ft([[)g Fu(command's)h(regexp)
+f(matc)m(hing)i(op)s(erator)f(\(=)p Ft(~)p Fu(\))f(has)810
+408 y(no)d(sp)s(ecial)h(e\013ect)150 568 y Ft(compat32)705
+702 y Fq(\017)60 b Fu(in)m(terrupting)28 b(a)g(command)g(list)h(suc)m
+(h)f(as)g Ft(")p Fu(a)g(;)h(b)f(;)h(c)p Ft(")f Fu(causes)h(the)f
+(execution)h(of)g(the)810 812 y(next)j(command)f(in)g(the)h(list)g
+(\(in)f(bash-4.0)h(and)f(later)i(v)m(ersions,)f(the)g(shell)f(acts)i
+(as)810 922 y(if)i(it)i(receiv)m(ed)f(the)g(in)m(terrupt,)h(so)f(in)m
+(terrupting)f(one)h(command)f(in)g(a)h(list)g(ab)s(orts)810
+1031 y(the)31 b(execution)g(of)g(the)f(en)m(tire)i(list\))150
+1191 y Ft(compat40)705 1325 y Fq(\017)60 b Fu(the)35
+b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')g(op)s(erators)h(to)g(the)g
+Ft([[)f Fu(command)h(do)f(not)h(consider)f(the)h(curren)m(t)810
+1435 y(lo)s(cale)41 b(when)d(comparing)i(strings;)k(they)c(use)f(ASCI)s
+(I)f(ordering.)67 b(Bash)40 b(v)m(ersions)810 1544 y(prior)f(to)i
+(bash-4.1)f(use)g(ASCI)s(I)e(collation)k(and)d(strcmp\(3\);)45
+b(bash-4.1)c(and)e(later)810 1654 y(use)30 b(the)h(curren)m(t)f(lo)s
+(cale's)i(collation)h(sequence)d(and)g(strcoll\(3\).)150
+1813 y Ft(compat41)705 1948 y Fq(\017)60 b Fu(in)29 b(p)s(osix)f(mo)s
+(de,)i Ft(time)e Fu(ma)m(y)h(b)s(e)g(follo)m(w)m(ed)i(b)m(y)e(options)g
+(and)g(still)h(b)s(e)e(recognized)j(as)810 2057 y(a)g(reserv)m(ed)f(w)m
+(ord)g(\(this)h(is)f Fm(posix)g Fu(in)m(terpretation)i(267\))705
+2192 y Fq(\017)60 b Fu(in)37 b(p)s(osix)f(mo)s(de,)i(the)g(parser)e
+(requires)g(that)i(an)f(ev)m(en)g(n)m(um)m(b)s(er)f(of)h(single)g
+(quotes)810 2301 y(o)s(ccur)28 b(in)g(the)h Fr(w)m(ord)i
+Fu(p)s(ortion)d(of)h(a)g(double-quoted)f($)p Fi({)6 b
+Fu(.)23 b(.)f(.)11 b Fi(})29 b Fu(parameter)g(expansion)810
+2411 y(and)34 b(treats)h(them)f(sp)s(ecially)-8 b(,)37
+b(so)e(that)g(c)m(haracters)g(within)f(the)h(single)g(quotes)g(are)810
+2521 y(considered)30 b(quoted)h(\(this)f(is)h Fm(posix)e
+Fu(in)m(terpretation)j(221\))150 2680 y Ft(compat42)705
+2814 y Fq(\017)60 b Fu(the)29 b(replacemen)m(t)i(string)e(in)g
(double-quoted)h(pattern)f(substitution)g(do)s(es)g(not)h(un-)810
-3870 y(dergo)h(quote)g(remo)m(v)-5 b(al,)32 b(as)e(it)h(do)s(es)f(in)g
-(v)m(ersions)h(after)g(bash-4.2)705 4010 y Fq(\017)60
+2924 y(dergo)h(quote)g(remo)m(v)-5 b(al,)32 b(as)e(it)h(do)s(es)f(in)g
+(v)m(ersions)h(after)g(bash-4.2)705 3059 y Fq(\017)60
b Fu(in)39 b(p)s(osix)g(mo)s(de,)j(single)e(quotes)g(are)g(considered)f
-(sp)s(ecial)h(when)f(expanding)g(the)810 4120 y Fr(w)m(ord)d
+(sp)s(ecial)h(when)f(expanding)g(the)810 3168 y Fr(w)m(ord)d
Fu(p)s(ortion)c(of)g(a)h(double-quoted)g($)p Fi({)6 b
Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(parameter)g(expansion)f(and)g(can)h
-(b)s(e)810 4230 y(used)40 b(to)i(quote)g(a)f(closing)h(brace)f(or)g
+(b)s(e)810 3278 y(used)40 b(to)i(quote)g(a)f(closing)h(brace)f(or)g
(other)h(sp)s(ecial)f(c)m(haracter)i(\(this)e(is)g(part)g(of)810
-4339 y Fm(posix)36 b Fu(in)m(terpretation)h(221\);)42
+3387 y Fm(posix)36 b Fu(in)m(terpretation)h(221\);)42
b(in)36 b(later)h(v)m(ersions,)h(single)f(quotes)g(are)g(not)f(sp)s
-(ecial)810 4449 y(within)30 b(double-quoted)g(w)m(ord)g(expansions)150
-4620 y Ft(compat43)705 4761 y Fq(\017)60 b Fu(the)31
+(ecial)810 3497 y(within)30 b(double-quoted)g(w)m(ord)g(expansions)150
+3656 y Ft(compat43)705 3791 y Fq(\017)60 b Fu(the)31
b(shell)g(do)s(es)g(not)g(prin)m(t)f(a)h(w)m(arning)g(message)h(if)f
-(an)g(attempt)h(is)f(made)f(to)i(use)f(a)810 4871 y(quoted)22
-b(comp)s(ound)f(assignmen)m(t)i(as)f(an)g(argumen)m(t)h(to)g(declare)g
-(\(declare)g(-a)g(fo)s(o='\(1)810 4980 y(2\)'\).)42 b(Later)31
-b(v)m(ersions)g(w)m(arn)f(that)h(this)f(usage)h(is)f(deprecated)705
-5121 y Fq(\017)60 b Fu(w)m(ord)21 b(expansion)g(errors)g(are)h
-(considered)f(non-fatal)h(errors)f(that)h(cause)g(the)f(curren)m(t)810
-5230 y(command)k(to)g(fail,)i(ev)m(en)e(in)g(p)s(osix)f(mo)s(de)h
-(\(the)g(default)g(b)s(eha)m(vior)g(is)g(to)g(mak)m(e)h(them)810
-5340 y(fatal)32 b(errors)d(that)i(cause)g(the)g(shell)f(to)i(exit\))p
-eop end
-%%Page: 106 112
-TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(106)705 299 y Fq(\017)60
-b Fu(when)37 b(executing)i(a)g(shell)f(function,)i(the)f(lo)s(op)f
-(state)h(\(while/un)m(til/etc.\))68 b(is)38 b(not)810
-408 y(reset,)c(so)g Ft(break)d Fu(or)i Ft(continue)e
+(an)g(attempt)h(is)f(made)f(to)i(use)f(a)810 3900 y(quoted)36
+b(comp)s(ound)e(assignmen)m(t)i(as)g(an)g(argumen)m(t)g(to)g(declare)h
+(\(e.g.,)i(declare)d(-a)810 4010 y(fo)s(o='\(1)31 b(2\)'\).)42
+b(Later)31 b(v)m(ersions)g(w)m(arn)f(that)h(this)f(usage)h(is)g
+(deprecated)705 4144 y Fq(\017)60 b Fu(w)m(ord)21 b(expansion)g(errors)
+g(are)h(considered)f(non-fatal)h(errors)f(that)h(cause)g(the)f(curren)m
+(t)810 4254 y(command)k(to)g(fail,)i(ev)m(en)e(in)g(p)s(osix)f(mo)s(de)
+h(\(the)g(default)g(b)s(eha)m(vior)g(is)g(to)g(mak)m(e)h(them)810
+4364 y(fatal)32 b(errors)d(that)i(cause)g(the)g(shell)f(to)i(exit\))705
+4498 y Fq(\017)60 b Fu(when)37 b(executing)i(a)g(shell)f(function,)i
+(the)f(lo)s(op)f(state)h(\(while/un)m(til/etc.\))68 b(is)38
+b(not)810 4608 y(reset,)c(so)g Ft(break)d Fu(or)i Ft(continue)e
Fu(in)h(that)i(function)f(will)g(break)g(or)g(con)m(tin)m(ue)h(lo)s
-(ops)810 518 y(in)h(the)g(calling)h(con)m(text.)57 b(Bash-4.4)37
+(ops)810 4717 y(in)h(the)g(calling)h(con)m(text.)57 b(Bash-4.4)37
b(and)d(later)i(reset)g(the)f(lo)s(op)g(state)i(to)e(prev)m(en)m(t)810
-628 y(this)150 787 y Ft(compat44)705 922 y Fq(\017)60
+4827 y(this)150 4986 y Ft(compat44)705 5121 y Fq(\017)60
b Fu(the)41 b(shell)g(sets)g(up)e(the)i(v)-5 b(alues)41
b(used)f(b)m(y)h Ft(BASH_ARGV)d Fu(and)i Ft(BASH_ARGC)e
-Fu(so)j(they)810 1031 y(can)26 b(expand)f(to)h(the)g(shell's)g(p)s
+Fu(so)j(they)810 5230 y(can)26 b(expand)f(to)h(the)g(shell's)g(p)s
(ositional)g(parameters)g(ev)m(en)h(if)e(extended)h(debugging)810
-1141 y(mo)s(de)k(is)g(not)h(enabled)705 1275 y Fq(\017)60
+5340 y(mo)s(de)k(is)g(not)h(enabled)p eop end
+%%Page: 112 118
+TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(112)705 299 y Fq(\017)60
b Fu(a)40 b(subshell)f(inherits)g(lo)s(ops)h(from)g(its)g(paren)m(t)g
(con)m(text,)k(so)c Ft(break)e Fu(or)i Ft(continue)810
-1385 y Fu(will)35 b(cause)g(the)f(subshell)f(to)i(exit.)54
+408 y Fu(will)35 b(cause)g(the)f(subshell)f(to)i(exit.)54
b(Bash-5.0)36 b(and)d(later)j(reset)f(the)f(lo)s(op)h(state)g(to)810
-1494 y(prev)m(en)m(t)c(the)g(exit)705 1629 y Fq(\017)60
+518 y(prev)m(en)m(t)c(the)g(exit)705 653 y Fq(\017)60
b Fu(v)-5 b(ariable)28 b(assignmen)m(ts)h(preceding)f(builtins)f(lik)m
(e)i Ft(export)d Fu(and)h Ft(readonly)e Fu(that)j(set)810
-1738 y(attributes)37 b(con)m(tin)m(ue)h(to)g(a\013ect)g(v)-5
+762 y(attributes)37 b(con)m(tin)m(ue)h(to)g(a\013ect)g(v)-5
b(ariables)37 b(with)g(the)f(same)h(name)g(in)g(the)f(calling)810
-1848 y(en)m(vironmen)m(t)31 b(ev)m(en)g(if)f(the)h(shell)g(is)f(not)h
-(in)f(p)s(osix)f(mo)s(de)150 2007 y Ft(compat50)f(\(set)h(using)g
-(BASH_COMPAT\))705 2117 y Fq(\017)60 b Fu(Bash-5.1)29
+872 y(en)m(vironmen)m(t)31 b(ev)m(en)g(if)f(the)h(shell)g(is)f(not)h
+(in)f(p)s(osix)f(mo)s(de)150 1031 y Ft(compat50)f(\(set)h(using)g
+(BASH_COMPAT\))705 1141 y Fq(\017)60 b Fu(Bash-5.1)29
b(c)m(hanged)g(the)f(w)m(a)m(y)g Ft($RANDOM)e Fu(is)i(generated)h(to)f
-(in)m(tro)s(duce)g(sligh)m(tly)h(more)810 2227 y(randomness.)39
+(in)m(tro)s(duce)g(sligh)m(tly)h(more)810 1250 y(randomness.)39
b(If)30 b(the)f(shell)h(compatibilit)m(y)i(lev)m(el)f(is)f(set)g(to)h
-(50)f(or)g(lo)m(w)m(er,)h(it)f(rev)m(erts)810 2336 y(to)e(the)g(metho)s
+(50)f(or)g(lo)m(w)m(er,)h(it)f(rev)m(erts)810 1360 y(to)e(the)g(metho)s
(d)f(from)g(bash-5.0)h(and)f(previous)g(v)m(ersions,)i(so)e(seeding)h
-(the)g(random)810 2446 y(n)m(um)m(b)s(er)36 b(generator)j(b)m(y)e
+(the)g(random)810 1469 y(n)m(um)m(b)s(er)36 b(generator)j(b)m(y)e
(assigning)h(a)g(v)-5 b(alue)38 b(to)g Ft(RANDOM)e Fu(will)i(pro)s
-(duce)e(the)i(same)810 2555 y(sequence)31 b(as)f(in)g(bash-5.0)705
-2690 y Fq(\017)60 b Fu(If)22 b(the)g(command)g(hash)f(table)i(is)f
+(duce)e(the)i(same)810 1579 y(sequence)31 b(as)f(in)g(bash-5.0)705
+1714 y Fq(\017)60 b Fu(If)22 b(the)g(command)g(hash)f(table)i(is)f
(empt)m(y)-8 b(,)25 b(Bash)d(v)m(ersions)g(prior)g(to)h(bash-5.1)f
-(prin)m(ted)810 2800 y(an)29 b(informational)i(message)g(to)f(that)g
+(prin)m(ted)810 1823 y(an)29 b(informational)i(message)g(to)f(that)g
(e\013ect,)h(ev)m(en)g(when)d(pro)s(ducing)g(output)h(that)810
-2909 y(can)40 b(b)s(e)g(reused)f(as)h(input.)69 b(Bash-5.1)42
+1933 y(can)40 b(b)s(e)g(reused)f(as)h(input.)69 b(Bash-5.1)42
b(suppresses)c(that)j(message)g(when)e(the)i Ft(-l)810
-3019 y Fu(option)31 b(is)f(supplied.)p eop end
-%%Page: 107 113
-TeXDict begin 107 112 bop 3614 -116 a Fu(107)150 299
+2042 y Fu(option)31 b(is)f(supplied.)150 2202 y Ft(compat51)e(\(set)h
+(using)g(BASH_COMPAT\))705 2311 y Fq(\017)60 b Fu(The)38
+b Ft(unset)g Fu(builtin)g(will)h(unset)f(the)h(arra)m(y)g
+Ft(a)g Fu(giv)m(en)g(an)g(argumen)m(t)g(lik)m(e)h(`)p
+Ft(a[@])p Fu('.)810 2421 y(Bash-5.2)32 b(will)f(unset)f(an)g(elemen)m
+(t)i(with)e(k)m(ey)i(`)p Ft(@)p Fu(')e(\(asso)s(ciativ)m(e)k(arra)m
+(ys\))d(or)f(remo)m(v)m(e)810 2531 y(all)h(the)g(elemen)m(ts)h(without)
+e(unsetting)g(the)h(arra)m(y)g(\(indexed)f(arra)m(ys\))705
+2665 y Fq(\017)60 b Fu(arithmetic)36 b(commands)e(\()h(\(\(...\)\))55
+b(\))f(and)34 b(the)g(expressions)h(in)f(an)g(arithmetic)i(for)810
+2775 y(statemen)m(t)c(can)f(b)s(e)f(expanded)f(more)i(than)f(once)705
+2909 y Fq(\017)60 b Fu(expressions)22 b(used)g(as)h(argumen)m(ts)g(to)h
+(arithmetic)f(op)s(erators)g(in)g(the)g Ft([[)f Fu(conditional)810
+3019 y(command)30 b(can)h(b)s(e)f(expanded)f(more)i(than)f(once)705
+3153 y Fq(\017)60 b Fu(the)35 b(expressions)g(in)g(substring)e
+(parameter)j(brace)f(expansion)g(can)g(b)s(e)g(expanded)810
+3263 y(more)c(than)f(once)705 3397 y Fq(\017)60 b Fu(the)39
+b(expressions)f(in)g(the)h($\(\()h(...)66 b(\)\))f(w)m(ord)39
+b(expansion)f(can)h(b)s(e)f(expanded)g(more)810 3507
+y(than)30 b(once)705 3641 y Fq(\017)60 b Fu(arithmetic)36
+b(expressions)f(used)f(as)h(indexed)f(arra)m(y)i(subscripts)d(can)i(b)s
+(e)g(expanded)810 3751 y(more)c(than)f(once)705 3885
+y Fq(\017)60 b Ft(test)29 b(-v)p Fu(,)35 b(when)f(giv)m(en)h(an)g
+(argumen)m(t)g(of)f(`)p Ft(A[@])p Fu(',)h(where)f Fr(A)h
+Fu(is)f(an)h(existing)g(asso-)810 3995 y(ciativ)m(e)h(arra)m(y)-8
+b(,)37 b(will)d(return)f(true)g(if)h(the)h(arra)m(y)f(has)g(an)m(y)g
+(set)g(elemen)m(ts.)53 b(Bash-5.2)810 4105 y(will)31
+b(lo)s(ok)g(for)f(and)g(rep)s(ort)f(on)i(a)f(k)m(ey)i(named)d(`)p
+Ft(@)p Fu(')705 4239 y Fq(\017)60 b Fu(the)40 b($)p Fi({)p
+Fr(parameter)7 b Fu([:]=)p Fr(v)-5 b(alue)5 b Fi(})42
+b Fu(w)m(ord)e(expansion)f(will)i(return)d Fr(v)-5 b(alue)p
+Fu(,)43 b(b)s(efore)d(an)m(y)810 4349 y(v)-5 b(ariable-sp)s(eci\014c)34
+b(transformations)f(ha)m(v)m(e)h(b)s(een)e(p)s(erformed)f(\(e.g.,)36
+b(con)m(v)m(erting)e(to)810 4458 y(lo)m(w)m(ercase\).)43
+b(Bash-5.2)32 b(will)f(return)e(the)i(\014nal)f(v)-5
+b(alue)31 b(assigned)f(to)i(the)e(v)-5 b(ariable.)705
+4593 y Fq(\017)60 b Fu(P)m(arsing)37 b(command)f(substitutions)g(will)g
+(b)s(eha)m(v)m(e)h(as)g(if)f(extended)g(glob)h(\(see)g(Sec-)810
+4702 y(tion)30 b(4.3.2)h([The)f(Shopt)f(Builtin],)h(page)h(71\))f(is)g
+(enabled,)g(so)g(that)g(parsing)f(a)h(com-)810 4812 y(mand)38
+b(substitution)g(con)m(taining)i(an)f(extglob)h(pattern)f(\(sa)m(y)-8
+b(,)42 b(as)d(part)g(of)g(a)g(shell)810 4922 y(function\))30
+b(will)h(not)g(fail.)41 b(This)30 b(assumes)g(the)h(in)m(ten)m(t)g(is)g
+(to)g(enable)g(extglob)g(b)s(efore)810 5031 y(the)i(command)f(is)g
+(executed)h(and)f(w)m(ord)g(expansions)g(are)h(p)s(erformed.)45
+b(It)33 b(will)f(fail)810 5141 y(at)42 b(w)m(ord)f(expansion)h(time)g
+(if)f(extglob)i(hasn't)e(b)s(een)g(enabled)h(b)m(y)f(the)h(time)g(the)
+810 5250 y(command)30 b(is)h(executed.)p eop end
+%%Page: 113 119
+TeXDict begin 113 118 bop 3614 -116 a Fu(113)150 299
y Fp(7)80 b(Job)54 b(Con)l(trol)150 518 y Fu(This)25
b(c)m(hapter)i(discusses)f(what)g(job)f(con)m(trol)j(is,)f(ho)m(w)f(it)
h(w)m(orks,)g(and)f(ho)m(w)g(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access)
@@ -15991,9 +16475,9 @@ h Ft(jobs)e Fu(command\),)k(the)d(curren)m(t)h(job)f(is)g(alw)m(a)m(ys)
i(\015agged)f(with)f(a)h(`)p Ft(+)p Fu(',)i(and)d(the)150
5340 y(previous)30 b(job)g(with)g(a)h(`)p Ft(-)p Fu('.)p
eop end
-%%Page: 108 114
-TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(7:)41
-b(Job)30 b(Con)m(trol)2526 b(108)275 299 y(A)38 b(job)g(ma)m(y)h(also)g
+%%Page: 114 120
+TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2526 b(114)275 299 y(A)38 b(job)g(ma)m(y)h(also)g
(b)s(e)f(referred)f(to)j(using)d(a)i(pre\014x)e(of)i(the)f(name)h(used)
e(to)i(start)g(it,)i(or)e(using)f(a)150 408 y(substring)g(that)j(app)s
(ears)e(in)g(its)h(command)f(line.)69 b(F)-8 b(or)41
@@ -16019,13 +16503,13 @@ g(to)g(not)g(in)m(terrupt)150 1439 y(an)m(y)k(other)f(output.)40
b(If)28 b(the)g Ft(-b)g Fu(option)g(to)h(the)g Ft(set)e
Fu(builtin)h(is)g(enabled,)h(Bash)g(rep)s(orts)e(suc)m(h)h(c)m(hanges)
150 1548 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g
-(Builtin],)i(page)f(62\).)40 b(An)m(y)24 b(trap)f(on)h
+(Builtin],)i(page)f(67\).)40 b(An)m(y)24 b(trap)f(on)h
Ft(SIGCHLD)e Fu(is)i(executed)150 1658 y(for)30 b(eac)m(h)i(c)m(hild)e
(pro)s(cess)g(that)h(exits.)275 1789 y(If)25 b(an)h(attempt)h(to)g
(exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h
(running,)e(if)h(the)g Ft(checkjobs)150 1899 y Fu(option)e(is)f
(enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page)
-e(66\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150
+e(71\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150
2009 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f
(enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39
b(The)25 b Ft(jobs)150 2118 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f
@@ -16071,151 +16555,162 @@ b(The)30 b(options)g(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630
5340 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p
Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)p
eop end
-%%Page: 109 115
-TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(7:)41
-b(Job)30 b(Con)m(trol)2526 b(109)630 299 y Ft(-n)384
+%%Page: 115 121
+TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2526 b(115)630 299 y Ft(-n)384
b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e(jobs)h(that)g(ha)m
(v)m(e)i(c)m(hanged)e(status)h(since)1110 408 y(the)31
b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f(status.)630
-583 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f
+570 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f
Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)630
-757 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630
-931 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630
-1105 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g
+731 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630
+892 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630
+1053 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g
(restricted)h(to)g(information)f(ab)s(out)g(that)h(job.)37
-b(If)23 b Fr(jobsp)s(ec)630 1214 y Fu(is)30 b(not)h(supplied,)e(the)i
-(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1356 y(If)k(the)g
+b(If)23 b Fr(jobsp)s(ec)630 1163 y Fu(is)30 b(not)h(supplied,)e(the)i
+(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1298 y(If)k(the)g
Ft(-x)f Fu(option)i(is)f(supplied,)g Ft(jobs)f Fu(replaces)i(an)m(y)f
Fr(jobsp)s(ec)40 b Fu(found)34 b(in)h Fr(command)j Fu(or)630
-1466 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess)
+1408 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess)
h(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p
-Fu(,)630 1575 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f
-(its)g(exit)i(status.)150 1749 y Ft(kill)870 1891 y(kill)47
+Fu(,)630 1517 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f
+(its)g(exit)i(status.)150 1678 y Ft(kill)870 1814 y(kill)47
b([-s)g Fj(sigspec)p Ft(])e([-n)i Fj(signum)p Ft(])f([-)p
-Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 2001
-y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2143
+Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 1923
+y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2059
y Fu(Send)22 b(a)i(signal)g(sp)s(eci\014ed)f(b)m(y)g
Fr(sigsp)s(ec)29 b Fu(or)24 b Fr(sign)m(um)f Fu(to)h(the)g(pro)s(cess)f
-(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 2252 y(cation)k
+(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 2168 y(cation)k
Fr(jobsp)s(ec)j Fu(or)25 b(pro)s(cess)g Fm(id)h Fr(pid)p
Fu(.)38 b Fr(sigsp)s(ec)31 b Fu(is)25 b(either)h(a)g(case-insensitiv)m
-(e)i(signal)e(name)630 2362 y(suc)m(h)37 b(as)g Ft(SIGINT)f
+(e)i(signal)e(name)630 2278 y(suc)m(h)37 b(as)g Ft(SIGINT)f
Fu(\(with)h(or)g(without)g(the)g Ft(SIG)g Fu(pre\014x\))f(or)h(a)h
-(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 2471 y
+(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 2388 y
Fu(is)g(a)f(signal)i(n)m(um)m(b)s(er.)63 b(If)39 b Fr(sigsp)s(ec)44
b Fu(and)38 b Fr(sign)m(um)g Fu(are)h(not)g(presen)m(t,)h
-Ft(SIGTERM)d Fu(is)h(used.)630 2581 y(The)27 b Ft(-l)h
+Ft(SIGTERM)d Fu(is)h(used.)630 2497 y(The)27 b Ft(-l)h
Fu(option)g(lists)h(the)f(signal)h(names.)39 b(If)28
b(an)m(y)g(argumen)m(ts)h(are)f(supplied)f(when)g Ft(-l)g
-Fu(is)630 2690 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g
+Fu(is)630 2607 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g
(corresp)s(onding)f(to)i(the)f(argumen)m(ts)g(are)h(listed,)g(and)630
-2800 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p
-1796 2800 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s
-(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2910
+2716 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p
+1796 2716 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s
+(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2826
y(the)h(exit)h(status)g(of)f(a)h(pro)s(cess)e(terminated)i(b)m(y)f(a)h
(signal.)40 b(The)28 b Ft(-L)g Fu(option)g(is)g(equiv)-5
-b(alen)m(t)630 3019 y(to)34 b Ft(-l)p Fu(.)47 b(The)32
+b(alen)m(t)630 2935 y(to)34 b Ft(-l)p Fu(.)47 b(The)32
b(return)g(status)h(is)g(zero)g(if)g(at)g(least)h(one)f(signal)h(w)m
-(as)f(successfully)g(sen)m(t,)h(or)630 3129 y(non-zero)d(if)f(an)h
+(as)f(successfully)g(sen)m(t,)h(or)630 3045 y(non-zero)d(if)f(an)h
(error)f(o)s(ccurs)g(or)g(an)g(in)m(v)-5 b(alid)31 b(option)g(is)f
-(encoun)m(tered.)150 3303 y Ft(wait)870 3445 y(wait)47
+(encoun)m(tered.)150 3206 y Ft(wait)870 3342 y(wait)47
b([-fn])f([-p)h Fj(varname)p Ft(])e([)p Fj(jobspec)h
-Ft(or)h Fj(pid)g Ft(...)o(])630 3587 y Fu(W)-8 b(ait)28
+Ft(or)h Fj(pid)g Ft(...)o(])630 3477 y Fu(W)-8 b(ait)28
b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s(eci\014ed)g(b)m(y)g
(eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i Fu(or)d(job)g(sp)s
-(eci\014cation)630 3696 y Fr(jobsp)s(ec)40 b Fu(exits)35
+(eci\014cation)630 3587 y Fr(jobsp)s(ec)40 b Fu(exits)35
b(and)f(return)g(the)g(exit)i(status)f(of)g(the)g(last)g(command)f(w)m
-(aited)i(for.)53 b(If)35 b(a)630 3806 y(job)g(sp)s(ec)f(is)h(giv)m(en,)
+(aited)i(for.)53 b(If)35 b(a)630 3696 y(job)g(sp)s(ec)f(is)h(giv)m(en,)
i(all)f(pro)s(cesses)f(in)f(the)h(job)g(are)g(w)m(aited)h(for.)54
-b(If)35 b(no)f(argumen)m(ts)i(are)630 3915 y(giv)m(en,)28
+b(If)35 b(no)f(argumen)m(ts)i(are)630 3806 y(giv)m(en,)28
b Ft(wait)c Fu(w)m(aits)j(for)e(all)i(running)c(bac)m(kground)j(jobs)f
-(and)g(the)h(last-executed)h(pro)s(cess)630 4025 y(substitution,)37
+(and)g(the)h(last-executed)h(pro)s(cess)630 3915 y(substitution,)37
b(if)f(its)g(pro)s(cess)f(id)h(is)f(the)h(same)g(as)g
Fr($!)p Fu(,)i(and)d(the)h(return)f(status)h(is)g(zero.)630
-4134 y(If)h(the)h Ft(-n)f Fu(option)h(is)f(supplied,)i
-Ft(wait)d Fu(w)m(aits)j(for)e(a)h(single)g(job)f(from)g(the)h(list)g
-(of)g Fr(pids)630 4244 y Fu(or)31 b Fr(jobsp)s(ecs)k
-Fu(or,)d(if)f(no)g(argumen)m(ts)h(are)g(supplied,)e(an)m(y)i(job,)f(to)
-i(complete)f(and)f(returns)630 4354 y(its)36 b(exit)h(status.)56
-b(If)35 b(none)h(of)g(the)g(supplied)e(argumen)m(ts)i(is)f(a)h(c)m
-(hild)g(of)g(the)g(shell,)h(or)f(if)630 4463 y(no)31
-b(argumen)m(ts)g(are)g(supplied)f(and)g(the)h(shell)g(has)g(no)f(un)m
-(w)m(aited-for)i(c)m(hildren,)f(the)g(exit)630 4573 y(status)k(is)g
-(127.)55 b(If)34 b(the)h Ft(-p)g Fu(option)g(is)g(supplied,)f(the)h
-(pro)s(cess)g(or)f(job)h(iden)m(ti\014er)g(of)g(the)630
-4682 y(job)j(for)g(whic)m(h)f(the)i(exit)g(status)f(is)g(returned)f(is)
-h(assigned)h(to)g(the)f(v)-5 b(ariable)39 b Fr(v)-5 b(arname)630
-4792 y Fu(named)29 b(b)m(y)f(the)i(option)f(argumen)m(t.)41
-b(The)28 b(v)-5 b(ariable)30 b(will)g(b)s(e)e(unset)h(initially)-8
-b(,)31 b(b)s(efore)e(an)m(y)630 4902 y(assignmen)m(t.)76
-b(This)41 b(is)h(useful)f(only)h(when)f(the)h Ft(-n)f
-Fu(option)i(is)f(supplied.)74 b(Supplying)630 5011 y(the)39
-b Ft(-f)f Fu(option,)k(when)37 b(job)i(con)m(trol)h(is)f(enabled,)i
-(forces)e Ft(wait)e Fu(to)j(w)m(ait)g(for)e(eac)m(h)i
-Fr(pid)630 5121 y Fu(or)29 b Fr(jobsp)s(ec)34 b Fu(to)c(terminate)g(b)s
-(efore)f(returning)f(its)h(status,)h(in)m(tead)g(of)f(returning)f(when)
-g(it)630 5230 y(c)m(hanges)37 b(status.)58 b(If)35 b(neither)h
-Fr(jobsp)s(ec)41 b Fu(nor)36 b Fr(pid)i Fu(sp)s(eci\014es)e(an)g(activ)
-m(e)i(c)m(hild)e(pro)s(cess)g(of)630 5340 y(the)31 b(shell,)f(the)h
-(return)e(status)i(is)f(127.)p eop end
-%%Page: 110 116
-TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(7:)41
-b(Job)30 b(Con)m(trol)2526 b(110)150 299 y Ft(disown)870
-433 y(disown)46 b([-ar])g([-h])h([)p Fj(jobspec)f Ft(...)h(|)g
-Fj(pid)g Ft(...)g(])630 568 y Fu(Without)33 b(options,)h(remo)m(v)m(e)g
-(eac)m(h)f Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m
-(e)h(jobs.)47 b(If)32 b(the)h Ft(-h)630 677 y Fu(option)j(is)f(giv)m
-(en,)i(the)f(job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j
-(but)c(is)i(mark)m(ed)f(so)g(that)630 787 y Ft(SIGHUP)e
-Fu(is)j(not)f(sen)m(t)h(to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m
-(es)h(a)e Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40
-b Fu(is)c(not)630 897 y(presen)m(t,)41 b(and)d(neither)h(the)g
-Ft(-a)f Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g
-(curren)m(t)g(job)f(is)630 1006 y(used.)g(If)25 b(no)h
-Fr(jobsp)s(ec)k Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g
-(to)g(remo)m(v)m(e)h(or)e(mark)h(all)g(jobs;)630 1116
-y(the)31 b Ft(-r)e Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36
-b Fu(argumen)m(t)30 b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)
-150 1275 y Ft(suspend)870 1410 y(suspend)46 b([-f])630
-1544 y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m
-(til)h(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50
-b(A)33 b(login)630 1654 y(shell)28 b(cannot)g(b)s(e)f(susp)s(ended;)g
-(the)g Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o)m(v)m(erride)h
-(this)e(and)g(force)630 1763 y(the)k(susp)s(ension.)275
-1923 y(When)f(job)f(con)m(trol)j(is)e(not)h(activ)m(e,)i(the)d
+4025 y(If)h(the)h Ft(-n)f Fu(option)h(is)f(supplied,)i
+Ft(wait)d Fu(w)m(aits)j(for)e(a)h(single)g(job)f(from)h(the)f(list)i
+(of)e Fr(pid)t Fu(s)630 4134 y(or)31 b Fr(jobsp)s(ec)6
+b Fu(s)30 b(or,)i(if)f(no)g(argumen)m(ts)h(are)f(supplied,)g(an)m(y)g
+(job,)h(to)g(complete)h(and)d(returns)630 4244 y(its)36
+b(exit)h(status.)56 b(If)35 b(none)h(of)g(the)g(supplied)e(argumen)m
+(ts)i(is)f(a)h(c)m(hild)g(of)g(the)g(shell,)h(or)f(if)630
+4354 y(no)31 b(argumen)m(ts)g(are)g(supplied)f(and)g(the)h(shell)g(has)
+g(no)f(un)m(w)m(aited-for)i(c)m(hildren,)f(the)g(exit)630
+4463 y(status)k(is)g(127.)55 b(If)34 b(the)h Ft(-p)g
+Fu(option)g(is)g(supplied,)f(the)h(pro)s(cess)g(or)f(job)h(iden)m
+(ti\014er)g(of)g(the)630 4573 y(job)j(for)g(whic)m(h)f(the)i(exit)g
+(status)f(is)g(returned)f(is)h(assigned)h(to)g(the)f(v)-5
+b(ariable)39 b Fr(v)-5 b(arname)630 4682 y Fu(named)29
+b(b)m(y)f(the)i(option)f(argumen)m(t.)41 b(The)28 b(v)-5
+b(ariable)30 b(will)g(b)s(e)e(unset)h(initially)-8 b(,)31
+b(b)s(efore)e(an)m(y)630 4792 y(assignmen)m(t.)76 b(This)41
+b(is)h(useful)f(only)h(when)f(the)h Ft(-n)f Fu(option)i(is)f(supplied.)
+74 b(Supplying)630 4902 y(the)31 b Ft(-f)g Fu(option,)g(when)f(job)h
+(con)m(trol)i(is)e(enabled,)g(forces)g Ft(wait)f Fu(to)i(w)m(ait)g(for)
+f(eac)m(h)h Fr(pid)i Fu(or)630 5011 y Fr(jobsp)s(ec)40
+b Fu(to)d(terminate)f(b)s(efore)f(returning)g(its)h(status,)h(instead)f
+(of)f(returning)g(when)f(it)630 5121 y(c)m(hanges)j(status.)58
+b(If)35 b(neither)h Fr(jobsp)s(ec)41 b Fu(nor)36 b Fr(pid)i
+Fu(sp)s(eci\014es)e(an)g(activ)m(e)i(c)m(hild)e(pro)s(cess)g(of)630
+5230 y(the)28 b(shell,)h(the)e(return)g(status)h(is)g(127.)41
+b(If)27 b Ft(wait)g Fu(is)g(in)m(terrupted)g(b)m(y)h(a)g(signal,)h(the)
+f(return)630 5340 y(status)j(will)f(b)s(e)g(greater)i(than)e(128,)i(as)
+e(describ)s(ed)g(ab)s(o)m(v)m(e)h(\(see)h(Section)f(3.7.6)h([Signals],)
+p eop end
+%%Page: 116 122
+TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2526 b(116)630 299 y(page)33 b(45\).)48
+b(Otherwise,)32 b(the)h(return)e(status)i(is)f(the)g(exit)i(status)e
+(of)h(the)f(last)h(pro)s(cess)f(or)630 408 y(job)e(w)m(aited)h(for.)150
+568 y Ft(disown)870 702 y(disown)46 b([-ar])g([-h])h([)p
+Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 837
+y Fu(Without)33 b(options,)h(remo)m(v)m(e)g(eac)m(h)f
+Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m(e)h(jobs.)47
+b(If)32 b(the)h Ft(-h)630 946 y Fu(option)j(is)f(giv)m(en,)i(the)f(job)
+f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j(but)c(is)i(mark)m
+(ed)f(so)g(that)630 1056 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h(to)g
+(the)f(job)g(if)g(the)g(shell)h(receiv)m(es)h(a)e Ft(SIGHUP)p
+Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 b Fu(is)c(not)630
+1166 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f
+Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g
+(job)f(is)630 1275 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k
+Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m
+(e)h(or)e(mark)h(all)g(jobs;)630 1385 y(the)31 b Ft(-r)e
+Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30
+b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)150
+1544 y Ft(suspend)870 1679 y(suspend)46 b([-f])630 1813
+y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m(til)h
+(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50 b(A)33
+b(login)630 1923 y(shell,)25 b(or)f(a)g(shell)f(without)h(job)f(con)m
+(trol)i(enabled,)g(cannot)f(b)s(e)f(susp)s(ended;)h(the)g
+Ft(-f)e Fu(option)630 2032 y(can)35 b(b)s(e)g(used)f(to)i(o)m(v)m
+(erride)g(this)f(and)f(force)i(the)f(susp)s(ension.)53
+b(The)34 b(return)g(status)h(is)h(0)630 2142 y(unless)43
+b(the)g(shell)h(is)f(a)h(login)g(shell)g(or)f(job)g(con)m(trol)i(is)e
+(not)h(enabled)f(and)g Ft(-f)f Fu(is)i(not)630 2252 y(supplied.)275
+2411 y(When)30 b(job)f(con)m(trol)j(is)e(not)h(activ)m(e,)i(the)d
Ft(kill)f Fu(and)h Ft(wait)f Fu(builtins)g(do)h(not)h(accept)h
-Fr(jobsp)s(ec)j Fu(argu-)150 2032 y(men)m(ts.)41 b(They)30
+Fr(jobsp)s(ec)j Fu(argu-)150 2521 y(men)m(ts.)41 b(They)30
b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess)h Fm(id)p Fu(s.)150
-2273 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 b(ariables)150
-2457 y Ft(auto_resume)630 2567 y Fu(This)31 b(v)-5 b(ariable)32
+2761 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 b(ariables)150
+2946 y Ft(auto_resume)630 3055 y Fu(This)31 b(v)-5 b(ariable)32
b(con)m(trols)g(ho)m(w)g(the)f(shell)h(in)m(teracts)h(with)e(the)h
-(user)e(and)h(job)g(con)m(trol.)45 b(If)630 2677 y(this)28
+(user)e(and)h(job)g(con)m(trol.)45 b(If)630 3165 y(this)28
b(v)-5 b(ariable)30 b(exists)f(then)f(single)h(w)m(ord)f(simple)h
-(commands)f(without)g(redirections)i(are)630 2786 y(treated)h(as)g
+(commands)f(without)g(redirections)i(are)630 3274 y(treated)h(as)g
(candidates)f(for)g(resumption)g(of)g(an)g(existing)h(job.)41
-b(There)29 b(is)h(no)h(am)m(biguit)m(y)630 2896 y(allo)m(w)m(ed;)f(if)d
+b(There)29 b(is)h(no)h(am)m(biguit)m(y)630 3384 y(allo)m(w)m(ed;)f(if)d
(there)g(is)g(more)g(than)f(one)h(job)g(b)s(eginning)f(with)g(the)h
-(string)g(t)m(yp)s(ed,)g(then)g(the)630 3005 y(most)j(recen)m(tly)h
+(string)g(t)m(yp)s(ed,)g(then)g(the)630 3494 y(most)j(recen)m(tly)h
(accessed)f(job)f(will)h(b)s(e)f(selected.)42 b(The)29
-b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630 3115
+b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630 3603
y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g(it.)41
b(If)27 b(this)h(v)-5 b(ariable)28 b(is)g(set)g(to)h(the)e(v)-5
-b(alue)630 3225 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f
+b(alue)630 3713 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f
(m)m(ust)h(matc)m(h)g(the)h(name)f(of)g(a)g(stopp)s(ed)f(job)h
-(exactly;)j(if)630 3334 y(set)29 b(to)h(`)p Ft(substring)p
+(exactly;)j(if)630 3822 y(set)29 b(to)h(`)p Ft(substring)p
Fu(',)d(the)i(string)g(supplied)e(needs)i(to)g(matc)m(h)h(a)f
-(substring)f(of)h(the)g(name)630 3444 y(of)38 b(a)f(stopp)s(ed)g(job.)
+(substring)f(of)h(the)g(name)630 3932 y(of)38 b(a)f(stopp)s(ed)g(job.)
62 b(The)37 b(`)p Ft(substring)p Fu(')e(v)-5 b(alue)38
b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630
-3553 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g
-(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(107\).)56
-b(If)34 b(set)i(to)g(an)m(y)630 3663 y(other)c(v)-5 b(alue,)32
+4042 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g
+(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(113\).)56
+b(If)34 b(set)i(to)g(an)m(y)630 4151 y(other)c(v)-5 b(alue,)32
b(the)g(supplied)e(string)i(m)m(ust)f(b)s(e)g(a)h(pre\014x)f(of)h(a)g
-(stopp)s(ed)e(job's)i(name;)g(this)630 3773 y(pro)m(vides)e
+(stopp)s(ed)e(job's)i(name;)g(this)630 4261 y(pro)m(vides)e
(functionalit)m(y)i(analogous)g(to)f(the)g(`)p Ft(\045)p
Fu(')f(job)g Fm(id)p Fu(.)p eop end
-%%Page: 111 117
-TeXDict begin 111 116 bop 3614 -116 a Fu(111)150 299
+%%Page: 117 123
+TeXDict begin 117 122 bop 3614 -116 a Fu(117)150 299
y Fp(8)80 b(Command)54 b(Line)f(Editing)150 635 y Fu(This)28
b(c)m(hapter)i(describ)s(es)e(the)h(basic)g(features)h(of)f(the)g
Fm(gnu)f Fu(command)h(line)g(editing)h(in)m(terface.)42
@@ -16228,7 +16723,7 @@ b(Com-)150 745 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g
(shell)f(in)m(v)m(o)s(cation.)45 b(Line)31 b(editing)150
1074 y(is)g(also)h(used)f(when)f(using)h(the)g Ft(-e)g
Fu(option)h(to)g(the)f Ft(read)f Fu(builtin)h(command)g(\(see)h
-(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(51\).)52
+(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(55\).)52
b(By)35 b(default,)g(the)f(line)h(editing)f(commands)g(are)h(similar)f
(to)h(those)f(of)g(Emacs.)150 1293 y(A)h(vi-st)m(yle)h(line)f(editing)g
(in)m(terface)h(is)e(also)i(a)m(v)-5 b(ailable.)55 b(Line)34
@@ -16236,7 +16731,7 @@ b(editing)h(can)g(b)s(e)f(enabled)g(at)h(an)m(y)g(time)150
1402 y(using)h(the)g Ft(-o)30 b(emacs)35 b Fu(or)h Ft(-o)30
b(vi)35 b Fu(options)i(to)g(the)f Ft(set)f Fu(builtin)h(command)g
(\(see)h(Section)g(4.3.1)h([The)150 1512 y(Set)31 b(Builtin],)g(page)g
-(62\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g
+(67\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g
Fu(or)i Ft(+o)e(vi)h Fu(options)h(to)g Ft(set)p Fu(.)150
1804 y Fs(8.1)68 b(In)l(tro)t(duction)45 b(to)g(Line)h(Editing)150
1963 y Fu(The)30 b(follo)m(wing)i(paragraphs)d(describ)s(e)h(the)h
@@ -16275,7 +16770,7 @@ b Ft(DEL)p Fu(,)f Ft(ESC)p Fu(,)g Ft(LFD)p Fu(,)g Ft(SPC)p
Fu(,)g Ft(RET)p Fu(,)150 3902 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g
(themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init)
h(\014le)f(\(see)i(Section)f(8.3)150 4012 y([Readline)f(Init)g(File],)i
-(page)e(114\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g
+(page)e(120\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g
Ft(LFD)f Fu(k)m(ey)-8 b(,)36 b(t)m(yping)e Ft(C-j)e Fu(will)i(pro)s
(duce)150 4122 y(the)d(desired)e(c)m(haracter.)43 b(The)30
b Ft(RET)f Fu(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h
@@ -16299,9 +16794,9 @@ Ft(RET)p Fu(.)39 b(Y)-8 b(ou)25 b(do)g(not)g(ha)m(v)m(e)h(to)g(b)s(e)e
Ft(RET)p Fu(;)i(the)g(en)m(tire)g(line)f(is)h(accepted)g(regardless)g
(of)f(the)h(lo)s(cation)h(of)e(the)h(cursor)150 5340
y(within)c(the)g(line.)p eop end
-%%Page: 112 118
-TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(112)150 299 y Fk(8.2.1)63
+%%Page: 118 124
+TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(118)150 299 y Fk(8.2.1)63
b(Readline)40 b(Bare)h(Essen)m(tials)150 446 y Fu(In)31
b(order)h(to)h(en)m(ter)g(c)m(haracters)g(in)m(to)g(the)g(line,)g
(simply)e(t)m(yp)s(e)i(them.)46 b(The)31 b(t)m(yp)s(ed)h(c)m(haracter)i
@@ -16338,39 +16833,39 @@ h(c)m(haracter.)150 2108 y Ft(DEL)e Fu(or)i Ft(Backspace)630
(cursor.)150 2826 y Fj(C-_)e Fu(or)i Fj(C-x)e(C-u)630
2936 y Fu(Undo)k(the)h(last)g(editing)g(command.)50 b(Y)-8
b(ou)34 b(can)f(undo)g(all)h(the)f(w)m(a)m(y)i(bac)m(k)f(to)g(an)g
-(empt)m(y)630 3045 y(line.)150 3215 y(\(Dep)s(ending)29
-b(on)h(y)m(our)f(con\014guration,)i(the)e Ft(Backspace)e
-Fu(k)m(ey)k(b)s(e)d(set)j(to)f(delete)h(the)e(c)m(haracter)i(to)g(the)
-150 3324 y(left)37 b(of)f(the)h(cursor)e(and)h(the)g
-Ft(DEL)g Fu(k)m(ey)h(set)f(to)h(delete)h(the)e(c)m(haracter)i
-(underneath)d(the)h(cursor,)i(lik)m(e)150 3434 y Fj(C-d)p
-Fu(,)30 b(rather)g(than)g(the)h(c)m(haracter)h(to)f(the)f(left)h(of)g
-(the)f(cursor.\))150 3640 y Fk(8.2.2)63 b(Readline)40
-b(Mo)m(v)m(emen)m(t)h(Commands)150 3787 y Fu(The)27 b(ab)s(o)m(v)m(e)i
-(table)g(describ)s(es)e(the)g(most)i(basic)f(k)m(eystrok)m(es)h(that)f
-(y)m(ou)g(need)g(in)f(order)g(to)i(do)e(editing)i(of)150
-3897 y(the)k(input)f(line.)49 b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m
-(enience,)j(man)m(y)d(other)g(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g
-(in)h(addition)150 4006 y(to)j Fj(C-b)p Fu(,)f Fj(C-f)p
-Fu(,)g Fj(C-d)p Fu(,)h(and)e Ft(DEL)p Fu(.)54 b(Here)35
-b(are)g(some)h(commands)e(for)h(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h
-(the)150 4116 y(line.)150 4286 y Fj(C-a)336 b Fu(Mo)m(v)m(e)32
-b(to)g(the)e(start)h(of)g(the)f(line.)150 4452 y Fj(C-e)336
-b Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150
-4618 y Fj(M-f)336 b Fu(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f
-(where)g(a)h(w)m(ord)f(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.)
-150 4785 y Fj(M-b)336 b Fu(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m
-(ord.)150 4951 y Fj(C-l)336 b Fu(Clear)31 b(the)f(screen,)h(reprin)m
-(ting)f(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275
-5121 y(Notice)c(ho)m(w)f Fj(C-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m
-(haracter,)j(while)d Fj(M-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m
-(ord.)39 b(It)24 b(is)h(a)g(lo)s(ose)150 5230 y(con)m(v)m(en)m(tion)32
+(empt)m(y)630 3045 y(line.)150 3215 y(\(Dep)s(ending)c(on)g(y)m(our)g
+(con\014guration,)h(the)f Ft(Backspace)d Fu(k)m(ey)k(migh)m(t)g(b)s(e)e
+(set)i(to)g(delete)g(the)f(c)m(haracter)150 3324 y(to)h(the)f(left)h
+(of)f(the)g(cursor)f(and)h(the)g Ft(DEL)f Fu(k)m(ey)i(set)g(to)f
+(delete)i(the)e(c)m(haracter)h(underneath)e(the)h(cursor,)150
+3434 y(lik)m(e)i Fj(C-d)p Fu(,)d(rather)i(than)f(the)g(c)m(haracter)i
+(to)f(the)g(left)g(of)g(the)f(cursor.\))150 3640 y Fk(8.2.2)63
+b(Readline)40 b(Mo)m(v)m(emen)m(t)h(Commands)150 3787
+y Fu(The)27 b(ab)s(o)m(v)m(e)i(table)g(describ)s(es)e(the)g(most)i
+(basic)f(k)m(eystrok)m(es)h(that)f(y)m(ou)g(need)g(in)f(order)g(to)i
+(do)e(editing)i(of)150 3897 y(the)k(input)f(line.)49
+b(F)-8 b(or)34 b(y)m(our)f(con)m(v)m(enience,)j(man)m(y)d(other)g
+(commands)f(ha)m(v)m(e)j(b)s(een)d(added)g(in)h(addition)150
+4006 y(to)j Fj(C-b)p Fu(,)f Fj(C-f)p Fu(,)g Fj(C-d)p
+Fu(,)h(and)e Ft(DEL)p Fu(.)54 b(Here)35 b(are)g(some)h(commands)e(for)h
+(mo)m(ving)h(more)f(rapidly)f(ab)s(out)h(the)150 4116
+y(line.)150 4286 y Fj(C-a)336 b Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h
+(of)g(the)f(line.)150 4452 y Fj(C-e)336 b Fu(Mo)m(v)m(e)32
+b(to)g(the)e(end)g(of)g(the)h(line.)150 4618 y Fj(M-f)336
+b Fu(Mo)m(v)m(e)32 b(forw)m(ard)e(a)h(w)m(ord,)f(where)g(a)h(w)m(ord)f
+(is)g(comp)s(osed)g(of)h(letters)h(and)d(digits.)150
+4785 y Fj(M-b)336 b Fu(Mo)m(v)m(e)32 b(bac)m(kw)m(ard)f(a)g(w)m(ord.)
+150 4951 y Fj(C-l)336 b Fu(Clear)31 b(the)f(screen,)h(reprin)m(ting)f
+(the)h(curren)m(t)f(line)h(at)g(the)f(top.)275 5121 y(Notice)c(ho)m(w)f
+Fj(C-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(c)m(haracter,)j(while)d
+Fj(M-f)e Fu(mo)m(v)m(es)j(forw)m(ard)e(a)h(w)m(ord.)39
+b(It)24 b(is)h(a)g(lo)s(ose)150 5230 y(con)m(v)m(en)m(tion)32
b(that)f(con)m(trol)g(k)m(eystrok)m(es)h(op)s(erate)e(on)g(c)m
(haracters)h(while)f(meta)h(k)m(eystrok)m(es)h(op)s(erate)e(on)150
5340 y(w)m(ords.)p eop end
-%%Page: 113 119
-TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(113)150 299 y Fk(8.2.3)63
+%%Page: 119 125
+TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(119)150 299 y Fk(8.2.3)63
b(Readline)40 b(Killing)i(Commands)150 446 y Fr(Killing)35
b Fu(text)28 b(means)e(to)h(delete)h(the)f(text)g(from)g(the)f(line,)i
(but)e(to)h(sa)m(v)m(e)h(it)g(a)m(w)m(a)m(y)g(for)e(later)i(use,)f
@@ -16398,14 +16893,14 @@ y Fj(M-d)336 b Fu(Kill)27 b(from)f(the)g(cursor)g(to)h(the)f(end)g(of)h
(the)f(curren)m(t)g(w)m(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)
g(to)g(the)630 1946 y(end)j(of)g(the)h(next)f(w)m(ord.)41
b(W)-8 b(ord)30 b(b)s(oundaries)f(are)i(the)g(same)f(as)h(those)g(used)
-f(b)m(y)g Fj(M-f)p Fu(.)150 2107 y Fj(M-DEL)240 b Fu(Kill)31
-b(from)f(the)h(cursor)f(the)g(start)h(of)g(the)g(curren)m(t)f(w)m(ord,)
-h(or,)f(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)i(the)630
-2217 y(start)39 b(of)f(the)h(previous)f(w)m(ord.)64 b(W)-8
-b(ord)39 b(b)s(oundaries)e(are)i(the)f(same)h(as)g(those)f(used)g(b)m
-(y)630 2326 y Fj(M-b)p Fu(.)150 2487 y Fj(C-w)336 b Fu(Kill)35
-b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)55
-b(This)34 b(is)h(di\013eren)m(t)h(than)e Fj(M-DEL)630
+f(b)m(y)g Fj(M-f)p Fu(.)150 2107 y Fj(M-DEL)240 b Fu(Kill)34
+b(from)f(the)g(cursor)g(to)h(the)g(start)g(of)g(the)f(curren)m(t)g(w)m
+(ord,)h(or,)h(if)e(b)s(et)m(w)m(een)h(w)m(ords,)g(to)630
+2217 y(the)28 b(start)g(of)g(the)g(previous)f(w)m(ord.)39
+b(W)-8 b(ord)28 b(b)s(oundaries)e(are)i(the)g(same)g(as)g(those)g(used)
+f(b)m(y)630 2326 y Fj(M-b)p Fu(.)150 2487 y Fj(C-w)336
+b Fu(Kill)35 b(from)g(the)g(cursor)f(to)i(the)f(previous)g(whitespace.)
+55 b(This)34 b(is)h(di\013eren)m(t)h(than)e Fj(M-DEL)630
2597 y Fu(b)s(ecause)c(the)h(w)m(ord)f(b)s(oundaries)f(di\013er.)275
2759 y(Here)42 b(is)f(ho)m(w)h(to)g Fr(y)m(ank)47 b Fu(the)42
b(text)g(bac)m(k)h(in)m(to)f(the)g(line.)74 b(Y)-8 b(anking)43
@@ -16444,13 +16939,13 @@ b(on)e(the)h(input)e(line.)150 4974 y Fk(8.2.5)63 b(Searc)m(hing)40
b(for)i(Commands)g(in)f(the)g(History)150 5121 y Fu(Readline)35
b(pro)m(vides)f(commands)g(for)g(searc)m(hing)h(through)e(the)i
(command)f(history)g(\(see)h(Section)g(9.1)150 5230 y([Bash)i(History)h
-(F)-8 b(acilities],)42 b(page)37 b(146\))i(for)d(lines)h(con)m(taining)
+(F)-8 b(acilities],)42 b(page)37 b(152\))i(for)d(lines)h(con)m(taining)
i(a)e(sp)s(eci\014ed)f(string.)60 b(There)36 b(are)i(t)m(w)m(o)150
5340 y(searc)m(h)31 b(mo)s(des:)40 b Fr(incremen)m(tal)35
b Fu(and)30 b Fr(non-incremen)m(tal)p Fu(.)p eop end
-%%Page: 114 120
-TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(114)275 299 y(Incremen)m(tal)26
+%%Page: 120 126
+TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(120)275 299 y(Incremen)m(tal)26
b(searc)m(hes)h(b)s(egin)e(b)s(efore)g(the)h(user)f(has)h(\014nished)e
(t)m(yping)i(the)g(searc)m(h)g(string.)39 b(As)26 b(eac)m(h)150
408 y(c)m(haracter)37 b(of)e(the)h(searc)m(h)g(string)f(is)h(t)m(yp)s
@@ -16504,8 +16999,8 @@ b(Readline)47 b(Init)e(File)150 3055 y Fu(Although)f(the)g(Readline)g
(eybindings)f(installed)g(b)m(y)150 3165 y(default,)26
b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)m(t)f(set)g(of)g(k)
m(eybindings.)38 b(An)m(y)25 b(user)f(can)h(customize)h(programs)150
-3274 y(that)45 b(use)f(Readline)h(b)m(y)f(putting)g(commands)g(in)g(an)
-g Fr(inputrc)49 b Fu(\014le,)g(con)m(v)m(en)m(tionally)e(in)d(his)g
+3274 y(that)39 b(use)g(Readline)g(b)m(y)f(putting)h(commands)f(in)g(an)
+h Fr(inputrc)k Fu(\014le,)e(con)m(v)m(en)m(tionally)h(in)c(their)h
(home)150 3384 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g
(\014le)g(is)g(tak)m(en)h(from)f(the)g(v)-5 b(alue)37
b(of)f(the)g(shell)h(v)-5 b(ariable)36 b Ft(INPUTRC)p
@@ -16516,7 +17011,7 @@ b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h(b)s(e)150
Fu(.)47 b(The)33 b Ft(bind)g Fu(builtin)g(command)h(can)g(also)h(b)s(e)
e(used)150 3713 y(to)e(set)g(Readline)g(k)m(eybindings)f(and)g(v)-5
b(ariables.)41 b(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)g
-(51.)275 3843 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline)g
+(55.)275 3843 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline)g
(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h(read,)g(and)f(the)
150 3953 y(k)m(ey)i(bindings)e(are)i(set.)275 4083 y(In)26
b(addition,)i(the)f Ft(C-x)i(C-r)d Fu(command)h(re-reads)g(this)f(init)
@@ -16529,7 +17024,7 @@ b(lines)h(are)150 4641 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
(a)g(`)p Ft(#)p Fu(')g(are)h(commen)m(ts.)73 b(Lines)41
b(b)s(eginning)f(with)g(a)i(`)p Ft($)p Fu(')f(indicate)150
4750 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g
-([Conditional)g(Init)e(Constructs],)j(page)e(122\).)64
+([Conditional)g(Init)e(Constructs],)j(page)e(129\).)64
b(Other)150 4860 y(lines)31 b(denote)g(v)-5 b(ariable)31
b(settings)g(and)f(k)m(ey)h(bindings.)150 5011 y(V)-8
b(ariable)32 b(Settings)630 5121 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
@@ -16538,632 +17033,707 @@ b(ariable)32 b(Settings)630 5121 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
b(in)f(Readline)i(using)e(the)g Ft(set)g Fu(command)g(within)g(the)h
(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5340 y(is)d(simple:)p
eop end
-%%Page: 115 121
-TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(115)870 299 y Ft(set)47
-b Fj(variable)e(value)630 436 y Fu(Here,)29 b(for)e(example,)h(is)g(ho)
+%%Page: 121 127
+TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(121)870 299 y Ft(set)47
+b Fj(variable)e(value)630 432 y Fu(Here,)29 b(for)e(example,)h(is)g(ho)
m(w)f(to)h(c)m(hange)g(from)f(the)g(default)h(Emacs-lik)m(e)h(k)m(ey)f
-(binding)e(to)630 545 y(use)k Ft(vi)g Fu(line)h(editing)g(commands:)870
-682 y Ft(set)47 b(editing-mode)d(vi)630 819 y Fu(V)-8
+(binding)e(to)630 542 y(use)k Ft(vi)g Fu(line)h(editing)g(commands:)870
+675 y Ft(set)47 b(editing-mode)d(vi)630 808 y Fu(V)-8
b(ariable)36 b(names)f(and)g(v)-5 b(alues,)36 b(where)f(appropriate,)h
-(are)g(recognized)g(without)f(regard)630 929 y(to)c(case.)42
+(are)g(recognized)g(without)f(regard)630 917 y(to)c(case.)42
b(Unrecognized)31 b(v)-5 b(ariable)31 b(names)g(are)f(ignored.)630
-1066 y(Bo)s(olean)c(v)-5 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f
+1050 y(Bo)s(olean)c(v)-5 b(ariables)26 b(\(those)g(that)g(can)f(b)s(e)f
(set)i(to)g(on)f(or)g(o\013)7 b(\))25 b(are)h(set)f(to)h(on)f(if)g(the)
-g(v)-5 b(alue)26 b(is)630 1176 y(n)m(ull)e(or)g(empt)m(y)-8
+g(v)-5 b(alue)26 b(is)630 1160 y(n)m(ull)e(or)g(empt)m(y)-8
b(,)27 b Fr(on)d Fu(\(case-insensitiv)m(e\),)29 b(or)24
b(1.)39 b(An)m(y)25 b(other)f(v)-5 b(alue)25 b(results)f(in)g(the)g(v)
--5 b(ariable)630 1285 y(b)s(eing)30 b(set)h(to)g(o\013.)630
-1422 y(The)37 b Ft(bind)30 b(-V)37 b Fu(command)g(lists)i(the)f(curren)
+-5 b(ariable)630 1270 y(b)s(eing)30 b(set)h(to)g(o\013.)630
+1403 y(The)37 b Ft(bind)30 b(-V)37 b Fu(command)g(lists)i(the)f(curren)
m(t)f(Readline)i(v)-5 b(ariable)38 b(names)g(and)f(v)-5
-b(alues.)630 1532 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)
-g(51.)630 1669 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g
+b(alues.)630 1512 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)
+g(55.)630 1645 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g
(is)g(c)m(hangeable)j(with)d(the)g(follo)m(wing)i(v)-5
-b(ariables.)630 1833 y Ft(bell-style)1110 1943 y Fu(Con)m(trols)44
-b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m(ts)f(to)h(ring)e(the)h
-(termi-)1110 2052 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p
-Ft(none)p Fu(',)g(Readline)g(nev)m(er)g(rings)e(the)i(b)s(ell.)61
-b(If)36 b(set)i(to)1110 2162 y(`)p Ft(visible)p Fu(',)32
-b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g(one)g(is)g(a)m(v)-5
-b(ailable.)51 b(If)33 b(set)g(to)1110 2271 y(`)p Ft(audible)p
-Fu(')j(\(the)i(default\),)i(Readline)e(attempts)g(to)h(ring)e(the)g
-(terminal's)1110 2381 y(b)s(ell.)630 2545 y Ft(bind-tty-special-chars)
-1110 2655 y Fu(If)e(set)g(to)h(`)p Ft(on)p Fu(')f(\(the)g(default\),)i
-(Readline)f(attempts)g(to)g(bind)d(the)i(con)m(trol)1110
-2765 y(c)m(haracters)30 b(treated)g(sp)s(ecially)g(b)m(y)f(the)g(k)m
-(ernel's)h(terminal)f(driv)m(er)g(to)h(their)1110 2874
-y(Readline)h(equiv)-5 b(alen)m(ts.)630 3039 y Ft(blink-matching-paren)
-1110 3148 y Fu(If)36 b(set)g(to)h(`)p Ft(on)p Fu(',)h(Readline)f
-(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j(the)f(cursor)e(to)i(an)1110
-3258 y(op)s(ening)k(paren)m(thesis)h(when)f(a)h(closing)h(paren)m
-(thesis)e(is)h(inserted.)74 b(The)1110 3367 y(default)31
-b(is)f(`)p Ft(off)p Fu('.)630 3532 y Ft(colored-completion-prefi)o(x)
-1110 3641 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)g(when)e(listing)i
-(completions,)h(Readline)f(displa)m(ys)g(the)f(com-)1110
-3751 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s(ossible)f
-(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110
-3861 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g
-(v)-5 b(alue)40 b(of)g(the)g Ft(LS_COLORS)1110 3970 y
-Fu(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30
-b(default)h(is)f(`)p Ft(off)p Fu('.)630 4134 y Ft(colored-stats)1110
-4244 y Fu(If)c(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(displa)m(ys)g
-(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110
-4354 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
+b(ariables.)630 1802 y Ft(active-region-start-colo)o(r)1110
+1911 y Fu(A)27 b(string)f(v)-5 b(ariable)27 b(that)g(con)m(trols)h(the)
+f(text)g(color)h(and)e(bac)m(kground)g(when)1110 2021
+y(displa)m(ying)50 b(the)f(text)h(in)f(the)h(activ)m(e)h(region)f
+(\(see)g(the)g(description)f(of)1110 2131 y Ft(enable-active-region)25
+b Fu(b)s(elo)m(w\).)43 b(This)30 b(string)h(m)m(ust)f(not)h(tak)m(e)i
+(up)d(an)m(y)1110 2240 y(ph)m(ysical)25 b(c)m(haracter)h(p)s(ositions)f
+(on)g(the)f(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(consist)h(only)
+1110 2350 y(of)37 b(terminal)g(escap)s(e)g(sequences.)61
+b(It)36 b(is)h(output)g(to)g(the)g(terminal)g(b)s(efore)1110
+2459 y(displa)m(ying)h(the)f(text)i(in)e(the)h(activ)m(e)h(region.)63
+b(This)37 b(v)-5 b(ariable)38 b(is)f(reset)h(to)1110
+2569 y(the)29 b(default)g(v)-5 b(alue)29 b(whenev)m(er)f(the)h
+(terminal)g(t)m(yp)s(e)g(c)m(hanges.)41 b(The)28 b(default)1110
+2679 y(v)-5 b(alue)30 b(is)f(the)g(string)g(that)h(puts)e(the)i
+(terminal)f(in)g(standout)g(mo)s(de,)g(as)h(ob-)1110
+2788 y(tained)40 b(from)f(the)h(terminal's)g(terminfo)g(description.)68
+b(A)40 b(sample)f(v)-5 b(alue)1110 2898 y(migh)m(t)31
+b(b)s(e)f(`)p Ft(\\e[01;33m)p Fu('.)630 3054 y Ft
+(active-region-end-color)1110 3164 y Fu(A)48 b(string)g(v)-5
+b(ariable)48 b(that)h Ft(")p Fu(undo)s(es)p Ft(")d Fu(the)i(e\013ects)h
+(of)f Ft(active-region-)1110 3273 y(start-color)36 b
+Fu(and)i(restores)h Ft(")p Fu(normal)p Ft(")f Fu(terminal)h(displa)m(y)
+g(app)s(earance)1110 3383 y(after)26 b(displa)m(ying)h(text)f(in)g(the)
+g(activ)m(e)i(region.)40 b(This)25 b(string)h(m)m(ust)f(not)h(tak)m(e)
+1110 3493 y(up)e(an)m(y)h(ph)m(ysical)h(c)m(haracter)h(p)s(ositions)d
+(on)h(the)h(displa)m(y)-8 b(,)27 b(so)e(it)g(should)f(con-)1110
+3602 y(sist)29 b(only)h(of)f(terminal)h(escap)s(e)f(sequences.)41
+b(It)29 b(is)g(output)g(to)h(the)f(terminal)1110 3712
+y(after)36 b(displa)m(ying)g(the)g(text)h(in)e(the)h(activ)m(e)i
+(region.)58 b(This)34 b(v)-5 b(ariable)37 b(is)f(re-)1110
+3821 y(set)e(to)g(the)g(default)g(v)-5 b(alue)34 b(whenev)m(er)f(the)h
+(terminal)g(t)m(yp)s(e)f(c)m(hanges.)51 b(The)1110 3931
+y(default)38 b(v)-5 b(alue)39 b(is)f(the)h(string)f(that)h(restores)f
+(the)h(terminal)f(from)g(stand-)1110 4041 y(out)30 b(mo)s(de,)f(as)g
+(obtained)h(from)f(the)g(terminal's)h(terminfo)f(description.)41
+b(A)1110 4150 y(sample)31 b(v)-5 b(alue)30 b(migh)m(t)h(b)s(e)f(`)p
+Ft(\\e[0m)p Fu('.)630 4307 y Ft(bell-style)1110 4416
+y Fu(Con)m(trols)44 b(what)g(happ)s(ens)e(when)h(Readline)i(w)m(an)m
+(ts)f(to)h(ring)e(the)h(termi-)1110 4526 y(nal)37 b(b)s(ell.)61
+b(If)37 b(set)h(to)g(`)p Ft(none)p Fu(',)g(Readline)g(nev)m(er)g(rings)
+e(the)i(b)s(ell.)61 b(If)36 b(set)i(to)1110 4635 y(`)p
+Ft(visible)p Fu(',)32 b(Readline)i(uses)f(a)g(visible)g(b)s(ell)g(if)g
+(one)g(is)g(a)m(v)-5 b(ailable.)51 b(If)33 b(set)g(to)1110
+4745 y(`)p Ft(audible)p Fu(')j(\(the)i(default\),)i(Readline)e
+(attempts)g(to)h(ring)e(the)g(terminal's)1110 4855 y(b)s(ell.)630
+5011 y Ft(bind-tty-special-chars)1110 5121 y Fu(If)e(set)g(to)h(`)p
+Ft(on)p Fu(')f(\(the)g(default\),)i(Readline)f(attempts)g(to)g(bind)d
+(the)i(con)m(trol)1110 5230 y(c)m(haracters)30 b(treated)g(sp)s
+(ecially)g(b)m(y)f(the)g(k)m(ernel's)h(terminal)f(driv)m(er)g(to)h
+(their)1110 5340 y(Readline)h(equiv)-5 b(alen)m(ts.)p
+eop end
+%%Page: 122 128
+TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(122)630 299 y Ft
+(blink-matching-paren)1110 408 y Fu(If)36 b(set)g(to)h(`)p
+Ft(on)p Fu(',)h(Readline)f(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j
+(the)f(cursor)e(to)i(an)1110 518 y(op)s(ening)k(paren)m(thesis)h(when)f
+(a)h(closing)h(paren)m(thesis)e(is)h(inserted.)74 b(The)1110
+628 y(default)31 b(is)f(`)p Ft(off)p Fu('.)630 792 y
+Ft(colored-completion-prefi)o(x)1110 902 y Fu(If)f(set)h(to)g(`)p
+Ft(on)p Fu(',)g(when)e(listing)i(completions,)h(Readline)f(displa)m(ys)
+g(the)f(com-)1110 1011 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s
+(ossible)f(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110
+1121 y(The)f(color)h(de\014nitions)f(are)h(tak)m(en)g(from)f(the)g(v)-5
+b(alue)26 b(of)g(the)f Ft(LS_COLORS)e Fu(en-)1110 1230
+y(vironmen)m(t)34 b(v)-5 b(ariable.)50 b(If)33 b(there)h(is)g(a)f
+(color)i(de\014nition)e(in)g Ft(LS_COLORS)e Fu(for)1110
+1340 y(the)22 b(custom)g(su\016x)f(`)p Ft(readline-colored-complet)o
+(ion)o(-pre)o(fix)p Fu(',)c(Read-)1110 1450 y(line)24
+b(uses)e(this)i(color)g(for)f(the)h(common)f(pre\014x)f(instead)i(of)f
+(its)h(default.)38 b(The)1110 1559 y(default)31 b(is)f(`)p
+Ft(off)p Fu('.)630 1724 y Ft(colored-stats)1110 1833
+y Fu(If)c(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(displa)m(ys)g(p)s
+(ossible)f(completions)h(using)f(di\013eren)m(t)1110
+1943 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
b(The)38 b(color)j(de\014nitions)d(are)i(tak)m(en)1110
-4463 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Ft(LS_COLORS)d
+2052 y(from)24 b(the)h(v)-5 b(alue)25 b(of)g(the)g Ft(LS_COLORS)d
Fu(en)m(vironmen)m(t)j(v)-5 b(ariable.)40 b(The)24 b(default)1110
-4573 y(is)30 b(`)p Ft(off)p Fu('.)630 4737 y Ft(comment-begin)1110
-4847 y Fu(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of)
-h(the)h(line)f(when)g(the)1110 4956 y Ft(insert-comment)26
+2162 y(is)30 b(`)p Ft(off)p Fu('.)630 2326 y Ft(comment-begin)1110
+2436 y Fu(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of)
+h(the)h(line)f(when)g(the)1110 2545 y Ft(insert-comment)26
b Fu(command)31 b(is)f(executed.)42 b(The)30 b(default)g(v)-5
-b(alue)31 b(is)f Ft("#")p Fu(.)630 5121 y Ft(completion-display-width)
-1110 5230 y Fu(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used)
-g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 5340
+b(alue)31 b(is)f Ft("#")p Fu(.)630 2710 y Ft(completion-display-width)
+1110 2819 y Fu(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used)
+g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 2929
y(when)28 b(p)s(erforming)g(completion.)41 b(The)29 b(v)-5
-b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)p
-eop end
-%%Page: 116 122
-TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(116)1110 299 y(0)27
-b(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39
+b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)1110
+3039 y(0)e(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39
b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110
-408 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
+3148 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
(line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630
-587 y Ft(completion-ignore-case)1110 696 y Fu(If)d(set)h(to)g(`)p
+3313 y Ft(completion-ignore-case)1110 3422 y Fu(If)d(set)h(to)g(`)p
Ft(on)p Fu(',)g(Readline)g(p)s(erforms)e(\014lename)h(matc)m(hing)i
-(and)e(completion)1110 806 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)40
-b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p
-Fu('.)630 984 y Ft(completion-map-case)1110 1093 y Fu(If)22
+(and)e(completion)1110 3532 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)
+40 b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p
+Fu('.)630 3696 y Ft(completion-map-case)1110 3806 y Fu(If)22
b(set)g(to)h(`)p Ft(on)p Fu(',)h(and)e Fr(completion-ignore-case)31
-b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 1203 y(h)m(yphens)29
+b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 3915 y(h)m(yphens)29
b(\(`)p Ft(-)p Fu('\))j(and)e(underscores)g(\(`)p Ft(_)p
Fu('\))i(as)f(equiv)-5 b(alen)m(t)32 b(when)e(p)s(erforming)1110
-1313 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
-(completion.)85 b(The)44 b(default)1110 1422 y(v)-5 b(alue)31
-b(is)f(`)p Ft(off)p Fu('.)630 1600 y Ft(completion-prefix-displa)o
-(y-le)o(ngth)1110 1710 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f
+4025 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 4134 y(v)-5 b(alue)31
+b(is)f(`)p Ft(off)p Fu('.)630 4299 y Ft(completion-prefix-displa)o
+(y-le)o(ngth)1110 4408 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f
(the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110
-1819 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
-(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 1929
+4518 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
+(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 4628
y(v)-5 b(alue)26 b(greater)h(than)e(zero,)j(common)e(pre\014xes)e
-(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 2039
+(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 4737
y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)
-f(completions.)630 2217 y Ft(completion-query-items)1110
-2326 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h
-(that)g(determines)f(when)f(the)i(user)1110 2436 y(is)43
+f(completions.)630 4902 y Ft(completion-query-items)1110
+5011 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h
+(that)g(determines)f(when)f(the)i(user)1110 5121 y(is)43
b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s(ossibilities)g(should)f(b)
-s(e)g(displa)m(y)m(ed.)77 b(If)1110 2545 y(the)29 b(n)m(um)m(b)s(er)f
+s(e)g(displa)m(y)m(ed.)77 b(If)1110 5230 y(the)29 b(n)m(um)m(b)s(er)f
(of)h(p)s(ossible)g(completions)h(is)f(greater)h(than)f(or)g(equal)g
-(to)h(this)1110 2655 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g
-(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)1110
-2765 y(them;)33 b(otherwise,)f(they)g(are)g(simply)g(listed.)45
-b(This)31 b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110
-2874 y(to)39 b(an)f(in)m(teger)i(v)-5 b(alue)39 b(greater)g(than)f(or)h
-(equal)g(to)g(0.)65 b(A)38 b(negativ)m(e)i(v)-5 b(alue)1110
-2984 y(means)30 b(Readline)h(should)f(nev)m(er)g(ask.)41
-b(The)30 b(default)h(limit)g(is)f Ft(100)p Fu(.)630 3162
-y Ft(convert-meta)1110 3271 y Fu(If)22 b(set)g(to)h(`)p
+(to)h(this)1110 5340 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g
+(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)p
+eop end
+%%Page: 123 129
+TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(123)1110 299 y(them;)33
+b(otherwise,)f(they)g(are)g(simply)g(listed.)45 b(This)31
+b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110 408
+y(to)43 b(an)e(in)m(teger)j(v)-5 b(alue)42 b(greater)h(than)f(or)g
+(equal)g(to)h(zero.)76 b(A)42 b(zero)g(v)-5 b(alue)1110
+518 y(means)40 b(Readline)h(should)f(nev)m(er)g(ask;)46
+b(negativ)m(e)d(v)-5 b(alues)41 b(are)f(treated)i(as)1110
+628 y(zero.)g(The)29 b(default)i(limit)g(is)g Ft(100)p
+Fu(.)630 774 y Ft(convert-meta)1110 883 y Fu(If)22 b(set)g(to)h(`)p
Ft(on)p Fu(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m(haracters)f(with)
-f(the)g(eigh)m(th)h(bit)f(set)1110 3381 y(to)33 b(an)e
+f(the)g(eigh)m(th)h(bit)f(set)1110 993 y(to)33 b(an)e
Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g(stripping)f(the)h(eigh)m
-(th)h(bit)f(and)f(pre\014xing)1110 3491 y(an)24 b Ft(ESC)g
+(th)h(bit)f(and)f(pre\014xing)1110 1103 y(an)24 b Ft(ESC)g
Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f(to)g(a)g(meta-pre\014xed)f
-(k)m(ey)h(sequence.)1110 3600 y(The)i(default)h(v)-5
+(k)m(ey)h(sequence.)1110 1212 y(The)i(default)h(v)-5
b(alue)28 b(is)f(`)p Ft(on)p Fu(',)i(but)d(will)i(b)s(e)f(set)h(to)g(`)
p Ft(off)p Fu(')g(if)f(the)h(lo)s(cale)h(is)f(one)1110
-3710 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
-3888 y Ft(disable-completion)1110 3998 y Fu(If)k(set)h(to)h(`)p
-Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60
-b(Completion)1110 4107 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
-(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110
-4217 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p
-Ft(off)p Fu('.)630 4395 y Ft(echo-control-characters)1110
-4504 y Fu(When)f(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h
-(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 4614
-y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d
-(to)j(a)f(signal)g(generated)1110 4724 y(from)e(the)g(k)m(eyb)s(oard.)
-41 b(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 4902
-y Ft(editing-mode)1110 5011 y Fu(The)d Ft(editing-mode)e
-Fu(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k)
-m(ey)i(bind-)1110 5121 y(ings)25 b(is)g(used.)38 b(By)26
-b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,)
-1110 5230 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
-h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110
-5340 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p
-Ft(vi)p Fu('.)p eop end
-%%Page: 117 123
-TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(117)630 299 y Ft
-(emacs-mode-string)1110 408 y Fu(If)33 b(the)h Fr(sho)m(w-mo)s
+1322 y(that)21 b(con)m(tains)h(eigh)m(t-bit)h(c)m(haracters.)39
+b(This)20 b(v)-5 b(ariable)21 b(is)g(dep)s(enden)m(t)f(on)h(the)1110
+1431 y Ft(LC_CTYPE)26 b Fu(lo)s(cale)31 b(category)-8
+b(,)31 b(and)d(ma)m(y)h(c)m(hange)h(if)e(the)h(lo)s(cale)h(is)f(c)m
+(hanged.)630 1577 y Ft(disable-completion)1110 1687 y
+Fu(If)36 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f
+(w)m(ord)h(completion.)60 b(Completion)1110 1797 y(c)m(haracters)28
+b(will)e(b)s(e)f(inserted)h(in)m(to)h(the)g(line)f(as)g(if)g(they)h
+(had)e(b)s(een)g(mapp)s(ed)1110 1906 y(to)31 b Ft(self-insert)p
+Fu(.)38 b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630
+2052 y Ft(echo-control-characters)1110 2162 y Fu(When)f(set)h(to)g(`)p
+Ft(on)p Fu(',)f(on)g(op)s(erating)h(systems)f(that)h(indicate)g(they)g
+(supp)s(ort)1110 2271 y(it,)e(Readline)g(ec)m(ho)s(es)g(a)f(c)m
+(haracter)i(corresp)s(onding)d(to)i(a)f(signal)h(generated)1110
+2381 y(from)h(the)g(k)m(eyb)s(oard.)41 b(The)30 b(default)g(is)h(`)p
+Ft(on)p Fu('.)630 2527 y Ft(editing-mode)1110 2637 y
+Fu(The)d Ft(editing-mode)e Fu(v)-5 b(ariable)29 b(con)m(trols)h(whic)m
+(h)e(default)h(set)h(of)e(k)m(ey)i(bind-)1110 2746 y(ings)25
+b(is)g(used.)38 b(By)26 b(default,)g(Readline)g(starts)f(up)f(in)h
+(Emacs)g(editing)h(mo)s(de,)1110 2856 y(where)j(the)g(k)m(eystrok)m(es)
+i(are)e(most)h(similar)f(to)h(Emacs.)40 b(This)29 b(v)-5
+b(ariable)30 b(can)1110 2966 y(b)s(e)g(set)h(to)g(either)g(`)p
+Ft(emacs)p Fu(')e(or)h(`)p Ft(vi)p Fu('.)630 3112 y Ft
+(emacs-mode-string)1110 3221 y Fu(If)j(the)h Fr(sho)m(w-mo)s
(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f
-(is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g
-(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
-628 y(emacs)g(editing)h(mo)s(de)e(is)h(activ)m(e.)40
+(is)h(dis-)1110 3331 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)
+g(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
+3440 y(emacs)g(editing)h(mo)s(de)e(is)h(activ)m(e.)40
b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f(lik)m(e)h(a)h(k)m(ey)f
-(bind-)1110 737 y(ing,)27 b(so)f(the)f(standard)g(set)h(of)f(meta-)i
+(bind-)1110 3550 y(ing,)27 b(so)f(the)f(standard)g(set)h(of)f(meta-)i
(and)e(con)m(trol)i(pre\014xes)d(and)h(bac)m(kslash)1110
-847 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41
+3660 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41
b(Use)25 b(the)f(`)p Ft(\\1)p Fu(')f(and)h(`)p Ft(\\2)p
-Fu(')g(escap)s(es)g(to)g(b)s(egin)1110 956 y(and)37 b(end)g(sequences)h
-(of)f(non-prin)m(ting)h(c)m(haracters,)j(whic)m(h)c(can)h(b)s(e)f(used)
-1110 1066 y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m(trol)h(sequence)f
-(in)m(to)g(the)f(mo)s(de)g(string.)61 b(The)1110 1176
-y(default)31 b(is)f(`)p Ft(@)p Fu('.)630 1332 y Ft
-(enable-bracketed-paste)1110 1442 y Fu(When)24 b(set)h(to)h(`)p
-Ft(On)p Fu(',)g(Readline)f(will)g(con\014gure)f(the)h(terminal)g(in)f
-(a)h(w)m(a)m(y)g(that)1110 1551 y(will)k(enable)f(it)h(to)g(insert)g
-(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e(as)i(a)f
-(single)1110 1661 y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g
-(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110
-1771 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49
-b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110
-1880 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41
-b(The)29 b(default)i(is)f(`)p Ft(On)p Fu('.)630 2037
-y Ft(enable-keypad)1110 2146 y Fu(When)23 b(set)h(to)g(`)p
-Ft(on)p Fu(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f
-(application)i(k)m(eypad)1110 2256 y(when)h(it)h(is)f(called.)41
-b(Some)27 b(systems)f(need)h(this)f(to)h(enable)g(the)g(arro)m(w)g(k)m
-(eys.)1110 2365 y(The)j(default)g(is)h(`)p Ft(off)p Fu('.)630
-2522 y Ft(enable-meta-key)1110 2632 y Fu(When)40 b(set)g(to)g(`)p
-Ft(on)p Fu(',)j(Readline)d(will)g(try)g(to)g(enable)g(an)m(y)g(meta)h
-(mo)s(di\014er)1110 2741 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h
-(supp)s(ort)d(when)h(it)h(is)g(called.)76 b(On)41 b(man)m(y)1110
-2851 y(terminals,)c(the)e(meta)h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)
-m(t-bit)j(c)m(haracters.)56 b(The)1110 2960 y(default)31
-b(is)f(`)p Ft(on)p Fu('.)630 3117 y Ft(expand-tilde)1110
-3226 y Fu(If)d(set)h(to)h(`)p Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f
-(p)s(erformed)f(when)h(Readline)h(attempts)1110 3336
-y(w)m(ord)i(completion.)42 b(The)30 b(default)g(is)h(`)p
-Ft(off)p Fu('.)630 3493 y Ft(history-preserve-point)1110
-3602 y Fu(If)41 b(set)h(to)h(`)p Ft(on)p Fu(',)i(the)c(history)h(co)s
-(de)g(attempts)h(to)f(place)h(the)f(p)s(oin)m(t)f(\(the)1110
-3712 y(curren)m(t)35 b(cursor)g(p)s(osition\))g(at)h(the)g(same)f(lo)s
-(cation)i(on)e(eac)m(h)h(history)g(line)1110 3821 y(retriev)m(ed)h
-(with)f Ft(previous-history)c Fu(or)37 b Ft(next-history)p
-Fu(.)55 b(The)36 b(default)1110 3931 y(is)30 b(`)p Ft(off)p
-Fu('.)630 4088 y Ft(history-size)1110 4197 y Fu(Set)39
-b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g(en)m(tries)h(sa)m
-(v)m(ed)g(in)f(the)g(history)1110 4307 y(list.)51 b(If)34
-b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f(en)m(tries)g(are)g
-(deleted)h(and)e(no)1110 4416 y(new)e(en)m(tries)i(are)f(sa)m(v)m(ed.)
-46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the)
-f(n)m(um)m(b)s(er)1110 4526 y(of)f(history)f(en)m(tries)h(is)g(not)g
-(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)
-1110 4635 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32
-b(an)h(attempt)h(is)f(made)g(to)h(set)f Fr(history-size)39
-b Fu(to)1110 4745 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34
-b(the)g(maxim)m(um)f(n)m(um)m(b)s(er)f(of)h(history)h(en)m(tries)g
-(will)1110 4855 y(b)s(e)c(set)h(to)g(500.)630 5011 y
-Ft(horizontal-scroll-mode)1110 5121 y Fu(This)k(v)-5
-b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f(`)p
-Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36
-b(it)g(to)h(`)p Ft(on)p Fu(')1110 5230 y(means)26 b(that)h(the)f(text)h
+Fu(')g(escap)s(es)g(to)g(b)s(egin)1110 3769 y(and)37
+b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m(haracters,)j(whic)m(h)c
+(can)h(b)s(e)f(used)1110 3879 y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m
+(trol)h(sequence)f(in)m(to)g(the)f(mo)s(de)g(string.)61
+b(The)1110 3988 y(default)31 b(is)f(`)p Ft(@)p Fu('.)630
+4134 y Ft(enable-active-region)1110 4244 y Fu(The)46
+b Fr(p)s(oin)m(t)j Fu(is)e(the)g(curren)m(t)f(cursor)g(p)s(osition,)52
+b(and)46 b Fr(mark)52 b Fu(refers)46 b(to)i(a)1110 4354
+y(sa)m(v)m(ed)37 b(cursor)f(p)s(osition)g(\(see)i(Section)f(8.4.1)h
+([Commands)d(F)-8 b(or)37 b(Mo)m(ving],)1110 4463 y(page)d(133\).)50
+b(The)33 b(text)h(b)s(et)m(w)m(een)f(the)g(p)s(oin)m(t)g(and)g(mark)g
+(is)g(referred)f(to)i(as)1110 4573 y(the)h Fr(region)p
+Fu(.)53 b(When)34 b(this)g(v)-5 b(ariable)36 b(is)e(set)h(to)g(`)p
+Ft(On)p Fu(',)h(Readline)f(allo)m(ws)g(cer-)1110 4682
+y(tain)30 b(commands)f(to)g(designate)i(the)e(region)h(as)f
+Fr(activ)m(e)p Fu(.)43 b(When)29 b(the)g(region)1110
+4792 y(is)g(activ)m(e,)j(Readline)e(highligh)m(ts)g(the)g(text)g(in)f
+(the)g(region)h(using)f(the)g(v)-5 b(alue)1110 4902 y(of)35
+b(the)g Ft(active-region-start-color)p Fu(,)30 b(whic)m(h)35
+b(defaults)g(to)h(the)f(string)1110 5011 y(that)23 b(enables)f(the)g
+(terminal's)h(standout)e(mo)s(de.)38 b(The)21 b(activ)m(e)k(region)d
+(sho)m(ws)1110 5121 y(the)32 b(text)h(inserted)f(b)m(y)g(brac)m(k)m
+(eted-paste)i(and)e(an)m(y)g(matc)m(hing)h(text)g(found)1110
+5230 y(b)m(y)f(incremen)m(tal)i(and)e(non-incremen)m(tal)i(history)e
+(searc)m(hes.)48 b(The)32 b(default)1110 5340 y(is)e(`)p
+Ft(On)p Fu('.)p eop end
+%%Page: 124 130
+TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(124)630 299 y Ft
+(enable-bracketed-paste)1110 408 y Fu(When)36 b(set)h(to)g(`)p
+Ft(On)p Fu(',)h(Readline)f(con\014gures)f(the)h(terminal)f(to)i(insert)
+e(eac)m(h)1110 518 y(paste)27 b(in)m(to)g(the)f(editing)h(bu\013er)e
+(as)h(a)h(single)g(string)f(of)g(c)m(haracters,)j(instead)1110
+628 y(of)d(treating)i(eac)m(h)g(c)m(haracter)f(as)g(if)f(it)h(had)f(b)s
+(een)f(read)i(from)e(the)i(k)m(eyb)s(oard.)1110 737 y(This)36
+b(is)h(called)h(putting)f(the)h(terminal)f(in)m(to)h
+Fr(brac)m(k)m(eted)h(paste)e(mo)s(de)5 b Fu(;)40 b(it)1110
+847 y(prev)m(en)m(ts)30 b(Readline)h(from)e(executing)i(an)m(y)f
+(editing)h(commands)e(b)s(ound)f(to)1110 956 y(k)m(ey)j(sequences)g
+(app)s(earing)f(in)g(the)g(pasted)h(text.)42 b(The)29
+b(default)i(is)f(`)p Ft(On)p Fu('.)630 1113 y Ft(enable-keypad)1110
+1223 y Fu(When)23 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g
+(try)f(to)h(enable)g(the)f(application)i(k)m(eypad)1110
+1332 y(when)h(it)h(is)f(called.)41 b(Some)27 b(systems)f(need)h(this)f
+(to)h(enable)g(the)g(arro)m(w)g(k)m(eys.)1110 1442 y(The)j(default)g
+(is)h(`)p Ft(off)p Fu('.)630 1598 y Ft(enable-meta-key)1110
+1708 y Fu(When)40 b(set)g(to)g(`)p Ft(on)p Fu(',)j(Readline)d(will)g
+(try)g(to)g(enable)g(an)m(y)g(meta)h(mo)s(di\014er)1110
+1817 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h(supp)s(ort)d(when)h(it)h
+(is)g(called.)76 b(On)41 b(man)m(y)1110 1927 y(terminals,)c(the)e(meta)
+h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)m(t-bit)j(c)m(haracters.)56
+b(The)1110 2037 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630
+2193 y Ft(expand-tilde)1110 2303 y Fu(If)d(set)h(to)h(`)p
+Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f(p)s(erformed)f(when)h
+(Readline)h(attempts)1110 2412 y(w)m(ord)i(completion.)42
+b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 2569
+y Ft(history-preserve-point)1110 2679 y Fu(If)41 b(set)h(to)h(`)p
+Ft(on)p Fu(',)i(the)c(history)h(co)s(de)g(attempts)h(to)f(place)h(the)f
+(p)s(oin)m(t)f(\(the)1110 2788 y(curren)m(t)35 b(cursor)g(p)s
+(osition\))g(at)h(the)g(same)f(lo)s(cation)i(on)e(eac)m(h)h(history)g
+(line)1110 2898 y(retriev)m(ed)h(with)f Ft(previous-history)c
+Fu(or)37 b Ft(next-history)p Fu(.)55 b(The)36 b(default)1110
+3007 y(is)30 b(`)p Ft(off)p Fu('.)630 3164 y Ft(history-size)1110
+3273 y Fu(Set)39 b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g
+(en)m(tries)h(sa)m(v)m(ed)g(in)f(the)g(history)1110 3383
+y(list.)51 b(If)34 b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f
+(en)m(tries)g(are)g(deleted)h(and)e(no)1110 3493 y(new)e(en)m(tries)i
+(are)f(sa)m(v)m(ed.)46 b(If)31 b(set)h(to)h(a)f(v)-5
+b(alue)32 b(less)g(than)f(zero,)i(the)f(n)m(um)m(b)s(er)1110
+3602 y(of)f(history)f(en)m(tries)h(is)g(not)g(limited.)42
+b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)1110
+3712 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32 b(an)h(attempt)h(is)
+f(made)g(to)h(set)f Fr(history-size)39 b Fu(to)1110 3821
+y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34 b(the)g(maxim)m(um)f(n)m(um)m
+(b)s(er)f(of)h(history)h(en)m(tries)g(will)1110 3931
+y(b)s(e)c(set)h(to)g(500.)630 4088 y Ft(horizontal-scroll-mode)1110
+4197 y Fu(This)k(v)-5 b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f
+(`)p Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36
+b(it)g(to)h(`)p Ft(on)p Fu(')1110 4307 y(means)26 b(that)h(the)f(text)h
(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m
-(tally)1110 5340 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
-(are)g(longer)h(than)e(the)h(width)f(of)h(the)p eop end
-%%Page: 118 124
-TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(118)1110 299 y(screen,)28
-b(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i(line.)40
-b(This)26 b(v)-5 b(ariable)28 b(is)1110 408 y(automatically)k(set)e(to)
-g(`)p Ft(on)p Fu(')f(for)g(terminals)g(of)h(heigh)m(t)g(1.)41
-b(By)29 b(default,)h(this)1110 518 y(v)-5 b(ariable)31
-b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630 719 y Ft(input-meta)1110
-829 y Fu(If)f(set)g(to)h(`)p Ft(on)p Fu(',)g(Readline)g(will)f(enable)h
-(eigh)m(t-bit)h(input)d(\(it)i(will)f(not)h(clear)1110
-938 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h(c)m(haracters)h(it)f
-(reads\),)j(regardless)c(of)h(what)g(the)1110 1048 y(terminal)k(claims)
-h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5
-b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 1157 y(Readline)24
-b(will)h(set)f(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con)
-m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 1267 y(The)30
-b(name)g Ft(meta-flag)e Fu(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5
-b(ariable.)630 1468 y Ft(isearch-terminators)1110 1577
-y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j
-(an)f(incremen)m(tal)1110 1687 y(searc)m(h)25 b(without)g(subsequen)m
-(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110
-1797 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(113\).)62
-b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1906
-y(b)s(een)e(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h
-Ft(ESC)d Fu(and)h Fj(C-J)g Fu(will)h(terminate)g(an)1110
-2016 y(incremen)m(tal)c(searc)m(h.)630 2217 y Ft(keymap)192
-b Fu(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h
-(for)f(k)m(ey)h(binding)1110 2326 y(commands.)71 b(Built-in)41
-b Ft(keymap)e Fu(names)h(are)h Ft(emacs)p Fu(,)h Ft(emacs-standard)p
-Fu(,)1110 2436 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p
-Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p
-Fu(,)f(and)1110 2545 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44
-b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c
-Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 2655 y(synon)m(ym\);)41
-b Ft(emacs)c Fu(is)h(equiv)-5 b(alen)m(t)39 b(to)f Ft(emacs-standard)p
-Fu(.)59 b(Applications)1110 2765 y(ma)m(y)32 b(add)e(additional)i
+(tally)1110 4416 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
+(are)g(longer)h(than)e(the)h(width)f(of)h(the)1110 4526
+y(screen,)c(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i
+(line.)40 b(This)26 b(v)-5 b(ariable)28 b(is)1110 4635
+y(automatically)k(set)e(to)g(`)p Ft(on)p Fu(')f(for)g(terminals)g(of)h
+(heigh)m(t)g(1.)41 b(By)29 b(default,)h(this)1110 4745
+y(v)-5 b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630
+4902 y Ft(input-meta)1110 5011 y Fu(If)f(set)g(to)h(`)p
+Ft(on)p Fu(',)g(Readline)g(will)f(enable)h(eigh)m(t-bit)h(input)d(\(it)
+i(will)f(not)h(clear)1110 5121 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h
+(c)m(haracters)h(it)f(reads\),)j(regardless)c(of)h(what)g(the)1110
+5230 y(terminal)k(claims)h(it)f(can)g(supp)s(ort.)79
+b(The)44 b(default)g(v)-5 b(alue)44 b(is)g(`)p Ft(off)p
+Fu(',)j(but)1110 5340 y(Readline)24 b(will)h(set)f(it)g(to)h(`)p
+Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con)m(tains)f(eigh)m(t-bit)g(c)m
+(haracters.)p eop end
+%%Page: 125 131
+TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(125)1110 299 y(The)29
+b(name)g Ft(meta-flag)e Fu(is)i(a)h(synon)m(ym)f(for)g(this)g(v)-5
+b(ariable.)42 b(This)28 b(v)-5 b(ariable)1110 408 y(is)35
+b(dep)s(enden)m(t)f(on)h(the)g Ft(LC_CTYPE)e Fu(lo)s(cale)k(category)-8
+b(,)39 b(and)34 b(ma)m(y)i(c)m(hange)g(if)1110 518 y(the)31
+b(lo)s(cale)h(is)e(c)m(hanged.)630 675 y Ft(isearch-terminators)1110
+784 y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e
+(terminate)j(an)f(incremen)m(tal)1110 894 y(searc)m(h)25
+b(without)g(subsequen)m(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g
+(command)1110 1003 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h
+(page)e(119\).)62 b(If)37 b(this)g(v)-5 b(ariable)38
+b(has)f(not)1110 1113 y(b)s(een)e(giv)m(en)h(a)g(v)-5
+b(alue,)37 b(the)f(c)m(haracters)h Ft(ESC)d Fu(and)h
+Fj(C-J)g Fu(will)h(terminate)g(an)1110 1223 y(incremen)m(tal)c(searc)m
+(h.)630 1379 y Ft(keymap)192 b Fu(Sets)64 b(Readline's)i(idea)f(of)f
+(the)h(curren)m(t)f(k)m(eymap)h(for)f(k)m(ey)h(binding)1110
+1489 y(commands.)71 b(Built-in)41 b Ft(keymap)e Fu(names)h(are)h
+Ft(emacs)p Fu(,)h Ft(emacs-standard)p Fu(,)1110 1598
+y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p Fu(,)f Ft(vi)p
+Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p Fu(,)f(and)1110
+1708 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44 b Fu(is)h(equiv)-5
+b(alen)m(t)46 b(to)g Ft(vi-command)c Fu(\()p Ft(vi-move)h
+Fu(is)i(also)h(a)1110 1817 y(synon)m(ym\);)41 b Ft(emacs)c
+Fu(is)h(equiv)-5 b(alen)m(t)39 b(to)f Ft(emacs-standard)p
+Fu(.)59 b(Applications)1110 1927 y(ma)m(y)32 b(add)e(additional)i
(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f
-Ft(emacs)p Fu(.)41 b(The)30 b(v)-5 b(alue)1110 2874 y(of)31
+Ft(emacs)p Fu(.)41 b(The)30 b(v)-5 b(alue)1110 2037 y(of)31
b(the)f Ft(editing-mode)d Fu(v)-5 b(ariable)31 b(also)h(a\013ects)f
-(the)g(default)g(k)m(eymap.)630 3075 y Ft(keyseq-timeout)1110
-3185 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
-(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 3294
+(the)g(default)g(k)m(eymap.)630 2193 y Ft(keyseq-timeout)1110
+2303 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
+(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 2412
y(ing)30 b(an)g(am)m(biguous)g(k)m(ey)h(sequence)f(\(one)g(that)h(can)f
-(form)g(a)g(complete)h(k)m(ey)1110 3404 y(sequence)j(using)e(the)i
+(form)g(a)g(complete)h(k)m(ey)1110 2522 y(sequence)j(using)e(the)i
(input)e(read)h(so)g(far,)h(or)g(can)f(tak)m(e)i(additional)f(input)
-1110 3513 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
+1110 2632 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
b(If)33 b(no)f(input)g(is)h(receiv)m(ed)h(within)1110
-3623 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
-g(but)f(complete)j(k)m(ey)e(se-)1110 3733 y(quence.)c(Readline)26
+2741 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
+g(but)f(complete)j(k)m(ey)e(se-)1110 2851 y(quence.)c(Readline)26
b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h
-(input)1110 3842 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
+(input)1110 2960 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
(t)f(input)g(source)h(\()p Ft(rl_instream)d Fu(b)m(y)i(default\).)1110
-3952 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
+3070 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
(milliseconds,)j(so)d(a)h(v)-5 b(alue)26 b(of)f(1000)i(means)e(that)
-1110 4061 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
+1110 3180 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
(additional)i(input.)37 b(If)22 b(this)g(v)-5 b(ariable)23
-b(is)1110 4171 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f
+b(is)1110 3289 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f
(equal)i(to)f(zero,)i(or)e(to)g(a)h(non-n)m(umeric)e(v)-5
-b(alue,)1110 4281 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h
+b(alue,)1110 3399 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h
(k)m(ey)g(is)f(pressed)g(to)h(decide)f(whic)m(h)g(k)m(ey)1110
-4390 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
-b(alue)31 b(is)g Ft(500)p Fu(.)630 4591 y Ft(mark-directories)1110
-4701 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory)
+3508 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
+b(alue)31 b(is)g Ft(500)p Fu(.)630 3665 y Ft(mark-directories)1110
+3774 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory)
f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110
-4810 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630
-5011 y Ft(mark-modified-lines)1110 5121 y Fu(This)k(v)-5
+3884 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630
+4041 y Ft(mark-modified-lines)1110 4150 y Fu(This)k(v)-5
b(ariable,)38 b(when)d(set)h(to)h(`)p Ft(on)p Fu(',)g(causes)g
-(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 5230 y(terisk)f(\(`)p
+(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 4260 y(terisk)f(\(`)p
Ft(*)p Fu('\))h(at)f(the)g(start)g(of)g(history)g(lines)g(whic)m(h)f
-(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 5340 y(This)d(v)-5
-b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)p
+(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 4369 y(This)d(v)-5
+b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)630
+4526 y Ft(mark-symlinked-directori)o(es)1110 4635 y Fu(If)59
+b(set)h(to)g(`)p Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g
+(are)h(sym)m(b)s(olic)g(links)f(to)1110 4745 y(directories)71
+b(ha)m(v)m(e)f(a)g(slash)f(app)s(ended)f(\(sub)5 b(ject)70
+b(to)g(the)g(v)-5 b(alue)70 b(of)1110 4855 y Ft(mark-directories)p
+Fu(\).)37 b(The)30 b(default)g(is)g(`)p Ft(off)p Fu('.)630
+5011 y Ft(match-hidden-files)1110 5121 y Fu(This)21 b(v)-5
+b(ariable,)25 b(when)d(set)g(to)h(`)p Ft(on)p Fu(',)h(causes)f
+(Readline)g(to)g(matc)m(h)g(\014les)f(whose)1110 5230
+y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p Fu(')g(\(hidden)f
+(\014les\))i(when)e(p)s(erforming)g(\014lename)1110 5340
+y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p Fu(',)i(the)e
+(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f(b)m(y)p
eop end
-%%Page: 119 125
-TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(119)630 299 y Ft
-(mark-symlinked-directori)o(es)1110 408 y Fu(If)59 b(set)h(to)g(`)p
-Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g(are)h(sym)m(b)s
-(olic)g(links)f(to)1110 518 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f
-(app)s(ended)f(\(sub)5 b(ject)70 b(to)g(the)g(v)-5 b(alue)70
-b(of)1110 628 y Ft(mark-directories)p Fu(\).)37 b(The)30
-b(default)g(is)g(`)p Ft(off)p Fu('.)630 778 y Ft(match-hidden-files)
-1110 888 y Fu(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p
-Ft(on)p Fu(',)h(causes)f(Readline)g(to)g(matc)m(h)g(\014les)f(whose)
-1110 998 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p
-Fu(')g(\(hidden)f(\014les\))i(when)e(p)s(erforming)g(\014lename)1110
-1107 y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p
-Fu(',)i(the)e(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f
-(b)m(y)1110 1217 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f
-(completed.)53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p
-Ft(on)p Fu(')g(b)m(y)1110 1326 y(default.)630 1477 y
-Ft(menu-complete-display-pr)o(efix)1110 1587 y Fu(If)f(set)h(to)g(`)p
-Ft(on)p Fu(',)h(men)m(u)e(completion)i(displa)m(ys)e(the)h(common)g
-(pre\014x)e(of)i(the)1110 1696 y(list)k(of)g(p)s(ossible)f(completions)
-i(\(whic)m(h)e(ma)m(y)h(b)s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110
-1806 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p
-Ft(off)p Fu('.)630 1956 y Ft(output-meta)1110 2066 y
-Fu(If)35 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)
-f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 2176
-y(set)h(directly)g(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s
-(e)h(sequence.)59 b(The)1110 2285 y(default)26 b(is)f(`)p
-Ft(off)p Fu(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p
-Ft(on)p Fu(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110
-2395 y(eigh)m(t-bit)k(c)m(haracters.)630 2545 y Ft(page-completions)
-1110 2655 y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(Readline)g(uses)e
-(an)h(in)m(ternal)h Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)
-1110 2765 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g
-(time.)47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p
-Fu(')1110 2874 y(b)m(y)e(default.)630 3025 y Ft
-(print-completions-horizo)o(ntal)o(ly)1110 3134 y Fu(If)23
-b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)f(displa)m(y)g
-(completions)h(with)f(matc)m(hes)h(sorted)1110 3244 y(horizon)m(tally)
-45 b(in)e(alphab)s(etical)i(order,)i(rather)c(than)g(do)m(wn)g(the)h
-(screen.)1110 3354 y(The)30 b(default)g(is)h(`)p Ft(off)p
-Fu('.)630 3504 y Ft(revert-all-at-newline)1110 3614 y
-Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f(all)h
-(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 3724
-y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41
-b(By)29 b(default,)g(history)g(lines)1110 3833 y(ma)m(y)42
+%%Page: 126 132
+TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(126)1110 299 y(the)34
+b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f(completed.)53
+b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p Ft(on)p Fu(')g(b)m(y)1110
+408 y(default.)630 587 y Ft(menu-complete-display-pr)o(efix)1110
+696 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)h(men)m(u)e(completion)i
+(displa)m(ys)e(the)h(common)g(pre\014x)e(of)i(the)1110
+806 y(list)k(of)g(p)s(ossible)f(completions)i(\(whic)m(h)e(ma)m(y)h(b)s
+(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110 915 y(through)30
+b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p Ft(off)p
+Fu('.)630 1093 y Ft(output-meta)1110 1203 y Fu(If)35
+b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)f(c)m
+(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 1313 y(set)h(directly)g
+(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s(e)h(sequence.)59
+b(The)1110 1422 y(default)26 b(is)f(`)p Ft(off)p Fu(',)i(but)e
+(Readline)h(will)g(set)g(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)f(lo)s
+(cale)j(con)m(tains)1110 1532 y(eigh)m(t-bit)38 b(c)m(haracters.)61
+b(This)36 b(v)-5 b(ariable)37 b(is)g(dep)s(enden)m(t)e(on)h(the)h
+Ft(LC_CTYPE)1110 1641 y Fu(lo)s(cale)32 b(category)-8
+b(,)33 b(and)d(ma)m(y)h(c)m(hange)g(if)g(the)f(lo)s(cale)i(is)f(c)m
+(hanged.)630 1819 y Ft(page-completions)1110 1929 y Fu(If)i(set)i(to)f
+(`)p Ft(on)p Fu(',)h(Readline)g(uses)e(an)h(in)m(ternal)h
+Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)1110
+2039 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g(time.)
+47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p Fu(')1110
+2148 y(b)m(y)e(default.)630 2326 y Ft(print-completions-horizo)o(ntal)o
+(ly)1110 2436 y Fu(If)23 b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g
+(will)f(displa)m(y)g(completions)h(with)f(matc)m(hes)h(sorted)1110
+2545 y(horizon)m(tally)45 b(in)e(alphab)s(etical)i(order,)i(rather)c
+(than)g(do)m(wn)g(the)h(screen.)1110 2655 y(The)30 b(default)g(is)h(`)p
+Ft(off)p Fu('.)630 2833 y Ft(revert-all-at-newline)1110
+2943 y Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f
+(all)h(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110
+3052 y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41
+b(By)29 b(default,)g(history)g(lines)1110 3162 y(ma)m(y)42
b(b)s(e)g(mo)s(di\014ed)e(and)h(retain)i(individual)e(undo)g(lists)h
-(across)g(calls)h(to)1110 3943 y Ft(readline)p Fu(.)38
-b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 4093
-y Ft(show-all-if-ambiguous)1110 4203 y Fu(This)f(alters)i(the)f
+(across)g(calls)h(to)1110 3271 y Ft(readline\(\))p Fu(.)38
+b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 3450
+y Ft(show-all-if-ambiguous)1110 3559 y Fu(This)e(alters)i(the)f
(default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40
-b(If)29 b(set)1110 4313 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h)
+b(If)29 b(set)1110 3669 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h)
g(ha)m(v)m(e)i(more)f(than)f(one)h(p)s(ossible)f(completion)h(cause)
-1110 4422 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
-(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 4532 y(The)30
+1110 3778 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
+(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 3888 y(The)30
b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)630
-4682 y Ft(show-all-if-unmodified)1110 4792 y Fu(This)38
+4066 y Ft(show-all-if-unmodified)1110 4176 y Fu(This)38
b(alters)h(the)g(default)g(b)s(eha)m(vior)g(of)f(the)h(completion)h
-(functions)e(in)h(a)1110 4902 y(fashion)25 b(similar)h(to)g
+(functions)e(in)h(a)1110 4285 y(fashion)25 b(similar)h(to)g
Fr(sho)m(w-all-if-am)m(biguous)p Fu(.)41 b(If)25 b(set)h(to)h(`)p
-Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 5011 y(ha)m(v)m(e)32
+Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 4395 y(ha)m(v)m(e)32
b(more)f(than)f(one)i(p)s(ossible)e(completion)i(without)f(an)m(y)g(p)s
-(ossible)f(par-)1110 5121 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
-f(completions)h(don't)f(share)g(a)h(common)1110 5230
+(ossible)f(par-)1110 4504 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 4614
y(pre\014x\))30 b(cause)g(the)h(matc)m(hes)g(to)g(b)s(e)f(listed)g
-(immediately)i(instead)e(of)h(ring-)1110 5340 y(ing)g(the)f(b)s(ell.)41
+(immediately)i(instead)e(of)h(ring-)1110 4724 y(ing)g(the)f(b)s(ell.)41
b(The)30 b(default)g(v)-5 b(alue)31 b(is)f(`)p Ft(off)p
-Fu('.)p eop end
-%%Page: 120 126
-TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(120)630 299 y Ft
-(show-mode-in-prompt)1110 408 y Fu(If)24 b(set)h(to)g(`)p
-Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s(eginning)g(of)g(the)h
-(prompt)e(indicating)1110 518 y(the)33 b(editing)h(mo)s(de:)46
-b(emacs,)35 b(vi)e(command,)h(or)f(vi)h(insertion.)49
-b(The)32 b(mo)s(de)1110 628 y(strings)45 b(are)h(user-settable)g
-(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8 b Fu(\).)87 b(The)45
-b(default)1110 737 y(v)-5 b(alue)31 b(is)f(`)p Ft(off)p
-Fu('.)630 887 y Ft(skip-completed-text)1110 996 y Fu(If)i(set)i(to)f(`)
-p Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s(eha)
-m(vior)f(when)f(in-)1110 1106 y(serting)d(a)h(single)g(matc)m(h)f(in)m
+Fu('.)630 4902 y Ft(show-mode-in-prompt)1110 5011 y Fu(If)24
+b(set)h(to)g(`)p Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s
+(eginning)g(of)g(the)h(prompt)e(indicating)1110 5121
+y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi)
+h(insertion.)49 b(The)32 b(mo)s(de)1110 5230 y(strings)45
+b(are)h(user-settable)g(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8
+b Fu(\).)87 b(The)45 b(default)1110 5340 y(v)-5 b(alue)31
+b(is)f(`)p Ft(off)p Fu('.)p eop end
+%%Page: 127 133
+TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(127)630 299 y Ft
+(skip-completed-text)1110 408 y Fu(If)32 b(set)i(to)f(`)p
+Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s(eha)m
+(vior)f(when)f(in-)1110 518 y(serting)d(a)h(single)g(matc)m(h)f(in)m
(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)
-1110 1215 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m
-(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)1110
-1325 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h
-(that)f(matc)m(h)g(c)m(haracters)1110 1435 y(after)c(p)s(oin)m(t)g(in)g
-(the)g(w)m(ord)f(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g
-(w)m(ord)1110 1544 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g
-(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
-1654 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
-(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 1763 y(`)p Ft(Makefile)p
+1110 628 y(ing)k(completion)i(in)e(the)g(middle)g(of)g(a)h(w)m(ord.)46
+b(If)32 b(enabled,)g(Readline)h(do)s(es)1110 737 y(not)41
+b(insert)f(c)m(haracters)i(from)e(the)h(completion)h(that)f(matc)m(h)g
+(c)m(haracters)1110 847 y(after)c(p)s(oin)m(t)g(in)g(the)g(w)m(ord)f(b)
+s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g(w)m(ord)1110
+956 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g(duplicated.)45
+b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
+1066 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
+(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 1176 y(`)p Ft(Makefile)p
Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`)
-p Ft(Makefilefile)p Fu(',)1110 1873 y(assuming)d(there)g(is)h(a)f
+p Ft(Makefilefile)p Fu(',)1110 1285 y(assuming)d(there)g(is)h(a)f
(single)h(p)s(ossible)f(completion.)56 b(The)35 b(default)g(v)-5
-b(alue)1110 1983 y(is)30 b(`)p Ft(off)p Fu('.)630 2132
-y Ft(vi-cmd-mode-string)1110 2242 y Fu(If)j(the)h Fr(sho)m(w-mo)s
+b(alue)1110 1395 y(is)30 b(`)p Ft(off)p Fu('.)630 1548
+y Ft(vi-cmd-mode-string)1110 1658 y Fu(If)j(the)h Fr(sho)m(w-mo)s
(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f
-(is)h(dis-)1110 2351 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)
+(is)h(dis-)1110 1767 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)
g(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
-2461 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)
+1877 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)
g(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110
-2570 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f
+1987 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f
(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110
-2680 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)
+2096 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)
g(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Ft(\\1)p
-Fu(')1110 2790 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s
+Fu(')1110 2206 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s
(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110
-2899 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)
-h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3009
+2315 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)
+h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2425
y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
-Ft(\(cmd\))p Fu('.)630 3158 y Ft(vi-ins-mode-string)1110
-3268 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5
+Ft(\(cmd\))p Fu('.)630 2578 y Ft(vi-ins-mode-string)1110
+2688 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5
b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
-3377 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
-(of)h(the)f(primary)f(prompt)g(when)1110 3487 y(vi)35
+2798 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 2907 y(vi)35
b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)
-54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 3597 y(panded)26
+54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 3017 y(panded)26
b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g
-(meta-)h(and)e(con)m(trol)1110 3706 y(pre\014xes)34 b(and)g(bac)m
+(meta-)h(and)e(con)m(trol)1110 3126 y(pre\014xes)34 b(and)g(bac)m
(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57
-b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 3816 y(and)23
+b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 3236 y(and)23
b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g
-(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3925
+(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3345
y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h
-(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 4035
+(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3455
y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
-Ft(\(ins\))p Fu('.)630 4184 y Ft(visible-stats)1110 4294
+Ft(\(ins\))p Fu('.)630 3608 y Ft(visible-stats)1110 3718
y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(a)f(c)m(haracter)i(denoting)e
(a)g(\014le's)g(t)m(yp)s(e)g(is)g(app)s(ended)e(to)j(the)1110
-4403 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42
-b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)150 4553
-y(Key)f(Bindings)630 4663 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h
+3828 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42
+b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)150 3981
+y(Key)f(Bindings)630 4091 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h
(k)m(ey)g(bindings)e(in)h(the)g(init)g(\014le)g(is)g(simple.)75
-b(First)43 b(y)m(ou)630 4772 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)
+b(First)43 b(y)m(ou)630 4200 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)
h(the)g(command)f(that)i(y)m(ou)f(w)m(an)m(t)g(to)g(c)m(hange.)41
-b(The)27 b(follo)m(wing)630 4882 y(sections)37 b(con)m(tain)g(tables)g
+b(The)27 b(follo)m(wing)630 4310 y(sections)37 b(con)m(tain)g(tables)g
(of)f(the)g(command)f(name,)j(the)e(default)g(k)m(eybinding,)h(if)f(an)
-m(y)-8 b(,)630 4991 y(and)30 b(a)h(short)f(description)g(of)h(what)f
-(the)g(command)h(do)s(es.)630 5121 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g
+m(y)-8 b(,)630 4419 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 4551 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g
(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g
-(the)g(init)630 5230 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m
+(the)g(init)630 4661 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m
(ou)g(wish)f(to)h(bind)f(the)h(command)f(to,)i(a)f(colon,)i(and)d(then)
-630 5340 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
+630 4770 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
b(can)g(b)s(e)g(no)g(space)g(b)s(et)m(w)m(een)h(the)f(k)m(ey)h(name)g
-(and)p eop end
-%%Page: 121 127
-TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(121)630 299 y(the)41
-b(colon)h({)f(that)g(will)g(b)s(e)g(in)m(terpreted)g(as)g(part)f(of)h
-(the)g(k)m(ey)h(name.)72 b(The)40 b(name)h(of)630 408
-y(the)35 b(k)m(ey)g(can)g(b)s(e)f(expressed)f(in)i(di\013eren)m(t)g(w)m
-(a)m(ys,)h(dep)s(ending)d(on)h(what)h(y)m(ou)g(\014nd)e(most)630
-518 y(comfortable.)630 650 y(In)i(addition)h(to)h(command)f(names,)i
-(readline)e(allo)m(ws)h(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f
-(string)630 759 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f
-(pressed)g(\(a)h Fr(macro)5 b Fu(\).)630 891 y(The)42
+(and)630 4880 y(the)41 b(colon)h({)f(that)g(will)g(b)s(e)g(in)m
+(terpreted)g(as)g(part)f(of)h(the)g(k)m(ey)h(name.)72
+b(The)40 b(name)h(of)630 4989 y(the)35 b(k)m(ey)g(can)g(b)s(e)f
+(expressed)f(in)i(di\013eren)m(t)g(w)m(a)m(ys,)h(dep)s(ending)d(on)h
+(what)h(y)m(ou)g(\014nd)e(most)630 5099 y(comfortable.)630
+5230 y(In)g(addition)h(to)g(command)g(names,)g(Readline)g(allo)m(ws)h
+(k)m(eys)g(to)f(b)s(e)f(b)s(ound)f(to)i(a)g(string)630
+5340 y(that)d(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f(pressed)g(\(a)
+h Fr(macro)5 b Fu(\).)p eop end
+%%Page: 128 134
+TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(128)630 299 y(The)42
b Ft(bind)30 b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g
-(names)g(and)f(bindings)g(in)h(a)630 1000 y(format)37
-b(that)h(can)f(put)f(directly)i(in)m(to)g(an)f(initialization)j
-(\014le.)60 b(See)38 b(Section)f(4.2)i([Bash)630 1110
-y(Builtins],)31 b(page)g(51.)630 1263 y Fr(k)m(eyname)5
-b Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110
-1373 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
+(names)g(and)f(bindings)g(in)h(a)630 408 y(format)28
+b(that)h(can)f(b)s(e)f(put)g(directly)i(in)m(to)f(an)g(initialization)j
+(\014le.)40 b(See)28 b(Section)h(4.2)g([Bash)630 518
+y(Builtins],)i(page)g(55.)630 673 y Fr(k)m(eyname)5 b
+Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110
+783 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350
-1504 y Ft(Control-u:)45 b(universal-argument)1350 1614
-y(Meta-Rubout:)f(backward-kill-word)1350 1724 y(Control-o:)h(">)i
-(output")1110 1855 y Fu(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112
+915 y Ft(Control-u:)45 b(universal-argument)1350 1024
+y(Meta-Rubout:)f(backward-kill-word)1350 1134 y(Control-o:)h(">)i
+(output")1110 1266 y Fu(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112
b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f(function)1110
-1965 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107
-b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 2074 y
+1376 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107
+b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 1485 y
Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g Fu(is)h(b)s(ound)e
-(to)j(run)d(the)i(macro)1110 2184 y(expressed)45 b(on)h(the)g(righ)m(t)
+(to)j(run)d(the)i(macro)1110 1595 y(expressed)45 b(on)h(the)g(righ)m(t)
g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p
-Ft(>)1110 2293 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110
-2425 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g
-(names)f(are)g(recognized)h(while)1110 2534 y(pro)s(cessing)40
+Ft(>)1110 1705 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110
+1837 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g
+(names)f(are)g(recognized)h(while)1110 1946 y(pro)s(cessing)40
b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fr(DEL)p
Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f Fr(LFD)p
-Fu(,)1110 2644 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f
+Fu(,)1110 2056 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f
Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 b(A)m(CE)p
Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p Fu(.)630
-2798 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36
-b Fu(or)30 b Fr(macro)1110 2907 y(k)m(eyseq)k Fu(di\013ers)d(from)f
+2211 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36
+b Fu(or)30 b Fr(macro)1110 2321 y(k)m(eyseq)k Fu(di\013ers)d(from)f
Fr(k)m(eyname)37 b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f
-(denoting)g(an)g(en-)1110 3017 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s
+(denoting)g(an)g(en-)1110 2430 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s
(e)f(sp)s(eci\014ed,)h(b)m(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)
-1110 3126 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h
+1110 2540 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h
Fu(Emacs)f(st)m(yle)i(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)
-1110 3236 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s
-(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 3345 y(recognized.)1350
-3477 y Ft("\\C-u":)46 b(universal-argument)1350 3587
-y("\\C-x\\C-r":)f(re-read-init-file)1350 3696 y("\\e[11~":)g("Function)
-h(Key)g(1")1110 3828 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
+1110 2649 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s
+(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 2759 y(recognized.)1350
+2891 y Ft("\\C-u":)46 b(universal-argument)1350 3001
+y("\\C-x\\C-r":)f(re-read-init-file)1350 3110 y("\\e[11~":)g("Function)
+h(Key)g(1")1110 3243 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
-3937 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g
-(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 4047
+3352 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g
+(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 3462
y(C-r)p Fu(')30 b(is)g(b)s(ound)e(to)j(the)g(function)f
Ft(re-read-init-file)p Fu(,)c(and)j(`)p Ft(ESC)h([)g(1)g(1)1110
-4156 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
-Ft(Function)e(Key)g(1)p Fu('.)630 4310 y(The)g(follo)m(wing)i
+3571 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
+Ft(Function)e(Key)g(1)p Fu('.)630 3726 y(The)g(follo)m(wing)i
Fm(gnu)f Fu(Emacs)g(st)m(yle)h(escap)s(e)f(sequences)g(are)g(a)m(v)-5
-b(ailable)32 b(when)d(sp)s(ecifying)630 4419 y(k)m(ey)i(sequences:)630
-4573 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630
-4726 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4880 y
+b(ailable)32 b(when)d(sp)s(ecifying)630 3836 y(k)m(ey)i(sequences:)630
+3991 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630
+4146 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4301 y
Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630
-5033 y Fj(\\\\)384 b Fu(bac)m(kslash)630 5187 y Fj(\\)p
+4456 y Fj(\\\\)384 b Fu(bac)m(kslash)630 4611 y Fj(\\)p
Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630
-5340 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s
-(ostrophe)p eop end
-%%Page: 122 128
-TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(122)630 299 y(In)27
-b(addition)h(to)g(the)g Fm(gnu)f Fu(Emacs)h(st)m(yle)h(escap)s(e)f
-(sequences,)h(a)f(second)f(set)h(of)g(bac)m(kslash)630
-408 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 570 y
-Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 731 y Ft(\\b)384
-b Fu(bac)m(kspace)630 892 y Ft(\\d)g Fu(delete)630 1053
-y Ft(\\f)g Fu(form)30 b(feed)630 1214 y Ft(\\n)384 b
-Fu(newline)630 1375 y Ft(\\r)g Fu(carriage)32 b(return)630
-1536 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630 1697
-y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 1858 y Ft(\\)p
-Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5
-b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fr(nnn)e
-Fu(\(one)i(to)1110 1968 y(three)c(digits\))630 2129 y
-Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e
-(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39
-b Fr(HH)1110 2239 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630
-2400 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e
-(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630
-2509 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21
-b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f(name.)38
-b(In)630 2619 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23
-b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m(e)j
-(are)e(expanded.)37 b(Bac)m(kslash)630 2729 y(will)j(quote)h(an)m(y)f
-(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39
+4766 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)630 4921 y(In)d(addition)h(to)g(the)g Fm(gnu)f
+Fu(Emacs)h(st)m(yle)h(escap)s(e)f(sequences,)h(a)f(second)f(set)h(of)g
+(bac)m(kslash)630 5030 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
+5185 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 5340
+y Ft(\\b)384 b Fu(bac)m(kspace)p eop end
+%%Page: 129 135
+TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(129)630 299 y Ft(\\d)384
+b Fu(delete)630 460 y Ft(\\f)g Fu(form)30 b(feed)630
+620 y Ft(\\n)384 b Fu(newline)630 781 y Ft(\\r)g Fu(carriage)32
+b(return)630 941 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630
+1102 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 1263
+y Ft(\\)p Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)
+e(v)-5 b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35
+b Fr(nnn)e Fu(\(one)i(to)1110 1372 y(three)c(digits\))630
+1533 y Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g
+(whose)e(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5
+b(alue)39 b Fr(HH)1110 1643 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
+(digits\))630 1803 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g
+(macro,)i(single)e(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)
+630 1913 y(indicate)23 b(a)e(macro)h(de\014nition.)38
+b(Unquoted)21 b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f
+(name.)38 b(In)630 2022 y(the)22 b(macro)f(b)s(o)s(dy)-8
+b(,)23 b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m
+(e)j(are)e(expanded.)37 b(Bac)m(kslash)630 2132 y(will)j(quote)h(an)m
+(y)f(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39
b(`)p Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8
-b(or)630 2838 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i
+b(or)630 2242 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i
(mak)m(e)h(`)p Fj(C-x)j Ft(\\)p Fu(')c(insert)f(a)h(single)h(`)p
-Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2974 y Ft("\\C-x\\\\":)45
-b("\\\\")150 3175 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs)
-150 3322 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f
+Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2377 y Ft("\\C-x\\\\":)45
+b("\\\\")150 2577 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs)
+150 2724 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f
(in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150
-3431 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g
+2834 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g
(bindings)d(and)h(v)-5 b(ariable)32 b(settings)f(to)h(b)s(e)e(p)s
-(erformed)f(as)i(the)150 3541 y(result)f(of)h(tests.)41
+(erformed)f(as)i(the)150 2943 y(result)f(of)h(tests.)41
b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150
-3703 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h
+3105 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h
(bindings)d(to)i(b)s(e)e(made)i(based)f(on)g(the)g(editing)h(mo)s(de,)g
-(the)630 3812 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h
+(the)630 3214 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h
(application)g(using)f(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,)
-630 3922 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f
+630 3324 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f
(to)h(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630
-4031 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
-(it.)630 4193 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e
+3433 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
+(it.)630 3594 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e
Fu(form)i(of)g(the)h Ft($if)e Fu(directiv)m(e)j(is)e(used)f(to)i(test)g
-(whether)e(Read-)1110 4302 y(line)44 b(is)f(in)g Ft(emacs)f
+(whether)e(Read-)1110 3704 y(line)44 b(is)f(in)g Ft(emacs)f
Fu(or)h Ft(vi)g Fu(mo)s(de.)79 b(This)42 b(ma)m(y)i(b)s(e)e(used)h(in)g
-(conjunction)1110 4412 y(with)c(the)h(`)p Ft(set)29 b(keymap)p
+(conjunction)1110 3813 y(with)c(the)h(`)p Ft(set)29 b(keymap)p
Fu(')38 b(command,)k(for)d(instance,)j(to)e(set)g(bindings)e(in)1110
-4521 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d
-Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 4631 y(starting)f(out)g
-(in)f Ft(emacs)f Fu(mo)s(de.)630 4792 y Ft(term)288 b
+3923 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d
+Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 4032 y(starting)f(out)g
+(in)f Ft(emacs)f Fu(mo)s(de.)630 4193 y Ft(term)288 b
Fu(The)26 b Ft(term=)g Fu(form)g(ma)m(y)i(b)s(e)e(used)g(to)i(include)f
-(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4902 y(ings,)38
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4303 y(ings,)38
b(p)s(erhaps)c(to)j(bind)e(the)h(k)m(ey)h(sequences)f(output)g(b)m(y)g
-(the)g(terminal's)1110 5011 y(function)24 b(k)m(eys.)39
+(the)g(terminal's)1110 4412 y(function)24 b(k)m(eys.)39
b(The)23 b(w)m(ord)h(on)f(the)i(righ)m(t)f(side)g(of)g(the)g(`)p
-Ft(=)p Fu(')g(is)g(tested)h(against)1110 5121 y(b)s(oth)k(the)h(full)g
+Ft(=)p Fu(')g(is)g(tested)h(against)1110 4522 y(b)s(oth)k(the)h(full)g
(name)g(of)g(the)g(terminal)h(and)e(the)i(p)s(ortion)e(of)h(the)g
-(terminal)1110 5230 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
+(terminal)1110 4631 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
Ft(-)p Fu('.)50 b(This)33 b(allo)m(ws)i Ft(sun)e Fu(to)h(matc)m(h)g(b)s
-(oth)f Ft(sun)g Fu(and)1110 5340 y Ft(sun-cmd)p Fu(,)c(for)h(instance.)
-p eop end
-%%Page: 123 129
-TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(123)630 299 y Ft(version)144
-b Fu(The)44 b Ft(version)f Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s
-(erform)d(comparisons)i(against)1110 408 y(sp)s(eci\014c)c(Readline)i
-(v)m(ersions.)74 b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g
-(curren)m(t)1110 518 y(Readline)25 b(v)m(ersion.)39 b(The)23
-b(set)h(of)g(comparison)h(op)s(erators)f(includes)f(`)p
-Ft(=)p Fu(')h(\(and)1110 628 y(`)p Ft(==)p Fu('\),)33
-b(`)p Ft(!=)p Fu(',)f(`)p Ft(<=)p Fu(',)h(`)p Ft(>=)p
-Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p Ft(>)p Fu('.)46
-b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h(on)1110
-737 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g(consists)h(of)f
-(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110
-847 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44
-b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 956
-y(`)p Ft(7.1)p Fu('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g
-(omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Ft(0)p
-Fu('.)40 b(The)1110 1066 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated)
-g(from)g(the)h(string)f Ft(version)f Fu(and)h(from)g(the)1110
-1176 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f
-(whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110
-1285 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m
-(ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350
-1440 y Ft($if)47 b(version)f(>=)h(7.0)1350 1550 y(set)g
-(show-mode-in-prompt)42 b(on)1350 1659 y($endif)630 1860
-y(application)1110 1970 y Fu(The)21 b Fr(application)j
-Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
-(set-)1110 2079 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
-(Readline)g(library)g(sets)g(the)g Fr(application)1110
-2189 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
-(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110
-2298 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
-(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 2408
-y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f
-(sequence)h(that)f(quotes)1110 2518 y(the)e(curren)m(t)f(or)g(previous)
-g(w)m(ord)g(in)g(Bash:)1350 2673 y Ft($if)47 b(Bash)1350
-2782 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
-2892 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 3002 y($endif)630
-3202 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39
+(oth)f Ft(sun)g Fu(and)1110 4741 y Ft(sun-cmd)p Fu(,)c(for)h(instance.)
+630 4902 y Ft(version)144 b Fu(The)44 b Ft(version)f
+Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i
+(against)1110 5011 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74
+b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g(curren)m(t)1110
+5121 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h
+(op)s(erators)f(includes)f(`)p Ft(=)p Fu(')h(\(and)1110
+5230 y(`)p Ft(==)p Fu('\),)33 b(`)p Ft(!=)p Fu(',)f(`)p
+Ft(<=)p Fu(',)h(`)p Ft(>=)p Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p
+Ft(>)p Fu('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h
+(on)1110 5340 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g
+(consists)h(of)f(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)p
+eop end
+%%Page: 130 136
+TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(130)1110 299 y(an)45
+b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 b(an)i(optional)g(minor)f
+(v)m(ersion)h(\(e.g.,)1110 408 y(`)p Ft(7.1)p Fu('\).)40
+b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g(omitted,)h(it)f(is)g(assumed)
+f(to)h(b)s(e)f(`)p Ft(0)p Fu('.)40 b(The)1110 518 y(op)s(erator)34
+b(ma)m(y)g(b)s(e)f(separated)g(from)g(the)h(string)f
+Ft(version)f Fu(and)h(from)g(the)1110 628 y(v)m(ersion)39
+b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f(whitespace.)67
+b(The)38 b(follo)m(wing)i(example)1110 737 y(sets)31
+b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m(ersion)f(b)s(eing)g
+(used)g(is)g(7.0)i(or)e(new)m(er:)1350 872 y Ft($if)47
+b(version)f(>=)h(7.0)1350 981 y(set)g(show-mode-in-prompt)42
+b(on)1350 1091 y($endif)630 1250 y(application)1110 1360
+y Fu(The)21 b Fr(application)j Fu(construct)e(is)g(used)f(to)i(include)
+f(application-sp)s(eci\014c)h(set-)1110 1469 y(tings.)39
+b(Eac)m(h)26 b(program)e(using)g(the)h(Readline)g(library)g(sets)g(the)
+g Fr(application)1110 1579 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g
+(for)f(a)g(particular)h(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g
+(used)f(to)1110 1689 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e
+(useful)g(for)h(a)g(sp)s(eci\014c)f(program.)48 b(F)-8
+b(or)1110 1798 y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f
+(a)i(k)m(ey)f(sequence)h(that)f(quotes)1110 1908 y(the)e(curren)m(t)f
+(or)g(previous)g(w)m(ord)g(in)g(Bash:)1350 2042 y Ft($if)47
+b(Bash)1350 2152 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)
+1350 2262 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2371 y($endif)630
+2531 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39
b Fu(construct)33 b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g
-(Readline)1110 3312 y(v)-5 b(ariables)32 b(and)f(v)-5
+(Readline)1110 2640 y(v)-5 b(ariables)32 b(and)f(v)-5
b(alues.)45 b(The)32 b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i
-(`)p Ft(=)p Fu(',)1110 3421 y(`)p Ft(==)p Fu(',)49 b(and)44
+(`)p Ft(=)p Fu(',)1110 2750 y(`)p Ft(==)p Fu(',)49 b(and)44
b(`)p Ft(!=)p Fu('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g
-(b)s(e)g(separated)g(from)g(the)1110 3531 y(comparison)25
+(b)s(e)g(separated)g(from)g(the)1110 2859 y(comparison)25
b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s
-(e)f(separated)1110 3641 y(from)33 b(the)h(v)-5 b(alue)35
+(e)f(separated)1110 2969 y(from)33 b(the)h(v)-5 b(alue)35
b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52
-b(Both)35 b(string)1110 3750 y(and)i(b)s(o)s(olean)g(v)-5
+b(Both)35 b(string)1110 3078 y(and)i(b)s(o)s(olean)g(v)-5
b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39
-b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 3860 y(tested)46
+b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 3188 y(tested)46
b(against)g(the)f(v)-5 b(alues)46 b Fr(on)f Fu(and)f
Fr(o\013)p Fu(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110
-3969 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e
-Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 4124 y
-Ft($if)47 b(editing-mode)d(==)k(emacs)1350 4234 y(set)f
-(show-mode-in-prompt)42 b(on)1350 4344 y($endif)150 4544
+3298 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e
+Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 3432 y
+Ft($if)47 b(editing-mode)d(==)k(emacs)1350 3542 y(set)f
+(show-mode-in-prompt)42 b(on)1350 3651 y($endif)150 3811
y($endif)192 b Fu(This)29 b(command,)i(as)f(seen)h(in)f(the)g(previous)
g(example,)h(terminates)g(an)g Ft($if)e Fu(command.)150
-4745 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
+3970 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
(the)f Ft($if)g Fu(directiv)m(e)i(are)f(executed)g(if)f(the)h(test)g
-(fails.)150 4945 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m
+(fails.)150 4130 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m
(es)g(a)e(single)i(\014lename)e(as)h(an)f(argumen)m(t)h(and)f(reads)g
-(commands)630 5055 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
+(commands)630 4239 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
b(F)-8 b(or)39 b(example,)j(the)d(follo)m(wing)h(directiv)m(e)g(reads)e
-(from)630 5165 y Ft(/etc/inputrc)p Fu(:)870 5320 y Ft($include)46
-b(/etc/inputrc)p eop end
-%%Page: 124 130
-TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Fk(8.3.3)63
-b(Sample)41 b(Init)g(File)150 446 y Fu(Here)27 b(is)f(an)h(example)g
-(of)f(an)h Fr(inputrc)k Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)
-h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150
-555 y(conditional)j(syn)m(tax.)p eop end
-%%Page: 125 131
-TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(125)390 408 y Ft(#)47
+(from)630 4349 y Ft(/etc/inputrc)p Fu(:)870 4483 y Ft($include)46
+b(/etc/inputrc)150 4682 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150
+4829 y Fu(Here)27 b(is)f(an)h(example)g(of)f(an)h Fr(inputrc)k
+Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)h(binding,)e(v)-5
+b(ariable)27 b(assignmen)m(t,)i(and)150 4939 y(conditional)j(syn)m
+(tax.)p eop end
+%%Page: 131 137
+TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(131)390 408 y Ft(#)47
b(This)g(file)g(controls)e(the)i(behaviour)e(of)j(line)e(input)h
(editing)e(for)390 518 y(#)i(programs)f(that)h(use)g(the)f(GNU)h
(Readline)f(library.)93 b(Existing)390 628 y(#)47 b(programs)f(include)
@@ -17192,9 +17762,9 @@ y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(keypad)f(mode)390
4902 y(#)390 5011 y(#)47 b(Arrow)g(keys)f(in)i(8)f(bit)g(ANSI)g(mode)
390 5121 y(#)390 5230 y(#"\\M-\\C-[D":)331 b(backward-char)390
5340 y(#"\\M-\\C-[C":)g(forward-char)p eop end
-%%Page: 126 132
-TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(126)390 299 y Ft(#"\\M-\\C-[A":)
+%%Page: 132 138
+TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(132)390 299 y Ft(#"\\M-\\C-[A":)
331 b(previous-history)390 408 y(#"\\M-\\C-[B":)g(next-history)390
628 y(C-q:)47 b(quoted-insert)390 847 y($endif)390 1066
y(#)g(An)h(old-style)d(binding.)93 b(This)47 b(happens)f(to)h(be)g(the)
@@ -17227,9 +17797,9 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h
g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user)
g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g
(completion-query-items)42 b(150)p eop end
-%%Page: 127 133
-TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(127)390 299 y Ft(#)47
+%%Page: 133 139
+TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(133)390 299 y Ft(#)47
b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390
628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390
847 y($endif)150 1089 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands)
@@ -17239,7 +17809,7 @@ b(Y)-8 b(ou)33 b(can)150 1358 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d
(b)m(y)h(executing)i Ft(bind)29 b(-P)39 b Fu(or,)j(for)d(a)h(more)g
(terse)g(format,)i(suitable)e(for)f(an)150 1468 y Fr(inputrc)34
b Fu(\014le,)29 b Ft(bind)g(-p)p Fu(.)40 b(\(See)30 b(Section)f(4.2)h
-([Bash)g(Builtins],)g(page)g(51.\))41 b(Command)28 b(names)h(without)
+([Bash)g(Builtins],)g(page)g(55.\))41 b(Command)28 b(names)h(without)
150 1577 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s
(ound)d(b)m(y)i(default.)275 1713 y(In)25 b(the)h(follo)m(wing)i
(descriptions,)f Fr(p)s(oin)m(t)h Fu(refers)e(to)h(the)f(curren)m(t)g
@@ -17279,9 +17849,9 @@ b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f
(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630
5340 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.)
p eop end
-%%Page: 128 134
-TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(128)150 299 y Ft(next-screen-line)
+%%Page: 134 140
+TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(134)150 299 y Ft(next-screen-line)
26 b(\(\))630 408 y Fu(A)m(ttempt)g(to)f(mo)m(v)m(e)i(p)s(oin)m(t)d(to)
i(the)e(same)i(ph)m(ysical)f(screen)g(column)f(on)h(the)f(next)h(ph)m
(ysical)630 518 y(screen)e(line.)39 b(This)23 b(will)g(not)h(ha)m(v)m
@@ -17339,9 +17909,9 @@ b(\(M-p\))630 5121 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h(the)630
5340 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m
(ywhere)g(in)f(a)h(history)f(line.)p eop end
-%%Page: 129 135
-TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Ft
+%%Page: 135 141
+TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(135)150 299 y Ft
(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
b(\(M-n\))630 408 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h(the)
e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)630
@@ -17415,1094 +17985,1109 @@ b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g
b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f
(the)f(curren)m(t)g(line)h(from)f(the)g(history)p eop
end
-%%Page: 130 136
-TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(130)630 299 y(for)31
+%%Page: 136 142
+TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(136)630 299 y(for)31
b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f(supplied,)f(sp)
s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630
-408 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 605
-y Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10
-b(ext)150 775 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630
-885 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
+408 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 565
+y Ft(fetch-history)d(\(\))630 675 y Fu(With)e(a)f(n)m(umeric)g(argumen)
+m(t,)i(fetc)m(h)f(that)g(en)m(try)f(from)g(the)g(history)g(list)h(and)e
+(mak)m(e)i(it)g(the)630 784 y(curren)m(t)30 b(line.)41
+b(Without)30 b(an)g(argumen)m(t,)h(mo)m(v)m(e)g(bac)m(k)g(to)f(the)g
+(\014rst)f(en)m(try)h(in)g(the)g(history)630 894 y(list.)150
+1090 y Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10
+b(ext)150 1261 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630
+1370 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
(for)f(example,)i(b)m(y)e Ft(stty)p Fu(.)39 b(If)25 b(this)h(c)m
-(harac-)630 995 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
+(harac-)630 1480 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
(haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s
-(eginning)630 1104 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
+(eginning)630 1590 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
(it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p
-Fu(.)150 1261 y Ft(delete-char)e(\(C-d\))630 1370 y Fu(Delete)35
+Fu(.)150 1746 y Ft(delete-char)e(\(C-d\))630 1856 y Fu(Delete)35
b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g
-(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 1480
+(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 1966
y(as)e(the)f(tt)m(y)i Fm(eof)d Fu(c)m(haracter,)j(as)f
Fj(C-d)e Fu(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g
-(e\013ects.)150 1637 y Ft(backward-delete-char)25 b(\(Rubout\))630
-1746 y Fu(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
+(e\013ects.)150 2122 y Ft(backward-delete-char)25 b(\(Rubout\))630
+2232 y Fu(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630
-1856 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
-2013 y Ft(forward-backward-delete-)o(char)24 b(\(\))630
-2122 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
+2341 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
+2498 y Ft(forward-backward-delete-)o(char)24 b(\(\))630
+2608 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
(unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630
-2232 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s
+2717 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s
(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630
-2341 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
-2498 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 2608
+2827 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+2983 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 3093
y Fu(Add)j(the)i(next)f(c)m(haracter)i(t)m(yp)s(ed)e(to)h(the)f(line)h
(v)m(erbatim.)53 b(This)33 b(is)i(ho)m(w)f(to)h(insert)f(k)m(ey)630
-2717 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150
-2874 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630
-2983 y Fu(Insert)g(y)m(ourself.)150 3140 y Ft(bracketed-paste-begin)25
-b(\(\))630 3250 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e
+3203 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150
+3359 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630
+3469 y Fu(Insert)g(y)m(ourself.)150 3626 y Ft(bracketed-paste-begin)25
+b(\(\))630 3735 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e
(b)s(ound)f(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p
-Ft(")f Fu(escap)s(e)h(sequence)630 3359 y(sen)m(t)38
+Ft(")f Fu(escap)s(e)h(sequence)630 3845 y(sen)m(t)38
b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i
(assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630
-3469 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g
+3954 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g
(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630
-3578 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
+4064 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630
-3688 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j
+4173 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j
Ft(self-insert)c Fu(instead)j(of)h(executing)g(an)m(y)f(editing)630
-3798 y(commands.)630 3931 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h
+4283 y(commands.)630 4416 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h
(region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and)
-g(the)g(mark\))630 4040 y(to)j(the)g(inserted)f(text.)65
+g(the)g(mark\))630 4526 y(to)j(the)g(inserted)f(text.)65
b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Fl(active)i(mark)10
-b Fu(:)57 b(when)38 b(the)g(mark)630 4150 y(is)d(activ)m(e,)k(Readline)
+b Fu(:)57 b(when)38 b(the)g(mark)630 4635 y(is)d(activ)m(e,)k(Readline)
c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i
-(denote)g(the)630 4260 y(region.)150 4416 y Ft(transpose-chars)26
-b(\(C-t\))630 4526 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)
+(denote)g(the)630 4745 y(region.)150 4902 y Ft(transpose-chars)26
+b(\(C-t\))630 5011 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)
g(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g
-(cursor,)630 4635 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m
+(cursor,)630 5121 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m
(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)
-g(of)h(the)630 4745 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h
+g(of)h(the)630 5230 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h
(last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38
-b(Negativ)m(e)25 b(argumen)m(ts)630 4855 y(ha)m(v)m(e)32
-b(no)e(e\013ect.)150 5011 y Ft(transpose-words)c(\(M-t\))630
-5121 y Fu(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g
-(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)
-g(that)630 5230 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27
-b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f
-(line,)i(this)e(transp)s(oses)g(the)630 5340 y(last)j(t)m(w)m(o)h(w)m
-(ords)e(on)g(the)h(line.)p eop end
-%%Page: 131 137
-TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(131)150 299 y Ft(upcase-word)27
-b(\(M-u\))630 408 y Fu(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g
-(follo)m(wing\))i(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m
-(t,)e(upp)s(er-)630 518 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g
-(not)h(mo)m(v)m(e)h(the)e(cursor.)150 665 y Ft(downcase-word)d(\(M-l\))
-630 775 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m
-(wing\))i(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m
-(w)m(ercase)630 884 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
-(mo)m(v)m(e)i(the)f(cursor.)150 1032 y Ft(capitalize-word)26
-b(\(M-c\))630 1141 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+b(Negativ)m(e)25 b(argumen)m(ts)630 5340 y(ha)m(v)m(e)32
+b(no)e(e\013ect.)p eop end
+%%Page: 137 143
+TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(137)150 299 y Ft(transpose-words)
+26 b(\(M-t\))630 408 y Fu(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s
+(oin)m(t)g(past)g(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)
+s(oin)m(t)f(past)g(that)630 518 y(w)m(ord)c(as)h(w)m(ell.)41
+b(If)27 b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i
+(the)f(line,)i(this)e(transp)s(oses)g(the)630 628 y(last)j(t)m(w)m(o)h
+(w)m(ords)e(on)g(the)h(line.)150 797 y Ft(upcase-word)c(\(M-u\))630
+907 y Fu(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i
+(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630
+1016 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h
+(the)e(cursor.)150 1186 y Ft(downcase-word)d(\(M-l\))630
+1296 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
+(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m
+(ercase)630 1405 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m
+(v)m(e)i(the)f(cursor.)150 1575 y Ft(capitalize-word)26
+b(\(M-c\))630 1684 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h
-(capitalize)630 1251 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
-(mo)m(v)m(e)i(the)f(cursor.)150 1398 y Ft(overwrite-mode)26
-b(\(\))630 1508 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+(capitalize)630 1794 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
+(mo)m(v)m(e)i(the)f(cursor.)150 1964 y Ft(overwrite-mode)26
+b(\(\))630 2073 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
b(With)33 b(an)g(explicit)h(p)s(ositiv)m(e)g(n)m(umeric)f(argumen)m(t,)
-h(switc)m(hes)630 1617 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+h(switc)m(hes)630 2183 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
b(With)22 b(an)g(explicit)h(non-p)s(ositiv)m(e)f(n)m(umeric)g(argumen)m
-(t,)i(switc)m(hes)e(to)630 1727 y(insert)30 b(mo)s(de.)41
+(t,)i(switc)m(hes)e(to)630 2292 y(insert)30 b(mo)s(de.)41
b(This)30 b(command)h(a\013ects)h(only)e Ft(emacs)f Fu(mo)s(de;)i
-Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 1837
+Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 2402
y(di\013eren)m(tly)-8 b(.)42 b(Eac)m(h)31 b(call)h(to)f
Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)630
-1965 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
+2541 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
(ound)c(to)j Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630
-2075 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
+2651 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630
-2184 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter)
-h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 2313
+2761 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter)
+h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 2900
y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150
-2500 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
-2665 y Ft(kill-line)28 b(\(C-k\))630 2775 y Fu(Kill)k(the)f(text)i
+3110 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
+3287 y Ft(kill-line)28 b(\(C-k\))630 3396 y Fu(Kill)k(the)f(text)i
(from)d(p)s(oin)m(t)i(to)g(the)f(end)g(of)g(the)h(line.)44
b(With)31 b(a)h(negativ)m(e)i(n)m(umeric)d(argu-)630
-2885 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h
+3506 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h
(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f(line.)150
-3032 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
-3141 y Fu(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g
+3675 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
+3785 y Fu(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g
(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 b(With)41
-b(a)630 3251 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50
+b(a)630 3895 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50
b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the)
-630 3361 y(curren)m(t)30 b(line.)150 3508 y Ft(unix-line-discard)c
-(\(C-u\))630 3617 y Fu(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f
+630 4004 y(curren)m(t)30 b(line.)150 4174 y Ft(unix-line-discard)c
+(\(C-u\))630 4283 y Fu(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f
(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150
-3765 y Ft(kill-whole-line)c(\(\))630 3874 y Fu(Kill)37
+4453 y Ft(kill-whole-line)c(\(\))630 4562 y Fu(Kill)37
b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g
(where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630
-3984 y(this)30 b(is)h(un)m(b)s(ound.)150 4131 y Ft(kill-word)d(\(M-d\))
-630 4241 y Fu(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+4672 y(this)30 b(is)h(un)m(b)s(ound.)150 4842 y Ft(kill-word)d(\(M-d\))
+630 4951 y Fu(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h
-(the)g(end)630 4350 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+(the)g(end)630 5061 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft(forward-word)p
-Fu(.)150 4498 y Ft(backward-kill-word)25 b(\(M-DEL\))630
-4607 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
+Fu(.)150 5230 y Ft(backward-kill-word)25 b(\(M-DEL\))630
+5340 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g
-Ft(backward-word)p Fu(.)150 4754 y Ft(shell-kill-word)d(\(M-C-d\))630
-4864 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
-(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h
-(the)g(end)630 4974 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
-b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft
-(shell-forward-word)p Fu(.)150 5121 y Ft(shell-backward-kill-word)24
-b(\(\))630 5230 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38
+Ft(backward-word)p Fu(.)p eop end
+%%Page: 138 144
+TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(138)150 299 y Ft(shell-kill-word)
+26 b(\(M-C-d\))630 408 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)
+e(of)i(the)f(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m
+(ords,)f(to)h(the)g(end)630 518 y(of)h(the)f(next)h(w)m(ord.)40
+b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f
+Ft(shell-forward-word)p Fu(.)150 692 y Ft(shell-backward-kill-word)24
+b(\(\))630 801 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38
b(W)-8 b(ord)22 b(b)s(oundaries)f(are)h(the)g(same)h(as)f
-Ft(shell-backward-)630 5340 y(word)p Fu(.)p eop end
-%%Page: 132 138
-TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(132)150 299 y Ft
-(shell-transpose-words)25 b(\(M-C-t\))630 408 y Fu(Drag)33
+Ft(shell-backward-)630 911 y(word)p Fu(.)150 1084 y Ft
+(shell-transpose-words)j(\(M-C-t\))630 1194 y Fu(Drag)33
b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f
(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630
-518 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m
+1304 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m
(t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g
-(the)630 628 y(last)j(t)m(w)m(o)h(w)m(ords)d(on)i(the)f(line.)41
+(the)630 1413 y(last)j(t)m(w)m(o)h(w)m(ords)d(on)i(the)f(line.)41
b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)f(as)h
-Ft(shell-forward-)630 737 y(word)e Fu(and)h Ft(shell-backward-word)p
-Fu(.)150 897 y Ft(unix-word-rubout)c(\(C-w\))630 1007
+Ft(shell-forward-)630 1523 y(word)e Fu(and)h Ft(shell-backward-word)p
+Fu(.)150 1696 y Ft(unix-word-rubout)c(\(C-w\))630 1806
y Fu(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m(t,)i(using)f
(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43
-b(The)31 b(killed)630 1116 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f
-(kill-ring.)150 1277 y Ft(unix-filename-rubout)25 b(\(\))630
-1386 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
+b(The)31 b(killed)630 1915 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f
+(kill-ring.)150 2089 y Ft(unix-filename-rubout)25 b(\(\))630
+2199 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630
-1496 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
-(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 1656 y Ft
-(delete-horizontal-space)24 b(\(\))630 1765 y Fu(Delete)33
+2308 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
+(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 2482 y Ft
+(delete-horizontal-space)24 b(\(\))630 2591 y Fu(Delete)33
b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
-b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 1925
-y Ft(kill-region)d(\(\))630 2035 y Fu(Kill)k(the)f(text)i(in)e(the)g
+b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 2765
+y Ft(kill-region)d(\(\))630 2874 y Fu(Kill)k(the)f(text)i(in)e(the)g
(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un)
-m(b)s(ound.)150 2195 y Ft(copy-region-as-kill)25 b(\(\))630
-2305 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
+m(b)s(ound.)150 3048 y Ft(copy-region-as-kill)25 b(\(\))630
+3158 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
(kill)h(bu\013er,)f(so)g(it)h(can)f(b)s(e)f(y)m(ank)m(ed)i(righ)m(t)f
-(a)m(w)m(a)m(y)-8 b(.)630 2414 y(By)31 b(default,)f(this)h(command)f
-(is)g(un)m(b)s(ound.)150 2574 y Ft(copy-backward-word)25
-b(\(\))630 2684 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
+(a)m(w)m(a)m(y)-8 b(.)630 3267 y(By)31 b(default,)f(this)h(command)f
+(is)g(un)m(b)s(ound.)150 3441 y Ft(copy-backward-word)25
+b(\(\))630 3550 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
(t)g(to)i(the)e(kill)h(bu\013er.)64 b(The)38 b(w)m(ord)g(b)s(oundaries)
-f(are)i(the)630 2793 y(same)31 b(as)f Ft(backward-word)p
+f(are)i(the)630 3660 y(same)31 b(as)f Ft(backward-word)p
Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150
-2953 y Ft(copy-forward-word)26 b(\(\))630 3063 y Fu(Cop)m(y)31
+3833 y Ft(copy-forward-word)26 b(\(\))630 3943 y Fu(Cop)m(y)31
b(the)g(w)m(ord)g(follo)m(wing)h(p)s(oin)m(t)f(to)h(the)f(kill)h
(bu\013er.)42 b(The)30 b(w)m(ord)h(b)s(oundaries)e(are)j(the)630
-3173 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30
+4053 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30
b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150
-3333 y Ft(yank)f(\(C-y\))630 3442 y Fu(Y)-8 b(ank)31
+4226 y Ft(yank)f(\(C-y\))630 4336 y Fu(Y)-8 b(ank)31
b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h
-(p)s(oin)m(t.)150 3602 y Ft(yank-pop)d(\(M-y\))630 3712
+(p)s(oin)m(t.)150 4509 y Ft(yank-pop)d(\(M-y\))630 4619
y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54
b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630
-3822 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p
-Fu(.)150 4021 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
-(ts)150 4194 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j
-Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 4303 y Fu(Add)d(this)h(digit)g
+4728 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p
+Fu(.)150 4942 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 5121 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j
+Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 5230 y Fu(Add)d(this)h(digit)g
(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f
-(new)f(argumen)m(t.)630 4413 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i
-(argumen)m(t.)150 4573 y Ft(universal-argument)25 b(\(\))630
-4682 y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
-(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m
-(y)f(one)630 4792 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
-(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630
-4902 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
-m(y)f(digits,)i(executing)f Ft(universal-argument)630
-5011 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+(new)f(argumen)m(t.)630 5340 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i
+(argumen)m(t.)p eop end
+%%Page: 139 145
+TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(139)150 299 y Ft
+(universal-argument)25 b(\(\))630 408 y Fu(This)g(is)g(another)h(w)m(a)
+m(y)g(to)h(sp)s(ecify)e(an)g(argumen)m(t.)40 b(If)25
+b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m(y)f(one)630
+518 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h(leading)h(min)m(us)
+e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630 628
+y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)m(y)f
+(digits,)i(executing)f Ft(universal-argument)630 737
+y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
(otherwise)g(ignored.)45 b(As)32 b(a)g(sp)s(ecial)h(case,)630
-5121 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
-d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
-5230 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
+847 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)d
+(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
+956 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
(the)h(next)f(command)g(is)g(m)m(ultiplied)h(b)m(y)630
-5340 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
-(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)p
-eop end
-%%Page: 133 139
-TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(133)630 299 y(time)29
-b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h(second)g(time)g
-(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 408 y(sixteen,)i(and)f(so)
-h(on.)40 b(By)31 b(default,)g(this)f(is)g(not)h(b)s(ound)d(to)k(a)e(k)m
-(ey)-8 b(.)150 603 y Fk(8.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g
-(F)-10 b(or)42 b(Y)-10 b(ou)150 772 y Ft(complete)28
-b(\(TAB\))630 882 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f
-(the)g(text)g(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i
-(completion)630 991 y(p)s(erformed)33 b(is)h(application-sp)s
-(eci\014c.)53 b(Bash)35 b(attempts)g(completion)g(treating)h(the)e
-(text)630 1101 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)
-s(egins)e(with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)
-s(egins)e(with)630 1210 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g
-(the)g(text)h(b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f
-(\(including)h(aliases)i(and)630 1320 y(functions\))j(in)f(turn.)53
+1066 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
+(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630
+1176 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
+(second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630
+1285 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
+(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 1468 y Fk(8.4.6)63
+b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42
+b(Y)-10 b(ou)150 1632 y Ft(complete)28 b(\(TAB\))630
+1741 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g
+(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630
+1851 y(p)s(erformed)33 b(is)h(application-sp)s(eci\014c.)53
+b(Bash)35 b(attempts)g(completion)g(treating)h(the)e(text)630
+1961 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)s(egins)e
+(with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)s(egins)e
+(with)630 2070 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h
+(b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f(\(including)h
+(aliases)i(and)630 2180 y(functions\))j(in)f(turn.)53
b(If)34 b(none)g(of)h(these)h(pro)s(duces)d(a)i(matc)m(h,)i(\014lename)
-e(completion)h(is)630 1430 y(attempted.)150 1584 y Ft
-(possible-completions)25 b(\(M-?\))630 1694 y Fu(List)35
+e(completion)h(is)630 2289 y(attempted.)150 2433 y Ft
+(possible-completions)25 b(\(M-?\))630 2542 y Fu(List)35
b(the)g(p)s(ossible)f(completions)i(of)e(the)h(text)h(b)s(efore)e(p)s
-(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 1803
+(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 2652
y(pletions,)f(Readline)f(sets)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f
(used)f(for)i(displa)m(y)f(to)h(the)g(v)-5 b(alue)33
-b(of)630 1913 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5
+b(of)630 2761 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5
b(alue)37 b(of)g(the)f(en)m(vironmen)m(t)h(v)-5 b(ariable)38
-b Ft(COLUMNS)p Fu(,)630 2022 y(or)30 b(the)h(screen)f(width,)g(in)g
-(that)h(order.)150 2177 y Ft(insert-completions)25 b(\(M-*\))630
-2286 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f
+b Ft(COLUMNS)p Fu(,)630 2871 y(or)30 b(the)h(screen)f(width,)g(in)g
+(that)h(order.)150 3014 y Ft(insert-completions)25 b(\(M-*\))630
+3124 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f
(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630
-2396 y(b)m(y)g Ft(possible-completions)p Fu(.)150 2550
-y Ft(menu-complete)d(\(\))630 2660 y Fu(Similar)d(to)g
+3233 y(b)m(y)g Ft(possible-completions)p Fu(.)150 3376
+y Ft(menu-complete)d(\(\))630 3486 y Fu(Similar)d(to)g
Ft(complete)p Fu(,)f(but)h(replaces)g(the)g(w)m(ord)g(to)g(b)s(e)f
-(completed)i(with)e(a)i(single)f(matc)m(h)630 2770 y(from)37
+(completed)i(with)e(a)i(single)f(matc)m(h)630 3596 y(from)37
b(the)h(list)h(of)f(p)s(ossible)f(completions.)64 b(Rep)s(eated)39
-b(execution)g(of)f Ft(menu-complete)630 2879 y Fu(steps)i(through)g
+b(execution)g(of)f Ft(menu-complete)630 3705 y Fu(steps)i(through)g
(the)g(list)h(of)f(p)s(ossible)g(completions,)k(inserting)c(eac)m(h)i
-(matc)m(h)f(in)f(turn.)630 2989 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g
+(matc)m(h)f(in)f(turn.)630 3815 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g
(of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5
-b(ject)36 b(to)i(the)f(setting)630 3098 y(of)f Ft(bell-style)p
+b(ject)36 b(to)i(the)f(setting)630 3924 y(of)f Ft(bell-style)p
Fu(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57
b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i
-Fr(n)630 3208 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
+Fr(n)630 4034 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
(matc)m(hes;)39 b(a)c(negativ)m(e)i(argumen)m(t)e(ma)m(y)g(b)s(e)f
-(used)g(to)630 3318 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
+(used)g(to)630 4143 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
(list.)65 b(This)38 b(command)g(is)g(in)m(tended)g(to)h(b)s(e)f(b)s
-(ound)e(to)630 3427 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
-(y)i(default.)150 3582 y Ft(menu-complete-backward)24
-b(\(\))630 3691 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p
+(ound)e(to)630 4253 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
+(y)i(default.)150 4396 y Ft(menu-complete-backward)24
+b(\(\))630 4506 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p
Fu(,)d(but)h(mo)m(v)m(es)j(bac)m(kw)m(ard)e(through)f(the)i(list)f(of)g
-(p)s(ossible)630 3801 y(completions,)d(as)e(if)h Ft(menu-complete)26
+(p)s(ossible)630 4615 y(completions,)d(as)e(if)h Ft(menu-complete)26
b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150
-3955 y Ft(delete-char-or-list)25 b(\(\))630 4065 y Fu(Deletes)41
+4758 y Ft(delete-char-or-list)25 b(\(\))630 4868 y Fu(Deletes)41
b(the)e(c)m(haracter)h(under)e(the)h(cursor)f(if)h(not)g(at)g(the)h(b)s
-(eginning)e(or)h(end)f(of)h(the)630 4174 y(line)50 b(\(lik)m(e)h
+(eginning)e(or)h(end)f(of)h(the)630 4978 y(line)50 b(\(lik)m(e)h
Ft(delete-char)p Fu(\).)96 b(If)49 b(at)h(the)g(end)f(of)h(the)f(line,)
-55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 4284
+55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 5087
y Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s
-(ound)e(b)m(y)i(default.)150 4438 y Ft(complete-filename)c(\(M-/\))630
-4548 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g
-(b)s(efore)f(p)s(oin)m(t.)150 4702 y Ft(possible-filename-comple)o
-(tion)o(s)24 b(\(C-x)30 b(/\))630 4812 y Fu(List)f(the)g(p)s(ossible)f
-(completions)h(of)g(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)h
-(it)f(as)g(a)f(\014lename.)150 4966 y Ft(complete-username)e(\(M-~\))
-630 5076 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)
-e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(username.)150
-5230 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30
-b(~\))630 5340 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f
-(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)f(a)g
-(username.)p eop end
-%%Page: 134 140
-TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(134)150 299 y Ft
-(complete-variable)26 b(\(M-$\))630 408 y Fu(A)m(ttempt)32
+(ound)e(b)m(y)i(default.)150 5230 y Ft(complete-filename)c(\(M-/\))630
+5340 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g
+(b)s(efore)f(p)s(oin)m(t.)p eop end
+%%Page: 140 146
+TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(140)150 299 y Ft
+(possible-filename-comple)o(tion)o(s)24 b(\(C-x)30 b(/\))630
+408 y Fu(List)f(the)g(p)s(ossible)f(completions)h(of)g(the)g(text)g(b)s
+(efore)g(p)s(oin)m(t,)g(treating)h(it)f(as)g(a)f(\014lename.)150
+577 y Ft(complete-username)e(\(M-~\))630 687 y Fu(A)m(ttempt)32
b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)s(oin)m(t,)g(treating)i
-(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150 589 y Ft
-(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 b($\))630
-699 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f(the)g(text)h
-(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h(shell)630
-809 y(v)-5 b(ariable.)150 989 y Ft(complete-hostname)26
-b(\(M-@\))630 1099 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i
+(it)f(as)f(a)h(username.)150 856 y Ft(possible-username-comple)o(tion)o
+(s)24 b(\(C-x)30 b(~\))630 965 y Fu(List)25 b(the)g(p)s(ossible)g
+(completions)h(of)f(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g
+(it)g(as)f(a)g(username.)150 1134 y Ft(complete-variable)h(\(M-$\))630
+1244 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)
+s(oin)m(t,)g(treating)i(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150
+1412 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30
+b($\))630 1522 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f
+(the)g(text)h(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h
+(shell)630 1632 y(v)-5 b(ariable.)150 1800 y Ft(complete-hostname)26
+b(\(M-@\))630 1910 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i
(b)s(efore)e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(hostname.)150
-1280 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30
-b(@\))630 1390 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g
+2079 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30
+b(@\))630 2188 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g
(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)h(treating)g(it)f(as)f(a)h
-(hostname.)150 1570 y Ft(complete-command)h(\(M-!\))630
-1680 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p)
+(hostname.)150 2357 y Ft(complete-command)h(\(M-!\))630
+2467 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p)
s(oin)m(t,)h(treating)h(it)g(as)f(a)g(command)g(name.)630
-1790 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text)
-h(against)g(aliases,)53 b(reserv)m(ed)630 1899 y(w)m(ords,)36
+2576 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text)
+h(against)g(aliases,)53 b(reserv)m(ed)630 2686 y(w)m(ords,)36
b(shell)g(functions,)h(shell)e(builtins,)i(and)e(\014nally)g
-(executable)i(\014lenames,)g(in)e(that)630 2009 y(order.)150
-2190 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29
-b(!\))630 2299 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h
+(executable)i(\014lenames,)g(in)e(that)630 2796 y(order.)150
+2964 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29
+b(!\))630 3074 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h
(text)g(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)g(a)f(command)630
-2409 y(name.)150 2590 y Ft(dynamic-complete-history)e(\(M-TAB\))630
-2699 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p)
+3184 y(name.)150 3352 y Ft(dynamic-complete-history)e(\(M-TAB\))630
+3462 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p)
s(oin)m(t,)g(comparing)h(the)f(text)h(against)h(lines)630
-2809 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i
-(matc)m(hes.)150 2990 y Ft(dabbrev-expand)26 b(\(\))630
-3099 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s
+3572 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i
+(matc)m(hes.)150 3740 y Ft(dabbrev-expand)26 b(\(\))630
+3850 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s
(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630
-3209 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e
-(completion)j(matc)m(hes.)150 3390 y Ft(complete-into-braces)25
-b(\(M-{\))630 3500 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f
+3960 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e
+(completion)j(matc)m(hes.)150 4128 y Ft(complete-into-braces)25
+b(\(M-{\))630 4238 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f
(insert)f(the)h(list)g(of)g(p)s(ossible)f(completions)i(enclosed)630
-3609 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5
+4348 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5
b(ailable)37 b(to)e(the)g(shell)g(\(see)g(Section)h(3.5.1)g([Brace)g
-(Ex-)630 3719 y(pansion],)30 b(page)h(23\).)150 3939
-y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 4122 y Ft(start-kbd-macro)
-26 b(\(C-x)j(\(\))630 4232 y Fu(Begin)i(sa)m(ving)h(the)e(c)m
+(Ex-)630 4457 y(pansion],)30 b(page)h(24\).)150 4666
+y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 4842 y Ft(start-kbd-macro)
+26 b(\(C-x)j(\(\))630 4952 y Fu(Begin)i(sa)m(ving)h(the)e(c)m
(haracters)i(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)
-g(macro.)150 4413 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630
-4522 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m
+g(macro.)150 5121 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630
+5230 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m
(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i
-(the)630 4632 y(de\014nition.)150 4813 y Ft(call-last-kbd-macro)c
-(\(C-x)k(e\))630 4922 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)
-f(macro)h(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)
-630 5032 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m
-(eyb)s(oard.)150 5213 y Ft(print-last-kbd-macro)25 b(\(\))630
-5322 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)
-e(in)i(a)f(format)h(suitable)g(for)f(the)h Fr(inputrc)k
-Fu(\014le.)p eop end
-%%Page: 135 141
-TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(135)150 299 y Fk(8.4.8)63
-b(Some)41 b(Miscellaneous)i(Commands)150 478 y Ft(re-read-init-file)26
-b(\(C-x)j(C-r\))630 587 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f
-(the)g Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h
-(bindings)d(or)i(v)-5 b(ariable)630 697 y(assignmen)m(ts)31
-b(found)e(there.)150 870 y Ft(abort)g(\(C-g\))630 979
-y Fu(Ab)s(ort)d(the)h(curren)m(t)f(editing)h(command)f(and)g(ring)h
-(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630
-1089 y(setting)j(of)g Ft(bell-style)p Fu(\).)150 1262
-y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fj(x)p
-Ft(,)g(...)o(\))630 1372 y Fu(If)35 b(the)g(meta\014ed)g(c)m(haracter)i
-Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g(that)g(is)g
-(b)s(ound)e(to)630 1481 y(the)g(corresp)s(onding)f(meta\014ed)h(lo)m(w)
-m(er)i(case)f(c)m(haracter.)50 b(The)32 b(b)s(eha)m(vior)h(is)g
-(unde\014ned)e(if)630 1591 y Fr(x)37 b Fu(is)30 b(already)h(lo)m(w)m
-(er)h(case.)150 1764 y Ft(prefix-meta)27 b(\(ESC\))630
-1873 y Fu(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62
-b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8
-b(.)630 1983 y(T)m(yping)30 b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5
-b(alen)m(t)31 b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 2156
-y Ft(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 2266 y Fu(Incremen)m(tal)h
-(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
-2439 y Ft(revert-line)27 b(\(M-r\))630 2548 y Fu(Undo)33
-b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32
-b(is)h(lik)m(e)i(executing)f(the)f Ft(undo)f Fu(command)630
-2658 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.)
-150 2831 y Ft(tilde-expand)d(\(M-&\))630 2940 y Fu(P)m(erform)j(tilde)h
-(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 3114
-y Ft(set-mark)d(\(C-@\))630 3223 y Fu(Set)33 b(the)g(mark)f(to)i(the)f
-(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g
-(supplied,)f(the)h(mark)g(is)f(set)630 3333 y(to)f(that)g(p)s(osition.)
-150 3506 y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
-3615 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43
-b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h
-(sa)m(v)m(ed)630 3725 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s
-(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 3898
-y Ft(character-search)26 b(\(C-]\))630 4008 y Fu(A)f(c)m(haracter)h(is)
-f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s
-(ccurrence)g(of)g(that)g(c)m(haracter.)630 4117 y(A)30
-b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
-(ccurrences.)150 4290 y Ft(character-search-backwar)o(d)24
-b(\(M-C-]\))630 4400 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
+(the)630 5340 y(de\014nition.)p eop end
+%%Page: 141 147
+TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(141)150 299 y Ft
+(call-last-kbd-macro)25 b(\(C-x)k(e\))630 408 y Fu(Re-execute)37
+b(the)e(last)h(k)m(eyb)s(oard)f(macro)h(de\014ned,)f(b)m(y)h(making)f
+(the)g(c)m(haracters)i(in)e(the)630 518 y(macro)c(app)s(ear)f(as)g(if)h
+(t)m(yp)s(ed)f(at)h(the)f(k)m(eyb)s(oard.)150 671 y Ft
+(print-last-kbd-macro)25 b(\(\))630 780 y Fu(Prin)m(t)30
+b(the)g(last)h(k)m(eyb)s(oard)f(macro)h(de\014ned)e(in)h(a)g(format)h
+(suitable)g(for)f(the)g Fr(inputrc)35 b Fu(\014le.)150
+973 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)150
+1141 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630 1251
+y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g
+Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d
+(or)i(v)-5 b(ariable)630 1360 y(assignmen)m(ts)31 b(found)e(there.)150
+1513 y Ft(abort)g(\(C-g\))630 1622 y Fu(Ab)s(ort)d(the)h(curren)m(t)f
+(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5
+b(ject)26 b(to)i(the)630 1732 y(setting)j(of)g Ft(bell-style)p
+Fu(\).)150 1885 y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p
+Fj(x)p Ft(,)g(...)o(\))630 1994 y Fu(If)35 b(the)g(meta\014ed)g(c)m
+(haracter)i Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g
+(that)g(is)g(b)s(ound)e(to)630 2104 y(the)g(corresp)s(onding)f
+(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32
+b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 2213 y Fr(x)37
+b Fu(is)30 b(already)h(lo)m(w)m(er)h(case.)150 2366 y
+Ft(prefix-meta)27 b(\(ESC\))630 2476 y Fu(Metafy)39 b(the)e(next)h(c)m
+(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f
+(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 2585 y(T)m(yping)30
+b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 b(alen)m(t)31
+b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 2738 y Ft(undo)e(\(C-_)g(or)h(C-x)
+g(C-u\))630 2847 y Fu(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s
+(ered)f(for)g(eac)m(h)i(line.)150 3000 y Ft(revert-line)27
+b(\(M-r\))630 3109 y Fu(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f
+(line.)49 b(This)32 b(is)h(lik)m(e)i(executing)f(the)f
+Ft(undo)f Fu(command)630 3219 y(enough)e(times)h(to)g(get)h(bac)m(k)f
+(to)g(the)f(b)s(eginning.)150 3372 y Ft(tilde-expand)d(\(M-&\))630
+3481 y Fu(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m
+(ord.)150 3634 y Ft(set-mark)d(\(C-@\))630 3743 y Fu(Set)33
+b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g
+(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g(is)f(set)630
+3853 y(to)f(that)g(p)s(osition.)150 4006 y Ft(exchange-point-and-mark)
+24 b(\(C-x)29 b(C-x\))630 4115 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)
+g(the)g(mark.)43 b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f
+(set)h(to)f(the)h(sa)m(v)m(ed)630 4225 y(p)s(osition,)f(and)e(the)i
+(old)g(cursor)e(p)s(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150
+4377 y Ft(character-search)26 b(\(C-]\))630 4487 y Fu(A)f(c)m(haracter)
+h(is)f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g
+(o)s(ccurrence)g(of)g(that)g(c)m(haracter.)630 4596 y(A)30
+b(negativ)m(e)j(argumen)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
+(ccurrences.)150 4749 y Ft(character-search-backwar)o(d)24
+b(\(M-C-]\))630 4859 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)
-g(that)630 4509 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
-(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150
-4682 y Ft(skip-csi-sequence)d(\(\))630 4792 y Fu(Read)i(enough)f(c)m
+g(that)630 4968 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(argumen)m(t)f
+(searc)m(hes)g(for)g(subsequen)m(t)e(o)s(ccurrences.)150
+5121 y Ft(skip-csi-sequence)d(\(\))630 5230 y Fu(Read)i(enough)f(c)m
(haracters)h(to)g(consume)f(a)h(m)m(ulti-k)m(ey)h(sequence)f(suc)m(h)f
-(as)g(those)h(de\014ned)630 4902 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g
+(as)g(those)h(de\014ned)630 5340 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g
(and)f(End.)60 b(Suc)m(h)37 b(sequences)g(b)s(egin)g(with)g(a)h(Con)m
-(trol)g(Sequence)630 5011 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
-b(If)36 b(this)g(sequence)h(is)g(b)s(ound)d(to)k Ft("\\)p
-Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630 5121 y(ducing)31
-b(suc)m(h)h(sequences)g(will)h(ha)m(v)m(e)g(no)f(e\013ect)h(unless)e
-(explicitly)j(b)s(ound)c(to)i(a)h(readline)630 5230 y(command,)f
-(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g(in)m(to)g(the)f
-(editing)h(bu\013er.)44 b(This)31 b(is)630 5340 y(un)m(b)s(ound)d(b)m
-(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)p
-eop end
-%%Page: 136 142
-TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(136)150 299 y Ft(insert-comment)26
-b(\(M-#\))630 408 y Fu(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h
-(the)f(v)-5 b(alue)36 b(of)g(the)g Ft(comment-begin)c
-Fu(v)-5 b(ariable)36 b(is)g(in-)630 518 y(serted)c(at)g(the)g(b)s
-(eginning)f(of)h(the)f(curren)m(t)h(line.)45 b(If)31
-b(a)h(n)m(umeric)f(argumen)m(t)h(is)g(supplied,)630 628
-y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37
-b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g(line)630
-737 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f
-Ft(comment-begin)p Fu(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g
-(otherwise)g(the)630 847 y(c)m(haracters)42 b(in)d Ft(comment-begin)e
-Fu(are)j(deleted)h(from)f(the)g(b)s(eginning)g(of)g(the)g(line.)71
-b(In)630 956 y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e
-(if)g(a)g(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37
-b(default)630 1066 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c
-Fu(causes)k(this)f(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g
-(a)g(shell)630 1176 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f
-(argumen)m(t)h(causes)g(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f
-(remo)m(v)m(ed,)630 1285 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)
-m(y)f(the)h(shell.)150 1443 y Ft(dump-functions)26 b(\(\))630
-1553 y Fu(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g(their)g(k)m(ey)
-h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630
-1663 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+(trol)g(Sequence)p eop end
+%%Page: 142 148
+TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(142)630 299 y(Indicator)37
+b(\(CSI\),)f(usually)h(ESC-[.)59 b(If)36 b(this)g(sequence)h(is)g(b)s
+(ound)d(to)k Ft("\\)p Fu(e[)p Ft(")p Fu(,)g(k)m(eys)f(pro-)630
+408 y(ducing)29 b(suc)m(h)g(sequences)g(will)h(ha)m(v)m(e)h(no)e
+(e\013ect)i(unless)d(explicitly)j(b)s(ound)d(to)i(a)f(Readline)630
+518 y(command,)j(instead)g(of)g(inserting)g(stra)m(y)h(c)m(haracters)g
+(in)m(to)g(the)f(editing)h(bu\013er.)44 b(This)31 b(is)630
+628 y(un)m(b)s(ound)d(b)m(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)
+j(ESC-[.)150 792 y Ft(insert-comment)26 b(\(M-#\))630
+902 y Fu(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5
+b(alue)36 b(of)g(the)g Ft(comment-begin)c Fu(v)-5 b(ariable)36
+b(is)g(in-)630 1011 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f
+(curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g
+(supplied,)630 1121 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55
+b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g
+(line)630 1230 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5
+b(alue)31 b(of)f Ft(comment-begin)p Fu(,)e(the)i(v)-5
+b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 1340
+y(c)m(haracters)42 b(in)d Ft(comment-begin)e Fu(are)j(deleted)h(from)f
+(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 1450
+y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e(if)g(a)g
+(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 b(default)630
+1559 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f
+(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g(a)g(shell)630
+1669 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f(argumen)m(t)h(causes)g
+(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f(remo)m(v)m(ed,)630
+1778 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.)
+150 1943 y Ft(dump-functions)26 b(\(\))630 2052 y Fu(Prin)m(t)g(all)i
+(of)e(the)h(functions)f(and)g(their)g(k)m(ey)h(bindings)e(to)j(the)e
+(Readline)h(output)f(stream.)630 2162 y(If)31 b(a)h(n)m(umeric)g
+(argumen)m(t)g(is)g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f
+(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 2271 y(it)f(can)g(b)s(e)e(made)i
+(part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29
+b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k(default.)150
+2436 y Ft(dump-variables)26 b(\(\))630 2545 y Fu(Prin)m(t)21
+b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5
+b(alues)22 b(to)g(the)f(Readline)h(output)f(stream.)630
+2655 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630
-1772 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k
+2765 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k
Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k
-(default.)150 1931 y Ft(dump-variables)26 b(\(\))630
-2040 y Fu(Prin)m(t)21 b(all)h(of)g(the)f(settable)i(v)-5
-b(ariables)22 b(and)f(their)g(v)-5 b(alues)22 b(to)g(the)f(Readline)h
-(output)f(stream.)630 2150 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)
-g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)
-m(y)g(that)630 2259 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h
-Fr(inputrc)k Fu(\014le.)41 b(This)29 b(command)h(is)h(un)m(b)s(ound)c
-(b)m(y)k(default.)150 2418 y Ft(dump-macros)c(\(\))630
-2527 y Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)
-f(b)s(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630
-2637 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
+(default.)150 2929 y Ft(dump-macros)c(\(\))630 3039 y
+Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)f(b)s
+(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630
+3148 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
(supplied,)h(the)g(output)g(is)f(formatted)i(in)e(suc)m(h)h(a)630
-2746 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
+3258 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
Fr(inputrc)35 b Fu(\014le.)41 b(This)29 b(command)h(is)g(un)m(b)s(ound)
-d(b)m(y)630 2856 y(default.)150 3014 y Ft(glob-complete-word)e(\(M-g\))
-630 3124 y Fu(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g(treated)h
-(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)630
-3233 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23
+d(b)m(y)630 3367 y(default.)150 3532 y Ft(spell-correct-word)e(\(C-x)30
+b(s\))630 3641 y Fu(P)m(erform)36 b(sp)s(elling)h(correction)h(on)e
+(the)h(curren)m(t)f(w)m(ord,)i(treating)f(it)g(as)g(a)g(directory)g(or)
+630 3751 y(\014lename,)g(in)e(the)h(same)f(w)m(a)m(y)i(as)e(the)h
+Ft(cdspell)d Fu(shell)j(option.)56 b(W)-8 b(ord)36 b(b)s(oundaries)e
+(are)630 3861 y(the)d(same)f(as)h(those)g(used)e(b)m(y)i
+Ft(shell-forward-word)p Fu(.)150 4025 y Ft(glob-complete-word)25
+b(\(M-g\))630 4134 y Fu(The)i(w)m(ord)h(b)s(efore)f(p)s(oin)m(t)h(is)g
+(treated)h(as)f(a)h(pattern)f(for)f(pathname)h(expansion,)g(with)g(an)
+630 4244 y(asterisk)d(implicitly)h(app)s(ended.)37 b(This)23
b(pattern)i(is)f(used)g(to)h(generate)h(a)e(list)h(of)g(matc)m(hing)630
-3343 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150
-3501 y Ft(glob-expand-word)c(\(C-x)j(*\))630 3611 y Fu(The)40
+4354 y(\014le)30 b(names)h(for)f(p)s(ossible)g(completions.)150
+4518 y Ft(glob-expand-word)c(\(C-x)j(*\))630 4628 y Fu(The)40
b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g(as)g(a)g(pattern)g
-(for)f(pathname)g(expansion,)k(and)630 3720 y(the)c(list)g(of)f(matc)m
+(for)f(pathname)g(expansion,)k(and)630 4737 y(the)c(list)g(of)f(matc)m
(hing)i(\014le)e(names)g(is)h(inserted,)h(replacing)g(the)e(w)m(ord.)67
-b(If)39 b(a)h(n)m(umeric)630 3830 y(argumen)m(t)31 b(is)f(supplied,)g
+b(If)39 b(a)h(n)m(umeric)630 4847 y(argumen)m(t)31 b(is)f(supplied,)g
(a)g(`)p Ft(*)p Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g
-(expansion.)150 3988 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630
-4098 y Fu(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h
+(expansion.)150 5011 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630
+5121 y Fu(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h
(b)s(een)f(generated)h(b)m(y)f Ft(glob-expand-word)630
-4208 y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.)
+5230 y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.)
50 b(If)33 b(a)h(n)m(umeric)g(argumen)m(t)g(is)f(supplied,)h(a)g(`)p
-Ft(*)p Fu(')630 4317 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g
-(expansion.)150 4475 y Ft(display-shell-version)25 b(\(C-x)k(C-v\))630
-4585 y Fu(Displa)m(y)j(v)m(ersion)e(information)h(ab)s(out)f(the)h
-(curren)m(t)f(instance)h(of)f(Bash.)150 4743 y Ft(shell-expand-line)c
-(\(M-C-e\))630 4853 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h
-(do)s(es.)55 b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g
-(expansion)630 4963 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m
-(ord)f(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630
-5072 y(page)e(22\).)150 5230 y Ft(history-expand-line)25
-b(\(M-^\))630 5340 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the)
-h(curren)m(t)f(line.)p eop end
-%%Page: 137 143
-TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(137)150 299 y Ft(magic-space)27
-b(\(\))630 408 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g
-(curren)m(t)g(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)
-630 518 y([History)31 b(In)m(teraction],)i(page)e(148\).)150
-663 y Ft(alias-expand-line)26 b(\(\))630 773 y Fu(P)m(erform)i(alias)i
-(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h
-([Aliases],)g(page)f(94\).)150 918 y Ft(history-and-alias-expand)o
-(-lin)o(e)24 b(\(\))630 1028 y Fu(P)m(erform)30 b(history)h(and)e
-(alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150
-1173 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630
-1283 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150
-1428 y Ft(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630
-1538 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f
+Ft(*)p Fu(')630 5340 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g
+(expansion.)p eop end
+%%Page: 143 149
+TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(143)150 299 y Ft
+(display-shell-version)25 b(\(C-x)k(C-v\))630 408 y Fu(Displa)m(y)j(v)m
+(ersion)e(information)h(ab)s(out)f(the)h(curren)m(t)f(instance)h(of)f
+(Bash.)150 566 y Ft(shell-expand-line)c(\(M-C-e\))630
+676 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h(do)s(es.)55
+b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g(expansion)630
+785 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m(ord)f
+(expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630
+895 y(page)e(24\).)150 1053 y Ft(history-expand-line)25
+b(\(M-^\))630 1162 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the)
+h(curren)m(t)f(line.)150 1320 y Ft(magic-space)d(\(\))630
+1429 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g
+(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)630
+1539 y([History)31 b(In)m(teraction],)i(page)e(154\).)150
+1697 y Ft(alias-expand-line)26 b(\(\))630 1806 y Fu(P)m(erform)e(alias)
+i(expansion)e(on)h(the)g(curren)m(t)f(line)h(\(see)g(Section)h(6.6)f
+([Aliases],)j(page)d(100\).)150 1964 y Ft(history-and-alias-expand)o
+(-lin)o(e)f(\(\))630 2073 y Fu(P)m(erform)30 b(history)h(and)e(alias)j
+(expansion)e(on)g(the)h(curren)m(t)f(line.)150 2231 y
+Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 2341
+y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150
+2498 y Ft(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630
+2608 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f
(command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630
-1647 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h
+2718 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h
Ft($VISUAL)p Fu(,)f Ft($EDITOR)p Fu(,)h(and)d Ft(emacs)g
-Fu(as)h(the)630 1757 y(editor,)31 b(in)f(that)h(order.)150
-1983 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 2143
+Fu(as)h(the)630 2827 y(editor,)31 b(in)f(that)h(order.)150
+3066 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 3226
y Fu(While)32 b(the)g(Readline)g(library)f(do)s(es)g(not)h(ha)m(v)m(e)h
(a)f(full)f(set)h(of)g Ft(vi)f Fu(editing)h(functions,)f(it)h(do)s(es)g
-(con)m(tain)150 2252 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f
+(con)m(tain)150 3335 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f
(the)g(line.)52 b(The)34 b(Readline)g Ft(vi)g Fu(mo)s(de)f(b)s(eha)m(v)
-m(es)i(as)f(sp)s(eci\014ed)f(in)150 2362 y(the)e Fm(posix)e
-Fu(standard.)275 2489 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv)
+m(es)i(as)f(sp)s(eci\014ed)f(in)150 3445 y(the)e Fm(posix)e
+Fu(standard.)275 3578 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv)
m(ely)j(b)s(et)m(w)m(een)d Ft(emacs)f Fu(and)g Ft(vi)g
Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150
-2599 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p
+3688 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p
Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j
-(page)e(62\).)83 b(The)150 2709 y(Readline)31 b(default)g(is)f
-Ft(emacs)f Fu(mo)s(de.)275 2836 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f
+(page)e(67\).)83 b(The)150 3798 y(Readline)31 b(default)g(is)f
+Ft(emacs)f Fu(mo)s(de.)275 3931 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f
(in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g
-(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 2946 y(had)f(t)m(yp)s
+(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 4041 y(had)f(t)m(yp)s
(ed)g(an)g(`)p Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f
Fu(switc)m(hes)i(y)m(ou)g(in)m(to)h(`command')e(mo)s(de,)h(where)e(y)m
-(ou)i(can)g(edit)g(the)150 3055 y(text)35 b(of)f(the)g(line)g(with)f
+(ou)i(can)g(edit)g(the)150 4150 y(text)35 b(of)f(the)g(line)g(with)f
(the)h(standard)f Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)
-f(to)f(previous)g(history)f(lines)h(with)150 3165 y(`)p
+f(to)f(previous)g(history)f(lines)h(with)150 4260 y(`)p
Ft(k)p Fu(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p
-Ft(j)p Fu(',)g(and)g(so)h(forth.)150 3391 y Fs(8.6)68
-b(Programmable)47 b(Completion)150 3551 y Fu(When)25
+Ft(j)p Fu(',)g(and)g(so)h(forth.)150 4499 y Fs(8.6)68
+b(Programmable)47 b(Completion)150 4658 y Fu(When)25
b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)g
-(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150 3660
+(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150 4768
y(sp)s(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 b Fu(\))39
b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Ft(complete)d
-Fu(builtin)j(\(see)g(Section)h(8.7)150 3770 y([Programmable)h
-(Completion)f(Builtins],)k(page)d(139\),)j(the)c(programmable)g
-(completion)i(facilities)150 3880 y(are)31 b(in)m(v)m(ok)m(ed.)275
-4007 y(First,)23 b(the)e(command)g(name)g(is)h(iden)m(ti\014ed.)37
+Fu(builtin)j(\(see)g(Section)h(8.7)150 4878 y([Programmable)h
+(Completion)f(Builtins],)k(page)d(146\),)j(the)c(programmable)g
+(completion)i(facilities)150 4987 y(are)31 b(in)m(v)m(ok)m(ed.)275
+5121 y(First,)23 b(the)e(command)g(name)g(is)h(iden)m(ti\014ed.)37
b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f(de\014ned)g(for)h(that)h
-(command,)150 4117 y(the)44 b(compsp)s(ec)g(is)g(used)f(to)h(generate)i
+(command,)150 5230 y(the)44 b(compsp)s(ec)g(is)g(used)f(to)h(generate)i
(the)e(list)g(of)g(p)s(ossible)g(completions)h(for)e(the)h(w)m(ord.)81
-b(If)44 b(the)150 4226 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h
+b(If)44 b(the)150 5340 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h
(string)f(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an)
-h(empt)m(y)150 4336 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f
-(with)h(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d
-Fu(is)i(used.)40 b(If)29 b(the)g(command)g(w)m(ord)150
-4445 y(is)e(a)h(full)e(pathname,)i(a)g(compsp)s(ec)e(for)h(the)g(full)g
-(pathname)g(is)g(searc)m(hed)h(for)f(\014rst.)39 b(If)26
-b(no)h(compsp)s(ec)g(is)150 4555 y(found)22 b(for)g(the)h(full)g
-(pathname,)h(an)f(attempt)h(is)f(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f
-(for)h(the)g(p)s(ortion)f(follo)m(wing)150 4665 y(the)34
-b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i(do)e(not)g
-(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f(de\014ned)f
-(with)150 4774 y(the)k Ft(-D)g Fu(option)g(to)h Ft(complete)d
-Fu(is)i(used)g(as)g(the)g(default.)61 b(If)37 b(there)g(is)h(no)f
-(default)g(compsp)s(ec,)i(Bash)150 4884 y(attempts)e(alias)h(expansion)
-e(on)g(the)h(command)f(w)m(ord)g(as)h(a)f(\014nal)g(resort,)j(and)c
-(attempts)j(to)f(\014nd)e(a)150 4993 y(compsp)s(ec)30
-b(for)g(the)h(command)f(w)m(ord)g(from)g(an)m(y)h(successful)f
-(expansion)275 5121 y(Once)k(a)g(compsp)s(ec)g(has)g(b)s(een)f(found,)h
-(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f(matc)m(hing)h(w)m
-(ords.)51 b(If)150 5230 y(a)37 b(compsp)s(ec)f(is)g(not)h(found,)f(the)
-h(default)f(Bash)h(completion)g(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f
-(Section)g(8.4.6)150 5340 y([Commands)30 b(F)-8 b(or)31
-b(Completion],)g(page)g(133\))h(is)f(p)s(erformed.)p
-eop end
-%%Page: 138 144
-TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(138)275 299 y(First,)31
-b(the)g(actions)g(sp)s(eci\014ed)f(b)m(y)h(the)f(compsp)s(ec)h(are)g
-(used.)40 b(Only)30 b(matc)m(hes)i(whic)m(h)e(are)h(pre\014xed)150
-408 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f(completed)h(are)g(returned.)44
-b(When)31 b(the)h Ft(-f)f Fu(or)h Ft(-d)f Fu(option)h(is)f(used)g(for)h
-(\014lename)150 518 y(or)e(directory)h(name)f(completion,)i(the)e
-(shell)h(v)-5 b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter)
-g(the)f(matc)m(hes.)42 b(See)150 628 y(Section)31 b(5.2)h([Bash)e(V)-8
-b(ariables],)33 b(page)e(73,)g(for)f(a)h(description)g(of)f
-Ft(FIGNORE)p Fu(.)275 769 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f
+h(empt)m(y)p eop end
+%%Page: 144 150
+TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(144)150 299 y(line\),)30
+b(an)m(y)g(compsp)s(ec)f(de\014ned)f(with)h(the)h Ft(-E)e
+Fu(option)i(to)g Ft(complete)d Fu(is)i(used.)40 b(If)29
+b(the)g(command)g(w)m(ord)150 408 y(is)e(a)h(full)e(pathname,)i(a)g
+(compsp)s(ec)e(for)h(the)g(full)g(pathname)g(is)g(searc)m(hed)h(for)f
+(\014rst.)39 b(If)26 b(no)h(compsp)s(ec)g(is)150 518
+y(found)22 b(for)g(the)h(full)g(pathname,)h(an)f(attempt)h(is)f(made)g
+(to)g(\014nd)f(a)h(compsp)s(ec)f(for)h(the)g(p)s(ortion)f(follo)m(wing)
+150 628 y(the)34 b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i
+(do)e(not)g(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f
+(de\014ned)f(with)150 737 y(the)k Ft(-D)g Fu(option)g(to)h
+Ft(complete)d Fu(is)i(used)g(as)g(the)g(default.)61 b(If)37
+b(there)g(is)h(no)f(default)g(compsp)s(ec,)i(Bash)150
+847 y(attempts)e(alias)h(expansion)e(on)g(the)h(command)f(w)m(ord)g(as)
+h(a)f(\014nal)g(resort,)j(and)c(attempts)j(to)f(\014nd)e(a)150
+956 y(compsp)s(ec)30 b(for)g(the)h(command)f(w)m(ord)g(from)g(an)m(y)h
+(successful)f(expansion)275 1113 y(Once)k(a)g(compsp)s(ec)g(has)g(b)s
+(een)f(found,)h(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f
+(matc)m(hing)h(w)m(ords.)51 b(If)150 1223 y(a)37 b(compsp)s(ec)f(is)g
+(not)h(found,)f(the)h(default)f(Bash)h(completion)g(describ)s(ed)e(ab)s
+(o)m(v)m(e)j(\(see)f(Section)g(8.4.6)150 1332 y([Commands)30
+b(F)-8 b(or)31 b(Completion],)g(page)g(139\))h(is)f(p)s(erformed.)275
+1489 y(First,)g(the)g(actions)g(sp)s(eci\014ed)f(b)m(y)h(the)f(compsp)s
+(ec)h(are)g(used.)40 b(Only)30 b(matc)m(hes)i(whic)m(h)e(are)h
+(pre\014xed)150 1598 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f(completed)h
+(are)g(returned.)44 b(When)31 b(the)h Ft(-f)f Fu(or)h
+Ft(-d)f Fu(option)h(is)f(used)g(for)h(\014lename)150
+1708 y(or)e(directory)h(name)f(completion,)i(the)e(shell)h(v)-5
+b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter)g(the)f(matc)m
+(hes.)42 b(See)150 1817 y(Section)31 b(5.2)h([Bash)e(V)-8
+b(ariables],)33 b(page)e(78,)g(for)f(a)h(description)g(of)f
+Ft(FIGNORE)p Fu(.)275 1974 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f
(b)m(y)g(a)h(\014lename)f(expansion)h(pattern)f(to)h(the)g
-Ft(-G)e Fu(option)i(are)g(generated)150 878 y(next.)41
+Ft(-G)e Fu(option)i(are)g(generated)150 2084 y(next.)41
b(The)29 b(w)m(ords)g(generated)h(b)m(y)g(the)g(pattern)f(need)h(not)f
(matc)m(h)i(the)f(w)m(ord)f(b)s(eing)g(completed.)41
-b(The)150 988 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32
+b(The)150 2193 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32
b(is)g(not)g(used)e(to)i(\014lter)g(the)g(matc)m(hes,)h(but)d(the)i
-Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 1097 y(is)30
-b(used.)275 1238 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the)
+Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 2303 y(is)30
+b(used.)275 2459 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the)
g(argumen)m(t)h(to)g(the)f Ft(-W)f Fu(option)i(is)f(considered.)60
-b(The)37 b(string)150 1348 y(is)c(\014rst)e(split)i(using)f(the)h(c)m
+b(The)37 b(string)150 2569 y(is)c(\014rst)e(split)i(using)f(the)h(c)m
(haracters)h(in)e(the)h Ft(IFS)e Fu(sp)s(ecial)j(v)-5
b(ariable)33 b(as)g(delimiters.)48 b(Shell)32 b(quoting)h(is)150
-1457 y(honored)f(within)h(the)g(string,)h(in)f(order)f(to)i(pro)m(vide)
+2679 y(honored)f(within)h(the)g(string,)h(in)f(order)f(to)i(pro)m(vide)
f(a)h(mec)m(hanism)f(for)g(the)g(w)m(ords)g(to)g(con)m(tain)i(shell)150
-1567 y(metac)m(haracters)e(or)e(c)m(haracters)i(in)e(the)g(v)-5
+2788 y(metac)m(haracters)e(or)e(c)m(haracters)i(in)e(the)g(v)-5
b(alue)31 b(of)g Ft(IFS)p Fu(.)42 b(Eac)m(h)32 b(w)m(ord)e(is)h(then)g
-(expanded)f(using)h(brace)150 1677 y(expansion,)g(tilde)h(expansion,)f
+(expanded)f(using)h(brace)150 2898 y(expansion,)g(tilde)h(expansion,)f
(parameter)g(and)g(v)-5 b(ariable)32 b(expansion,)f(command)f
-(substitution,)i(and)150 1786 y(arithmetic)c(expansion,)f(as)g(describ)
+(substitution,)i(and)150 3007 y(arithmetic)c(expansion,)f(as)g(describ)
s(ed)e(ab)s(o)m(v)m(e)i(\(see)h(Section)f(3.5)g([Shell)g(Expansions],)g
-(page)g(22\).)40 b(The)150 1896 y(results)23 b(are)h(split)g(using)f
+(page)g(24\).)40 b(The)150 3117 y(results)23 b(are)h(split)g(using)f
(the)h(rules)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)g(Section)f(3.5.7)
-h([W)-8 b(ord)24 b(Splitting],)i(page)e(32\).)150 2005
+h([W)-8 b(ord)24 b(Splitting],)i(page)e(35\).)150 3226
y(The)j(results)h(of)f(the)h(expansion)g(are)g(pre\014x-matc)m(hed)g
(against)h(the)f(w)m(ord)f(b)s(eing)g(completed,)j(and)d(the)150
-2115 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f
-(completions.)275 2256 y(After)f(these)g(matc)m(hes)i(ha)m(v)m(e)f(b)s
+3336 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f
+(completions.)275 3493 y(After)f(these)g(matc)m(hes)i(ha)m(v)m(e)f(b)s
(een)f(generated,)h(an)m(y)g(shell)f(function)g(or)g(command)g(sp)s
-(eci\014ed)f(with)150 2365 y(the)36 b Ft(-F)f Fu(and)g
+(eci\014ed)f(with)150 3602 y(the)36 b Ft(-F)f Fu(and)g
Ft(-C)g Fu(options)h(is)g(in)m(v)m(ok)m(ed.)59 b(When)35
b(the)h(command)g(or)f(function)h(is)g(in)m(v)m(ok)m(ed,)i(the)e
-Ft(COMP_)150 2475 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p
+Ft(COMP_)150 3712 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p
Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e Ft(COMP_TYPE)f Fu(v)-5
b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed)
-150 2585 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8
-b(ariables],)36 b(page)d(73\).)50 b(If)33 b(a)g(shell)g(function)g(is)g
-(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 2694 y Ft(COMP_WORDS)j
+150 3821 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8
+b(ariables],)36 b(page)d(78\).)50 b(If)33 b(a)g(shell)g(function)g(is)g
+(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 3931 y Ft(COMP_WORDS)j
Fu(and)i Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74
-b(When)41 b(the)h(function)f(or)h(command)f(is)150 2804
+b(When)41 b(the)h(function)f(or)h(command)f(is)150 4041
y(in)m(v)m(ok)m(ed,)c(the)e(\014rst)f(argumen)m(t)h(\($1\))h(is)e(the)h
(name)g(of)f(the)h(command)f(whose)h(argumen)m(ts)f(are)h(b)s(eing)150
-2913 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g
+4150 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g
(w)m(ord)f(b)s(eing)g(completed,)i(and)e(the)h(third)e(argumen)m(t)150
-3023 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s
+4260 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s
(eing)g(completed)i(on)e(the)h(curren)m(t)f(command)h(line.)65
-b(No)150 3133 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g
+b(No)150 4369 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g
(against)h(the)e(w)m(ord)g(b)s(eing)f(completed)i(is)g(p)s(erformed;)f
-(the)150 3242 y(function)d(or)g(command)h(has)f(complete)i(freedom)e
-(in)g(generating)h(the)g(matc)m(hes.)275 3383 y(An)m(y)j(function)h(sp)
+(the)150 4479 y(function)d(or)g(command)h(has)f(complete)i(freedom)e
+(in)g(generating)h(the)g(matc)m(hes.)275 4635 y(An)m(y)j(function)h(sp)
s(eci\014ed)f(with)g Ft(-F)g Fu(is)h(in)m(v)m(ok)m(ed)h(\014rst.)53
b(The)35 b(function)f(ma)m(y)h(use)g(an)m(y)g(of)g(the)g(shell)150
-3493 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d
+4745 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d
Fu(and)i Ft(compopt)e Fu(builtins)i(describ)s(ed)f(b)s(elo)m(w)h(\(see)
-i(Section)f(8.7)150 3602 y([Programmable)31 b(Completion)h(Builtins],)f
-(page)h(139\),)g(to)g(generate)g(the)f(matc)m(hes.)42
-b(It)31 b(m)m(ust)g(put)f(the)150 3712 y(p)s(ossible)g(completions)h
+i(Section)f(8.7)150 4855 y([Programmable)31 b(Completion)h(Builtins],)f
+(page)h(146\),)g(to)g(generate)g(the)f(matc)m(hes.)42
+b(It)31 b(m)m(ust)g(put)f(the)150 4964 y(p)s(ossible)g(completions)h
(in)f(the)h Ft(COMPREPLY)d Fu(arra)m(y)j(v)-5 b(ariable,)31
-b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 3853 y(Next,)26
+b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 5121 y(Next,)26
b(an)m(y)f(command)f(sp)s(eci\014ed)g(with)g(the)h Ft(-C)f
Fu(option)h(is)f(in)m(v)m(ok)m(ed)i(in)e(an)g(en)m(vironmen)m(t)h
-(equiv)-5 b(alen)m(t)150 3962 y(to)26 b(command)e(substitution.)39
+(equiv)-5 b(alen)m(t)150 5230 y(to)26 b(command)e(substitution.)39
b(It)25 b(should)f(prin)m(t)h(a)g(list)h(of)f(completions,)i(one)e(p)s
-(er)f(line,)j(to)f(the)f(standard)150 4072 y(output.)40
+(er)f(line,)j(to)f(the)f(standard)150 5340 y(output.)40
b(Bac)m(kslash)32 b(ma)m(y)f(b)s(e)f(used)g(to)h(escap)s(e)g(a)f
-(newline,)h(if)f(necessary)-8 b(.)275 4213 y(After)24
+(newline,)h(if)f(necessary)-8 b(.)p eop end
+%%Page: 145 151
+TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(145)275 299 y(After)24
b(all)i(of)f(the)f(p)s(ossible)g(completions)i(are)f(generated,)i(an)m
(y)e(\014lter)g(sp)s(eci\014ed)e(with)i(the)g Ft(-X)e
-Fu(option)150 4322 y(is)34 b(applied)g(to)g(the)h(list.)52
+Fu(option)150 408 y(is)34 b(applied)g(to)g(the)h(list.)52
b(The)33 b(\014lter)h(is)g(a)h(pattern)f(as)g(used)f(for)h(pathname)g
-(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 4432
+(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 518
y(pattern)28 b(is)f(replaced)h(with)g(the)f(text)i(of)f(the)f(w)m(ord)h
(b)s(eing)f(completed.)40 b(A)28 b(literal)h(`)p Ft(&)p
-Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 4542 y(with)38
+Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 628 y(with)38
b(a)h(bac)m(kslash;)k(the)38 b(bac)m(kslash)h(is)g(remo)m(v)m(ed)g(b)s
(efore)f(attempting)h(a)g(matc)m(h.)65 b(An)m(y)39 b(completion)150
-4651 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m
+737 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m
(ed)h(from)f(the)h(list.)44 b(A)32 b(leading)g(`)p Ft(!)p
-Fu(')f(negates)i(the)f(pattern;)150 4761 y(in)d(this)g(case)h(an)m(y)g
+Fu(')f(negates)i(the)f(pattern;)150 847 y(in)d(this)g(case)h(an)m(y)g
(completion)h(not)e(matc)m(hing)h(the)g(pattern)f(will)h(b)s(e)e(remo)m
-(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 4870 y
+(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 956 y
Fu(shell)k(option)f(\(see)i(the)e(description)g(of)h
Ft(shopt)e Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g
-(66\))h(is)150 4980 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e
+(71\))h(is)150 1066 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e
(without)h(regard)g(to)h(the)g(case)g(of)g(alphab)s(etic)g(c)m
-(haracters.)275 5121 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f
+(haracters.)275 1203 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f
(su\016x)h(sp)s(eci\014ed)f(with)i(the)f Ft(-P)g Fu(and)g
-Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 5230
+Ft(-S)f Fu(options)i(are)g(added)f(to)h(eac)m(h)150 1313
y(mem)m(b)s(er)31 b(of)g(the)h(completion)h(list,)f(and)f(the)h(result)
f(is)h(returned)e(to)i(the)g(Readline)g(completion)h(co)s(de)150
-5340 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)p
-eop end
-%%Page: 139 145
-TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(139)275 299 y(If)27
-b(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h(an)m(y)f
-(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d Fu(op-)150
-408 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d Fu(when)h(the)h
-(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h(completion)150
-518 y(is)h(attempted.)275 653 y(If)35 b(the)g Ft(-o)30
-b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i Ft(complete)e
-Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150
-763 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h
+1422 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275
+1559 y(If)d(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h
+(an)m(y)f(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d
+Fu(op-)150 1669 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d
+Fu(when)h(the)h(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h
+(completion)150 1778 y(is)h(attempted.)275 1915 y(If)35
+b(the)g Ft(-o)30 b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i
+Ft(complete)e Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150
+2025 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h
(matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h(the)150
-873 y(other)31 b(actions.)275 1008 y(By)g(default,)i(if)e(a)h(compsp)s
+2134 y(other)31 b(actions.)275 2271 y(By)g(default,)i(if)e(a)h(compsp)s
(ec)f(is)h(found,)f(whatev)m(er)h(it)g(generates)h(is)e(returned)g(to)h
-(the)g(completion)150 1117 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g
+(the)g(completion)150 2381 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g
(p)s(ossible)f(completions.)39 b(The)20 b(default)h(Bash)g(completions)
-h(are)g(not)f(attempted,)150 1227 y(and)30 b(the)g(Readline)h(default)f
+h(are)g(not)f(attempted,)150 2491 y(and)30 b(the)g(Readline)h(default)f
(of)g(\014lename)h(completion)g(is)f(disabled.)41 b(If)29
-b(the)i Ft(-o)e(bashdefault)e Fu(option)150 1337 y(w)m(as)d(supplied)e
+b(the)i Ft(-o)e(bashdefault)e Fu(option)150 2600 y(w)m(as)d(supplied)e
(to)j Ft(complete)c Fu(when)i(the)g(compsp)s(ec)h(w)m(as)g(de\014ned,)g
-(the)f(default)h(Bash)g(completions)h(are)150 1446 y(attempted)j(if)f
+(the)f(default)h(Bash)g(completions)h(are)150 2710 y(attempted)j(if)f
(the)h(compsp)s(ec)f(generates)h(no)f(matc)m(hes.)41
b(If)27 b(the)g Ft(-o)j(default)25 b Fu(option)j(w)m(as)f(supplied)f
-(to)150 1556 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i
+(to)150 2819 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i
(de\014ned,)e(Readline's)i(default)f(completion)h(will)f(b)s(e)f(p)s
-(erformed)150 1665 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,)
+(erformed)150 2929 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,)
g(the)g(default)f(Bash)h(completions\))h(generate)g(no)e(matc)m(hes.)
-275 1801 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g
+275 3066 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g
(name)f(completion)h(is)f(desired,)i(the)e(programmable)150
-1910 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d
+3176 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d
(a)i(slash)g(to)g(completed)h(names)e(whic)m(h)h(are)g(sym-)150
-2020 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5
+3285 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5
b(ject)40 b(to)h(the)f(v)-5 b(alue)41 b(of)f(the)g Fr(mark-directories)
-45 b Fu(Readline)c(v)-5 b(ariable,)150 2130 y(regardless)31
+45 b Fu(Readline)c(v)-5 b(ariable,)150 3395 y(regardless)31
b(of)f(the)h(setting)g(of)g(the)f Fr(mark-symlink)m(ed-directories)36
-b Fu(Readline)31 b(v)-5 b(ariable.)275 2265 y(There)25
+b Fu(Readline)31 b(v)-5 b(ariable.)275 3532 y(There)25
b(is)i(some)g(supp)s(ort)e(for)h(dynamically)h(mo)s(difying)f
(completions.)40 b(This)26 b(is)g(most)h(useful)f(when)150
-2374 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion)
+3641 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion)
g(sp)s(eci\014ed)f(with)g Ft(-D)p Fu(.)72 b(It's)42 b(p)s(ossible)f
-(for)g(shell)150 2484 y(functions)28 b(executed)h(as)f(completion)i
+(for)g(shell)150 3751 y(functions)28 b(executed)h(as)f(completion)i
(handlers)d(to)i(indicate)g(that)g(completion)g(should)e(b)s(e)h
-(retried)g(b)m(y)150 2594 y(returning)j(an)i(exit)g(status)f(of)h(124.)
+(retried)g(b)m(y)150 3861 y(returning)j(an)i(exit)g(status)f(of)h(124.)
48 b(If)31 b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j
-(the)e(compsp)s(ec)150 2703 y(asso)s(ciated)43 b(with)e(the)g(command)g
+(the)e(compsp)s(ec)150 3970 y(asso)s(ciated)43 b(with)e(the)g(command)g
(on)g(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e
-(as)i(the)150 2813 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f
+(as)i(the)150 4080 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f
(is)g(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the)
-150 2922 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new)
+150 4189 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new)
e(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g
-(set)g(of)150 3032 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically)
+(set)g(of)150 4299 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically)
i(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g
-(loaded)150 3142 y(all)g(at)g(once.)275 3277 y(F)-8 b(or)38
+(loaded)150 4408 y(all)g(at)g(once.)275 4545 y(F)-8 b(or)38
b(instance,)h(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp)
s(ecs,)i(eac)m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150
-3386 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e
+4655 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e
(follo)m(wing)h(default)f(completion)h(function)e(w)m(ould)150
-3496 y(load)31 b(completions)g(dynamically:)390 3631
-y Ft(_completion_loader\(\))390 3741 y({)581 3851 y(.)47
+4765 y(load)31 b(completions)g(dynamically:)390 4902
+y Ft(_completion_loader\(\))390 5011 y({)581 5121 y(.)47
b("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g
-(return)f(124)390 3960 y(})390 4070 y(complete)g(-D)h(-F)g
-(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)150
-4312 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150
-4471 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5
-b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h
-(facilities:)150 4581 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f
-(argumen)m(ts)h(to)g(a)g(particular)g(command)f(are)h(to)g(b)s(e)f
-(completed,)j(and)d(t)m(w)m(o)150 4690 y(to)e(mo)s(dify)f(the)g
-(completion)i(as)e(it)h(is)g(happ)s(ening.)150 4851 y
-Ft(compgen)870 4986 y(compgen)46 b([)p Fj(option)p Ft(])f([)p
-Fj(word)p Ft(])630 5121 y Fu(Generate)27 b(p)s(ossible)e(completion)i
-(matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g
-Fr(option)p Fu(s,)h(whic)m(h)630 5230 y(ma)m(y)32 b(b)s(e)f(an)m(y)h
-(option)g(accepted)g(b)m(y)g(the)f Ft(complete)f Fu(builtin)h(with)g
-(the)g(exception)i(of)f Ft(-p)630 5340 y Fu(and)39 b
-Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m(hes)g(to)g(the)g(standard)f
-(output.)68 b(When)39 b(using)g(the)h Ft(-F)p eop end
-%%Page: 140 146
-TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(140)630 299 y(or)33
-b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33 b(shell)g(v)-5
-b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g(completion)630
-408 y(facilities,)g(while)d(a)m(v)-5 b(ailable,)33 b(will)e(not)g(ha)m
-(v)m(e)g(useful)f(v)-5 b(alues.)630 555 y(The)34 b(matc)m(hes)h(will)g
-(b)s(e)f(generated)h(in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h
-(programmable)f(com-)630 664 y(pletion)d(co)s(de)g(had)f(generated)i
-(them)e(directly)i(from)e(a)h(completion)h(sp)s(eci\014cation)f(with)
-630 774 y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j
-Fu(is)d(sp)s(eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g
-Fr(w)m(ord)j Fu(will)630 883 y(b)s(e)d(displa)m(y)m(ed.)630
-1029 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in)
+(return)f(124)390 5230 y(})390 5340 y(complete)g(-D)h(-F)g
+(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)p
+eop end
+%%Page: 146 152
+TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(146)150 299 y Fs(8.7)68
+b(Programmable)47 b(Completion)f(Builtins)150 458 y Fu(Three)21
+b(builtin)g(commands)f(are)i(a)m(v)-5 b(ailable)24 b(to)e(manipulate)f
+(the)h(programmable)f(completion)h(facilities:)150 568
+y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f(argumen)m(ts)h(to)g(a)g
+(particular)g(command)f(are)h(to)g(b)s(e)f(completed,)j(and)d(t)m(w)m
+(o)150 677 y(to)e(mo)s(dify)f(the)g(completion)i(as)e(it)h(is)g(happ)s
+(ening.)150 893 y Ft(compgen)870 1046 y(compgen)46 b([)p
+Fj(option)p Ft(])f([)p Fj(word)p Ft(])630 1199 y Fu(Generate)27
+b(p)s(ossible)e(completion)i(matc)m(hes)g(for)e Fr(w)m(ord)k
+Fu(according)e(to)f(the)g Fr(option)p Fu(s,)h(whic)m(h)630
+1309 y(ma)m(y)32 b(b)s(e)f(an)m(y)h(option)g(accepted)g(b)m(y)g(the)f
+Ft(complete)f Fu(builtin)h(with)g(the)g(exception)i(of)f
+Ft(-p)630 1418 y Fu(and)39 b Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m
+(hes)g(to)g(the)g(standard)f(output.)68 b(When)39 b(using)g(the)h
+Ft(-F)630 1528 y Fu(or)33 b Ft(-C)f Fu(options,)i(the)e(v)-5
+b(arious)33 b(shell)g(v)-5 b(ariables)33 b(set)g(b)m(y)g(the)g
+(programmable)g(completion)630 1638 y(facilities,)g(while)d(a)m(v)-5
+b(ailable,)33 b(will)e(not)g(ha)m(v)m(e)g(useful)f(v)-5
+b(alues.)630 1791 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h
+(in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h(programmable)f(com-)630
+1900 y(pletion)d(co)s(de)g(had)f(generated)i(them)e(directly)i(from)e
+(a)h(completion)h(sp)s(eci\014cation)f(with)630 2010
+y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j Fu(is)d(sp)s
+(eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g
+Fr(w)m(ord)j Fu(will)630 2120 y(b)s(e)d(displa)m(y)m(ed.)630
+2273 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in)
m(v)-5 b(alid)25 b(option)g(is)g(supplied,)f(or)h(no)g(matc)m(hes)g(w)m
-(ere)630 1139 y(generated.)150 1322 y Ft(complete)870
-1468 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p
-Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 1577
-y(G)i Fj(globpat)p Ft(])870 1687 y([-W)g Fj(wordlist)p
+(ere)630 2382 y(generated.)150 2579 y Ft(complete)870
+2732 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p
+Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 2842
+y(G)i Fj(globpat)p Ft(])870 2951 y([-W)g Fj(wordlist)p
Ft(])e([-F)i Fj(function)p Ft(])e([-C)i Fj(command)p
-Ft(])f([-X)h Fj(filterpat)p Ft(])870 1797 y([-P)g Fj(prefix)p
+Ft(])f([-X)h Fj(filterpat)p Ft(])870 3061 y([-P)g Fj(prefix)p
Ft(])f([-S)h Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f
-Ft(...])870 1906 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f
-Ft(...)o(])630 2052 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i
+Ft(...])870 3171 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f
+Ft(...)o(])630 3324 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i
(eac)m(h)g Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63
-b(If)38 b(the)f Ft(-p)g Fu(option)630 2162 y(is)30 b(supplied,)e(or)i
+b(If)38 b(the)f Ft(-p)g Fu(option)630 3433 y(is)30 b(supplied,)e(or)i
(if)g(no)f(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s
-(eci\014cations)g(are)630 2271 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g
+(eci\014cations)g(are)630 3543 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g
(that)h(allo)m(ws)g(them)e(to)i(b)s(e)e(reused)f(as)i(input.)38
-b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 2381
+b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 3653
y(a)i(completion)h(sp)s(eci\014cation)f(for)g(eac)m(h)h
Fr(name)p Fu(,)f(or,)h(if)e(no)h Fr(name)5 b Fu(s)27
-b(are)h(supplied,)g(all)g(com-)630 2491 y(pletion)i(sp)s
+b(are)h(supplied,)g(all)g(com-)630 3762 y(pletion)i(sp)s
(eci\014cations.)42 b(The)29 b Ft(-D)g Fu(option)h(indicates)h(that)f
-(other)g(supplied)e(options)j(and)630 2600 y(actions)c(should)e(apply)g
+(other)g(supplied)e(options)j(and)630 3872 y(actions)c(should)e(apply)g
(to)i(the)f(\\default")h(command)e(completion;)k(that)e(is,)g
-(completion)630 2710 y(attempted)g(on)f(a)h(command)f(for)g(whic)m(h)g
+(completion)630 3981 y(attempted)g(on)f(a)h(command)f(for)g(whic)m(h)g
(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.)630
-2819 y(The)e Ft(-E)g Fu(option)h(indicates)g(that)g(other)g(supplied)e
-(options)h(and)g(actions)i(should)d(apply)h(to)630 2929
+4091 y(The)e Ft(-E)g Fu(option)h(indicates)g(that)g(other)g(supplied)e
+(options)h(and)g(actions)i(should)d(apply)h(to)630 4200
y(\\empt)m(y")33 b(command)e(completion;)i(that)f(is,)g(completion)h
-(attempted)f(on)g(a)f(blank)g(line.)630 3039 y(The)24
+(attempted)f(on)g(a)f(blank)g(line.)630 4310 y(The)24
b Ft(-I)g Fu(option)h(indicates)g(that)g(other)g(supplied)e(options)h
-(and)g(actions)i(should)d(apply)h(to)630 3148 y(completion)29
+(and)g(actions)i(should)d(apply)h(to)630 4420 y(completion)29
b(on)g(the)f(initial)h(non-assignmen)m(t)g(w)m(ord)f(on)g(the)g(line,)i
-(or)e(after)h(a)f(command)630 3258 y(delimiter)41 b(suc)m(h)g(as)f(`)p
+(or)e(after)h(a)f(command)630 4529 y(delimiter)41 b(suc)m(h)g(as)f(`)p
Ft(;)p Fu(')h(or)g(`)p Ft(|)p Fu(',)i(whic)m(h)e(is)f(usually)h
-(command)f(name)h(completion.)72 b(If)630 3367 y(m)m(ultiple)26
+(command)f(name)h(completion.)72 b(If)630 4639 y(m)m(ultiple)26
b(options)g(are)g(supplied,)g(the)f Ft(-D)g Fu(option)h(tak)m(es)i
(precedence)e(o)m(v)m(er)g Ft(-E)p Fu(,)h(and)e(b)s(oth)630
-3477 y(tak)m(e)34 b(precedence)f(o)m(v)m(er)h Ft(-I)p
+4748 y(tak)m(e)34 b(precedence)f(o)m(v)m(er)h Ft(-I)p
Fu(.)47 b(If)32 b(an)m(y)h(of)g Ft(-D)p Fu(,)g Ft(-E)p
Fu(,)f(or)h Ft(-I)f Fu(are)h(supplied,)f(an)m(y)h(other)g
-Fr(name)630 3587 y Fu(argumen)m(ts)k(are)g(ignored;)j(these)d
+Fr(name)630 4858 y Fu(argumen)m(ts)k(are)g(ignored;)j(these)d
(completions)h(only)e(apply)g(to)i(the)f(case)g(sp)s(eci\014ed)f(b)m(y)
-630 3696 y(the)31 b(option.)630 3842 y(The)e(pro)s(cess)g(of)h
+630 4968 y(the)31 b(option.)630 5121 y(The)e(pro)s(cess)g(of)h
(applying)g(these)g(completion)g(sp)s(eci\014cations)h(when)d(w)m(ord)i
-(completion)630 3952 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m
+(completion)630 5230 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m
(v)m(e)j(\(see)f(Section)g(8.6)g([Programmable)g(Completion],)630
-4061 y(page)31 b(137\).)630 4208 y(Other)d(options,)i(if)f(sp)s
-(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40
-b(The)29 b(argumen)m(ts)g(to)h(the)630 4317 y Ft(-G)p
-Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h Fu(options)h(\(and,)h(if)f
-(necessary)-8 b(,)42 b(the)e Ft(-P)f Fu(and)f Ft(-S)h
-Fu(options\))h(should)f(b)s(e)630 4427 y(quoted)28 b(to)h(protect)g
-(them)f(from)f(expansion)h(b)s(efore)g(the)g Ft(complete)e
-Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 4609 y Ft(-o)i
-Fj(comp-option)1110 4719 y Fu(The)c Fr(comp-option)i
+5340 y(page)31 b(143\).)p eop end
+%%Page: 147 153
+TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(147)630 299 y(Other)28
+b(options,)i(if)f(sp)s(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i
+(meanings.)40 b(The)29 b(argumen)m(ts)g(to)h(the)630
+408 y Ft(-G)p Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h
+Fu(options)h(\(and,)h(if)f(necessary)-8 b(,)42 b(the)e
+Ft(-P)f Fu(and)f Ft(-S)h Fu(options\))h(should)f(b)s(e)630
+518 y(quoted)28 b(to)h(protect)g(them)f(from)f(expansion)h(b)s(efore)g
+(the)g Ft(complete)e Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630
+669 y Ft(-o)i Fj(comp-option)1110 778 y Fu(The)c Fr(comp-option)i
Fu(con)m(trols)g(sev)m(eral)h(asp)s(ects)e(of)g(the)g(compsp)s(ec's)g
-(b)s(eha)m(v-)1110 4829 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h
+(b)s(eha)m(v-)1110 888 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h
(generation)h(of)e(completions.)41 b Fr(comp-option)27
-b Fu(ma)m(y)1110 4938 y(b)s(e)j(one)g(of:)1110 5121 y
-Ft(bashdefault)1590 5230 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g
-(default)f(Bash)h(completions)g(if)g(the)1590 5340 y(compsp)s(ec)i
-(generates)i(no)e(matc)m(hes.)p eop end
-%%Page: 141 147
-TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(141)1110 299 y Ft(default)144
+b Fu(ma)m(y)1110 998 y(b)s(e)j(one)g(of:)1110 1148 y
+Ft(bashdefault)1590 1258 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g
+(default)f(Bash)h(completions)g(if)g(the)1590 1367 y(compsp)s(ec)i
+(generates)i(no)e(matc)m(hes.)1110 1518 y Ft(default)144
b Fu(Use)22 b(Readline's)g(default)g(\014lename)g(completion)g(if)g
-(the)g(comp-)1590 408 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
-570 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h
-(completion)g(if)f(the)g(compsp)s(ec)1590 680 y(generates)32
-b(no)e(matc)m(hes.)1110 841 y Ft(filenames)1590 951 y
-Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j
-(\014lenames,)1590 1060 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h
+(the)g(comp-)1590 1628 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
+1778 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h
+(completion)g(if)f(the)g(compsp)s(ec)1590 1888 y(generates)32
+b(no)e(matc)m(hes.)1110 2039 y Ft(filenames)1590 2148
+y Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j
+(\014lenames,)1590 2258 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h
(\014lename-sp)s(eci\014c)h(pro)s(cessing)e(\(lik)m(e)1590
-1170 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s
-(ecial)f(c)m(har-)1590 1279 y(acters,)39 b(or)d(suppressing)f(trailing)
-i(spaces\).)59 b(This)35 b(option)i(is)1590 1389 y(in)m(tended)30
+2367 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s
+(ecial)f(c)m(har-)1590 2477 y(acters,)39 b(or)d(suppressing)f(trailing)
+i(spaces\).)59 b(This)35 b(option)i(is)1590 2587 y(in)m(tended)30
b(to)g(b)s(e)g(used)f(with)g(shell)i(functions)e(sp)s(eci\014ed)g(with)
-1590 1499 y Ft(-F)p Fu(.)1110 1660 y Ft(noquote)144 b
+1590 2696 y Ft(-F)p Fu(.)1110 2847 y Ft(noquote)144 b
Fu(T)-8 b(ell)28 b(Readline)g(not)g(to)g(quote)g(the)g(completed)g(w)m
-(ords)f(if)h(they)1590 1770 y(are)j(\014lenames)f(\(quoting)h
-(\014lenames)g(is)f(the)h(default\).)1110 1931 y Ft(nosort)192
+(ords)f(if)h(they)1590 2956 y(are)j(\014lenames)f(\(quoting)h
+(\014lenames)g(is)f(the)h(default\).)1110 3107 y Ft(nosort)192
b Fu(T)-8 b(ell)23 b(Readline)g(not)f(to)h(sort)g(the)f(list)h(of)f(p)s
-(ossible)g(completions)1590 2041 y(alphab)s(etically)-8
-b(.)1110 2202 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g
+(ossible)g(completions)1590 3217 y(alphab)s(etically)-8
+b(.)1110 3367 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g
(to)g(app)s(end)d(a)j(space)g(\(the)f(default\))h(to)1590
-2312 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110
-2473 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d
-(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 2583 y(ated,)g
+3477 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110
+3628 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d
+(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 3737 y(ated,)g
(directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590
-2693 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h
-(other)g(actions.)630 2854 y Ft(-A)f Fj(action)66 b Fu(The)25
+3847 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h
+(other)g(actions.)630 3998 y Ft(-A)f Fj(action)66 b Fu(The)25
b Fr(action)h Fu(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e
-(generate)i(a)e(list)h(of)f(p)s(ossible)1110 2964 y(completions:)1110
-3125 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31
+(generate)i(a)e(list)h(of)f(p)s(ossible)1110 4107 y(completions:)1110
+4258 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31
b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i Ft(-a)p Fu(.)1110
-3287 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31
-b(names.)1110 3448 y Ft(binding)144 b Fu(Readline)30
+4408 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31
+b(names.)1110 4559 y Ft(binding)144 b Fu(Readline)30
b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590
-3558 y(Readline)h(Commands],)f(page)h(127\).)1110 3719
+4669 y(Readline)h(Commands],)f(page)h(133\).)1110 4819
y Ft(builtin)144 b Fu(Names)21 b(of)g(shell)f(builtin)h(commands.)37
-b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 3829
-y(as)31 b Ft(-b)p Fu(.)1110 3990 y Ft(command)144 b Fu(Command)29
+b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 4929
+y(as)31 b Ft(-b)p Fu(.)1110 5080 y Ft(command)144 b Fu(Command)29
b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i
-Ft(-c)p Fu(.)1110 4152 y Ft(directory)1590 4261 y Fu(Directory)h
+Ft(-c)p Fu(.)1110 5230 y Ft(directory)1590 5340 y Fu(Directory)h
(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g
-Ft(-d)p Fu(.)1110 4423 y Ft(disabled)96 b Fu(Names)31
-b(of)g(disabled)f(shell)g(builtins.)1110 4584 y Ft(enabled)144
-b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)1110
-4746 y Ft(export)192 b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5
-b(ariables.)49 b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590
-4855 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 5017 y Ft(file)288
+Ft(-d)p Fu(.)p eop end
+%%Page: 148 154
+TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(148)1110 299 y Ft(disabled)96
+b Fu(Names)31 b(of)g(disabled)f(shell)g(builtins.)1110
+455 y Ft(enabled)144 b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)
+1110 610 y Ft(export)192 b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)
+-5 b(ariables.)49 b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590
+720 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 876 y Ft(file)288
b Fu(File)32 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f
-(as)i Ft(-f)p Fu(.)1110 5178 y Ft(function)96 b Fu(Names)31
-b(of)g(shell)f(functions.)1110 5340 y Ft(group)240 b
+(as)i Ft(-f)p Fu(.)1110 1031 y Ft(function)96 b Fu(Names)31
+b(of)g(shell)f(functions.)1110 1187 y Ft(group)240 b
Fu(Group)30 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g
-(as)g Ft(-g)p Fu(.)p eop end
-%%Page: 142 148
-TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(142)1110 299 y Ft(helptopic)1590
-408 y Fu(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h
-Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 518 y(tion)31
-b(4.2)g([Bash)g(Builtins],)g(page)g(51\).)1110 689 y
+(as)g Ft(-g)p Fu(.)1110 1343 y Ft(helptopic)1590 1452
+y Fu(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h
+Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 1562 y(tion)31
+b(4.2)g([Bash)g(Builtins],)g(page)g(55\).)1110 1718 y
Ft(hostname)96 b Fu(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f(the)g
-(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 799 y(the)55 b
+(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 1827 y(the)55 b
Ft(HOSTFILE)e Fu(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h
-([Bash)1590 908 y(V)-8 b(ariables],)32 b(page)f(73\).)1110
-1080 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f
+([Bash)1590 1937 y(V)-8 b(ariables],)32 b(page)f(78\).)1110
+2093 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f
(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590
-1189 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 1361 y Ft(keyword)144
+2202 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 2358 y Ft(keyword)144
b Fu(Shell)30 b(reserv)m(ed)h(w)m(ords.)40 b(Ma)m(y)32
b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i Ft(-k)p Fu(.)1110
-1532 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f
-(con)m(trol)h(is)g(activ)m(e.)1110 1703 y Ft(service)144
+2514 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f
+(con)m(trol)h(is)g(activ)m(e.)1110 2669 y Ft(service)144
b Fu(Service)31 b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s
-(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 1874 y Ft(setopt)192
+(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 2825 y Ft(setopt)192
b Fu(V)-8 b(alid)39 b(argumen)m(ts)g(for)f(the)h Ft(-o)e
-Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 1984
-y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(62\).)
-1110 2155 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g
+Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 2935
+y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(67\).)
+1110 3091 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g
(accepted)i(b)m(y)e(the)g Ft(shopt)e Fu(builtin)1590
-2265 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(51\).)
-1110 2436 y Ft(signal)192 b Fu(Signal)31 b(names.)1110
-2607 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g
-(job)g(con)m(trol)i(is)f(activ)m(e.)1110 2778 y Ft(user)288
+3200 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(55\).)
+1110 3356 y Ft(signal)192 b Fu(Signal)31 b(names.)1110
+3512 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g
+(job)g(con)m(trol)i(is)f(activ)m(e.)1110 3667 y Ft(user)288
b Fu(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f
-(as)i Ft(-u)p Fu(.)1110 2950 y Ft(variable)96 b Fu(Names)36
+(as)i Ft(-u)p Fu(.)1110 3823 y Ft(variable)96 b Fu(Names)36
b(of)g(all)g(shell)g(v)-5 b(ariables.)56 b(Ma)m(y)37
-b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 3059 y Ft(-v)p
-Fu(.)630 3230 y Ft(-C)30 b Fj(command)1110 3340 y Fr(command)35
+b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 3933 y Ft(-v)p
+Fu(.)630 4088 y Ft(-C)30 b Fj(command)1110 4198 y Fr(command)35
b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f
-(its)g(output)g(is)1110 3450 y(used)e(as)g(the)h(p)s(ossible)f
-(completions.)630 3621 y Ft(-F)g Fj(function)1110 3730
-y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h(in)f
-(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 3840 y(ronmen)m(t.)72
-b(When)41 b(it)g(is)g(executed,)k($1)c(is)g(the)g(name)g(of)g(the)g
-(command)1110 3950 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f
-(completed,)j($2)e(is)f(the)h(w)m(ord)f(b)s(eing)g(com-)1110
-4059 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h
-(w)m(ord)f(b)s(eing)h(completed,)1110 4169 y(as)g(describ)s(ed)f(ab)s
-(o)m(v)m(e)i(\(see)g(Section)f(8.6)h([Programmable)g(Completion],)1110
-4278 y(page)30 b(137\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s
-(ossible)g(completions)h(are)g(retriev)m(ed)1110 4388
-y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(COMPREPLY)e
-Fu(arra)m(y)j(v)-5 b(ariable.)630 4559 y Ft(-G)30 b Fj(globpat)1110
-4669 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g
-Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 4778
-y(the)31 b(p)s(ossible)e(completions.)630 4950 y Ft(-P)h
+(its)g(output)g(is)1110 4308 y(used)38 b(as)h(the)g(p)s(ossible)f
+(completions.)67 b(Argumen)m(ts)39 b(are)g(passed)f(as)h(with)1110
+4417 y(the)31 b Ft(-F)e Fu(option.)630 4573 y Ft(-F)h
+Fj(function)1110 4682 y Fu(The)39 b(shell)g(function)g
+Fr(function)g Fu(is)g(executed)h(in)f(the)g(curren)m(t)g(shell)g(en)m
+(vi-)1110 4792 y(ronmen)m(t.)72 b(When)41 b(it)g(is)g(executed,)k($1)c
+(is)g(the)g(name)g(of)g(the)g(command)1110 4902 y(whose)34
+b(argumen)m(ts)h(are)g(b)s(eing)f(completed,)j($2)e(is)f(the)h(w)m(ord)
+f(b)s(eing)g(com-)1110 5011 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m
+(ord)g(preceding)f(the)h(w)m(ord)f(b)s(eing)h(completed,)1110
+5121 y(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(\(see)g(Section)f(8.6)h
+([Programmable)g(Completion],)1110 5230 y(page)30 b(143\).)42
+b(When)29 b(it)h(\014nishes,)e(the)h(p)s(ossible)g(completions)h(are)g
+(retriev)m(ed)1110 5340 y(from)g(the)g(v)-5 b(alue)31
+b(of)g(the)f Ft(COMPREPLY)e Fu(arra)m(y)j(v)-5 b(ariable.)p
+eop end
+%%Page: 149 155
+TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(149)630 299 y Ft(-G)30
+b Fj(globpat)1110 408 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g
+Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 518
+y(the)31 b(p)s(ossible)e(completions.)630 708 y Ft(-P)h
Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s
(eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110
-5059 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630
-5230 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20
+817 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630
+1007 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20
b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g
-(other)g(options)1110 5340 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)p
-eop end
-%%Page: 143 149
-TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(143)630 299 y Ft(-W)30
-b Fj(wordlist)1110 408 y Fu(The)24 b Fr(w)m(ordlist)k
+(other)g(options)1110 1116 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630
+1306 y Ft(-W)h Fj(wordlist)1110 1416 y Fu(The)24 b Fr(w)m(ordlist)k
Fu(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i
-Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 518 y(as)36
+Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 1525 y(as)36
b(delimiters,)i(and)e(eac)m(h)h(resultan)m(t)g(w)m(ord)e(is)h
-(expanded.)57 b(The)35 b(p)s(ossible)1110 628 y(completions)c(are)e
+(expanded.)57 b(The)35 b(p)s(ossible)1110 1635 y(completions)c(are)e
(the)h(mem)m(b)s(ers)f(of)g(the)h(resultan)m(t)g(list)g(whic)m(h)f
-(matc)m(h)i(the)1110 737 y(w)m(ord)f(b)s(eing)g(completed.)630
-909 y Ft(-X)g Fj(filterpat)1110 1019 y Fr(\014lterpat)d
+(matc)m(h)i(the)1110 1744 y(w)m(ord)f(b)s(eing)g(completed.)630
+1934 y Ft(-X)g Fj(filterpat)1110 2043 y Fr(\014lterpat)d
Fu(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g(expansion.)38
-b(It)25 b(is)g(applied)f(to)1110 1128 y(the)30 b(list)f(of)h(p)s
+b(It)25 b(is)g(applied)f(to)1110 2153 y(the)30 b(list)f(of)h(p)s
(ossible)f(completions)h(generated)h(b)m(y)e(the)g(preceding)h(options)
-1110 1238 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m
-(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1347
+1110 2263 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m
+(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 2372
y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p Ft(!)p
Fu(')e(in)g Fr(\014lterpat)j Fu(negates)f(the)f(pattern;)g(in)f(this)
-1110 1457 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g
-Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 1629 y(The)35
+1110 2482 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g
+Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 2671 y(The)35
b(return)g(v)-5 b(alue)37 b(is)f(true)f(unless)h(an)f(in)m(v)-5
b(alid)37 b(option)f(is)g(supplied,)g(an)g(option)h(other)630
-1738 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f
+2781 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f
Fr(name)44 b Fu(argumen)m(t,)c(an)e(attempt)i(is)e(made)g(to)630
-1848 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a)
+2891 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a)
h Fr(name)k Fu(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,)
-630 1958 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s
-(eci\014cation.)150 2129 y Ft(compopt)870 2270 y(compopt)46
+630 3000 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s
+(eci\014cation.)150 3190 y Ft(compopt)870 3339 y(compopt)46
b([-o)h Fj(option)p Ft(])f([-DEI])g([+o)h Fj(option)p
-Ft(])e([)p Fj(name)p Ft(])630 2411 y Fu(Mo)s(dify)33
+Ft(])e([)p Fj(name)p Ft(])630 3489 y Fu(Mo)s(dify)33
b(completion)h(options)g(for)f(eac)m(h)h Fr(name)39 b
Fu(according)34 b(to)g(the)f Fr(option)p Fu(s,)i(or)e(for)g(the)630
-2520 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f
+3598 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f
Fr(name)5 b Fu(s)44 b(are)h(supplied.)80 b(If)43 b(no)h
-Fr(option)p Fu(s)h(are)630 2630 y(giv)m(en,)30 b(displa)m(y)e(the)g
+Fr(option)p Fu(s)h(are)630 3708 y(giv)m(en,)30 b(displa)m(y)e(the)g
(completion)h(options)g(for)e(eac)m(h)i Fr(name)34 b
-Fu(or)27 b(the)i(curren)m(t)e(completion.)630 2740 y(The)f(p)s(ossible)
+Fu(or)27 b(the)i(curren)m(t)e(completion.)630 3818 y(The)f(p)s(ossible)
g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5
b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630
-2849 y(ab)s(o)m(v)m(e.)41 b(The)27 b Ft(-D)f Fu(option)i(indicates)g
+3927 y(ab)s(o)m(v)m(e.)41 b(The)27 b Ft(-D)f Fu(option)i(indicates)g
(that)g(other)f(supplied)f(options)i(should)e(apply)h(to)h(the)630
-2959 y(\\default")33 b(command)f(completion;)i(that)f(is,)g(completion)
-g(attempted)g(on)f(a)g(command)630 3068 y(for)g(whic)m(h)g(no)g
+4037 y(\\default")33 b(command)f(completion;)i(that)f(is,)g(completion)
+g(attempted)g(on)f(a)g(command)630 4146 y(for)g(whic)m(h)g(no)g
(completion)i(has)e(previously)g(b)s(een)g(de\014ned.)45
-b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3178 y(that)23
+b(The)32 b Ft(-E)f Fu(option)i(indicates)630 4256 y(that)23
b(other)f(supplied)e(options)j(should)e(apply)g(to)i(\\empt)m(y")g
-(command)f(completion;)k(that)630 3287 y(is,)36 b(completion)g
+(command)f(completion;)k(that)630 4366 y(is,)36 b(completion)g
(attempted)g(on)e(a)h(blank)g(line.)54 b(The)34 b Ft(-I)g
-Fu(option)h(indicates)g(that)h(other)630 3397 y(supplied)23
+Fu(option)h(indicates)g(that)h(other)630 4475 y(supplied)23
b(options)i(should)f(apply)g(to)i(completion)g(on)e(the)h(initial)h
-(non-assignmen)m(t)f(w)m(ord)630 3507 y(on)37 b(the)f(line,)j(or)e
+(non-assignmen)m(t)f(w)m(ord)630 4585 y(on)37 b(the)f(line,)j(or)e
(after)g(a)g(command)f(delimiter)i(suc)m(h)e(as)h(`)p
Ft(;)p Fu(')g(or)f(`)p Ft(|)p Fu(',)j(whic)m(h)e(is)f(usually)630
-3616 y(command)30 b(name)h(completion.)630 3757 y(If)k(m)m(ultiple)i
+4694 y(command)30 b(name)h(completion.)630 4844 y(If)k(m)m(ultiple)i
(options)f(are)g(supplied,)g(the)g Ft(-D)g Fu(option)g(tak)m(es)h
-(precedence)g(o)m(v)m(er)g Ft(-E)p Fu(,)g(and)630 3867
+(precedence)g(o)m(v)m(er)g Ft(-E)p Fu(,)g(and)630 4954
y(b)s(oth)30 b(tak)m(e)i(precedence)e(o)m(v)m(er)i Ft(-I)630
-4007 y Fu(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h
+5103 y Fu(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h
(in)m(v)-5 b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f
-(made)630 4117 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h
+(made)630 5213 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h
Fr(name)k Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f
-(exists,)630 4226 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150
-4486 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150
-4645 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h
-(additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i
-(default)150 4755 y(actions)29 b Ft(complete)d Fu(and)i
-Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g
-(and)g(bind)e(it)j(to)g(a)g(particular)150 4864 y(command)h(using)g
-Ft(complete)e(-F)p Fu(.)275 5011 y(The)j(follo)m(wing)j(function)e(pro)
-m(vides)g(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46
-b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 5121 y(example)41
+(exists,)630 5322 y(or)e(an)h(output)f(error)g(o)s(ccurs.)p
+eop end
+%%Page: 150 156
+TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(150)150 299 y Fs(8.8)68
+b(A)44 b(Programmable)j(Completion)f(Example)150 458
+y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h(additional)g
+(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i(default)150
+568 y(actions)29 b Ft(complete)d Fu(and)i Ft(compgen)e
+Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g(and)g(bind)e(it)
+j(to)g(a)g(particular)150 677 y(command)h(using)g Ft(complete)e(-F)p
+Fu(.)275 829 y(The)j(follo)m(wing)j(function)e(pro)m(vides)g
+(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46 b(It)32
+b(is)h(a)f(reasonably)h(go)s(o)s(d)150 939 y(example)41
b(of)g(what)f(shell)h(functions)f(m)m(ust)g(do)h(when)e(used)h(for)g
-(completion.)73 b(This)39 b(function)h(uses)150 5230
+(completion.)73 b(This)39 b(function)h(uses)150 1049
y(the)32 b(w)m(ord)f(passed)g(as)h Ft($2)f Fu(to)h(determine)g(the)f
(directory)h(name)g(to)g(complete.)46 b(Y)-8 b(ou)32
-b(can)g(also)g(use)g(the)150 5340 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5
+b(can)g(also)g(use)g(the)150 1158 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5
b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g(indexed)g(b)m(y)g
-(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)p eop end
-%%Page: 144 150
-TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(144)275 299 y(The)42
+(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)275 1310 y(The)42
b(function)h(relies)h(on)e(the)i Ft(complete)c Fu(and)j
Ft(compgen)e Fu(builtins)h(to)i(do)f(m)m(uc)m(h)g(of)g(the)h(w)m(ork,)
-150 408 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g
+150 1420 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g
Ft(cd)f Fu(do)s(es)g(b)s(ey)m(ond)g(accepting)j(basic)e(directory)g
-(names:)38 b(tilde)150 518 y(expansion)22 b(\(see)h(Section)g(3.5.2)g
-([Tilde)g(Expansion],)g(page)g(24\),)i(searc)m(hing)e(directories)g(in)
-e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 628 y(whic)m(h)21 b(is)h(describ)s(ed)
-e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f
-(Builtins],)j(page)e(44\),)j(and)c(basic)h(supp)s(ort)150
-737 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h
-(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(66\).)46
-b Ft(_comp_)150 847 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5
+(names:)38 b(tilde)150 1529 y(expansion)22 b(\(see)h(Section)g(3.5.2)g
+([Tilde)g(Expansion],)g(page)g(25\),)i(searc)m(hing)e(directories)g(in)
+e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 1639 y(whic)m(h)21 b(is)h(describ)s
+(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f
+(Builtins],)j(page)e(48\),)j(and)c(basic)h(supp)s(ort)150
+1748 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h
+(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(71\).)46
+b Ft(_comp_)150 1858 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5
b(alue)31 b(of)g Fr(IFS)36 b Fu(so)31 b(that)g(it)g(con)m(tains)h(only)
f(a)g(newline)g(to)h(accommo)s(date)g(\014le)f(names)150
-956 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e
+1968 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e
Fu(prin)m(ts)h(the)h(p)s(ossible)f(completions)i(it)g(generates)g(one)f
-(p)s(er)150 1066 y(line.)275 1230 y(P)m(ossible)24 b(completions)h(go)g
+(p)s(er)150 2077 y(line.)275 2229 y(P)m(ossible)24 b(completions)h(go)g
(in)m(to)g(the)f Fr(COMPREPL)-8 b(Y)36 b Fu(arra)m(y)24
b(v)-5 b(ariable,)26 b(one)e(completion)i(p)s(er)c(arra)m(y)150
-1340 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e
+2339 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e
(retriev)m(es)h(the)g(completions)g(from)f(there)g(when)150
-1450 y(the)h(function)f(returns.)390 1614 y Ft(#)47 b(A)h(completion)d
-(function)g(for)i(the)g(cd)g(builtin)390 1724 y(#)g(based)g(on)g(the)g
+2448 y(the)h(function)f(returns.)390 2600 y Ft(#)47 b(A)h(completion)d
+(function)g(for)i(the)g(cd)g(builtin)390 2710 y(#)g(based)g(on)g(the)g
(cd)g(completion)e(function)h(from)g(the)h(bash_completion)d(package)
-390 1833 y(_comp_cd\(\))390 1943 y({)581 2052 y(local)i(IFS=$')g
-(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 2162 y(local)g(cur)h
-(_skipdot)f(_cdpath)581 2271 y(local)g(i)i(j)f(k)581
-2491 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h
-(full)g(pathname)581 2600 y(case)g("$2")f(in)581 2710
-y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 2819 y(*\))286
-b(cur=$2)46 b(;;)581 2929 y(esac)581 3148 y(#)h(no)h(cdpath)e(or)h
+390 2819 y(_comp_cd\(\))390 2929 y({)581 3039 y(local)i(IFS=$')g
+(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 3148 y(local)g(cur)h
+(_skipdot)f(_cdpath)581 3258 y(local)g(i)i(j)f(k)581
+3477 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h
+(full)g(pathname)581 3587 y(case)g("$2")f(in)581 3696
+y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 3806 y(*\))286
+b(cur=$2)46 b(;;)581 3915 y(esac)581 4134 y(#)h(no)h(cdpath)e(or)h
(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581
-3258 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h
-(@\(./*|../*|/*\))d(]];)j(then)772 3367 y(#)g(compgen)f(prints)g(paths)
+4244 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h
+(@\(./*|../*|/*\))d(]];)j(then)772 4354 y(#)g(compgen)f(prints)g(paths)
h(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772
-3477 y(IFS=$'\\n')772 3587 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g
-("$cur"\))f(\))772 3696 y(IFS=$')g(\\t\\n')581 3806 y(#)h
+4463 y(IFS=$'\\n')772 4573 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g
+("$cur"\))f(\))772 4682 y(IFS=$')g(\\t\\n')581 4792 y(#)h
(CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j(not)e(in)i
-(CDPATH)581 3915 y(else)772 4025 y(IFS=$'\\n')772 4134
-y(_skipdot=false)772 4244 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d
-(null)i(directory)e(names)i(to)g(.)772 4354 y(_cdpath=${CDPATH/#:/.:})
-772 4463 y(_cdpath=${_cdpath//::/:.)o(:})772 4573 y
-(_cdpath=${_cdpath/\045:/:.})772 4682 y(for)g(i)g(in)g
-(${_cdpath//:/$'\\n'};)c(do)963 4792 y(if)k([[)g($i)g(-ef)g(.)h(]];)f
-(then)f(_skipdot=true;)e(fi)963 4902 y(k="${#COMPREPLY[@]}")963
-5011 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do)
-1154 5121 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory)
-963 5230 y(done)772 5340 y(done)p eop end
-%%Page: 145 151
-TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(145)772 299 y Ft($_skipdot)45
-b(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772
-408 y(IFS=$')g(\\t\\n')581 518 y(fi)581 737 y(#)h(variable)f(names)g
-(if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581
-847 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c(-eq)
-k(0)g(]];)g(then)772 956 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g
-("$cur"\))f(\))581 1066 y(fi)581 1285 y(return)g(0)390
-1395 y(})275 1529 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h
-(function)e(using)f(the)i Ft(-F)f Fu(option)h(to)g Ft(complete)p
-Fu(:)390 1664 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f
-(and)i(append)f(slashes)g(to)h(directories;)390 1773
-y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f
-(arguments)390 1883 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h
-(bashdefault)e(-F)i(_comp_cd)f(cd)150 2017 y Fu(Since)33
-b(w)m(e'd)g(lik)m(e)i(Bash)e(and)f(Readline)i(to)g(tak)m(e)g(care)g(of)
-f(some)h(of)f(the)g(other)h(details)g(for)e(us,)i(w)m(e)f(use)150
-2127 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f
-(Readline)i(what)f(to)g(do.)76 b(The)41 b Ft(-o)30 b(filenames)39
-b Fu(option)150 2237 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g
-(completions)h(should)f(b)s(e)f(treated)i(as)g(\014lenames,)i(and)d
-(quoted)150 2346 y(appropriately)-8 b(.)53 b(That)34
-b(option)h(will)g(also)g(cause)g(Readline)g(to)g(app)s(end)e(a)h(slash)
-g(to)h(\014lenames)g(it)g(can)150 2456 y(determine)i(are)g(directories)
-h(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i(migh)m(t)f(w)m(an)m(t)h(to)g
-(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 2565
-y(slash)22 b(if)g(w)m(e're)h(using)f(directories)h(found)e(via)i
-Fr(CDP)-8 b(A)g(TH)10 b Fu(:)37 b(Readline)23 b(can't)g(tell)g(those)g
-(completions)h(are)150 2675 y(directories\).)45 b(The)31
-b Ft(-o)f(nospace)f Fu(option)j(tells)g(Readline)g(to)h(not)e(app)s
-(end)f(a)i(space)g(c)m(haracter)h(to)f(the)150 2785 y(directory)c
-(name,)h(in)f(case)h(w)m(e)f(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41
-b(The)27 b Ft(-o)j(bashdefault)25 b Fu(option)j(brings)f(in)h(the)150
-2894 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h
-Fu(completions)g({)g(p)s(ossible)f(completion)i(that)f(Bash)f(adds)g
-(to)h(the)g(default)150 3004 y(Readline)f(set.)40 b(These)28
+(CDPATH)581 4902 y(else)772 5011 y(IFS=$'\\n')772 5121
+y(_skipdot=false)772 5230 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d
+(null)i(directory)e(names)i(to)g(.)772 5340 y(_cdpath=${CDPATH/#:/.:})p
+eop end
+%%Page: 151 157
+TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(151)772 299 y Ft
+(_cdpath=${_cdpath//::/:.)o(:})772 408 y(_cdpath=${_cdpath/\045:/:.})
+772 518 y(for)47 b(i)g(in)g(${_cdpath//:/$'\\n'};)c(do)963
+628 y(if)k([[)g($i)g(-ef)g(.)h(]];)f(then)f(_skipdot=true;)e(fi)963
+737 y(k="${#COMPREPLY[@]}")963 847 y(for)j(j)g(in)g($\()g(compgen)f(-d)
+h(--)h("$i/$cur")d(\);)i(do)1154 956 y(COMPREPLY[k++]=${j#$i/})375
+b(#)48 b(cut)f(off)f(directory)963 1066 y(done)772 1176
+y(done)772 1285 y($_skipdot)f(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i
+(--)g("$cur"\))f(\))772 1395 y(IFS=$')g(\\t\\n')581 1504
+y(fi)581 1724 y(#)h(variable)f(names)g(if)h(appropriate)e(shell)i
+(option)f(set)h(and)f(no)i(completions)581 1833 y(if)f(shopt)f(-q)i
+(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c(-eq)k(0)g(]];)g(then)772
+1943 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g("$cur"\))f(\))581
+2052 y(fi)581 2271 y(return)g(0)390 2381 y(})275 2516
+y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h(function)e(using)f(the)
+i Ft(-F)f Fu(option)h(to)g Ft(complete)p Fu(:)390 2650
+y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f(and)i(append)f
+(slashes)g(to)h(directories;)390 2760 y(#)g(use)g(the)g(bash)g(default)
+f(completion)f(for)i(other)f(arguments)390 2869 y(complete)g(-o)h
+(filenames)e(-o)i(nospace)f(-o)h(bashdefault)e(-F)i(_comp_cd)f(cd)150
+3004 y Fu(Since)33 b(w)m(e'd)g(lik)m(e)i(Bash)e(and)f(Readline)i(to)g
+(tak)m(e)g(care)g(of)f(some)h(of)f(the)g(other)h(details)g(for)e(us,)i
+(w)m(e)f(use)150 3113 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g
+(Bash)f(and)f(Readline)i(what)f(to)g(do.)76 b(The)41
+b Ft(-o)30 b(filenames)39 b Fu(option)150 3223 y(tells)j(Readline)g
+(that)g(the)f(p)s(ossible)g(completions)h(should)f(b)s(e)f(treated)i
+(as)g(\014lenames,)i(and)d(quoted)150 3333 y(appropriately)-8
+b(.)53 b(That)34 b(option)h(will)g(also)g(cause)g(Readline)g(to)g(app)s
+(end)e(a)h(slash)g(to)h(\014lenames)g(it)g(can)150 3442
+y(determine)i(are)g(directories)h(\(whic)m(h)g(is)f(wh)m(y)f(w)m(e)i
+(migh)m(t)f(w)m(an)m(t)h(to)g(extend)f Ft(_comp_cd)e
+Fu(to)i(app)s(end)f(a)150 3552 y(slash)22 b(if)g(w)m(e're)h(using)f
+(directories)h(found)e(via)i Fr(CDP)-8 b(A)g(TH)10 b
+Fu(:)37 b(Readline)23 b(can't)g(tell)g(those)g(completions)h(are)150
+3661 y(directories\).)45 b(The)31 b Ft(-o)f(nospace)f
+Fu(option)j(tells)g(Readline)g(to)h(not)e(app)s(end)f(a)i(space)g(c)m
+(haracter)h(to)f(the)150 3771 y(directory)c(name,)h(in)f(case)h(w)m(e)f
+(w)m(an)m(t)h(to)f(app)s(end)f(to)h(it.)41 b(The)27 b
+Ft(-o)j(bashdefault)25 b Fu(option)j(brings)f(in)h(the)150
+3880 y(rest)e(of)g(the)g Ft(")p Fu(Bash)g(default)p Ft(")g
+Fu(completions)h({)f(p)s(ossible)f(completions)i(that)g(Bash)f(adds)f
+(to)i(the)f(default)150 3990 y(Readline)i(set.)40 b(These)28
b(include)f(things)g(lik)m(e)i(command)e(name)h(completion,)h(v)-5
-b(ariable)28 b(completion)h(for)150 3113 y(w)m(ords)e(b)s(eginning)h
+b(ariable)28 b(completion)h(for)150 4100 y(w)m(ords)e(b)s(eginning)h
(with)f(`)p Ft($)p Fu(')h(or)g(`)p Ft(${)p Fu(',)h(completions)g(con)m
(taining)g(pathname)f(expansion)g(patterns)g(\(see)150
-3223 y(Section)j(3.5.8)h([Filename)g(Expansion],)e(page)i(33\),)f(and)f
-(so)h(on.)275 3357 y(Once)39 b(installed)i(using)e Ft(complete)p
+4209 y(Section)j(3.5.8)h([Filename)g(Expansion],)e(page)i(35\),)f(and)f
+(so)h(on.)275 4344 y(Once)39 b(installed)i(using)e Ft(complete)p
Fu(,)h Ft(_comp_cd)d Fu(will)j(b)s(e)g(called)g(ev)m(ery)h(time)f(w)m
-(e)g(attempt)h(w)m(ord)150 3467 y(completion)32 b(for)e(a)h
-Ft(cd)e Fu(command.)275 3601 y(Man)m(y)34 b(more)g(examples)g({)g(an)g
+(e)g(attempt)h(w)m(ord)150 4453 y(completion)32 b(for)e(a)h
+Ft(cd)e Fu(command.)275 4588 y(Man)m(y)34 b(more)g(examples)g({)g(an)g
(extensiv)m(e)h(collection)i(of)c(completions)i(for)f(most)g(of)g(the)g
-(common)150 3711 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g
+(common)150 4697 y(GNU,)g(Unix,)h(and)d(Lin)m(ux)h(commands)g({)h(are)g
(a)m(v)-5 b(ailable)36 b(as)e(part)f(of)h(the)f(bash)p
-2943 3711 28 4 v 39 w(completion)i(pro)5 b(ject.)150
-3821 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h
+2943 4697 28 4 v 39 w(completion)i(pro)5 b(ject.)150
+4807 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h
(GNU/Lin)m(ux)f(distributions.)51 b(Originally)35 b(written)f(b)m(y)g
-(Ian)150 3930 y(Macdonald,)48 b(the)c(pro)5 b(ject)44
+(Ian)150 4917 y(Macdonald,)48 b(the)c(pro)5 b(ject)44
b(no)m(w)g(liv)m(es)h(at)f Ft(https:)11 b(/)g(/)g(github)g(.)g(com)g(/)
g(sc)o(op)g(/)f(bash)o(-co)o(mple)o(tion)g(/)h Fu(.)150
-4040 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g
-(as)h(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54
-b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 4174 V
+5026 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g
+(as)h(Solaris)g(and)f(Mac)h(OS)f(X.)275 5161 y(An)54
+b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 5161 V
40 w(completion)h(pac)m(k)-5 b(age)57 b(is)e(distributed)f(with)h(bash)
-f(in)h(the)150 4284 y Ft(examples/complete)26 b Fu(sub)s(directory)-8
+f(in)h(the)150 5270 y Ft(examples/complete)26 b Fu(sub)s(directory)-8
b(.)p eop end
-%%Page: 146 152
-TeXDict begin 146 151 bop 3614 -116 a Fu(146)150 299
+%%Page: 152 158
+TeXDict begin 152 157 bop 3614 -116 a Fu(152)150 299
y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150
554 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)
f Fm(gnu)h Fu(History)g(Library)e(in)m(teractiv)m(ely)-8
@@ -18514,7 +19099,7 @@ Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1025
y Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150
1184 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the)
f Ft(set)f Fu(builtin)h(is)g(enabled)g(\(see)g(Section)h(4.3.1)h([The)e
-(Set)150 1294 y(Builtin],)32 b(page)g(62\),)h(the)e(shell)h(pro)m
+(Set)150 1294 y(Builtin],)32 b(page)g(67\),)h(the)e(shell)h(pro)m
(vides)f(access)h(to)g(the)f Fr(command)g(history)p Fu(,)h(the)f(list)h
(of)f(commands)150 1404 y(previously)h(t)m(yp)s(ed.)47
b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Ft(HISTSIZE)e
@@ -18541,7 +19126,7 @@ h Ft($HISTSIZE)c Fu(lines)150 2422 y(are)35 b(copied)g(from)g(the)g
(history)f(list)i(to)f(the)g(\014le)g(named)f(b)m(y)h
Ft($HISTFILE)p Fu(.)51 b(If)35 b(the)g Ft(histappend)d
Fu(shell)150 2532 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h
-([Bash)f(Builtins],)h(page)g(51\),)h(the)e(lines)g(are)g(app)s(ended)e
+([Bash)f(Builtins],)h(page)g(55\),)h(the)e(lines)g(are)g(app)s(ended)e
(to)i(the)g(history)150 2641 y(\014le,)36 b(otherwise)f(the)g(history)f
(\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Ft(HISTFILE)e
Fu(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150
@@ -18570,7 +19155,7 @@ Fu(builtin)i(ma)m(y)h(b)s(e)e(used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f
(commands)g(are)g(a)m(v)-5 b(ailable)33 b(in)e(eac)m(h)150
3911 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g
(history)f(list)i(\(see)f(Section)h(8.4.2)g([Commands)e(F)-8
-b(or)150 4020 y(History],)31 b(page)h(128\).)275 4162
+b(or)150 4020 y(History],)31 b(page)h(134\).)275 4162
y(The)47 b(shell)i(allo)m(ws)h(con)m(trol)f(o)m(v)m(er)h(whic)m(h)e
(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)h(history)f(list.)95
b(The)150 4272 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e
@@ -18587,14 +19172,14 @@ b Ft(lithist)e Fu(shell)i(option)h(causes)g(the)f(shell)g(to)150
(newlines)h(instead)g(of)g(semicolons.)68 b(The)39 b
Ft(shopt)e Fu(builtin)i(is)150 4820 y(used)30 b(to)i(set)g(these)g
(options.)43 b(See)32 b(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j
-(page)f(66,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p
+(page)f(71,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p
Fu(.)150 5181 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150
5340 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g
(whic)m(h)g(manipulate)g(the)h(history)f(list)h(and)f(history)g
(\014le.)p eop end
-%%Page: 147 153
-TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(147)150
+%%Page: 153 159
+TeXDict begin 153 158 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(153)150
299 y Ft(fc)870 430 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p
Fj(first)p Ft(])g([)p Fj(last)p Ft(])870 540 y(fc)h(-s)g([)p
Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p Fj(command)p Ft(])630
@@ -18645,7 +19230,7 @@ Fu(,)h(so)h(that)h(t)m(yping)f(`)p Ft(r)f(cc)p Fu(')630
3061 y(runs)35 b(the)h(last)h(command)f(b)s(eginning)g(with)g
Ft(cc)f Fu(and)h(t)m(yping)g(`)p Ft(r)p Fu(')h(re-executes)h(the)e
(last)630 3170 y(command)30 b(\(see)h(Section)h(6.6)f([Aliases],)h
-(page)g(94\).)150 3324 y Ft(history)870 3455 y(history)46
+(page)g(100\).)150 3324 y Ft(history)870 3455 y(history)46
b([)p Fj(n)p Ft(])870 3565 y(history)g(-c)870 3674 y(history)g(-d)h
Fj(offset)870 3784 y Ft(history)f(-d)h Fj(start)p Ft(-)p
Fj(end)870 3893 y Ft(history)f([-anrw])g([)p Fj(filename)p
@@ -18672,823 +19257,903 @@ Fr(o\013set)p Fu(.)59 b(If)36 b Fr(o\013set)j Fu(is)d(p)s(ositiv)m(e,)j
(it)1110 5340 y(should)32 b(b)s(e)h(sp)s(eci\014ed)f(as)i(it)g(app)s
(ears)e(when)g(the)i(history)f(is)g(displa)m(y)m(ed.)50
b(If)p eop end
-%%Page: 148 154
-TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(148)1110
+%%Page: 154 160
+TeXDict begin 154 159 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(154)1110
299 y Fr(o\013set)26 b Fu(is)d(negativ)m(e,)k(it)c(is)g(in)m(terpreted)
h(as)f(relativ)m(e)i(to)f(one)f(greater)h(than)f(the)1110
408 y(last)36 b(history)f(p)s(osition,)h(so)f(negativ)m(e)i(indices)e
(coun)m(t)h(bac)m(k)f(from)g(the)g(end)1110 518 y(of)h(the)g(history)-8
b(,)37 b(and)e(an)h(index)f(of)h(`)p Ft(-1)p Fu(')f(refers)g(to)i(the)f
(curren)m(t)f Ft(history)1110 628 y(-d)30 b Fu(command.)630
-785 y Ft(-d)g Fj(start)p Ft(-)p Fj(end)1110 895 y Fu(Delete)23
-b(the)d(history)h(en)m(tries)g(b)s(et)m(w)m(een)g(p)s(ositions)g
-Fr(start)i Fu(and)d Fr(end)p Fu(,)i(inclusiv)m(e.)1110
-1004 y(P)m(ositiv)m(e)41 b(and)c(negativ)m(e)k(v)-5 b(alues)38
-b(for)h Fr(start)h Fu(and)e Fr(end)j Fu(are)e(in)m(terpreted)g(as)1110
-1114 y(describ)s(ed)29 b(ab)s(o)m(v)m(e.)630 1271 y Ft(-a)384
-b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h(the)e(history)h
-(\014le.)41 b(These)29 b(are)h(history)1110 1381 y(lines)36
-b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h(curren)m(t)f
-(Bash)h(session,)h(but)1110 1490 y(not)31 b(already)g(app)s(ended)d(to)
-j(the)g(history)f(\014le.)630 1648 y Ft(-n)384 b Fu(App)s(end)32
-b(the)i(history)f(lines)h(not)g(already)g(read)g(from)f(the)h(history)f
-(\014le)h(to)1110 1758 y(the)26 b(curren)m(t)f(history)g(list.)40
-b(These)25 b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le)
-1110 1867 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f
-(Bash)h(session.)630 2025 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g
-(\014le)h(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f
-(list.)630 2182 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m
-(t)f(history)g(list)h(to)h(the)e(history)g(\014le.)630
-2339 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f
-(the)h Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110
+785 y Ft(-d)g Fj(start)p Ft(-)p Fj(end)1110 895 y Fu(Delete)e(the)e
+(range)h(of)f(history)g(en)m(tries)h(b)s(et)m(w)m(een)f(p)s(ositions)g
+Fr(start)j Fu(and)c Fr(end)p Fu(,)1110 1004 y(inclusiv)m(e.)44
+b(P)m(ositiv)m(e)33 b(and)e(negativ)m(e)i(v)-5 b(alues)31
+b(for)g Fr(start)j Fu(and)d Fr(end)j Fu(are)d(in)m(ter-)1110
+1114 y(preted)f(as)h(describ)s(ed)e(ab)s(o)m(v)m(e.)630
+1271 y Ft(-a)384 b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h
+(the)e(history)h(\014le.)41 b(These)29 b(are)h(history)1110
+1381 y(lines)36 b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h
+(curren)m(t)f(Bash)h(session,)h(but)1110 1490 y(not)31
+b(already)g(app)s(ended)d(to)j(the)g(history)f(\014le.)630
+1648 y Ft(-n)384 b Fu(App)s(end)32 b(the)i(history)f(lines)h(not)g
+(already)g(read)g(from)f(the)h(history)f(\014le)h(to)1110
+1758 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25
+b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le)1110
+1867 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h
+(session.)630 2025 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h
+(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f(list.)
+630 2182 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f
+(history)g(list)h(to)h(the)e(history)g(\014le.)630 2339
+y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f(the)h
+Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110
2449 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
(in)g(the)g(history)g(list.)630 2606 y Ft(-s)384 b Fu(The)30
b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f
(history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630
-2764 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p
-Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f
-Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630
-2873 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28
-b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d
-Fu(v)-5 b(ariable)29 b(is)f(used.)150 3112 y Fs(9.3)68
-b(History)46 b(Expansion)150 3272 y Fu(The)f(History)h(library)e(pro)m
-(vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g
-(the)f(history)150 3381 y(expansion)g(pro)m(vided)f(b)m(y)h
+2764 y(If)35 b(a)h Fr(\014lename)41 b Fu(argumen)m(t)c(is)e(supplied)g
+(when)g(an)m(y)h(of)g(the)g Ft(-w)p Fu(,)g Ft(-r)p Fu(,)h
+Ft(-a)p Fu(,)g(or)e Ft(-n)h Fu(options)630 2873 y(is)j(used,)i(Bash)e
+(uses)f Fr(\014lename)44 b Fu(as)c(the)f(history)g(\014le.)66
+b(If)39 b(not,)i(then)e(the)g(v)-5 b(alue)40 b(of)f(the)630
+2983 y Ft(HISTFILE)28 b Fu(v)-5 b(ariable)31 b(is)g(used.)630
+3117 y(The)j(return)g(v)-5 b(alue)35 b(is)g(0)g(unless)f(an)h(in)m(v)-5
+b(alid)35 b(option)g(is)g(encoun)m(tered,)h(an)f(error)f(o)s(ccurs)630
+3226 y(while)h(reading)g(or)g(writing)f(the)h(history)g(\014le,)h(an)f
+(in)m(v)-5 b(alid)36 b Fr(o\013set)h Fu(or)e(range)g(is)g(supplied)630
+3336 y(as)c(an)g(argumen)m(t)g(to)h Ft(-d)p Fu(,)e(or)h(the)g(history)g
+(expansion)f(supplied)g(as)h(an)g(argumen)m(t)g(to)h
+Ft(-p)630 3445 y Fu(fails.)150 3684 y Fs(9.3)68 b(History)46
+b(Expansion)150 3844 y Fu(The)f(History)h(library)e(pro)m(vides)i(a)f
+(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g(the)f
+(history)150 3953 y(expansion)g(pro)m(vided)f(b)m(y)h
Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h
-(used)e(to)i(manipulate)f(the)150 3491 y(history)30 b(information.)275
-3624 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
+(used)e(to)i(manipulate)f(the)150 4063 y(history)30 b(information.)275
+4196 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
(history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150
-3734 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
+4306 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150
-3844 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
-(quic)m(kly)-8 b(.)275 3977 y(History)24 b(expansion)f(is)h(p)s
+4415 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
+(quic)m(kly)-8 b(.)275 4549 y(History)24 b(expansion)f(is)h(p)s
(erformed)e(immediately)j(after)f(a)g(complete)h(line)f(is)g(read,)h(b)
-s(efore)e(the)h(shell)150 4087 y(breaks)32 b(it)i(in)m(to)f(w)m(ords,)g
+s(efore)e(the)h(shell)150 4659 y(breaks)32 b(it)i(in)m(to)f(w)m(ords,)g
(and)f(is)h(p)s(erformed)e(on)h(eac)m(h)i(line)f(individually)-8
-b(.)48 b(Bash)33 b(attempts)g(to)h(inform)150 4196 y(the)d(history)f
+b(.)48 b(Bash)33 b(attempts)g(to)h(inform)150 4768 y(the)d(history)f
(expansion)g(functions)g(ab)s(out)g(quoting)h(still)g(in)f(e\013ect)i
-(from)e(previous)g(lines.)275 4330 y(History)37 b(expansion)f(tak)m(es)
+(from)e(previous)g(lines.)275 4902 y(History)37 b(expansion)f(tak)m(es)
i(place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g
-(determine)g(whic)m(h)f(line)h(from)150 4439 y(the)42
+(determine)g(whic)m(h)f(line)h(from)150 5011 y(the)42
b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74
b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150
-4549 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f
+5121 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f
(one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h
-(called)h(the)150 4659 y Fr(ev)m(en)m(t)p Fu(,)e(and)c(the)i(p)s
+(called)h(the)150 5230 y Fr(ev)m(en)m(t)p Fu(,)e(and)c(the)i(p)s
(ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j
(called)g Fr(w)m(ords)p Fu(.)39 b(V)-8 b(arious)28 b
-Fr(mo)s(di\014ers)150 4768 y Fu(are)33 b(a)m(v)-5 b(ailable)36
+Fr(mo)s(di\014ers)150 5340 y Fu(are)33 b(a)m(v)-5 b(ailable)36
b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32
-b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150
-4878 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g
-(w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m
-(ord.)150 4987 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m
+b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)p
+eop end
+%%Page: 155 161
+TeXDict begin 155 160 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(155)150
+299 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g(w)
+m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m
+(ord.)150 408 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m
(y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m
-(haracter,)150 5097 y(whic)m(h)30 b(is)h(`)p Ft(!)p Fu(')f(b)m(y)g
-(default.)275 5230 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m
+(haracter,)150 518 y(whic)m(h)30 b(is)h(`)p Ft(!)p Fu(')f(b)m(y)g
+(default.)275 655 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m
(e)h(quoting)f(con)m(v)m(en)m(tions:)40 b(a)27 b(bac)m(kslash)g(can)f
-(b)s(e)g(used)f(to)150 5340 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g
+(b)s(e)g(used)f(to)150 764 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g
(handling)g(for)g(the)g(next)g(c)m(haracter;)k(single)d(quotes)g
-(enclose)g(v)m(erbatim)g(sequences)p eop end
-%%Page: 149 155
-TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(149)150
-299 y(of)29 b(c)m(haracters,)i(and)e(can)g(b)s(e)g(used)f(to)i(inhibit)
-f(history)g(expansion;)g(and)g(c)m(haracters)i(enclosed)e(within)150
-408 y(double)h(quotes)i(ma)m(y)f(b)s(e)f(sub)5 b(ject)31
-b(to)h(history)f(expansion,)g(since)g(bac)m(kslash)g(can)h(escap)s(e)f
-(the)g(history)150 518 y(expansion)e(c)m(haracter,)j(but)d(single)h
-(quotes)g(ma)m(y)h(not,)f(since)g(they)g(are)g(not)f(treated)i(sp)s
-(ecially)f(within)150 628 y(double)g(quotes.)275 765
-y(When)41 b(using)g(the)h(shell,)i(only)e(`)p Ft(\\)p
-Fu(')g(and)e(`)p Ft(')p Fu(')i(ma)m(y)g(b)s(e)f(used)g(to)h(escap)s(e)g
-(the)g(history)f(expansion)150 875 y(c)m(haracter,)e(but)34
-b(the)i(history)g(expansion)f(c)m(haracter)i(is)f(also)g(treated)h(as)e
-(quoted)h(if)g(it)g(immediately)150 984 y(precedes)30
+(enclose)g(v)m(erbatim)g(sequences)150 874 y(of)k(c)m(haracters,)i(and)
+e(can)g(b)s(e)g(used)f(to)i(inhibit)f(history)g(expansion;)g(and)g(c)m
+(haracters)i(enclosed)e(within)150 983 y(double)h(quotes)i(ma)m(y)f(b)s
+(e)f(sub)5 b(ject)31 b(to)h(history)f(expansion,)g(since)g(bac)m
+(kslash)g(can)h(escap)s(e)f(the)g(history)150 1093 y(expansion)e(c)m
+(haracter,)j(but)d(single)h(quotes)g(ma)m(y)h(not,)f(since)g(they)g
+(are)g(not)f(treated)i(sp)s(ecially)f(within)150 1202
+y(double)g(quotes.)275 1339 y(When)41 b(using)g(the)h(shell,)i(only)e
+(`)p Ft(\\)p Fu(')g(and)e(`)p Ft(')p Fu(')i(ma)m(y)g(b)s(e)f(used)g(to)
+h(escap)s(e)g(the)g(history)f(expansion)150 1448 y(c)m(haracter,)e(but)
+34 b(the)i(history)g(expansion)f(c)m(haracter)i(is)f(also)g(treated)h
+(as)e(quoted)h(if)g(it)g(immediately)150 1558 y(precedes)30
b(the)h(closing)g(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275
-1122 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h
+1695 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h
Ft(shopt)f Fu(builtin)g(\(see)i(Section)f(4.3.2)i([The)e(Shopt)150
-1232 y(Builtin],)24 b(page)e(66\))h(ma)m(y)e(b)s(e)g(used)g(to)h
+1804 y(Builtin],)24 b(page)e(71\))h(ma)m(y)e(b)s(e)g(used)g(to)h
(tailor)g(the)g(b)s(eha)m(vior)f(of)h(history)f(expansion.)37
-b(If)21 b(the)h Ft(histverify)150 1341 y Fu(shell)35
+b(If)21 b(the)h Ft(histverify)150 1914 y Fu(shell)35
b(option)f(is)h(enabled,)g(and)f(Readline)h(is)f(b)s(eing)g(used,)h
-(history)g(substitutions)e(are)i(not)g(immedi-)150 1451
+(history)g(substitutions)e(are)i(not)g(immedi-)150 2023
y(ately)i(passed)d(to)i(the)g(shell)f(parser.)55 b(Instead,)37
b(the)e(expanded)g(line)g(is)h(reloaded)g(in)m(to)g(the)f(Readline)150
-1561 y(editing)29 b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41
+2133 y(editing)29 b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41
b(If)28 b(Readline)h(is)g(b)s(eing)f(used,)h(and)f(the)h
-Ft(histreedit)d Fu(shell)150 1670 y(option)e(is)g(enabled,)h(a)g
+Ft(histreedit)d Fu(shell)150 2242 y(option)e(is)g(enabled,)h(a)g
(failed)f(history)g(expansion)g(will)g(b)s(e)f(reloaded)h(in)m(to)h
-(the)f(Readline)g(editing)h(bu\013er)150 1780 y(for)31
+(the)f(Readline)g(editing)h(bu\013er)150 2352 y(for)31
b(correction.)43 b(The)30 b Ft(-p)g Fu(option)h(to)h(the)f
Ft(history)e Fu(builtin)h(command)h(ma)m(y)g(b)s(e)f(used)g(to)i(see)f
-(what)g(a)150 1889 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g
+(what)g(a)150 2462 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g
(using)f(it.)40 b(The)24 b Ft(-s)h Fu(option)g(to)h(the)f
-Ft(history)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 1999
+Ft(history)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 2571
y(to)36 b(add)f(commands)g(to)h(the)g(end)f(of)g(the)h(history)f(list)i
(without)e(actually)i(executing)g(them,)g(so)e(that)150
-2108 y(they)c(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g
+2681 y(they)c(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g
(recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f
-(Readline.)275 2246 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g
+(Readline.)275 2817 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g
(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g
-(expansion)g(mec)m(h-)150 2356 y(anism)h(with)g(the)g
+(expansion)g(mec)m(h-)150 2927 y(anism)h(with)g(the)g
Ft(histchars)d Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)
i(\(see)f(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150
-2465 y(page)32 b(73\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g
+3036 y(page)32 b(78\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g
(commen)m(t)i(c)m(haracter)f(to)g(mark)f(history)g(timestamps)h(when)
-150 2575 y(writing)e(the)h(history)f(\014le.)150 2777
-y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 2924
+150 3146 y(writing)e(the)h(history)f(\014le.)150 3347
+y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 3494
y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h(a)f
(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48
-b(Unless)33 b(the)150 3034 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)
+b(Unless)33 b(the)150 3604 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)
f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h
-(history)f(list.)150 3198 y Ft(!)432 b Fu(Start)34 b(a)f(history)h
+(history)f(list.)150 3766 y Ft(!)432 b Fu(Start)34 b(a)f(history)h
(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h
-(tab,)f(the)g(end)f(of)630 3308 y(the)i(line,)g(`)p Ft(=)p
+(tab,)f(the)g(end)f(of)630 3876 y(the)i(line,)g(`)p Ft(=)p
Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d
Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630
-3417 y Fu(builtin\).)150 3580 y Ft(!)p Fj(n)384 b Fu(Refer)30
-b(to)i(command)e(line)g Fr(n)p Fu(.)150 3742 y Ft(!-)p
+3985 y Fu(builtin\).)150 4147 y Ft(!)p Fj(n)384 b Fu(Refer)30
+b(to)i(command)e(line)g Fr(n)p Fu(.)150 4308 y Ft(!-)p
Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g
-Fu(lines)h(bac)m(k.)150 3905 y Ft(!!)384 b Fu(Refer)30
+Fu(lines)h(bac)m(k.)150 4469 y Ft(!!)384 b Fu(Refer)30
b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f
-(for)g(`)p Ft(!-1)p Fu('.)150 4067 y Ft(!)p Fj(string)144
+(for)g(`)p Ft(!-1)p Fu('.)150 4631 y Ft(!)p Fj(string)144
b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g
(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
-4177 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150
-4340 y Ft(!?)p Fj(string)p Ft([?])630 4449 y Fu(Refer)25
+4740 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150
+4902 y Ft(!?)p Fj(string)p Ft([?])630 5011 y Fu(Refer)25
b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)
-g(p)s(osition)g(in)g(the)g(history)630 4559 y(list)32
+g(p)s(osition)g(in)g(the)g(history)630 5121 y(list)32
b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p
Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39
-b Fu(is)32 b(follo)m(w)m(ed)630 4668 y(immediately)f(b)m(y)e(a)h
+b Fu(is)32 b(follo)m(w)m(ed)630 5230 y(immediately)f(b)m(y)e(a)h
(newline.)40 b(If)29 b Fr(string)38 b Fu(is)29 b(missing,)h(the)g
-(string)f(from)g(the)h(most)g(recen)m(t)630 4778 y(searc)m(h)h(is)f
+(string)f(from)g(the)h(most)g(recen)m(t)630 5340 y(searc)m(h)h(is)f
(used;)g(it)h(is)g(an)f(error)g(if)g(there)h(is)f(no)g(previous)g
-(searc)m(h)h(string.)150 4941 y Ft(^)p Fj(string1)p Ft(^)p
-Fj(string2)p Ft(^)630 5050 y Fu(Quic)m(k)h(Substitution.)44
-b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g
-Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 5160
-y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s^)p Fj(string1)p
-Ft(^)p Fj(string2)p Ft(^)p Fu(.)150 5322 y Ft(!#)384
-b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)p
-eop end
-%%Page: 150 156
-TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(150)150
-299 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150
-446 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h
-(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27
-b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150
-555 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
+(searc)m(h)h(string.)p eop end
+%%Page: 156 162
+TeXDict begin 156 161 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(156)150
+299 y Ft(^)p Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630
+408 y Fu(Quic)m(k)32 b(Substitution.)44 b(Rep)s(eat)32
+b(the)g(last)h(command,)f(replacing)g Fr(string1)40 b
+Fu(with)31 b Fr(string2)p Fu(.)630 518 y(Equiv)-5 b(alen)m(t)31
+b(to)g Ft(!!:s^)p Fj(string1)p Ft(^)p Fj(string2)p Ft(^)p
+Fu(.)150 673 y Ft(!#)384 b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m
+(yp)s(ed)f(so)h(far.)150 867 y Fk(9.3.2)63 b(W)-10 b(ord)41
+b(Designators)150 1014 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e
+(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41
+b(A)27 b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150
+1124 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g
-(b)s(egins)150 665 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p
+(b)s(egins)150 1233 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p
Ft($)p Fu(',)g(`)p Ft(*)p Fu(',)h(`)p Ft(-)p Fu(',)f(or)g(`)p
Ft(\045)p Fu('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i
(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150
-775 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)41
-b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f(line)g
-(separated)h(b)m(y)150 884 y(single)h(spaces.)275 1019
-y(F)-8 b(or)31 b(example,)150 1179 y Ft(!!)384 b Fu(designates)37
-b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f
-(this,)h(the)f(preceding)g(com-)630 1289 y(mand)30 b(is)g(rep)s(eated)g
-(in)g(toto.)150 1449 y Ft(!!:$)288 b Fu(designates)23
-b(the)g(last)g(argumen)m(t)g(of)f(the)h(preceding)f(command.)38
-b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 1558 y(to)31
-b Ft(!$)p Fu(.)150 1718 y Ft(!fi:2)240 b Fu(designates)30
-b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f(recen)m(t)i(command)e
-(starting)h(with)f(the)630 1828 y(letters)j Ft(fi)p Fu(.)275
-1988 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150
-2148 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40
-b(F)-8 b(or)31 b(man)m(y)g(applications,)h(this)e(is)g(the)h(command)f
-(w)m(ord.)150 2308 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150
-2467 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
-(ord)g(1.)150 2627 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
-2787 y Ft(\045)432 b Fu(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m
+1343 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)
+41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f
+(line)g(separated)h(b)m(y)150 1452 y(single)h(spaces.)275
+1584 y(F)-8 b(or)31 b(example,)150 1739 y Ft(!!)384 b
+Fu(designates)37 b(the)f(preceding)g(command.)57 b(When)35
+b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630
+1849 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 2003
+y Ft(!!:$)288 b Fu(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the)
+h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630
+2113 y(to)31 b Ft(!$)p Fu(.)150 2267 y Ft(!fi:2)240 b
+Fu(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f
+(recen)m(t)i(command)e(starting)h(with)f(the)630 2377
+y(letters)j Ft(fi)p Fu(.)275 2531 y(Here)e(are)h(the)g(w)m(ord)f
+(designators:)150 2686 y Ft(0)g(\(zero\))114 b Fu(The)30
+b Ft(0)p Fu(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h
+(this)e(is)g(the)h(command)f(w)m(ord.)150 2840 y Fj(n)432
+b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 2995 y Ft(^)432
+b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150
+3150 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
+3304 y Ft(\045)432 b Fu(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m
(y)f(the)g(most)g(recen)m(t)h(`)p Ft(?)p Fj(string)p
Ft(?)p Fu(')d(searc)m(h,)44 b(if)d(the)g(searc)m(h)630
-2897 y(string)30 b(b)s(egins)g(with)g(a)h(c)m(haracter)h(that)f(is)f
-(part)h(of)f(a)h(w)m(ord.)150 3057 y Fj(x)p Ft(-)p Fj(y)336
+3414 y(string)30 b(b)s(egins)g(with)g(a)h(c)m(haracter)h(that)f(is)f
+(part)h(of)f(a)h(w)m(ord.)150 3568 y Fj(x)p Ft(-)p Fj(y)336
b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p Ft(-)p Fj(y)p
-Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p Fu('.)150 3216
+Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p Fu('.)150 3723
y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h(the)e
Ft(0)p Fu(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p
Ft(1-$)p Fu('.)39 b(It)28 b(is)g(not)g(an)f(error)630
-3326 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m
+3832 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m
(ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h
-(returned)e(in)630 3436 y(that)j(case.)150 3595 y Fj(x)p
+(returned)e(in)630 3942 y(that)j(case.)150 4097 y Fj(x)p
Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150
-3755 y Fj(x)p Ft(-)384 b Fu(Abbreviates)27 b(`)p Fj(x)p
+4251 y Fj(x)p Ft(-)384 b Fu(Abbreviates)27 b(`)p Fj(x)p
Ft(-$)p Fu(')g(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)e(omits)i(the)f
(last)h(w)m(ord.)39 b(If)27 b(`)p Ft(x)p Fu(')g(is)g(missing,)g(it)h
-(defaults)630 3865 y(to)j(0.)275 4025 y(If)i(a)h(w)m(ord)g(designator)g
+(defaults)630 4361 y(to)j(0.)275 4515 y(If)i(a)h(w)m(ord)g(designator)g
(is)g(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h
-(the)e(previous)f(command)150 4135 y(is)d(used)g(as)h(the)f(ev)m(en)m
-(t.)150 4334 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 4481
+(the)e(previous)f(command)150 4625 y(is)d(used)g(as)h(the)f(ev)m(en)m
+(t.)150 4819 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 4966
y Fu(After)29 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g
(add)f(a)h(sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)
-150 4591 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p
+150 5076 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p
Ft(:)p Fu('.)50 b(These)33 b(mo)s(dify)-8 b(,)33 b(or)h(edit,)g(the)g
-(w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 4700 y(the)d(history)f
-(ev)m(en)m(t.)150 4860 y Ft(h)432 b Fu(Remo)m(v)m(e)32
+(w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 5185 y(the)d(history)f
+(ev)m(en)m(t.)150 5340 y Ft(h)432 b Fu(Remo)m(v)m(e)32
b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the)
-h(head.)150 5020 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h
-(pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150
-5180 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
-(the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f
-(basename.)150 5340 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h
-(trailing)g(su\016x.)p eop end
-%%Page: 151 157
-TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(151)150
-299 y Ft(p)432 b Fu(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)
-g(execute)i(it.)150 458 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g
-(w)m(ords,)g(escaping)h(further)e(substitutions.)150
-618 y Ft(x)432 b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i
-(with)f(`)p Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i
-(spaces,)h(tabs,)630 727 y(and)38 b(newlines.)66 b(The)39
-b(`)p Ft(q)p Fu(')g(and)f(`)p Ft(x)p Fu(')h(mo)s(di\014ers)f(are)h(m)m
-(utually)g(exclusiv)m(e;)45 b(the)39 b(last)h(one)630
-837 y(supplied)29 b(is)i(used.)150 996 y Ft(s/)p Fj(old)p
-Ft(/)p Fj(new)p Ft(/)630 1106 y Fu(Substitute)g Fr(new)39
+h(head.)p eop end
+%%Page: 157 163
+TeXDict begin 157 162 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(157)150
+299 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h(pathname)e(comp)s
+(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150 458 y Ft(r)432
+b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g(the)h(form)f(`)p
+Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f(basename.)150
+618 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h(trailing)g
+(su\016x.)150 777 y Ft(p)432 b Fu(Prin)m(t)30 b(the)h(new)f(command)g
+(but)g(do)g(not)g(execute)i(it.)150 936 y Ft(q)432 b
+Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g(escaping)h(further)e
+(substitutions.)150 1096 y Ft(x)432 b Fu(Quote)32 b(the)f(substituted)g
+(w)m(ords)f(as)i(with)f(`)p Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m
+(ords)d(at)i(spaces,)h(tabs,)630 1205 y(and)38 b(newlines.)66
+b(The)39 b(`)p Ft(q)p Fu(')g(and)f(`)p Ft(x)p Fu(')h(mo)s(di\014ers)f
+(are)h(m)m(utually)g(exclusiv)m(e;)45 b(the)39 b(last)h(one)630
+1315 y(supplied)29 b(is)i(used.)150 1474 y Ft(s/)p Fj(old)p
+Ft(/)p Fj(new)p Ft(/)630 1584 y Fu(Substitute)g Fr(new)39
b Fu(for)32 b(the)g(\014rst)f(o)s(ccurrence)h(of)f Fr(old)36
b Fu(in)31 b(the)h(ev)m(en)m(t)h(line.)46 b(An)m(y)31
-b(c)m(haracter)630 1215 y(ma)m(y)k(b)s(e)e(used)h(as)g(the)h(delimiter)
+b(c)m(haracter)630 1694 y(ma)m(y)k(b)s(e)e(used)h(as)g(the)h(delimiter)
g(in)f(place)h(of)f(`)p Ft(/)p Fu('.)53 b(The)33 b(delimiter)i(ma)m(y)g
-(b)s(e)f(quoted)g(in)630 1325 y Fr(old)40 b Fu(and)c
+(b)s(e)f(quoted)g(in)630 1803 y Fr(old)40 b Fu(and)c
Fr(new)44 b Fu(with)36 b(a)h(single)g(bac)m(kslash.)60
b(If)36 b(`)p Ft(&)p Fu(')h(app)s(ears)e(in)i Fr(new)p
-Fu(,)g(it)h(is)e(replaced)h(b)m(y)630 1435 y Fr(old)p
+Fu(,)g(it)h(is)e(replaced)h(b)m(y)630 1913 y Fr(old)p
Fu(.)k(A)31 b(single)g(bac)m(kslash)g(will)g(quote)g(the)g(`)p
Ft(&)p Fu('.)41 b(If)31 b Fr(old)j Fu(is)c(n)m(ull,)h(it)g(is)g(set)g
-(to)g(the)g(last)g Fr(old)630 1544 y Fu(substituted,)j(or,)g(if)f(no)g
+(to)g(the)g(last)g Fr(old)630 2022 y Fu(substituted,)j(or,)g(if)f(no)g
(previous)g(history)g(substitutions)g(to)s(ok)h(place,)h(the)e(last)h
-Fr(string)630 1654 y Fu(in)j(a)g(!?)p Fr(string)8 b Ft([?])37
-b Fu(searc)m(h.)61 b(If)37 b Fr(new)45 b Fu(is)37 b(is)g(n)m(ull,)i
-(eac)m(h)f(matc)m(hing)h Fr(old)h Fu(is)e(deleted.)61
-b(The)630 1763 y(\014nal)30 b(delimiter)h(is)g(optional)g(if)f(it)h(is)
-g(the)f(last)i(c)m(haracter)f(on)g(the)f(input)g(line.)150
-1923 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
-2082 y Ft(g)150 2192 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
+Fr(string)630 2132 y Fu(in)d(a)g(!?)p Fr(string)8 b Ft([?])30
+b Fu(searc)m(h.)44 b(If)31 b Fr(new)38 b Fu(is)31 b(n)m(ull,)h(eac)m(h)
+g(matc)m(hing)g Fr(old)j Fu(is)c(deleted.)44 b(The)30
+b(\014nal)630 2242 y(delimiter)h(is)g(optional)g(if)f(it)h(is)g(the)f
+(last)h(c)m(haracter)h(on)f(the)f(input)g(line.)150 2401
+y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
+2560 y Ft(g)150 2670 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
(applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66
-b(Used)39 b(in)f(conjunction)630 2301 y(with)30 b(`)p
+b(Used)39 b(in)f(conjunction)630 2780 y(with)30 b(`)p
Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p
-Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 2461 y
+Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 2939 y
Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p
Fu(')f(or)f(`)p Ft(&)p Fu(')h(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m
(ord)e(in)g(the)g(ev)m(en)m(t.)p eop end
-%%Page: 152 158
-TeXDict begin 152 157 bop 3614 -116 a Fu(152)150 299
-y Fp(10)80 b(Installing)52 b(Bash)150 534 y Fu(This)31
+%%Page: 158 164
+TeXDict begin 158 163 bop 3614 -116 a Fu(158)150 299
+y Fp(10)80 b(Installing)52 b(Bash)150 539 y Fu(This)31
b(c)m(hapter)h(pro)m(vides)g(basic)g(instructions)f(for)g(installing)i
(Bash)f(on)f(the)h(v)-5 b(arious)31 b(supp)s(orted)f(plat-)150
-643 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j
+648 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j
Fm(gnu)f Fu(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f
-(of)h(Unix,)150 753 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g
+(of)h(Unix,)150 758 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g
(as)g(BeOS)g(and)f(In)m(terix.)40 b(Other)28 b(indep)s(enden)m(t)e(p)s
-(orts)h(exist)i(for)150 862 y Fm(ms-dos)p Fu(,)h Fm(os/2)p
-Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1103 y Fs(10.1)68
-b(Basic)45 b(Installation)150 1263 y Fu(These)30 b(are)h(installation)h
-(instructions)e(for)h(Bash.)275 1398 y(The)e(simplest)i(w)m(a)m(y)g(to)
-g(compile)h(Bash)e(is:)199 1532 y(1.)61 b Ft(cd)38 b
+(orts)h(exist)i(for)150 867 y Fm(ms-dos)p Fu(,)h Fm(os/2)p
+Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1111 y Fs(10.1)68
+b(Basic)45 b(Installation)150 1270 y Fu(These)30 b(are)h(installation)h
+(instructions)e(for)h(Bash.)275 1407 y(The)e(simplest)i(w)m(a)m(y)g(to)
+g(compile)h(Bash)e(is:)199 1543 y(1.)61 b Ft(cd)38 b
Fu(to)h(the)f(directory)h(con)m(taining)h(the)f(source)f(co)s(de)h(and)
f(t)m(yp)s(e)g(`)p Ft(./configure)p Fu(')e(to)j(con\014gure)330
-1642 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f
+1653 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f
Ft(csh)g Fu(on)g(an)h(old)g(v)m(ersion)g(of)g(System)f(V,)h(y)m(ou)g
-(migh)m(t)330 1751 y(need)21 b(to)g(t)m(yp)s(e)g(`)p
+(migh)m(t)330 1762 y(need)21 b(to)g(t)m(yp)s(e)g(`)p
Ft(sh)30 b(./configure)p Fu(')18 b(instead)j(to)g(prev)m(en)m(t)h
Ft(csh)e Fu(from)g(trying)h(to)g(execute)h Ft(configure)330
-1861 y Fu(itself.)330 1996 y(Running)30 b Ft(configure)f
+1872 y Fu(itself.)330 2007 y(Running)30 b Ft(configure)f
Fu(tak)m(es)k(some)e(time.)45 b(While)32 b(running,)e(it)i(prin)m(ts)f
-(messages)h(telling)h(whic)m(h)330 2105 y(features)e(it)g(is)f(c)m(hec)
-m(king)i(for.)199 2240 y(2.)61 b(T)m(yp)s(e)30 b(`)p
+(messages)h(telling)h(whic)m(h)330 2117 y(features)e(it)g(is)f(c)m(hec)
+m(king)i(for.)199 2252 y(2.)61 b(T)m(yp)s(e)30 b(`)p
Ft(make)p Fu(')g(to)h(compile)g(Bash)g(and)e(build)h(the)g
-Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2374
+Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2388
y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p Ft(make)g(tests)p
-Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2509
-y(4.)61 b(T)m(yp)s(e)36 b(`)p Ft(make)29 b(install)p
-Fu(')35 b(to)i(install)h Ft(bash)d Fu(and)h Ft(bashbug)p
-Fu(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330
-2619 y(pages)31 b(and)f(Info)g(\014le.)275 2778 y(The)20
-b Ft(configure)f Fu(shell)i(script)g(attempts)h(to)g(guess)f(correct)i
-(v)-5 b(alues)21 b(for)g(v)-5 b(arious)21 b(system-dep)s(enden)m(t)150
-2888 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42
-b(It)31 b(uses)e(those)i(v)-5 b(alues)30 b(to)h(create)h(a)e
-Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 2998 y(tory)k(of)g(the)g
-(pac)m(k)-5 b(age)38 b(\(the)e(top)g(directory)-8 b(,)38
-b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)i(and)e Ft(support)e
-Fu(directories,)39 b(eac)m(h)150 3107 y(directory)29
-b(under)d Ft(lib)p Fu(,)j(and)e(sev)m(eral)j(others\).)40
-b(It)29 b(also)g(creates)h(a)e Ft(config.h)e Fu(\014le)j(con)m(taining)
-g(system-)150 3217 y(dep)s(enden)m(t)e(de\014nitions.)40
-b(Finally)-8 b(,)31 b(it)d(creates)i(a)f(shell)g(script)f(named)g
-Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3326 y(run)h(in)h(the)h
-(future)f(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)i(a)f
-(\014le)f Ft(config.cache)e Fu(that)j(sa)m(v)m(es)h(the)150
-3436 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g
-(recon\014guring,)j(and)e(a)g(\014le)g Ft(config.log)e
-Fu(con)m(taining)j(compiler)150 3545 y(output)30 b(\(useful)h(mainly)g
-(for)f(debugging)h Ft(configure)p Fu(\).)40 b(If)30 b(at)h(some)h(p)s
-(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3655
-y(results)i(y)m(ou)h(don't)f(w)m(an)m(t)h(to)h(k)m(eep,)f(y)m(ou)g(ma)m
-(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3790 y(T)-8 b(o)37
-b(\014nd)f(out)i(more)f(ab)s(out)h(the)f(options)h(and)f(argumen)m(ts)g
-(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3899
-y(stands,)30 b(t)m(yp)s(e)390 4034 y Ft(bash-4.2$)45
-b(./configure)g(--help)150 4169 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g
-(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4303
-y(If)34 b(y)m(ou)h(w)m(an)m(t)g(to)g(build)f(Bash)g(in)h(a)g(directory)
-g(separate)g(from)f(the)h(source)g(directory)g({)g(to)g(build)150
-4413 y(for)30 b(m)m(ultiple)i(arc)m(hitectures,)g(for)e(example)h({)g
-(just)f(use)h(the)f(full)h(path)f(to)h(the)g(con\014gure)f(script.)41
-b(The)150 4523 y(follo)m(wing)24 b(commands)f(will)g(build)f(bash)g(in)
-g(a)h(directory)h(under)d Ft(/usr/local/build)d Fu(from)23
-b(the)g(source)150 4632 y(co)s(de)31 b(in)f Ft(/usr/local/src/bash-4.4)
-o Fu(:)390 4767 y Ft(mkdir)46 b(/usr/local/build/bash-4.4)390
-4877 y(cd)h(/usr/local/build/bash-4.4)390 4986 y(bash)g
-(/usr/local/src/bash-4.4)o(/con)o(fig)o(ure)390 5096
-y(make)275 5230 y Fu(See)27 b(Section)h(10.3)g([Compiling)g(F)-8
-b(or)27 b(Multiple)h(Arc)m(hitectures],)i(page)d(153,)j(for)c(more)i
-(information)150 5340 y(ab)s(out)i(building)g(in)g(a)g(directory)h
-(separate)h(from)e(the)g(source.)p eop end
-%%Page: 153 159
-TeXDict begin 153 158 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(153)275 299 y(If)53 b(y)m(ou)h(need)f(to)
-i(do)e(un)m(usual)g(things)g(to)i(compile)g(Bash,)k(please)c(try)e(to)i
-(\014gure)e(out)h(ho)m(w)150 408 y Ft(configure)47 b
-Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h(to)h(do)e(them,)55
-b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to)150
-518 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 b(they)h(can)g(b)s(e)e
-(considered)i(for)f(the)g(next)h(release.)275 658 y(The)e(\014le)g
-Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g Ft(configure)c
-Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 b(Y)-8
-b(ou)150 768 y(only)34 b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m
-(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i Ft(configure)31
-b Fu(using)j(a)g(new)m(er)150 878 y(v)m(ersion)25 b(of)f(Auto)s(conf.)
-39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f(y)m(ou)h(are)f
-(using)g(Auto)s(conf)h(v)m(ersion)f(2.50)i(or)f(new)m(er.)275
-1018 y(Y)-8 b(ou)29 b(can)f(remo)m(v)m(e)i(the)f(program)g(binaries)f
-(and)g(ob)5 b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s(de)h
-(directory)g(b)m(y)150 1127 y(t)m(yping)j(`)p Ft(make)d(clean)p
-Fu('.)42 b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g
+Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2523
+y(4.)61 b(T)m(yp)s(e)42 b(`)p Ft(make)30 b(install)p
+Fu(')41 b(to)i(install)h Ft(bash)d Fu(and)i Ft(bashbug)p
+Fu(.)76 b(This)42 b(will)h(also)g(install)h(the)f(man-)330
+2633 y(ual)30 b(pages)g(and)g(Info)f(\014le,)h(message)h(translation)g
+(\014les,)f(some)g(supplemen)m(tal)h(do)s(cumen)m(tation,)g(a)330
+2742 y(n)m(um)m(b)s(er)c(of)h(example)h(loadable)g(builtin)f(commands,)
+g(and)g(a)g(set)h(of)f(header)g(\014les)g(for)g(dev)m(eloping)330
+2852 y(loadable)36 b(builtins.)55 b(Y)-8 b(ou)36 b(ma)m(y)f(need)g
+(additional)h(privileges)g(to)g(install)g Ft(bash)e Fu(to)i(y)m(our)f
+(desired)330 2962 y(destination,)f(so)f(`)p Ft(sudo)d(make)f(install)p
+Fu(')i(migh)m(t)i(b)s(e)f(required.)47 b(More)33 b(information)g(ab)s
+(out)f(con-)330 3071 y(trolling)c(the)g(lo)s(cations)g(where)f
+Ft(bash)f Fu(and)h(other)g(\014les)g(are)h(installed)g(is)f(b)s(elo)m
+(w)g(\(see)h(Section)g(10.4)330 3181 y([Installation)k(Names],)g(page)f
+(160\).)275 3343 y(The)20 b Ft(configure)f Fu(shell)i(script)g
+(attempts)h(to)g(guess)f(correct)i(v)-5 b(alues)21 b(for)g(v)-5
+b(arious)21 b(system-dep)s(enden)m(t)150 3453 y(v)-5
+b(ariables)38 b(used)f(during)f(compilation.)64 b(It)37
+b(uses)g(those)h(v)-5 b(alues)38 b(to)g(create)h(a)f
+Ft(Makefile)d Fu(in)i(eac)m(h)i(di-)150 3562 y(rectory)32
+b(of)f(the)h(pac)m(k)-5 b(age)33 b(\(the)f(top)f(directory)-8
+b(,)33 b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)h Ft(po)p
+Fu(,)g(and)f Ft(support)g Fu(directories,)150 3672 y(eac)m(h)38
+b(directory)g(under)d Ft(lib)p Fu(,)j(and)f(sev)m(eral)h(others\).)61
+b(It)38 b(also)g(creates)g(a)f Ft(config.h)e Fu(\014le)i(con)m(taining)
+150 3781 y(system-dep)s(enden)m(t)31 b(de\014nitions.)44
+b(Finally)-8 b(,)34 b(it)e(creates)h(a)f(shell)g(script)f(named)g
+Ft(config.status)d Fu(that)150 3891 y(y)m(ou)35 b(can)h(run)d(in)i(the)
+g(future)f(to)i(recreate)g(the)g(curren)m(t)e(con\014guration,)j(a)f
+(\014le)f Ft(config.cache)c Fu(that)150 4001 y(sa)m(v)m(es)39
+b(the)e(results)g(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)h
+(recon\014guring,)h(and)f(a)h(\014le)f Ft(config.log)d
+Fu(con)m(taining)150 4110 y(compiler)c(output)g(\(useful)f(mainly)h
+(for)f(debugging)h Ft(configure)p Fu(\).)38 b(If)29 b(at)i(some)f(p)s
+(oin)m(t)f Ft(config.cache)150 4220 y Fu(con)m(tains)j(results)e(y)m
+(ou)g(don't)h(w)m(an)m(t)g(to)g(k)m(eep,)g(y)m(ou)g(ma)m(y)g(remo)m(v)m
+(e)h(or)e(edit)h(it.)275 4356 y(T)-8 b(o)37 b(\014nd)f(out)i(more)f(ab)
+s(out)h(the)f(options)h(and)f(argumen)m(ts)g(that)h(the)g
+Ft(configure)d Fu(script)i(under-)150 4466 y(stands,)30
+b(t)m(yp)s(e)390 4602 y Ft(bash-4.2$)45 b(./configure)g(--help)150
+4738 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g(y)m(our)g(Bash)h(source)f
+(directory)-8 b(.)275 4875 y(If)34 b(y)m(ou)h(w)m(an)m(t)g(to)g(build)f
+(Bash)g(in)h(a)g(directory)g(separate)g(from)f(the)h(source)g
+(directory)g({)g(to)g(build)150 4984 y(for)30 b(m)m(ultiple)i(arc)m
+(hitectures,)g(for)e(example)h({)g(just)f(use)h(the)f(full)h(path)f(to)
+h(the)g(con\014gure)f(script.)41 b(The)150 5094 y(follo)m(wing)24
+b(commands)f(will)g(build)f(bash)g(in)g(a)h(directory)h(under)d
+Ft(/usr/local/build)d Fu(from)23 b(the)g(source)150 5204
+y(co)s(de)31 b(in)f Ft(/usr/local/src/bash-4.4)o Fu(:)390
+5340 y Ft(mkdir)46 b(/usr/local/build/bash-4.4)p eop
+end
+%%Page: 159 165
+TeXDict begin 159 164 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(159)390 299 y Ft(cd)47
+b(/usr/local/build/bash-4.4)390 408 y(bash)g(/usr/local/src/bash-4.4)o
+(/con)o(fig)o(ure)390 518 y(make)275 652 y Fu(See)27
+b(Section)h(10.3)g([Compiling)g(F)-8 b(or)27 b(Multiple)h(Arc)m
+(hitectures],)i(page)d(159,)j(for)c(more)i(information)150
+762 y(ab)s(out)i(building)g(in)g(a)g(directory)h(separate)h(from)e(the)
+g(source.)275 896 y(If)53 b(y)m(ou)h(need)f(to)i(do)e(un)m(usual)g
+(things)g(to)i(compile)g(Bash,)k(please)c(try)e(to)i(\014gure)e(out)h
+(ho)m(w)150 1006 y Ft(configure)47 b Fu(could)j(c)m(hec)m(k)h(whether)e
+(or)g(not)h(to)h(do)e(them,)55 b(and)49 b(mail)h(di\013s)f(or)h
+(instructions)f(to)150 1115 y Ft(bash-maintainers@gnu.org)24
+b Fu(so)30 b(they)h(can)g(b)s(e)e(considered)i(for)f(the)g(next)h
+(release.)275 1250 y(The)e(\014le)g Ft(configure.ac)d
+Fu(is)k(used)e(to)j(create)g Ft(configure)c Fu(b)m(y)i(a)h(program)f
+(called)i(Auto)s(conf.)40 b(Y)-8 b(ou)150 1359 y(only)34
+b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m(an)m(t)g(to)f(c)m
+(hange)i(it)e(or)g(regenerate)i Ft(configure)31 b Fu(using)j(a)g(new)m
+(er)150 1469 y(v)m(ersion)25 b(of)f(Auto)s(conf.)39 b(If)24
+b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f(y)m(ou)h(are)f(using)g(Auto)s
+(conf)h(v)m(ersion)f(2.69)i(or)f(new)m(er.)275 1603 y(Y)-8
+b(ou)29 b(can)f(remo)m(v)m(e)i(the)f(program)g(binaries)f(and)g(ob)5
+b(ject)29 b(\014les)g(from)f(the)h(source)f(co)s(de)h(directory)g(b)m
+(y)150 1713 y(t)m(yping)j(`)p Ft(make)d(clean)p Fu('.)42
+b(T)-8 b(o)32 b(also)g(remo)m(v)m(e)g(the)g(\014les)f(that)g
Ft(configure)e Fu(created)j(\(so)g(y)m(ou)g(can)f(compile)150
-1237 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m
-(yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)150 1487 y
-Fs(10.2)68 b(Compilers)46 b(and)f(Options)150 1646 y
+1822 y(Bash)g(for)f(a)g(di\013eren)m(t)h(kind)f(of)g(computer\),)h(t)m
+(yp)s(e)g(`)p Ft(make)e(distclean)p Fu('.)150 2063 y
+Fs(10.2)68 b(Compilers)46 b(and)f(Options)150 2222 y
Fu(Some)28 b(systems)h(require)f(un)m(usual)f(options)i(for)f
(compilation)i(or)f(linking)f(that)h(the)g Ft(configure)d
-Fu(script)150 1756 y(do)s(es)32 b(not)g(kno)m(w)g(ab)s(out.)44
+Fu(script)150 2332 y(do)s(es)32 b(not)g(kno)m(w)g(ab)s(out.)44
b(Y)-8 b(ou)33 b(can)f(giv)m(e)h Ft(configure)d Fu(initial)j(v)-5
b(alues)32 b(for)g(v)-5 b(ariables)32 b(b)m(y)g(setting)h(them)150
-1865 y(in)k(the)g(en)m(vironmen)m(t.)62 b(Using)38 b(a)f
+2441 y(in)k(the)g(en)m(vironmen)m(t.)62 b(Using)38 b(a)f
(Bourne-compatible)i(shell,)g(y)m(ou)f(can)g(do)f(that)h(on)f(the)g
-(command)150 1975 y(line)31 b(lik)m(e)g(this:)390 2115
+(command)150 2551 y(line)31 b(lik)m(e)g(this:)390 2685
y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g(./configure)275
-2255 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f
+2819 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f
Ft(env)e Fu(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390
-2396 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42
-b(LDFLAGS=-s)j(./configure)275 2536 y Fu(The)29 b(con\014guration)i
+2954 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42
+b(LDFLAGS=-s)j(./configure)275 3088 y Fu(The)29 b(con\014guration)i
(pro)s(cess)f(uses)g(GCC)g(to)h(build)e(Bash)i(if)f(it)h(is)g(a)m(v)-5
-b(ailable.)150 2786 y Fs(10.3)68 b(Compiling)46 b(F)-11
-b(or)45 b(Multiple)g(Arc)l(hitectures)150 2945 y Fu(Y)-8
+b(ailable.)150 3328 y Fs(10.3)68 b(Compiling)46 b(F)-11
+b(or)45 b(Multiple)g(Arc)l(hitectures)150 3488 y Fu(Y)-8
b(ou)27 b(can)g(compile)g(Bash)g(for)f(more)h(than)f(one)h(kind)f(of)g
(computer)h(at)g(the)g(same)g(time,)h(b)m(y)e(placing)i(the)150
-3055 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in)
+3597 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in)
f(their)g(o)m(wn)h(directory)-8 b(.)41 b(T)-8 b(o)31
b(do)f(this,)g(y)m(ou)h(m)m(ust)f(use)g(a)g(v)m(ersion)150
-3164 y(of)36 b Ft(make)e Fu(that)i(supp)s(orts)e(the)i
+3707 y(of)36 b Ft(make)e Fu(that)i(supp)s(orts)e(the)i
Ft(VPATH)e Fu(v)-5 b(ariable,)38 b(suc)m(h)d(as)h(GNU)g
Ft(make)p Fu(.)55 b Ft(cd)35 b Fu(to)i(the)e(directory)h(where)150
-3274 y(y)m(ou)k(w)m(an)m(t)h(the)g(ob)5 b(ject)41 b(\014les)f(and)f
+3817 y(y)m(ou)k(w)m(an)m(t)h(the)g(ob)5 b(ject)41 b(\014les)f(and)f
(executables)j(to)e(go)h(and)f(run)e(the)j Ft(configure)c
-Fu(script)j(from)g(the)150 3383 y(source)32 b(directory)h(\(see)g
-(Section)f(10.1)i([Basic)f(Installation],)i(page)e(152\).)47
-b(Y)-8 b(ou)32 b(ma)m(y)h(need)f(to)g(supply)150 3493
+Fu(script)j(from)g(the)150 3926 y(source)32 b(directory)h(\(see)g
+(Section)f(10.1)i([Basic)f(Installation],)i(page)e(158\).)47
+b(Y)-8 b(ou)32 b(ma)m(y)h(need)f(to)g(supply)150 4036
y(the)43 b Ft(--srcdir=PATH)c Fu(argumen)m(t)k(to)h(tell)g
Ft(configure)c Fu(where)i(the)h(source)g(\014les)g(are.)78
-b Ft(configure)150 3603 y Fu(automatically)33 b(c)m(hec)m(ks)f(for)e
+b Ft(configure)150 4145 y Fu(automatically)33 b(c)m(hec)m(ks)f(for)e
(the)h(source)f(co)s(de)h(in)f(the)h(directory)f(that)h
-Ft(configure)d Fu(is)j(in)f(and)f(in)h(`..'.)275 3743
-y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Ft(make)f
-Fu(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Ft(VPATH)e
-Fu(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150
-3853 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h
+Ft(configure)d Fu(is)j(in)f(and)f(in)h(`..'.)275 4280
+y(If)22 b(y)m(ou)i(ha)m(v)m(e)g(to)g(use)f(a)g Ft(make)f
+Fu(that)i(do)s(es)f(not)g(supp)s(ort)e(the)j Ft(VPATH)d
+Fu(v)-5 b(ariable,)26 b(y)m(ou)d(can)h(compile)g(Bash)150
+4389 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h
(source)g(co)s(de)f(directory)-8 b(.)51 b(After)34 b(y)m(ou)g(ha)m(v)m
-(e)h(installed)f(Bash)150 3962 y(for)c(one)h(arc)m(hitecture,)h(use)e
+(e)h(installed)f(Bash)150 4499 y(for)c(one)h(arc)m(hitecture,)h(use)e
(`)p Ft(make)g(distclean)p Fu(')e(b)s(efore)i(recon\014guring)g(for)g
-(another)g(arc)m(hitecture.)275 4102 y(Alternativ)m(ely)-8
+(another)g(arc)m(hitecture.)275 4633 y(Alternativ)m(ely)-8
b(,)30 b(if)c(y)m(our)g(system)h(supp)s(orts)d(sym)m(b)s(olic)j(links,)
-g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 4212
+g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 4743
y Fu(script)d(to)h(create)g(a)f(build)f(tree)i(whic)m(h)f(has)f(sym)m
(b)s(olic)i(links)e(bac)m(k)i(to)g(eac)m(h)g(\014le)f(in)g(the)g
-(source)g(directory)-8 b(.)150 4322 y(Here's)41 b(an)f(example)i(that)f
+(source)g(directory)-8 b(.)150 4852 y(Here's)41 b(an)f(example)i(that)f
(creates)h(a)e(build)g(directory)h(in)f(the)h(curren)m(t)f(directory)h
-(from)f(a)h(source)150 4431 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p
-Fu(:)390 4572 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o
+(from)f(a)h(source)150 4962 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p
+Fu(:)390 5096 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o
(mkcl)o(one)41 b(-s)47 b(/usr/gnu/src/bash-2.0)42 b(.)150
-4712 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m
+5230 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m
(ou)f(m)m(ust)h(ha)m(v)m(e)g(already)g(built)f(Bash)g(for)g(at)h(least)
-h(one)150 4821 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f
-(create)i(build)e(directories)h(for)f(other)h(arc)m(hitectures.)150
-5071 y Fs(10.4)68 b(Installation)47 b(Names)150 5230
-y Fu(By)37 b(default,)i(`)p Ft(make)29 b(install)p Fu(')35
-b(will)j(install)f(in)m(to)h Ft(/usr/local/bin)p Fu(,)d
-Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 5340
-y(can)35 b(sp)s(ecify)f(an)h(installation)i(pre\014x)c(other)j(than)e
-Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)p
+h(one)150 5340 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f
+(create)i(build)e(directories)h(for)f(other)h(arc)m(hitectures.)p
eop end
-%%Page: 154 160
-TeXDict begin 154 159 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(154)150 299 y Ft(--prefix=)p
-Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h(a)f(v)-5
-b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p Ft(make)p
-Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 408 y(`)p
-Ft(make)29 b(install)p Fu('.)275 566 y(Y)-8 b(ou)71 b(can)h(sp)s(ecify)
-f(separate)h(installation)h(pre\014xes)d(for)h(arc)m(hitecture-sp)s
-(eci\014c)i(\014les)f(and)150 676 y(arc)m(hitecture-indep)s(enden)m(t)
-44 b(\014les.)80 b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c
-Fu(the)j(option)g Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150
-785 y(`)p Ft(make)29 b(install)p Fu(')63 b(will)h(use)f
-Fr(P)-8 b(A)g(TH)75 b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h
-(programs)e(and)h(libraries.)150 895 y(Do)s(cumen)m(tation)32
-b(and)e(other)h(data)g(\014les)f(will)h(still)g(use)f(the)h(regular)f
-(pre\014x.)150 1171 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)
-l(yp)t(e)150 1330 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f
-Ft(configure)e Fu(can)i(not)g(\014gure)g(out)g(automatically)-8
-b(,)52 b(but)44 b(need)h(to)150 1440 y(determine)26 b(b)m(y)g(the)g(t)m
-(yp)s(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26
+%%Page: 160 166
+TeXDict begin 160 165 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(160)150 299 y Fs(10.4)68
+b(Installation)47 b(Names)150 458 y Fu(By)36 b(default,)g(`)p
+Ft(make)30 b(install)p Fu(')j(will)j(install)g(in)m(to)g
+Ft(/usr/local/bin)p Fu(,)d Ft(/usr/local/man)p Fu(,)g(etc.;)39
+b(that)150 568 y(is,)i(the)d Fr(installation)i(pre\014x)k
+Fu(defaults)38 b(to)h Ft(/usr/local)p Fu(.)62 b(Y)-8
+b(ou)39 b(can)g(sp)s(ecify)f(an)g(installation)i(pre\014x)150
+677 y(other)34 b(than)g Ft(/usr/local)d Fu(b)m(y)j(giving)h
+Ft(configure)d Fu(the)i(option)g Ft(--prefix=)p Fj(PATH)p
+Fu(,)e(or)i(b)m(y)g(sp)s(ecifying)150 787 y(a)h(v)-5
+b(alue)34 b(for)h(the)f Ft(prefix)f Fu(`)p Ft(make)p
+Fu(')g(v)-5 b(ariable)35 b(when)f(running)e(`)p Ft(make)e(install)p
+Fu(')i(\(e.g.,)37 b(`)p Ft(make)30 b(install)150 897
+y(prefix=)p Fj(PATH)p Fu('\).)35 b(The)21 b Ft(prefix)f
+Fu(v)-5 b(ariable)22 b(pro)m(vides)g(a)f(default)h(for)f
+Ft(exec_prefix)e Fu(and)i(other)g(v)-5 b(ariables)150
+1006 y(used)30 b(when)f(installing)i(bash.)275 1159 y(Y)-8
+b(ou)71 b(can)h(sp)s(ecify)f(separate)h(installation)h(pre\014xes)d
+(for)h(arc)m(hitecture-sp)s(eci\014c)i(\014les)f(and)150
+1268 y(arc)m(hitecture-indep)s(enden)m(t)44 b(\014les.)80
+b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c Fu(the)j(option)g
+Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 1378 y(`)p Ft(make)29
+b(install)p Fu(')63 b(will)h(use)f Fr(P)-8 b(A)g(TH)75
+b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h(programs)e(and)h
+(libraries.)150 1488 y(Do)s(cumen)m(tation)32 b(and)e(other)h(data)g
+(\014les)f(will)h(still)g(use)f(the)h(regular)f(pre\014x.)275
+1640 y(If)35 b(y)m(ou)i(w)m(ould)e(lik)m(e)j(to)e(c)m(hange)i(the)e
+(installation)i(lo)s(cations)f(for)f(a)h(single)f(run,)h(y)m(ou)f(can)g
+(sp)s(ecify)150 1750 y(these)28 b(v)-5 b(ariables)27
+b(as)h(argumen)m(ts)f(to)h Ft(make)p Fu(:)38 b(`)p Ft(make)29
+b(install)g(exec_prefix=/)p Fu(')23 b(will)28 b(install)g
+Ft(bash)e Fu(and)150 1859 y Ft(bashbug)i Fu(in)m(to)k
+Ft(/bin)d Fu(instead)i(of)f(the)h(default)f Ft(/usr/local/bin)p
+Fu(.)275 2012 y(If)43 b(y)m(ou)i(w)m(an)m(t)g(to)g(see)f(the)h(\014les)
+f(bash)f(will)i(install)g(and)e(where)h(it)g(will)h(install)g(them)f
+(without)150 2122 y(c)m(hanging)35 b(an)m(ything)f(on)f(y)m(our)h
+(system,)h(sp)s(ecify)e(the)h(v)-5 b(ariable)35 b Ft(DESTDIR)d
+Fu(as)i(an)f(argumen)m(t)h(to)h Ft(make)p Fu(.)150 2231
+y(Its)29 b(v)-5 b(alue)29 b(should)f(b)s(e)g(the)h(absolute)h
+(directory)f(path)g(y)m(ou'd)g(lik)m(e)h(to)g(use)e(as)i(the)f(ro)s(ot)
+g(of)g(y)m(our)g(sample)150 2341 y(installation)j(tree.)42
+b(F)-8 b(or)31 b(example,)390 2493 y Ft(mkdir)46 b(/fs1/bash-install)
+390 2603 y(make)h(install)e(DESTDIR=/fs1/bash-install)150
+2756 y Fu(will)37 b(install)g Ft(bash)e Fu(in)m(to)j
+Ft(/fs1/bash-install/usr/l)o(ocal)o(/bin)o(/ba)o(sh)p
+Fu(,)32 b(the)37 b(do)s(cumen)m(tation)g(in)m(to)150
+2865 y(directories)44 b(within)e Ft(/fs1/bash-install/usr/l)o(ocal)o
+(/sha)o(re)p Fu(,)e(the)i(example)i(loadable)g(builtins)150
+2975 y(in)m(to)35 b Ft(/fs1/bash-install/usr/loc)o(al/l)o(ib/b)o(ash)o
+Fu(,)30 b(and)k(so)g(on.)53 b(Y)-8 b(ou)34 b(can)h(use)f(the)h(usual)e
+Ft(exec_)150 3084 y(prefix)c Fu(and)g Ft(prefix)g Fu(v)-5
+b(ariables)31 b(to)g(alter)h(the)e(directory)h(paths)f(b)s(eneath)g
+(the)h(v)-5 b(alue)30 b(of)h Ft(DESTDIR)p Fu(.)275 3237
+y(The)24 b(GNU)i(Mak)m(e\014le)h(standards)d(pro)m(vide)i(a)f(more)h
+(complete)g(description)g(of)f(these)h(v)-5 b(ariables)26
+b(and)150 3346 y(their)k(e\013ects.)150 3614 y Fs(10.5)68
+b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150 3774
+y Fu(There)c(ma)m(y)h(b)s(e)e(some)i(features)g Ft(configure)c
+Fu(can)k(not)g(\014gure)e(out)i(automatically)-8 b(,)49
+b(but)41 b(needs)h(to)150 3883 y(determine)26 b(b)m(y)g(the)g(t)m(yp)s
+(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26
b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)150
-1549 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f
+3993 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f
(guess)h(the)g(host)f(t)m(yp)s(e,)i(giv)m(e)g(it)f(the)g
-Ft(--host=TYPE)c Fu(option.)150 1659 y(`)p Ft(TYPE)p
+Ft(--host=TYPE)c Fu(option.)150 4103 y(`)p Ft(TYPE)p
Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h(for)f(the)h(system)
g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p Ft(sun4)p Fu(',)g(or)f(a)h
-(canonical)i(name)150 1768 y(with)e(three)h(\014elds:)40
+(canonical)i(name)150 4212 y(with)e(three)h(\014elds:)40
b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 b(`)p
-Ft(i386-unknown-freebsd4.2)p Fu('\).)275 1926 y(See)e(the)h(\014le)f
+Ft(i386-unknown-freebsd4.2)p Fu('\).)275 4365 y(See)e(the)h(\014le)f
Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5
-b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 2202 y Fs(10.6)68
-b(Sharing)45 b(Defaults)150 2361 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f
+b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 4633 y Fs(10.6)68
+b(Sharing)45 b(Defaults)150 4792 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f
(set)h(default)f(v)-5 b(alues)43 b(for)g Ft(configure)d
Fu(scripts)j(to)h(share,)i(y)m(ou)d(can)g(create)i(a)e(site)150
-2471 y(shell)48 b(script)f(called)i Ft(config.site)44
+4902 y(shell)48 b(script)f(called)i Ft(config.site)44
b Fu(that)k(giv)m(es)h(default)f(v)-5 b(alues)48 b(for)f(v)-5
b(ariables)48 b(lik)m(e)h Ft(CC)p Fu(,)j Ft(cache_)150
-2580 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43
+5011 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43
b Fu(lo)s(oks)j(for)f Ft(PREFIX/share/config.site)39
-b Fu(if)46 b(it)g(exists,)k(then)150 2690 y Ft(PREFIX/etc/config.site)
+b Fu(if)46 b(it)g(exists,)k(then)150 5121 y Ft(PREFIX/etc/config.site)
24 b Fu(if)31 b(it)g(exists.)42 b(Or,)30 b(y)m(ou)h(can)g(set)g(the)g
Ft(CONFIG_SITE)c Fu(en)m(vironmen)m(t)k(v)-5 b(ari-)150
-2800 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67
+5230 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67
b(A)40 b(w)m(arning:)58 b(the)40 b(Bash)g Ft(configure)c
-Fu(lo)s(oks)k(for)f(a)h(site)150 2909 y(script,)31 b(but)e(not)i(all)g
-Ft(configure)d Fu(scripts)i(do.)150 3185 y Fs(10.7)68
-b(Op)t(eration)46 b(Con)l(trols)150 3344 y Ft(configure)28
+Fu(lo)s(oks)k(for)f(a)h(site)150 5340 y(script,)31 b(but)e(not)i(all)g
+Ft(configure)d Fu(scripts)i(do.)p eop end
+%%Page: 161 167
+TeXDict begin 161 166 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(161)150 299 y Fs(10.7)68
+b(Op)t(eration)46 b(Con)l(trols)150 458 y Ft(configure)28
b Fu(recognizes)k(the)e(follo)m(wing)i(options)f(to)g(con)m(trol)h(ho)m
-(w)e(it)h(op)s(erates.)150 3538 y Ft(--cache-file=)p
-Fj(file)630 3648 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g
-(the)h(tests)f(in)g Fr(\014le)33 b Fu(instead)28 b(of)h
-Ft(./config.cache)p Fu(.)36 b(Set)28 b Fr(\014le)630
-3758 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e
-(debugging)g Ft(configure)p Fu(.)150 3940 y Ft(--help)192
-b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g
-Ft(configure)p Fu(,)d(and)i(exit.)150 4123 y Ft(--quiet)150
-4232 y(--silent)150 4342 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f
-(messages)h(sa)m(ying)g(whic)m(h)g(c)m(hec)m(ks)g(are)g(b)s(eing)f
-(made.)150 4525 y Ft(--srcdir=)p Fj(dir)630 4634 y Fu(Lo)s(ok)i(for)g
-(the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fr(dir)p
-Fu(.)45 b(Usually)33 b Ft(configure)c Fu(can)j(deter-)630
-4744 y(mine)e(that)h(directory)g(automatically)-8 b(.)150
-4927 y Ft(--version)630 5036 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g
-(Auto)s(conf)f(used)g(to)h(generate)h(the)f Ft(configure)d
-Fu(script,)j(and)f(exit.)275 5230 y Ft(configure)34 b
-Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s
-(oilerplate)g(options.)61 b(`)p Ft(configure)150 5340
-y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)p
-eop end
-%%Page: 155 161
-TeXDict begin 155 160 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(155)150 299 y Fs(10.8)68
-b(Optional)46 b(F)-11 b(eatures)150 458 y Fu(The)29 b(Bash)h
-Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f(of)h Ft(--enable-)p
-Fj(feature)25 b Fu(options,)30 b(where)g Fr(feature)35
-b Fu(indicates)150 568 y(an)e(optional)i(part)e(of)h(Bash.)50
-b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p Fj(package)29
-b Fu(options,)35 b(where)e Fr(pac)m(k)-5 b(age)150 677
-y Fu(is)32 b(something)h(lik)m(e)h(`)p Ft(bash-malloc)p
-Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 b(T)-8 b(o)33 b(turn)e(o\013)i
-(the)f(default)h(use)f(of)g(a)h(pac)m(k)-5 b(age,)35
-b(use)150 787 y Ft(--without-)p Fj(package)p Fu(.)46
-b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f(that)g(is)
-g(enabled)g(b)m(y)f(default,)i(use)150 897 y Ft(--disable-)p
-Fj(feature)p Fu(.)275 1033 y(Here)28 b(is)g(a)h(complete)g(list)g(of)f
-(the)h Ft(--enable-)c Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f
-(Bash)g Ft(configure)150 1143 y Fu(recognizes.)150 1306
-y Ft(--with-afs)630 1415 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g
-(the)h(Andrew)e(File)j(System)e(from)g(T)-8 b(ransarc.)150
-1577 y Ft(--with-bash-malloc)630 1686 y Fu(Use)34 b(the)g(Bash)h(v)m
-(ersion)f(of)g Ft(malloc)e Fu(in)i(the)g(directory)h
-Ft(lib/malloc)p Fu(.)48 b(This)34 b(is)g(not)g(the)630
-1796 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e(in)g
-Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i(originally)g
-(deriv)m(ed)630 1905 y(from)f(the)h(4.2)g Fm(bsd)f Ft(malloc)p
-Fu(.)45 b(This)31 b Ft(malloc)g Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m
-(astes)h(some)g(space)g(on)630 2015 y(eac)m(h)j(allo)s(cation.)58
-b(This)34 b(option)i(is)f(enabled)g(b)m(y)g(default.)56
-b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a)630
-2125 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s(e)
-i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630
-2234 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i
-(systems.)150 2396 y Ft(--with-curses)630 2505 y Fu(Use)h(the)h(curses)
+(w)e(it)h(op)s(erates.)150 606 y Ft(--cache-file=)p Fj(file)630
+716 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g(the)h(tests)f
+(in)g Fr(\014le)33 b Fu(instead)28 b(of)h Ft(./config.cache)p
+Fu(.)36 b(Set)28 b Fr(\014le)630 825 y Fu(to)j Ft(/dev/null)d
+Fu(to)j(disable)g(cac)m(hing,)h(for)e(debugging)g Ft(configure)p
+Fu(.)150 973 y Ft(--help)192 b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)
+f(options)h(to)g Ft(configure)p Fu(,)d(and)i(exit.)150
+1121 y Ft(--quiet)150 1230 y(--silent)150 1340 y(-q)384
+b Fu(Do)31 b(not)g(prin)m(t)f(messages)h(sa)m(ying)g(whic)m(h)g(c)m
+(hec)m(ks)g(are)g(b)s(eing)f(made.)150 1487 y Ft(--srcdir=)p
+Fj(dir)630 1597 y Fu(Lo)s(ok)i(for)g(the)g(Bash)g(source)h(co)s(de)f
+(in)g(directory)g Fr(dir)p Fu(.)45 b(Usually)33 b Ft(configure)c
+Fu(can)j(deter-)630 1707 y(mine)e(that)h(directory)g(automatically)-8
+b(.)150 1854 y Ft(--version)630 1964 y Fu(Prin)m(t)29
+b(the)h(v)m(ersion)g(of)g(Auto)s(conf)f(used)g(to)h(generate)h(the)f
+Ft(configure)d Fu(script,)j(and)f(exit.)275 2112 y Ft(configure)34
+b Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s
+(oilerplate)g(options.)61 b(`)p Ft(configure)150 2221
+y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)150
+2450 y Fs(10.8)68 b(Optional)46 b(F)-11 b(eatures)150
+2610 y Fu(The)29 b(Bash)h Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f
+(of)h Ft(--enable-)p Fj(feature)25 b Fu(options,)30 b(where)g
+Fr(feature)35 b Fu(indicates)150 2719 y(an)e(optional)i(part)e(of)h
+(Bash.)50 b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p
+Fj(package)29 b Fu(options,)35 b(where)e Fr(pac)m(k)-5
+b(age)150 2829 y Fu(is)32 b(something)h(lik)m(e)h(`)p
+Ft(bash-malloc)p Fu(')c(or)i(`)p Ft(purify)p Fu('.)45
+b(T)-8 b(o)33 b(turn)e(o\013)i(the)f(default)h(use)f(of)g(a)h(pac)m(k)
+-5 b(age,)35 b(use)150 2939 y Ft(--without-)p Fj(package)p
+Fu(.)46 b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f
+(that)g(is)g(enabled)g(b)m(y)f(default,)i(use)150 3048
+y Ft(--disable-)p Fj(feature)p Fu(.)275 3177 y(Here)28
+b(is)g(a)h(complete)g(list)g(of)f(the)h Ft(--enable-)c
+Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f(Bash)g
+Ft(configure)150 3286 y Fu(recognizes.)150 3434 y Ft(--with-afs)630
+3544 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g(the)h(Andrew)e(File)j
+(System)e(from)g(T)-8 b(ransarc.)150 3691 y Ft(--with-bash-malloc)630
+3801 y Fu(Use)34 b(the)g(Bash)h(v)m(ersion)f(of)g Ft(malloc)e
+Fu(in)i(the)g(directory)h Ft(lib/malloc)p Fu(.)48 b(This)34
+b(is)g(not)g(the)630 3911 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e
+(in)g Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i
+(originally)g(deriv)m(ed)630 4020 y(from)f(the)h(4.2)g
+Fm(bsd)f Ft(malloc)p Fu(.)45 b(This)31 b Ft(malloc)g
+Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m(astes)h(some)g(space)g(on)630
+4130 y(eac)m(h)j(allo)s(cation.)58 b(This)34 b(option)i(is)f(enabled)g
+(b)m(y)g(default.)56 b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a)
+630 4239 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)
+s(e)i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630
+4349 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i
+(systems.)150 4497 y Ft(--with-curses)630 4606 y Fu(Use)h(the)h(curses)
e(library)h(instead)g(of)h(the)f(termcap)g(library)-8
-b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 2615
+b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 4716
y(if)f(y)m(our)h(system)f(has)g(an)h(inadequate)g(or)f(incomplete)i
-(termcap)e(database.)150 2777 y Ft(--with-gnu-malloc)630
-2886 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p
-Fu(.)150 3048 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p
-Ft(])630 3157 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with)
+(termcap)e(database.)150 4863 y Ft(--with-gnu-malloc)630
+4973 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p
+Fu(.)150 5121 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p
+Ft(])630 5230 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with)
g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g(Readline)g(rather)630
-3267 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p
+5340 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p
Fu(.)36 b(This)25 b(w)m(orks)g(only)h(with)f(Readline)h(5.0)h(and)e
-(later)630 3376 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41
-b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f Ft(configure)f
-Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 3486 y(mak)m(e)28
-b(v)-5 b(ariables)29 b Ft(includedir)24 b Fu(and)j Ft(libdir)p
-Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g Ft(prefix)f
-Fu(b)m(y)630 3596 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m
-(ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g(the)g(standard)630
-3705 y(system)35 b(include)f(and)g(library)g(directories.)54
-b(If)34 b Fr(PREFIX)43 b Fu(is)35 b Ft(no)p Fu(,)g(Bash)f(links)h(with)
-f(the)630 3815 y(v)m(ersion)42 b(in)e Ft(lib/readline)p
-Fu(.)70 b(If)40 b Fr(PREFIX)51 b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f
-(v)-5 b(alue,)44 b Ft(configure)630 3924 y Fu(treats)27
-b(it)g(as)f(a)h(directory)g(pathname)f(and)f(lo)s(oks)i(for)f(the)g
-(installed)h(v)m(ersion)g(of)f(Readline)630 4034 y(in)34
-b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in)
-g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630
-4144 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150
-4305 y Ft(--with-purify)630 4415 y Fu(De\014ne)23 b(this)g(to)h(use)f
-(the)g(Purify)f(memory)h(allo)s(cation)i(c)m(hec)m(k)m(er)g(from)e
-(Rational)i(Soft)m(w)m(are.)150 4576 y Ft(--enable-minimal-config)630
-4686 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h
-(close)g(to)f(the)g(historical)h(Bourne)e(shell.)275
-4849 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h
-(alter)g(ho)m(w)f(Bash)g(is)g(compiled)h(and)e(link)m(ed,)i(rather)150
-4958 y(than)h(c)m(hanging)h(run-time)f(features.)150
-5121 y Ft(--enable-largefile)630 5230 y Fu(Enable)36
+(later)p eop end
+%%Page: 162 168
+TeXDict begin 162 167 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(162)630 299 y(v)m(ersions.)46
+b(If)32 b Fr(PREFIX)41 b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f
+Ft(configure)f Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630
+408 y(mak)m(e)28 b(v)-5 b(ariables)29 b Ft(includedir)24
+b Fu(and)j Ft(libdir)p Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g
+Ft(prefix)f Fu(b)m(y)630 518 y(default,)44 b(to)d(\014nd)f(the)h
+(installed)g(v)m(ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g
+(the)g(standard)630 628 y(system)35 b(include)f(and)g(library)g
+(directories.)54 b(If)34 b Fr(PREFIX)43 b Fu(is)35 b
+Ft(no)p Fu(,)g(Bash)f(links)h(with)f(the)630 737 y(v)m(ersion)42
+b(in)e Ft(lib/readline)p Fu(.)70 b(If)40 b Fr(PREFIX)51
+b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f(v)-5 b(alue,)44
+b Ft(configure)630 847 y Fu(treats)27 b(it)g(as)f(a)h(directory)g
+(pathname)f(and)f(lo)s(oks)i(for)f(the)g(installed)h(v)m(ersion)g(of)f
+(Readline)630 956 y(in)34 b(sub)s(directories)f(of)h(that)h(directory)g
+(\(include)f(\014les)g(in)g Fr(PREFIX)9 b Fu(/)p Ft(include)32
+b Fu(and)i(the)630 1066 y(library)c(in)g Fr(PREFIX)9
+b Fu(/)p Ft(lib)p Fu(\).)150 1236 y Ft(--with-libintl-prefix[=)p
+Fj(P)o(REFI)o(X)p Ft(])630 1345 y Fu(De\014ne)45 b(this)f(to)h(mak)m(e)
+g(Bash)g(link)f(with)g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g
+(the)f(libin)m(tl)630 1455 y(library)30 b(instead)h(of)f(the)h(v)m
+(ersion)g(in)f Ft(lib/intl)p Fu(.)150 1625 y Ft
+(--with-libiconv-prefix[=)o Fj(PREF)o(IX)p Ft(])630 1734
+y Fu(De\014ne)g(this)g(to)g(mak)m(e)h(Bash)f(lo)s(ok)g(for)g(libicon)m
+(v)h(in)e Fr(PREFIX)39 b Fu(instead)30 b(of)g(the)g(standard)630
+1844 y(system)h(lo)s(cations.)42 b(There)30 b(is)g(no)g(v)m(ersion)h
+(included)f(with)g(Bash.)150 2014 y Ft(--enable-minimal-config)630
+2123 y Fu(This)23 b(pro)s(duces)f(a)i(shell)g(with)f(minimal)h
+(features,)h(close)g(to)f(the)g(historical)h(Bourne)e(shell.)275
+2298 y(There)35 b(are)i(sev)m(eral)h Ft(--enable-)c Fu(options)j(that)g
+(alter)g(ho)m(w)g(Bash)f(is)h(compiled,)i(link)m(ed,)f(and)e(in-)150
+2408 y(stalled,)c(rather)e(than)g(c)m(hanging)h(run-time)f(features.)
+150 2583 y Ft(--enable-largefile)630 2692 y Fu(Enable)36
b(supp)s(ort)f(for)g(large)j(\014les)e(\()p Ft(http:)5
b(/)g(/)g(www)g(.)g(unix)g(.)g(org)t(/)g(v)o(ersi)o(on2)t(/)g(w)o(hats)
-o(new)t(/)630 5340 y(lfs20mar)h(.)g(html)p Fu(\))35 b(if)j(the)g(op)s
-(erating)g(system)g(requires)f(sp)s(ecial)i(compiler)f(options)g(to)p
-eop end
-%%Page: 156 162
-TeXDict begin 156 161 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(156)630 299 y(build)33
-b(programs)g(whic)m(h)h(can)g(access)h(large)g(\014les.)51
-b(This)33 b(is)h(enabled)g(b)m(y)g(default,)h(if)f(the)630
-408 y(op)s(erating)d(system)f(pro)m(vides)h(large)g(\014le)g(supp)s
-(ort.)150 570 y Ft(--enable-profiling)630 680 y Fu(This)g(builds)f(a)i
-(Bash)g(binary)f(that)h(pro)s(duces)e(pro\014ling)h(information)h(to)h
-(b)s(e)d(pro)s(cessed)630 790 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f
-(it)g(is)f(executed.)150 951 y Ft(--enable-static-link)630
-1061 y Fu(This)37 b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h
-(statically)-8 b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61
-b(This)37 b(could)h(b)s(e)630 1171 y(used)30 b(to)h(build)e(a)i(v)m
-(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 1334
+o(new)t(/)630 2802 y(lfs20mar)h(.)g(html)p Fu(\))35 b(if)j(the)g(op)s
+(erating)g(system)g(requires)f(sp)s(ecial)i(compiler)f(options)g(to)630
+2911 y(build)33 b(programs)g(whic)m(h)h(can)g(access)h(large)g
+(\014les.)51 b(This)33 b(is)h(enabled)g(b)m(y)g(default,)h(if)f(the)630
+3021 y(op)s(erating)d(system)f(pro)m(vides)h(large)g(\014le)g(supp)s
+(ort.)150 3191 y Ft(--enable-profiling)630 3300 y Fu(This)g(builds)f(a)
+i(Bash)g(binary)f(that)h(pro)s(duces)e(pro\014ling)h(information)h(to)h
+(b)s(e)d(pro)s(cessed)630 3410 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f
+(it)g(is)f(executed.)150 3580 y Ft(--enable-separate-helpfi)o(les)630
+3689 y Fu(Use)i(external)h(\014les)f(for)g(the)g(do)s(cumen)m(tation)h
+(displa)m(y)m(ed)f(b)m(y)g(the)g Ft(help)f Fu(builtin)h(instead)630
+3799 y(of)f(storing)f(the)h(text)g(in)m(ternally)-8 b(.)150
+3969 y Ft(--enable-static-link)630 4078 y Fu(This)37
+b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically)-8
+b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61
+b(This)37 b(could)h(b)s(e)630 4188 y(used)30 b(to)h(build)e(a)i(v)m
+(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 4363
y(The)f(`)p Ft(minimal-config)p Fu(')d(option)k(can)g(b)s(e)f(used)f
(to)j(disable)e(all)i(of)f(the)f(follo)m(wing)i(options,)g(but)d(it)150
-1443 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m
+4472 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m
(y)h(b)s(e)f(enabled)g(using)g(`)p Ft(enable-)p Fj(feature)p
-Fu('.)275 1580 y(All)c(of)f(the)h(follo)m(wing)h(options)f(except)g
-(for)g(`)p Ft(disabled-builtins)p Fu(',)c(`)p Ft(direxpand-default)p
-Fu(',)h(and)150 1690 y(`)p Ft(xpg-echo-default)p Fu(')28
-b(are)33 b(enabled)f(b)m(y)g(default,)h(unless)e(the)i(op)s(erating)f
-(system)h(do)s(es)e(not)i(pro)m(vide)150 1800 y(the)e(necessary)f(supp)
-s(ort.)150 1963 y Ft(--enable-alias)630 2072 y Fu(Allo)m(w)41
-b(alias)g(expansion)f(and)f(include)g(the)h Ft(alias)f
-Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)g(Sec-)630
-2182 y(tion)31 b(6.6)g([Aliases],)i(page)e(94\).)150
-2344 y Ft(--enable-arith-for-comma)o(nd)630 2453 y Fu(Include)21
+Fu('.)275 4617 y(All)133 b(of)g(the)g(follo)m(wing)i(options)e(except)h
+(for)f(`)p Ft(alt-array-implementation)o Fu(',)150 4727
+y(`)p Ft(disabled-builtins)p Fu(',)212 b(`)p Ft(direxpand-default)p
+Fu(',)h(`)p Ft(strict-posix-default)p Fu(',)f(and)150
+4836 y(`)p Ft(xpg-echo-default)p Fu(')28 b(are)33 b(enabled)f(b)m(y)g
+(default,)h(unless)e(the)i(op)s(erating)f(system)h(do)s(es)e(not)i(pro)
+m(vide)150 4946 y(the)e(necessary)f(supp)s(ort.)150 5121
+y Ft(--enable-alias)630 5230 y Fu(Allo)m(w)41 b(alias)g(expansion)f
+(and)f(include)g(the)h Ft(alias)f Fu(and)g Ft(unalias)e
+Fu(builtins)j(\(see)g(Sec-)630 5340 y(tion)31 b(6.6)g([Aliases],)i
+(page)e(100\).)p eop end
+%%Page: 163 169
+TeXDict begin 163 168 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(163)150 299 y Ft
+(--enable-alt-array-imple)o(ment)o(atio)o(n)630 408 y
+Fu(This)33 b(builds)g(bash)g(using)h(an)g(alternate)i(implemen)m
+(tation)f(of)g(arra)m(ys)f(\(see)h(Section)g(6.7)630
+518 y([Arra)m(ys],)43 b(page)d(100\))h(that)f(pro)m(vides)g(faster)g
+(access)h(at)f(the)g(exp)s(ense)f(of)h(using)f(more)630
+628 y(memory)30 b(\(sometimes)i(man)m(y)e(times)h(more,)g(dep)s(ending)
+e(on)h(ho)m(w)h(sparse)f(an)g(arra)m(y)h(is\).)150 774
+y Ft(--enable-arith-for-comma)o(nd)630 883 y Fu(Include)21
b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g
Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630
-2563 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f
-(3.2.5.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150
-2725 y Ft(--enable-array-variables)630 2834 y Fu(Include)h(supp)s(ort)g
+993 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f
+(3.2.5.1)i([Lo)s(oping)d(Constructs],)h(page)g(11\).)150
+1139 y Ft(--enable-array-variables)630 1249 y Fu(Include)h(supp)s(ort)g
(for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33
-b(\(see)h(Section)g(6.7)h([Ar-)630 2944 y(ra)m(ys],)c(page)g(95\).)150
-3106 y Ft(--enable-bang-history)630 3215 y Fu(Include)36
+b(\(see)h(Section)g(6.7)h([Ar-)630 1358 y(ra)m(ys],)c(page)g(100\).)150
+1504 y Ft(--enable-bang-history)630 1614 y Fu(Include)36
b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f
-(\(see)h(Section)g(9.3)h([History)f(In-)630 3325 y(teraction],)c(page)e
-(148\).)150 3487 y Ft(--enable-brace-expansion)630 3597
+(\(see)h(Section)g(9.3)h([History)f(In-)630 1724 y(teraction],)c(page)e
+(154\).)150 1870 y Ft(--enable-brace-expansion)630 1979
y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h
Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40
-b(Section)h(3.5.1)630 3706 y([Brace)32 b(Expansion],)e(page)h(23,)h
-(for)e(a)g(complete)i(description.)150 3868 y Ft
-(--enable-casemod-attribu)o(tes)630 3978 y Fu(Include)37
+b(Section)h(3.5.1)630 2089 y([Brace)32 b(Expansion],)e(page)h(24,)h
+(for)e(a)g(complete)i(description.)150 2235 y Ft
+(--enable-casemod-attribu)o(tes)630 2345 y Fu(Include)37
b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h
-Ft(declare)e Fu(builtin)i(and)f(as-)630 4087 y(signmen)m(t)29
-b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g
-Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630
-4197 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f
-(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 4359 y Ft
-(--enable-casemod-expansi)o(on)630 4468 y Fu(Include)h(supp)s(ort)e
-(for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150
-4630 y Ft(--enable-command-timing)630 4740 y Fu(Include)43
+Ft(declare)e Fu(builtin)i(and)f(as-)630 2454 y(signmen)m(t)43
+b(statemen)m(ts.)78 b(V)-8 b(ariables)44 b(with)e(the)g
+Ft(uppercase)e Fu(attribute,)46 b(for)c(example,)630
+2564 y(will)31 b(ha)m(v)m(e)g(their)g(v)-5 b(alues)30
+b(con)m(v)m(erted)i(to)f(upp)s(ercase)f(up)s(on)f(assignmen)m(t.)150
+2710 y Ft(--enable-casemod-expansi)o(on)630 2819 y Fu(Include)h(supp)s
+(ort)e(for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150
+2966 y Ft(--enable-command-timing)630 3075 y Fu(Include)43
b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g
-(w)m(ord)f(and)g(for)h(displa)m(ying)630 4849 y(timing)37
+(w)m(ord)f(and)g(for)h(displa)m(ying)630 3185 y(timing)37
b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i
Ft(time)d Fu(\(see)i(Section)g(3.2.3)h([Pip)s(elines],)630
-4959 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w)
-m(ell)g(as)g(shell)f(builtins)g(and)g(functions)g(to)h(b)s(e)e(timed.)
-150 5121 y Ft(--enable-cond-command)630 5230 y Fu(Include)33
-b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51
-b(\(see)34 b(Section)h(3.2.5.2)h([Condi-)630 5340 y(tional)c
-(Constructs],)e(page)h(11\).)p eop end
-%%Page: 157 163
-TeXDict begin 157 162 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(157)150 299 y Ft(--enable-cond-regexp)630
-408 y Fu(Include)35 b(supp)s(ort)f(for)i(matc)m(hing)h
-Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p
-Ft(=~)p Fu(')g(binary)630 518 y(op)s(erator)25 b(in)f(the)h
+3294 y(page)j(10\).)70 b(This)40 b(allo)m(ws)h(pip)s(elines)e(as)h(w)m
+(ell)h(as)f(shell)h(builtins)e(and)g(functions)h(to)h(b)s(e)630
+3404 y(timed.)150 3550 y Ft(--enable-cond-command)630
+3660 y Fu(Include)33 b(supp)s(ort)f(for)i(the)g Ft([[)f
+Fu(conditional)i(command.)51 b(\(see)34 b(Section)h(3.2.5.2)h([Condi-)
+630 3769 y(tional)c(Constructs],)e(page)h(12\).)150 3915
+y Ft(--enable-cond-regexp)630 4025 y Fu(Include)k(supp)s(ort)f(for)i
+(matc)m(hing)h Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p
+Ft(=~)p Fu(')g(binary)630 4134 y(op)s(erator)25 b(in)f(the)h
Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.5.2)h
-([Conditional)e(Con-)630 628 y(structs],)31 b(page)g(11\).)150
-774 y Ft(--enable-coprocesses)630 883 y Fu(Include)23
+([Conditional)e(Con-)630 4244 y(structs],)31 b(page)g(12\).)150
+4390 y Ft(--enable-coprocesses)630 4500 y Fu(Include)23
b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Ft(coproc)e
Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.3)630
-993 y([Pip)s(elines],)31 b(page)g(8\).)150 1139 y Ft(--enable-debugger)
-630 1249 y Fu(Include)f(supp)s(ort)e(for)i(the)h(bash)f(debugger)g
-(\(distributed)g(separately\).)150 1395 y Ft(--enable-dev-fd-stat-bro)o
-(ken)630 1504 y Fu(If)c(calling)j Ft(stat)d Fu(on)g(/dev/fd/)p
-Fr(N)38 b Fu(returns)25 b(di\013eren)m(t)j(results)f(than)f(calling)j
-Ft(fstat)c Fu(on)i(\014le)630 1614 y(descriptor)g Fr(N)p
-Fu(,)i(supply)c(this)j(option)g(to)g(enable)f(a)h(w)m(ork)-5
-b(around.)39 b(This)27 b(has)g(implications)630 1724
-y(for)j(conditional)i(commands)e(that)h(test)g(\014le)g(attributes.)150
-1870 y Ft(--enable-direxpand-defau)o(lt)630 1979 y Fu(Cause)53
+4609 y([Pip)s(elines],)31 b(page)g(10\).)150 4756 y Ft
+(--enable-debugger)630 4865 y Fu(Include)f(supp)s(ort)e(for)i(the)h
+(bash)f(debugger)g(\(distributed)g(separately\).)150
+5011 y Ft(--enable-dev-fd-stat-bro)o(ken)630 5121 y Fu(If)c(calling)j
+Ft(stat)d Fu(on)g(/dev/fd/)p Fr(N)38 b Fu(returns)25
+b(di\013eren)m(t)j(results)f(than)f(calling)j Ft(fstat)c
+Fu(on)i(\014le)630 5230 y(descriptor)g Fr(N)p Fu(,)i(supply)c(this)j
+(option)g(to)g(enable)f(a)h(w)m(ork)-5 b(around.)39 b(This)27
+b(has)g(implications)630 5340 y(for)j(conditional)i(commands)e(that)h
+(test)g(\014le)g(attributes.)p eop end
+%%Page: 164 170
+TeXDict begin 164 169 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(164)150 299 y Ft
+(--enable-direxpand-defau)o(lt)630 408 y Fu(Cause)53
b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i
-([The)e(Shopt)f(Builtin],)630 2089 y(page)29 b(66\))g(to)f(b)s(e)f
+([The)e(Shopt)f(Builtin],)630 518 y(page)29 b(71\))g(to)f(b)s(e)f
(enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41
-b(It)27 b(is)h(normally)g(disabled)630 2198 y(b)m(y)i(default.)150
-2345 y Ft(--enable-directory-stack)630 2454 y Fu(Include)j(supp)s(ort)g
+b(It)27 b(is)h(normally)g(disabled)630 628 y(b)m(y)i(default.)150
+807 y Ft(--enable-directory-stack)630 917 y Fu(Include)j(supp)s(ort)g
(for)h(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i
Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630
-2564 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m
-(k],)g(page)f(97\).)150 2710 y Ft(--enable-disabled-builti)o(ns)630
-2819 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m
+1026 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m
+(k],)g(page)f(102\).)150 1205 y Ft(--enable-disabled-builti)o(ns)630
+1315 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m
(ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f
-Ft(xxx)e Fu(has)630 2929 y(b)s(een)31 b(disabled)g(using)g(`)p
+Ft(xxx)e Fu(has)630 1425 y(b)s(een)31 b(disabled)g(using)g(`)p
Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e
-(Builtins],)i(page)f(51,)630 3039 y(for)e(details)i(of)e(the)h
+(Builtins],)i(page)f(55,)630 1534 y(for)e(details)i(of)e(the)h
Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150
-3185 y Ft(--enable-dparen-arithmet)o(ic)630 3294 y Fu(Include)42
+1714 y Ft(--enable-dparen-arithmet)o(ic)630 1823 y Fu(Include)42
b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i
-(Section)f(3.2.5.2)i([Conditional)630 3404 y(Constructs],)30
-b(page)h(11\).)150 3550 y Ft(--enable-extended-glob)630
-3660 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h
+(Section)f(3.2.5.2)i([Conditional)630 1933 y(Constructs],)30
+b(page)h(12\).)150 2112 y Ft(--enable-extended-glob)630
+2222 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h
(matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630
-3769 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i
-(page)e(33.)150 3915 y Ft(--enable-extended-glob-d)o(efau)o(lt)630
-4025 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g
-Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under)
-d(Sec-)630 4134 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g
-(66,)h(to)f(b)s(e)f(enabled.)150 4281 y Ft(--enable-function-import)630
-4390 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g
+2331 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i
+(page)e(36.)150 2511 y Ft(--enable-extended-glob-d)o(efau)o(lt)630
+2620 y Fu(Set)37 b(the)f(default)h(v)-5 b(alue)37 b(of)f(the)h
+Ft(extglob)d Fu(shell)j(option)g(describ)s(ed)e(ab)s(o)m(v)m(e)j(under)
+c(Sec-)630 2730 y(tion)d(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g(71,)
+h(to)f(b)s(e)f(enabled.)150 2909 y Ft(--enable-function-import)630
+3019 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g
(de\014nitions)f(exp)s(orted)h(b)m(y)g(another)g(instance)630
-4500 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41
+3128 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41
b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)150
-4646 y Ft(--enable-glob-asciirange)o(-def)o(ault)630
-4756 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g
-Fr(globasciiranges)36 b Fu(shell)31 b(option)g(describ)s(ed)f(ab)s(o)m
-(v)m(e)h(under)630 4865 y(Section)39 b(4.3.2)h([The)e(Shopt)g
-(Builtin],)j(page)e(66,)i(to)f(b)s(e)d(enabled.)65 b(This)37
-b(con)m(trols)j(the)630 4975 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h
-(ranges)f(when)f(used)g(in)g(pattern)h(matc)m(hing)h(brac)m(k)m(et)g
-(expressions.)150 5121 y Ft(--enable-help-builtin)630
-5230 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m
-(ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25
-b(\(see)630 5340 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f
-(51\).)p eop end
-%%Page: 158 164
-TeXDict begin 158 163 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(158)150 299 y Ft(--enable-history)630
-408 y Fu(Include)29 b(command)g(history)h(and)f(the)h
-Ft(fc)f Fu(and)g Ft(history)e Fu(builtin)j(commands)f(\(see)h(Sec-)630
-518 y(tion)h(9.1)g([Bash)g(History)g(F)-8 b(acilities],)34
-b(page)d(146\).)150 664 y Ft(--enable-job-control)630
-774 y Fu(This)h(enables)i(the)f(job)g(con)m(trol)i(features)e(\(see)i
-(Chapter)d(7)i([Job)f(Con)m(trol],)i(page)f(107\),)630
-883 y(if)c(the)h(op)s(erating)g(system)f(supp)s(orts)f(them.)150
-1029 y Ft(--enable-multibyte)630 1139 y Fu(This)g(enables)i(supp)s(ort)
-d(for)i(m)m(ultib)m(yte)h(c)m(haracters)g(if)f(the)g(op)s(erating)h
-(system)f(pro)m(vides)630 1249 y(the)h(necessary)f(supp)s(ort.)150
-1395 y Ft(--enable-net-redirection)o(s)630 1504 y Fu(This)23
-b(enables)h(the)g(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g
-(form)g Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 1614
-y Fu(and)31 b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26
-b Fu(when)31 b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h
-([Redirec-)630 1724 y(tions],)e(page)g(35\).)150 1870
-y Ft(--enable-process-substit)o(utio)o(n)630 1979 y Fu(This)49
-b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)
-s(cess)e(Substitution],)630 2089 y(page)31 b(32\))h(if)e(the)h(op)s
-(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150
-2235 y Ft(--enable-progcomp)630 2345 y Fu(Enable)d(the)g(programmable)g
-(completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630
-2454 y(Completion],)i(page)h(137\).)42 b(If)30 b(Readline)h(is)f(not)h
-(enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150
-2600 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 2710
-y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m
-(b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i(in)d(the)630
-2819 y Ft($PS0)p Fu(,)36 b Ft($PS1)p Fu(,)g Ft($PS2)p
-Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 b(See)36
-b(Section)h(6.9)g([Con)m(trolling)g(the)630 2929 y(Prompt],)30
-b(page)h(98,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g
-(escap)s(e)h(sequences.)150 3075 y Ft(--enable-readline)630
-3185 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f
-(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 3294
-y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g
-(Editing],)h(page)g(111\).)150 3440 y Ft(--enable-restricted)630
-3550 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p
-Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630
-3660 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68
-b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630
-3769 y(page)31 b(100,)h(for)e(a)h(description)f(of)h(restricted)g(mo)s
-(de.)150 3915 y Ft(--enable-select)630 4025 y Fu(Include)25
-b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j
-(the)e(generation)h(of)f(simple)630 4134 y(men)m(us)k(\(see)h(Section)g
-(3.2.5.2)i([Conditional)e(Constructs],)g(page)g(11\).)150
-4281 y Ft(--enable-separate-helpfi)o(les)630 4390 y Fu(Use)h(external)h
-(\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g
-(the)g Ft(help)f Fu(builtin)h(instead)630 4500 y(of)f(storing)f(the)h
-(text)g(in)m(ternally)-8 b(.)150 4646 y Ft(--enable-single-help-str)o
-(ings)630 4756 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e
-(the)i Ft(help)d Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h)
-i(help)630 4865 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g
-(text)g(to)g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35
-b(ma)m(y)g(need)630 4975 y(to)c(disable)g(this)f(if)g(y)m(our)h
-(compiler)g(cannot)f(handle)g(v)m(ery)h(long)g(string)f(literals.)150
-5121 y Ft(--enable-strict-posix-de)o(faul)o(t)630 5230
-y Fu(Mak)m(e)c(Bash)f Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h
-(\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630
-5340 y(page)31 b(101\).)p eop end
-%%Page: 159 165
-TeXDict begin 159 164 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(159)150 299 y Ft
-(--enable-usg-echo-defaul)o(t)630 408 y Fu(A)30 b(synon)m(ym)g(for)g
-Ft(--enable-xpg-echo-default)p Fu(.)150 568 y Ft
-(--enable-xpg-echo-defaul)o(t)630 677 y Fu(Mak)m(e)c(the)f
+3308 y Ft(--enable-glob-asciirange)o(-def)o(ault)630
+3417 y Fu(Set)f(the)f(default)h(v)-5 b(alue)29 b(of)f(the)h
+Ft(globasciiranges)24 b Fu(shell)29 b(option)g(describ)s(ed)e(ab)s(o)m
+(v)m(e)j(un-)630 3527 y(der)c(Section)i(4.3.2)h([The)d(Shopt)g
+(Builtin],)j(page)f(71,)g(to)g(b)s(e)e(enabled.)40 b(This)26
+b(con)m(trols)i(the)630 3636 y(b)s(eha)m(vior)40 b(of)f(c)m(haracter)i
+(ranges)f(when)f(used)f(in)i(pattern)f(matc)m(hing)i(brac)m(k)m(et)g
+(expres-)630 3746 y(sions.)150 3925 y Ft(--enable-help-builtin)630
+4035 y Fu(Include)24 b(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)
+m(ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25
+b(\(see)630 4144 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f
+(55\).)150 4324 y Ft(--enable-history)630 4433 y Fu(Include)e(command)g
+(history)h(and)f(the)h Ft(fc)f Fu(and)g Ft(history)e
+Fu(builtin)j(commands)f(\(see)h(Sec-)630 4543 y(tion)h(9.1)g([Bash)g
+(History)g(F)-8 b(acilities],)34 b(page)d(152\).)150
+4722 y Ft(--enable-job-control)630 4832 y Fu(This)h(enables)i(the)f
+(job)g(con)m(trol)i(features)e(\(see)i(Chapter)d(7)i([Job)f(Con)m
+(trol],)i(page)f(113\),)630 4941 y(if)c(the)h(op)s(erating)g(system)f
+(supp)s(orts)f(them.)150 5121 y Ft(--enable-multibyte)630
+5230 y Fu(This)g(enables)i(supp)s(ort)d(for)i(m)m(ultib)m(yte)h(c)m
+(haracters)g(if)f(the)g(op)s(erating)h(system)f(pro)m(vides)630
+5340 y(the)h(necessary)f(supp)s(ort.)p eop end
+%%Page: 165 171
+TeXDict begin 165 170 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(165)150 299 y Ft
+(--enable-net-redirection)o(s)630 408 y Fu(This)23 b(enables)h(the)g
+(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g(form)g
+Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 518 y Fu(and)31
+b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 b Fu(when)31
+b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h([Redirec-)630
+628 y(tions],)e(page)g(38\).)150 787 y Ft(--enable-process-substit)o
+(utio)o(n)630 897 y Fu(This)49 b(enables)i(pro)s(cess)f(substitution)g
+(\(see)h(Section)g(3.5.6)h([Pro)s(cess)e(Substitution],)630
+1006 y(page)31 b(34\))h(if)e(the)h(op)s(erating)f(system)h(pro)m(vides)
+f(the)h(necessary)g(supp)s(ort.)150 1166 y Ft(--enable-progcomp)630
+1275 y Fu(Enable)d(the)g(programmable)g(completion)i(facilities)g
+(\(see)f(Section)g(8.6)g([Programmable)630 1385 y(Completion],)i(page)h
+(143\).)42 b(If)30 b(Readline)h(is)f(not)h(enabled,)f(this)h(option)g
+(has)f(no)g(e\013ect.)150 1544 y Ft(--enable-prompt-string-d)o(ecod)o
+(ing)630 1654 y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f
+(a)g(n)m(um)m(b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i
+(in)d(the)630 1763 y Ft($PS0)p Fu(,)36 b Ft($PS1)p Fu(,)g
+Ft($PS2)p Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57
+b(See)36 b(Section)h(6.9)g([Con)m(trolling)g(the)630
+1873 y(Prompt],)30 b(page)h(104,)h(for)f(a)f(complete)i(list)f(of)g
+(prompt)e(string)i(escap)s(e)f(sequences.)150 2032 y
+Ft(--enable-readline)630 2142 y Fu(Include)e(supp)s(ort)f(for)h
+(command-line)h(editing)g(and)f(history)g(with)g(the)h(Bash)g(v)m
+(ersion)g(of)630 2252 y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)
+g([Command)g(Line)g(Editing],)h(page)g(117\).)150 2411
+y Ft(--enable-restricted)630 2521 y Fu(Include)41 b(supp)s(ort)f(for)i
+(a)g Fr(restricted)g(shell)p Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j
+(Bash,)g(when)c(called)630 2630 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)
+g(restricted)h(mo)s(de.)68 b(See)40 b(Section)h(6.10)g([The)f
+(Restricted)h(Shell],)630 2740 y(page)31 b(105,)h(for)e(a)h
+(description)f(of)h(restricted)g(mo)s(de.)150 2899 y
+Ft(--enable-select)630 3009 y Fu(Include)25 b(the)h Ft(select)f
+Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j(the)e(generation)h
+(of)f(simple)630 3118 y(men)m(us)k(\(see)h(Section)g(3.2.5.2)i
+([Conditional)e(Constructs],)g(page)g(12\).)150 3278
+y Ft(--enable-single-help-str)o(ings)630 3387 y Fu(Store)40
+b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e(the)i Ft(help)d
+Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h)i(help)630
+3497 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g(text)g(to)
+g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35 b(ma)m(y)g(need)630
+3606 y(to)c(disable)g(this)f(if)g(y)m(our)h(compiler)g(cannot)f(handle)
+g(v)m(ery)h(long)g(string)f(literals.)150 3766 y Ft
+(--enable-strict-posix-de)o(faul)o(t)630 3875 y Fu(Mak)m(e)c(Bash)f
+Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h(\(see)g(Section)h
+(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 3985 y(page)31
+b(106\).)150 4144 y Ft(--enable-translatable-st)o(ring)o(s)630
+4254 y Fu(Enable)h(supp)s(ort)e(for)i Ft($")p Fj(string)p
+Ft(")e Fu(translatable)j(strings)f(\(see)h(Section)g(3.1.2.5)h([Lo)s
+(cale)630 4364 y(T)-8 b(ranslation],)32 b(page)f(7\).)150
+4523 y Ft(--enable-usg-echo-defaul)o(t)630 4633 y Fu(A)f(synon)m(ym)g
+(for)g Ft(--enable-xpg-echo-default)p Fu(.)150 4792 y
+Ft(--enable-xpg-echo-defaul)o(t)630 4902 y Fu(Mak)m(e)c(the)f
Ft(echo)e Fu(builtin)i(expand)f(bac)m(kslash-escap)s(ed)h(c)m
-(haracters)h(b)m(y)f(default,)h(without)630 787 y(requiring)d(the)h
+(haracters)h(b)m(y)f(default,)h(without)630 5011 y(requiring)d(the)h
Ft(-e)f Fu(option.)39 b(This)23 b(sets)h(the)g(default)g(v)-5
b(alue)24 b(of)g(the)g Ft(xpg_echo)e Fu(shell)h(option)630
-897 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f
+5121 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f
Ft(echo)f Fu(b)s(eha)m(v)m(e)i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s
-(eci\014ed)f(in)g(the)630 1006 y(Single)35 b(Unix)f(Sp)s
+(eci\014ed)f(in)g(the)630 5230 y(Single)35 b(Unix)f(Sp)s
(eci\014cation,)i(v)m(ersion)e(3.)53 b(See)35 b(Section)g(4.2)g([Bash)g
-(Builtins],)h(page)f(51,)630 1116 y(for)30 b(a)h(description)f(of)h
-(the)f(escap)s(e)h(sequences)g(that)g Ft(echo)e Fu(recognizes.)275
-1275 y(The)f(\014le)i Ft(config-top.h)c Fu(con)m(tains)31
-b(C)d(Prepro)s(cessor)h(`)p Ft(#define)p Fu(')f(statemen)m(ts)j(for)f
-(options)f(whic)m(h)150 1385 y(are)35 b(not)g(settable)i(from)d
-Ft(configure)p Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g
-(to)h(b)s(e)e(c)m(hanged;)k(b)s(ew)m(are)d(of)150 1494
-y(the)h(consequences)g(if)f(y)m(ou)h(do.)55 b(Read)36
-b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e(eac)m(h)i(de\014nition)e
-(for)g(more)150 1604 y(information)c(ab)s(out)f(its)h(e\013ect.)p
+(Builtins],)h(page)f(55,)630 5340 y(for)30 b(a)h(description)f(of)h
+(the)f(escap)s(e)h(sequences)g(that)g Ft(echo)e Fu(recognizes.)p
eop end
-%%Page: 160 166
-TeXDict begin 160 165 bop 3614 -116 a Fu(160)150 299
+%%Page: 166 172
+TeXDict begin 166 171 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(166)275 299 y(The)28 b(\014le)i
+Ft(config-top.h)c Fu(con)m(tains)31 b(C)d(Prepro)s(cessor)h(`)p
+Ft(#define)p Fu(')f(statemen)m(ts)j(for)f(options)f(whic)m(h)150
+408 y(are)35 b(not)g(settable)i(from)d Ft(configure)p
+Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g(to)h(b)s(e)e(c)
+m(hanged;)k(b)s(ew)m(are)d(of)150 518 y(the)h(consequences)g(if)f(y)m
+(ou)h(do.)55 b(Read)36 b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e
+(eac)m(h)i(de\014nition)e(for)g(more)150 628 y(information)c(ab)s(out)f
+(its)h(e\013ect.)p eop end
+%%Page: 167 173
+TeXDict begin 167 172 bop 3614 -116 a Fu(167)150 299
y Fp(App)t(endix)52 b(A)81 b(Rep)t(orting)53 b(Bugs)150
533 y Fu(Please)33 b(rep)s(ort)e(all)h(bugs)f(y)m(ou)h(\014nd)e(in)i
(Bash.)44 b(But)32 b(\014rst,)g(y)m(ou)g(should)e(mak)m(e)j(sure)e
(that)h(it)g(really)h(is)f(a)150 643 y(bug,)d(and)g(that)h(it)g(app)s
(ears)f(in)g(the)h(latest)h(v)m(ersion)f(of)g(Bash.)40
b(The)29 b(latest)j(v)m(ersion)e(of)f(Bash)h(is)f(alw)m(a)m(ys)150
-752 y(a)m(v)-5 b(ailable)33 b(for)d(FTP)g(from)g Ft
-(ftp://ftp.gnu.org/pub/gn)o(u/ba)o(sh/)o Fu(.)275 887
-y(Once)41 b(y)m(ou)g(ha)m(v)m(e)h(determined)f(that)h(a)f(bug)g
-(actually)h(exists,)j(use)c(the)g Ft(bashbug)e Fu(command)i(to)150
-996 y(submit)25 b(a)h(bug)g(rep)s(ort.)38 b(If)26 b(y)m(ou)g(ha)m(v)m
-(e)h(a)f(\014x,)h(y)m(ou)f(are)g(encouraged)h(to)f(mail)h(that)f(as)g
-(w)m(ell!)40 b(Suggestions)150 1106 y(and)j(`philosophical')i(bug)e
-(rep)s(orts)f(ma)m(y)j(b)s(e)e(mailed)h(to)g Ft(bug-bash@gnu)11
-b(.)g(org)39 b Fu(or)k(p)s(osted)g(to)i(the)150 1215
-y(Usenet)31 b(newsgroup)e Ft(gnu.bash.bug)p Fu(.)275
-1350 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225
-1484 y Fq(\017)60 b Fu(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h
-(Bash.)225 1619 y Fq(\017)60 b Fu(The)30 b(hardw)m(are)g(and)g(op)s
-(erating)g(system.)225 1753 y Fq(\017)60 b Fu(The)30
-b(compiler)h(used)e(to)i(compile)h(Bash.)225 1888 y Fq(\017)60
+752 y(a)m(v)-5 b(ailable)43 b(for)d(FTP)g(from)g Ft(ftp:)8
+b(/)g(/)g(ftp)g(.)g(gnu)g(.)g(org)g(/)g(pub)g(/)g(gnu)g(/)g(bash)g(/)45
+b Fu(and)40 b(from)g Ft(http:)8 b(/)g(/)g(git)g(.)150
+862 y(savannah.gnu.org/cgit/ba)o(sh.g)o(it/s)o(nap)o(shot)o(/bas)o(h-m)
+o(aste)o(r.ta)o(r.g)o(z)p Fu(.)275 996 y(Once)41 b(y)m(ou)g(ha)m(v)m(e)
+h(determined)f(that)h(a)f(bug)g(actually)h(exists,)j(use)c(the)g
+Ft(bashbug)e Fu(command)i(to)150 1106 y(submit)25 b(a)h(bug)g(rep)s
+(ort.)38 b(If)26 b(y)m(ou)g(ha)m(v)m(e)h(a)f(\014x,)h(y)m(ou)f(are)g
+(encouraged)h(to)f(mail)h(that)f(as)g(w)m(ell!)40 b(Suggestions)150
+1215 y(and)j(`philosophical')i(bug)e(rep)s(orts)f(ma)m(y)j(b)s(e)e
+(mailed)h(to)g Ft(bug-bash@gnu)11 b(.)g(org)39 b Fu(or)k(p)s(osted)g
+(to)i(the)150 1325 y(Usenet)31 b(newsgroup)e Ft(gnu.bash.bug)p
+Fu(.)275 1460 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225
+1594 y Fq(\017)60 b Fu(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h
+(Bash.)225 1729 y Fq(\017)60 b Fu(The)30 b(hardw)m(are)g(and)g(op)s
+(erating)g(system.)225 1863 y Fq(\017)60 b Fu(The)30
+b(compiler)h(used)e(to)i(compile)h(Bash.)225 1998 y Fq(\017)60
b Fu(A)30 b(description)h(of)f(the)h(bug)f(b)s(eha)m(viour.)225
-2022 y Fq(\017)60 b Fu(A)30 b(short)h(script)f(or)g(`recip)s(e')h(whic)
+2132 y Fq(\017)60 b Fu(A)30 b(short)h(script)f(or)g(`recip)s(e')h(whic)
m(h)f(exercises)i(the)e(bug)g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(repro)
-s(duce)e(it.)150 2182 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f
+s(duce)e(it.)150 2291 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f
(three)g(items)h(automatically)i(in)m(to)f(the)e(template)i(it)f(pro)m
-(vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275
-2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m
+(vides)f(for)g(\014ling)h(a)150 2401 y(bug)h(rep)s(ort.)275
+2535 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m
(ual)f(to)h Ft(bug-bash@gnu.org)p Fu(.)p eop end
-%%Page: 161 167
-TeXDict begin 161 166 bop 3614 -116 a Fu(161)150 141
+%%Page: 168 174
+TeXDict begin 168 173 bop 3614 -116 a Fu(168)150 141
y Fp(App)t(endix)58 b(B)81 b(Ma)9 b(jor)54 b(Di\013erences)d(F)-13
b(rom)54 b(The)g(Bourne)1088 299 y(Shell)150 530 y Fu(Bash)26
b(implemen)m(ts)h(essen)m(tially)g(the)g(same)f(grammar,)h(parameter)f
@@ -19509,20 +20174,20 @@ Ft(sh)f Fu(included)g(in)h(SVR4.2)h(\(the)f(last)h(v)m(ersion)f(of)g
Fm(posix)p Fu(-conforman)m(t,)g(ev)m(en)g(where)f(the)g
Fm(posix)g Fu(sp)s(eci\014cation)h(di\013ers)f(from)g(traditional)330
1431 y Ft(sh)e Fu(b)s(eha)m(vior)g(\(see)i(Section)f(6.11)h([Bash)e
-(POSIX)g(Mo)s(de],)h(page)g(101\).)225 1565 y Fq(\017)60
+(POSIX)g(Mo)s(de],)h(page)g(106\).)225 1565 y Fq(\017)60
b Fu(Bash)26 b(has)g(m)m(ulti-c)m(haracter)i(in)m(v)m(o)s(cation)g
(options)f(\(see)f(Section)h(6.1)g([In)m(v)m(oking)g(Bash],)h(page)e
-(86\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h
+(91\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h
(editing)g(\(see)h(Chapter)e(8)h([Command)f(Line)g(Editing],)k(page)d
-(111\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225
+(117\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225
1943 y Fq(\017)60 b Fu(Bash)46 b(pro)m(vides)g(a)g(programmable)g(w)m
(ord)f(completion)i(mec)m(hanism)f(\(see)h(Section)g(8.6)g([Pro-)330
-2052 y(grammable)39 b(Completion],)i(page)e(137\),)i(and)d(builtin)g
+2052 y(grammable)39 b(Completion],)i(page)e(143\),)i(and)d(builtin)g
(commands)f Ft(complete)p Fu(,)h Ft(compgen)p Fu(,)h(and)330
2162 y Ft(compopt)p Fu(,)29 b(to)i(manipulate)g(it.)225
2296 y Fq(\017)60 b Fu(Bash)26 b(has)f(command)h(history)f(\(see)i
(Section)f(9.1)h([Bash)f(History)h(F)-8 b(acilities],)30
-b(page)c(146\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h
+b(page)c(152\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h
Ft(fc)g Fu(builtins)g(to)h(manipulate)g(it.)42 b(The)30
b(Bash)h(history)g(list)g(main)m(tains)g(timestamp)330
2515 y(information)g(and)e(uses)h(the)h(v)-5 b(alue)31
@@ -19530,9 +20195,9 @@ b(of)f(the)h Ft(HISTTIMEFORMAT)26 b Fu(v)-5 b(ariable)32
b(to)f(displa)m(y)f(it.)225 2649 y Fq(\017)60 b Fu(Bash)48
b(implemen)m(ts)h Ft(csh)p Fu(-lik)m(e)g(history)f(expansion)g(\(see)h
(Section)g(9.3)h([History)f(In)m(teraction],)330 2759
-y(page)31 b(148\).)225 2892 y Fq(\017)60 b Fu(Bash)33
-b(has)g(one-dimensional)h(arra)m(y)f(v)-5 b(ariables)34
-b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(95\),)h(and)e(the)330
+y(page)31 b(154\).)225 2892 y Fq(\017)60 b Fu(Bash)29
+b(has)h(one-dimensional)g(arra)m(y)f(v)-5 b(ariables)30
+b(\(see)h(Section)f(6.7)g([Arra)m(ys],)h(page)f(100\),)h(and)e(the)330
3002 y(appropriate)39 b(v)-5 b(ariable)40 b(expansions)f(and)g
(assignmen)m(t)h(syn)m(tax)g(to)g(use)f(them.)67 b(Sev)m(eral)40
b(of)g(the)330 3112 y(Bash)32 b(builtins)f(tak)m(e)j(options)e(to)h
@@ -19554,49 +20219,49 @@ i(strings)f(found)e(in)h(a)h(script)g(\(see)g(Section)g(3.1.2.5)330
4171 y Fq(\017)60 b Fu(Bash)44 b(implemen)m(ts)g(the)f
Ft(!)h Fu(k)m(eyw)m(ord)g(to)g(negate)h(the)f(return)e(v)-5
b(alue)44 b(of)g(a)g(pip)s(eline)f(\(see)h(Sec-)330 4281
-y(tion)33 b(3.2.3)i([Pip)s(elines],)f(page)g(8\).)49
-b(V)-8 b(ery)33 b(useful)f(when)g(an)h Ft(if)f Fu(statemen)m(t)j(needs)
-d(to)i(act)g(only)f(if)330 4390 y(a)k(test)h(fails.)60
-b(The)36 b(Bash)g(`)p Ft(-o)30 b(pipefail)p Fu(')35 b(option)i(to)h
-Ft(set)d Fu(will)i(cause)g(a)g(pip)s(eline)g(to)g(return)f(a)330
-4500 y(failure)31 b(status)f(if)h(an)m(y)f(command)g(fails.)225
+y(tion)36 b(3.2.3)h([Pip)s(elines],)g(page)f(10\).)57
+b(V)-8 b(ery)36 b(useful)f(when)f(an)h Ft(if)g Fu(statemen)m(t)i(needs)
+e(to)h(act)h(only)330 4390 y(if)32 b(a)g(test)g(fails.)45
+b(The)31 b(Bash)h(`)p Ft(-o)e(pipefail)p Fu(')g(option)i(to)g
+Ft(set)f Fu(will)h(cause)g(a)g(pip)s(eline)g(to)g(return)f(a)330
+4500 y(failure)g(status)f(if)h(an)m(y)f(command)g(fails.)225
4634 y Fq(\017)60 b Fu(Bash)34 b(has)g(the)g Ft(time)f
Fu(reserv)m(ed)h(w)m(ord)g(and)f(command)h(timing)h(\(see)g(Section)g
-(3.2.3)g([Pip)s(elines],)330 4743 y(page)g(8\).)52 b(The)33
-b(displa)m(y)i(of)f(the)g(timing)g(statistics)i(ma)m(y)f(b)s(e)e(con)m
+(3.2.3)g([Pip)s(elines],)330 4743 y(page)d(10\).)43 b(The)31
+b(displa)m(y)g(of)g(the)g(timing)h(statistics)h(ma)m(y)e(b)s(e)f(con)m
(trolled)j(with)e(the)g Ft(TIMEFORMAT)330 4853 y Fu(v)-5
b(ariable.)225 4987 y Fq(\017)60 b Fu(Bash)28 b(implemen)m(ts)g(the)f
Ft(for)j(\(\()g Fj(expr1)f Ft(;)h Fj(expr2)f Ft(;)h Fj(expr3)f
Ft(\)\))e Fu(arithmetic)h(for)g(command,)g(sim-)330 5096
y(ilar)j(to)g(the)g(C)f(language)h(\(see)h(Section)f(3.2.5.1)i([Lo)s
-(oping)d(Constructs],)h(page)g(10\).)225 5230 y Fq(\017)60
+(oping)d(Constructs],)h(page)g(11\).)225 5230 y Fq(\017)60
b Fu(Bash)31 b(includes)f(the)g Ft(select)f Fu(comp)s(ound)g(command,)i
(whic)m(h)f(allo)m(ws)i(the)f(generation)g(of)g(simple)330
5340 y(men)m(us)f(\(see)h(Section)g(3.2.5.2)i([Conditional)e
-(Constructs],)g(page)g(11\).)p eop end
-%%Page: 162 168
-TeXDict begin 162 167 bop 150 -116 a Fu(App)s(endix)29
+(Constructs],)g(page)g(12\).)p eop end
+%%Page: 169 175
+TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29
b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(162)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(169)225 299 y Fq(\017)60
b Fu(Bash)40 b(includes)g(the)g Ft([[)g Fu(comp)s(ound)e(command,)43
b(whic)m(h)c(mak)m(es)i(conditional)h(testing)f(part)f(of)330
408 y(the)f(shell)g(grammar)g(\(see)h(Section)f(3.2.5.2)j([Conditional)
-d(Constructs],)i(page)f(11\),)i(including)330 518 y(optional)32
+d(Constructs],)i(page)f(12\),)i(including)330 518 y(optional)32
b(regular)e(expression)g(matc)m(hing.)225 653 y Fq(\017)60
b Fu(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m
(hing)f(for)e(the)g Ft(case)g Fu(and)f Ft([[)h Fu(constructs.)225
789 y Fq(\017)60 b Fu(Bash)27 b(includes)g(brace)h(expansion)f(\(see)h
-(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(23\))h(and)d(tilde)330
+(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(24\))h(and)d(tilde)330
898 y(expansion)k(\(see)i(Section)f(3.5.2)h([Tilde)f(Expansion],)f
-(page)h(24\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h
+(page)h(25\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h
(command)e(aliases)j(and)d(the)i Ft(alias)d Fu(and)i
Ft(unalias)e Fu(builtins)h(\(see)i(Section)g(6.6)330
-1143 y([Aliases],)32 b(page)f(94\).)225 1279 y Fq(\017)60
+1143 y([Aliases],)32 b(page)f(100\).)225 1279 y Fq(\017)60
b Fu(Bash)32 b(pro)m(vides)g(shell)g(arithmetic,)i(the)e
Ft(\(\()g Fu(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.5.2)j([Con-)
-330 1388 y(ditional)d(Constructs],)e(page)i(11\),)g(and)e(arithmetic)i
+330 1388 y(ditional)d(Constructs],)e(page)i(12\),)g(and)e(arithmetic)i
(expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330
-1498 y(metic],)h(page)f(93\).)225 1633 y Fq(\017)60 b
+1498 y(metic],)h(page)f(98\).)225 1633 y Fq(\017)60 b
Fu(V)-8 b(ariables)31 b(presen)m(t)e(in)g(the)g(shell's)h(initial)g(en)
m(vironmen)m(t)g(are)g(automatically)i(exp)s(orted)d(to)h(c)m(hild)330
1743 y(pro)s(cesses.)38 b(The)23 b(Bourne)g(shell)g(do)s(es)g(not)g
@@ -19612,103 +20277,101 @@ Ft(#)p Fu(',)g(`)p Ft(\045\045)p Fu(')e(and)f(`)p Ft(##)p
Fu(')h(expansions)g(to)g(remo)m(v)m(e)330 2342 y(leading)f(or)f
(trailing)h(substrings)e(from)g(v)-5 b(ariable)35 b(v)-5
b(alues)35 b(\(see)g(Section)g(3.5.3)g([Shell)g(P)m(arameter)330
-2452 y(Expansion],)30 b(page)h(25\).)225 2587 y Fq(\017)60
+2452 y(Expansion],)30 b(page)h(26\).)225 2587 y Fq(\017)60
b Fu(The)46 b(expansion)g Ft(${#xx})p Fu(,)j(whic)m(h)d(returns)f(the)i
(length)f(of)h Ft(${xx})p Fu(,)i(is)e(supp)s(orted)d(\(see)j(Sec-)330
2697 y(tion)31 b(3.5.3)h([Shell)f(P)m(arameter)g(Expansion],)f(page)i
-(25\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g
+(26\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g
Ft(${var:)p Fr(o\013set)r Ft([:)p Fr(length)p Ft(]})p
Fu(,)g(whic)m(h)g(expands)g(to)h(the)g(substring)e(of)i
Ft(var)p Fu('s)e(v)-5 b(alue)330 2942 y(of)43 b(length)g
Fr(length)p Fu(,)k(b)s(eginning)42 b(at)i Fr(o\013set)p
Fu(,)j(is)c(presen)m(t)g(\(see)g(Section)h(3.5.3)h([Shell)e(P)m
-(arameter)330 3051 y(Expansion],)30 b(page)h(25\).)225
-3187 y Fq(\017)60 b Fu(The)21 b(expansion)f Ft(${var/[/])p
-Fr(pattern)p Ft([/)p Fr(replacemen)m(t)r Ft(]})p Fu(,)i(whic)m(h)e
-(matc)m(hes)j Fr(pattern)e Fu(and)f(replaces)330 3296
-y(it)29 b(with)e Fr(replacemen)m(t)32 b Fu(in)c(the)g(v)-5
-b(alue)29 b(of)f Ft(var)p Fu(,)g(is)g(a)m(v)-5 b(ailable)31
-b(\(see)e(Section)f(3.5.3)i([Shell)f(P)m(arameter)330
-3406 y(Expansion],)h(page)h(25\).)225 3541 y Fq(\017)60
+(arameter)330 3051 y(Expansion],)30 b(page)h(26\).)225
+3187 y Fq(\017)60 b Fu(The)21 b(expansion)f Ft(${)p Fj(var)p
+Ft(/[/])p Fr(pattern)p Ft([/)p Fr(replacemen)m(t)r Ft(]})p
+Fu(,)i(whic)m(h)e(matc)m(hes)j Fr(pattern)e Fu(and)f(replaces)330
+3296 y(it)30 b(with)f Fr(replacemen)m(t)k Fu(in)c(the)h(v)-5
+b(alue)30 b(of)g Fr(v)-5 b(ar)p Fu(,)30 b(is)f(a)m(v)-5
+b(ailable)32 b(\(see)e(Section)h(3.5.3)g([Shell)f(P)m(arameter)330
+3406 y(Expansion],)g(page)h(26\).)225 3541 y Fq(\017)60
b Fu(The)33 b(expansion)g Ft(${!)p Fj(prefix)p Ft(*})d
Fu(expansion,)k(whic)m(h)e(expands)h(to)h(the)f(names)g(of)g(all)h
(shell)f(v)-5 b(ari-)330 3651 y(ables)36 b(whose)g(names)g(b)s(egin)g
(with)g Fr(pre\014x)p Fu(,)g(is)g(a)m(v)-5 b(ailable)39
b(\(see)e(Section)g(3.5.3)g([Shell)g(P)m(arameter)330
-3761 y(Expansion],)30 b(page)h(25\).)225 3896 y Fq(\017)60
-b Fu(Bash)22 b(has)f Fr(indirect)j Fu(v)-5 b(ariable)22
-b(expansion)g(using)f Ft(${!word})e Fu(\(see)k(Section)f(3.5.3)i
-([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(25\).)225
-4141 y Fq(\017)60 b Fu(Bash)31 b(can)f(expand)g(p)s(ositional)h
-(parameters)g(b)s(ey)m(ond)e Ft($9)h Fu(using)g Ft(${)p
-Fj(num)p Ft(})p Fu(.)225 4276 y Fq(\017)60 b Fu(The)27
-b Fm(posix)g Ft($\(\))g Fu(form)g(of)h(command)g(substitution)f(is)h
-(implemen)m(ted)g(\(see)h(Section)f(3.5.4)i([Com-)330
-4386 y(mand)38 b(Substitution],)k(page)e(31\),)j(and)38
-b(preferred)g(to)i(the)g(Bourne)f(shell's)h Ft(``)e Fu(\(whic)m(h)i(is)
-f(also)330 4495 y(implemen)m(ted)31 b(for)f(bac)m(kw)m(ards)h
-(compatibilit)m(y\).)225 4631 y Fq(\017)60 b Fu(Bash)31
-b(has)f(pro)s(cess)g(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)s
-(cess)f(Substitution],)f(page)h(32\).)225 4766 y Fq(\017)60
-b Fu(Bash)55 b(automatically)j(assigns)e(v)-5 b(ariables)55
-b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g(curren)m(t)330
-4876 y(user)40 b(\()p Ft(UID)p Fu(,)i Ft(EUID)p Fu(,)g(and)e
-Ft(GROUPS)p Fu(\),)h(the)g(curren)m(t)f(host)g(\()p Ft(HOSTTYPE)p
-Fu(,)h Ft(OSTYPE)p Fu(,)h Ft(MACHTYPE)p Fu(,)f(and)330
-4985 y Ft(HOSTNAME)p Fu(\),)55 b(and)c(the)g(instance)h(of)g(Bash)f
-(that)h(is)f(running)f(\()p Ft(BASH)p Fu(,)56 b Ft(BASH_VERSION)p
-Fu(,)e(and)330 5095 y Ft(BASH_VERSINFO)p Fu(\).)37 b(See)31
-b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(73,)g(for)f
-(details.)225 5230 y Fq(\017)60 b Fu(The)44 b Ft(IFS)f
-Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g
-(of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)330 5340
-y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(32\).)41
-b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)p
-eop end
-%%Page: 163 169
-TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29
+3761 y(Expansion],)30 b(page)h(26\).)225 3896 y Fq(\017)60
+b Fu(Bash)22 b(has)g(indirect)g(v)-5 b(ariable)22 b(expansion)g(using)f
+Ft(${!word})f Fu(\(see)i(Section)h(3.5.3)h([Shell)e(P)m(arameter)330
+4006 y(Expansion],)30 b(page)h(26\).)225 4141 y Fq(\017)60
+b Fu(Bash)31 b(can)f(expand)g(p)s(ositional)h(parameters)g(b)s(ey)m
+(ond)e Ft($9)h Fu(using)g Ft(${)p Fj(num)p Ft(})p Fu(.)225
+4276 y Fq(\017)60 b Fu(The)27 b Fm(posix)g Ft($\(\))g
+Fu(form)g(of)h(command)g(substitution)f(is)h(implemen)m(ted)g(\(see)h
+(Section)f(3.5.4)i([Com-)330 4386 y(mand)38 b(Substitution],)k(page)e
+(34\),)j(and)38 b(preferred)g(to)i(the)g(Bourne)f(shell's)h
+Ft(``)e Fu(\(whic)m(h)i(is)f(also)330 4495 y(implemen)m(ted)31
+b(for)f(bac)m(kw)m(ards)h(compatibilit)m(y\).)225 4631
+y Fq(\017)60 b Fu(Bash)31 b(has)f(pro)s(cess)g(substitution)g(\(see)h
+(Section)g(3.5.6)h([Pro)s(cess)f(Substitution],)f(page)h(34\).)225
+4766 y Fq(\017)60 b Fu(Bash)55 b(automatically)j(assigns)e(v)-5
+b(ariables)55 b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g
+(curren)m(t)330 4876 y(user)40 b(\()p Ft(UID)p Fu(,)i
+Ft(EUID)p Fu(,)g(and)e Ft(GROUPS)p Fu(\),)h(the)g(curren)m(t)f(host)g
+(\()p Ft(HOSTTYPE)p Fu(,)h Ft(OSTYPE)p Fu(,)h Ft(MACHTYPE)p
+Fu(,)f(and)330 4985 y Ft(HOSTNAME)p Fu(\),)55 b(and)c(the)g(instance)h
+(of)g(Bash)f(that)h(is)f(running)f(\()p Ft(BASH)p Fu(,)56
+b Ft(BASH_VERSION)p Fu(,)e(and)330 5095 y Ft(BASH_VERSINFO)p
+Fu(\).)37 b(See)31 b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33
+b(page)e(78,)g(for)f(details.)225 5230 y Fq(\017)60 b
+Fu(The)44 b Ft(IFS)f Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f
+(only)g(the)g(results)g(of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)
+330 5340 y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f
+(35\).)41 b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h
+(hole.)p eop end
+%%Page: 170 176
+TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29
b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(163)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(170)225 299 y Fq(\017)60
b Fu(The)36 b(\014lename)h(expansion)f(brac)m(k)m(et)i(expression)f(co)
s(de)f(uses)g(`)p Ft(!)p Fu(')h(and)f(`)p Ft(^)p Fu(')h(to)g(negate)h
(the)f(set)g(of)330 408 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)f
(brac)m(k)m(ets.)43 b(The)29 b(Bourne)i(shell)f(uses)g(only)h(`)p
Ft(!)p Fu('.)225 536 y Fq(\017)60 b Fu(Bash)38 b(implemen)m(ts)g(the)g
(full)g(set)g(of)g Fm(posix)f Fu(\014lename)h(expansion)g(op)s
-(erators,)i(including)d Fr(c)m(har-)330 646 y(acter)i(classes)p
-Fu(,)j Fr(equiv)-5 b(alence)39 b(classes)p Fu(,)j(and)37
-b Fr(collating)k(sym)m(b)s(ols)g Fu(\(see)e(Section)g(3.5.8)h
-([Filename)330 756 y(Expansion],)30 b(page)h(33\).)225
-883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g
-(matc)m(hing)h(features)f(when)f(the)h Ft(extglob)d Fu(shell)j(option)
-330 993 y(is)30 b(enabled)h(\(see)g(Section)g(3.5.8.1)i([P)m(attern)f
-(Matc)m(hing],)g(page)f(33\).)225 1121 y Fq(\017)60 b
-Fu(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f(v)-5
-b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j
+(erators,)i(including)d(c)m(har-)330 646 y(acter)j(classes,)i(equiv)-5
+b(alence)39 b(classes,)j(and)c(collating)j(sym)m(b)s(ols)d(\(see)i
+(Section)f(3.5.8)h([Filename)330 756 y(Expansion],)30
+b(page)h(35\).)225 883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g
+(extended)g(pattern)g(matc)m(hing)h(features)f(when)f(the)h
+Ft(extglob)d Fu(shell)j(option)330 993 y(is)30 b(enabled)h(\(see)g
+(Section)g(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)g(page)f(36\).)225
+1121 y Fq(\017)60 b Fu(It)22 b(is)g(p)s(ossible)g(to)h(ha)m(v)m(e)g(a)f
+(v)-5 b(ariable)23 b(and)f(a)g(function)g(with)g(the)g(same)g(name;)j
Ft(sh)d Fu(do)s(es)g(not)g(separate)330 1230 y(the)31
b(t)m(w)m(o)g(name)g(spaces.)225 1358 y Fq(\017)60 b
Fu(Bash)30 b(functions)e(are)i(p)s(ermitted)f(to)h(ha)m(v)m(e)h(lo)s
(cal)g(v)-5 b(ariables)30 b(using)f(the)g Ft(local)f
Fu(builtin,)i(and)e(th)m(us)330 1468 y(useful)i(recursiv)m(e)g
(functions)g(ma)m(y)h(b)s(e)f(written)g(\(see)i(Section)f(4.2)g([Bash)g
-(Builtins],)g(page)h(51\).)225 1596 y Fq(\017)60 b Fu(V)-8
+(Builtins],)g(page)h(55\).)225 1596 y Fq(\017)60 b Fu(V)-8
b(ariable)25 b(assignmen)m(ts)g(preceding)e(commands)h(a\013ect)h(only)
f(that)g(command,)h(ev)m(en)f(builtins)g(and)330 1705
y(functions)36 b(\(see)h(Section)g(3.7.4)h([En)m(vironmen)m(t],)h(page)
-e(41\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37
+e(44\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37
b(assignmen)m(ts)330 1815 y(preceding)30 b(commands)g(are)h(global)h
(unless)d(the)i(command)f(is)h(executed)g(from)f(the)g(\014le)h
(system.)225 1943 y Fq(\017)60 b Fu(Bash)44 b(p)s(erforms)e(\014lename)
i(expansion)f(on)h(\014lenames)g(sp)s(eci\014ed)f(as)h(op)s(erands)e
(to)j(input)e(and)330 2052 y(output)30 b(redirection)h(op)s(erators)g
-(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(35\).)225
+(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(38\).)225
2180 y Fq(\017)60 b Fu(Bash)29 b(con)m(tains)h(the)f(`)p
Ft(<>)p Fu(')f(redirection)i(op)s(erator,)f(allo)m(wing)i(a)e(\014le)g
(to)g(b)s(e)f(op)s(ened)g(for)h(b)s(oth)f(read-)330 2290
y(ing)35 b(and)f(writing,)i(and)e(the)h(`)p Ft(&>)p Fu(')g(redirection)
g(op)s(erator,)h(for)f(directing)g(standard)f(output)h(and)330
2399 y(standard)30 b(error)g(to)h(the)f(same)h(\014le)f(\(see)i
-(Section)f(3.6)g([Redirections],)h(page)g(35\).)225 2527
+(Section)f(3.6)g([Redirections],)h(page)g(38\).)225 2527
y Fq(\017)60 b Fu(Bash)21 b(includes)f(the)h(`)p Ft(<<<)p
Fu(')g(redirection)g(op)s(erator,)i(allo)m(wing)g(a)e(string)f(to)i(b)s
(e)e(used)g(as)h(the)g(standard)330 2637 y(input)29 b(to)j(a)e
@@ -19719,20 +20382,20 @@ Fu(')e(redirection)j(op)s(erators,)g(whic)m(h)f(mo)m(v)m(e)330
3002 y Fq(\017)60 b Fu(Bash)25 b(treats)h(a)f(n)m(um)m(b)s(er)e(of)i
(\014lenames)g(sp)s(ecially)g(when)f(they)h(are)g(used)f(in)g
(redirection)i(op)s(erators)330 3112 y(\(see)31 b(Section)h(3.6)f
-([Redirections],)h(page)f(35\).)225 3240 y Fq(\017)60
+([Redirections],)h(page)f(38\).)225 3240 y Fq(\017)60
b Fu(Bash)33 b(can)f(op)s(en)g(net)m(w)m(ork)i(connections)f(to)h
(arbitrary)e(mac)m(hines)h(and)f(services)h(with)f(the)h(redi-)330
3349 y(rection)e(op)s(erators)g(\(see)g(Section)g(3.6)h
-([Redirections],)g(page)f(35\).)225 3477 y Fq(\017)60
+([Redirections],)g(page)f(38\).)225 3477 y Fq(\017)60
b Fu(The)29 b Ft(noclobber)e Fu(option)j(is)g(a)m(v)-5
b(ailable)32 b(to)e(a)m(v)m(oid)h(o)m(v)m(erwriting)g(existing)g
(\014les)e(with)h(output)f(redi-)330 3587 y(rection)39
-b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(62\).)66
+b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(67\).)66
b(The)38 b(`)p Ft(>|)p Fu(')h(redirection)g(op)s(erator)330
3696 y(ma)m(y)31 b(b)s(e)f(used)f(to)i(o)m(v)m(erride)h
Ft(noclobber)p Fu(.)225 3824 y Fq(\017)60 b Fu(The)34
b(Bash)g Ft(cd)g Fu(and)f Ft(pwd)g Fu(builtins)h(\(see)h(Section)g(4.1)
-g([Bourne)g(Shell)f(Builtins],)h(page)g(44\))h(eac)m(h)330
+g([Bourne)g(Shell)f(Builtins],)h(page)g(48\))h(eac)m(h)330
3934 y(tak)m(e)c Ft(-L)e Fu(and)f Ft(-P)h Fu(options)h(to)g(switc)m(h)g
(b)s(et)m(w)m(een)g(logical)i(and)c(ph)m(ysical)i(mo)s(des.)225
4061 y Fq(\017)60 b Fu(Bash)25 b(allo)m(ws)h(a)g(function)e(to)i(o)m(v)
@@ -19740,28 +20403,28 @@ m(erride)g(a)g(builtin)e(with)h(the)g(same)g(name,)i(and)d(pro)m(vides)
h(access)h(to)330 4171 y(that)34 b(builtin's)f(functionalit)m(y)h
(within)f(the)g(function)g(via)h(the)f Ft(builtin)f Fu(and)g
Ft(command)g Fu(builtins)330 4281 y(\(see)f(Section)h(4.2)f([Bash)g
-(Builtins],)g(page)g(51\).)225 4408 y Fq(\017)60 b Fu(The)35
+(Builtins],)g(page)g(55\).)225 4408 y Fq(\017)60 b Fu(The)35
b Ft(command)e Fu(builtin)i(allo)m(ws)i(selectiv)m(e)h(disabling)e(of)f
(functions)g(when)g(command)g(lo)s(okup)g(is)330 4518
y(p)s(erformed)29 b(\(see)i(Section)g(4.2)h([Bash)f(Builtins],)g(page)g
-(51\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i
+(55\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i
(b)s(e)e(enabled)h(or)g(disabled)g(using)f(the)h Ft(enable)f
Fu(builtin)g(\(see)i(Section)g(4.2)330 4756 y([Bash)31
-b(Builtins],)g(page)g(51\).)225 4883 y Fq(\017)60 b Fu(The)26
+b(Builtins],)g(page)g(55\).)225 4883 y Fq(\017)60 b Fu(The)26
b(Bash)h Ft(exec)e Fu(builtin)h(tak)m(es)i(additional)f(options)g(that)
g(allo)m(w)h(users)d(to)j(con)m(trol)g(the)e(con)m(ten)m(ts)330
4993 y(of)35 b(the)f(en)m(vironmen)m(t)h(passed)f(to)h(the)g(executed)g
(command,)h(and)d(what)i(the)f(zeroth)h(argumen)m(t)330
5103 y(to)c(the)g(command)f(is)g(to)h(b)s(e)f(\(see)h(Section)h(4.1)f
-([Bourne)f(Shell)h(Builtins],)g(page)g(44\).)225 5230
+([Bourne)f(Shell)h(Builtins],)g(page)g(48\).)225 5230
y Fq(\017)60 b Fu(Shell)29 b(functions)g(ma)m(y)h(b)s(e)f(exp)s(orted)g
(to)h(c)m(hildren)f(via)h(the)g(en)m(vironmen)m(t)g(using)f
Ft(export)f(-f)h Fu(\(see)330 5340 y(Section)i(3.3)h([Shell)e(F)-8
-b(unctions],)32 b(page)f(18\).)p eop end
-%%Page: 164 170
-TeXDict begin 164 169 bop 150 -116 a Fu(App)s(endix)29
+b(unctions],)32 b(page)f(19\).)p eop end
+%%Page: 171 177
+TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29
b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(164)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(171)225 299 y Fq(\017)60
b Fu(The)40 b(Bash)h Ft(export)p Fu(,)h Ft(readonly)p
Fu(,)f(and)g Ft(declare)d Fu(builtins)j(can)g(tak)m(e)h(a)f
Ft(-f)f Fu(option)i(to)f(act)h(on)330 408 y(shell)30
@@ -19777,15 +20440,15 @@ Fu(builtin)g(allo)m(ws)j(a)e(name)g(to)g(b)s(e)f(asso)s(ciated)j(with)d
(an)h(arbitrary)f(\014lename,)330 874 y(ev)m(en)30 b(when)e(that)h
(\014lename)g(cannot)h(b)s(e)e(found)g(b)m(y)h(searc)m(hing)g(the)g
Ft($PATH)p Fu(,)g(using)f(`)p Ft(hash)h(-p)p Fu(')g(\(see)330
-984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(44\).)225
+984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(48\).)225
1121 y Fq(\017)60 b Fu(Bash)27 b(includes)f(a)i Ft(help)d
Fu(builtin)i(for)f(quic)m(k)h(reference)h(to)f(shell)g(facilities)i
-(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(51\).)225
+(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(55\).)225
1367 y Fq(\017)60 b Fu(The)42 b Ft(printf)g Fu(builtin)g(is)h(a)m(v)-5
b(ailable)45 b(to)f(displa)m(y)f(formatted)g(output)g(\(see)h(Section)g
-(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(51\).)225
+(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(55\).)225
1614 y Fq(\017)60 b Fu(The)26 b(Bash)h Ft(read)f Fu(builtin)g(\(see)i
-(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(51\))g(will)f(read)g(a)g
+(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(55\))g(will)f(read)g(a)g
(line)g(ending)330 1724 y(in)i(`)p Ft(\\)p Fu(')h(with)f(the)g
Ft(-r)g Fu(option,)i(and)d(will)i(use)f(the)h Ft(REPLY)e
Fu(v)-5 b(ariable)30 b(as)g(a)f(default)h(if)f(no)h(non-option)330
@@ -19808,23 +20471,23 @@ Fu(option)h(will)330 2491 y(read)30 b(un)m(til)h(a)g(particular)f(c)m
b Fu(The)33 b Ft(return)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)f(to)i(ab)
s(ort)f(execution)h(of)f(scripts)g(executed)h(with)f(the)g
Ft(.)g Fu(or)330 2737 y Ft(source)c Fu(builtins)g(\(see)j(Section)f
-(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(44\).)225
+(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(48\).)225
2874 y Fq(\017)60 b Fu(Bash)43 b(includes)g(the)g Ft(shopt)f
Fu(builtin,)k(for)d(\014ner)f(con)m(trol)j(of)e(shell)h(optional)g
(capabilities)h(\(see)330 2984 y(Section)c(4.3.2)g([The)f(Shopt)f
-(Builtin],)k(page)d(66\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f
+(Builtin],)k(page)d(71\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f
(b)s(e)f(set)i(and)330 3093 y(unset)30 b(at)h(shell)g(in)m(v)m(o)s
(cation)h(\(see)f(Section)h(6.1)f([In)m(v)m(oking)g(Bash],)g(page)h
-(86\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h
+(91\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h
(optional)h(b)s(eha)m(vior)e(con)m(trollable)j(with)e(the)f
Ft(set)g Fu(builtin)g(\(see)h(Sec-)330 3340 y(tion)31
-b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(62\).)225 3477
+b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(67\).)225 3477
y Fq(\017)60 b Fu(The)31 b(`)p Ft(-x)p Fu(')g(\()p Ft(xtrace)p
Fu(\))g(option)h(displa)m(ys)f(commands)h(other)f(than)h(simple)f
(commands)g(when)g(p)s(er-)330 3587 y(forming)f(an)g(execution)i(trace)
-f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(62\).)225
+f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(67\).)225
3724 y Fq(\017)60 b Fu(The)28 b Ft(test)g Fu(builtin)h(\(see)h(Section)
-f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(44\))g(is)f(sligh)m(tly)h
+f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(48\))g(is)f(sligh)m(tly)h
(di\013eren)m(t,)330 3833 y(as)23 b(it)g(implemen)m(ts)f(the)h
Fm(posix)f Fu(algorithm,)j(whic)m(h)d(sp)s(eci\014es)g(the)h(b)s(eha)m
(vior)f(based)g(on)h(the)f(n)m(um)m(b)s(er)330 3943 y(of)31
@@ -19833,9 +20496,9 @@ Ft(caller)d Fu(builtin,)j(whic)m(h)f(displa)m(ys)g(the)g(con)m(text)i
(of)f(an)m(y)g(activ)m(e)h(subroutine)330 4189 y(call)28
b(\(a)f(shell)f(function)h(or)f(a)h(script)f(executed)h(with)f(the)h
Ft(.)f Fu(or)g Ft(source)f Fu(builtins\).)39 b(This)26
-b(supp)s(orts)330 4299 y(the)31 b(bash)e(debugger.)225
+b(supp)s(orts)330 4299 y(the)31 b(Bash)f(debugger.)225
4436 y Fq(\017)60 b Fu(The)42 b Ft(trap)f Fu(builtin)h(\(see)i(Section)
-f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(44\))h(allo)m(ws)g(a)e
+f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(48\))h(allo)m(ws)g(a)e
Ft(DEBUG)330 4545 y Fu(pseudo-signal)c(sp)s(eci\014cation,)i(similar)e
(to)g Ft(EXIT)p Fu(.)62 b(Commands)36 b(sp)s(eci\014ed)h(with)g(a)h
Ft(DEBUG)e Fu(trap)330 4655 y(are)k(executed)g(b)s(efore)f(ev)m(ery)h
@@ -19851,58 +20514,58 @@ Ft(functrace)d Fu(option)j(has)f(b)s(een)g(enabled)g(using)330
Ft(extdebug)f Fu(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f
(the)g Ft(DEBUG)e Fu(trap.)330 5230 y(The)21 b Ft(trap)e
Fu(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j
-(page)e(44\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330
+(page)e(48\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330
5340 y(signal)30 b(sp)s(eci\014cation,)h(similar)f(to)g
Ft(EXIT)f Fu(and)g Ft(DEBUG)p Fu(.)39 b(Commands)28 b(sp)s(eci\014ed)h
(with)g(an)g Ft(ERR)g Fu(trap)p eop end
-%%Page: 165 171
-TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 172 178
+TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29
b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(165)330 299 y(are)40 b(executed)g(after)g
+b(The)f(Bourne)g(Shell)1258 b(172)330 299 y(are)40 b(executed)g(after)g
(a)f(simple)h(command)f(fails,)j(with)d(a)h(few)f(exceptions.)68
b(The)39 b Ft(ERR)g Fu(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h
(shell)g(functions)f(unless)g(the)h Ft(-o)29 b(errtrace)37
b Fu(option)i(to)g(the)g Ft(set)f Fu(builtin)g(is)330
518 y(enabled.)330 650 y(The)g Ft(trap)g Fu(builtin)h(\(see)g(Section)h
-(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(44\))g(allo)m(ws)g(a)g
-Ft(RETURN)330 759 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j
-(similar)d(to)h Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)54
-b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y
-Ft(RETURN)k Fu(trap)i(are)g(executed)h(b)s(efore)e(execution)i(resumes)
-e(after)h(a)g(shell)g(function)g(or)g(a)g(shell)330 978
-y(script)36 b(executed)g(with)g Ft(.)f Fu(or)h Ft(source)e
-Fu(returns.)56 b(The)35 b Ft(RETURN)f Fu(trap)i(is)g(not)g(inherited)f
-(b)m(y)h(shell)330 1088 y(functions)k(unless)h(the)g(function)f(has)h
-(b)s(een)f(giv)m(en)i(the)f Ft(trace)e Fu(attribute)j(or)e(the)h
-Ft(functrace)330 1198 y Fu(option)31 b(has)f(b)s(een)g(enabled)g(using)
-g(the)g Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60
-b Fu(The)30 b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i
-(and)d(giv)m(es)j(more)e(information)h(ab)s(out)f(the)g(names)330
+(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(48\))g(allo)m(ws)g(a)g
+Ft(RETURN)330 759 y Fu(pseudo-signal)f(sp)s(eci\014cation,)k(similar)d
+(to)g Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)66 b(Commands)38
+b(sp)s(eci\014ed)h(with)g(a)330 869 y Ft(RETURN)g Fu(trap)i(are)g
+(executed)h(b)s(efore)e(execution)i(resumes)e(after)h(a)g(shell)g
+(function)g(or)g(a)g(shell)330 978 y(script)36 b(executed)g(with)g
+Ft(.)f Fu(or)h Ft(source)e Fu(returns.)56 b(The)35 b
+Ft(RETURN)f Fu(trap)i(is)g(not)g(inherited)f(b)m(y)h(shell)330
+1088 y(functions)k(unless)h(the)g(function)f(has)h(b)s(een)f(giv)m(en)i
+(the)f Ft(trace)e Fu(attribute)j(or)e(the)h Ft(functrace)330
+1198 y Fu(option)31 b(has)f(b)s(een)g(enabled)g(using)g(the)g
+Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60 b Fu(The)30
+b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i(and)d(giv)m
+(es)j(more)e(information)h(ab)s(out)f(the)g(names)330
1439 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i
-(page)f(51\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h
+(page)f(55\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h
Ft(umask)e Fu(builtin)h(p)s(ermits)g(a)h Ft(-p)f Fu(option)h(to)h
(cause)f(the)g(output)f(to)h(b)s(e)f(displa)m(y)m(ed)h(in)g(the)330
1680 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f
(reused)g(as)h(input)f(\(see)i(Section)f(4.1)h([Bourne)f(Shell)330
-1789 y(Builtins],)g(page)g(44\).)225 1921 y Fq(\017)60
+1789 y(Builtins],)g(page)g(48\).)225 1921 y Fq(\017)60
b Fu(Bash)34 b(implemen)m(ts)h(a)g Ft(csh)p Fu(-lik)m(e)g(directory)f
(stac)m(k,)j(and)d(pro)m(vides)g(the)g Ft(pushd)p Fu(,)g
-Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)g(to)i
-(manipulate)f(it)h(\(see)f(Section)h(6.8)g([The)f(Directory)h(Stac)m
-(k],)i(page)d(97\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g
+Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)d(to)i
+(manipulate)f(it)h(\(see)g(Section)f(6.8)h([The)f(Directory)h(Stac)m
+(k],)h(page)f(102\).)47 b(Bash)32 b(also)330 2140 y(mak)m(es)f(the)g
(directory)g(stac)m(k)g(visible)g(as)g(the)f(v)-5 b(alue)31
b(of)g(the)f Ft(DIRSTACK)f Fu(shell)h(v)-5 b(ariable.)225
2272 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m
(kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e(strings)h
(when)f(in)m(ter-)330 2381 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h
-([Con)m(trolling)f(the)g(Prompt],)f(page)h(98\).)225
+([Con)m(trolling)f(the)g(Prompt],)f(page)h(104\).)225
2513 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h
(more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],)
-330 2622 y(page)31 b(100\);)h(the)f(SVR4.2)g(shell)g(restricted)g(mo)s
+330 2622 y(page)31 b(105\);)h(the)f(SVR4.2)g(shell)g(restricted)g(mo)s
(de)f(is)g(to)s(o)h(limited.)225 2754 y Fq(\017)60 b
Fu(The)30 b Ft(disown)f Fu(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f
(from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h
-(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(108\))g(or)g
+(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(114\))g(or)g
(suppress)d(the)i(sending)g(of)g Ft(SIGHUP)e Fu(to)j(a)g(job)f(when)f
(the)330 2973 y(shell)i(exits)g(as)f(the)h(result)f(of)h(a)f
Ft(SIGHUP)p Fu(.)225 3104 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n)
@@ -19919,7 +20582,7 @@ Fq(\017)60 b Fu(The)30 b(SVR4.2)h Ft(sh)f Fu(uses)g(a)g
Ft(TIMEOUT)f Fu(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g
Ft(TMOUT)p Fu(.)150 3894 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m
(y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8
-b(eatures],)32 b(page)f(86.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48
+b(eatures],)32 b(page)f(91.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48
b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)150
4288 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m
(tation,)j(it)e(do)s(es)e(not)i(su\013er)e(from)h(man)m(y)g(of)h(the)f
@@ -19940,10 +20603,10 @@ Fu(.)57 b(If)35 b(the)i(shell)f(is)h(started)g(from)e(a)i(pro)s(cess)f
(with)g Ft(SIGSEGV)e Fu(blo)s(c)m(k)m(ed)k(\(e.g.,)h(b)m(y)d(using)330
5340 y(the)31 b Ft(system\(\))d Fu(C)i(library)g(function)g(call\),)i
(it)f(misb)s(eha)m(v)m(es)g(badly)-8 b(.)p eop end
-%%Page: 166 172
-TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 173 179
+TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29
b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(166)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(173)225 299 y Fq(\017)60
b Fu(In)30 b(a)i(questionable)g(attempt)g(at)g(securit)m(y)-8
b(,)33 b(the)e(SVR4.2)h(shell,)g(when)e(in)m(v)m(ok)m(ed)j(without)e
(the)h Ft(-p)330 408 y Fu(option,)39 b(will)d(alter)i(its)e(real)h(and)
@@ -19974,8 +20637,8 @@ Fm(posix)330 1738 y Fu(standard.)225 1873 y Fq(\017)60
b Fu(The)30 b(SVR4.2)h(shell)g(b)s(eha)m(v)m(es)f(di\013eren)m(tly)h
(when)f(in)m(v)m(ok)m(ed)i(as)e Ft(jsh)g Fu(\(it)h(turns)e(on)h(job)g
(con)m(trol\).)p eop end
-%%Page: 167 173
-TeXDict begin 167 172 bop 3614 -116 a Fu(167)150 299
+%%Page: 174 180
+TeXDict begin 174 179 bop 3614 -116 a Fu(174)150 299
y Fp(App)t(endix)52 b(C)81 b(GNU)54 b(F)-13 b(ree)53
b(Do)t(cumen)l(tation)e(License)1359 502 y Fu(V)-8 b(ersion)31
b(1.3,)g(3)g(No)m(v)m(em)m(b)s(er)h(2008)390 635 y(Cop)m(yrigh)m(t)842
@@ -20056,10 +20719,10 @@ b(\\In)m(v)-5 b(arian)m(t)27 b(Sections")g(are)f(certain)g(Secondary)g
5340 y(b)s(eing)e(those)h(of)g(In)m(v)-5 b(arian)m(t)27
b(Sections,)i(in)d(the)h(notice)h(that)f(sa)m(ys)g(that)g(the)g(Do)s
(cumen)m(t)g(is)g(released)p eop end
-%%Page: 168 174
-TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 175 181
+TeXDict begin 175 180 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(168)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(175)330 299 y(under)26 b(this)i(License.)40 b(If)27
b(a)h(section)h(do)s(es)f(not)f(\014t)h(the)g(ab)s(o)m(v)m(e)h
(de\014nition)e(of)h(Secondary)f(then)h(it)g(is)330 408
y(not)k(allo)m(w)m(ed)i(to)e(b)s(e)g(designated)g(as)g(In)m(v)-5
@@ -20150,10 +20813,10 @@ b(Disclaimers)f(are)g(considered)e(to)330 4970 y(b)s(e)k(included)g(b)m
b(Disclaimers)f(ma)m(y)g(ha)m(v)m(e)g(is)f(v)m(oid)g(and)f(has)h(no)330
5189 y(e\013ect)32 b(on)e(the)h(meaning)f(of)h(this)f(License.)199
5340 y(2.)61 b(VERBA)-8 b(TIM)31 b(COPYING)p eop end
-%%Page: 169 175
-TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 176 182
+TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(169)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+b(176)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
(the)g(Do)s(cumen)m(t)h(in)f(an)m(y)g(medium,)h(either)g(commercially)h
(or)330 408 y(noncommercially)-8 b(,)48 b(pro)m(vided)42
b(that)h(this)f(License,)47 b(the)42 b(cop)m(yrigh)m(t)i(notices,)j
@@ -20243,10 +20906,10 @@ b(in)f(the)h(Title)h(P)m(age)g(\(and)f(on)f(the)h(co)m(v)m(ers,)i(if)e
5340 y(Do)s(cumen)m(t,)j(and)d(from)g(those)i(of)f(previous)f(v)m
(ersions)h(\(whic)m(h)g(should,)g(if)g(there)g(w)m(ere)g(an)m(y)-8
b(,)p eop end
-%%Page: 170 176
-TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 177 183
+TeXDict begin 177 182 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(170)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+b(177)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
(the)f(Do)s(cumen)m(t\).)45 b(Y)-8 b(ou)32 b(ma)m(y)g(use)f(the)g(same)
h(title)h(as)510 408 y(a)e(previous)f(v)m(ersion)g(if)h(the)f(original)
i(publisher)d(of)h(that)h(v)m(ersion)g(giv)m(es)h(p)s(ermission.)360
@@ -20325,10 +20988,10 @@ b(arran)m(t)m(y)32 b(Disclaimers.)330 5121 y(If)h(the)g(Mo)s(di\014ed)g
(designate)h(some)e(or)h(all)g(of)f(these)h(sections)h(as)e(in)m(v)-5
b(arian)m(t.)48 b(T)-8 b(o)33 b(do)f(this,)h(add)f(their)p
eop end
-%%Page: 171 177
-TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 178 184
+TeXDict begin 178 183 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(171)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(178)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
b(arian)m(t)36 b(Sections)g(in)f(the)h(Mo)s(di\014ed)f(V)-8
b(ersion's)36 b(license)g(notice.)57 b(These)330 408
y(titles)32 b(m)m(ust)e(b)s(e)g(distinct)h(from)e(an)m(y)i(other)g
@@ -20413,10 +21076,10 @@ b(ma)m(y)g(extract)h(a)f(single)g(do)s(cumen)m(t)f(from)g(suc)m(h)g(a)h
5230 y(do)s(cumen)m(t,)d(and)f(follo)m(w)i(this)e(License)h(in)g(all)g
(other)g(resp)s(ects)f(regarding)h(v)m(erbatim)g(cop)m(ying)h(of)330
5340 y(that)d(do)s(cumen)m(t.)p eop end
-%%Page: 172 178
-TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 179 185
+TeXDict begin 179 184 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(172)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+b(179)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
(W)m(ORKS)330 441 y(A)d(compilation)i(of)e(the)g(Do)s(cumen)m(t)h(or)f
(its)g(deriv)-5 b(ativ)m(es)30 b(with)d(other)i(separate)g(and)e(indep)
s(enden)m(t)330 551 y(do)s(cumen)m(ts)33 b(or)g(w)m(orks,)h(in)f(or)h
@@ -20501,10 +21164,10 @@ b(ha)m(v)m(e)h(receiv)m(ed)h(copies)e(or)h(righ)m(ts)f(from)g(y)m(ou)g
(reinstated,)i(receipt)f(of)f(a)g(cop)m(y)h(of)f(some)h(or)f(all)h(of)f
(the)330 5340 y(same)31 b(material)h(do)s(es)e(not)g(giv)m(e)i(y)m(ou)f
(an)m(y)g(righ)m(ts)f(to)i(use)e(it.)p eop end
-%%Page: 173 179
-TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 180 186
+TeXDict begin 180 185 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(173)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)
+b(180)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)
330 433 y(The)41 b(F)-8 b(ree)43 b(Soft)m(w)m(are)f(F)-8
b(oundation)43 b(ma)m(y)f(publish)e(new,)k(revised)d(v)m(ersions)h(of)g
(the)g(GNU)g(F)-8 b(ree)330 543 y(Do)s(cumen)m(tation)34
@@ -20568,10 +21231,10 @@ f(of)g(that)330 2944 y(license)31 b(published)e(b)m(y)h(that)h(same)g
g(under)330 3895 y(CC-BY-SA)30 b(on)g(the)h(same)f(site)h(at)g(an)m(y)g
(time)g(b)s(efore)e(August)h(1,)h(2009,)h(pro)m(vided)e(the)g(MMC)h(is)
330 4005 y(eligible)h(for)e(relicensing.)p eop end
-%%Page: 174 180
-TeXDict begin 174 179 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 181 187
+TeXDict begin 181 186 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(174)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
+b(181)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
(for)g(y)l(our)g(do)t(cumen)l(ts)150 458 y Fu(T)-8 b(o)35
b(use)f(this)h(License)g(in)f(a)h(do)s(cumen)m(t)g(y)m(ou)f(ha)m(v)m(e)
i(written,)g(include)f(a)f(cop)m(y)i(of)f(the)f(License)h(in)g(the)150
@@ -20606,1230 +21269,1246 @@ y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g
b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s
(ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p
eop end
-%%Page: 175 181
-TeXDict begin 175 180 bop 3614 -116 a Fu(175)150 299
+%%Page: 182 188
+TeXDict begin 182 187 bop 3614 -116 a Fu(182)150 299
y Fp(App)t(endix)52 b(D)81 b(Indexes)150 639 y Fs(D.1)68
b(Index)45 b(of)g(Shell)g(Builtin)g(Commands)146 806
y(.)150 923 y Fe(.)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)33 b Fb(44)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13
+(:)33 b Fb(48)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(44)146
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(48)146
1523 y Fs([)150 1640 y Fe([)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)33 b Fb(48)146 1881 y Fs(A)150 1998 y Fe(alias)9
+(:)g(:)g(:)33 b Fb(52)146 1881 y Fs(A)150 1998 y Fe(alias)9
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)146 2239 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(55)146 2239 y
Fs(B)150 2356 y Fe(bg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)29
-b Fb(108)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(114)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(51)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(56)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
-b Fb(45)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(49)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
-b Fb(53)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15
+b Fb(57)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15
b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)20 b Fb(53)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)20 b Fb(57)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)31 b Fb(45)150 3151 y Fe(command)22
+g(:)g(:)g(:)g(:)g(:)31 b Fb(49)150 3151 y Fe(command)22
b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)35 b Fb(53)150 3238 y Fe(compgen)18
+h(:)f(:)g(:)g(:)g(:)35 b Fb(57)150 3238 y Fe(compgen)18
b Fc(:)d(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)33 b Fb(139)150 3326 y Fe(complete)16
+(:)h(:)f(:)g(:)33 b Fb(146)150 3326 y Fe(complete)16
b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)31 b Fb(140)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:)
+(:)g(:)g(:)31 b Fb(146)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33
-b Fb(143)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(149)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b
-Fb(45)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13
+Fb(49)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13
b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)35 b Fb(53)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)25 b Fb(97)150 4033 y Fe(disown)d Fc(:)13
-b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)36 b Fb(110)146 4274 y Fs(E)150 4391 y Fe(echo)11
-b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(55)150 4478
-y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(56)150
-4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(45)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+g(:)g(:)g(:)35 b Fb(58)150 3946 y Fe(dirs)9 b Fc(:)14
+b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(102)150 4033 y Fe(disown)e
+Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)36 b Fb(116)146 4274 y Fs(E)150 4391
+y Fe(echo)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b
+Fb(59)150 4478 y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20
+b Fb(60)150 4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
+b Fb(49)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(46)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(50)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(46)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g
+b Fb(50)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20
-b Fb(46)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
+b Fb(50)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)29 b Fb(147)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)29 b Fb(153)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)29 b Fb(108)2021 871 y Fs(G)2025 988 y Fe(getopts)22
+g(:)g(:)g(:)29 b Fb(114)2021 871 y Fs(G)2025 988 y Fe(getopts)22
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)35 b Fb(46)2021 1250 y Fs(H)2025
+g(:)g(:)h(:)f(:)g(:)35 b Fb(50)2021 1250 y Fs(H)2025
1369 y Fe(hash)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(47)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+b Fb(51)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(56)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(61)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b
-Fb(147)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14
+Fb(153)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14
b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(108)2021 2186 y Fs(K)2025
+g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(114)2021 2186 y Fs(K)2025
2303 y Fe(kill)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
-b Fb(109)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:)
+b Fb(115)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)28 b Fb(56)2025 2760 y Fe(local)9 b Fc(:)14
+g(:)g(:)h(:)f(:)28 b Fb(61)2025 2760 y Fe(local)9 b Fc(:)14
b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(57)2025 2848 y Fe(logout)6
+g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(61)2025 2848 y Fe(logout)6
b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(57)2021 3110 y Fs(M)2025
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(61)2021 3110 y Fs(M)2025
3227 y Fe(mapfile)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(57)2021
-3489 y Fs(P)2025 3608 y Fe(popd)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(98)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(58)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(98)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(61)2021
+3489 y Fs(P)2025 3608 y Fe(popd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
+b Fb(103)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
+b Fb(62)2025 3784 y Fe(pushd)6 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)21
+b Fb(103)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28
-b Fb(47)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:)
+b Fb(51)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)26 b Fb(58)2025 4339 y Fe(readarray)15 b
+g(:)g(:)g(:)26 b Fb(63)2025 4339 y Fe(readarray)15 b
Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)30 b Fb(60)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g
+g(:)g(:)30 b Fb(64)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
-b Fb(47)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(52)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(48)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g
+b Fb(52)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)28 b Fb(62)2025 4972 y Fe(shift)9 b Fc(:)14
+(:)g(:)h(:)f(:)28 b Fb(67)2025 4972 y Fe(shift)9 b Fc(:)14
b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(48)2025 5060 y Fe(shopt)9
+g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(52)2025 5060 y Fe(shopt)9
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(66)2025 5148
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(71)2025 5148
y Fe(source)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(60)2025
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(64)2025
5235 y Fe(suspend)d Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(110)p eop end
-%%Page: 176 182
-TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(176)146 294 y Fs(T)150 410 y Fe(test)11
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(116)p eop end
+%%Page: 183 189
+TeXDict begin 183 188 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(183)146 294 y Fs(T)150 410 y Fe(test)11
b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(48)150 497
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(52)150 497
y Fe(times)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)150
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(54)150
584 y Fe(trap)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(50)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(54)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(60)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+b Fb(64)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
-b Fb(61)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15
+b Fb(65)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15
b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)20 b Fb(61)150 1206 y Fe(umask)9
+g(:)g(:)g(:)h(:)f(:)20 b Fb(65)150 1206 y Fe(umask)9
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)150 1293 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(55)150 1293 y
Fe(unalias)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(62)150 1380 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(66)150 1380 y
Fe(unset)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)2021
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(55)2021
294 y Fs(W)2025 433 y Fe(wait)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
-b Fb(109)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h
-(W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)21 b Fc(:)13
-b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)146
+b Fb(115)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h
+(W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)19 b Fc(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(10)146
3056 y Fs([)150 3172 y Fe([[)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)31 b Fb(13)146 3414 y Fs(])150 3530 y Fe(]])16 b
+g(:)31 b Fb(14)146 3414 y Fs(])150 3530 y Fe(]])16 b
Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(13)146
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(14)146
3770 y Fa({)150 3886 y Fe({)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)33 b Fb(15)146 4125 y Fa(})150 4241 y Fe(})19
+(:)g(:)g(:)33 b Fb(17)146 4125 y Fa(})150 4241 y Fe(})19
b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b
-Fb(15)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)
+Fb(17)146 4475 y Fs(C)150 4591 y Fe(case)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)25 b Fb(11)146 4825 y Fs(D)150 4941 y Fe(do)16
+g(:)h(:)25 b Fb(13)146 4825 y Fs(D)150 4941 y Fe(do)16
b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(10)150
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(11)150
5028 y Fe(done)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(10)146 5261 y Fs(E)150 5377 y Fe(elif)11 b Fc(:)j(:)f(:)g(:)h(:)f
+b Fb(11)146 5261 y Fs(E)150 5377 y Fe(elif)11 b Fc(:)j(:)f(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)25 b Fb(11)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)
+(:)g(:)h(:)25 b Fb(12)150 5465 y Fe(else)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)25 b Fb(11)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g
+g(:)h(:)25 b Fb(12)150 5552 y Fe(esac)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)25 b Fb(11)2021 2703 y Fs(F)2025 2836 y Fe(fi)16
+(:)h(:)25 b Fb(13)2021 2703 y Fs(F)2025 2836 y Fe(fi)16
b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2025
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)31 b Fb(12)2025
2928 y Fe(for)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28
-b Fb(10)2025 3015 y Fe(function)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
+b Fb(12)2025 3015 y Fe(function)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b
-Fb(18)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)
+Fb(19)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)31 b Fb(11)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)31 b Fb(12)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)31 b Fb(11)2021 3921 y Fs(S)2025
+f(:)g(:)g(:)g(:)g(:)31 b Fb(13)2021 3921 y Fs(S)2025
4048 y Fe(select)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b
-Fb(12)2021 4392 y Fs(T)2025 4524 y Fe(then)11 b Fc(:)j(:)f(:)g(:)g(:)g
+Fb(13)2021 4392 y Fs(T)2025 4524 y Fe(then)11 b Fc(:)j(:)f(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)26 b Fb(11)2025 4611 y Fe(time)13 b Fc(:)h(:)f(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)28 b Fb(8)2021 4954 y Fs(U)2025 5081 y
-Fe(until)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)2021
-5425 y Fs(W)2025 5552 y Fe(while)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(10)p eop end
-%%Page: 177 183
-TeXDict begin 177 182 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(177)150 299 y Fs(D.3)68 b(P)l(arameter)47
-b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1073
+(:)g(:)g(:)26 b Fb(12)2025 4611 y Fe(time)11 b Fc(:)j(:)f(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)26 b Fb(10)2021 4954 y Fs(U)2025 5081 y Fe(until)9
+b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(11)2021 5425
+y Fs(W)2025 5552 y Fe(while)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
+b Fb(12)p eop end
+%%Page: 184 190
+TeXDict begin 184 189 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(184)150 299 y Fs(D.3)68 b(P)l(arameter)47
+b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1072
y Fe(!)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
-b Fb(22)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13
+b Fb(24)146 1314 y Fs(#)150 1431 y Fe(#)19 b Fc(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(22)146
-1701 y Fs($)150 1820 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(23)146
+1676 y Fs($)150 1794 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)33 b Fb(22)150 1909 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)33 b Fb(23)150 1881 y Fe($!)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)31 b Fb(22)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)31 b Fb(24)150 1969 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)31 b Fb(23)150 2057 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2173 y Fe($*)16
+(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(23)150 2144 y Fe($*)16
b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150
-2261 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(23)150
+2232 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31
-b Fb(22)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+b Fb(23)150 2320 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-31 b Fb(22)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+31 b Fb(23)150 2407 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)31 b Fb(22)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f
+(:)31 b Fb(23)150 2495 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)31 b Fb(73)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h
+(:)g(:)31 b Fb(78)150 2582 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)31 b Fb(22)146 2876 y Fs(*)150 2994 y Fe(*)19
+(:)g(:)g(:)31 b Fb(24)146 2834 y Fs(*)150 2950 y Fe(*)19
b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b
-Fb(22)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)
+Fb(23)146 3193 y Fs({)150 3310 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)33 b Fb(22)146 3620 y Fs(?)150 3738
+g(:)h(:)f(:)g(:)g(:)33 b Fb(23)146 3553 y Fs(?)150 3670
y Fe(?)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
-b Fb(22)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13
+b Fb(23)146 3912 y Fs(@)150 4029 y Fe(@)19 b Fc(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(22)p
-156 4364 41 6 v 150 4482 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(23)p
+156 4272 41 6 v 150 4389 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)33 b Fb(73)146 4736 y Fs(0)150 4854 y
+(:)f(:)g(:)g(:)33 b Fb(78)146 4631 y Fs(0)150 4748 y
Fe(0)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
-b Fb(22)146 5108 y Fs(A)150 5226 y Fe(auto_resume)8 b
+b Fb(24)146 4991 y Fs(A)150 5108 y Fe(active-region-end-color)12
+b Fc(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)26 b Fb(121)150 5196 y Fe(active-region-start-color)
+7 b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)21 b Fb(121)150 5283 y Fe(auto_resume)8 b
Fc(:)16 b(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-23 b Fb(110)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b
+23 b Fb(116)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b
Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(74)2025 1163
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(79)2025 1163
y Fe(BASH_ALIASES)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 1251 y Fe(BASH_ARGC)15
+g(:)g(:)g(:)g(:)h(:)22 b Fb(79)2025 1251 y Fe(BASH_ARGC)15
b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)30 b Fb(74)2025 1340 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g
+(:)g(:)g(:)30 b Fb(79)2025 1340 y Fe(BASH_ARGV)15 b Fc(:)g(:)f(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(74)2025 1429 y Fe(BASH_ARGV0)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
+b Fb(79)2025 1429 y Fe(BASH_ARGV0)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(75)2025
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(80)2025
1517 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(75)2025 1606
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(80)2025 1606
y Fe(BASH_COMMAND)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)22 b Fb(75)2025 1695 y Fe(BASH_COMPAT)10
+g(:)g(:)g(:)g(:)h(:)22 b Fb(80)2025 1695 y Fe(BASH_COMPAT)10
b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(75)2025 1783 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g
+g(:)25 b Fb(80)2025 1783 y Fe(BASH_ENV)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
-b Fb(75)2025 1872 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13
+b Fb(80)2025 1872 y Fe(BASH_EXECUTION_STRING)24 b Fc(:)13
b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)34 b Fb(75)2025 1960 y Fe(BASH_LINENO)10
+(:)g(:)g(:)g(:)g(:)34 b Fb(80)2025 1960 y Fe(BASH_LINENO)10
b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(75)2025 2049 y Fe(BASH_LOADABLES_PATH)7 b
+g(:)25 b Fb(80)2025 2049 y Fe(BASH_LOADABLES_PATH)7 b
Fc(:)17 b(:)c(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(76)2025
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(81)2025
2138 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(76)2025 2226 y Fe(BASH_SOURCE)10
+(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(81)2025 2226 y Fe(BASH_SOURCE)10
b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(76)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13
+g(:)25 b Fb(81)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(76)2025 2403 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g
+b Fb(81)2025 2403 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(76)2025 2492
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(81)2025 2492
y Fe(BASH_VERSION)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)22 b Fb(76)2025 2581 y Fe(BASH_XTRACEFD)j
+g(:)g(:)g(:)g(:)h(:)22 b Fb(81)2025 2581 y Fe(BASH_XTRACEFD)j
Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(76)2025 2669 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
+b Fb(81)2025 2669 y Fe(BASHOPTS)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b
-Fb(74)2025 2758 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+Fb(79)2025 2758 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(74)2025 2847 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f
+b Fb(79)2025 2847 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(115)2025
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(121)2025
2935 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29
-b Fb(115)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13
+b Fb(121)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)34 b Fb(115)2021 3297 y Fs(C)2025
+(:)g(:)g(:)g(:)h(:)34 b Fb(122)2021 3297 y Fs(C)2025
3417 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b
-Fb(73)2025 3506 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
+Fb(78)2025 3506 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(77)2025
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(82)2025
3595 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13
b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(115)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(122)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(115)2025 3772 y Fe(COLUMNS)22
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(122)2025 3772 y Fe(COLUMNS)22
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)35 b Fb(77)2025 3860 y Fe(comment-begin)23
+g(:)g(:)h(:)f(:)g(:)35 b Fb(82)2025 3860 y Fe(comment-begin)23
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(115)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
+b Fb(122)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(77)2025
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(82)2025
4038 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(77)2025 4126
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(82)2025 4126
y Fe(COMP_LINE)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(77)2025 4215 y Fe(COMP_POINT)13
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(82)2025 4215 y Fe(COMP_POINT)13
b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)27 b Fb(77)2025 4303 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g
+(:)h(:)27 b Fb(82)2025 4303 y Fe(COMP_TYPE)15 b Fc(:)g(:)f(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(77)2025 4392 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g
+b Fb(82)2025 4392 y Fe(COMP_WORDBREAKS)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(77)2025 4481 y Fe(COMP_WORDS)13
+h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(82)2025 4481 y Fe(COMP_WORDS)13
b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)27 b Fb(77)2025 4569 y Fe(completion-display-width)9
+(:)h(:)27 b Fb(82)2025 4569 y Fe(completion-display-width)9
b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)24 b Fb(115)2025 4658 y Fe(completion-ignore-case)14
+(:)h(:)f(:)g(:)24 b Fb(122)2025 4658 y Fe(completion-ignore-case)14
b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)29 b Fb(116)2025 4747 y Fe(completion-map-case)d
+(:)g(:)g(:)h(:)f(:)29 b Fb(122)2025 4747 y Fe(completion-map-case)d
Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(116)2025 4835
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(122)2025 4835
y Fe(completion-prefix-display-leng)q(th)29 b Fc(:)13
-b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(116)2025 4924
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(122)2025 4924
y Fe(completion-query-items)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29
-b Fb(116)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g
+b Fb(122)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b
-Fb(78)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
+Fb(83)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(116)2025 5188
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(123)2025 5188
y Fe(COPROC)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(78)p
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(83)p
eop end
-%%Page: 178 184
-TeXDict begin 178 183 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(178)146 294 y Fs(D)150 416 y Fe(DIRSTACK)18
+%%Page: 185 191
+TeXDict begin 185 190 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(185)146 294 y Fs(D)150 415 y Fe(DIRSTACK)18
b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)32 b Fb(78)150 503 y Fe(disable-completion)7
+(:)g(:)h(:)f(:)32 b Fb(83)150 502 y Fe(disable-completion)7
b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(116)146
-791 y Fs(E)150 913 y Fe(echo-control-characters)12 b
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(123)146
+782 y Fs(E)150 903 y Fe(echo-control-characters)12 b
Fc(:)18 b(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)26 b Fb(116)150 1002 y Fe(editing-mode)f
+g(:)g(:)g(:)h(:)26 b Fb(123)150 991 y Fe(editing-mode)f
Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37
-b Fb(116)150 1092 y Fe(emacs-mode-string)10 b Fc(:)17
+b Fb(123)150 1080 y Fe(emacs-mode-string)10 b Fc(:)17
b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(117)150 1181
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(123)150 1169
y Fe(EMACS)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(78)150
-1270 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
-b Fb(117)150 1359 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150
+1258 y Fe(enable-active-region)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34
+b Fb(123)150 1347 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
+b Fb(124)150 1436 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(117)150 1449 y Fe(ENV)14
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(124)150 1525 y Fe(ENV)14
b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(78)150
-1538 y Fe(EPOCHREALTIME)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(83)150
+1613 y Fe(EPOCHREALTIME)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)37 b Fb(78)150 1627 y Fe(EPOCHSECONDS)8
+g(:)g(:)g(:)g(:)37 b Fb(83)150 1702 y Fe(EPOCHSECONDS)8
b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-22 b Fb(78)150 1716 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g
+22 b Fb(83)150 1791 y Fe(EUID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(78)150 1806 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)
+b Fb(83)150 1880 y Fe(EXECIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(78)150
-1893 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(83)150
+1967 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)37 b Fb(117)146 2180 y Fs(F)150 2303
+g(:)g(:)g(:)h(:)37 b Fb(124)146 2247 y Fs(F)150 2368
y Fe(FCEDIT)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(79)150
-2392 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(84)150
+2457 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(79)150
-2481 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(84)150
+2545 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)150 2568
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(84)150 2633
y Fe(FUNCNEST)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)146 2844 y
-Fs(G)150 2967 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(84)146 2901 y
+Fs(G)150 3022 y Fe(GLOBIGNORE)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(79)150
-3054 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(84)150
+3109 y Fe(GROUPS)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b
-Fb(79)146 3330 y Fs(H)150 3452 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g
+Fb(84)146 3377 y Fs(H)150 3498 y Fe(histchars)15 b Fc(:)h(:)d(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30
-b Fb(79)150 3542 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)
+b Fb(84)150 3587 y Fe(HISTCMD)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
-b Fb(79)150 3631 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:)
+b Fb(84)150 3676 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(80)150
-3720 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(85)150
+3765 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 3809
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(85)150 3854
y Fe(HISTFILESIZE)8 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)22 b Fb(80)150 3899 y Fe(HISTIGNORE)13
+g(:)g(:)h(:)f(:)g(:)22 b Fb(85)150 3942 y Fe(HISTIGNORE)13
b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)27 b Fb(80)150 3988 y Fe(history-preserve-point)14
+(:)g(:)27 b Fb(85)150 4031 y Fe(history-preserve-point)14
b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)29 b Fb(117)150 4077 y Fe(history-size)c
+h(:)f(:)g(:)g(:)29 b Fb(124)150 4120 y Fe(history-size)c
Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37
-b Fb(117)150 4166 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(124)150 4209 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b
-Fb(80)150 4256 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+Fb(85)150 4298 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(80)150 4345 y Fe(HOME)11
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(85)150 4387 y Fe(HOME)11
b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(73)150 4434
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(78)150 4475
y Fe(horizontal-scroll-mode)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(117)150
-4523 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(124)150
+4564 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)150 4613
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(86)150 4653
y Fe(HOSTNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)150 4700 y
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(86)150 4740 y
Fe(HOSTTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)2021 294 y Fs(I)2025
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(86)2021 294 y Fs(I)2025
420 y Fe(IFS)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28
-b Fb(73)2025 510 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
+b Fb(78)2025 510 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(81)2025
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(86)2025
600 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(118)2025 691 y Fe(INPUTRC)c
+h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(124)2025 691 y Fe(INPUTRC)c
Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)35 b Fb(81)2025 781 y Fe(INSIDE_EMACS)8
+g(:)g(:)h(:)f(:)g(:)35 b Fb(86)2025 781 y Fe(INSIDE_EMACS)8
b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-22 b Fb(81)2025 868 y Fe(isearch-terminators)k Fc(:)13
+22 b Fb(86)2025 868 y Fe(isearch-terminators)k Fc(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(118)2021 1167 y Fs(K)2025
+(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(125)2021 1167 y Fs(K)2025
1290 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(118)2021
-1601 y Fs(L)2025 1727 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(81)2025 1817 y Fe(LC_ALL)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(81)2025 1907 y Fe(LC_COLLATE)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(125)2021
+1601 y Fs(L)2025 1727 y Fe(LANG)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35
+b Fb(8,)26 b(86)2025 1817 y Fe(LC_ALL)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
+b Fb(86)2025 1907 y Fe(LC_COLLATE)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(81)2025
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(86)2025
1998 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(81)2025 2088
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(86)2025 2088
y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)34 b Fb(7,)26 b(81)2025 2178 y Fe(LC_NUMERIC)13
+g(:)g(:)g(:)34 b Fb(8,)26 b(86)2025 2178 y Fe(LC_NUMERIC)13
b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)27 b Fb(82)2025 2269 y Fe(LC_TIME)22 b Fc(:)13
+(:)h(:)27 b Fb(87)2025 2269 y Fe(LC_TIME)22 b Fc(:)13
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)35 b Fb(82)2025 2359 y Fe(LINENO)6 b Fc(:)14
+h(:)f(:)g(:)35 b Fb(87)2025 2359 y Fe(LINENO)6 b Fc(:)14
b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 2446 y Fe(LINES)9
+g(:)g(:)g(:)g(:)g(:)21 b Fb(87)2025 2446 y Fe(LINES)9
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(82)2021 2746
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(87)2021 2746
y Fs(M)2025 2872 y Fe(MACHTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b
-Fb(82)2025 2962 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+Fb(87)2025 2962 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(73)2025 3052 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)
+b Fb(78)2025 3052 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(82)2025
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(87)2025
3143 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(73)2025 3233
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(78)2025 3233
y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(82)2025 3323
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(87)2025 3323
y Fe(mark-modified-lines)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(118)2025 3414 y Fe(mark-symlinked-directories)27
+b Fb(125)2025 3414 y Fe(mark-symlinked-directories)27
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-36 b Fb(119)2025 3504 y Fe(match-hidden-files)7 b Fc(:)17
+36 b Fb(125)2025 3504 y Fe(match-hidden-files)7 b Fc(:)17
b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(119)2025 3594
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(125)2025 3594
y Fe(menu-complete-display-prefix)17 b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(119)2025 3681 y Fe(meta-flag)13
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(126)2025 3681 y Fe(meta-flag)13
b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)28 b Fb(118)2021 3992 y Fs(O)2025 4118 y Fe(OLDPWD)6
+(:)f(:)28 b Fb(124)2021 3992 y Fs(O)2025 4118 y Fe(OLDPWD)6
b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4208 y Fe(OPTARG)6
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(87)2025 4208 y Fe(OPTARG)6
b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4299 y Fe(OPTERR)6
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(78)2025 4299 y Fe(OPTERR)6
b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4389 y Fe(OPTIND)6
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(87)2025 4389 y Fe(OPTIND)6
b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(73)2025 4480 y Fe(OSTYPE)6
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(78)2025 4480 y Fe(OSTYPE)6
b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4567 y Fe(output-meta)8
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(87)2025 4567 y Fe(output-meta)8
b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-23 b Fb(119)p eop end
-%%Page: 179 185
-TeXDict begin 179 184 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(179)146 294 y Fs(P)150 410 y Fe(page-completions)
+23 b Fb(126)p eop end
+%%Page: 186 192
+TeXDict begin 186 191 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(186)146 294 y Fs(P)150 410 y Fe(page-completions)
13 b Fc(:)j(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(119)150
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(126)150
497 y Fe(PATH)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(73)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(78)150 584 y Fe(PIPESTATUS)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(82)150
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(87)150
671 y Fe(POSIXLY_CORRECT)17 b Fc(:)g(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)32 b Fb(82)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g
+(:)g(:)g(:)32 b Fb(87)150 758 y Fe(PPID)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)25 b Fb(82)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13
+(:)h(:)25 b Fb(87)150 846 y Fe(PROMPT_COMMAND)e Fc(:)13
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
-b Fb(82)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(87)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(83)150 1020 y Fe(PS0)14
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(88)150 1020 y Fe(PS0)14
b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(83)150
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(88)150
1107 y Fe(PS1)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(73)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(78)150 1194 y Fe(PS2)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(73)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(78)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(83)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(88)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(83)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(88)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
-b Fb(83)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15
+b Fb(88)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15
b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)20 b Fb(83)150 1892 y Fe(READLINE_LINE)25
+g(:)g(:)g(:)h(:)f(:)20 b Fb(88)150 1892 y Fe(READLINE_ARGUMENT)12
+b Fc(:)17 b(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(88)150
+1979 y Fe(READLINE_LINE)f Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)37 b Fb(88)150 2066 y Fe(READLINE_MARK)25
b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
-b Fb(83)150 1979 y Fe(READLINE_MARK)25 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g
+b Fb(88)150 2153 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(88)150 2240 y Fe(REPLY)9
+b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(88)150 2327 y
+Fe(revert-all-at-newline)17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32
+b Fb(126)146 2560 y Fs(S)150 2676 y Fe(SECONDS)22 b Fc(:)13
+b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)35 b Fb(88)150 2763 y Fe(SHELL)9 b Fc(:)14
+b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(83)150 2066 y
-Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)34 b Fb(83)150 2153 y Fe(REPLY)9 b Fc(:)14
+g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(88)150 2851 y Fe(SHELLOPTS)15
+b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)30 b Fb(89)150 2938 y Fe(SHLVL)9 b Fc(:)14
b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2240 y Fe(revert-all-at-newline)
+g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(89)150 3025 y Fe(show-all-if-ambiguous)
17 b Fc(:)h(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(119)146 2473 y Fs(S)150
-2589 y Fe(SECONDS)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(83)150
-2676 y Fe(SHELL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
-b Fb(83)150 2763 y Fe(SHELLOPTS)15 b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30 b Fb(83)150
-2851 y Fe(SHLVL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
-b Fb(84)150 2938 y Fe(show-all-if-ambiguous)17 b Fc(:)h(:)13
-b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)32 b Fb(119)150 3025 y Fe(show-all-if-unmodified)14
-b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)29 b Fb(119)150 3112 y Fe(show-mode-in-prompt)d
-Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(120)2025 260 y
-Fe(skip-completed-text)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(120)2025 347 y Fe(SRANDOM)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(84)2021 669 y Fs(T)2025 798 y Fe(TEXTDOMAIN)15 b
-Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)30 b Fb(7)2025 889 y Fe(TEXTDOMAINDIR)7 b Fc(:)16
-b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23
-b Fb(7)2025 981 y Fe(TIMEFORMAT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g
+(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(126)150 3112 y Fe
+(show-all-if-unmodified)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(126)150
+3199 y Fe(show-mode-in-prompt)d Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
+b Fb(126)2025 260 y Fe(skip-completed-text)26 b Fc(:)13
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(127)2025 347 y Fe(SRANDOM)22
+b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(84)2025
-1072 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+g(:)g(:)h(:)f(:)g(:)35 b Fb(89)2021 673 y Fs(T)2025 803
+y Fe(TEXTDOMAIN)15 b Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(8)2025 895 y Fe(TEXTDOMAINDIR)7
+b Fc(:)16 b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+23 b Fb(8)2025 986 y Fe(TIMEFORMAT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(89)2025
+1078 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(84)2025 1159 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(89)2025 1165 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(85)2021 1481 y Fs(U)2025 1606 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g
+b Fb(90)2021 1492 y Fs(U)2025 1617 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)28 b Fb(85)2021 1928 y Fs(V)2025 2057
+(:)g(:)h(:)f(:)28 b Fb(90)2021 1943 y Fs(V)2025 2073
y Fe(vi-cmd-mode-string)7 b Fc(:)17 b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22
-b Fb(120)2025 2148 y Fe(vi-ins-mode-string)7 b Fc(:)17
+b Fb(127)2025 2165 y Fe(vi-ins-mode-string)7 b Fc(:)17
b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(120)2025 2235
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(127)2025 2252
y Fe(visible-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)35 b Fb(120)150 3751 y Fs(D.4)68 b(F)-11 b(unction)44
-b(Index)146 4237 y(A)150 4354 y Fe(abort)27 b(\(C-g\))15
+f(:)g(:)35 b Fb(127)150 3845 y Fs(D.4)68 b(F)-11 b(unction)44
+b(Index)146 4330 y(A)150 4447 y Fe(abort)27 b(\(C-g\))15
b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)30
-b Fb(135)150 4442 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12
+b Fb(141)150 4535 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12
b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)27
-b Fb(128)150 4529 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14
+b Fb(134)150 4622 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14
b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(137)146 4784 y Fs(B)150
-4902 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)
+(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(143)146 4873 y Fs(B)150
+4990 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)26 b Fb(127)150 4989 y Fe(backward-delete-char)k(\(Rubout\))22
+(:)26 b Fb(133)150 5077 y Fe(backward-delete-char)k(\(Rubout\))22
b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35
-b Fb(130)150 5077 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e
+b Fb(136)150 5165 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e
Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b
-Fb(131)150 5165 y Fe(backward-kill-word)30 b(\(M-DEL\))11
+Fb(137)150 5252 y Fe(backward-kill-word)30 b(\(M-DEL\))11
b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-26 b Fb(131)150 5252 y Fe(backward-word)j(\(M-b\))12
+26 b Fb(137)150 5340 y Fe(backward-word)j(\(M-b\))12
b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(127)150 5340
-y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(128)2025
-4206 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(133)2025 4300
+y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(134)2025
+4389 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(127)2025 4294 y Fe(bracketed-paste-begin)c(\(\))16
+b Fb(133)2025 4477 y Fe(bracketed-paste-begin)c(\(\))16
b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)31 b Fb(130)2021 4589 y Fs(C)2025 4713 y Fe
+g(:)g(:)31 b Fb(136)2021 4769 y Fs(C)2025 4893 y Fe
(call-last-kbd-macro)f(\(C-x)c(e\))15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(134)2025 4802
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(141)2025 4982
y Fe(capitalize-word)f(\(M-c\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(131)2025 4892 y Fe(character-search)29 b(\(C-]\))22
+b Fb(137)2025 5072 y Fe(character-search)29 b(\(C-]\))22
b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)36 b Fb(135)2025 4982 y Fe
+(:)h(:)f(:)g(:)g(:)36 b Fb(141)2025 5161 y Fe
(character-search-backward)31 b(\(M-C-]\))10 b Fc(:)15
-b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(135)2025 5071
+b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(141)2025 5250
y Fe(clear-display)j(\(M-C-l\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(128)2025 5161 y Fe(clear-screen)28 b(\(C-l\))14
+b Fb(134)2025 5340 y Fe(clear-screen)28 b(\(C-l\))14
b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(128)2025
-5250 y Fe(complete)e(\(TAB\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)22 b Fb(133)2025 5340 y Fe(complete-command)29
-b(\(M-!\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(134)p eop end
-%%Page: 180 186
-TeXDict begin 180 185 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(180)150 264 y Fe(complete-filename)29
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(134)p eop
+end
+%%Page: 187 193
+TeXDict begin 187 192 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(187)150 264 y Fe(complete)27 b(\(TAB\))7
+b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
+b Fb(139)150 352 y Fe(complete-command)29 b(\(M-!\))23
+b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)36 b Fb(140)150 440 y Fe(complete-filename)29
b(\(M-/\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(133)150 353 y Fe(complete-hostname)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(139)150 528 y Fe(complete-hostname)
c(\(M-@\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(134)150 442 y Fe
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(140)150 616 y Fe
(complete-into-braces)d(\(M-{\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(134)150 531
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(140)150 704
y Fe(complete-username)j(\(M-~\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
-b Fb(133)150 621 y Fe(complete-variable)c(\(M-$\))20
+b Fb(140)150 792 y Fe(complete-variable)c(\(M-$\))20
b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)33 b Fb(134)150 710 y Fe(copy-backward-word)d(\(\))7
+(:)g(:)h(:)f(:)33 b Fb(140)150 880 y Fe(copy-backward-word)d(\(\))7
b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(132)150 799 y Fe(copy-forward-word)
+(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(138)150 968 y Fe(copy-forward-word)
29 b(\(\))9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(132)150
-887 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
-b Fb(132)146 1175 y Fs(D)150 1298 y Fe(dabbrev-expand)29
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(138)150
+1056 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13
+b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)36 b Fb(138)146 1320 y Fs(D)150 1438 y Fe(dabbrev-expand)29
b(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(134)150 1387 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:)
+b Fb(140)150 1527 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)32 b Fb(130)150 1476 y Fe(delete-char-or-list)e
+(:)g(:)g(:)g(:)g(:)32 b Fb(136)150 1615 y Fe(delete-char-or-list)e
(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(133)150 1566 y Fe
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(139)150 1703 y Fe
(delete-horizontal-space)31 b(\(\))11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(132)150
-1655 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(138)150
+1791 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p
Fe(,)f(...)g Fd(M--)p Fe(\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)
-26 b Fb(132)150 1744 y Fe(display-shell-version)k(\(C-x)d(C-v\))c
+26 b Fb(138)150 1879 y Fe(display-shell-version)k(\(C-x)d(C-v\))c
Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b
-Fb(136)150 1825 y Fe(do-lowercase-version)30 b(\(M-A,)227
-1912 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g
+Fb(143)150 1958 y Fe(do-lowercase-version)30 b(\(M-A,)227
+2046 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)25 b Fb(135)150 2001 y Fe(downcase-word)k(\(M-l\))
+g(:)g(:)g(:)g(:)g(:)25 b Fb(141)150 2134 y Fe(downcase-word)k(\(M-l\))
12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(131)150 2090
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(137)150 2222
y Fe(dump-functions)j(\(\))17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-32 b Fb(136)150 2180 y Fe(dump-macros)c(\(\))7 b Fc(:)14
+32 b Fb(142)150 2310 y Fe(dump-macros)c(\(\))7 b Fc(:)14
b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(136)150 2269 y Fe(dump-variables)29 b(\(\))17 b
+b Fb(142)150 2398 y Fe(dump-variables)29 b(\(\))17 b
Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(136)150
-2356 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(134)146 2645 y Fs(E)150
-2767 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14
-b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(137)150 2857
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(142)150
+2485 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(140)146 2749 y Fs(E)150
+2868 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14
+b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(143)150 2956
y Fe(end-kbd-macro)g(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28
-b Fb(134)150 2946 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21
+b Fb(140)150 3044 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21
b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)35 b Fb(130)150 3035 y Fe(end-of-history)29 b(\(M->\))9
+(:)g(:)35 b Fb(136)150 3132 y Fe(end-of-history)29 b(\(M->\))9
b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(128)150 3124 y
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(134)150 3220 y
Fe(end-of-line)k(\(C-e\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(127)150 3212 y Fe(exchange-point-and-mark)f(\(C-x)26
+b Fb(133)150 3308 y Fe(exchange-point-and-mark)f(\(C-x)26
b(C-x\))17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(135)146 3500 y Fs(F)150 3623 y Fe(forward-backward-delete-char)g
-(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(130)150 3712 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)29 b Fb(127)150 3801 y Fe(forward-search-history)i
-(\(C-s\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)38 b Fb(128)150 3889 y Fe(forward-word)28 b(\(M-f\))14
-b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(127)146 4167
-y Fs(G)150 4289 y Fe(glob-complete-word)h(\(M-g\))16
+b Fb(141)146 3571 y Fs(F)150 3690 y Fe(fetch-history)d(\(\))19
+b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(136)150
+3778 y Fe(forward-backward-delete-char)e(\(\))15 b Fc(:)f(:)f(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(136)150 3867 y Fe(forward-char)e
+(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b
+Fb(133)150 3955 y Fe(forward-search-history)i(\(C-s\))24
+b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38
+b Fb(134)150 4042 y Fe(forward-word)28 b(\(M-f\))14 b
+Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(133)146 4295
+y Fs(G)150 4414 y Fe(glob-complete-word)h(\(M-g\))16
b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)31 b Fb(136)150 4379 y Fe(glob-expand-word)e(\(C-x)e(*\))c
+g(:)g(:)31 b Fb(142)150 4502 y Fe(glob-expand-word)e(\(C-x)e(*\))c
Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)38 b Fb(136)150 4466 y Fe(glob-list-expansions)30
+(:)g(:)g(:)38 b Fb(142)150 4590 y Fe(glob-list-expansions)30
b(\(C-x)d(g\))13 b Fc(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)27 b Fb(136)2021 294 y Fs(H)2025 422 y Fe
+(:)g(:)h(:)27 b Fb(142)2021 294 y Fs(H)2025 422 y Fe
(history-and-alias-expand-line)32 b(\(\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)28 b Fb(137)2025 513 y Fe(history-expand-line)i
+g(:)g(:)g(:)g(:)28 b Fb(143)2025 513 y Fe(history-expand-line)i
(\(M-^\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)28 b Fb(136)2025 604 y Fe(history-search-backward)j
+g(:)g(:)g(:)h(:)28 b Fb(143)2025 604 y Fe(history-search-backward)j
(\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)26 b Fb(129)2025 695 y Fe(history-search-forward)k(\(\))13
+(:)g(:)g(:)26 b Fb(135)2025 695 y Fe(history-search-forward)k(\(\))13
b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)28 b Fb(129)2025 786 y Fe(history-substring-search-backw)q(ard)k
-(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(129)2025 874
+h(:)28 b Fb(135)2025 786 y Fe(history-substring-search-backw)q(ard)k
+(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(135)2025 874
y Fe(history-substring-search-forwa)q(rd)d(\(\))22 b
-Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(129)2021 1200 y Fs(I)2025
+Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(135)2021 1200 y Fs(I)2025
1329 y Fe(insert-comment)29 b(\(M-#\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-24 b Fb(136)2025 1420 y Fe(insert-completions)29 b(\(M-*\))16
+24 b Fb(142)2025 1420 y Fe(insert-completions)29 b(\(M-*\))16
b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)31 b Fb(133)2025 1507 y Fe(insert-last-argument)f(\(M-.)c(or)g
+g(:)g(:)31 b Fb(139)2025 1507 y Fe(insert-last-argument)f(\(M-.)c(or)g
(M-_\))7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(137)2021 1834 y Fs(K)2025 1962 y Fe(kill-line)27
+b Fb(143)2021 1834 y Fs(K)2025 1962 y Fe(kill-line)27
b(\(C-k\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(131)2025 2053 y Fe(kill-region)28 b(\(\))7 b Fc(:)14
+b Fb(137)2025 2053 y Fe(kill-region)28 b(\(\))7 b Fc(:)14
b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
-b Fb(132)2025 2144 y Fe(kill-whole-line)29 b(\(\))14
+b Fb(138)2025 2144 y Fe(kill-whole-line)29 b(\(\))14
b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(131)2025
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(137)2025
2231 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)37 b Fb(131)2021 2548 y Fs(M)2025 2676 y
+g(:)g(:)g(:)37 b Fb(137)2021 2548 y Fs(M)2025 2676 y
Fe(magic-space)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)22 b Fb(137)2025 2767 y Fe(menu-complete)28
+g(:)g(:)h(:)f(:)22 b Fb(143)2025 2767 y Fe(menu-complete)28
b(\(\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34
-b Fb(133)2025 2854 y Fe(menu-complete-backward)c(\(\))13
+b Fb(139)2025 2854 y Fe(menu-complete-backward)c(\(\))13
b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)28 b Fb(133)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\))
+h(:)28 b Fb(139)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\))
14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(128)2025
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(134)2025
3401 y Fe(next-screen-line)g(\(\))12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-27 b Fb(128)2025 3472 y Fe(non-incremental-forward-)2102
+27 b Fb(134)2025 3472 y Fe(non-incremental-forward-)2102
3560 y(search-history)h(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(129)2025 3647 y Fe(non-incremental-reverse-)2102
+b Fb(135)2025 3647 y Fe(non-incremental-reverse-)2102
3734 y(search-history)28 b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(128)2021 4070 y Fs(O)2025 4198 y Fe(operate-and-get-next)30
+b Fb(134)2021 4070 y Fs(O)2025 4198 y Fe(operate-and-get-next)30
b(\(C-o\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)26 b Fb(129)2025 4285 y Fe(overwrite-mode)j(\(\))17
+(:)g(:)g(:)g(:)26 b Fb(135)2025 4285 y Fe(overwrite-mode)j(\(\))17
b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(131)p
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(137)p
eop end
-%%Page: 181 187
-TeXDict begin 181 186 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(181)146 294 y Fs(P)150 411 y Fe
+%%Page: 188 194
+TeXDict begin 188 193 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(188)146 294 y Fs(P)150 411 y Fe
(possible-command-completions)32 b(\(C-x)26 b(!\))9 b
-Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(134)150 499 y Fe
+Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(140)150 499 y Fe
(possible-completions)30 b(\(M-?\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(133)150
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(139)150
586 y Fe(possible-filename-completions)32 b(\(C-x)27
-b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(133)150 674
+b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(140)150 674
y Fe(possible-hostname-completions)32 b(\(C-x)27 b(@\))7
-b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(134)150 762 y Fe
+b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(140)150 762 y Fe
(possible-username-completions)32 b(\(C-x)27 b(~\))7
-b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(133)150 849 y Fe
+b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(140)150 849 y Fe
(possible-variable-completions)32 b(\(C-x)27 b($\))7
-b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(134)150 937 y Fe(prefix-meta)28
+b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(140)150 937 y Fe(prefix-meta)28
b(\(ESC\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(135)150 1025 y Fe(previous-history)d(\(C-p\))23
+b Fb(141)150 1025 y Fe(previous-history)d(\(C-p\))23
b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 1112 y Fe(previous-screen-line)30
+(:)f(:)g(:)g(:)g(:)36 b Fb(134)150 1112 y Fe(previous-screen-line)30
b(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(127)150 1199 y Fe
+(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(133)150 1200 y Fe
(print-last-kbd-macro)d(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(134)146
-1453 y Fs(Q)150 1570 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(141)146
+1454 y Fs(Q)150 1571 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)22 b Fb(130)146 1824 y Fs(R)150 1941 y Fe(re-read-init-file)29
+(:)g(:)22 b Fb(136)146 1825 y Fs(R)150 1943 y Fe(re-read-init-file)29
b(\(C-x)e(C-r\))15 b Fc(:)f(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)30 b Fb(135)150 2029 y Fe(redraw-current-line)g(\(\))22
+(:)g(:)g(:)g(:)30 b Fb(141)150 2030 y Fe(redraw-current-line)g(\(\))22
b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 2117 y Fe(reverse-search-history)31
+(:)f(:)g(:)g(:)g(:)36 b Fb(134)150 2118 y Fe(reverse-search-history)31
b(\(C-r\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)38 b Fb(128)150 2204 y Fe(revert-line)28 b(\(M-r\))17
+g(:)38 b Fb(134)150 2205 y Fe(revert-line)28 b(\(M-r\))17
b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(135)146
-2447 y Fs(S)150 2565 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(141)146
+2449 y Fs(S)150 2567 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f
(...\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27
-b Fb(130)150 2652 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15
+b Fb(136)150 2654 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15
b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22
-b Fb(135)150 2740 y Fe(shell-backward-kill-word)31 b(\(\))8
+b Fb(141)150 2742 y Fe(shell-backward-kill-word)31 b(\(\))8
b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-23 b Fb(131)150 2828 y Fe(shell-backward-word)30 b(\(M-C-b\))8
+23 b Fb(138)150 2830 y Fe(shell-backward-word)30 b(\(M-C-b\))8
b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-23 b Fb(127)150 2915 y Fe(shell-expand-line)29 b(\(M-C-e\))13
+23 b Fb(133)150 2917 y Fe(shell-expand-line)29 b(\(M-C-e\))13
b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)28 b Fb(136)150 3003 y Fe(shell-forward-word)i(\(M-C-f\))11
+g(:)28 b Fb(143)150 3005 y Fe(shell-forward-word)i(\(M-C-f\))11
b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-26 b Fb(127)150 3091 y Fe(shell-kill-word)j(\(M-C-d\))20
+26 b Fb(133)150 3093 y Fe(shell-kill-word)j(\(M-C-d\))20
b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)33 b Fb(131)150 3178 y Fe(shell-transpose-words)d
+(:)g(:)h(:)f(:)33 b Fb(138)150 3180 y Fe(shell-transpose-words)d
(\(M-C-t\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)35 b Fb(132)2025 264 y Fe(skip-csi-sequence)29 b(\(\))9
+(:)35 b Fb(138)2025 264 y Fe(skip-csi-sequence)29 b(\(\))9
b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(135)2025 351 y
-Fe(start-kbd-macro)29 b(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23
-b Fb(134)2021 819 y Fs(T)2025 970 y Fe(tilde-expand)28
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(141)2025 361 y
+Fe(spell-correct-word)29 b(\(C-x)e(s\))18 b Fc(:)13 b(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)33 b Fb(142)2025
+448 y Fe(start-kbd-macro)c(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23
+b Fb(140)2021 891 y Fs(T)2025 1038 y Fe(tilde-expand)28
b(\(M-&\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29
-b Fb(135)2025 1068 y Fe(transpose-chars)g(\(C-t\))7 b
+b Fb(141)2025 1135 y Fe(transpose-chars)g(\(C-t\))7 b
Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(130)2025 1155 y Fe(transpose-words)
+(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(136)2025 1222 y Fe(transpose-words)
29 b(\(M-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(130)2021
-1634 y Fs(U)2025 1784 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(137)2021
+1676 y Fs(U)2025 1823 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10
b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(135)2025 1883 y Fe
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(141)2025 1920 y Fe
(universal-argument)k(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(132)2025 1981 y Fe(unix-filename-rubout)30 b(\(\))19
+b Fb(139)2025 2017 y Fe(unix-filename-rubout)30 b(\(\))19
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)34 b Fb(132)2025 2080 y Fe(unix-line-discard)29
+(:)g(:)g(:)g(:)34 b Fb(138)2025 2114 y Fe(unix-line-discard)29
b(\(C-u\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(131)2025 2178 y Fe
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(137)2025 2211 y Fe
(unix-word-rubout)29 b(\(C-w\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
-b Fb(132)2025 2265 y Fe(upcase-word)28 b(\(M-u\))17 b
+b Fb(138)2025 2298 y Fe(upcase-word)28 b(\(M-u\))17 b
Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(131)2021
-2744 y Fs(Y)2025 2894 y Fe(yank)26 b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:)
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(137)2021
+2752 y Fs(Y)2025 2899 y Fe(yank)26 b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
-b Fb(132)2025 2993 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))8
+b Fb(138)2025 2996 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))8
b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)22 b Fb(129)2025 3091 y Fe(yank-nth-arg)28 b(\(M-C-y\))9
+(:)h(:)22 b Fb(135)2025 3093 y Fe(yank-nth-arg)28 b(\(M-C-y\))9
b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(129)2025 3178
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(135)2025 3180
y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)22 b Fb(132)150 3927 y Fs(D.5)68 b(Concept)45
-b(Index)146 4520 y(A)150 4646 y Fb(alias)27 b(expansion)7
-b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
-b Fb(94)150 4736 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13
+g(:)g(:)h(:)f(:)22 b Fb(138)150 3929 y Fs(D.5)68 b(Concept)45
+b(Index)146 4523 y(A)150 4648 y Fb(alias)27 b(expansion)22
+b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
+b Fb(100)150 4738 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13
b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(93)150 4826 y(arithmetic)26
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(98)150 4828 y(arithmetic)26
b(expansion)11 b Fc(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26
-b Fb(31)150 4917 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)
+b Fb(34)150 4919 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(93)150 5004
-y(arra)n(ys)h Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(95)2021
-4520 y Fs(B)2025 4644 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(98)150 5006
+y(arra)n(ys)f Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(100)2021
+4523 y Fs(B)2025 4646 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(107)2025
-4733 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(113)2025
+4735 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)26 b Fb(152)2025 4823 y(Bash)g(installation)9
+g(:)g(:)26 b Fb(158)2025 4825 y(Bash)g(installation)9
b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24
-b Fb(152)2025 4913 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(158)2025 4914 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35 b
-Fb(5)2025 5002 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)
+Fb(5)2025 5004 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(23)2025 5089 y(builtin)15
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(24)2025 5091 y(builtin)15
b Fc(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(3)p eop end
-%%Page: 182 188
-TeXDict begin 182 187 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(182)146 294 y Fs(C)150 415 y Fb(command)26
+%%Page: 189 195
+TeXDict begin 189 194 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(189)146 294 y Fs(C)150 415 y Fb(command)26
b(editing)19 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34
-b Fb(112)150 503 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g
+b Fb(118)150 503 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)26 b Fb(39)150 592 y(command)g(expansion)c
+g(:)h(:)f(:)g(:)g(:)26 b Fb(42)150 592 y(command)g(expansion)c
Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(39)150
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(42)150
681 y(command)26 b(history)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)33 b Fb(146)150 770 y(command)26 b(searc)n(h)16
+g(:)g(:)g(:)33 b Fb(152)150 770 y(command)26 b(searc)n(h)16
b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(39)150 859 y(command)c(substitution)21 b Fc(:)13
+b Fb(42)150 859 y(command)c(substitution)21 b Fc(:)13
b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(31)150 947 y(command)26
-b(timing)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)28 b Fb(8)150 1036 y(commands,)e(comp)r(ound)c Fc(:)13
+(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(34)150 947 y(command)26
+b(timing)11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)25
+b Fb(10)150 1036 y(commands,)h(comp)r(ound)c Fc(:)13
b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(10)150 1125 y(commands,)26
+(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(11)150 1125 y(commands,)26
b(conditional)10 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25
-b Fb(11)150 1214 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g
+b Fb(12)150 1214 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)29 b Fb(15)150 1302 y(commands,)d(lists)12
-b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27
-b Fb(9)150 1391 y(commands,)f(lo)r(oping)e Fc(:)13 b(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)37 b Fb(10)150 1480 y(commands,)26
-b(pip)r(elines)18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33
-b Fb(8)150 1569 y(commands,)26 b(shell)c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)150 1657 y(commands,)26
+g(:)g(:)g(:)29 b Fb(17)150 1302 y(commands,)d(lists)10
+b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)24
+b Fb(10)150 1391 y(commands,)i(lo)r(oping)e Fc(:)13 b(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)37 b Fb(11)150 1480 y(commands,)26
+b(pip)r(elines)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)30
+b Fb(10)150 1569 y(commands,)c(shell)c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(9)150 1657 y(commands,)26
b(simple)e Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38
-b Fb(8)150 1746 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g
+b Fb(9)150 1746 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(7)150
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(9)150
1835 y(Compatibilit)n(y)f(Lev)n(el)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)25 b Fb(104)150 1924 y(Compatibilit)n(y)i(Mo)r(de)22
+g(:)g(:)25 b Fb(110)150 1924 y(Compatibilit)n(y)i(Mo)r(de)22
b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(104)150
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(110)150
2013 y(completion)27 b(builtins)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)36 b Fb(139)150 2101 y(con\014guration)22 b Fc(:)13
+g(:)g(:)36 b Fb(146)150 2101 y(con\014guration)22 b Fc(:)13
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
-b Fb(152)150 2190 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15
+b Fb(158)150 2190 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15
b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
b Fb(3)150 2277 y(copro)r(cess)18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 b
-Fb(15)146 2553 y Fs(D)150 2672 y Fb(directory)26 b(stac)n(k)11
-b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(97)146 2948 y Fs(E)150 3069 y Fb(editing)g(command)g(lines)17
+Fb(18)146 2553 y Fs(D)150 2672 y Fb(directory)26 b(stac)n(k)9
+b Fc(:)k(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
+b Fb(102)146 2948 y Fs(E)150 3069 y Fb(editing)i(command)g(lines)17
b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(112)150 3158 y(en)n(vironmen)n(t)18
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(118)150 3158 y(en)n(vironmen)n(t)18
b Fc(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)32 b Fb(41)150 3247 y(ev)l(aluation,)26 b(arithmetic)12
+f(:)32 b Fb(44)150 3247 y(ev)l(aluation,)26 b(arithmetic)12
b Fc(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(93)150 3335
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(98)150 3335
y(ev)n(en)n(t)f(designators)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)34 b Fb(149)150 3424 y(execution)26 b(en)n(vironmen)n(t)17
+g(:)h(:)34 b Fb(155)150 3424 y(execution)26 b(en)n(vironmen)n(t)17
b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(40)150 3513
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(43)150 3513
y(exit)25 b(status)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(41)150 3602 y(expansion)9
+(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(44)150 3602 y(expansion)9
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)24 b Fb(22)150 3691 y(expansion,)i(arithmetic)18
+g(:)g(:)g(:)g(:)24 b Fb(24)150 3691 y(expansion,)i(arithmetic)18
b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(31)150 3779
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(34)150 3779
y(expansion,)26 b(brace)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)30 b Fb(23)150 3868 y(expansion,)c(\014lename)18
+f(:)g(:)g(:)30 b Fb(24)150 3868 y(expansion,)c(\014lename)18
b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(33)150
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(35)150
3957 y(expansion,)26 b(parameter)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)34 b Fb(25)150 4046 y(expansion,)26 b(pathname)7
+g(:)34 b Fb(26)150 4046 y(expansion,)26 b(pathname)7
b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(33)150
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(35)150
4134 y(expansion,)k(tilde)14 b Fc(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)28 b Fb(24)150 4223 y(expressions,)f(arithmetic)13
+h(:)f(:)g(:)g(:)g(:)28 b Fb(25)150 4223 y(expressions,)f(arithmetic)13
b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(93)150 4310 y(expressions,)g
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(98)150 4310 y(expressions,)g
(conditional)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(91)2021
-294 y Fs(F)2025 415 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(96)2021
+294 y Fs(F)2025 414 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)36 b Fb(3)2025 504 y(\014lename)21 b Fc(:)14 b(:)f(:)g(:)g(:)g
+(:)h(:)36 b Fb(3)2025 503 y(\014lename)21 b Fc(:)14 b(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36
-b Fb(3)2025 593 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g
+b Fb(3)2025 591 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(33)2025 682 y(foreground)9
+g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(35)2025 680 y(foreground)9
b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)24 b Fb(107)2025 769 y(functions,)i(shell)9 b
+h(:)f(:)24 b Fb(113)2025 767 y(functions,)i(shell)9 b
Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)24
-b Fb(18)2021 1048 y Fs(H)2025 1170 y Fb(history)h(builtins)20
+b Fb(19)2021 1038 y Fs(H)2025 1158 y Fb(history)h(builtins)20
b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)35
-b Fb(146)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13
+b Fb(152)2025 1247 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
-b Fb(149)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:)
+b Fb(155)2025 1335 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(148)2025 1436 y(history)c(list)9
+(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(154)2025 1424 y(history)c(list)9
b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)24 b Fb(146)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use)
+g(:)g(:)24 b Fb(152)2025 1511 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use)
19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(145)2021
-1803 y Fs(I)2025 1924 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(151)2021
+1782 y Fs(I)2025 1903 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)27
-b Fb(3)2025 2013 y(initialization)h(\014le,)e(readline)17
+b Fb(3)2025 1991 y(initialization)h(\014le,)e(readline)17
b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)32 b Fb(114)2025 2102 y(installation)21
+f(:)g(:)g(:)g(:)32 b Fb(120)2025 2080 y(installation)21
b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)34 b Fb(152)2025 2191 y(in)n(teraction,)26 b(readline)7
+g(:)34 b Fb(158)2025 2168 y(in)n(teraction,)26 b(readline)7
b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(111)2025
-2280 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(117)2025
+2257 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)34 b Fb(88,)27 b(89)2025 2367 y(in)n(ternationalization)22
+h(:)f(:)g(:)34 b Fb(93,)27 b(94)2025 2346 y(in)n(ternationalization)22
b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35
-b Fb(7)2021 2637 y Fs(J)2025 2758 y Fb(job)23 b Fc(:)13
-b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(3)2025 2845
-y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(7)2025 2433 y(in)n(ternationalized)27 b(scripts)13
+b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)28 b Fb(7)2021 2704 y
+Fs(J)2025 2824 y Fb(job)23 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(107)2021 3124 y Fs(K)2025
-3246 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(113)2025
-3333 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(113)2021 3612
-y Fs(L)2025 3733 y Fb(lo)r(calization)i Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
-b Fb(7)2025 3821 y(login)26 b(shell)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
-b Fb(88)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26
-b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
-b Fb(33)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)38 b Fb(3)2025 2911 y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(113)2021
+3183 y Fs(K)2025 3303 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
+b Fb(119)2025 3390 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(3)p
-eop end
-%%Page: 183 189
-TeXDict begin 183 188 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(183)146 294 y Fs(N)150 410 y Fb(name)19
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b
+Fb(119)2021 3661 y Fs(L)2025 3782 y Fb(lo)r(calization)i
+Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)35 b Fb(7)2025 3869 y(login)26 b(shell)6
+b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)21 b Fb(93)2021 4140 y Fs(M)2025 4260
+y Fb(matc)n(hing,)26 b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)24 b Fb(36)2025 4347 y(metac)n(haracter)7
+b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)22 b Fb(3)p eop end
+%%Page: 190 196
+TeXDict begin 190 195 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(190)146 294 y Fs(N)150 410 y Fb(name)19
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(3)150 497
@@ -21838,121 +22517,124 @@ y(nativ)n(e)25 b(languages)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
h(:)f(:)g(:)g(:)g(:)34 b Fb(7)150 584 y(notation,)27
b(readline)13 b Fc(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27
-b Fb(112)146 828 y Fs(O)150 944 y Fb(op)r(erator,)g(shell)c
+b Fb(118)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c
Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-37 b Fb(3)146 1187 y Fs(P)150 1303 y Fb(parameter)26
+37 b Fb(3)146 1184 y Fs(P)150 1300 y Fb(parameter)26
b(expansion)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28
-b Fb(25)150 1390 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+b Fb(26)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(20)150
-1478 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(21)150
+1475 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)21 b Fb(21)150 1565 y(parameters,)27 b(sp)r(ecial)7
+f(:)g(:)21 b Fb(23)150 1562 y(parameters,)27 b(sp)r(ecial)7
b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21
-b Fb(21)150 1652 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g
+b Fb(23)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)32 b Fb(33)150 1739 y(pattern)25 b(matc)n(hing)c
+h(:)f(:)g(:)32 b Fb(35)150 1736 y(pattern)25 b(matc)n(hing)c
Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34
-b Fb(33)150 1827 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27
-b Fb(8)150 1914 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38
-b Fb(3)150 2001 y(POSIX)25 b(Mo)r(de)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)
+b Fb(36)150 1824 y(pip)r(eline)10 b Fc(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24
+b Fb(10)150 1911 y(POSIX)e Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38
+b Fb(3)150 1998 y(POSIX)25 b(Mo)r(de)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(101)150 2088
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(106)150 2085
y(pro)r(cess)e(group)15 b Fc(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2176 y(pro)r(cess)d(group)e
+(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2172 y(pro)r(cess)d(group)e
(ID)11 b Fc(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(3)150 2263 y(pro)r(cess)h(substitution)11 b Fc(:)h(:)i(:)f(:)g(:)g
+b Fb(3)150 2259 y(pro)r(cess)h(substitution)11 b Fc(:)h(:)i(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)25 b Fb(32)150 2350 y(programmable)i(completion)8
+g(:)h(:)f(:)g(:)g(:)25 b Fb(34)150 2347 y(programmable)i(completion)8
b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)23 b Fb(137)150 2437 y(prompting)17
-b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)31 b Fb(98)146 2681 y Fs(Q)150 2797 y Fb(quoting)16
+(:)h(:)f(:)g(:)g(:)23 b Fb(143)150 2434 y(prompting)15
+b Fc(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)30 b Fb(104)146 2676 y Fs(Q)150 2792 y Fb(quoting)16
b Fc(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(6)150 2884 y(quoting,)26
+(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(6)150 2879 y(quoting,)26
b(ANSI)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)34 b Fb(6)146 3127 y Fs(R)150 3243 y Fb(Readline,)26
+h(:)f(:)g(:)34 b Fb(6)146 3121 y Fs(R)150 3237 y Fb(Readline,)26
b(ho)n(w)g(to)g(use)11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(110)150 3331 y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+b Fb(116)150 3325 y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(35)150
-3418 y(reserv)n(ed)f(w)n(ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(38)150
+3412 y(reserv)n(ed)f(w)n(ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(3)150 3505
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(3)150 3499
y(reserv)n(ed)e(w)n(ords)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(8)150 3592 y(restricted)c(shell)12
+(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(9)150 3586 y(restricted)c(shell)12
b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27
-b Fb(100)150 3679 y(return)e(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g
+b Fb(105)150 3673 y(return)e(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(4)2021
-294 y Fs(S)2025 430 y Fb(shell)h(arithmetic)17 b Fc(:)d(:)f(:)g(:)g(:)g
+294 y Fs(S)2025 427 y Fb(shell)h(arithmetic)17 b Fc(:)d(:)f(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(93)2025 524
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(98)2025 520
y(shell)26 b(function)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(18)2025 617 y(shell)26
+(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(19)2025 613 y(shell)26
b(script)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(42)2025 711 y(shell)h(v)l(ariable)7
+(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(46)2025 706 y(shell)h(v)l(ariable)7
b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)22 b Fb(20)2025 805 y(shell,)k(in)n(teractiv)n(e)21
+g(:)22 b Fb(21)2025 798 y(shell,)k(in)n(teractiv)n(e)21
b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34
-b Fb(89)2025 899 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+b Fb(94)2025 891 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)28
-b Fb(4)2025 992 y(signal)f(handling)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g
+b Fb(4)2025 984 y(signal)f(handling)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(42)2025 1086
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(45)2025 1077
y(sp)r(ecial)27 b(builtin)16 b Fc(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(72)2025 1180 y(startup)f(\014les)10
+g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(77)2025 1170 y(startup)f(\014les)10
b Fc(:)k(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)25 b Fb(88)2025 1267 y(susp)r(ending)g(jobs)10
-b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
-b Fb(107)2021 1647 y Fs(T)2025 1783 y Fb(tilde)h(expansion)7
-b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
-b Fb(24)2025 1877 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32
-b Fb(4)2025 1964 y(translation,)27 b(nativ)n(e)e(languages)c
-Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)34 b Fb(7)2021 2344 y Fs(V)2025 2480 y
-Fb(v)l(ariable,)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(20)2025 2567 y(v)l(ariables,)f
-(readline)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22
-b Fb(115)2021 2947 y Fs(W)2025 3083 y Fb(w)n(ord)10 b
+(:)g(:)25 b Fb(93)2025 1262 y(string)h(translations)8
+b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
+b Fb(7)2025 1350 y(susp)r(ending)i(jobs)10 b Fc(:)k(:)f(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(113)2021 1710 y Fs(T)2025
+1843 y Fb(tilde)h(expansion)7 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)22 b Fb(25)2025 1936 y(tok)n(en)17
+b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(4)2025 2023
+y(translation,)27 b(nativ)n(e)e(languages)c Fc(:)13 b(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)34
+b Fb(7)2021 2384 y Fs(V)2025 2517 y Fb(v)l(ariable,)26
+b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)28 b Fb(21)2025 2604 y(v)l(ariables,)f(readline)7
+b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22
+b Fb(121)2021 2965 y Fs(W)2025 3098 y Fb(w)n(ord)10 b
Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3170
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3185
y(w)n(ord)h(splitting)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(32)2021 3550 y Fs(Y)2025
-3679 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(35)2021 3545 y Fs(Y)2025
+3673 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(113)p eop end
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(119)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
diff --git a/doc/bashref.texi b/doc/bashref.texi
index 9e23f586..b0dc2fad 100644
--- a/doc/bashref.texi
+++ b/doc/bashref.texi
@@ -14,7 +14,7 @@ This is Edition @value{EDITION}, last updated @value{UPDATED},
of @cite{The GNU Bash Reference Manual},
for @code{Bash}, Version @value{VERSION}.
-Copyright @copyright{} 1988--2020 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2022 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -420,12 +420,12 @@ has special meaning to the shell and must be quoted if it is to
represent itself.
When the command history expansion facilities are being used
(@pxref{History Interaction}), the
-@var{history expansion} character, usually @samp{!}, must be quoted
+@dfn{history expansion} character, usually @samp{!}, must be quoted
to prevent history expansion. @xref{Bash History Facilities}, for
more details concerning history expansion.
There are three quoting mechanisms: the
-@var{escape character}, single quotes, and double quotes.
+@dfn{escape character}, single quotes, and double quotes.
@node Escape Character
@subsubsection Escape Character
@@ -475,10 +475,11 @@ when in double quotes (@pxref{Shell Parameter Expansion}).
@subsubsection ANSI-C Quoting
@cindex quoting, ANSI
-Words of the form @code{$'@var{string}'} are treated specially. The
-word expands to @var{string}, with backslash-escaped characters replaced
-as specified by the ANSI C standard. Backslash escape sequences, if
-present, are decoded as follows:
+Character sequences of the form $'@var{string}' are treated as a special
+kind of single quotes.
+The sequence expands to @var{string}, with backslash-escaped characters
+in @var{string} replaced as specified by the ANSI C standard.
+Backslash escape sequences, if present, are decoded as follows:
@table @code
@item \a
@@ -532,30 +533,139 @@ been present.
@cindex internationalization
@cindex native languages
@cindex translation, native languages
+@menu
+* Creating Internationalized Scripts:: How to use translations and different
+ languages in your scripts.
+@end menu
-A double-quoted string preceded by a dollar sign (@samp{$})
+Prefixing a double-quoted string with a dollar sign (@samp{$}), such
+as @verb{|$"hello, world"|},
will cause the string to be translated according to the current locale.
-The @var{gettext} infrastructure performs the message catalog lookup and
-translation, using the @code{LC_MESSAGES} and @code{TEXTDOMAIN} shell
-variables, as explained below. See the gettext documentation for additional
-details.
+The @code{gettext} infrastructure performs the lookup and
+translation, using the @code{LC_MESSAGES}, @code{TEXTDOMAINDIR},
+and @code{TEXTDOMAIN} shell variables, as explained below.
+See the gettext documentation for additional details not covered here.
If the current locale is @code{C} or @code{POSIX},
-or if there are no translations available,
+if there are no translations available,
+of if the string is not translated,
the dollar sign is ignored.
-If the string is translated and replaced, the replacement is
-double-quoted.
+Since this is a form of double quoting, the string remains double-quoted
+by default, whether or not it is translated and replaced.
+If the @code{noexpand_translation} option is enabled
+using the @code{shopt} builtin (@pxref{The Shopt Builtin}),
+translated strings are single-quoted instead of double-quoted.
+
+The rest of this section is a brief overview of how you use gettext to
+create translations for strings in a shell script named @var{scriptname}.
+There are more details in the gettext documentation.
+
+@node Creating Internationalized Scripts
+@cindex internationalized scripts
+@cindex string translations
+Once you've marked the strings in your script
+that you want to translate using $"...",
+you create a gettext "template" file using the command
+
+@example
+bash --dump-po-strings @var{scriptname} > @var{domain}.pot
+@end example
+
+@noindent
+The @var{domain} is your @dfn{message domain}.
+It's just an arbitrary string that's used to identify the files gettext
+needs, like a package or script name.
+It needs to be unique among all
+the message domains on systems where you install the translations, so
+gettext knows which translations correspond to your script.
+You'll use the template file to create translations for each target language.
+The template file conventionally has the suffix @samp{.pot}.
+
+You copy this template file to a separate file for each target language
+you want to support (called "PO" files, which use the suffix @samp{.po}).
+PO files use various naming conventions, but
+when you are working to translate a template file into a particular
+language, you first copy the template file to a file whose name is the
+language you want to target, with the @samp{.po} suffix.
+For instance, the Spanish translations of your strings would be
+in a file named @samp{es.po}, and to get started using a message
+domain named "example," you would run
+
+@example
+cp example.pot es.po
+@end example
+
+@noindent
+Ultimately, PO files are often named @var{domain}.po and installed in
+directories that contain multiple translation files for a particular language.
+
+Whichever naming convention you choose, you will need to translate the
+strings in the PO files into the appropriate languages.
+This has to be done manually.
+
+When you have the translations and PO files complete, you'll use the
+gettext tools to produce what are called "MO" files, which are compiled
+versions of the PO files the gettext tools use to look up translations
+efficiently.
+MO files are also called "message catalog" files.
+You use the @command{msgfmt} program to do this.
+For instance, if you had a file with Spanish translations, you could run
+@example
+msgfmt -o es.mo es.po
+@end example
+
+@noindent
+to produce the corresponding MO file.
+
+Once you have the MO files, you decide where to install them and use the
+@code{TEXTDOMAINDIR} shell variable to tell the gettext tools where they are.
+Make sure to use the same message domain to name the MO files
+as you did for the PO files when you install them.
+
+@vindex LANG
@vindex LC_MESSAGES
@vindex TEXTDOMAIN
@vindex TEXTDOMAINDIR
-Some systems use the message catalog selected by the @env{LC_MESSAGES}
-shell variable. Others create the name of the message catalog from the
-value of the @env{TEXTDOMAIN} shell variable, possibly adding a
-suffix of @samp{.mo}. If you use the @env{TEXTDOMAIN} variable, you
-may need to set the @env{TEXTDOMAINDIR} variable to the location of
-the message catalog files. Still others use both variables in this
-fashion:
-@env{TEXTDOMAINDIR}/@env{LC_MESSAGES}/LC_MESSAGES/@env{TEXTDOMAIN}.mo.
+Your users will use the @env{LANG} or @env{LC_MESSAGES} shell variables to
+select the desired language.
+
+You set the @env{TEXTDOMAIN} variable to the script's message domain.
+As above, you use the message domain to name your translation files.
+
+You, or possibly your users, set the @env{TEXTDOMAINDIR} variable to the
+name of a directory where the message catalog files are stored.
+If you install the message files into the system's standard message catalog
+directory, you don't need to worry about this variable.
+
+The directory where the message catalog files are stored varies between
+systems.
+Some use the message catalog selected by the @env{LC_MESSAGES}
+shell variable.
+Others create the name of the message catalog from the value of the
+@env{TEXTDOMAIN} shell variable, possibly adding the @samp{.mo} suffix.
+If you use the @env{TEXTDOMAIN} variable, you may need to set the
+@env{TEXTDOMAINDIR} variable to the location of the message catalog files,
+as above.
+It's common to use both variables in this fashion:
+@env{$TEXTDOMAINDIR}/@env{$LC_MESSAGES}/LC_MESSAGES/@env{$TEXTDOMAIN}.mo.
+
+If you used that last convention, and you wanted to store the message
+catalog files with Spanish (es) and Esperanto (eo) translations into a
+local directory you use for custom translation files, you could run
+
+@example
+TEXTDOMAIN=example
+TEXTDOMAINDIR=/usr/local/share/locale
+
+cp es.mo $@{TEXTDOMAINDIR@}/es/LC_MESSAGES/$@{TEXTDOMAIN@}.mo
+cp eo.mo $@{TEXTDOMAINDIR@}/eo/LC_MESSAGES/$@{TEXTDOMAIN@}.mo
+@end example
+
+When all of this is done, and the message catalog files containing the
+compiled translations are installed in the correct location,
+your users will be able to see translated strings
+in any of the supported languages by setting the @env{LANG} or
+@env{LC_MESSAGES} environment variables before running your script.
@node Comments
@subsection Comments
@@ -656,15 +766,15 @@ The format for a pipeline is
The output of each command in the pipeline is connected via a pipe
to the input of the next command.
That is, each command reads the previous command's output. This
-connection is performed before any redirections specified by the
-command.
+connection is performed before any redirections specified by
+@var{command1}.
If @samp{|&} is used, @var{command1}'s standard error, in addition to
its standard output, is connected to
@var{command2}'s standard input through the pipe;
it is shorthand for @code{2>&1 |}.
This implicit redirection of the standard error to the standard output is
-performed after any redirections specified by the command.
+performed after any redirections specified by @var{command1}.
The reserved word @code{time} causes timing statistics
to be printed for the pipeline once it finishes.
@@ -691,11 +801,14 @@ the time information.
If the pipeline is not executed asynchronously (@pxref{Lists}), the
shell waits for all commands in the pipeline to complete.
-Each command in a pipeline is executed in its own subshell, which is a
+Each command in a multi-command pipeline,
+where pipes are created,
+is executed in its own @dfn{subshell}, which is a
separate process (@pxref{Command Execution Environment}).
If the @code{lastpipe} option is enabled using the @code{shopt} builtin
(@pxref{The Shopt Builtin}),
-the last element of a pipeline may be run by the shell process.
+the last element of a pipeline may be run by the shell process
+when job control is not active.
The exit
status of a pipeline is the exit status of the last command in the
@@ -728,8 +841,8 @@ to delimit commands, equivalent to a semicolon.
If a command is terminated by the control operator @samp{&},
the shell executes the command asynchronously in a subshell.
-This is known as executing the command in the @var{background},
-and these are referred to as @var{asynchronous} commands.
+This is known as executing the command in the @dfn{background},
+and these are referred to as @dfn{asynchronous} commands.
The shell does not wait for the command to finish, and the return
status is 0 (true).
When job control is not active (@pxref{Job Control}),
@@ -931,9 +1044,10 @@ Each clause must be terminated with @samp{;;}, @samp{;&}, or @samp{;;&}.
The @var{word} undergoes tilde expansion, parameter expansion, command
substitution, arithmetic expansion, and quote removal
(@pxref{Shell Parameter Expansion})
-before matching is
-attempted. Each @var{pattern} undergoes tilde expansion, parameter
-expansion, command substitution, and arithmetic expansion.
+before matching is attempted.
+Each @var{pattern} undergoes tilde expansion, parameter expansion,
+command substitution, arithmetic expansion, process substitution, and
+quote removal.
There may be an arbitrary number of @code{case} clauses, each terminated
by a @samp{;;}, @samp{;&}, or @samp{;;&}.
@@ -982,16 +1096,16 @@ select @var{name} [in @var{words} @dots{}]; do @var{commands}; done
@end example
The list of words following @code{in} is expanded, generating a list
-of items. The set of expanded words is printed on the standard
+of items, and the set of expanded words is printed on the standard
error output stream, each preceded by a number. If the
@samp{in @var{words}} is omitted, the positional parameters are printed,
as if @samp{in "$@@"} had been specified.
-The @env{PS3} prompt is then displayed and a line is read from the
-standard input.
+@code{select} then displays the @env{PS3}
+prompt and reads a line from the standard input.
If the line consists of a number corresponding to one of the displayed
words, then the value of @var{name} is set to that word.
If the line is empty, the words and prompt are displayed again.
-If @code{EOF} is read, the @code{select} command completes.
+If @code{EOF} is read, the @code{select} command completes and returns 1.
Any other value read causes @var{name} to be set to null.
The line read is saved in the variable @env{REPLY}.
@@ -1018,13 +1132,13 @@ done
The arithmetic @var{expression} is evaluated according to the rules
described below (@pxref{Shell Arithmetic}).
+The @var{expression} undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in @var{expression} are not treated specially
+are removed.
If the value of the expression is non-zero, the return status is 0;
-otherwise the return status is 1. This is exactly equivalent to
-@example
-let "@var{expression}"
-@end example
-@noindent
-@xref{Bash Builtins}, for a full description of the @code{let} builtin.
+otherwise the return status is 1.
+
@item [[@dots{}]]
@rwindex [[
@@ -1037,10 +1151,12 @@ Return a status of 0 or 1 depending on the evaluation of
the conditional expression @var{expression}.
Expressions are composed of the primaries described below in
@ref{Bash Conditional Expressions}.
-Word splitting and filename expansion are not performed on the words
-between the @code{[[} and @code{]]}; tilde expansion, parameter and
+The words between the @code{[[} and @code{]]} do not undergo word splitting
+and filename expansion.
+The shell performs tilde expansion, parameter and
variable expansion, arithmetic expansion, command substitution, process
-substitution, and quote removal are performed.
+substitution, and quote removal on those words
+(the expansions that would occur if the words were enclosed in double quotes).
Conditional operators such as @samp{-f} must be unquoted to be recognized
as primaries.
@@ -1058,79 +1174,112 @@ is enabled, the match is performed without regard to the case
of alphabetic characters.
The return value is 0 if the string matches (@samp{==}) or does not
match (@samp{!=}) the pattern, and 1 otherwise.
-Any part of the pattern may be quoted to force the quoted portion
-to be matched as a string.
+
+If you quote any part of the pattern,
+using any of the shell's quoting mechanisms,
+the quoted portion is matched literally.
+This means every character in the quoted portion matches itself,
+instead of having any special pattern matching meaning.
An additional binary operator, @samp{=~}, is available, with the same
precedence as @samp{==} and @samp{!=}.
-When it is used, the string to the right of the operator is considered
-a @sc{posix} extended regular expression and matched accordingly
+When you use @samp{=~}, the string to the right of the operator is considered
+a @sc{posix} extended regular expression pattern and matched accordingly
(using the @sc{posix} @code{regcomp} and @code{regexec} interfaces
usually described in @i{regex}(3)).
-The return value is 0 if the string matches
-the pattern, and 1 otherwise.
+The return value is 0 if the string matches the pattern, and 1 if it does not.
If the regular expression is syntactically incorrect, the conditional
-expression's return value is 2.
+expression returns 2.
If the @code{nocasematch} shell option
(see the description of @code{shopt} in @ref{The Shopt Builtin})
is enabled, the match is performed without regard to the case
of alphabetic characters.
-Any part of the pattern may be quoted to force the quoted portion
-to be matched as a string.
-Bracket expressions in regular expressions must be treated carefully,
-since normal quoting characters lose their meanings between brackets.
+
+You can quote any part of the pattern
+to force the quoted portion to be matched literally
+instead of as a regular expression (see above).
If the pattern is stored in a shell variable, quoting the variable
-expansion forces the entire pattern to be matched as a string.
+expansion forces the entire pattern to be matched literally.
The pattern will match if it matches any part of the string.
-Anchor the pattern using the @samp{^} and @samp{$} regular expression
-operators to force it to match the entire string.
-The array variable @code{BASH_REMATCH} records which parts of the string
-matched the pattern.
-The element of @code{BASH_REMATCH} with index 0 contains the portion of
-the string matching the entire regular expression.
-Substrings matched by parenthesized subexpressions within the regular
-expression are saved in the remaining @code{BASH_REMATCH} indices.
-The element of @code{BASH_REMATCH} with index @var{n} is the portion of the
-string matching the @var{n}th parenthesized subexpression.
+If you want to force the pattern to match the entire string,
+anchor the pattern using the @samp{^} and @samp{$} regular expression
+operators.
For example, the following will match a line
-(stored in the shell variable @var{line})
+(stored in the shell variable @code{line})
if there is a sequence of characters anywhere in the value consisting of
any number, including zero, of
characters in the @code{space} character class,
-zero or one instances of @samp{a}, then a @samp{b}:
+immediately followed by zero or one instances of @samp{a},
+then a @samp{b}:
+
@example
[[ $line =~ [[:space:]]*(a)?b ]]
@end example
@noindent
-That means values like @samp{aab} and @samp{ aaaaaab} will match, as
-will a line containing a @samp{b} anywhere in its value.
+That means values for @code{line} like
+@samp{aab}, @samp{ aaaaaab}, @samp{xaby}, and @samp{ ab}
+will all match,
+as will a line containing a @samp{b} anywhere in its value.
+
+If you want to match a character that's special to the regular expression
+grammar (@samp{^$|[]()\.*+?}), it has to be quoted to remove its special
+meaning.
+This means that in the pattern @samp{xxx.txt}, the @samp{.} matches any
+character in the string (its usual regular expression meaning), but in the
+pattern @samp{"xxx.txt"}, it can only match a literal @samp{.}.
+
+Likewise, if you want to include a character in your pattern that has a
+special meaning to the regular expression grammar, you must make sure it's
+not quoted.
+If you want to anchor a pattern at the beginning or end of the string,
+for instance, you cannot quote the @samp{^} or @samp{$}
+characters using any form of shell quoting.
+
+If you want to match @samp{initial string} at the start of a line,
+the following will work:
+@example
+[[ $line =~ ^"initial string" ]]
+@end example
+@noindent
+but this will not:
+@example
+[[ $line =~ "^initial string" ]]
+@end example
+@noindent
+because in the second example the @samp{^} is quoted and doesn't have its
+usual special meaning.
+It is sometimes difficult to specify a regular expression properly
+without using quotes, or to keep track of the quoting used by regular
+expressions while paying attention to
+shell quoting and the shell's quote removal.
Storing the regular expression in a shell variable is often a useful
way to avoid problems with quoting characters that are special to the
shell.
-It is sometimes difficult to specify a regular expression literally
-without using quotes, or to keep track of the quoting used by regular
-expressions while paying attention to the shell's quote removal.
-Using a shell variable to store the pattern decreases these problems.
-For example, the following is equivalent to the above:
+For example, the following is equivalent to the pattern used above:
+
@example
pattern='[[:space:]]*(a)?b'
[[ $line =~ $pattern ]]
@end example
-@noindent
-If you want to match a character that's special to the regular expression
-grammar, it has to be quoted to remove its special meaning.
-This means that in the pattern @samp{xxx.txt}, the @samp{.} matches any
-character in the string (its usual regular expression meaning), but in the
-pattern @samp{"xxx.txt"} it can only match a literal @samp{.}.
-Shell programmers should take special care with backslashes, since backslashes
-are used both by the shell and regular expressions to remove the special
-meaning from the following character.
+Shell programmers should take special care with backslashes, since
+backslashes are used by both the shell and regular expressions to remove
+the special meaning from the following character.
+This means that after the shell's word expansions complete
+(@pxref{Shell Expansions}),
+any backslashes remaining in parts of the pattern
+that were originally not quoted can remove the
+special meaning of pattern characters.
+If any part of the pattern is quoted, the shell does its best to ensure that
+the regular expression treats those remaining backslashes as literal,
+if they appeared in a quoted portion.
+
The following two sets of commands are @emph{not} equivalent:
+
@example
pattern='\.'
@@ -1144,12 +1293,53 @@ pattern='\.'
@noindent
The first two matches will succeed, but the second two will not, because
in the second two the backslash will be part of the pattern to be matched.
-In the first two examples, the backslash removes the special meaning from
+In the first two examples, the pattern passed to the regular expression
+parser is @samp{\.}. The backslash removes the special meaning from
@samp{.}, so the literal @samp{.} matches.
+In the second two examples, the pattern passed to the regular expression
+parser has the backslash quoted (e.g., @samp{\\\.}), which will not match
+the string, since it does not contain a backslash.
If the string in the first examples were anything other than @samp{.}, say
@samp{a}, the pattern would not match, because the quoted @samp{.} in the
pattern loses its special meaning of matching any single character.
+Bracket expressions in regular expressions can be sources of errors as well,
+since characters that are normally special in regular expressions
+lose their special meanings between brackets.
+However, you can use bracket expressions to match special pattern characters
+without quoting them, so they are sometimes useful for this purpose.
+
+Though it might seem like a strange way to write it, the following pattern
+will match a @samp{.} in the string:
+
+@example
+[[ . =~ [.] ]]
+@end example
+
+The shell performs any word expansions before passing the pattern
+to the regular expression functions,
+so you can assume that the shell's quoting takes precedence.
+As noted above, the regular expression parser will interpret any
+unquoted backslashes remaining in the pattern after shell expansion
+according to its own rules.
+The intention is to avoid making shell programmers quote things twice
+as much as possible, so shell quoting should be sufficient to quote
+special pattern characters where that's necessary.
+
+The array variable @code{BASH_REMATCH} records which parts of the string
+matched the pattern.
+The element of @code{BASH_REMATCH} with index 0 contains the portion of
+the string matching the entire regular expression.
+Substrings matched by parenthesized subexpressions within the regular
+expression are saved in the remaining @code{BASH_REMATCH} indices.
+The element of @code{BASH_REMATCH} with index @var{n} is the portion of the
+string matching the @var{n}th parenthesized subexpression.
+
+Bash sets
+@code{BASH_REMATCH}
+in the global scope; declaring it as a local variable will lead to
+unexpected results.
+
Expressions may be combined using the following operators, listed
in decreasing order of precedence:
@@ -1189,11 +1379,11 @@ commands in the list may be redirected to a single stream.
( @var{list} )
@end example
-Placing a list of commands between parentheses causes a subshell
-environment to be created (@pxref{Command Execution Environment}), and each
-of the commands in @var{list} to be executed in that subshell. Since the
-@var{list} is executed in a subshell, variable assignments do not remain in
-effect after the subshell completes.
+Placing a list of commands between parentheses forces the shell to create
+a subshell (@pxref{Command Execution Environment}), and each
+of the commands in @var{list} is executed in that subshell environment.
+Since the @var{list} is executed in a subshell, variable assignments do not
+remain in effect after the subshell completes.
@item @{@}
@rwindex @{
@@ -1209,9 +1399,9 @@ The semicolon (or newline) following @var{list} is required.
In addition to the creation of a subshell, there is a subtle difference
between these two constructs due to historical reasons. The braces
-are @code{reserved words}, so they must be separated from the @var{list}
+are reserved words, so they must be separated from the @var{list}
by @code{blank}s or other shell metacharacters.
-The parentheses are @code{operators}, and are
+The parentheses are operators, and are
recognized as separate tokens by the shell even if they are not separated
from the @var{list} by whitespace.
@@ -1228,27 +1418,56 @@ A coprocess is executed asynchronously in a subshell, as if the command
had been terminated with the @samp{&} control operator, with a two-way pipe
established between the executing shell and the coprocess.
-The format for a coprocess is:
+The syntax for a coprocess is:
+
@example
coproc [@var{NAME}] @var{command} [@var{redirections}]
@end example
@noindent
This creates a coprocess named @var{NAME}.
-If @var{NAME} is not supplied, the default name is @var{COPROC}.
-@var{NAME} must not be supplied if @var{command} is a simple
-command (@pxref{Simple Commands}); otherwise, it is interpreted as
-the first word of the simple command.
+@var{command} may be either a simple command (@pxref{Simple Commands})
+or a compound command (@pxref{Compound Commands}).
+@var{NAME} is a shell variable name.
+If @var{NAME} is not supplied, the default name is @code{COPROC}.
+
+The recommended form to use for a coprocess is
+
+@example
+coproc @var{NAME} @{ @var{command}; @}
+@end example
+
+@noindent
+This form is recommended because simple commands result in the coprocess
+always being named @code{COPROC}, and it is simpler to use and more complete
+than the other compound commands.
+
+There are other forms of coprocesses:
+
+@example
+coproc @var{NAME} @var{compound-command}
+coproc @var{compound-command}
+coproc @var{simple-command}
+@end example
+
+@noindent
+If @var{command} is a compound command, @var{NAME} is optional. The
+word following @code{coproc} determines whether that word is interpreted
+as a variable name: it is interpreted as @var{NAME} if it is not a
+reserved word that introduces a compound command.
+If @var{command} is a simple command, @var{NAME} is not allowed; this
+is to avoid confusion between @var{NAME} and the first word of the simple
+command.
When the coprocess is executed, the shell creates an array variable
(@pxref{Arrays})
-named @env{NAME} in the context of the executing shell.
+named @var{NAME} in the context of the executing shell.
The standard output of @var{command}
is connected via a pipe to a file descriptor in the executing shell,
-and that file descriptor is assigned to @env{NAME}[0].
+and that file descriptor is assigned to @var{NAME}[0].
The standard input of @var{command}
is connected via a pipe to a file descriptor in the executing shell,
-and that file descriptor is assigned to @env{NAME}[1].
+and that file descriptor is assigned to @var{NAME}[1].
This pipe is established before any redirections specified by the
command (@pxref{Redirections}).
The file descriptors can be utilized as arguments to shell commands
@@ -1257,7 +1476,7 @@ Other than those created to execute command and process substitutions,
the file descriptors are not available in subshells.
The process ID of the shell spawned to execute the coprocess is
-available as the value of the variable @env{NAME}_PID.
+available as the value of the variable @env{@var{NAME}_PID}.
The @code{wait}
builtin command may be used to wait for the coprocess to terminate.
@@ -1279,117 +1498,9 @@ Parallel provides shorthand references to many of the most common operations
the input source, and so on). Parallel can replace @code{xargs} or feed
commands from its input sources to several different instances of Bash.
-For a complete description, refer to the GNU Parallel documentation. A few
-examples should provide a brief introduction to its use.
-
-For example, it is easy to replace @code{xargs} to gzip all html files in the
-current directory and its subdirectories:
-@example
-find . -type f -name '*.html' -print | parallel gzip
-@end example
-@noindent
-If you need to protect special characters such as newlines in file names,
-use find's @option{-print0} option and parallel's @option{-0} option.
-
-You can use Parallel to move files from the current directory when the
-number of files is too large to process with one @code{mv} invocation:
-@example
-printf '%s\n' * | parallel mv @{@} destdir
-@end example
-
-As you can see, the @{@} is replaced with each line read from standard input.
-While using @code{ls} will work in most instances, it is not sufficient to
-deal with all filenames. @code{printf} is a shell builtin, and therefore is
-not subject to the kernel's limit on the number of arguments to a program,
-so you can use @samp{*} (but see below about the @code{dotglob} shell option).
-If you need to accommodate special characters in filenames, you can use
-
-@example
-printf '%s\0' * | parallel -0 mv @{@} destdir
-@end example
-
-@noindent
-as alluded to above.
-
-This will run as many @code{mv} commands as there are files in the current
-directory.
-You can emulate a parallel @code{xargs} by adding the @option{-X} option:
-@example
-printf '%s\0' * | parallel -0 -X mv @{@} destdir
-@end example
-
-(You may have to modify the pattern if you have the @code{dotglob} option
-enabled.)
-
-GNU Parallel can replace certain common idioms that operate on lines read
-from a file (in this case, filenames listed one per line):
-@example
- while IFS= read -r x; do
- do-something1 "$x" "config-$x"
- do-something2 < "$x"
- done < file | process-output
-@end example
-
-@noindent
-with a more compact syntax reminiscent of lambdas:
-@example
-cat list | parallel "do-something1 @{@} config-@{@} ; do-something2 < @{@}" |
- process-output
-@end example
-
-Parallel provides a built-in mechanism to remove filename extensions, which
-lends itself to batch file transformations or renaming:
-@example
-ls *.gz | parallel -j+0 "zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}"
-@end example
-@noindent
-This will recompress all files in the current directory with names ending
-in .gz using bzip2, running one job per CPU (-j+0) in parallel.
-(We use @code{ls} for brevity here; using @code{find} as above is more
-robust in the face of filenames containing unexpected characters.)
-Parallel can take arguments from the command line; the above can also be
-written as
-
-@example
-parallel "zcat @{@} | bzip2 >@{.@}.bz2 && rm @{@}" ::: *.gz
-@end example
-
-If a command generates output, you may want to preserve the input order in
-the output. For instance, the following command
-@example
-@{
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
-@} | parallel traceroute
-@end example
-@noindent
-will display as output the traceroute invocation that finishes first.
-Adding the @option{-k} option
-@example
-@{
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
-@} | parallel -k traceroute
-@end example
-@noindent
-will ensure that the output of @code{traceroute foss.org.my} is displayed first.
-
-Finally, Parallel can be used to run a sequence of shell commands in parallel,
-similar to @samp{cat file | bash}.
-It is not uncommon to take a list of filenames, create a series of shell
-commands to operate on them, and feed that list of commands to a shell.
-Parallel can speed this up. Assuming that @file{file} contains a list of
-shell commands, one per line,
-
-@example
-parallel -j 10 < file
-@end example
-
-@noindent
-will evaluate the commands using the shell (since no explicit command is
-supplied as an argument), in blocks of ten shell jobs at a time.
+For a complete description, refer to the GNU Parallel documentation, which
+is available at
+@url{https://www.gnu.org/software/parallel/parallel_tutorial.html}.
@node Shell Functions
@section Shell Functions
@@ -1420,16 +1531,16 @@ This defines a shell function named @var{fname}. The reserved
word @code{function} is optional.
If the @code{function} reserved
word is supplied, the parentheses are optional.
-The @var{body} of the function is the compound command
+The @dfn{body} of the function is the compound command
@var{compound-command} (@pxref{Compound Commands}).
That command is usually a @var{list} enclosed between @{ and @}, but
-may be any compound command listed above,
-with one exception: If the @code{function} reserved word is used, but the
-parentheses are not supplied, the braces are required.
+may be any compound command listed above.
+If the @code{function} reserved word is used, but the
+parentheses are not supplied, the braces are recommended.
@var{compound-command} is executed whenever @var{fname} is specified as the
-name of a command.
+name of a simple command.
When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}),
-@var{fname} must be a valid shell @var{name} and
+@var{fname} must be a valid shell name and
may not be the same as one of the special builtins
(@pxref{Special Builtins}).
In default mode, a function name can be any unquoted shell word that does
@@ -1496,17 +1607,29 @@ return status is the exit status of the last command executed
before the @code{return}.
Variables local to the function may be declared with the
-@code{local} builtin. These variables are visible only to
+@code{local} builtin (@dfn{local variables}).
+Ordinarily, variables and their values
+are shared between a function and its caller.
+These variables are visible only to
the function and the commands it invokes. This is particularly
important when a shell function calls other functions.
+In the following description, the @dfn{current scope} is a currently-
+executing function.
+Previous scopes consist of that function's caller and so on,
+back to the "global" scope, where the shell is not executing
+any shell function.
+Consequently, a local variable at the current local scope is a variable
+declared using the @code{local} or @code{declare} builtins in the
+function that is currently executing.
+
Local variables "shadow" variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
-The shell uses @var{dynamic scoping} to control a variable's visibility
+The shell uses @dfn{dynamic scoping} to control a variable's visibility
within functions.
With dynamic scoping, visible variables and their values
are a result of the sequence of function calls that caused execution
@@ -1518,11 +1641,11 @@ This is also the value that a local variable
declaration "shadows", and the value that is restored when the function
returns.
-For example, if a variable @var{var} is declared as local in function
-@var{func1}, and @var{func1} calls another function @var{func2},
-references to @var{var} made from within @var{func2} will resolve to the
-local variable @var{var} from @var{func1}, shadowing any global variable
-named @var{var}.
+For example, if a variable @env{var} is declared as local in function
+@code{func1}, and @code{func1} calls another function @code{func2},
+references to @env{var} made from within @code{func2} will resolve to the
+local variable @env{var} from @code{func1}, shadowing any global variable
+named @env{var}.
The following script demonstrates this behavior.
When executed, the script displays
@@ -1552,11 +1675,13 @@ variable is local to the current scope, @code{unset} will unset it;
otherwise the unset will refer to the variable found in any calling scope
as described above.
If a variable at the current local scope is unset, it will remain so
+(appearing as unset)
until it is reset in that scope or until the function returns.
Once the function returns, any instance of the variable at a previous
scope will become visible.
If the unset acts on a variable at a previous scope, any instance of a
-variable with that name that had been shadowed will become visible.
+variable with that name that had been shadowed will become visible
+(see below how @code{localvar_unset}shell option changes this behavior).
Function names and definitions may be listed with the
@option{-f} option to the @code{declare} (@code{typeset})
@@ -1565,7 +1690,8 @@ The @option{-F} option to @code{declare} or @code{typeset}
will list the function names only
(and optionally the source file and line number, if the @code{extdebug}
shell option is enabled).
-Functions may be exported so that subshells
+Functions may be exported so that child shell processes
+(those created when executing a separate shell invocation)
automatically have them defined with the
@option{-f} option to the @code{export} builtin
(@pxref{Bourne Shell Builtins}).
@@ -1586,11 +1712,11 @@ By default, no limit is placed on the number of recursive calls.
* Special Parameters:: Parameters denoted by special characters.
@end menu
-A @var{parameter} is an entity that stores values.
+A @dfn{parameter} is an entity that stores values.
It can be a @code{name}, a number, or one of the special characters
listed below.
-A @var{variable} is a parameter denoted by a @code{name}.
-A variable has a @var{value} and zero or more @var{attributes}.
+A @dfn{variable} is a parameter denoted by a @code{name}.
+A variable has a @code{value} and zero or more @code{attributes}.
Attributes are assigned using the @code{declare} builtin command
(see the description of the @code{declare} builtin in @ref{Bash Builtins}).
@@ -1607,17 +1733,16 @@ If @var{value}
is not given, the variable is assigned the null string. All
@var{value}s undergo tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote
-removal (detailed below). If the variable has its @code{integer}
+removal (@pxref{Shell Parameter Expansion}).
+If the variable has its @code{integer}
attribute set, then @var{value}
is evaluated as an arithmetic expression even if the @code{$((@dots{}))}
expansion is not used (@pxref{Arithmetic Expansion}).
-Word splitting is not performed, with the exception
-of @code{"$@@"} as explained below.
-Filename expansion is not performed.
+Word splitting and filename expansion are not performed.
Assignment statements may also appear as arguments to the
@code{alias},
@code{declare}, @code{typeset}, @code{export}, @code{readonly},
-and @code{local} builtin commands (@var{declaration} commands).
+and @code{local} builtin commands (@dfn{declaration} commands).
When in @sc{posix} mode (@pxref{Bash POSIX Mode}), these builtins may appear
in a command after one or more instances of the @code{command} builtin
and retain these assignment statement properties.
@@ -1627,8 +1752,8 @@ to a shell variable or array index (@pxref{Arrays}), the @samp{+=}
operator can be used to
append to or add to the variable's previous value.
This includes arguments to builtin commands such as @code{declare} that
-accept assignment statements (@var{declaration} commands).
-When @samp{+=} is applied to a variable for which the @var{integer} attribute
+accept assignment statements (declaration commands).
+When @samp{+=} is applied to a variable for which the @code{integer} attribute
has been set, @var{value} is evaluated as an arithmetic expression and
added to the variable's current value, which is also evaluated.
When @samp{+=} is applied to an array variable using compound assignment
@@ -1640,10 +1765,10 @@ in an associative array.
When applied to a string-valued variable, @var{value} is expanded and
appended to the variable's value.
-A variable can be assigned the @var{nameref} attribute using the
+A variable can be assigned the @code{nameref} attribute using the
@option{-n} option to the @code{declare} or @code{local} builtin commands
(@pxref{Bash Builtins})
-to create a @var{nameref}, or a reference to another variable.
+to create a @dfn{nameref}, or a reference to another variable.
This allows variables to be manipulated indirectly.
Whenever the nameref variable is referenced, assigned to, unset, or has
its attributes modified (other than using or changing the nameref
@@ -1658,9 +1783,9 @@ argument, running
declare -n ref=$1
@end example
@noindent
-inside the function creates a nameref variable @var{ref} whose value is
+inside the function creates a nameref variable @env{ref} whose value is
the variable name passed as the first argument.
-References and assignments to @var{ref}, and changes to its attributes,
+References and assignments to @env{ref}, and changes to its attributes,
are treated as references, assignments, and attribute modifications
to the variable whose name was passed as @code{$1}.
@@ -1680,7 +1805,7 @@ as an argument, the variable referenced by the nameref variable will be unset.
@subsection Positional Parameters
@cindex parameters, positional
-A @var{positional parameter} is a parameter denoted by one or more
+A @dfn{positional parameter} is a parameter denoted by one or more
digits, other than the single digit @code{0}. Positional parameters are
assigned from the shell's arguments when it is invoked,
and may be reassigned using the @code{set} builtin command.
@@ -1762,7 +1887,7 @@ builtin command, or those set by the shell itself
@item $
@vindex $$
-($$) Expands to the process @sc{id} of the shell. In a @code{()} subshell, it
+($$) Expands to the process @sc{id} of the shell. In a subshell, it
expands to the process @sc{id} of the invoking shell, not the subshell.
@item !
@@ -1822,14 +1947,14 @@ word splitting;
and filename expansion.
On systems that can support it, there is an additional expansion
-available: @var{process substitution}.
+available: @dfn{process substitution}.
This is performed at the
same time as tilde, parameter, variable, and arithmetic expansion and
command substitution.
After these expansions are performed, quote characters present in the
original word are removed unless they have been quoted themselves
-(@var{quote removal}).
+(@dfn{quote removal}).
Only brace expansion, word splitting, and filename expansion
can increase the number of words of the expansion; other expansions
@@ -1849,7 +1974,7 @@ is performed.
Brace expansion is a mechanism by which arbitrary strings may be generated.
This mechanism is similar to
-@var{filename expansion} (@pxref{Filename Expansion}),
+@dfn{filename expansion} (@pxref{Filename Expansion}),
but the filenames generated need not exist.
Patterns to be brace expanded take the form of an optional @var{preamble},
followed by either a series of comma-separated strings or a sequence expression
@@ -1869,7 +1994,7 @@ ade ace abe
@end example
A sequence expression takes the form @code{@{@var{x}..@var{y}[..@var{incr}]@}},
-where @var{x} and @var{y} are either integers or single characters,
+where @var{x} and @var{y} are either integers or letters,
and @var{incr}, an optional increment, is an integer.
When integers are supplied, the expression expands to each number between
@var{x} and @var{y}, inclusive.
@@ -1878,10 +2003,11 @@ same width.
When either @var{x} or @var{y} begins with a zero, the shell
attempts to force all generated terms to contain the same number of digits,
zero-padding where necessary.
-When characters are supplied, the expression expands to each character
+When letters are supplied, the expression expands to each character
lexicographically between @var{x} and @var{y}, inclusive,
using the default C locale.
-Note that both @var{x} and @var{y} must be of the same type.
+Note that both @var{x} and @var{y} must be of the same type
+(integer or letter).
When the increment is supplied, it is used as the difference between
each term. The default increment is 1 or -1 as appropriate.
@@ -1920,10 +2046,10 @@ chown root /usr/@{ucb/@{ex,edit@},lib/@{ex?.?*,how_ex@}@}
If a word begins with an unquoted tilde character (@samp{~}), all of the
characters up to the first unquoted slash (or all characters,
-if there is no unquoted slash) are considered a @var{tilde-prefix}.
+if there is no unquoted slash) are considered a @dfn{tilde-prefix}.
If none of the characters in the tilde-prefix are quoted, the
characters in the tilde-prefix following the tilde are treated as a
-possible @var{login name}.
+possible @dfn{login name}.
If this login name is the null string, the tilde is replaced with the
value of the @env{HOME} shell variable.
If @env{HOME} is unset, the home directory of the user executing the
@@ -1986,7 +2112,7 @@ The string that would be displayed by @samp{dirs -@var{N}}
Bash also performs tilde expansion on words satisfying the conditions of
variable assignments (@pxref{Shell Parameters})
when they appear as arguments to simple commands.
-Bash does not do this, except for the @var{declaration} commands listed
+Bash does not do this, except for the declaration commands listed
above, when in @sc{posix} mode.
@node Shell Parameter Expansion
@@ -2016,7 +2142,7 @@ or when @var{parameter} is followed by a character that is not to be
interpreted as part of its name.
If the first character of @var{parameter} is an exclamation point (!),
-and @var{parameter} is not a @var{nameref},
+and @var{parameter} is not a nameref,
it introduces a level of indirection.
Bash uses the value formed by expanding the rest of
@var{parameter} as the new @var{parameter}; this is then
@@ -2051,6 +2177,12 @@ If @var{parameter} is unset or null, the expansion of
@var{word} is substituted. Otherwise, the value of
@var{parameter} is substituted.
+@example
+$ v=123
+$ echo $@{v-unset@}
+123
+@end example
+
@item $@{@var{parameter}:=@var{word}@}
If @var{parameter}
is unset or null, the expansion of @var{word}
@@ -2059,6 +2191,13 @@ The value of @var{parameter} is then substituted.
Positional parameters and special parameters may not be assigned to
in this way.
+@example
+$ var=
+$ : $@{var:=DEFAULT@}
+$ echo $var
+DEFAULT
+@end example
+
@item $@{@var{parameter}:?@var{word}@}
If @var{parameter}
is null or unset, the expansion of @var{word} (or a message
@@ -2067,17 +2206,29 @@ is not present) is written to the standard error and the shell, if it
is not interactive, exits. Otherwise, the value of @var{parameter} is
substituted.
+@example
+$ var=
+$ : $@{var:?var is unset or null@}
+bash: var: var is unset or null
+@end example
+
@item $@{@var{parameter}:+@var{word}@}
If @var{parameter}
is null or unset, nothing is substituted, otherwise the expansion of
@var{word} is substituted.
+@example
+$ var=123
+$ echo $@{var:+var is set and not null@}
+var is set and not null
+@end example
+
@item $@{@var{parameter}:@var{offset}@}
@itemx $@{@var{parameter}:@var{offset}:@var{length}@}
This is referred to as Substring Expansion.
It expands to up to @var{length} characters of the value of @var{parameter}
starting at the character specified by @var{offset}.
-If @var{parameter} is @samp{@@}, an indexed array subscripted by
+If @var{parameter} is @samp{@@} or @samp{*}, an indexed array subscripted by
@samp{@@} or @samp{*}, or an associative array name, the results differ as
described below.
If @var{length} is omitted, it expands to the substring of the value of
@@ -2154,8 +2305,8 @@ $ echo ${array[0]: -7:-2}
bcdef
@end verbatim
-If @var{parameter} is @samp{@@}, the result is @var{length} positional
-parameters beginning at @var{offset}.
+If @var{parameter} is @samp{@@} or @samp{*}, the result is @var{length}
+positional parameters beginning at @var{offset}.
A negative @var{offset} is taken relative to one greater than the greatest
positional parameter, so an offset of -1 evaluates to the last positional
parameter.
@@ -2284,21 +2435,100 @@ the pattern removal operation is applied to each member of the
array in turn, and the expansion is the resultant list.
@item $@{@var{parameter}/@var{pattern}/@var{string}@}
-
+@itemx $@{@var{parameter}//@var{pattern}/@var{string}@}
+@itemx $@{@var{parameter}/#@var{pattern}/@var{string}@}
+@itemx $@{@var{parameter}/%@var{pattern}/@var{string}@}
The @var{pattern} is expanded to produce a pattern just as in
filename expansion.
@var{Parameter} is expanded and the longest match of @var{pattern}
against its value is replaced with @var{string}.
+@var{string} undergoes tilde expansion, parameter and variable expansion,
+arithmetic expansion, command and process substitution, and quote removal.
The match is performed according to the rules described below
(@pxref{Pattern Matching}).
-If @var{pattern} begins with @samp{/}, all matches of @var{pattern} are
-replaced with @var{string}. Normally only the first match is replaced.
-If @var{pattern} begins with @samp{#}, it must match at the beginning
-of the expanded value of @var{parameter}.
-If @var{pattern} begins with @samp{%}, it must match at the end
-of the expanded value of @var{parameter}.
-If @var{string} is null, matches of @var{pattern} are deleted
-and the @code{/} following @var{pattern} may be omitted.
+
+In the first form above, only the first match is replaced.
+If there are two slashes separating @var{parameter} and @var{pattern}
+(the second form above), all matches of @var{pattern} are
+replaced with @var{string}.
+If @var{pattern} is preceded by @samp{#} (the third form above),
+it must match at the beginning of the expanded value of @var{parameter}.
+If @var{pattern} is preceded by @samp{%} (the fourth form above),
+it must match at the end of the expanded value of @var{parameter}.
+If the expansion of @var{string} is null,
+matches of @var{pattern} are deleted.
+If @var{string} is null,
+matches of @var{pattern} are deleted
+and the @samp{/} following @var{pattern} may be omitted.
+
+If the @code{patsub_replacement} shell option is enabled using @code{shopt},
+any unquoted instances of @samp{&} in @var{string} are replaced with the
+matching portion of @var{pattern}.
+This is intended to duplicate a common @code{sed} idiom.
+
+Quoting any part of @var{string} inhibits replacement in the
+expansion of the quoted portion, including replacement strings stored
+in shell variables.
+Backslash will escape @samp{&} in @var{string}; the backslash is removed
+in order to permit a literal @samp{&} in the replacement string.
+Users should take care if @var{string} is double-quoted to avoid
+unwanted interactions between the backslash and double-quoting, since
+backslash has special meaning within double quotes.
+Pattern substitution performs the check for unquoted @samp{&} after
+expanding @var{string},
+so users should ensure to properly quote any occurrences of @samp{&}
+they want to be taken literally in the replacement
+and ensure any instances of @samp{&} they want to be replaced are unquoted.
+
+For instance,
+
+@example
+var=abcdef
+rep='& '
+echo $@{var/abc/& @}
+echo "$@{var/abc/& @}"
+echo $@{var/abc/$rep@}
+echo "$@{var/abc/$rep@}"
+@end example
+
+@noindent
+will display four lines of "abc def", while
+
+@example
+var=abcdef
+rep='& '
+echo $@{var/abc/\& @}
+echo "$@{var/abc/\& @}"
+echo $@{var/abc/"& "@}
+echo $@{var/abc/"$rep"@}
+@end example
+
+@noindent
+will display four lines of "& def".
+Like the pattern removal operators, double quotes surrounding the
+replacement string quote the expanded characters, while double quotes
+enclosing the entire parameter substitution do not, since
+the expansion is performed in a
+context that doesn't take any enclosing double quotes into account.
+
+Since backslash can escape @samp{&}, it can also escape a backslash in
+the replacement string.
+This means that @samp{\\} will insert a literal
+backslash into the replacement, so these two @code{echo} commands
+
+@example
+var=abcdef
+rep='\\&xyz'
+echo $@{var/abc/\\&xyz@}
+echo $@{var/abc/$rep@}
+@end example
+
+@noindent
+will both output @samp{\abcxyzdef}.
+
+It should rarely be necessary to enclose only @var{string} in double
+quotes.
+
If the @code{nocasematch} shell option
(see the description of @code{shopt} in @ref{The Shopt Builtin})
is enabled, the match is performed without regard to the case
@@ -2321,6 +2551,7 @@ filename expansion.
Each character in the expanded value of @var{parameter} is tested against
@var{pattern}, and, if it matches the pattern, its case is converted.
The pattern should not attempt to match more than one character.
+
The @samp{^} operator converts lowercase letters matching @var{pattern}
to uppercase; the @samp{,} operator converts matching uppercase letters
to lowercase.
@@ -2329,6 +2560,7 @@ expanded value; the @samp{^} and @samp{,} expansions match and convert only
the first character in the expanded value.
If @var{pattern} is omitted, it is treated like a @samp{?}, which matches
every character.
+
If @var{parameter} is @samp{@@} or @samp{*},
the case modification operation is applied to each positional
parameter in turn, and the expansion is the resultant list.
@@ -2373,6 +2605,9 @@ indexed and associative arrays as a sequence of quoted key-value pairs
@item a
The expansion is a string consisting of flag values representing
@var{parameter}'s attributes.
+@item k
+Like the @samp{K} transformation, but expands the keys and values of
+indexed and associative arrays to separate words after word splitting.
@end table
If @var{parameter} is @samp{@@} or @samp{*},
@@ -2438,8 +2673,10 @@ and the substitution of the result. The format for arithmetic expansion is:
$(( @var{expression} ))
@end example
-The expression is treated as if it were within double quotes, but
-a double quote inside the parentheses is not treated specially.
+The @var{expression} undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in @var{expression} are not treated specially
+and are removed.
All tokens in the expression undergo parameter and variable expansion,
command substitution, and quote removal.
The result is treated as the arithmetic expression to be evaluated.
@@ -2559,9 +2796,13 @@ without regard to the case of alphabetic characters.
When a pattern is used for filename expansion, the character @samp{.}
at the start of a filename or immediately following a slash
must be matched explicitly, unless the shell option @code{dotglob} is set.
-The filenames @samp{.} and @samp{..} must always be matched explicitly,
+In order to match the filenames @samp{.} and @samp{..},
+the pattern must begin with @samp{.} (for example, @samp{.?}),
even if @code{dotglob} is set.
-In other cases, the @samp{.} character is not treated specially.
+If the @code{globskipdots} shell option is enabled, the filenames
+@samp{.} and @samp{..} are never matched, even if the pattern begins
+with a @samp{.}.
+When not matching filenames, the @samp{.} character is not treated specially.
When matching a filename, the slash character must always be
matched explicitly by a slash in the pattern, but in other matching
@@ -2570,6 +2811,7 @@ below (@pxref{Pattern Matching}).
See the description of @code{shopt} in @ref{The Shopt Builtin},
for a description of the @code{nocaseglob}, @code{nullglob},
+@code{globskipdots},
@code{failglob}, and @code{dotglob} options.
The @env{GLOBIGNORE}
@@ -2628,20 +2870,22 @@ then any character not enclosed is matched. A @samp{@minus{}}
may be matched by including it as the first or last character
in the set. A @samp{]} may be matched by including it as the first
character in the set.
-The sorting order of characters in range expressions is determined by
+The sorting order of characters in range expressions,
+and the characters included in the range,
+are determined by
the current locale and the values of the
@env{LC_COLLATE} and @env{LC_ALL} shell variables, if set.
For example, in the default C locale, @samp{[a-dx-z]} is equivalent to
@samp{[abcdxyz]}. Many locales sort characters in dictionary order, and in
these locales @samp{[a-dx-z]} is typically not equivalent to @samp{[abcdxyz]};
-it might be equivalent to @samp{[aBbCcDdxXyYz]}, for example. To obtain
+it might be equivalent to @samp{[aBbCcDdxYyZz]}, for example. To obtain
the traditional interpretation of ranges in bracket expressions, you can
force the use of the C locale by setting the @env{LC_COLLATE} or
@env{LC_ALL} environment variable to the value @samp{C}, or enable the
@code{globasciiranges} shell option.
-Within @samp{[} and @samp{]}, @var{character classes} can be specified
+Within @samp{[} and @samp{]}, @dfn{character classes} can be specified
using the syntax
@code{[:}@var{class}@code{:]}, where @var{class} is one of the
following classes defined in the @sc{posix} standard:
@@ -2654,7 +2898,7 @@ A character class matches any character belonging to that class.
The @code{word} character class matches letters, digits, and the character
@samp{_}.
-Within @samp{[} and @samp{]}, an @var{equivalence class} can be
+Within @samp{[} and @samp{]}, an @dfn{equivalence class} can be
specified using the syntax @code{[=}@var{c}@code{=]}, which
matches all characters with the same collation weight (as defined
by the current locale) as the character @var{c}.
@@ -2664,9 +2908,11 @@ matches the collating symbol @var{symbol}.
@end table
If the @code{extglob} shell option is enabled using the @code{shopt}
-builtin, several extended pattern matching operators are recognized.
+builtin, the shell recognizes several extended pattern matching operators.
In the following description, a @var{pattern-list} is a list of one
or more patterns separated by a @samp{|}.
+When matching filenames, the @code{dotglob} shell option determines
+the set of filenames that are tested, as described above.
Composite patterns may be formed using one or more of the following
sub-patterns:
@@ -2687,6 +2933,23 @@ Matches one of the given patterns.
Matches anything except one of the given patterns.
@end table
+The @code{extglob} option changes the behavior of the parser, since the
+parentheses are normally treated as operators with syntactic meaning.
+To ensure that extended matching patterns are parsed correctly, make sure
+that @code{extglob} is enabled before parsing constructs containing the
+patterns, including shell functions and command substitutions.
+
+When matching filenames, the @code{dotglob} shell option determines
+the set of filenames that are tested:
+when @code{dotglob} is enabled, the set of filenames includes all files
+beginning with @samp{.}, but the filenames
+@samp{.} and @samp{..} must be matched by a
+pattern or sub-pattern that begins with a dot;
+when it is disabled, the set does not
+include any filenames beginning with ``.'' unless the pattern
+or sub-pattern begins with a @samp{.}.
+As above, @samp{.} only has a special meaning when matching filenames.
+
Complicated extended pattern matching against long strings is slow,
especially when the patterns contain alternations and the strings
contain multiple matches.
@@ -2705,9 +2968,9 @@ result from one of the above expansions are removed.
@cindex redirection
Before a command is executed, its input and output
-may be @var{redirected}
+may be @dfn{redirected}
using a special notation interpreted by the shell.
-Redirection allows commands' file handles to be
+@dfn{Redirection} allows commands' file handles to be
duplicated, opened, closed,
made to refer to different files,
and can change the files the command reads from and writes to.
@@ -2728,6 +2991,8 @@ descriptor to close.
If @{@var{varname}@} is supplied, the redirection persists beyond
the scope of the command, allowing the shell programmer to manage
the file descriptor's lifetime manually.
+The @code{varredir_close} shell option manages this behavior
+(@pxref{The Shopt Builtin}).
In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is
@@ -3040,7 +3305,11 @@ and quote removal before being assigned to the variable.
@end enumerate
If no command name results, the variable assignments affect the current
-shell environment. Otherwise, the variables are added to the environment
+shell environment.
+In the case of such a command (one that consists only of assignment
+statements and redirections), assignment statements are performed before
+redirections.
+Otherwise, the variables are added to the environment
of the executed command and do not affect the current shell environment.
If any of the assignments attempts to assign a value to a readonly variable,
an error occurs, and the command exits with a non-zero status.
@@ -3103,7 +3372,7 @@ to the command are set to the arguments supplied, if any.
@item
If this execution fails because the file is not in executable
format, and the file is not a directory, it is assumed to be a
-@var{shell script} and the shell executes it as described in
+@dfn{shell script} and the shell executes it as described in
@ref{Shell Scripts}.
@item
@@ -3116,7 +3385,7 @@ the command to complete and collects its exit status.
@subsection Command Execution Environment
@cindex execution environment
-The shell has an @var{execution environment}, which consists of the
+The shell has an @dfn{execution environment}, which consists of the
following:
@itemize @bullet
@@ -3190,6 +3459,8 @@ shell's parent, and traps ignored by the shell are ignored
A command invoked in this separate environment cannot affect the
shell's execution environment.
+A @dfn{subshell} is a copy of the shell process.
+
Command substitution, commands grouped with parentheses,
and asynchronous commands are invoked in a
subshell environment that is a duplicate of the shell environment,
@@ -3213,13 +3484,13 @@ shell as modified by redirections.
@cindex environment
When a program is invoked it is given an array of strings
-called the @var{environment}.
+called the @dfn{environment}.
This is a list of name-value pairs, of the form @code{name=value}.
Bash provides several ways to manipulate the environment.
On invocation, the shell scans its own environment and
creates a parameter for each name found, automatically marking
-it for @var{export}
+it for @code{export}
to child processes. Executed commands inherit the environment.
The @code{export} and @samp{declare -x}
commands allow parameters and functions to be added to and
@@ -3251,7 +3522,7 @@ command in its environment.
@cindex exit status
The exit status of an executed command is the value returned by the
-@var{waitpid} system call or equivalent function. Exit statuses
+@code{waitpid} system call or equivalent function. Exit statuses
fall between 0 and 255, though, as explained below, the shell may
use values above 125 specially. Exit statuses from shell builtins and
compound commands are also limited to this range. Under certain
@@ -3284,6 +3555,9 @@ conditional and list constructs.
All builtins return an exit status of 2 to indicate incorrect usage,
generally invalid options or missing arguments.
+The exit status of the last command is available in the special
+parameter $? (@pxref{Special Parameters}).
+
@node Signals
@subsection Signals
@cindex signal handling
@@ -3330,6 +3604,37 @@ which a trap has been set will cause the @code{wait} builtin to return
immediately with an exit status greater than 128, immediately after
which the trap is executed.
+When job control is not enabled, and Bash is waiting for a foreground
+command to complete, the shell receives keyboard-generated signals
+such as @code{SIGINT} (usually generated by @samp{^C}) that users
+commonly intend to send to that command.
+This happens because the shell and the command are in the same process
+group as the terminal, and @samp{^C} sends @code{SIGINT} to all processes
+in that process group.
+See @ref{Job Control}, for a more in-depth discussion of process groups.
+
+When Bash is running without job control enabled and receives @code{SIGINT}
+while waiting for a foreground command, it waits until that foreground
+command terminates and then decides what to do about the @code{SIGINT}:
+
+@enumerate
+@item
+If the command terminates due to the @code{SIGINT}, Bash concludes
+that the user meant to end the entire script, and acts on the
+@code{SIGINT} (e.g., by running a @code{SIGINT} trap or exiting itself);
+
+@item
+If the pipeline does not terminate due to @code{SIGINT}, the program
+handled the @code{SIGINT} itself and did not treat it as a fatal signal.
+In that case, Bash does not treat @code{SIGINT} as a fatal signal,
+either, instead assuming that the @code{SIGINT} was used as part of the
+program's normal operation (e.g., @command{emacs} uses it to abort editing
+commands) or deliberately discarded. However, Bash will run any
+trap set on @code{SIGINT}, as it does with any other trapped signal it
+receives while it is waiting for the foreground command to
+complete, for compatibility.
+@end enumerate
+
@node Shell Scripts
@section Shell Scripts
@cindex shell script
@@ -3352,8 +3657,10 @@ are unset.
A shell script may be made executable by using the @code{chmod} command
to turn on the execute bit. When Bash finds such a file while
-searching the @env{$PATH} for a command, it spawns a subshell to
-execute it. In other words, executing
+searching the @env{$PATH} for a command, it creates a
+new instance of itself
+to execute it.
+In other words, executing
@example
filename @var{arguments}
@end example
@@ -3470,18 +3777,19 @@ The return status is zero.
Read and execute commands from the @var{filename} argument in the
current shell context. If @var{filename} does not contain a slash,
-the @env{PATH} variable is used to find @var{filename}.
-When Bash is not in @sc{posix} mode, the current directory is searched
+the @env{PATH} variable is used to find @var{filename},
+but @var{filename} does not need to be executable.
+When Bash is not in @sc{posix} mode, it searches the current directory
if @var{filename} is not found in @env{$PATH}.
If any @var{arguments} are supplied, they become the positional
parameters when @var{filename} is executed. Otherwise the positional
parameters are unchanged.
-If the @option{-T} option is enabled, @code{source} inherits any trap on
+If the @option{-T} option is enabled, @code{.} inherits any trap on
@code{DEBUG}; if it is not, any @code{DEBUG} trap string is saved and
-restored around the call to @code{source}, and @code{source} unsets the
+restored around the call to @code{.}, and @code{.} unsets the
@code{DEBUG} trap while it executes.
If @option{-T} is not set, and the sourced file changes
-the @code{DEBUG} trap, the new value is retained when @code{source} completes.
+the @code{DEBUG} trap, the new value is retained when @code{.} completes.
The return status is the exit status of the last command executed, or
zero if no commands are executed. If @var{filename} is not found, or
cannot be read, the return status is non-zero.
@@ -3507,7 +3815,6 @@ cd [-L|[-P [-e]] [-@@] [@var{directory}]
Change the current working directory to @var{directory}.
If @var{directory} is not supplied, the value of the @env{HOME}
shell variable is used.
-Any additional arguments following @var{directory} are ignored.
If the shell variable
@env{CDPATH} exists, it is used as a search path:
each directory name in @env{CDPATH} is searched for
@@ -3543,6 +3850,11 @@ If a non-empty directory name from @env{CDPATH} is used, or if
successful, the absolute pathname of the new working directory is
written to the standard output.
+If the directory change is successful, @code{cd} sets the value of the
+@env{PWD} environment variable to the new directory name, and sets the
+@env{OLDPWD} environment variable to the value of the current working
+directory before the change.
+
The return status is zero if the directory is successfully changed,
non-zero otherwise.
@@ -3616,7 +3928,7 @@ Mark each @var{name} to be passed to child processes
in the environment. If the @option{-f} option is supplied, the @var{name}s
refer to shell functions; otherwise the names refer to shell variables.
The @option{-n} option means to no longer mark each @var{name} for export.
-If no @var{names} are supplied, or if the @option{-p} option is given, a
+If no @var{name}s are supplied, or if the @option{-p} option is given, a
list of names of all exported variables is displayed.
The @option{-p} option displays output in a form that may be reused as input.
If a variable name is followed by =@var{value}, the value of
@@ -3877,10 +4189,20 @@ Otherwise, the expression is false.
@end enumerate
@item 4 arguments
+The following conditions are applied in the order listed.
+
+@enumerate
+@item
If the first argument is @samp{!}, the result is the negation of
the three-argument expression composed of the remaining arguments.
+@item
+If the first argument is exactly @samp{(} and the fourth argument is
+exactly @samp{)}, the result is the two-argument test of the second
+and third arguments.
+@item
Otherwise, the expression is parsed and evaluated according to
precedence using the rules listed above.
+@end enumerate
@item 5 or more arguments
The expression is parsed and evaluated according to precedence
@@ -3994,7 +4316,7 @@ If the @option{-v} option is given, each
If the @option{-f} option is given, the @var{name}s refer to shell
functions, and the function definition is removed.
If the @option{-n} option is supplied, and @var{name} is a variable with
-the @var{nameref} attribute, @var{name} will be unset rather than the
+the @code{nameref} attribute, @var{name} will be unset rather than the
variable it references.
@option{-n} has no effect if the @option{-f} option is supplied.
If no options are supplied, each @var{name} refers to a variable; if
@@ -4003,7 +4325,7 @@ unset.
Readonly variables and functions may not be unset.
Some shell variables lose their special behavior if they are unset; such
behavior is noted in the description of the individual variables.
-The return status is zero unless a @var{name} is readonly.
+The return status is zero unless a @var{name} is readonly or may not be unset.
@end table
@node Bash Builtins
@@ -4038,6 +4360,7 @@ bind [-m @var{keymap}] -f @var{filename}
bind [-m @var{keymap}] -x @var{keyseq:shell-command}
bind [-m @var{keymap}] @var{keyseq:function-name}
bind [-m @var{keymap}] @var{keyseq:readline-command}
+bind @var{readline-command-line}
@end example
Display current Readline (@pxref{Command Line Editing})
@@ -4112,6 +4435,9 @@ When @var{shell-command} is executed, the shell sets the
buffer and the @code{READLINE_POINT} and @code{READLINE_MARK} variables
to the current location of the insertion point and the saved insertion
point (the @var{mark}), respectively.
+The shell assigns any numeric argument the user supplied to the
+@code{READLINE_ARGUMENT} variable.
+If there was no argument, that variable is not set.
If the executed command changes the value of any of @code{READLINE_LINE},
@code{READLINE_POINT}, or @code{READLINE_MARK}, those new values will be
reflected in the editing state.
@@ -4218,7 +4544,7 @@ the global scope, even when @code{declare} is executed in a shell function.
It is ignored in all other cases.
The @option{-I} option causes local variables to inherit the attributes
-(except the @var{nameref} attribute)
+(except the @code{nameref} attribute)
and value of any existing variable with the same
@var{name} at a surrounding scope.
If there is no existing variable, the local variable is initially unset.
@@ -4247,7 +4573,7 @@ converted to lower-case.
The upper-case attribute is disabled.
@item -n
-Give each @var{name} the @var{nameref} attribute, making
+Give each @var{name} the @code{nameref} attribute, making
it a name reference to another variable.
That other variable is defined by the value of @var{name}.
All references, assignments, and attribute modifications
@@ -4294,7 +4620,7 @@ an attempt is made to define a function using @samp{-f foo=bar},
an attempt is made to assign a value to a readonly variable,
an attempt is made to assign a value to an array variable without
using the compound assignment syntax (@pxref{Arrays}),
-one of the @var{names} is not a valid shell variable name,
+one of the @var{name}s is not a valid shell variable name,
an attempt is made to turn off readonly status for a readonly variable,
an attempt is made to turn off array status for an array variable,
or an attempt is made to display a non-existent function with @option{-f}.
@@ -4378,6 +4704,9 @@ each builtin with an indication of whether or not it is enabled.
The @option{-f} option means to load the new builtin command @var{name}
from shared object @var{filename}, on systems that support dynamic loading.
+Bash will use the value of the @env{BASH_LOADABLES_PATH} variable as a
+colon-separated list of directories in which to search for @var{filename}.
+The default is system-dependent.
The @option{-d} option will delete a builtin loaded with @option{-f}.
If there are no options, a list of the shell builtins is displayed.
@@ -4385,6 +4714,11 @@ The @option{-s} option restricts @code{enable} to the @sc{posix} special
builtins. If @option{-s} is used with @option{-f}, the new builtin becomes
a special builtin (@pxref{Special Builtins}).
+If no options are supplied and a @var{name} is not a shell builtin,
+@code{enable} will attempt to load @var{name} from a shared object named
+@var{name}, as if the command were
+@samp{enable -f @var{name} @var{name}}.
+
The return status is zero unless a @var{name} is not a shell builtin
or there is an error loading a new builtin from a shared object.
@@ -4535,6 +4869,9 @@ corresponding @var{argument} in the same way as @code{echo -e}
@item %q
Causes @code{printf} to output the
corresponding @var{argument} in a format that can be reused as shell input.
+@item %Q
+like @code{%q}, but applies any supplied precision to the @var{argument}
+before quoting it.
@item %(@var{datefmt})T
Causes @code{printf} to output the date-time string resulting from using
@var{datefmt} as a format string for @code{strftime}(3).
@@ -4654,8 +4991,10 @@ from regular files.
If @code{read} times out, @code{read} saves any partial input read into
the specified variable @var{name}.
If @var{timeout} is 0, @code{read} returns immediately, without trying to
-read any data. The exit status is 0 if input is available on
-the specified file descriptor, non-zero otherwise.
+read any data.
+The exit status is 0 if input is available on the specified file descriptor,
+or the read will return EOF,
+non-zero otherwise.
The exit status is greater than 128 if the timeout is exceeded.
@item -u @var{fd}
@@ -4727,7 +5066,7 @@ is not also used.
If the @option{-f} option is used, @code{type} does not attempt to find
shell functions, as with the @code{command} builtin.
-The return status is zero if all of the @var{names} are found, non-zero
+The return status is zero if all of the @var{name}s are found, non-zero
if any are not found.
@item typeset
@@ -4888,8 +5227,8 @@ parameters, or to display the names and values of shell variables.
@item set
@btindex set
@example
-set [--abefhkmnptuvxBCEHPT] [-o @var{option-name}] [@var{argument} @dots{}]
-set [+abefhkmnptuvxBCEHPT] [+o @var{option-name}] [@var{argument} @dots{}]
+set [-abefhkmnptuvxBCEHPT] [-o @var{option-name}] [--] [-] [@var{argument} @dots{}]
+set [+abefhkmnptuvxBCEHPT] [+o @var{option-name}] [--] [-] [@var{argument} @dots{}]
@end example
If no options or arguments are supplied, @code{set} displays the names
@@ -5076,12 +5415,18 @@ not reset.
Turning this option off causes the effective user
and group ids to be set to the real user and group ids.
+@item -r
+Enable restricted shell mode.
+This option cannot be unset once it has been set.
+
@item -t
Exit after reading and executing one command.
@item -u
Treat unset variables and parameters other than the special parameters
-@samp{@@} or @samp{*} as an error when performing parameter expansion.
+@samp{@@} or @samp{*},
+or array variables subscripted with @samp{@@} or @samp{*},
+as an error when performing parameter expansion.
An error message will be written to the standard error, and a non-interactive
shell will exit.
@@ -5187,7 +5532,7 @@ The settings can be either those listed below, or, if the
option to the @code{set} builtin command (@pxref{The Set Builtin}).
With no options, or with the @option{-p} option, a list of all settable
options is displayed, with an indication of whether or not each is set;
-if @var{optnames} are supplied, the output is restricted to those options.
+if @var{optname}s are supplied, the output is restricted to those options.
The @option{-p} option causes output to be displayed in a form that
may be reused as input.
Other options have the following meanings:
@@ -5203,7 +5548,7 @@ Disable (unset) each @var{optname}.
Suppresses normal output; the return status
indicates whether the @var{optname} is set or unset.
If multiple @var{optname} arguments are given with @option{-q},
-the return status is zero if all @var{optnames} are enabled;
+the return status is zero if all @var{optname}s are enabled;
non-zero otherwise.
@item -o
@@ -5219,7 +5564,7 @@ those options which are set or unset, respectively.
Unless otherwise noted, the @code{shopt} options are disabled (off)
by default.
-The return status when listing options is zero if all @var{optnames}
+The return status when listing options is zero if all @var{optname}s
are enabled, non-zero otherwise. When setting or unsetting options,
the return status is zero unless an @var{optname} is not a valid shell
option.
@@ -5308,7 +5653,7 @@ versions through 4.2.
@item direxpand
If set, Bash
replaces directory names with the results of word expansion when performing
-filename completion. This changes the contents of the readline editing
+filename completion. This changes the contents of the Readline editing
buffer.
If not set, Bash attempts to preserve what the user typed.
@@ -5401,6 +5746,12 @@ is not taken into account, so
@samp{b} will not collate between @samp{A} and @samp{B},
and upper-case and lower-case ASCII characters will collate together.
+@item globskipdots
+If set, filename expansion will never match the filenames
+@samp{.} and @samp{..},
+even if the pattern begins with a @samp{.}.
+This option is enabled by default.
+
@item globstar
If set, the pattern @samp{**} used in a filename expansion context will
match all files and zero or more directories and subdirectories.
@@ -5460,7 +5811,7 @@ embedded newlines rather than using semicolon separators where possible.
@item localvar_inherit
If set, local variables inherit the value and attributes of a variable of
the same name that exists at a previous scope before any new value is
-assigned. The @var{nameref} attribute is not inherited.
+assigned. The @code{nameref} attribute is not inherited.
@item localvar_unset
If set, calling @code{unset} on local variables in previous function scopes
@@ -5490,14 +5841,27 @@ performing filename expansion.
@item nocasematch
If set, Bash matches patterns in a case-insensitive fashion when
performing matching while executing @code{case} or @code{[[}
-conditional commands,
+conditional commands (@pxref{Conditional Constructs},
when performing pattern substitution word expansions,
or when filtering possible completions as part of programmable completion.
+@item noexpand_translation
+If set, Bash
+encloses the translated results of $"..." quoting in single quotes
+instead of double quotes.
+If the string is not translated, this has no effect.
+
@item nullglob
If set, Bash allows filename patterns which match no
files to expand to a null string, rather than themselves.
+@item patsub_replacement
+If set, Bash
+expands occurrences of @samp{&} in the replacement string of pattern
+substitution to the text matched by the pattern, as described
+above (@pxref{Shell Parameter Expansion}).
+This option is enabled by default.
+
@item progcomp
If set, the programmable completion facilities
(@pxref{Programmable Completion}) are enabled.
@@ -5529,10 +5893,15 @@ builtin prints an error message when the shift count exceeds the
number of positional parameters.
@item sourcepath
-If set, the @code{source} builtin uses the value of @env{PATH}
+If set, the @code{.} (@code{source}) builtin uses the value of @env{PATH}
to find the directory containing the file supplied as an argument.
This option is enabled by default.
+@item varredir_close
+If set, the shell automatically closes file descriptors assigned using the
+@code{@{varname@}} redirection syntax (@pxref{Redirections}) instead of
+leaving them open when the command completes.
+
@item xpg_echo
If set, the @code{echo} builtin expands backslash-escape sequences
by default.
@@ -5789,7 +6158,7 @@ The command argument to the @option{-c} invocation option.
@item BASH_LINENO
An array variable whose members are the line numbers in source files
-where each corresponding member of @var{FUNCNAME} was invoked.
+where each corresponding member of @env{FUNCNAME} was invoked.
@code{$@{BASH_LINENO[$i]@}} is the line number in the source file
(@code{$@{BASH_SOURCE[$i+1]@}}) where
@code{$@{FUNCNAME[$i]@}} was called (or @code{$@{BASH_LINENO[$i-1]@}} if
@@ -5833,10 +6202,10 @@ The values assigned to the array members are as follows:
@table @code
@item BASH_VERSINFO[0]
-The major version number (the @var{release}).
+The major version number (the @dfn{release}).
@item BASH_VERSINFO[1]
-The minor version number (the @var{version}).
+The minor version number (the @dfn{version}).
@item BASH_VERSINFO[2]
The patch level.
@@ -5845,7 +6214,7 @@ The patch level.
The build version.
@item BASH_VERSINFO[4]
-The release status (e.g., @var{beta1}).
+The release status (e.g., @code{beta1}).
@item BASH_VERSINFO[5]
The value of @env{MACHTYPE}.
@@ -5906,7 +6275,7 @@ programmable completion facilities (@pxref{Programmable Completion}).
@item COMP_TYPE
Set to an integer value corresponding to the type of completion attempted
that caused a completion function to be called:
-@var{TAB}, for normal completion,
+@key{TAB}, for normal completion,
@samp{?}, for listing completions after successive tabs,
@samp{!}, for listing alternatives on partial word completion,
@samp{@@}, to list completions if the word is not unmodified,
@@ -5963,7 +6332,7 @@ starts with value @samp{t}, it assumes that the shell is running in an
Emacs shell buffer and disables line editing.
@item ENV
-Expanded and executed similarlty to @code{BASH_ENV}
+Expanded and executed similarly to @code{BASH_ENV}
(@pxref{Bash Startup Files})
when an interactive shell is invoked in
@sc{posix} Mode (@pxref{Bash POSIX Mode}).
@@ -5971,7 +6340,7 @@ when an interactive shell is invoked in
@item EPOCHREALTIME
Each time this parameter is referenced, it expands to the number of seconds
since the Unix Epoch as a floating point value with micro-second granularity
-(see the documentation for the C library function @var{time} for the
+(see the documentation for the C library function @code{time} for the
definition of Epoch).
Assignments to @env{EPOCHREALTIME} are ignored.
If @env{EPOCHREALTIME}
@@ -5981,7 +6350,7 @@ it is subsequently reset.
@item EPOCHSECONDS
Each time this parameter is referenced, it expands to the number of seconds
since the Unix Epoch (see the documentation for the C library function
-@var{time} for the definition of Epoch).
+@code{time} for the definition of Epoch).
Assignments to @env{EPOCHSECONDS} are ignored.
If @env{EPOCHSECONDS}
is unset, it loses its special properties, even if
@@ -6065,7 +6434,7 @@ subsequently reset.
Up to three characters which control history expansion, quick
substitution, and tokenization (@pxref{History Interaction}).
The first character is the
-@var{history expansion} character, that is, the character which signifies the
+@dfn{history expansion} character, that is, the character which signifies the
start of a history expansion, normally @samp{!}. The second character is the
character which signifies `quick substitution' when seen as the first
character on a line, normally @samp{^}. The optional third character is the
@@ -6150,7 +6519,7 @@ The shell sets the default value to 500 after reading any startup files.
@item HISTTIMEFORMAT
If this variable is set and not null, its value is used as a format string
-for @var{strftime} to print the time stamp associated with each history
+for @code{strftime} to print the time stamp associated with each history
entry displayed by the @code{history} builtin.
If this variable is set, time stamps are written to the history file so
they may be preserved across shell sessions.
@@ -6313,7 +6682,7 @@ The value of this variable is used as the prompt for the
@code{select} command prompts with @samp{#? }
@item PS4
-The value of this parameter is expanded like @var{PS1}
+The value of this parameter is expanded like @env{PS1}
and the expanded value is the prompt printed before the command line
is echoed when the @option{-x} option is set (@pxref{The Set Builtin}).
The first character of the expanded value is replicated multiple times,
@@ -6331,16 +6700,21 @@ If @env{RANDOM}
is unset, it loses its special properties, even if it is
subsequently reset.
+@item READLINE_ARGUMENT
+Any numeric argument given to a Readline command that was defined using
+@samp{bind -x} (@pxref{Bash Builtins}
+when it was invoked.
+
@item READLINE_LINE
The contents of the Readline line buffer, for use
with @samp{bind -x} (@pxref{Bash Builtins}).
@item READLINE_MARK
-The position of the @var{mark} (saved insertion point) in the
+The position of the @dfn{mark} (saved insertion point) in the
Readline line buffer, for use
with @samp{bind -x} (@pxref{Bash Builtins}).
The characters between the insertion point and the mark are often
-called the @var{region}.
+called the @dfn{region}.
@item READLINE_POINT
The position of the insertion point in the Readline line buffer, for use
@@ -6350,12 +6724,11 @@ with @samp{bind -x} (@pxref{Bash Builtins}).
The default variable for the @code{read} builtin.
@item SECONDS
-This variable expands to the number of seconds since the
-shell was started. Assignment to this variable resets
-the count to the value assigned, and the expanded value
-becomes the value assigned plus the number of seconds
+This variable expands to the number of seconds since the shell was started.
+Assignment to this variable resets the count to the value assigned, and the
+expanded value becomes the value assigned plus the number of seconds
since the assignment.
-The number of seconds at shell invocation and the current time is always
+The number of seconds at shell invocation and the current time are always
determined by querying the system clock.
If @env{SECONDS}
is unset, it loses its special properties,
@@ -6743,10 +7116,12 @@ No other startup files are read.
@subsubheading Invoked by remote shell daemon
Bash attempts to determine when it is being run with its standard input
-connected to a network connection, as when executed by the remote shell
-daemon, usually @code{rshd}, or the secure shell daemon @code{sshd}.
-If Bash determines it is being run in
-this fashion, it reads and executes commands from @file{~/.bashrc}, if that
+connected to a network connection, as when executed by
+the historical remote shell daemon, usually @code{rshd},
+or the secure shell daemon @code{sshd}.
+If Bash
+determines it is being run non-interactively in this fashion,
+it reads and executes commands from @file{~/.bashrc}, if that
file exists and is readable.
It will not do this if invoked as @code{sh}.
The @option{--norc} option may be used to inhibit this behavior, and the
@@ -6773,15 +7148,16 @@ the same, but the effective user id is not reset.
@menu
* What is an Interactive Shell?:: What determines whether a shell is Interactive.
* Is this Shell Interactive?:: How to tell if a shell is interactive.
-* Interactive Shell Behavior:: What changes in a interactive shell?
+* Interactive Shell Behavior:: What changes in an interactive shell?
@end menu
@node What is an Interactive Shell?
@subsection What is an Interactive Shell?
An interactive shell
-is one started without non-option arguments, unless @option{-s} is
-specified, without specifying the @option{-c} option, and
+is one started without non-option arguments
+(unless @option{-s} is specified)
+and without specifying the @option{-c} option,
whose input and error output are both
connected to terminals (as determined by @code{isatty(3)}),
or one started with the @option{-i} option.
@@ -6844,7 +7220,7 @@ See @ref{Controlling the Prompt}, for a complete list of prompt
string escape sequences.
@item
-Bash executes the values of the set elements of the @env{PROMPT_COMMANDS}
+Bash executes the values of the set elements of the @env{PROMPT_COMMAND}
array variable as commands before printing the primary prompt, @env{$PS1}
(@pxref{Bash Variables}).
@@ -6915,9 +7291,11 @@ A failed @code{exec} will not cause the shell to exit
Parser syntax errors will not cause the shell to exit.
@item
-Simple spelling correction for directory arguments to the @code{cd}
-builtin is enabled by default (see the description of the @code{cdspell}
+If the @code{cdspell} shell option is enabled, the shell will attempt
+simple spelling correction for directory arguments to the @code{cd}
+builtin (see the description of the @code{cdspell}
option to the @code{shopt} builtin in @ref{The Shopt Builtin}).
+The @code{cdspell} option is only effective in interactive shells.
@item
The shell will check the value of the @env{TMOUT} variable and exit
@@ -6931,7 +7309,10 @@ printing @env{$PS1} (@pxref{Bash Variables}).
@cindex expressions, conditional
Conditional expressions are used by the @code{[[} compound command
-and the @code{test} and @code{[} builtin commands. The @code{test}
+(@pxref{Conditional Constructs})
+and the @code{test} and @code{[} builtin commands
+(@pxref{Bourne Shell Builtins}).
+The @code{test}
and @code{[} commands determine their behavior based on the number
of arguments; see the descriptions of those commands for any other
command-specific actions.
@@ -7166,9 +7547,9 @@ A shell variable that is null or unset evaluates to 0 when referenced
by name without using the parameter expansion syntax.
The value of a variable is evaluated as an arithmetic expression
when it is referenced, or when a variable which has been given the
-@var{integer} attribute using @samp{declare -i} is assigned a value.
+@code{integer} attribute using @samp{declare -i} is assigned a value.
A null value evaluates to 0.
-A shell variable need not have its @var{integer} attribute turned on
+A shell variable need not have its @code{integer} attribute turned on
to be used in an expression.
Integer constants follow the C language definition, without suffixes or
@@ -7195,7 +7576,7 @@ rules above.
@section Aliases
@cindex alias expansion
-@var{Aliases} allow a string to be substituted for a word when it is used
+@dfn{Aliases} allow a string to be substituted for a word when it is used
as the first word of a simple command.
The shell maintains a list of aliases that may be set and unset with
the @code{alias} and @code{unalias} builtin commands.
@@ -7215,7 +7596,7 @@ This means that one may alias @code{ls} to @code{"ls -F"},
for instance, and Bash does not try to recursively expand the
replacement text.
If the last character of the alias value is a
-@var{blank}, then the next command word following the
+@code{blank}, then the next command word following the
alias is also checked for alias expansion.
Aliases are created and listed with the @code{alias}
@@ -7223,7 +7604,7 @@ command, and removed with the @code{unalias} command.
There is no mechanism for using arguments in the replacement text,
as in @code{csh}.
-If arguments are needed, a shell function should be used
+If arguments are needed, use a shell function
(@pxref{Shell Functions}).
Aliases are not expanded when the shell is not interactive,
@@ -7337,6 +7718,9 @@ interpreted as relative to one greater than the maximum index of
@var{name}, so negative indices count back from the end of the
array, and an index of -1 references the last element.
+The @samp{+=} operator will append to an array variable when assigning
+using the compound assignment syntax; see @ref{Shell Parameters} above.
+
Any element of an array may be referenced using
@code{$@{@var{name}[@var{subscript}]@}}.
The braces are required to avoid
@@ -7387,8 +7771,14 @@ destroys the array element at index @var{subscript}.
Negative subscripts to indexed arrays are interpreted as described above.
Unsetting the last element of an array variable does not unset the variable.
@code{unset @var{name}}, where @var{name} is an array, removes the
-entire array. A subscript of @samp{*} or @samp{@@} also removes the
entire array.
+@code{unset @var{name}[@var{subscript}]} behaves differently
+depending on the array type when given a
+subscript of @samp{*} or @samp{@@}.
+When @var{name} is an associative array, it removes the element with key
+@samp{*} or @samp{@@}.
+If @var{name} is an indexed array, @code{unset} removes all of the elements,
+but does not remove the array itself.
When using a variable name with a subscript as an argument to a command,
such as with @code{unset}, without using the word expansion syntax
@@ -7470,11 +7860,16 @@ with zero.
popd [-n] [+@var{N} | -@var{N}]
@end example
-When no arguments are given, @code{popd}
-removes the top directory from the stack and
-performs a @code{cd} to the new top directory.
+Removes elements from the directory stack.
The elements are numbered from 0 starting at the first directory
-listed with @code{dirs}; that is, @code{popd} is equivalent to @code{popd +0}.
+listed by @code{dirs};
+that is, @code{popd} is equivalent to @code{popd +0}.
+
+When no arguments are given, @code{popd}
+removes the top directory from the stack and changes to
+the new top directory.
+
+Arguments, if supplied, have the following meanings:
@table @code
@item -n
@@ -7482,22 +7877,38 @@ Suppresses the normal change of directory when removing directories
from the stack, so that only the stack is manipulated.
@item +@var{N}
Removes the @var{N}th directory (counting from the left of the
-list printed by @code{dirs}), starting with zero.
+list printed by @code{dirs}), starting with zero, from the stack.
@item -@var{N}
Removes the @var{N}th directory (counting from the right of the
-list printed by @code{dirs}), starting with zero.
+list printed by @code{dirs}), starting with zero, from the stack.
@end table
+If the top element of the directory stack is modified, and
+the @option{-n} option was not supplied, @code{popd} uses the @code{cd}
+builtin to change to the directory at the top of the stack.
+If the @code{cd} fails, @code{popd} returns a non-zero value.
+
+Otherwise, @code{popd} returns an unsuccessful status if
+an invalid option is encountered, the directory stack
+is empty, or a non-existent directory stack entry is specified.
+
+If the @code{popd} command is successful,
+Bash runs @code{dirs} to show the final contents of the directory stack,
+and the return status is 0.
+
@btindex pushd
@item pushd
@example
pushd [-n] [@var{+N} | @var{-N} | @var{dir}]
@end example
-Save the current directory on the top of the directory stack
-and then @code{cd} to @var{dir}.
-With no arguments, @code{pushd} exchanges the top two directories
-and makes the new top the current directory.
+Adds a directory to the top of the directory stack, or rotates
+the stack, making the new top of the stack the current working
+directory.
+With no arguments, @code{pushd} exchanges the top two elements
+of the directory stack.
+
+Arguments, if supplied, have the following meanings:
@table @code
@item -n
@@ -7512,19 +7923,32 @@ Brings the @var{N}th directory (counting from the right of the
list printed by @code{dirs}, starting with zero) to the top of
the list by rotating the stack.
@item @var{dir}
-Makes @var{dir} be the top of the stack, making
-it the new current directory as if it had been supplied as an argument
-to the @code{cd} builtin.
+Makes @var{dir} be the top of the stack.
@end table
+
+After the stack has been modified, if the @option{-n} option was not
+supplied, @code{pushd} uses the @code{cd} builtin to change to the
+directory at the top of the stack.
+If the @code{cd} fails, @code{pushd} returns a non-zero value.
+
+Otherwise, if no arguments are supplied, @code{pushd} returns 0 unless the
+directory stack is empty.
+When rotating the directory stack, @code{pushd} returns 0 unless
+the directory stack is empty or a non-existent directory stack element
+is specified.
+
+If the @code{pushd} command is successful,
+Bash runs @code{dirs} to show the final contents of the directory stack.
+
@end table
@node Controlling the Prompt
@section Controlling the Prompt
@cindex prompting
-Bash examines the value of the array variable @env{PROMPT_COMMANDS} just before
+Bash examines the value of the array variable @env{PROMPT_COMMAND} just before
printing each primary prompt.
-If any elements in @env{PROMPT_COMMANDS} are set and non-null, Bash
+If any elements in @env{PROMPT_COMMAND} are set and non-null, Bash
executes each value, in numeric order,
just as if it had been typed on the command line.
@@ -7573,7 +7997,8 @@ The version of Bash (e.g., 2.00)
@item \V
The release of Bash, version + patchlevel (e.g., 2.00.0)
@item \w
-The current working directory, with @env{$HOME} abbreviated with a tilde
+The value of the @code{PWD} shell variable (@env{$PWD}),
+with @env{$HOME} abbreviated with a tilde
(uses the @env{$PROMPT_DIRTRIM} variable).
@item \W
The basename of @env{$PWD}, with @env{$HOME} abbreviated with a tilde.
@@ -7658,7 +8083,7 @@ Using the @code{enable} builtin command to enable disabled shell builtins.
@item
Specifying the @option{-p} option to the @code{command} builtin.
@item
-Turning off restricted mode with @samp{set +r} or @samp{set +o restricted}.
+Turning off restricted mode with @samp{set +r} or @samp{shopt -u restricted_shell}.
@end itemize
These restrictions are enforced after any startup files are read.
@@ -7670,8 +8095,8 @@ the shell spawned to execute the script.
The restricted shell mode is only one component of a useful restricted
environment. It should be accompanied by setting @env{PATH} to a value
that allows execution of only a few verified commands (commands that
-allow shell escapes are particularly vulnerable), leaving the user
-in a non-writable directory other than his home directory after login,
+allow shell escapes are particularly vulnerable), changing the current
+directory to a non-writable directory other than @env{$HOME} after login,
not allowing the restricted shell to execute shell scripts, and cleaning
the environment of variables that cause some commands to modify their
behavior (e.g., @env{VISUAL} or @env{PAGER}).
@@ -7725,6 +8150,13 @@ Reserved words appearing in a context where reserved words are recognized
do not undergo alias expansion.
@item
+Alias expansion is performed when initially parsing a command substitution.
+The default mode generally defers it, when enabled, until the command
+substitution is executed. This means that command substitution will not
+expand aliases that are defined after the command substitution is initially
+parsed (e.g., as part of a function definition).
+
+@item
The @sc{posix} @env{PS1} and @env{PS2} expansions of @samp{!} to
the history number and @samp{!!} to @samp{!} are enabled,
and parameter expansion is performed on the values of @env{PS1} and
@@ -7818,7 +8250,10 @@ a value to a readonly variable.
@item
A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a special
-builtin, but not with any other simple command.
+builtin, but not with any other simple command. For any other simple
+command, the shell aborts execution of that command, and execution continues
+at the top level ("the shell shall not perform any further processing of the
+command in which the error occurred").
@item
A non-interactive shell exits with an error status if the iteration
@@ -7846,7 +8281,7 @@ While variable indirection is available, it may not be applied to the
@samp{#} and @samp{?} special parameters.
@item
-When expanding the @samp{*} special parameter in a pattern context where the
+Expanding the @samp{*} special parameter in a pattern context where the
expansion is double-quoted does not treat the @code{$*} as if it were
double-quoted.
@@ -7926,16 +8361,16 @@ variable values without quotes, unless they contain shell metacharacters,
even if the result contains nonprinting characters.
@item
-When the @code{cd} builtin is invoked in @var{logical} mode, and the pathname
+When the @code{cd} builtin is invoked in logical mode, and the pathname
constructed from @code{$PWD} and the directory name supplied as an argument
does not refer to an existing directory, @code{cd} will fail instead of
-falling back to @var{physical} mode.
+falling back to physical mode.
@item
When the @code{cd} builtin cannot change a directory because the
length of the pathname
constructed from @code{$PWD} and the directory name supplied as an argument
-exceeds @var{PATH_MAX} when all symbolic links are expanded, @code{cd} will
+exceeds @code{PATH_MAX} when all symbolic links are expanded, @code{cd} will
fail instead of attempting to use only the supplied directory name.
@item
@@ -7981,6 +8416,12 @@ If Bash receives a trapped signal while executing @code{read}, the trap
handler executes and @code{read} returns an exit status greater than 128.
@item
+The @code{printf} builtin uses @code{double} (via @code{strtod}) to convert
+arguments corresponding to floating point conversion specifiers, instead of
+@code{long double} if it's available. The @samp{L} length modifier forces
+@code{printf} to use @code{long double} if it's available.
+
+@item
Bash removes an exited background process's status from the list of such
statuses after the @code{wait} builtin is used to obtain it.
@@ -8012,8 +8453,8 @@ the @option{--enable-strict-posix-default} to @code{configure} when building
@cindex Compatibility Level
@cindex Compatibility Mode
-Bash-4.0 introduced the concept of a `shell compatibility level', specified
-as a set of options to the shopt builtin
+Bash-4.0 introduced the concept of a @dfn{shell compatibility level},
+specified as a set of options to the shopt builtin
(@code{compat31},
@code{compat32},
@code{compat40},
@@ -8029,7 +8470,7 @@ behavior. It's intended to be a temporary solution.
This section does not mention behavior that is standard for a particular
version (e.g., setting @code{compat32} means that quoting the rhs of the regexp
matching operator quotes special regexp characters in the word, which is
-default behavior in bash-3.2 and above).
+default behavior in bash-3.2 and subsequent versions).
If a user enables, say, @code{compat32}, it may affect the behavior of other
compatibility levels up to and including the current compatibility level.
@@ -8129,7 +8570,7 @@ are not special within double-quoted word expansions
@item
the shell does not print a warning message if an attempt is made to
use a quoted compound assignment as an argument to declare
-(declare -a foo='(1 2)'). Later versions warn that this usage is
+(e.g., declare -a foo='(1 2)'). Later versions warn that this usage is
deprecated
@item
word expansion errors are considered non-fatal errors that cause the
@@ -8174,6 +8615,49 @@ printed an informational message to that effect, even when producing
output that can be reused as input. Bash-5.1 suppresses that message
when the @option{-l} option is supplied.
@end itemize
+
+@item compat51 (set using BASH_COMPAT)
+@itemize @bullet
+@item
+The @code{unset} builtin will unset the array @code{a} given an argument like
+@samp{a[@@]}.
+Bash-5.2 will unset an element with key @samp{@@} (associative arrays)
+or remove all the elements without unsetting the array (indexed arrays)
+@item
+arithmetic commands ( ((...)) ) and the expressions in an arithmetic for
+statement can be expanded more than once
+@item
+expressions used as arguments to arithmetic operators in the @code{[[}
+conditional command can be expanded more than once
+@item
+the expressions in substring parameter brace expansion can be
+expanded more than once
+@item
+the expressions in the $(( ... )) word expansion can be expanded
+more than once
+@item
+arithmetic expressions used as indexed array subscripts can be
+expanded more than once
+@item
+@code{test -v}, when given an argument of @samp{A[@@]}, where @var{A} is
+an existing associative array, will return true if the array has any set
+elements.
+Bash-5.2 will look for and report on a key named @samp{@@}
+@item
+the $@{@var{parameter}[:]=@var{value}@} word expansion will return
+@var{value}, before any variable-specific transformations have been
+performed (e.g., converting to lowercase).
+Bash-5.2 will return the final value assigned to the variable.
+@item
+Parsing command substitutions will behave as if extended glob
+(@pxref{The Shopt Builtin})
+is enabled, so that parsing a command substitution containing an extglob
+pattern (say, as part of a shell function) will not fail.
+This assumes the intent is to enable extglob before the command is executed
+and word expansions are performed.
+It will fail at word expansion time if extglob hasn't been
+enabled by the time the command is executed.
+@end itemize
@end table
@node Job Control
@@ -8237,9 +8721,9 @@ which, unless caught, suspends the process.
If the operating system on which Bash is running supports
job control, Bash contains facilities to use it. Typing the
-@var{suspend} character (typically @samp{^Z}, Control-Z) while a
+@dfn{suspend} character (typically @samp{^Z}, Control-Z) while a
process is running causes that process to be stopped and returns
-control to Bash. Typing the @var{delayed suspend} character
+control to Bash. Typing the @dfn{delayed suspend} character
(typically @samp{^Y}, Control-Y) causes the process to be stopped
when it attempts to read input from the terminal, and control to
be returned to Bash. The user then manipulates the state of
@@ -8250,7 +8734,7 @@ takes effect immediately, and has the additional side effect of
causing pending output and typeahead to be discarded.
There are a number of ways to refer to a job in the shell. The
-character @samp{%} introduces a job specification (@var{jobspec}).
+character @samp{%} introduces a job specification (@dfn{jobspec}).
Job number @code{n} may be referred to as @samp{%n}.
The symbols @samp{%%} and @samp{%+} refer to the shell's notion of the
@@ -8410,7 +8894,7 @@ the last-executed process substitution, if its process id is the same as
@var{$!},
and the return status is zero.
If the @option{-n} option is supplied, @code{wait} waits for a single job
-from the list of @var{pids} or @var{jobspecs} or, if no arguments are
+from the list of @var{pid}s or @var{jobspec}s or, if no arguments are
supplied, any job,
to complete and returns its exit status.
If none of the supplied arguments is a child of the shell, or if no arguments
@@ -8423,10 +8907,14 @@ The variable will be unset initially, before any assignment.
This is useful only when the @option{-n} option is supplied.
Supplying the @option{-f} option, when job control is enabled,
forces @code{wait} to wait for each @var{pid} or @var{jobspec} to
-terminate before returning its status, intead of returning when it changes
+terminate before returning its status, instead of returning when it changes
status.
If neither @var{jobspec} nor @var{pid} specifies an active child process
of the shell, the return status is 127.
+If @code{wait} is interrupted by a signal, the return status will be greater
+than 128, as described above (@pxref{Signals}).
+Otherwise, the return status is the exit status
+of the last process or job waited for.
@item disown
@btindex disown
@@ -8453,8 +8941,16 @@ suspend [-f]
Suspend the execution of this shell until it receives a
@code{SIGCONT} signal.
-A login shell cannot be suspended; the @option{-f}
+A login shell,
+or a shell without job control enabled,
+cannot be suspended; the @option{-f}
option can be used to override this and force the suspension.
+The return status is 0 unless the shell is a login shell
+or job control is not enabled
+and
+@option{-f}
+is not supplied.
+
@end table
When job control is not active, the @code{kill} and @code{wait}
@@ -8553,7 +9049,14 @@ Optionally, type @samp{make tests} to run the Bash test suite.
@item
Type @samp{make install} to install @code{bash} and @code{bashbug}.
-This will also install the manual pages and Info file.
+This will also install the manual pages and Info file, message translation
+files, some supplemental documentation, a number of example loadable
+builtin commands, and a set of header files for developing loadable
+builtins.
+You may need additional privileges to install @code{bash} to your
+desired destination, so @samp{sudo make install} might be required.
+More information about controlling the locations where @code{bash} and
+other files are installed is below (@pxref{Installation Names}).
@end enumerate
@@ -8561,7 +9064,7 @@ The @code{configure} shell script attempts to guess correct
values for various system-dependent variables used during
compilation. It uses those values to create a @file{Makefile} in
each directory of the package (the top directory, the
-@file{builtins}, @file{doc}, and @file{support} directories,
+@file{builtins}, @file{doc}, @file{po}, and @file{support} directories,
each directory under @file{lib}, and several others). It also creates a
@file{config.h} file containing system-dependent definitions.
Finally, it creates a shell script named @code{config.status} that you
@@ -8606,10 +9109,10 @@ to do them, and mail diffs or instructions to
considered for the next release.
The file @file{configure.ac} is used to create @code{configure}
-by a program called Autoconf. You only need
-@file{configure.ac} if you want to change it or regenerate
-@code{configure} using a newer version of Autoconf. If
-you do this, make sure you are using Autoconf version 2.50 or
+by a program called Autoconf.
+You only need @file{configure.ac} if you want to change it or regenerate
+@code{configure} using a newer version of Autoconf.
+If you do this, make sure you are using Autoconf version 2.69 or
newer.
You can remove the program binaries and object files from the
@@ -8655,7 +9158,7 @@ supply the @option{--srcdir=PATH} argument to tell @code{configure} where the
source files are. @code{configure} automatically checks for the
source code in the directory that @code{configure} is in and in `..'.
-If you have to use a @code{make} that does not supports the @code{VPATH}
+If you have to use a @code{make} that does not support the @code{VPATH}
variable, you can compile Bash for one architecture at a
time in the source code directory. After you have installed
Bash for one architecture, use @samp{make distclean} before
@@ -8680,24 +9183,55 @@ directories for other architectures.
@section Installation Names
By default, @samp{make install} will install into
-@file{/usr/local/bin}, @file{/usr/local/man}, etc. You can
-specify an installation prefix other than @file{/usr/local} by
+@file{/usr/local/bin}, @file{/usr/local/man}, etc.;
+that is, the @dfn{installation prefix} defaults to @file{/usr/local}.
+You can specify an installation prefix other than @file{/usr/local} by
giving @code{configure} the option @option{--prefix=@var{PATH}},
-or by specifying a value for the @code{DESTDIR} @samp{make}
-variable when running @samp{make install}.
+or by specifying a value for the @env{prefix} @samp{make}
+variable when running @samp{make install}
+(e.g., @samp{make install prefix=@var{PATH}}).
+The @env{prefix} variable provides a default for @env{exec_prefix} and
+other variables used when installing bash.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files.
If you give @code{configure} the option
@option{--exec-prefix=@var{PATH}}, @samp{make install} will use
@var{PATH} as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
+Documentation and other data files will still use the regular prefix.
+
+If you would like to change the installation locations for a single run,
+you can specify these variables as arguments to @code{make}:
+@samp{make install exec_prefix=/} will install @code{bash} and
+@code{bashbug} into @file{/bin} instead of the default @file{/usr/local/bin}.
+
+If you want to see the files bash will install and where it will install
+them without changing anything on your system, specify the variable
+@env{DESTDIR} as an argument to @code{make}. Its value should be the
+absolute directory path you'd like to use as the root of your sample
+installation tree. For example,
+
+@example
+mkdir /fs1/bash-install
+make install DESTDIR=/fs1/bash-install
+@end example
+
+@noindent
+will install @code{bash} into @file{/fs1/bash-install/usr/local/bin/bash},
+the documentation into directories within
+@file{/fs1/bash-install/usr/local/share}, the example loadable builtins into
+@file{/fs1/bash-install/usr/local/lib/bash}, and so on.
+You can use the usual @env{exec_prefix} and @env{prefix} variables to alter
+the directory paths beneath the value of @env{DESTDIR}.
+
+The GNU Makefile standards provide a more complete description of these
+variables and their effects.
@node Specifying the System Type
@section Specifying the System Type
There may be some features @code{configure} can not figure out
-automatically, but need to determine by the type of host Bash
+automatically, but needs to determine by the type of host Bash
will run on. Usually @code{configure} can figure that
out, but if it prints a message saying it can not guess the host
type, give it the @option{--host=TYPE} option. @samp{TYPE} can
@@ -8808,9 +9342,13 @@ the installed version of Readline in subdirectories of that directory
(include files in @var{PREFIX}/@code{include} and the library in
@var{PREFIX}/@code{lib}).
-@item --with-purify
-Define this to use the Purify memory allocation checker from Rational
-Software.
+@item --with-libintl-prefix[=@var{PREFIX}]
+Define this to make Bash link with a locally-installed version of the
+libintl library instead of the version in @file{lib/intl}.
+
+@item --with-libiconv-prefix[=@var{PREFIX}]
+Define this to make Bash look for libiconv in @var{PREFIX} instead of the
+standard system locations. There is no version included with Bash.
@item --enable-minimal-config
This produces a shell with minimal features, close to the historical
@@ -8818,7 +9356,7 @@ Bourne shell.
@end table
There are several @option{--enable-} options that alter how Bash is
-compiled and linked, rather than changing run-time features.
+compiled, linked, and installed, rather than changing run-time features.
@table @code
@item --enable-largefile
@@ -8831,17 +9369,26 @@ default, if the operating system provides large file support.
This builds a Bash binary that produces profiling information to be
processed by @code{gprof} each time it is executed.
+@item --enable-separate-helpfiles
+Use external files for the documentation displayed by the @code{help} builtin
+instead of storing the text internally.
+
@item --enable-static-link
This causes Bash to be linked statically, if @code{gcc} is being used.
This could be used to build a version to use as root's shell.
+
@end table
The @samp{minimal-config} option can be used to disable all of
the following options, but it is processed first, so individual
options may be enabled using @samp{enable-@var{feature}}.
-All of the following options except for @samp{disabled-builtins},
-@samp{direxpand-default}, and
+All of the following options except for
+@samp{alt-array-implementation},
+@samp{disabled-builtins},
+@samp{direxpand-default},
+@samp{strict-posix-default},
+and
@samp{xpg-echo-default} are
enabled by default, unless the operating system does not provide the
necessary support.
@@ -8851,6 +9398,11 @@ necessary support.
Allow alias expansion and include the @code{alias} and @code{unalias}
builtins (@pxref{Aliases}).
+@item --enable-alt-array-implementation
+This builds bash using an alternate implementation of arrays
+(@pxref{Arrays}) that provides faster access at the expense of using
+more memory (sometimes many times more, depending on how sparse an array is).
+
@item --enable-arith-for-command
Include support for the alternate form of the @code{for} command
that behaves like the C language @code{for} statement
@@ -8871,7 +9423,7 @@ See @ref{Brace Expansion}, for a complete description.
@item --enable-casemod-attributes
Include support for case-modifying attributes in the @code{declare} builtin
-and assignment statements. Variables with the @var{uppercase} attribute,
+and assignment statements. Variables with the @code{uppercase} attribute,
for example, will have their values converted to uppercase upon assignment.
@item --enable-casemod-expansion
@@ -8930,7 +9482,7 @@ Include support for the extended pattern matching features described
above under @ref{Pattern Matching}.
@item --enable-extended-glob-default
-Set the default value of the @var{extglob} shell option described
+Set the default value of the @code{extglob} shell option described
above under @ref{The Shopt Builtin} to be enabled.
@item --enable-function-import
@@ -8939,7 +9491,7 @@ instance of the shell from the environment. This option is enabled by
default.
@item --enable-glob-asciirange-default
-Set the default value of the @var{globasciiranges} shell option described
+Set the default value of the @code{globasciiranges} shell option described
above under @ref{The Shopt Builtin} to be enabled.
This controls the behavior of character ranges when used in pattern matching
bracket expressions.
@@ -8994,10 +9546,6 @@ when called as @code{rbash}, enters a restricted mode. See
Include the @code{select} compound command, which allows the generation of
simple menus (@pxref{Conditional Constructs}).
-@item --enable-separate-helpfiles
-Use external files for the documentation displayed by the @code{help} builtin
-instead of storing the text internally.
-
@item --enable-single-help-strings
Store the text displayed by the @code{help} builtin as a single string for
each help topic. This aids in translating the text to different languages.
@@ -9007,6 +9555,10 @@ literals.
@item --enable-strict-posix-default
Make Bash @sc{posix}-conformant by default (@pxref{Bash POSIX Mode}).
+@item --enable-translatable-strings
+Enable support for @code{$"@var{string}"} translatable strings
+(@pxref{Locale Translation}).
+
@item --enable-usg-echo-default
A synonym for @code{--enable-xpg-echo-default}.
@@ -9036,7 +9588,8 @@ But first, you should
make sure that it really is a bug, and that it appears in the latest
version of Bash.
The latest version of Bash is always available for FTP from
-@uref{ftp://ftp.gnu.org/pub/gnu/bash/}.
+@uref{ftp://ftp.gnu.org/pub/gnu/bash/} and from
+@uref{http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz}.
Once you have determined that a bug actually exists, use the
@code{bashbug} command to submit a bug report.
@@ -9197,9 +9750,9 @@ which expands to the substring of @code{var}'s value of length
@item
The expansion
-@code{$@{var/[/]}@var{pattern}@code{[/}@var{replacement}@code{]@}},
+@code{$@{@var{var}/[/]}@var{pattern}@code{[/}@var{replacement}@code{]@}},
which matches @var{pattern} and replaces it with @var{replacement} in
-the value of @code{var}, is available (@pxref{Shell Parameter Expansion}).
+the value of @var{var}, is available (@pxref{Shell Parameter Expansion}).
@item
The expansion @code{$@{!@var{prefix}*@}} expansion, which expands to
@@ -9207,7 +9760,7 @@ the names of all shell variables whose names begin with @var{prefix},
is available (@pxref{Shell Parameter Expansion}).
@item
-Bash has @var{indirect} variable expansion using @code{$@{!word@}}
+Bash has indirect variable expansion using @code{$@{!word@}}
(@pxref{Shell Parameter Expansion}).
@item
@@ -9243,8 +9796,8 @@ The Bourne shell uses only @samp{!}.
@item
Bash implements the full set of @sc{posix} filename expansion operators,
-including @var{character classes}, @var{equivalence classes}, and
-@var{collating symbols} (@pxref{Filename Expansion}).
+including character classes, equivalence classes, and
+collating symbols (@pxref{Filename Expansion}).
@item
Bash implements extended pattern matching features when the @code{extglob}
@@ -9390,7 +9943,7 @@ which specifies the behavior based on the number of arguments.
@item
Bash includes the @code{caller} builtin, which displays the context of
any active subroutine call (a shell function or a script executed with
-the @code{.} or @code{source} builtins). This supports the bash
+the @code{.} or @code{source} builtins). This supports the Bash
debugger.
@item
@@ -9416,7 +9969,7 @@ The @code{ERR} trap is not inherited by shell functions unless the
The @code{trap} builtin (@pxref{Bourne Shell Builtins}) allows a
@code{RETURN} pseudo-signal specification, similar to
@code{EXIT} and @code{DEBUG}.
-Commands specified with an @code{RETURN} trap are executed before
+Commands specified with a @code{RETURN} trap are executed before
execution resumes after a shell function or a shell script executed with
@code{.} or @code{source} returns.
The @code{RETURN} trap is not inherited by shell functions unless the
diff --git a/doc/builtins.0 b/doc/builtins.0
index 614524eb..1a9b3ede 100644
--- a/doc/builtins.0
+++ b/doc/builtins.0
@@ -3,11 +3,11 @@ BASH_BUILTINS(1) General Commands Manual BASH_BUILTINS(1)
NNAAMMEE
- bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command,
- compgen, complete, compopt, continue, declare, dirs, disown, echo, en-
- able, eval, exec, exit, export, false, fc, fg, getopts, hash, help,
- history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd,
- pwd, read, readonly, return, set, shift, shopt, source, suspend, test,
+ :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen,
+ complete, compopt, continue, declare, dirs, disown, echo, enable, eval,
+ exec, exit, export, false, fc, fg, getopts, hash, help, history, jobs,
+ kill, let, local, logout, mapfile, popd, printf, pushd, pwd, read,
+ readarray, readonly, return, set, shift, shopt, source, suspend, test,
times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait -
bash built-in commands, see bbaasshh(1)
@@ -32,21 +32,21 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
vironment and return the exit status of the last command exe-
cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash,
filenames in PPAATTHH are used to find the directory containing
- _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable.
- When bbaasshh is not in _p_o_s_i_x _m_o_d_e, the current directory is
- searched if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh option
- to the sshhoopptt builtin command is turned off, the PPAATTHH is not
- searched. If any _a_r_g_u_m_e_n_t_s are supplied, they become the posi-
- tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the po-
- sitional parameters are unchanged. If the --TT option is enabled,
- ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any DDEEBBUUGG trap
- string is saved and restored around the call to ssoouurrccee, and
- ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If --TT is not
- set, and the sourced file changes the DDEEBBUUGG trap, the new value
- is retained when ssoouurrccee completes. The return status is the
- status of the last command exited within the script (0 if no
- commands are executed), and false if _f_i_l_e_n_a_m_e is not found or
- cannot be read.
+ _f_i_l_e_n_a_m_e, but _f_i_l_e_n_a_m_e does not need to be executable. The file
+ searched for in PPAATTHH need not be executable. When bbaasshh is not
+ in _p_o_s_i_x _m_o_d_e, it searches the current directory if no file is
+ found in PPAATTHH. If the ssoouurrcceeppaatthh option to the sshhoopptt builtin
+ command is turned off, the PPAATTHH is not searched. If any _a_r_g_u_-
+ _m_e_n_t_s are supplied, they become the positional parameters when
+ _f_i_l_e_n_a_m_e is executed. Otherwise the positional parameters are
+ unchanged. If the --TT option is enabled, .. inherits any trap on
+ DDEEBBUUGG; if it is not, any DDEEBBUUGG trap string is saved and restored
+ around the call to .., and .. unsets the DDEEBBUUGG trap while it exe-
+ cutes. If --TT is not set, and the sourced file changes the DDEEBBUUGG
+ trap, the new value is retained when .. completes. The return
+ status is the status of the last command exited within the
+ script (0 if no commands are executed), and false if _f_i_l_e_n_a_m_e is
+ not found or cannot be read.
aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
AAlliiaass with no arguments or with the --pp option prints the list of
@@ -73,29 +73,31 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
bbiinndd [--mm _k_e_y_m_a_p] --xx _k_e_y_s_e_q:_s_h_e_l_l_-_c_o_m_m_a_n_d
bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e
bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d
+ bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d_-_l_i_n_e
Display current rreeaaddlliinnee key and function bindings, bind a key
sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee
variable. Each non-option argument is a command as it would ap-
- pear in _._i_n_p_u_t_r_c, but each binding or command must be passed as
- a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. Op-
- tions, if supplied, have the following meanings:
+ pear in a rreeaaddlliinnee initialization file such as _._i_n_p_u_t_r_c, but
+ each binding or command must be passed as a separate argument;
+ e.g., '"\C-x\C-r": re-read-init-file'. Options, if supplied,
+ have the following meanings:
--mm _k_e_y_m_a_p
Use _k_e_y_m_a_p as the keymap to be affected by the subsequent
bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_-
- _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d,
- and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e
- is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_-
+ _d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_m_o_v_e_, _v_i_-_c_o_m_m_a_n_d,
+ and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d (_v_i_-_m_o_v_e
+ is also a synonym); _e_m_a_c_s is equivalent to _e_m_a_c_s_-_s_t_a_n_-
_d_a_r_d.
--ll List the names of all rreeaaddlliinnee functions.
- --pp Display rreeaaddlliinnee function names and bindings in such a
+ --pp Display rreeaaddlliinnee function names and bindings in such a
way that they can be re-read.
--PP List current rreeaaddlliinnee function names and bindings.
- --ss Display rreeaaddlliinnee key sequences bound to macros and the
- strings they output in such a way that they can be re-
+ --ss Display rreeaaddlliinnee key sequences bound to macros and the
+ strings they output in such a way that they can be re-
read.
- --SS Display rreeaaddlliinnee key sequences bound to macros and the
+ --SS Display rreeaaddlliinnee key sequences bound to macros and the
strings they output.
- --vv Display rreeaaddlliinnee variable names and values in such a way
+ --vv Display rreeaaddlliinnee variable names and values in such a way
that they can be re-read.
--VV List current rreeaaddlliinnee variable names and values.
--ff _f_i_l_e_n_a_m_e
@@ -108,14 +110,17 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
Remove any current binding for _k_e_y_s_e_q.
--xx _k_e_y_s_e_q::_s_h_e_l_l_-_c_o_m_m_a_n_d
Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is en-
- tered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets
- the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd--
+ tered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets
+ the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd--
lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT and RREEAADDLLIINNEE__MMAARRKK
- variables to the current location of the insertion point
- and the saved insertion point (the mark), respectively.
- If the executed command changes the value of any of RREEAADD--
- LLIINNEE__LLIINNEE, RREEAADDLLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new
- values will be reflected in the editing state.
+ variables to the current location of the insertion point
+ and the saved insertion point (the mark), respectively.
+ The shell assigns any numeric argument the user supplied
+ to the RREEAADDLLIINNEE__AARRGGUUMMEENNTT variable. If there was no argu-
+ ment, that variable is not set. If the executed command
+ changes the value of any of RREEAADDLLIINNEE__LLIINNEE, RREEAADD--
+ LLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new values will be
+ reflected in the editing state.
--XX List all key sequences bound to shell commands and the
associated commands in a format that can be reused as in-
put.
@@ -153,92 +158,94 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
ccdd [--LL|[--PP [--ee]] [-@]] [_d_i_r]
Change the current directory to _d_i_r. if _d_i_r is not supplied,
- the value of the HHOOMMEE shell variable is the default. Any addi-
- tional arguments following _d_i_r are ignored. The variable CCDDPPAATTHH
- defines the search path for the directory containing _d_i_r: each
- directory name in CCDDPPAATTHH is searched for _d_i_r. Alternative di-
- rectory names in CCDDPPAATTHH are separated by a colon (:). A null
- directory name in CCDDPPAATTHH is the same as the current directory,
- i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not
- used. The --PP option causes ccdd to use the physical directory
- structure by resolving symbolic links while traversing _d_i_r and
- before processing instances of _._. in _d_i_r (see also the --PP option
- to the sseett builtin command); the --LL option forces symbolic links
- to be followed by resolving the link after processing instances
- of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing
- the immediately previous pathname component from _d_i_r, back to a
- slash or the beginning of _d_i_r. If the --ee option is supplied
- with --PP, and the current working directory cannot be success-
- fully determined after a successful directory change, ccdd will
- return an unsuccessful status. On systems that support it, the
- --@@ option presents the extended attributes associated with a
- file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD
- before the directory change is attempted. If a non-empty direc-
- tory name from CCDDPPAATTHH is used, or if -- is the first argument,
- and the directory change is successful, the absolute pathname of
- the new working directory is written to the standard output.
- The return value is true if the directory was successfully
- changed; false otherwise.
+ the value of the HHOOMMEE shell variable is the default. The vari-
+ able CCDDPPAATTHH defines the search path for the directory containing
+ _d_i_r: each directory name in CCDDPPAATTHH is searched for _d_i_r. Alter-
+ native directory names in CCDDPPAATTHH are separated by a colon (:).
+ A null directory name in CCDDPPAATTHH is the same as the current di-
+ rectory, i.e., ``..''. If _d_i_r begins with a slash (/), then CCDD--
+ PPAATTHH is not used. The --PP option causes ccdd to use the physical
+ directory structure by resolving symbolic links while traversing
+ _d_i_r and before processing instances of _._. in _d_i_r (see also the
+ --PP option to the sseett builtin command); the --LL option forces sym-
+ bolic links to be followed by resolving the link after process-
+ ing instances of _._. in _d_i_r. If _._. appears in _d_i_r, it is pro-
+ cessed by removing the immediately previous pathname component
+ from _d_i_r, back to a slash or the beginning of _d_i_r. If the --ee
+ option is supplied with --PP, and the current working directory
+ cannot be successfully determined after a successful directory
+ change, ccdd will return an unsuccessful status. On systems that
+ support it, the --@@ option presents the extended attributes asso-
+ ciated with a file as a directory. An argument of -- is con-
+ verted to $$OOLLDDPPWWDD before the directory change is attempted. If
+ a non-empty directory name from CCDDPPAATTHH is used, or if -- is the
+ first argument, and the directory change is successful, the ab-
+ solute pathname of the new working directory is written to the
+ standard output. If the directory change is successful, ccdd sets
+ the value of the PPWWDD environment variable to the new directory
+ name, and sets the OOLLDDPPWWDD environment variable to the value of
+ the current working directory before the change. The return
+ value is true if the directory was successfully changed; false
+ otherwise.
ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...]
- Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function
+ Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function
lookup. Only builtin commands or commands found in the PPAATTHH are
- executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is
- performed using a default value for PPAATTHH that is guaranteed to
- find all of the standard utilities. If either the --VV or --vv op-
- tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv
- option causes a single word indicating the command or filename
+ executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is
+ performed using a default value for PPAATTHH that is guaranteed to
+ find all of the standard utilities. If either the --VV or --vv op-
+ tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv
+ option causes a single word indicating the command or filename
used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a
- more verbose description. If the --VV or --vv option is supplied,
- the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If
+ more verbose description. If the --VV or --vv option is supplied,
+ the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If
neither option is supplied and an error occurred or _c_o_m_m_a_n_d can-
- not be found, the exit status is 127. Otherwise, the exit sta-
+ not be found, the exit status is 127. Otherwise, the exit sta-
tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d.
ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d]
- Generate possible completion matches for _w_o_r_d according to the
- _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee
- builtin with the exception of --pp and --rr, and write the matches
- to the standard output. When using the --FF or --CC options, the
- various shell variables set by the programmable completion fa-
+ Generate possible completion matches for _w_o_r_d according to the
+ _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee
+ builtin with the exception of --pp and --rr, and write the matches
+ to the standard output. When using the --FF or --CC options, the
+ various shell variables set by the programmable completion fa-
cilities, while available, will not have useful values.
The matches will be generated in the same way as if the program-
mable completion code had generated them directly from a comple-
- tion specification with the same flags. If _w_o_r_d is specified,
+ tion specification with the same flags. If _w_o_r_d is specified,
only those completions matching _w_o_r_d will be displayed.
- The return value is true unless an invalid option is supplied,
+ The return value is true unless an invalid option is supplied,
or no matches were generated.
- ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_-
+ ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_-
_p_a_t] [--WW _w_o_r_d_l_i_s_t]
- [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_-
+ [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_-
_f_i_x] _n_a_m_e [_n_a_m_e _._._.]
ccoommpplleettee --pprr [--DDEEII] [_n_a_m_e ...]
- Specify how arguments to each _n_a_m_e should be completed. If the
- --pp option is supplied, or if no options are supplied, existing
- completion specifications are printed in a way that allows them
+ Specify how arguments to each _n_a_m_e should be completed. If the
+ --pp option is supplied, or if no options are supplied, existing
+ completion specifications are printed in a way that allows them
to be reused as input. The --rr option removes a completion spec-
- ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com-
+ ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com-
pletion specifications. The --DD option indicates that other sup-
- plied options and actions should apply to the ``default'' com-
- mand completion; that is, completion attempted on a command for
- which no completion has previously been defined. The --EE option
- indicates that other supplied options and actions should apply
- to ``empty'' command completion; that is, completion attempted
- on a blank line. The --II option indicates that other supplied
- options and actions should apply to completion on the initial
- non-assignment word on the line, or after a command delimiter
- such as ;; or ||, which is usually command name completion. If
- multiple options are supplied, the --DD option takes precedence
+ plied options and actions should apply to the ``default'' com-
+ mand completion; that is, completion attempted on a command for
+ which no completion has previously been defined. The --EE option
+ indicates that other supplied options and actions should apply
+ to ``empty'' command completion; that is, completion attempted
+ on a blank line. The --II option indicates that other supplied
+ options and actions should apply to completion on the initial
+ non-assignment word on the line, or after a command delimiter
+ such as ;; or ||, which is usually command name completion. If
+ multiple options are supplied, the --DD option takes precedence
over --EE, and both take precedence over --II. If any of --DD, --EE, or
- --II are supplied, any other _n_a_m_e arguments are ignored; these
+ --II are supplied, any other _n_a_m_e arguments are ignored; these
completions only apply to the case specified by the option.
- The process of applying these completion specifications when
- word completion is attempted is described above under PPrrooggrraamm--
- mmaabbllee CCoommpplleettiioonn.
+ The process of applying these completion specifications when
+ word completion is attempted is described in _b_a_s_h_(_1_).
Other options, if specified, have the following meanings. The
arguments to the --GG, --WW, and --XX options (and, if necessary, the
@@ -320,196 +327,197 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
ified as --vv.
--CC _c_o_m_m_a_n_d
_c_o_m_m_a_n_d is executed in a subshell environment, and its
- output is used as the possible completions.
+ output is used as the possible completions. Arguments
+ are passed as with the --FF option.
--FF _f_u_n_c_t_i_o_n
- The shell function _f_u_n_c_t_i_o_n is executed in the current
- shell environment. When the function is executed, the
+ The shell function _f_u_n_c_t_i_o_n is executed in the current
+ shell environment. When the function is executed, the
first argument ($$11) is the name of the command whose ar-
guments are being completed, the second argument ($$22) is
the word being completed, and the third argument ($$33) is
- the word preceding the word being completed on the cur-
- rent command line. When it finishes, the possible com-
- pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY
+ the word preceding the word being completed on the cur-
+ rent command line. When it finishes, the possible com-
+ pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY
array variable.
--GG _g_l_o_b_p_a_t
- The pathname expansion pattern _g_l_o_b_p_a_t is expanded to
+ The pathname expansion pattern _g_l_o_b_p_a_t is expanded to
generate the possible completions.
--PP _p_r_e_f_i_x
- _p_r_e_f_i_x is added at the beginning of each possible com-
+ _p_r_e_f_i_x is added at the beginning of each possible com-
pletion after all other options have been applied.
--SS _s_u_f_f_i_x
_s_u_f_f_i_x is appended to each possible completion after all
other options have been applied.
--WW _w_o_r_d_l_i_s_t
- The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS
- special variable as delimiters, and each resultant word
- is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t,
+ The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS
+ special variable as delimiters, and each resultant word
+ is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t,
in order to provide a mechanism for the words to contain
- shell metacharacters or characters in the value of IIFFSS.
- The possible completions are the members of the resul-
+ shell metacharacters or characters in the value of IIFFSS.
+ The possible completions are the members of the resul-
tant list which match the word being completed.
--XX _f_i_l_t_e_r_p_a_t
- _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion.
+ _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion.
It is applied to the list of possible completions gener-
- ated by the preceding options and arguments, and each
- completion matching _f_i_l_t_e_r_p_a_t is removed from the list.
- A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this
+ ated by the preceding options and arguments, and each
+ completion matching _f_i_l_t_e_r_p_a_t is removed from the list.
+ A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this
case, any completion not matching _f_i_l_t_e_r_p_a_t is removed.
- The return value is true unless an invalid option is supplied,
- an option other than --pp or --rr is supplied without a _n_a_m_e argu-
- ment, an attempt is made to remove a completion specification
+ The return value is true unless an invalid option is supplied,
+ an option other than --pp or --rr is supplied without a _n_a_m_e argu-
+ ment, an attempt is made to remove a completion specification
for a _n_a_m_e for which no specification exists, or an error occurs
adding a completion specification.
ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e]
- Modify completion options for each _n_a_m_e according to the _o_p_-
+ Modify completion options for each _n_a_m_e according to the _o_p_-
_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es are
- supplied. If no _o_p_t_i_o_ns are given, display the completion op-
- tions for each _n_a_m_e or the current completion. The possible
- values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin de-
- scribed above. The --DD option indicates that other supplied op-
- tions should apply to the ``default'' command completion; that
- is, completion attempted on a command for which no completion
+ supplied. If no _o_p_t_i_o_ns are given, display the completion op-
+ tions for each _n_a_m_e or the current completion. The possible
+ values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin de-
+ scribed above. The --DD option indicates that other supplied op-
+ tions should apply to the ``default'' command completion; that
+ is, completion attempted on a command for which no completion
has previously been defined. The --EE option indicates that other
- supplied options should apply to ``empty'' command completion;
- that is, completion attempted on a blank line. The --II option
+ supplied options should apply to ``empty'' command completion;
+ that is, completion attempted on a blank line. The --II option
indicates that other supplied options should apply to completion
- on the initial non-assignment word on the line, or after a com-
- mand delimiter such as ;; or ||, which is usually command name
+ on the initial non-assignment word on the line, or after a com-
+ mand delimiter such as ;; or ||, which is usually command name
completion.
- The return value is true unless an invalid option is supplied,
+ The return value is true unless an invalid option is supplied,
an attempt is made to modify the options for a _n_a_m_e for which no
completion specification exists, or an output error occurs.
ccoonnttiinnuuee [_n]
Resume the next iteration of the enclosing ffoorr, wwhhiillee, uunnttiill, or
- sseelleecctt loop. If _n is specified, resume at the _nth enclosing
- loop. _n must be >= 1. If _n is greater than the number of en-
- closing loops, the last enclosing loop (the ``top-level'' loop)
- is resumed. The return value is 0 unless _n is not greater than
+ sseelleecctt loop. If _n is specified, resume at the _nth enclosing
+ loop. _n must be >= 1. If _n is greater than the number of en-
+ closing loops, the last enclosing loop (the ``top-level'' loop)
+ is resumed. The return value is 0 unless _n is not greater than
or equal to 1.
ddeeccllaarree [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
ttyyppeesseett [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
- Declare variables and/or give them attributes. If no _n_a_m_es are
- given then display the values of variables. The --pp option will
+ Declare variables and/or give them attributes. If no _n_a_m_es are
+ given then display the values of variables. The --pp option will
display the attributes and values of each _n_a_m_e. When --pp is used
- with _n_a_m_e arguments, additional options, other than --ff and --FF,
- are ignored. When --pp is supplied without _n_a_m_e arguments, it
- will display the attributes and values of all variables having
+ with _n_a_m_e arguments, additional options, other than --ff and --FF,
+ are ignored. When --pp is supplied without _n_a_m_e arguments, it
+ will display the attributes and values of all variables having
the attributes specified by the additional options. If no other
- options are supplied with --pp, ddeeccllaarree will display the at-
- tributes and values of all shell variables. The --ff option will
+ options are supplied with --pp, ddeeccllaarree will display the at-
+ tributes and values of all shell variables. The --ff option will
restrict the display to shell functions. The --FF option inhibits
- the display of function definitions; only the function name and
+ the display of function definitions; only the function name and
attributes are printed. If the eexxttddeebbuugg shell option is enabled
- using sshhoopptt, the source file name and line number where each
- _n_a_m_e is defined are displayed as well. The --FF option implies
+ using sshhoopptt, the source file name and line number where each
+ _n_a_m_e is defined are displayed as well. The --FF option implies
--ff. The --gg option forces variables to be created or modified at
the global scope, even when ddeeccllaarree is executed in a shell func-
- tion. It is ignored in all other cases. The --II option causes
- local variables to inherit the attributes (except the _n_a_m_e_r_e_f
+ tion. It is ignored in all other cases. The --II option causes
+ local variables to inherit the attributes (except the _n_a_m_e_r_e_f
attribute) and value of any existing variable with the same _n_a_m_e
- at a surrounding scope. If there is no existing variable, the
+ at a surrounding scope. If there is no existing variable, the
local variable is initially unset. The following options can be
- used to restrict output to variables with the specified attri-
+ used to restrict output to variables with the specified attri-
bute or to give variables attributes:
- --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss
- above).
- --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss
- above).
+ --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss in
+ _b_a_s_h_(_1_)).
+ --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss in
+ _b_a_s_h_(_1_)).
--ff Use function names only.
--ii The variable is treated as an integer; arithmetic evalua-
- tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when
- the variable is assigned a value.
- --ll When the variable is assigned a value, all upper-case
- characters are converted to lower-case. The upper-case
+ tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN in _b_a_s_h_(_1_)) is performed
+ when the variable is assigned a value.
+ --ll When the variable is assigned a value, all upper-case
+ characters are converted to lower-case. The upper-case
attribute is disabled.
- --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name
- reference to another variable. That other variable is
- defined by the value of _n_a_m_e. All references, assign-
- ments, and attribute modifications to _n_a_m_e, except those
- using or changing the --nn attribute itself, are performed
- on the variable referenced by _n_a_m_e's value. The nameref
+ --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name
+ reference to another variable. That other variable is
+ defined by the value of _n_a_m_e. All references, assign-
+ ments, and attribute modifications to _n_a_m_e, except those
+ using or changing the --nn attribute itself, are performed
+ on the variable referenced by _n_a_m_e's value. The nameref
attribute cannot be applied to array variables.
--rr Make _n_a_m_es readonly. These names cannot then be assigned
values by subsequent assignment statements or unset.
--tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions in-
- herit the DDEEBBUUGG and RREETTUURRNN traps from the calling shell.
+ herit the DDEEBBUUGG and RREETTUURRNN traps from the calling shell.
The trace attribute has no special meaning for variables.
- --uu When the variable is assigned a value, all lower-case
- characters are converted to upper-case. The lower-case
+ --uu When the variable is assigned a value, all lower-case
+ characters are converted to upper-case. The lower-case
attribute is disabled.
- --xx Mark _n_a_m_es for export to subsequent commands via the en-
+ --xx Mark _n_a_m_es for export to subsequent commands via the en-
vironment.
- Using `+' instead of `-' turns off the attribute instead, with
- the exceptions that ++aa and ++AA may not be used to destroy array
- variables and ++rr will not remove the readonly attribute. When
+ Using `+' instead of `-' turns off the attribute instead, with
+ the exceptions that ++aa and ++AA may not be used to destroy array
+ variables and ++rr will not remove the readonly attribute. When
used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as
- with the llooccaall command, unless the --gg option is supplied. If a
- variable name is followed by =_v_a_l_u_e, the value of the variable
- is set to _v_a_l_u_e. When using --aa or --AA and the compound assign-
- ment syntax to create array variables, additional attributes do
- not take effect until subsequent assignments. The return value
+ with the llooccaall command, unless the --gg option is supplied. If a
+ variable name is followed by =_v_a_l_u_e, the value of the variable
+ is set to _v_a_l_u_e. When using --aa or --AA and the compound assign-
+ ment syntax to create array variables, additional attributes do
+ not take effect until subsequent assignments. The return value
is 0 unless an invalid option is encountered, an attempt is made
to define a function using ``-f foo=bar'', an attempt is made to
assign a value to a readonly variable, an attempt is made to as-
sign a value to an array variable without using the compound as-
- signment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a
- valid shell variable name, an attempt is made to turn off read-
- only status for a readonly variable, an attempt is made to turn
- off array status for an array variable, or an attempt is made to
- display a non-existent function with --ff.
+ signment syntax (see AArrrraayyss in _b_a_s_h_(_1_)), one of the _n_a_m_e_s is not
+ a valid shell variable name, an attempt is made to turn off
+ readonly status for a readonly variable, an attempt is made to
+ turn off array status for an array variable, or an attempt is
+ made to display a non-existent function with --ff.
ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]]
- Without options, displays the list of currently remembered di-
- rectories. The default display is on a single line with direc-
- tory names separated by spaces. Directories are added to the
- list with the ppuusshhdd command; the ppooppdd command removes entries
+ Without options, displays the list of currently remembered di-
+ rectories. The default display is on a single line with direc-
+ tory names separated by spaces. Directories are added to the
+ list with the ppuusshhdd command; the ppooppdd command removes entries
from the list. The current directory is always the first direc-
tory in the stack.
- --cc Clears the directory stack by deleting all of the en-
+ --cc Clears the directory stack by deleting all of the en-
tries.
- --ll Produces a listing using full pathnames; the default
+ --ll Produces a listing using full pathnames; the default
listing format uses a tilde to denote the home directory.
--pp Print the directory stack with one entry per line.
- --vv Print the directory stack with one entry per line, pre-
+ --vv Print the directory stack with one entry per line, pre-
fixing each entry with its index in the stack.
++_n Displays the _nth entry counting from the left of the list
shown by ddiirrss when invoked without options, starting with
zero.
- --_n Displays the _nth entry counting from the right of the
+ --_n Displays the _nth entry counting from the right of the
list shown by ddiirrss when invoked without options, starting
with zero.
- The return value is 0 unless an invalid option is supplied or _n
+ The return value is 0 unless an invalid option is supplied or _n
indexes beyond the end of the directory stack.
ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ]
- Without options, remove each _j_o_b_s_p_e_c from the table of active
- jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr
- option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option
- is given, each _j_o_b_s_p_e_c is not removed from the table, but is
- marked so that SSIIGGHHUUPP is not sent to the job if the shell re-
+ Without options, remove each _j_o_b_s_p_e_c from the table of active
+ jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr
+ option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option
+ is given, each _j_o_b_s_p_e_c is not removed from the table, but is
+ marked so that SSIIGGHHUUPP is not sent to the job if the shell re-
ceives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option means
- to remove or mark all jobs; the --rr option without a _j_o_b_s_p_e_c ar-
+ to remove or mark all jobs; the --rr option without a _j_o_b_s_p_e_c ar-
gument restricts operation to running jobs. The return value is
0 unless a _j_o_b_s_p_e_c does not specify a valid job.
eecchhoo [--nneeEE] [_a_r_g ...]
- Output the _a_r_gs, separated by spaces, followed by a newline.
- The return status is 0 unless a write error occurs. If --nn is
+ Output the _a_r_gs, separated by spaces, followed by a newline.
+ The return status is 0 unless a write error occurs. If --nn is
specified, the trailing newline is suppressed. If the --ee option
- is given, interpretation of the following backslash-escaped
- characters is enabled. The --EE option disables the interpreta-
- tion of these escape characters, even on systems where they are
- interpreted by default. The xxppgg__eecchhoo shell option may be used
- to dynamically determine whether or not eecchhoo expands these es-
- cape characters by default. eecchhoo does not interpret ---- to mean
- the end of options. eecchhoo interprets the following escape se-
+ is given, interpretation of the following backslash-escaped
+ characters is enabled. The --EE option disables the interpreta-
+ tion of these escape characters, even on systems where they are
+ interpreted by default. The xxppgg__eecchhoo shell option may be used
+ to dynamically determine whether or not eecchhoo expands these es-
+ cape characters by default. eecchhoo does not interpret ---- to mean
+ the end of options. eecchhoo interprets the following escape se-
quences:
\\aa alert (bell)
\\bb backspace
@@ -522,194 +530,200 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
\\tt horizontal tab
\\vv vertical tab
\\\\ backslash
- \\00_n_n_n the eight-bit character whose value is the octal value
+ \\00_n_n_n the eight-bit character whose value is the octal value
_n_n_n (zero to three octal digits)
- \\xx_H_H the eight-bit character whose value is the hexadecimal
+ \\xx_H_H the eight-bit character whose value is the hexadecimal
value _H_H (one or two hex digits)
- \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the
+ \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the
hexadecimal value _H_H_H_H (one to four hex digits)
\\UU_H_H_H_H_H_H_H_H
- the Unicode (ISO/IEC 10646) character whose value is the
+ the Unicode (ISO/IEC 10646) character whose value is the
hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits)
eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...]
- Enable and disable builtin shell commands. Disabling a builtin
+ Enable and disable builtin shell commands. Disabling a builtin
allows a disk command which has the same name as a shell builtin
- to be executed without specifying a full pathname, even though
- the shell normally searches for builtins before disk commands.
- If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are en-
- abled. For example, to use the tteesstt binary found via the PPAATTHH
- instead of the shell builtin version, run ``enable -n test''.
- The --ff option means to load the new builtin command _n_a_m_e from
+ to be executed without specifying a full pathname, even though
+ the shell normally searches for builtins before disk commands.
+ If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are en-
+ abled. For example, to use the tteesstt binary found via the PPAATTHH
+ instead of the shell builtin version, run ``enable -n test''.
+ The --ff option means to load the new builtin command _n_a_m_e from
shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading.
- The --dd option will delete a builtin previously loaded with --ff.
- If no _n_a_m_e arguments are given, or if the --pp option is supplied,
- a list of shell builtins is printed. With no other option argu-
- ments, the list consists of all enabled shell builtins. If --nn
- is supplied, only disabled builtins are printed. If --aa is sup-
- plied, the list printed includes all builtins, with an indica-
- tion of whether or not each is enabled. If --ss is supplied, the
- output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return
- value is 0 unless a _n_a_m_e is not a shell builtin or there is an
- error loading a new builtin from a shared object.
+ Bash will use the value of the BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH variable as a
+ colon-separated list of directories in which to search for _f_i_l_e_-
+ _n_a_m_e. The default is system-dependent. The --dd option will
+ delete a builtin previously loaded with --ff. If no _n_a_m_e argu-
+ ments are given, or if the --pp option is supplied, a list of
+ shell builtins is printed. With no other option arguments, the
+ list consists of all enabled shell builtins. If --nn is supplied,
+ only disabled builtins are printed. If --aa is supplied, the list
+ printed includes all builtins, with an indication of whether or
+ not each is enabled. If --ss is supplied, the output is re-
+ stricted to the POSIX _s_p_e_c_i_a_l builtins. If no options are sup-
+ plied and a _n_a_m_e is not a shell builtin, eennaabbllee will attempt to
+ load _n_a_m_e from a shared object named _n_a_m_e, as if the command
+ were ``enable -f _n_a_m_e _n_a_m_e . The return value is 0 unless a
+ _n_a_m_e is not a shell builtin or there is an error loading a new
+ builtin from a shared object.
eevvaall [_a_r_g ...]
- The _a_r_gs are read and concatenated together into a single com-
- mand. This command is then read and executed by the shell, and
- its exit status is returned as the value of eevvaall. If there are
+ The _a_r_gs are read and concatenated together into a single com-
+ mand. This command is then read and executed by the shell, and
+ its exit status is returned as the value of eevvaall. If there are
no _a_r_g_s, or only null arguments, eevvaall returns 0.
eexxeecc [--ccll] [--aa _n_a_m_e] [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t_s]]
- If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process
- is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If
+ If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process
+ is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If
the --ll option is supplied, the shell places a dash at the begin-
ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what _l_o_-
- _g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with
- an empty environment. If --aa is supplied, the shell passes _n_a_m_e
+ _g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with
+ an empty environment. If --aa is supplied, the shell passes _n_a_m_e
as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can-
- not be executed for some reason, a non-interactive shell exits,
- unless the eexxeeccffaaiill shell option is enabled. In that case, it
- returns failure. An interactive shell returns failure if the
- file cannot be executed. A subshell exits unconditionally if
- eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take
- effect in the current shell, and the return status is 0. If
+ not be executed for some reason, a non-interactive shell exits,
+ unless the eexxeeccffaaiill shell option is enabled. In that case, it
+ returns failure. An interactive shell returns failure if the
+ file cannot be executed. A subshell exits unconditionally if
+ eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take
+ effect in the current shell, and the return status is 0. If
there is a redirection error, the return status is 1.
eexxiitt [_n]
- Cause the shell to exit with a status of _n. If _n is omitted,
+ Cause the shell to exit with a status of _n. If _n is omitted,
the exit status is that of the last command executed. A trap on
EEXXIITT is executed before the shell terminates.
eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ...
eexxppoorrtt --pp
- The supplied _n_a_m_e_s are marked for automatic export to the envi-
- ronment of subsequently executed commands. If the --ff option is
- given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or
- if the --pp option is supplied, a list of names of all exported
- variables is printed. The --nn option causes the export property
+ The supplied _n_a_m_e_s are marked for automatic export to the envi-
+ ronment of subsequently executed commands. If the --ff option is
+ given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or
+ if the --pp option is supplied, a list of names of all exported
+ variables is printed. The --nn option causes the export property
to be removed from each _n_a_m_e. If a variable name is followed by
=_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns
an exit status of 0 unless an invalid option is encountered, one
- of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup-
+ of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup-
plied with a _n_a_m_e that is not a function.
ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t]
ffcc --ss [_p_a_t=_r_e_p] [_c_m_d]
- The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t
- from the history list and displays or edits and re-executes
- them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate
- the last command beginning with that string) or as a number (an
- index into the history list, where a negative number is used as
- an offset from the current command number). When listing, a
- _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is equivalent to
- the current command (usually the ffcc command); otherwise 0 is
- equivalent to -1 and -0 is invalid. If _l_a_s_t is not specified,
- it is set to the current command for listing (so that ``fc -l
- -10'' prints the last 10 commands) and to _f_i_r_s_t otherwise. If
- _f_i_r_s_t is not specified, it is set to the previous command for
+ The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t
+ from the history list and displays or edits and re-executes
+ them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate
+ the last command beginning with that string) or as a number (an
+ index into the history list, where a negative number is used as
+ an offset from the current command number). When listing, a
+ _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is equivalent to
+ the current command (usually the ffcc command); otherwise 0 is
+ equivalent to -1 and -0 is invalid. If _l_a_s_t is not specified,
+ it is set to the current command for listing (so that ``fc -l
+ -10'' prints the last 10 commands) and to _f_i_r_s_t otherwise. If
+ _f_i_r_s_t is not specified, it is set to the previous command for
editing and -16 for listing.
- The --nn option suppresses the command numbers when listing. The
- --rr option reverses the order of the commands. If the --ll option
- is given, the commands are listed on standard output. Other-
- wise, the editor given by _e_n_a_m_e is invoked on a file containing
- those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT
- variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set.
- If neither variable is set, _v_i is used. When editing is com-
+ The --nn option suppresses the command numbers when listing. The
+ --rr option reverses the order of the commands. If the --ll option
+ is given, the commands are listed on standard output. Other-
+ wise, the editor given by _e_n_a_m_e is invoked on a file containing
+ those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT
+ variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set.
+ If neither variable is set, _v_i is used. When editing is com-
plete, the edited commands are echoed and executed.
- In the second form, _c_o_m_m_a_n_d is re-executed after each instance
- of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as
- _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'',
- so that typing ``r cc'' runs the last command beginning with
+ In the second form, _c_o_m_m_a_n_d is re-executed after each instance
+ of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as
+ _f_i_r_s_t above. A useful alias to use with this is ``r="fc -s"'',
+ so that typing ``r cc'' runs the last command beginning with
``cc'' and typing ``r'' re-executes the last command.
- If the first form is used, the return value is 0 unless an in-
- valid option is encountered or _f_i_r_s_t or _l_a_s_t specify history
- lines out of range. If the --ee option is supplied, the return
+ If the first form is used, the return value is 0 unless an in-
+ valid option is encountered or _f_i_r_s_t or _l_a_s_t specify history
+ lines out of range. If the --ee option is supplied, the return
value is the value of the last command executed or failure if an
error occurs with the temporary file of commands. If the second
- form is used, the return status is that of the command re-exe-
- cuted, unless _c_m_d does not specify a valid history line, in
+ form is used, the return status is that of the command re-exe-
+ cuted, unless _c_m_d does not specify a valid history line, in
which case ffcc returns failure.
ffgg [_j_o_b_s_p_e_c]
- Resume _j_o_b_s_p_e_c in the foreground, and make it the current job.
+ Resume _j_o_b_s_p_e_c in the foreground, and make it the current job.
If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b
- is used. The return value is that of the command placed into
- the foreground, or failure if run when job control is disabled
+ is used. The return value is that of the command placed into
+ the foreground, or failure if run when job control is disabled
or, when run with job control enabled, if _j_o_b_s_p_e_c does not spec-
- ify a valid job or _j_o_b_s_p_e_c specifies a job that was started
+ ify a valid job or _j_o_b_s_p_e_c specifies a job that was started
without job control.
ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g _._._.]
- ggeettooppttss is used by shell procedures to parse positional parame-
- ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog-
- nized; if a character is followed by a colon, the option is ex-
+ ggeettooppttss is used by shell procedures to parse positional parame-
+ ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog-
+ nized; if a character is followed by a colon, the option is ex-
pected to have an argument, which should be separated from it by
- white space. The colon and question mark characters may not be
- used as option characters. Each time it is invoked, ggeettooppttss
- places the next option in the shell variable _n_a_m_e, initializing
+ white space. The colon and question mark characters may not be
+ used as option characters. Each time it is invoked, ggeettooppttss
+ places the next option in the shell variable _n_a_m_e, initializing
_n_a_m_e if it does not exist, and the index of the next argument to
be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to
1 each time the shell or a shell script is invoked. When an op-
tion requires an argument, ggeettooppttss places that argument into the
variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automatically;
- it must be manually reset between multiple calls to ggeettooppttss
- within the same shell invocation if a new set of parameters is
+ it must be manually reset between multiple calls to ggeettooppttss
+ within the same shell invocation if a new set of parameters is
to be used.
When the end of options is encountered, ggeettooppttss exits with a re-
turn value greater than zero. OOPPTTIINNDD is set to the index of the
first non-option argument, and _n_a_m_e is set to ?.
- ggeettooppttss normally parses the positional parameters, but if more
- arguments are supplied as _a_r_g values, ggeettooppttss parses those in-
+ ggeettooppttss normally parses the positional parameters, but if more
+ arguments are supplied as _a_r_g values, ggeettooppttss parses those in-
stead.
- ggeettooppttss can report errors in two ways. If the first character
- of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In
- normal operation, diagnostic messages are printed when invalid
- options or missing option arguments are encountered. If the
- variable OOPPTTEERRRR is set to 0, no error messages will be dis-
+ ggeettooppttss can report errors in two ways. If the first character
+ of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In
+ normal operation, diagnostic messages are printed when invalid
+ options or missing option arguments are encountered. If the
+ variable OOPPTTEERRRR is set to 0, no error messages will be dis-
played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon.
If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if
- not silent, prints an error message and unsets OOPPTTAARRGG. If
- ggeettooppttss is silent, the option character found is placed in OOPP--
+ not silent, prints an error message and unsets OOPPTTAARRGG. If
+ ggeettooppttss is silent, the option character found is placed in OOPP--
TTAARRGG and no diagnostic message is printed.
- If a required argument is not found, and ggeettooppttss is not silent,
- a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a
- diagnostic message is printed. If ggeettooppttss is silent, then a
- colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option
+ If a required argument is not found, and ggeettooppttss is not silent,
+ a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a
+ diagnostic message is printed. If ggeettooppttss is silent, then a
+ colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option
character found.
- ggeettooppttss returns true if an option, specified or unspecified, is
+ ggeettooppttss returns true if an option, specified or unspecified, is
found. It returns false if the end of options is encountered or
an error occurs.
hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e]
Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e
- is determined by searching the directories in $$PPAATTHH and remem-
+ is determined by searching the directories in $$PPAATTHH and remem-
bered. Any previously-remembered pathname is discarded. If the
--pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e
- is used as the full filename of the command. The --rr option
+ is used as the full filename of the command. The --rr option
causes the shell to forget all remembered locations. The --dd op-
- tion causes the shell to forget the remembered location of each
- _n_a_m_e. If the --tt option is supplied, the full pathname to which
- each _n_a_m_e corresponds is printed. If multiple _n_a_m_e arguments
+ tion causes the shell to forget the remembered location of each
+ _n_a_m_e. If the --tt option is supplied, the full pathname to which
+ each _n_a_m_e corresponds is printed. If multiple _n_a_m_e arguments
are supplied with --tt, the _n_a_m_e is printed before the hashed full
pathname. The --ll option causes output to be displayed in a for-
- mat that may be reused as input. If no arguments are given, or
+ mat that may be reused as input. If no arguments are given, or
if only --ll is supplied, information about remembered commands is
- printed. The return status is true unless a _n_a_m_e is not found
+ printed. The return status is true unless a _n_a_m_e is not found
or an invalid option is supplied.
hheellpp [--ddmmss] [_p_a_t_t_e_r_n]
- Display helpful information about builtin commands. If _p_a_t_t_e_r_n
- is specified, hheellpp gives detailed help on all commands matching
- _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control
+ Display helpful information about builtin commands. If _p_a_t_t_e_r_n
+ is specified, hheellpp gives detailed help on all commands matching
+ _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control
structures is printed.
--dd Display a short description of each _p_a_t_t_e_r_n
--mm Display the description of each _p_a_t_t_e_r_n in a manpage-like
@@ -727,70 +741,70 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
hhiissttoorryy --ss _a_r_g [_a_r_g _._._.]
With no options, display the command history list with line num-
bers. Lines listed with a ** have been modified. An argument of
- _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE--
- FFOORRMMAATT is set and not null, it is used as a format string for
- _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis-
- played history entry. No intervening blank is printed between
- the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is
- supplied, it is used as the name of the history file; if not,
- the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the
+ _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE--
+ FFOORRMMAATT is set and not null, it is used as a format string for
+ _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis-
+ played history entry. No intervening blank is printed between
+ the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is
+ supplied, it is used as the name of the history file; if not,
+ the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the
following meanings:
--cc Clear the history list by deleting all the entries.
--dd _o_f_f_s_e_t
- Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t
+ Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t
is negative, it is interpreted as relative to one greater
than the last history position, so negative indices count
- back from the end of the history, and an index of -1
+ back from the end of the history, and an index of -1
refers to the current hhiissttoorryy --dd command.
--dd _s_t_a_r_t-_e_n_d
- Delete the history entries between positions _s_t_a_r_t and
- _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t
- and _e_n_d are interpreted as described above.
- --aa Append the ``new'' history lines to the history file.
- These are history lines entered since the beginning of
+ Delete the range of history entries between positions
+ _s_t_a_r_t and _e_n_d, inclusive. Positive and negative values
+ for _s_t_a_r_t and _e_n_d are interpreted as described above.
+ --aa Append the ``new'' history lines to the history file.
+ These are history lines entered since the beginning of
the current bbaasshh session, but not already appended to the
history file.
- --nn Read the history lines not already read from the history
- file into the current history list. These are lines ap-
- pended to the history file since the beginning of the
+ --nn Read the history lines not already read from the history
+ file into the current history list. These are lines ap-
+ pended to the history file since the beginning of the
current bbaasshh session.
- --rr Read the contents of the history file and append them to
+ --rr Read the contents of the history file and append them to
the current history list.
--ww Write the current history list to the history file, over-
writing the history file's contents.
- --pp Perform history substitution on the following _a_r_g_s and
- display the result on the standard output. Does not
- store the results in the history list. Each _a_r_g must be
+ --pp Perform history substitution on the following _a_r_g_s and
+ display the result on the standard output. Does not
+ store the results in the history list. Each _a_r_g must be
quoted to disable normal history expansion.
- --ss Store the _a_r_g_s in the history list as a single entry.
- The last command in the history list is removed before
+ --ss Store the _a_r_g_s in the history list as a single entry.
+ The last command in the history list is removed before
the _a_r_g_s are added.
- If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa-
- tion associated with each history entry is written to the his-
- tory file, marked with the history comment character. When the
- history file is read, lines beginning with the history comment
- character followed immediately by a digit are interpreted as
+ If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa-
+ tion associated with each history entry is written to the his-
+ tory file, marked with the history comment character. When the
+ history file is read, lines beginning with the history comment
+ character followed immediately by a digit are interpreted as
timestamps for the following history entry. The return value is
0 unless an invalid option is encountered, an error occurs while
- reading or writing the history file, an invalid _o_f_f_s_e_t is sup-
- plied as an argument to --dd, or the history expansion supplied as
- an argument to --pp fails.
+ reading or writing the history file, an invalid _o_f_f_s_e_t or range
+ is supplied as an argument to --dd, or the history expansion sup-
+ plied as an argument to --pp fails.
jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ]
jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ]
The first form lists the active jobs. The options have the fol-
lowing meanings:
--ll List process IDs in addition to the normal information.
- --nn Display information only about jobs that have changed
+ --nn Display information only about jobs that have changed
status since the user was last notified of their status.
- --pp List only the process ID of the job's process group
+ --pp List only the process ID of the job's process group
leader.
--rr Display only running jobs.
--ss Display only stopped jobs.
- If _j_o_b_s_p_e_c is given, output is restricted to information about
- that job. The return status is 0 unless an invalid option is
+ If _j_o_b_s_p_e_c is given, output is restricted to information about
+ that job. The return status is 0 unless an invalid option is
encountered or an invalid _j_o_b_s_p_e_c is supplied.
If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in
@@ -799,104 +813,113 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ...
kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s]
- Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes
- named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive
- signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or
- a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not
- present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the
- signal names. If any arguments are supplied when --ll is given,
- the names of the signals corresponding to the arguments are
+ Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes
+ named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive
+ signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or
+ a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not
+ present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the
+ signal names. If any arguments are supplied when --ll is given,
+ the names of the signals corresponding to the arguments are
listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to
- --ll is a number specifying either a signal number or the exit
- status of a process terminated by a signal. The --LL option is
- equivalent to --ll. kkiillll returns true if at least one signal was
+ --ll is a number specifying either a signal number or the exit
+ status of a process terminated by a signal. The --LL option is
+ equivalent to --ll. kkiillll returns true if at least one signal was
successfully sent, or false if an error occurs or an invalid op-
tion is encountered.
lleett _a_r_g [_a_r_g ...]
Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH--
- MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett
- returns 1; 0 is returned otherwise.
+ MMEETTIICC EEVVAALLUUAATTIIOONN in _b_a_s_h_(_1_)). If the last _a_r_g evaluates to 0,
+ lleett returns 1; 0 is returned otherwise.
llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ]
- For each argument, a local variable named _n_a_m_e is created, and
- assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted
+ For each argument, a local variable named _n_a_m_e is created, and
+ assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted
by ddeeccllaarree. When llooccaall is used within a function, it causes the
- variable _n_a_m_e to have a visible scope restricted to that func-
- tion and its children. If _n_a_m_e is -, the set of shell options
- is made local to the function in which llooccaall is invoked: shell
- options changed using the sseett builtin inside the function are
- restored to their original values when the function returns.
+ variable _n_a_m_e to have a visible scope restricted to that func-
+ tion and its children. If _n_a_m_e is -, the set of shell options
+ is made local to the function in which llooccaall is invoked: shell
+ options changed using the sseett builtin inside the function are
+ restored to their original values when the function returns.
The restore is effected as if a series of sseett commands were exe-
- cuted to restore the values that were in place before the func-
- tion. With no operands, llooccaall writes a list of local variables
- to the standard output. It is an error to use llooccaall when not
- within a function. The return status is 0 unless llooccaall is used
- outside a function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a
+ cuted to restore the values that were in place before the func-
+ tion. With no operands, llooccaall writes a list of local variables
+ to the standard output. It is an error to use llooccaall when not
+ within a function. The return status is 0 unless llooccaall is used
+ outside a function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a
readonly variable.
llooggoouutt Exit a login shell.
- mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC
+ mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC
_c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y]
rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC
_c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y]
- Read lines from the standard input into the indexed array vari-
- able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup-
- plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if
+ Read lines from the standard input into the indexed array vari-
+ able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup-
+ plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if
supplied, have the following meanings:
- --dd The first character of _d_e_l_i_m is used to terminate each
- input line, rather than newline. If _d_e_l_i_m is the empty
+ --dd The first character of _d_e_l_i_m is used to terminate each
+ input line, rather than newline. If _d_e_l_i_m is the empty
string, mmaappffiillee will terminate a line when it reads a NUL
character.
- --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are
+ --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are
copied.
- --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default
+ --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default
index is 0.
--ss Discard the first _c_o_u_n_t lines read.
- --tt Remove a trailing _d_e_l_i_m (default newline) from each line
+ --tt Remove a trailing _d_e_l_i_m (default newline) from each line
read.
- --uu Read lines from file descriptor _f_d instead of the stan-
+ --uu Read lines from file descriptor _f_d instead of the stan-
dard input.
- --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The
+ --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The
--cc option specifies _q_u_a_n_t_u_m.
- --cc Specify the number of lines read between each call to
+ --cc Specify the number of lines read between each call to
_c_a_l_l_b_a_c_k.
- If --CC is specified without --cc, the default quantum is 5000.
+ If --CC is specified without --cc, the default quantum is 5000.
When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next
array element to be assigned and the line to be assigned to that
- element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after
+ element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after
the line is read but before the array element is assigned.
- If not supplied with an explicit origin, mmaappffiillee will clear _a_r_-
+ If not supplied with an explicit origin, mmaappffiillee will clear _a_r_-
_r_a_y before assigning to it.
- mmaappffiillee returns successfully unless an invalid option or option
- argument is supplied, _a_r_r_a_y is invalid or unassignable, or if
+ mmaappffiillee returns successfully unless an invalid option or option
+ argument is supplied, _a_r_r_a_y is invalid or unassignable, or if
_a_r_r_a_y is not an indexed array.
ppooppdd [-nn] [+_n] [-_n]
- Removes entries from the directory stack. With no arguments,
- removes the top directory from the stack, and performs a ccdd to
- the new top directory. Arguments, if supplied, have the follow-
- ing meanings:
+ Removes entries from the directory stack. The elements are num-
+ bered from 0 starting at the first directory listed by ddiirrss.
+ With no arguments, ppooppdd removes the top directory from the
+ stack, and changes to the new top directory. Arguments, if sup-
+ plied, have the following meanings:
--nn Suppresses the normal change of directory when removing
directories from the stack, so that only the stack is ma-
nipulated.
++_n Removes the _nth entry counting from the left of the list
- shown by ddiirrss, starting with zero. For example: ``popd
- +0'' removes the first directory, ``popd +1'' the second.
+ shown by ddiirrss, starting with zero, from the stack. For
+ example: ``popd +0'' removes the first directory, ``popd
+ +1'' the second.
--_n Removes the _nth entry counting from the right of the list
- shown by ddiirrss, starting with zero. For example: ``popd
- -0'' removes the last directory, ``popd -1'' the next to
+ shown by ddiirrss, starting with zero. For example: ``popd
+ -0'' removes the last directory, ``popd -1'' the next to
last.
- If the ppooppdd command is successful, a ddiirrss is performed as well,
- and the return status is 0. ppooppdd returns false if an invalid
- option is encountered, the directory stack is empty, a non-exis-
- tent directory stack entry is specified, or the directory change
- fails.
+ If the top element of the directory stack is modified, and the
+ _-_n option was not supplied, ppooppdd uses the ccdd builtin to change
+ to the directory at the top of the stack. If the ccdd fails, ppooppdd
+ returns a non-zero value.
+
+ Otherwise, ppooppdd returns false if an invalid option is encoun-
+ tered, the directory stack is empty, or a non-existent directory
+ stack entry is specified.
+
+ If the ppooppdd command is successful, bash runs ddiirrss to show the
+ final contents of the directory stack, and the return status is
+ 0.
pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s]
Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the
@@ -915,15 +938,17 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee.
%%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a
format that can be reused as shell input.
+ %%QQ like %%qq, but applies any supplied precision to the _a_r_g_u_-
+ _m_e_n_t before quoting it.
%%((_d_a_t_e_f_m_t))TT
- causes pprriinnttff to output the date-time string resulting
- from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3).
+ causes pprriinnttff to output the date-time string resulting
+ from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3).
The corresponding _a_r_g_u_m_e_n_t is an integer representing the
- number of seconds since the epoch. Two special argument
- values may be used: -1 represents the current time, and
- -2 represents the time the shell was invoked. If no ar-
+ number of seconds since the epoch. Two special argument
+ values may be used: -1 represents the current time, and
+ -2 represents the time the shell was invoked. If no ar-
gument is specified, conversion behaves as if -1 had been
- given. This is an exception to the usual pprriinnttff behav-
+ given. This is an exception to the usual pprriinnttff behav-
ior.
The %b, %q, and %T directives all use the field width and preci-
@@ -931,100 +956,104 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
bytes from (or use that wide a field for) the expanded argument,
which usually contains more characters than the original.
- Arguments to non-string format specifiers are treated as C con-
+ Arguments to non-string format specifiers are treated as C con-
stants, except that a leading plus or minus sign is allowed, and
- if the leading character is a single or double quote, the value
+ if the leading character is a single or double quote, the value
is the ASCII value of the following character.
- The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_-
+ The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_-
_m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_m_e_n_t_s than are supplied,
- the extra format specifications behave as if a zero value or
- null string, as appropriate, had been supplied. The return
+ the extra format specifications behave as if a zero value or
+ null string, as appropriate, had been supplied. The return
value is zero on success, non-zero on failure.
ppuusshhdd [--nn] [+_n] [-_n]
ppuusshhdd [--nn] [_d_i_r]
- Adds a directory to the top of the directory stack, or rotates
- the stack, making the new top of the stack the current working
- directory. With no arguments, ppuusshhdd exchanges the top two di-
- rectories and returns 0, unless the directory stack is empty.
- Arguments, if supplied, have the following meanings:
- --nn Suppresses the normal change of directory when rotating
- or adding directories to the stack, so that only the
+ Adds a directory to the top of the directory stack, or rotates
+ the stack, making the new top of the stack the current working
+ directory. With no arguments, ppuusshhdd exchanges the top two ele-
+ ments of the directory stack. Arguments, if supplied, have the
+ following meanings:
+ --nn Suppresses the normal change of directory when rotating
+ or adding directories to the stack, so that only the
stack is manipulated.
- ++_n Rotates the stack so that the _nth directory (counting
- from the left of the list shown by ddiirrss, starting with
+ ++_n Rotates the stack so that the _nth directory (counting
+ from the left of the list shown by ddiirrss, starting with
zero) is at the top.
- --_n Rotates the stack so that the _nth directory (counting
- from the right of the list shown by ddiirrss, starting with
+ --_n Rotates the stack so that the _nth directory (counting
+ from the right of the list shown by ddiirrss, starting with
zero) is at the top.
- _d_i_r Adds _d_i_r to the directory stack at the top, making it the
- new current working directory as if it had been supplied
- as the argument to the ccdd builtin.
+ _d_i_r Adds _d_i_r to the directory stack at the top
+
+ After the stack has been modified, if the --nn option was not sup-
+ plied, ppuusshhdd uses the ccdd builtin to change to the directory at
+ the top of the stack. If the ccdd fails, ppuusshhdd returns a non-zero
+ value.
- If the ppuusshhdd command is successful, a ddiirrss is performed as well.
- If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r
- fails. With the second form, ppuusshhdd returns 0 unless the direc-
- tory stack is empty, a non-existent directory stack element is
- specified, or the directory change to the specified new current
- directory fails.
+ Otherwise, if no arguments are supplied, ppuusshhdd returns 0 unless
+ the directory stack is empty. When rotating the directory
+ stack, ppuusshhdd returns 0 unless the directory stack is empty or a
+ non-existent directory stack element is specified.
+
+ If the ppuusshhdd command is successful, bash runs ddiirrss to show the
+ final contents of the directory stack.
ppwwdd [--LLPP]
- Print the absolute pathname of the current working directory.
+ Print the absolute pathname of the current working directory.
The pathname printed contains no symbolic links if the --PP option
is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command
- is enabled. If the --LL option is used, the pathname printed may
- contain symbolic links. The return status is 0 unless an error
+ is enabled. If the --LL option is used, the pathname printed may
+ contain symbolic links. The return status is 0 unless an error
occurs while reading the name of the current directory or an in-
valid option is supplied.
rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp
_p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...]
- One line is read from the standard input, or from the file de-
+ One line is read from the standard input, or from the file de-
scriptor _f_d supplied as an argument to the --uu option, split into
- words as described above under WWoorrdd SSpplliittttiinngg, and the first
- word is assigned to the first _n_a_m_e, the second word to the sec-
- ond _n_a_m_e, and so on. If there are more words than names, the
+ words as described in _b_a_s_h_(_1_) under WWoorrdd SSpplliittttiinngg, and the
+ first word is assigned to the first _n_a_m_e, the second word to the
+ second _n_a_m_e, and so on. If there are more words than names, the
remaining words and their intervening delimiters are assigned to
- the last _n_a_m_e. If there are fewer words read from the input
- stream than names, the remaining names are assigned empty val-
- ues. The characters in IIFFSS are used to split the line into
- words using the same rules the shell uses for expansion (de-
- scribed above under WWoorrdd SSpplliittttiinngg). The backslash character
- (\\) may be used to remove any special meaning for the next char-
- acter read and for line continuation. Options, if supplied,
+ the last _n_a_m_e. If there are fewer words read from the input
+ stream than names, the remaining names are assigned empty val-
+ ues. The characters in IIFFSS are used to split the line into
+ words using the same rules the shell uses for expansion (de-
+ scribed in _b_a_s_h_(_1_) under WWoorrdd SSpplliittttiinngg). The backslash charac-
+ ter (\\) may be used to remove any special meaning for the next
+ character read and for line continuation. Options, if supplied,
have the following meanings:
--aa _a_n_a_m_e
The words are assigned to sequential indices of the array
variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any
- new values are assigned. Other _n_a_m_e arguments are ig-
+ new values are assigned. Other _n_a_m_e arguments are ig-
nored.
--dd _d_e_l_i_m
The first character of _d_e_l_i_m is used to terminate the in-
- put line, rather than newline. If _d_e_l_i_m is the empty
- string, rreeaadd will terminate a line when it reads a NUL
+ put line, rather than newline. If _d_e_l_i_m is the empty
+ string, rreeaadd will terminate a line when it reads a NUL
character.
--ee If the standard input is coming from a terminal, rreeaaddlliinnee
- (see RREEAADDLLIINNEE above) is used to obtain the line. Read-
- line uses the current (or default, if line editing was
- not previously active) editing settings, but uses Read-
- line's default filename completion.
+ (see RREEAADDLLIINNEE in _b_a_s_h_(_1_)) is used to obtain the line.
+ Readline uses the current (or default, if line editing
+ was not previously active) editing settings, but uses
+ readline's default filename completion.
--ii _t_e_x_t
- If rreeaaddlliinnee is being used to read the line, _t_e_x_t is
+ If rreeaaddlliinnee is being used to read the line, _t_e_x_t is
placed into the editing buffer before editing begins.
--nn _n_c_h_a_r_s
- rreeaadd returns after reading _n_c_h_a_r_s characters rather than
+ rreeaadd returns after reading _n_c_h_a_r_s characters rather than
waiting for a complete line of input, but honors a delim-
- iter if fewer than _n_c_h_a_r_s characters are read before the
+ iter if fewer than _n_c_h_a_r_s characters are read before the
delimiter.
--NN _n_c_h_a_r_s
- rreeaadd returns after reading exactly _n_c_h_a_r_s characters
- rather than waiting for a complete line of input, unless
- EOF is encountered or rreeaadd times out. Delimiter charac-
- ters encountered in the input are not treated specially
- and do not cause rreeaadd to return until _n_c_h_a_r_s characters
- are read. The result is not split on the characters in
- IIFFSS; the intent is that the variable is assigned exactly
+ rreeaadd returns after reading exactly _n_c_h_a_r_s characters
+ rather than waiting for a complete line of input, unless
+ EOF is encountered or rreeaadd times out. Delimiter charac-
+ ters encountered in the input are not treated specially
+ and do not cause rreeaadd to return until _n_c_h_a_r_s characters
+ are read. The result is not split on the characters in
+ IIFFSS; the intent is that the variable is assigned exactly
the characters read (with the exception of backslash; see
the --rr option below).
--pp _p_r_o_m_p_t
@@ -1032,25 +1061,26 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
line, before attempting to read any input. The prompt is
displayed only if input is coming from a terminal.
--rr Backslash does not act as an escape character. The back-
- slash is considered to be part of the line. In particu-
- lar, a backslash-newline pair may not then be used as a
+ slash is considered to be part of the line. In particu-
+ lar, a backslash-newline pair may not then be used as a
line continuation.
--ss Silent mode. If input is coming from a terminal, charac-
ters are not echoed.
--tt _t_i_m_e_o_u_t
- Cause rreeaadd to time out and return failure if a complete
- line of input (or a specified number of characters) is
- not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci-
- mal number with a fractional portion following the deci-
- mal point. This option is only effective if rreeaadd is
- reading input from a terminal, pipe, or other special
- file; it has no effect when reading from regular files.
+ Cause rreeaadd to time out and return failure if a complete
+ line of input (or a specified number of characters) is
+ not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci-
+ mal number with a fractional portion following the deci-
+ mal point. This option is only effective if rreeaadd is
+ reading input from a terminal, pipe, or other special
+ file; it has no effect when reading from regular files.
If rreeaadd times out, rreeaadd saves any partial input read into
- the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re-
- turns immediately, without trying to read any data. The
- exit status is 0 if input is available on the specified
- file descriptor, non-zero otherwise. The exit status is
- greater than 128 if the timeout is exceeded.
+ the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re-
+ turns immediately, without trying to read any data. The
+ exit status is 0 if input is available on the specified
+ file descriptor, or the read will return EOF, non-zero
+ otherwise. The exit status is greater than 128 if the
+ timeout is exceeded.
--uu _f_d Read input from file descriptor _f_d.
If no _n_a_m_e_s are supplied, the line read, without the ending de-
@@ -1098,18 +1128,18 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
associated with the RREETTUURRNN trap is executed before execution re-
sumes after the function or script.
- sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...]
- sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...]
- Without options, the name and value of each shell variable are
- displayed in a format that can be reused as input for setting or
- resetting the currently-set variables. Read-only variables can-
- not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed.
- The output is sorted according to the current locale. When op-
- tions are specified, they set or unset shell attributes. Any
- arguments remaining after option processing are treated as val-
- ues for the positional parameters and are assigned, in order, to
- $$11, $$22, ...... $$_n. Options, if specified, have the following
- meanings:
+ sseett [--aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...]
+ sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...]
+ Without options, display the name and value of each shell vari-
+ able in a format that can be reused as input for setting or re-
+ setting the currently-set variables. Read-only variables cannot
+ be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed. The
+ output is sorted according to the current locale. When options
+ are specified, they set or unset shell attributes. Any argu-
+ ments remaining after option processing are treated as values
+ for the positional parameters and are assigned, in order, to $$11,
+ $$22, ...... $$_n. Options, if specified, have the following mean-
+ ings:
--aa Each variable or function that is created or modified is
given the export attribute and marked for export to the
environment of subsequent commands.
@@ -1118,22 +1148,22 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
is effective only when job control is enabled.
--ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a
single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d
- (see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status.
- The shell does not exit if the command that fails is
- part of the command list immediately following a wwhhiillee
- or uunnttiill keyword, part of the test following the iiff or
- eelliiff reserved words, part of any command executed in a
- &&&& or |||| list except the command following the final &&&&
- or ||||, any command in a pipeline but the last, or if the
- command's return value is being inverted with !!. If a
- compound command other than a subshell returns a non-
- zero status because a command failed while --ee was being
- ignored, the shell does not exit. A trap on EERRRR, if
- set, is executed before the shell exits. This option
+ (see SSHHEELLLL GGRRAAMMMMAARR in _b_a_s_h_(_1_)), exits with a non-zero
+ status. The shell does not exit if the command that
+ fails is part of the command list immediately following
+ a wwhhiillee or uunnttiill keyword, part of the test following the
+ iiff or eelliiff reserved words, part of any command executed
+ in a &&&& or |||| list except the command following the fi-
+ nal &&&& or ||||, any command in a pipeline but the last, or
+ if the command's return value is being inverted with !!.
+ If a compound command other than a subshell returns a
+ non-zero status because a command failed while --ee was
+ being ignored, the shell does not exit. A trap on EERRRR,
+ if set, is executed before the shell exits. This option
applies to the shell environment and each subshell envi-
- ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT
- above), and may cause subshells to exit before executing
- all the commands in the subshell.
+ ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT in
+ _b_a_s_h_(_1_)), and may cause subshells to exit before execut-
+ ing all the commands in the subshell.
If a compound command or shell function executes in a
context where --ee is being ignored, none of the commands
@@ -1152,10 +1182,10 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
that precede the command name.
--mm Monitor mode. Job control is enabled. This option is
on by default for interactive shells on systems that
- support it (see JJOOBB CCOONNTTRROOLL above). All processes run
- in a separate process group. When a background job com-
- pletes, the shell prints a line containing its exit sta-
- tus.
+ support it (see JJOOBB CCOONNTTRROOLL in _b_a_s_h_(_1_)). All processes
+ run in a separate process group. When a background job
+ completes, the shell prints a line containing its exit
+ status.
--nn Read commands but do not execute them. This may be used
to check a shell script for syntax errors. This is ig-
nored by interactive shells.
@@ -1178,13 +1208,13 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
hhaasshhaallll Same as --hh.
hhiisstteexxppaanndd
Same as --HH.
- hhiissttoorryy Enable command history, as described above under
- HHIISSTTOORRYY. This option is on by default in inter-
- active shells.
+ hhiissttoorryy Enable command history, as described in _b_a_s_h_(_1_)
+ under HHIISSTTOORRYY. This option is on by default in
+ interactive shells.
iiggnnoorreeeeooff
The effect is as if the shell command ``IG-
NOREEOF=10'' had been executed (see SShheellll VVaarrii--
- aabblleess above).
+ aabblleess in _b_a_s_h_(_1_)).
kkeeyywwoorrdd Same as --kk.
mmoonniittoorr Same as --mm.
nnoocclloobbbbeerr
@@ -1206,8 +1236,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
ppoossiixx Change the behavior of bbaasshh where the default
operation differs from the POSIX standard to
match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO
- below for a reference to a document that details
- how posix mode affects bash's behavior.
+ in _b_a_s_h_(_1_) for a reference to a document that
+ details how posix mode affects bash's behavior.
pprriivviilleeggeedd
Same as --pp.
vveerrbboossee Same as --vv.
@@ -1232,9 +1262,12 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
plied at startup, the effective user id is not reset.
Turning this option off causes the effective user and
group ids to be set to the real user and group ids.
+ --rr Enable restricted shell mode. This option cannot be un-
+ set once it has been set.
--tt Exit after reading and executing one command.
--uu Treat unset variables and parameters other than the spe-
- cial parameters "@" and "*" as an error when performing
+ cial parameters "@" and "*", or array variables sub-
+ scripted with "@" or "*", as an error when performing
parameter expansion. If expansion is attempted on an
unset variable or parameter, the shell prints an error
message, and, if not interactive, exits with a non-zero
@@ -1245,7 +1278,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
play the expanded value of PPSS44, followed by the command
and its expanded arguments or associated word list.
--BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn
- above). This is on by default.
+ in _b_a_s_h_(_1_)). This is on by default.
--CC If set, bbaasshh does not overwrite an existing file with
the >>, >>&&, and <<>> redirection operators. This may be
overridden when creating output files by using the redi-
@@ -1353,8 +1386,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
jobs before exiting an interactive shell. If any jobs
are running, this causes the exit to be deferred until a
second exit is attempted without an intervening command
- (see JJOOBB CCOONNTTRROOLL above). The shell always postpones ex-
- iting if any jobs are stopped.
+ (see JJOOBB CCOONNTTRROOLL in _b_a_s_h_(_1_)). The shell always post-
+ pones exiting if any jobs are stopped.
cchheecckkwwiinnssiizzee
If set, bbaasshh checks the window size after each external
(non-builtin) command and, if necessary, updates the
@@ -1364,7 +1397,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
line command in the same history entry. This allows
easy re-editing of multi-line commands. This option is
enabled by default, but only has an effect if command
- history is enabled, as described above under HHIISSTTOORRYY.
+ history is enabled, as described in _b_a_s_h_(_1_) under HHIISS--
+ TTOORRYY.
ccoommppaatt3311
ccoommppaatt3322
ccoommppaatt4400
@@ -1372,117 +1406,123 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
ccoommppaatt4422
ccoommppaatt4433
ccoommppaatt4444
- These control aspects of the shell's compatibility mode
- (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below).
+ ccoommppaatt5500
+ These control aspects of the shell's compatibility mode
+ (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE in _b_a_s_h_(_1_)).
ccoommpplleettee__ffuullllqquuoottee
- If set, bbaasshh quotes all shell metacharacters in file-
- names and directory names when performing completion.
+ If set, bbaasshh quotes all shell metacharacters in file-
+ names and directory names when performing completion.
If not set, bbaasshh removes metacharacters such as the dol-
- lar sign from the set of characters that will be quoted
- in completed filenames when these metacharacters appear
- in shell variable references in words to be completed.
- This means that dollar signs in variable names that ex-
- pand to directories will not be quoted; however, any
- dollar signs appearing in filenames will not be quoted,
- either. This is active only when bash is using back-
- slashes to quote completed filenames. This variable is
- set by default, which is the default bash behavior in
+ lar sign from the set of characters that will be quoted
+ in completed filenames when these metacharacters appear
+ in shell variable references in words to be completed.
+ This means that dollar signs in variable names that ex-
+ pand to directories will not be quoted; however, any
+ dollar signs appearing in filenames will not be quoted,
+ either. This is active only when bash is using back-
+ slashes to quote completed filenames. This variable is
+ set by default, which is the default bash behavior in
versions through 4.2.
ddiirreexxppaanndd
- If set, bbaasshh replaces directory names with the results
- of word expansion when performing filename completion.
- This changes the contents of the readline editing buf-
- fer. If not set, bbaasshh attempts to preserve what the
+ If set, bbaasshh replaces directory names with the results
+ of word expansion when performing filename completion.
+ This changes the contents of the readline editing buf-
+ fer. If not set, bbaasshh attempts to preserve what the
user typed.
ddiirrssppeellll
- If set, bbaasshh attempts spelling correction on directory
- names during word completion if the directory name ini-
+ If set, bbaasshh attempts spelling correction on directory
+ names during word completion if the directory name ini-
tially supplied does not exist.
- ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in
- the results of pathname expansion. The filenames ````..''''
- and ````....'''' must always be matched explicitly, even if
+ ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in
+ the results of pathname expansion. The filenames ````..''''
+ and ````....'''' must always be matched explicitly, even if
ddoottgglloobb is set.
eexxeeccffaaiill
If set, a non-interactive shell will not exit if it can-
- not execute the file specified as an argument to the
- eexxeecc builtin command. An interactive shell does not
+ not execute the file specified as an argument to the
+ eexxeecc builtin command. An interactive shell does not
exit if eexxeecc fails.
eexxppaanndd__aalliiaasseess
- If set, aliases are expanded as described above under
- AALLIIAASSEESS. This option is enabled by default for interac-
- tive shells.
+ If set, aliases are expanded as described in _b_a_s_h_(_1_) un-
+ der AALLIIAASSEESS. This option is enabled by default for in-
+ teractive shells.
eexxttddeebbuugg
- If set at shell invocation, or in a shell startup file,
+ If set at shell invocation, or in a shell startup file,
arrange to execute the debugger profile before the shell
- starts, identical to the ----ddeebbuuggggeerr option. If set af-
- ter invocation, behavior intended for use by debuggers
+ starts, identical to the ----ddeebbuuggggeerr option. If set af-
+ ter invocation, behavior intended for use by debuggers
is enabled:
11.. The --FF option to the ddeeccllaarree builtin displays the
source file name and line number corresponding to
each function name supplied as an argument.
- 22.. If the command run by the DDEEBBUUGG trap returns a
- non-zero value, the next command is skipped and
+ 22.. If the command run by the DDEEBBUUGG trap returns a
+ non-zero value, the next command is skipped and
not executed.
- 33.. If the command run by the DDEEBBUUGG trap returns a
- value of 2, and the shell is executing in a sub-
- routine (a shell function or a shell script exe-
- cuted by the .. or ssoouurrccee builtins), the shell
+ 33.. If the command run by the DDEEBBUUGG trap returns a
+ value of 2, and the shell is executing in a sub-
+ routine (a shell function or a shell script exe-
+ cuted by the .. or ssoouurrccee builtins), the shell
simulates a call to rreettuurrnn.
- 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described
- in their descriptions above.
+ 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described
+ in their descriptions in _b_a_s_h_(_1_)).
- 55.. Function tracing is enabled: command substitu-
+ 55.. Function tracing is enabled: command substitu-
tion, shell functions, and subshells invoked with
(( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps.
- 66.. Error tracing is enabled: command substitution,
- shell functions, and subshells invoked with ((
+ 66.. Error tracing is enabled: command substitution,
+ shell functions, and subshells invoked with ((
_c_o_m_m_a_n_d )) inherit the EERRRR trap.
eexxttgglloobb If set, the extended pattern matching features described
- above under PPaatthhnnaammee EExxppaannssiioonn are enabled.
+ in _b_a_s_h_(_1_) under PPaatthhnnaammee EExxppaannssiioonn are enabled.
eexxttqquuoottee
- If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed
- within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double
+ If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed
+ within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double
quotes. This option is enabled by default.
ffaaiillgglloobb
- If set, patterns which fail to match filenames during
+ If set, patterns which fail to match filenames during
pathname expansion result in an expansion error.
ffoorrccee__ffiiggnnoorree
- If set, the suffixes specified by the FFIIGGNNOORREE shell
- variable cause words to be ignored when performing word
+ If set, the suffixes specified by the FFIIGGNNOORREE shell
+ variable cause words to be ignored when performing word
completion even if the ignored words are the only possi-
- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a de-
- scription of FFIIGGNNOORREE. This option is enabled by de-
+ ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS in _b_a_s_h_(_1_) for a
+ description of FFIIGGNNOORREE. This option is enabled by de-
fault.
gglloobbaasscciiiirraannggeess
- If set, range expressions used in pattern matching
- bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave
- as if in the traditional C locale when performing com-
- parisons. That is, the current locale's collating se-
- quence is not taken into account, so bb will not collate
- between AA and BB, and upper-case and lower-case ASCII
- characters will collate together.
+ If set, range expressions used in pattern matching
+ bracket expressions (see PPaatttteerrnn MMaattcchhiinngg in _b_a_s_h_(_1_))
+ behave as if in the traditional C locale when performing
+ comparisons. That is, the current locale's collating
+ sequence is not taken into account, so bb will not col-
+ late between AA and BB, and upper-case and lower-case
+ ASCII characters will collate together.
+
+ gglloobbsskkiippddoottss
+ If set, pathname expansion will never match the file-
+ names ````..'''' and ````....'''', even if the pattern begins with
+ a ````..''''. This option is enabled by default.
gglloobbssttaarr
If set, the pattern **** used in a pathname expansion con-
- text will match all files and zero or more directories
- and subdirectories. If the pattern is followed by a //,
+ text will match all files and zero or more directories
+ and subdirectories. If the pattern is followed by a //,
only directories and subdirectories match.
ggnnuu__eerrrrffmmtt
@@ -1490,49 +1530,49 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
GNU error message format.
hhiissttaappppeenndd
- If set, the history list is appended to the file named
+ If set, the history list is appended to the file named
by the value of the HHIISSTTFFIILLEE variable when the shell ex-
its, rather than overwriting the file.
hhiissttrreeeeddiitt
- If set, and rreeaaddlliinnee is being used, a user is given the
+ If set, and rreeaaddlliinnee is being used, a user is given the
opportunity to re-edit a failed history substitution.
hhiissttvveerriiffyy
- If set, and rreeaaddlliinnee is being used, the results of his-
- tory substitution are not immediately passed to the
- shell parser. Instead, the resulting line is loaded
+ If set, and rreeaaddlliinnee is being used, the results of his-
+ tory substitution are not immediately passed to the
+ shell parser. Instead, the resulting line is loaded
into the rreeaaddlliinnee editing buffer, allowing further modi-
fication.
hhoossttccoommpplleettee
If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to
- perform hostname completion when a word containing a @@
- is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE
- above). This is enabled by default.
+ perform hostname completion when a word containing a @@
+ is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE in
+ _b_a_s_h_(_1_)). This is enabled by default.
hhuuppoonneexxiitt
If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter-
active login shell exits.
iinnhheerriitt__eerrrreexxiitt
- If set, command substitution inherits the value of the
- eerrrreexxiitt option, instead of unsetting it in the subshell
- environment. This option is enabled when _p_o_s_i_x _m_o_d_e is
+ If set, command substitution inherits the value of the
+ eerrrreexxiitt option, instead of unsetting it in the subshell
+ environment. This option is enabled when _p_o_s_i_x _m_o_d_e is
enabled.
iinntteerraaccttiivvee__ccoommmmeennttss
If set, allow a word beginning with ## to cause that word
- and all remaining characters on that line to be ignored
- in an interactive shell (see CCOOMMMMEENNTTSS above). This op-
- tion is enabled by default.
+ and all remaining characters on that line to be ignored
+ in an interactive shell (see CCOOMMMMEENNTTSS in _b_a_s_h_(_1_)). This
+ option is enabled by default.
llaassttppiippee
- If set, and job control is not active, the shell runs
+ If set, and job control is not active, the shell runs
the last command of a pipeline not executed in the back-
ground in the current shell environment.
- lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line
+ lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line
commands are saved to the history with embedded newlines
rather than using semicolon separators where possible.
@@ -1543,49 +1583,60 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
tribute is not inherited.
llooccaallvvaarr__uunnsseett
- If set, calling uunnsseett on local variables in previous
- function scopes marks them so subsequent lookups find
- them unset until that function returns. This is identi-
- cal to the behavior of unsetting local variables at the
+ If set, calling uunnsseett on local variables in previous
+ function scopes marks them so subsequent lookups find
+ them unset until that function returns. This is identi-
+ cal to the behavior of unsetting local variables at the
current function scope.
llooggiinn__sshheellll
- The shell sets this option if it is started as a login
- shell (see IINNVVOOCCAATTIIOONN above). The value may not be
+ The shell sets this option if it is started as a login
+ shell (see IINNVVOOCCAATTIIOONN in _b_a_s_h_(_1_)). The value may not be
changed.
mmaaiillwwaarrnn
- If set, and a file that bbaasshh is checking for mail has
- been accessed since the last time it was checked, the
- message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis-
+ If set, and a file that bbaasshh is checking for mail has
+ been accessed since the last time it was checked, the
+ message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis-
played.
nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn
- If set, and rreeaaddlliinnee is being used, bbaasshh will not at-
- tempt to search the PPAATTHH for possible completions when
+ If set, and rreeaaddlliinnee is being used, bbaasshh will not at-
+ tempt to search the PPAATTHH for possible completions when
completion is attempted on an empty line.
nnooccaasseegglloobb
- If set, bbaasshh matches filenames in a case-insensitive
+ If set, bbaasshh matches filenames in a case-insensitive
fashion when performing pathname expansion (see PPaatthhnnaammee
- EExxppaannssiioonn above).
+ EExxppaannssiioonn in _b_a_s_h_(_1_)).
nnooccaasseemmaattcchh
- If set, bbaasshh matches patterns in a case-insensitive
+ If set, bbaasshh matches patterns in a case-insensitive
fashion when performing matching while executing ccaassee or
[[[[ conditional commands, when performing pattern substi-
- tution word expansions, or when filtering possible com-
+ tution word expansions, or when filtering possible com-
pletions as part of programmable completion.
+ nnooeexxppaanndd__ttrraannssllaattiioonn
+ If set, bbaasshh encloses the translated results of $"..."
+ quoting in single quotes instead of double quotes. If
+ the string is not translated, this has no effect.
+
nnuullllgglloobb
- If set, bbaasshh allows patterns which match no files (see
- PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string,
- rather than themselves.
+ If set, bbaasshh allows patterns which match no files (see
+ PPaatthhnnaammee EExxppaannssiioonn in _b_a_s_h_(_1_)) to expand to a null
+ string, rather than themselves.
+
+ ppaattssuubb__rreeppllaacceemmeenntt
+ If set, bbaasshh expands occurrences of && in the replacement
+ string of pattern substitution to the text matched by
+ the pattern, as described under PPaarraammeetteerr EExxppaannssiioonn in
+ _b_a_s_h_(_1_). This option is enabled by default.
pprrooggccoommpp
If set, the programmable completion facilities (see PPrroo--
- ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is
- enabled by default.
+ ggrraammmmaabbllee CCoommpplleettiioonn in _b_a_s_h_(_1_)) are enabled. This op-
+ tion is enabled by default.
pprrooggccoommpp__aalliiaass
If set, and programmable completion is enabled, bbaasshh
@@ -1597,15 +1648,15 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
pprroommppttvvaarrss
If set, prompt strings undergo parameter expansion, com-
mand substitution, arithmetic expansion, and quote re-
- moval after being expanded as described in PPRROOMMPPTTIINNGG
- above. This option is enabled by default.
+ moval after being expanded as described in PPRROOMMPPTTIINNGG in
+ _b_a_s_h_(_1_). This option is enabled by default.
rreessttrriicctteedd__sshheellll
The shell sets this option if it is started in re-
- stricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value
- may not be changed. This is not reset when the startup
- files are executed, allowing the startup files to dis-
- cover whether or not a shell is restricted.
+ stricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL in _b_a_s_h_(_1_)). The
+ value may not be changed. This is not reset when the
+ startup files are executed, allowing the startup files
+ to discover whether or not a shell is restricted.
sshhiifftt__vveerrbboossee
If set, the sshhiifftt builtin prints an error message when
@@ -1613,38 +1664,44 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
ters.
ssoouurrcceeppaatthh
- If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH to
+ If set, the .. (ssoouurrccee) builtin uses the value of PPAATTHH to
find the directory containing the file supplied as an
argument. This option is enabled by default.
+ vvaarrrreeddiirr__cclloossee
+ If set, the shell automatically closes file descriptors
+ assigned using the _{_v_a_r_n_a_m_e_} redirection syntax (see RREE--
+ DDIIRREECCTTIIOONN in _b_a_s_h_(_1_)) instead of leaving them open when
+ the command completes.
+
xxppgg__eecchhoo
- If set, the eecchhoo builtin expands backslash-escape se-
+ If set, the eecchhoo builtin expands backslash-escape se-
quences by default.
ssuussppeenndd [--ff]
- Suspend the execution of this shell until it receives a SSIIGGCCOONNTT
- signal. A login shell cannot be suspended; the --ff option can be
- used to override this and force the suspension. The return sta-
- tus is 0 unless the shell is a login shell and --ff is not sup-
- plied, or if job control is not enabled.
+ Suspend the execution of this shell until it receives a SSIIGGCCOONNTT
+ signal. A login shell, or a shell without job control enabled,
+ cannot be suspended; the --ff option can be used to override this
+ and force the suspension. The return status is 0 unless the
+ shell is a login shell or job control is not enabled and --ff is
+ not supplied.
tteesstt _e_x_p_r
[[ _e_x_p_r ]]
Return a status of 0 (true) or 1 (false) depending on the evalu-
ation of the conditional expression _e_x_p_r. Each operator and op-
erand must be a separate argument. Expressions are composed of
- the primaries described in the bbaasshh manual page under CCOONNDDII--
- TTIIOONNAALL EEXXPPRREESSSSIIOONNSS. tteesstt does not accept any options, nor does
- it accept and ignore an argument of ---- as signifying the end of
- options.
-
- Expressions may be combined using the following operators,
- listed in decreasing order of precedence. The evaluation de-
- pends on the number of arguments; see below. Operator prece-
+ the primaries described in _b_a_s_h_(_1_) under CCOONNDDIITTIIOONNAALL EEXXPPRREESS--
+ SSIIOONNSS. tteesstt does not accept any options, nor does it accept and
+ ignore an argument of ---- as signifying the end of options.
+
+ Expressions may be combined using the following operators,
+ listed in decreasing order of precedence. The evaluation de-
+ pends on the number of arguments; see below. Operator prece-
dence is used when there are five or more arguments.
!! _e_x_p_r True if _e_x_p_r is false.
(( _e_x_p_r ))
- Returns the value of _e_x_p_r. This may be used to override
+ Returns the value of _e_x_p_r. This may be used to override
the normal precedence of operators.
_e_x_p_r_1 -aa _e_x_p_r_2
True if both _e_x_p_r_1 and _e_x_p_r_2 are true.
@@ -1661,135 +1718,139 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
null.
2 arguments
If the first argument is !!, the expression is true if and
- only if the second argument is null. If the first argu-
- ment is one of the unary conditional operators listed
- above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is
+ only if the second argument is null. If the first argu-
+ ment is one of the unary conditional operators listed in
+ _b_a_s_h_(_1_) under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is
true if the unary test is true. If the first argument is
not a valid unary conditional operator, the expression is
false.
3 arguments
The following conditions are applied in the order listed.
- If the second argument is one of the binary conditional
- operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the
- result of the expression is the result of the binary test
- using the first and third arguments as operands. The --aa
- and --oo operators are considered binary operators when
- there are three arguments. If the first argument is !!,
- the value is the negation of the two-argument test using
- the second and third arguments. If the first argument is
- exactly (( and the third argument is exactly )), the result
- is the one-argument test of the second argument. Other-
- wise, the expression is false.
+ If the second argument is one of the binary conditional
+ operators listed in _b_a_s_h_(_1_) under CCOONNDDIITTIIOONNAALL EEXXPPRREESS--
+ SSIIOONNSS, the result of the expression is the result of the
+ binary test using the first and third arguments as oper-
+ ands. The --aa and --oo operators are considered binary op-
+ erators when there are three arguments. If the first ar-
+ gument is !!, the value is the negation of the two-argu-
+ ment test using the second and third arguments. If the
+ first argument is exactly (( and the third argument is ex-
+ actly )), the result is the one-argument test of the sec-
+ ond argument. Otherwise, the expression is false.
4 arguments
+ The following conditions are applied in the order listed.
If the first argument is !!, the result is the negation of
the three-argument expression composed of the remaining
- arguments. Otherwise, the expression is parsed and eval-
- uated according to precedence using the rules listed
- above.
+ arguments. the two-argument test using the second and
+ third arguments. If the first argument is exactly (( and
+ the fourth argument is exactly )), the result is the two-
+ argument test of the second and third arguments. Other-
+ wise, the expression is parsed and evaluated according to
+ precedence using the rules listed above.
5 or more arguments
- The expression is parsed and evaluated according to
+ The expression is parsed and evaluated according to
precedence using the rules listed above.
- When used with tteesstt or [[, the << and >> operators sort lexico-
+ When used with tteesstt or [[, the << and >> operators sort lexico-
graphically using ASCII ordering.
- ttiimmeess Print the accumulated user and system times for the shell and
+ ttiimmeess Print the accumulated user and system times for the shell and
for processes run from the shell. The return status is 0.
ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...]
- The command _a_r_g is to be read and executed when the shell re-
+ The command _a_r_g is to be read and executed when the shell re-
ceives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a sin-
- gle _s_i_g_s_p_e_c) or --, each specified signal is reset to its origi-
- nal disposition (the value it had upon entrance to the shell).
- If _a_r_g is the null string the signal specified by each _s_i_g_s_p_e_c
- is ignored by the shell and by the commands it invokes. If _a_r_g
- is not present and --pp has been supplied, then the trap commands
+ gle _s_i_g_s_p_e_c) or --, each specified signal is reset to its origi-
+ nal disposition (the value it had upon entrance to the shell).
+ If _a_r_g is the null string the signal specified by each _s_i_g_s_p_e_c
+ is ignored by the shell and by the commands it invokes. If _a_r_g
+ is not present and --pp has been supplied, then the trap commands
associated with each _s_i_g_s_p_e_c are displayed. If no arguments are
- supplied or if only --pp is given, ttrraapp prints the list of com-
- mands associated with each signal. The --ll option causes the
- shell to print a list of signal names and their corresponding
- numbers. Each _s_i_g_s_p_e_c is either a signal name defined in <_s_i_g_-
- _n_a_l_._h>, or a signal number. Signal names are case insensitive
+ supplied or if only --pp is given, ttrraapp prints the list of com-
+ mands associated with each signal. The --ll option causes the
+ shell to print a list of signal names and their corresponding
+ numbers. Each _s_i_g_s_p_e_c is either a signal name defined in <_s_i_g_-
+ _n_a_l_._h>, or a signal number. Signal names are case insensitive
and the SSIIGG prefix is optional.
- If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit
- from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe-
- cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command,
- _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the
- first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR
- above). Refer to the description of the eexxttddeebbuugg option to the
- sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a
- _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell
- function or a script executed with the .. or ssoouurrccee builtins fin-
- ishes executing.
-
- If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a
+ If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit
+ from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe-
+ cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command,
+ _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the
+ first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR in
+ _b_a_s_h_(_1_)). Refer to the description of the eexxttddeebbuugg option to
+ the sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap.
+ If a _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a
+ shell function or a script executed with the .. or ssoouurrccee
+ builtins finishes executing.
+
+ If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a
pipeline (which may consist of a single simple command), a list,
or a compound command returns a non-zero exit status, subject to
- the following conditions. The EERRRR trap is not executed if the
+ the following conditions. The EERRRR trap is not executed if the
failed command is part of the command list immediately following
- a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement,
+ a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement,
part of a command executed in a &&&& or |||| list except the command
- following the final &&&& or ||||, any command in a pipeline but the
- last, or if the command's return value is being inverted using
+ following the final &&&& or ||||, any command in a pipeline but the
+ last, or if the command's return value is being inverted using
!!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) op-
tion.
Signals ignored upon entry to the shell cannot be trapped or re-
- set. Trapped signals that are not being ignored are reset to
+ set. Trapped signals that are not being ignored are reset to
their original values in a subshell or subshell environment when
- one is created. The return status is false if any _s_i_g_s_p_e_c is
+ one is created. The return status is false if any _s_i_g_s_p_e_c is
invalid; otherwise ttrraapp returns true.
ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...]
- With no options, indicate how each _n_a_m_e would be interpreted if
+ With no options, indicate how each _n_a_m_e would be interpreted if
used as a command name. If the --tt option is used, ttyyppee prints a
- string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or
- _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function,
- builtin, or disk file, respectively. If the _n_a_m_e is not found,
- then nothing is printed, and an exit status of false is re-
- turned. If the --pp option is used, ttyyppee either returns the name
- of the disk file that would be executed if _n_a_m_e were specified
- as a command name, or nothing if ``type -t name'' would not re-
- turn _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e,
+ string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or
+ _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function,
+ builtin, or disk file, respectively. If the _n_a_m_e is not found,
+ then nothing is printed, and an exit status of false is re-
+ turned. If the --pp option is used, ttyyppee either returns the name
+ of the disk file that would be executed if _n_a_m_e were specified
+ as a command name, or nothing if ``type -t name'' would not re-
+ turn _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e,
even if ``type -t name'' would not return _f_i_l_e. If a command is
hashed, --pp and --PP print the hashed value, which is not necessar-
- ily the file that appears first in PPAATTHH. If the --aa option is
- used, ttyyppee prints all of the places that contain an executable
+ ily the file that appears first in PPAATTHH. If the --aa option is
+ used, ttyyppee prints all of the places that contain an executable
named _n_a_m_e. This includes aliases and functions, if and only if
the --pp option is not also used. The table of hashed commands is
- not consulted when using --aa. The --ff option suppresses shell
+ not consulted when using --aa. The --ff option suppresses shell
function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true
if all of the arguments are found, false if any are not found.
uulliimmiitt [--HHSS] --aa
uulliimmiitt [--HHSS] [--bbccddeeffiikkllmmnnppqqrrssttuuvvxxPPRRTT [_l_i_m_i_t]]
- Provides control over the resources available to the shell and
- to processes started by it, on systems that allow such control.
+ Provides control over the resources available to the shell and
+ to processes started by it, on systems that allow such control.
The --HH and --SS options specify that the hard or soft limit is set
- for the given resource. A hard limit cannot be increased by a
- non-root user once it is set; a soft limit may be increased up
- to the value of the hard limit. If neither --HH nor --SS is speci-
+ for the given resource. A hard limit cannot be increased by a
+ non-root user once it is set; a soft limit may be increased up
+ to the value of the hard limit. If neither --HH nor --SS is speci-
fied, both the soft and hard limits are set. The value of _l_i_m_i_t
can be a number in the unit specified for the resource or one of
the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which stand for the
- current hard limit, the current soft limit, and no limit, re-
- spectively. If _l_i_m_i_t is omitted, the current value of the soft
+ current hard limit, the current soft limit, and no limit, re-
+ spectively. If _l_i_m_i_t is omitted, the current value of the soft
limit of the resource is printed, unless the --HH option is given.
- When more than one resource is specified, the limit name and
- unit, if appropriate, are printed before the value. Other op-
+ When more than one resource is specified, the limit name and
+ unit, if appropriate, are printed before the value. Other op-
tions are interpreted as follows:
--aa All current limits are reported; no limits are set
--bb The maximum socket buffer size
--cc The maximum size of core files created
--dd The maximum size of a process's data segment
--ee The maximum scheduling priority ("nice")
- --ff The maximum size of files written by the shell and its
+ --ff The maximum size of files written by the shell and its
children
--ii The maximum number of pending signals
--kk The maximum number of kqueues that may be allocated
--ll The maximum size that may be locked into memory
- --mm The maximum resident set size (many systems do not honor
+ --mm The maximum resident set size (many systems do not honor
this limit)
--nn The maximum number of open file descriptors (most systems
do not allow this value to be set)
@@ -1798,132 +1859,134 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
--rr The maximum real-time scheduling priority
--ss The maximum stack size
--tt The maximum amount of cpu time in seconds
- --uu The maximum number of processes available to a single
+ --uu The maximum number of processes available to a single
user
- --vv The maximum amount of virtual memory available to the
+ --vv The maximum amount of virtual memory available to the
shell and, on some systems, to its children
--xx The maximum number of file locks
--PP The maximum number of pseudoterminals
- --RR The maximum time a real-time process can run before
+ --RR The maximum time a real-time process can run before
blocking, in microseconds
--TT The maximum number of threads
- If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the
- new value of the specified resource. If no option is given,
- then --ff is assumed. Values are in 1024-byte increments, except
- for --tt, which is in seconds; --RR, which is in microseconds; --pp,
- which is in units of 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and
- --uu, which are unscaled values; and, when in posix mode, --cc and
- --ff, which are in 512-byte increments. The return status is 0
- unless an invalid option or argument is supplied, or an error
+ If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the
+ new value of the specified resource. If no option is given,
+ then --ff is assumed. Values are in 1024-byte increments, except
+ for --tt, which is in seconds; --RR, which is in microseconds; --pp,
+ which is in units of 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and
+ --uu, which are unscaled values; and, when in posix mode, --cc and
+ --ff, which are in 512-byte increments. The return status is 0
+ unless an invalid option or argument is supplied, or an error
occurs while setting a new limit.
uummaasskk [--pp] [--SS] [_m_o_d_e]
The user file-creation mask is set to _m_o_d_e. If _m_o_d_e begins with
- a digit, it is interpreted as an octal number; otherwise it is
- interpreted as a symbolic mode mask similar to that accepted by
- _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is
- printed. The --SS option causes the mask to be printed in sym-
- bolic form; the default output is an octal number. If the --pp
+ a digit, it is interpreted as an octal number; otherwise it is
+ interpreted as a symbolic mode mask similar to that accepted by
+ _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is
+ printed. The --SS option causes the mask to be printed in sym-
+ bolic form; the default output is an octal number. If the --pp
option is supplied, and _m_o_d_e is omitted, the output is in a form
that may be reused as input. The return status is 0 if the mode
- was successfully changed or if no _m_o_d_e argument was supplied,
+ was successfully changed or if no _m_o_d_e argument was supplied,
and false otherwise.
uunnaalliiaass [-aa] [_n_a_m_e ...]
- Remove each _n_a_m_e from the list of defined aliases. If --aa is
- supplied, all alias definitions are removed. The return value
+ Remove each _n_a_m_e from the list of defined aliases. If --aa is
+ supplied, all alias definitions are removed. The return value
is true unless a supplied _n_a_m_e is not a defined alias.
uunnsseett [-ffvv] [-nn] [_n_a_m_e ...]
- For each _n_a_m_e, remove the corresponding variable or function.
+ For each _n_a_m_e, remove the corresponding variable or function.
If the --vv option is given, each _n_a_m_e refers to a shell variable,
- and that variable is removed. Read-only variables may not be
- unset. If --ff is specified, each _n_a_m_e refers to a shell func-
- tion, and the function definition is removed. If the --nn option
- is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute,
- _n_a_m_e will be unset rather than the variable it references. --nn
- has no effect if the --ff option is supplied. If no options are
- supplied, each _n_a_m_e refers to a variable; if there is no vari-
- able by that name, a function with that name, if any, is unset.
- Each unset variable or function is removed from the environment
- passed to subsequent commands. If any of BBAASSHH__AALLIIAASSEESS,
+ and that variable is removed. Read-only variables may not be
+ unset. If --ff is specified, each _n_a_m_e refers to a shell func-
+ tion, and the function definition is removed. If the --nn option
+ is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute,
+ _n_a_m_e will be unset rather than the variable it references. --nn
+ has no effect if the --ff option is supplied. If no options are
+ supplied, each _n_a_m_e refers to a variable; if there is no vari-
+ able by that name, a function with that name, if any, is unset.
+ Each unset variable or function is removed from the environment
+ passed to subsequent commands. If any of BBAASSHH__AALLIIAASSEESS,
BBAASSHH__AARRGGVV00, BBAASSHH__CCMMDDSS, BBAASSHH__CCOOMMMMAANNDD, BBAASSHH__SSUUBBSSHHEELLLL, BBAASSHHPPIIDD,
- CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, EEPPOOCCHHSSEECCOONNDDSS, FFUUNNCC--
- NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are
+ CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, EEPPOOCCHHSSEECCOONNDDSS, FFUUNNCC--
+ NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are
unset, they lose their special properties, even if they are sub-
sequently reset. The exit status is true unless a _n_a_m_e is read-
- only.
+ only or may not be unset.
wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d _._._.]
Wait for each specified child process and return its termination
- status. Each _i_d may be a process ID or a job specification; if
- a job spec is given, all processes in that job's pipeline are
- waited for. If _i_d is not given, wwaaiitt waits for all running
- background jobs and the last-executed process substitution, if
+ status. Each _i_d may be a process ID or a job specification; if
+ a job spec is given, all processes in that job's pipeline are
+ waited for. If _i_d is not given, wwaaiitt waits for all running
+ background jobs and the last-executed process substitution, if
its process id is the same as $$!!, and the return status is zero.
- If the --nn option is supplied, wwaaiitt waits for a single job from
+ If the --nn option is supplied, wwaaiitt waits for a single job from
the list of _i_ds or, if no _i_ds are supplied, any job, to complete
- and returns its exit status. If none of the supplied arguments
+ and returns its exit status. If none of the supplied arguments
is a child of the shell, or if no arguments are supplied and the
- shell has no unwaited-for children, the exit status is 127. If
- the --pp option is supplied, the process or job identifier of the
- job for which the exit status is returned is assigned to the
- variable _v_a_r_n_a_m_e named by the option argument. The variable
- will be unset initially, before any assignment. This is useful
- only when the --nn option is supplied. Supplying the --ff option,
- when job control is enabled, forces wwaaiitt to wait for _i_d to ter-
+ shell has no unwaited-for children, the exit status is 127. If
+ the --pp option is supplied, the process or job identifier of the
+ job for which the exit status is returned is assigned to the
+ variable _v_a_r_n_a_m_e named by the option argument. The variable
+ will be unset initially, before any assignment. This is useful
+ only when the --nn option is supplied. Supplying the --ff option,
+ when job control is enabled, forces wwaaiitt to wait for _i_d to ter-
minate before returning its status, instead of returning when it
- changes status. If _i_d specifies a non-existent process or job,
- the return status is 127. Otherwise, the return status is the
- exit status of the last process or job waited for.
+ changes status. If _i_d specifies a non-existent process or job,
+ the return status is 127. If wwaaiitt is interrupted by a signal,
+ the return status will be greater than 128, as described under
+ SSIIGGNNAALLSS in _b_a_s_h_(_1_). Otherwise, the return status is the exit
+ status of the last process or job waited for.
SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE
- Bash-4.0 introduced the concept of a `shell compatibility level', spec-
- ified as a set of options to the shopt builtin ccoommppaatt3311, ccoommppaatt3322, ccoomm--
- ppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibility
- level -- each option is mutually exclusive. The compatibility level is
- intended to allow users to select behavior from previous versions that
- is incompatible with newer versions while they migrate scripts to use
- current features and behavior. It's intended to be a temporary solu-
- tion.
-
- This section does not mention behavior that is standard for a particu-
- lar version (e.g., setting ccoommppaatt3322 means that quoting the rhs of the
- regexp matching operator quotes special regexp characters in the word,
- which is default behavior in bash-3.2 and above).
-
- If a user enables, say, ccoommppaatt3322, it may affect the behavior of other
- compatibility levels up to and including the current compatibility
- level. The idea is that each compatibility level controls behavior
- that changed in that version of bbaasshh, but that behavior may have been
- present in earlier versions. For instance, the change to use locale-
- based comparisons with the [[[[ command came in bash-4.1, and earlier
+ Bash-4.0 introduced the concept of a _s_h_e_l_l _c_o_m_p_a_t_i_b_i_l_i_t_y _l_e_v_e_l, speci-
+ fied as a set of options to the shopt builtin ( ccoommppaatt3311, ccoommppaatt3322,
+ ccoommppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibil-
+ ity level -- each option is mutually exclusive. The compatibility
+ level is intended to allow users to select behavior from previous ver-
+ sions that is incompatible with newer versions while they migrate
+ scripts to use current features and behavior. It's intended to be a
+ temporary solution.
+
+ This section does not mention behavior that is standard for a particu-
+ lar version (e.g., setting ccoommppaatt3322 means that quoting the rhs of the
+ regexp matching operator quotes special regexp characters in the word,
+ which is default behavior in bash-3.2 and subsequent versions).
+
+ If a user enables, say, ccoommppaatt3322, it may affect the behavior of other
+ compatibility levels up to and including the current compatibility
+ level. The idea is that each compatibility level controls behavior
+ that changed in that version of bbaasshh, but that behavior may have been
+ present in earlier versions. For instance, the change to use locale-
+ based comparisons with the [[[[ command came in bash-4.1, and earlier
versions used ASCII-based comparisons, so enabling ccoommppaatt3322 will enable
- ASCII-based comparisons as well. That granularity may not be suffi-
- cient for all uses, and as a result users should employ compatibility
- levels carefully. Read the documentation for a particular feature to
+ ASCII-based comparisons as well. That granularity may not be suffi-
+ cient for all uses, and as a result users should employ compatibility
+ levels carefully. Read the documentation for a particular feature to
find out the current behavior.
- Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value as-
+ Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value as-
signed to this variable (a decimal version number like 4.2, or an inte-
- ger corresponding to the ccoommppaatt_N_N option, like 42) determines the com-
+ ger corresponding to the ccoommppaatt_N_N option, like 42) determines the com-
patibility level.
- Starting with bash-4.4, Bash has begun deprecating older compatibility
- levels. Eventually, the options will be removed in favor of BBAASSHH__CCOOMM--
+ Starting with bash-4.4, Bash has begun deprecating older compatibility
+ levels. Eventually, the options will be removed in favor of BBAASSHH__CCOOMM--
PPAATT.
- Bash-5.0 is the final version for which there will be an individual
- shopt option for the previous version. Users should use BBAASSHH__CCOOMMPPAATT on
+ Bash-5.0 is the final version for which there will be an individual
+ shopt option for the previous version. Users should use BBAASSHH__CCOOMMPPAATT on
bash-5.0 and later versions.
- The following table describes the behavior changes controlled by each
+ The following table describes the behavior changes controlled by each
compatibility level setting. The ccoommppaatt_N_N tag is used as shorthand for
setting the compatibility level to _N_N using one of the following mecha-
- nisms. For versions prior to bash-5.0, the compatibility level may be
- set using the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and
- later versions, the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is re-
+ nisms. For versions prior to bash-5.0, the compatibility level may be
+ set using the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and
+ later versions, the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is re-
quired for bash-5.1 and later versions.
ccoommppaatt3311
@@ -1931,84 +1994,90 @@ SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE
ator (=~) has no special effect
ccoommppaatt3322
- +o interrupting a command list such as "a ; b ; c" causes
- the execution of the next command in the list (in
- bash-4.0 and later versions, the shell acts as if it re-
- ceived the interrupt, so interrupting one command in a
+ +o interrupting a command list such as "a ; b ; c" causes
+ the execution of the next command in the list (in
+ bash-4.0 and later versions, the shell acts as if it re-
+ ceived the interrupt, so interrupting one command in a
list aborts the execution of the entire list)
ccoommppaatt4400
- +o the << and >> operators to the [[[[ command do not consider
+ +o the << and >> operators to the [[[[ command do not consider
the current locale when comparing strings; they use ASCII
ordering. Bash versions prior to bash-4.1 use ASCII col-
- lation and _s_t_r_c_m_p(3); bash-4.1 and later use the current
+ lation and _s_t_r_c_m_p(3); bash-4.1 and later use the current
locale's collation sequence and _s_t_r_c_o_l_l(3).
ccoommppaatt4411
- +o in _p_o_s_i_x mode, ttiimmee may be followed by options and still
+ +o in _p_o_s_i_x mode, ttiimmee may be followed by options and still
be recognized as a reserved word (this is POSIX interpre-
tation 267)
+o in _p_o_s_i_x mode, the parser requires that an even number of
- single quotes occur in the _w_o_r_d portion of a double-
- quoted parameter expansion and treats them specially, so
- that characters within the single quotes are considered
+ single quotes occur in the _w_o_r_d portion of a double-
+ quoted parameter expansion and treats them specially, so
+ that characters within the single quotes are considered
quoted (this is POSIX interpretation 221)
ccoommppaatt4422
+o the replacement string in double-quoted pattern substitu-
- tion does not undergo quote removal, as it does in ver-
+ tion does not undergo quote removal, as it does in ver-
sions after bash-4.2
- +o in posix mode, single quotes are considered special when
- expanding the _w_o_r_d portion of a double-quoted parameter
- expansion and can be used to quote a closing brace or
- other special character (this is part of POSIX interpre-
- tation 221); in later versions, single quotes are not
+ +o in posix mode, single quotes are considered special when
+ expanding the _w_o_r_d portion of a double-quoted parameter
+ expansion and can be used to quote a closing brace or
+ other special character (this is part of POSIX interpre-
+ tation 221); in later versions, single quotes are not
special within double-quoted word expansions
ccoommppaatt4433
- +o the shell does not print a warning message if an attempt
- is made to use a quoted compound assignment as an argu-
- ment to declare (declare -a foo='(1 2)'). Later versions
- warn that this usage is deprecated
- +o word expansion errors are considered non-fatal errors
- that cause the current command to fail, even in posix
- mode (the default behavior is to make them fatal errors
+ +o the shell does not print a warning message if an attempt
+ is made to use a quoted compound assignment as an argu-
+ ment to declare (e.g., declare -a foo='(1 2)'). Later
+ versions warn that this usage is deprecated
+ +o word expansion errors are considered non-fatal errors
+ that cause the current command to fail, even in posix
+ mode (the default behavior is to make them fatal errors
that cause the shell to exit)
- +o when executing a shell function, the loop state
+ +o when executing a shell function, the loop state
(while/until/etc.) is not reset, so bbrreeaakk or ccoonnttiinnuuee in
that function will break or continue loops in the calling
- context. Bash-4.4 and later reset the loop state to pre-
+ context. Bash-4.4 and later reset the loop state to pre-
vent this
ccoommppaatt4444
- +o the shell sets up the values used by BBAASSHH__AARRGGVV and
- BBAASSHH__AARRGGCC so they can expand to the shell's positional
+ +o the shell sets up the values used by BBAASSHH__AARRGGVV and
+ BBAASSHH__AARRGGCC so they can expand to the shell's positional
parameters even if extended debugging mode is not enabled
- +o a subshell inherits loops from its parent context, so
- bbrreeaakk or ccoonnttiinnuuee will cause the subshell to exit.
- Bash-5.0 and later reset the loop state to prevent the
+ +o a subshell inherits loops from its parent context, so
+ bbrreeaakk or ccoonnttiinnuuee will cause the subshell to exit.
+ Bash-5.0 and later reset the loop state to prevent the
exit
- +o variable assignments preceding builtins like eexxppoorrtt and
+ +o variable assignments preceding builtins like eexxppoorrtt and
rreeaaddoonnllyy that set attributes continue to affect variables
with the same name in the calling environment even if the
shell is not in posix mode
ccoommppaatt5500
- +o Bash-5.1 changed the way $$RRAANNDDOOMM is generated to intro-
+ +o Bash-5.1 changed the way $$RRAANNDDOOMM is generated to intro-
duce slightly more randomness. If the shell compatibility
- level is set to 50 or lower, it reverts to the method
- from bash-5.0 and previous versions, so seeding the ran-
- dom number generator by assigning a value to RRAANNDDOOMM will
+ level is set to 50 or lower, it reverts to the method
+ from bash-5.0 and previous versions, so seeding the ran-
+ dom number generator by assigning a value to RRAANNDDOOMM will
produce the same sequence as in bash-5.0
- +o If the command hash table is empty, bash versions prior
- to bash-5.1 printed an informational message to that ef-
- fect, even when producing output that can be reused as
- input. Bash-5.1 suppresses that message when the --ll op-
+ +o If the command hash table is empty, bash versions prior
+ to bash-5.1 printed an informational message to that ef-
+ fect, even when producing output that can be reused as
+ input. Bash-5.1 suppresses that message when the --ll op-
tion is supplied.
+ ccoommppaatt5511
+ +o The uunnsseett builtin treats attempts to unset array sub-
+ scripts @@ and ** differently depending on whether the ar-
+ ray is indexed or associative, and differently than in
+ previous versions.
+
SSEEEE AALLSSOO
bash(1), sh(1)
-GNU Bash 5.0 2004 Apr 20 BASH_BUILTINS(1)
+GNU Bash 5.2 2021 November 22 BASH_BUILTINS(1)
diff --git a/doc/builtins.1 b/doc/builtins.1
index 4413c76f..43d92a2f 100644
--- a/doc/builtins.1
+++ b/doc/builtins.1
@@ -7,14 +7,14 @@
.de FN
\fI\|\\$1\|\fP
..
-.TH BASH_BUILTINS 1 "2004 Apr 20" "GNU Bash 5.0"
+.TH BASH_BUILTINS 1 "2021 November 22" "GNU Bash 5.2"
.SH NAME
-bash, :, ., [, alias, bg, bind, break, builtin, caller,
-cd, command, compgen, complete,
-compopt, continue, declare, dirs, disown, echo, enable, eval, exec, exit,
+:, ., [, alias, bg, bind, break, builtin, caller,
+cd, command, compgen, complete, compopt,
+continue, declare, dirs, disown, echo, enable, eval, exec, exit,
export, false, fc, fg, getopts, hash, help, history, jobs, kill,
let, local, logout, mapfile, popd, printf, pushd, pwd, read,
-readonly, return, set,
+readarray, readonly, return, set,
shift, shopt, source, suspend, test, times, trap, true, type, typeset,
ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1)
.SH BASH BUILTIN COMMANDS
diff --git a/doc/builtins.ps b/doc/builtins.ps
index ae11c544..1becc2a2 100644
--- a/doc/builtins.ps
+++ b/doc/builtins.ps
@@ -1,13 +1,13 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.4
-%%CreationDate: Wed Nov 18 15:13:06 2020
+%%CreationDate: Mon Sep 19 12:02:42 2022
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Symbol
%%+ font Courier
%%DocumentSuppliedResources: procset grops 1.22 4
-%%Pages: 26
+%%Pages: 27
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
%%Orientation: Portrait
@@ -242,19 +242,20 @@ BP
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S
-(ME).219 E F0 .288(bash, :, ., [, alias, bg, bind, break, b)108 96 R
-.287(uiltin, caller)-.2 F 2.787(,c)-.4 G .287
-(d, command, compgen, complete, compopt, continue, de-)-2.787 F .327
-(clare, dirs, diso)108 108 R .327(wn, echo, enable, e)-.25 F -.25(va)
--.25 G .327(l, e).25 F -.15(xe)-.15 G .327(c, e).15 F .327(xit, e)-.15 F
-.327(xport, f)-.15 F .327(alse, fc, fg, getopts, hash, help, history)-.1
-F 2.827(,j)-.65 G .328(obs, kill,)-2.827 F .124(let, local, logout, map\
-\214le, popd, printf, pushd, pwd, read, readonly)108 120 R 2.624(,r)-.65
-G .124(eturn, set, shift, shopt, source, suspend,)-2.624 F 1.926(test, \
-times, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108
-132 R 1.927(ait \255 bash b)-.1 F 1.927(uilt-in commands, see)-.2 F/F2
-10/Times-Bold@0 SF(bash)108 144 Q F0(\(1\))A F1 -.329(BA)72 160.8 S
-(SH B).329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063
+(ME).219 E F0 .622(:, ., [, alias, bg, bind, break, b)108 96 R .622
+(uiltin, caller)-.2 F 3.122(,c)-.4 G .622
+(d, command, compgen, complete, compopt, continue, declare,)-3.122 F
+.076(dirs, diso)108 108 R .076(wn, echo, enable, e)-.25 F -.25(va)-.25 G
+.076(l, e).25 F -.15(xe)-.15 G .076(c, e).15 F .077(xit, e)-.15 F .077
+(xport, f)-.15 F .077(alse, fc, fg, getopts, hash, help, history)-.1 F
+2.577(,j)-.65 G .077(obs, kill, let, lo-)-2.577 F .077
+(cal, logout, map\214le, popd, printf, pushd, pwd, read, readarray)108
+120 R 2.577(,r)-.65 G(eadonly)-2.577 E 2.577(,r)-.65 G .076
+(eturn, set, shift, shopt, source, sus-)-2.577 F .279(pend, test, times\
+, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108 132 R
+.279(ait \255 bash b)-.1 F .279(uilt-in commands, see)-.2 F/F2 10
+/Times-Bold@0 SF(bash)108 144 Q F0(\(1\))A F1 -.329(BA)72 160.8 S(SH B)
+.329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063
(Unless otherwise noted, each b)108 172.8 R .062(uiltin command documen\
ted in this section as accepting options preceded by)-.2 F F2<ad>108
184.8 Q F0(accepts)3.077 E F2<adad>3.077 E F0 .577
@@ -288,38 +289,39 @@ F2(sour)108 303.6 Q(ce)-.18 E F3(\214lename)2.5 E F0([)2.5 E F3(ar)A
(xit)-.15 E 1.33(status of the last command e)144 327.6 R -.15(xe)-.15 G
1.331(cuted from).15 F F3(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331
E F3(\214lename)5.741 E F0 1.331(does not contain a slash, \214le-)4.011
-F .489(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)2.989 G(TH)
--.189 E F0 .489(are used to \214nd the directory containing)2.739 F F3
-(\214lename)4.899 E F0 5.488(.T).18 G .488(he \214le searched for in)
--5.488 F F4 -.666(PA)2.988 G(TH)-.189 E F0 .832(need not be e)144 351.6
-R -.15(xe)-.15 G 3.332(cutable. When).15 F F2(bash)3.332 E F0 .832
-(is not in)3.332 F F3 .832(posix mode)3.332 F F0 3.332(,t)C .833
-(he current directory is searched if no)-3.332 F .982
-(\214le is found in)144 363.6 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9
-/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F2(sour)3.481 E(cepath)-.18
-E F0 .981(option to the)3.481 F F2(shopt)3.481 E F0 -.2(bu)3.481 G .981
-(iltin command is turned of).2 F .981(f, the)-.25 F F4 -.666(PA)144
-375.6 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F
-(y)-.15 E F3(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F
-2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F3
-(\214lename)144 387.6 Q F0 .485(is e)2.985 F -.15(xe)-.15 G 2.985
-(cuted. Otherwise).15 F .485(the positional parameters are unchanged.)
-2.985 F .485(If the)5.485 F 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
-(completes. The)144 435.6 R 1.262
-(return status is the status of the last command e)3.763 F 1.262
-(xited within the script \(0 if no)-.15 F(commands are e)144 447.6 Q
+F .023(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)2.523 G(TH)
+-.189 E F0 .022(are used to \214nd the directory containing)2.273 F F3
+(\214lename)4.432 E F0 2.522(,b).18 G(ut)-2.722 E F3(\214lename)2.522 E
+F0 .022(does not need to be)2.522 F -.15(exe)144 351.6 S 3.86
+(cutable. The).15 F 1.36(\214le searched for in)3.86 F F4 -.666(PA)3.86
+G(TH)-.189 E F0 1.361(need not be e)3.61 F -.15(xe)-.15 G 3.861
+(cutable. When).15 F F2(bash)3.861 E F0 1.361(is not in)3.861 F F3
+(posix)3.861 E(mode)144 363.6 Q F0 2.772(,i)C 2.772(ts)-2.772 G .272
+(earches the current directory if no \214le is found in)-2.772 F F4
+-.666(PA)2.771 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .271(If the)
+4.771 F F2(sour)2.771 E(cepath)-.18 E F0 .271(option to the)2.771 F F2
+(shopt)144 375.6 Q F0 -.2(bu)3.659 G 1.159(iltin command is turned of).2
+F 1.159(f, the)-.25 F F4 -.666(PA)3.659 G(TH)-.189 E F0 1.159
+(is not searched.)3.409 F 1.16(If an)6.159 F(y)-.15 E F3(ar)3.66 E
+(guments)-.37 E F0 1.16(are supplied,)3.66 F(the)144 387.6 Q 3.692(yb)
+-.15 G 1.192(ecome the positional parameters when)-3.692 F F3
+(\214lename)3.692 E F0 1.192(is e)3.692 F -.15(xe)-.15 G 3.691
+(cuted. Otherwise).15 F 1.191(the positional pa-)3.691 F .82
+(rameters are unchanged.)144 399.6 R .82(If the)5.82 F F2<ad54>3.32 E F0
+.82(option is enabled,)3.32 F F2(.)3.32 E F0 .82(inherits an)3.32 F 3.32
+(yt)-.15 G .82(rap on)-3.32 F F2(DEB)3.32 E(UG)-.1 E F0 3.32(;i)C 3.32
+(fi)-3.32 G 3.32(ti)-3.32 G 3.32(sn)-3.32 G(ot,)-3.32 E(an)144 411.6 Q
+(y)-.15 E F2(DEB)3.323 E(UG)-.1 E F0 .823(trap string is sa)3.323 F -.15
+(ve)-.2 G 3.322(da).15 G .822(nd restored around the call to)-3.322 F F2
+(.)3.322 E F0 3.322(,a)C(nd)-3.322 E F2(.)3.322 E F0 .822(unsets the)
+3.322 F F2(DEB)3.322 E(UG)-.1 E F0(trap)3.322 E .226(while it e)144
+423.6 R -.15(xe)-.15 G 2.726(cutes. If).15 F F2<ad54>2.727 E F0 .227
+(is not set, and the sourced \214le changes the)2.727 F F2(DEB)2.727 E
+(UG)-.1 E F0 .227(trap, the ne)2.727 F 2.727(wv)-.25 G .227(alue is)
+-2.977 F .891(retained when)144 435.6 R F2(.)3.391 E F0 3.391
+(completes. The)3.391 F .891
+(return status is the status of the last command e)3.391 F .89
+(xited within the)-.15 F(script \(0 if no commands are e)144 447.6 Q
-.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F3(\214lename)4.41 E
F0(is not found or cannot be read.)2.68 E F2(alias)108 464.4 Q F0([)2.5
E F2<ad70>A F0 2.5(][)C F3(name)-2.5 E F0([=)A F3(value)A F0 2.5(].)C
@@ -364,2955 +366,3070 @@ F2<ad72>-2.5 E F3 -.1(ke)2.5 G(yseq)-.2 E F0(])A F2(bind)108 642 Q F0([)
G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3
(function\255name)A F2(bind)108 678 Q F0([)2.5 E F2<ad6d>A F3 -.1(ke)2.5
G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -.37(re)C
-(adline\255command).37 E F0 .238(Display current)144 690 R F2 -.18(re)
+(adline\255command).37 E F2(bind)108 690 Q F3 -.37(re)2.5 G
+(adline-command-line).37 E F0 .238(Display current)144 702 R F2 -.18(re)
2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239
(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239
(equence to a).15 F F2 -.18(re)2.739 G(adline).18 E F0 .239(function or)
-2.739 F .476(macro, or set a)144 702 R F2 -.18(re)2.976 G(adline).18 E
-F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F
-.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F3
-(.inputr)144.23 714 Q(c)-.37 E F0 2.967(,b).31 G .467
-(ut each binding or command must be passed as a separate ar)-3.167 F
-.468(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5
-(re\255read\255init\255\214le'. Options,)144 726 R(if supplied, ha)2.5 E
-.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash 5.0)72
-768 Q(2004 Apr 20)149.565 E(1)203.725 E 0 Cg EP
+2.739 F .04(macro, or set a)144 714 R F2 -.18(re)2.54 G(adline).18 E F0
+-.25(va)2.54 G 2.54(riable. Each).25 F .039(non-option ar)2.54 F .039
+(gument is a command as it w)-.18 F .039(ould appear in a)-.1 F F2 -.18
+(re)144 726 S(adline).18 E F0 1.471(initialization \214le such as)3.971
+F F3(.inputr)4.201 E(c)-.37 E F0 3.971(,b).31 G 1.472
+(ut each binding or command must be passed as a)-4.171 F(GNU Bash 5.2)72
+768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(1)190.545 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad6d>144 84 Q/F2 10
-/Times-Italic@0 SF -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 96 Q F2 -.1(ke)
-5.159 G(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658
-(map to be af).15 F 2.658(fected by the subsequent bindings.)-.25 F
-(Acceptable)7.658 E F2 -.1(ke)180 108 S(ymap)-.2 E F0 3.192(names are)
-5.882 F F2 3.192(emacs, emacs\255standar)5.692 F 3.193
+E(UIL)-.1 E(TINS\(1\))-.92 E .574(separate ar)144 84 R .574
+(gument; e.g., '"\\C\255x\\C\255r": re\255read\255init\255\214le'.)-.18
+F .574(Options, if supplied, ha)5.574 F .874 -.15(ve t)-.2 H .574
+(he follo).15 F(wing)-.25 E(meanings:)144 96 Q/F1 10/Times-Bold@0 SF
+<ad6d>144 108 Q/F2 10/Times-Italic@0 SF -.1(ke)2.5 G(ymap)-.2 E F0(Use)
+180 120 Q F2 -.1(ke)5.158 G(ymap)-.2 E F0 2.658(as the k)5.348 F -.15
+(ey)-.1 G 2.658(map to be af).15 F 2.659
+(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E F2 -.1(ke)
+180 132 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193
+(emacs, emacs\255standar)5.693 F 3.192
(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E
-(vi\255command)180 120 Q F0 4.09(,a)C(nd)-4.09 E F2(vi\255insert)4.38 E
-F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G 1.589
+(vi\255command)180 144 Q F0 4.089(,a)C(nd)-4.089 E F2(vi\255insert)4.379
+E F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G 1.589
(lent to).25 F F2(vi\255command)4.089 E F0(\()4.089 E F2(vi\255mo)A(ve)
--.1 E F0 1.589(is also a syn-)4.089 F(on)180 132 Q(ym\);)-.15 E F2
-(emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2
-(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1<ad6c>144 144 Q F0
-(List the names of all)180 144 Q F1 -.18(re)2.5 G(adline).18 E F0
-(functions.)2.5 E F1<ad70>144 156 Q F0(Display)180 156 Q F1 -.18(re)2.5
-G(adline).18 E F0(function names and bindings in such a w)2.5 E
-(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1<ad50>144 168 Q
-F0(List current)180 168 Q F1 -.18(re)2.5 G(adline).18 E F0
-(function names and bindings.)2.5 E F1<ad73>144 180 Q F0(Display)180 180
-Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 G
-1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo)
--.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 192 S 2.5(yt).1 G
-(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1<ad53>144 204 Q F0
-(Display)180 204 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5(ys)
--.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo)-.15 G
-(utput.)-2.5 E F1<ad76>144 216 Q F0(Display)180 216 Q F1 -.18(re)2.5 G
+-.1 E F0 1.59(is also a syn-)4.089 F(on)180 156 Q(ym\);)-.15 E F2(emacs)
+2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2(emacs\255standar)
+2.5 E(d)-.37 E F0(.)A F1<ad6c>144 168 Q F0(List the names of all)180 168
+Q F1 -.18(re)2.5 G(adline).18 E F0(functions.)2.5 E F1<ad70>144 180 Q F0
+(Display)180 180 Q F1 -.18(re)2.5 G(adline).18 E F0
+(function names and bindings in such a w)2.5 E(ay that the)-.1 E 2.5(yc)
+-.15 G(an be re-read.)-2.5 E F1<ad50>144 192 Q F0(List current)180 192 Q
+F1 -.18(re)2.5 G(adline).18 E F0(function names and bindings.)2.5 E F1
+<ad73>144 204 Q F0(Display)180 204 Q F1 -.18(re)3.655 G(adline).18 E F0
+-.1(ke)3.655 G 3.655(ys)-.05 G 1.155
+(equences bound to macros and the strings the)-3.655 F 3.655(yo)-.15 G
+1.155(utput in such a)-3.655 F -.1(wa)180 216 S 2.5(yt).1 G(hat the)-2.5
+E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1<ad53>144 228 Q F0(Display)180
+228 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5(ys)-.05 G
+(equences bound to macros and the strings the)-2.5 E 2.5(yo)-.15 G
+(utput.)-2.5 E F1<ad76>144 240 Q F0(Display)180 240 Q F1 -.18(re)2.5 G
(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G
-(an be re-read.)-2.5 E F1<ad56>144 228 Q F0(List current)180 228 Q F1
+(an be re-read.)-2.5 E F1<ad56>144 252 Q F0(List current)180 252 Q F1
-.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
-(alues.)-.25 E F1<ad66>144 240 Q F2(\214lename)2.5 E F0(Read k)180 252 Q
+(alues.)-.25 E F1<ad66>144 264 Q F2(\214lename)2.5 E F0(Read k)180 276 Q
.3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A F1
-<ad71>144 264 Q F2(function)2.5 E F0(Query about which k)180 276 Q -.15
+<ad71>144 288 Q F2(function)2.5 E F0(Query about which k)180 300 Q -.15
(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H(he named).1
-E F2(function)2.5 E F0(.)A F1<ad75>144 288 Q F2(function)2.5 E F0
-(Unbind all k)180 300 Q -.15(ey)-.1 G 2.5(sb).15 G(ound to the named)
--2.5 E F2(function)2.5 E F0(.)A F1<ad72>144 312 Q F2 -.1(ke)2.5 G(yseq)
--.2 E F0(Remo)180 324 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H
+E F2(function)2.5 E F0(.)A F1<ad75>144 312 Q F2(function)2.5 E F0
+(Unbind all k)180 324 Q -.15(ey)-.1 G 2.5(sb).15 G(ound to the named)
+-2.5 E F2(function)2.5 E F0(.)A F1<ad72>144 336 Q F2 -.1(ke)2.5 G(yseq)
+-.2 E F0(Remo)180 348 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H
(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(.)A F1<ad78>144
-336 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A F0(Cause)
-180 348 Q F2(shell\255command)4.325 E F0 1.825(to be e)4.325 F -.15(xe)
+360 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A F0(Cause)
+180 372 Q F2(shell\255command)4.325 E F0 1.825(to be e)4.325 F -.15(xe)
-.15 G 1.825(cuted whene).15 F -.15(ve)-.25 G(r).15 E F2 -.1(ke)4.325 G
(yseq)-.2 E F0 1.825(is entered.)4.325 F(When)6.825 E F2(shell\255com-)
-4.325 E(mand)180 360 Q F0 1.764(is e)4.264 F -.15(xe)-.15 G 1.765
+4.325 E(mand)180 384 Q F0 1.765(is e)4.265 F -.15(xe)-.15 G 1.765
(cuted, the shell sets the).15 F/F3 9/Times-Bold@0 SF(READLINE_LINE)
4.265 E F0 -.25(va)4.015 G 1.765(riable to the contents of the).25 F F1
--.18(re)180 372 S(adline).18 E F0 .375(line b)2.875 F(uf)-.2 E .375
+-.18(re)180 396 S(adline).18 E F0 .375(line b)2.874 F(uf)-.2 E .375
(fer and the)-.25 F F3(READLINE_POINT)2.875 E F0(and)2.625 E F3
(READLINE_MARK)2.875 E F0 -.25(va)2.625 G .375(riables to the).25 F
-1.185(current location of the insertion point and the sa)180 384 R -.15
-(ve)-.2 G 3.686(di).15 G 1.186(nsertion point \(the mark\), respec-)
--3.686 F(ti)180 396 Q -.15(ve)-.25 G(ly).15 E 5.702(.I)-.65 G 3.202(ft)
--5.702 G .702(he e)-3.202 F -.15(xe)-.15 G .702
-(cuted command changes the v).15 F .701(alue of an)-.25 F 3.201(yo)-.15
-G(f)-3.201 E F3(READLINE_LINE)3.201 E/F4 9/Times-Roman@0 SF(,)A F3
-(READ-)2.951 E(LINE_POINT)180 408 Q F4(,)A F0(or)3.58 E F3
-(READLINE_MARK)3.83 E F4(,)A F0 1.33(those ne)3.58 F 3.83(wv)-.25 G
-1.331(alues will be re\215ected in the editing)-4.08 F(state.)180 420 Q
-F1<ad58>144 432 Q F0 .83(List all k)180 432 R 1.13 -.15(ey s)-.1 H .829
+1.186(current location of the insertion point and the sa)180 408 R -.15
+(ve)-.2 G 3.685(di).15 G 1.185(nsertion point \(the mark\), respec-)
+-3.685 F(ti)180 420 Q -.15(ve)-.25 G(ly).15 E 5.377(.T)-.65 G .377
+(he shell assigns an)-5.377 F 2.877(yn)-.15 G .377(umeric ar)-2.877 F
+.377(gument the user supplied to the)-.18 F F3(READLINE_AR-)2.878 E
+(GUMENT)180 432 Q F0 -.25(va)3.605 G 3.855(riable. If).25 F 1.355
+(there w)3.855 F 1.354(as no ar)-.1 F 1.354(gument, that v)-.18 F 1.354
+(ariable is not set.)-.25 F 1.354(If the e)6.354 F -.15(xe)-.15 G(cuted)
+.15 E .343(command changes the v)180 444 R .343(alue of an)-.25 F 2.843
+(yo)-.15 G(f)-2.843 E F3(READLINE_LINE)2.844 E/F4 9/Times-Roman@0 SF(,)A
+F3(READLINE_POINT)2.594 E F4(,)A F0(or)2.594 E F3(READ-)2.844 E
+(LINE_MARK)180 456 Q F4(,)A F0(those ne)2.25 E 2.5(wv)-.25 G
+(alues will be re\215ected in the editing state.)-2.75 E F1<ad58>144 468
+Q F0 .83(List all k)180 468 R 1.13 -.15(ey s)-.1 H .829
(equences bound to shell commands and the associated commands in a for)
-.15 F(-)-.2 E(mat that can be reused as input.)180 444 Q(The return v)
-144 460.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15
+.15 F(-)-.2 E(mat that can be reused as input.)180 480 Q(The return v)
+144 496.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15
(ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5
-E F1(br)108 477.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054
-(Exit from within a)144 489.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1
+E F1(br)108 513.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054
+(Exit from within a)144 525.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1
(while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1
(select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055
(is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G
(ls.).15 E F2(n)5.415 E F0 .055(must be)2.795 F/F5 10/Symbol SF<b3>2.555
-E F0(1.)2.555 E(If)144 501.6 Q F2(n)3.075 E F0 .215(is greater than the\
+E F0(1.)2.555 E(If)144 537.6 Q F2(n)3.075 E F0 .215(is greater than the\
number of enclosing loops, all enclosing loops are e)2.955 F 2.714
(xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(is 0 unless)144
-513.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2
-(bu)108 530.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E
-F2(ar)A(guments)-.37 E F0(])A(Ex)144 542.4 Q .77
+549.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2
+(bu)108 566.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E
+F2(ar)A(guments)-.37 E F0(])A(Ex)144 578.4 Q .77
(ecute the speci\214ed shell b)-.15 F .77(uiltin, passing it)-.2 F F2
(ar)3.601 E(guments)-.37 E F0 3.271(,a).27 G .771(nd return its e)-3.271
F .771(xit status.)-.15 F .771(This is useful)5.771 F .616
(when de\214ning a function whose name is the same as a shell b)144
-554.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144
-566.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0
+590.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144
+602.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0
-.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E
-5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 578.4 Q(alse if)-.1
+5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 614.4 Q(alse if)-.1
E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E
-(uiltin command.)-.2 E F1(caller)108 595.2 Q F0([)2.5 E F2 -.2(ex)C(pr)
-.2 E F0(])A .254(Returns the conte)144 607.2 R .254(xt of an)-.15 F
+(uiltin command.)-.2 E F1(caller)108 631.2 Q F0([)2.5 E F2 -.2(ex)C(pr)
+.2 E F0(])A .254(Returns the conte)144 643.2 R .254(xt of an)-.15 F
2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254
(ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G
-.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 619.2 Q
+.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 655.2 Q
(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2
(ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324
(displays the line number and source \214lename of the current)2.824 F
-.254(subroutine call.)144 631.2 R .254(If a non-ne)5.254 F -.05(ga)-.15
+.254(subroutine call.)144 667.2 R .254(If a non-ne)5.254 F -.05(ga)-.15
G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15
F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .253
(displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\
tine name, and source \214le corresponding to that position in the curr\
-ent e)144 643.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001
-(This e)144 655.2 R .001(xtra information may be used, for e)-.15 F .001
+ent e)144 679.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001
+(This e)144 691.2 R .001(xtra information may be used, for e)-.15 F .001
(xample, to print a stack trace.)-.15 F(The current frame is frame)5 E
-3.019(0. The)144 667.2 R .519(return v)3.019 F .519
+3.019(0. The)144 703.2 R .519(return v)3.019 F .519
(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52
(cuting a subroutine call or).15 F F2 -.2(ex)3.02 G(pr).2 E F0 .52
-(does not corre-)3.02 F(spond to a v)144 679.2 Q
-(alid position in the call stack.)-.25 E F1(cd)108 696 Q F0([)2.5 E F1
-<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 708 R F2(dir)
-2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321
-(is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E
-F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 720 R
-3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035
-(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.)
-3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666
-G(H).855 E F0(de\214nes)3.286 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)
-149.565 E(2)203.725 E 0 Cg EP
+(does not corre-)3.02 F(spond to a v)144 715.2 Q
+(alid position in the call stack.)-.25 E(GNU Bash 5.2)72 768 Q(2021 No)
+136.385 E -.15(ve)-.15 G(mber 22).15 E(2)190.545 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E .827
-(the search path for the directory containing)144 84 R/F1 10
-/Times-Italic@0 SF(dir)3.676 E F0 3.326(:e).73 G .826
-(ach directory name in)-3.326 F/F2 9/Times-Bold@0 SF(CDP)3.326 E -.855
-(AT)-.666 G(H).855 E F0 .826(is searched for)3.076 F F1(dir)144 96 Q F0
-5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665
-(irectory names in).15 F F2(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0
-.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665
-(ull directory name)-3.165 F(in)144 108 Q F2(CDP)3.102 E -.855(AT)-.666
-G(H).855 E F0 .602(is the same as the current directory)2.852 F 3.102
-(,i)-.65 G .602(.e., `)-3.102 F(`)-.74 E/F3 10/Times-Bold@0 SF(.)A F0
--.74('')C 5.602(.I).74 G(f)-5.602 E F1(dir)3.451 E F0(be)3.831 E .601
-(gins with a slash \(/\), then)-.15 F F2(CD-)3.101 E -.666(PA)144 120 S
-(TH)-.189 E F0 1.003(is not used.)3.253 F(The)6.003 E 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
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(cd)108 84 Q F0([)2.5
+E F1<ad4c>A F0(|[)A F1<ad50>A F0([)2.5 E F1<ad65>A F0(]] [\255@]] [)A/F2
+10/Times-Italic@0 SF(dir)A F0(])A .322(Change the current directory to)
+144 96 R F2(dir)2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321
+(is not supplied, the v)2.822 F .321(alue of the)-.25 F/F3 9
+/Times-Bold@0 SF(HOME)2.821 E F0 .321(shell v)2.571 F .321(ariable is)
+-.25 F .929(the def)144 108 R 3.429(ault. The)-.1 F -.25(va)3.429 G
+(riable).25 E F3(CDP)3.429 E -.855(AT)-.666 G(H).855 E F0 .93
+(de\214nes the search path for the directory containing)3.179 F F2(dir)
+3.78 E F0 3.43(:e).73 G(ach)-3.43 E .407(directory name in)144 120 R F3
+(CDP)2.907 E -.855(AT)-.666 G(H).855 E F0 .407(is searched for)2.657 F
+F2(dir)2.907 E F0 5.407(.A)C(lternati)-5.407 E .707 -.15(ve d)-.25 H
+.407(irectory names in).15 F F3(CDP)2.907 E -.855(AT)-.666 G(H).855 E F0
+.406(are sepa-)2.656 F .799(rated by a colon \(:\).)144 132 R 3.299(An)
+5.799 G .799(ull directory name in)-3.299 F F3(CDP)3.299 E -.855(AT)
+-.666 G(H).855 E F0 .799(is the same as the current directory)3.049 F
+3.3(,i)-.65 G(.e.,)-3.3 E -.74(``)144 144 S F1(.).74 E F0 -.74('')C
+5.428(.I).74 G(f)-5.428 E F2(dir)3.278 E F0(be)3.658 E .428
+(gins with a slash \(/\), then)-.15 F F3(CDP)2.928 E -.855(AT)-.666 G(H)
+.855 E F0 .428(is not used.)2.678 F(The)5.428 E F1<ad50>2.927 E F0 .427
+(option causes)2.927 F F1(cd)2.927 E F0 .427(to use the)2.927 F(ph)144
+156 Q .167
+(ysical directory structure by resolving symbolic links while tra)-.05 F
+-.15(ve)-.2 G(rsing).15 E F2(dir)2.668 E F0 .168(and before processing)
+2.668 F 1.225(instances of)144 168 R F2(..)3.725 E F0(in)3.725 E F2(dir)
+3.725 E F0 1.225(\(see also the)3.725 F F1<ad50>3.725 E F0 1.225
+(option to the)3.725 F F1(set)3.725 E F0 -.2(bu)3.725 G 1.225
+(iltin command\); the).2 F F1<ad4c>3.725 E F0 1.225(option forces)3.725
+F .411(symbolic links to be follo)144 180 R .411
+(wed by resolving the link after processing instances of)-.25 F F2(..)
+2.911 E F0(in)2.911 E F2(dir)2.911 E F0 5.411(.I)C(f)-5.411 E F2(..)
+2.912 E F0(ap-)2.912 E .341(pears in)144 192 R F2(dir)2.841 E F0 2.841
+(,i)C 2.841(ti)-2.841 G 2.841(sp)-2.841 G .341(rocessed by remo)-2.841 F
+.341(ving the immediately pre)-.15 F .34(vious pathname component from)
+-.25 F F2(dir)2.84 E F0(,)A .175(back to a slash or the be)144 204 R
+.175(ginning of)-.15 F F2(dir)2.675 E F0 5.175(.I)C 2.675(ft)-5.175 G
+(he)-2.675 E F1<ad65>2.676 E F0 .176(option is supplied with)2.676 F F1
+<ad50>2.676 E F0 2.676(,a)C .176(nd the current w)-2.676 F(ork-)-.1 E
+.341(ing directory cannot be successfully determined after a successful\
+ directory change,)144 216 R F1(cd)2.84 E F0 .34(will return)2.84 F .356
+(an unsuccessful status.)144 228 R .356(On systems that support it, the)
+5.356 F F1<ad40>2.857 E F0 .357(option presents the e)2.857 F .357
+(xtended attrib)-.15 F(utes)-.2 E .07
+(associated with a \214le as a directory)144 240 R 5.07(.A)-.65 G 2.569
+(na)-5.07 G -.18(rg)-2.569 G .069(ument of).18 F F1<ad>2.569 E F0 .069
+(is con)2.569 F -.15(ve)-.4 G .069(rted to).15 F F3($OLDPWD)2.569 E F0
+.069(before the direc-)2.319 F .306(tory change is attempted.)144 252 R
+.306(If a non-empty directory name from)5.306 F F3(CDP)2.806 E -.855(AT)
+-.666 G(H).855 E F0 .306(is used, or if)2.556 F F1<ad>2.807 E F0 .307
+(is the \214rst)2.807 F(ar)144 264 Q .116(gument, and the directory cha\
+nge is successful, the absolute pathname of the ne)-.18 F 2.615(ww)-.25
+G .115(orking direc-)-2.715 F .15
+(tory is written to the standard output.)144 276 R .15
+(If the directory change is successful,)5.15 F F1(cd)2.65 E F0 .15
+(sets the v)2.65 F .15(alue of the)-.25 F F1(PWD)144 288 Q F0(en)2.958 E
+.458(vironment v)-.4 F .458(ariable to the ne)-.25 F 2.958(wd)-.25 G
+.458(irectory name, and sets the)-2.958 F F1(OLDPWD)2.957 E F0(en)2.957
+E .457(vironment v)-.4 F(ari-)-.25 E .125(able to the v)144 300 R .125
+(alue of the current w)-.25 F .126(orking directory before the change.)
+-.1 F .126(The return v)5.126 F .126(alue is true if the)-.25 F
+(directory w)144 312 Q(as successfully changed; f)-.1 E(alse otherwise.)
+-.1 E F1(command)108 328.8 Q F0([)2.5 E F1(\255pVv)A F0(])A F2(command)
+2.5 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Run)144 340.8 Q F2
+(command)2.765 E F0(with)3.335 E F2(ar)2.895 E(gs)-.37 E F0 .065
(suppressing the normal shell function lookup.)2.835 F .064(Only b)5.064
-F .064(uiltin commands or)-.2 F .501(commands found in the)144 292.8 R
-F2 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G
-3.002(cuted. If).15 F(the)3.002 E 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
+F .064(uiltin commands or)-.2 F .501(commands found in the)144 352.8 R
+F3 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G
+3.002(cuted. If).15 F(the)3.002 E F1<ad70>3.002 E F0 .502(option is gi)
+3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F2(command)3.202 E
+F0(is)3.772 E .4(performed using a def)144 364.8 R .4(ault v)-.1 F .4
+(alue for)-.25 F F3 -.666(PA)2.9 G(TH)-.189 E F0 .399
(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If)
-5.399 E .174(either the)144 316.8 R 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
+5.399 E .174(either the)144 376.8 R F1<ad56>2.674 E F0(or)2.674 E F1
+<ad76>2.674 E F0 .175(option is supplied, a description of)2.674 F F2
+(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F1<ad76>2.675 E
+F0 .175(option causes)2.675 F 3.318(as)144 388.8 S .818(ingle w)-3.318 F
.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo)
--.4 G -.1(ke).2 G F1(command)3.617 E F0 .817(to be displayed; the)4.087
-F 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
+-.4 G -.1(ke).2 G F2(command)3.617 E F0 .817(to be displayed; the)4.087
+F F1<ad56>144 400.8 Q F0 .249(option produces a more v)2.749 F .249
+(erbose description.)-.15 F .249(If the)5.249 F F1<ad56>2.749 E F0(or)
+2.749 E F1<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 412.8 R F2(command)3.705 E F0 -.1
(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004
-(If neither option is supplied and an error occurred or)6.005 F F1
-(command)144.2 364.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599
+(If neither option is supplied and an error occurred or)6.005 F F2
+(command)144.2 424.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599
(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599
-(xit status of the)-.15 F F3(command)4.099 E F0 -.2(bu)144 376.8 S
-(iltin is the e).2 E(xit status of)-.15 E F1(command)2.7 E F0(.).77 E F3
-(compgen)108 393.6 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d)
--.37 E F0(])A .013(Generate possible completion matches for)144 405.6 R
-F1(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513
+(xit status of the)-.15 F F1(command)4.099 E F0 -.2(bu)144 436.8 S
+(iltin is the e).2 E(xit status of)-.15 E F2(command)2.7 E F0(.).77 E F1
+(compgen)108 453.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(wor)-2.5 E(d)
+-.37 E F0(])A .013(Generate possible completion matches for)144 465.6 R
+F2(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F2(option)2.513
E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981
-(accepted by the)144 417.6 R F3(complete)3.481 E F0 -.2(bu)3.481 G .981
-(iltin with the e).2 F .981(xception of)-.15 F 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)
+(accepted by the)144 477.6 R F1(complete)3.481 E F0 -.2(bu)3.481 G .981
+(iltin with the e).2 F .981(xception of)-.15 F F1<ad70>3.481 E F0(and)
+3.481 E F1<ad72>3.481 E F0 3.481(,a)C .982(nd write the matches to the)
+-3.481 F .131(standard output.)144 489.6 R .131(When using the)5.131 F
+F1<ad46>2.631 E F0(or)2.631 E F1<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 441.6 Q(acilities, while a)-.1 E -.25(va)-.2 G
+F(mable completion f)144 501.6 Q(acilities, while a)-.1 E -.25(va)-.2 G
(ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25
-E .352(The matches will be generated in the same w)144 465.6 R .352
+E .352(The matches will be generated in the same w)144 525.6 R .352
(ay as if the programmable completion code had gen-)-.1 F .02(erated th\
em directly from a completion speci\214cation with the same \215ags.)144
-477.6 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)
-2.52 F(those completions matching)144 489.6 Q F1(wor)2.5 E(d)-.37 E F0
-(will be displayed.)2.5 E(The return v)144 513.6 Q
+537.6 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)
+2.52 F(those completions matching)144 549.6 Q F2(wor)2.5 E(d)-.37 E F0
+(will be displayed.)2.5 E(The return v)144 573.6 Q
(alue is true unless an in)-.25 E -.25(va)-.4 G
-(lid option is supplied, or no matches were generated.).25 E F3
-(complete)108 530.4 Q F0([)2.5 E F3(\255abcdefgjksuv)A F0 2.5(][)C F3
-<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
+(lid option is supplied, or no matches were generated.).25 E F1
+(complete)108 590.4 Q F0([)2.5 E F1(\255abcdefgjksuv)A F0 2.5(][)C F1
+<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 602.4 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 614.4 Q F0([)2.5 E F1(\255DEI)
+A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .633(Specify ho)144 626.4 R
+3.133(wa)-.25 G -.18(rg)-3.133 G .633(uments to each).18 F F2(name)3.133
+E F0 .633(should be completed.)3.133 F .634(If the)5.634 F F1<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
+(options are supplied, e)144 638.4 R .139
(xisting completion speci\214cations are printed in a w)-.15 F .139
(ay that allo)-.1 F .139(ws them to be)-.25 F .31(reused as input.)144
-590.4 R(The)5.31 E 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
+650.4 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.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
+(are supplied, all completion speci\214cations.)144 662.4 R(The)6.208 E
+F1<ad44>3.708 E F0 1.207(option indicates that other supplied options)
+3.707 F .5(and actions should apply to the `)144 674.4 R(`def)-.74 E
(ault')-.1 E 3('c)-.74 G .5
(ommand completion; that is, completion attempted on)-3 F 3.455(ac)144
-626.4 S .955(ommand for which no completion has pre)-3.455 F .955
-(viously been de\214ned.)-.25 F(The)5.955 E F3<ad45>3.455 E F0 .955
+686.4 S .955(ommand for which no completion has pre)-3.455 F .955
+(viously been de\214ned.)-.25 F(The)5.955 E F1<ad45>3.455 E F0 .955
(option indicates that)3.455 F .876
-(other supplied options and actions should apply to `)144 638.4 R
+(other supplied options and actions should apply to `)144 698.4 R
(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-)
--3.376 F .448(pletion attempted on a blank line.)144 650.4 R(The)5.447 E
-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 710.4 Q(GNU Bash 5.0)72 768 Q
-(2004 Apr 20)149.565 E(3)203.725 E 0 Cg EP
+-3.376 F .448(pletion attempted on a blank line.)144 710.4 R(The)5.447 E
+F1<ad49>2.947 E F0 .447
+(option indicates that other supplied options and actions)2.947 F 1.149
+(should apply to completion on the initial non-assignment w)144 722.4 R
+1.15(ord on the line, or after a command)-.1 F(GNU Bash 5.2)72 768 Q
+(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(3)190.545 E 0 Cg EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E .152
-(The process of applying these completion speci\214cations when w)144 84
-R .153(ord completion is attempted is de-)-.1 F(scribed abo)144 96 Q .3
--.15(ve u)-.15 H(nder).15 E/F1 10/Times-Bold@0 SF(Pr)2.5 E
-(ogrammable Completion)-.18 E F0(.)A .556
-(Other options, if speci\214ed, ha)144 120 R .856 -.15(ve t)-.2 H .555
-(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555
-(guments to the)-.18 F 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 180 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184
-192 Q F0 .281(Perform the rest of the def)224 204 R(ault)-.1 E F1(bash)
-2.781 E F0 .281(completions if the compspec generates no)2.781 F
-(matches.)224 216 Q F1(default)184 228 Q F0 2.876(Use readline')224 228
-R 5.376(sd)-.55 G(ef)-5.376 E 2.875
+E(UIL)-.1 E(TINS\(1\))-.92 E .431(delimiter such as)144 84 R/F1 10
+/Times-Bold@0 SF(;)2.931 E F0(or)2.931 E F1(|)2.931 E F0 2.931(,w)C .431
+(hich is usually command name completion.)-2.931 F .43
+(If multiple options are sup-)5.43 F .707(plied, the)144 96 R F1<ad44>
+3.207 E F0 .707(option tak)3.207 F .707(es precedence o)-.1 F -.15(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 .708(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F1<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
+F1<ad44>3.208 E F0(,)A F1<ad45>144 108 Q F0 2.604(,o)C(r)-2.604 E F1
+<ad49>2.604 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15 G(ther)
+-2.603 E/F2 10/Times-Italic@0 SF(name)2.603 E F0(ar)2.603 E .103
+(guments are ignored; these completions only apply to the)-.18 F
+(case speci\214ed by the option.)144 120 Q .152
+(The process of applying these completion speci\214cations when w)144
+144 R .153(ord completion is attempted is de-)-.1 F(scribed in)144 156 Q
+F2(bash\(1\))2.5 E F0(.)A .556(Other options, if speci\214ed, ha)144 180
+R .856 -.15(ve t)-.2 H .555(he follo).15 F .555(wing meanings.)-.25 F
+.555(The ar)5.555 F .555(guments to the)-.18 F 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 192 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 204 Q F1(complete)2.5 E F0 -.2(bu)2.5 G
+(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1<ad6f>144 216 Q F2
+(comp-option)2.5 E F0(The)184 228 Q F2(comp-option)2.791 E F0 .291
+(controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec')
+.15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291
+(yond the simple)-.15 F(generation of completions.)184 240 Q F2
+(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 252 Q F0
+.281(Perform the rest of the def)224 264 R(ault)-.1 E F1(bash)2.781 E F0
+.281(completions if the compspec generates no)2.781 F(matches.)224 276 Q
+F1(default)184 288 Q F0 2.876(Use readline')224 288 R 5.376(sd)-.55 G
+(ef)-5.376 E 2.875
(ault \214lename completion if the compspec generates no)-.1 F(matches.)
-224 240 Q F1(dir)184 252 Q(names)-.15 E F0(Perform directory name compl\
-etion if the compspec generates no matches.)224 264 Q F1(\214lenames)184
-276 Q F0 -.7(Te)224 288 S .137(ll readline that the compspec generates \
+224 300 Q F1(dir)184 312 Q(names)-.15 E F0(Perform directory name compl\
+etion if the compspec generates no matches.)224 324 Q F1(\214lenames)184
+336 Q F0 -.7(Te)224 348 S .137(ll readline that the compspec generates \
\214lenames, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E
-.134(name\255speci\214c processing \(lik)224 300 R 2.634(ea)-.1 G .134
+.134(name\255speci\214c processing \(lik)224 360 R 2.634(ea)-.1 G .134
(dding a slash to directory names, quoting spe-)-2.634 F .45
-(cial characters, or suppressing trailing spaces\).)224 312 R .45
-(Intended to be used with shell)5.45 F(functions.)224 324 Q F1(noquote)
-184 336 Q F0 -.7(Te)224 336 S .814
+(cial characters, or suppressing trailing spaces\).)224 372 R .45
+(Intended to be used with shell)5.45 F(functions.)224 384 Q F1(noquote)
+184 396 Q F0 -.7(Te)224 396 S .814
(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F
3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F
-(\214lenames is the def)224 348 Q(ault\).)-.1 E F1(nosort)184 360 Q F0
--.7(Te)224 360 S(ll readline not to sort the list of possible completio\
-ns alphabetically).7 E(.)-.65 E F1(nospace)184 372 Q F0 -.7(Te)224 372 S
+(\214lenames is the def)224 408 Q(ault\).)-.1 E F1(nosort)184 420 Q F0
+-.7(Te)224 420 S(ll readline not to sort the list of possible completio\
+ns alphabetically).7 E(.)-.65 E F1(nospace)184 432 Q F0 -.7(Te)224 432 S
.22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1
-F .22(ords completed at the end)-.1 F(of the line.)224 384 Q F1
-(plusdirs)184 396 Q F0 1.985(After an)224 396 R 4.485(ym)-.15 G 1.985
+F .22(ords completed at the end)-.1 F(of the line.)224 444 Q F1
+(plusdirs)184 456 Q F0 1.985(After an)224 456 R 4.485(ym)-.15 G 1.985
(atches de\214ned by the compspec are generated, directory name)-4.485 F
-.583(completion is attempted and an)224 408 R 3.084(ym)-.15 G .584
-(atches are added to the results of the other)-3.084 F(actions.)224 420
-Q F1<ad41>144 432 Q F2(action)2.5 E F0(The)184 444 Q F2(action)2.5 E F0
+.583(completion is attempted and an)224 468 R 3.084(ym)-.15 G .584
+(atches are added to the results of the other)-3.084 F(actions.)224 480
+Q F1<ad41>144 492 Q F2(action)2.5 E F0(The)184 504 Q F2(action)2.5 E F0
(may be one of the follo)2.5 E
(wing to generate a list of possible completions:)-.25 E F1(alias)184
-456 Q F0(Alias names.)224 456 Q(May also be speci\214ed as)5 E F1<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)
+516 Q F0(Alias names.)224 516 Q(May also be speci\214ed as)5 E F1<ad61>
+2.5 E F0(.)A F1(arrayv)184 528 Q(ar)-.1 E F0(Array v)224 540 Q
+(ariable names.)-.25 E F1(binding)184 552 Q(Readline)224 552 Q F0 -.1
+(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 564 S(iltin)
+.2 E F0(Names of shell b)224 564 Q(uiltin commands.)-.2 E
+(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 576
+Q F0(Command names.)224 588 Q(May also be speci\214ed as)5 E F1<ad63>2.5
+E F0(.)A F1(dir)184 600 Q(ectory)-.18 E F0(Directory names.)224 612 Q
+(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 624
+Q F0(Names of disabled shell b)224 636 Q(uiltins.)-.2 E F1(enabled)184
+648 Q F0(Names of enabled shell b)224 648 Q(uiltins.)-.2 E F1(export)184
+660 Q F0(Names of e)224 660 Q(xported shell v)-.15 E 2.5(ariables. May)
-.25 F(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184
-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
-660 Q F0(Help topics as accepted by the)224 672 Q F1(help)2.5 E F0 -.2
-(bu)2.5 G(iltin.).2 E F1(hostname)184 684 Q F0(Hostnames, as tak)224 696
-Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF
-(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 708 Q F0
-(Job names, if job control is acti)224 708 Q -.15(ve)-.25 G 5(.M).15 G
-(ay also be speci\214ed as)-5 E 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
+672 Q F0(File names.)224 672 Q(May also be speci\214ed as)5 E F1<ad66>
+2.5 E F0(.)A F1(function)184 684 Q F0(Names of shell functions.)224 696
+Q F1(gr)184 708 Q(oup)-.18 E F0(Group names.)224 708 Q
+(May also be speci\214ed as)5 E F1<ad67>2.5 E F0(.)A(GNU Bash 5.2)72 768
+Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(4)190.545 E 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF -.1(ke)184 84 S(yw).1
-E(ord)-.1 E F0(Shell reserv)224 96 Q(ed w)-.15 E 2.5(ords. May)-.1 F
-(also be speci\214ed as)2.5 E F1<ad6b>2.5 E F0(.)A F1(running)184 108 Q
-F0(Names of running jobs, if job control is acti)224 108 Q -.15(ve)-.25
-G(.).15 E F1(ser)184 120 Q(vice)-.1 E F0(Service names.)224 120 Q
-(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 132 Q
-F0 -1.11(Va)224 132 S(lid ar)1.11 E(guments for the)-.18 E 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 144 Q F0(Shell option names as accepted by the)224 144 Q F1
-(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 156 Q F0
-(Signal names.)224 156 Q F1(stopped)184 168 Q F0
-(Names of stopped jobs, if job control is acti)224 168 Q -.15(ve)-.25 G
-(.).15 E F1(user)184 180 Q F0(User names.)224 180 Q
-(May also be speci\214ed as)5 E 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.056(is e)3.556
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(helptopic)184 84 Q F0
+(Help topics as accepted by the)224 96 Q F1(help)2.5 E F0 -.2(bu)2.5 G
+(iltin.).2 E F1(hostname)184 108 Q F0(Hostnames, as tak)224 120 Q
+(en from the \214le speci\214ed by the)-.1 E/F2 9/Times-Bold@0 SF
+(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 132 Q F0
+(Job names, if job control is acti)224 132 Q -.15(ve)-.25 G 5(.M).15 G
+(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 144 S
+(yw).1 E(ord)-.1 E F0(Shell reserv)224 156 Q(ed w)-.15 E 2.5(ords. May)
+-.1 F(also be speci\214ed as)2.5 E F1<ad6b>2.5 E F0(.)A F1(running)184
+168 Q F0(Names of running jobs, if job control is acti)224 168 Q -.15
+(ve)-.25 G(.).15 E F1(ser)184 180 Q(vice)-.1 E F0(Service names.)224 180
+Q(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 192
+Q F0 -1.11(Va)224 192 S(lid ar)1.11 E(guments for the)-.18 E 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 204 Q F0(Shell option names as accepted by the)224 204 Q F1
+(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 216 Q F0
+(Signal names.)224 216 Q F1(stopped)184 228 Q F0
+(Names of stopped jobs, if job control is acti)224 228 Q -.15(ve)-.25 G
+(.).15 E F1(user)184 240 Q F0(User names.)224 240 Q
+(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 252 S
+(riable).1 E F0(Names of all shell v)224 252 Q 2.5(ariables. May)-.25 F
+(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad43>144 264 Q/F3
+10/Times-Italic@0 SF(command)2.5 E(command)184 276 Q F0 1.056(is e)3.556
F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056
-(vironment, and its output is used as the possible)-.4 F(completions.)
-184 228 Q 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
+(vironment, and its output is used as the possible)-.4 F 2.5
+(completions. Ar)184 288 R(guments are passed as with the)-.18 E F1
+<ad46>2.5 E F0(option.)2.5 E F1<ad46>144 300 Q F3(function)2.5 E F0 .113
+(The shell function)184 312 R F3(function)2.614 E F0 .114(is e)2.614 F
-.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614
-(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 264 R
+(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 324 R
-.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1
($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816
(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407
-(are being completed, the second ar)184 276 R 1.407(gument \()-.18 F F1
+(are being completed, the second ar)184 336 R 1.407(gument \()-.18 F F1
($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407
-(ord being completed, and the)-.1 F .104(third ar)184 288 R .104
+(ord being completed, and the)-.1 F .104(third ar)184 348 R .104
(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w)
-2.604 F .104(ord preceding the w)-.1 F .103
-(ord being completed on the current com-)-.1 F .101(mand line.)184 300 R
+(ord being completed on the current com-)-.1 F .101(mand line.)184 360 R
.101(When it \214nishes, the possible completions are retrie)5.101 F
-.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the)
--.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 312 Q(Y)-.828 E F0(array v)2.25
-E(ariable.)-.25 E 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 .534(is added at the be)3.034 F .534
+-.25 F F2(COMPREPL)184 372 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E
+F1<ad47>144 384 Q F3(globpat)2.5 E F0 1.008(The pathname e)184 396 R
+1.008(xpansion pattern)-.15 F F3(globpat)3.507 E F0 1.007(is e)3.507 F
+1.007(xpanded to generate the possible comple-)-.15 F(tions.)184 408 Q
+F1<ad50>144 420 Q F3(pr)2.5 E(e\214x)-.37 E(pr)184 432 Q(e\214x)-.37 E
+F0 .534(is added at the be)3.034 F .534
(ginning of each possible completion after all other options ha)-.15 F
--.15(ve)-.2 G(been applied.)184 384 Q F1<ad53>144 396 Q F2(suf)2.5 E
-<8c78>-.18 E(suf)184 396 Q<8c78>-.18 E F0
+-.15(ve)-.2 G(been applied.)184 444 Q F1<ad53>144 456 Q F3(suf)2.5 E
+<8c78>-.18 E(suf)184 456 Q<8c78>-.18 E F0
(is appended to each possible completion after all other options ha)2.5
-E .3 -.15(ve b)-.2 H(een applied.).15 E F1<ad57>144 408 Q F2(wor)2.5 E
-(dlist)-.37 E F0(The)184 420 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14
-(is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139
+E .3 -.15(ve b)-.2 H(een applied.).15 E F1<ad57>144 468 Q F3(wor)2.5 E
+(dlist)-.37 E F0(The)184 480 Q F3(wor)3.64 E(dlist)-.37 E F0 1.14
+(is split using the characters in the)3.64 F F2(IFS)3.64 E F0 1.139
(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F .98
-(each resultant w)184 432 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15
-F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37 E F0
-3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 444 Q .766
+(each resultant w)184 492 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15
+F .981(quoting is honored within)3.481 F F3(wor)3.481 E(dlist)-.37 E F0
+3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 504 Q .766
(vide a mechanism for the w)-.15 F .765
(ords to contain shell metacharacters or characters in the)-.1 F -.25
-(va)184 456 S 1.964(lue of).25 F F3(IFS)4.464 E/F4 9/Times-Roman@0 SF(.)
+(va)184 516 S 1.964(lue of).25 F F2(IFS)4.464 E/F4 9/Times-Roman@0 SF(.)
A F0 1.964
(The possible completions are the members of the resultant list which)
-6.464 F(match the w)184 468 Q(ord being completed.)-.1 E F1<ad58>144 480
-Q F2(\214lterpat)2.5 E(\214lterpat)184 492 Q F0 .456
+6.464 F(match the w)184 528 Q(ord being completed.)-.1 E F1<ad58>144 540
+Q F3(\214lterpat)2.5 E(\214lterpat)184 552 Q F0 .456
(is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F
.455(is applied to the list of possible)2.956 F 1.596
-(completions generated by the preceding options and ar)184 504 R 1.596
-(guments, and each completion)-.18 F(matching)184 516 Q F2(\214lterpat)
+(completions generated by the preceding options and ar)184 564 R 1.596
+(guments, and each completion)-.18 F(matching)184 576 Q F3(\214lterpat)
3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704
(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0
-(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704
-(tes the pattern;).05 F(in this case, an)184 528 Q 2.5(yc)-.15 G
-(ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E
--.15(ve)-.15 G(d.).15 E .466(The return v)144 544.8 R .466
+(in)3.204 E F3(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704
+(tes the pattern;).05 F(in this case, an)184 588 Q 2.5(yc)-.15 G
+(ompletion not matching)-2.5 E F3(\214lterpat)2.5 E F0(is remo)2.5 E
+-.15(ve)-.15 G(d.).15 E .466(The return v)144 604.8 R .466
(alue is true unless an in)-.25 F -.25(va)-.4 G .466
(lid option is supplied, an option other than).25 F 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
+(plied without a)144 616.8 R F3(name)3.862 E F0(ar)3.862 E 1.361
(gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H
-1.361(ompletion speci\214cation for a).15 F F2(name)144 568.8 Q F0
+1.361(ompletion speci\214cation for a).15 F F3(name)144 628.8 Q F0
(for which no speci\214cation e)2.5 E
(xists, or an error occurs adding a completion speci\214cation.)-.15 E
-F1(compopt)108 585.6 Q F0([)2.5 E 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
+F1(compopt)108 645.6 Q F0([)2.5 E F1<ad6f>A F3(option)2.5 E F0 2.5(][)C
+F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F3(option)2.5 E F0 2.5(][)C
+F3(name)-2.5 E F0(])A .447(Modify completion options for each)144 657.6
+R F3(name)2.947 E F0 .447(according to the)2.947 F F3(option)2.947 E F0
.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726
-(completion if no)144 609.6 R F2(name)3.226 E F0 3.226(sa)C .726
-(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa)
+(completion if no)144 669.6 R F3(name)3.226 E F0 3.226(sa)C .726
+(re supplied.)-3.226 F .725(If no)5.725 F F3(option)3.225 E F0 3.225(sa)
C .725(re gi)-3.225 F -.15(ve)-.25 G .725
-(n, display the completion options for).15 F(each)144 621.6 Q F2(name)
+(n, display the completion options for).15 F(each)144 681.6 Q F3(name)
3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v)
-5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224
-F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 633.6 Q F0 -.2(bu)
+5.724 F .724(alues of)-.25 F F3(option)3.224 E F0 .724(are those v)3.224
+F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 693.6 Q F0 -.2(bu)
2.678 G .178(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he)
-5.178 E F1<ad44>2.678 E F0 .178
(option indicates that other supplied options should apply to)2.678 F
-1.227(the `)144 645.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\
+1.227(the `)144 705.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\
mmand completion; that is, completion attempted on a command for which \
-no)-3.727 F 2.039(completion has pre)144 657.6 R 2.039
+no)-3.727 F 2.039(completion has pre)144 717.6 R 2.039
(viously been de\214ned.)-.25 F(The)7.038 E 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
+(should apply to `)144 729.6 R(`empty')-.74 E 4.038('c)-.74 G 1.539
(ommand completion; that is, completion attempted on a blank line.)
--4.038 F(The)144 681.6 Q 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.368(,w)C .868(hich is usually com-)
--3.368 F(mand name completion.)144 705.6 Q 1.388(The return v)144 729.6
-R 1.388(alue is true unless an in)-.25 F -.25(va)-.4 G 1.387
-(lid option is supplied, an attempt is made to modify the).25 F
-(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(5)203.725 E 0 Cg EP
+-4.038 F(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22)
+.15 E(5)190.545 E 0 Cg EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(options for a)144 84 Q/F1 10/Times-Italic@0
-SF(name)2.5 E F0(for which no completion speci\214cation e)2.5 E
-(xists, or an output error occurs.)-.15 E/F2 10/Times-Bold@0 SF
-(continue)108 100.8 Q F0([)2.5 E F1(n)A F0(])A .85(Resume the ne)144
-112.8 R .85(xt iteration of the enclosing)-.15 F F2 -.25(fo)3.35 G(r).25
-E F0(,)A F2(while)3.351 E F0(,)A F2(until)3.351 E F0 3.351(,o)C(r)-3.351
-E F2(select)3.351 E F0 3.351(loop. If)3.351 F F1(n)3.711 E F0 .851
-(is speci\214ed, re-)3.591 F .204(sume at the)144 124.8 R F1(n)2.704 E
-F0 .204(th enclosing loop.)B F1(n)5.564 E F0 .204(must be)2.944 F/F3 10
-/Symbol SF<b3>2.704 E F0 2.703(1. If)2.704 F F1(n)3.063 E F0 .203
+E(UIL)-.1 E(TINS\(1\))-.92 E(The)144 84 Q/F1 10/Times-Bold@0 SF<ad49>
+3.02 E F0 .52(option indicates that other supplied options should apply\
+ to completion on the initial non-)3.02 F .867(assignment w)144 96 R
+.868(ord on the line, or after a command delimiter such as)-.1 F F1(;)
+3.368 E F0(or)3.368 E F1(|)3.368 E F0 3.368(,w)C .868
+(hich is usually com-)-3.368 F(mand name completion.)144 108 Q .432
+(The return v)144 132 R .431(alue is true unless an in)-.25 F -.25(va)
+-.4 G .431(lid option is supplied, an attempt is made to modify the op-)
+.25 F(tions for a)144 144 Q/F2 10/Times-Italic@0 SF(name)2.5 E F0
+(for which no completion speci\214cation e)2.5 E
+(xists, or an output error occurs.)-.15 E F1(continue)108 160.8 Q F0([)
+2.5 E F2(n)A F0(])A .85(Resume the ne)144 172.8 R .85
+(xt iteration of the enclosing)-.15 F F1 -.25(fo)3.35 G(r).25 E F0(,)A
+F1(while)3.351 E F0(,)A F1(until)3.351 E F0 3.351(,o)C(r)-3.351 E F1
+(select)3.351 E F0 3.351(loop. If)3.351 F F2(n)3.711 E F0 .851
+(is speci\214ed, re-)3.591 F .204(sume at the)144 184.8 R F2(n)2.704 E
+F0 .204(th enclosing loop.)B F2(n)5.564 E F0 .204(must be)2.944 F/F3 10
+/Symbol SF<b3>2.704 E F0 2.703(1. If)2.704 F F2(n)3.063 E F0 .203
(is greater than the number of enclosing loops,)2.943 F 1.183
-(the last enclosing loop \(the `)144 136.8 R(`top-le)-.74 E -.15(ve)-.25
+(the last enclosing loop \(the `)144 196.8 R(`top-le)-.74 E -.15(ve)-.25
G(l').15 E 3.683('l)-.74 G 1.183(oop\) is resumed.)-3.683 F 1.184
-(The return v)6.184 F 1.184(alue is 0 unless)-.25 F F1(n)3.684 E F0
-1.184(is not)3.684 F(greater than or equal to 1.)144 148.8 Q F2(declar)
-108 165.6 Q(e)-.18 E F0([)2.5 E F2(\255aAfFgiIlnrtux)A F0 2.5(][)C F2
-<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(\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
+(The return v)6.184 F 1.184(alue is 0 unless)-.25 F F2(n)3.684 E F0
+1.184(is not)3.684 F(greater than or equal to 1.)144 208.8 Q F1(declar)
+108 225.6 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 2.5(][)C F1
+<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 237.6 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.265(Declare v)144 249.6 R 1.265
(ariables and/or gi)-.25 F 1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F
-3.765(utes. If)-.2 F(no)3.765 E F1(name)3.765 E F0 3.765(sa)C 1.265
+3.765(utes. If)-.2 F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265
(re gi)-3.765 F -.15(ve)-.25 G 3.764(nt).15 G 1.264(hen display the v)
--3.764 F 1.264(alues of)-.25 F -.25(va)144 201.6 S 3.46(riables. The).25
-F 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
+-3.764 F 1.264(alues of)-.25 F -.25(va)144 261.6 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 273.6 Q F2
(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)
+(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 .274(re ignored.)-2.775 F(When)
+5.274 E F1<ad70>2.774 E F0 .274(is supplied)2.774 F(without)144 285.6 Q
+F2(name)3.789 E F0(ar)3.789 E 1.289(guments, it will display the attrib)
-.18 F 1.289(utes and v)-.2 F 1.29(alues of all v)-.25 F 1.29
-(ariables ha)-.25 F 1.29(ving the at-)-.2 F(trib)144 237.6 Q .38
+(ariables ha)-.25 F 1.29(ving the at-)-.2 F(trib)144 297.6 Q .38
(utes speci\214ed by the additional options.)-.2 F .38
-(If no other options are supplied with)5.38 F F2<ad70>2.88 E F0(,)A F2
+(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.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
+309.6 R 1.106(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606
+(ariables. The)-.25 F F1<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 \
+321.6 R(The)5.3 E F1<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
+333.6 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F F1(extdeb)4.04 E
+(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F F1(shopt)4.04 E
F0 4.04(,t)C 1.54(he source \214le)-4.04 F .648
-(name and line number where each)144 285.6 R F1(name)3.148 E F0 .648
-(is de\214ned are displayed as well.)3.148 F(The)5.648 E 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
+(name and line number where each)144 345.6 R F2(name)3.148 E F0 .648
+(is de\214ned are displayed as well.)3.148 F(The)5.648 E F1<ad46>3.148 E
+F0 .648(option implies)3.148 F F1<ad66>144 357.6 Q F0 5.836(.T)C(he)
+-5.836 E F1<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 3.337(nw).15 G(hen)-3.337 E F2(de-)3.337 E(clar)144 309.6 Q
+(ve)-.25 G 3.337(nw).15 G(hen)-3.337 E F1(de-)3.337 E(clar)144 369.6 Q
(e)-.18 E F0 .819(is e)3.319 F -.15(xe)-.15 G .819
(cuted in a shell function.).15 F .818
-(It is ignored in all other cases.)5.818 F(The)5.818 E F2<ad49>3.318 E
-F0 .818(option causes local)3.318 F -.25(va)144 321.6 S .693
+(It is ignored in all other cases.)5.818 F(The)5.818 E F1<ad49>3.318 E
+F0 .818(option causes local)3.318 F -.25(va)144 381.6 S .693
(riables to inherit the attrib).25 F .693(utes \(e)-.2 F .693(xcept the)
--.15 F F1(namer)3.194 E(ef)-.37 E F0(attrib)3.194 E .694(ute\) and v)-.2
+-.15 F F2(namer)3.194 E(ef)-.37 E F0(attrib)3.194 E .694(ute\) and v)-.2
F .694(alue of an)-.25 F 3.194(ye)-.15 G .694(xisting v)-3.344 F
-(ariable)-.25 E .82(with the same)144 333.6 R F1(name)3.32 E F0 .82
+(ariable)-.25 E .82(with the same)144 393.6 R F2(name)3.32 E F0 .82
(at a surrounding scope.)3.32 F .82(If there is no e)5.82 F .82
(xisting v)-.15 F .82(ariable, the local v)-.25 F .82(ariable is)-.25 F
-.379(initially unset.)144 345.6 R .379(The follo)5.379 F .379
+.379(initially unset.)144 405.6 R .379(The follo)5.379 F .379
(wing options can be used to restrict output to v)-.25 F .38
-(ariables with the speci\214ed)-.25 F(attrib)144 357.6 Q(ute or to gi)
--.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E 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 .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 429.6 Q
-F0 .909(When the v)180 429.6 R .909(ariable is assigned a v)-.25 F .909
-(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4
-G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 441.6 R
-(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E 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
+(ariables with the speci\214ed)-.25 F(attrib)144 417.6 Q(ute or to gi)
+-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1<ad61>144
+429.6 Q F0(Each)180 429.6 Q F2(name)2.5 E F0(is an inde)2.5 E -.15(xe)
+-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5 E
+F0(in)2.5 E F2(bash\(1\))2.5 E F0(\).)A F1<ad41>144 441.6 Q F0(Each)180
+441.6 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H
+(rray v).15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(in)2.5 E F2
+(bash\(1\))2.5 E F0(\).)A F1<ad66>144 453.6 Q F0
+(Use function names only)180 453.6 Q(.)-.65 E F1<ad69>144 465.6 Q F0
+.558(The v)180 465.6 R .558(ariable is treated as an inte)-.25 F .558
+(ger; arithmetic e)-.15 F -.25(va)-.25 G .558(luation \(see).25 F/F4 9
+/Times-Bold@0 SF .557(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)
+180 477.6 Q F0(in)2.25 E F2(bash\(1\))2.5 E F0 2.5(\)i)C 2.5(sp)-2.5 G
+(erformed when the v)-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E
+F1<ad6c>144 489.6 Q F0 .909(When the v)180 489.6 R .909
+(ariable is assigned a v)-.25 F .909(alue, all upper)-.25 F .909
+(-case characters are con)-.2 F -.15(ve)-.4 G .91(rted to lo).15 F(wer)
+-.25 E(-)-.2 E 2.5(case. The)180 501.6 R(upper)2.5 E(-case attrib)-.2 E
+(ute is disabled.)-.2 E F1<ad6e>144 513.6 Q F0(Gi)180 513.6 Q 1.62 -.15
+(ve e)-.25 H(ach).15 E F2(name)3.82 E F0(the)3.82 E F2(namer)3.819 E(ef)
+-.37 E F0(attrib)3.819 E 1.319
(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E .477
-(That other v)180 465.6 R .478(ariable is de\214ned by the v)-.25 F .478
-(alue of)-.25 F F1(name)2.978 E F0 5.478(.A)C .478
-(ll references, assignments, and at-)-5.478 F(trib)180 477.6 Q .782
-(ute modi\214cations to)-.2 F F1(name)3.282 E F0 3.282(,e)C .782
-(xcept those using or changing the)-3.432 F 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
+(That other v)180 525.6 R .478(ariable is de\214ned by the v)-.25 F .478
+(alue of)-.25 F F2(name)2.978 E F0 5.478(.A)C .478
+(ll references, assignments, and at-)-5.478 F(trib)180 537.6 Q .782
+(ute modi\214cations to)-.2 F F2(name)3.282 E F0 3.282(,e)C .782
+(xcept those using or changing the)-3.432 F F1<ad6e>3.281 E F0(attrib)
+3.281 E .781(ute itself, are)-.2 F .808(performed on the v)180 549.6 R
+.808(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D
3.308(alue. The).3 F .809(nameref attrib)3.309 F .809(ute cannot be)-.2
-F(applied to array v)180 501.6 Q(ariables.)-.25 E 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
+F(applied to array v)180 561.6 Q(ariables.)-.25 E F1<ad72>144 573.6 Q F0
+(Mak)180 573.6 Q(e)-.1 E F2(name)3.655 E F0 3.655(sr)C(eadonly)-3.655 E
6.154(.T)-.65 G 1.154(hese names cannot then be assigned v)-6.154 F
1.154(alues by subsequent as-)-.25 F(signment statements or unset.)180
-525.6 Q 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.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
-561.6 Q F0 .91(When the v)180 561.6 R .909(ariable is assigned a v)-.25
+585.6 Q F1<ad74>144 597.6 Q F0(Gi)180 597.6 Q .729 -.15(ve e)-.25 H(ach)
+.15 E F2(name)2.929 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)
+2.929 E 2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1
+(DEB)2.929 E(UG)-.1 E F0(and)2.93 E F1(RETURN)2.93 E F0
+(traps from the calling shell.)180 609.6 Q(The trace attrib)5 E
+(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1<ad75>144
+621.6 Q F0 .91(When the v)180 621.6 R .909(ariable is assigned a v)-.25
F .909(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2
-F -.15(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 573.6
-R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad78>
-144 585.6 Q F0(Mark)180 585.6 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
+F -.15(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 633.6
+R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1<ad78>
+144 645.6 Q F0(Mark)180 645.6 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .143
-(Using `+' instead of `\255' turns of)144 602.4 R 2.643(ft)-.25 G .143
+(Using `+' instead of `\255' turns of)144 662.4 R 2.643(ft)-.25 G .143
(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .144
-(xceptions that)-.15 F F2(+a)2.644 E F0(and)2.644 E F2(+A)2.644 E F0
-.144(may not)2.644 F .579(be used to destro)144 614.4 R 3.079(ya)-.1 G
-.579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579
+(xceptions that)-.15 F F1(+a)2.644 E F0(and)2.644 E F1(+A)2.644 E F0
+.144(may not)2.644 F .579(be used to destro)144 674.4 R 3.079(ya)-.1 G
+.579(rray v)-3.079 F .579(ariables and)-.25 F F1(+r)3.079 E F0 .579
(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15
-F 3.079(ute. When)-.2 F .578(used in a)3.078 F(function,)144 626.4 Q F2
-(declar)3.543 E(e)-.18 E F0(and)3.543 E F2(typeset)3.543 E F0(mak)3.543
-E 3.543(ee)-.1 G(ach)-3.543 E F1(name)3.543 E F0 1.043
-(local, as with the)3.543 F F2(local)3.544 E F0 1.044
-(command, unless the)3.544 F 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
+F 3.079(ute. When)-.2 F .578(used in a)3.078 F(function,)144 686.4 Q F1
+(declar)3.543 E(e)-.18 E F0(and)3.543 E F1(typeset)3.543 E F0(mak)3.543
+E 3.543(ee)-.1 G(ach)-3.543 E F2(name)3.543 E F0 1.043
+(local, as with the)3.543 F F1(local)3.544 E F0 1.044
+(command, unless the)3.544 F F1<ad67>3.544 E F0 1.205
+(option is supplied.)144 698.4 R 1.205(If a v)6.205 F 1.205
+(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F2(value)A F0 3.705
(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205
-(ariable is set to)-.25 F F1(value)144 650.4 Q F0 5.217(.W)C .217
-(hen using)-5.217 F F2<ad61>2.717 E F0(or)2.717 E F2<ad41>2.717 E F0
+(ariable is set to)-.25 F F2(value)144 710.4 Q F0 5.217(.W)C .217
+(hen using)-5.217 F F1<ad61>2.717 E F0(or)2.717 E F1<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
+(ariables, addi-)-.25 F .882(tional attrib)144 722.4 R .882
(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882
(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882
-(alue is 0 unless an)-.25 F(in)144 674.4 Q -.25(va)-.4 G .365(lid optio\
-n is encountered, an attempt is made to de\214ne a function using).25 F
-/F5 10/Courier@0 SF .366(\255f foo=bar)2.866 F F0 2.866(,a)C 2.866(na)
--2.866 G(t-)-2.866 E .549(tempt is made to assign a v)144 686.4 R .549
-(alue to a readonly v)-.25 F .548
-(ariable, an attempt is made to assign a v)-.25 F .548(alue to an)-.25 F
-1.748(array v)144 698.4 R 1.748
-(ariable without using the compound assignment syntax \(see)-.25 F F2
-(Arrays)4.249 E F0(abo)4.249 E -.15(ve)-.15 G 1.749(\), one of the).15 F
-F1(names)144 710.4 Q F0 .359(is not a v)2.859 F .359(alid shell v)-.25 F
-.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G
-.359(eadonly status for a read-)-2.859 F 1.212(only v)144 722.4 R 1.213
-(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213
-(rray status for an array v)-3.713 F 1.213(ariable, or an attempt is)
--.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(6)203.725 E 0 Cg EP
+(alue is 0 unless an)-.25 F(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15
+(ve)-.15 G(mber 22).15 E(6)190.545 E 0 Cg EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(made to display a non-e)144 84 Q
-(xistent function with)-.15 E/F1 10/Times-Bold@0 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
+E(UIL)-.1 E(TINS\(1\))-.92 E(in)144 84 Q -.25(va)-.4 G .365(lid option \
+is encountered, an attempt is made to de\214ne a function using).25 F/F1
+10/Courier@0 SF .366(\255f foo=bar)2.866 F F0 2.866(,a)C 2.866(na)-2.866
+G(t-)-2.866 E .549(tempt is made to assign a v)144 96 R .549
+(alue to a readonly v)-.25 F .548
+(ariable, an attempt is made to assign a v)-.25 F .548(alue to an)-.25 F
+.391(array v)144 108 R .391
+(ariable without using the compound assignment syntax \(see)-.25 F/F2 10
+/Times-Bold@0 SF(Arrays)2.892 E F0(in)2.892 E/F3 10/Times-Italic@0 SF
+(bash\(1\))2.892 E F0 .392(\), one of the)B F3(names)144 120 Q F0 .359
+(is not a v)2.859 F .359(alid shell v)-.25 F .359
+(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G .359
+(eadonly status for a read-)-2.859 F 1.212(only v)144 132 R 1.213
+(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213
+(rray status for an array v)-3.713 F 1.213(ariable, or an attempt is)
+-.25 F(made to display a non-e)144 144 Q(xistent function with)-.15 E F2
+<ad66>2.5 E F0(.)A F2(dirs [\255clpv] [+)108 160.8 Q F3(n)A F2 2.5(][)C
+<ad>-2.5 E F3(n)A F2(])A F0 -.4(Wi)144 172.8 S .329
(thout options, displays the list of currently remembered directories.)
.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238
-(single line with directory names separated by spaces.)144 124.8 R 1.238
-(Directories are added to the list with the)6.238 F F1(pushd)144 136.8 Q
-F0 .928(command; the)3.428 F F1(popd)3.428 E F0 .928(command remo)3.428
+(single line with directory names separated by spaces.)144 184.8 R 1.238
+(Directories are added to the list with the)6.238 F F2(pushd)144 196.8 Q
+F0 .928(command; the)3.428 F F2(popd)3.428 E F0 .928(command remo)3.428
F -.15(ve)-.15 G 3.428(se).15 G .928(ntries from the list.)-3.428 F .928
-(The current directory is al-)5.928 F -.1(wa)144 148.8 S
-(ys the \214rst directory in the stack.).1 E 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
+(The current directory is al-)5.928 F -.1(wa)144 208.8 S
+(ys the \214rst directory in the stack.).1 E F2<ad63>144 220.8 Q F0
+(Clears the directory stack by deleting all of the entries.)180 220.8 Q
+F2<ad6c>144 232.8 Q F0 .881
+(Produces a listing using full pathnames; the def)180 232.8 R .882
(ault listing format uses a tilde to denote)-.1 F(the home directory)180
-184.8 Q(.)-.65 E 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
+244.8 Q(.)-.65 E F2<ad70>144 256.8 Q F0
+(Print the directory stack with one entry per line.)180 256.8 Q F2<ad76>
+144 268.8 Q F0 .273(Print the directory stack with one entry per line, \
+pre\214xing each entry with its inde)180 268.8 R 2.772(xi)-.15 G 2.772
+(nt)-2.772 G(he)-2.772 E(stack.)180 280.8 Q F2(+)144 292.8 Q F3(n)A F0
+1.564(Displays the)180 292.8 R F3(n)4.064 E F0 1.565
+(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F2
(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 244.8 Q 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
+(without options, starting with zero.)180 304.8 Q F2<ad>144 316.8 Q F3
+(n)A F0 1.194(Displays the)180 316.8 R F3(n)3.694 E F0 1.194
(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F
-F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 268.8 Q .257(The return v)144
-285.6 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
-(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe)
+F2(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
+(without options, starting with zero.)180 328.8 Q .257(The return v)144
+345.6 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
+(lid option is supplied or).25 F F3(n)2.758 E F0(inde)2.758 E -.15(xe)
-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
-.15 F(tory stack.)144 297.6 Q F1(diso)108 314.4 Q(wn)-.1 E F0([)2.5 E F1
-(\255ar)A F0 2.5(][)C F1<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 326.4 S .122
-(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec)
+.15 F(tory stack.)144 357.6 Q F2(diso)108 374.4 Q(wn)-.1 E F0([)2.5 E F2
+(\255ar)A F0 2.5(][)C F2<ad68>-2.5 E F0 2.5(][)C F3(jobspec)-2.5 E F0
+(... |)2.5 E F3(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 386.4 S .122
+(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F3(jobspec)
4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H
-2.622(obs. If).15 F F2(jobspec)4.362 E F0 .121(is not present, and)2.932
-F .096(neither the)144 338.4 R 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
+2.622(obs. If).15 F F3(jobspec)4.362 E F0 .121(is not present, and)2.932
+F .096(neither the)144 398.4 R F2<ad61>2.596 E F0 .096(nor the)2.596 F
+F2<ad72>2.596 E F0 .096(option is supplied, the)2.596 F F3(curr)2.596 E
+.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F2
<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 350.4 Q F0 .586(is not remo)3.396 F -.15(ve)-.15
+.15 F F3(jobspec)145.74 410.4 Q F0 .586(is not remo)3.396 F -.15(ve)-.15
G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F
-.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585
-(is not sent to the job if the)2.835 F .962(shell recei)144 362.4 R -.15
-(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962
-(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1
+.585(ed so that)-.1 F/F4 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585
+(is not sent to the job if the)2.835 F .962(shell recei)144 422.4 R -.15
+(ve)-.25 G 3.462(sa).15 G F4(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .962
+(If no)5.462 F F3(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F2
<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.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
+H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 434.4 R F2
+<ad72>3.859 E F0 1.359(option without a)3.859 F F3(jobspec)5.599 E F0
(ar)4.169 E 1.358(gument restricts operation to running jobs.)-.18 F
-1.358(The return)6.358 F -.25(va)144 386.4 S(lue is 0 unless a).25 E F2
+1.358(The return)6.358 F -.25(va)144 446.4 S(lue is 0 unless a).25 E F3
(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E
-F1(echo)108 403.2 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)
--.37 E F0(...])2.5 E .424(Output the)144 415.2 R F2(ar)2.924 E(g)-.37 E
+F2(echo)108 463.2 Q F0([)2.5 E F2(\255neE)A F0 2.5(][)C F3(ar)-2.5 E(g)
+-.37 E F0(...])2.5 E .424(Output the)144 475.2 R F3(ar)2.924 E(g)-.37 E
F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924
(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308
-(error occurs.)144 427.2 R(If)5.308 E F1<ad6e>2.808 E F0 .308
+(error occurs.)144 487.2 R(If)5.308 E F2<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
+F .307(If the)5.308 F F2<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
+499.2 R .198(wing backslash-escaped characters is enabled.)-.25 F(The)
+5.198 E F2<ad45>2.698 E F0 .198(option disables the in-)2.698 F .067
+(terpretation of these escape characters, e)144 511.2 R -.15(ve)-.25 G
2.567(no).15 G 2.567(ns)-2.567 G .067(ystems where the)-2.567 F 2.567
-(ya)-.15 G .067(re interpreted by def)-2.567 F 2.567(ault. The)-.1 F F1
-(xpg_echo)144 463.2 Q F0 .601
+(ya)-.15 G .067(re interpreted by def)-2.567 F 2.567(ault. The)-.1 F F2
+(xpg_echo)144 523.2 Q F0 .601
(shell option may be used to dynamically determine whether or not)3.101
-F F1(echo)3.102 E F0 -.15(ex)3.102 G .602(pands these).15 F .659
-(escape characters by def)144 475.2 R(ault.)-.1 E F1(echo)5.659 E F0
-.659(does not interpret)3.159 F 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 643.2 Q F2(HH)A F0(the eight-bit character whose v)180 643.2 Q
-(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0
-(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1
-(\\u)144 655.2 Q F2(HHHH)A F0 1.506
-(the Unicode \(ISO/IEC 10646\) character whose v)180 667.2 R 1.507
-(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
-4.007 E F0(\(one to four he)180 679.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
-(\\U)144 691.2 Q F2(HHHHHHHH)A F0 .548
-(the Unicode \(ISO/IEC 10646\) character whose v)180 703.2 R .547
-(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
-3.047 E(HHH)180 715.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
-(igits\))-2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(7)203.725 E
-0 Cg EP
+F F2(echo)3.102 E F0 -.15(ex)3.102 G .602(pands these).15 F .659
+(escape characters by def)144 535.2 R(ault.)-.1 E F2(echo)5.659 E F0
+.659(does not interpret)3.159 F F2<adad>3.159 E F0 .659
+(to mean the end of options.)3.159 F F2(echo)5.658 E F0(inter)3.158 E(-)
+-.2 E(prets the follo)144 547.2 Q(wing escape sequences:)-.25 E F2(\\a)
+144 559.2 Q F0(alert \(bell\))180 559.2 Q F2(\\b)144 571.2 Q F0
+(backspace)180 571.2 Q F2(\\c)144 583.2 Q F0(suppress further output)180
+583.2 Q F2(\\e)144 595.2 Q(\\E)144 607.2 Q F0(an escape character)180
+607.2 Q F2(\\f)144 619.2 Q F0(form feed)180 619.2 Q F2(\\n)144 631.2 Q
+F0(ne)180 631.2 Q 2.5(wl)-.25 G(ine)-2.5 E F2(\\r)144 643.2 Q F0
+(carriage return)180 643.2 Q F2(\\t)144 655.2 Q F0(horizontal tab)180
+655.2 Q F2(\\v)144 667.2 Q F0 -.15(ve)180 667.2 S(rtical tab).15 E F2
+(\\\\)144 679.2 Q F0(backslash)180 679.2 Q F2(\\0)144 691.2 Q F3(nnn)A
+F0(the eight-bit character whose v)180 691.2 Q(alue is the octal v)-.25
+E(alue)-.25 E F3(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F2
+(\\x)144 703.2 Q F3(HH)A F0(the eight-bit character whose v)180 703.2 Q
+(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F3(HH)2.5 E F0
+(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E
+(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(7)
+190.545 E 0 Cg EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(enable)108 84 Q F0([)
-2.5 E 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 .277(Enable and disable b)144 96 R .278
-(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(\\u)144 84 Q/F2 10
+/Times-Italic@0 SF(HHHH)A F0 1.506
+(the Unicode \(ISO/IEC 10646\) character whose v)180 96 R 1.507
+(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
+4.007 E F0(\(one to four he)180 108 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
+(\\U)144 120 Q F2(HHHHHHHH)A F0 .548
+(the Unicode \(ISO/IEC 10646\) character whose v)180 132 R .547
+(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
+3.047 E(HHH)180 144 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\))
+-2.5 E F1(enable)108 160.8 Q F0([)2.5 E 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 .277(Enable and disable b)144 172.8 R
+.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278
(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834
-(the same name as a shell b)144 108 R .834(uiltin to be e)-.2 F -.15(xe)
--.15 G .834(cuted without specifying a full pathname, e).15 F -.15(ve)
--.25 G 3.333(nt).15 G(hough)-3.333 E .989
-(the shell normally searches for b)144 120 R .989
+(the same name as a shell b)144 184.8 R .834(uiltin to be e)-.2 F -.15
+(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15
+(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989
+(the shell normally searches for b)144 196.8 R .989
(uiltins before disk commands.)-.2 F(If)5.989 E 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 .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 .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
+(abled; otherwise,)144 208.8 R F2(names)3.148 E F0 .648(are enabled.)
+3.148 F -.15(Fo)5.648 G 3.148(re).15 G .648(xample, to use the)-3.298 F
+F1(test)3.148 E F0 .648(binary found via the)3.148 F/F3 9/Times-Bold@0
+SF -.666(PA)3.148 G(TH)-.189 E F0(in-)2.898 E .538(stead of the shell b)
+144 220.8 R .538(uiltin v)-.2 F .538(ersion, run)-.15 F/F4 10/Courier@0
+SF .538(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F1<ad66>3.038 E
+F0 .539(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 232.8 S
+1.365(iltin command).2 F F2(name)4.225 E F0 1.365(from shared object)
+4.045 F F2(\214lename)5.775 E F0 3.865(,o).18 G 3.865(ns)-3.865 G 1.365
+(ystems that support dynamic loading.)-3.865 F .606(Bash will use the v)
+144 244.8 R .606(alue of the)-.25 F F1 -.3(BA)3.106 G(SH_LO).3 E(AD)-.4
+E(ABLES_P)-.35 E -.95(AT)-.74 G(H).95 E F0 -.25(va)3.106 G .606
+(riable as a colon-separated list of).25 F .549
+(directories in which to search for)144 256.8 R F2(\214lename)3.049 E F0
+5.549(.T)C .549(he def)-5.549 F .548(ault is system-dependent.)-.1 F
+(The)5.548 E F1<ad64>3.048 E F0 .548(option will)3.048 F .546
+(delete a b)144 268.8 R .546(uiltin pre)-.2 F .546(viously loaded with)
+-.25 F F1<ad66>3.046 E F0 5.547(.I)C 3.047(fn)-5.547 G(o)-3.047 E F2
+(name)3.047 E F0(ar)3.047 E .547(guments are gi)-.18 F -.15(ve)-.25 G
+.547(n, or if the).15 F F1<ad70>3.047 E F0 .547(option is)3.047 F .546
+(supplied, a list of shell b)144 280.8 R .545(uiltins is printed.)-.2 F
+-.4(Wi)5.545 G .545(th no other option ar).4 F .545
+(guments, the list consists of all)-.18 F .695(enabled shell b)144 292.8
+R 3.195(uiltins. If)-.2 F F1<ad6e>3.195 E F0 .695
+(is supplied, only disabled b)3.195 F .695(uiltins are printed.)-.2 F
+(If)5.695 E F1<ad61>3.195 E F0 .695(is supplied, the)3.195 F .262
+(list printed includes all b)144 304.8 R .261
+(uiltins, with an indication of whether or not each is enabled.)-.2 F
+(If)5.261 E F1<ad73>2.761 E F0 .261(is sup-)2.761 F .268
+(plied, the output is restricted to the POSIX)144 316.8 R F2(special)
+2.768 E F0 -.2(bu)2.768 G 2.768(iltins. If).2 F .269
+(no options are supplied and a)2.768 F F2(name)2.769 E F0 .285
+(is not a shell b)144 328.8 R(uiltin,)-.2 E F1(enable)2.784 E F0 .284
+(will attempt to load)2.784 F F2(name)2.784 E F0 .284
+(from a shared object named)2.784 F F2(name)2.784 E F0 2.784(,a)C 2.784
+(si)-2.784 G 2.784(ft)-2.784 G(he)-2.784 E 1.41(command were)144 340.8 R
+F4 1.41(enable \255f)3.91 F F2 1.41(name name)3.91 F F0 6.41(.T)3.91 G
+1.41(he return v)-6.41 F 1.41(alue is 0 unless a)-.25 F F2(name)4.27 E
+F0 1.41(is not a shell)4.09 F -.2(bu)144 352.8 S
+(iltin or there is an error loading a ne).2 E 2.5(wb)-.25 G
+(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108 369.6 T(l).15
+E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 381.6 Q F2(ar)3.171
+E(g)-.37 E F0 3.171(sa)C .671
(re read and concatenated together into a single command.)-3.171 F .67
-(This command is then read)5.67 F .478(and e)144 268.8 R -.15(xe)-.15 G
+(This command is then read)5.67 F .478(and e)144 393.6 R -.15(xe)-.15 G
.478(cuted by the shell, and its e).15 F .478
(xit status is returned as the v)-.15 F .479(alue of)-.25 F F1 -2.3 -.15
(ev a)2.979 H(l).15 E F0 5.479(.I)C 2.979(ft)-5.479 G .479(here are no)
--2.979 F F2(ar)3.309 E(gs)-.37 E F0(,).27 E(or only null ar)144 280.8 Q
+-2.979 F F2(ar)3.309 E(gs)-.37 E F0(,).27 E(or only null ar)144 405.6 Q
(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1
-(exec)108 297.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<ad61>-2.5 E F2
+(exec)108 422.4 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 309.6 Q F2(command)3.006 E F0 .306
+-.37 E F0(]])A(If)144 434.4 Q F2(command)3.006 E F0 .306
(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805
(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E
-(guments)-.37 E F0(become)3.075 E .176(the ar)144 321.6 R .176
+(guments)-.37 E F0(become)3.075 E .176(the ar)144 446.4 R .176
(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G
(he)-2.676 E 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 .48(the zeroth ar)144 333.6 R .48(gument passed to)
+(ginning of)-.15 F .48(the zeroth ar)144 458.4 R .48(gument passed to)
-.18 F F2(command)3.18 E F0 5.48(.T).77 G .48(his is what)-5.48 F F2(lo)
3.07 E(gin)-.1 E F0 .48(\(1\) does.).24 F(The)5.48 E F1<ad63>2.98 E F0
-.48(option causes)2.98 F F2(com-)3.18 E(mand)144 345.6 Q F0 .638
+.48(option causes)2.98 F F2(com-)3.18 E(mand)144 470.4 Q F0 .638
(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138
(vironment. If)-.4 F 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 357.6 R 1.077(gument to the e)-.18 F -.15
+3.319 F 1.078(zeroth ar)144 482.4 R 1.077(gument to the e)-.18 F -.15
(xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0
1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a)
-.15 F(non-interacti)144 369.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F
+.15 F(non-interacti)144 494.4 Q .876 -.15(ve s)-.25 H .576(hell e).15 F
.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577
(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577
-F(ail-)-.1 E 3.32(ure. An)144 381.6 R(interacti)3.32 E 1.12 -.15(ve s)
+F(ail-)-.1 E 3.32(ure. An)144 506.4 R(interacti)3.32 E 1.12 -.15(ve s)
-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1
F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82
-(xits uncondi-)-.15 F .287(tionally if)144 393.6 R F1(exec)2.787 E F0
+(xits uncondi-)-.15 F .287(tionally if)144 518.4 R F1(exec)2.787 E F0
-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287
(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak)
-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,)
-.25 F(and the return status is 0.)144 405.6 Q
+.25 F(and the return status is 0.)144 530.4 Q
(If there is a redirection error)5 E 2.5(,t)-.4 G
-(he return status is 1.)-2.5 E F1(exit)108 422.4 Q F0([)2.5 E F2(n)A F0
-(])A .096(Cause the shell to e)144 422.4 R .096(xit with a status of)
+(he return status is 1.)-2.5 E F1(exit)108 547.2 Q F0([)2.5 E F2(n)A F0
+(])A .096(Cause the shell to e)144 547.2 R .096(xit with a status of)
-.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095
(is omitted, the e)2.835 F .095(xit status is that of the last command)
--.15 F -.15(exe)144 434.4 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5
+-.15 F -.15(exe)144 559.2 S 2.5(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5
E F0(is e)2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E
-F1(export)108 451.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)
--2.5 E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A F1(export \255p)108 463.2 Q
-F0 .256(The supplied)144 475.2 R F2(names)3.117 E F0 .257(are mark)3.027
-F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257
+F1(export)108 576 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5
+E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A F1(export \255p)108 588 Q F0
+.256(The supplied)144 600 R F2(names)3.117 E F0 .257(are mark)3.027 F
+.257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257
(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.627
-(commands. If)144 487.2 R(the)2.627 E F1<ad66>2.627 E F0 .127
+(commands. If)144 612 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 499.2 Q F0 .048(option is supplied, a list of names of all e)2.547 F
+144 624 Q F0 .048(option is supplied, a list of names of all e)2.547 F
.048(xported v)-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1
-<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
+<ad6e>2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 636 S 1.447
+(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447
(rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G
1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d)
--.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 523.2 S .741(lue of the v)
-.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1
+-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 648 S .741(lue of the v).25
+F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1
(export)5.741 E F0 .742(returns an e)3.242 F .742
(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is)
-.25 F .032(encountered, one of the)144 535.2 R F2(names)2.532 E F0 .032
+.25 F .032(encountered, one of the)144 660 R F2(names)2.532 E F0 .032
(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25
F 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 547.2 Q F1(fc)108 564 Q F0([)2.5 E
+(that)2.711 E(is not a function.)144 672 Q F1(fc)108 688.8 Q F0([)2.5 E
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
-576 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
+700.8 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
(cmd)-2.5 E F0(])A .431
-(The \214rst form selects a range of commands from)144 588 R F2<8c72>
+(The \214rst form selects a range of commands from)144 712.8 R F2<8c72>
4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432
(from the history list and displays or)3.612 F .142(edits and re-e)144
-600 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
+724.8 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
.45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141
-(may be speci\214ed as a string \(to locate the last command)3.321 F(be)
-144 612 Q .31(ginning with that string\) or as a number \(an inde)-.15 F
-2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga)
--.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .071(is used as an of)
-144 624 R .071(fset from the current command number\).)-.25 F .071
-(When listing, a)5.071 F F2<8c72>2.571 E(st)-.1 E F0(or)2.571 E F2(last)
-2.571 E F0 .071(of 0 is equi)2.571 F -.25(va)-.25 G(-).25 E .653
-(lent to \2551 and \2550 is equi)144 636 R -.25(va)-.25 G .653
-(lent to the current command \(usually the).25 F F1(fc)3.153 E F0 .653
-(command\); otherwise 0 is)3.153 F(equi)144 648 Q -.25(va)-.25 G .242
-(lent to \2551 and \2550 is in).25 F -.25(va)-.4 G 2.742(lid. If).25 F
-F2(last)2.832 E F0 .242
-(is not speci\214ed, it is set to the current command for list-)3.422 F
-.092(ing \(so that)144 660 R F4 .092(fc \255l \25510)2.592 F F0 .093
-(prints the last 10 commands\) and to)2.592 F F2<8c72>4.503 E(st)-.1 E
-F0 2.593(otherwise. If)3.273 F F2<8c72>4.503 E(st)-.1 E F0 .093
-(is not speci-)3.273 F(\214ed, it is set to the pre)144 672 Q
-(vious command for editing and \25516 for listing.)-.25 E(The)144 696 Q
-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 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 720 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2
-(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do)
-.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F
-(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G
-(n,).15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(8)203.725 E 0 Cg
-EP
+(may be speci\214ed as a string \(to locate the last command)3.321 F
+(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(8)
+190.545 E 0 Cg EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E .63(the v)144 84 R .63(alue of the)-.25 F
-/F1 9/Times-Bold@0 SF(FCEDIT)3.13 E F0 -.25(va)2.88 G .631
-(riable is used, and the v).25 F .631(alue of)-.25 F F1(EDIT)3.131 E(OR)
--.162 E F0(if)2.881 E F1(FCEDIT)3.131 E F0 .631(is not set.)2.881 F .631
-(If nei-)5.631 F .006(ther v)144 96 R .006(ariable is set,)-.25 F/F2 10
-/Times-Italic@0 SF(vi)4.171 E F0 .005(is used.)4.171 F .005
-(When editing is complete, the edited commands are echoed and e)5.005 F
-(x-)-.15 E(ecuted.)144 108 Q .788(In the second form,)144 132 R F2
-(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788
-(cuted after each instance of).15 F F2(pat)3.288 E F0 .788
-(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789
-E(mand)144 144 Q F0 .172(is interpreted the same as)2.672 F F2<8c72>
+E(UIL)-.1 E(TINS\(1\))-.92 E(be)144 84 Q .31
+(ginning with that string\) or as a number \(an inde)-.15 F 2.811(xi)
+-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga)-.15 G(ti)
+.05 E .611 -.15(ve n)-.25 H(umber).15 E .071(is used as an of)144 96 R
+.071(fset from the current command number\).)-.25 F .071
+(When listing, a)5.071 F/F1 10/Times-Italic@0 SF<8c72>2.571 E(st)-.1 E
+F0(or)2.571 E F1(last)2.571 E F0 .071(of 0 is equi)2.571 F -.25(va)-.25
+G(-).25 E .653(lent to \2551 and \2550 is equi)144 108 R -.25(va)-.25 G
+.653(lent to the current command \(usually the).25 F/F2 10/Times-Bold@0
+SF(fc)3.153 E F0 .653(command\); otherwise 0 is)3.153 F(equi)144 120 Q
+-.25(va)-.25 G .242(lent to \2551 and \2550 is in).25 F -.25(va)-.4 G
+2.742(lid. If).25 F F1(last)2.832 E F0 .242
+(is not speci\214ed, it is set to the current command for list-)3.422 F
+.092(ing \(so that)144 132 R/F3 10/Courier@0 SF .092(fc \255l \25510)
+2.592 F F0 .093(prints the last 10 commands\) and to)2.592 F F1<8c72>
+4.503 E(st)-.1 E F0 2.593(otherwise. If)3.273 F F1<8c72>4.503 E(st)-.1 E
+F0 .093(is not speci-)3.273 F(\214ed, it is set to the pre)144 144 Q
+(vious command for editing and \25516 for listing.)-.25 E(The)144 168 Q
+F2<ad6e>2.522 E F0 .022
+(option suppresses the command numbers when listing.)2.522 F(The)5.022 E
+F2<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 180 R .438(If the)5.438
+F F2<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 192 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F1
+(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do)
+.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F
+(If)5.334 E F1(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G
+(n,).15 E .63(the v)144 204 R .63(alue of the)-.25 F/F4 9/Times-Bold@0
+SF(FCEDIT)3.13 E F0 -.25(va)2.88 G .631(riable is used, and the v).25 F
+.631(alue of)-.25 F F4(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F4(FCEDIT)
+3.131 E F0 .631(is not set.)2.881 F .631(If nei-)5.631 F .006(ther v)144
+216 R .006(ariable is set,)-.25 F F1(vi)4.171 E F0 .005(is used.)4.171 F
+.005(When editing is complete, the edited commands are echoed and e)
+5.005 F(x-)-.15 E(ecuted.)144 228 Q .788(In the second form,)144 252 R
+F1(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788
+(cuted after each instance of).15 F F1(pat)3.288 E F0 .788
+(is replaced by)3.288 F F1 -.37(re)3.289 G(p).37 E F0(.)A F1(Com-)5.789
+E(mand)144 264 Q F0 .172(is interpreted the same as)2.672 F F1<8c72>
2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171
-(useful alias to use with this is)-2.5 F/F3 10/Courier@0 SF .171
-(r='fc \255s')2.671 F F0 2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E
-(typing)144 156 Q F3 7.165(rc)3.665 G(c)-7.165 E F0 1.165
-(runs the last command be)3.665 F 1.166(ginning with)-.15 F F3(cc)3.666
-E F0 1.166(and typing)3.666 F F3(r)3.666 E F0(re-e)3.666 E -.15(xe)-.15
-G 1.166(cutes the last com-).15 F(mand.)144 168 Q .142
-(If the \214rst form is used, the return v)144 192 R .142
-(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
-(lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322
-E F2(last)2.732 E F0 .454(specify history lines out of range.)144 204 R
-.454(If the)5.454 F/F4 10/Times-Bold@0 SF<ad65>2.954 E F0 .454
+(useful alias to use with this is)-2.5 F F3 .171(r='fc \255s')2.671 F F0
+2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 276 Q F3 7.165(rc)
+3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166
+(ginning with)-.15 F F3(cc)3.666 E F0 1.166(and typing)3.666 F F3(r)
+3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F
+(mand.)144 288 Q .142(If the \214rst form is used, the return v)144 312
+R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
+(lid option is encountered or).25 F F1<8c72>4.552 E(st)-.1 E F0(or)3.322
+E F1(last)2.732 E F0 .454(specify history lines out of range.)144 324 R
+.454(If the)5.454 F F2<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 216 R -.15(xe)-.15 G .788
+(alue of the)-.25 F .788(last command e)144 336 R -.15(xe)-.15 G .788
(cuted or f).15 F .787
(ailure if an error occurs with the temporary \214le of commands.)-.1 F
.787(If the)5.787 F 1.135
(second form is used, the return status is that of the command re-e)144
-228 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136
-(does not)4.406 F(specify a v)144 240 Q
-(alid history line, in which case)-.25 E F4(fc)2.5 E F0(returns f)2.5 E
-(ailure.)-.1 E F4(fg)108 256.8 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)
-144 268.8 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413
+348 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F1(cmd)3.836 E F0 1.136
+(does not)4.406 F(specify a v)144 360 Q
+(alid history line, in which case)-.25 E F2(fc)2.5 E F0(returns f)2.5 E
+(ailure.)-.1 E F2(fg)108 376.8 Q F0([)2.5 E F1(jobspec)A F0(])A(Resume)
+144 388.8 Q F1(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413
(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413
-(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0
-1.413(is not present, the)4.223 F(shell')144 280.8 Q 3.116(sn)-.55 G
-.616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617
+(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1(jobspec)5.653 E F0
+1.413(is not present, the)4.223 F(shell')144 400.8 Q 3.116(sn)-.55 G
+.616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job)-.37 F F0 .617
(is used.)3.116 F .617(The return v)5.617 F .617
-(alue is that of the command placed into the)-.25 F(fore)144 292.8 Q
+(alue is that of the command placed into the)-.25 F(fore)144 412.8 Q
.363(ground, or f)-.15 F .363
(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362
-(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 304.8 Q
-F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0
+(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 424.8 Q
+F0(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0
(speci\214es a job that w)2.81 E(as started without job control.)-.1 E
-F4(getopts)108 321.6 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A 2.5
-(g.)-.37 G(..)-2.5 E F0(])A F4(getopts)144 333.6 Q F0 .793
-(is used by shell procedures to parse positional parameters.)3.293 F F2
+F2(getopts)108 441.6 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A 2.5
+(g.)-.37 G(..)-2.5 E F0(])A F2(getopts)144 453.6 Q F0 .793
+(is used by shell procedures to parse positional parameters.)3.293 F F1
(optstring)6.023 E F0 .793(contains the option)3.513 F .15
-(characters to be recognized; if a character is follo)144 345.6 R .149
+(characters to be recognized; if a character is follo)144 465.6 R .149
(wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449
--.15(ve a)-.2 H(n).15 E(ar)144 357.6 Q .578
+-.15(ve a)-.2 H(n).15 E(ar)144 477.6 Q .578
(gument, which should be separated from it by white space.)-.18 F .579
(The colon and question mark char)5.579 F(-)-.2 E .636
-(acters may not be used as option characters.)144 369.6 R .636
-(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F4(getopts)
+(acters may not be used as option characters.)144 489.6 R .636
+(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts)
3.136 E F0 .636(places the ne)3.136 F .635(xt op-)-.15 F .029
-(tion in the shell v)144 381.6 R(ariable)-.25 E F2(name)2.889 E F0 2.529
-(,i).18 G(nitializing)-2.529 E F2(name)2.889 E F0 .029(if it does not e)
+(tion in the shell v)144 501.6 R(ariable)-.25 E F1(name)2.889 E F0 2.529
+(,i).18 G(nitializing)-2.529 E F1(name)2.889 E F0 .029(if it does not e)
2.709 F .03(xist, and the inde)-.15 F 2.53(xo)-.15 G 2.53(ft)-2.53 G .03
(he ne)-2.53 F .03(xt ar)-.15 F(gu-)-.18 E .066
-(ment to be processed into the v)144 393.6 R(ariable)-.25 E F1(OPTIND)
-2.566 E/F5 9/Times-Roman@0 SF(.)A F1(OPTIND)4.566 E F0 .065
+(ment to be processed into the v)144 513.6 R(ariable)-.25 E F4(OPTIND)
+2.566 E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND)4.566 E F0 .065
(is initialized to 1 each time the shell or a)2.315 F .885
-(shell script is in)144 405.6 R -.2(vo)-.4 G -.1(ke).2 G 3.385(d. When)
-.1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F4(getopts)
+(shell script is in)144 525.6 R -.2(vo)-.4 G -.1(ke).2 G 3.385(d. When)
+.1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F2(getopts)
3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F .567
-(the v)144 417.6 R(ariable)-.25 E F1(OPT)3.067 E(ARG)-.81 E F5(.)A F0
-.566(The shell does not reset)5.067 F F1(OPTIND)3.066 E F0 .566
+(the v)144 537.6 R(ariable)-.25 E F4(OPT)3.067 E(ARG)-.81 E F5(.)A F0
+.566(The shell does not reset)5.067 F F4(OPTIND)3.066 E F0 .566
(automatically; it must be manually reset)2.816 F .389
-(between multiple calls to)144 429.6 R F4(getopts)2.889 E F0 .389
+(between multiple calls to)144 549.6 R F2(getopts)2.889 E F0 .389
(within the same shell in)2.889 F -.2(vo)-.4 G .39(cation if a ne).2 F
-2.89(ws)-.25 G .39(et of parameters is to)-2.89 F(be used.)144 441.6 Q
-2.044(When the end of options is encountered,)144 465.6 R F4(getopts)
+2.89(ws)-.25 G .39(et of parameters is to)-2.89 F(be used.)144 561.6 Q
+2.044(When the end of options is encountered,)144 585.6 R F2(getopts)
4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043
-(alue greater than zero.)-.25 F F1(OPTIND)144 477.6 Q F0
+(alue greater than zero.)-.25 F F4(OPTIND)144 597.6 Q F0
(is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G
-(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0
-(is set to ?.)2.5 E F4(getopts)144 501.6 Q F0 .485
+(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0
+(is set to ?.)2.5 E F2(getopts)144 621.6 Q F0 .485
(normally parses the positional parameters, b)2.985 F .485
-(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F2(ar)3.315 E
-(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 513.6 Q F4(getopts)2.5 E
-F0(parses those instead.)2.5 E F4(getopts)144 537.6 Q F0 .345
+(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F1(ar)3.315 E
+(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 633.6 Q F2(getopts)2.5 E
+F0(parses those instead.)2.5 E F2(getopts)144 657.6 Q F0 .345
(can report errors in tw)2.845 F 2.845(ow)-.1 G 2.845(ays. If)-2.945 F
-.345(the \214rst character of)2.845 F F2(optstring)3.075 E F0 .345
-(is a colon,)3.065 F F2(silent)3.185 E F0 .345(error re-)3.525 F 1.668
-(porting is used.)144 549.6 R 1.668
+.345(the \214rst character of)2.845 F F1(optstring)3.075 E F0 .345
+(is a colon,)3.065 F F1(silent)3.185 E F0 .345(error re-)3.525 F 1.668
+(porting is used.)144 669.6 R 1.668
(In normal operation, diagnostic messages are printed when in)6.668 F
-.25(va)-.4 G 1.669(lid options or).25 F .394(missing option ar)144
-561.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F
-(ariable)-.25 E F1(OPTERR)2.894 E F0 .394
-(is set to 0, no error messages)2.644 F(will be displayed, e)144 573.6 Q
+681.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F
+(ariable)-.25 E F4(OPTERR)2.894 E F0 .394
+(is set to 0, no error messages)2.644 F(will be displayed, e)144 693.6 Q
-.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E
-F2(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 597.6 R
--.25(va)-.4 G .666(lid option is seen,).25 F F4(getopts)3.166 E F0 .667
-(places ? into)3.167 F F2(name)3.527 E F0 .667
+F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 717.6 R
+-.25(va)-.4 G .666(lid option is seen,).25 F F2(getopts)3.166 E F0 .667
+(places ? into)3.167 F F1(name)3.527 E F0 .667
(and, if not silent, prints an error message)3.347 F .4(and unsets)144
-609.6 R F1(OPT)2.9 E(ARG)-.81 E F5(.)A F0(If)4.899 E F4(getopts)2.899 E
-F0 .399(is silent, the option character found is placed in)2.899 F F1
-(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F
-(diagnostic message is printed.)144 621.6 Q 1.241(If a required ar)144
-645.6 R 1.241(gument is not found, and)-.18 F F4(getopts)3.741 E F0
-1.241(is not silent, a question mark \()3.741 F F4(?).833 E F0 3.742
-(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F2(name)144.36
-657.6 Q F0(,).18 E F1(OPT)2.714 E(ARG)-.81 E F0 .213
-(is unset, and a diagnostic message is printed.)2.463 F(If)5.213 E F4
-(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F4(:).833 E
-F0(\)).833 E(is placed in)144 669.6 Q F2(name)2.86 E F0(and)2.68 E F1
-(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F4
-(getopts)144 693.6 Q F0 .902
-(returns true if an option, speci\214ed or unspeci\214ed, is found.)
-3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F
-(options is encountered or an error occurs.)144 705.6 Q(GNU Bash 5.0)72
-768 Q(2004 Apr 20)149.565 E(9)203.725 E 0 Cg EP
+729.6 R F4(OPT)2.9 E(ARG)-.81 E F5(.)A F0(If)4.899 E F2(getopts)2.899 E
+F0 .399(is silent, the option character found is placed in)2.899 F F4
+(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F(GNU Bash 5.2)72 768 Q
+(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(9)190.545 E 0 Cg EP
%%Page: 10 10
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(hash)108 84 Q F0([)
-2.5 E F1(\255lr)A F0 2.5(][)C F1<ad70>-2.5 E/F2 10/Times-Italic@0 SF
-(\214lename)2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5
-E F0(])A .858(Each time)144 96 R F1(hash)3.358 E F0 .858(is in)3.358 F
--.2(vo)-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F
-F2(name)3.718 E F0 .858(is determined by searching)3.538 F .956
-(the directories in)144 108 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0
+E(UIL)-.1 E(TINS\(1\))-.92 E(diagnostic message is printed.)144 84 Q
+1.241(If a required ar)144 108 R 1.241(gument is not found, and)-.18 F
+/F1 10/Times-Bold@0 SF(getopts)3.741 E F0 1.241
+(is not silent, a question mark \()3.741 F F1(?).833 E F0 3.742(\)i).833
+G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F/F2 10/Times-Italic@0 SF
+(name)144.36 120 Q F0(,).18 E/F3 9/Times-Bold@0 SF(OPT)2.714 E(ARG)-.81
+E F0 .213(is unset, and a diagnostic message is printed.)2.463 F(If)
+5.213 E F1(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F1
+(:).833 E F0(\)).833 E(is placed in)144 132 Q F2(name)2.86 E F0(and)2.68
+E F3(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25
+E F1(getopts)144 156 Q F0 .902
+(returns true if an option, speci\214ed or unspeci\214ed, is found.)
+3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F
+(options is encountered or an error occurs.)144 168 Q F1(hash)108 184.8
+Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1<ad70>-2.5 E F2(\214lename)2.5 E
+F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858
+(Each time)144 196.8 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)-.4
+G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name)
+3.718 E F0 .858(is determined by searching)3.538 F .956
+(the directories in)144 208.8 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0
.956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956
-(viously-remembered pathname is discarded.)-.25 F .243(If the)144 120 R
-F1<ad70>2.743 E F0 .243
+(viously-remembered pathname is discarded.)-.25 F .243(If the)144 220.8
+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 .615
-(of the command.)144 132 R(The)5.615 E F1<ad72>3.115 E F0 .615
+(of the command.)144 232.8 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
+(op-)3.115 E .294(tion causes the shell to for)144 244.8 R .294
(get the remembered location of each)-.18 F F2(name)2.793 E F0 5.293(.I)
C 2.793(ft)-5.293 G(he)-2.793 E 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
+256.8 R F2(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028
(If multiple)5.028 F F2(name)2.528 E F0(ar)2.528 E .028
-(guments are sup-)-.18 F .176(plied with)144 168 R F1<ad74>2.676 E F0
+(guments are sup-)-.18 F .176(plied with)144 268.8 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
+(be displayed in a format that may be reused as input.)144 280.8 R .783
(If no ar)5.783 F .783(guments are gi)-.18 F -.15(ve)-.25 G .783
(n, or if only).15 F 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
+(supplied, information about remembered commands is printed.)144 292.8 R
+.807(The return status is true unless a)5.807 F F2(name)144.36 304.8 Q
+F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.)
+.25 E F1(help)108 321.6 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2
+(pattern)-2.5 E F0(])A .866(Display helpful information about b)144
+333.6 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0
+.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25
+G 3.367(sd).15 G(etailed)-3.367 E .224(help on all commands matching)144
+345.6 R F2(pattern)3.974 E F0 2.723(;o).24 G .223
(therwise help for all the b)-2.723 F .223
-(uiltins and shell control struc-)-.2 F(tures is printed.)144 256.8 Q F1
-<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)
-180 280.8 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G
-(ormat)-2.5 E 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)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
-(history \255p)108 386.4 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5
-(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 398.4 Q F2(ar)2.5 E(g)
+(uiltins and shell control struc-)-.2 F(tures is printed.)144 357.6 Q F1
+<ad64>144 369.6 Q F0(Display a short description of each)180 369.6 Q F2
+(pattern)2.5 E F1<ad6d>144 381.6 Q F0(Display the description of each)
+180 381.6 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G
+(ormat)-2.5 E F1<ad73>144 393.6 Q F0
+(Display only a short usage synopsis for each)180 393.6 Q F2(pattern)2.5
+E F0(The return status is 0 unless no command matches)144 410.4 Q F2
+(pattern)3.75 E F0(.).24 E F1(history [)108 427.2 Q F2(n)A F1(])A
+(history \255c)108 439.2 Q(history \255d)108 451.2 Q F2(of)2.5 E(fset)
+-.18 E F1(history \255d)108 463.2 Q F2(start)2.5 E F0<ad>A F2(end)A F1
+(history \255anrw)108 475.2 Q F0([)2.5 E F2(\214lename)A F0(])A F1
+(history \255p)108 487.2 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5
+(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 499.2 Q F2(ar)2.5 E(g)
-.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144
-410.4 S .752
+511.2 S .752
(th no options, display the command history list with line numbers.).4 F
.752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2
-G .381(been modi\214ed.)144 422.4 R .38(An ar)5.38 F .38(gument of)-.18
+G .381(been modi\214ed.)144 523.2 R .38(An ar)5.38 F .38(gument of)-.18
F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88
-(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9
-/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 434.4 Q(T)-.855 E F0 .264
+(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E F3(HISTTIMEFOR-)
+2.88 E(MA)144 535.2 Q(T)-.855 E F0 .264
(is set and not null, it is used as a format string for)2.514 F F2
(strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02
-(ciated with each displayed history entry)144 446.4 R 6.019(.N)-.65 G
+(ciated with each displayed history entry)144 547.2 R 6.019(.N)-.65 G
3.519(oi)-6.019 G(nterv)-3.519 E 1.019
(ening blank is printed between the formatted)-.15 F .176
-(time stamp and the history line.)144 458.4 R(If)5.176 E F2(\214lename)
+(time stamp and the history line.)144 559.2 R(If)5.176 E F2(\214lename)
2.676 E F0 .176
(is supplied, it is used as the name of the history \214le; if)2.676 F
-(not, the v)144 470.4 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)
+(not, the v)144 571.2 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)
2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad63>144 482.4 Q F0
-(Clear the history list by deleting all the entries.)180 482.4 Q F1
-<ad64>144 494.4 Q F2(of)2.5 E(fset)-.18 E F0 .39
-(Delete the history entry at position)180 506.4 R F2(of)2.889 E(fset)
+(wing meanings:)-.25 E F1<ad63>144 583.2 Q F0
+(Clear the history list by deleting all the entries.)180 583.2 Q F1
+<ad64>144 595.2 Q F2(of)2.5 E(fset)-.18 E F0 .39
+(Delete the history entry at position)180 607.2 R F2(of)2.889 E(fset)
-.18 E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne)
2.889 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti)
-2.889 G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve)
-.25 G .598(to one greater than the last history position, so ne)180
-518.4 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599
-(ndices count back from the end).15 F(of the history)180 530.4 Q 2.5(,a)
+619.2 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599
+(ndices count back from the end).15 F(of the history)180 631.2 Q 2.5(,a)
-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G
(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1
-<ad64>144 542.4 Q F2(start)2.5 E F0<ad>A F2(end)A F0 .758
-(Delete the history entries between positions)180 554.4 R F2(start)3.258
-E F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve)
--.25 G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne)
-.15 F -.05(ga)-.15 G(-).05 E(ti)180 566.4 Q .3 -.15(ve v)-.25 H
-(alues for)-.1 E F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0
+<ad64>144 643.2 Q F2(start)2.5 E F0<ad>A F2(end)A F0 1.25
+(Delete the range of history entries between positions)180 655.2 R F2
+(start)3.75 E F0(and)3.75 E F2(end)3.75 E F0 3.75(,i)C(nclusi)-3.75 E
+-.15(ve)-.25 G 6.25(.P).15 G(ositi)-6.25 E -.15(ve)-.25 G(and ne)180
+667.2 Q -.05(ga)-.15 G(ti).05 E .3 -.15(ve v)-.25 H(alues for)-.1 E F2
+(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0
(are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1<ad61>
-144 578.4 Q F0 .564(Append the `)180 578.4 R(`ne)-.74 E(w')-.25 E 3.064
+144 679.2 Q F0 .564(Append the `)180 679.2 R(`ne)-.74 E(w')-.25 E 3.064
('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565
-(These are history lines entered since)5.564 F(the be)180 590.4 Q
+(These are history lines entered since)5.564 F(the be)180 691.2 Q
(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E
-(ut not already appended to the history \214le.)-.2 E F1<ad6e>144 602.4
+(ut not already appended to the history \214le.)-.2 E F1<ad6e>144 703.2
Q F0 .854(Read the history lines not already read from the history \214\
-le into the current history list.)180 602.4 R .772
-(These are lines appended to the history \214le since the be)180 614.4 R
+le into the current history list.)180 703.2 R .772
+(These are lines appended to the history \214le since the be)180 715.2 R
.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E
-(sion.)180 626.4 Q F1<ad72>144 638.4 Q F0(Read the contents of the hist\
-ory \214le and append them to the current history list.)180 638.4 Q F1
-<ad77>144 650.4 Q F0
-(Write the current history list to the history \214le, o)180 650.4 Q
--.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G
-(ontents.)-2.5 E F1<ad70>144 662.4 Q F0 .626
-(Perform history substitution on the follo)180 662.4 R(wing)-.25 E F2
-(ar)3.125 E(gs)-.37 E F0 .625(and display the result on the standard)
-3.125 F 2.975(output. Does)180 674.4 R .475
-(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar)
-2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F
-(normal history e)180 686.4 Q(xpansion.)-.15 E F1<ad73>144 698.4 Q F0
-.363(Store the)180 698.4 R F2(ar)3.193 E(gs)-.37 E F0 .363
-(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362
-(he last command in the history list is)-5.363 F(remo)180 710.4 Q -.15
-(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0
-(are added.)2.77 E .145(If the)144 727.2 R F3(HISTTIMEFORMA)2.645 E(T)
--.855 E F0 -.25(va)2.395 G .145
-(riable is set, the time stamp information associated with each history)
-.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(10)198.725 E 0 Cg EP
+(sion.)180 727.2 Q(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15
+G(mber 22).15 E(10)185.545 E 0 Cg EP
%%Page: 11 11
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E .669
-(entry is written to the history \214le, mark)144 84 R .669
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad72>144 84 Q F0(Rea\
+d the contents of the history \214le and append them to the current his\
+tory list.)180 84 Q F1<ad77>144 96 Q F0
+(Write the current history list to the history \214le, o)180 96 Q -.15
+(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G(ontents.)
+-2.5 E F1<ad70>144 108 Q F0 .626
+(Perform history substitution on the follo)180 108 R(wing)-.25 E/F2 10
+/Times-Italic@0 SF(ar)3.125 E(gs)-.37 E F0 .625
+(and display the result on the standard)3.125 F 2.975(output. Does)180
+120 R .475(not store the results in the history list.)2.975 F(Each)5.475
+E F2(ar)2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F
+(normal history e)180 132 Q(xpansion.)-.15 E F1<ad73>144 144 Q F0 .363
+(Store the)180 144 R F2(ar)3.193 E(gs)-.37 E F0 .363
+(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362
+(he last command in the history list is)-5.363 F(remo)180 156 Q -.15(ve)
+-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0
+(are added.)2.77 E .145(If the)144 172.8 R/F3 9/Times-Bold@0 SF
+(HISTTIMEFORMA)2.645 E(T)-.855 E F0 -.25(va)2.395 G .145
+(riable is set, the time stamp information associated with each history)
+.25 F .669(entry is written to the history \214le, mark)144 184.8 R .669
(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668
-(hen the history)-5.668 F .955(\214le is read, lines be)144 96 R .956
+(hen the history)-5.668 F .955(\214le is read, lines be)144 196.8 R .956
(ginning with the history comment character follo)-.15 F .956
(wed immediately by a digit)-.25 F .833
-(are interpreted as timestamps for the follo)144 108 R .833
+(are interpreted as timestamps for the follo)144 208.8 R .833
(wing history entry)-.25 F 5.832(.T)-.65 G .832(he return v)-5.832 F
-.832(alue is 0 unless an in-)-.25 F -.25(va)144 120 S .168(lid option i\
-s encountered, an error occurs while reading or writing the history \
-\214le, an in).25 F -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF(of)
-2.669 E(f-)-.18 E(set)144 132 Q F0(is supplied as an ar)2.5 E(gument to)
--.18 E/F2 10/Times-Bold@0 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 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
+.832(alue is 0 unless an in-)-.25 F -.25(va)144 220.8 S .168(lid option\
+ is encountered, an error occurs while reading or writing the history \
+\214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)2.669 E(f-)-.18 E(set)
+144 232.8 Q F0 .341(or range is supplied as an ar)2.841 F .341
+(gument to)-.18 F F1<ad64>2.841 E F0 2.841(,o)C 2.84(rt)-2.841 G .34
+(he history e)-2.84 F .34(xpansion supplied as an ar)-.15 F .34
+(gument to)-.18 F F1<ad70>144 244.8 Q F0 -.1(fa)2.5 G(ils.).1 E F1(jobs)
+108 261.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])
+2.5 E F1(jobs \255x)108 273.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E
+(gs)-.37 E F0(... ])2.5 E(The \214rst form lists the acti)144 285.6 Q .3
+-.15(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H
+(he follo).15 E(wing meanings:)-.25 E F1<ad6c>144 297.6 Q F0
+(List process IDs in addition to the normal information.)180 297.6 Q F1
+<ad6e>144 309.6 Q F0 .193(Display information only about jobs that ha)
+180 309.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15
+F .194(as last noti-)-.1 F(\214ed of their status.)180 321.6 Q F1<ad70>
+144 333.6 Q F0(List only the process ID of the job')180 333.6 Q 2.5(sp)
+-.55 G(rocess group leader)-2.5 E(.)-.55 E F1<ad72>144 345.6 Q F0
+(Display only running jobs.)180 345.6 Q F1<ad73>144 357.6 Q F0
+(Display only stopped jobs.)180 357.6 Q(If)144 374.4 Q F2(jobspec)4.554
+E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314
+(n, output is restricted to information about that job).15 F 5.313(.T)
+-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 386.4 Q -.25
(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25
-E F1(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 290.4 R F2
-<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 .394
-(with the corre-)3.164 F(sponding process group ID, and e)144 302.4 Q
--.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(ar)
+E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 403.2 R F1
+<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 415.2 Q
+-.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar)
2.83 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15
-E F2(kill)108 319.2 Q F0([)2.5 E 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 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)
+E F1(kill)108 432 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 444 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 456 R F2(sigspec)2.857 E F0(or)2.827 E F2(signum)2.857 E F0 .017
+(to the processes named by)2.837 F F2(pid)3.767 E F0(or)3.287 E F2
+(jobspec)4.257 E F0(.).31 E F2(sigspec)5.357 E F0(is)2.827 E .318
+(either a case-insensiti)144 468 R .618 -.15(ve s)-.25 H .318
+(ignal name such as).15 F F3(SIGKILL)2.818 E F0 .319
+(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319
+(pre\214x\) or a signal)2.569 F(number;)144 480 Q F2(signum)3.268 E F0
+.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F2(sigspec)
3.267 E F0 .427(is not present, then)3.237 F F3(SIGTERM)2.927 E F0 .427
-(is assumed.)2.677 F .428(An ar)5.427 F(-)-.2 E .314(gument of)144 379.2
-R 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
+(is assumed.)2.677 F .427(An ar)5.427 F(-)-.2 E .313(gument of)144 492 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 504 R
+.119(guments are listed, and the return status is 0.)-.18 F(The)5.119 E
+F2 -.2(ex)2.619 G(it_status).2 E F0(ar)2.619 E(-)-.2 E .799(gument to)
+144 516 R 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 528 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 427.2 Q(alse if an error occurs or an in)
--.1 E -.25(va)-.4 G(lid option is encountered.).25 E F2(let)108 444 Q F1
-(ar)2.5 E(g)-.37 E F0([)2.5 E F1(ar)A(g)-.37 E F0(...])2.5 E(Each)144
-456 Q F1(ar)3.027 E(g)-.37 E F0 .197(is an arithmetic e)2.917 F .197
-(xpression to be e)-.15 F -.25(va)-.25 G .196(luated \(see).25 F F3 .196
-(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)
-2.446 E -.15(ve)-.15 G 2.696(\). If).15 F(the last)144 468 Q F1(ar)2.83
-E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F2(let)2.5 E F0
-(returns 1; 0 is returned otherwise.)2.5 E F2(local)108 484.8 Q F0([)2.5
-E F1(option)A F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C
-(.. | \255 ])-2.5 E -.15(Fo)144 496.8 S 2.541(re).15 G .041(ach ar)
--2.541 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F1
-(name)2.902 E F0 .042(is created, and assigned)2.722 F F1(value)2.832 E
-F0 5.042(.T).18 G(he)-5.042 E F1(option)2.542 E F0 .042(can be)2.542 F
-(an)144 508.8 Q 3.153(yo)-.15 G 3.153(ft)-3.153 G .653
-(he options accepted by)-3.153 F F2(declar)3.153 E(e)-.18 E F0 5.652(.W)
-C(hen)-5.652 E F2(local)3.152 E F0 .652
+(successfully sent, or f)144 540 Q(alse if an error occurs or an in)-.1
+E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 556.8 Q F2
+(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144
+568.8 Q F2(ar)5.817 E(g)-.37 E F0 2.987(is an arithmetic e)5.707 F 2.987
+(xpression to be e)-.15 F -.25(va)-.25 G 2.987(luated \(see).25 F F3
+2.987(ARITHMETIC EV)5.487 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0
+(in)5.238 E F2(bash\(1\))144 580.8 Q F0 2.5(\). If)B(the last)2.5 E F2
+(ar)2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E
+F0(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 597.6 Q F0([)
+2.5 E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5
+(].)C(.. | \255 ])-2.5 E -.15(Fo)144 609.6 S 2.542(re).15 G .042(ach ar)
+-2.542 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F2
+(name)2.902 E F0 .042(is created, and assigned)2.722 F F2(value)2.832 E
+F0 5.042(.T).18 G(he)-5.042 E F2(option)2.542 E F0 .041(can be)2.541 F
+(an)144 621.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652
+(he options accepted by)-3.152 F F1(declar)3.152 E(e)-.18 E F0 5.652(.W)
+C(hen)-5.652 E F1(local)3.152 E F0 .653
(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144
-520.8 Q F1(name)3.281 E F0 .421(to ha)3.101 F .721 -.15(ve a v)-.2 H
+633.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H
.422(isible scope restricted to that function and its children.).15 F
-(If)5.422 E F1(name)2.922 E F0 .422(is \255, the set)2.922 F .51
-(of shell options is made local to the function in which)144 532.8 R F2
-(local)3.009 E F0 .509(is in)3.009 F -.2(vo)-.4 G -.1(ke).2 G .509
-(d: shell options changed us-).1 F 1.17(ing the)144 544.8 R F2(set)3.67
-E F0 -.2(bu)3.67 G 1.171
-(iltin inside the function are restored to their original v).2 F 1.171
-(alues when the function re-)-.25 F 3.381(turns. The)144 556.8 R .881
-(restore is ef)3.381 F .881(fected as if a series of)-.25 F F2(set)3.381
-E F0 .88(commands were e)3.38 F -.15(xe)-.15 G .88
-(cuted to restore the v).15 F(alues)-.25 E .787
-(that were in place before the function.)144 568.8 R -.4(Wi)5.788 G .788
-(th no operands,).4 F F2(local)3.288 E F0 .788(writes a list of local v)
-3.288 F .788(ariables to)-.25 F .655(the standard output.)144 580.8 R
-.654(It is an error to use)5.655 F F2(local)3.154 E F0 .654
-(when not within a function.)3.154 F .654(The return status is 0)5.654 F
-(unless)144 592.8 Q F2(local)2.5 E F0(is used outside a function, an in)
-2.5 E -.25(va)-.4 G(lid).25 E F1(name)2.86 E F0(is supplied, or)2.68 E
-F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2(logout)108
-609.6 Q F0(Exit a login shell.)144 609.6 Q F2(map\214le)108 626.4 Q F0
-([)2.5 E 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
-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 F2 -.18(re)108 638.4 S(adarray).18 E 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 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 .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
-(The \214rst character of)180 686.4 R F1(delim)3.41 E F0 .911
-(is used to terminate each input line, rather than ne)3.41 F 3.411
-(wline. If)-.25 F F1(delim)180 698.4 Q F0(is the empty string,)2.5 E F2
-(map\214le)2.5 E F0(will terminate a line when it reads a NUL character)
-2.5 E(.)-.55 E F2<ad6e>144 710.4 Q F0(Cop)180 710.4 Q 2.5(ya)-.1 G 2.5
-(tm)-2.5 G(ost)-2.5 E F1(count)2.7 E F0 2.5(lines. If)3.18 F F1(count)
-2.5 E F0(is 0, all lines are copied.)2.5 E(GNU Bash 5.0)72 768 Q
-(2004 Apr 20)149.565 E(11)198.725 E 0 Cg EP
+(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F .509
+(of shell options is made local to the function in which)144 645.6 R F1
+(local)3.01 E F0 .51(is in)3.01 F -.2(vo)-.4 G -.1(ke).2 G .51
+(d: shell options changed us-).1 F 1.171(ing the)144 657.6 R F1(set)
+3.671 E F0 -.2(bu)3.671 G 1.171
+(iltin inside the function are restored to their original v).2 F 1.17
+(alues when the function re-)-.25 F 3.38(turns. The)144 669.6 R .88
+(restore is ef)3.38 F .88(fected as if a series of)-.25 F F1(set)3.381 E
+F0 .881(commands were e)3.381 F -.15(xe)-.15 G .881
+(cuted to restore the v).15 F(alues)-.25 E .788
+(that were in place before the function.)144 681.6 R -.4(Wi)5.788 G .788
+(th no operands,).4 F F1(local)3.288 E F0 .787(writes a list of local v)
+3.288 F .787(ariables to)-.25 F .654(the standard output.)144 693.6 R
+.654(It is an error to use)5.654 F F1(local)3.154 E F0 .654
+(when not within a function.)3.154 F .655(The return status is 0)5.654 F
+(unless)144 705.6 Q F1(local)2.5 E F0(is used outside a function, an in)
+2.5 E -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68 E
+F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E(GNU Bash 5.2)72
+768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(11)185.545 E 0 Cg
+EP
%%Page: 12 12
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 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.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
-(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E(wline\) from each line read.)
--.25 E F1<ad75>144 120 Q F0(Read lines from \214le descriptor)180 120 Q
-F2(fd)2.5 E F0(instead of the standard input.)2.5 E 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.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.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
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(logout)108 84 Q F0
+(Exit a login shell.)144 84 Q F1(map\214le)108 100.8 Q F0([)2.5 E F1
+<ad64>A/F2 10/Times-Italic@0 SF(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 112.8 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 .159(Read lines from the standard input into the inde)144 124.8 R
+-.15(xe)-.15 G 2.659(da).15 G .159(rray v)-2.659 F(ariable)-.25 E F2
+(arr)2.989 E(ay)-.15 E F0 2.659(,o).32 G 2.658(rf)-2.659 G .158
+(rom \214le descriptor)-2.658 F F2(fd)4.628 E F0 1.248(if the)144 136.8
+R 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 9/Times-Bold@0 SF(MAPFILE)3.749 E F0 1.249
+(is the def)3.499 F(ault)-.1 E F2(arr)3.749 E(ay)-.15 E F0 6.249(.O)C
+1.249(ptions, if supplied,)-6.249 F(ha)144 148.8 Q .3 -.15(ve t)-.2 H
+(he follo).15 E(wing meanings:)-.25 E F1<ad64>144 160.8 Q F0 .911
+(The \214rst character of)180 160.8 R F2(delim)3.411 E F0 .911
+(is used to terminate each input line, rather than ne)3.411 F 3.41
+(wline. If)-.25 F F2(delim)180 172.8 Q F0(is the empty string,)2.5 E F1
+(map\214le)2.5 E F0(will terminate a line when it reads a NUL character)
+2.5 E(.)-.55 E F1<ad6e>144 184.8 Q F0(Cop)180 184.8 Q 2.5(ya)-.1 G 2.5
+(tm)-2.5 G(ost)-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)
+2.5 E F0(is 0, all lines are copied.)2.5 E F1<ad4f>144 196.8 Q F0(Be)180
+196.8 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82
+E(x)-.15 E F2(origin)2.73 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E
+2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1<ad73>144 208.8 Q F0
+(Discard the \214rst)180 208.8 Q F2(count)2.5 E F0(lines read.)2.5 E F1
+<ad74>144 220.8 Q F0(Remo)180 220.8 Q .3 -.15(ve a t)-.15 H(railing).15
+E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E
+(wline\) from each line read.)-.25 E F1<ad75>144 232.8 Q F0
+(Read lines from \214le descriptor)180 232.8 Q F2(fd)2.5 E F0
+(instead of the standard input.)2.5 E F1<ad43>144 244.8 Q F0(Ev)180
+244.8 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2
+(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F1<ad63>2.5 E F0
+(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1<ad63>144 256.8
+Q F0(Specify the number of lines read between each call to)180 256.8 Q
+F2(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 273.6 Q 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 172.8 R 2.761(xo)-.15
-G 2.761(ft)-2.761 G .261(he ne)-2.761 F .262(xt array element to be ass\
-igned and the line to be assigned to that element)-.15 F .275
-(as additional ar)144 184.8 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E
-F0 .275(is e)2.775 F -.25(va)-.25 G .274
-(luated after the line is read b).25 F .274
-(ut before the array element is)-.2 F(assigned.)144 196.8 Q
-(If not supplied with an e)144 213.6 Q(xplicit origin,)-.15 E F1
+(luated, it is sup-).25 F .262(plied the inde)144 285.6 R 2.762(xo)-.15
+G 2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be ass\
+igned and the line to be assigned to that element)-.15 F .274
+(as additional ar)144 297.6 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E
+F0 .274(is e)2.774 F -.25(va)-.25 G .274
+(luated after the line is read b).25 F .275
+(ut before the array element is)-.2 F(assigned.)144 309.6 Q
+(If not supplied with an e)144 326.4 Q(xplicit origin,)-.15 E F1
(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0
-(before assigning to it.)2.5 E F1(map\214le)144 230.4 Q F0 .797
-(returns successfully unless an in)3.297 F -.25(va)-.4 G .797
+(before assigning to it.)2.5 E F1(map\214le)144 343.2 Q F0 .797
+(returns successfully unless an in)3.298 F -.25(va)-.4 G .797
(lid option or option ar).25 F .797(gument is supplied,)-.18 F F2(arr)
-3.297 E(ay)-.15 E F0 .798(is in-)3.298 F -.25(va)144 242.4 S
+3.297 E(ay)-.15 E F0 .797(is in-)3.297 F -.25(va)144 355.2 S
(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0
(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E
-F1(popd)108 259.2 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0
-2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144 271.2 Q -.15(ve)-.15 G 2.8(se)
-.15 G .3(ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299
-(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G
-.299(he top directory from the)-2.799 F 1.478(stack, and performs a)144
-283.2 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479
-(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479
-(uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15
-F(wing)-.25 E(meanings:)144 295.2 Q F1<ad6e>144 307.2 Q F0 .551
-(Suppresses the normal change of directory when remo)180 307.2 R .551
+F1(popd)108 372 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0
+2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144 384 Q -.15(ve)-.15 G 3.091(se)
+.15 G .591(ntries from the directory stack.)-3.091 F .592
+(The elements are numbered from 0 starting at the \214rst)5.591 F .665
+(directory listed by)144 396 R F1(dirs)3.165 E F0 5.665(.W)C .665
+(ith no ar)-6.065 F(guments,)-.18 E F1(popd)3.165 E F0(remo)3.165 E -.15
+(ve)-.15 G 3.165(st).15 G .664(he top directory from the stack, and)
+-3.165 F(changes to the ne)144 408 Q 2.5(wt)-.25 G(op directory)-2.5 E 5
+(.A)-.65 G -.18(rg)-5 G(uments, if supplied, ha).18 E .3 -.15(ve t)-.2 H
+(he follo).15 E(wing meanings:)-.25 E F1<ad6e>144 420 Q F0 .551
+(Suppresses the normal change of directory when remo)180 420 R .551
(ving directories from the stack, so)-.15 F
-(that only the stack is manipulated.)180 319.2 Q F1(+)144 331.2 Q F2(n)A
-F0(Remo)180 331.2 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E
-F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25
-F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180
-343.2 S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0
-(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)
--.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1<ad>144 355.2 Q F2(n)A F0
-(Remo)180 355.2 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0
-1.259(th entry counting from the right of the list sho)B 1.259(wn by)
--.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5
-(zero. F)180 367.2 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0
+(that only the stack is manipulated.)180 432 Q F1(+)144 444 Q F2(n)A F0
+(Remo)180 444 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0
+.14(th entry counting from the left of the list sho)B .14(wn by)-.25 F
+F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero,)-2.64 F .779
+(from the stack.)180 456 R -.15(Fo)5.779 G 3.279(re).15 G(xample:)-3.429
+E/F4 10/Courier@0 SF .779(popd +0)3.279 F F0(remo)3.279 E -.15(ve)-.15 G
+3.279(st).15 G .779(he \214rst directory)-3.279 F(,)-.65 E F4 .78
+(popd +1)3.28 F F0 .78(the sec-)3.28 F(ond.)180 468 Q F1<ad>144 480 Q F2
+(n)A F0(Remo)180 480 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76
+E F0 1.259(th entry counting from the right of the list sho)B 1.259
+(wn by)-.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F
+2.5(zero. F)180 492 R(or e)-.15 E(xample:)-.15 E F4(popd -0)2.5 E F0
(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65
-E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144
-384 R F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1(dirs)
-3.143 E F0 .644(is performed as well, and the return status is 0.)3.143
-F F1(popd)5.644 E F0 .416(returns f)144 396 R .416(alse if an in)-.1 F
--.25(va)-.4 G .415
-(lid option is encountered, the directory stack is empty).25 F 2.915
-(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F
-(tory stack entry is speci\214ed, or the directory change f)144 408 Q
-(ails.)-.1 E F1(printf)108 424.8 Q F0([)2.5 E 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 .357
-(Write the formatted)144 436.8 R F2(ar)2.857 E(guments)-.37 E F0 .357
+E F4(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .093
+(If the top element of the directory stack is modi\214ed, and the)144
+508.8 R F2(-n)2.593 E F0 .094(option w)2.594 F .094(as not supplied,)-.1
+F F1(popd)2.594 E F0(uses)2.594 E(the)144 520.8 Q F1(cd)2.697 E F0 -.2
+(bu)2.697 G .196
+(iltin to change to the directory at the top of the stack.).2 F .196
+(If the)5.196 F F1(cd)2.696 E F0 -.1(fa)2.696 G(ils,).1 E F1(popd)2.696
+E F0 .196(returns a non-)2.696 F(zero v)144 532.8 Q(alue.)-.25 E
+(Otherwise,)144 549.6 Q F1(popd)2.67 E F0 .17(returns f)2.67 F .17
+(alse if an in)-.1 F -.25(va)-.4 G .171
+(lid option is encountered, the directory stack is empty).25 F 2.671(,o)
+-.65 G 2.671(ra)-2.671 G(non-e)144 561.6 Q
+(xistent directory stack entry is speci\214ed.)-.15 E 1.556(If the)144
+578.4 R F1(popd)4.056 E F0 1.556(command is successful, bash runs)4.056
+F F1(dirs)4.056 E F0 1.556(to sho)4.056 F 4.055(wt)-.25 G 1.555
+(he \214nal contents of the directory)-4.055 F
+(stack, and the return status is 0.)144 590.4 Q F1(printf)108 607.2 Q F0
+([)2.5 E 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 .357(Write the formatted)144 619.2 R F2(ar)2.857
+E(guments)-.37 E F0 .357
(to the standard output under the control of the)2.857 F F2(format)2.858
E F0 5.358(.T)C(he)-5.358 E 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
+(tion causes the output to be assigned to the v)144 631.2 R(ariable)-.25
E F2(var)3.214 E F0 .714(rather than being printed to the standard)3.214
-F(output.)144 460.8 Q(The)144 484.8 Q F2(format)3.017 E F0 .517(is a ch\
+F(output.)144 643.2 Q(The)144 667.2 Q F2(format)3.017 E F0 .517(is a ch\
aracter string which contains three types of objects: plain characters,\
which are)3.017 F .704(simply copied to standard output, character esc\
-ape sequences, which are con)144 496.8 R -.15(ve)-.4 G .703
+ape sequences, which are con)144 679.2 R -.15(ve)-.4 G .703
(rted and copied to).15 F .036(the standard output, and format speci\
-\214cations, each of which causes printing of the ne)144 508.8 R .037
-(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 520.8 Q(gument)-.37 E F0
+\214cations, each of which causes printing of the ne)144 691.2 R .037
+(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 703.2 Q(gument)-.37 E F0
5.532(.I)C 3.032(na)-5.532 G .532(ddition to the standard)-3.032 F F2
(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.031
-E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 532.8 Q
-(xtensions:)-.15 E F1(%b)144 544.8 Q F0(causes)180 544.8 Q F1(printf)
-2.595 E F0 .096(to e)2.595 F .096
-(xpand backslash escape sequences in the corresponding)-.15 F F2(ar)
-2.596 E(gument)-.37 E F0 .096(in the)2.596 F(same w)180 556.8 Q(ay as)
--.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 568.8 Q F0(causes)180 568.8 Q
-F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E
-(gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F
-(input.)180 580.8 Q F1(%\()144 592.8 Q F2(datefmt)A F1(\)T)A F0(causes)
-180 604.8 Q F1(printf)4.403 E F0 1.904
+E F0 .531(interprets the follo)3.031 F(w-)-.25 E(ing e)144 715.2 Q
+(xtensions:)-.15 E(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15
+G(mber 22).15 E(12)185.545 E 0 Cg EP
+%%Page: 13 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(%b)144 84 Q F0
+(causes)180 84 Q F1(printf)2.595 E F0 .096(to e)2.595 F .096
+(xpand backslash escape sequences in the corresponding)-.15 F/F2 10
+/Times-Italic@0 SF(ar)2.596 E(gument)-.37 E F0 .096(in the)2.596 F
+(same w)180 96 Q(ay as)-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 108 Q
+F0(causes)180 108 Q F1(printf)2.51 E F0 .01(to output the corresponding)
+2.51 F F2(ar)2.51 E(gument)-.37 E F0 .01
+(in a format that can be reused as shell)2.51 F(input.)180 120 Q F1(%Q)
+144 132 Q F0(lik)180 132 Q(e)-.1 E F1(%q)2.5 E F0 2.5(,b)C
+(ut applies an)-2.7 E 2.5(ys)-.15 G(upplied precision to the)-2.5 E F2
+(ar)2.5 E(gument)-.37 E F0(before quoting it.)2.5 E F1(%\()144 144 Q F2
+(datefmt)A F1(\)T)A F0(causes)180 156 Q F1(printf)4.403 E F0 1.904
(to output the date-time string resulting from using)4.403 F F2(datefmt)
-4.404 E F0 1.904(as a format)4.404 F .381(string for)180 616.8 R F2
+4.404 E F0 1.904(as a format)4.404 F .381(string for)180 168 R F2
(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar)
2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381
(ger representing the number)-.15 F .292(of seconds since the epoch.)180
-628.8 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F
+180 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F
.293(alues may be used: \2551 represents the)-.25 F .694
-(current time, and \2552 represents the time the shell w)180 640.8 R
-.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar)
-3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 652.8 R -.15
-(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71
-G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25
-G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F
-F1(printf)2.71 E F0(beha)180 664.8 Q(vior)-.2 E(.)-.55 E .902
-(The %b, %q, and %T directi)144 681.6 R -.15(ve)-.25 G 3.401(sa).15 G
+(current time, and \2552 represents the time the shell w)180 192 R .693
+(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar)3.193
+F .693(gument is speci-)-.18 F .21(\214ed, con)180 204 R -.15(ve)-.4 G
+.21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71 G 2.71
+<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25 G 2.71
+(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F F1
+(printf)2.71 E F0(beha)180 216 Q(vior)-.2 E(.)-.55 E .902
+(The %b, %q, and %T directi)144 232.8 R -.15(ve)-.25 G 3.401(sa).15 G
.901(ll use the \214eld width and precision ar)-3.401 F .901
(guments from the format)-.18 F .357(speci\214cation and write that man)
-144 693.6 R 2.857(yb)-.15 G .358
+144 244.8 R 2.857(yb)-.15 G .358
(ytes from \(or use that wide a \214eld for\) the e)-2.857 F .358
(xpanded ar)-.15 F(gument,)-.18 E
-(which usually contains more characters than the original.)144 705.6 Q
-(Ar)144 722.4 Q .464(guments to non-string format speci\214ers are trea\
+(which usually contains more characters than the original.)144 256.8 Q
+(Ar)144 273.6 Q .464(guments to non-string format speci\214ers are trea\
ted as C constants, e)-.18 F .463(xcept that a leading plus or)-.15 F
-(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(12)198.725 E 0 Cg EP
-%%Page: 13 13
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E 1.258(minus sign is allo)144 84 R 1.259
+1.258(minus sign is allo)144 285.6 R 1.259
(wed, and if the leading character is a single or double quote, the v)
--.25 F 1.259(alue is the)-.25 F(ASCII v)144 96 Q(alue of the follo)-.25
-E(wing character)-.25 E(.)-.55 E(The)144 112.8 Q/F1 10/Times-Italic@0 SF
-(format)2.515 E F0 .015(is reused as necessary to consume all of the)
-2.515 F F1(ar)2.515 E(guments)-.37 E F0 5.015(.I)C 2.514(ft)-5.015 G(he)
--2.514 E F1(format)2.514 E F0 .014(requires more)2.514 F F1(ar)2.514 E
-(-)-.2 E(guments)144 124.8 Q F0 .565(than are supplied, the e)3.065 F
-.566(xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066
-(si).15 G 3.066(faz)-3.066 G .566(ero v)-3.066 F .566
-(alue or null string,)-.25 F(as appropriate, had been supplied.)144
-136.8 Q(The return v)5 E(alue is zero on success, non-zero on f)-.25 E
-(ailure.)-.1 E/F2 10/Times-Bold@0 SF(pushd)108 153.6 Q F0([)2.5 E F2
-<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 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
+-.25 F 1.259(alue is the)-.25 F(ASCII v)144 297.6 Q(alue of the follo)
+-.25 E(wing character)-.25 E(.)-.55 E(The)144 314.4 Q F2(format)2.515 E
+F0 .015(is reused as necessary to consume all of the)2.515 F F2(ar)2.515
+E(guments)-.37 E F0 5.015(.I)C 2.514(ft)-5.015 G(he)-2.514 E F2(format)
+2.514 E F0 .014(requires more)2.514 F F2(ar)2.514 E(-)-.2 E(guments)144
+326.4 Q F0 .565(than are supplied, the e)3.065 F .566
+(xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066(si)
+.15 G 3.066(faz)-3.066 G .566(ero v)-3.066 F .566(alue or null string,)
+-.25 F(as appropriate, had been supplied.)144 338.4 Q(The return v)5 E
+(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd)
+108 355.2 Q F0([)2.5 E 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 367.2 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 379.2 R 3.139(wt)
+-.25 G .639(op of the)-3.139 F .088(stack the current w)144 391.2 R .088
+(orking directory)-.1 F 5.088(.W)-.65 G .088(ith no ar)-5.488 F
+(guments,)-.18 E F1(pushd)2.589 E F0 -.15(ex)2.589 G .089
+(changes the top tw).15 F 2.589(oe)-.1 G .089(lements of)-2.589 F
+(the directory stack.)144 403.2 Q(Ar)5 E(guments, if supplied, ha)-.18 E
+.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad6e>144
+415.2 Q F0 1.811(Suppresses the normal change of directory when rotatin\
+g or adding directories to the)180 415.2 R
+(stack, so that only the stack is manipulated.)180 427.2 Q F1(+)144
+439.2 Q F2(n)A F0 1.267(Rotates the stack so that the)180 439.2 R F2(n)
+3.767 E F0 1.268(th directory \(counting from the left of the list sho)B
+1.268(wn by)-.25 F F1(dirs)180 451.2 Q F0 2.5(,s)C
+(tarting with zero\) is at the top.)-2.5 E F1<ad>144 463.2 Q F2(n)A F0
+.92(Rotates the stack so that the)180 463.2 R F2(n)3.42 E F0 .92
(th directory \(counting from the right of the list sho)B .92(wn by)-.25
-F F2(dirs)180 285.6 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
--2.5 E F1(dir)144.35 297.6 Q F0(Adds)180 297.6 Q F1(dir)3.138 E F0 .288
-(to the directory stack at the top, making it the ne)3.518 F 2.787(wc)
--.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F
-(if it had been supplied as the ar)180 309.6 Q(gument to the)-.18 E F2
-(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 326.4 R F2(pushd)
-2.988 E F0 .488(command is successful, a)2.988 F F2(dirs)2.988 E F0 .488
-(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F
-F2(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 338.4 R F1(dir)
-3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4
-F F2(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846
-(stack is empty)144 350.4 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\
- directory stack element is speci\214ed, or the directory change to the)
--.15 F(speci\214ed ne)144 362.4 Q 2.5(wc)-.25 G(urrent directory f)-2.5
-E(ails.)-.1 E F2(pwd)108 379.2 Q F0([)2.5 E F2(\255LP)A F0(])A .845
-(Print the absolute pathname of the current w)144 391.2 R .845
-(orking directory)-.1 F 5.844(.T)-.65 G .844
-(he pathname printed contains no)-5.844 F .181(symbolic links if the)144
-403.2 R 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 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 .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 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 708 Q(gins.)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)
-149.565 E(13)198.725 E 0 Cg EP
+F F1(dirs)180 475.2 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
+-2.5 E F2(dir)144.35 487.2 Q F0(Adds)180 487.2 Q F2(dir)2.85 E F0
+(to the directory stack at the top)3.23 E .434
+(After the stack has been modi\214ed, if the)144 504 R F1<ad6e>2.934 E
+F0 .434(option w)2.934 F .435(as not supplied,)-.1 F F1(pushd)2.935 E F0
+.435(uses the)2.935 F F1(cd)2.935 E F0 -.2(bu)2.935 G .435(iltin to).2 F
+(change to the directory at the top of the stack.)144 516 Q(If the)5 E
+F1(cd)2.5 E F0 -.1(fa)2.5 G(ils,).1 E F1(pushd)2.5 E F0
+(returns a non-zero v)2.5 E(alue.)-.25 E 1.78(Otherwise, if no ar)144
+532.8 R 1.78(guments are supplied,)-.18 F F1(pushd)4.28 E F0 1.78
+(returns 0 unless the directory stack is empty)4.28 F(.)-.65 E .092
+(When rotating the directory stack,)144 544.8 R F1(pushd)2.592 E F0 .093
+(returns 0 unless the directory stack is empty or a non-e)2.592 F(x-)
+-.15 E(istent directory stack element is speci\214ed.)144 556.8 Q 1.278
+(If the)144 573.6 R F1(pushd)3.778 E F0 1.278
+(command is successful, bash runs)3.778 F F1(dirs)3.778 E F0 1.277
+(to sho)3.777 F 3.777(wt)-.25 G 1.277
+(he \214nal contents of the directory)-3.777 F(stack.)144 585.6 Q F1
+(pwd)108 602.4 Q F0([)2.5 E F1(\255LP)A F0(])A .844
+(Print the absolute pathname of the current w)144 614.4 R .845
+(orking directory)-.1 F 5.845(.T)-.65 G .845
+(he pathname printed contains no)-5.845 F .182(symbolic links if the)144
+626.4 R 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 .181(iltin command is).2 F 3.263
+(enabled. If)144 638.4 R(the)3.263 E F1<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 650.4 R -.25(va)
+-.4 G .405(lid op-).25 F(tion is supplied.)144 662.4 Q F1 -.18(re)108
+679.2 S(ad).18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1<ad61>-3.816
+E F2(aname)3.816 E F0 3.816(][)C F1<ad64>-3.816 E F2(delim)3.816 E F0
+3.816(][)C F1<ad69>-3.816 E F2(te)3.816 E(xt)-.2 E F0 3.816(][)C F1
+<ad6e>-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1<ad4e>
+-3.817 E F2(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1<ad70>-3.817 E
+F2(pr)3.817 E(ompt)-.45 E F0 3.817(][)C F1<ad74>-3.817 E F2(timeout)
+3.817 E F0 3.817(][)C F1<ad75>-3.817 E F2(fd)3.817 E F0(])A([)108 691.2
+Q F2(name)A F0(...])2.5 E .516(One line is read from the standard input\
+, or from the \214le descriptor)144 703.2 R F2(fd)3.016 E F0 .516
+(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 715.2 Q F1
+<ad75>2.753 E F0 .253(option, split into w)2.753 F .253
+(ords as described in)-.1 F F2(bash\(1\))2.754 E F0(under)2.754 E F1
+-.75(Wo)2.754 G .254(rd Splitting).75 F F0 2.754(,a)C .254
+(nd the \214rst w)-2.754 F .254(ord is)-.1 F 1.425
+(assigned to the \214rst)144 727.2 R F2(name)4.285 E F0 3.925(,t).18 G
+1.425(he second w)-3.925 F 1.425(ord to the second)-.1 F F2(name)4.285 E
+F0 3.925(,a).18 G 1.425(nd so on.)-3.925 F 1.425(If there are more)6.425
+F(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E
+(13)185.545 E 0 Cg EP
%%Page: 14 14
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 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 144 R F1 -.18(re)2.775
-G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-)
-5.274 F 1.002
-(tered in the input are not treated specially and do not cause)180 156 R
-F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503
-E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 168 R .608
-(The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0
-3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 180 S .669
+E(UIL)-.1 E(TINS\(1\))-.92 E -.1(wo)144 84 S 1.112
+(rds than names, the remaining w).1 F 1.112(ords and their interv)-.1 F
+1.112(ening delimiters are assigned to the last)-.15 F/F1 10
+/Times-Italic@0 SF(name)144.36 96 Q F0 5.7(.I).18 G 3.2(ft)-5.7 G .7
+(here are fe)-3.2 F .7(wer w)-.25 F .7
+(ords read from the input stream than names, the remaining names are)-.1
+F .531(assigned empty v)144 108 R 3.031(alues. The)-.25 F .531
+(characters in)3.031 F/F2 9/Times-Bold@0 SF(IFS)3.031 E F0 .532
+(are used to split the line into w)2.781 F .532(ords using the same)-.1
+F 1.326(rules the shell uses for e)144 120 R 1.325
+(xpansion \(described in)-.15 F F1(bash\(1\))3.825 E F0(under)3.825 E/F3
+10/Times-Bold@0 SF -.75(Wo)3.825 G 1.325(rd Splitting).75 F F0 3.825
+(\). The)B(backslash)3.825 E .738(character \()144 132 R F3(\\)A F0
+3.238(\)m)C .739(ay be used to remo)-3.238 F 1.039 -.15(ve a)-.15 H
+1.039 -.15(ny s).15 H .739(pecial meaning for the ne).15 F .739
+(xt character read and for line)-.15 F 2.5(continuation. Options,)144
+144 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F3<ad61>144 156 Q F1(aname)2.5 E F0 1.026(The w)
+180 168 R 1.026(ords are assigned to sequential indices of the array v)
+-.1 F(ariable)-.25 E F1(aname)3.855 E F0 3.525(,s).18 G 1.025
+(tarting at 0.)-3.525 F F1(aname)180.33 180 Q F0(is unset before an)2.68
+E 2.5(yn)-.15 G .5 -.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E
+F1(name)2.5 E F0(ar)2.5 E(guments are ignored.)-.18 E F3<ad64>144 192 Q
+F1(delim)2.5 E F0 .28(The \214rst character of)180 204 R F1(delim)2.78 E
+F0 .281(is used to terminate the input line, rather than ne)2.78 F 2.781
+(wline. If)-.25 F F1(de-)2.781 E(lim)180 216 Q F0(is the empty string,)
+2.5 E F3 -.18(re)2.5 G(ad).18 E F0
+(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F3
+<ad65>144 228 Q F0 .629
+(If the standard input is coming from a terminal,)180 228 R F3 -.18(re)
+3.128 G(adline).18 E F0(\(see)3.128 E F2(READLINE)3.128 E F0(in)2.878 E
+F1(bash\(1\))3.128 E F0 3.128(\)i)C(s)-3.128 E .048
+(used to obtain the line.)180 240 R .049
+(Readline uses the current \(or def)5.049 F .049
+(ault, if line editing w)-.1 F .049(as not pre)-.1 F(vi-)-.25 E
+(ously acti)180 252 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)
+-2.5 E(ut uses readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E
+(ault \214lename completion.)-.1 E F3<ad69>144 264 Q F1(te)2.5 E(xt)-.2
+E F0(If)180 264 Q F3 -.18(re)2.716 G(adline).18 E F0 .216
+(is being used to read the line,)2.716 F F1(te)2.716 E(xt)-.2 E F0 .216
+(is placed into the editing b)2.716 F(uf)-.2 E .215(fer before edit-)
+-.25 F(ing be)180 276 Q(gins.)-.15 E F3<ad6e>144 288 Q F1(nc)2.5 E(har)
+-.15 E(s)-.1 E F3 -.18(re)180 300 S(ad).18 E F0 .322
+(returns after reading)2.822 F F1(nc)2.823 E(har)-.15 E(s)-.1 E F0 .323
+(characters rather than w)2.823 F .323
+(aiting for a complete line of in-)-.1 F(put, b)180 312 Q
+(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F1(nc)2.5 E(har)-.15
+E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F3
+<ad4e>144 324 Q F1(nc)2.5 E(har)-.15 E(s)-.1 E F3 -.18(re)180 336 S(ad)
+.18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F1(nc)3.769
+E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.269
+(aiting for a complete)-.1 F .274
+(line of input, unless EOF is encountered or)180 348 R F3 -.18(re)2.775
+G(ad).18 E F0 .275(times out.)2.775 F .275(Delimiter characters encoun-)
+5.275 F 1.003
+(tered in the input are not treated specially and do not cause)180 360 R
+F3 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F1(nc)3.502
+E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 372 R .608
+(The result is not split on the characters in)5.608 F F3(IFS)3.108 E F0
+3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 384 S .67
(riable is assigned e).25 F .669
-(xactly the characters read \(with the e)-.15 F .67
-(xception of backslash; see the)-.15 F 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
+(xactly the characters read \(with the e)-.15 F .669
+(xception of backslash; see the)-.15 F F3<ad72>180 396 Q F0(option belo)
+2.5 E(w\).)-.25 E F3<ad70>144 408 Q F1(pr)2.5 E(ompt)-.45 E F0(Display)
+180 420 Q F1(pr)3.66 E(ompt)-.45 E F0 1.161(on standard error)3.66 F
3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161
-(wline, before attempting to read)-.25 F(an)180 228 Q 2.5(yi)-.15 G 2.5
+(wline, before attempting to read)-.25 F(an)180 432 Q 2.5(yi)-.15 G 2.5
(nput. The)-2.5 F
-(prompt is displayed only if input is coming from a terminal.)2.5 E F1
-<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
+(prompt is displayed only if input is coming from a terminal.)2.5 E F3
+<ad72>144 444 Q F0 .544(Backslash does not act as an escape character)
+180 444 R 5.543(.T)-.55 G .543(he backslash is considered to be part of)
+-5.543 F .492(the line.)180 456 R .492(In particular)5.492 F 2.992(,ab)
+-.4 G(ackslash-ne)-2.992 E .493
(wline pair may not then be used as a line continua-)-.25 F(tion.)180
-264 Q 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 288 Q F2(timeout)2.5 E F0(Cause)180 300 Q F1 -.18(re)2.928 G
-(ad).18 E F0 .428(to time out and return f)2.928 F .428
-(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .561
-(ber of characters\) is not read within)180 312 R F2(timeout)3.061 E F0
-(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number)
-3.061 F(with a fractional portion follo)180 324 Q
+468 Q F3<ad73>144 480 Q F0(Silent mode.)180 480 Q
+(If input is coming from a terminal, characters are not echoed.)5 E F3
+<ad74>144 492 Q F1(timeout)2.5 E F0(Cause)180 504 Q F3 -.18(re)2.929 G
+(ad).18 E F0 .428(to time out and return f)2.929 F .428
+(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56
+(ber of characters\) is not read within)180 516 R F1(timeout)3.061 E F0
+(seconds.)3.061 E F1(timeout)5.561 E F0 .561(may be a decimal number)
+3.061 F(with a fractional portion follo)180 528 Q
(wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E
-.3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\
+.3 -.15(ve i)-.25 H(f).15 E F3 -.18(re)2.5 G(ad).18 E F0 .506(is readin\
g input from a terminal, pipe, or other special \214le; it has no ef)180
-336 R .505(fect when reading)-.25 F .589(from re)180 348 R .589
-(gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589
-(times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)
--.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59
-(artial input read into the speci\214ed).15 F -.25(va)180 360 S(riable)
-.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27
-(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77
+540 R .506(fect when reading)-.25 F .59(from re)180 552 R .59
+(gular \214les.)-.15 F(If)5.59 E F3 -.18(re)3.09 G(ad).18 E F0 .589
+(times out,)3.09 F F3 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2
+G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589
+(artial input read into the speci\214ed).15 F -.25(va)180 564 S(riable)
+.25 E F1(name)2.77 E F0 5.27(.I)C(f)-5.27 E F1(timeout)2.77 E F0 .27
+(is 0,)2.77 F F3 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77
F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G
-(ata.)-2.77 E 1.12(The e)180 372 R 1.12(xit status is 0 if input is a)
--.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor)
-.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180
-384 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e)
-.15 E(xceeded.)-.15 E 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
+(ata.)-2.77 E .228(The e)180 576 R .228(xit status is 0 if input is a)
+-.15 F -.25(va)-.2 G .228(ilable on the speci\214ed \214le descriptor)
+.25 F 2.728(,o)-.4 G 2.727(rt)-2.728 G .227(he read will re-)-2.727 F
+1.224(turn EOF)180 588 R 3.724(,n)-.8 G 1.224(on-zero otherwise.)-3.724
+F 1.224(The e)6.224 F 1.225
+(xit status is greater than 128 if the timeout is e)-.15 F(x-)-.15 E
+(ceeded.)180 600 Q F3<ad75>144 612 Q F1(fd)2.5 E F0
+(Read input from \214le descriptor)180 612 Q F1(fd)2.5 E F0(.)A .522
+(If no)144 628.8 R F1(names)3.382 E F0 .522
(are supplied, the line read, without the ending delimiter b)3.292 F
.522(ut otherwise unmodi\214ed, is)-.2 F 1.186(assigned to the v)144
-424.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9
-/Times-Roman@0 SF(.)A F0 1.186(The e)5.686 F 1.186
-(xit status is zero, unless end-of-\214le is encountered,)-.15 F F1 -.18
+640.8 R(ariable)-.25 E F2(REPL)3.686 E(Y)-.828 E/F4 9/Times-Roman@0 SF
+(.)A F0 1.186(The e)5.686 F 1.186
+(xit status is zero, unless end-of-\214le is encountered,)-.15 F F3 -.18
(re)3.687 G(ad).18 E F0 .961
(times out \(in which case the status is greater than 128\), a v)144
-436.8 R .96(ariable assignment error \(such as as-)-.25 F .706
-(signing to a readonly v)144 448.8 R .706(ariable\) occurs, or an in)
+652.8 R .96(ariable assignment error \(such as as-)-.25 F .706
+(signing to a readonly v)144 664.8 R .706(ariable\) occurs, or an in)
-.25 F -.25(va)-.4 G .706(lid \214le descriptor is supplied as the ar)
-.25 F .707(gument to)-.18 F 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
+.25 F .707(gument to)-.18 F F3<ad75>144 676.8 Q F0(.)A F3 -.18(re)108
+693.6 S(adonly).18 E F0([)2.5 E F3(\255aAf)A F0 2.5(][)C F3<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 705.6 R -.15(ve)-.25 G(n).15 E F1(names)3.27 E F0
.77(are mark)3.27 F .77(ed readonly; the v)-.1 F .77(alues of these)-.25
-F F2(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.096
-(quent assignment.)144 501.6 R 1.096(If the)6.096 F 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 .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
-.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 561.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144
-573.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
--3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor)
-3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in)
--5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the)
-144 585.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
--.25 F .26(ariable name, or)-.25 F F1<ad66>2.76 E F0 .26
-(is supplied with a)2.76 F F2(name)144.36 597.6 Q F0
-(that is not a function.)2.68 E F1 -.18(re)108 614.4 S(tur).18 E(n)-.15
-E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 626.4 R
+F F1(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.096
+(quent assignment.)144 717.6 R 1.096(If the)6.096 F F3<ad66>3.596 E F0
+1.097(option is supplied, the functions corresponding to the)3.596 F F1
+(names)3.597 E F0 1.097(are so)3.597 F(mark)144 729.6 Q 4.903(ed. The)
+-.1 F F3<ad61>4.903 E F0 2.403(option restricts the v)4.903 F 2.403
+(ariables to inde)-.25 F -.15(xe)-.15 G 4.903(da).15 G 2.403(rrays; the)
+-4.903 F F3<ad41>4.903 E F0 2.402(option restricts the)4.903 F
+(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E
+(14)185.545 E 0 Cg EP
+%%Page: 15 15
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E -.25(va)144 84 S .424(riables to associati)
+.25 F .724 -.15(ve a)-.25 H 2.924(rrays. If).15 F .425
+(both options are supplied,)2.924 F/F1 10/Times-Bold@0 SF<ad41>2.925 E
+F0(tak)2.925 E .425(es precedence.)-.1 F .425(If no)5.425 F/F2 10
+/Times-Italic@0 SF(name)3.285 E F0(ar)3.105 E(-)-.2 E 1.275
+(guments are gi)144 96 R -.15(ve)-.25 G 1.275(n, or if the).15 F F1
+<ad70>3.775 E F0 1.275
+(option is supplied, a list of all readonly names is printed.)3.775 F
+(The)6.275 E .559(other options may be used to restrict the output to a\
+ subset of the set of readonly names.)144 108 R(The)5.559 E F1<ad70>
+3.059 E F0 .201(option causes output to be displayed in a format that m\
+ay be reused as input.)144 120 R .2(If a v)5.2 F .2(ariable name is)-.25
+F(follo)144 132 Q .133(wed by =)-.25 F F2(wor)A(d)-.37 E F0 2.633(,t)C
+.133(he v)-2.633 F .133(alue of the v)-.25 F .133(ariable is set to)-.25
+F F2(wor)2.633 E(d)-.37 E F0 5.133(.T)C .133
+(he return status is 0 unless an in)-5.133 F -.25(va)-.4 G(lid).25 E .26
+(option is encountered, one of the)144 144 R F2(names)3.12 E F0 .26
+(is not a v)3.03 F .26(alid shell v)-.25 F .26(ariable name, or)-.25 F
+F1<ad66>2.76 E F0 .26(is supplied with a)2.76 F F2(name)144.36 156 Q F0
+(that is not a function.)2.68 E F1 -.18(re)108 172.8 S(tur).18 E(n)-.15
+E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 184.8 R
-.15(xe)-.15 G .02(cuting and return the v).15 F .021
(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F
5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597
-(the return status is that of the last command e)144 638.4 R -.15(xe)
+(the return status is that of the last command e)144 196.8 R -.15(xe)
-.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E
F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15
-G(cuted).15 E .267(by a trap handler)144 650.4 R 2.767(,t)-.4 G .267
+G(cuted).15 E .267(by a trap handler)144 208.8 R 2.767(,t)-.4 G .267
(he last command used to determine the status is the last command e)
-2.767 F -.15(xe)-.15 G .268(cuted be-).15 F .02(fore the trap handler)
-144 662.4 R 5.02(.I)-.55 G(f)-5.02 E F1 -.18(re)2.52 G(tur).18 E(n)-.15
+144 220.8 R 5.02(.I)-.55 G(f)-5.02 E F1 -.18(re)2.52 G(tur).18 E(n)-.15
E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F1(DEB)2.52
E(UG)-.1 E F0 .02(trap, the last command used to deter)2.52 F(-)-.2 E
-.885(mine the status is the last command e)144 674.4 R -.15(xe)-.15 G
+.885(mine the status is the last command e)144 232.8 R -.15(xe)-.15 G
.886(cuted by the trap handler before).15 F F1 -.18(re)3.386 G(tur).18 E
(n)-.15 E F0 -.1(wa)3.386 G 3.386(si).1 G -1.9 -.4(nv o)-3.386 H -.1(ke)
-.4 G 3.386(d. If).1 F F1 -.18(re)144 686.4 S(tur).18 E(n)-.15 E F0 .628
+.4 G 3.386(d. If).1 F F1 -.18(re)144 244.8 S(tur).18 E(n)-.15 E F0 .628
(is used outside a function, b)3.128 F .628(ut during e)-.2 F -.15(xe)
-.15 G .628(cution of a script by the).15 F F1(.)3.127 E F0(\()5.627 E
F1(sour)A(ce)-.18 E F0 3.127(\)c)C .627(ommand, it)-3.127 F .588
-(causes the shell to stop e)144 698.4 R -.15(xe)-.15 G .588
+(causes the shell to stop e)144 256.8 R -.15(xe)-.15 G .588
(cuting that script and return either).15 F F2(n)3.448 E F0 .589
(or the e)3.329 F .589(xit status of the last com-)-.15 F .326(mand e)
-144 710.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F
+144 268.8 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F
.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .325
-(is supplied, the return v)2.826 F .325(alue is)-.25 F 2.035
-(its least signi\214cant 8 bits.)144 722.4 R 2.035
-(The return status is non-zero if)7.035 F F1 -.18(re)4.536 G(tur).18 E
-(n)-.15 E F0 2.036(is supplied a non-numeric)4.536 F(GNU Bash 5.0)72 768
-Q(2004 Apr 20)149.565 E(14)198.725 E 0 Cg EP
-%%Page: 15 15
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(ar)144 84 Q .706
-(gument, or is used outside a function and not during e)-.18 F -.15(xe)
--.15 G .705(cution of a script by).15 F/F1 10/Times-Bold@0 SF(.)3.205 E
-F0(or)4.038 E F1(sour)3.205 E(ce)-.18 E F0 5.705(.A)C -.15(ny)-5.705 G
-.365(command associated with the)144 96 R F1(RETURN)2.865 E F0 .365
-(trap is e)2.865 F -.15(xe)-.15 G .365(cuted before e).15 F -.15(xe)-.15
-G .366(cution resumes after the func-).15 F(tion or script.)144 108 Q F1
-(set)108 124.8 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C
-F1<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
-.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
+(is supplied, the return v)2.826 F .325(alue is)-.25 F .444
+(its least signi\214cant 8 bits.)144 280.8 R .444
+(The return status is non-zero if)5.444 F F1 -.18(re)2.945 G(tur).18 E
+(n)-.15 E F0 .445(is supplied a non-numeric ar)2.945 F(gu-)-.18 E .381
+(ment, or is used outside a function and not during e)144 292.8 R -.15
+(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E
+F1(sour)2.881 E(ce)-.18 E F0 5.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E
+.749(mand associated with the)144 304.8 R F1(RETURN)3.249 E F0 .749
+(trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15
+G .75(cution resumes after the function).15 F(or script.)144 316.8 Q F1
+(set)108 333.6 Q F0([)2.5 E F1(\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1
+<ad6f>-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F1<adad>-2.5 E F0 2.5
+(][)C F1<ad>-2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1
+(set)108 345.6 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)
+-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F1<adad>-2.5 E F0 2.5(][)C F1
+<ad>-2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144
+357.6 S .574(thout options, display the name and v).4 F .574
+(alue of each shell v)-.25 F .573
+(ariable in a format that can be reused)-.25 F .113
+(as input for setting or resetting the currently-set v)144 369.6 R 2.613
+(ariables. Read-only)-.25 F -.25(va)2.613 G .113
+(riables cannot be reset.).25 F(In)5.113 E F2 1.032(posix mode)144 381.6
+R F0 3.532(,o)C 1.032(nly shell v)-3.532 F 1.032(ariables are listed.)
+-.25 F 1.032(The output is sorted according to the current locale.)6.032
+F .58(When options are speci\214ed, the)144 393.6 R 3.081(ys)-.15 G .581
+(et or unset shell attrib)-3.081 F 3.081(utes. An)-.2 F 3.081(ya)-.15 G
+-.18(rg)-3.081 G .581(uments remaining after op-).18 F .161
+(tion processing are treated as v)144 405.6 R .161
+(alues for the positional parameters and are assigned, in order)-.25 F
+2.66(,t)-.4 G(o)-2.66 E F1($1)2.66 E F0(,)A F1($2)144 417.6 Q F0(,)A F1
+2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 -.15
+(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad61>144 429.6 Q F0
+1.377(Each v)184 429.6 R 1.377
(ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve)
-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F
-1.378(ute and)-.2 F(mark)184 232.8 Q(ed for e)-.1 E(xport to the en)-.15
-E(vironment of subsequent commands.)-.4 E F1<ad62>144 244.8 Q F0 .132
-(Report the status of terminated background jobs immediately)184 244.8 R
+1.378(ute and)-.2 F(mark)184 441.6 Q(ed for e)-.1 E(xport to the en)-.15
+E(vironment of subsequent commands.)-.4 E F1<ad62>144 453.6 Q F0 .132
+(Report the status of terminated background jobs immediately)184 453.6 R
2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E
-(primary prompt.)184 256.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)
--.25 H(nly when job control is enabled.).15 E F1<ad65>144 268.8 Q F0
-.087(Exit immediately if a)184 268.8 R F2(pipeline)2.587 E F0 .087
+(primary prompt.)184 465.6 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)
+-.25 H(nly when job control is enabled.).15 E F1<ad65>144 477.6 Q F0
+.087(Exit immediately if a)184 477.6 R F2(pipeline)2.587 E F0 .087
(\(which may consist of a single)2.587 F F2 .088(simple command)2.588 F
-F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 280.8 Q
-F2 1.521(compound command)4.021 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF
-1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e)
-.15 F 1.521(xits with a non-zero status.)-.15 F .079
-(The shell does not e)184 292.8 R .079(xit if the command that f)-.15 F
-.08(ails is part of the command list immediately)-.1 F(follo)184 304.8 Q
-1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0
--.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654
-(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv)
-4.154 E(ed)-.15 E -.1(wo)184 316.8 S .581(rds, part of an).1 F 3.081(yc)
--.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1
-(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582
-(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 328.8 R
-F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c)
--3.418 H .918(ommand in a pipeline b).15 F .917
-(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E
--.25(va)184 340.8 S .66(lue is being in).25 F -.15(ve)-.4 G .66
-(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661
-(ompound command other than a subshell returns a)-3.161 F 1.113
-(non-zero status because a command f)184 352.8 R 1.112(ailed while)-.1 F
-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 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 388.8 R(ONMENT)
--.27 E F0(abo)2.893 E -.15(ve)-.15 G .643
-(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15
-(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 400.8
-Q .999(If a compound command or shell function e)184 418.8 R -.15(xe)
--.15 G .999(cutes in a conte).15 F .998(xt where)-.15 F 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
+F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 489.6 Q
+F2 .86(compound command)3.36 F F0(\(see)3.36 E/F3 9/Times-Bold@0 SF .86
+(SHELL GRAMMAR)3.36 F F0(in)3.11 E F2(bash\(1\))3.36 E F0 .86(\), e)B
+.86(xits with a non-zero sta-)-.15 F 2.852(tus. The)184 501.6 R .352
+(shell does not e)2.852 F .352(xit if the command that f)-.15 F .353
+(ails is part of the command list imme-)-.1 F 1.108(diately follo)184
+513.6 R 1.108(wing a)-.25 F F1(while)3.608 E F0(or)3.608 E F1(until)
+3.608 E F0 -.1(ke)3.608 G(yw)-.05 E 1.107(ord, part of the test follo)
+-.1 F 1.107(wing the)-.25 F F1(if)3.607 E F0(or)3.607 E F1(elif)3.607 E
+F0(re-)3.607 E(serv)184 525.6 Q .279(ed w)-.15 F .279(ords, part of an)
+-.1 F 2.779(yc)-.15 G .279(ommand e)-2.779 F -.15(xe)-.15 G .279
+(cuted in a).15 F F1(&&)2.779 E F0(or)2.779 E F1(||)2.78 E F0 .28
+(list e)2.78 F .28(xcept the command fol-)-.15 F(lo)184 537.6 Q .703
+(wing the \214nal)-.25 F F1(&&)3.203 E F0(or)3.203 E F1(||)3.203 E F0
+3.203(,a)C 1.003 -.15(ny c)-3.203 H .703(ommand in a pipeline b).15 F
+.703(ut the last, or if the command')-.2 F(s)-.55 E .476(return v)184
+549.6 R .476(alue is being in)-.25 F -.15(ve)-.4 G .476(rted with).15 F
+F1(!)2.976 E F0 5.476(.I)C 2.976(fac)-5.476 G .476
+(ompound command other than a subshell re-)-2.976 F .418
+(turns a non-zero status because a command f)184 561.6 R .418
+(ailed while)-.1 F F1<ad65>2.918 E F0 -.1(wa)2.918 G 2.918(sb).1 G .417
+(eing ignored, the shell)-2.918 F .472(does not e)184 573.6 R 2.972
+(xit. A)-.15 F .472(trap on)2.972 F F1(ERR)2.972 E F0 2.972(,i)C 2.972
+(fs)-2.972 G .472(et, is e)-2.972 F -.15(xe)-.15 G .473
+(cuted before the shell e).15 F 2.973(xits. This)-.15 F .473(option ap-)
+2.973 F 2.114(plies to the shell en)184 585.6 R 2.113
+(vironment and each subshell en)-.4 F 2.113(vironment separately \(see)
+-.4 F F3(COM-)4.613 E .675(MAND EXECUTION ENVIR)184 597.6 R(ONMENT)-.27
+E F0(in)2.925 E F2(bash\(1\))3.175 E F0 .675
+(\), and may cause subshells to e)B .676(xit be-)-.15 F(fore e)184 609.6
+Q -.15(xe)-.15 G(cuting all the commands in the subshell.).15 E .999
+(If a compound command or shell function e)184 627.6 R -.15(xe)-.15 G
+.999(cutes in a conte).15 F .998(xt where)-.15 F F1<ad65>3.498 E F0 .998
+(is being ig-)3.498 F .089(nored, none of the commands e)184 639.6 R
+-.15(xe)-.15 G .089(cuted within the compound command or function body)
+.15 F .503(will be af)184 651.6 R .503(fected by the)-.25 F F1<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 663.6 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
+-.15 E(where)184 675.6 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
+(or the command containing the function call completes.)184 687.6 Q F1
+<ad66>144 699.6 Q F0(Disable pathname e)184 699.6 Q(xpansion.)-.15 E F1
+<ad68>144 711.6 Q F0 .988(Remember the location of commands as the)184
+711.6 R 3.488(ya)-.15 G .988(re look)-3.488 F .988(ed up for e)-.1 F
-.15(xe)-.15 G 3.488(cution. This).15 F .988(is en-)3.488 F
-(abled by def)184 514.8 Q(ault.)-.1 E 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 .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 706.8 R -.15(ve)-.25 G 3.45(,u).15 G
-.95(nless the shell is started with the)-3.45 F F1(\255\255noediting)
-3.45 E F0 2.5(option. This)224 718.8 R(also af)2.5 E
-(fects the editing interf)-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G
-(ad \255e).18 E F0(.)A(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(15)
-198.725 E 0 Cg EP
+(abled by def)184 723.6 Q(ault.)-.1 E(GNU Bash 5.2)72 768 Q(2021 No)
+136.385 E -.15(ve)-.15 G(mber 22).15 E(15)185.545 E 0 Cg EP
%%Page: 16 16
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(err)184 84 Q(exit)
--.18 E F0(Same as)224 84 Q 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 180 Q
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad6b>144 84 Q F0 .514
+(All ar)184 84 R .514
+(guments in the form of assignment statements are placed in the en)-.18
+F .513(vironment for a)-.4 F
+(command, not just those that precede the command name.)184 96 Q F1
+<ad6d>144 108 Q F0 .148(Monitor mode.)184 108 R .148
+(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F
+.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .235
+(on systems that support it \(see)184 120 R/F2 9/Times-Bold@0 SF .235
+(JOB CONTR)2.735 F(OL)-.27 E F0(in)2.485 E/F3 10/Times-Italic@0 SF
+(bash\(1\))2.735 E F0 2.735(\). All)B .234(processes run in a sepa-)
+2.735 F .252(rate process group.)184 132 R .252
+(When a background job completes, the shell prints a line containing)
+5.252 F(its e)184 144 Q(xit status.)-.15 E F1<ad6e>144 156 Q F0 .653
+(Read commands b)184 156 R .653(ut do not e)-.2 F -.15(xe)-.15 G .653
+(cute them.).15 F .652(This may be used to check a shell script for)
+5.653 F(syntax errors.)184 168 Q(This is ignored by interacti)5 E .3
+-.15(ve s)-.25 H(hells.).15 E F1<ad6f>144 180 Q F3(option\255name)2.5 E
+F0(The)184 192 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5
+E(wing:)-.25 E F1(allexport)184 204 Q F0(Same as)224 216 Q F1<ad61>2.5 E
+F0(.)A F1(braceexpand)184 228 Q F0(Same as)224 240 Q F1<ad42>2.5 E F0(.)
+A F1(emacs)184 252 Q F0 .089
+(Use an emacs-style command line editing interf)224 252 R 2.589
+(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95
+(when the shell is interacti)224 264 R -.15(ve)-.25 G 3.45(,u).15 G .95
+(nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E
+F0 2.5(option. This)224 276 R(also af)2.5 E(fects the editing interf)
+-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err)
+184 288 Q(exit)-.18 E F0(Same as)224 288 Q F1<ad65>2.5 E F0(.)A F1
+(errtrace)184 300 Q F0(Same as)224 300 Q F1<ad45>2.5 E F0(.)A F1
+(functrace)184 312 Q F0(Same as)224 324 Q F1<ad54>2.5 E F0(.)A F1
+(hashall)184 336 Q F0(Same as)224 336 Q F1<ad68>2.5 E F0(.)A F1
+(histexpand)184 348 Q F0(Same as)224 360 Q F1<ad48>2.5 E F0(.)A F1
+(history)184 372 Q F0 1.001(Enable command history)224 372 R 3.502(,a)
+-.65 G 3.502(sd)-3.502 G 1.002(escribed in)-3.502 F F3(bash\(1\))3.502 E
+F0(under)3.502 E F2(HIST)3.502 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0
+SF(.)A F0 1.002(This op-)5.502 F(tion is on by def)224 384 Q
(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184
-192 Q(eeof)-.18 E F0 1.657(The ef)224 204 R 1.657
-(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10)
+396 Q(eeof)-.18 E F0 1.657(The ef)224 408 R 1.657
+(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10)
4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224
-216 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
-.15 E F1 -.1(ke)184 228 S(yw).1 E(ord)-.1 E F0(Same as)224 240 Q F1
-<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
+420 Q F1(Shell V)2.5 E(ariables)-.92 E F0(in)2.5 E F3(bash\(1\))2.5 E F0
+(\).)A F1 -.1(ke)184 432 S(yw).1 E(ord)-.1 E F0(Same as)224 444 Q F1
+<ad6b>2.5 E F0(.)A F1(monitor)184 456 Q F0(Same as)224 456 Q F1<ad6d>2.5
+E F0(.)A F1(noclob)184 468 Q(ber)-.1 E F0(Same as)224 480 Q F1<ad43>2.5
+E F0(.)A F1(noexec)184 492 Q F0(Same as)224 492 Q F1<ad6e>2.5 E F0(.)A
+F1(noglob)184 504 Q F0(Same as)224 504 Q F1<ad66>2.5 E F0(.)A F1(nolog)
+184 516 Q F0(Currently ignored.)224 516 Q F1(notify)184 528 Q F0
+(Same as)224 528 Q F1<ad62>2.5 E F0(.)A F1(nounset)184 540 Q F0(Same as)
+224 540 Q F1<ad75>2.5 E F0(.)A F1(onecmd)184 552 Q F0(Same as)224 552 Q
+F1<ad74>2.5 E F0(.)A F1(ph)184 564 Q(ysical)-.15 E F0(Same as)224 564 Q
+F1<ad50>2.5 E F0(.)A F1(pipefail)184 576 Q F0 1.029
+(If set, the return v)224 576 R 1.029(alue of a pipeline is the v)-.25 F
+1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 588
R 1.136
(xit with a non-zero status, or zero if all commands in the pipeline)
--.15 F -.15(ex)224 396 S(it successfully).15 E 5(.T)-.65 G
-(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 408 Q F0
-2.09(Change the beha)224 408 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
+-.15 F -.15(ex)224 600 S(it successfully).15 E 5(.T)-.65 G
+(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 612 Q F0
+2.09(Change the beha)224 612 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091
-(fers from the)-.25 F 1.212(POSIX standard to match the standard \()224
-420 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2
-1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E .954
-(for a reference to a document that details ho)224 432 R 3.455(wp)-.25 G
-.955(osix mode af)-3.455 F .955(fects bash')-.25 F 3.455(sb)-.55 G(e-)
--3.455 E(ha)224 444 Q(vior)-.2 E(.)-.55 E F1(pri)184 456 Q(vileged)-.1 E
-F0(Same as)224 468 Q 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)
+(fers from the)-.25 F 2.704(POSIX standard to match the standard \()224
+624 R F3 2.704(posix mode)B F0 5.204(\). See)B F2 2.704(SEE ALSO)5.204 F
+F0(in)4.953 E F3(bash\(1\))224 636 Q F0 1.844
+(for a reference to a document that details ho)4.344 F 4.344(wp)-.25 G
+1.845(osix mode af)-4.344 F(fects)-.25 E(bash')224 648 Q 2.5(sb)-.55 G
+(eha)-2.5 E(vior)-.2 E(.)-.55 E F1(pri)184 660 Q(vileged)-.1 E F0
+(Same as)224 672 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 684 S(rbose).1 E
+F0(Same as)224 684 Q F1<ad76>2.5 E F0(.)A F1(vi)184 696 Q F0 .209
+(Use a vi-style command line editing interf)224 696 R 2.709(ace. This)
-.1 F .209(also af)2.709 F .209(fects the editing in-)-.25 F(terf)224
-504 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1
-(xtrace)184 516 Q F0(Same as)224 516 Q 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)
+708 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A
+(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E
+(16)185.545 E 0 Cg EP
+%%Page: 17 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(xtrace)184 84 Q F0
+(Same as)224 84 Q F1<ad78>2.5 E F0(.)A(If)184 102 Q F1<ad6f>3.052 E F0
+.552(is supplied with no)3.052 F/F2 10/Times-Italic@0 SF(option\255name)
3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553
(alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184
-546 Q F0 1.072(is supplied with no)3.572 F F5(option\255name)3.572 E F0
+114 Q F0 1.072(is supplied with no)3.572 F F2(option\255name)3.572 E F0
3.572(,a)C 1.071(series of)-.001 F F1(set)3.571 E F0 1.071
(commands to recreate the current)3.571 F
-(option settings is displayed on the standard output.)184 558 Q F1<ad70>
-144 570 Q F0 -.45(Tu)184 570 S 1.071(rn on).45 F F5(privile)4.821 E -.1
+(option settings is displayed on the standard output.)184 126 Q F1<ad70>
+144 138 Q F0 -.45(Tu)184 138 S 1.071(rn on).45 F F2(privile)4.821 E -.1
(ge)-.4 G(d).1 E F0 3.572(mode. In)4.341 F 1.072(this mode, the)3.572 F
-F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.072
-(\214les are not pro-)3.322 F 1.501
-(cessed, shell functions are not inherited from the en)184 582 R 1.5
-(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 594 S
-(SHOPTS).27 E F3(,)A F2(CDP)2.774 E -.855(AT)-.666 G(H).855 E F3(,)A F0
-(and)2.774 E F2(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G .524
-(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F
-(vironment,)-.4 E .38(are ignored.)184 606 R .38
+/F3 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)
+-.27 E F0 1.072(\214les are not pro-)3.322 F 1.501
+(cessed, shell functions are not inherited from the en)184 150 R 1.5
+(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3
+-.27(BA)184 162 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H)
+.855 E F4(,)A F0(and)2.774 E F3(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G
+.524(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F
+(vironment,)-.4 E .38(are ignored.)184 174 R .38
(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u)
-.25 H .379(ser \(group\) id not equal to the real).15 F .461
-(user \(group\) id, and the)184 618 R F1<ad70>2.961 E F0 .461
+(user \(group\) id, and the)184 186 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
+(en and the ef)-.1 F(fec-)-.25 E(ti)184 198 Q .695 -.15(ve u)-.25 H .395
(ser id is set to the real user id.).15 F .395(If the)5.395 F F1<ad70>
2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25
-E -.15(ve)-.25 G .386(user id is not reset.)184 642 R -.45(Tu)5.386 G
+E -.15(ve)-.25 G .386(user id is not reset.)184 210 R -.45(Tu)5.386 G
.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886
F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F
-(set to the real user and group ids.)184 654 Q 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 .182(error when performing parameter e)184 690 R 2.682
-(xpansion. If)-.15 F -.15(ex)2.682 G .183
-(pansion is attempted on an unset v).15 F(ari-)-.25 E .746
-(able or parameter)184 702 R 3.246(,t)-.4 G .746
-(he shell prints an error message, and, if not interacti)-3.246 F -.15
-(ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184
-714 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(16)198.725 E 0 Cg EP
-%%Page: 17 17
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 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
+(set to the real user and group ids.)184 222 Q F1<ad72>144 234 Q F0
+(Enable restricted shell mode.)184 234 Q
+(This option cannot be unset once it has been set.)5 E F1<ad74>144 246 Q
+F0(Exit after reading and e)184 246 Q -.15(xe)-.15 G
+(cuting one command.).15 E F1<ad75>144 258 Q F0 -.35(Tr)184 258 S .774
+(eat unset v).35 F .773(ariables and parameters other than the special \
+parameters "@" and "*", or)-.25 F .459(array v)184 270 R .459(ariables \
+subscripted with "@" or "*", as an error when performing parameter e)
+-.25 F(x-)-.15 E 2.891(pansion. If)184 282 R -.15(ex)2.891 G .391
+(pansion is attempted on an unset v).15 F .391(ariable or parameter)-.25
+F 2.89(,t)-.4 G .39(he shell prints an)-2.89 F
+(error message, and, if not interacti)184 294 Q -.15(ve)-.25 G 2.5(,e)
+.15 G(xits with a non-zero status.)-2.65 E F1<ad76>144 306 Q F0
+(Print shell input lines as the)184 306 Q 2.5(ya)-.15 G(re read.)-2.5 E
+F1<ad78>144 318 Q F0 .315(After e)184 318 R .315(xpanding each)-.15 F F2
+.315(simple command)2.815 F F0(,)A F1 -.25(fo)2.815 G(r).25 E F0
+(command,)2.815 E F1(case)2.815 E F0(command,)2.815 E F1(select)2.815 E
+F0(command,)2.815 E 1.236(or arithmetic)184 330 R F1 -.25(fo)3.736 G(r)
+.25 E F0 1.236(command, display the e)3.736 F 1.236(xpanded v)-.15 F
+1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0(follo)3.486 E 1.236
+(wed by the com-)-.25 F(mand and its e)184 342 Q(xpanded ar)-.15 E
+(guments or associated w)-.18 E(ord list.)-.1 E F1<ad42>144 354 Q F0
+1.053(The shell performs brace e)184 354 R 1.053(xpansion \(see)-.15 F
+F1 1.053(Brace Expansion)3.553 F F0(in)3.553 E F2(bash\(1\))3.553 E F0
+3.553(\). This)B 1.053(is on by)3.553 F(def)184 366 Q(ault.)-.1 E F1
+<ad43>144 378 Q F0 .214(If set,)184 378 R F1(bash)2.714 E F0 .214
+(does not o)2.714 F -.15(ve)-.15 G .214(rwrite an e).15 F .214
+(xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0
+2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213(redirection opera-)2.713 F
+3.053(tors. This)184 390 R .553(may be o)3.053 F -.15(ve)-.15 G .553
(rridden when creating output \214les by using the redirection opera-)
-.15 F(tor)184 180 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
-<ad45>144 192 Q F0 .104(If set, an)184 192 R 2.604(yt)-.15 G .104
+.15 F(tor)184 402 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
+<ad45>144 414 Q F0 .104(If set, an)184 414 R 2.604(yt)-.15 G .104
(rap on)-2.604 F F1(ERR)2.604 E F0 .103
(is inherited by shell functions, command substitutions, and com-)2.604
-F .838(mands e)184 204 R -.15(xe)-.15 G .838(cuted in a subshell en).15
+F .838(mands e)184 426 R -.15(xe)-.15 G .838(cuted in a subshell en).15
F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839
-(trap is normally not inherited in)3.339 F(such cases.)184 216 Q F1
-<ad48>144 228 Q F0(Enable)184 228 Q F1(!)3.032 E F0 .532
+(trap is normally not inherited in)3.339 F(such cases.)184 438 Q F1
+<ad48>144 450 Q F0(Enable)184 450 Q F1(!)3.032 E F0 .532
(style history substitution.)5.532 F .531(This option is on by def)5.532
-F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 240 Q -.15
-(ve)-.25 G(.).15 E F1<ad50>144 252 Q F0 .959
-(If set, the shell does not resolv)184 252 R 3.459(es)-.15 G .959
+F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 462 Q -.15
+(ve)-.25 G(.).15 E F1<ad50>144 474 Q F0 .959
+(If set, the shell does not resolv)184 474 R 3.459(es)-.15 G .959
(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96
(cuting commands such as).15 F F1(cd)3.46 E F0 1.453
-(that change the current w)184 264 R 1.453(orking directory)-.1 F 6.453
+(that change the current w)184 486 R 1.453(orking directory)-.1 F 6.453
(.I)-.65 G 3.952(tu)-6.453 G 1.452(ses the ph)-3.952 F 1.452
-(ysical directory structure in-)-.05 F 3.334(stead. By)184 276 R(def)
+(ysical directory structure in-)-.05 F 3.334(stead. By)184 498 R(def)
3.334 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834
(ws the logical chain of directories when performing com-)-.25 F
-(mands which change the current directory)184 288 Q(.)-.65 E 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
+(mands which change the current directory)184 510 Q(.)-.65 E F1<ad54>144
+522 Q F0 .89(If set, an)184 522 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1
(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89
(are inherited by shell functions, command)3.39 F 1.932
-(substitutions, and commands e)184 312 R -.15(xe)-.15 G 1.932
+(substitutions, and commands e)184 534 R -.15(xe)-.15 G 1.932
(cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E
-(UG)-.1 E F0(and)4.432 E F1(RETURN)184 324 Q F0
-(traps are normally not inherited in such cases.)2.5 E F1<adad>144 336 Q
-F0 .401(If no ar)184 336 R .401(guments follo)-.18 F 2.901(wt)-.25 G
+(UG)-.1 E F0(and)4.432 E F1(RETURN)184 546 Q F0
+(traps are normally not inherited in such cases.)2.5 E F1<adad>144 558 Q
+F0 .401(If no ar)184 558 R .401(guments follo)-.18 F 2.901(wt)-.25 G
.401(his option, then the positional parameters are unset.)-2.901 F
-(Otherwise,)5.4 E(the positional parameters are set to the)184 348 Q F2
+(Otherwise,)5.4 E(the positional parameters are set to the)184 570 Q F2
(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G
(ome of them be)-2.5 E(gin with a)-.15 E 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
+582 Q F0 .796(Signal the end of options, cause all remaining)184 582 R
F2(ar)3.297 E(g)-.37 E F0 3.297(st)C 3.297(ob)-3.297 G 3.297(ea)-3.297 G
-.797(ssigned to the positional pa-)-3.297 F 3.022(rameters. The)184 372
+.797(ssigned to the positional pa-)-3.297 F 3.022(rameters. The)184 594
R 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
+(rameters remain unchanged.)184 606 Q .425(The options are of)144 622.8
R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425
(ault unless otherwise noted.)-.1 F .425
(Using + rather than \255 causes these options)5.425 F .178
-(to be turned of)144 412.8 R 2.678(f. The)-.25 F .178
+(to be turned of)144 634.8 R 2.678(f. The)-.25 F .178
(options can also be speci\214ed as ar)2.678 F .178(guments to an in)
-.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066
-(current set of options may be found in)144 424.8 R F1<24ad>2.566 E F0
+(current set of options may be found in)144 646.8 R F1<24ad>2.566 E F0
5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066
(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F
-(is encountered.)144 436.8 Q F1(shift)108 453.6 Q F0([)2.5 E F2(n)A F0
-(])A .429(The positional parameters from)144 465.6 R F2(n)2.929 E F0
+(is encountered.)144 658.8 Q F1(shift)108 675.6 Q F0([)2.5 E F2(n)A F0
+(])A .429(The positional parameters from)144 687.6 R F2(n)2.929 E F0
.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G
-.428(rameters represented by the num-).15 F(bers)144 477.6 Q F1($#)2.582
+.428(rameters represented by the num-).15 F(bers)144 699.6 Q F1($#)2.582
E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E 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
+(is 0, no parameters are changed.)144 711.6 R(If)5.06 E F2(n)2.92 E F0
.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F
(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56
-(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 501.6 R
+(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 723.6 R
.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0
-.144(is greater than)2.884 F F1($#)2.644 E F0
-(or less than zero; otherwise 0.)144 513.6 Q F1(shopt)108 530.4 Q F0([)
-2.5 E F1(\255pqsu)A F0 2.5(][)C F1<ad6f>-2.5 E F0 2.5(][)C F2(optname)
--2.5 E F0(...])2.5 E -.8(To)144 542.4 S .64(ggle the v).8 F .639
+.144(is greater than)2.884 F F1($#)2.644 E F0(GNU Bash 5.2)72 768 Q
+(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(17)185.545 E 0 Cg EP
+%%Page: 18 18
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E(or less than zero; otherwise 0.)144 84 Q/F1
+10/Times-Bold@0 SF(shopt)108 100.8 Q F0([)2.5 E F1(\255pqsu)A F0 2.5(][)
+C F1<ad6f>-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(optname)-2.5 E F0
+(...])2.5 E -.8(To)144 112.8 S .64(ggle the v).8 F .639
(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E
5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374
-(listed belo)144 554.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H
+(listed belo)144 124.8 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H
2.874(ft).4 G(he)-2.874 E 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 .375(option to the)2.875 F F1(set)2.875 E F0 -.2
-(bu)2.875 G .375(iltin com-).2 F 2.566(mand. W)144 566.4 R .066
+(bu)2.875 G .375(iltin com-).2 F 2.566(mand. W)144 136.8 R .066
(ith no options, or with the)-.4 F 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
+F .074(dication of whether or not each is set; if)144 148.8 R F2
(optnames)2.574 E F0 .074
(are supplied, the output is restricted to those op-)2.574 F 3.105
-(tions. The)144 590.4 R F1<ad70>3.105 E F0 .605(option causes output to\
+(tions. The)144 160.8 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(options ha)144 172.8 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad73>144 184.8 Q F0(Enable \(set\) each)180
+184.8 Q F2(optname)2.5 E F0(.)A F1<ad75>144 196.8 Q F0
+(Disable \(unset\) each)180 196.8 Q F2(optname)2.5 E F0(.)A F1<ad71>144
+208.8 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\
+tus indicates whether the)180 208.8 R F2(optname)2.504 E F0(is)2.504 E
+.256(set or unset.)180 220.8 R .256(If multiple)5.256 F F2(optname)2.756
E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G
(ith)-2.756 E 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
+(he return status is zero if)-2.755 F(all)180 232.8 Q F2(optnames)2.5 E
+F0(are enabled; non-zero otherwise.)2.5 E F1<ad6f>144 244.8 Q F0
+(Restricts the v)180 244.8 Q(alues of)-.25 E F2(optname)2.5 E F0
(to be those de\214ned for the)2.5 E 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 .624(If either)144 691.2 R F1
+E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 261.6 R F1
<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 .984
-(set or unset, respecti)144 703.2 R -.15(ve)-.25 G(ly).15 E 5.984(.U)
+(set or unset, respecti)144 273.6 R -.15(ve)-.25 G(ly).15 E 5.984(.U)
-.65 G .984(nless otherwise noted, the)-5.984 F F1(shopt)3.484 E F0 .983
-(options are disabled \(unset\) by de-)3.483 F -.1(fa)144 715.2 S(ult.)
-.1 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(17)198.725 E 0 Cg EP
-%%Page: 18 18
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E 1.544
-(The return status when listing options is zero if all)144 84 R/F1 10
-/Times-Italic@0 SF(optnames)4.044 E F0 1.545
-(are enabled, non-zero otherwise.)4.045 F .696
+(options are disabled \(unset\) by de-)3.483 F -.1(fa)144 285.6 S(ult.)
+.1 E 1.544(The return status when listing options is zero if all)144
+302.4 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.)
+4.045 F .696
(When setting or unsetting options, the return status is zero unless an)
-144 96 R F1(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell)
--.25 F(option.)144 108 Q(The list of)144 124.8 Q/F2 10/Times-Bold@0 SF
-(shopt)2.5 E F0(options is:)2.5 E F2(assoc_expand_once)144 142.8 Q F0
-1.944(If set, the shell suppresses multiple e)184 154.8 R -.25(va)-.25 G
+144 314.4 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695
+(alid shell)-.25 F(option.)144 326.4 Q(The list of)144 343.2 Q F1(shopt)
+2.5 E F0(options is:)2.5 E F1(assoc_expand_once)144 361.2 Q F0 1.944
+(If set, the shell suppresses multiple e)184 373.2 R -.25(va)-.25 G
1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945
-(rray subscripts during).15 F .885(arithmetic e)184 166.8 R .885
+(rray subscripts during).15 F .885(arithmetic e)184 385.2 R .885
(xpression e)-.15 F -.25(va)-.25 G .885(luation, while e).25 F -.15(xe)
-.15 G .885(cuting b).15 F .885(uiltins that can perform v)-.2 F .885
-(ariable as-)-.25 F(signments, and while e)184 178.8 Q -.15(xe)-.15 G
-(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F2
-(autocd)144 190.8 Q F0 .199
-(If set, a command name that is the name of a directory is e)184 190.8 R
+(ariable as-)-.25 F(signments, and while e)184 397.2 Q -.15(xe)-.15 G
+(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1
+(autocd)144 409.2 Q F0 .199
+(If set, a command name that is the name of a directory is e)184 409.2 R
-.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E
-(ment to the)184 202.8 Q F2(cd)2.5 E F0 2.5(command. This)2.5 F
+(ment to the)184 421.2 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
(option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E
-F2(cdable_v)144 214.8 Q(ars)-.1 E F0 .156(If set, an ar)184 226.8 R .156
-(gument to the)-.18 F F2(cd)2.656 E F0 -.2(bu)2.656 G .155
+F1(cdable_v)144 433.2 Q(ars)-.1 E F0 .156(If set, an ar)184 445.2 R .156
+(gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155
(iltin command that is not a directory is assumed to be the).2 F
-(name of a v)184 238.8 Q(ariable whose v)-.25 E
-(alue is the directory to change to.)-.25 E F2(cdspell)144 250.8 Q F0
+(name of a v)184 457.2 Q(ariable whose v)-.25 E
+(alue is the directory to change to.)-.25 E F1(cdspell)144 469.2 Q F0
1.055
(If set, minor errors in the spelling of a directory component in a)184
-250.8 R F2(cd)3.555 E F0 1.055(command will be)3.555 F 3.988
-(corrected. The)184 262.8 R 1.488(errors check)3.988 F 1.487
+469.2 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988
+(corrected. The)184 481.2 R 1.488(errors check)3.988 F 1.487
(ed for are transposed characters, a missing character)-.1 F 3.987(,a)
--.4 G(nd)-3.987 E .77(one character too man)184 274.8 R 4.57 -.65(y. I)
+-.4 G(nd)-3.987 E .77(one character too man)184 493.2 R 4.57 -.65(y. I)
-.15 H 3.27(fac).65 G .77
(orrection is found, the corrected \214lename is printed, and)-3.27 F
-(the command proceeds.)184 286.8 Q
+(the command proceeds.)184 505.2 Q
(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.)
-.15 E F2(checkhash)144 298.8 Q F0 .737(If set,)184 310.8 R F2(bash)3.237
+.15 E F1(checkhash)144 517.2 Q F0 .737(If set,)184 529.2 R F1(bash)3.237
E F0 .736(checks that a command found in the hash table e)3.237 F .736
(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184
-322.8 Q(If a hashed command no longer e)5 E
-(xists, a normal path search is performed.)-.15 E F2(checkjobs)144 334.8
-Q F0 .448(If set,)184 346.8 R F2(bash)2.948 E F0 .448
+541.2 Q(If a hashed command no longer e)5 E
+(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 553.2
+Q F0 .448(If set,)184 565.2 R F1(bash)2.948 E F0 .448
(lists the status of an)2.948 F 2.949(ys)-.15 G .449
(topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15
-F -.15(ve)-.25 G 2.662(shell. If)184 358.8 R(an)2.662 E 2.661(yj)-.15 G
+F -.15(ve)-.25 G 2.662(shell. If)184 577.2 R(an)2.662 E 2.661(yj)-.15 G
.161(obs are running, this causes the e)-2.661 F .161
-(xit to be deferred until a second e)-.15 F .161(xit is at-)-.15 F 1.472
-(tempted without an interv)184 370.8 R 1.473(ening command \(see)-.15 F
-/F3 9/Times-Bold@0 SF 1.473(JOB CONTR)3.973 F(OL)-.27 E F0(abo)3.723 E
--.15(ve)-.15 G 3.973(\). The).15 F 1.473(shell al-)3.973 F -.1(wa)184
-382.8 S(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G
-(obs are stopped.)-2.5 E F2(checkwinsize)144 394.8 Q F0 1.09(If set,)184
-406.8 R F2(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G
+(xit to be deferred until a second e)-.15 F .161(xit is at-)-.15 F 1.091
+(tempted without an interv)184 589.2 R 1.091(ening command \(see)-.15 F
+/F3 9/Times-Bold@0 SF 1.091(JOB CONTR)3.591 F(OL)-.27 E F0(in)3.341 E F2
+(bash\(1\))3.591 E F0 3.591(\). The)B(shell)3.591 E(al)184 601.2 Q -.1
+(wa)-.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G
+(obs are stopped.)-2.5 E F1(checkwinsize)144 613.2 Q F0 1.09(If set,)184
+625.2 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G
1.09(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09
-(uiltin\) command and, if)-.2 F(necessary)184 418.8 Q 3.35(,u)-.65 G .85
+(uiltin\) command and, if)-.2 F(necessary)184 637.2 Q 3.35(,u)-.65 G .85
(pdates the v)-3.35 F .85(alues of)-.25 F F3(LINES)3.35 E F0(and)3.1 E
F3(COLUMNS)3.35 E/F4 9/Times-Roman@0 SF(.)A F0 .85
-(This option is enabled by de-)5.35 F -.1(fa)184 430.8 S(ult.).1 E F2
-(cmdhist)144 442.8 Q F0 .173(If set,)184 442.8 R F2(bash)2.673 E F0 .173
+(This option is enabled by de-)5.35 F -.1(fa)184 649.2 S(ult.).1 E F1
+(cmdhist)144 661.2 Q F0 .173(If set,)184 661.2 R F1(bash)2.673 E F0 .173
(attempts to sa)2.673 F .473 -.15(ve a)-.2 H .172
(ll lines of a multiple-line command in the same history en-).15 F(try)
-184 454.8 Q 5.596(.T)-.65 G .597(his allo)-5.596 F .597
+184 673.2 Q 5.596(.T)-.65 G .597(his allo)-5.596 F .597
(ws easy re-editing of multi-line commands.)-.25 F .597
-(This option is enabled by de-)5.597 F -.1(fa)184 466.8 S 1.288(ult, b)
-.1 F 1.288(ut only has an ef)-.2 F 1.288
-(fect if command history is enabled, as described abo)-.25 F 1.587 -.15
-(ve u)-.15 H(nder).15 E F3(HIST)184 478.8 Q(OR)-.162 E(Y)-.315 E F4(.)A
-F2(compat31)144 490.8 Q(compat32)144 502.8 Q(compat40)144 514.8 Q
-(compat41)144 526.8 Q(compat42)144 538.8 Q(compat43)144 550.8 Q
-(compat44)144 562.8 Q F0 .889(These control aspects of the shell')184
-574.8 R 3.389(sc)-.55 G .889(ompatibility mode \(see)-3.389 F F3 .889
-(SHELL COMP)3.389 F -.855(AT)-.666 G(IBILITY).855 E(MODE)184 586.8 Q F0
-(belo)2.25 E(w\).)-.25 E F2(complete_fullquote)144 603.6 Q F0 .654
-(If set,)184 615.6 R F2(bash)3.153 E F0 .653(quotes all shell metachara\
-cters in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524
-(forming completion.)184 627.6 R 1.524(If not set,)6.524 F F2(bash)4.024
-E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524
+(This option is enabled by de-)5.597 F -.1(fa)184 685.2 S .052(ult, b).1
+F .052(ut only has an ef)-.2 F .052
+(fect if command history is enabled, as described in)-.25 F F2
+(bash\(1\))2.552 E F0(under)2.552 E F3(HIST)184 697.2 Q(OR)-.162 E(Y)
+-.315 E F4(.)A F0(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G
+(mber 22).15 E(18)185.545 E 0 Cg EP
+%%Page: 19 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(compat31)144 84 Q
+(compat32)144 96 Q(compat40)144 108 Q(compat41)144 120 Q(compat42)144
+132 Q(compat43)144 144 Q(compat44)144 156 Q(compat50)144 168 Q F0 .889
+(These control aspects of the shell')184 180 R 3.389(sc)-.55 G .889
+(ompatibility mode \(see)-3.389 F/F2 9/Times-Bold@0 SF .889(SHELL COMP)
+3.389 F -.855(AT)-.666 G(IBILITY).855 E(MODE)184 192 Q F0(in)2.25 E/F3
+10/Times-Italic@0 SF(bash\(1\))2.5 E F0(\).)A F1(complete_fullquote)144
+208.8 Q F0 .654(If set,)184 220.8 R F1(bash)3.153 E F0 .653(quotes all \
+shell metacharacters in \214lenames and directory names when per)3.153 F
+(-)-.2 E 1.524(forming completion.)184 232.8 R 1.524(If not set,)6.524 F
+F1(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524
(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of c\
haracters that will be quoted in completed \214lenames when these)184
-639.6 R .028(metacharacters appear in shell v)184 651.6 R .028
+244.8 R .028(metacharacters appear in shell v)184 256.8 R .028
(ariable references in w)-.25 F .029(ords to be completed.)-.1 F .029
-(This means)5.029 F 1.073(that dollar signs in v)184 663.6 R 1.073
+(This means)5.029 F 1.073(that dollar signs in v)184 268.8 R 1.073
(ariable names that e)-.25 F 1.073
(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25
-(ev e)184 675.6 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123
+(ev e)184 280.8 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123
(ollar signs appearing in \214lenames will not be quoted, either).15 F
6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59
(only when bash is using backslashes to quote completed \214lenames.)184
-687.6 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 699.6 Q
+292.8 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 304.8 Q
(ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E
-(ersions through 4.2.)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E
-(18)198.725 E 0 Cg EP
-%%Page: 19 19
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(dir)144 84 Q(expand)
--.18 E F0 .486(If set,)184 96 R F1(bash)2.986 E F0 .486
+(ersions through 4.2.)-.15 E F1(dir)144 321.6 Q(expand)-.18 E F0 .486
+(If set,)184 333.6 R F1(bash)2.986 E F0 .486
(replaces directory names with the results of w)2.986 F .486(ord e)-.1 F
.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184
-108 R .179(This changes the contents of the readline editing b)5.18 F
+345.6 R .179(This changes the contents of the readline editing b)5.18 F
(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,)
-184 120 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
-(hat the user typed.)-2.5 E F1(dirspell)144 136.8 Q F0 .858(If set,)184
-136.8 R F1(bash)3.358 E F0 .858
+184 357.6 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
+(hat the user typed.)-2.5 E F1(dirspell)144 374.4 Q F0 .858(If set,)184
+374.4 R F1(bash)3.358 E F0 .858
(attempts spelling correction on directory names during w)3.358 F .859
(ord completion if)-.1 F
-(the directory name initially supplied does not e)184 148.8 Q(xist.)-.15
-E F1(dotglob)144 165.6 Q F0 .165(If set,)184 165.6 R F1(bash)2.665 E F0
+(the directory name initially supplied does not e)184 386.4 Q(xist.)-.15
+E F1(dotglob)144 403.2 Q F0 .165(If set,)184 403.2 R F1(bash)2.665 E F0
.165(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665
('i)-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F
-(xpansion.)-.15 E(The \214lenames)184 177.6 Q F1 -.63(``)2.5 G -.55(.')
+(xpansion.)-.15 E(The \214lenames)184 415.2 Q F1 -.63(``)2.5 G -.55(.')
.63 G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0
(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5
(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0
-(is set.)2.5 E F1(execfail)144 194.4 Q F0 .516(If set, a non-interacti)
-184 194.4 R .816 -.15(ve s)-.25 H .516(hell will not e).15 F .516
+(is set.)2.5 E F1(execfail)144 432 Q F0 .516(If set, a non-interacti)184
+432 R .816 -.15(ve s)-.25 H .516(hell will not e).15 F .516
(xit if it cannot e)-.15 F -.15(xe)-.15 G .517
(cute the \214le speci\214ed as an ar).15 F(-)-.2 E(gument to the)184
-206.4 Q F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5
-E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E
-F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 223.2 Q F0 .717
-(If set, aliases are e)184 235.2 R .717(xpanded as described abo)-.15 F
-1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E
-/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F
-(by def)184 247.2 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
-.15 E F1(extdeb)144 264 Q(ug)-.2 E F0 .17(If set at shell in)184 276 R
--.2(vo)-.4 G .17(cation, or in a shell startup \214le, arrange to e).2 F
+444 Q F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E
+.3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E F0
+-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 460.8 Q F0 .743
+(If set, aliases are e)184 472.8 R .743(xpanded as described in)-.15 F
+F3(bash\(1\))3.243 E F0(under)3.243 E F2(ALIASES)3.243 E/F4 9
+/Times-Roman@0 SF(.)A F0 .742(This option is en-)5.243 F(abled by def)
+184 484.8 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1
+(extdeb)144 501.6 Q(ug)-.2 E F0 .17(If set at shell in)184 513.6 R -.2
+(vo)-.4 G .17(cation, or in a shell startup \214le, arrange to e).2 F
-.15(xe)-.15 G .17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.082
-(before the shell starts, identical to the)184 288 R 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
+(before the shell starts, identical to the)184 525.6 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 537.6 Q
(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184
-316.8 Q F0(The)220 316.8 Q F1<ad46>4.25 E F0 1.75(option to the)4.25 F
+554.4 Q F0(The)220 554.4 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)
+(number corresponding to each function name supplied as an ar)220 566.4
+Q(gument.)-.18 E F1(2.)184 583.2 Q F0 1.667(If the command run by the)
+220 583.2 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)
4.167 F 1.667(alue, the ne)-.25 F(xt)-.15 E
-(command is skipped and not e)220 357.6 Q -.15(xe)-.15 G(cuted.).15 E F1
-(3.)184 374.4 Q F0 .84(If the command run by the)220 374.4 R F1(DEB)3.34
-E(UG)-.1 E F0 .841(trap returns a v)3.341 F .841
-(alue of 2, and the shell is)-.25 F -.15(exe)220 386.4 S .488
+(command is skipped and not e)220 595.2 Q -.15(xe)-.15 G(cuted.).15 E F1
+(3.)184 612 Q F0 .84(If the command run by the)220 612 R F1(DEB)3.34 E
+(UG)-.1 E F0 .841(trap returns a v)3.341 F .841
+(alue of 2, and the shell is)-.25 F -.15(exe)220 624 S .488
(cuting in a subroutine \(a shell function or a shell script e).15 F
-.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1
-(sour)220 398.4 Q(ce)-.18 E F0 -.2(bu)2.5 G
+(sour)220 636 Q(ce)-.18 E F0 -.2(bu)2.5 G
(iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E
-(n)-.15 E F0(.)A F1(4.)184 415.2 Q F2 -.27(BA)220 415.2 S(SH_ARGC).27 E
+(n)-.15 E F0(.)A F1(4.)184 652.8 Q F2 -.27(BA)220 652.8 S(SH_ARGC).27 E
F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904
-(are updated as described in their descriptions)3.154 F(abo)220 427.2 Q
--.15(ve)-.15 G(.).15 E F1(5.)184 444 Q F0 1.637(Function tracing is ena\
-bled: command substitution, shell functions, and sub-)220 444 R
-(shells in)220 456 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1
-(\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0
-(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0
-(traps.)2.5 E F1(6.)184 472.8 Q F0 1.082(Error tracing is enabled: comm\
-and substitution, shell functions, and subshells)220 472.8 R(in)220
-484.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4
-(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)
-2.5 E F1(extglob)144 501.6 Q F0 .4(If set, the e)184 501.6 R .4
-(xtended pattern matching features described abo)-.15 F .7 -.15(ve u)
--.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 513.6 Q
-F0(are enabled.)2.5 E F1(extquote)144 530.4 Q F0 .86(If set,)184 542.4 R
-F1($)3.36 E F0<08>A F4(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0
-(")A F4(string)A F0 3.36("q)C .86(uoting is performed within)-3.36 F F1
-(${)3.36 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)3.36 G .86
-(pansions en-).15 F(closed in double quotes.)184 554.4 Q
-(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 571.2 Q
-F0 .243(If set, patterns which f)184 571.2 R .243
-(ail to match \214lenames during pathname e)-.1 F .243
-(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 583.2 Q(.)
--.55 E F1 -.25(fo)144 600 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
-.936(If set, the suf)184 612 R<8c78>-.25 E .936(es speci\214ed by the)
--.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w)
--.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 624 R .32
-(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32
-(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947
-(pletions. See)184 636 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0
-(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2
-(FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def)
-184 648 Q(ault.)-.1 E F1(globasciiranges)144 664.8 Q F0 2.519
-(If set, range e)184 676.8 R 2.519
-(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518
-(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E
-(Matching)184 688.8 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha)
--3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214
-(nt)-3.214 G .714(he traditional C locale when performing comparisons.)
--3.214 F 1.02(That is, the current locale')184 700.8 R 3.52(sc)-.55 G
-1.02(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F
-F1(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 712.8 R F1
-(A)3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)
--3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957
-(-case ASCII characters will collate)-.2 F(together)184 724.8 Q(.)-.55 E
-(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(19)198.725 E 0 Cg EP
+(are updated as described in their descriptions)3.154 F(in)220 664.8 Q
+F3(bash\(1\))2.5 E F0(\).)A F1(5.)184 681.6 Q F0 1.637(Function tracing\
+ is enabled: command substitution, shell functions, and sub-)220 681.6 R
+(shells in)220 693.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E
+F1(\()2.5 E F3(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(DEB)2.5
+E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0(traps.)2.5 E F1(6.)184 710.4
+Q F0 1.082(Error tracing is enabled: command substitution, shell functi\
+ons, and subshells)220 710.4 R(in)220 722.4 Q -.2(vo)-.4 G -.1(ke).2 G
+2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3(command)2.5 E F1(\))2.5 E F0
+(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E(GNU Bash 5.2)72 768 Q
+(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(19)185.545 E 0 Cg EP
%%Page: 20 20
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(globstar)144 84 Q F0
-.519(If set, the pattern)184 84 R F1(**)3.019 E F0 .519
-(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518
-(xt will match all \214les and zero)-.15 F .431
-(or more directories and subdirectories.)184 96 R .431
-(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0
-2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184
-108 Q F1(gnu_errfmt)144 124.8 Q F0(If set, shell error messages are wri\
-tten in the standard GNU error message format.)184 136.8 Q F1
-(histappend)144 153.6 Q F0 .676
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(extglob)144 84 Q F0
+.273(If set, the e)184 84 R .273
+(xtended pattern matching features described in)-.15 F/F2 10
+/Times-Italic@0 SF(bash\(1\))2.772 E F0(under)2.772 E F1 -.1(Pa)2.772 G
+.272(thname Ex-).1 F(pansion)184 96 Q F0(are enabled.)2.5 E F1(extquote)
+144 112.8 Q F0 .86(If set,)184 124.8 R F1($)3.36 E F0<08>A F2(string)A
+F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0(")A F2(string)A F0 3.36("q)C
+.86(uoting is performed within)-3.36 F F1(${)3.36 E F2(par)A(ameter)-.15
+E F1(})A F0 -.15(ex)3.36 G .86(pansions en-).15 F
+(closed in double quotes.)184 136.8 Q(This option is enabled by def)5 E
+(ault.)-.1 E F1(failglob)144 153.6 Q F0 .243(If set, patterns which f)
+184 153.6 R .243(ail to match \214lenames during pathname e)-.1 F .243
+(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 165.6 Q(.)
+-.55 E F1 -.25(fo)144 182.4 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
+.936(If set, the suf)184 194.4 R<8c78>-.25 E .936(es speci\214ed by the)
+-.15 F/F3 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936
+(ariable cause w)-.25 F .937(ords to be ignored)-.1 F .32
+(when performing w)184 206.4 R .32(ord completion e)-.1 F -.15(ve)-.25 G
+2.82(ni).15 G 2.82(ft)-2.82 G .32(he ignored w)-2.82 F .32
+(ords are the only possible com-)-.1 F 3.293(pletions. See)184 218.4 R
+F3 .793(SHELL V)3.293 F(ARIABLES)-1.215 E F0(in)3.043 E F2(bash\(1\))
+3.293 E F0 .794(for a description of)3.293 F F3(FIGNORE)3.294 E/F4 9
+/Times-Roman@0 SF(.)A F0 .794(This op-)5.294 F(tion is enabled by def)
+184 230.4 Q(ault.)-.1 E F1(globasciiranges)144 247.2 Q F0 2.519
+(If set, range e)184 259.2 R 2.519
+(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518
+(xpressions \(see)-.15 F F3 -.09(Pa)5.018 G(tter).09 E(n)-.135 E
+(Matching)184 271.2 Q F0(in)3.115 E F2(bash\(1\))3.365 E F0 3.365(\)b)C
+(eha)-3.365 E 1.165 -.15(ve a)-.2 H 3.365(si).15 G 3.365(fi)-3.365 G
+3.365(nt)-3.365 G .866(he traditional C locale when performing compar)
+-3.365 F(-)-.2 E 2.668(isons. That)184 283.2 R .168
+(is, the current locale')2.668 F 2.668(sc)-.55 G .168
+(ollating sequence is not tak)-2.668 F .168(en into account, so)-.1 F F1
+(b)2.668 E F0(will)2.668 E .562(not collate between)184 295.2 R F1(A)
+3.062 E F0(and)3.062 E F1(B)3.062 E F0 3.062(,a)C .562(nd upper)-3.062 F
+.562(-case and lo)-.2 F(wer)-.25 E .563
+(-case ASCII characters will col-)-.2 F(late together)184 307.2 Q(.)-.55
+E F1(globskipdots)144 324 Q F0 .285(If set, pathname e)184 336 R .285
+(xpansion will ne)-.15 F -.15(ve)-.25 G 2.785(rm).15 G .285
+(atch the \214lenames)-2.785 F F1 -.63(``)2.785 G -.55(.').63 G(')-.08 E
+F0(and)5.285 E F1 -.63(``)2.784 G(..).63 E -.63('')-.55 G F0 2.784(,e)
+.63 G -.15(ve)-3.034 G 2.784(ni).15 G 2.784(ft)-2.784 G .284(he pat-)
+-2.784 F(tern be)184 348 Q(gins with a)-.15 E F1 -.63(``)2.5 G -.55(.')
+.63 G(')-.08 E F0 5(.T)C(his option is enabled by def)-5 E(ault.)-.1 E
+F1(globstar)144 364.8 Q F0 .518(If set, the pattern)184 364.8 R F1(**)
+3.018 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F
+.519(xt will match all \214les and zero)-.15 F .432
+(or more directories and subdirectories.)184 376.8 R .431
+(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0
+2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184
+388.8 Q F1(gnu_errfmt)144 405.6 Q F0(If set, shell error messages are w\
+ritten in the standard GNU error message format.)184 417.6 Q F1
+(histappend)144 434.4 Q F0 .676
(If set, the history list is appended to the \214le named by the v)184
-165.6 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0
--.25(va)2.926 G(ri-).25 E(able when the shell e)184 177.6 Q
-(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1
-(histr)144 194.4 Q(eedit)-.18 E F0 .575(If set, and)184 206.4 R F1 -.18
-(re)3.075 G(adline).18 E F0 .575(is being used, a user is gi)3.075 F
--.15(ve)-.25 G 3.075(nt).15 G .576(he opportunity to re-edit a f)-3.075
-F .576(ailed his-)-.1 F(tory substitution.)184 218.4 Q F1(histv)144
-235.2 Q(erify)-.1 E F0 .403(If set, and)184 247.2 R F1 -.18(re)2.903 G
-(adline).18 E F0 .403
+446.4 R .676(alue of the)-.25 F F3(HISTFILE)3.177 E F0 -.25(va)2.927 G
+(ri-).25 E(able when the shell e)184 458.4 Q(xits, rather than o)-.15 E
+-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 475.2 Q(eedit)
+-.18 E F0 .576(If set, and)184 487.2 R F1 -.18(re)3.076 G(adline).18 E
+F0 .575(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15
+G .575(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F
+(tory substitution.)184 499.2 Q F1(histv)144 516 Q(erify)-.1 E F0 .402
+(If set, and)184 528 R F1 -.18(re)2.903 G(adline).18 E F0 .403
(is being used, the results of history substitution are not immediately)
-2.903 F .661(passed to the shell parser)184 259.2 R 5.661(.I)-.55 G .662
-(nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162
-G(adline).18 E F0(editing)3.162 E -.2(bu)184 271.2 S -.25(ff).2 G(er).25
-E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1
-(hostcomplete)144 288 Q F0 1.182(If set, and)184 300 R F1 -.18(re)3.682
-G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181
-(will attempt to perform hostname completion)3.681 F 1.38(when a w)184
-312 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381
-(is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E
-F2(READLINE)3.881 E F0(abo)184 324 Q -.15(ve)-.15 G 2.5(\). This).15 F
-(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 340.8 Q F0
-(If set,)184 352.8 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0
-(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e)
-.15 E(xits.)-.15 E F1(inherit_err)144 369.6 Q(exit)-.18 E F0 .22
-(If set, command substitution inherits the v)184 381.6 R .219
-(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219
-(option, instead of unsetting)2.719 F(it in the subshell en)184 393.6 Q
-2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10
-/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti)
-144 410.4 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 422.4 R
-2.83(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E
-F0 .33(to cause that w)2.83 F .33(ord and all remaining characters on)
--.1 F .967(that line to be ignored in an interacti)184 434.4 R 1.267
--.15(ve s)-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217
-E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F
-(enabled by def)184 446.4 Q(ault.)-.1 E F1(lastpipe)144 463.2 Q F0 .066
-(If set, and job control is not acti)184 463.2 R -.15(ve)-.25 G 2.566
+2.903 F .662(passed to the shell parser)184 540 R 5.662(.I)-.55 G .661
+(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161
+G(adline).18 E F0(editing)3.161 E -.2(bu)184 552 S -.25(ff).2 G(er).25 E
+2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1
+(hostcomplete)144 568.8 Q F0 1.181(If set, and)184 580.8 R F1 -.18(re)
+3.681 G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0
+1.182(will attempt to perform hostname completion)3.682 F .503(when a w)
+184 592.8 R .503(ord containing a)-.1 F F1(@)3.003 E F0 .503
+(is being completed \(see)3.003 F F1(Completing)3.003 E F0(under)3.003 E
+F3(READLINE)3.003 E F0(in)2.752 E F2(bash\(1\))184 604.8 Q F0 2.5
+(\). This)B(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 621.6 Q
+F0(If set,)184 633.6 Q F1(bash)2.5 E F0(will send)2.5 E F3(SIGHUP)2.5 E
+F0(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H
+(ogin shell e).15 E(xits.)-.15 E F1(inherit_err)144 650.4 Q(exit)-.18 E
+F0 .219(If set, command substitution inherits the v)184 662.4 R .219
+(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .22
+(option, instead of unsetting)2.719 F(it in the subshell en)184 674.4 Q
+2.5(vironment. This)-.4 F(option is enabled when)2.5 E F2(posix mode)2.5
+E F0(is enabled.)2.5 E F1(interacti)144 691.2 Q -.1(ve)-.1 G(_comments)
+.1 E F0 .33(If set, allo)184 703.2 R 2.83(waw)-.25 G .33(ord be)-2.93 F
+.33(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33
+(ord and all remaining characters on)-.1 F .39
+(that line to be ignored in an interacti)184 715.2 R .69 -.15(ve s)-.25
+H .39(hell \(see).15 F F3(COMMENTS)2.89 E F0(in)2.64 E F2(bash\(1\))2.89
+E F0 2.89(\). This)B(option)2.89 E(is enabled by def)184 727.2 Q(ault.)
+-.1 E(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15
+E(20)185.545 E 0 Cg EP
+%%Page: 21 21
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(lastpipe)144 84 Q F0
+.066(If set, and job control is not acti)184 84 R -.15(ve)-.25 G 2.566
(,t).15 G .066(he shell runs the last command of a pipeline not e)-2.566
F -.15(xe)-.15 G(-).15 E
-(cuted in the background in the current shell en)184 475.2 Q(vironment.)
--.4 E F1(lithist)144 492 Q F0 .655(If set, and the)184 492 R F1(cmdhist)
-3.155 E F0 .654(option is enabled, multi-line commands are sa)3.154 F
--.15(ve)-.2 G 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F
-(with embedded ne)184 504 Q
+(cuted in the background in the current shell en)184 96 Q(vironment.)-.4
+E F1(lithist)144 112.8 Q F0 .654(If set, and the)184 112.8 R F1(cmdhist)
+3.154 E F0 .654(option is enabled, multi-line commands are sa)3.154 F
+-.15(ve)-.2 G 3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F
+(with embedded ne)184 124.8 Q
(wlines rather than using semicolon separators where possible.)-.25 E F1
-(localv)144 520.8 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 532.8 R
+(localv)144 141.6 Q(ar_inherit)-.1 E F0 .422(If set, local v)184 153.6 R
.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422
(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184
-544.8 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673
-(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173
-(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 556.8 Q
-F1(localv)144 573.6 Q(ar_unset)-.1 E F0 .328(If set, calling)184 585.6 R
-F1(unset)2.828 E F0 .328(on local v)2.828 F .329(ariables in pre)-.25 F
-.329(vious function scopes marks them so subse-)-.25 F .543(quent looku\
+165.6 S .173(ists at a pre).15 F .173(vious scope before an)-.25 F 2.673
+(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .174
+(The nameref attrib)5.174 F .174(ute is not)-.2 F(inherited.)184 177.6 Q
+F1(localv)144 194.4 Q(ar_unset)-.1 E F0 .329(If set, calling)184 206.4 R
+F1(unset)2.829 E F0 .329(on local v)2.829 F .329(ariables in pre)-.25 F
+.328(vious function scopes marks them so subse-)-.25 F .543(quent looku\
ps \214nd them unset until that function returns. This is identical to \
-the beha)184 597.6 R(v-)-.2 E(ior of unsetting local v)184 609.6 Q
-(ariables at the current function scope.)-.25 E F1(login_shell)144 626.4
-Q F0 .486
+the beha)184 218.4 R(v-)-.2 E(ior of unsetting local v)184 230.4 Q
+(ariables at the current function scope.)-.25 E F1(login_shell)144 247.2
+Q F0 .693
(The shell sets this option if it is started as a login shell \(see)184
-638.4 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve)
--.15 G 2.987(\). The).15 F -.25(va)184 650.4 S(lue may not be changed.)
-.25 E F1(mailwar)144 667.2 Q(n)-.15 E F0 .815(If set, and a \214le that)
-184 679.2 R F1(bash)3.315 E F0 .814
-(is checking for mail has been accessed since the last time it)3.315 F
--.1(wa)184 691.2 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
+259.2 R/F2 9/Times-Bold@0 SF(INV)3.192 E(OCA)-.405 E(TION)-.855 E F0(in)
+2.942 E/F3 10/Times-Italic@0 SF(bash\(1\))3.192 E F0(\).)A(The v)184
+271.2 Q(alue may not be changed.)-.25 E F1(mailwar)144 288 Q(n)-.15 E F0
+.814(If set, and a \214le that)184 300 R F1(bash)3.314 E F0 .815
+(is checking for mail has been accessed since the last time it)3.314 F
+-.1(wa)184 312 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
(`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i)
--.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)
-149.565 E(20)198.725 E 0 Cg EP
-%%Page: 21 21
+-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144
+328.8 Q F0 .325(If set, and)184 340.8 R F1 -.18(re)2.825 G(adline).18 E
+F0 .325(is being used,)2.825 F F1(bash)2.824 E F0 .324
+(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E
+F0 .324(for possible)2.574 F
+(completions when completion is attempted on an empty line.)184 352.8 Q
+F1(nocaseglob)144 369.6 Q F0 .436(If set,)184 381.6 R F1(bash)2.936 E F0
+.436(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)
+-.25 H .437(ashion when performing pathname).05 F -.15(ex)184 393.6 S
+(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(in)2.5 E
+F3(bash\(1\))2.5 E F0(\).)A F1(nocasematch)144 410.4 Q F0 1.194(If set,)
+184 422.4 R F1(bash)3.694 E F0 1.194
+(matches patterns in a case\255insensiti)3.694 F 1.493 -.15(ve f)-.25 H
+1.193(ashion when performing matching).05 F .551(while e)184 434.4 R
+-.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E
+F0 .551(conditional commands, when performing pattern substitution)3.051
+F -.1(wo)184 446.4 S .623(rd e).1 F .623(xpansions, or when \214ltering\
+ possible completions as part of programmable com-)-.15 F(pletion.)184
+458.4 Q F1(noexpand_translation)144 475.2 Q F0 1.117(If set,)184 487.2 R
+F1(bash)3.617 E F0 1.117(encloses the translated results of $"..." quot\
+ing in single quotes instead of)3.617 F(double quotes.)184 499.2 Q
+(If the string is not translated, this has no ef)5 E(fect.)-.25 E F1
+(nullglob)144 516 Q F0 .319(If set,)184 528 R F1(bash)2.819 E F0(allo)
+2.819 E .319(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)
+2.818 G .318(thname Expansion).1 F F0(in)2.818 E F3(bash\(1\))2.818 E F0
+(\))A(to e)184 540 Q(xpand to a null string, rather than themselv)-.15 E
+(es.)-.15 E F1(patsub_r)144 556.8 Q(eplacement)-.18 E F0 .105(If set,)
+184 568.8 R F1(bash)2.605 E F0 -.15(ex)2.605 G .105
+(pands occurrences of).15 F F1(&)2.606 E F0 .106
+(in the replacement string of pattern substitution to)2.606 F .989
+(the te)184 580.8 R .988(xt matched by the pattern, as described under)
+-.15 F F1 -.1(Pa)3.488 G .988(rameter Expansion).1 F F0(in)3.488 E F3
+(bash\(1\))3.488 E F0(.)A(This option is enabled by def)184 592.8 Q
+(ault.)-.1 E F1(pr)144 609.6 Q(ogcomp)-.18 E F0 2.802
+(If set, the programmable completion f)184 621.6 R 2.802
+(acilities \(see)-.1 F F1(Pr)5.302 E 2.803(ogrammable Completion)-.18 F
+F0(in)5.303 E F3(bash\(1\))184 633.6 Q F0 2.5(\)a)C(re enabled.)-2.5 E
+(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 650.4 Q
+(ogcomp_alias)-.18 E F0 2.124
+(If set, and programmable completion is enabled,)184 662.4 R F1(bash)
+4.624 E F0 2.124(treats a command name that)4.624 F(doesn')184 674.4 Q
+3.288(th)-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789
+(ompletions as a possible alias and attempts alias e)-3.288 F .789
+(xpansion. If it has)-.15 F 1.473(an alias,)184 686.4 R F1(bash)3.973 E
+F0 1.473(attempts programmable completion using the command w)3.973 F
+1.473(ord resulting)-.1 F(from the e)184 698.4 Q(xpanded alias.)-.15 E
+(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E
+(21)185.545 E 0 Cg EP
+%%Page: 22 22
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF
-(no_empty_cmd_completion)144 84 Q F0 .324(If set, and)184 96 R F1 -.18
-(re)2.824 G(adline).18 E F0 .324(is being used,)2.824 F F1(bash)2.824 E
-F0 .324(will not attempt to search the)2.824 F/F2 9/Times-Bold@0 SF
--.666(PA)2.825 G(TH)-.189 E F0 .325(for possible)2.575 F
-(completions when completion is attempted on an empty line.)184 108 Q F1
-(nocaseglob)144 124.8 Q F0 .437(If set,)184 136.8 R F1(bash)2.937 E F0
-.436(matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)
--.25 H .436(ashion when performing pathname).05 F -.15(ex)184 148.8 S
-(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E
--.15(ve)-.15 G(\).).15 E F1(nocasematch)144 165.6 Q F0 1.193(If set,)184
-177.6 R F1(bash)3.693 E F0 1.194
-(matches patterns in a case\255insensiti)3.693 F 1.494 -.15(ve f)-.25 H
-1.194(ashion when performing matching).05 F .551(while e)184 189.6 R
--.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E
-F0 .551(conditional commands, when performing pattern substitution)3.051
-F -.1(wo)184 201.6 S .622(rd e).1 F .623(xpansions, or when \214ltering\
- possible completions as part of programmable com-)-.15 F(pletion.)184
-213.6 Q F1(nullglob)144 230.4 Q F0 .855(If set,)184 242.4 R F1(bash)
-3.355 E F0(allo)3.355 E .855(ws patterns which match no \214les \(see)
--.25 F F1 -.1(Pa)3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15
-(ve)-.15 G 3.354(\)t).15 G(o)-3.354 E -.15(ex)184 254.4 S
-(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144
-271.2 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184
-283.2 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677
-(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E
-(are enabled.)184 295.2 Q(This option is enabled by def)5 E(ault.)-.1 E
-F1(pr)144 312 Q(ogcomp_alias)-.18 E F0 2.124
-(If set, and programmable completion is enabled,)184 324 R F1(bash)4.624
-E F0 2.124(treats a command name that)4.624 F(doesn')184 336 Q 3.288(th)
--.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789
-(ompletions as a possible alias and attempts alias e)-3.288 F .789
-(xpansion. If it has)-.15 F 1.473(an alias,)184 348 R F1(bash)3.973 E F0
-1.473(attempts programmable completion using the command w)3.973 F 1.473
-(ord resulting)-.1 F(from the e)184 360 Q(xpanded alias.)-.15 E F1(pr)
-144 376.8 Q(omptv)-.18 E(ars)-.1 E F0 1.447
-(If set, prompt strings under)184 388.8 R 1.448(go parameter e)-.18 F
-1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184
-400.8 S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G
-.17(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.67 E
-(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E
-(This option is enabled by def)184 412.8 Q(ault.)-.1 E F1 -.18(re)144
-429.6 S(stricted_shell).18 E F0 1.069
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(pr)144 84 Q(omptv)
+-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 96 R 1.448
+(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic)
+-.15 F -.15(ex)184 108 S 1.834(pansion, and quote remo).15 F -.25(va)
+-.15 G 4.334(la).25 G 1.834(fter being e)-4.334 F 1.834
+(xpanded as described in)-.15 F/F2 9/Times-Bold@0 SF(PR)4.333 E(OMPTING)
+-.27 E F0(in)4.083 E/F3 10/Times-Italic@0 SF(bash\(1\))184 120 Q F0 5
+(.T)C(his option is enabled by def)-5 E(ault.)-.1 E F1 -.18(re)144 136.8
+S(stricted_shell).18 E F0 .329
(The shell sets this option if it is started in restricted mode \(see)
-184 441.6 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 453.6 Q 2.86
-(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36
-(This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G
-(-).15 E(cuted, allo)184 465.6 Q(wing the startup \214les to disco)-.25
-E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5
-E F1(shift_v)144 482.4 Q(erbose)-.1 E F0 .501(If set, the)184 494.4 R F1
+184 148.8 R F2 .329(RESTRICTED SHELL)2.829 F F0(in)2.58 E F3(bash\(1\))
+184 160.8 Q F0 2.731(\). The)B -.25(va)2.731 G .231
+(lue may not be changed.).25 F .23
+(This is not reset when the startup \214les are e)5.231 F(x-)-.15 E
+(ecuted, allo)184 172.8 Q(wing the startup \214les to disco)-.25 E -.15
+(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E F1
+(shift_v)144 189.6 Q(erbose)-.1 E F0 .501(If set, the)184 201.6 R F1
(shift)3.001 E F0 -.2(bu)3.001 G .501
(iltin prints an error message when the shift count e).2 F .502
-(xceeds the number)-.15 F(of positional parameters.)184 506.4 Q F1(sour)
-144 523.2 Q(cepath)-.18 E F0 .771(If set, the)184 535.2 R F1(sour)3.271
-E(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v)
+(xceeds the number)-.15 F(of positional parameters.)184 213.6 Q F1(sour)
+144 230.4 Q(cepath)-.18 E F0 .771(If set, the)184 242.4 R F1(.)3.271 E
+F0(\()3.271 E F1(sour)A(ce)-.18 E F0 3.271(\)b)C .771(uiltin uses the v)
-3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77
(to \214nd the directory containing the)3.02 F(\214le supplied as an ar)
-184 547.2 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E
-(ault.)-.1 E F1(xpg_echo)144 564 Q F0(If set, the)184 576 Q F1(echo)2.5
-E F0 -.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)
--.15 E(ault.)-.1 E F1(suspend)108 592.8 Q F0([)2.5 E 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 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 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 F1(test)108 645.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)
-108 657.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877
-(Return a status of 0 \(true\) or 1 \(f)144 657.6 R .878
-(alse\) depending on the e)-.1 F -.25(va)-.25 G .878
-(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 669.6
+184 254.4 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E
+(ault.)-.1 E F1 -.1(va)144 271.2 S(rr).1 E(edir_close)-.18 E F0 .74(If \
+set, the shell automatically closes \214le descriptors assigned using t\
+he)184 283.2 R F3({varname})3.24 E F0(redi-)3.24 E .908
+(rection syntax \(see)184 295.2 R F2(REDIRECTION)3.408 E F0(in)3.157 E
+F3(bash\(1\))3.407 E F0 3.407(\)i)C .907(nstead of lea)-3.407 F .907
+(ving them open when the)-.2 F(command completes.)184 307.2 Q F1
+(xpg_echo)144 324 Q F0(If set, the)184 336 Q F1(echo)2.5 E F0 -.2(bu)2.5
+G(iltin e).2 E(xpands backslash-escape sequences by def)-.15 E(ault.)-.1
+E F1(suspend)108 352.8 Q F0([)2.5 E F1<ad66>A F0(])A .909(Suspend the e)
+144 364.8 R -.15(xe)-.15 G .909(cution of this shell until it recei).15
+F -.15(ve)-.25 G 3.41(sa).15 G F2(SIGCONT)A F0 3.41(signal. A)3.16 F .91
+(login shell, or a shell)3.41 F .753
+(without job control enabled, cannot be suspended; the)144 376.8 R F1
+<ad66>3.253 E F0 .752(option can be used to o)3.252 F -.15(ve)-.15 G
+.752(rride this and).15 F .107(force the suspension.)144 388.8 R .107(T\
+he return status is 0 unless the shell is a login shell or job control \
+is not en-)5.107 F(abled and)144 400.8 Q F1<ad66>2.5 E F0
+(is not supplied.)2.5 E F1(test)108 417.6 Q F3 -.2(ex)2.5 G(pr).2 E F1
+([)108 429.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878
+(Return a status of 0 \(true\) or 1 \(f)144 429.6 R .877
+(alse\) depending on the e)-.1 F -.25(va)-.25 G .877
+(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 441.6
S(pr).2 E F0 5.53(.E).73 G .53
(ach operator and operand must be a separate ar)-5.53 F 3.03
-(gument. Expressions)-.18 F .53(are composed of the)3.03 F .072
-(primaries described in the)144 681.6 R F1(bash)2.573 E F0 .073
-(manual page under)2.573 F F2(CONDITION)2.573 E .073(AL EXPRESSIONS)-.18
-F/F4 9/Times-Roman@0 SF(.)A F1(test)4.573 E F0 .073(does not)2.573 F
-.695(accept an)144 693.6 R 3.195(yo)-.15 G .695
-(ptions, nor does it accept and ignore an ar)-3.195 F .694(gument of)
--.18 F 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 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 196.8 Q F0(and)2.5 E F1([)2.5 E
-F0 -.25(eva)2.5 G(luate conditional e).25 E
+(gument. Expressions)-.18 F .53(are composed of the)3.03 F 1.232
+(primaries described in)144 453.6 R F3(bash\(1\))3.732 E F0(under)3.731
+E F2(CONDITION)3.731 E 1.231(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF
+(.)A F1(test)5.731 E F0 1.231(does not accept an)3.731 F(y)-.15 E
+(options, nor does it accept and ignore an ar)144 465.6 Q(gument of)-.18
+E F1<adad>2.5 E F0(as signifying the end of options.)2.5 E .785
+(Expressions may be combined using the follo)144 483.6 R .786
+(wing operators, listed in decreasing order of prece-)-.25 F 3.412
+(dence. The)144 495.6 R -.25(eva)3.412 G .912
+(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F
+4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F
+(used when there are \214v)144 507.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G
+(ore ar)-2.5 E(guments.)-.18 E F1(!)144 519.6 Q F3 -.2(ex)2.5 G(pr).2 E
+F0 -.35(Tr)180 519.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23
+E(alse.)-.1 E F1(\()144 531.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0
+.26(Returns the v)180 531.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2
+E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26
+(rride the normal precedence of opera-).15 F(tors.)180 543.6 Q F3 -.2
+(ex)144 555.6 S(pr1).2 E F0<ad>2.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0
+-.35(Tr)180 567.6 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5
+E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 579.6 S
+(pr1).2 E F0<ad>2.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180
+591.6 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2
+(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 608.4 Q F0(and)2.5 E
+F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E
(xpressions using a set of rules based on the number of ar)-.15 E
-(guments.)-.18 E 2.5(0a)144 214.8 S -.18(rg)-2.5 G(uments).18 E(The e)
-180 226.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 238.8 S -.18
-(rg)-2.5 G(ument).18 E(The e)180 250.8 Q
+(guments.)-.18 E 2.5(0a)144 626.4 S -.18(rg)-2.5 G(uments).18 E(The e)
+180 638.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 650.4 S -.18
+(rg)-2.5 G(ument).18 E(The e)180 662.4 Q
(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18
-E 2.5(2a)144 262.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
-180 274.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
+E 2.5(2a)144 674.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
+180 686.4 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
F .37(xpression is true if and only if the second ar)-.15 F .37
-(gument is null.)-.18 F .379(If the \214rst ar)180 286.8 R .38
-(gument is one of the unary conditional operators listed abo)-.18 F .68
--.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180
-298.8 Q .553(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552
-(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F
-.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 310.8 Q
+(gument is null.)-.18 F 1.682(If the \214rst ar)180 698.4 R 1.683
+(gument is one of the unary conditional operators listed in)-.18 F F3
+(bash\(1\))4.183 E F0(under)4.183 E F2(CONDITION)180 710.4 Q .122
+(AL EXPRESSIONS)-.18 F F4(,)A F0 .122(the e)2.372 F .122
+(xpression is true if the unary test is true.)-.15 F .121
+(If the \214rst)5.121 F(ar)180 722.4 Q(gument is not a v)-.18 E
(alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E
-(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 322.8 S -.18(rg)-2.5 G
-(uments).18 E .236(The follo)180 334.8 R .236
-(wing conditions are applied in the order listed.)-.25 F .236
-(If the second ar)5.236 F .236(gument is one of)-.18 F .855
-(the binary conditional operators listed abo)180 346.8 R 1.155 -.15
-(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F
-F4(,)A F0(the)3.104 E .578(result of the e)180 358.8 R .578(xpression i\
-s the result of the binary test using the \214rst and third ar)-.15 F
-(guments)-.18 E 1.333(as operands.)180 370.8 R(The)6.333 E 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 382.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058
-F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F
-.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F
-(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180
-394.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52
-(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02
-F(ar)180 406.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0
-2.985(,t)C .485(he result is the one-ar)-2.985 F .485
-(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E
-(wise, the e)180 418.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144
-430.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 442.8 R
-.385(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385
-(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar)
-.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F .284
-(posed of the remaining ar)180 454.8 R 2.784(guments. Otherwise,)-.18 F
-.284(the e)2.784 F .284(xpression is parsed and e)-.15 F -.25(va)-.25 G
-.285(luated ac-).25 F(cording to precedence using the rules listed abo)
-180 466.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 478.8 S 2.5(rm)-2.5 G
-(ore ar)-2.5 E(guments)-.18 E 1.635(The e)180 490.8 R 1.635
-(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635
-(luated according to precedence using the rules listed).25 F(abo)180
-502.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 520.8 Q F1(test)2.5 E
-F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1
-(>)2.5 E F0(operators sort le)2.5 E
-(xicographically using ASCII ordering.)-.15 E F1(times)108 537.6 Q F0
-1.229(Print the accumulated user and system times for the shell and for\
- processes run from the shell.)144 537.6 R(The return status is 0.)144
-549.6 Q F1(trap)108 566.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E
-F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .683(The command)
-144 578.4 R F2(ar)3.513 E(g)-.37 E F0 .683(is to be read and e)3.403 F
--.15(xe)-.15 G .682(cuted when the shell recei).15 F -.15(ve)-.25 G
-3.182(ss).15 G(ignal\(s\))-3.182 E F2(sigspec)3.522 E F0 5.682(.I).31 G
-(f)-5.682 E F2(ar)3.512 E(g)-.37 E F0(is)3.402 E .608
-(absent \(and there is a single)144 590.4 R F2(sigspec)3.108 E F0 3.108
-(\)o)C(r)-3.108 E 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 602.4 R .659(alue it had upon entrance to the shell\).)
--.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658
-(is the null string the signal speci\214ed by each)3.378 F F2(sigspec)
-144.34 614.4 Q F0 .58(is ignored by the shell and by the commands it in)
-3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E
-F0 .581(is not present and)3.301 F 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 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
+(xpression is f)-.15 E(alse.)-.1 E(GNU Bash 5.2)72 768 Q(2021 No)136.385
+E -.15(ve)-.15 G(mber 22).15 E(22)185.545 E 0 Cg EP
%%Page: 23 23
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(shopt)144 84 Q F0 -.2
-(bu)2.996 G .496(iltin for details of its ef).2 F .496(fect on the)-.25
-F F1(DEB)2.996 E(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E/F2 10
-/Times-Italic@0 SF(sigspec)3.336 E F0(is)3.306 E/F3 9/Times-Bold@0 SF
-(RETURN)2.996 E/F4 9/Times-Roman@0 SF(,)A F0 .496(the command)2.746 F F2
-(ar)144.33 96 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18
-(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G .18
-(cuted with the).15 F F1(.)2.68 E F0(or)2.68 E F1(sour)2.68 E(ce)-.18 E
-F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F -.15(exe)144 108 S(cuting.)
-.15 E .961(If a)144 126 R F2(sigspec)3.801 E F0(is)3.771 E F3(ERR)3.461
-E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E(g)-.37 E F0 .961
-(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461
-(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(single sim\
-ple command\), a list, or a compound command returns a non\255zero e)144
-138 R .185(xit status, subject to)-.15 F .452(the follo)144 150 R .452
-(wing conditions.)-.25 F(The)5.452 E F3(ERR)2.952 E F0 .451
-(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451
-(ailed command is part of the com-)-.1 F .387
-(mand list immediately follo)144 162 R .387(wing a)-.25 F F1(while)2.887
-E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388
-(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388
-(statement, part)4.848 F .778(of a command e)144 174 R -.15(xe)-.15 G
-.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778
+E(UIL)-.1 E(TINS\(1\))-.92 E 2.5(3a)144 84 S -.18(rg)-2.5 G(uments).18 E
+.236(The follo)180 96 R .236
+(wing conditions are applied in the order listed.)-.25 F .236
+(If the second ar)5.236 F .236(gument is one of)-.18 F .546
+(the binary conditional operators listed in)180 108 R/F1 10
+/Times-Italic@0 SF(bash\(1\))3.046 E F0(under)3.046 E/F2 9/Times-Bold@0
+SF(CONDITION)3.046 E .546(AL EXPRESSIONS)-.18 F/F3 9/Times-Roman@0 SF(,)
+A F0 .887(the result of the e)180 120 R .888(xpression is the result of\
+ the binary test using the \214rst and third ar)-.15 F(gu-)-.18 E .434
+(ments as operands.)180 132 R(The)5.434 E/F4 10/Times-Bold@0 SF<ad61>
+2.934 E F0(and)2.934 E F4<ad6f>2.934 E F0 .434
+(operators are considered binary operators when there)2.934 F .645
+(are three ar)180 144 R 3.145(guments. If)-.18 F .645(the \214rst ar)
+3.145 F .646(gument is)-.18 F F4(!)3.146 E F0 3.146(,t)C .646(he v)
+-3.146 F .646(alue is the ne)-.25 F -.05(ga)-.15 G .646(tion of the tw)
+.05 F(o-ar)-.1 E(gu-)-.18 E .452
+(ment test using the second and third ar)180 156 R 2.951(guments. If)
+-.18 F .451(the \214rst ar)2.951 F .451(gument is e)-.18 F(xactly)-.15 E
+F4(\()2.951 E F0 .451(and the)2.951 F 1.164(third ar)180 168 R 1.164
+(gument is e)-.18 F(xactly)-.15 E F4(\))3.664 E F0 3.664(,t)C 1.164
+(he result is the one-ar)-3.664 F 1.165(gument test of the second ar)
+-.18 F(gument.)-.18 E(Otherwise, the e)180 180 Q(xpression is f)-.15 E
+(alse.)-.1 E 2.5(4a)144 192 S -.18(rg)-2.5 G(uments).18 E .43(The follo)
+180 204 R .43(wing conditions are applied in the order listed.)-.25 F
+.429(If the \214rst ar)5.429 F .429(gument is)-.18 F F4(!)2.929 E F0
+2.929(,t)C .429(he re-)-2.929 F 1.314(sult is the ne)180 216 R -.05(ga)
+-.15 G 1.314(tion of the three-ar).05 F 1.314(gument e)-.18 F 1.314
+(xpression composed of the remaining ar)-.15 F(gu-)-.18 E 2.745
+(ments. the)180 228 R(tw)2.745 E(o-ar)-.1 E .245
+(gument test using the second and third ar)-.18 F 2.744(guments. If)-.18
+F .244(the \214rst ar)2.744 F(gument)-.18 E .309(is e)180 240 R(xactly)
+-.15 E F4(\()2.809 E F0 .309(and the fourth ar)2.809 F .309(gument is e)
+-.18 F(xactly)-.15 E F4(\))2.809 E F0 2.809(,t)C .31
+(he result is the tw)-2.809 F(o-ar)-.1 E .31(gument test of the)-.18 F
+.184(second and third ar)180 252 R 2.684(guments. Otherwise,)-.18 F .184
+(the e)2.684 F .183(xpression is parsed and e)-.15 F -.25(va)-.25 G .183
+(luated according).25 F(to precedence using the rules listed abo)180 264
+Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 276 S 2.5(rm)-2.5 G(ore ar)-2.5 E
+(guments)-.18 E 1.635(The e)180 288 R 1.635(xpression is parsed and e)
+-.15 F -.25(va)-.25 G 1.635
+(luated according to precedence using the rules listed).25 F(abo)180 300
+Q -.15(ve)-.15 G(.).15 E(When used with)144 318 Q F4(test)2.5 E F0(or)
+2.5 E F4([)2.5 E F0 2.5(,t)C(he)-2.5 E F4(<)2.5 E F0(and)2.5 E F4(>)2.5
+E F0(operators sort le)2.5 E(xicographically using ASCII ordering.)-.15
+E F4(times)108 334.8 Q F0 1.229(Print the accumulated user and system t\
+imes for the shell and for processes run from the shell.)144 334.8 R
+(The return status is 0.)144 346.8 Q F4(trap)108 363.6 Q F0([)2.5 E F4
+(\255lp)A F0 2.5(][)C([)-2.5 E F1(ar)A(g)-.37 E F0(])A F1(sigspec)2.5 E
+F0(...])2.5 E .682(The command)144 375.6 R F1(ar)3.512 E(g)-.37 E F0
+.682(is to be read and e)3.402 F -.15(xe)-.15 G .682
+(cuted when the shell recei).15 F -.15(ve)-.25 G 3.183(ss).15 G
+(ignal\(s\))-3.183 E F1(sigspec)3.523 E F0 5.683(.I).31 G(f)-5.683 E F1
+(ar)3.513 E(g)-.37 E F0(is)3.403 E .609(absent \(and there is a single)
+144 387.6 R F1(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F4<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 399.6 R .658(alue it had upon entrance to the shell\).)
+-.25 F(If)5.658 E F1(ar)3.488 E(g)-.37 E F0 .659
+(is the null string the signal speci\214ed by each)3.378 F F1(sigspec)
+144.34 411.6 Q F0 .581
+(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G
+-.1(ke).2 G 3.08(s. If).1 F F1(ar)3.41 E(g)-.37 E F0 .58
+(is not present and)3.3 F F4<ad70>3.08 E F0(has)3.08 E 1.214
+(been supplied, then the trap commands associated with each)144 423.6 R
+F1(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215
+F(gu-)-.18 E .86(ments are supplied or if only)144 435.6 R F4<ad70>3.36
+E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F4(trap)3.36 E F0 .86
+(prints the list of commands associated with each)3.36 F 2.83
+(signal. The)144 447.6 R F4<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 459.6 R F1(sigspec)4.651 E F0 1.811
+(is either a signal name de\214ned in <)4.621 F F1(signal.h)A F0 1.81
+(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E
+(names are case insensiti)144 471.6 Q .3 -.15(ve a)-.25 H(nd the).15 E
+F2(SIG)2.5 E F0(pre\214x is optional.)2.25 E .666(If a)144 489.6 R F1
+(sigspec)3.506 E F0(is)3.476 E F2(EXIT)3.166 E F0 .666
+(\(0\) the command)2.916 F F1(ar)3.496 E(g)-.37 E F0 .666(is e)3.386 F
+-.15(xe)-.15 G .666(cuted on e).15 F .667(xit from the shell.)-.15 F
+.667(If a)5.667 F F1(sigspec)3.507 E F0(is)3.477 E F2(DE-)3.167 E -.09
+(BU)144 501.6 S(G).09 E F3(,)A F0 .484(the command)2.734 F F1(ar)3.314 E
+(g)-.37 E F0 .484(is e)3.204 F -.15(xe)-.15 G .484(cuted before e).15 F
+-.15(ve)-.25 G(ry).15 E F1 .483(simple command)2.984 F F0(,)A F1(for)
+2.983 E F0(command,)2.983 E F1(case)2.983 E F0(command,)2.983 E F1
+(select)144 513.6 Q F0 .562(command, e)3.062 F -.15(ve)-.25 G .563
+(ry arithmetic).15 F F1(for)3.063 E F0 .563
+(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .563
+(cutes in a shell).15 F .442(function \(see)144 525.6 R F2 .442
+(SHELL GRAMMAR)2.942 F F0(in)2.692 E F1(bash\(1\))2.942 E F0 2.941
+(\). Refer)B .441(to the description of the)2.941 F F4(extdeb)2.941 E
+(ug)-.2 E F0 .441(option to)2.941 F(the)144 537.6 Q F4(shopt)3.2 E F0
+-.2(bu)3.2 G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F
+F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E F0
+(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144
+549.6 Q F1(ar)3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643
+(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G
+.643(cuted with the).15 F F4(.)3.143 E F0(or)3.143 E F4(sour)3.143 E(ce)
+-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 561.6 Q -.15(xe)
+-.15 G(cuting.).15 E .96(If a)144 579.6 R F1(sigspec)3.8 E F0(is)3.77 E
+F2(ERR)3.46 E F3(,)A F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0
+.961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G
+3.461(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(sin\
+gle simple command\), a list, or a compound command returns a non\255ze\
+ro e)144 591.6 R .184(xit status, subject to)-.15 F .451(the follo)144
+603.6 R .451(wing conditions.)-.25 F(The)5.451 E F2(ERR)2.951 E F0 .451
+(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .452
+(ailed command is part of the com-)-.1 F .388
+(mand list immediately follo)144 615.6 R .388(wing a)-.25 F F4(while)
+2.888 E F0(or)2.888 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388
+(ord, part of the test in an)-.1 F F1(if)2.897 E F0 .387
+(statement, part)4.847 F .777(of a command e)144 627.6 R -.15(xe)-.15 G
+.778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 .778
(list e)3.278 F .778(xcept the command follo)-.15 F .778
-(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0
-3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 186 R 1.28
-(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78
-F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F1(!)
-3.78 E F0(.)A(These are the same conditions obe)144 198 Q(yed by the)
--.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1<ad65>A F0 2.5(\)o)C
-(ption.)-2.5 E .133
+(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0
+3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 639.6 R
+1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)
+-3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F
+F4(!)3.78 E F0(.)A(These are the same conditions obe)144 651.6 Q
+(yed by the)-.15 E F4(err)2.5 E(exit)-.18 E F0(\()2.5 E F4<ad65>A F0 2.5
+(\)o)C(ption.)-2.5 E .132
(Signals ignored upon entry to the shell cannot be trapped or reset.)144
-216 R -.35(Tr)5.132 G .132(apped signals that are not be-).35 F .117
-(ing ignored are reset to their original v)144 228 R .117
+669.6 R -.35(Tr)5.133 G .133(apped signals that are not be-).35 F .117
+(ing ignored are reset to their original v)144 681.6 R .117
(alues in a subshell or subshell en)-.25 F .117
-(vironment when one is cre-)-.4 F 2.5(ated. The)144 240 R
-(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F2(sigspec)2.84 E F0
-(is in)2.81 E -.25(va)-.4 G(lid; otherwise).25 E F1(trap)2.5 E F0
-(returns true.)2.5 E F1(type)108 256.8 Q F0([)2.5 E F1(\255aftpP)A F0(])
-A F2(name)2.5 E F0([)2.5 E F2(name)A F0(...])2.5 E -.4(Wi)144 268.8 S
-.174(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2
-(name)3.034 E F0 -.1(wo)2.854 G .173
-(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F
-F1<ad74>144 280.8 Q F0 .715(option is used,)3.215 F F1(type)3.215 E F0
+(vironment when one is cre-)-.4 F 2.5(ated. The)144 693.6 R
+(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F1(sigspec)2.84 E F0
+(is in)2.81 E -.25(va)-.4 G(lid; otherwise).25 E F4(trap)2.5 E F0
+(returns true.)2.5 E(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)
+-.15 G(mber 22).15 E(23)185.545 E 0 Cg EP
+%%Page: 24 24
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(type)108 84 Q F0([)
+2.5 E F1(\255aftpP)A F0(])A/F2 10/Times-Italic@0 SF(name)2.5 E F0([)2.5
+E F2(name)A F0(...])2.5 E -.4(Wi)144 96 S .173
+(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F2(name)
+3.033 E F0 -.1(wo)2.853 G .174
+(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F
+F1<ad74>144 108 Q F0 .715(option is used,)3.215 F F1(type)3.215 E F0
.715(prints a string which is one of)3.215 F F2(alias)3.545 E F0(,).27 E
F2 -.1(ke)3.215 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)5.185 E F0
(,).24 E F2 -.2(bu)3.215 G(iltin).2 E F0 3.215(,o).24 G(r)-3.215 E F2
-(\214le)5.125 E F0(if)3.395 E F2(name)144.36 292.8 Q F0 .087
-(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087
-(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15
-(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F2
-(name)2.946 E F0 .086(is not)2.766 F .118
-(found, then nothing is printed, and an e)144 304.8 R .118
-(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F
-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
+(\214le)5.125 E F0(if)3.395 E F2(name)144.36 120 Q F0 .086
+(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086
+(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15
+(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F2
+(name)2.947 E F0 .087(is not)2.767 F .119
+(found, then nothing is printed, and an e)144 132 R .118
+(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F
+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 144 R .855
(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0
-.855(were speci\214ed as a com-)3.535 F .528(mand name, or nothing if)
-144 328.8 R/F5 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028
-G .528(uld not return).1 F F2(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528
-E 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
+.855(were speci\214ed as a com-)3.535 F .529(mand name, or nothing if)
+144 156 R/F3 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028 G
+.528(uld not return).1 F F2(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528 E
+F1<ad50>3.028 E F0 .528(option forces a)3.028 F/F4 9/Times-Bold@0 SF
+-.666(PA)3.028 G(TH)-.189 E F0 .006(search for each)144 168 R F2(name)
+2.506 E F0 2.506(,e)C -.15(ve)-2.756 G 2.506(ni).15 G(f)-2.506 E F3 .007
+(type -t name)2.506 F F0 -.1(wo)2.507 G .007(uld not return).1 F F2
+(\214le)4.417 E F0 5.007(.I).18 G 2.507(fac)-5.007 G .007
+(ommand is hashed,)-2.507 F F1<ad70>2.507 E F0(and)144 180 Q F1<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 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
+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 192 Q F0 .823(option is used,)3.323 F F1(type)3.323 E
+F0 .824(prints all of the places that contain an e)3.323 F -.15(xe)-.15
+G .824(cutable named).15 F F2(name)3.684 E F0 5.824(.T).18 G .824
+(his in-)-5.824 F 1.176
+(cludes aliases and functions, if and only if the)144 204 R F1<ad70>
+3.676 E F0 1.176(option is not also used.)3.676 F 1.176
(The table of hashed)6.176 F 1.223(commands is not consulted when using)
-144 388.8 R 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
+144 216 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 228 R F1(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F1(type)5.326
+E F0 .326(returns true if all of the ar)2.826 F .325
+(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325
+(re not)-2.825 F(found.)144 240 Q F1(ulimit)108 256.8 Q F0([)2.5 E F1
+(\255HS)A F0(])A F1<ad61>2.5 E(ulimit)108 268.8 Q F0([)2.5 E F1(\255HS)A
F0 2.5(][)C F1(\255bcde\214klmnpqrstuvxPR)-2.5 E(T)-.4 E F0([)2.5 E F2
-(limit)A F0(]])A(Pro)144 453.6 Q .244(vides control o)-.15 F -.15(ve)
--.15 G 2.744(rt).15 G .244(he resources a)-2.744 F -.25(va)-.2 G .244
+(limit)A F0(]])A(Pro)144 280.8 Q .243(vides control o)-.15 F -.15(ve)
+-.15 G 2.743(rt).15 G .243(he resources a)-2.743 F -.25(va)-.2 G .244
(ilable to the shell and to processes started by it, on systems).25 F
-.943(that allo)144 465.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F
-(The)5.943 E F1<ad48>3.443 E F0(and)3.443 E F1<ad53>3.444 E F0 .944
+.944(that allo)144 292.8 R 3.444(ws)-.25 G .944(uch control.)-3.444 F
+(The)5.944 E F1<ad48>3.444 E F0(and)3.444 E F1<ad53>3.444 E F0 .943
(options specify that the hard or soft limit is set for the)3.444 F(gi)
-144 477.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208
+144 304.8 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208
(hard limit cannot be increased by a non-root user once it is set; a so\
-ft limit may)2.709 F .425(be increased up to the v)144 489.6 R .425
-(alue of the hard limit.)-.25 F .426(If neither)5.425 F 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
+ft limit may)2.708 F .426(be increased up to the v)144 316.8 R .426
+(alue of the hard limit.)-.25 F .425(If neither)5.426 F 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
+328.8 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139
(can be a number in the unit speci\214ed for the resource or one)3.319 F
-.741(of the special v)144 513.6 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1
+.742(of the special v)144 340.8 R(alues)-.25 E F1(hard)3.242 E F0(,)A F1
(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w)
-C .741(hich stand for the current hard limit, the current)-3.241 F .024
-(soft limit, and no limit, respecti)144 525.6 R -.15(ve)-.25 G(ly).15 E
+C .741(hich stand for the current hard limit, the current)-3.241 F .023
+(soft limit, and no limit, respecti)144 352.8 R -.15(ve)-.25 G(ly).15 E
5.023(.I)-.65 G(f)-5.023 E F2(limit)2.613 E F0 .023
(is omitted, the current v)3.203 F .023
-(alue of the soft limit of the re-)-.25 F .984
-(source is printed, unless the)144 537.6 R F1<ad48>3.484 E F0 .984
-(option is gi)3.484 F -.15(ve)-.25 G 3.484(n. When).15 F .985
+(alue of the soft limit of the re-)-.25 F .985
+(source is printed, unless the)144 364.8 R F1<ad48>3.485 E F0 .984
+(option is gi)3.485 F -.15(ve)-.25 G 3.484(n. When).15 F .984
(more than one resource is speci\214ed, the)3.484 F .7
-(limit name and unit, if appropriate, are printed before the v)144 549.6
+(limit name and unit, if appropriate, are printed before the v)144 376.8
R 3.2(alue. Other)-.25 F .7(options are interpreted as)3.2 F(follo)144
-561.6 Q(ws:)-.25 E 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
+388.8 Q(ws:)-.25 E F1<ad61>144 400.8 Q F0
+(All current limits are reported; no limits are set)180 400.8 Q F1<ad62>
+144 412.8 Q F0(The maximum sock)180 412.8 Q(et b)-.1 E(uf)-.2 E
+(fer size)-.25 E F1<ad63>144 424.8 Q F0
+(The maximum size of core \214les created)180 424.8 Q F1<ad64>144 436.8
+Q F0(The maximum size of a process')180 436.8 Q 2.5(sd)-.55 G(ata se)
+-2.5 E(gment)-.15 E F1<ad65>144 448.8 Q F0
+(The maximum scheduling priority \("nice"\))180 448.8 Q F1<ad66>144
+460.8 Q F0
(The maximum size of \214les written by the shell and its children)180
-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\
+460.8 Q F1<ad69>144 472.8 Q F0(The maximum number of pending signals)180
+472.8 Q F1<ad6b>144 484.8 Q F0
+(The maximum number of kqueues that may be allocated)180 484.8 Q F1
+<ad6c>144 496.8 Q F0(The maximum size that may be lock)180 496.8 Q
+(ed into memory)-.1 E F1<ad6d>144 508.8 Q F0
+(The maximum resident set size \(man)180 508.8 Q 2.5(ys)-.15 G
+(ystems do not honor this limit\))-2.5 E F1<ad6e>144 520.8 Q F0 .791(Th\
e maximum number of open \214le descriptors \(most systems do not allo)
-180 693.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F
-(be set\))180 705.6 Q 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
+180 520.8 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F
+(be set\))180 532.8 Q F1<ad70>144 544.8 Q F0
+(The pipe size in 512-byte blocks \(this may not be set\))180 544.8 Q F1
+<ad71>144 556.8 Q F0
+(The maximum number of bytes in POSIX message queues)180 556.8 Q F1
+<ad72>144 568.8 Q F0(The maximum real-time scheduling priority)180 568.8
+Q F1<ad73>144 580.8 Q F0(The maximum stack size)180 580.8 Q F1<ad74>144
+592.8 Q F0(The maximum amount of cpu time in seconds)180 592.8 Q F1
+<ad75>144 604.8 Q F0(The maximum number of processes a)180 604.8 Q -.25
+(va)-.2 G(ilable to a single user).25 E F1<ad76>144 616.8 Q F0 .47
+(The maximum amount of virtual memory a)180 616.8 R -.25(va)-.2 G .47
+(ilable to the shell and, on some systems, to).25 F(its children)180
+628.8 Q F1<ad78>144 640.8 Q F0(The maximum number of \214le locks)180
+640.8 Q F1<ad50>144 652.8 Q F0(The maximum number of pseudoterminals)180
+652.8 Q F1<ad52>144 664.8 Q F0(The maximum time a real-time process can\
+ run before blocking, in microseconds)180 664.8 Q F1<ad54>144 676.8 Q F0
+(The maximum number of threads)180 676.8 Q(If)144 693.6 Q F2(limit)3.058
+E F0 .468(is gi)3.648 F -.15(ve)-.25 G .468(n, and the).15 F F1<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 .044
+(no option is gi)144 705.6 R -.15(ve)-.25 G .044(n, then).15 F F1<ad66>
+2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045
+(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1
+<ad74>2.545 E F0 2.545(,w)C .045(hich is)-2.545 F .67(in seconds;)144
+717.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 729.6 Q F0(,)A F1<ad6e>3.736 E F0 3.736(,a)C(nd)-3.736 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.237(hich are in)-3.736 F(GNU Bash 5.2)72
+768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(24)185.545 E 0 Cg
+EP
+%%Page: 25 25
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 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 .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
+E(UIL)-.1 E(TINS\(1\))-.92 E .239(512-byte increments.)144 84 R .238
+(The return status is 0 unless an in)5.239 F -.25(va)-.4 G .238
(lid option or ar).25 F .238(gument is supplied, or an)-.18 F
-(error occurs while setting a ne)144 280.8 Q 2.5(wl)-.25 G(imit.)-2.5 E
-F1(umask)108 297.6 Q F0([)2.5 E 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
+(error occurs while setting a ne)144 96 Q 2.5(wl)-.25 G(imit.)-2.5 E/F1
+10/Times-Bold@0 SF(umask)108 112.8 Q F0([)2.5 E F1<ad70>A F0 2.5(][)C F1
+<ad53>-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(mode)-2.5 E F0(])A .18
+(The user \214le-creation mask is set to)144 124.8 R F2(mode)3.06 E F0
5.18(.I).18 G(f)-5.18 E F2(mode)3.06 E F0(be)2.86 E .18
(gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\
therwise it is interpreted as a symbolic mode mask similar to that acce\
-pted by)144 321.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
-333.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
+pted by)144 136.8 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
+148.8 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382
(alue of the mask is printed.)-.25 F(The)5.382 E F1<ad53>2.882 E F0 .382
(option causes the mask to be)2.882 F .547
-(printed in symbolic form; the def)144 345.6 R .547
+(printed in symbolic form; the def)144 160.8 R .547
(ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G
(he)-3.047 E F1<ad70>3.047 E F0 .547(option is supplied, and)3.047 F F2
-(mode)144.38 357.6 Q F0 .552
-(is omitted, the output is in a form that may be reused as input.)3.232
-F .551(The return status is 0 if the)5.551 F(mode w)144 369.6 Q
+(mode)144.38 172.8 Q F0 .551
+(is omitted, the output is in a form that may be reused as input.)3.231
+F .552(The return status is 0 if the)5.552 F(mode w)144 184.8 Q
(as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E
(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1
-(unalias)108 386.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0
-(...])2.5 E(Remo)144 398.4 Q 1.057 -.15(ve e)-.15 H(ach).15 E F2(name)
-3.257 E F0 .757(from the list of de\214ned aliases.)3.257 F(If)5.758 E
-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
+(unalias)108 201.6 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0
+(...])2.5 E(Remo)144 213.6 Q 1.058 -.15(ve e)-.15 H(ach).15 E F2(name)
+3.258 E F0 .758(from the list of de\214ned aliases.)3.258 F(If)5.758 E
+F1<ad61>3.258 E F0 .757(is supplied, all alias de\214nitions are re-)
+3.258 F(mo)144 225.6 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
(alue is true unless a supplied)-.25 E F2(name)2.86 E F0
-(is not a de\214ned alias.)2.68 E F1(unset)108 427.2 Q F0<5bad>2.5 E F1
+(is not a de\214ned alias.)2.68 E F1(unset)108 242.4 Q F0<5bad>2.5 E F1
(fv)A F0 2.5(][)C<ad>-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...])
-2.5 E -.15(Fo)144 439.2 S 3.804(re).15 G(ach)-3.804 E F2(name)4.164 E F0
-3.804(,r).18 G(emo)-3.804 E 1.604 -.15(ve t)-.15 H 1.304
+2.5 E -.15(Fo)144 254.4 S 3.803(re).15 G(ach)-3.803 E F2(name)4.163 E F0
+3.803(,r).18 G(emo)-3.803 E 1.603 -.15(ve t)-.15 H 1.303
(he corresponding v).15 F 1.303(ariable or function.)-.25 F 1.303
-(If the)6.303 F 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
+(If the)6.303 F F1<ad76>3.804 E F0 1.304(option is gi)3.804 F -.15(ve)
+-.25 G 1.304(n, each).15 F F2(name)144.36 266.4 Q F0 .465
+(refers to a shell v)3.145 F .464(ariable, and that v)-.25 F .464
+(ariable is remo)-.25 F -.15(ve)-.15 G 2.964(d. Read-only).15 F -.25(va)
+2.964 G .464(riables may not be un-).25 F 2.768(set. If)144 278.4 R F1
+<ad66>2.768 E F0 .269(is speci\214ed, each)2.768 F F2(name)3.129 E F0
.269(refers to a shell function, and the function de\214nition is remo)
-2.949 F -.15(ve)-.15 G(d.).15 E .403(If the)144 475.2 R F1<ad6e>2.903 E
+2.949 F -.15(ve)-.15 G(d.).15 E .404(If the)144 290.4 R F1<ad6e>2.904 E
F0 .404(option is supplied, and)2.904 F F2(name)2.904 E F0 .404(is a v)
2.904 F .404(ariable with the)-.25 F F2(namer)2.904 E(ef)-.37 E F0
-(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .404(will be unset)2.904 F
-.72(rather than the v)144 487.2 R .72(ariable it references.)-.25 F F1
-<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
+(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .403(will be unset)2.904 F
+.719(rather than the v)144 302.4 R .719(ariable it references.)-.25 F F1
+<ad6e>5.719 E F0 .719(has no ef)3.219 F .719(fect if the)-.25 F F1<ad66>
+3.22 E F0 .72(option is supplied.)3.22 F .72(If no options)5.72 F .737
+(are supplied, each)144 314.4 R F2(name)3.237 E F0 .737(refers to a v)
+3.237 F .737(ariable; if there is no v)-.25 F .736
+(ariable by that name, a function with)-.25 F 1.761(that name, if an)144
+326.4 R 3.061 -.65(y, i)-.15 H 4.261(su).65 G 4.261(nset. Each)-4.261 F
1.761(unset v)4.261 F 1.761(ariable or function is remo)-.25 F -.15(ve)
--.15 G 4.261(df).15 G 1.761(rom the en)-4.261 F(vironment)-.4 E 3.171
-(passed to subsequent commands.)144 523.2 R 3.172(If an)8.172 F 5.672
+-.15 G 4.262(df).15 G 1.762(rom the en)-4.262 F(vironment)-.4 E 3.172
+(passed to subsequent commands.)144 338.4 R 3.172(If an)8.172 F 5.672
(yo)-.15 G(f)-5.672 E/F3 9/Times-Bold@0 SF -.27(BA)5.672 G(SH_ALIASES)
-.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.422 G(SH_ARGV0).27 E F4(,)A
-F3 -.27(BA)5.422 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 535.2 S
-(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.482 G(SH_SUBSHELL).27 E F4(,)A F3
+.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.421 G(SH_ARGV0).27 E F4(,)A
+F3 -.27(BA)5.421 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 350.4 S
+(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.481 G(SH_SUBSHELL).27 E F4(,)A F3
-.27(BA)11.482 G(SHPID).27 E F4(,)A F3(COMP_W)11.482 E(ORDBREAKS)-.09 E
-F4(,)A F3(DIRST)11.481 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL)
-144 547.2 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN)
+F4(,)A F3(DIRST)11.482 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL)
+144 362.4 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN)
2.67 E(AME)-.18 E F4(,)A F3(GR)2.67 E(OUPS)-.27 E F4(,)A F3(HISTCMD)2.67
E F4(,)A F3(LINENO)2.67 E F4(,)A F3(RANDOM)2.67 E F4(,)A F3(SECONDS)144
-559.2 Q F4(,)A F0(or)4.03 E F3(SRANDOM)4.28 E F0 1.779(are unset, the)
-4.03 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F
--.15(ve)-.25 G 4.279(ni).15 G 4.279(ft)-4.279 G(he)-4.279 E 4.279(ya)
--.15 G 1.779(re subse-)-4.279 F(quently reset.)144 571.2 Q(The e)5 E
-(xit status is true unless a)-.15 E F2(name)2.86 E F0(is readonly)2.68 E
-(.)-.65 E F1(wait)108 588 Q F0([)2.5 E F1(\255fn)A F0 2.5(][)C F1<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 612 R
--.15(ve)-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G
-.008(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f)
--5.008 E F2(id)144.01 624 Q F0 .441(is not gi)3.711 F -.15(ve)-.25 G(n,)
-.15 E F1(wait)2.941 E F0 -.1(wa)2.941 G .441
+374.4 Q F4(,)A F0(or)4.029 E F3(SRANDOM)4.279 E F0 1.779(are unset, the)
+4.029 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F
+-.15(ve)-.25 G 4.279(ni).15 G 4.28(ft)-4.279 G(he)-4.28 E 4.28(ya)-.15 G
+1.78(re subse-)-4.28 F(quently reset.)144 386.4 Q(The e)5 E
+(xit status is true unless a)-.15 E F2(name)2.86 E F0
+(is readonly or may not be unset.)2.68 E F1(wait)108 403.2 Q F0([)2.5 E
+F1(\255fn)A F0 2.5(][)C F1<ad70>-2.5 E F2(varname)2.5 E F0 2.5(][)C F2
+(id ...)-2.5 E F0(])A -.8(Wa)144 415.2 S .659(it for each speci\214ed c\
+hild process and return its termination status.).8 F(Each)5.659 E F2(id)
+3.169 E F0 .658(may be a process)3.928 F .008
+(ID or a job speci\214cation; if a job spec is gi)144 427.2 R -.15(ve)
+-.25 G .009(n, all processes in that job').15 F 2.509(sp)-.55 G .009
+(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f)-5.009 E
+F2(id)144.01 439.2 Q F0 .442(is not gi)3.712 F -.15(ve)-.25 G(n,).15 E
+F1(wait)2.942 E F0 -.1(wa)2.942 G .441
(its for all running background jobs and the last-e).1 F -.15(xe)-.15 G
-.442(cuted process substitu-).15 F .598
-(tion, if its process id is the same as)144 636 R F1($!)3.098 E F0 3.098
-(,a)C .598(nd the return status is zero.)-3.098 F .597(If the)5.597 F F1
-<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
+.441(cuted process substitu-).15 F .597
+(tion, if its process id is the same as)144 451.2 R F1($!)3.098 E F0
+3.098(,a)C .598(nd the return status is zero.)-3.098 F .598(If the)5.598
+F F1<ad6e>3.098 E F0 .598(option is supplied,)3.098 F F1(wait)144 463.2
+Q F0 -.1(wa)3.083 G .583(its for a single job from the list of).1 F F2
+(id)3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083
+E F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj)
+-.15 G .582(ob, to complete and)-3.083 F .403(returns its e)144 475.2 R
+.403(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403
+(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .573
+(are supplied and the shell has no unw)144 487.2 R .573
+(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .572
+(If the)5.573 F F1<ad70>3.072 E F0 .572(option is)3.072 F .39
(supplied, the process or job identi\214er of the job for which the e)
-144 684 R .39(xit status is returned is assigned to)-.15 F .905(the v)
-144 696 R(ariable)-.25 E F2(varname)3.405 E F0 .905
+144 499.2 R .39(xit status is returned is assigned to)-.15 F .905(the v)
+144 511.2 R(ariable)-.25 E F2(varname)3.405 E F0 .905
(named by the option ar)3.405 F 3.405(gument. The)-.18 F -.25(va)3.405 G
.905(riable will be unset initially).25 F 3.405(,b)-.65 G(efore)-3.405 E
-(an)144 708 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39
+(an)144 523.2 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39
(is useful only when the)3.89 F 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
+(option,)3.89 E .575(when job control is enabled, forces)144 535.2 R F1
+(wait)3.075 E F0 .575(to w)3.075 F .575(ait for)-.1 F F2(id)3.075 E F0
+.574(to terminate before returning its status, in-)3.075 F .635
+(stead of returning when it changes status.)144 547.2 R(If)5.635 E F2
+(id)3.145 E F0 .635(speci\214es a non-e)3.905 F .635
+(xistent process or job, the return)-.15 F .802(status is 127.)144 559.2
+R(If)5.801 E F1(wait)3.301 E F0 .801(is interrupted by a signal, the re\
+turn status will be greater than 128, as de-)3.301 F 1.758
+(scribed under)144 571.2 R F1(SIGN)4.258 E(ALS)-.2 E F0(in)4.258 E F2
+(bash\(1\))4.258 E F0 6.758(.O)C 1.759
+(therwise, the return status is the e)-6.758 F 1.759
+(xit status of the last)-.15 F(process or job w)144 583.2 Q(aited for)
+-.1 E(.)-.55 E/F5 10.95/Times-Bold@0 SF(SHELL COMP)72 600 Q -1.04(AT)
+-.81 G(IBILITY MODE)1.04 E F0 1.355
+(Bash-4.0 introduced the concept of a)108 612 R F2 1.355
+(shell compatibility le)3.855 F(vel)-.15 E F0 3.855(,s)C 1.354
+(peci\214ed as a set of options to the shopt)-3.855 F -.2(bu)108 624 S
+.398(iltin \().2 F F1(compat31)2.898 E F0(,)A F1(compat32)2.898 E F0(,)A
+F1(compat40)2.898 E F0(,)A F1(compat41)2.898 E F0 2.898(,a)C .399
+(nd so on\).)-2.898 F .399(There is only one current compatibility)5.399
+F(le)108 636 Q -.15(ve)-.25 G 3.254(l-).15 G 3.254(-e)-3.254 G .754
+(ach option is mutually e)-3.254 F(xclusi)-.15 E -.15(ve)-.25 G 5.754
+(.T).15 G .754(he compatibility le)-5.754 F -.15(ve)-.25 G 3.253(li).15
+G 3.253(si)-3.253 G .753(ntended to allo)-3.253 F 3.253(wu)-.25 G .753
+(sers to select be-)-3.253 F(ha)108 648 Q 1.083(vior from pre)-.2 F
+1.083(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F
+1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.584(ym)-.15 G 1.084
+(igrate scripts to use)-3.584 F(current features and beha)108 660 Q
+(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G
+(ntended to be a temporary solution.)-2.5 E 1.457
+(This section does not mention beha)108 676.8 R 1.457
+(vior that is standard for a particular v)-.2 F 1.456
+(ersion \(e.g., setting)-.15 F F1(compat32)3.956 E F0 .886
+(means that quoting the rhs of the re)108 688.8 R(ge)-.15 E .886
+(xp matching operator quotes special re)-.15 F(ge)-.15 E .887
+(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 700.8 Q
+(ault beha)-.1 E(vior in bash-3.2 and subsequent v)-.2 E(ersions\).)-.15
+E .523(If a user enables, say)108 717.6 R(,)-.65 E F1(compat32)3.023 E
+F0 3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)
+-.25 F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .522
+(ls up to and includ-).15 F .259(ing the current compatibility le)108
+729.6 R -.15(ve)-.25 G 2.759(l. The).15 F .259
+(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.76(lc).15 G
+.26(ontrols beha)-2.76 F .26(vior that changed)-.2 F(GNU Bash 5.2)72 768
+Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E(25)185.545 E 0 Cg EP
+%%Page: 26 26
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E .149
-(instead of returning when it changes status.)144 84 R(If)5.149 E/F1 10
-/Times-Italic@0 SF(id)2.659 E F0 .149(speci\214es a non-e)3.419 F .148
-(xistent process or job, the return)-.15 F(status is 127.)144 96 Q
-(Otherwise, the return status is the e)5 E
-(xit status of the last process or job w)-.15 E(aited for)-.1 E(.)-.55 E
-/F2 10.95/Times-Bold@0 SF(SHELL COMP)72 112.8 Q -1.04(AT)-.81 G
-(IBILITY MODE)1.04 E F0 .911
-(Bash-4.0 introduced the concept of a `shell compatibility le)108 124.8
-R -.15(ve)-.25 G .912(l', speci\214ed as a set of options to the shopt)
-.15 F -.2(bu)108 136.8 S(iltin).2 E/F3 10/Times-Bold@0 SF(compat31)3.378
-E F0(,)A F3(compat32)3.378 E F0(,)A F3(compat40)3.378 E F0(,)A F3
-(compat41)3.378 E F0 3.378(,a)C .878(nd so on\).)-3.378 F .877
-(There is only one current compatibility)5.878 F(le)108 148.8 Q -.15(ve)
--.25 G 3.253(l-).15 G 3.253(-e)-3.253 G .753(ach option is mutually e)
--3.253 F(xclusi)-.15 E -.15(ve)-.25 G 5.753(.T).15 G .753
-(he compatibility le)-5.753 F -.15(ve)-.25 G 3.254(li).15 G 3.254(si)
--3.254 G .754(ntended to allo)-3.254 F 3.254(wu)-.25 G .754
-(sers to select be-)-3.254 F(ha)108 160.8 Q 1.084(vior from pre)-.2 F
-1.084(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F
-1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.583(ym)-.15 G 1.083
-(igrate scripts to use)-3.583 F(current features and beha)108 172.8 Q
-(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G
-(ntended to be a temporary solution.)-2.5 E 1.456
-(This section does not mention beha)108 189.6 R 1.457
-(vior that is standard for a particular v)-.2 F 1.457
-(ersion \(e.g., setting)-.15 F F3(compat32)3.957 E F0 .887
-(means that quoting the rhs of the re)108 201.6 R(ge)-.15 E .886
-(xp matching operator quotes special re)-.15 F(ge)-.15 E .886
-(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 213.6 Q
-(ault beha)-.1 E(vior in bash-3.2 and abo)-.2 E -.15(ve)-.15 G(\).).15 E
-.522(If a user enables, say)108 230.4 R(,)-.65 E F3(compat32)3.023 E F0
-3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)-.25
-F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .523
-(ls up to and includ-).15 F .26(ing the current compatibility le)108
-242.4 R -.15(ve)-.25 G 2.76(l. The).15 F .259
-(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.759(lc).15
-G .259(ontrols beha)-2.759 F .259(vior that changed)-.2 F 1.645
-(in that v)108 254.4 R 1.646(ersion of)-.15 F F3(bash)4.146 E F0 4.146
-(,b)C 1.646(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15
-(ve b)-.2 H 1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F
-1.646(or instance, the)-.15 F .761
-(change to use locale-based comparisons with the)108 266.4 R F3([[)3.261
-E F0 .76(command came in bash-4.1, and earlier v)3.261 F .76
-(ersions used)-.15 F 1.904(ASCII-based comparisons, so enabling)108
-278.4 R F3(compat32)4.404 E F0 1.905
-(will enable ASCII-based comparisons as well.)4.404 F(That)6.905 E .296
-(granularity may not be suf)108 290.4 R .296
+E(UIL)-.1 E(TINS\(1\))-.92 E 1.646(in that v)108 84 R 1.646(ersion of)
+-.15 F/F1 10/Times-Bold@0 SF(bash)4.146 E F0 4.146(,b)C 1.646
+(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15(ve b)-.2 H
+1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F 1.645
+(or instance, the)-.15 F .76
+(change to use locale-based comparisons with the)108 96 R F1([[)3.261 E
+F0 .761(command came in bash-4.1, and earlier v)3.261 F .761
+(ersions used)-.15 F 1.905(ASCII-based comparisons, so enabling)108 108
+R F1(compat32)4.405 E F0 1.904
+(will enable ASCII-based comparisons as well.)4.405 F(That)6.904 E .295
+(granularity may not be suf)108 120 R .296
(\214cient for all uses, and as a result users should emplo)-.25 F 2.796
-(yc)-.1 G .295(ompatibility le)-2.796 F -.15(ve)-.25 G .295(ls care-).15
-F(fully)108 302.4 Q 5(.R)-.65 G(ead the documentation for a particular \
-feature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .531
-(Bash-4.3 introduced a ne)108 319.2 R 3.031(ws)-.25 G .531(hell v)-3.031
-F(ariable:)-.25 E/F4 9/Times-Bold@0 SF -.27(BA)3.031 G(SH_COMP).27 E
--.855(AT)-.666 G/F5 9/Times-Roman@0 SF(.).855 E F0 .531(The v)5.031 F
-.531(alue assigned to this v)-.25 F .532(ariable \(a decimal)-.25 F -.15
-(ve)108 331.2 S .108(rsion number lik).15 F 2.608(e4)-.1 G .108
-(.2, or an inte)-2.608 F .108(ger corresponding to the)-.15 F F3(compat)
-2.607 E F1(NN)A F0 .107(option, lik)2.607 F 2.607(e4)-.1 G .107
-(2\) determines the com-)-2.607 F(patibility le)108 343.2 Q -.15(ve)-.25
-G(l.).15 E .387(Starting with bash-4.4, Bash has be)108 360 R .388
-(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.888
-(ls. Ev).15 F(entually)-.15 E 2.888(,t)-.65 G .388(he options will)
--2.888 F(be remo)108 372 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G -.2
-(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F4 -.27(BA)2.5 G(SH_COMP).27 E -.855
-(AT)-.666 G F5(.).855 E F0 1.164(Bash-5.0 is the \214nal v)108 388.8 R
-1.164(ersion for which there will be an indi)-.15 F 1.163
-(vidual shopt option for the pre)-.25 F 1.163(vious v)-.25 F(ersion.)
--.15 E(Users should use)108 400.8 Q F4 -.27(BA)2.5 G(SH_COMP).27 E -.855
-(AT)-.666 G F0(on bash-5.0 and later v)3.105 E(ersions.)-.15 E 1.613
-(The follo)108 417.6 R 1.613(wing table describes the beha)-.25 F 1.613
+(yc)-.1 G .296(ompatibility le)-2.796 F -.15(ve)-.25 G .296(ls care-).15
+F(fully)108 132 Q 5(.R)-.65 G(ead the documentation for a particular fe\
+ature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .532
+(Bash-4.3 introduced a ne)108 148.8 R 3.032(ws)-.25 G .531(hell v)-3.032
+F(ariable:)-.25 E/F2 9/Times-Bold@0 SF -.27(BA)3.031 G(SH_COMP).27 E
+-.855(AT)-.666 G/F3 9/Times-Roman@0 SF(.).855 E F0 .531(The v)5.031 F
+.531(alue assigned to this v)-.25 F .531(ariable \(a decimal)-.25 F -.15
+(ve)108 160.8 S .107(rsion number lik).15 F 2.607(e4)-.1 G .107
+(.2, or an inte)-2.607 F .107(ger corresponding to the)-.15 F F1(compat)
+2.608 E/F4 10/Times-Italic@0 SF(NN)A F0 .108(option, lik)2.608 F 2.608
+(e4)-.1 G .108(2\) determines the com-)-2.608 F(patibility le)108 172.8
+Q -.15(ve)-.25 G(l.).15 E .388(Starting with bash-4.4, Bash has be)108
+189.6 R .388(gun deprecating older compatibility le)-.15 F -.15(ve)-.25
+G 2.887(ls. Ev).15 F(entually)-.15 E 2.887(,t)-.65 G .387
+(he options will)-2.887 F(be remo)108 201.6 Q -.15(ve)-.15 G 2.5(di).15
+G 2.5(nf)-2.5 G -.2(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F2 -.27(BA)2.5 G
+(SH_COMP).27 E -.855(AT)-.666 G F3(.).855 E F0 1.163
+(Bash-5.0 is the \214nal v)108 218.4 R 1.163
+(ersion for which there will be an indi)-.15 F 1.164
+(vidual shopt option for the pre)-.25 F 1.164(vious v)-.25 F(ersion.)
+-.15 E(Users should use)108 230.4 Q F2 -.27(BA)2.5 G(SH_COMP).27 E -.855
+(AT)-.666 G F0(on bash-5.0 and later v)3.105 E(ersions.)-.15 E 1.614
+(The follo)108 247.2 R 1.613(wing table describes the beha)-.25 F 1.613
(vior changes controlled by each compatibility le)-.2 F -.15(ve)-.25 G
-4.113(ls).15 G 4.114(etting. The)-4.113 F F3(compat)108 429.6 Q F1(NN)A
-F0 1.186(tag is used as shorthand for setting the compatibility le)3.686
-F -.15(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F1(NN)3.686 E F0 1.186
-(using one of the follo)3.686 F(wing)-.25 E 3.806(mechanisms. F)108
-441.6 R 1.306(or v)-.15 F 1.306
+4.113(ls).15 G 4.113(etting. The)-4.113 F F1(compat)108 259.2 Q F4(NN)A
+F0 1.186(tag is used as shorthand for setting the compatibility le)3.685
+F -.15(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F4(NN)3.686 E F0 1.186
+(using one of the follo)3.686 F(wing)-.25 E 3.807(mechanisms. F)108
+271.2 R 1.307(or v)-.15 F 1.307
(ersions prior to bash-5.0, the compatibility le)-.15 F -.15(ve)-.25 G
-3.807(lm).15 G 1.307(ay be set using the corresponding)-3.807 F F3
-(compat)108 453.6 Q F1(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502
+3.806(lm).15 G 1.306(ay be set using the corresponding)-3.806 F F1
+(compat)108 283.2 Q F4(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502
G 3.002(rb).15 G .502(ash-4.3 and later v)-3.002 F .502(ersions, the)
--.15 F F4 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va)
+-.15 F F2 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va)
3.607 G .502(riable is preferred, and it).25 F
-(is required for bash-5.1 and later v)108 465.6 Q(ersions.)-.15 E F3
-(compat31)108 482.4 Q F0<83>144 494.4 Q(quoting the rhs of the)180 494.4
-Q F3([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15
-G 2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect)
--.25 E F3(compat32)108 511.2 Q F0<83>144 523.2 Q .35
-(interrupting a command list such as "a ; b ; c" causes the e)180 523.2
-R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .018
-(in the list \(in bash-4.0 and later v)180 535.2 R .018
-(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.517(dt)
-.15 G .017(he interrupt, so in-)-2.517 F
-(terrupting one command in a list aborts the e)180 547.2 Q -.15(xe)-.15
-G(cution of the entire list\)).15 E F3(compat40)108 564 Q F0<83>144 576
-Q(the)180 576 Q F3(<)2.673 E F0(and)2.673 E F3(>)2.673 E F0 .173
-(operators to the)2.673 F F3([[)2.673 E F0 .173
+(is required for bash-5.1 and later v)108 295.2 Q(ersions.)-.15 E F1
+(compat31)108 312 Q F0<83>144 324 Q(quoting the rhs of the)180 324 Q F1
+([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15 G
+2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect)-.25
+E F1(compat32)108 340.8 Q F0<83>144 352.8 Q .35
+(interrupting a command list such as "a ; b ; c" causes the e)180 352.8
+R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .017
+(in the list \(in bash-4.0 and later v)180 364.8 R .018
+(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.518(dt)
+.15 G .018(he interrupt, so in-)-2.518 F
+(terrupting one command in a list aborts the e)180 376.8 Q -.15(xe)-.15
+G(cution of the entire list\)).15 E F1(compat40)108 393.6 Q F0<83>144
+405.6 Q(the)180 405.6 Q F1(<)2.674 E F0(and)2.674 E F1(>)2.673 E F0 .173
+(operators to the)2.673 F F1([[)2.673 E F0 .173
(command do not consider the current locale when compar)2.673 F(-)-.2 E
-.068(ing strings; the)180 588 R 2.568(yu)-.15 G .068(se ASCII ordering.)
--2.568 F .068(Bash v)5.068 F .067
-(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 600 Q F1
-(str)4.742 E(cmp)-.37 E F0 1.902
-(\(3\); bash-4.1 and later use the current locale').19 F 4.403(sc)-.55 G
-1.903(ollation sequence and)-4.403 F F1(str)4.743 E(-)-.2 E(coll)180 612
-Q F0(\(3\).).51 E F3(compat41)108 628.8 Q F0<83>144 640.8 Q(in)180 640.8
-Q F1(posix)3.79 E F0(mode,)3.79 E F3(time)3.79 E F0 1.29(may be follo)
-3.79 F 1.29(wed by options and still be recognized as a reserv)-.25 F
-(ed)-.15 E -.1(wo)180 652.8 S(rd \(this is POSIX interpretation 267\)).1
-E<83>144 664.8 Q(in)180 664.8 Q F1(posix)2.708 E F0 .208
-(mode, the parser requires that an e)2.708 F -.15(ve)-.25 G 2.708(nn).15
-G .208(umber of single quotes occur in the)-2.708 F F1(wor)2.709 E(d)
--.37 E F0 .282(portion of a double-quoted parameter e)180 676.8 R .282
-(xpansion and treats them specially)-.15 F 2.781(,s)-.65 G 2.781(ot)
--2.781 G .281(hat charac-)-2.781 F(ters within the single quotes are co\
-nsidered quoted \(this is POSIX interpretation 221\))180 688.8 Q F3
-(compat42)108 705.6 Q F0<83>144 717.6 Q 1.055(the replacement string in\
- double-quoted pattern substitution does not under)180 717.6 R 1.056
-(go quote re-)-.18 F(mo)180 729.6 Q -.25(va)-.15 G(l, as it does in v)
-.25 E(ersions after bash-4.2)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)
-149.565 E(25)198.725 E 0 Cg EP
-%%Page: 26 26
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E<83>144 84 Q .021
-(in posix mode, single quotes are considered special when e)180 84 R
-.021(xpanding the)-.15 F/F1 10/Times-Italic@0 SF(wor)2.52 E(d)-.37 E F0
-.02(portion of a)2.52 F .017(double-quoted parameter e)180 96 R .017
+.067(ing strings; the)180 417.6 R 2.567(yu)-.15 G .067
+(se ASCII ordering.)-2.567 F .068(Bash v)5.068 F .068
+(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 429.6 Q F4
+(str)4.743 E(cmp)-.37 E F0 1.903
+(\(3\); bash-4.1 and later use the current locale').19 F 4.402(sc)-.55 G
+1.902(ollation sequence and)-4.402 F F4(str)4.742 E(-)-.2 E(coll)180
+441.6 Q F0(\(3\).).51 E F1(compat41)108 458.4 Q F0<83>144 470.4 Q(in)180
+470.4 Q F4(posix)3.79 E F0(mode,)3.79 E F1(time)3.79 E F0 1.29
+(may be follo)3.79 F 1.29
+(wed by options and still be recognized as a reserv)-.25 F(ed)-.15 E -.1
+(wo)180 482.4 S(rd \(this is POSIX interpretation 267\)).1 E<83>144
+494.4 Q(in)180 494.4 Q F4(posix)2.709 E F0 .208
+(mode, the parser requires that an e)2.709 F -.15(ve)-.25 G 2.708(nn).15
+G .208(umber of single quotes occur in the)-2.708 F F4(wor)2.708 E(d)
+-.37 E F0 .281(portion of a double-quoted parameter e)180 506.4 R .282
+(xpansion and treats them specially)-.15 F 2.782(,s)-.65 G 2.782(ot)
+-2.782 G .282(hat charac-)-2.782 F(ters within the single quotes are co\
+nsidered quoted \(this is POSIX interpretation 221\))180 518.4 Q F1
+(compat42)108 535.2 Q F0<83>144 547.2 Q 1.056(the replacement string in\
+ double-quoted pattern substitution does not under)180 547.2 R 1.055
+(go quote re-)-.18 F(mo)180 559.2 Q -.25(va)-.15 G(l, as it does in v)
+.25 E(ersions after bash-4.2)-.15 E<83>144 571.2 Q .021
+(in posix mode, single quotes are considered special when e)180 571.2 R
+.021(xpanding the)-.15 F F4(wor)2.521 E(d)-.37 E F0 .021(portion of a)
+2.521 F .018(double-quoted parameter e)180 583.2 R .017
(xpansion and can be used to quote a closing brace or other spe-)-.15 F
-.999(cial character \(this is part of POSIX interpretation 221\); in la\
-ter v)180 108 R .998(ersions, single quotes)-.15 F
-(are not special within double-quoted w)180 120 Q(ord e)-.1 E(xpansions)
--.15 E/F2 10/Times-Bold@0 SF(compat43)108 136.8 Q F0<83>144 148.8 Q 1.07
-(the shell does not print a w)180 148.8 R 1.071
-(arning message if an attempt is made to use a quoted com-)-.1 F .249
-(pound assignment as an ar)180 160.8 R .248
-(gument to declare \(declare -a foo='\(1 2\)'\). Later v)-.18 F .248
-(ersions w)-.15 F(arn)-.1 E(that this usage is deprecated)180 172.8 Q
-<83>144 184.8 Q -.1(wo)180 184.8 S .5(rd e).1 F .501
+.998(cial character \(this is part of POSIX interpretation 221\); in la\
+ter v)180 595.2 R .999(ersions, single quotes)-.15 F
+(are not special within double-quoted w)180 607.2 Q(ord e)-.1 E
+(xpansions)-.15 E F1(compat43)108 624 Q F0<83>144 636 Q 1.071
+(the shell does not print a w)180 636 R 1.07
+(arning message if an attempt is made to use a quoted com-)-.1 F .71
+(pound assignment as an ar)180 648 R .711
+(gument to declare \(e.g., declare -a foo=\010\(1 2\)\010\). Later v)
+-.18 F(ersions)-.15 E -.1(wa)180 660 S(rn that this usage is deprecated)
+.1 E<83>144 672 Q -.1(wo)180 672 S .501(rd e).1 F .501
(xpansion errors are considered non-f)-.15 F .501
-(atal errors that cause the current command to)-.1 F -.1(fa)180 196.8 S
+(atal errors that cause the current command to)-.1 F -.1(fa)180 684 S
.605(il, e).1 F -.15(ve)-.25 G 3.105(ni).15 G 3.105(np)-3.105 G .605
(osix mode \(the def)-3.105 F .605(ault beha)-.1 F .605(vior is to mak)
-.2 F 3.105(et)-.1 G .605(hem f)-3.105 F .605
-(atal errors that cause the)-.1 F(shell to e)180 208.8 Q(xit\))-.15 E
-<83>144 220.8 Q .354(when e)180 220.8 R -.15(xe)-.15 G .354
-(cuting a shell function, the loop state \(while/until/etc.\)).15 F .355
-(is not reset, so)5.354 F F2(br)2.855 E(eak)-.18 E F0(or)2.855 E F2
-(continue)180 232.8 Q F0 .052
+(atal errors that cause the)-.1 F(shell to e)180 696 Q(xit\))-.15 E<83>
+144 708 Q .355(when e)180 708 R -.15(xe)-.15 G .354
+(cuting a shell function, the loop state \(while/until/etc.\)).15 F .354
+(is not reset, so)5.354 F F1(br)2.854 E(eak)-.18 E F0(or)2.854 E F1
+(continue)180 720 Q F0 .052
(in that function will break or continue loops in the calling conte)
-2.553 F .052(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre)
-180 244.8 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 261.6 Q F0<83>
-144 273.6 Q .719(the shell sets up the v)180 273.6 R .719(alues used by)
--.25 F/F3 9/Times-Bold@0 SF -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E
-F3 -.27(BA)3.219 G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.219(yc)-.15 G
-.719(an e)-3.219 F(xpand)-.15 E(to the shell')180 285.6 Q 2.5(sp)-.55 G
-(ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fe)-2.5 G
-(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 297.6 Q
-2.635(as)180 297.6 S .135(ubshell inherits loops from its parent conte)
--2.635 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2
-(continue)2.634 E F0 .134(will cause the sub-)2.634 F(shell to e)180
-309.6 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre)
-2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 321.6 Q -.25(va)
-180 321.6 S .618(riable assignments preceding b).25 F .618(uiltins lik)
--.2 F(e)-.1 E F2(export)3.118 E F0(and)3.118 E F2 -.18(re)3.118 G
-(adonly).18 E F0 .618(that set attrib)3.118 F .619(utes con-)-.2 F .12
-(tinue to af)180 333.6 R .12(fect v)-.25 F .119
-(ariables with the same name in the calling en)-.25 F .119(vironment e)
--.4 F -.15(ve)-.25 G 2.619(ni).15 G 2.619(ft)-2.619 G .119(he shell is)
--2.619 F(not in posix mode)180 345.6 Q F2(compat50)108 362.4 Q F0<83>144
-374.4 Q 1.209(Bash-5.1 changed the w)180 374.4 R(ay)-.1 E F3($RANDOM)
-3.709 E F0 1.209(is generated to introduce slightly more random-)3.459 F
-1.019(ness. If the shell compatibility le)180 386.4 R -.15(ve)-.25 G
-3.518(li).15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25
-E 3.518(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.018
-(rts to the method from).25 F .732(bash-5.0 and pre)180 398.4 R .732
-(vious v)-.25 F .733
+2.552 F .053(xt. Bash-4.4 and)-.15 F(GNU Bash 5.2)72 768 Q(2021 No)
+136.385 E -.15(ve)-.15 G(mber 22).15 E(26)185.545 E 0 Cg EP
+%%Page: 27 27
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E(later reset the loop state to pre)180 84 Q
+-.15(ve)-.25 G(nt this).15 E/F1 10/Times-Bold@0 SF(compat44)108 100.8 Q
+F0<83>144 112.8 Q .719(the shell sets up the v)180 112.8 R .719
+(alues used by)-.25 F/F2 9/Times-Bold@0 SF -.27(BA)3.219 G(SH_ARGV).27 E
+F0(and)2.969 E F2 -.27(BA)3.219 G(SH_ARGC).27 E F0 .719(so the)2.969 F
+3.218(yc)-.15 G .718(an e)-3.218 F(xpand)-.15 E(to the shell')180 124.8
+Q 2.5(sp)-.55 G(ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15
+G 2.5(fe)-2.5 G(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>
+144 136.8 Q 2.634(as)180 136.8 S .134
+(ubshell inherits loops from its parent conte)-2.634 F .135(xt, so)-.15
+F F1(br)2.635 E(eak)-.18 E F0(or)2.635 E F1(continue)2.635 E F0 .135
+(will cause the sub-)2.635 F(shell to e)180 148.8 Q 2.5(xit. Bash-5.0)
+-.15 F(and later reset the loop state to pre)2.5 E -.15(ve)-.25 G
+(nt the e).15 E(xit)-.15 E<83>144 160.8 Q -.25(va)180 160.8 S .619
+(riable assignments preceding b).25 F .618(uiltins lik)-.2 F(e)-.1 E F1
+(export)3.118 E F0(and)3.118 E F1 -.18(re)3.118 G(adonly).18 E F0 .618
+(that set attrib)3.118 F .618(utes con-)-.2 F .119(tinue to af)180 172.8
+R .119(fect v)-.25 F .119(ariables with the same name in the calling en)
+-.25 F .12(vironment e)-.4 F -.15(ve)-.25 G 2.62(ni).15 G 2.62(ft)-2.62
+G .12(he shell is)-2.62 F(not in posix mode)180 184.8 Q F1(compat50)108
+201.6 Q F0<83>144 213.6 Q 1.209(Bash-5.1 changed the w)180 213.6 R(ay)
+-.1 E F2($RANDOM)3.709 E F0 1.209
+(is generated to introduce slightly more random-)3.459 F 1.018
+(ness. If the shell compatibility le)180 225.6 R -.15(ve)-.25 G 3.518
+(li).15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 E
+3.518(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.019
+(rts to the method from).25 F .733(bash-5.0 and pre)180 237.6 R .733
+(vious v)-.25 F .732
(ersions, so seeding the random number generator by assigning a)-.15 F
--.25(va)180 410.4 S(lue to).25 E F3(RANDOM)2.5 E F0
-(will produce the same sequence as in bash-5.0)2.25 E<83>144 422.4 Q
-.696(If the command hash table is empty)180 422.4 R 3.196(,b)-.65 G .696
-(ash v)-3.196 F .695(ersions prior to bash-5.1 printed an informa-)-.15
-F 1.32(tional message to that ef)180 434.4 R 1.321(fect, e)-.25 F -.15
+-.25(va)180 249.6 S(lue to).25 E F2(RANDOM)2.5 E F0
+(will produce the same sequence as in bash-5.0)2.25 E<83>144 261.6 Q
+.695(If the command hash table is empty)180 261.6 R 3.196(,b)-.65 G .696
+(ash v)-3.196 F .696(ersions prior to bash-5.1 printed an informa-)-.15
+F 1.321(tional message to that ef)180 273.6 R 1.321(fect, e)-.25 F -.15
(ve)-.25 G 3.821(nw).15 G 1.321
(hen producing output that can be reused as input.)-3.821 F
-(Bash-5.1 suppresses that message when the)180 446.4 Q 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
+(Bash-5.1 suppresses that message when the)180 285.6 Q F1<ad6c>2.5 E F0
+(option is supplied.)2.5 E F1(compat51)108 302.4 Q F0<83>144 314.4 Q
+(The)180 314.4 Q F1(unset)2.954 E F0 -.2(bu)2.954 G .454
+(iltin treats attempts to unset array subscripts).2 F F1(@)2.955 E F0
+(and)2.955 E F1(*)2.955 E F0(dif)2.955 E .455(ferently depending)-.25 F
+(on whether the array is inde)180 326.4 Q -.15(xe)-.15 G 2.5(do).15 G
+2.5(ra)-2.5 G(ssociati)-2.5 E -.15(ve)-.25 G 2.5(,a).15 G(nd dif)-2.5 E
+(ferently than in pre)-.25 E(vious v)-.25 E(ersions.)-.15 E/F3 10.95
+/Times-Bold@0 SF(SEE ALSO)72 343.2 Q F0(bash\(1\), sh\(1\))108 355.2 Q
+(GNU Bash 5.2)72 768 Q(2021 No)136.385 E -.15(ve)-.15 G(mber 22).15 E
+(27)185.545 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/doc/rbash.0 b/doc/rbash.0
index b602a702..96845d0c 100644
--- a/doc/rbash.0
+++ b/doc/rbash.0
@@ -48,11 +48,12 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL
+o specifying the --pp option to the ccoommmmaanndd builtin command
- +o turning off restricted mode with sseett ++rr or sseett ++oo rreessttrriicctteedd.
+ +o turning off restricted mode with sseett ++rr or sshhoopptt --uu rree--
+ ssttrriicctteedd__sshheellll.
These restrictions are enforced after any startup files are read.
- When a command that is found to be a shell script is executed, rrbbaasshh
+ When a command that is found to be a shell script is executed, rrbbaasshh
turns off any restrictions in the shell spawned to execute the script.
SSEEEE AALLSSOO
@@ -60,4 +61,4 @@ SSEEEE AALLSSOO
-GNU Bash-4.0 2004 Apr 20 RBASH(1)
+Bash-5.2 2021 November 22 RBASH(1)
diff --git a/doc/rbash.1 b/doc/rbash.1
index 56e38fd0..39309b4c 100644
--- a/doc/rbash.1
+++ b/doc/rbash.1
@@ -1,4 +1,4 @@
-.TH RBASH 1 "2004 Apr 20" "GNU Bash-4.0"
+.TH RBASH 1 "2021 November 22" "Bash-5.2"
.SH NAME
rbash \- restricted bash, see \fBbash\fR(1)
.SH RESTRICTED SHELL
diff --git a/doc/rbash.ps b/doc/rbash.ps
index 45c9f66b..06fe883d 100644
--- a/doc/rbash.ps
+++ b/doc/rbash.ps
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.4
-%%CreationDate: Wed Nov 18 15:13:06 2020
+%%CreationDate: Mon Sep 19 12:02:42 2022
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%DocumentSuppliedResources: procset grops 1.22 4
@@ -276,15 +276,15 @@ F2<ad66>2.5 E F0(and)2.5 E F2<ad64>2.5 E F0(options to the)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 412.8 Q 2.5(ys)-.15 G
+(set +r)2.5 E F0(or)2.5 E F2(shopt -u r)2.5 E(estricted_shell)-.18 E F0
+(.)A(These restrictions are enforced after an)108 412.8 Q 2.5(ys)-.15 G
(tartup \214les are read.)-2.5 E .429
(When a command that is found to be a shell script is e)108 429.6 R -.15
(xe)-.15 G(cuted,).15 E F2(rbash)2.929 E F0 .429(turns of)2.929 F 2.929
(fa)-.25 G .729 -.15(ny r)-2.929 H .429(estrictions in the shell).15 F
(spa)108 441.6 Q(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E
-F1(SEE ALSO)72 458.4 Q F0(bash\(1\))108 470.4 Q(GNU Bash-4.0)72 768 Q
-(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP
+F1(SEE ALSO)72 458.4 Q F0(bash\(1\))108 470.4 Q 157.215(Bash-5.2 2021)72
+768 R(No)2.5 E -.15(ve)-.15 G(mber 22).15 E(1)190.545 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/doc/version.texi b/doc/version.texi
index 561a6d0e..175aa07a 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,11 +1,11 @@
@ignore
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2022 Free Software Foundation, Inc.
@end ignore
-@set LASTCHANGE Thu Oct 29 16:18:54 EDT 2020
+@set LASTCHANGE Mon Sep 19 11:13:51 EDT 2022
-@set EDITION 5.1
-@set VERSION 5.1
+@set EDITION 5.2
+@set VERSION 5.2
-@set UPDATED 29 October 2020
-@set UPDATED-MONTH October 2020
+@set UPDATED 19 September 2022
+@set UPDATED-MONTH September 2022
diff --git a/error.c b/error.c
index 7df4b146..3e7a2d61 100644
--- a/error.c
+++ b/error.c
@@ -1,6 +1,6 @@
/* error.c -- Functions for handling errors. */
-/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -296,6 +296,32 @@ internal_inform (format, va_alist)
void
#if defined (PREFER_STDARG)
+internal_debug (const char *format, ...)
+#else
+internal_debug (format, va_alist)
+ const char *format;
+ va_dcl
+#endif
+{
+#ifdef DEBUG
+ va_list args;
+
+ error_prolog (1);
+ fprintf (stderr, _("DEBUG warning: "));
+
+ SH_VA_START (args, format);
+
+ vfprintf (stderr, format, args);
+ fprintf (stderr, "\n");
+
+ va_end (args);
+#else
+ return;
+#endif
+}
+
+void
+#if defined (PREFER_STDARG)
sys_error (const char *format, ...)
#else
sys_error (format, va_alist)
diff --git a/error.h b/error.h
index 30828095..785c1deb 100644
--- a/error.h
+++ b/error.h
@@ -50,6 +50,9 @@ extern void internal_error PARAMS((const char *, ...)) __attribute__((__format_
/* Report an internal warning. */
extern void internal_warning PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+/* Report an internal warning for debugging purposes. */
+extern void internal_debug PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+
/* Report an internal informational notice. */
extern void internal_inform PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
@@ -70,4 +73,10 @@ extern void err_badarraysub PARAMS((const char *));
extern void err_unboundvar PARAMS((const char *));
extern void err_readonly PARAMS((const char *));
+#ifdef DEBUG
+# define INTERNAL_DEBUG(x) internal_debug x
+#else
+# define INTERNAL_DEBUG(x)
+#endif
+
#endif /* !_ERROR_H_ */
diff --git a/eval.c b/eval.c
index 1d967da1..17fbf736 100644
--- a/eval.c
+++ b/eval.c
@@ -1,6 +1,6 @@
/* eval.c -- reading and evaluating commands. */
-/* Copyright (C) 1996-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -90,12 +90,13 @@ reader_loop ()
switch (code)
{
/* Some kind of throw to top_level has occurred. */
- case FORCE_EOF:
case ERREXIT:
+ if (exit_immediately_on_error)
+ reset_local_contexts (); /* not in a function */
+ case FORCE_EOF:
case EXITPROG:
+ case EXITBLTIN:
current_command = (COMMAND *)NULL;
- if (exit_immediately_on_error)
- variable_context = 0; /* not in a function */
EOF_Reached = EOF;
goto exec_done;
@@ -139,7 +140,7 @@ reader_loop ()
{
if (interactive_shell == 0 && read_but_dont_execute)
{
- set_exit_status (EXECUTION_SUCCESS);
+ set_exit_status (last_command_exit_value);
dispose_command (global_command);
global_command = (COMMAND *)NULL;
}
diff --git a/examples/functions/autoload.v4 b/examples/functions/autoload.v4
index 7f60563b..850c6148 100644
--- a/examples/functions/autoload.v4
+++ b/examples/functions/autoload.v4
@@ -427,7 +427,7 @@ NOTES
bypass the shim creation and just source in the function's file
directly. For a few calls, the overhead of repeatedly running the
shim is not expensive, but in a tight loop, it might be. Caveat
- Programer.
+ Programmer.
o Although the number of functions in the environment does not change
by using 'autoload', the amount of memory they take up can be greatly
@@ -453,7 +453,7 @@ NOTES
the simplest to implement for -p and -s operations that are not
heavily used.
- As a consquence of this (and other reasons), the AUTOLOAD* namespace
+ As a consequence of this (and other reasons), the AUTOLOAD* namespace
is reserved for autoloading. Make sure you check any functions that
you bring under autoload for use of variables or functions that start
with AUTOLOAD and change them.
diff --git a/examples/functions/csh-compat b/examples/functions/csh-compat
index 54c8488c..6671ca85 100644
--- a/examples/functions/csh-compat
+++ b/examples/functions/csh-compat
@@ -1,4 +1,4 @@
-# C-shell compatibilty package.
+# C-shell compatibility package.
# setenv VAR VALUE
function setenv ()
{
diff --git a/examples/loadables/Makefile.in b/examples/loadables/Makefile.in
index be46121b..956f0189 100644
--- a/examples/loadables/Makefile.in
+++ b/examples/loadables/Makefile.in
@@ -1,7 +1,7 @@
#
# Simple makefile for the sample loadable builtins
#
-# Copyright (C) 1996-2019 Free Software Foundation, Inc.
+# Copyright (C) 1996-2022 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -58,6 +58,7 @@ host_os = @host_os@
host_cpu = @host_cpu@
host_vendor = @host_vendor@
+STYLE_CFLAGS = @STYLE_CFLAGS@
CFLAGS = @CFLAGS@
LOCAL_CFLAGS = @LOCAL_CFLAGS@
DEFS = @DEFS@
@@ -76,7 +77,7 @@ INTL_BUILDDIR = ${LIBBUILD}/intl
INTL_INC = @INTL_INC@
LIBINTL_H = @LIBINTL_H@
-CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(CFLAGS)
+CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(CFLAGS) $(STYLE_CFLAGS)
#
# These values are generated for configure by ${topdir}/support/shobj-conf.
@@ -103,8 +104,8 @@ INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins -I${srcdir} \
ALLPROG = print truefalse sleep finfo logname basename dirname fdflags \
tty pathchk tee head mkdir rmdir mkfifo mktemp printenv id whoami \
uname sync push ln unlink realpath strftime mypid setpgid seq rm \
- accept csv cut
-OTHERPROG = necho hello cat pushd stat asort
+ accept csv dsv cut stat getconf
+OTHERPROG = necho hello cat pushd asort
all: $(SHOBJ_STATUS)
@@ -191,6 +192,9 @@ head: head.o
printenv: printenv.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ printenv.o $(SHOBJ_LIBS)
+getconf: getconf.o
+ $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ getconf.o $(SHOBJ_LIBS)
+
id: id.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ id.o $(SHOBJ_LIBS)
@@ -218,6 +222,9 @@ realpath: realpath.o
csv: csv.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ csv.o $(SHOBJ_LIBS)
+dsv: dsv.o
+ $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ dsv.o $(SHOBJ_LIBS)
+
cut: cut.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ cut.o $(SHOBJ_LIBS)
@@ -245,7 +252,7 @@ pushd.c: ${topdir}/builtins/pushd.def
pushd.o: pushd.c
$(RM) $@
- $(SHOBJ_CC) -DHAVE_CONFIG_H -DPUSHD_AND_POPD -DLOADABLE_BUILTIN $(SHOBJ_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(INC) -c -o $@ $<
+ $(SHOBJ_CC) -Wno-format-security -DHAVE_CONFIG_H -DPUSHD_AND_POPD -DLOADABLE_BUILTIN $(SHOBJ_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(INC) -c -o $@ $<
pushd: pushd.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ pushd.o $(SHOBJ_LIBS)
@@ -258,7 +265,7 @@ mostlyclean: clean
-( cd perl && ${MAKE} ${MFLAGS} $@ )
distclean maintainer-clean: clean
- $(RM) Makefile Makefile.inc pushd.c
+ $(RM) Makefile Makefile.inc Makefile.sample pushd.c
-( cd perl && ${MAKE} ${MFLAGS} $@ )
installdirs:
@@ -266,6 +273,7 @@ installdirs:
install-dev: installdirs
@$(INSTALL_DATA) Makefile.inc $(DESTDIR)$(loadablesdir)/Makefile.inc
+ @$(INSTALL_DATA) Makefile.sample $(DESTDIR)$(loadablesdir)/Makefile.sample
@$(INSTALL_DATA) $(srcdir)/loadables.h $(DESTDIR)$(loadablesdir)/loadables.h
@( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" install-headers)
@@ -277,7 +285,8 @@ install-supported: all installdirs install-dev
done
uninstall-dev:
- -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc $(DESTDIR)$(loadablesdir)/loadables.h
+ -$(RM) $(DESTDIR)$(loadablesdir)/Makefile.inc $(DESTDIR)$(loadablesdir)/Makefile.sample
+ -$(RM) $(DESTDIR)$(loadablesdir)/loadables.h
-( cd $(BUILD_DIR) && ${MAKE} ${MFLAGS} DESTDIR="$(DESTDIR)" uninstall-headers)
uninstall-supported: uninstall-dev
@@ -294,6 +303,7 @@ truefalse.o: truefalse.c
accept.o: accept.c
sleep.o: sleep.c
finfo.o: finfo.c
+getconf.o: getconf.c getconf.h
logname.o: logname.c
basename.o: basename.c
dirname.o: dirname.c
@@ -306,6 +316,7 @@ necho.o: necho.c
hello.o: hello.c
cat.o: cat.c
csv.o: csv.c
+dsv.o: dsv.c
cut.o: cut.c
printenv.o: printenv.c
id.o: id.c
diff --git a/examples/loadables/Makefile.inc.in b/examples/loadables/Makefile.inc.in
index 8b419a78..ee3c3035 100644
--- a/examples/loadables/Makefile.inc.in
+++ b/examples/loadables/Makefile.inc.in
@@ -1,7 +1,7 @@
#
# Sample makefile for bash loadable builtin development
#
-# Copyright (C) 2015 Free Software Foundation, Inc.
+# Copyright (C) 2015-2022 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -99,10 +99,3 @@ INC = -I$(headersdir) -I$(headersdir)/include -I$(headersdir)/builtins
.c.o:
$(SHOBJ_CC) $(SHOBJ_CFLAGS) $(CCFLAGS) $(INC) -c -o $@ $<
-
-all: example
-
-example: example.o
- $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ example.o $(SHOBJ_LIBS)
-
-example.o: example.c
diff --git a/examples/loadables/Makefile.sample.in b/examples/loadables/Makefile.sample.in
new file mode 100644
index 00000000..fe9b06ad
--- /dev/null
+++ b/examples/loadables/Makefile.sample.in
@@ -0,0 +1,44 @@
+#
+# Sample makefile for bash loadable builtin development
+#
+# Copyright (C) 2022 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# these should match the ones in Makefile.in (for the make install target)
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+libdir = @libdir@
+
+# ${loadablesdir} is where the example loadable builtins and data files
+# are installed (make install target in Makefile.in)
+
+loadablesdir = @loadablesdir@
+DESTDIR =
+
+# include Makefile.inc for all boilerplate definitions
+
+include $(DESTDIR)$(loadablesdir)/Makefile.inc
+
+# here, `example' is the name of the shared object
+# replace `example' with the appropriate filename
+
+all: example
+
+example: example.o
+ $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ example.o $(SHOBJ_LIBS)
+
+example.o: example.c
diff --git a/examples/loadables/README b/examples/loadables/README
index 6820c960..c729a6a6 100644
--- a/examples/loadables/README
+++ b/examples/loadables/README
@@ -1,11 +1,13 @@
Some examples of ready-to-dynamic-load builtins. Most of the
examples given are reimplementations of standard commands whose
-execution time is dominated by process startup time. The
+execution time is dominated by process startup time. Some
exceptions are sleep, which allows you to sleep for fractions
of a second, finfo, which provides access to the rest of the
elements of the `stat' structure that `test' doesn't let you
-see, and pushd/popd/dirs, which allows you to compile them out
-of the shell.
+see, csv, which allows you to manipulate data from comma-separated
+values files, fdflags, which lets you change the flags associated
+with one of the shell's file descriptors, and pushd/popd/dirs, which
+allows you to compile them out of the shell.
All of the new builtins in ksh93 that bash didn't already have
are included here, as is the ksh `print' builtin.
@@ -40,6 +42,8 @@ without having to search for the right CFLAGS and LDFLAGS.
basename.c Return non-directory portion of pathname.
cat.c cat(1) replacement with no options - the way cat was intended.
+csv.c Process a line of csv data and store it in an indexed array.
+cut.c Cut out selected portions of each line of a file.
dirname.c Return directory portion of pathname.
fdflags.c Change the flag associated with one of bash's open file descriptors.
finfo.c Print file info.
@@ -52,7 +56,9 @@ logname.c Print login name of current user.
Makefile.in Simple makefile for the sample loadable builtins.
Makefile.inc.in Sample makefile to use for loadable builtin development.
mkdir.c Make directories.
-mypid.c Add $MYPID variable, demonstrate use of unload hook functio.n
+mkfifo.c Create named pipes.
+mktemp.c Make unique temporary file name.
+mypid.c Add $MYPID variable, demonstrate use of unload hook function.
necho.c echo without options or argument interpretation.
pathchk.c Check pathnames for validity and portability.
print.c Loadable ksh-93 style print builtin.
diff --git a/examples/loadables/accept.c b/examples/loadables/accept.c
index 54cf38c8..ff98423d 100644
--- a/examples/loadables/accept.c
+++ b/examples/loadables/accept.c
@@ -30,6 +30,7 @@
#include "bashtypes.h"
#include <errno.h>
#include <time.h>
+#include <limits.h>
#include "typemax.h"
#include <sys/socket.h>
@@ -44,11 +45,10 @@ int
accept_builtin (list)
WORD_LIST *list;
{
- WORD_LIST *l;
SHELL_VAR *v;
intmax_t iport;
int opt;
- char *tmoutarg, *fdvar, *rhostvar, *rhost;
+ char *tmoutarg, *fdvar, *rhostvar, *rhost, *bindaddr;
unsigned short uport;
int servsock, clisock;
struct sockaddr_in server, client;
@@ -56,13 +56,16 @@ accept_builtin (list)
struct timeval timeval;
struct linger linger = { 0, 0 };
- rhostvar = tmoutarg = fdvar = rhost = (char *)NULL;
+ rhostvar = tmoutarg = fdvar = rhost = bindaddr = (char *)NULL;
reset_internal_getopt ();
- while ((opt = internal_getopt (list, "r:t:v:")) != -1)
+ while ((opt = internal_getopt (list, "b:r:t:v:")) != -1)
{
switch (opt)
{
+ case 'b':
+ bindaddr = list_optarg;
+ break;
case 'r':
rhostvar = list_optarg;
break;
@@ -125,12 +128,11 @@ accept_builtin (list)
memset ((char *)&server, 0, sizeof (server));
server.sin_family = AF_INET;
server.sin_port = htons(uport);
- server.sin_addr.s_addr = htonl(INADDR_ANY);
+ server.sin_addr.s_addr = bindaddr ? inet_addr (bindaddr) : htonl(INADDR_ANY);
- if (bind (servsock, (struct sockaddr *)&server, sizeof (server)) < 0)
+ if (server.sin_addr.s_addr == INADDR_NONE)
{
- builtin_error ("socket bind failure: %s", strerror (errno));
- close (servsock);
+ builtin_error ("invalid address: %s", strerror (errno));
return (EXECUTION_FAILURE);
}
@@ -138,6 +140,13 @@ accept_builtin (list)
setsockopt (servsock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof (opt));
setsockopt (servsock, SOL_SOCKET, SO_LINGER, (void *)&linger, sizeof (linger));
+ if (bind (servsock, (struct sockaddr *)&server, sizeof (server)) < 0)
+ {
+ builtin_error ("socket bind failure: %s", strerror (errno));
+ close (servsock);
+ return (EXECUTION_FAILURE);
+ }
+
if (listen (servsock, 1) < 0)
{
builtin_error ("listen failure: %s", strerror (errno));
@@ -154,12 +163,12 @@ accept_builtin (list)
opt = select (servsock+1, &iofds, 0, 0, &timeval);
if (opt < 0)
- builtin_error ("select failure: %s", strerror (errno));
+ builtin_error ("select failure: %s", strerror (errno));
if (opt <= 0)
- {
- close (servsock);
- return (EXECUTION_FAILURE);
- }
+ {
+ close (servsock);
+ return (EXECUTION_FAILURE);
+ }
}
clientlen = sizeof (client);
@@ -193,7 +202,7 @@ accept_bind_variable (varname, intval)
char ibuf[INT_STRLEN_BOUND (int) + 1], *p;
p = fmtulong (intval, 10, ibuf, sizeof (ibuf), 0);
- v = builtin_bind_variable (varname, p, 0);
+ v = builtin_bind_variable (varname, p, 0); /* XXX */
if (v == 0 || readonly_p (v) || noassign_p (v))
builtin_error ("%s: cannot set variable", varname);
return (v != 0);
@@ -205,6 +214,8 @@ char *accept_doc[] = {
"This builtin allows a bash script to act as a TCP/IP server.",
"",
"Options, if supplied, have the following meanings:",
+ " -b address use ADDRESS as the IP address to listen on; the",
+ " default is INADDR_ANY",
" -t timeout wait TIMEOUT seconds for a connection. TIMEOUT may",
" be a decimal number including a fractional portion",
" -v varname store the numeric file descriptor of the connected",
@@ -229,6 +240,6 @@ struct builtin accept_struct = {
accept_builtin, /* function implementing the builtin */
BUILTIN_ENABLED, /* initial flags for builtin */
accept_doc, /* array of long documentation strings. */
- "accept [-t timeout] [-v varname] [-r addrvar ] port", /* usage synopsis; becomes short_doc */
+ "accept [-b address] [-t timeout] [-v varname] [-r addrvar ] port", /* usage synopsis; becomes short_doc */
0 /* reserved for internal use */
};
diff --git a/examples/loadables/cat.c b/examples/loadables/cat.c
index be99c4cd..71685f33 100644
--- a/examples/loadables/cat.c
+++ b/examples/loadables/cat.c
@@ -5,7 +5,7 @@
*/
/*
- Copyright (C) 1999-2009 Free Software Foundation, Inc.
+ Copyright (C) 1999-2009,2022 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -36,13 +36,25 @@ extern char *strerror ();
extern char **make_builtin_argv ();
static int
-fcopy(fd)
+fcopy(fd, fn)
int fd;
+char *fn;
{
- char buf[1024], *s;
+ char buf[4096], *s;
int n, w, e;
while (n = read(fd, buf, sizeof (buf))) {
+ if (n < 0) {
+ e = errno;
+ write(2, "cat: read error: ", 18);
+ write(2, fn, strlen(fn));
+ write(2, ": ", 2);
+ s = strerror(e);
+ write(2, s, strlen(s));
+ write(2, "\n", 1);
+ return 1;
+ }
+ QUIT;
w = write(1, buf, n);
if (w != n) {
e = errno;
@@ -52,6 +64,7 @@ int fd;
write(2, "\n", 1);
return 1;
}
+ QUIT;
}
return 0;
}
@@ -65,9 +78,10 @@ char **argv;
char *s;
if (argc == 1)
- return (fcopy(0));
+ return (fcopy(0, "standard input"));
for (i = r = 1; i < argc; i++) {
+ QUIT;
if (argv[i][0] == '-' && argv[i][1] == '\0')
fd = 0;
else {
@@ -82,10 +96,11 @@ char **argv;
continue;
}
}
- r = fcopy(fd);
+ r = fcopy(fd, argv[i]);
if (fd != 0)
close(fd);
}
+ QUIT;
return (r);
}
@@ -97,6 +112,7 @@ WORD_LIST *list;
int c, r;
v = make_builtin_argv(list, &c);
+ QUIT;
r = cat_main(c, v);
free(v);
diff --git a/examples/loadables/csv.c b/examples/loadables/csv.c
index 11228f1a..75b37725 100644
--- a/examples/loadables/csv.c
+++ b/examples/loadables/csv.c
@@ -39,9 +39,9 @@
element of array variable CSV, starting at index 0. The format of LINE is
as described in RFC 4180. */
static int
-csvsplit (csv, line)
+csvsplit (csv, line, dstring)
SHELL_VAR *csv;
- char *line;
+ char *line, *dstring;
{
arrayind_t ind;
char *field, *prev, *buf, *xbuf;
@@ -67,7 +67,7 @@ csvsplit (csv, line)
buf[b++] = *field++; /* skip double quote */
else if (qstate == DQUOTE && *field == '"')
qstate = NQUOTE;
- else if (qstate == NQUOTE && *field == ',')
+ else if (qstate == NQUOTE && *field == *dstring)
break;
else
/* This copies any text between a closing double quote and the
@@ -80,7 +80,7 @@ csvsplit (csv, line)
else
{
buf = prev;
- field = prev + strcspn (prev, ",");
+ field = prev + strcspn (prev, dstring);
}
delim = *field;
@@ -91,10 +91,10 @@ csvsplit (csv, line)
*field = delim;
- if (delim == ',')
+ if (delim == *dstring)
prev = field + 1;
}
- while (delim == ',');
+ while (delim == *dstring);
if (xbuf)
free (xbuf);
@@ -165,7 +165,7 @@ csv_builtin (list)
if (csvstring == 0 || *csvstring == 0)
return (EXECUTION_SUCCESS);
- opt = csvsplit (v, csvstring);
+ opt = csvsplit (v, csvstring, ",");
/* Maybe do something with OPT here, it's the number of fields */
return (rval);
diff --git a/examples/loadables/cut.c b/examples/loadables/cut.c
index ad9a8335..48f80047 100644
--- a/examples/loadables/cut.c
+++ b/examples/loadables/cut.c
@@ -415,10 +415,16 @@ cutfile (v, list, ops)
#endif
while ((n = zgetline (fd, &line, &llen, '\n', unbuffered_read)) != -1)
- cutline (v, line, ops); /* can modify line */
+ {
+ QUIT;
+ if (line[n] == '\n')
+ line[n] = '\0'; /* cutline expects no newline terminator */
+ cutline (v, line, ops); /* can modify line */
+ }
if (fd > 0)
close (fd);
+ QUIT;
if (l)
l = l->next;
}
diff --git a/examples/loadables/dsv.c b/examples/loadables/dsv.c
new file mode 100644
index 00000000..70e59cbc
--- /dev/null
+++ b/examples/loadables/dsv.c
@@ -0,0 +1,300 @@
+/* dsv - process a line of delimiter-separated data and populate an indexed
+ array with the fields */
+
+/*
+ Copyright (C) 2022 Free Software Foundation, Inc.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <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 DSV_ARRAY_DEFAULT "DSV"
+
+#define NQUOTE 0
+#define DQUOTE 1
+#define SQUOTE 2
+
+#define F_SHELLQUOTE 0x01
+#define F_GREEDY 0x02
+#define F_PRESERVE 0x04
+
+/* Split LINE into delimiter-separated fields, storing each field into a
+ separate element of array variable DSV, starting at index 0. The format
+ of LINE is delimiter-separated values. By default, this splits lines of
+ CSV data as described in RFC 4180. If *DSTRING is any other value than
+ ',', this uses that character as a field delimiter. Pass F_SHELLQUOTE in
+ FLAGS to understand shell-like double-quoting and backslash-escaping in
+ double quotes instead of the "" CSV behavior, and shell-like single quotes.
+ Pass F_GREEDY in FLAGS to consume multiple leading and trailing instances
+ of *DSTRING and consecutive instances of *DSTRING in LINE without creating
+ null fields. If you want to preserve the quote characters in the generated
+ fields, pass F_PRESERVE; by default, this removes them. */
+static int
+dsvsplit (dsv, line, dstring, flags)
+ SHELL_VAR *dsv;
+ char *line, *dstring;
+ int flags;
+{
+ arrayind_t ind;
+ char *field, *prev, *buf, *xbuf;
+ int delim, qstate;
+ int b, rval;
+
+ xbuf = 0;
+ ind = 0;
+ field = prev = line;
+
+ /* If we want a greedy split, consume leading instances of *DSTRING */
+ if (flags & F_GREEDY)
+ {
+ while (*prev == *dstring)
+ prev++;
+ field = prev;
+ }
+
+ do
+ {
+ if (*prev == '"')
+ {
+ if (xbuf == 0)
+ xbuf = xmalloc (strlen (prev) + 1);
+ buf = xbuf;
+ b = 0;
+ if (flags & F_PRESERVE)
+ buf[b++] = *prev;
+ qstate = DQUOTE;
+ for (field = ++prev; *field; field++)
+ {
+ if (qstate == DQUOTE && *field == '"' && field[1] == '"' && (flags & F_SHELLQUOTE) == 0)
+ buf[b++] = *field++; /* skip double quote */
+ else if (qstate == DQUOTE && (flags & F_SHELLQUOTE) && *field == '\\' && strchr (slashify_in_quotes, field[1]) != 0)
+ buf[b++] = *++field; /* backslash quoted double quote */
+ else if (qstate == DQUOTE && *field == '"')
+ {
+ qstate = NQUOTE;
+ if (flags & F_PRESERVE)
+ buf[b++] = *field;
+ }
+ else if (qstate == NQUOTE && *field == *dstring)
+ break;
+ else
+ /* This copies any text between a closing double quote and the
+ delimiter. If you want to change that, make sure to do the
+ copy only if qstate == DQUOTE. */
+ buf[b++] = *field;
+ }
+ buf[b] = '\0';
+ }
+ else if ((flags & F_SHELLQUOTE) && *prev == '\'')
+ {
+ if (xbuf == 0)
+ xbuf = xmalloc (strlen (prev) + 1);
+ buf = xbuf;
+ b = 0;
+ if (flags & F_PRESERVE)
+ buf[b++] = *prev;
+ qstate = SQUOTE;
+ for (field = ++prev; *field; field++)
+ {
+ if (qstate == SQUOTE && *field == '\'')
+ {
+ qstate = NQUOTE;
+ if (flags & F_PRESERVE)
+ buf[b++] = *field;
+ }
+ else if (qstate == NQUOTE && *field == *dstring)
+ break;
+ else
+ /* This copies any text between a closing single quote and the
+ delimiter. If you want to change that, make sure to do the
+ copy only if qstate == SQUOTE. */
+ buf[b++] = *field;
+ }
+ buf[b] = '\0';
+ }
+ else
+ {
+ buf = prev;
+ field = prev + strcspn (prev, dstring);
+ }
+
+ delim = *field;
+ *field = '\0';
+
+ if ((flags & F_GREEDY) == 0 || buf[0])
+ {
+ bind_array_element (dsv, ind, buf, 0);
+ ind++;
+ }
+
+ *field = delim;
+
+ if (delim == *dstring)
+ prev = field + 1;
+ }
+ while (delim == *dstring);
+
+ if (xbuf)
+ free (xbuf);
+
+ return (rval = ind); /* number of fields */
+}
+
+int
+dsv_builtin (list)
+ WORD_LIST *list;
+{
+ int opt, rval, flags;
+ char *array_name, *dsvstring, *delims;
+ SHELL_VAR *v;
+
+ array_name = 0;
+ rval = EXECUTION_SUCCESS;
+
+ delims = ",";
+ flags = 0;
+
+ reset_internal_getopt ();
+ while ((opt = internal_getopt (list, "a:d:Sgp")) != -1)
+ {
+ switch (opt)
+ {
+ case 'a':
+ array_name = list_optarg;
+ break;
+ case 'd':
+ delims = list_optarg;
+ break;
+ case 'S':
+ flags |= F_SHELLQUOTE;
+ break;
+ case 'g':
+ flags |= F_GREEDY;
+ break;
+ case 'p':
+ flags |= F_PRESERVE;
+ break;
+ CASE_HELPOPT;
+ default:
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+ }
+ list = loptend;
+
+ if (array_name == 0)
+ array_name = DSV_ARRAY_DEFAULT;
+
+ if (legal_identifier (array_name) == 0)
+ {
+ sh_invalidid (array_name);
+ return (EXECUTION_FAILURE);
+ }
+
+ if (list == 0)
+ {
+ builtin_error ("dsv string argument required");
+ return (EX_USAGE);
+ }
+
+ v = find_or_make_array_variable (array_name, 1);
+ if (v == 0 || readonly_p (v) || noassign_p (v))
+ {
+ if (v && readonly_p (v))
+ err_readonly (array_name);
+ return (EXECUTION_FAILURE);
+ }
+ else if (array_p (v) == 0)
+ {
+ builtin_error ("%s: not an indexed array", array_name);
+ return (EXECUTION_FAILURE);
+ }
+ if (invisible_p (v))
+ VUNSETATTR (v, att_invisible);
+ array_flush (array_cell (v));
+
+ dsvstring = list->word->word;
+
+ if (dsvstring == 0 || *dsvstring == 0)
+ return (EXECUTION_SUCCESS);
+
+ opt = dsvsplit (v, dsvstring, delims, flags);
+ /* Maybe do something with OPT here, it's the number of fields */
+
+ return (rval);
+}
+
+/* Called when builtin is enabled and loaded from the shared object. If this
+ function returns 0, the load fails. */
+int
+dsv_builtin_load (name)
+ char *name;
+{
+ return (1);
+}
+
+/* Called when builtin is disabled. */
+void
+dsv_builtin_unload (name)
+ char *name;
+{
+}
+
+char *dsv_doc[] = {
+ "Read delimiter-separated fields from STRING.",
+ "",
+ "Parse STRING, a line of delimiter-separated values, into individual",
+ "fields, and store them into the indexed array ARRAYNAME starting at",
+ "index 0. The parsing understands and skips over double-quoted strings. ",
+ "If ARRAYNAME is not supplied, \"DSV\" is the default array name.",
+ "If the delimiter is a comma, the default, this parses comma-",
+ "separated values as specified in RFC 4180.",
+ "",
+ "The -d option specifies the delimiter. The delimiter is the first",
+ "character of the DELIMS argument. Specifying a DELIMS argument that",
+ "contains more than one character is not supported and will produce",
+ "unexpected results. The -S option enables shell-like quoting: double-",
+ "quoted strings can contain backslashes preceding special characters,",
+ "and the backslash will be removed; and single-quoted strings are",
+ "processed as the shell would process them. The -g option enables a",
+ "greedy split: sequences of the delimiter are skipped at the beginning",
+ "and end of STRING, and consecutive instances of the delimiter in STRING",
+ "do not generate empty fields. If the -p option is supplied, dsv leaves",
+ "quote characters as part of the generated field; otherwise they are",
+ "removed.",
+ "",
+ "The return value is 0 unless an invalid option is supplied or the ARRAYNAME",
+ "argument is invalid or readonly.",
+ (char *)NULL
+};
+
+struct builtin dsv_struct = {
+ "dsv", /* builtin name */
+ dsv_builtin, /* function implementing the builtin */
+ BUILTIN_ENABLED, /* initial flags for builtin */
+ dsv_doc, /* array of long documentation strings. */
+ "dsv [-a ARRAYNAME] [-d DELIMS] [-Sgp] string", /* usage synopsis; becomes short_doc */
+ 0 /* reserved for internal use */
+};
diff --git a/examples/loadables/fdflags.c b/examples/loadables/fdflags.c
index fbe52304..9f2d089f 100644
--- a/examples/loadables/fdflags.c
+++ b/examples/loadables/fdflags.c
@@ -3,7 +3,7 @@
/* See Makefile for compilation details. */
/*
- Copyright (C) 2017,2018,2019 Free Software Foundation, Inc.
+ Copyright (C) 2017-2022 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -102,7 +102,7 @@ static const struct
# define ALLFLAGS (O_APPEND|O_ASYNC|O_SYNC|O_NONBLOCK|O_FSYNC|O_DSYNC|\
O_RSYNC|O_ALT_IO|O_DIRECT|O_NOATIME|O_NOSIGPIPE)
-/* An unsed bit in the file status flags word we can use to pass around the
+/* An unused bit in the file status flags word we can use to pass around the
state of close-on-exec. */
# define O_CLOEXEC ((~ALLFLAGS) ^ ((~ALLFLAGS) & ((~ALLFLAGS) - 1)))
#endif
diff --git a/examples/loadables/getconf.c b/examples/loadables/getconf.c
new file mode 100644
index 00000000..75a0a567
--- /dev/null
+++ b/examples/loadables/getconf.c
@@ -0,0 +1,1163 @@
+/* Copyright (C) 1991-2021 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+/* Modified by Chet Ramey <chet.ramey@case.edu> for inclusion in bash. */
+
+#include <config.h>
+
+#include <unistd.h>
+#include <errno.h>
+#include <error.h>
+#include <libintl.h>
+#include <locale.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "typemax.h"
+#include "loadables.h"
+#include "getconf.h"
+
+#ifndef errno
+extern int errno;
+#endif
+
+/* Hack to `encode' values wider than long into a conf_variable */
+#define VAL_LLONG_MIN -1000
+#define VAL_LLONG_MAX -1001
+#define VAL_ULLONG_MAX -1002
+#define VAL_ULONG_MAX -1003
+#define VAL_SSIZE_MAX -1004
+#define VAL_SIZE_MAX -1005
+
+struct conf
+ {
+ const char *name;
+ const long call_name; /* or value for CONSTANT */
+ const enum { SYSCONF, CONFSTR, PATHCONF, CONSTANT, UNDEFINED } call;
+ };
+
+static const struct conf vars[] =
+ {
+#ifdef _PC_LINK_MAX
+ { "LINK_MAX", _PC_LINK_MAX, PATHCONF },
+ { "_POSIX_LINK_MAX", _PC_LINK_MAX, PATHCONF },
+#else
+ { "LINK_MAX", _POSIX_LINK_MAX, CONSTANT },
+ { "_POSIX_LINK_MAX", _POSIX_LINK_MAX, CONSTANT },
+#endif
+#ifdef _PC_MAX_CANON
+ { "MAX_CANON", _PC_MAX_CANON, PATHCONF },
+ { "_POSIX_MAX_CANON", _PC_MAX_CANON, PATHCONF },
+#else
+ { "MAX_CANON", _POSIX_MAX_CANON, CONSTANT },
+ { "_POSIX_MAX_CANON", _POSIX_MAX_CANON, CONSTANT },
+#endif
+#ifdef _PC_MAX_INPUT
+ { "MAX_INPUT", _PC_MAX_INPUT, PATHCONF },
+ { "_POSIX_MAX_INPUT", _PC_MAX_INPUT, PATHCONF },
+#else
+ { "MAX_INPUT", _POSIX_MAX_INPUT, CONSTANT },
+ { "_POSIX_MAX_INPUT", _POSIX_MAX_INPUT, CONSTANT },
+#endif
+#ifdef _PC_NAME_MAX
+ { "NAME_MAX", _PC_NAME_MAX, PATHCONF },
+ { "_POSIX_NAME_MAX", _PC_NAME_MAX, PATHCONF },
+#else
+ { "NAME_MAX", _POSIX_NAME_MAX, CONSTANT },
+ { "_POSIX_NAME_MAX", _POSIX_NAME_MAX, CONSTANT },
+#endif
+#ifdef _PC_PATH_MAX
+ { "PATH_MAX", _PC_PATH_MAX, PATHCONF },
+ { "_POSIX_PATH_MAX", _PC_PATH_MAX, PATHCONF },
+#else
+ { "PATH_MAX", _POSIX_PATH_MAX, CONSTANT },
+ { "_POSIX_PATH_MAX", _POSIX_PATH_MAX, CONSTANT },
+#endif
+#ifdef _PC_PIPE_BUF
+ { "PIPE_BUF", _PC_PIPE_BUF, PATHCONF },
+ { "_POSIX_PIPE_BUF", _PC_PIPE_BUF, PATHCONF },
+#else
+ { "PIPE_BUF", _POSIX_PIPE_BUF, CONSTANT },
+ { "_POSIX_PIPE_BUF", _POSIX_PIPE_BUF, CONSTANT },
+#endif
+#ifdef _PC_SOCK_MAXBUF
+ { "SOCK_MAXBUF", _PC_SOCK_MAXBUF, PATHCONF },
+#endif
+#ifdef _PC_ASYNC_IO
+ { "_POSIX_ASYNC_IO", _PC_ASYNC_IO, PATHCONF },
+#endif
+ { "_POSIX_CHOWN_RESTRICTED", _PC_CHOWN_RESTRICTED, PATHCONF },
+ { "_POSIX_NO_TRUNC", _PC_NO_TRUNC, PATHCONF },
+#ifdef _PC_PRIO_IO
+ { "_POSIX_PRIO_IO", _PC_PRIO_IO, PATHCONF },
+#endif
+#ifdef _PC_SYNC_IO
+ { "_POSIX_SYNC_IO", _PC_SYNC_IO, PATHCONF },
+#endif
+ { "_POSIX_VDISABLE", _PC_VDISABLE, PATHCONF },
+
+ { "ARG_MAX", _SC_ARG_MAX, SYSCONF },
+ { "ATEXIT_MAX", _SC_ATEXIT_MAX, SYSCONF },
+#ifdef _SC_CHAR_BIT
+ { "CHAR_BIT", _SC_CHAR_BIT, SYSCONF },
+#else
+ { "CHAR_BIT", CHAR_BIT, CONSTANT },
+#endif
+#ifdef _SC_CHAR_MAX
+ { "CHAR_MAX", _SC_CHAR_MAX, SYSCONF },
+#else
+ { "CHAR_BIT", CHAR_MAX, CONSTANT },
+#endif
+#ifdef _SC_CHAR_MIN
+ { "CHAR_MIN", _SC_CHAR_MIN, SYSCONF },
+#else
+ { "CHAR_MIN", CHAR_MIN, CONSTANT },
+#endif
+ { "CHILD_MAX", _SC_CHILD_MAX, SYSCONF },
+ { "CLK_TCK", _SC_CLK_TCK, SYSCONF },
+#ifdef _SC_INT_BIT
+ { "INT_BIT", _SC_INT_BIT, SYSCONF },
+#else
+ { "INT_BIT", INT_BIT, CONSTANT },
+#endif
+#ifdef _SC_INT_MAX
+ { "INT_MAX", _SC_INT_MAX, SYSCONF },
+#else
+ { "INT_MAX", INT_MAX, CONSTANT },
+#endif
+#ifdef _SC_INT_MIN
+ { "INT_MIN", _SC_INT_MIN, SYSCONF },
+#else
+ { "INT_MIN", INT_MIN, CONSTANT },
+#endif
+#ifdef _SC_UIO_MAXIOV
+ { "IOV_MAX", _SC_UIO_MAXIOV, SYSCONF },
+#endif
+ { "LOGNAME_MAX", _SC_LOGIN_NAME_MAX, SYSCONF },
+#ifdef _SC_LONG_BIT
+ { "LONG_BIT", _SC_LONG_BIT, SYSCONF },
+#else
+ { "LONG_BIT", LONG_BIT, CONSTANT },
+#endif
+ { "LONG_MIN", LONG_MIN, CONSTANT },
+ { "LONG_MAX", LONG_MAX, CONSTANT },
+#if HAVE_LONG_LONG_INT
+ { "LLONG_MIN", VAL_LLONG_MIN, CONSTANT },
+ { "LLONG_MAX", VAL_LLONG_MAX, CONSTANT },
+#else
+ { "LLONG_MIN", LLONG_MIN, CONSTANT },
+ { "LLONG_MAX", LLONG_MAX, CONSTANT },
+#endif
+#ifdef _SC_MB_LEN_MAX
+ { "MB_LEN_MAX", _SC_MB_LEN_MAX, SYSCONF },
+#else
+ { "MB_LEN_MAX", MB_LEN_MAX, CONSTANT },
+#endif
+ { "NGROUPS_MAX", _SC_NGROUPS_MAX, SYSCONF },
+#ifdef _SC_NL_ARGMAX
+ { "NL_ARGMAX", _SC_NL_ARGMAX, SYSCONF },
+#endif
+#ifdef _SC_NL_LANGMAX
+ { "NL_LANGMAX", _SC_NL_LANGMAX, SYSCONF },
+#endif
+#ifdef _SC_NL_MSGMAX
+ { "NL_MSGMAX", _SC_NL_MSGMAX, SYSCONF },
+#endif
+#ifdef _SC_NL_NMAX
+ { "NL_NMAX", _SC_NL_NMAX, SYSCONF },
+#endif
+#ifdef _SC_NL_SETMAX
+ { "NL_SETMAX", _SC_NL_SETMAX, SYSCONF },
+#endif
+#ifdef _SC_NL_TEXTMAX
+ { "NL_TEXTMAX", _SC_NL_TEXTMAX, SYSCONF },
+#endif
+ { "NSS_BUFLEN_GROUP", _SC_GETGR_R_SIZE_MAX, SYSCONF },
+ { "NSS_BUFLEN_PASSWD", _SC_GETPW_R_SIZE_MAX, SYSCONF },
+#ifdef _SC_NZERO
+ { "NZERO", _SC_NZERO, SYSCONF },
+#endif
+ { "OPEN_MAX", _SC_OPEN_MAX, SYSCONF },
+ { "PAGESIZE", _SC_PAGESIZE, SYSCONF },
+ { "PAGE_SIZE", _SC_PAGESIZE, SYSCONF },
+#ifdef _SC_PASS_MAX
+ { "PASS_MAX", _SC_PASS_MAX, SYSCONF },
+#endif
+ { "PTHREAD_DESTRUCTOR_ITERATIONS", _SC_THREAD_DESTRUCTOR_ITERATIONS, SYSCONF },
+ { "PTHREAD_KEYS_MAX", _SC_THREAD_KEYS_MAX, SYSCONF },
+ { "PTHREAD_STACK_MIN", _SC_THREAD_STACK_MIN, SYSCONF },
+ { "PTHREAD_THREADS_MAX", _SC_THREAD_THREADS_MAX, SYSCONF },
+#ifdef _SC_SCHAR_MAX
+ { "SCHAR_MAX", _SC_SCHAR_MAX, SYSCONF },
+#else
+ { "SCHAR_MAX", SCHAR_MAX, CONSTANT },
+#endif
+#ifdef _SC_SCHAR_MIN
+ { "SCHAR_MIN", _SC_SCHAR_MIN, SYSCONF },
+#else
+ { "SCHAR_MIN", SCHAR_MIN, CONSTANT },
+#endif
+#ifdef _SC_SHRT_MAX
+ { "SHRT_MAX", _SC_SHRT_MAX, SYSCONF },
+#else
+ { "SHRT_MAX", SHRT_MAX, CONSTANT },
+#endif
+#ifdef _SC_SHRT_MIN
+ { "SHRT_MIN", _SC_SHRT_MIN, SYSCONF },
+#else
+ { "SHRT_MIN", SHRT_MIN, CONSTANT },
+#endif
+#ifdef _SC_SIZE_MAX
+ { "SIZE_MAX", _SC_SIZE_MAX, SYSCONF },
+#else
+ { "SIZE_MAX", VAL_SIZE_MAX, CONSTANT },
+#endif
+#ifdef _SC_SSIZE_MAX
+ { "SSIZE_MAX", _SC_SSIZE_MAX, SYSCONF },
+#elif SIZEOF_SIZE_MAX == 8
+ { "SSIZE_MAX", VAL_SSIZE_MAX, CONSTANT },
+#else
+ { "SSIZE_MAX", VAL_SSIZE_MAX, CONSTANT },
+#endif
+ { "TTY_NAME_MAX", _SC_TTY_NAME_MAX, SYSCONF },
+ { "TZNAME_MAX", _SC_TZNAME_MAX, SYSCONF },
+#ifdef _SC_UCHAR_MAX
+ { "UCHAR_MAX", _SC_UCHAR_MAX, SYSCONF },
+#else
+ { "UCHAR_MAX", UCHAR_MAX, CONSTANT },
+#endif
+#ifdef _SC_UINT_MAX
+ { "UINT_MAX", _SC_UINT_MAX, SYSCONF },
+#else
+ { "UINT_MAX", UINT_MAX, CONSTANT },
+#endif
+#ifdef _SC_UIO_MAXIOV
+ { "UIO_MAXIOV", _SC_UIO_MAXIOV, SYSCONF },
+#endif
+#ifdef _SC_ULONG_MAX
+ { "ULONG_MAX", _SC_ULONG_MAX, SYSCONF },
+#else
+ { "ULONG_MAX", VAL_ULONG_MAX, CONSTANT },
+#endif
+#ifdef HAVE_LONG_LONG_INT
+ { "ULLONG_MAX", VAL_ULLONG_MAX, CONSTANT },
+#endif
+#ifdef _SC_USHRT_MAX
+ { "USHRT_MAX", _SC_USHRT_MAX, SYSCONF },
+#else
+ { "USHRT_MAX", USHRT_MAX, CONSTANT },
+#endif
+#ifdef _SC_WORD_BIT
+ { "WORD_BIT", _SC_WORD_BIT, SYSCONF },
+#else
+ { "WORD_BIT", WORD_BIT, CONSTANT },
+#endif
+#ifdef _SC_AVPHYS_PAGES
+ { "_AVPHYS_PAGES", _SC_AVPHYS_PAGES, SYSCONF },
+#endif
+ { "_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF, SYSCONF },
+ { "_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN, SYSCONF },
+ { "_PHYS_PAGES", _SC_PHYS_PAGES, SYSCONF },
+#ifdef _SC_ARG_MAX
+ { "_POSIX_ARG_MAX", _SC_ARG_MAX, SYSCONF },
+#else
+ { "_POSIX_ARG_MAX", _POSIX_ARG_MAX, CONSTANT },
+#endif
+ { "_POSIX_ASYNCHRONOUS_IO", _SC_ASYNCHRONOUS_IO, SYSCONF },
+#ifdef _SC_CHILD_MAX
+ { "_POSIX_CHILD_MAX", _SC_CHILD_MAX, SYSCONF },
+#else
+ { "_POSIX_CHILD_MAX", _POSIX_CHILD_MAX, CONSTANT },
+#endif
+ { "_POSIX_FSYNC", _SC_FSYNC, SYSCONF },
+ { "_POSIX_JOB_CONTROL", _SC_JOB_CONTROL, SYSCONF },
+ { "_POSIX_MAPPED_FILES", _SC_MAPPED_FILES, SYSCONF },
+ { "_POSIX_MEMLOCK", _SC_MEMLOCK, SYSCONF },
+ { "_POSIX_MEMLOCK_RANGE", _SC_MEMLOCK_RANGE, SYSCONF },
+ { "_POSIX_MEMORY_PROTECTION", _SC_MEMORY_PROTECTION, SYSCONF },
+ { "_POSIX_MESSAGE_PASSING", _SC_MESSAGE_PASSING, SYSCONF },
+ { "_POSIX_NGROUPS_MAX", _SC_NGROUPS_MAX, SYSCONF },
+ { "_POSIX_OPEN_MAX", _SC_OPEN_MAX, SYSCONF },
+#ifdef _SC_PII
+ { "_POSIX_PII", _SC_PII, SYSCONF },
+#endif
+#ifdef _SC_PII_INTERNET
+ { "_POSIX_PII_INTERNET", _SC_PII_INTERNET, SYSCONF },
+#endif
+#ifdef _SC_PII_INTERNET_DGRAM
+ { "_POSIX_PII_INTERNET_DGRAM", _SC_PII_INTERNET_DGRAM, SYSCONF },
+#endif
+#ifdef _SC_PII_INTERNET_STREAM
+ { "_POSIX_PII_INTERNET_STREAM", _SC_PII_INTERNET_STREAM, SYSCONF },
+#endif
+#ifdef _SC_PII_OSI
+ { "_POSIX_PII_OSI", _SC_PII_OSI, SYSCONF },
+#endif
+#ifdef _SC_PII_OSI_CLTS
+ { "_POSIX_PII_OSI_CLTS", _SC_PII_OSI_CLTS, SYSCONF },
+#endif
+#ifdef _SC_PII_OSI_COTS
+ { "_POSIX_PII_OSI_COTS", _SC_PII_OSI_COTS, SYSCONF },
+#endif
+#ifdef _SC_PII_OSI_M
+ { "_POSIX_PII_OSI_M", _SC_PII_OSI_M, SYSCONF },
+#endif
+#ifdef _SC_PII_SOCKET
+ { "_POSIX_PII_SOCKET", _SC_PII_SOCKET, SYSCONF },
+#endif
+#ifdef _SC_PII_XTI
+ { "_POSIX_PII_XTI", _SC_PII_XTI, SYSCONF },
+#endif
+#ifdef _SC_POLL
+ { "_POSIX_POLL", _SC_POLL, SYSCONF },
+#endif
+#ifdef _SC_PRIORITIZED_IO
+ { "_POSIX_PRIORITIZED_IO", _SC_PRIORITIZED_IO, SYSCONF },
+#endif
+ { "_POSIX_PRIORITY_SCHEDULING", _SC_PRIORITY_SCHEDULING, SYSCONF },
+ { "_POSIX_REALTIME_SIGNALS", _SC_REALTIME_SIGNALS, SYSCONF },
+ { "_POSIX_SAVED_IDS", _SC_SAVED_IDS, SYSCONF },
+#ifdef _SC_SELECT
+ { "_POSIX_SELECT", _SC_SELECT, SYSCONF },
+#endif
+ { "_POSIX_SEMAPHORES", _SC_SEMAPHORES, SYSCONF },
+ { "_POSIX_SHARED_MEMORY_OBJECTS", _SC_SHARED_MEMORY_OBJECTS, SYSCONF },
+#ifdef _SC_SSIZE_MAX
+ { "_POSIX_SSIZE_MAX", _SC_SSIZE_MAX, SYSCONF },
+#elif SIZEOF_SIZE_T == 8
+ { "_POSIX_SSIZE_MAX", VAL_SSIZE_MAX, CONSTANT },
+#else
+ { "_POSIX_SSIZE_MAX", VAL_SSIZE_MAX, CONSTANT },
+#endif
+#ifdef _SC_STREAM_MAX
+ { "_POSIX_STREAM_MAX", _SC_STREAM_MAX, SYSCONF },
+#else
+ { "_POSIX_STREAM_MAX", _POSIX_STREAM_MAX, CONSTANT },
+#endif
+ { "_POSIX_SYNCHRONIZED_IO", _SC_SYNCHRONIZED_IO, SYSCONF },
+ { "_POSIX_THREADS", _SC_THREADS, SYSCONF },
+ { "_POSIX_THREAD_ATTR_STACKADDR", _SC_THREAD_ATTR_STACKADDR, SYSCONF },
+ { "_POSIX_THREAD_ATTR_STACKSIZE", _SC_THREAD_ATTR_STACKSIZE, SYSCONF },
+ { "_POSIX_THREAD_PRIORITY_SCHEDULING", _SC_THREAD_PRIORITY_SCHEDULING, SYSCONF },
+ { "_POSIX_THREAD_PRIO_INHERIT", _SC_THREAD_PRIO_INHERIT, SYSCONF },
+ { "_POSIX_THREAD_PRIO_PROTECT", _SC_THREAD_PRIO_PROTECT, SYSCONF },
+#ifdef _SC_THREAD_ROBUST_PRIO_INHERIT
+ { "_POSIX_THREAD_ROBUST_PRIO_INHERIT", _SC_THREAD_ROBUST_PRIO_INHERIT,
+ SYSCONF },
+#endif
+#ifdef _SC_THREAD_ROBUST_PRIO_PROTECT
+ { "_POSIX_THREAD_ROBUST_PRIO_PROTECT", _SC_THREAD_ROBUST_PRIO_PROTECT,
+ SYSCONF },
+#endif
+ { "_POSIX_THREAD_PROCESS_SHARED", _SC_THREAD_PROCESS_SHARED, SYSCONF },
+ { "_POSIX_THREAD_SAFE_FUNCTIONS", _SC_THREAD_SAFE_FUNCTIONS, SYSCONF },
+ { "_POSIX_TIMERS", _SC_TIMERS, SYSCONF },
+ { "TIMER_MAX", _SC_TIMER_MAX, SYSCONF },
+#ifdef _POSIX_TZNAME_MAX
+ { "_POSIX_TZNAME_MAX", _SC_TZNAME_MAX, SYSCONF },
+#else
+ { "_POSIX_TZNAME_MAX", _POSIX_TZNAME_MAX, CONSTANT },
+#endif
+ { "_POSIX_VERSION", _SC_VERSION, SYSCONF },
+#ifdef _SC_T_IOV_MAX
+ { "_T_IOV_MAX", _SC_T_IOV_MAX, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_CRYPT
+ { "_XOPEN_CRYPT", _SC_XOPEN_CRYPT, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_ENH_I18N
+ { "_XOPEN_ENH_I18N", _SC_XOPEN_ENH_I18N, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_LEGACY
+ { "_XOPEN_LEGACY", _SC_XOPEN_LEGACY, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_REALTIME
+ { "_XOPEN_REALTIME", _SC_XOPEN_REALTIME, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_REALTIME_THREADS
+ { "_XOPEN_REALTIME_THREADS", _SC_XOPEN_REALTIME_THREADS, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_SHM
+ { "_XOPEN_SHM", _SC_XOPEN_SHM, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_UNIX
+ { "_XOPEN_UNIX", _SC_XOPEN_UNIX, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_VERSION
+ { "_XOPEN_VERSION", _SC_XOPEN_VERSION, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_XCU_VERSION
+ { "_XOPEN_XCU_VERSION", _SC_XOPEN_XCU_VERSION, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_XPG2
+ { "_XOPEN_XPG2", _SC_XOPEN_XPG2, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_XPG3
+ { "_XOPEN_XPG3", _SC_XOPEN_XPG3, SYSCONF },
+#endif
+#ifdef _SC_XOPEN_XPG4
+ { "_XOPEN_XPG4", _SC_XOPEN_XPG4, SYSCONF },
+#endif
+ /* POSIX.2 */
+#ifdef _SC_BC_BASE_MAX
+ { "BC_BASE_MAX", _SC_BC_BASE_MAX, SYSCONF },
+ { "POSIX2_BC_BASE_MAX", _SC_BC_BASE_MAX, SYSCONF },
+#else
+ { "BC_BASE_MAX", _POSIX2_BC_BASE_MAX, CONSTANT },
+#endif
+#ifdef _SC_BC_BASE_MAX
+ { "BC_DIM_MAX", _SC_BC_DIM_MAX, SYSCONF },
+ { "POSIX2_BC_DIM_MAX", _SC_BC_DIM_MAX, SYSCONF },
+#else
+ { "BC_DIM_MAX", _POSIX2_BC_DIM_MAX, CONSTANT },
+#endif
+#ifdef _SC_BC_SCALE_MAX
+ { "BC_SCALE_MAX", _SC_BC_SCALE_MAX, SYSCONF },
+ { "POSIX2_BC_SCALE_MAX", _SC_BC_SCALE_MAX, SYSCONF },
+#else
+ { "BC_SCALE_MAX", _POSIX2_BC_SCALE_MAX, CONSTANT },
+#endif
+#ifdef _SC_BC_STRING_MAX
+ { "BC_STRING_MAX", _SC_BC_STRING_MAX, SYSCONF },
+ { "POSIX2_BC_STRING_MAX", _SC_BC_STRING_MAX, SYSCONF },
+#else
+ { "BC_STRING_MAX", _POSIX2_BC_STRING_MAX, CONSTANT },
+ { "POSIX2_BC_STRING_MAX", _POSIX2_BC_STRING_MAX, CONSTANT },
+#endif
+#ifdef _SC_CHARCLASS_NAME_MAX
+ { "CHARCLASS_NAME_MAX", _SC_CHARCLASS_NAME_MAX, SYSCONF },
+#endif
+#ifdef _SC_COLL_WEIGHTS_MAX
+ { "COLL_WEIGHTS_MAX", _SC_COLL_WEIGHTS_MAX, SYSCONF },
+ { "POSIX2_COLL_WEIGHTS_MAX", _SC_COLL_WEIGHTS_MAX, SYSCONF },
+#else
+ { "COLL_WEIGHTS_MAX", _POSIX2_COLL_WEIGHTS_MAX, CONSTANT },
+ { "POSIX2_COLL_WEIGHTS_MAX", _POSIX2_COLL_WEIGHTS_MAX, CONSTANT },
+#endif
+#ifdef _SC_EQUIV_CLASS_MAX
+ { "EQUIV_CLASS_MAX", _SC_EQUIV_CLASS_MAX, SYSCONF },
+#else
+ { "EQUIV_CLASS_MAX", _POSIX2_EQUIV_CLASS_MAX, CONSTANT },
+#endif
+#ifdef _SC_EXPR_NEST_MAX
+ { "EXPR_NEST_MAX", _SC_EXPR_NEST_MAX, SYSCONF },
+ { "POSIX2_EXPR_NEST_MAX", _SC_EXPR_NEST_MAX, SYSCONF },
+#else
+ { "EXPR_NEST_MAX", _POSIX2_EXPR_NEST_MAX, CONSTANT },
+ { "POSIX2_EXPR_NEST_MAX", _POSIX2_EXPR_NEST_MAX, CONSTANT },
+#endif
+#ifdef _SC_LINE_MAX
+ { "LINE_MAX", _SC_LINE_MAX, SYSCONF },
+ { "_POSIX2_LINE_MAX", _SC_LINE_MAX, SYSCONF },
+ { "POSIX2_LINE_MAX", _SC_LINE_MAX, SYSCONF },
+#else
+ { "LINE_MAX", _POSIX2_LINE_MAX, CONSTANT },
+ { "_POSIX2_LINE_MAX", _POSIX2_LINE_MAX, CONSTANT },
+ { "POSIX2_LINE_MAX", _POSIX2_LINE_MAX, CONSTANT },
+#endif
+#ifdef _SC_RE_DUP_MAX
+ { "POSIX2_RE_DUP_MAX", _SC_RE_DUP_MAX, SYSCONF },
+ { "RE_DUP_MAX", _SC_RE_DUP_MAX, SYSCONF },
+#else
+ { "POSIX2_RE_DUP_MAX", _POSIX2_RE_DUP_MAX, CONSTANT },
+ { "RE_DUP_MAX", _POSIX2_RE_DUP_MAX, CONSTANT },
+#endif
+ { "POSIX2_CHAR_TERM", _SC_2_CHAR_TERM, SYSCONF },
+ { "POSIX2_C_BIND", _SC_2_C_BIND, SYSCONF },
+ { "POSIX2_C_DEV", _SC_2_C_DEV, SYSCONF },
+#ifdef _SC_2_C_VERSION
+ { "POSIX2_C_VERSION", _SC_2_C_VERSION, SYSCONF },
+#endif
+ { "POSIX2_FORT_DEV", _SC_2_FORT_DEV, SYSCONF },
+ { "POSIX2_FORT_RUN", _SC_2_FORT_RUN, SYSCONF },
+ { "POSIX2_LOCALEDEF", _SC_2_LOCALEDEF, SYSCONF },
+ { "POSIX2_SW_DEV", _SC_2_SW_DEV, SYSCONF },
+ { "POSIX2_UPE", _SC_2_UPE, SYSCONF },
+ { "POSIX2_VERSION", _SC_2_VERSION, SYSCONF },
+
+ { "PATH", _CS_PATH, CONFSTR },
+ { "CS_PATH", _CS_PATH, CONFSTR },
+
+ /* LFS */
+#ifdef _CS_LFS_CFLAGS
+ { "LFS_CFLAGS", _CS_LFS_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_LFS_LDFLAGS
+ { "LFS_LDFLAGS", _CS_LFS_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_LFS_LIBS
+ { "LFS_LIBS", _CS_LFS_LIBS, CONFSTR },
+#endif
+#ifdef _CS_LFS_LINTFLAGS
+ { "LFS_LINTFLAGS", _CS_LFS_LINTFLAGS, CONFSTR },
+#endif
+#ifdef _CS_LFS64_CFLAGS
+ { "LFS64_CFLAGS", _CS_LFS64_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_LFS64_LDFLAGS
+ { "LFS64_LDFLAGS", _CS_LFS64_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_LFS64_LIBS
+ { "LFS64_LIBS", _CS_LFS64_LIBS, CONFSTR },
+#endif
+
+#ifdef _CS_LFS64_LINTFLAGS
+ { "LFS64_LINTFLAGS", _CS_LFS64_LINTFLAGS, CONFSTR },
+#endif
+
+ /* Programming environments. */
+#ifdef _CS_V5_WIDTH_RESTRICTED_ENVS
+ { "_XBS5_WIDTH_RESTRICTED_ENVS", _CS_V5_WIDTH_RESTRICTED_ENVS, CONFSTR },
+ { "XBS5_WIDTH_RESTRICTED_ENVS", _CS_V5_WIDTH_RESTRICTED_ENVS, CONFSTR },
+#endif
+
+#ifdef _SC_XBS5_ILP32_OFF32
+ { "_XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32, SYSCONF },
+#endif
+#ifdef _CS_XBS5_ILP32_OFF32_CFLAGS
+ { "XBS5_ILP32_OFF32_CFLAGS", _CS_XBS5_ILP32_OFF32_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_ILP32_OFF32_LDFLAGS
+ { "XBS5_ILP32_OFF32_LDFLAGS", _CS_XBS5_ILP32_OFF32_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_ILP32_OFF32_LIBS
+ { "XBS5_ILP32_OFF32_LIBS", _CS_XBS5_ILP32_OFF32_LIBS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_ILP32_OFF32_LINTFLAGS
+ { "XBS5_ILP32_OFF32_LINTFLAGS", _CS_XBS5_ILP32_OFF32_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_XBS5_ILP32_OFFBIG
+ { "_XBS5_ILP32_OFFBIG", _SC_XBS5_ILP32_OFFBIG, SYSCONF },
+#endif
+#ifdef _CS_XBS5_ILP32_OFFBIG_CFLAGS
+ { "XBS5_ILP32_OFFBIG_CFLAGS", _CS_XBS5_ILP32_OFFBIG_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_ILP32_OFFBIG_LDFLAGS
+ { "XBS5_ILP32_OFFBIG_LDFLAGS", _CS_XBS5_ILP32_OFFBIG_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_ILP32_OFFBIG_LIBS
+ { "XBS5_ILP32_OFFBIG_LIBS", _CS_XBS5_ILP32_OFFBIG_LIBS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
+ { "XBS5_ILP32_OFFBIG_LINTFLAGS", _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_XBS5_LP64_OFF64
+ { "_XBS5_LP64_OFF64", _SC_XBS5_LP64_OFF64, SYSCONF },
+#endif
+#ifdef _CS_XBS5_LP64_OFF64_CFLAGS
+ { "XBS5_LP64_OFF64_CFLAGS", _CS_XBS5_LP64_OFF64_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_LP64_OFF64_LDFLAGS
+ { "XBS5_LP64_OFF64_LDFLAGS", _CS_XBS5_LP64_OFF64_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_LP64_OFF64_LIBS
+ { "XBS5_LP64_OFF64_LIBS", _CS_XBS5_LP64_OFF64_LIBS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_LP64_OFF64_LINTFLAGS
+ { "XBS5_LP64_OFF64_LINTFLAGS", _CS_XBS5_LP64_OFF64_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_XBS5_LPBIG_OFFBIG
+ { "_XBS5_LPBIG_OFFBIG", _SC_XBS5_LPBIG_OFFBIG, SYSCONF },
+#endif
+#ifdef _CS_XBS5_LPBIG_OFFBIG_CFLAGS
+ { "XBS5_LPBIG_OFFBIG_CFLAGS", _CS_XBS5_LPBIG_OFFBIG_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
+ { "XBS5_LPBIG_OFFBIG_LDFLAGS", _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_LPBIG_OFFBIG_LIBS
+ { "XBS5_LPBIG_OFFBIG_LIBS", _CS_XBS5_LPBIG_OFFBIG_LIBS, CONFSTR },
+#endif
+#ifdef _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
+ { "XBS5_LPBIG_OFFBIG_LINTFLAGS", _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_V6_ILP32_OFF32
+ { "_POSIX_V6_ILP32_OFF32", _SC_V6_ILP32_OFF32, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V6_ILP32_OFF32_CFLAGS
+ { "POSIX_V6_ILP32_OFF32_CFLAGS", _CS_POSIX_V6_ILP32_OFF32_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+ { "POSIX_V6_ILP32_OFF32_LDFLAGS", _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_ILP32_OFF32_LIBS
+ { "POSIX_V6_ILP32_OFF32_LIBS", _CS_POSIX_V6_ILP32_OFF32_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
+ { "POSIX_V6_ILP32_OFF32_LINTFLAGS", _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _CS_V6_WIDTH_RESTRICTED_ENVS
+ { "_POSIX_V6_WIDTH_RESTRICTED_ENVS", _CS_V6_WIDTH_RESTRICTED_ENVS, CONFSTR },
+ { "POSIX_V6_WIDTH_RESTRICTED_ENVS", _CS_V6_WIDTH_RESTRICTED_ENVS, CONFSTR },
+#endif
+
+#ifdef _SC_V6_ILP32_OFFBIG
+ { "_POSIX_V6_ILP32_OFFBIG", _SC_V6_ILP32_OFFBIG, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
+ { "POSIX_V6_ILP32_OFFBIG_CFLAGS", _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+ { "POSIX_V6_ILP32_OFFBIG_LDFLAGS", _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_ILP32_OFF32_LIBS
+ { "POSIX_V6_ILP32_OFFBIG_LIBS", _CS_POSIX_V6_ILP32_OFFBIG_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
+ { "POSIX_V6_ILP32_OFFBIG_LINTFLAGS", _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_V6_LP64_OFF64
+ { "_POSIX_V6_LP64_OFF64", _SC_V6_LP64_OFF64, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V6_LP64_OFF64_CFLAGS
+ { "POSIX_V6_LP64_OFF64_CFLAGS", _CS_POSIX_V6_LP64_OFF64_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_LP64_OFF64_LDFLAGS
+ { "POSIX_V6_LP64_OFF64_LDFLAGS", _CS_POSIX_V6_LP64_OFF64_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_LP64_OFF64_LIBS
+ { "POSIX_V6_LP64_OFF64_LIBS", _CS_POSIX_V6_LP64_OFF64_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
+ { "POSIX_V6_LP64_OFF64_LINTFLAGS", _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_V6_LPBIG_OFFBIG
+ { "_POSIX_V6_LPBIG_OFFBIG", _SC_V6_LPBIG_OFFBIG, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
+ { "POSIX_V6_LPBIG_OFFBIG_CFLAGS", _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
+ { "POSIX_V6_LPBIG_OFFBIG_LDFLAGS", _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
+ { "POSIX_V6_LPBIG_OFFBIG_LIBS", _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+ { "POSIX_V6_LPBIG_OFFBIG_LINTFLAGS", _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_V7_ILP32_OFF32
+ { "_POSIX_V7_ILP32_OFF32", _SC_V7_ILP32_OFF32, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFF32_CFLAGS
+ { "POSIX_V7_ILP32_OFF32_CFLAGS", _CS_POSIX_V7_ILP32_OFF32_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
+ { "POSIX_V7_ILP32_OFF32_LDFLAGS", _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFF32_LIBS
+ { "POSIX_V7_ILP32_OFF32_LIBS", _CS_POSIX_V7_ILP32_OFF32_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
+ { "POSIX_V7_ILP32_OFF32_LINTFLAGS", _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _CS_V7_WIDTH_RESTRICTED_ENVS
+ { "_POSIX_V7_WIDTH_RESTRICTED_ENVS", _CS_V7_WIDTH_RESTRICTED_ENVS, CONFSTR },
+ { "POSIX_V7_WIDTH_RESTRICTED_ENVS", _CS_V7_WIDTH_RESTRICTED_ENVS, CONFSTR },
+#endif
+
+#ifdef _SC_V7_ILP32_OFFBIG
+ { "_POSIX_V7_ILP32_OFFBIG", _SC_V7_ILP32_OFFBIG, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
+ { "POSIX_V7_ILP32_OFFBIG_CFLAGS", _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
+ { "POSIX_V7_ILP32_OFFBIG_LDFLAGS", _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFFBIG_LIBS
+ { "POSIX_V7_ILP32_OFFBIG_LIBS", _CS_POSIX_V7_ILP32_OFFBIG_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
+ { "POSIX_V7_ILP32_OFFBIG_LINTFLAGS", _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_V7_LP64_OFF64
+ { "_POSIX_V7_LP64_OFF64", _SC_V7_LP64_OFF64, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V7_LP64_OFF64_CFLAGS
+ { "POSIX_V7_LP64_OFF64_CFLAGS", _CS_POSIX_V7_LP64_OFF64_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LP64_OFF64_LDFLAGS
+ { "POSIX_V7_LP64_OFF64_LDFLAGS", _CS_POSIX_V7_LP64_OFF64_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LP64_OFF64_LIBS
+ { "POSIX_V7_LP64_OFF64_LIBS", _CS_POSIX_V7_LP64_OFF64_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LP64_OFF64_LINTFLAGS
+ { "POSIX_V7_LP64_OFF64_LINTFLAGS", _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_V7_LPBIG_OFFBIG
+ { "_POSIX_V7_LPBIG_OFFBIG", _SC_V7_LPBIG_OFFBIG, SYSCONF },
+#endif
+#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
+ { "POSIX_V7_LPBIG_OFFBIG_CFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
+ { "POSIX_V7_LPBIG_OFFBIG_LDFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+ { "POSIX_V7_LPBIG_OFFBIG_LIBS", _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, CONFSTR },
+#endif
+#ifdef _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+ { "POSIX_V7_LPBIG_OFFBIG_LINTFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, CONFSTR },
+#endif
+
+#ifdef _SC_ADVISORY_INFO
+ { "_POSIX_ADVISORY_INFO", _SC_ADVISORY_INFO, SYSCONF },
+#endif
+#ifdef _SC_BARRIERS
+ { "_POSIX_BARRIERS", _SC_BARRIERS, SYSCONF },
+#endif
+#ifdef _SC_BASE
+ { "_POSIX_BASE", _SC_BASE, SYSCONF },
+#endif
+#ifdef _SC_C_LANG_SUPPORT
+ { "_POSIX_C_LANG_SUPPORT", _SC_C_LANG_SUPPORT, SYSCONF },
+#endif
+#ifdef _SC_C_LANG_SUPPORT_R
+ { "_POSIX_C_LANG_SUPPORT_R", _SC_C_LANG_SUPPORT_R, SYSCONF },
+#endif
+ { "_POSIX_CLOCK_SELECTION", _SC_CLOCK_SELECTION, SYSCONF },
+ { "_POSIX_CPUTIME", _SC_CPUTIME, SYSCONF },
+ { "_POSIX_THREAD_CPUTIME", _SC_THREAD_CPUTIME, SYSCONF },
+#ifdef _SC_DEVICE_SPECIFIC
+ { "_POSIX_DEVICE_SPECIFIC", _SC_DEVICE_SPECIFIC, SYSCONF },
+#endif
+#ifdef _SC_DEVICE_SPECIFIC_R
+ { "_POSIX_DEVICE_SPECIFIC_R", _SC_DEVICE_SPECIFIC_R, SYSCONF },
+#endif
+#ifdef _SC_FD_MGMT
+ { "_POSIX_FD_MGMT", _SC_FD_MGMT, SYSCONF },
+#endif
+#ifdef _SC_FIFO
+ { "_POSIX_FIFO", _SC_FIFO, SYSCONF },
+#endif
+#ifdef _SC_PIPE
+ { "_POSIX_PIPE", _SC_PIPE, SYSCONF },
+#endif
+#ifdef _SC_FILE_ATTRIBUTES
+ { "_POSIX_FILE_ATTRIBUTES", _SC_FILE_ATTRIBUTES, SYSCONF },
+#endif
+#ifdef _SC_FILE_LOCKING
+ { "_POSIX_FILE_LOCKING", _SC_FILE_LOCKING, SYSCONF },
+#endif
+#ifdef _SC_FILE_SYSTEM
+ { "_POSIX_FILE_SYSTEM", _SC_FILE_SYSTEM, SYSCONF },
+#endif
+ { "_POSIX_MONOTONIC_CLOCK", _SC_MONOTONIC_CLOCK, SYSCONF },
+#ifdef _SC_MULTI_PROCESS
+ { "_POSIX_MULTI_PROCESS", _SC_MULTI_PROCESS, SYSCONF },
+#endif
+#ifdef _SC_SINGLE_PROCESS
+ { "_POSIX_SINGLE_PROCESS", _SC_SINGLE_PROCESS, SYSCONF },
+#endif
+#ifdef _SC_NETWORKING
+ { "_POSIX_NETWORKING", _SC_NETWORKING, SYSCONF },
+#endif
+ { "_POSIX_READER_WRITER_LOCKS", _SC_READER_WRITER_LOCKS, SYSCONF },
+ { "_POSIX_SPIN_LOCKS", _SC_SPIN_LOCKS, SYSCONF },
+ { "_POSIX_REGEXP", _SC_REGEXP, SYSCONF },
+#ifdef _SC_REGEX_VERSION
+ { "_REGEX_VERSION", _SC_REGEX_VERSION, SYSCONF },
+#endif
+ { "_POSIX_SHELL", _SC_SHELL, SYSCONF },
+#ifdef _SC_SIGNALS
+ { "_POSIX_SIGNALS", _SC_SIGNALS, SYSCONF },
+#endif
+ { "_POSIX_SPAWN", _SC_SPAWN, SYSCONF },
+#ifdef _SC_SPORADIC_SERVER
+ { "_POSIX_SPORADIC_SERVER", _SC_SPORADIC_SERVER, SYSCONF },
+#endif
+#ifdef _SC_THREAD_SPORADIC_SERVER
+ { "_POSIX_THREAD_SPORADIC_SERVER", _SC_THREAD_SPORADIC_SERVER, SYSCONF },
+#endif
+#ifdef _SC_SYSTEM_DATABASE
+ { "_POSIX_SYSTEM_DATABASE", _SC_SYSTEM_DATABASE, SYSCONF },
+#endif
+#ifdef _SC_SYSTEM_DATABASE_R
+ { "_POSIX_SYSTEM_DATABASE_R", _SC_SYSTEM_DATABASE_R, SYSCONF },
+#endif
+#ifdef _SC_TIMEOUTS
+ { "_POSIX_TIMEOUTS", _SC_TIMEOUTS, SYSCONF },
+#endif
+#ifdef _SC_TYPED_MEMORY_OBJECTS
+ { "_POSIX_TYPED_MEMORY_OBJECTS", _SC_TYPED_MEMORY_OBJECTS, SYSCONF },
+#endif
+#ifdef _SC_USER_GROUPS
+ { "_POSIX_USER_GROUPS", _SC_USER_GROUPS, SYSCONF },
+#endif
+#ifdef _SC_USER_GROUPS_R
+ { "_POSIX_USER_GROUPS_R", _SC_USER_GROUPS_R, SYSCONF },
+#endif
+ { "POSIX2_PBS", _SC_2_PBS, SYSCONF },
+ { "POSIX2_PBS_ACCOUNTING", _SC_2_PBS_ACCOUNTING, SYSCONF },
+ { "POSIX2_PBS_LOCATE", _SC_2_PBS_LOCATE, SYSCONF },
+ { "POSIX2_PBS_TRACK", _SC_2_PBS_TRACK, SYSCONF },
+ { "POSIX2_PBS_MESSAGE", _SC_2_PBS_MESSAGE, SYSCONF },
+ { "SYMLOOP_MAX", _SC_SYMLOOP_MAX, SYSCONF },
+ { "STREAM_MAX", _SC_STREAM_MAX, SYSCONF },
+ { "AIO_LISTIO_MAX", _SC_AIO_LISTIO_MAX, SYSCONF },
+ { "AIO_MAX", _SC_AIO_MAX, SYSCONF },
+#ifdef _SC_AIO_PRIO_DELTA_MAX
+ { "AIO_PRIO_DELTA_MAX", _SC_AIO_PRIO_DELTA_MAX, SYSCONF },
+#endif
+ { "DELAYTIMER_MAX", _SC_DELAYTIMER_MAX, SYSCONF },
+ { "HOST_NAME_MAX", _SC_HOST_NAME_MAX, SYSCONF },
+ { "LOGIN_NAME_MAX", _SC_LOGIN_NAME_MAX, SYSCONF },
+ { "MQ_OPEN_MAX", _SC_MQ_OPEN_MAX, SYSCONF },
+ { "MQ_PRIO_MAX", _SC_MQ_PRIO_MAX, SYSCONF },
+#ifdef _SC_DEVICE_IO
+ { "_POSIX_DEVICE_IO", _SC_DEVICE_IO, SYSCONF },
+#endif
+#ifdef _SC_TRACE
+ { "_POSIX_TRACE", _SC_TRACE, SYSCONF },
+#endif
+#ifdef _SC_TRACE_EVENT_FILTER
+ { "_POSIX_TRACE_EVENT_FILTER", _SC_TRACE_EVENT_FILTER, SYSCONF },
+#endif
+#ifdef _SC_TRACE_INHERIT
+ { "_POSIX_TRACE_INHERIT", _SC_TRACE_INHERIT, SYSCONF },
+#endif
+#ifdef _SC_TRACE_LOG
+ { "_POSIX_TRACE_LOG", _SC_TRACE_LOG, SYSCONF },
+#endif
+ { "RTSIG_MAX", _SC_RTSIG_MAX, SYSCONF },
+#ifdef _SC_SEM_NSEMS_MAX
+ { "SEM_NSEMS_MAX", _SC_SEM_NSEMS_MAX, SYSCONF },
+#endif
+#ifdef _SC_SEM_VALUE_MAX
+ { "SEM_VALUE_MAX", _SC_SEM_VALUE_MAX, SYSCONF },
+#endif
+ { "SIGQUEUE_MAX", _SC_SIGQUEUE_MAX, SYSCONF },
+ { "FILESIZEBITS", _PC_FILESIZEBITS, PATHCONF },
+#ifdef _PC_ALLOC_SIZE_MIN
+ { "POSIX_ALLOC_SIZE_MIN", _PC_ALLOC_SIZE_MIN, PATHCONF },
+#endif
+#ifdef _PC_REC_INCR_XFER_SIZE
+ { "POSIX_REC_INCR_XFER_SIZE", _PC_REC_INCR_XFER_SIZE, PATHCONF },
+#endif
+#ifdef _PC_REC_MAX_XFER_SIZE
+ { "POSIX_REC_MAX_XFER_SIZE", _PC_REC_MAX_XFER_SIZE, PATHCONF },
+#endif
+#ifdef _PC_REC_MIN_XFER_SIZE
+ { "POSIX_REC_MIN_XFER_SIZE", _PC_REC_MIN_XFER_SIZE, PATHCONF },
+#endif
+#ifdef _PC_REC_XFER_ALIGN
+ { "POSIX_REC_XFER_ALIGN", _PC_REC_XFER_ALIGN, PATHCONF },
+#endif
+ { "SYMLINK_MAX", _PC_SYMLINK_MAX, PATHCONF },
+#ifdef _PC_2_SYMLINKS
+ { "POSIX2_SYMLINKS", _PC_2_SYMLINKS, PATHCONF },
+#endif
+
+#ifdef _SC_LEVEL1_ICACHE_SIZE
+ { "LEVEL1_ICACHE_SIZE", _SC_LEVEL1_ICACHE_SIZE, SYSCONF },
+ { "LEVEL1_ICACHE_ASSOC", _SC_LEVEL1_ICACHE_ASSOC, SYSCONF },
+ { "LEVEL1_ICACHE_LINESIZE", _SC_LEVEL1_ICACHE_LINESIZE, SYSCONF },
+ { "LEVEL1_DCACHE_SIZE", _SC_LEVEL1_DCACHE_SIZE, SYSCONF },
+ { "LEVEL1_DCACHE_ASSOC", _SC_LEVEL1_DCACHE_ASSOC, SYSCONF },
+ { "LEVEL1_DCACHE_LINESIZE", _SC_LEVEL1_DCACHE_LINESIZE, SYSCONF },
+#endif
+#ifdef _SC_LEVEL2_CACHE_SIZE
+ { "LEVEL2_CACHE_SIZE", _SC_LEVEL2_CACHE_SIZE, SYSCONF },
+ { "LEVEL2_CACHE_ASSOC", _SC_LEVEL2_CACHE_ASSOC, SYSCONF },
+ { "LEVEL2_CACHE_LINESIZE", _SC_LEVEL2_CACHE_LINESIZE, SYSCONF },
+#endif
+#ifdef _SC_LEVEL3_CACHE_SIZE
+ { "LEVEL3_CACHE_SIZE", _SC_LEVEL3_CACHE_SIZE, SYSCONF },
+ { "LEVEL3_CACHE_ASSOC", _SC_LEVEL3_CACHE_ASSOC, SYSCONF },
+ { "LEVEL3_CACHE_LINESIZE", _SC_LEVEL3_CACHE_LINESIZE, SYSCONF },
+#endif
+#ifdef _SC_LEVEL4_CACHE_SIZE
+ { "LEVEL4_CACHE_SIZE", _SC_LEVEL4_CACHE_SIZE, SYSCONF },
+ { "LEVEL4_CACHE_ASSOC", _SC_LEVEL4_CACHE_ASSOC, SYSCONF },
+ { "LEVEL4_CACHE_LINESIZE", _SC_LEVEL4_CACHE_LINESIZE, SYSCONF },
+#endif
+
+#ifdef _SC_IPV6
+ { "IPV6", _SC_IPV6, SYSCONF },
+ { "_POSIX_IPV6", _SC_IPV6, SYSCONF },
+#endif
+#ifdef _SC_RAW_SOCKETS
+ { "RAW_SOCKETS", _SC_RAW_SOCKETS, SYSCONF },
+ { "_POSIX_RAW_SOCKETS", _SC_RAW_SOCKETS, SYSCONF },
+#endif
+
+ { NULL, 0, SYSCONF }
+ };
+
+static int getconf_print (const struct conf *, const char *, int);
+static int getconf_all (void);
+static int getconf_one (WORD_LIST *);
+static int getconf_internal (const struct conf *, int);
+
+static int
+getconf_internal (const struct conf *c, int all)
+{
+ long l, val;
+ intmax_t v;
+ uintmax_t uv;
+ unsigned long ul;
+#if HAVE_LONG_LONG_INT
+ unsigned long long ull;
+ long long ll;
+#endif
+ int r;
+
+ val = c->call_name;
+ r = EXECUTION_SUCCESS;
+ if (val == VAL_ULONG_MAX)
+ {
+ ul = ULONG_MAX;
+ printf ("%lu", ul);
+ }
+#if HAVE_LONG_LONG_INT
+ else if (val == VAL_ULLONG_MAX)
+ {
+ ull = ULLONG_MAX;
+ printf ("%llu", ull);
+ }
+ else if (val == VAL_LLONG_MIN || val == VAL_LLONG_MAX)
+ {
+ ll = (val == VAL_LLONG_MIN) ? LLONG_MIN : LLONG_MAX;
+ printf ("%lld", ll);
+ }
+#endif
+#if HAVE_LONG_LONG_INT
+ else if (val == VAL_SSIZE_MAX)
+ {
+ ll = SSIZE_MAX;
+ printf ("%lld", ll);
+ }
+ else if (val == VAL_SIZE_MAX)
+ {
+ ul = SIZE_MAX;
+ printf ("%lu", ul);
+ }
+#else
+ else if (val == VAL_SSIZE_MAX)
+ {
+ v = SSIZE_MAX;
+ printf ("%jd", v);
+ }
+ else if (val == VAL_SIZE_MAX)
+ {
+ uv = SIZE_MAX;
+ printf ("%ju", uv);
+ }
+#endif
+ else
+ printf ("%ld", val);
+
+ if (r == EXECUTION_SUCCESS)
+ printf ("\n");
+
+ return (r);
+}
+
+static int
+getconf_all (void)
+{
+ const struct conf *c;
+ char *path;
+ int r;
+
+ r = EXECUTION_SUCCESS;
+ for (c = vars; c->name != NULL; ++c)
+ {
+ printf("%-35s", c->name);
+ path = "/"; /* XXX for now */
+ if (getconf_print (c, path, 1) == EXECUTION_FAILURE)
+ r = EXECUTION_FAILURE;
+ }
+ return (r);
+}
+
+static int
+getconf_one (WORD_LIST *list)
+{
+ const struct conf *c;
+ char *vname, *vpath;
+
+ vname = list->word->word;
+ vpath = (list->next && list->next->word) ? list->next->word->word : 0;
+
+ for (c = vars; c->name != NULL; ++c)
+ {
+ if (strcmp (c->name, vname) == 0 || (strncmp (c->name, "_POSIX_", 7) == 0 &&
+ strcmp (c->name + 7, vname) == 0))
+ break;
+ }
+ if (c->name == NULL)
+ {
+ builtin_error ("%s: unknown variable", vname);
+ return (EXECUTION_FAILURE);
+ }
+
+ if (c->call_name == PATHCONF && list->next == 0)
+ {
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+ else if (c->call_name != PATHCONF && list->next)
+ {
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+
+ return (getconf_print (c, vpath, 0));
+}
+
+static int
+getconf_print (const struct conf *c, const char *vpath, int all)
+{
+ long value;
+ size_t clen;
+ char *cvalue;
+ int cn;
+
+ cn = c->call_name;
+ switch (c->call)
+ {
+ case PATHCONF:
+ errno = 0;
+ value = pathconf (vpath, cn);
+ if (value == -1L)
+ {
+ if (errno)
+ builtin_error ("pathconf %s: %s: %s", c->name, vpath, strerror (errno));
+ printf ("undefined\n");
+ return (EXECUTION_FAILURE);
+ }
+ else
+ printf ("%ld\n", value);
+ return (EXECUTION_SUCCESS);
+
+ case SYSCONF:
+ errno = 0;
+ value = sysconf (cn);
+ if (value == -1L)
+ {
+ if (errno)
+ builtin_error ("%s: %s", c->name, strerror (errno));
+ printf ("undefined\n");
+ return (EXECUTION_FAILURE);
+ }
+ else
+ printf ("%ld\n", value);
+ return (EXECUTION_SUCCESS);
+
+ case CONFSTR:
+ errno = 0;
+ clen = confstr (cn, (char *) NULL, 0);
+ cvalue = (char *) malloc (clen);
+ if (cvalue == NULL)
+ {
+ builtin_error ("memory allocation failure");
+ return (EXECUTION_FAILURE);
+ }
+ if (confstr (c->call_name, cvalue, clen) != clen)
+ {
+ if (errno != 0)
+ builtin_error ("%s: confstr: %s", c->name, strerror (errno));
+ printf ("undefined\n");
+ return (EXECUTION_FAILURE);
+ }
+ else
+ printf ("%.*s\n", (int) clen, cvalue);
+ free (cvalue);
+ return (EXECUTION_SUCCESS);
+
+ case CONSTANT:
+ return (getconf_internal (c, all));
+
+ case UNDEFINED:
+ builtin_error ("%s: undefined", c->name);
+ return (EXECUTION_FAILURE);
+ }
+
+ /* NOTREACHED */
+ return (EX_USAGE);
+}
+
+int
+getconf_builtin (WORD_LIST *list)
+{
+ const struct conf *c;
+ int r, opt, aflag, vflag;
+ char *varg;
+
+ aflag = vflag = 0;
+ varg = 0;
+ reset_internal_getopt ();
+ while ((opt = internal_getopt (list, "ahv:")) != -1)
+ {
+ switch (opt)
+ {
+ case 'a':
+ aflag = 1;
+ break;
+ CASE_HELPOPT;
+ case 'h':
+ builtin_help ();
+ return (EX_USAGE);
+ case 'v':
+ return (EX_DISKFALLBACK);
+ default:
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+ }
+
+ list = loptend;
+ if ((aflag == 0 && list == 0) || (aflag && list) || list_length(list) > 2)
+ {
+ builtin_usage();
+ return (EX_USAGE);
+ }
+
+ r = aflag ? getconf_all () : getconf_one (list);
+ return r;
+}
+
+static char *getconf_doc[] = {
+ "Display values of system limits and options.",
+ "",
+ "getconf writes the current value of a configurable system limit or",
+ "option variable to the standard output.",
+ (char *)NULL
+};
+
+struct builtin getconf_struct = {
+ "getconf",
+ getconf_builtin,
+ BUILTIN_ENABLED,
+ getconf_doc,
+ "getconf -[ah] or getconf [-v spec] sysvar or getconf [-v spec] pathvar pathname",
+ 0
+};
diff --git a/examples/loadables/getconf.h b/examples/loadables/getconf.h
new file mode 100644
index 00000000..b8b9f102
--- /dev/null
+++ b/examples/loadables/getconf.h
@@ -0,0 +1,136 @@
+/*
+ Copyright (C) 2021 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash.
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+/* getconf.h -- replacement definitions for ones the system doesn't provide
+ and don't appear in <typemax.h> */
+
+#ifndef _GETCONF_H
+#define _GETCONF_H
+
+/* Some systems do not define these; use POSIX.2 minimum recommended values. */
+#ifndef _POSIX2_COLL_WEIGHTS_MAX
+# define _POSIX2_COLL_WEIGHTS_MAX 2
+#endif
+
+/* If we're on a posix system, but the system doesn't define the necessary
+ constants, use posix.1 minimum values. */
+#if defined (_POSIX_VERSION)
+
+#ifndef _POSIX_ARG_MAX
+# define _POSIX_ARG_MAX 4096
+#endif
+#ifndef _POSIX_CHILD_MAX
+# define _POSIX_CHILD_MAX 6
+#endif
+#ifndef _POSIX_LINK_MAX
+# define _POSIX_LINK_MAX 8
+#endif
+#ifndef _POSIX_MAX_CANON
+# define _POSIX_MAX_CANON 255
+#endif
+#ifndef _POSIX_MAX_INPUT
+# define _POSIX_MAX_INPUT 255
+#endif
+#ifndef _POSIX_NAME_MAX
+# define _POSIX_NAME_MAX 14
+#endif
+#ifndef _POSIX_NGROUPS_MAX
+# define _POSIX_NGROUPS_MAX 0
+#endif
+#ifndef _POSIX_OPEN_MAX
+# define _POSIX_OPEN_MAX 16
+#endif
+#ifndef _POSIX_PATH_MAX
+# define _POSIX_PATH_MAX 255
+#endif
+#ifndef _POSIX_PIPE_BUF
+# define _POSIX_PIPE_BUF 512
+#endif
+#ifndef _POSIX_SSIZE_MAX
+# define _POSIX_SSIZE_MAX 32767
+#endif
+#ifndef _POSIX_STREAM_MAX
+# define _POSIX_STREAM_MAX 8
+#endif
+#ifndef _POSIX_TZNAME_MAX
+# define _POSIX_TZNAME_MAX 3
+#endif
+
+#ifndef _POSIX2_BC_BASE_MAX
+# define _POSIX2_BC_BASE_MAX 99
+#endif
+#ifndef _POSIX2_BC_DIM_MAX
+# define _POSIX2_BC_DIM_MAX 2048
+#endif
+#ifndef _POSIX2_BC_SCALE_MAX
+# define _POSIX2_BC_SCALE_MAX 99
+#endif
+#ifndef _POSIX2_BC_STRING_MAX
+# define _POSIX2_BC_STRING_MAX 1000
+#endif
+#ifndef _POSIX2_EQUIV_CLASS_MAX
+# define _POSIX2_EQUIV_CLASS_MAX 2
+#endif
+#ifndef _POSIX2_EXPR_NEST_MAX
+# define _POSIX2_EXPR_NEST_MAX 32
+#endif
+#ifndef _POSIX2_LINE_MAX
+# define _POSIX2_LINE_MAX 2048
+#endif
+#ifndef _POSIX2_RE_DUP_MAX
+# define _POSIX2_RE_DUP_MAX 255
+#endif
+
+#endif /* _POSIX_VERSION */
+
+/* ANSI/ISO C, POSIX.1-200x, XPG 4.2, and C language type limits.
+ Defined only if the system include files and <typemax.h> don't. */
+
+#ifndef CHAR_MAX
+# define CHAR_MAX 127
+#endif
+#ifndef CHAR_MIN
+# define CHAR_MIN -128
+#endif
+#ifndef SCHAR_MAX
+# define SCHAR_MAX 127
+#endif
+#ifndef SCHAR_MIN
+# define SCHAR_MIN -128
+#endif
+
+#ifndef INT_BIT
+# define INT_BIT (sizeof (int) * CHAR_BIT)
+#endif
+
+#ifndef LONG_BIT
+# define LONG_BIT (sizeof (long int) * CHAR_BIT)
+#endif
+
+#ifndef WORD_BIT
+# define WORD_BIT (sizeof (int) * CHAR_BIT)
+#endif
+
+#if !defined (PRIdMAX)
+# if HAVE_LONG_LONG
+# define PRIdMAX "lld"
+# else
+# define PRIdMAX "ld"
+# endif
+#endif
+
+#endif /* _GETCONF_H */
diff --git a/examples/loadables/head.c b/examples/loadables/head.c
index 1edca6c5..f9f022a6 100644
--- a/examples/loadables/head.c
+++ b/examples/loadables/head.c
@@ -79,11 +79,13 @@ file_head (fp, cnt)
{
while ((ch = getc (fp)) != EOF)
{
+ QUIT;
if (putchar (ch) == EOF)
{
builtin_error ("write error: %s", strerror (errno));
return EXECUTION_FAILURE;
}
+ QUIT;
if (ch == '\n')
break;
}
@@ -141,6 +143,7 @@ head_builtin (list)
printf ("%s==> %s <==\n", opt ? "" : "\n", l->word->word);
opt = 0;
}
+ QUIT;
rval = file_head (fp, nline);
fclose (fp);
}
diff --git a/examples/loadables/mkdir.c b/examples/loadables/mkdir.c
index d5d39551..a5b49309 100644
--- a/examples/loadables/mkdir.c
+++ b/examples/loadables/mkdir.c
@@ -228,7 +228,7 @@ char *mkdir_doc[] = {
"a symbolic mode is used, the operations are interpreted relative to",
"an initial mode of \"a=rwx\". The -p option causes any required",
"intermediate directories in PATH to be created. The directories",
- "are created with permssion bits of rwxrwxrwx as modified by the current",
+ "are created with permission bits of rwxrwxrwx as modified by the current",
"umask, plus write and search permissions for the owner. mkdir",
"returns 0 if the directories are created successfully, and non-zero",
"if an error occurs.",
diff --git a/examples/loadables/perl/bperl.c b/examples/loadables/perl/bperl.c
index 77e3f7c1..5b15258b 100644
--- a/examples/loadables/perl/bperl.c
+++ b/examples/loadables/perl/bperl.c
@@ -3,23 +3,24 @@
*/
#include <config.h>
-#include <fcntl.h>
#include <errno.h>
#include "builtins.h"
#include "shell.h"
+#include "common.h"
#ifndef errno
extern int errno;
#endif
-extern char **make_builtin_argv ();
+extern char **make_builtin_argv (WORD_LIST *, int *);
extern char **export_env;
-extern int perl_main();
+extern void perl_close(void);
+extern int perl_main(int, char **, char **);
-bperl_builtin(list)
-WORD_LIST *list;
+int
+bperl_builtin(WORD_LIST *list)
{
char **v;
int c, r;
@@ -31,6 +32,12 @@ WORD_LIST *list;
return r;
}
+void
+bperl_builtin_unload (char *s)
+{
+ perl_close();
+}
+
char *bperl_doc[] = {
"An interface to a perl5 interpreter.",
(char *)0
diff --git a/examples/loadables/perl/iperl.c b/examples/loadables/perl/iperl.c
index 92a60387..89438af1 100644
--- a/examples/loadables/perl/iperl.c
+++ b/examples/loadables/perl/iperl.c
@@ -1,15 +1,29 @@
#include <EXTERN.h> /* from the Perl distribution */
#include <perl.h> /* from the Perl distribution */
-extern void xs_init _((void));
+#define iperl my_perl /* I guess the name `my_perl' is required */
+
+extern void xs_init (pTHX);
static PerlInterpreter *iperl; /*** The Perl interpreter ***/
+static int first = 1;
+
+void
+perl_close (void)
+{
+ PERL_SYS_TERM();
+}
+
int
perl_main(int argc, char **argv, char **env)
{
int r;
+ if (first) {
+ first = 0;
+ PERL_SYS_INIT3(&argc, &argv, &env);
+ }
iperl = perl_alloc();
perl_construct(iperl);
perl_parse(iperl, xs_init, argc, argv, (char **)NULL);
diff --git a/examples/loadables/print.c b/examples/loadables/print.c
index 0120dbf4..d6c59035 100644
--- a/examples/loadables/print.c
+++ b/examples/loadables/print.c
@@ -181,7 +181,8 @@ printargs (list, ofp)
for (sawc = 0, l = list; l; l = l->next)
{
ostr = ansicstr (l->word->word, strlen (l->word->word), 0, &sawc, (int *)0);
- fprintf (ofp, "%s", ostr);
+ if (ostr)
+ fprintf (ofp, "%s", ostr);
free (ostr);
if (sawc)
return (0);
diff --git a/examples/loadables/realpath.c b/examples/loadables/realpath.c
index 0974ac41..ef836713 100644
--- a/examples/loadables/realpath.c
+++ b/examples/loadables/realpath.c
@@ -1,10 +1,13 @@
/*
* realpath -- canonicalize pathnames, resolving symlinks
*
- * usage: realpath [-csv] pathname [pathname...]
+ * usage: realpath [-cqsv] [-a name] pathname [pathname...]
*
- * options: -c check whether or not each resolved path exists
- * -s no output, exit status determines whether path is valid
+ * options: -a name assign each canonicalized pathname to indexed array
+ * variable NAME
+ * -c check whether or not each resolved path exists
+ * -q no output, exit status determines whether path is valid
+ * -s strip . and .. from the pathname only, no symlink resolution
* -v produce verbose output
*
*
@@ -19,7 +22,7 @@
*/
/*
- Copyright (C) 1999-2009 Free Software Foundation, Inc.
+ Copyright (C) 1999-2009,2021,2022 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -61,25 +64,43 @@ extern int errno;
extern char *sh_realpath();
int
-realpath_builtin(list)
-WORD_LIST *list;
+realpath_builtin(WORD_LIST *list)
{
- int opt, cflag, vflag, sflag, es;
- char *r, realbuf[PATH_MAX], *p;
+ int opt, cflag, vflag, qflag, sflag, aflag, es;
+ char *r, realbuf[PATH_MAX], *p, *newpath;
struct stat sb;
+#if defined (ARRAY_VARS)
+ arrayind_t ind;
+ char *aname;
+ SHELL_VAR *v;
+#endif
if (list == 0) {
builtin_usage();
return (EX_USAGE);
}
- vflag = cflag = sflag = 0;
+ vflag = cflag = qflag = aflag = sflag = 0;
+#if defined (ARRAY_VARS)
+ aname = NULL;
+ v = NULL;
+ ind = 0;
+#endif
reset_internal_getopt();
- while ((opt = internal_getopt (list, "csv")) != -1) {
+ while ((opt = internal_getopt (list, "a:cqsv")) != -1) {
switch (opt) {
+#if defined (ARRAY_VARS)
+ case 'a':
+ aflag = 1;
+ aname = list_optarg;
+ break;
+#endif
case 'c':
cflag = 1;
break;
+ case 'q':
+ qflag = 1;
+ break;
case 's':
sflag = 1;
break;
@@ -100,26 +121,61 @@ WORD_LIST *list;
return (EX_USAGE);
}
+#if defined (ARRAY_VARS)
+ if (aflag && legal_identifier (aname) == 0) {
+ sh_invalidid(aname);
+ return (EXECUTION_FAILURE);
+ }
+ if (aname && builtin_unbind_variable (aname) == -2)
+ return (EXECUTION_FAILURE);
+ if (aname) {
+ v = find_or_make_array_variable (aname, 1);
+ if (v == 0 || readonly_p (v) || noassign_p (v)) {
+ if (v && readonly_p (v))
+ err_readonly (aname);
+ return (EXECUTION_FAILURE);
+ } else if (array_p (v) == 0) {
+ builtin_error ("%s: not an indexed array", aname);
+ return (EXECUTION_FAILURE);
+ }
+ if (invisible_p (v))
+ VUNSETATTR (v, att_invisible);
+ array_flush (array_cell (v));
+ }
+#endif
+
for (es = EXECUTION_SUCCESS; list; list = list->next) {
p = list->word->word;
- r = sh_realpath(p, realbuf);
+ if (sflag) {
+ /* sh_canonpath doesn't convert to absolute pathnames */
+ newpath = make_absolute(p, get_string_value("PWD"));
+ r = sh_canonpath(newpath, PATH_CHECKDOTDOT|PATH_CHECKEXISTS);
+ free(newpath);
+ } else
+ r = sh_realpath(p, realbuf);
if (r == 0) {
es = EXECUTION_FAILURE;
- if (sflag == 0)
+ if (qflag == 0)
builtin_error("%s: cannot resolve: %s", p, strerror(errno));
continue;
}
- if (cflag && (stat(realbuf, &sb) < 0)) {
+ if (cflag && (stat(r, &sb) < 0)) {
es = EXECUTION_FAILURE;
- if (sflag == 0)
+ if (qflag == 0)
builtin_error("%s: %s", p, strerror(errno));
continue;
}
- if (sflag == 0) {
+ if (aflag) {
+ bind_array_element (v, ind, r, 0);
+ ind++;
+ }
+ if (qflag == 0) {
if (vflag)
printf ("%s -> ", p);
- printf("%s\n", realbuf);
+ printf("%s\n", r);
}
+ if (sflag)
+ free (r);
}
return es;
}
@@ -128,10 +184,16 @@ char *realpath_doc[] = {
"Display pathname in canonical form.",
"",
"Display the canonicalized version of each PATHNAME argument, resolving",
- "symbolic links. The -c option checks whether or not each resolved name",
- "exists. The -s option produces no output; the exit status determines the",
- "validity of each PATHNAME. The -v option produces verbose output. The",
- "exit status is 0 if each PATHNAME was resolved; non-zero otherwise.",
+ "symbolic links.",
+ "The -a option stores each canonicalized PATHNAME argument into the indexed",
+ "array VARNAME.",
+ "The -c option checks whether or not each resolved name exists.",
+ "The -q option produces no output; the exit status determines the",
+ "validity of each PATHNAME, but any array assignment is still performed.",
+ "If the -s option is supplied, canonicalize . and .. pathname components",
+ "without resolving symbolic links.",
+ "The -v option produces verbose output.",
+ "The exit status is 0 if each PATHNAME was resolved; non-zero otherwise.",
(char *)NULL
};
@@ -140,6 +202,6 @@ struct builtin realpath_struct = {
realpath_builtin, /* function implementing the builtin */
BUILTIN_ENABLED, /* initial flags for builtin */
realpath_doc, /* array of long documentation strings */
- "realpath [-csv] pathname [pathname...]", /* usage synopsis */
+ "realpath [-a varname] [-cqsv] pathname [pathname...]", /* usage synopsis */
0 /* reserved for internal use */
};
diff --git a/examples/loadables/rm.c b/examples/loadables/rm.c
index 0af5493c..d8d1522b 100644
--- a/examples/loadables/rm.c
+++ b/examples/loadables/rm.c
@@ -59,7 +59,8 @@ _remove_directory(const char *dirname)
char *fname;
int fnsize;
#endif
-
+
+ QUIT;
if (*dp->d_name == '.' && (dp->d_name[1] == 0 || (dp->d_name[1] == '.' && dp->d_name[2] == 0)))
continue;
@@ -76,6 +77,7 @@ _remove_directory(const char *dirname)
#ifndef __GNUC__
free (fname);
#endif
+ QUIT;
}
closedir(dir);
@@ -98,6 +100,7 @@ rm_file(const char *fname)
if (unlink (fname) == 0)
return 0;
+ QUIT;
/* If FNAME is a directory glibc returns EISDIR but correct POSIX value
would be EPERM. If we get that error and FNAME is a directory and -r
was supplied, recursively remove the directory and its contents */
@@ -155,6 +158,7 @@ rm_builtin (list)
for (l = list; l; l = l->next)
{
+ QUIT;
if (rm_file(l->word->word) && force == 0)
rval = EXECUTION_FAILURE;
}
diff --git a/examples/loadables/seq.c b/examples/loadables/seq.c
index e5624079..f8eec5bb 100644
--- a/examples/loadables/seq.c
+++ b/examples/loadables/seq.c
@@ -35,6 +35,18 @@
extern int errno;
#endif
+#if defined (PRI_MACROS_BROKEN)
+# undef PRIdMAX
+#endif
+
+#if !defined (PRIdMAX)
+# if HAVE_LONG_LONG
+# define PRIdMAX "lld"
+# else
+# define PRIdMAX "ld"
+# endif
+#endif
+
#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN)
typedef long double floatmax_t;
# define FLOATMAX_CONV "L"
diff --git a/examples/loadables/sleep.c b/examples/loadables/sleep.c
index fc2203d4..204601f5 100644
--- a/examples/loadables/sleep.c
+++ b/examples/loadables/sleep.c
@@ -2,10 +2,12 @@
* sleep -- sleep for fractions of a second
*
* usage: sleep seconds[.fraction]
+ *
+ * as an extension, we support the GNU time interval format (2m20s)
*/
/*
- Copyright (C) 1999-2020 Free Software Foundation, Inc.
+ Copyright (C) 1999-2021 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -44,13 +46,80 @@
#include <stdio.h>
#include "chartypes.h"
-#include "shell.h"
-#include "builtins.h"
-#include "common.h"
+#include "loadables.h"
+
+#define S_SEC 1
+#define S_MIN (60*S_SEC)
+#define S_HOUR (60*S_MIN)
+#define S_DAY (24*S_HOUR)
+
+static int
+parse_gnutimefmt (char *string, long *sp, long *up)
+{
+ int c, r;
+ char *s, *ep;
+ long tsec, tusec, accumsec, accumusec, t;
+ int mult;
+
+ tsec = tusec = 0;
+ accumsec = accumusec = 0;
+ mult = 1;
+
+ for (s = string; s && *s; s++) {
+ r = uconvert(s, &accumsec, &accumusec, &ep);
+ if (r == 0 && *ep == 0)
+ return r;
+ c = *ep;
+ mult = 1;
+ switch (c) {
+ case '\0':
+ case 's':
+ mult = S_SEC;
+ break;
+ case 'm':
+ mult = S_MIN;
+ break;
+ case 'h':
+ mult = S_HOUR;
+ break;
+ case 'd':
+ mult = S_DAY;
+ break;
+ default:
+ return 0;
+ }
+
+ /* multiply the accumulated value by the multiplier */
+ t = accumusec * mult;
+ accumsec = accumsec * mult + (t / 1000000);
+ accumusec = t % 1000000;
+
+ /* add to running total */
+ tsec += accumsec;
+ tusec += accumusec;
+ if (tusec >= 1000000) {
+ tsec++;
+ tusec -= 1000000;
+ }
+
+ /* reset and continue */
+ accumsec = accumusec = 0;
+ mult = 1;
+ if (c == 0)
+ break;
+ s = ep;
+ }
+
+ if (sp)
+ *sp = tsec;
+ if (up)
+ *up = tusec;
+
+ return 1;
+}
int
-sleep_builtin (list)
-WORD_LIST *list;
+sleep_builtin (WORD_LIST *list)
{
long sec, usec;
char *ep;
@@ -72,14 +141,22 @@ WORD_LIST *list;
}
r = uconvert(list->word->word, &sec, &usec, &ep);
- /* Maybe postprocess conversion failures here based on EP */
+ /*
+ * Maybe postprocess conversion failures here based on EP
+ *
+ * A heuristic: if the conversion failed, but the argument appears to
+ * contain a GNU-like interval specifier (e.g. "1m30s"), try to parse
+ * it. If we can't, return the right exit code to tell
+ * execute_builtin to try and execute a disk command instead.
+ */
+ if (r == 0 && (strchr ("dhms", *ep) || strpbrk (list->word->word, "dhms")))
+ r = parse_gnutimefmt (list->word->word, &sec, &usec);
- if (r) {
+ if (r) {
fsleep(sec, usec);
QUIT;
return(EXECUTION_SUCCESS);
- }
-
+ }
builtin_error("%s: bad sleep interval", list->word->word);
return (EXECUTION_FAILURE);
}
@@ -88,6 +165,7 @@ static char *sleep_doc[] = {
"Suspend execution for specified period.",
""
"sleep suspends execution for a minimum of SECONDS[.FRACTION] seconds.",
+ "As an extension, sleep accepts GNU-style time intervals (e.g., 2m30s).",
(char *)NULL
};
diff --git a/examples/loadables/stat.c b/examples/loadables/stat.c
index 52b9580f..1e60e7b6 100644
--- a/examples/loadables/stat.c
+++ b/examples/loadables/stat.c
@@ -3,7 +3,7 @@
/* See Makefile for compilation details. */
/*
- Copyright (C) 2016 Free Software Foundation, Inc.
+ Copyright (C) 2016,2022 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -72,6 +72,13 @@ static char *arraysubs[] =
0
};
+#define DEFTIMEFMT "%a %b %e %k:%M:%S %Z %Y"
+#ifndef TIMELEN_MAX
+# define TIMELEN_MAX 128
+#endif
+
+static char *stattime (time_t, const char *);
+
static int
getstat (fname, flags, sp)
const char *fname;
@@ -253,24 +260,33 @@ statmode(mode)
}
static char *
-stattime (t)
+stattime (t, timefmt)
time_t t;
+ const char *timefmt;
{
char *tbuf, *ret;
+ const char *fmt;
size_t tlen;
+ struct tm *tm;
+
+ fmt = timefmt ? timefmt : DEFTIMEFMT;
+ tm = localtime (&t);
+
+ ret = xmalloc (TIMELEN_MAX);
+
+ tlen = strftime (ret, TIMELEN_MAX, fmt, tm);
+ if (tlen == 0)
+ tlen = strftime (ret, TIMELEN_MAX, DEFTIMEFMT, tm);
- tbuf = ctime (&t);
- tlen = strlen (tbuf);
- ret = savestring (tbuf);
- ret[tlen-1] = '\0';
return ret;
}
static char *
-statval (which, fname, flags, sp)
+statval (which, fname, flags, fmt, sp)
int which;
char *fname;
int flags;
+ char *fmt;
struct stat *sp;
{
int temp;
@@ -296,11 +312,11 @@ statval (which, fname, flags, sp)
case ST_SIZE:
return itos (sp->st_size);
case ST_ATIME:
- return ((flags & 2) ? stattime (sp->st_atime) : itos (sp->st_atime));
+ return ((flags & 2) ? stattime (sp->st_atime, fmt) : itos (sp->st_atime));
case ST_MTIME:
- return ((flags & 2) ? stattime (sp->st_mtime) : itos (sp->st_mtime));
+ return ((flags & 2) ? stattime (sp->st_mtime, fmt) : itos (sp->st_mtime));
case ST_CTIME:
- return ((flags & 2) ? stattime (sp->st_ctime) : itos (sp->st_ctime));
+ return ((flags & 2) ? stattime (sp->st_ctime, fmt) : itos (sp->st_ctime));
case ST_BLKSIZE:
return itos (sp->st_blksize);
case ST_BLOCKS:
@@ -316,11 +332,12 @@ statval (which, fname, flags, sp)
}
static int
-loadstat (vname, var, fname, flags, sp)
+loadstat (vname, var, fname, flags, fmt, sp)
char *vname;
SHELL_VAR *var;
char *fname;
int flags;
+ char *fmt;
struct stat *sp;
{
int i;
@@ -330,7 +347,7 @@ loadstat (vname, var, fname, flags, sp)
for (i = 0; arraysubs[i]; i++)
{
key = savestring (arraysubs[i]);
- value = statval (i, fname, flags, sp);
+ value = statval (i, fname, flags, fmt, sp);
v = bind_assoc_variable (var, vname, key, value, ASS_FORCE);
}
return 0;
@@ -341,15 +358,16 @@ stat_builtin (list)
WORD_LIST *list;
{
int opt, flags;
- char *aname, *fname;
+ char *aname, *fname, *timefmt;
struct stat st;
SHELL_VAR *v;
aname = "STAT";
flags = 0;
+ timefmt = 0;
reset_internal_getopt ();
- while ((opt = internal_getopt (list, "A:Ll")) != -1)
+ while ((opt = internal_getopt (list, "A:F:Ll")) != -1)
{
switch (opt)
{
@@ -362,6 +380,9 @@ stat_builtin (list)
case 'l':
flags |= 2;
break;
+ case 'F':
+ timefmt = list_optarg;
+ break;
CASE_HELPOPT;
default:
builtin_usage ();
@@ -369,6 +390,12 @@ stat_builtin (list)
}
}
+ if (legal_identifier (aname) == 0)
+ {
+ sh_invalidid (aname);
+ return (EXECUTION_FAILURE);
+ }
+
list = loptend;
if (list == 0)
{
@@ -376,6 +403,10 @@ stat_builtin (list)
return (EX_USAGE);
}
+
+#if 0
+ unbind_variable (aname);
+#endif
fname = list->word->word;
if (getstat (fname, flags, &st) < 0)
@@ -384,14 +415,13 @@ stat_builtin (list)
return (EXECUTION_FAILURE);
}
- unbind_variable (aname);
- v = make_new_assoc_variable (aname);
+ v = find_or_make_array_variable (aname, 3);
if (v == 0)
{
builtin_error ("%s: cannot create variable", aname);
return (EXECUTION_FAILURE);
}
- if (loadstat (aname, v, fname, flags, &st) < 0)
+ if (loadstat (aname, v, fname, flags, timefmt, &st) < 0)
{
builtin_error ("%s: cannot assign file status information", aname);
unbind_variable (aname);
@@ -409,11 +439,15 @@ char *stat_doc[] = {
"",
"Take a filename and load the status information returned by a",
"stat(2) call on that file into the associative array specified",
- "by the -A option. The default array name is STAT. If the -L",
- "option is supplied, stat does not resolve symbolic links and",
- "reports information about the link itself. The -l option results",
- "in longer-form listings for some of the fields. The exit status is 0",
- "unless the stat fails or assigning the array is unsuccessful.",
+ "by the -A option. The default array name is STAT.",
+ "",
+ "If the -L option is supplied, stat does not resolve symbolic links",
+ "and reports information about the link itself. The -l option results",
+ "in longer-form listings for some of the fields. When -l is used,",
+ "the -F option supplies a format string passed to strftime(3) to",
+ "display the file time information.",
+ "The exit status is 0 unless the stat fails or assigning the array",
+ "is unsuccessful.",
(char *)NULL
};
diff --git a/examples/loadables/tee.c b/examples/loadables/tee.c
index 283f23f1..0365aa9a 100644
--- a/examples/loadables/tee.c
+++ b/examples/loadables/tee.c
@@ -3,7 +3,7 @@
/* See Makefile for compilation details. */
/*
- Copyright (C) 1999-2009 Free Software Foundation, Inc.
+ Copyright (C) 1999-2021 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -121,6 +121,7 @@ tee_builtin (list)
fl = fl->next;
fl->next = (FLIST *)NULL;
}
+ QUIT;
}
while ((nr = read(0, buf, TEE_BUFSIZE)) > 0)
@@ -137,6 +138,7 @@ tee_builtin (list)
break;
}
bp += nw;
+ QUIT;
}
while (n -= nw);
}
@@ -156,7 +158,8 @@ tee_builtin (list)
tee_flist = tee_flist->next;
free (fl);
}
-
+
+ QUIT;
return (rval);
}
diff --git a/examples/loadables/tty.c b/examples/loadables/tty.c
index febf518b..381df257 100644
--- a/examples/loadables/tty.c
+++ b/examples/loadables/tty.c
@@ -3,7 +3,7 @@
/* See Makefile for compilation details. */
/*
- Copyright (C) 1999-2009 Free Software Foundation, Inc.
+ Copyright (C) 1999-2021 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -55,6 +55,7 @@ tty_builtin (list)
list = loptend;
t = ttyname (0);
+ QUIT;
if (sflag == 0)
puts (t ? t : "not a tty");
return (t ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
diff --git a/examples/misc/aliasconv.bash b/examples/misc/aliasconv.bash
index 22a04472..22a04472 100755..100644
--- a/examples/misc/aliasconv.bash
+++ b/examples/misc/aliasconv.bash
diff --git a/examples/misc/aliasconv.sh b/examples/misc/aliasconv.sh
index fe975d66..fe975d66 100755..100644
--- a/examples/misc/aliasconv.sh
+++ b/examples/misc/aliasconv.sh
diff --git a/examples/misc/cshtobash b/examples/misc/cshtobash
index ce49bfc9..ce49bfc9 100755..100644
--- a/examples/misc/cshtobash
+++ b/examples/misc/cshtobash
diff --git a/examples/scripts/bcalc b/examples/scripts/bcalc
new file mode 100644
index 00000000..bc7e2b40
--- /dev/null
+++ b/examples/scripts/bcalc
@@ -0,0 +1,104 @@
+#! /bin/bash
+#
+# bcalc - a coproc example that uses bc to evaluate floating point expressions
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# If supplied command-line arguments, it uses them as the expression to have
+# bc evaluate, and exits after reading the result. Otherwise, it enters an
+# interactive mode, reading expressions and passing them to bc for evaluation,
+# with line editing and history.
+#
+# You could even use this to write bc programs, but you'd have to rework the
+# single-line REPL a little bit to do that (and get over the annoying timeout
+# on the read)
+#
+# Chet Ramey
+# chet.ramey@case.edu
+
+# we force stderr to avoid synchronization issues on calculation errors, even
+# with the read timeout
+init()
+{
+ coproc BC { bc -q 2>&1; }
+ # set scale
+ printf "scale = 10\n" >&${BC[1]}
+ # bash automatically sets BC_PID to the coproc pid; we store it so we
+ # can be sure to use it even after bash reaps the coproc and unsets
+ # the variables
+ coproc_pid=$BC_PID
+}
+
+# not strictly necessary; the pipes will be closed when the program exits
+# but we can use it in reset() below
+fini()
+{
+ eval exec "${BC[1]}>&- ${BC[0]}<&-"
+}
+
+reset()
+{
+ fini # close the old pipes
+
+ sleep 1
+ kill -1 $coproc_pid >/dev/null 2>&1 # make sure the coproc is dead
+ unset coproc_pid
+
+ init
+}
+
+# set a read timeout of a half second to avoid synchronization problems
+calc()
+{
+ printf "%s\n" "$1" >&${BC[1]}
+ read -t 0.5 ANSWER <&${BC[0]}
+}
+
+init
+
+# if we have command line options, process them as a single expression and
+# print the result. we could just run `bc <<<"scale = 10 ; $*"' and be done
+# with it, but we init the coproc before this and run the calculation through
+# the pipes in case we want to do something else with the answer
+
+if [ $# -gt 0 ] ; then
+ calc "$*"
+ printf "%s\n" "$ANSWER"
+ fini
+ exit 0
+fi
+
+# we don't want to save the history anywhere
+unset HISTFILE
+
+while read -e -p 'equation: ' EQN
+do
+ case "$EQN" in
+ '') continue ;;
+ exit|quit) break ;;
+ reset) reset ; continue ;;
+ esac
+
+ # save to the history list
+ history -s "$EQN"
+
+ # run it through bc
+ calc "$EQN"
+ if [ -n "$ANSWER" ] ; then
+ printf "%s\n" "$ANSWER"
+ fi
+done
+fini
+
+exit 0
diff --git a/examples/scripts/inpath b/examples/scripts/inpath
index 95f28bc1..95f28bc1 100755..100644
--- a/examples/scripts/inpath
+++ b/examples/scripts/inpath
diff --git a/examples/scripts/shprompt b/examples/scripts/shprompt
index 098c45f0..098c45f0 100755..100644
--- a/examples/scripts/shprompt
+++ b/examples/scripts/shprompt
diff --git a/examples/scripts/xterm_title b/examples/scripts/xterm_title
index 839003fe..839003fe 100755..100644
--- a/examples/scripts/xterm_title
+++ b/examples/scripts/xterm_title
diff --git a/examples/scripts/zprintf b/examples/scripts/zprintf
index 86f9e95f..86f9e95f 100755..100644
--- a/examples/scripts/zprintf
+++ b/examples/scripts/zprintf
diff --git a/examples/shellmath/LICENSE b/examples/shellmath/LICENSE
new file mode 100644
index 00000000..e3bf3bb7
--- /dev/null
+++ b/examples/shellmath/LICENSE
@@ -0,0 +1,677 @@
+Shellfloat is copyright (c) 2020 by Michael Wood.
+================================================================================
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<https://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<https://www.gnu.org/licenses/why-not-lgpl.html>.
diff --git a/examples/shellmath/README.md b/examples/shellmath/README.md
new file mode 100644
index 00000000..1b472561
--- /dev/null
+++ b/examples/shellmath/README.md
@@ -0,0 +1,166 @@
+# Shellmath
+Introducing decimal arithmetic libraries for the Bash shell, because
+they said it couldn't be done... and because:
+
+.
+
+![image info](./image.png)
+
+## Quick-start guide
+Download this project and source the file `shellmath.sh` into your shell script,
+then fire away at the shellmath API!
+
+The ___basic___ API looks like this:
+```
+ _shellmath_add arg1 arg2 [...] argN
+ _shellmath_subtract arg1 arg2 # means arg1 - arg2
+ _shellmath_multiply arg1 arg2 [...] argN
+ _shellmath_divide arg1 arg2 # means arg1 / arg2
+```
+
+The ___extended___ API introduces one more function:
+```
+ _shellmath_getReturnValue arg
+```
+
+This function optimizes away the need for ___$(___ subshelling ___)___ in order to capture `shellmath`'s output.
+To use this feature, just be sure to set `__shellmath_isOptimized=1` at the top
+of your script. (You can find an example in `faster_e_demo.sh`.)
+
+Operands to the _shellmath_ functions can be integers or decimal
+numbers presented in either standard or scientific notation:
+```
+ _shellmath_add 1.009 4.223e-2
+ _shellmath_getReturnValue sum
+ echo "The sum is $sum"
+```
+Addition and multiplication are of arbitrary arity; try this on for size:
+```
+ _shellmath_multiply 1 2 3 4 5 6
+ _shellmath_getReturnValue sixFactorial
+ echo "6 factorial is $sixFactorial"
+```
+Subtraction and division, OTOH, are exclusively binary operations.
+
+## The demos
+For a gentle introduction to `shellmath` run the demo `slower_e_demo.sh`
+with a small whole-number argument, say 15:
+```
+$ slower_e_demo.sh 15
+e = 2.7182818284589936
+```
+
+This script uses a few `shellmath` API calls to calculate *e*, the mathematical
+constant also known as [Euler's number](https://oeis.org/A001113). The argument
+*15* tells the script to evaluate the *15th-degree* Maclaurin polynomial for *e*.
+(That's the Taylor polynomial centered at 0.) Take a look inside the script to
+see how it uses the `shellmath` APIs.
+
+There is another demo script very much like this one but *different*, and the
+sensitive user can *feel* the difference. Try the following, but don't blink
+or you'll miss it ;)
+```
+$ faster_e_demo.sh 15
+e = 2.7182818284589936
+```
+
+Did you feel the difference? Try the `-t` option with both scripts; this will produce
+timing statistics. Here are my results
+when running from my minGW64 command prompt on Windows 10 with an Intel i3 Core CPU:
+```
+$ for n in {1..5}; do faster_e_demo.sh -t 15 2>&1; done | awk '/^real/ {print $2}'
+0m0.055s
+0m0.051s
+0m0.056s
+0m0.054s
+0m0.054s
+
+$ for n in {1..5}; do slower_e_demo.sh -t 15 2>&1; done | awk '/^real/ {print $2}'
+0m0.498s
+0m0.594s
+0m0.536s
+0m0.511s
+0m0.580s
+```
+
+(When sizing up these timings, do keep in mind that ___we are timing the
+calculation of e from its Maclaurin polynomial. Every invocation of either
+script is exercising the shellmath arithmetic subroutines 31 times.___)
+
+The comment header in `faster_e_demo.sh` explains the optimization and shows
+how to put this faster version to work for you.
+
+## Runtime efficiency competitive with awk and bc
+The file `timingData.txt` captures the results of some timing experiments that compare
+`shellmath` against the GNU versions of the calculators `awk` and `bc`. The experiments
+exercised each of the arithmetic operations and captured the results in a shell variable.
+The result summary below shows that `shellmath` is competitive with `awk` and runs faster
+than `bc` in these experiments. (One commenter noted that the differences in execution speed
+can be partially explained by the fact that `shellmath` and `awk` use finite precision
+whereas `bc` uses arbitrary precision. Another factor in these measurements is the need to
+subshell 'awk' and 'bc' to capture their results, whereas 'shellmath' writes directly to
+the shell's global memory.)
+
+Here are the run times of `shellmath` as a percentage of the `awk` and `bc` equivalents:
+```
+ versus awk versus bc
+ Addition: 82.2% 40.6%
+ Subtraction: 95.9% 50.5%
+ Multiplication: 135.9% 73.3%
+ Division: 80.3% 43.2%
+```
+
+Astute observers will note the experiments provide approximations to the sum, difference,
+product, and quotient of *pi* and *e*. Unfortunately I did not gain insight as to which
+of these values, if any, are
+[transcendental](https://en.wikipedia.org/wiki/Transcendental_number#Possible_transcendental_numbers).
+
+You can find a deeper discussion of shellmath's runtime efficiency
+[here](https://github.com/clarity20/shellmath/wiki/Shellmath-and-runtime-efficiency).
+
+## Background
+The Bash shell does not have built-in operators for decimal arithmetic, making it
+something of an oddity among well-known, widely-used programming languages. For the most part,
+practitioners in need of powerful computational building blocks have naturally opted
+for *other* languages and tools. Their widespread availability has diverted attention
+from the possibility of *implementing* decimal arithmetic in Bash and it's easy to assume
+that this ***cannot*** be done:
+
++ From the indispensable _Bash FAQ_ (on _Greg's Wiki_): [How can I calculate with floating point numbers?](http://mywiki.wooledge.org/BashFAQ/022)
+ *"For most operations... an external program must be used."*
++ From Mendel Cooper's wonderful and encyclopedic _Advanced Bash Scripting Guide_:
+ [Bash does not understand floating point arithmetic. Use bc instead.](https://tldp.org/LDP/abs/html/ops.html#NOFLOATINGPOINT)
++ From a community discussion on Stack Overflow, _How do I use floating point division in bash?_
+ The user's [preferred answer](https://stackoverflow.com/questions/12722095/how-do-i-use-floating-point-division-in-bash#12722107)
+ is a good example of _prevailing thought_ on this subject.
+
+Meanwhile,
+
++ Bash maintainer (BDFL?) Chet Ramey sounds a (brighter?) note in [The Bash Reference Guide, Section 6.5](https://tiswww.case.edu/php/chet/bash/bashref.html#Shell-Arithmetic)
+ by emphasizing what the built-in arithmetic operators ***can*** do.
+
+But finally, a glimmer of hope:
+
++ A [diamond-in-the-rough](http://stackoverflow.com/a/24431665/3776858) buried elsewhere
+ on Stack Overflow.
+ This down-and-dirty milestone computes the decimal quotient of two integer arguments. At a casual
+ glance, it seems to have drawn inspiration from the [Euclidean algorithm](https://mathworld.wolfram.com/EuclideanAlgorithm.html)
+ for computing GCDs, an entirely different approach than `shellmath`'s.
+
+Please try `shellmath` on for size and draw your own conclusions!
+
+## How it works
+`shellmath` splits decimal numbers into their integer and fractional parts,
+performs the appropriate integer operations on the parts, and recombines the results.
+(In the spirit of Bash, numerical overflow is silently ignored.)
+
+Because if we can get carrying, borrowing, place value, and the distributive
+law right, then the sky's the limit! As they say--erm, as they ___said___ in Rome,
+
+ Ad astra per aspera.
+
+## And now...
+You can run your floating-point calculations directly in Bash!
+
+## Please see also:
+[A short discussion on arbitrary precision and shellmath](https://github.com/clarity20/shellmath/wiki/Shellmath-and-arbitrary-precision-arithmetic)
diff --git a/examples/shellmath/assert.sh b/examples/shellmath/assert.sh
new file mode 100644
index 00000000..bc4122ea
--- /dev/null
+++ b/examples/shellmath/assert.sh
@@ -0,0 +1,85 @@
+#!/bin/env bash
+###############################################################################
+# Internal test engine functions
+###############################################################################
+
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+NO_COLOR='\033[0m'
+
+function _shellmath_assert_returnCode()
+{
+ _shellmath_assert_functionReturn -c "$@"
+ return $?
+}
+
+function _shellmath_assert_returnString()
+{
+ _shellmath_assert_functionReturn "$@"
+ return $?
+}
+
+function _shellmath_assert_functionReturn()
+{
+ if [[ $# -lt 2 ]]; then
+ echo "USAGE: ${FUNCNAME[0]} [-c] returnStringOrCode functionName [ functionArgs ... ]"
+ echo " By default, asserts against the string output by the function."
+ echo " Use -c to assert against the numeric return code instead."
+ return "${__shellmath_returnCodes[FAIL]}"
+ fi
+
+ if [[ "${1,,}" == '-c' ]]; then
+ mode=RETURN_CODE
+ shift
+ else
+ mode=RETURN_STRING
+ fi
+
+ expectedReturn="$1"
+ func="$2"
+ shift 2
+
+ args=("$@")
+
+ # Exercise the function in optimized mode; it will run faster by avoiding
+ # subshelling. This also suppresses dumping of function output to stdout.
+ __shellmath_isOptimized=${__shellmath_true}
+ "$func" "${args[@]}"
+ returnCode=$?
+ __shellmath_isOptimized=${__shellmath_false}
+
+ # Fetch the return value(s)
+ local numReturnValues
+ declare -a actualReturn
+ _shellmath_getReturnValueCount numReturnValues
+ if ((numReturnValues == 1)); then
+ _shellmath_getReturnValue actualReturn[0]
+ else
+ # Multiple returns? Join them into one string
+ local _i evalString="_shellmath_getReturnValues"
+ for ((_i=0; _i<numReturnValues; _i++)); do
+ evalString+=" actualReturn[$_i]"
+ done
+ eval "$evalString"
+ fi
+
+ if [[ $mode == RETURN_STRING ]]; then
+ if [[ "${actualReturn[*]}" == "$expectedReturn" ]]; then
+ _shellmath_setReturnValue "${GREEN}ok${NO_COLOR} "
+ return "$__shellmath_SUCCESS"
+ else
+ _shellmath_setReturnValue "${RED}FAIL${NO_COLOR} (${actualReturn[*]}) "
+ return "$__shellmath_FAIL"
+ fi
+ elif [[ $mode == RETURN_CODE ]]; then
+ if [[ "$returnCode" == "$expectedReturn" ]]; then
+ _shellmath_setReturnValue "${GREEN}ok${NO_COLOR} "
+ return "$__shellmath_SUCCESS"
+ else
+ _shellmath_setReturnValue "${RED}FAIL${NO_COLOR} ($returnCode) "
+ return "$__shellmath_FAIL"
+ fi
+ fi
+
+}
+
diff --git a/examples/shellmath/faster_e_demo.sh b/examples/shellmath/faster_e_demo.sh
new file mode 100644
index 00000000..84558a2e
--- /dev/null
+++ b/examples/shellmath/faster_e_demo.sh
@@ -0,0 +1,68 @@
+#!/usr/bin/env bash
+
+###############################################################################
+# This script performs the same task as "slower_e_demo.sh" but with a major
+# performance optimization. The speedup is especially noticeable on GNU
+# emulation layers for Windows such as Cygwin and minGW, where the overhead
+# of subshelling is quite significant.
+#
+# The speedup uses global storage space to simulate pass-and-return by
+# reference so that you can capture the side effects of a function call without
+# writing to stdout and wrapping the call in a subshell. How to use:
+#
+# Turn on "__shellmath_isOptimized" as shown below.
+# Then instead of invoking "mySum = $(_shellmath_add $x $y)",
+# call "_shellmath_add $x $y; _shellmath_getReturnValue mySum".
+###############################################################################
+
+source shellmath.sh
+
+# Setting the '-t' flag will cause the script to time the algorithm
+if [[ "$1" == '-t' ]]; then
+ do_timing=${__shellmath_true}
+ shift
+fi
+
+if [[ $# -ne 1 ]]; then
+ echo "USAGE: ${BASH_SOURCE##*/} [-t] *N*"
+ echo " Approximates 'e' using the N-th order Maclaurin polynomial"
+ echo " (i.e. the Taylor polynomial centered at 0)."
+ echo " Specify the '-t' flag to time the main algorithm."
+ exit 0
+elif [[ ! "$1" =~ ^[0-9]+$ ]]; then
+ echo "Illegal argument. Whole numbers only, please."
+ exit 1
+fi
+
+__shellmath_isOptimized=${__shellmath_true}
+
+
+function run_algorithm()
+{
+ # Initialize
+ n=0; N=$1; zero_factorial=1
+
+ # Initialize "e" to its zeroth-order term
+ _shellmath_divide 1 $zero_factorial
+ _shellmath_getReturnValue term
+ e=$term
+
+ # Compute successive terms T(n) := T(n-1)/n and accumulate into e
+ for ((n=1; n<=N; n++)); do
+ _shellmath_divide "$term" "$n"
+ _shellmath_getReturnValue term
+ _shellmath_add "$e" "$term"
+ _shellmath_getReturnValue e
+ done
+
+ echo "e = $e"
+}
+
+if (( do_timing == __shellmath_true )); then
+ time run_algorithm "$1"
+else
+ run_algorithm "$1"
+fi
+
+exit 0
+
diff --git a/examples/shellmath/image.png b/examples/shellmath/image.png
new file mode 100644
index 00000000..4d3b8988
--- /dev/null
+++ b/examples/shellmath/image.png
Binary files differ
diff --git a/examples/shellmath/runTests.sh b/examples/shellmath/runTests.sh
new file mode 100644
index 00000000..c9687e5f
--- /dev/null
+++ b/examples/shellmath/runTests.sh
@@ -0,0 +1,124 @@
+#!/bin/env bash
+
+###############################################################################
+# runTests.sh
+#
+# Usage: runTests.sh [testFile]
+# where testFile defaults to testCases.in
+#
+# Processes a test file such as the testCases.in included with this package
+###############################################################################
+
+# Process one line from the test cases file. Invoked below through mapfile.
+function _shellmath_runTests()
+{
+ local lineNumber=$1
+ local text=$2
+
+ # Trim leading whitespace
+ [[ $text =~ ^[$' \t']*(.*) ]]
+ text=${BASH_REMATCH[1]}
+
+ # Skip comments and blank lines
+ [[ "$text" =~ ^# || -z $text ]] && return 0
+
+ # Check for line continuation
+ local len="${#text}"
+ if [[ ${text:$((len-1))} == '\' ]]; then
+
+ # Eat the continuation character and add to the buffer
+ __shellfloat_commandBuffer+="${text/%\\/ }"
+
+ # Defer processing
+ return
+
+ # No line continuation
+ else
+
+ # Assemble the command
+ local command=${__shellfloat_commandBuffer}${text}
+ __shellfloat_commandBuffer=""
+
+ words=($command)
+
+ # Expand first word to an assertion function
+ case ${words[0]} in
+
+ Code)
+ words[0]=_shellmath_assert_return${words[0]}
+
+ # Validate next word as a positive integer
+ if [[ ! "${words[1]}" =~ ^[0-9]+$ ]]; then
+ echo Line: "$lineNumber": Command "$command"
+ echo FAIL: \"Code\" requires integer return code
+ return 1
+ else
+ nextWord=2
+ fi
+ ;;
+
+ String)
+ words[0]=_shellmath_assert_return${words[0]}
+ # Allow multiword arguments if quoted
+ if [[ ${words[1]} =~ ^\" ]]; then
+ if [[ ${words[1]} =~ \"$ ]]; then
+ nextWord=2
+ else
+ for ((nextWord=2;;nextWord++)); do
+ if [[ ${words[nextWord]} =~ \"$ ]]; then
+ ((nextWord++))
+ break
+ fi
+ done
+ fi
+ else
+ nextWord=2
+ fi
+ ;;
+
+ Both)
+ ;;
+
+ *)
+ echo -e ${RED}FAIL${NO_COLOR} Line "$lineNumber": Command "$command": Code or String indicator required
+ return 2
+ ;;
+ esac
+
+ # Expand the next word to a shellmath function name
+ words[nextWord]=_shellmath_${words[nextWord]}
+ if ! type -t "${words[nextWord]}" >/dev/null; then
+ echo "${RED}FAIL${NO_COLOR} Line $lineNumber: Command "$command": Syntax error. Required: String|Code value operation args..."
+ return 3
+ fi
+
+ # Run the command, being respectful of shell metacharacters
+ fullCommand="${words[*]}"
+ eval "$fullCommand"
+ local returnString
+ _shellmath_getReturnValue returnString
+ echo -e "$returnString" Line "$lineNumber": "$command"
+
+ fi
+
+}
+
+
+function _main()
+{
+ source shellmath.sh
+ source assert.sh
+
+ # Initialize certain globals. As "public" functions, the arithmetic
+ # functions need to do this themselves, but there are some "private"
+ # functions that need this here when they are auto-tested.
+ _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true
+
+ # Process the test file line-by-line using the above runTests() function
+ mapfile -t -c 1 -C _shellmath_runTests -O 1 < "${1:-testCases.in}"
+
+ exit 0
+}
+
+_main "$@"
+
diff --git a/examples/shellmath/shellmath.sh b/examples/shellmath/shellmath.sh
new file mode 100644
index 00000000..5804ad2a
--- /dev/null
+++ b/examples/shellmath/shellmath.sh
@@ -0,0 +1,1068 @@
+#!/bin/env bash
+################################################################################
+# shellmath.sh
+# Shell functions for floating-point arithmetic using only builtins
+#
+# Copyright (c) 2020 by Michael Wood. All rights reserved.
+#
+# Usage:
+#
+# source _thisPath_/_thisFileName_
+#
+# # Conventional method: call the APIs by subshelling
+# mySum=$( _shellmath_add 202.895 6.00311 )
+# echo $mySum
+#
+# # Optimized method: use hidden globals to simulate more flexible pass-and-return
+# _shellmath_isOptimized=1
+# _shellmath_add 44.2 -87
+# _shellmath_getReturnValue mySum
+# echo $mySum
+#
+################################################################################
+
+
+################################################################################
+# Program constants
+################################################################################
+declare -A -r __shellmath_numericTypes=(
+ [INTEGER]=0
+ [DECIMAL]=1
+)
+
+declare -A -r __shellmath_returnCodes=(
+ [SUCCESS]="0:Success"
+ [FAIL]="1:General failure"
+ [ILLEGAL_NUMBER]="2:Invalid argument; decimal number required: '%s'"
+ [DIVIDE_BY_ZERO]="3:Divide by zero error"
+)
+
+declare -r -i __shellmath_true=1
+declare -r -i __shellmath_false=0
+
+declare __shellmath_SUCCESS __shellmath_FAIL __shellmath_ILLEGAL_NUMBER
+
+################################################################################
+# Program state
+################################################################################
+declare __shellmath_isOptimized=${__shellmath_false}
+declare __shellmath_didPrecalc=${__shellmath_false}
+
+
+################################################################################
+# Error-handling utilities
+################################################################################
+function _shellmath_getReturnCode()
+{
+ local errorName=$1
+ return "${__shellmath_returnCodes[$errorName]%%:*}"
+}
+
+function _shellmath_warn()
+{
+ # Generate an error message and return control to the caller
+ _shellmath_handleError -r "$@"
+ return $?
+}
+
+function _shellmath_exit()
+{
+ # Generate an error message and EXIT THE SCRIPT / interpreter
+ _shellmath_handleError "$@"
+}
+
+function _shellmath_handleError()
+{
+ # Hidden option "-r" causes return instead of exit
+ local returnDontExit=$__shellmath_false
+ if [[ "$1" == "-r" ]]; then
+ returnDontExit=${__shellmath_true}
+ shift
+ fi
+
+ # Format of $1: returnCode:msgTemplate
+ [[ "$1" =~ ^([0-9]+):(.*) ]]
+ returnCode=${BASH_REMATCH[1]}
+ msgTemplate=${BASH_REMATCH[2]}
+ shift
+
+ # Display error msg, making parameter substitutions as needed
+ msgParameters="$*"
+ printf "$msgTemplate" "${msgParameters[@]}"
+
+ if ((returnDontExit)); then
+ return "$returnCode"
+ else
+ exit "$returnCode"
+ fi
+}
+
+
+################################################################################
+# precalc()
+#
+# Pre-calculates certain global data and by setting the global variable
+# "__shellmath_didPrecalc" records that this routine has been called. As an
+# optimization, the caller should check that global to prevent needless
+# invocations.
+################################################################################
+function _shellmath_precalc()
+{
+ # Set a few global constants
+ _shellmath_getReturnCode SUCCESS; __shellmath_SUCCESS=$?
+ _shellmath_getReturnCode FAIL; __shellmath_FAIL=$?
+ _shellmath_getReturnCode ILLEGAL_NUMBER; __shellmath_ILLEGAL_NUMBER=$?
+
+ # Determine the decimal precision to which we can accurately calculate.
+ # To do this we probe for the threshold at which integers overflow and
+ # take the integer floor of that number's base-10 logarithm.
+ # We check the 64-bit, 32-bit and 16-bit thresholds only.
+ if ((2**63 < 2**63-1)); then
+ __shellmath_precision=18
+ __shellmath_maxValue=$((2**63-1))
+ elif ((2**31 < 2**31-1)); then
+ __shellmath_precision=9
+ __shellmath_maxValue=$((2**31-1))
+ else ## ((2**15 < 2**15-1))
+ __shellmath_precision=4
+ __shellmath_maxValue=$((2**15-1))
+ fi
+
+ __shellmath_didPrecalc=$__shellmath_true
+}
+
+
+################################################################################
+# Simulate pass-and-return by reference using a secret global storage array
+################################################################################
+
+declare -a __shellmath_storage
+
+function _shellmath_setReturnValues()
+{
+ local -i _i
+
+ for ((_i=1; _i<=$#; _i++)); do
+ __shellmath_storage[_i]="${!_i}"
+ done
+
+ __shellmath_storage[0]=$#
+}
+
+function _shellmath_getReturnValues()
+{
+ local -i _i
+ local evalString
+
+ for ((_i=1; _i<=$#; _i++)); do
+ evalString+=${!_i}="${__shellmath_storage[_i]}"" "
+ done
+
+ eval "$evalString"
+}
+
+function _shellmath_setReturnValue() { __shellmath_storage=(1 "$1"); }
+function _shellmath_getReturnValue() { eval "$1"=\"${__shellmath_storage[1]}\"; }
+function _shellmath_getReturnValueCount() { eval "$1"=\"${__shellmath_storage[0]}\"; }
+
+################################################################################
+# validateAndParse(numericString)
+# Return Code: SUCCESS or ILLEGAL_NUMBER
+# Return Signature: integerPart fractionalPart isNegative numericType isScientific
+#
+# Validate and parse arguments to the main arithmetic routines
+################################################################################
+
+function _shellmath_validateAndParse()
+{
+ local n="$1"
+ local isNegative=${__shellmath_false}
+ local isScientific=${__shellmath_false}
+ local numericType returnCode
+
+ ((returnCode = __shellmath_SUCCESS))
+
+ # Accept decimals: leading digits (optional), decimal point, trailing digits
+ if [[ "$n" =~ ^[-]?([0-9]*)\.([0-9]+)$ ]]; then
+ local integerPart=${BASH_REMATCH[1]:-0}
+ local fractionalPart=${BASH_REMATCH[2]}
+
+ # Strip superfluous trailing zeros
+ if [[ "$fractionalPart" =~ ^(.*[^0])0*$ ]]; then
+ fractionalPart=${BASH_REMATCH[1]}
+ fi
+
+ numericType=${__shellmath_numericTypes[DECIMAL]}
+
+ # Factor out the negative sign if it is present
+ if [[ "$n" =~ ^- ]]; then
+ isNegative=${__shellmath_true}
+ n=${n:1}
+ fi
+
+ _shellmath_setReturnValues "$integerPart" "$fractionalPart" \
+ $isNegative "$numericType" $isScientific
+ return "$returnCode"
+
+ # Accept integers
+ elif [[ "$n" =~ ^[-]?[0-9]+$ ]]; then
+ numericType=${__shellmath_numericTypes[INTEGER]}
+
+ # Factor out the negative sign if it is present
+ if [[ "$n" =~ ^- ]]; then
+ isNegative=${__shellmath_true}
+ n=${n:1}
+ fi
+
+ _shellmath_setReturnValues "$n" 0 $isNegative "$numericType" $isScientific
+ return "$returnCode"
+
+ # Accept scientific notation: 1e5, 2.44E+10, etc.
+ elif [[ "$n" =~ (.*)[Ee](.*) ]]; then
+ local significand=${BASH_REMATCH[1]}
+ local exponent=${BASH_REMATCH[2]}
+
+ # Validate the significand: optional sign, integer part,
+ # optional decimal point and fractional part
+ if [[ "$significand" =~ ^[-]?([0-9]+)(\.([0-9]+))?$ ]]; then
+
+ isScientific=${__shellmath_true}
+
+ # Separate the integer and fractional parts
+ local sigInteger=${BASH_REMATCH[1]}
+ local sigIntLength=${#sigInteger}
+ local sigFraction=${BASH_REMATCH[3]}
+
+ # Strip superfluous trailing zeros
+ if [[ "$sigFraction" =~ ^(.*[^0])0*$ ]]; then
+ sigFraction=${BASH_REMATCH[1]}
+ fi
+
+ local sigFracLength=${#sigFraction}
+
+ if [[ "$n" =~ ^- ]]; then
+ isNegative=${__shellmath_true}
+ n=${n:1}
+ fi
+
+ # Rewrite the scientifically-notated number in ordinary decimal notation.
+ # IOW, realign the integer and fractional parts. Separate with a space
+ # so they can be returned as two separate values
+ if ((exponent > 0)); then
+ local zeroCount integer fraction
+ ((zeroCount = exponent - sigFracLength))
+ if ((zeroCount > 0)); then
+ printf -v zeros "%0*d" "$zeroCount" 0
+ n=${sigInteger}${sigFraction}${zeros}" 0"
+ numericType=${__shellmath_numericTypes[INTEGER]}
+ elif ((zeroCount < 0)); then
+ n=${sigInteger}${sigFraction:0:exponent}" "${sigFraction:exponent}
+ numericType=${__shellmath_numericTypes[DECIMAL]}
+ else
+ n=${sigInteger}${sigFraction}" 0"
+ numericType=${__shellmath_numericTypes[INTEGER]}
+ fi
+ integer=${n% *}; fraction=${n#* }
+ _shellmath_setReturnValues "$integer" "$fraction" $isNegative "$numericType" $isScientific
+ return "$returnCode"
+
+ elif ((exponent < 0)); then
+ local zeroCount integer fraction
+ ((zeroCount = -exponent - sigIntLength))
+ if ((zeroCount > 0)); then
+ printf -v zeros "%0*d" "$zeroCount" 0
+ n="0 "${zeros}${sigInteger}${sigFraction}
+ numericType=${__shellmath_numericTypes[DECIMAL]}
+ elif ((zeroCount < 0)); then
+ n=${sigInteger:0:-zeroCount}" "${sigInteger:(-zeroCount)}${sigFraction}
+ numericType=${__shellmath_numericTypes[DECIMAL]}
+ else
+ n="0 "${sigInteger}${sigFraction}
+ numericType=${__shellmath_numericTypes[DECIMAL]}
+ fi
+ integer=${n% *}; fraction=${n#* }
+ _shellmath_setReturnValues "$integer" "$fraction" $isNegative "$numericType" $isScientific
+ return "$returnCode"
+
+ else
+ # exponent == 0 means the number is already aligned as desired
+ numericType=${__shellmath_numericTypes[DECIMAL]}
+ _shellmath_setReturnValues "$sigInteger" "$sigFraction" $isNegative "$numericType" $isScientific
+ return "$returnCode"
+ fi
+
+ # Reject strings like xxx[Ee]yyy where xxx, yyy are not valid numbers
+ else
+ ((returnCode = __shellmath_ILLEGAL_NUMBER))
+ _shellmath_setReturnValues ""
+ return "$returnCode"
+ fi
+
+ # Reject everything else
+ else
+ ((returnCode = __shellmath_ILLEGAL_NUMBER))
+ _shellmath_setReturnValues ""
+ return "$returnCode"
+ fi
+}
+
+
+################################################################################
+# numToScientific (integerPart, fractionalPart)
+#
+# Format conversion utility function
+################################################################################
+function _shellmath_numToScientific()
+{
+ local integerPart=$1 fractionalPart=$2
+ local exponent head tail scientific
+
+ if ((integerPart > 0)); then
+ ((exponent = ${#integerPart}-1))
+ head=${integerPart:0:1}
+ tail=${integerPart:1}${fractionalPart}
+ elif ((integerPart < 0)); then
+ ((exponent = ${#integerPart}-2)) # skip "-" and first digit
+ head=${integerPart:0:2}
+ tail=${integerPart:2}${fractionalPart}
+ else
+ [[ "$fractionalPart" =~ ^[-]?(0*)([^0])(.*)$ ]]
+ exponent=$((-(${#BASH_REMATCH[1]} + 1)))
+ head=${BASH_REMATCH[2]}
+ tail=${BASH_REMATCH[3]}
+ fi
+
+ # Remove trailing zeros
+ [[ $tail =~ ^.*[^0] ]]; tail=${BASH_REMATCH[0]:-0}
+
+ printf -v scientific "%d.%de%d" "$head" "$tail" "$exponent"
+
+ _shellmath_setReturnValue "$scientific"
+}
+
+
+################################################################################
+# _shellmath_add (addend_1, addend_2)
+################################################################################
+function _shellmath_add()
+{
+ local n1="$1"
+ local n2="$2"
+
+ if ((! __shellmath_didPrecalc)); then
+ _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true
+ fi
+
+ local isVerbose=$(( __shellmath_isOptimized == __shellmath_false ))
+
+ # Is the caller itself an arithmetic function?
+ local isSubcall=${__shellmath_false}
+ local isMultiplication=${__shellmath_false}
+ if [[ "${FUNCNAME[1]}" =~ shellmath_(add|subtract|multiply|divide)$ ]]; then
+ isSubcall=${__shellmath_true}
+ if [[ "${BASH_REMATCH[1]}" == multiply ]]; then
+ isMultiplication=${__shellmath_true}
+ fi
+ fi
+
+ # Handle corner cases where argument count is not 2
+ local argCount=$#
+ if ((argCount == 0)); then
+ echo "Usage: ${FUNCNAME[0]} addend_1 addend_2"
+ return "$__shellmath_SUCCESS"
+ elif ((argCount == 1)); then
+ # Note the result as-is, print if running "normally", and return
+ _shellmath_setReturnValue "$n1"
+ (( isVerbose && ! isSubcall )) && echo "$n1"
+ return "$__shellmath_SUCCESS"
+ elif ((argCount > 2 && !isSubcall)); then
+ local recursiveReturn
+
+ # Use a binary recursion tree to add everything up
+ # 1) left branch
+ _shellmath_add "${@:1:$((argCount/2))}"; recursiveReturn=$?
+ _shellmath_getReturnValue n1
+ if (( recursiveReturn != __shellmath_SUCCESS )); then
+ _shellmath_setReturnValue "$n1"
+ return "$recursiveReturn"
+ fi
+ # 2) right branch
+ _shellmath_add "${@:$((argCount/2+1))}"; recursiveReturn=$?
+ _shellmath_getReturnValue n2
+ if (( recursiveReturn != __shellmath_SUCCESS )); then
+ _shellmath_setReturnValue "$n2"
+ return "$recursiveReturn"
+ fi
+ # 3) head node
+ local sum
+ _shellmath_add "$n1" "$n2"; recursiveReturn=$?
+ _shellmath_getReturnValue sum
+ _shellmath_setReturnValue "$sum"
+ if (( isVerbose && ! isSubcall )); then
+ echo "$sum"
+ fi
+ return "$recursiveReturn"
+ fi
+
+ local integerPart1 fractionalPart1 integerPart2 fractionalPart2
+ local isNegative1 type1 isScientific1 isNegative2 type2 isScientific2
+ local flags
+
+ if ((isMultiplication)); then
+ integerPart1="$1"
+ fractionalPart1="$2"
+ integerPart2="$3"
+ fractionalPart2="$4"
+
+ type1=${__shellmath_numericTypes[DECIMAL]}
+ type2=${__shellmath_numericTypes[DECIMAL]}
+ isNegative1=$__shellmath_false
+ isNegative2=$__shellmath_false
+ isScientific1=$__shellmath_false
+ isScientific2=$__shellmath_false
+ else
+ # Check and parse the arguments
+ _shellmath_validateAndParse "$n1"; flags=$?
+ _shellmath_getReturnValues integerPart1 fractionalPart1 isNegative1 type1 isScientific1
+ if ((flags == __shellmath_ILLEGAL_NUMBER)); then
+ _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n1"
+ return $?
+ fi
+ _shellmath_validateAndParse "$n2"; flags=$?
+ _shellmath_getReturnValues integerPart2 fractionalPart2 isNegative2 type2 isScientific2
+ if ((flags == __shellmath_ILLEGAL_NUMBER)); then
+ _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n2"
+ return $?
+ fi
+ fi
+
+ # Quick add & return for integer adds
+ if ((type1==type2 && type1==__shellmath_numericTypes[INTEGER])); then
+ ((isNegative1)) && ((integerPart1*=-1))
+ ((isNegative2)) && ((integerPart2*=-1))
+ local sum=$((integerPart1 + integerPart2))
+ if (( (!isSubcall) && (isScientific1 || isScientific2) )); then
+ _shellmath_numToScientific $sum ""
+ _shellmath_getReturnValue sum
+ fi
+ _shellmath_setReturnValue $sum
+ if (( isVerbose && ! isSubcall )); then
+ echo "$sum"
+ fi
+ return "$__shellmath_SUCCESS"
+ fi
+
+ # Right-pad both fractional parts with zeros to the same length
+ local fractionalLen1=${#fractionalPart1}
+ local fractionalLen2=${#fractionalPart2}
+ if ((fractionalLen1 > fractionalLen2)); then
+ # Use printf to zero-pad. This avoids mathematical side effects.
+ printf -v fractionalPart2 %-*s "$fractionalLen1" "$fractionalPart2"
+ fractionalPart2=${fractionalPart2// /0}
+ elif ((fractionalLen2 > fractionalLen1)); then
+ printf -v fractionalPart1 %-*s "$fractionalLen2" "$fractionalPart1"
+ fractionalPart1=${fractionalPart1// /0}
+ fi
+ local unsignedFracLength=${#fractionalPart1}
+
+ # Implement a sign convention that will enable us to detect carries by
+ # comparing string lengths of addends and sums: propagate the sign across
+ # both numeric parts (whether unsigned or zero).
+ if ((isNegative1)); then
+ fractionalPart1="-"$fractionalPart1
+ integerPart1="-"$integerPart1
+ fi
+ if ((isNegative2)); then
+ fractionalPart2="-"$fractionalPart2
+ integerPart2="-"$integerPart2
+ fi
+
+ local integerSum=0
+ local fractionalSum=0
+
+ ((integerSum = integerPart1+integerPart2))
+
+ # Summing the fractional parts is tricky: We need to override the shell's
+ # default interpretation of leading zeros, but the operator for doing this
+ # (the "10#" operator) cannot work directly with negative numbers. So we
+ # break it all down.
+ if ((isNegative1)); then
+ ((fractionalSum += (-1) * 10#${fractionalPart1:1}))
+ else
+ ((fractionalSum += 10#$fractionalPart1))
+ fi
+ if ((isNegative2)); then
+ ((fractionalSum += (-1) * 10#${fractionalPart2:1}))
+ else
+ ((fractionalSum += 10#$fractionalPart2))
+ fi
+
+ unsignedFracSumLength=${#fractionalSum}
+ if [[ "$fractionalSum" =~ ^[-] ]]; then
+ ((unsignedFracSumLength--))
+ fi
+
+ # Restore any leading zeroes that were lost when adding
+ if ((unsignedFracSumLength < unsignedFracLength)); then
+ local lengthDiff=$((unsignedFracLength - unsignedFracSumLength))
+ local zeroPrefix
+ printf -v zeroPrefix "%0*d" "$lengthDiff" 0
+ if ((fractionalSum < 0)); then
+ fractionalSum="-"${zeroPrefix}${fractionalSum:1}
+ else
+ fractionalSum=${zeroPrefix}${fractionalSum}
+ fi
+ fi
+
+ # Carry a digit from fraction to integer if required
+ if ((10#$fractionalSum!=0 && unsignedFracSumLength > unsignedFracLength)); then
+ local carryAmount
+ ((carryAmount = isNegative1?-1:1))
+ ((integerSum += carryAmount))
+ # Remove the leading 1-digit whether the fraction is + or -
+ fractionalSum=${fractionalSum/1/}
+ fi
+
+ # Transform the partial sums from additive to concatenative. Example: the
+ # pair (-2,3) is not -2.3 but rather (-2)+(0.3), i.e. -1.7 so we want to
+ # transform (-2,3) to (-1,7). This transformation is meaningful when
+ # the two parts have opposite signs, so that's what we look for.
+ if ((integerSum < 0 && 10#$fractionalSum > 0)); then
+ ((integerSum += 1))
+ ((fractionalSum = 10#$fractionalSum - 10**unsignedFracSumLength))
+ elif ((integerSum > 0 && 10#$fractionalSum < 0)); then
+ ((integerSum -= 1))
+ ((fractionalSum = 10**unsignedFracSumLength + 10#$fractionalSum))
+ fi
+ # This last case needs to function either as an "else" for the above,
+ # or as a coda to the "if" clause when integerSum is -1 initially.
+ if ((integerSum == 0 && 10#$fractionalSum < 0)); then
+ integerSum="-"$integerSum
+ ((fractionalSum *= -1))
+ fi
+
+ # Touch up the numbers for display
+ local sum
+ ((10#$fractionalSum < 0)) && fractionalSum=${fractionalSum:1}
+ if (( (!isSubcall) && (isScientific1 || isScientific2) )); then
+ _shellmath_numToScientific "$integerSum" "$fractionalSum"
+ _shellmath_getReturnValue sum
+ elif ((10#$fractionalSum)); then
+ printf -v sum "%s.%s" "$integerSum" "$fractionalSum"
+ else
+ sum=$integerSum
+ fi
+
+ # Note the result, print if running "normally", and return
+ _shellmath_setReturnValue $sum
+ if (( isVerbose && ! isSubcall )); then
+ echo "$sum"
+ fi
+
+ return "$__shellmath_SUCCESS"
+}
+
+
+################################################################################
+# subtract (subtrahend, minuend)
+################################################################################
+function _shellmath_subtract()
+{
+ local n1="$1"
+ local n2="$2"
+ local isVerbose=$(( __shellmath_isOptimized == __shellmath_false ))
+
+ if ((! __shellmath_didPrecalc)); then
+ _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true
+ fi
+
+ if (( $# == 0 || $# > 2 )); then
+ echo "Usage: ${FUNCNAME[0]} subtrahend minuend"
+ return "$__shellmath_SUCCESS"
+ elif (( $# == 1 )); then
+ # Note the value as-is and return
+ _shellmath_setReturnValue "$n1"
+ ((isVerbose)) && echo "$n1"
+ return "$__shellmath_SUCCESS"
+ fi
+
+ # Symbolically negate the second argument
+ if [[ "$n2" =~ ^- ]]; then
+ n2=${n2:1}
+ else
+ n2="-"$n2
+ fi
+
+ # Calculate, note the result, print if running "normally", and return
+ local difference
+ _shellmath_add "$n1" "$n2"
+ _shellmath_getReturnValue difference
+ if ((isVerbose)); then
+ echo "$difference"
+ fi
+
+ return $?
+}
+
+
+################################################################################
+# reduceOuterPairs (two integer parts [, two fractional parts])
+#
+# Examines the magnitudes of two numbers in advance of a multiplication
+# and either chops off their lowest-order digits or pushes them to the
+# corresponding lower-order parts in order to prevent overflow in the product.
+# The choice depends on whether 2 or 4 arguments are supplied.
+################################################################################
+function _shellmath_reduceOuterPairs()
+{
+ local value1="$1" value2="$2" subvalue1="$3" subvalue2="$4"
+
+ local digitExcess value1Len=${#value1} value2Len=${#value2}
+ ((digitExcess = value1Len + value2Len - __shellmath_precision))
+
+ # Be very precise about detecting overflow. The "digit excess" underestimates
+ # this: floor(log_10(longLongMax)). We don't want to needlessly lose precision
+ # when a product barely squeezes under the exact threshold.
+ if ((digitExcess>1 || (digitExcess==1 && value1 > __shellmath_maxValue/value2) )); then
+
+ # Identify the digit-tails to be pruned off and either discarded or
+ # pushed past the decimal point. In pruning the two values we want to
+ # retain as much "significance" as possible, so we try to equalize the
+ # lengths of the remaining digit sequences.
+ local tail1 tail2
+ local lengthDiff leftOver
+
+ # Which digit string is longer, and by how much?
+ ((lengthDiff = value1Len - value2Len))
+ if ((lengthDiff > 0)); then
+ if ((digitExcess <= lengthDiff)); then
+ # Chop digits from the longer string only
+ tail1=${value1:(-digitExcess)}
+ tail2="" # do not chop anything
+ else
+ # Chop more digits from the longer string so the two strings
+ # end up as nearly-equal in length as possible
+ ((leftOver = digitExcess - lengthDiff))
+ tail1=${value1:(-(lengthDiff + leftOver/2))}
+ tail2=${value2:(-((leftOver+1)/2))}
+ fi
+ else
+ ((lengthDiff *= -1))
+ # Mirror the above code block but swap 1 and 2
+ if ((digitExcess <= lengthDiff)); then
+ tail1=""
+ tail2=${value2:(-digitExcess)}
+ else
+ ((leftOver = digitExcess - lengthDiff))
+ tail1=${value1:(-((leftOver+1)/2))}
+ tail2=${value2:(-(lengthDiff + leftOver/2))}
+ fi
+ fi
+
+ # Discard the least-significant digits or move them past the decimal point
+ value1=${value1%${tail1}}
+ [[ -n "$subvalue1" ]] && subvalue1=${tail1}${subvalue1%0} # remove placeholder zero
+ value2=${value2%${tail2}}
+ [[ -n "$subvalue2" ]] && subvalue2=${tail2}${subvalue2%0}
+ else
+ # Signal the caller that no rescaling was actually done
+ ((digitExcess = 0))
+ fi
+
+ _shellmath_setReturnValues "$value1" "$value2" \
+ "$subvalue1" "$subvalue2" "$digitExcess"
+}
+
+################################################################################
+# rescaleValue(value, rescaleFactor)
+#
+# Upscales a decimal value by "factor" orders of magnitude: 3.14159 --> 3141.59
+################################################################################
+function _shellmath_rescaleValue()
+{
+ local value="$1" rescalingFactor="$2"
+ local head tail zeroCount zeroTail
+
+ [[ "$value" =~ ^(.*)\.(.*)$ ]]
+ head=${BASH_REMATCH[1]}
+ tail=${BASH_REMATCH[2]}
+ ((zeroCount = rescalingFactor - ${#tail}))
+ if ((zeroCount > 0)); then
+ printf -v zeroTail "%0*d" "$zeroCount" 0
+ value=${head}${tail}${zeroTail}
+ elif ((zeroCount < 0)); then
+ value=${head}${tail:0:rescalingFactor}"."${tail:rescalingFactor}
+ else
+ value=${head}${tail}
+ fi
+
+ _shellmath_setReturnValue "$value"
+}
+
+################################################################################
+# reduceCrossPairs (two integer parts, two fractional parts)
+#
+# Examines the precision of the inner products (of "multiplication by parts")
+# and if necessary truncates the fractional part(s) to prevent overflow
+################################################################################
+function _shellmath_reduceCrossPairs()
+{
+ local value1="$1" value2="$2" subvalue1="$3" subvalue2="$4"
+
+ local digitExcess value1Len=${#value1} value2Len=${#value2}
+ local subvalue1Len=${#subvalue1} subvalue2Len=${#subvalue2}
+
+ # Check BOTH cross-products
+ ((digitExcess = value1Len + subvalue2Len - __shellmath_precision))
+ if ((digitExcess > 1 || (digitExcess==1 && value1 > __shellmath_maxValue/subvalue2) )); then
+ subvalue2=${subvalue2:0:(-digitExcess)}
+ fi
+ ((digitExcess = value2Len + subvalue1Len - __shellmath_precision))
+ if ((digitExcess > 1 || (digitExcess==1 && value2 > __shellmath_maxValue/subvalue1) )); then
+ subvalue1=${subvalue1:0:(-digitExcess)}
+ fi
+
+ _shellmath_setReturnValues "$subvalue1" "$subvalue2"
+}
+
+
+function _shellmath_round()
+{
+ local number="$1" digitCount="$2"
+ local nextDigit=${number:digitCount:1}
+
+ number=${number:0:digitCount}
+ if ((nextDigit >= 5)); then
+ printf -v number "%0*d" "$digitCount" $((10#$number + 1))
+ fi
+
+ _shellmath_setReturnValue "$number"
+}
+
+################################################################################
+# multiply (multiplicand, multiplier)
+################################################################################
+function _shellmath_multiply()
+{
+ local n1="$1"
+ local n2="$2"
+
+ if ((! __shellmath_didPrecalc)); then
+ _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true
+ fi
+
+ local isVerbose=$(( __shellmath_isOptimized == __shellmath_false ))
+
+ # Is the caller itself an arithmetic function?
+ local isSubcall=${__shellmath_false}
+ if [[ "${FUNCNAME[1]}" =~ shellmath_(add|subtract|multiply|divide)$ ]]; then
+ isSubcall=${__shellmath_true}
+ fi
+
+ # Handle corner cases where argument count is not 2
+ local argCount=$#
+ if ((argCount == 0)); then
+ echo "Usage: ${FUNCNAME[0]} factor_1 factor_2"
+ return "$__shellmath_SUCCESS"
+ elif ((argCount == 1)); then
+ # Note the value as-is and return
+ _shellmath_setReturnValue "$n1"
+ (( isVerbose && ! isSubcall )) && echo "$n1"
+ return "$__shellmath_SUCCESS"
+ elif ((argCount > 2)); then
+ local recursiveReturn
+
+ # Use a binary recursion tree to multiply everything out
+ # 1) left branch
+ _shellmath_multiply "${@:1:$((argCount/2))}"; recursiveReturn=$?
+ _shellmath_getReturnValue n1
+ if (( recursiveReturn != __shellmath_SUCCESS )); then
+ _shellmath_setReturnValue "$n1"
+ return "$recursiveReturn"
+ fi
+ # 2) right branch
+ _shellmath_multiply "${@:$((argCount/2+1))}"; recursiveReturn=$?
+ _shellmath_getReturnValue n2
+ if (( recursiveReturn != __shellmath_SUCCESS )); then
+ _shellmath_setReturnValue "$n2"
+ return "$recursiveReturn"
+ fi
+ # 3) head node
+ local product
+ _shellmath_multiply "$n1" "$n2"; recursiveReturn=$?
+ _shellmath_getReturnValue product
+ _shellmath_setReturnValue "$product"
+ if (( isVerbose && ! isSubcall )); then
+ echo "$product"
+ fi
+ return "$recursiveReturn"
+ fi
+
+ local integerPart1 fractionalPart1 integerPart2 fractionalPart2
+ local isNegative1 type1 isScientific1 isNegative2 type2 isScientific2
+ local flags
+
+ # Check and parse the arguments
+ _shellmath_validateAndParse "$n1"; flags=$?
+ _shellmath_getReturnValues integerPart1 fractionalPart1 isNegative1 type1 isScientific1
+ if ((flags == __shellmath_ILLEGAL_NUMBER)); then
+ _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n1"
+ return $?
+ fi
+ _shellmath_validateAndParse "$n2"; flags=$?
+ _shellmath_getReturnValues integerPart2 fractionalPart2 isNegative2 type2 isScientific2
+ if ((flags == __shellmath_ILLEGAL_NUMBER)); then
+ _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n2"
+ return $?
+ fi
+
+ # Overflow / underflow detection and accommodation
+ local rescalingFactor=0
+ if ((${#integerPart1} + ${#integerPart2} + ${#fractionalPart1} + ${#fractionalPart2} >= ${__shellmath_precision})); then
+ _shellmath_reduceOuterPairs "$integerPart1" "$integerPart2" "$fractionalPart1" "$fractionalPart2"
+ _shellmath_getReturnValues integerPart1 integerPart2 fractionalPart1 fractionalPart2 rescalingFactor
+ if ((10#$fractionalPart1)); then type1=${__shellmath_numericTypes[DECIMAL]}; fi
+ if ((10#$fractionalPart2)); then type2=${__shellmath_numericTypes[DECIMAL]}; fi
+
+ _shellmath_reduceCrossPairs "$integerPart1" "$integerPart2" "$fractionalPart1" "$fractionalPart2"
+ _shellmath_getReturnValues fractionalPart1 fractionalPart2
+
+ _shellmath_reduceOuterPairs "$fractionalPart1" "$fractionalPart2"
+ _shellmath_getReturnValues fractionalPart1 fractionalPart2
+ fi
+
+ # Quick multiply & return for integer multiplies
+ if ((type1==type2 && type1==__shellmath_numericTypes[INTEGER])); then
+ ((isNegative1)) && ((integerPart1*=-1))
+ ((isNegative2)) && ((integerPart2*=-1))
+ local product=$((integerPart1 * integerPart2))
+ if ((rescalingFactor > 0)); then
+ _shellmath_rescaleValue "$product" "$rescalingFactor"
+ _shellmath_getReturnValue product
+ fi
+ if (( (!isSubcall) && (isScientific1 || isScientific2) )); then
+ _shellmath_numToScientific $product ""
+ _shellmath_getReturnValue product
+ fi
+ _shellmath_setReturnValue $product
+ if (( isVerbose && ! isSubcall )); then
+ echo "$product"
+ fi
+ return "$__shellmath_SUCCESS"
+ fi
+
+ # The product has four components per the distributive law
+ local intProduct floatProduct innerProduct1 innerProduct2
+ # Widths of the decimal parts
+ local floatWidth fractionalWidth1 fractionalWidth2
+
+ # Compute the integer and floating-point components
+ ((intProduct = integerPart1 * integerPart2))
+
+ fractionalWidth1=${#fractionalPart1}
+ fractionalWidth2=${#fractionalPart2}
+ ((floatWidth = fractionalWidth1 + fractionalWidth2))
+ ((floatProduct = 10#$fractionalPart1 * 10#$fractionalPart2))
+ if ((${#floatProduct} < floatWidth)); then
+ printf -v floatProduct "%0*d" "$floatWidth" "$floatProduct"
+ fi
+
+ # Compute the inner products: First integer-multiply, then rescale
+ ((innerProduct1 = integerPart1 * 10#$fractionalPart2))
+ ((innerProduct2 = integerPart2 * 10#$fractionalPart1))
+
+ # Rescale the inner products back to decimals so we can shellmath_add() them
+ if ((fractionalWidth2 <= ${#innerProduct1})); then
+ local innerInt1=${innerProduct1:0:(-$fractionalWidth2)}
+ local innerFloat1=${innerProduct1:(-$fractionalWidth2)}
+ integerPart1=${innerInt1}
+ fractionalPart1=${innerFloat1}
+ else
+ integerPart1=0
+ printf -v fractionalPart1 "%0*d" "$fractionalWidth2" "$innerProduct1"
+ fi
+ if ((fractionalWidth1 <= ${#innerProduct2})); then
+ local innerInt2=${innerProduct2:0:(-$fractionalWidth1)}
+ local innerFloat2=${innerProduct2:(-$fractionalWidth1)}
+ integerPart2=${innerInt2}
+ fractionalPart2=${innerFloat2}
+ else
+ integerPart2=0
+ printf -v fractionalPart2 "%0*d" "$fractionalWidth1" "$innerProduct2"
+ fi
+
+ # Combine the distributed parts
+ local innerSum product
+ # Add the inner products to get the inner sum
+ _shellmath_add "$integerPart1" "$fractionalPart1" "$integerPart2" "$fractionalPart2"
+ _shellmath_getReturnValue innerSum
+ [[ "$innerSum" =~ (.*)\.(.*) ]]
+ integerPart1=${BASH_REMATCH[1]}
+ fractionalPart1=${BASH_REMATCH[2]}
+ # Add inner sum + outer sum
+ _shellmath_add "$integerPart1" "$fractionalPart1" "$intProduct" "$floatProduct"
+ _shellmath_getReturnValue product
+
+ # Determine the sign of the product
+ if ((isNegative1 != isNegative2)); then
+ product="-"$product
+ fi
+
+ # When we pre-detect overflow in the integer part of the computation,
+ # we compensate by shrinking the inputs by some order of magnitude.
+ # Having now finished the computation, we revert to the original magnitude.
+ if ((rescalingFactor > 0)); then
+ _shellmath_rescaleValue "$product" "$rescalingFactor"
+ _shellmath_getReturnValue product
+ fi
+
+ # Convert to scientific notation if appropriate
+ if (( (!isSubcall) && (isScientific1 || isScientific2) )); then
+ _shellmath_numToScientific "${product%.*}" "${product#*.}"
+ _shellmath_getReturnValue product
+ fi
+
+ # Note the result, print if running "normally", and return
+ _shellmath_setReturnValue $product
+ if (( isVerbose && ! isSubcall )); then
+ echo "$product"
+ fi
+
+ return "$__shellmath_SUCCESS"
+}
+
+
+################################################################################
+# divide (dividend, divisor)
+################################################################################
+function _shellmath_divide()
+{
+ local n1="$1"
+ local n2="$2"
+ local integerPart1 fractionalPart1 integerPart2 fractionalPart2
+ local isNegative1 type1 isScientific1 isNegative2 type2 isScientific2
+
+ if ((! __shellmath_didPrecalc)); then
+ _shellmath_precalc; __shellmath_didPrecalc=$__shellmath_true
+ fi
+
+ local isVerbose=$(( __shellmath_isOptimized == __shellmath_false ))
+
+ local isTesting=${__shellmath_false}
+ if [[ "${FUNCNAME[1]}" == "_shellmath_assert_functionReturn" ]]; then
+ isTesting=${__shellmath_true}
+ fi
+
+ if [[ $# -eq 0 || $# -gt 2 ]]; then
+ echo "Usage: ${FUNCNAME[0]} dividend divisor"
+ return "$__shellmath_SUCCESS"
+ elif [[ $# -eq 1 ]]; then
+ # Note the value as-is and return
+ _shellmath_setReturnValue "$n1"
+ ((isVerbose)) && echo "$n1"
+ return "$__shellmath_SUCCESS"
+ fi
+
+ # Check and parse the arguments
+ local flags
+ _shellmath_validateAndParse "$n1"; flags=$?
+ _shellmath_getReturnValues integerPart1 fractionalPart1 isNegative1 type1 isScientific1
+ if ((flags == __shellmath_ILLEGAL_NUMBER)); then
+ _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n1"
+ return $?
+ fi
+ _shellmath_validateAndParse "$n2"; flags=$?
+ _shellmath_getReturnValues integerPart2 fractionalPart2 isNegative2 type2 isScientific2
+ if ((flags == __shellmath_ILLEGAL_NUMBER)); then
+ _shellmath_warn "${__shellmath_returnCodes[ILLEGAL_NUMBER]}" "$n2"
+ return $?
+ fi
+
+ # Throw error on divide by zero
+ if ((integerPart2 == 0 && 10#$fractionalPart2 == 0)); then
+ _shellmath_warn "${__shellmath_returnCodes[DIVIDE_BY_ZERO]}" "$n2"
+ return $?
+ fi
+
+ # Convert the division problem to an *integer* division problem by rescaling
+ # both inputs so as to lose their decimal points. To obtain maximal precision,
+ # we scale up the numerator further, padding with as many zeros as it can hold
+ local numerator denominator quotient
+ local rescaleFactor zeroCount zeroTail
+
+ if ((integerPart1 == 0)); then
+ integerPart1=""
+ fi
+ ((zeroCount = __shellmath_precision - ${#integerPart1} - ${#fractionalPart1}))
+ ((rescaleFactor = __shellmath_precision - ${#integerPart1} - ${#fractionalPart2}))
+ if ((zeroCount > 0)); then
+ printf -v zeroTail "%0*d" "$zeroCount" 0
+ fi
+
+ # Rescale and rewrite the fraction to be computed, and compute it
+ numerator=${integerPart1}${fractionalPart1}${zeroTail}
+ denominator=${integerPart2}${fractionalPart2}
+ ((quotient = 10#$numerator / 10#$denominator))
+
+ # For greater precision, re-divide by the remainder to get the next digits of the quotient
+ local remainder quotient_2
+ ((remainder = 10#$numerator % 10#$denominator)) # cannot exceed numerator or thus, maxValue
+ ((zeroCount = __shellmath_precision - ${#remainder}))
+ if ((zeroCount > 0)); then
+ printf -v zeroTail "%0*d" "$zeroCount" 0
+ else
+ zeroTail=""
+ fi
+ # Derive the new numerator from the remainder. Do not change the denominator.
+ numerator=${remainder}${zeroTail}
+ ((quotient_2 = 10#$numerator / 10#$denominator))
+ quotient=${quotient}${quotient_2}
+ ((rescaleFactor += ${#quotient_2}))
+
+ # Rescale back. For aesthetic reasons we also round off at the "precision"th decimal place
+ ((zeroCount = rescaleFactor - ${#quotient}))
+ if ((zeroCount >= 0)); then
+ local zeroPrefix="" fractionalPart
+ if ((zeroCount > 0)); then
+ printf -v zeroPrefix "%0*d" "$((rescaleFactor - ${#quotient}))" 0
+ fi
+ fractionalPart=${zeroPrefix}${quotient}
+ _shellmath_round "$fractionalPart" $__shellmath_precision
+ _shellmath_getReturnValue fractionalPart
+ quotient="0."${fractionalPart}
+ else
+ fractionalPart=${quotient:(-$rescaleFactor)}
+ _shellmath_round "$fractionalPart" $__shellmath_precision
+ _shellmath_getReturnValue fractionalPart
+ quotient=${quotient:0:(-$rescaleFactor)}"."${fractionalPart}
+ fi
+
+ # Determine the sign of the quotient
+ if ((isNegative1 != isNegative2)); then
+ quotient="-"$quotient
+ fi
+
+ if ((isTesting)); then
+ # Trim zeros. (Requires decimal point and zero tail.)
+ if [[ "$quotient" =~ [\.].*0$ ]]; then
+ # If the decimal point IMMEDIATELY precedes the 0s, remove that too
+ [[ $quotient =~ [\.]?0+$ ]]
+ quotient=${quotient%${BASH_REMATCH[0]}}
+ fi
+ fi
+
+ # Convert to scientific notation if appropriate
+ if ((isScientific1 || isScientific2)); then
+ _shellmath_numToScientific "${quotient%.*}" "${quotient#*.}"
+ _shellmath_getReturnValue quotient
+ fi
+
+ # Note the result, print if running "normally", and return
+ _shellmath_setReturnValue "$quotient"
+ if ((isVerbose)); then
+ echo "$quotient"
+ fi
+
+ return "$__shellmath_SUCCESS"
+}
+
diff --git a/examples/shellmath/slower_e_demo.sh b/examples/shellmath/slower_e_demo.sh
new file mode 100644
index 00000000..d8fc9314
--- /dev/null
+++ b/examples/shellmath/slower_e_demo.sh
@@ -0,0 +1,55 @@
+#!/usr/bin/env bash
+
+###############################################################################
+# This script illustrates the use of the shellmath APIs to perform
+# decimal calculations. Here we approximate the mathematical constant 'e'
+# using its Maclaurin polynomials (i.e. its Taylor polynomials centered at 0).
+###############################################################################
+
+source shellmath.sh
+
+# Setting the '-t' flag will cause the script to time the algorithm
+if [[ "$1" == '-t' ]]; then
+ do_timing=${__shellmath_true}
+ shift
+fi
+
+if [[ $# -ne 1 ]]; then
+ echo "USAGE: ${BASH_SOURCE##*/} [-t] *N*"
+ echo " Approximates 'e' using the N-th order Maclaurin polynomial"
+ echo " (i.e. the Taylor polynomial centered at 0)."
+ echo " Specify the '-t' flag to time the main algorithm."
+ exit 0
+elif [[ ! "$1" =~ ^[0-9]+$ ]]; then
+ echo "Illegal argument. Whole numbers only, please."
+ exit 1
+fi
+
+
+function run_algorithm()
+{
+ # Initialize
+ n=0; N=$1; zero_factorial=1
+
+ # Initialize e to the zeroth-order term
+ term=$(_shellmath_divide 1 $zero_factorial)
+ e=$term
+
+ # Compute successive terms T(n) := T(n-1)/n and accumulate into e
+ for ((n=1; n<=N; n++)); do
+ term=$(_shellmath_divide "$term" "$n")
+ e=$(_shellmath_add "$e" "$term")
+ done
+
+ echo "e = $e"
+}
+
+
+if (( do_timing == __shellmath_true )); then
+ time run_algorithm "$1"
+else
+ run_algorithm "$1"
+fi
+
+exit 0
+
diff --git a/examples/shellmath/testCases.in b/examples/shellmath/testCases.in
new file mode 100644
index 00000000..54e3a822
--- /dev/null
+++ b/examples/shellmath/testCases.in
@@ -0,0 +1,142 @@
+################################################################
+# The general testcase syntax is
+# assertionType expectedValue functionUnderTest [args ... ]
+#
+# where assertionType is either of:
+# Code to indicate the (bash-style) integer return code
+# String to indicate the string "printed" as a side effect
+#
+# and functionUnderTest is the function name
+# with the "_shellmath_" prefix removed.
+################################################################
+
+################################
+# Tests for SUPPORTING FUNCTIONS
+################################
+
+# Tests for getReturnCode()
+Code 0 getReturnCode SUCCESS
+Code 1 getReturnCode FAIL
+Code 2 getReturnCode ILLEGAL_NUMBER
+
+## Tests for validateAndParse():
+## Validate a number, determine its type and sign, split it into parts
+
+# Detect Invalid input
+Code 2 validateAndParse NaN
+String "" validateAndParse NaN
+# Positive integers
+String "4 0 0 0 0" validateAndParse 4
+# Negative integers
+String "9 0 1 0 0" validateAndParse -9
+# Decimals
+String "4 2 0 1 0" validateAndParse 4.2
+# Negative decimals
+String "4 2 1 1 0" validateAndParse -4.2
+# Scientific / exponential notation: Check all code branches
+String "340000 0 0 0 1" validateAndParse 3.4e5
+String "344 4 0 1 1" validateAndParse 3.444e2
+String "34567 0 0 0 1" validateAndParse 3.4567e4
+String "0 003456 0 1 1" validateAndParse 3.456e-3
+String "34 56 0 1 1" validateAndParse 345.6e-1
+String "0 23011 0 1 1" validateAndParse 23.011e-2
+String "23 011 0 1 1" validateAndParse 23.011e0
+
+####################
+# Tests for ADDITION
+####################
+String 4 add 4
+String 9 add 4 5
+
+# Same-length decimal tails with no leading zeros, no carry across decimal point
+String 2.214 add 1.105 1.109
+
+# Carry across decimal point
+String 3.8 add 1.9 1.9
+String -3.8 add -1.9 -1.9
+
+# Different-length decimals, one with leading zero
+String 2.195 add 1.105 1.09
+String -2.195 add -1.105 -1.09
+
+# Same-length tails having leading zeros
+String 2.014 add 1.005 1.009
+String -2.014 add -1.005 -1.009
+# Different-length tails with and without leading zeros
+String 3.31462 add 1.905 1.40962
+String 2.01462 add 1.005 1.00962
+
+# Subtraction
+String 2.5 subtract 5.2 2.7
+String -2.5 subtract 2.7 5.2
+String 2.5 add 5.2 -2.7
+
+# Integer part equal to 0
+String 1.5 add 0.6 0.9
+String 1.5 add .6 .9
+String -0.3 add 0.6 -0.9
+String -0.3 add .6 -.9
+
+# Recursive/multiple addition
+String 12 add 2 4 6
+String 6.6 add 1.1 2.2 3.3
+
+##########################
+# Tests for MULTIPLICATION
+##########################
+String 4 multiply 4
+String 20 multiply 4 5
+
+String 21.32 multiply 4.1 5.2
+String -21.32 multiply -4.1 5.2
+
+# Carry-heavy products
+String 98.901 multiply 9.9 9.99
+
+# Leading zeros after decimal point:
+# Track place value with zero-padding
+String 1.0201 multiply 1.01 1.01
+String 0.0001 multiply 0.01 0.01
+String 0.0001 add 0 0.0001
+
+# Staggered decimal precisions
+String 0.000001 multiply 0.01 0.0001
+
+# Interpret in base 10
+String 2.2781 multiply 1.09 2.09
+
+# Recursive multiplication
+String 35.1384 multiply 1.1 2.2 3.3 4.4
+
+####################
+# Tests for DIVISION
+####################
+String 4 divide 4
+String 4 divide 20 5
+
+String 0.5 divide 1 2
+String -0.5 divide -1 2
+
+# Mixed fractions
+String 34.54 divide 3454 100
+
+# Non-terminating decimals
+String 0.166666666666666667 divide 1 6
+
+# Decimal arguments
+String 0.25 divide 0.5 2
+String 0.04165 divide 0.1666 4
+
+###########################
+# Tests for scientific math
+###########################
+String 8.8e4 add 1.1e4 7.7e4
+String 4.239e1 add 1.224e1 3.015e1
+String -6.6e4 add 1.1e4 -7.7e4
+String -66000 add 11000 -77000
+String 1.23123e2 add 1.23e2 1.23e-1
+String 8.1403e7 multiply 2.03e5 4.01e2
+String 1.0e-7 multiply 1.0e-3 1.0e-4
+String 1.0e-7 multiply 1e-3 1e-4
+
+
diff --git a/examples/shellmath/timingData.txt b/examples/shellmath/timingData.txt
new file mode 100644
index 00000000..d1de887b
--- /dev/null
+++ b/examples/shellmath/timingData.txt
@@ -0,0 +1,42 @@
+$ ######## Activate optimized mode as described in the README ########
+$ __shellmath_isOptimized=1
+
+$ ######## Addition ########
+$ time { for ((i=0; i<100; i++)); do _shellmath_add 3.1415926 2.7182818; _shellmath_getReturnValue sum; done; }
+real 0m0.196s
+user 0m0.195s
+sys 0m0.000s
+$ time { for ((i=0; i<100; i++)); do sum=$(bc <<< "3.1415926+2.7182818"); done; }
+real 0m0.488s
+user 0m0.092s
+sys 0m0.384s
+
+$ ######## Subtraction ########
+$ time { for ((i=0; i<100; i++)); do _shellmath_subtract 3.1415926 2.7182818; _shellmath_getReturnValue diff; done; }
+real 0m0.236s
+user 0m0.234s
+sys 0m0.001s
+$ time { for ((i=0; i<100; i++)); do diff=$(bc <<< "3.1415926-2.7182818"); done; }
+real 0m0.461s
+user 0m0.090s
+sys 0m0.388s
+
+$ ######## Multiplication ########
+$ time { for ((i=0; i<100; i++)); do _shellmath_multiply 3.1415926 2.7182818; _shellmath_getReturnValue prod; done; }
+real 0m0.340s
+user 0m0.333s
+sys 0m0.005s
+$ time { for ((i=0; i<100; i++)); do prod=$(bc <<< "3.1415926*2.7182818"); done; }
+real 0m0.465s
+user 0m0.105s
+sys 0m0.377s
+
+$ ######## Division ########
+$ time { for ((i=0; i<100; i++)); do _shellmath_divide 3.1415926/2.7182818; _shellmath_getReturnValue quot; done; }
+real 0m0.196s
+user 0m0.195s
+sys 0m0.000s
+$ time { for ((i=0; i<100; i++)); do quot=$(bc <<< "scale=8; 3.1415926/2.7182818"); done; }
+real 0m0.463s
+user 0m0.116s
+sys 0m0.364s
diff --git a/execute_cmd.c b/execute_cmd.c
index 425679a2..e5c6b9ab 100644
--- a/execute_cmd.c
+++ b/execute_cmd.c
@@ -1,6 +1,6 @@
/* execute_cmd.c -- Execute a COMMAND structure. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -165,6 +165,7 @@ static int execute_while_or_until PARAMS((WHILE_COM *, int));
static int execute_if_command PARAMS((IF_COM *));
static int execute_null_command PARAMS((REDIRECT *, int, int, int));
static void fix_assignment_words PARAMS((WORD_LIST *));
+static void fix_arrayref_words PARAMS((WORD_LIST *));
static int execute_simple_command PARAMS((SIMPLE_COM *, int, int, int, struct fd_bitmap *));
static int execute_builtin PARAMS((sh_builtin_func_t *, WORD_LIST *, int, int));
static int execute_function PARAMS((SHELL_VAR *, WORD_LIST *, int, struct fd_bitmap *, int, int));
@@ -279,6 +280,23 @@ static int connection_count;
can save and restore it. */
int line_number_for_err_trap;
+/* A convenience macro to avoid resetting line_number_for_err_trap while
+ running the ERR trap. */
+#define SET_LINE_NUMBER(v) \
+do { \
+ line_number = v; \
+ if (signal_in_progress (ERROR_TRAP) == 0 && running_trap != (ERROR_TRAP + 1)) \
+ line_number_for_err_trap = line_number; \
+} while (0)
+
+/* This can't be in executing_line_number() because that's used for LINENO
+ and we want LINENO to reflect the line number of commands run during
+ the ERR trap. Right now this is only used to push to BASH_LINENO. */
+#define GET_LINE_NUMBER() \
+ (signal_in_progress (ERROR_TRAP) && running_trap == ERROR_TRAP+1) \
+ ? line_number_for_err_trap \
+ : executing_line_number ()
+
/* A sort of function nesting level counter */
int funcnest = 0;
int funcnest_max = 0;
@@ -366,7 +384,7 @@ executing_line_number ()
return currently_executing_command->value.ArithFor->line;
#endif
- return line_number;
+ return line_number;
}
else
return line_number;
@@ -505,7 +523,7 @@ restore_signal_mask (set)
#ifdef DEBUG
/* A debugging function that can be called from gdb, for instance. */
void
-open_files ()
+open_files (void)
{
register int i;
int f, fd_table_size;
@@ -570,7 +588,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
if (breaking || continuing)
return (last_command_exit_value);
- if (command == 0 || read_but_dont_execute)
+ if (read_but_dont_execute)
+ return (last_command_exit_value);
+ if (command == 0)
return (EXECUTION_SUCCESS);
QUIT;
@@ -627,7 +647,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
control and call execute_command () on the command again. */
save_line_number = line_number;
if (command->type == cm_subshell)
- line_number_for_err_trap = line_number = command->value.Subshell->line; /* XXX - save value? */
+ SET_LINE_NUMBER (command->value.Subshell->line); /* XXX - save value? */
/* Otherwise we defer setting line_number */
tcmd = make_command_string (command);
fork_flags = asynchronous ? FORK_ASYNC : 0;
@@ -841,7 +861,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
if (command->flags & CMD_STDIN_REDIR)
command->value.Simple->flags |= CMD_STDIN_REDIR;
- line_number_for_err_trap = line_number = command->value.Simple->line;
+ SET_LINE_NUMBER (command->value.Simple->line);
exec_result =
execute_simple_command (command->value.Simple, pipe_in, pipe_out,
asynchronous, fds_to_close);
@@ -1041,7 +1061,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
command->value.Cond->flags |= CMD_IGNORE_RETURN;
#endif
- line_number_for_err_trap = save_line_number = line_number;
+ line_number_for_err_trap = save_line_number = line_number; /* XXX */
#if defined (DPAREN_ARITHMETIC)
if (command->type == cm_arith)
exec_result = execute_arith_command (command->value.Arith);
@@ -1323,6 +1343,7 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close)
int cpu;
char *time_format;
volatile procenv_t save_top_level;
+ volatile int old_subshell;
#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY)
struct timeval real, user, sys;
@@ -1352,6 +1373,7 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close)
# endif
#endif
+ old_subshell = subshell_environment;
posix_time = command && (command->flags & CMD_TIME_POSIX);
nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0);
@@ -1372,12 +1394,17 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close)
command->flags &= ~(CMD_TIME_PIPELINE|CMD_TIME_POSIX);
code = setjmp_nosigs (top_level);
if (code == NOT_JUMPED)
- {
- rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close);
- command->flags = old_flags;
- }
+ rv = execute_command_internal (command, asynchronous, pipe_in, pipe_out, fds_to_close);
COPY_PROCENV (save_top_level, top_level);
+ command->flags = old_flags;
+
+ /* If we're jumping in a different subshell environment than we started,
+ don't bother printing timing stats, just keep longjmping back to the
+ original top level. */
+ if (code != NOT_JUMPED && subshell_environment && subshell_environment != old_subshell)
+ sh_longjmp (top_level, code);
+
rs = us = ss = 0;
rsf = usf = ssf = cpu = 0;
@@ -1476,6 +1503,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
/* If a command is asynchronous in a subshell (like ( foo ) & or
the special case of an asynchronous GROUP command where the
+
the subshell bit is turned on down in case cm_group: below),
turn off `asynchronous', so that two subshells aren't spawned.
XXX - asynchronous used to be set to 0 in this block, but that
@@ -1553,6 +1581,8 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
/* We are in a subshell, so forget that we are running a trap handler or
that the signal handler has changed (we haven't changed it!) */
+ /* XXX - maybe do this for `real' signals and not ERR/DEBUG/RETURN/EXIT
+ traps? */
if (running_trap > 0)
{
run_trap_cleanup (running_trap - 1);
@@ -1620,10 +1650,12 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
default_buffered_input = -1;
#endif
-#if 0 /* TAG: bash-5.2 */
+ /* We can't optimize away forks if one of the commands executed by the
+ subshell sets an exit trap, so we set CMD_NO_FORK for simple commands
+ and set CMD_TRY_OPTIMIZING for simple commands on the right side of an
+ and-or or `;' list to test for optimizing forks when they are executed. */
if (user_subshell && command->type == cm_subshell)
optimize_subshell_command (command->value.Subshell->command);
-#endif
/* Do redirections, then dispose of them before recursive call. */
if (command->redirects)
@@ -1678,7 +1710,7 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
/* If we're going to exit the shell, we don't want to invert the return
status. */
- if (result == EXITPROG)
+ if (result == EXITPROG || result == EXITBLTIN)
invert = 0, return_code = last_command_exit_value;
else if (result)
return_code = (last_command_exit_value == EXECUTION_SUCCESS) ? EXECUTION_FAILURE : last_command_exit_value;
@@ -1805,9 +1837,7 @@ cpl_delete (pid)
if (p == 0)
return 0; /* not found */
-#if defined (DEBUG)
- itrace("cpl_delete: deleting %d", pid);
-#endif
+ INTERNAL_DEBUG (("cpl_delete: deleting %d", pid));
/* Housekeeping in the border cases. */
if (p == coproc_list.head)
@@ -1838,11 +1868,7 @@ cpl_reap ()
if (p->coproc->c_flags & COPROC_DEAD)
{
coproc_list.ncoproc--; /* keep running count, fix up pointers later */
-
-#if defined (DEBUG)
- itrace("cpl_reap: deleting %d", p->coproc->c_pid);
-#endif
-
+ INTERNAL_DEBUG (("cpl_reap: deleting %d", p->coproc->c_pid));
coproc_dispose (p->coproc);
cpe_dispose (p);
}
@@ -2239,7 +2265,7 @@ coproc_setvars (cp)
{
SHELL_VAR *v;
char *namevar, *t;
- int l;
+ size_t l;
WORD_DESC w;
#if defined (ARRAY_VARS)
arrayind_t ind;
@@ -2374,6 +2400,7 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
if (legal_identifier (name) == 0)
{
internal_error (_("`%s': not a valid identifier"), name);
+ free (name);
return (invert ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
}
else
@@ -2442,12 +2469,18 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
}
#endif
+/* If S == -1, it's a special value saying to close stdin */
static void
restore_stdin (s)
int s;
{
- dup2 (s, 0);
- close (s);
+ if (s == -1)
+ close (0);
+ else
+ {
+ dup2 (s, 0);
+ close (s);
+ }
}
/* Catch-all cleanup function for lastpipe code for unwind-protects */
@@ -2465,7 +2498,7 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
struct fd_bitmap *fds_to_close;
{
int prev, fildes[2], new_bitmap_size, dummyfd, ignore_return, exec_result;
- int lstdin, lastpipe_flag, lastpipe_jid, old_frozen;
+ int lstdin, lastpipe_flag, lastpipe_jid, old_frozen, stdin_valid;
COMMAND *cmd;
struct fd_bitmap *fd_bitmap;
pid_t lastpid;
@@ -2477,6 +2510,8 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+ stdin_valid = sh_validfd (0);
+
prev = pipe_in;
cmd = command;
@@ -2567,14 +2602,18 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
lastpipe_flag = 0;
begin_unwind_frame ("lastpipe-exec");
- lstdin = -1;
+ lstdin = -2; /* -1 is special, meaning fd 0 is closed */
/* If the `lastpipe' option is set with shopt, and job control is not
enabled, execute the last element of non-async pipelines in the
current shell environment. */
- if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
- {
- lstdin = move_to_high_fd (0, 1, -1);
- if (lstdin > 0)
+ /* prev can be 0 if fd 0 was closed when this function was executed. prev
+ will never be 0 at this point if fd 0 was valid when this function was
+ executed (though we check above). */
+ if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev >= 0)
+ {
+ /* -1 is a special value meaning to close stdin */
+ lstdin = (prev > 0 && stdin_valid) ? move_to_high_fd (0, 1, -1) : -1;
+ if (lstdin > 0 || lstdin == -1)
{
do_piping (prev, pipe_out);
prev = NO_PIPE;
@@ -2595,12 +2634,12 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
- if (lstdin > 0)
- restore_stdin (lstdin);
-
if (prev >= 0)
close (prev);
+ if (lstdin > 0 || lstdin == -1)
+ restore_stdin (lstdin);
+
#if defined (JOB_CONTROL)
UNBLOCK_CHILD (oset);
#endif
@@ -2616,7 +2655,11 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
lstdin = wait_for (lastpid, 0);
}
else
- lstdin = wait_for_single_pid (lastpid, 0); /* checks bgpids list */
+ {
+ lstdin = wait_for_single_pid (lastpid, 0); /* checks bgpids list */
+ if (lstdin > 256) /* error sentinel */
+ lstdin = 127;
+ }
#else
lstdin = wait_for (lastpid, 0);
#endif
@@ -2695,6 +2738,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
/* Just call execute command on both sides. */
case ';':
+ case '\n': /* special case, happens in command substitutions */
if (ignore_return)
{
if (command->value.Connection->first)
@@ -2714,7 +2758,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
#endif
QUIT;
- optimize_fork (command); /* XXX */
+ optimize_connection_fork (command); /* XXX */
exec_result = execute_command_internal (command->value.Connection->second,
asynchronous, pipe_in, pipe_out,
fds_to_close);
@@ -2726,7 +2770,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
invert = (command->flags & CMD_INVERT_RETURN) != 0;
ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
- line_number_for_err_trap = line_number; /* XXX - save value? */
+ SET_LINE_NUMBER (line_number); /* XXX - save value? */
exec_result = execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close);
if (asynchronous)
@@ -2787,7 +2831,7 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
((command->value.Connection->connector == OR_OR) &&
(exec_result != EXECUTION_SUCCESS)))
{
- optimize_fork (command);
+ optimize_connection_fork (command);
second = command->value.Connection->second;
if (ignore_return && second)
@@ -2998,14 +3042,20 @@ eval_arith_for_expr (l, okp)
{
WORD_LIST *new;
intmax_t expresult;
- int r;
+ int r, eflag;
+ char *expr, *temp;
+
+ expr = l->next ? string_list (l) : l->word->word;
+ temp = expand_arith_string (expr, Q_DOUBLE_QUOTES|Q_ARITH);
+ if (l->next)
+ free (expr);
+ new = make_word_list (make_word (temp), (WORD_LIST *)NULL);
+ free (temp);
- new = expand_words_no_vars (l);
if (new)
{
if (echo_command_at_execute)
xtrace_print_arith_cmd (new);
- this_command_name = "(("; /* )) for expression error messages */
command_string_index = 0;
print_arith_command (new);
@@ -3018,9 +3068,12 @@ eval_arith_for_expr (l, okp)
r = run_debug_trap ();
/* In debugging mode, if the DEBUG trap returns a non-zero status, we
skip the command. */
+ eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED;
+ this_command_name = "(("; /* )) for expression error messages */
+
#if defined (DEBUGGER)
if (debugging_mode == 0 || r == EXECUTION_SUCCESS)
- expresult = evalexp (new->word->word, EXP_EXPANDED, okp);
+ expresult = evalexp (new->word->word, eflag, okp);
else
{
expresult = 0;
@@ -3028,7 +3081,7 @@ eval_arith_for_expr (l, okp)
*okp = 1;
}
#else
- expresult = evalexp (new->word->word, EXP_EXPANDED, okp);
+ expresult = evalexp (new->word->word, eflag, okp);
#endif
dispose_words (new);
}
@@ -3371,6 +3424,8 @@ execute_select_command (select_command)
return (EXECUTION_SUCCESS);
#endif
+ this_command_name = (char *)0;
+
loop_level++;
identifier = select_command->name->word;
@@ -3725,7 +3780,7 @@ static int
execute_arith_command (arith_command)
ARITH_COM *arith_command;
{
- int expok, save_line_number, retval;
+ int expok, save_line_number, retval, eflag;
intmax_t expresult;
WORD_LIST *new;
char *exp, *t;
@@ -3734,7 +3789,7 @@ execute_arith_command (arith_command)
save_line_number = line_number;
this_command_name = "(("; /* )) */
- line_number_for_err_trap = line_number = arith_command->line;
+ SET_LINE_NUMBER (arith_command->line);
/* If we're in a function, update the line number information. */
if (variable_context && interactive_shell && sourcelevel == 0)
{
@@ -3767,14 +3822,13 @@ execute_arith_command (arith_command)
}
#endif
+ this_command_name = "(("; /* )) */
t = (char *)NULL;
new = arith_command->exp;
- if (new->next)
- exp = t = string_list (new); /* just in case */
- else
- exp = new->word->word;
+ exp = (new->next) ? (t = string_list (new)) : new->word->word;
exp = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH);
+ FREE (t);
/* If we're tracing, make a new word list with `((' at the front and `))'
at the back and print it. Change xtrace_print_arith_cmd to take a string
@@ -3788,7 +3842,8 @@ execute_arith_command (arith_command)
if (exp)
{
- expresult = evalexp (exp, EXP_EXPANDED, &expok);
+ eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED;
+ expresult = evalexp (exp, eflag, &expok);
line_number = save_line_number;
free (exp);
}
@@ -3797,7 +3852,6 @@ execute_arith_command (arith_command)
expresult = 0;
expok = 1;
}
- FREE (t);
if (expok == 0)
return (EXECUTION_FAILURE);
@@ -3815,8 +3869,8 @@ static int
execute_cond_node (cond)
COND_COM *cond;
{
- int result, invert, patmatch, rmatch, mflags, ignore;
- char *arg1, *arg2;
+ int result, invert, patmatch, rmatch, arith, mode, mflags, ignore;
+ char *arg1, *arg2, *op;
#if 0
char *t1, *t2;
#endif
@@ -3847,41 +3901,66 @@ execute_cond_node (cond)
}
else if (cond->type == COND_UNARY)
{
+ int oa, varop, varflag;
+
if (ignore)
comsub_ignore_return++;
- arg1 = cond_expand_word (cond->left->op, 0);
+ varop = STREQ (cond->op->word, "-v");
+#if defined (ARRAY_VARS)
+ varflag = (varop && valid_array_reference (cond->left->op->word, VA_NOEXPAND)) ? TEST_ARRAYEXP : 0;
+#else
+ varflag = 0;
+#endif
+ arg1 = cond_expand_word (cond->left->op, varop ? 3 : 0);
if (ignore)
comsub_ignore_return--;
if (arg1 == 0)
arg1 = nullstr;
if (echo_command_at_execute)
xtrace_print_cond_term (cond->type, invert, cond->op, arg1, (char *)NULL);
- result = unary_test (cond->op->word, arg1) ? EXECUTION_SUCCESS : EXECUTION_FAILURE;
+#if defined (ARRAY_VARS)
+ if (varop)
+ oa = set_expand_once (0, 0); /* no-op for compatibility levels <= 51 */
+#endif
+ result = unary_test (cond->op->word, arg1, varflag) ? EXECUTION_SUCCESS : EXECUTION_FAILURE;
+#if defined (ARRAY_VARS)
+ if (varop)
+ assoc_expand_once = oa;
+#endif
if (arg1 != nullstr)
free (arg1);
}
else if (cond->type == COND_BINARY)
{
rmatch = 0;
- patmatch = (((cond->op->word[1] == '=') && (cond->op->word[2] == '\0') &&
- (cond->op->word[0] == '!' || cond->op->word[0] == '=')) ||
- (cond->op->word[0] == '=' && cond->op->word[1] == '\0'));
+ op = cond->op->word;
+ mode = 0;
+ patmatch = (((op[1] == '=') && (op[2] == '\0') &&
+ (op[0] == '!' || op[0] == '=')) ||
+ (op[0] == '=' && op[1] == '\0'));
#if defined (COND_REGEXP)
- rmatch = (cond->op->word[0] == '=' && cond->op->word[1] == '~' &&
- cond->op->word[2] == '\0');
+ rmatch = (op[0] == '=' && op[1] == '~' && op[2] == '\0');
#endif
+ arith = STREQ (op, "-eq") || STREQ (op, "-ne") || STREQ (op, "-lt") ||
+ STREQ (op, "-le") || STREQ (op, "-gt") || STREQ (op, "-ge");
+
+ if (arith)
+ mode = 3;
+ else if (rmatch && shell_compatibility_level > 31)
+ mode = 2;
+ else if (patmatch)
+ mode = 1;
if (ignore)
comsub_ignore_return++;
- arg1 = cond_expand_word (cond->left->op, 0);
+ arg1 = cond_expand_word (cond->left->op, arith ? mode : 0);
if (ignore)
comsub_ignore_return--;
if (arg1 == 0)
arg1 = nullstr;
if (ignore)
comsub_ignore_return++;
- arg2 = cond_expand_word (cond->right->op,
- (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0));
+ arg2 = cond_expand_word (cond->right->op, mode);
if (ignore)
comsub_ignore_return--;
if (arg2 == 0)
@@ -3945,8 +4024,7 @@ execute_cond_command (cond_command)
save_line_number = line_number;
- this_command_name = "[[";
- line_number_for_err_trap = line_number = cond_command->line;
+ SET_LINE_NUMBER (cond_command->line);
/* If we're in a function, update the line number information. */
if (variable_context && interactive_shell && sourcelevel == 0)
{
@@ -3977,6 +4055,8 @@ execute_cond_command (cond_command)
}
#endif
+ this_command_name = "[["; /* ]] */
+
#if 0
debug_print_cond_command (cond_command);
#endif
@@ -4165,6 +4245,48 @@ fix_assignment_words (words)
}
}
+#if defined (ARRAY_VARS)
+/* Set W_ARRAYREF on words that are valid array references to a builtin that
+ accepts them. This is intended to completely replace assoc_expand_once in
+ time. */
+static void
+fix_arrayref_words (words)
+ WORD_LIST *words;
+{
+ WORD_LIST *w, *wcmd;
+ struct builtin *b;
+
+ if (words == 0)
+ return;
+
+ b = 0;
+
+ /* Skip over assignment statements preceding a command name */
+ wcmd = words;
+ for (wcmd = words; wcmd; wcmd = wcmd->next)
+ if ((wcmd->word->flags & W_ASSIGNMENT) == 0)
+ break;
+
+ /* Skip over `command' */
+ while (wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command"))
+ wcmd = wcmd->next;
+
+ if (wcmd == 0)
+ return;
+
+ /* If it's not an array reference builtin, we have nothing to do. */
+ b = builtin_address_internal (wcmd->word->word, 0);
+ if (b == 0 || (b->flags & ARRAYREF_BUILTIN) == 0)
+ return;
+
+ for (w = wcmd->next; w; w = w->next)
+ {
+ if (w->word && w->word->word && valid_array_reference (w->word->word, 0))
+ w->word->flags |= W_ARRAYREF;
+ }
+}
+#endif
+
#ifndef ISOPTION
# define ISOPTION(s, c) (s[0] == '-' && s[1] == c && s[2] == 0)
#endif
@@ -4375,6 +4497,9 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
{
current_fds_to_close = fds_to_close;
fix_assignment_words (simple_command->words);
+#if defined (ARRAY_VARS)
+ fix_arrayref_words (simple_command->words);
+#endif
/* Pass the ignore return flag down to command substitutions */
if (cmdflags & CMD_IGNORE_RETURN) /* XXX */
comsub_ignore_return++;
@@ -4436,17 +4561,27 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
func = find_function (words->word->word);
}
- /* In POSIX mode, assignment errors in the temporary environment cause a
- non-interactive shell to exit. */
-#if 1
- if (posixly_correct && builtin_is_special && interactive_shell == 0 && tempenv_assign_error)
-#else
- /* This is for strict posix conformance. */
- if (posixly_correct && interactive_shell == 0 && tempenv_assign_error)
-#endif
+ /* What happens in posix mode when an assignment preceding a command name
+ fails. This should agree with the code in execute_cmd.c:
+ do_assignment_statements(), even though I don't think it's executed any
+ more. */
+ if (posixly_correct && tempenv_assign_error)
{
+#if defined (DEBUG)
+ /* I don't know if this clause is ever executed, so let's check */
+itrace("execute_simple_command: posix mode tempenv assignment error");
+#endif
last_command_exit_value = EXECUTION_FAILURE;
- jump_to_top_level (ERREXIT);
+#if defined (STRICT_POSIX)
+ jump_to_top_level ((interactive_shell == 0) ? FORCE_EOF : DISCARD);
+#else
+ if (interactive_shell == 0 && builtin_is_special)
+ jump_to_top_level (FORCE_EOF);
+ else if (interactive_shell == 0)
+ jump_to_top_level (DISCARD); /* XXX - maybe change later */
+ else
+ jump_to_top_level (DISCARD);
+#endif
}
tempenv_assign_error = 0; /* don't care about this any more */
@@ -4623,7 +4758,10 @@ run_builtin:
executing_builtin = old_builtin;
executing_command_builtin = old_command_builtin;
builtin = 0;
- /* XXX - redirections will have to be performed again */
+
+ /* The redirections have already been `undone', so this
+ will have to do them again. But piping is forever. */
+ pipe_in = pipe_out = -1;
goto execute_from_filesystem;
}
result = builtin_status (result);
@@ -4896,7 +5034,7 @@ execute_function (var, words, flags, fds_to_close, async, subshell)
struct fd_bitmap *fds_to_close;
int async, subshell;
{
- int return_val, result;
+ int return_val, result, lineno;
COMMAND *tc, *fc, *save_current;
char *debug_trap, *error_trap, *return_trap;
#if defined (ARRAY_VARS)
@@ -5024,7 +5162,8 @@ execute_function (var, words, flags, fds_to_close, async, subshell)
array_push ((ARRAY *)funcname_a, this_shell_function->name);
array_push ((ARRAY *)bash_source_a, sfile);
- t = itos (executing_line_number ());
+ lineno = GET_LINE_NUMBER ();
+ t = itos (lineno);
array_push ((ARRAY *)bash_lineno_a, t);
free (t);
#endif
@@ -5245,7 +5384,7 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var,
if (return_catch_flag && builtin == return_builtin)
funcvalue = setjmp_nosigs (return_catch);
- if (result == EXITPROG)
+ if (result == EXITPROG || result == EXITBLTIN)
subshell_exit (last_command_exit_value);
else if (result)
subshell_exit (EXECUTION_FAILURE);
@@ -5482,18 +5621,19 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
}
#endif /* RESTRICTED_SHELL */
+ /* If we want to change this so `command -p' (CMD_STDPATH) does not insert
+ any pathname it finds into the hash table, it should read
+ command = search_for_command (pathname, stdpath ? CMDSRCH_STDPATH : CMDSRCH_HASH);
+ */
command = search_for_command (pathname, CMDSRCH_HASH|(stdpath ? CMDSRCH_STDPATH : 0));
QUIT;
if (command)
{
/* If we're optimizing out the fork (implicit `exec'), decrement the
- shell level like `exec' would do. */
-#if 0 /* TAG: bash-5.2 psmith 10/11/2020 */
+ shell level like `exec' would do. Don't do this if we are already
+ in a pipeline environment, assuming it's already been done. */
if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE && (subshell_environment & SUBSHELL_PIPE) == 0)
-#else
- if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE)
-#endif
adjust_shell_level (-1);
maybe_make_export_env ();
@@ -5557,6 +5697,8 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
clear_fifo_list (); /* XXX - we haven't created any FIFOs */
#endif
+ /* reset shell_pgrp to pipeline_pgrp here for word expansions performed
+ by the redirections here? */
if (redirects && (do_redirections (redirects, RX_ACTIVE) != 0))
{
#if defined (PROCESS_SUBSTITUTION)
@@ -5840,6 +5982,11 @@ shell_execve (command, args, env)
errno = i;
file_error (command);
}
+ else if (i == ENOENT)
+ {
+ errno = i;
+ internal_error (_("%s: cannot execute: required file not found"), command);
+ }
else
{
/* The file has the execute bits set, but the kernel refuses to
@@ -5889,7 +6036,7 @@ shell_execve (command, args, env)
If so, the format of the line is "#! interpreter [argument]".
A single argument is allowed. The BSD kernel restricts
the length of the entire line to 32 characters (32 bytes
- being the size of the BSD exec header), but we allow 80
+ being the size of the BSD exec header), but we allow up to 128
characters. */
if (sample_len > 0)
{
diff --git a/expr.c b/expr.c
index bbff95e9..5079bd47 100644
--- a/expr.c
+++ b/expr.c
@@ -1,6 +1,6 @@
/* expr.c -- arithmetic expression evaluation. */
-/* Copyright (C) 1990-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1990-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -139,8 +139,8 @@
#define COMMA ','
/* This should be the function corresponding to the operator with the
- highest precedence. */
-#define EXP_HIGHEST expcomma
+ lowest precedence. */
+#define EXP_LOWEST expcomma
#ifndef MAX_INT_LEN
# define MAX_INT_LEN 32
@@ -330,6 +330,7 @@ expr_bind_variable (lhs, rhs)
#if defined (ARRAY_VARS)
aflags = (assoc_expand_once && already_expanded) ? ASS_NOEXPAND : 0;
+ aflags |= ASS_ALLOWALLSUB; /* allow assoc[@]=value */
#else
aflags = 0;
#endif
@@ -340,7 +341,7 @@ expr_bind_variable (lhs, rhs)
}
#if defined (ARRAY_VARS)
-/* This is similar to the logic in arrayfunc.c:valid_array_subscript when
+/* This is similar to the logic in arrayfunc.c:valid_array_reference when
you pass VA_NOEXPAND. */
static int
expr_skipsubscript (vp, cp)
@@ -471,8 +472,9 @@ subexpr (expr)
readtok ();
- val = EXP_HIGHEST ();
+ val = EXP_LOWEST ();
+ /*TAG:bash-5.3 make it clear that these are arithmetic syntax errors */
if (curtok != 0)
evalerror (_("syntax error in expression"));
@@ -638,7 +640,7 @@ expcond ()
if (curtok == 0 || curtok == COL)
evalerror (_("expression expected"));
- val1 = EXP_HIGHEST ();
+ val1 = EXP_LOWEST ();
if (set_noeval)
noeval--;
@@ -1050,7 +1052,7 @@ exp0 ()
{
/* XXX - save curlval here? Or entire expression context? */
readtok ();
- val = EXP_HIGHEST ();
+ val = EXP_LOWEST ();
if (curtok != RPAR) /* ( */
evalerror (_("missing `)'"));
@@ -1148,6 +1150,7 @@ expr_streval (tok, e, lvalue)
#if defined (ARRAY_VARS)
arrayind_t ind;
int tflag, aflag;
+ array_eltstate_t es;
#endif
/*itrace("expr_streval: %s: noeval = %d expanded=%d", tok, noeval, already_expanded);*/
@@ -1159,12 +1162,12 @@ expr_streval (tok, e, lvalue)
initial_depth = expr_depth;
#if defined (ARRAY_VARS)
- tflag = assoc_expand_once && already_expanded; /* for a start */
+ tflag = (assoc_expand_once && already_expanded) ? AV_NOEXPAND : 0; /* for a start */
#endif
/* [[[[[ */
#if defined (ARRAY_VARS)
- aflag = (tflag) ? AV_NOEXPAND : 0;
+ aflag = tflag; /* use a different variable for now */
v = (e == ']') ? array_variable_part (tok, tflag, (char **)0, (int *)0) : find_variable (tok);
#else
v = find_variable (tok);
@@ -1202,13 +1205,16 @@ expr_streval (tok, e, lvalue)
}
#if defined (ARRAY_VARS)
- ind = -1;
+ init_eltstate (&es);
+ es.ind = -1;
/* If the second argument to get_array_value doesn't include AV_ALLOWALL,
we don't allow references like array[@]. In this case, get_array_value
is just like get_variable_value in that it does not return newly-allocated
memory or quote the results. AFLAG is set above and is either AV_NOEXPAND
or 0. */
- value = (e == ']') ? get_array_value (tok, aflag, (int *)NULL, &ind) : get_variable_value (v);
+ value = (e == ']') ? get_array_value (tok, aflag, &es) : get_variable_value (v);
+ ind = es.ind;
+ flush_eltstate (&es);
#else
value = get_variable_value (v);
#endif
@@ -1441,9 +1447,14 @@ readtok ()
c = POWER;
else if ((c == '-' || c == '+') && c1 == c && curtok == STR)
c = (c == '-') ? POSTDEC : POSTINC;
+#if STRICT_ARITH_PARSING
+ else if ((c == '-' || c == '+') && c1 == c && curtok == NUM)
+#else
else if ((c == '-' || c == '+') && c1 == c && curtok == NUM && (lasttok == PREINC || lasttok == PREDEC))
+#endif
{
/* This catches something like --FOO++ */
+ /* TAG:bash-5.3 add gettext calls here or make this a separate function */
if (c == '-')
evalerror ("--: assignment requires lvalue");
else
@@ -1460,7 +1471,7 @@ readtok ()
c = (c == '-') ? PREDEC : PREINC;
else
/* Could force parsing as preinc or predec and throw an error */
-#if 0
+#if STRICT_ARITH_PARSING
{
/* Posix says unary plus and minus have higher priority than
preinc and predec. */
@@ -1536,7 +1547,7 @@ strlong (num)
register char *s;
register unsigned char c;
int base, foundbase;
- intmax_t val;
+ intmax_t val, pval;
s = num;
@@ -1554,6 +1565,10 @@ strlong (num)
{
base = 16;
s++;
+#if STRICT_ARITH_PARSING
+ if (*s == 0)
+ evalerror (_("invalid number"));
+#endif
}
else
base = 8;
@@ -1597,7 +1612,14 @@ strlong (num)
if (c >= base)
evalerror (_("value too great for base"));
+#ifdef CHECK_OVERFLOW
+ pval = val;
val = (val * base) + c;
+ if (val < 0 || val < pval) /* overflow */
+ return INTMAX_MAX;
+#else
+ val = (val * base) + c;
+#endif
}
else
break;
diff --git a/externs.h b/externs.h
index 3d7716c6..931dba9c 100644
--- a/externs.h
+++ b/externs.h
@@ -1,7 +1,7 @@
/* externs.h -- extern function declarations which do not appear in their
own header file. */
-/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -36,6 +36,7 @@ extern intmax_t evalexp PARAMS((char *, int, int *));
#define FUNC_EXTERNAL 0x02
extern char *make_command_string PARAMS((COMMAND *));
+extern char *print_comsub PARAMS((COMMAND *));
extern char *named_function_string PARAMS((char *, COMMAND *, int));
extern void print_command PARAMS((COMMAND *));
@@ -109,6 +110,7 @@ extern int yyparse PARAMS((void));
extern int return_EOF PARAMS((void));
extern void push_token PARAMS((int));
extern char *xparse_dolparen PARAMS((char *, char *, int *, int));
+extern COMMAND *parse_string_to_command PARAMS((char *, int));
extern void reset_parser PARAMS((void));
extern void reset_readahead_token PARAMS((void));
extern WORD_LIST *parse_string_to_word_list PARAMS((char *, int, const char *));
@@ -142,7 +144,7 @@ extern void set_default_lang PARAMS((void));
extern char *get_locale_var PARAMS((char *));
extern char *localetrans PARAMS((char *, int, int *));
extern char *mk_msgstr PARAMS((char *, int *));
-extern char *localeexpand PARAMS((char *, int, int, int, int *));
+extern char *locale_expand PARAMS((char *, int, int, int, int *));
#ifndef locale_decpoint
extern int locale_decpoint PARAMS((void));
#endif
@@ -211,7 +213,7 @@ extern void dprintf PARAMS((int, const char *, ...)) __attribute__((__format__
extern char *fmtulong PARAMS((unsigned long int, int, char *, size_t, int));
/* Declarations for functions defined in lib/sh/fmtulong.c */
-#if defined (HAVE_LONG_LONG)
+#if defined (HAVE_LONG_LONG_INT)
extern char *fmtullong PARAMS((unsigned long long int, int, char *, size_t, int));
#endif
@@ -341,7 +343,7 @@ extern char *sh_double_quote PARAMS((const char *));
extern char *sh_mkdoublequoted PARAMS((const char *, int, int));
extern char *sh_un_double_quote PARAMS((char *));
extern char *sh_backslash_quote PARAMS((char *, const char *, int));
-extern char *sh_backslash_quote_for_double_quotes PARAMS((char *));
+extern char *sh_backslash_quote_for_double_quotes PARAMS((char *, int));
extern char *sh_quote_reusable PARAMS((char *, int));
extern int sh_contains_shell_metas PARAMS((const char *));
extern int sh_contains_quotes PARAMS((const char *));
@@ -440,7 +442,7 @@ extern long strtol PARAMS((const char *, char **, int));
#endif
/* declarations for functions defined in lib/sh/strtoll.c */
-#if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOLL
+#if defined (HAVE_LONG_LONG_INT) && !HAVE_DECL_STRTOLL
extern long long strtoll PARAMS((const char *, char **, int));
#endif
@@ -450,7 +452,7 @@ extern unsigned long strtoul PARAMS((const char *, char **, int));
#endif
/* declarations for functions defined in lib/sh/strtoull.c */
-#if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOULL
+#if defined (HAVE_UNSIGNED_LONG_LONG_INT) && !HAVE_DECL_STRTOULL
extern unsigned long long strtoull PARAMS((const char *, char **, int));
#endif
@@ -470,6 +472,10 @@ extern char *ansic_quote PARAMS((char *, int, int *));
extern int ansic_shouldquote PARAMS((const char *));
extern char *ansiexpand PARAMS((char *, int, int, int *));
+/* declarations for functions defined in lib/sh/strvis.c */
+extern int sh_charvis PARAMS((const char *, size_t *, size_t, char *, size_t *));
+extern char *sh_strvis PARAMS((const char *));
+
/* declarations for functions defined in lib/sh/timeval.c. No prototypes
so we don't have to count on having a definition of struct timeval in
scope when this file is included. */
diff --git a/findcmd.c b/findcmd.c
index e235705a..95f231e5 100644
--- a/findcmd.c
+++ b/findcmd.c
@@ -1,6 +1,6 @@
/* findcmd.c -- Functions to search for commands by name. */
-/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -54,8 +54,8 @@ extern int errno;
/* Static functions defined and used in this file. */
static char *_find_user_command_internal PARAMS((const char *, int));
static char *find_user_command_internal PARAMS((const char *, int));
-static char *find_user_command_in_path PARAMS((const char *, char *, int));
-static char *find_in_path_element PARAMS((const char *, char *, int, int, struct stat *));
+static char *find_user_command_in_path PARAMS((const char *, char *, int, int *));
+static char *find_in_path_element PARAMS((const char *, char *, int, int, struct stat *, int *));
static char *find_absolute_program PARAMS((const char *, int));
static char *get_next_path_element PARAMS((char *, int *));
@@ -109,7 +109,7 @@ exec_name_should_ignore (name)
/* Return some flags based on information about this file.
The EXISTS bit is non-zero if the file is found.
- The EXECABLE bit is non-zero the file is executble.
+ The EXECABLE bit is non-zero the file is executable.
Zero is returned if the file is not found. */
int
file_status (name)
@@ -274,7 +274,7 @@ _find_user_command_internal (name, flags)
if (path_list == 0 || *path_list == '\0')
return (savestring (name));
- cmd = find_user_command_in_path (name, path_list, flags);
+ cmd = find_user_command_in_path (name, path_list, flags, (int *)0);
return (cmd);
}
@@ -328,9 +328,9 @@ get_next_path_element (path_list, path_index_pointer)
/* Look for PATHNAME in $PATH. Returns either the hashed command
corresponding to PATHNAME or the first instance of PATHNAME found
in $PATH. If (FLAGS&CMDSRCH_HASH) is non-zero, insert the instance of
- PATHNAME found in $PATH into the command hash table. If (FLAGS&CMDSRCH_STDPATH)
- is non-zero, we are running in a `command -p' environment and should use
- the Posix standard path.
+ PATHNAME found in $PATH into the command hash table.
+ If (FLAGS&CMDSRCH_STDPATH) is non-zero, we are running in a `command -p'
+ environment and should use the Posix standard path.
Returns a newly-allocated string. */
char *
search_for_command (pathname, flags)
@@ -351,7 +351,7 @@ search_for_command (pathname, flags)
/* Don't waste time trying to find hashed data for a pathname
that is already completely specified or if we're using a command-
specific value for PATH. */
- if (temp_path == 0 && absolute_program (pathname) == 0)
+ if (temp_path == 0 && (flags & CMDSRCH_STDPATH) == 0 && absolute_program (pathname) == 0)
hashed_file = phash_search (pathname);
/* If a command found in the hash table no longer exists, we need to
@@ -384,24 +384,22 @@ search_for_command (pathname, flags)
else
path_list = 0;
- command = find_user_command_in_path (pathname, path_list, FS_EXEC_PREFERRED|FS_NODIRS);
+ command = find_user_command_in_path (pathname, path_list, FS_EXEC_PREFERRED|FS_NODIRS, &st);
if (command && hashing_enabled && temp_path == 0 && (flags & CMDSRCH_HASH))
{
/* If we found the full pathname the same as the command name, the
command probably doesn't exist. Don't put it into the hash
- table. */
+ table unless it's an executable file in the current directory. */
if (STREQ (command, pathname))
{
- st = file_status (command);
if (st & FS_EXECABLE)
phash_insert ((char *)pathname, command, dot_found_in_search, 1);
}
/* If we're in posix mode, don't add files without the execute bit
to the hash table. */
- else if (posixly_correct)
+ else if (posixly_correct || check_hashed_filenames)
{
- st = file_status (command);
if (st & FS_EXECABLE)
phash_insert ((char *)pathname, command, dot_found_in_search, 1);
}
@@ -469,8 +467,7 @@ user_command_matches (name, flags, state)
if (path_element == 0)
break;
- match = find_in_path_element (name, path_element, flags, name_len, &dotinfo);
-
+ match = find_in_path_element (name, path_element, flags, name_len, &dotinfo, (int *)0);
free (path_element);
if (match == 0)
@@ -523,11 +520,12 @@ find_absolute_program (name, flags)
}
static char *
-find_in_path_element (name, path, flags, name_len, dotinfop)
+find_in_path_element (name, path, flags, name_len, dotinfop, rflagsp)
const char *name;
char *path;
int flags, name_len;
struct stat *dotinfop;
+ int *rflagsp;
{
int status;
char *full_path, *xpath;
@@ -536,6 +534,8 @@ find_in_path_element (name, path, flags, name_len, dotinfop)
/* Remember the location of "." in the path, in all its forms
(as long as they begin with a `.', e.g. `./.') */
+ /* We could also do this or something similar for all relative pathnames
+ found while searching PATH. */
if (dot_found_in_search == 0 && *xpath == '.')
dot_found_in_search = same_file (".", xpath, dotinfop, (struct stat *)NULL);
@@ -546,6 +546,9 @@ find_in_path_element (name, path, flags, name_len, dotinfop)
if (xpath != path)
free (xpath);
+ if (rflagsp)
+ *rflagsp = status;
+
if ((status & FS_EXISTS) == 0)
{
free (full_path);
@@ -604,19 +607,22 @@ find_in_path_element (name, path, flags, name_len, dotinfop)
FS_NODIRS: Don't find any directories.
*/
static char *
-find_user_command_in_path (name, path_list, flags)
+find_user_command_in_path (name, path_list, flags, rflagsp)
const char *name;
char *path_list;
- int flags;
+ int flags, *rflagsp;
{
char *full_path, *path;
- int path_index, name_len;
+ int path_index, name_len, rflags;
struct stat dotinfo;
/* We haven't started looking, so we certainly haven't seen
a `.' as the directory path yet. */
dot_found_in_search = 0;
+ if (rflagsp)
+ *rflagsp = 0;
+
if (absolute_program (name))
{
full_path = find_absolute_program (name, flags);
@@ -643,12 +649,12 @@ find_user_command_in_path (name, path_list, flags)
/* Side effects: sets dot_found_in_search, possibly sets
file_to_lose_on. */
- full_path = find_in_path_element (name, path, flags, name_len, &dotinfo);
+ full_path = find_in_path_element (name, path, flags, name_len, &dotinfo, &rflags);
free (path);
- /* This should really be in find_in_path_element, but there isn't the
- right combination of flags. */
- if (full_path && is_directory (full_path))
+ /* We use the file status flag bits to check whether full_path is a
+ directory, which we reject here. */
+ if (full_path && (rflags & FS_DIRECTORY))
{
free (full_path);
continue;
@@ -656,6 +662,8 @@ find_user_command_in_path (name, path_list, flags)
if (full_path)
{
+ if (rflagsp)
+ *rflagsp = rflags;
FREE (file_to_lose_on);
return (full_path);
}
@@ -667,7 +675,7 @@ find_user_command_in_path (name, path_list, flags)
search would accept a non-executable as a last resort. If the
caller specified FS_NODIRS, and file_to_lose_on is a directory,
return NULL. */
- if (file_to_lose_on && (flags & FS_NODIRS) && is_directory (file_to_lose_on))
+ if (file_to_lose_on && (flags & FS_NODIRS) && file_isdir (file_to_lose_on))
{
free (file_to_lose_on);
file_to_lose_on = (char *)NULL;
@@ -684,5 +692,5 @@ find_in_path (name, path_list, flags)
char *path_list;
int flags;
{
- return (find_user_command_in_path (name, path_list, flags));
+ return (find_user_command_in_path (name, path_list, flags, (int *)0));
}
diff --git a/flags.c b/flags.c
index 983f9a50..30f6c13d 100644
--- a/flags.c
+++ b/flags.c
@@ -1,7 +1,7 @@
/* flags.c -- Everything about flags except the `set' command. That
is in builtins.c */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/general.c b/general.c
index 50d52167..85c5a8b6 100644
--- a/general.c
+++ b/general.c
@@ -1,6 +1,6 @@
/* general.c -- Stuff that is used by all files. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -683,6 +683,15 @@ check_binary_file (sample, sample_len)
register int i;
unsigned char c;
+ if (sample_len >= 4 && sample[0] == 0x7f && sample[1] == 'E' && sample[2] == 'L' && sample[3] == 'F')
+ return 1;
+
+ /* Generally we check the first line for NULs. If the first line looks like
+ a `#!' interpreter specifier, we just look for NULs anywhere in the
+ buffer. */
+ if (sample[0] == '#' && sample[1] == '!')
+ return (memchr (sample, '\0', sample_len) != NULL);
+
for (i = 0; i < sample_len; i++)
{
c = sample[i];
diff --git a/general.h b/general.h
index 7e4db8e6..8064c50e 100644
--- a/general.h
+++ b/general.h
@@ -1,6 +1,6 @@
/* general.h -- defines that everybody likes to use. */
-/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -289,6 +289,7 @@ typedef int QSFUNC ();
#define PATHSEP(c) (ISDIRSEP(c) || (c) == 0)
#define DOT_OR_DOTDOT(s) (s[0] == '.' && (s[1] == 0 || (s[1] == '.' && s[2] == 0)))
+
#if defined (HANDLE_MULTIBYTE)
#define WDOT_OR_DOTDOT(w) (w[0] == L'.' && (w[1] == L'\0' || (w[1] == L'.' && w[2] == L'\0')))
#endif
diff --git a/hashcmd.c b/hashcmd.c
index da3af005..891f967a 100644
--- a/hashcmd.c
+++ b/hashcmd.c
@@ -1,7 +1,7 @@
/* hashcmd.c - functions for managing a hash table mapping command names to
full pathnames. */
-/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/include/chartypes.h b/include/chartypes.h
index 098cfb96..d5be4a3c 100644
--- a/include/chartypes.h
+++ b/include/chartypes.h
@@ -1,6 +1,6 @@
/* chartypes.h -- extend ctype.h */
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -23,22 +23,18 @@
#include <ctype.h>
-/* Jim Meyering writes:
-
- "... Some ctype macros are valid only for character codes that
- isascii says are ASCII (SGI's IRIX-4.0.5 is one such system --when
- using /bin/cc or gcc but without giving an ansi option). So, all
- ctype uses should be through macros like ISPRINT... If
- STDC_HEADERS is defined, then autoconf has verified that the ctype
- macros don't need to be guarded with references to isascii. ...
- Defining IN_CTYPE_DOMAIN to 1 should let any compiler worth its salt
- eliminate the && through constant folding."
- Solaris defines some of these symbols so we must undefine them first. */
+#ifndef UCHAR_MAX
+# define UCHAR_MAX 255
+#endif
+#ifndef CHAR_MAX
+# define CHAR_MAX 127
+#endif
-#if STDC_HEADERS || (!defined (isascii) && !HAVE_ISASCII)
+/* use this as a proxy for C89 */
+#if defined (HAVE_STDLIB_H) && defined (HAVE_STRING_H)
# define IN_CTYPE_DOMAIN(c) 1
#else
-# define IN_CTYPE_DOMAIN(c) isascii(c)
+# define IN_CTYPE_DOMAIN(c) ((c) >= 0 && (c) <= CHAR_MAX)
#endif
#if !defined (isspace) && !defined (HAVE_ISSPACE)
@@ -107,7 +103,7 @@
#endif
#ifndef UNCTRL
/* control char to letter -- ASCII */
-# define UNCTRL(x) (TOUPPER(x) ^ 0x40)
+# define UNCTRL(x) (TOUPPER(x ^ 0x40))
#endif
#endif /* _SH_CHARTYPES_H */
diff --git a/include/posixdir.h b/include/posixdir.h
index af5be801..b737bd7d 100644
--- a/include/posixdir.h
+++ b/include/posixdir.h
@@ -1,6 +1,6 @@
/* posixdir.h -- Posix directory reading includes and defines. */
-/* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc.
+/* Copyright (C) 1987,1991,2012,2019,2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/include/posixtime.h b/include/posixtime.h
index a83e436b..e70ebec6 100644
--- a/include/posixtime.h
+++ b/include/posixtime.h
@@ -1,6 +1,6 @@
/* posixtime.h -- wrapper for time.h, sys/times.h mess. */
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -25,16 +25,10 @@
/* Some systems require this, mostly for the definition of `struct timezone'.
For example, Dynix/ptx has that definition in <time.h> rather than
sys/time.h */
-#if defined (TIME_WITH_SYS_TIME)
+#if defined (HAVE_SYS_TIME_H)
# 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 <time.h>
#if !defined (HAVE_SYSCONF) || !defined (_SC_CLK_TCK)
# if !defined (CLK_TCK)
@@ -58,4 +52,33 @@ struct timeval
extern int gettimeofday PARAMS((struct timeval *, void *));
#endif
+/* These exist on BSD systems, at least. */
+#if !defined (timerclear)
+# define timerclear(tvp) do { (tvp)->tv_sec = 0; (tvp)->tv_usec = 0; } while (0)
+#endif
+#if !defined (timerisset)
+# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#endif
+#if !defined (timercmp)
+# define timercmp(a, b, CMP) \
+ (((a)->tv_sec == (b)->tv_sec) ? ((a)->tv_usec CMP (b)->tv_usec) \
+ : ((a)->tv_sec CMP (b)->tv_sec))
+#endif
+
+/* These are non-standard. */
+#if !defined (timerisunset)
+# define timerisunset(tvp) ((tvp)->tv_sec == 0 && (tvp)->tv_usec == 0)
+#endif
+#if !defined (timerset)
+# define timerset(tvp, s, u) do { tvp->tv_sec = s; tvp->tv_usec = u; } while (0)
+#endif
+
+#ifndef TIMEVAL_TO_TIMESPEC
+# define TIMEVAL_TO_TIMESPEC(tv, ts) \
+ do { \
+ (ts)->tv_sec = (tv)->tv_sec; \
+ (ts)->tv_nsec = (tv)->tv_usec * 1000; \
+ } while (0)
+#endif
+
#endif /* _POSIXTIME_H_ */
diff --git a/include/shmbchar.h b/include/shmbchar.h
index a4f3f247..27b0024f 100644
--- a/include/shmbchar.h
+++ b/include/shmbchar.h
@@ -1,5 +1,5 @@
/* Multibyte character data type.
- Copyright (C) 2001, 2005-2007, 2009-2010 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2005-2007, 2009-2010, 2021 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/include/shmbutil.h b/include/shmbutil.h
index 835fb80c..0f711eab 100644
--- a/include/shmbutil.h
+++ b/include/shmbutil.h
@@ -318,9 +318,11 @@ extern int locale_utf8locale; /* XXX */
size_t mblength; \
int _k; \
\
- _k = is_basic (*((_src) + (_si))); \
+ _k = is_basic ((_src)[(_si)]); \
if (_k) \
mblength = 1; \
+ else if (locale_utf8locale && ((_src)[(_si)] & 0x80) == 0) \
+ mblength = (_src)[(_si)] != 0; \
else \
{\
state_bak = state; \
@@ -361,9 +363,11 @@ extern int locale_utf8locale; /* XXX */
size_t mblength; \
int _i; \
\
- _i = is_basic (*((_src) + (_si))); \
+ _i = is_basic ((_src)[(_si)]); \
if (_i) \
mblength = 1; \
+ else if (locale_utf8locale && ((_src)[(_si)] & 0x80) == 0) \
+ mblength = (_src)[(_si)] != 0; \
else \
{ \
state_bak = state; \
@@ -411,6 +415,8 @@ extern int locale_utf8locale; /* XXX */
_i = is_basic (*((_src) + (_si))); \
if (_i) \
mblength = 1; \
+ else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \
+ mblength = (_src)[_si] != 0; \
else \
{ \
state_bak = state; \
@@ -527,7 +533,9 @@ extern int locale_utf8locale; /* XXX */
i = is_basic (*((_src) + (_si))); \
if (i) \
mblength = 1; \
- else \
+ else if (locale_utf8locale && (((_src)[_si] & 0x80) == 0)) \
+ mblength = (_src)[_si] != 0; \
+ else \
{ \
state_bak = state; \
mblength = mbrlen ((_src) + (_si), (_srcsize) - (_si), &state); \
diff --git a/include/stdc.h b/include/stdc.h
index 7b9282cc..38516ae5 100644
--- a/include/stdc.h
+++ b/include/stdc.h
@@ -1,7 +1,7 @@
/* stdc.h -- macros to make source compile on both ANSI C and K&R C
compilers. */
-/* Copyright (C) 1993 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/include/timer.h b/include/timer.h
new file mode 100644
index 00000000..27794756
--- /dev/null
+++ b/include/timer.h
@@ -0,0 +1,64 @@
+/* timer.h -- data structures used by the shell timers in lib/sh/timers.c */
+
+/* Copyright (C) 2021 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "bashjmp.h"
+typedef struct _shtimer
+{
+ struct timeval tmout;
+
+ int fd;
+ int flags;
+
+ int alrmflag; /* should be set by alrm_handler */
+
+ SigHandler *alrm_handler;
+ SigHandler *old_handler;
+
+ procenv_t jmpenv;
+
+ int (*tm_handler) (struct _shtimer *); /* called on timeout if set */
+ PTR_T *data; /* reserved */
+} sh_timer;
+
+#define SHTIMER_ALARM 0x01 /* mutually exclusive */
+#define SHTIMER_SELECT 0x02
+#define SHTIMER_LONGJMP 0x04
+
+#define SHTIMER_SIGSET 0x100
+#define SHTIMER_ALRMSET 0x200
+
+extern sh_timer *shtimer_alloc (void);
+extern void shtimer_flush (sh_timer *);
+extern void shtimer_dispose (sh_timer *);
+
+extern void shtimer_set (sh_timer *, time_t, long);
+extern void shtimer_unset (sh_timer *);
+
+extern void shtimer_cleanup (sh_timer *);
+extern void shtimer_clear (sh_timer *);
+
+extern int shtimer_chktimeout (sh_timer *);
+
+extern int shtimer_select (sh_timer *);
+extern int shtimer_alrm (sh_timer *);
diff --git a/include/typemax.h b/include/typemax.h
index 9853d567..e3b98f47 100644
--- a/include/typemax.h
+++ b/include/typemax.h
@@ -1,6 +1,6 @@
/* typemax.h -- encapsulate max values for long, long long, etc. */
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -54,7 +54,7 @@
: ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1)))
#endif
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
# ifndef LLONG_MAX
# define LLONG_MAX TYPE_MAXIMUM(long long int)
# define LLONG_MIN TYPE_MINIMUM(long long int)
@@ -79,8 +79,18 @@
# define UINT_MAX ((unsigned int) ~(unsigned int)0)
#endif
+#ifndef SHRT_MAX
+# define SHRT_MAX TYPE_MAXIMUM(short)
+# define SHRT_MIN TYPE_MINIMUM(short)
+# define USHRT_MAX ((unsigned short) ~(unsigned short)0)
+#endif
+
+#ifndef UCHAR_MAX
+# define UCHAR_MAX 255
+#endif
+
/* workaround for gcc bug in versions < 2.7 */
-#if defined (HAVE_LONG_LONG) && __GNUC__ == 2 && __GNUC_MINOR__ < 7
+#if defined (HAVE_LONG_LONG_INT) && __GNUC__ == 2 && __GNUC_MINOR__ < 7
static const unsigned long long int maxquad = ULLONG_MAX;
# undef ULLONG_MAX
# define ULLONG_MAX maxquad
@@ -102,11 +112,11 @@ static const unsigned long long int maxquad = ULLONG_MAX;
#endif
#ifndef SSIZE_MAX
-# define SSIZE_MAX 32767 /* POSIX minimum max */
+# define SSIZE_MAX INT_MAX
#endif
#ifndef SIZE_MAX
-# define SIZE_MAX 65535 /* POSIX minimum max */
+# define SIZE_MAX ((size_t) ~(size_t)0)
#endif
#ifndef sh_imaxabs
diff --git a/input.c b/input.c
index c57e81c3..7b439f8c 100644
--- a/input.c
+++ b/input.c
@@ -1,6 +1,6 @@
/* input.c -- functions to perform buffered input with synchronization. */
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/jobs.c b/jobs.c
index 7c3b6e83..6b986ed7 100644
--- a/jobs.c
+++ b/jobs.c
@@ -3,7 +3,7 @@
/* This file works with both POSIX and BSD systems. It implements job
control. */
-/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -643,6 +643,9 @@ stop_pipeline (async, deferred)
the_pipeline = (PROCESS *)NULL;
newjob->pgrp = pipeline_pgrp;
+
+ /* Invariant: if the shell is executing a command substitution,
+ pipeline_pgrp == shell_pgrp. Other parts of the shell assume this. */
if (pipeline_pgrp != shell_pgrp)
pipeline_pgrp = 0;
@@ -832,9 +835,7 @@ bgp_add (pid, status)
/* XXX - what if psi == *bucket? */
if (psi == *bucket)
{
-#ifdef DEBUG
- internal_warning ("hashed pid %d (pid %d) collides with bgpids.head, skipping", psi, pid);
-#endif
+ internal_debug ("hashed pid %d (pid %d) collides with bgpids.head, skipping", psi, pid);
bgpids.storage[psi].pid = NO_PID; /* make sure */
psi = bgp_getindex (); /* skip to next one */
}
@@ -911,7 +912,7 @@ bgp_delete (pid)
if (psi == NO_PIDSTAT)
return 0; /* not found */
-#if defined (DEBUG)
+#if 0
itrace("bgp_delete: deleting %d", pid);
#endif
@@ -1220,12 +1221,10 @@ cleanup_dead_jobs ()
/* XXX could use js.j_firstj and js.j_lastj here */
for (i = 0; i < js.j_jobslots; i++)
{
-#if defined (DEBUG)
if (i < js.j_firstj && jobs[i])
- itrace("cleanup_dead_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ INTERNAL_DEBUG (("cleanup_dead_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj));
if (i > js.j_lastj && jobs[i])
- itrace("cleanup_dead_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
-#endif
+ INTERNAL_DEBUG(("cleanup_dead_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj));
if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i))
delete_job (i, 0);
@@ -1272,16 +1271,12 @@ delete_old_job (pid)
job = find_job (pid, 0, &p);
if (job != NO_JOB)
{
-#ifdef DEBUG
- itrace ("delete_old_job: found pid %d in job %d with state %d", pid, job, jobs[job]->state);
-#endif
+ INTERNAL_DEBUG (("delete_old_job: found pid %d in job %d with state %d", pid, job, jobs[job]->state));
if (JOBSTATE (job) == JDEAD)
delete_job (job, DEL_NOBGPID);
else
{
-#ifdef DEBUG
- internal_warning (_("forked pid %d appears in running job %d"), pid, job+1);
-#endif
+ internal_debug (_("forked pid %d appears in running job %d"), pid, job+1);
if (p)
p->pid = 0;
}
@@ -1429,9 +1424,7 @@ delete_job (job_index, dflags)
js.j_ndead--;
if (js.c_reaped < 0)
{
-#ifdef DEBUG
- itrace("delete_job (%d pgrp %d): js.c_reaped (%d) < 0 ndel = %d js.j_ndead = %d", job_index, temp->pgrp, js.c_reaped, ndel, js.j_ndead);
-#endif
+ INTERNAL_DEBUG (("delete_job (%d pgrp %d): js.c_reaped (%d) < 0 ndel = %d js.j_ndead = %d", job_index, temp->pgrp, js.c_reaped, ndel, js.j_ndead));
js.c_reaped = 0;
}
}
@@ -1503,10 +1496,8 @@ add_process (name, pid)
p = find_process (pid, 0, &j);
if (p)
{
-# ifdef DEBUG
if (j == NO_JOB)
- internal_warning ("add_process: process %5ld (%s) in the_pipeline", (long)p->pid, p->command);
-# endif
+ internal_debug ("add_process: process %5ld (%s) in the_pipeline", (long)p->pid, p->command);
if (PALIVE (p))
internal_warning (_("add_process: pid %5ld (%s) marked as still alive"), (long)p->pid, p->command);
p->running = PS_RECYCLED; /* mark as recycled */
@@ -1618,12 +1609,11 @@ map_over_jobs (func, arg1, arg2)
/* XXX could use js.j_firstj here */
for (i = result = 0; i < js.j_jobslots; i++)
{
-#if defined (DEBUG)
if (i < js.j_firstj && jobs[i])
- itrace("map_over_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ INTERNAL_DEBUG (("map_over_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj));
if (i > js.j_lastj && jobs[i])
- itrace("map_over_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
-#endif
+ INTERNAL_DEBUG (("map_over_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj));
+
if (jobs[i])
{
result = (*func)(jobs[i], arg1, arg2, i);
@@ -1782,12 +1772,11 @@ find_job (pid, alive_only, procp)
/* XXX could use js.j_firstj here, and should check js.j_lastj */
for (i = 0; i < js.j_jobslots; i++)
{
-#if defined (DEBUG)
if (i < js.j_firstj && jobs[i])
- itrace("find_job: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ INTERNAL_DEBUG (("find_job: job %d non-null before js.j_firstj (%d)", i, js.j_firstj));
if (i > js.j_lastj && jobs[i])
- itrace("find_job: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
-#endif
+ INTERNAL_DEBUG (("find_job: job %d non-null after js.j_lastj (%d)", i, js.j_lastj));
+
if (jobs[i])
{
p = jobs[i]->pipe;
@@ -2617,7 +2606,7 @@ wait_for_single_pid (pid, flags)
{
if (flags & JWAIT_PERROR)
internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid);
- return (127);
+ return (257);
}
alive = 0;
@@ -2655,16 +2644,16 @@ wait_for_single_pid (pid, flags)
}
/* Wait for all of the background processes started by this shell to finish. */
-void
+int
wait_for_background_pids (ps)
struct procstat *ps;
{
register int i, r;
- int any_stopped, check_async;
+ int any_stopped, check_async, njobs;
sigset_t set, oset;
pid_t pid;
- for (any_stopped = 0, check_async = 1;;)
+ for (njobs = any_stopped = 0, check_async = 1;;)
{
BLOCK_CHILD (set, oset);
@@ -2672,12 +2661,11 @@ wait_for_background_pids (ps)
/* XXX could use js.j_firstj and js.j_lastj here */
for (i = 0; i < js.j_jobslots; i++)
{
-#if defined (DEBUG)
if (i < js.j_firstj && jobs[i])
- itrace("wait_for_background_pids: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ INTERNAL_DEBUG (("wait_for_background_pids: job %d non-null before js.j_firstj (%d)", i, js.j_firstj));
if (i > js.j_lastj && jobs[i])
- itrace("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
-#endif
+ INTERNAL_DEBUG (("wait_for_background_pids: job %d non-null after js.j_lastj (%d)", i, js.j_lastj));
+
if (jobs[i] && STOPPED (i))
{
builtin_warning ("job %d[%d] stopped", i+1, find_last_pid (i, 0));
@@ -2702,7 +2690,7 @@ wait_for_background_pids (ps)
if (ps)
{
ps->pid = pid;
- ps->status = (r < 0) ? 127 : r;
+ ps->status = (r < 0 || r > 256) ? 127 : r;
}
if (r == -1 && errno == ECHILD)
{
@@ -2710,6 +2698,7 @@ wait_for_background_pids (ps)
check_async = 0;
mark_all_jobs_as_dead ();
}
+ njobs++;
}
#if defined (PROCESS_SUBSTITUTION)
@@ -2721,6 +2710,8 @@ wait_for_background_pids (ps)
mark_dead_jobs_as_notified (1);
cleanup_dead_jobs ();
bgp_clear ();
+
+ return njobs;
}
/* Make OLD_SIGINT_HANDLER the SIGINT signal handler. */
@@ -2738,6 +2729,7 @@ wait_sigint_cleanup ()
{
queue_sigchld = 0;
waiting_for_child = 0;
+ restore_sigint_handler ();
}
static void
@@ -2936,11 +2928,7 @@ wait_for (pid, flags)
temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
if (temp_sigint_handler == wait_sigint_handler)
- {
-#if defined (DEBUG)
- internal_warning ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap);
-#endif
- }
+ internal_debug ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap);
else
old_sigint_handler = temp_sigint_handler;
waiting_for_child = 0;
@@ -3129,8 +3117,8 @@ if (job == NO_JOB)
else
#if defined (READLINE)
/* We don't want to do this if we are running a process during
- programmable completion. */
- if (RL_ISSTATE (RL_STATE_COMPLETING) == 0)
+ programmable completion or a command bound to `bind -x'. */
+ if (RL_ISSTATE (RL_STATE_COMPLETING|RL_STATE_DISPATCHING|RL_STATE_TERMPREPPED) == 0)
#endif
get_tty_state ();
@@ -3707,7 +3695,7 @@ kill_pid (pid, sig, group)
result = killpg (pid, sig);
/* If we're killing using job control notification, for example,
without job control active, we have to do things ourselves. */
- else if (jobs[job]->pgrp == shell_pgrp)
+ else if (jobs[job]->pgrp == shell_pgrp) /* XXX - IS_JOBCONTROL(job) == 0? */
{
p = jobs[job]->pipe;
do
@@ -4536,6 +4524,7 @@ debug_print_pgrps ()
(long)original_pgrp, (long)shell_pgrp, (long)terminal_pgrp);
itrace("tcgetpgrp(%d) -> %ld, getpgid(0) -> %ld",
shell_tty, (long)tcgetpgrp (shell_tty), (long)getpgid(0));
+ itrace("pipeline_pgrp -> %ld", (long)pipeline_pgrp);
}
#endif
@@ -4707,9 +4696,7 @@ maybe_give_terminal_to (opgrp, npgrp, flags)
}
else if (tpgrp != opgrp)
{
-#if defined (DEBUG)
- internal_warning ("%d: maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d new pgrp = %d in_background = %d", (int)getpid(), tpgrp, opgrp, npgrp, running_in_background);
-#endif
+ internal_debug ("%d: maybe_give_terminal_to: terminal pgrp == %d shell pgrp = %d new pgrp = %d in_background = %d", (int)getpid(), tpgrp, opgrp, npgrp, running_in_background);
return -1;
}
else
@@ -4738,12 +4725,11 @@ delete_all_jobs (running_only)
/* XXX could use js.j_firstj here */
for (i = 0; i < js.j_jobslots; i++)
{
-#if defined (DEBUG)
if (i < js.j_firstj && jobs[i])
- itrace("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ INTERNAL_DEBUG (("delete_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj));
if (i > js.j_lastj && jobs[i])
- itrace("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
-#endif
+ INTERNAL_DEBUG (("delete_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj));
+
if (jobs[i] && (running_only == 0 || (running_only && RUNNING(i))))
/* We don't want to add any of these pids to bgpids. If running_only
is non-zero, we don't want to add running jobs to the list.
@@ -4799,12 +4785,11 @@ count_all_jobs ()
/* XXX could use js.j_firstj here */
for (i = n = 0; i < js.j_jobslots; i++)
{
-#if defined (DEBUG)
if (i < js.j_firstj && jobs[i])
- itrace("count_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ INTERNAL_DEBUG (("count_all_jobs: job %d non-null before js.j_firstj (%d)", i, js.j_firstj));
if (i > js.j_lastj && jobs[i])
- itrace("count_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
-#endif
+ INTERNAL_DEBUG (("count_all_jobs: job %d non-null after js.j_lastj (%d)", i, js.j_lastj));
+
if (jobs[i] && DEADJOB(i) == 0)
n++;
}
@@ -4874,12 +4859,11 @@ mark_dead_jobs_as_notified (force)
/* XXX could use js.j_firstj here */
for (i = ndead = ndeadproc = 0; i < js.j_jobslots; i++)
{
-#if defined (DEBUG)
if (i < js.j_firstj && jobs[i])
- itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ INTERNAL_DEBUG (("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj));
if (i > js.j_lastj && jobs[i])
- itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
-#endif
+ INTERNAL_DEBUG (("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj));
+
if (jobs[i] && DEADJOB (i))
{
ndead++;
@@ -4887,14 +4871,12 @@ mark_dead_jobs_as_notified (force)
}
}
-#ifdef DEBUG
# if 0
if (ndeadproc != js.c_reaped)
itrace("mark_dead_jobs_as_notified: ndeadproc (%d) != js.c_reaped (%d)", ndeadproc, js.c_reaped);
# endif
if (ndead != js.j_ndead)
- itrace("mark_dead_jobs_as_notified: ndead (%d) != js.j_ndead (%d)", ndead, js.j_ndead);
-#endif
+ INTERNAL_DEBUG (("mark_dead_jobs_as_notified: ndead (%d) != js.j_ndead (%d)", ndead, js.j_ndead));
if (js.c_childmax < 0)
set_maxchild (0);
@@ -4927,12 +4909,11 @@ itrace("mark_dead_jobs_as_notified: child_max = %d ndead = %d ndeadproc = %d", j
{
if (jobs[i] && DEADJOB (i) && (interactive_shell || (find_last_pid (i, 0) != last_asynchronous_pid)))
{
-#if defined (DEBUG)
if (i < js.j_firstj && jobs[i])
- itrace("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj);
+ INTERNAL_DEBUG (("mark_dead_jobs_as_notified: job %d non-null before js.j_firstj (%d)", i, js.j_firstj));
if (i > js.j_lastj && jobs[i])
- itrace("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj);
-#endif
+ INTERNAL_DEBUG (("mark_dead_jobs_as_notified: job %d non-null after js.j_lastj (%d)", i, js.j_lastj));
+
/* If marking this job as notified would drop us down below
child_max, don't mark it so we can keep at least child_max
statuses. XXX -- need to check what Posix actually says
@@ -4982,7 +4963,7 @@ set_job_control (arg)
old = job_control;
job_control = arg;
- if (terminal_pgrp == NO_PID)
+ if (terminal_pgrp == NO_PID && shell_tty >= 0)
terminal_pgrp = tcgetpgrp (shell_tty);
/* If we're turning on job control we're going to want to know the shell's
diff --git a/jobs.h b/jobs.h
index 43ba8c23..276204f0 100644
--- a/jobs.h
+++ b/jobs.h
@@ -1,6 +1,6 @@
/* jobs.h -- structures and definitions used by the jobs.c file. */
-/* Copyright (C) 1993-2019 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -279,7 +279,7 @@ extern int job_exit_status PARAMS((int));
extern int job_exit_signal PARAMS((int));
extern int wait_for_single_pid PARAMS((pid_t, int));
-extern void wait_for_background_pids PARAMS((struct procstat *));
+extern int wait_for_background_pids PARAMS((struct procstat *));
extern int wait_for PARAMS((pid_t, int));
extern int wait_for_job PARAMS((int, int, struct procstat *));
extern int wait_for_any_job PARAMS((int, struct procstat *));
@@ -316,6 +316,10 @@ extern void restore_pgrp_pipe PARAMS((int *));
extern void set_maxchild PARAMS((int));
+#ifdef DEBUG
+extern void debug_print_pgrps (void);
+#endif
+
extern int job_control; /* set to 0 in nojobs.c */
#endif /* _JOBS_H_ */
diff --git a/lib/glob/Makefile.in b/lib/glob/Makefile.in
index 314622f1..27e34f9d 100644
--- a/lib/glob/Makefile.in
+++ b/lib/glob/Makefile.in
@@ -42,6 +42,7 @@ PROFILE_FLAGS = @PROFILE_FLAGS@
CFLAGS = @CFLAGS@
LOCAL_CFLAGS = @LOCAL_CFLAGS@
+STYLE_CFLAGS = @STYLE_CFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@
@@ -53,7 +54,7 @@ BASHINCDIR = ${topdir}/include
INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib
CCFLAGS = $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) ${INCLUDES} $(CPPFLAGS) \
- $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS}
+ $(STYLE_CFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS}
# Here is a rule for making .o files from .c files that doesn't force
# the type of the machine (like -sun3) into the flags.
diff --git a/lib/glob/glob.c b/lib/glob/glob.c
index eb6277f0..b66af85c 100644
--- a/lib/glob/glob.c
+++ b/lib/glob/glob.c
@@ -1,6 +1,6 @@
/* glob.c -- file-name wildcard pattern matching for Bash.
- Copyright (C) 1985-2020 Free Software Foundation, Inc.
+ Copyright (C) 1985-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -103,7 +103,7 @@ int glob_ignore_case = 0;
/* Global variable controlling whether globbing ever returns . or ..
regardless of the pattern. If set to 1, no glob pattern will ever
match `.' or `..'. Disabled by default. */
-int glob_always_skip_dot_and_dotdot = 0;
+int glob_always_skip_dot_and_dotdot = 1;
/* Global variable to return to signify an error in globbing. */
char *glob_error_return;
@@ -119,10 +119,10 @@ void udequote_pathname PARAMS((char *));
#if HANDLE_MULTIBYTE
void wcdequote_pathname PARAMS((wchar_t *));
static void wdequote_pathname PARAMS((char *));
+static void dequote_pathname PARAMS((char *));
#else
-# define dequote_pathname udequote_pathname
+# define dequote_pathname(p) udequote_pathname(p)
#endif
-static void dequote_pathname PARAMS((char *));
static int glob_testdir PARAMS((char *, int));
static char **glob_dir_to_array PARAMS((char *, char **, int));
@@ -185,6 +185,13 @@ glob_pattern_p (pattern)
}
#if EXTENDED_GLOB
+
+#if defined (HANDLE_MULTIBYTE)
+# define XSKIPNAME(p, d, f) mbskipname(p, d, f)
+#else
+# define XSKIPNAME(p, d, f) skipname(p, d, f)
+#endif
+
/* Return 1 if all subpatterns in the extended globbing pattern PAT indicate
that the name should be skipped. XXX - doesn't handle pattern negation,
not sure if it should */
@@ -194,30 +201,30 @@ extglob_skipname (pat, dname, flags)
int flags;
{
char *pp, *pe, *t, *se;
- int n, r, negate, wild, nullpat;
+ int n, r, negate, wild, nullpat, xflags;
negate = *pat == '!';
wild = *pat == '*' || *pat == '?';
pp = pat + 2;
- se = pp + strlen (pp) - 1; /* end of string */
- pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */
- /* we should check for invalid extglob pattern here */
+ se = pp + strlen (pp); /* end of pattern string */
+ pe = glob_patscan (pp, se, 0); /* end of extglob pattern */
+
+ /* if pe == 0, this is an invalid extglob pattern */
if (pe == 0)
return 0;
+ xflags = flags | ( negate ? GX_NEGATE : 0);
+
/* if pe != se we have more of the pattern at the end of the extglob
pattern. Check the easy case first ( */
- if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0)
+ if (pe == se && *pe == 0 && pe[-1] == ')' && (t = strchr (pp, '|')) == 0)
{
- *pe = '\0';
-#if defined (HANDLE_MULTIBYTE)
- r = mbskipname (pp, dname, flags);
-#else
- r = skipname (pp, dname, flags); /*(*/
-#endif
- *pe = ')';
- if (wild && pe[1]) /* if we can match zero instances, check further */
- return (skipname (pe+1, dname, flags));
+ pe[-1] = '\0';
+ /* This is where we check whether the pattern is being negated and
+ match all files beginning with `.' if the pattern begins with a
+ literal `.'. */
+ r = XSKIPNAME (pp, dname, xflags); /*(*/
+ pe[-1] = ')';
return r;
}
@@ -229,21 +236,21 @@ extglob_skipname (pat, dname, flags)
/* check every subpattern */
while (t = glob_patscan (pp, pe, '|'))
{
+ /* If T == PE and *T == 0 (&& PE[-1] == RPAREN), we have hit the end
+ of a pattern with no trailing characters. */
n = t[-1]; /* ( */
- if (extglob_pattern_p (pp) && n == ')')
+ if (extglob_pattern_p (pp) && n == ')') /* nested extglob? */
t[-1] = n; /* no-op for now */
else
t[-1] = '\0';
-#if defined (HANDLE_MULTIBYTE)
- r = mbskipname (pp, dname, flags);
-#else
- r = skipname (pp, dname, flags);
-#endif
+ r = XSKIPNAME (pp, dname, xflags);
t[-1] = n;
if (r == 0) /* if any pattern says not skip, we don't skip */
return r;
pp = t;
- } /*(*/
+ if (pp == pe)
+ break;
+ }
/* glob_patscan might find end of string */
if (pp == se)
@@ -251,7 +258,8 @@ extglob_skipname (pat, dname, flags)
/* but if it doesn't then we didn't match a leading dot */
if (wild && *pe) /* if we can match zero instances, check further */
- return (skipname (pe, dname, flags));
+ return (XSKIPNAME (pe, dname, flags));
+
return 1;
}
#endif
@@ -264,6 +272,8 @@ skipname (pat, dname, flags)
char *dname;
int flags;
{
+ int i;
+
#if EXTENDED_GLOB
if (extglob_pattern_p (pat)) /* XXX */
return (extglob_skipname (pat, dname, flags));
@@ -279,9 +289,19 @@ skipname (pat, dname, flags)
DOT_OR_DOTDOT (dname))
return 1;
+#if 0
+ /* This is where we check whether the pattern is being negated and
+ match all files beginning with `.' if the pattern begins with a
+ literal `.'. This is the negation of the next clause. */
+ else if ((flags & GX_NEGATE) && noglob_dot_filenames == 0 &&
+ dname[0] == '.' &&
+ (pat[0] == '.' || (pat[0] == '\\' && pat[1] == '.')))
+ return 0;
+#endif
+
/* If a dot must be explicitly matched, check to see if they do. */
- else if (noglob_dot_filenames && dname[0] == '.' && pat[0] != '.' &&
- (pat[0] != '\\' || pat[1] != '.'))
+ else if (noglob_dot_filenames && dname[0] == '.' &&
+ pat[0] != '.' && (pat[0] != '\\' || pat[1] != '.'))
return 1;
return 0;
@@ -294,6 +314,8 @@ wskipname (pat, dname, flags)
wchar_t *pat, *dname;
int flags;
{
+ int i;
+
if (glob_always_skip_dot_and_dotdot && WDOT_OR_DOTDOT (dname))
return 1;
@@ -304,11 +326,20 @@ wskipname (pat, dname, flags)
WDOT_OR_DOTDOT (dname))
return 1;
+#if 0
+ /* This is where we check whether the pattern is being negated and
+ match all files beginning with `.' if the pattern begins with a
+ literal `.'. This is the negation of the next clause. */
+ else if ((flags & GX_NEGATE) && noglob_dot_filenames == 0 &&
+ dname[0] == L'.' &&
+ (pat[0] == L'.' || (pat[0] == L'\\' && pat[1] == L'.')))
+ return 0;
+#endif
+
/* If a leading dot must be explicitly matched, check to see if the
pattern and dirname both have one. */
- else if (noglob_dot_filenames && dname[0] == L'.' &&
- pat[0] != L'.' &&
- (pat[0] != L'\\' || pat[1] != L'.'))
+ else if (noglob_dot_filenames && dname[0] == L'.' &&
+ pat[0] != L'.' && (pat[0] != L'\\' || pat[1] != L'.'))
return 1;
return 0;
@@ -320,22 +351,28 @@ wextglob_skipname (pat, dname, flags)
int flags;
{
#if EXTENDED_GLOB
- wchar_t *pp, *pe, *t, n, *se;
- int r, negate, wild, nullpat;
+ wchar_t *pp, *pe, *t, *se, n;
+ int r, negate, wild, nullpat, xflags;
negate = *pat == L'!';
wild = *pat == L'*' || *pat == L'?';
pp = pat + 2;
- se = pp + wcslen (pp) - 1; /*(*/
+ se = pp + wcslen (pp);
pe = glob_patscan_wc (pp, se, 0);
- if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0)
+ /* if pe == 0, this is an invalid extglob pattern */
+ if (pe == 0)
+ return 0;
+
+ xflags = flags | ( negate ? GX_NEGATE : 0);
+
+ /* if pe != se we have more of the pattern at the end of the extglob
+ pattern. Check the easy case first ( */
+ if (pe == se && *pe == L'\0' && pe[-1] == L')' && (t = wcschr (pp, L'|')) == 0)
{
- *pe = L'\0';
- r = wskipname (pp, dname, flags); /*(*/
- *pe = L')';
- if (wild && pe[1] != L'\0')
- return (wskipname (pe+1, dname, flags));
+ pe[-1] = L'\0';
+ r = wskipname (pp, dname, xflags); /*(*/
+ pe[-1] = L')';
return r;
}
@@ -348,23 +385,27 @@ wextglob_skipname (pat, dname, flags)
while (t = glob_patscan_wc (pp, pe, '|'))
{
n = t[-1]; /* ( */
- if (wextglob_pattern_p (pp) && n == L')')
+ if (wextglob_pattern_p (pp) && n == L')') /* nested extglob? */
t[-1] = n; /* no-op for now */
else
t[-1] = L'\0';
- r = wskipname (pp, dname, flags);
+ r = wskipname (pp, dname, xflags);
t[-1] = n;
if (r == 0)
return 0;
pp = t;
+ if (pp == pe)
+ break;
}
- if (pp == pe) /* glob_patscan_wc might find end of pattern */
+ /* glob_patscan_wc might find end of string */
+ if (pp == se)
return r;
/* but if it doesn't then we didn't match a leading dot */
if (wild && *pe != L'\0')
return (wskipname (pe, dname, flags));
+
return 1;
#else
return (wskipname (pat, dname, flags));
@@ -765,7 +806,7 @@ glob_vector (pat, dir, flags)
/* Compute the flags that will be passed to strmatch(). We don't
need to do this every time through the loop. */
- mflags = (noglob_dot_filenames ? FNM_PERIOD : 0) | FNM_PATHNAME;
+ mflags = (noglob_dot_filenames ? FNM_PERIOD : FNM_DOTDOT) | FNM_PATHNAME;
#ifdef FNM_CASEFOLD
if (glob_ignore_case)
@@ -777,8 +818,7 @@ glob_vector (pat, dir, flags)
add_current = ((flags & (GX_ALLDIRS|GX_ADDCURDIR)) == (GX_ALLDIRS|GX_ADDCURDIR));
- /* Scan the directory, finding all names that match.
- For each name that matches, allocate a struct globval
+ /* Scan the directory, finding all names that match For each name that matches, allocate a struct globval
on the stack and store the name in it.
Chain those structs together; lastlink is the front of the chain. */
while (1)
@@ -860,6 +900,9 @@ glob_vector (pat, dir, flags)
nextname = (char *) malloc (sdlen + 1);
if (nextlink == 0 || nextname == 0)
{
+ if (firstmalloc && firstmalloc == nextlink)
+ firstmalloc = 0;
+ /* If we reset FIRSTMALLOC we can free this here. */
FREE (nextlink);
FREE (nextname);
free (subdir);
@@ -895,7 +938,18 @@ glob_vector (pat, dir, flags)
nextname = (char *) malloc (D_NAMLEN (dp) + 1);
if (nextlink == 0 || nextname == 0)
{
- FREE (nextlink);
+ /* We free NEXTLINK here, since it won't be added to the
+ LASTLINK chain. If we used malloc, and it returned non-
+ NULL, firstmalloc will be set to something valid. If it's
+ NEXTLINK, reset it before we free NEXTLINK to avoid
+ duplicate frees. If not, it will be taken care of by the
+ loop below with TMPLINK. */
+ if (firstmalloc)
+ {
+ if (firstmalloc == nextlink)
+ firstmalloc = 0;
+ FREE (nextlink);
+ }
FREE (nextname);
lose = 1;
break;
@@ -914,7 +968,7 @@ glob_vector (pat, dir, flags)
/* compat: if GX_ADDCURDIR, add the passed directory also. Add an empty
directory name as a placeholder if GX_NULLDIR (in which case the passed
directory name is "."). */
- if (add_current)
+ if (add_current && lose == 0)
{
sdlen = strlen (dir);
nextname = (char *)malloc (sdlen + 1);
@@ -944,7 +998,7 @@ glob_vector (pat, dir, flags)
lose |= name_vector == NULL;
}
- /* Have we run out of memory? */
+ /* Have we run out of memory or been interrupted? */
if (lose)
{
tmplink = 0;
@@ -1441,6 +1495,7 @@ only_filename:
{
if (free_dirname)
free (directory_name);
+ free ((char *) result);
return ((char **)&glob_error_return);
}
}
diff --git a/lib/glob/glob.h b/lib/glob/glob.h
index ca3a66cf..47410577 100644
--- a/lib/glob/glob.h
+++ b/lib/glob/glob.h
@@ -1,5 +1,5 @@
/* File-name wildcard pattern matching for GNU.
- Copyright (C) 1985-2020 Free Software Foundation, Inc.
+ Copyright (C) 1985-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -32,6 +32,7 @@
#define GX_GLOBSTAR 0x400 /* turn on special handling of ** */
#define GX_RECURSE 0x800 /* internal -- glob_filename called recursively */
#define GX_SYMLINK 0x1000 /* internal -- symlink to a directory */
+#define GX_NEGATE 0x2000 /* internal -- extglob pattern being negated */
extern int glob_pattern_p PARAMS((const char *));
extern char **glob_vector PARAMS((char *, char *, int));
diff --git a/lib/glob/sm_loop.c b/lib/glob/sm_loop.c
index a98c14bd..247ba28a 100644
--- a/lib/glob/sm_loop.c
+++ b/lib/glob/sm_loop.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -16,6 +16,8 @@
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
+extern int interrupt_state, terminating_signal;
+
struct STRUCT
{
CHAR *pattern;
@@ -81,6 +83,9 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
sc = n < se ? *n : '\0';
+ if (interrupt_state || terminating_signal)
+ return FNM_NOMATCH;
+
#ifdef EXTENDED_GLOB
/* EXTMATCH () will handle recursively calling GMATCH, so we can
just return what EXTMATCH() returns. */
@@ -90,7 +95,7 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
int lflags;
/* If we're not matching the start of the string, we're not
concerned about the special cases for matching `.' */
- lflags = (n == string) ? flags : (flags & ~FNM_PERIOD);
+ lflags = (n == string) ? flags : (flags & ~(FNM_PERIOD|FNM_DOTDOT));
return (EXTMATCH (c, n, se, p, pe, lflags));
}
#endif /* EXTENDED_GLOB */
@@ -109,6 +114,15 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
string or if it is the first character following a slash and
we are matching a pathname. */
return FNM_NOMATCH;
+
+ /* `?' cannot match `.' or `..' if it is the first character of the
+ string or if it is the first character following a slash and
+ we are matching a pathname. */
+ if ((flags & FNM_DOTDOT) &&
+ ((n == string && SDOT_OR_DOTDOT(n)) ||
+ ((flags & FNM_PATHNAME) && n[-1] == L('/') && PDOT_OR_DOTDOT(n))))
+ return FNM_NOMATCH;
+
break;
case L('\\'): /* backslash escape removes special meaning */
@@ -147,6 +161,14 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
we are matching a pathname. */
return FNM_NOMATCH;
+ /* `*' cannot match `.' or `..' if it is the first character of the
+ string or if it is the first character following a slash and
+ we are matching a pathname. */
+ if ((flags & FNM_DOTDOT) &&
+ ((n == string && SDOT_OR_DOTDOT(n)) ||
+ ((flags & FNM_PATHNAME) && n[-1] == L('/') && PDOT_OR_DOTDOT(n))))
+ return FNM_NOMATCH;
+
if (p == pe)
return 0;
@@ -288,7 +310,7 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
continue;
/* Otherwise, we just recurse. */
- if (GMATCH (n, se, p, pe, &end, flags & ~FNM_PERIOD) == 0)
+ if (GMATCH (n, se, p, pe, &end, flags & ~(FNM_PERIOD|FNM_DOTDOT)) == 0)
{
if (end.pattern == NULL)
return (0);
@@ -321,6 +343,14 @@ fprintf(stderr, "gmatch: pattern = %s; pe = %s\n", pattern, pe);
(n == string || ((flags & FNM_PATHNAME) && n[-1] == L('/'))))
return (FNM_NOMATCH);
+ /* `?' cannot match `.' or `..' if it is the first character of the
+ string or if it is the first character following a slash and
+ we are matching a pathname. */
+ if ((flags & FNM_DOTDOT) &&
+ ((n == string && SDOT_OR_DOTDOT(n)) ||
+ ((flags & FNM_PATHNAME) && n[-1] == L('/') && PDOT_OR_DOTDOT(n))))
+ return FNM_NOMATCH;
+
p = BRACKMATCH (p, sc, flags);
if (p == 0)
return FNM_NOMATCH;
@@ -843,7 +873,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
if (m1)
{
/* if srest > s, we are not at start of string */
- xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
+ xflags = (srest > s) ? (flags & ~(FNM_PERIOD|FNM_DOTDOT)) : flags;
m2 = (GMATCH (srest, se, prest, pe, NULL, xflags) == 0) ||
(s != srest && GMATCH (srest, se, p - 1, pe, NULL, xflags) == 0);
}
@@ -873,7 +903,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
for ( ; srest <= se; srest++)
{
/* if srest > s, we are not at start of string */
- xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
+ xflags = (srest > s) ? (flags & ~(FNM_PERIOD|FNM_DOTDOT)) : flags;
if (GMATCH (s, srest, psub, pnext - 1, NULL, flags) == 0 &&
GMATCH (srest, se, prest, pe, NULL, xflags) == 0)
return (0);
@@ -899,12 +929,17 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
/* If nothing matched, but the string starts with a period and we
need to match periods explicitly, don't return this as a match,
- even for negation. Might need to do this only if srest == s. */
- if (m1 == 0 && *s == '.' && (flags & FNM_PERIOD))
+ even for negation. */
+ if (m1 == 0 && (flags & FNM_PERIOD) && *s == '.')
+ return (FNM_NOMATCH);
+
+ if (m1 == 0 && (flags & FNM_DOTDOT) &&
+ (SDOT_OR_DOTDOT (s) ||
+ ((flags & FNM_PATHNAME) && s[-1] == L('/') && PDOT_OR_DOTDOT(s))))
return (FNM_NOMATCH);
/* if srest > s, we are not at start of string */
- xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
+ xflags = (srest > s) ? (flags & ~(FNM_PERIOD|FNM_DOTDOT)) : flags;
if (m1 == 0 && GMATCH (srest, se, prest, pe, NULL, xflags) == 0)
return (0);
}
@@ -939,4 +974,8 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
#undef MEMCHR
#undef COLLEQUIV
#undef RANGECMP
+#undef ISDIRSEP
+#undef PATHSEP
+#undef PDOT_OR_DOTDOT
+#undef SDOT_OR_DOTDOT
#undef L
diff --git a/lib/glob/smatch.c b/lib/glob/smatch.c
index a58456d7..379c2d2e 100644
--- a/lib/glob/smatch.c
+++ b/lib/glob/smatch.c
@@ -1,7 +1,7 @@
/* strmatch.c -- ksh-like extended pattern matching for the shell and filename
globbing. */
-/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -308,6 +308,16 @@ is_cclass (c, name)
? TOLOWER ((unsigned char)c) \
: ((unsigned char)c))
+#if !defined (__CYGWIN__)
+# define ISDIRSEP(c) ((c) == '/')
+#else
+# define ISDIRSEP(c) ((c) == '/' || (c) == '\\')
+#endif /* __CYGWIN__ */
+#define PATHSEP(c) (ISDIRSEP(c) || (c) == 0)
+
+# define PDOT_OR_DOTDOT(s) (s[0] == '.' && (PATHSEP (s[1]) || (s[1] == '.' && PATHSEP (s[2]))))
+# define SDOT_OR_DOTDOT(s) (s[0] == '.' && (s[1] == 0 || (s[1] == '.' && s[2] == 0)))
+
#define FCT internal_strmatch
#define GMATCH gmatch
#define COLLSYM collsym
@@ -553,6 +563,17 @@ posix_cclass_only (pattern)
/* Now include `sm_loop.c' for multibyte characters. */
#define FOLD(c) ((flags & FNM_CASEFOLD) && iswupper (c) ? towlower (c) : (c))
+
+# if !defined (__CYGWIN__)
+# define ISDIRSEP(c) ((c) == L'/')
+# else
+# define ISDIRSEP(c) ((c) == L'/' || (c) == L'\\')
+# endif /* __CYGWIN__ */
+# define PATHSEP(c) (ISDIRSEP(c) || (c) == L'\0')
+
+# define PDOT_OR_DOTDOT(w) (w[0] == L'.' && (PATHSEP(w[1]) || (w[1] == L'.' && PATHSEP(w[2]))))
+# define SDOT_OR_DOTDOT(w) (w[0] == L'.' && (w[1] == L'\0' || (w[1] == L'.' && w[2] == L'\0')))
+
#define FCT internal_wstrmatch
#define GMATCH gmatch_wc
#define COLLSYM collwcsym
diff --git a/lib/glob/strmatch.h b/lib/glob/strmatch.h
index fa7be7bb..d6a6b0fb 100644
--- a/lib/glob/strmatch.h
+++ b/lib/glob/strmatch.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -47,6 +47,7 @@
#define FNM_EXTMATCH (1 << 5) /* Use ksh-like extended matching. */
#define FNM_FIRSTCHAR (1 << 6) /* Match only the first character */
+#define FNM_DOTDOT (1 << 7) /* force `.' and `..' to match explicitly even if FNM_PERIOD not supplied. */
/* Value returned by `strmatch' if STRING does not match PATTERN. */
#undef FNM_NOMATCH
diff --git a/lib/intl/VERSION b/lib/intl/VERSION
index 13031835..f49e0dd8 100644
--- a/lib/intl/VERSION
+++ b/lib/intl/VERSION
@@ -1 +1,3 @@
GNU gettext library from gettext-0.12.1
+
+This is here only in the case the system doesn't provide it
diff --git a/lib/intl/ref-add.sin b/lib/intl/ref-add.sin
index 6fd32ed9..6fd32ed9 100755..100644
--- a/lib/intl/ref-add.sin
+++ b/lib/intl/ref-add.sin
diff --git a/lib/intl/ref-del.sin b/lib/intl/ref-del.sin
index 65ce9afa..65ce9afa 100755..100644
--- a/lib/intl/ref-del.sin
+++ b/lib/intl/ref-del.sin
diff --git a/lib/malloc/Makefile.in b/lib/malloc/Makefile.in
index 0ef3cfd5..7ec8f64f 100644
--- a/lib/malloc/Makefile.in
+++ b/lib/malloc/Makefile.in
@@ -1,6 +1,6 @@
# Skeleton Makefile for the GNU malloc code
#
-# Copyright (C) 1996-2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -38,6 +38,7 @@ PROFILE_FLAGS = @PROFILE_FLAGS@
CFLAGS = @CFLAGS@
LOCAL_CFLAGS = @LOCAL_CFLAGS@
+STYLE_CFLAGS = @STYLE_CFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
@@ -56,7 +57,7 @@ LIBINTL_H = @LIBINTL_H@
INCLUDES = -I. -I../.. -I$(topdir) -I$(BASHINCDIR) -I$(topdir)/lib $(INTL_INC)
CCFLAGS = ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) \
- $(CFLAGS) $(MALLOC_CFLAGS) $(CPPFLAGS)
+ $(CFLAGS) $(MALLOC_CFLAGS) $(STYLE_CFLAGS) $(CPPFLAGS)
.c.o:
$(CC) $(CCFLAGS) -c $<
diff --git a/lib/malloc/imalloc.h b/lib/malloc/imalloc.h
index d07adac2..bebd1364 100644
--- a/lib/malloc/imalloc.h
+++ b/lib/malloc/imalloc.h
@@ -32,6 +32,11 @@
#define MALLOC_WRAPFUNCS
+/* If defined, as it is by default, use the lesscore() function to attempt
+ to reduce the top of the heap when freeing memory blocks larger than a
+ defined threshold. */
+#define USE_LESSCORE
+
/* Generic pointer type. */
#ifndef PTR_T
# if defined (__STDC__)
diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c
index 92e6efa5..f61f0271 100644
--- a/lib/malloc/malloc.c
+++ b/lib/malloc/malloc.c
@@ -1,6 +1,6 @@
/* malloc.c - dynamic memory allocation for bash. */
-/* Copyright (C) 1985-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1985-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -47,10 +47,10 @@
*/
/*
- * nextf[i] is the pointer to the next free block of size 2^(i+3). The
- * smallest allocatable block is 8 bytes. The overhead information will
- * go in the first int of the block, and the returned pointer will point
- * to the second.
+ * nextf[i] is the pointer to the next free block of size 2^(i+5). The
+ * smallest allocatable block is 32 bytes. The overhead information will
+ * go in the first 16 bytes of the block, and the returned pointer will point
+ * to the rest.
*/
/* Define MEMSCRAMBLE to have free() write 0xcf into memory as it's freed, to
@@ -121,8 +121,8 @@
# define NO_VALLOC
#endif
-/* SIZEOF_LONG * 4 - 2, usable bins from 1..NBUCKETS-1 */
-#define NBUCKETS 30
+#define MALLOC_PAGESIZE_MIN 4096
+#define MALLOC_INCR_PAGES 8192
#define ISALLOC ((char) 0xf7) /* magic byte that implies allocation */
#define ISFREE ((char) 0x54) /* magic byte that implies free block */
@@ -140,20 +140,14 @@
enough room in the block for the new size. Range checking is always
done. */
union mhead {
-#if SIZEOF_CHAR_P == 8
bits64_t mh_align[2]; /* 16 */
-#else
- bits64_t mh_align; /* 8 */
-#endif
struct {
char mi_alloc; /* ISALLOC or ISFREE */ /* 1 */
char mi_index; /* index in nextf[] */ /* 1 */
/* Remainder are valid only when block is allocated */
u_bits16_t mi_magic2; /* should be == MAGIC2 */ /* 2 */
u_bits32_t mi_nbytes; /* # of bytes allocated */ /* 4 */
-#if SIZEOF_CHAR_P == 8
char mi_magic8[8]; /* MAGIC1 guard bytes */ /* 8 */
-#endif
} minfo;
};
#define mh_alloc minfo.mi_alloc
@@ -162,14 +156,14 @@ union mhead {
#define mh_magic2 minfo.mi_magic2
#define mh_magic8 minfo.mi_magic8
+#define MAGIC8_NUMBYTES 8
+#define MALLOC_SIZE_T u_bits32_t
+
#define MOVERHEAD sizeof(union mhead)
-#if SIZEOF_CHAR_P == 8
-#define MALIGN_MASK 15
-#else
-#define MALIGN_MASK 7 /* one less than desired alignment */
-#endif
+#define MALIGN_MASK 15 /* one less than desired alignment */
+/* Guard bytes we write at the end of the allocation, encoding the size. */
typedef union _malloc_guard {
char s[4];
u_bits32_t i;
@@ -181,6 +175,8 @@ typedef union _malloc_guard {
because we want sizeof (union mhead)
to describe the overhead for when the block is in use,
and we do not want the free-list pointer to count in that. */
+/* If we have mmap, this is not used for chunks larger than mmap_threshold,
+ since we munmap immediately on free(). */
/* If SIZEOF_CHAR_P == 8, this goes into the mh_magic8 buffer at the end of
the rest of the struct. This may need adjusting. */
@@ -194,10 +190,11 @@ typedef union _malloc_guard {
/* Written in the bytes before the block's real space (-SIZEOF_CHAR_P bytes) */
#define MAGIC1 0x55
#define MAGIC2 0x5555
-#define MSLOP 4 /* 4 bytes extra for u_bits32_t size */
+
+#define MSLOP 4 /* 4 bytes extra for u_bits32_t end guard size */
/* How many bytes are actually allocated for a request of size N --
- rounded up to nearest multiple of 2*SIZEOF_CHAR_P after accounting for
+ rounded up to nearest multiple of 16 (alignment) after accounting for
malloc overhead. */
#define ALLOCATED_BYTES(n) \
(((n) + MOVERHEAD + MSLOP + MALIGN_MASK) & ~MALIGN_MASK)
@@ -211,18 +208,22 @@ typedef union _malloc_guard {
/* Minimum and maximum bucket indices for block splitting (and to bound
the search for a block to split). */
-#define SPLIT_MIN 2 /* XXX - was 3 */
-#define SPLIT_MID 11
-#define SPLIT_MAX 14
+#define SPLIT_MIN 1 /* 64 */
+#define SPLIT_MID 9 /* 16384 */
+#define SPLIT_MAX 12 /* 131072 */
/* Minimum and maximum bucket indices for block coalescing. */
-#define COMBINE_MIN 2
-#define COMBINE_MAX (pagebucket - 1) /* XXX */
+#define COMBINE_MIN 1 /* 64 */
+#define COMBINE_MAX (pagebucket - 1) /* 2048 for 4096-byte pages */
-#define LESSCORE_MIN 10
-#define LESSCORE_FRC 13
+#define LESSCORE_MIN 8 /* 8192 */
+#define LESSCORE_FRC 11 /* 65536 */
+
+/* Which bin do we prepopulate with the initial sbrk memory? */
+#define PREPOP_BIN 1
+#define PREPOP_SIZE 64
-#define STARTBUCK 1
+#define STARTBUCK 0
/* Should we use mmap for large allocations? */
#if defined (HAVE_MMAP)
@@ -232,15 +233,25 @@ typedef union _malloc_guard {
#endif
#if defined (HAVE_MMAP) && defined (MAP_ANONYMOUS)
-# define USE_MMAP
+# define USE_MMAP 1
#endif
#if defined (USE_MMAP)
-# define MMAP_THRESHOLD 14 /* must be >= SPLIT_MAX, COMBINE_MAX */
+# define MMAP_THRESHOLD 12 /* must be >= SPLIT_MAX, COMBINE_MAX */
#else
# define MMAP_THRESHOLD (8 * SIZEOF_LONG)
#endif
+/* We don't try to decipher the differences between the Linux-style and
+ BSD-style implementations of mremap here; we use the Linux one. */
+#if USE_MMAP == 1 && defined (HAVE_MREMAP) && defined (MREMAP_MAYMOVE)
+# define USE_MREMAP 1
+#endif
+
+/* usable bins from STARTBUCK..NBUCKETS-1 */
+
+#define NBUCKETS 28
+
/* Flags for the internal functions. */
#define MALLOC_WRAPPER 0x01 /* wrapper function */
#define MALLOC_INTERNAL 0x02 /* internal function calling another */
@@ -265,7 +276,7 @@ typedef union _malloc_guard {
#define RIGHT_BUCKET(nb, nu) \
(((nb) > binsizes[(nu)-1]) && ((nb) <= binsizes[(nu)]))
-/* nextf[i] is free list of blocks of size 2**(i + 3) */
+/* nextf[i] is free list of blocks of size 2**(i + 5) */
static union mhead *nextf[NBUCKETS];
@@ -280,16 +291,18 @@ static int maxbuck; /* highest bucket receiving allocation request. */
static char *memtop; /* top of heap */
static const unsigned long binsizes[NBUCKETS] = {
- 8UL, 16UL, 32UL, 64UL, 128UL, 256UL, 512UL, 1024UL, 2048UL, 4096UL,
+ 32UL, 64UL, 128UL, 256UL, 512UL, 1024UL, 2048UL, 4096UL,
8192UL, 16384UL, 32768UL, 65536UL, 131072UL, 262144UL, 524288UL,
1048576UL, 2097152UL, 4194304UL, 8388608UL, 16777216UL, 33554432UL,
67108864UL, 134217728UL, 268435456UL, 536870912UL, 1073741824UL,
2147483648UL, 4294967295UL
};
-/* binsizes[x] == (1 << ((x) + 3)) */
+/* binsizes[x] == (1 << ((x) + 5)) */
#define binsize(x) binsizes[(x)]
+#define MAXALLOC_SIZE binsizes[NBUCKETS-1]
+
#if !defined (errno)
extern int errno;
#endif
@@ -306,6 +319,7 @@ static void internal_cfree PARAMS((PTR_T, const char *, int, int));
#ifndef NO_VALLOC
static PTR_T internal_valloc PARAMS((size_t, const char *, int, int));
#endif
+static PTR_T internal_remap PARAMS((PTR_T, size_t, int, int));
#if defined (botch)
extern void botch ();
@@ -583,6 +597,7 @@ _malloc_unblock_signals (setp, osetp)
#endif
}
+#if defined (USE_LESSCORE)
/* Return some memory to the system by reducing the break. This is only
called with NU > pagebucket, so we're always assured of giving back
more than one page of memory. */
@@ -603,6 +618,7 @@ lesscore (nu) /* give system back some memory */
_mstats.nlesscore[nu]++;
#endif
}
+#endif /* USE_LESSCORE */
/* Ask system for more memory; add to NEXTF[NU]. BUSY[NU] must be set to 1. */
static void
@@ -741,14 +757,6 @@ malloc_debug_dummy ()
write (1, "malloc_debug_dummy\n", 19);
}
-#if SIZEOF_CHAR_P == 8
-#define PREPOP_BIN 3
-#define PREPOP_SIZE 64
-#else
-#define PREPOP_BIN 2
-#define PREPOP_SIZE 32
-#endif
-
static int
pagealign ()
{
@@ -758,8 +766,8 @@ pagealign ()
char *curbrk;
pagesz = getpagesize ();
- if (pagesz < 1024)
- pagesz = 1024;
+ if (pagesz < MALLOC_PAGESIZE_MIN)
+ pagesz = MALLOC_PAGESIZE_MIN;
/* OK, how much do we need to allocate to make things page-aligned?
Some of this partial page will be wasted space, but we'll use as
@@ -825,7 +833,7 @@ internal_malloc (n, file, line, flags) /* get a block */
register union mhead *p;
register int nunits;
register char *m, *z;
- long nbytes;
+ MALLOC_SIZE_T nbytes;
mguard_t mg;
/* Get the system page size and align break pointer so future sbrks will
@@ -839,6 +847,10 @@ internal_malloc (n, file, line, flags) /* get a block */
multiple of 8, then figure out which nextf[] area to use. Try to
be smart about where to start searching -- if the number of bytes
needed is greater than the page size, we can start at pagebucket. */
+#if SIZEOF_SIZE_T == 8
+ if (ALLOCATED_BYTES(n) > MAXALLOC_SIZE)
+ return ((PTR_T) NULL);
+#endif
nbytes = ALLOCATED_BYTES(n);
nunits = (nbytes <= (pagesz >> 1)) ? STARTBUCK : pagebucket;
for ( ; nunits < NBUCKETS; nunits++)
@@ -886,10 +898,8 @@ internal_malloc (n, file, line, flags) /* get a block */
p->mh_magic2 = MAGIC2;
p->mh_nbytes = n;
-#if SIZEOF_CHAR_P == 8
/* Begin guard */
- MALLOC_MEMSET ((char *)p->mh_magic8, MAGIC1, 8);
-#endif
+ MALLOC_MEMSET ((char *)p->mh_magic8, MAGIC1, MAGIC8_NUMBYTES);
/* End guard */
mg.i = n;
@@ -945,8 +955,8 @@ internal_free (mem, file, line, flags)
register union mhead *p;
register char *ap, *z;
register int nunits;
- register unsigned int nbytes;
- int ubytes; /* caller-requested size */
+ register MALLOC_SIZE_T nbytes;
+ MALLOC_SIZE_T ubytes; /* caller-requested size */
mguard_t mg;
if ((ap = (char *)mem) == 0)
@@ -979,28 +989,25 @@ internal_free (mem, file, line, flags)
nunits = p->mh_index;
nbytes = ALLOCATED_BYTES(p->mh_nbytes);
- /* Since the sizeof(u_bits32_t) bytes before the memory handed to the user
- are now used for the number of bytes allocated, a simple check of
- mh_magic2 is no longer sufficient to catch things like p[-1] = 'x'.
+ /* The MAGIC8_NUMBYTES bytes before the memory handed to the user are now
+ used for a simple check to catch things like p[-1] = 'x'.
We sanity-check the value of mh_nbytes against the size of the blocks
in the appropriate bucket before we use it. This can still cause problems
and obscure errors if mh_nbytes is wrong but still within range; the
checks against the size recorded at the end of the chunk will probably
- fail then. Using MALLOC_REGISTER will help here, since it saves the
+ fail then. Using MALLOC_REGISTER will help here, since it saves the
original number of bytes requested. */
if (IN_BUCKET(nbytes, nunits) == 0)
xbotch (mem, ERR_UNDERFLOW,
_("free: underflow detected; mh_nbytes out of range"), file, line);
-#if SIZEOF_CHAR_P == 8
{
int i;
- for (i = 0, z = p->mh_magic8; i < 8; i++)
+ for (i = 0, z = p->mh_magic8; i < MAGIC8_NUMBYTES; i++)
if (*z++ != MAGIC1)
xbotch (mem, ERR_UNDERFLOW,
_("free: underflow detected; magic8 corrupted"), file, line);
}
-#endif
ap += p->mh_nbytes;
z = mg.s;
@@ -1019,11 +1026,9 @@ internal_free (mem, file, line, flags)
}
#endif
-#if GLIBC21
- if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == sbrk (0)))
-#else
+#if defined (USE_LESSCORE)
+ /* We take care of the mmap case and munmap above */
if (nunits >= LESSCORE_MIN && ((char *)p + binsize(nunits) == memtop))
-#endif
{
/* If above LESSCORE_FRC, give back unconditionally. This should be set
high enough to be infrequently encountered. If between LESSCORE_MIN
@@ -1036,6 +1041,7 @@ internal_free (mem, file, line, flags)
goto free_return;
}
}
+#endif /* USE_LESSCORE */
#ifdef MEMSCRAMBLE
if (p->mh_nbytes)
@@ -1084,6 +1090,58 @@ free_return:
#endif
}
+#if USE_MREMAP == 1
+/* Assume the caller (internal_realloc) has already performed the sanity and
+ overflow tests. Basically we kill the old guard information, determine the
+ new size, call mremap with the new size, and add the bookkeeping and guard
+ information back in. */
+static PTR_T
+internal_remap (mem, n, nunits, flags)
+ PTR_T mem;
+ register size_t n;
+ int nunits;
+ int flags;
+{
+ register union mhead *p, *np;
+ char *m, *z;
+ mguard_t mg;
+ MALLOC_SIZE_T nbytes;
+
+ if (nunits >= NBUCKETS) /* Uh oh */
+ return ((PTR_T) NULL);
+
+ p = (union mhead *)mem - 1;
+
+ m = (char *)mem + p->mh_nbytes;
+ z = mg.s;
+ *m++ = 0; *m++ = 0; *m++ = 0; *m++ = 0; /* erase guard */
+
+ nbytes = ALLOCATED_BYTES(n);
+
+ busy[nunits] = 1;
+ np = (union mhead *)mremap (p, binsize (p->mh_index), binsize (nunits), MREMAP_MAYMOVE);
+ busy[nunits] = 0;
+ if (np == MAP_FAILED)
+ return (PTR_T)NULL;
+
+ if (np != p)
+ {
+ np->mh_alloc = ISALLOC;
+ np->mh_magic2 = MAGIC2;
+ MALLOC_MEMSET ((char *)np->mh_magic8, MAGIC1, MAGIC8_NUMBYTES);
+ }
+ np->mh_index = nunits;
+ np->mh_nbytes = n;
+
+ mg.i = n;
+ z = mg.s;
+ m = (char *)(np + 1) + n;
+ *m++ = *z++, *m++ = *z++, *m++ = *z++, *m++ = *z++;
+
+ return ((PTR_T)(np + 1));
+}
+#endif
+
static PTR_T
internal_realloc (mem, n, file, line, flags)
PTR_T mem;
@@ -1092,9 +1150,9 @@ internal_realloc (mem, n, file, line, flags)
int line, flags;
{
register union mhead *p;
- register u_bits32_t tocopy;
- register unsigned int nbytes;
- register int nunits;
+ register MALLOC_SIZE_T tocopy;
+ register MALLOC_SIZE_T nbytes;
+ register int newunits, nunits;
register char *m, *z;
mguard_t mg;
@@ -1132,16 +1190,14 @@ internal_realloc (mem, n, file, line, flags)
if (IN_BUCKET(nbytes, nunits) == 0)
xbotch (mem, ERR_UNDERFLOW,
_("realloc: underflow detected; mh_nbytes out of range"), file, line);
-#if SIZEOF_CHAR_P == 8
{
int i;
- for (i = 0, z = p->mh_magic8; i < 8; i++)
+ for (i = 0, z = p->mh_magic8; i < MAGIC8_NUMBYTES; i++)
if (*z++ != MAGIC1)
xbotch (mem, ERR_UNDERFLOW,
_("realloc: underflow detected; magic8 corrupted"), file, line);
}
-#endif
m = (char *)mem + (tocopy = p->mh_nbytes);
z = mg.s;
@@ -1161,6 +1217,10 @@ internal_realloc (mem, n, file, line, flags)
if (n == p->mh_nbytes)
return mem;
+#if SIZEOF_SIZE_T == 8
+ if (ALLOCATED_BYTES(n) > MAXALLOC_SIZE)
+ return ((PTR_T) NULL);
+#endif
/* See if desired size rounds to same power of 2 as actual size. */
nbytes = ALLOCATED_BYTES(n);
@@ -1187,12 +1247,31 @@ internal_realloc (mem, n, file, line, flags)
_mstats.nrcopy++;
#endif
- /* If we are using mmap and have mremap, we could use it here. */
+#if USE_MREMAP == 1
+ /* If we are using mmap and have mremap, we use it here. Make sure that
+ the old size and new size are above the threshold where we use mmap */
+ if (nbytes > p->mh_nbytes)
+ newunits = nunits;
+ else
+ newunits = (nbytes <= (pagesz >> 1)) ? STARTBUCK : pagebucket;
+ for ( ; newunits < NBUCKETS; newunits++)
+ if (nbytes <= binsize(newunits))
+ break;
+ if (nunits > malloc_mmap_threshold && newunits > malloc_mmap_threshold)
+ {
+ m = internal_remap (mem, n, newunits, MALLOC_INTERNAL);
+ if (m == 0)
+ return 0;
+ }
+ else
+#endif /* USE_MREMAP */
+ {
if ((m = internal_malloc (n, file, line, MALLOC_INTERNAL|MALLOC_NOTRACE|MALLOC_NOREG)) == 0)
return 0;
FASTCOPY (mem, m, tocopy);
internal_free (mem, file, line, MALLOC_INTERNAL);
+ }
#ifdef MALLOC_TRACE
if (malloc_trace && (flags & MALLOC_NOTRACE) == 0)
@@ -1272,14 +1351,13 @@ malloc_usable_size (mem)
{
register union mhead *p;
register char *ap;
- register int maxbytes;
-
if ((ap = (char *)mem) == 0)
return 0;
/* Find the true start of the memory block to discover which bin */
p = (union mhead *) ap - 1;
+
if (p->mh_alloc == ISMEMALIGN)
{
ap -= p->mh_nbytes;
diff --git a/lib/malloc/mstats.h b/lib/malloc/mstats.h
index ce8aaeca..aa3fa33b 100644
--- a/lib/malloc/mstats.h
+++ b/lib/malloc/mstats.h
@@ -1,6 +1,6 @@
/* mstats.h - definitions for malloc statistics */
-/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -27,7 +27,7 @@
/* This needs to change if the definition in malloc.c changes */
#ifndef NBUCKETS
-# define NBUCKETS 30
+# define NBUCKETS 28
#endif
/*
diff --git a/lib/readline/Makefile.in b/lib/readline/Makefile.in
index b2358c67..3b16139d 100644
--- a/lib/readline/Makefile.in
+++ b/lib/readline/Makefile.in
@@ -56,6 +56,7 @@ DEBUG = @DEBUG@
CFLAGS = @CFLAGS@
LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG}
+STYLE_CFLAGS = @STYLE_CFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
@@ -65,7 +66,7 @@ LOCAL_DEFS = @LOCAL_DEFS@
INCLUDES = -I. -I$(BUILD_DIR) -I$(topdir) -I$(topdir)/lib
CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(APP_CFLAGS) $(CPPFLAGS) ${INCLUDES} \
- $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS}
+ $(STYLE_CFLAGS) $(LOCAL_CFLAGS) $(CFLAGS) ${ADDON_CFLAGS}
.c.o:
${RM} $@
diff --git a/lib/readline/bind.c b/lib/readline/bind.c
index 76103786..971116a9 100644
--- a/lib/readline/bind.c
+++ b/lib/readline/bind.c
@@ -1,6 +1,6 @@
/* bind.c -- key binding and startup file support for the readline library. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -72,7 +72,7 @@ extern char *strchr (), *strrchr ();
/* Variables exported by this file. */
Keymap rl_binding_keymap;
-static int _rl_skip_to_delim PARAMS((char *, int, int));
+static int _rl_skip_to_delim (char *, int, int);
#if defined (USE_VARARGS) && defined (PREFER_STDARG)
static void _rl_init_file_error (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
@@ -80,23 +80,23 @@ static void _rl_init_file_error (const char *, ...) __attribute__((__format__ (
static void _rl_init_file_error ();
#endif
-static rl_command_func_t *_rl_function_of_keyseq_internal PARAMS((const char *, size_t, Keymap, int *));
+static rl_command_func_t *_rl_function_of_keyseq_internal (const char *, size_t, Keymap, int *);
-static char *_rl_read_file PARAMS((char *, size_t *));
-static int _rl_read_init_file PARAMS((const char *, int));
-static int glean_key_from_name PARAMS((char *));
+static char *_rl_read_file (char *, size_t *);
+static int _rl_read_init_file (const char *, int);
+static int glean_key_from_name (char *);
-static int find_boolean_var PARAMS((const char *));
-static int find_string_var PARAMS((const char *));
+static int find_boolean_var (const char *);
+static int find_string_var (const char *);
-static const char *boolean_varname PARAMS((int));
-static const char *string_varname PARAMS((int));
+static const char *boolean_varname (int);
+static const char *string_varname (int);
-static char *_rl_get_string_variable_value PARAMS((const char *));
-static int substring_member_of_array PARAMS((const char *, const char * const *));
+static char *_rl_get_string_variable_value (const char *);
+static int substring_member_of_array (const char *, const char * const *);
-static int _rl_get_keymap_by_name PARAMS((const char *));
-static int _rl_get_keymap_by_map PARAMS((Keymap));
+static int _rl_get_keymap_by_name (const char *);
+static int _rl_get_keymap_by_map (Keymap);
static int currently_reading_init_file;
@@ -880,6 +880,85 @@ rl_function_of_keyseq_len (const char *keyseq, size_t len, Keymap map, int *type
return _rl_function_of_keyseq_internal (keyseq, len, map, type);
}
+/* Assuming there is a numeric argument at the beginning of KEYSEQ (the
+ caller is responsible for checking), return the index of the portion of
+ the key sequence following the numeric argument. If there's no numeric
+ argument (?), or if KEYSEQ consists solely of a numeric argument (?),
+ return -1. */
+int
+rl_trim_arg_from_keyseq (const char *keyseq, size_t len, Keymap map)
+{
+ register int i, j, parsing_digits;
+ unsigned char ic;
+ Keymap map0;
+
+ if (map == 0)
+ map = _rl_keymap;
+ map0 = map;
+
+ /* The digits following the initial one (e.g., the binding to digit-argument)
+ or the optional `-' in a binding to digit-argument or universal-argument
+ are not added to rl_executing_keyseq. This is basically everything read by
+ rl_digit_loop. The parsing_digits logic is here in case they ever are. */
+ for (i = j = parsing_digits = 0; keyseq && i < len; i++)
+ {
+ ic = keyseq[i];
+
+ if (parsing_digits)
+ {
+ if (_rl_digit_p (ic))
+ {
+ j = i + 1;
+ continue;
+ }
+ parsing_digits = 0;
+ }
+
+ if (map[ic].type == ISKMAP)
+ {
+ if (i + 1 == len)
+ return -1;
+ map = FUNCTION_TO_KEYMAP (map, ic);
+ continue;
+ }
+ if (map[ic].type == ISFUNC)
+ {
+#if defined (VI_MODE)
+ if (map[ic].function != rl_digit_argument && map[ic].function != rl_universal_argument && map[ic].function != rl_vi_arg_digit)
+#else
+ if (map[ic].function != rl_digit_argument && map[ic].function != rl_universal_argument)
+#endif
+ return (j);
+
+ /* We don't bother with a keyseq that is only a numeric argument */
+ if (i + 1 == len)
+ return -1;
+
+ parsing_digits = 1;
+
+ /* This logic should be identical to rl_digit_loop */
+ /* We accept M-- as equivalent to M--1, C-u- as equivalent to C-u-1
+ but set parsing_digits to 2 to note that we saw `-' */
+ if (map[ic].function == rl_universal_argument && (i + 1 == '-'))
+ {
+ i++;
+ parsing_digits = 2;
+ }
+ if (map[ic].function == rl_digit_argument && ic == '-')
+ {
+ parsing_digits = 2;
+ }
+
+ map = map0;
+ j = i + 1;
+ }
+ }
+
+ /* If we're still parsing digits by the time we get here, we don't allow a
+ key sequence that consists solely of a numeric argument */
+ return -1;
+}
+
/* The last key bindings file read. */
static char *last_readline_init_file = (char *)NULL;
@@ -1143,7 +1222,7 @@ parse_comparison_op (s, indp)
/* */
/* **************************************************************** */
-typedef int _rl_parser_func_t PARAMS((char *));
+typedef int _rl_parser_func_t (char *);
/* Things that mean `Control'. */
const char * const _rl_possible_control_prefixes[] = {
@@ -1154,6 +1233,12 @@ const char * const _rl_possible_meta_prefixes[] = {
"Meta", "M-", (const char *)NULL
};
+/* Forward declarations */
+static int parser_if (char *);
+static int parser_else (char *);
+static int parser_endif (char *);
+static int parser_include (char *);
+
/* Conditionals. */
/* Calling programs set this to have their argv[0]. */
@@ -1813,6 +1898,7 @@ static const struct {
{ "convert-meta", &_rl_convert_meta_chars_to_ascii, 0 },
{ "disable-completion", &rl_inhibit_completion, 0 },
{ "echo-control-characters", &_rl_echo_control_chars, 0 },
+ { "enable-active-region", &_rl_enable_active_region, 0 },
{ "enable-bracketed-paste", &_rl_enable_bracketed_paste, V_SPECIAL },
{ "enable-keypad", &_rl_enable_keypad, 0 },
{ "enable-meta-key", &_rl_enable_meta, 0 },
@@ -1883,7 +1969,7 @@ hack_special_boolean_var (int i)
_rl_enable_active_region = _rl_enable_bracketed_paste;
}
-typedef int _rl_sv_func_t PARAMS((const char *));
+typedef int _rl_sv_func_t (const char *);
/* These *must* correspond to the array indices for the appropriate
string variable. (Though they're not used right now.) */
@@ -1897,25 +1983,29 @@ typedef int _rl_sv_func_t PARAMS((const char *));
#define V_INT 2
/* Forward declarations */
-static int sv_bell_style PARAMS((const char *));
-static int sv_combegin PARAMS((const char *));
-static int sv_dispprefix PARAMS((const char *));
-static int sv_compquery PARAMS((const char *));
-static int sv_compwidth PARAMS((const char *));
-static int sv_editmode PARAMS((const char *));
-static int sv_emacs_modestr PARAMS((const char *));
-static int sv_histsize PARAMS((const char *));
-static int sv_isrchterm PARAMS((const char *));
-static int sv_keymap PARAMS((const char *));
-static int sv_seqtimeout PARAMS((const char *));
-static int sv_viins_modestr PARAMS((const char *));
-static int sv_vicmd_modestr PARAMS((const char *));
+static int sv_region_start_color (const char *);
+static int sv_region_end_color (const char *);
+static int sv_bell_style (const char *);
+static int sv_combegin (const char *);
+static int sv_dispprefix (const char *);
+static int sv_compquery (const char *);
+static int sv_compwidth (const char *);
+static int sv_editmode (const char *);
+static int sv_emacs_modestr (const char *);
+static int sv_histsize (const char *);
+static int sv_isrchterm (const char *);
+static int sv_keymap (const char *);
+static int sv_seqtimeout (const char *);
+static int sv_viins_modestr (const char *);
+static int sv_vicmd_modestr (const char *);
static const struct {
const char * const name;
int flags;
_rl_sv_func_t *set_func;
} string_varlist[] = {
+ { "active-region-end-color", V_STRING, sv_region_end_color },
+ { "active-region-start-color", V_STRING, sv_region_start_color },
{ "bell-style", V_STRING, sv_bell_style },
{ "comment-begin", V_STRING, sv_combegin },
{ "completion-display-width", V_INT, sv_compwidth },
@@ -2135,6 +2225,18 @@ sv_seqtimeout (const char *value)
}
static int
+sv_region_start_color (const char *value)
+{
+ return (_rl_reset_region_color (0, value));
+}
+
+static int
+sv_region_end_color (const char *value)
+{
+ return (_rl_reset_region_color (1, value));
+}
+
+static int
sv_bell_style (const char *value)
{
if (value == 0 || *value == '\0')
@@ -2548,6 +2650,15 @@ _rl_get_keyname (int key)
keyname[i++] = (c / 8) + '0';
c = (c % 8) + '0';
}
+ /* These characters are valid UTF-8; convert them into octal escape
+ sequences as well. This changes C. */
+ else if (c >= 160)
+ {
+ keyname[i++] = '\\';
+ keyname[i++] = '0' + ((((unsigned char)c) >> 6) & 0x07);
+ keyname[i++] = '0' + ((((unsigned char)c) >> 3) & 0x07);
+ c = (c % 8) + '0';
+ }
/* Now, if the character needs to be quoted with a backslash, do that. */
if (c == '\\' || c == '"')
diff --git a/lib/readline/callback.c b/lib/readline/callback.c
index a466cf9b..69df77df 100644
--- a/lib/readline/callback.c
+++ b/lib/readline/callback.c
@@ -1,6 +1,6 @@
/* callback.c -- functions to use readline as an X `callback' mechanism. */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -136,6 +136,8 @@ rl_callback_read_char (void)
abort ();
}
+ eof = 0;
+
memcpy ((void *)olevel, (void *)_rl_top_level, sizeof (procenv_t));
#if defined (HAVE_POSIX_SIGSETJMP)
jcode = sigsetjmp (_rl_top_level, 0);
@@ -147,6 +149,14 @@ rl_callback_read_char (void)
(*rl_redisplay_function) ();
_rl_want_redisplay = 0;
memcpy ((void *)_rl_top_level, (void *)olevel, sizeof (procenv_t));
+
+ /* If we longjmped because of a timeout, handle it here. */
+ if (RL_ISSTATE (RL_STATE_TIMEOUT))
+ {
+ RL_SETSTATE (RL_STATE_DONE);
+ rl_done = 1;
+ }
+
CALLBACK_READ_RETURN ();
}
@@ -268,6 +278,13 @@ rl_callback_read_char (void)
_rl_want_redisplay = 0;
}
+ /* Make sure application hooks can see whether we saw EOF. */
+ if (eof > 0)
+ {
+ rl_eof_found = eof;
+ RL_SETSTATE(RL_STATE_EOF);
+ }
+
if (rl_done)
{
line = readline_internal_teardown (eof);
@@ -278,7 +295,8 @@ rl_callback_read_char (void)
rl_clear_signals ();
#endif
in_handler = 0;
- (*rl_linefunc) (line);
+ if (rl_linefunc) /* just in case */
+ (*rl_linefunc) (line);
/* If the user did not clear out the line, do it for him. */
if (rl_line_buffer[0])
diff --git a/lib/readline/chardefs.h b/lib/readline/chardefs.h
index 3cf1326a..24a25f1f 100644
--- a/lib/readline/chardefs.h
+++ b/lib/readline/chardefs.h
@@ -1,6 +1,6 @@
/* chardefs.h -- Character definitions for readline. */
-/* Copyright (C) 1994-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -26,9 +26,6 @@
#if defined (HAVE_CONFIG_H)
# if defined (HAVE_STRING_H)
-# if ! defined (STDC_HEADERS) && defined (HAVE_MEMORY_H)
-# include <memory.h>
-# endif
# include <string.h>
# endif /* HAVE_STRING_H */
# if defined (HAVE_STRINGS_H)
@@ -66,22 +63,26 @@
#define UNMETA(c) ((c) & (~meta_character_bit))
#define UNCTRL(c) _rl_to_upper(((c)|control_character_bit))
-#if defined STDC_HEADERS || (!defined (isascii) && !defined (HAVE_ISASCII))
-# define IN_CTYPE_DOMAIN(c) 1
-#else
-# define IN_CTYPE_DOMAIN(c) isascii(c)
+#ifndef UCHAR_MAX
+# define UCHAR_MAX 255
#endif
-
-#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus)
-# define isxdigit(c) (isdigit((unsigned char)(c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
+#ifndef CHAR_MAX
+# define CHAR_MAX 127
#endif
-#if defined (CTYPE_NON_ASCII)
+/* use this as a proxy for C89 */
+#if defined (HAVE_STDLIB_H) && defined (HAVE_STRING_H)
+# define IN_CTYPE_DOMAIN(c) 1
# define NON_NEGATIVE(c) 1
#else
+# define IN_CTYPE_DOMAIN(c) ((c) >= 0 && (c) <= CHAR_MAX)
# define NON_NEGATIVE(c) ((unsigned char)(c) == (c))
#endif
+#if !defined (isxdigit) && !defined (HAVE_ISXDIGIT) && !defined (__cplusplus)
+# define isxdigit(c) (isdigit((unsigned char)(c)) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
+#endif
+
/* Some systems define these; we want our definitions. */
#undef ISPRINT
@@ -99,12 +100,12 @@
#define _rl_uppercase_p(c) (NON_NEGATIVE(c) && ISUPPER(c))
#define _rl_digit_p(c) ((c) >= '0' && (c) <= '9')
+#define _rl_alphabetic_p(c) (NON_NEGATIVE(c) && ISALNUM(c))
#define _rl_pure_alphabetic(c) (NON_NEGATIVE(c) && ISALPHA(c))
-#define ALPHABETIC(c) (NON_NEGATIVE(c) && ISALNUM(c))
#ifndef _rl_to_upper
-# define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)c) : (c))
-# define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)c) : (c))
+# define _rl_to_upper(c) (_rl_lowercase_p(c) ? toupper((unsigned char)(c)) : (c))
+# define _rl_to_lower(c) (_rl_uppercase_p(c) ? tolower((unsigned char)(c)) : (c))
#endif
#ifndef _rl_digit_value
diff --git a/lib/readline/colors.c b/lib/readline/colors.c
index 9e37527e..dba81a27 100644
--- a/lib/readline/colors.c
+++ b/lib/readline/colors.c
@@ -2,7 +2,7 @@
Modified by Chet Ramey for Readline.
- Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017, 2019
+ Copyright (C) 1985, 1988, 1990-1991, 1995-2021
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
@@ -73,6 +73,8 @@
static bool is_colored (enum indicator_no type);
static void restore_default_color (void);
+#define RL_COLOR_PREFIX_EXTENSION "readline-colored-completion-prefix"
+
COLOR_EXT_TYPE *_rl_color_ext_list = 0;
/* Output a color indicator (which may contain nulls). */
@@ -110,13 +112,28 @@ _rl_set_normal_color (void)
}
}
+static struct bin_str *
+_rl_custom_readline_prefix (void)
+{
+ size_t len;
+ COLOR_EXT_TYPE *ext;
+
+ len = strlen (RL_COLOR_PREFIX_EXTENSION);
+ for (ext = _rl_color_ext_list; ext; ext = ext->next)
+ if (ext->ext.len == len && STREQN (ext->ext.string, RL_COLOR_PREFIX_EXTENSION, len))
+ return (&ext->seq);
+ return (NULL);
+}
+
bool
_rl_print_prefix_color (void)
{
struct bin_str *s;
/* What do we want to use for the prefix? Let's try cyan first, see colors.h */
- s = &_rl_color_indicator[C_PREFIX];
+ s = _rl_custom_readline_prefix ();
+ if (s == 0)
+ s = &_rl_color_indicator[C_PREFIX];
if (s->string != NULL)
{
if (is_colored (C_NORM))
@@ -239,8 +256,10 @@ _rl_print_color_indicator (const char *f)
else if (S_ISSOCK (mode))
colored_filetype = C_SOCK;
#endif
+#if defined (S_ISBLK)
else if (S_ISBLK (mode))
colored_filetype = C_BLK;
+#endif
else if (S_ISCHR (mode))
colored_filetype = C_CHR;
else
diff --git a/lib/readline/compat.c b/lib/readline/compat.c
index 3ade3629..fc2a48f4 100644
--- a/lib/readline/compat.c
+++ b/lib/readline/compat.c
@@ -1,6 +1,6 @@
/* compat.c -- backwards compatibility functions. */
-/* Copyright (C) 2000-2017 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -30,18 +30,18 @@
#include "rlstdc.h"
#include "rltypedefs.h"
-extern void rl_free_undo_list PARAMS((void));
-extern int rl_maybe_save_line PARAMS((void));
-extern int rl_maybe_unsave_line PARAMS((void));
-extern int rl_maybe_replace_line PARAMS((void));
+extern void rl_free_undo_list (void);
+extern int rl_maybe_save_line (void);
+extern int rl_maybe_unsave_line (void);
+extern int rl_maybe_replace_line (void);
-extern int rl_crlf PARAMS((void));
-extern int rl_ding PARAMS((void));
-extern int rl_alphabetic PARAMS((int));
+extern int rl_crlf (void);
+extern int rl_ding (void);
+extern int rl_alphabetic (int);
-extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *));
-extern char *rl_username_completion_function PARAMS((const char *, int));
-extern char *rl_filename_completion_function PARAMS((const char *, int));
+extern char **rl_completion_matches (const char *, rl_compentry_func_t *);
+extern char *rl_username_completion_function (const char *, int);
+extern char *rl_filename_completion_function (const char *, int);
/* Provide backwards-compatible entry points for old function names. */
diff --git a/lib/readline/complete.c b/lib/readline/complete.c
index fc5c3adb..e5d224ed 100644
--- a/lib/readline/complete.c
+++ b/lib/readline/complete.c
@@ -1,6 +1,6 @@
/* complete.c -- filename completion for readline. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -95,7 +95,7 @@ typedef int QSFUNC ();
/* Most systems don't declare getpwent in <pwd.h> if _POSIX_SOURCE is
defined. */
#if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined (_POSIX_SOURCE))
-extern struct passwd *getpwent PARAMS((void));
+extern struct passwd *getpwent (void);
#endif /* HAVE_GETPWENT && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */
/* If non-zero, then this is the address of a function to call when
@@ -114,44 +114,44 @@ rl_compdisp_func_t *rl_completion_display_matches_hook = (rl_compdisp_func_t *)N
#endif
#if defined (VISIBLE_STATS)
-static int stat_char PARAMS((char *));
+static int stat_char (char *);
#endif
#if defined (COLOR_SUPPORT)
-static int colored_stat_start PARAMS((const char *));
-static void colored_stat_end PARAMS((void));
-static int colored_prefix_start PARAMS((void));
-static void colored_prefix_end PARAMS((void));
+static int colored_stat_start (const char *);
+static void colored_stat_end (void);
+static int colored_prefix_start (void);
+static void colored_prefix_end (void);
#endif
-static int path_isdir PARAMS((const char *));
+static int path_isdir (const char *);
-static char *rl_quote_filename PARAMS((char *, int, char *));
+static char *rl_quote_filename (char *, int, char *);
-static void _rl_complete_sigcleanup PARAMS((int, void *));
+static void _rl_complete_sigcleanup (int, void *);
-static void set_completion_defaults PARAMS((int));
-static int get_y_or_n PARAMS((int));
-static int _rl_internal_pager PARAMS((int));
-static char *printable_part PARAMS((char *));
-static int fnwidth PARAMS((const char *));
-static int fnprint PARAMS((const char *, int, const char *));
-static int print_filename PARAMS((char *, char *, int));
+static void set_completion_defaults (int);
+static int get_y_or_n (int);
+static int _rl_internal_pager (int);
+static char *printable_part (char *);
+static int fnwidth (const char *);
+static int fnprint (const char *, int, const char *);
+static int print_filename (char *, char *, int);
-static char **gen_completion_matches PARAMS((char *, int, int, rl_compentry_func_t *, int, int));
+static char **gen_completion_matches (char *, int, int, rl_compentry_func_t *, int, int);
-static char **remove_duplicate_matches PARAMS((char **));
-static void insert_match PARAMS((char *, int, int, char *));
-static int append_to_match PARAMS((char *, int, int, int));
-static void insert_all_matches PARAMS((char **, int, char *));
-static int complete_fncmp PARAMS((const char *, int, const char *, int));
-static void display_matches PARAMS((char **));
-static int compute_lcd_of_matches PARAMS((char **, int, const char *));
-static int postprocess_matches PARAMS((char ***, int));
-static int compare_match PARAMS((char *, const char *));
-static int complete_get_screenwidth PARAMS((void));
+static char **remove_duplicate_matches (char **);
+static void insert_match (char *, int, int, char *);
+static int append_to_match (char *, int, int, int);
+static void insert_all_matches (char **, int, char *);
+static int complete_fncmp (const char *, int, const char *, int);
+static void display_matches (char **);
+static int compute_lcd_of_matches (char **, int, const char *);
+static int postprocess_matches (char ***, int);
+static int compare_match (char *, const char *);
+static int complete_get_screenwidth (void);
-static char *make_quoted_replacement PARAMS((char *, int, char *));
+static char *make_quoted_replacement (char *, int, char *);
/* **************************************************************** */
/* */
@@ -304,7 +304,7 @@ const char *rl_basic_quote_characters = "\"'";
/* The list of characters that signal a break between words for
rl_complete_internal. The default list is the contents of
rl_basic_word_break_characters. */
-/*const*/ char *rl_completer_word_break_characters = (/*const*/ char *)NULL;
+const char *rl_completer_word_break_characters = 0;
/* Hook function to allow an application to set the completion word
break characters before readline breaks up the line. Allows
@@ -757,7 +757,7 @@ fnwidth (const char *string)
mbstate_t ps;
int left, w;
size_t clen;
- wchar_t wc;
+ WCHAR_T wc;
left = strlen (string) + 1;
memset (&ps, 0, sizeof (mbstate_t));
@@ -774,7 +774,7 @@ fnwidth (const char *string)
else
{
#if defined (HANDLE_MULTIBYTE)
- clen = mbrtowc (&wc, string + pos, left - pos, &ps);
+ clen = MBRTOWC (&wc, string + pos, left - pos, &ps);
if (MB_INVALIDCH (clen))
{
width++;
@@ -812,7 +812,7 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname)
const char *end;
size_t tlen;
int width;
- wchar_t wc;
+ WCHAR_T wc;
print_len = strlen (to_print);
end = to_print + print_len + 1;
@@ -835,7 +835,8 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname)
colored_stat_start (real_pathname);
#endif
- if (prefix_bytes && _rl_completion_prefix_display_length > 0)
+ if (prefix_bytes && _rl_completion_prefix_display_length > 0 &&
+ prefix_bytes > _rl_completion_prefix_display_length)
{
char ellipsis;
@@ -880,7 +881,7 @@ fnprint (const char *to_print, int prefix_bytes, const char *real_pathname)
else
{
#if defined (HANDLE_MULTIBYTE)
- tlen = mbrtowc (&wc, s, end - s, &ps);
+ tlen = MBRTOWC (&wc, s, end - s, &ps);
if (MB_INVALIDCH (tlen))
{
tlen = 1;
@@ -1078,7 +1079,8 @@ char
_rl_find_completion_word (int *fp, int *dp)
{
int scan, end, found_quote, delimiter, pass_next, isbrk;
- char quote_char, *brkchars;
+ char quote_char;
+ const char *brkchars;
end = rl_point;
found_quote = delimiter = 0;
@@ -1321,7 +1323,7 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
int v;
size_t v1, v2;
mbstate_t ps1, ps2;
- wchar_t wc1, wc2;
+ WCHAR_T wc1, wc2;
#endif
/* If only one match, just use that. Otherwise, compare each
@@ -1353,8 +1355,8 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
- v1 = mbrtowc(&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1);
- v2 = mbrtowc (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2);
+ v1 = MBRTOWC (&wc1, match_list[i]+si, strlen (match_list[i]+si), &ps1);
+ v2 = MBRTOWC (&wc2, match_list[i+1]+si, strlen (match_list[i+1]+si), &ps2);
if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2))
{
if (c1 != c2) /* do byte comparison */
@@ -1364,7 +1366,7 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
if (_rl_completion_case_fold)
{
wc1 = towlower (wc1);
- wc2 = towlower (wc2);
+ wc2 = towlower (wc2);
}
if (wc1 != wc2)
break;
@@ -1547,7 +1549,7 @@ rl_display_match_list (char **matches, int len, int max)
if (common_length > _rl_completion_prefix_display_length && common_length > ELLIPSIS_LEN)
max -= common_length - ELLIPSIS_LEN;
- else
+ else if (_rl_colored_completion_prefix <= 0)
common_length = sind = 0;
}
#if defined (COLOR_SUPPORT)
@@ -1979,7 +1981,7 @@ compare_match (char *text, const char *match)
{
temp = (*rl_filename_dequoting_function) (text, rl_completion_quote_character);
r = strcmp (temp, match);
- free (temp);
+ xfree (temp);
return r;
}
return (strcmp (text, match));
@@ -2330,7 +2332,7 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen
#if defined (HANDLE_MULTIBYTE)
size_t v1, v2;
mbstate_t ps1, ps2;
- wchar_t wc1, wc2;
+ WCHAR_T wc1, wc2;
#endif
#if defined (HANDLE_MULTIBYTE)
@@ -2357,8 +2359,8 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen
{
do
{
- v1 = mbrtowc (&wc1, s1, convlen, &ps1);
- v2 = mbrtowc (&wc2, s2, filename_len, &ps2);
+ v1 = MBRTOWC (&wc1, s1, convlen, &ps1);
+ v2 = MBRTOWC (&wc2, s2, filename_len, &ps2);
if (v1 == 0 && v2 == 0)
return 1;
else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2))
@@ -2407,8 +2409,8 @@ complete_fncmp (const char *convfn, int convlen, const char *filename, int filen
{
do
{
- v1 = mbrtowc (&wc1, s1, convlen, &ps1);
- v2 = mbrtowc (&wc2, s2, filename_len, &ps2);
+ v1 = MBRTOWC (&wc1, s1, convlen, &ps1);
+ v2 = MBRTOWC (&wc2, s2, filename_len, &ps2);
if (v1 == 0 && v2 == 0)
return 1;
else if (MB_INVALIDCH (v1) || MB_INVALIDCH (v2))
diff --git a/lib/readline/display.c b/lib/readline/display.c
index f5d32945..c1135ec5 100644
--- a/lib/readline/display.c
+++ b/lib/readline/display.c
@@ -1,6 +1,6 @@
/* display.c -- readline redisplay facility. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -63,23 +63,23 @@
extern char *strchr (), *strrchr ();
#endif /* !strchr && !__STDC__ */
-static void putc_face PARAMS((int, int, char *));
-static void puts_face PARAMS((const char *, const char *, int));
-static void norm_face PARAMS((char *, int));
+static void putc_face (int, int, char *);
+static void puts_face (const char *, const char *, int);
+static void norm_face (char *, int);
-static void update_line PARAMS((char *, char *, char *, char *, int, int, int, int));
-static void space_to_eol PARAMS((int));
-static void delete_chars PARAMS((int));
-static void insert_some_chars PARAMS((char *, int, int));
-static void open_some_spaces PARAMS((int));
-static void cr PARAMS((void));
-static void redraw_prompt PARAMS((char *));
-static void _rl_move_cursor_relative PARAMS((int, const char *, const char *));
+static void update_line (char *, char *, char *, char *, int, int, int, int);
+static void space_to_eol (int);
+static void delete_chars (int);
+static void insert_some_chars (char *, int, int);
+static void open_some_spaces (int);
+static void cr (void);
+static void redraw_prompt (char *);
+static void _rl_move_cursor_relative (int, const char *, const char *);
/* Values for FLAGS */
#define PMT_MULTILINE 0x01
-static char *expand_prompt PARAMS((char *, int, int *, int *, int *, int *));
+static char *expand_prompt (char *, int, int *, int *, int *, int *);
#define DEFAULT_LINE_BUFFER_SIZE 1024
@@ -115,7 +115,7 @@ static int line_structures_initialized = 0;
#define inv_face (line_state_invisible->lface)
#if defined (HANDLE_MULTIBYTE)
-static int _rl_col_width PARAMS((const char *, int, int, int));
+static int _rl_col_width (const char *, int, int, int);
#else
# define _rl_col_width(l, s, e, f) (((e) <= (s)) ? 0 : (e) - (s))
#endif
@@ -356,7 +356,7 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
{
char *r, *ret, *p, *igstart, *nprompt, *ms;
int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars;
- int mlen, newlines, newlines_guess, bound;
+ int mlen, newlines, newlines_guess, bound, can_add_invis;
int mb_cur_max;
/* We only expand the mode string for the last line of a multiline prompt
@@ -372,6 +372,7 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
else
nprompt = pmt;
+ can_add_invis = 0;
mb_cur_max = MB_CUR_MAX;
if (_rl_screenwidth == 0)
@@ -434,6 +435,19 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
else if (ignoring && *p == RL_PROMPT_END_IGNORE)
{
ignoring = 0;
+ /* If we have a run of invisible characters, adjust local_prompt_newlines
+ to add them, since update_line expects them to be counted before
+ wrapping the line. */
+ if (can_add_invis)
+ {
+ local_prompt_newlines[newlines] = r - ret;
+ /* If we're adding to the number of invisible characters on the
+ first line of the prompt, but we've already set the number of
+ invisible characters on that line, we need to adjust the
+ counter. */
+ if (invflset && newlines == 1)
+ invfl = ninvis;
+ }
if (p != (igstart + 1))
last = r - ret - 1;
continue;
@@ -498,10 +512,17 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
new = r - ret;
local_prompt_newlines[++newlines] = new;
}
+
+ /* What if a physical character of width >= 2 is split? There is
+ code that wraps before the physical screen width if the character
+ width would exceed it, but it needs to be checked against this
+ code and local_prompt_newlines[]. */
+ if (ignoring == 0)
+ can_add_invis = (physchars == bound);
}
}
- if (rl < _rl_screenwidth)
+ if (rl <= _rl_screenwidth)
invfl = ninvis;
*r = '\0';
@@ -515,7 +536,7 @@ expand_prompt (char *pmt, int flags, int *lp, int *lip, int *niflp, int *vlp)
*vlp = physchars;
if (nprompt != pmt)
- free (nprompt);
+ xfree (nprompt);
return ret;
}
@@ -749,7 +770,7 @@ rl_redisplay (void)
int hl_begin, hl_end;
int mb_cur_max = MB_CUR_MAX;
#if defined (HANDLE_MULTIBYTE)
- wchar_t wc;
+ WCHAR_T wc;
size_t wc_bytes;
int wc_width;
mbstate_t ps;
@@ -983,11 +1004,11 @@ rl_redisplay (void)
memset (&ps, 0, sizeof (mbstate_t));
if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[0]))
{
- wc = (wchar_t)rl_line_buffer[0];
+ wc = (WCHAR_T)rl_line_buffer[0];
wc_bytes = 1;
}
else
- wc_bytes = mbrtowc (&wc, rl_line_buffer, rl_end, &ps);
+ wc_bytes = MBRTOWC (&wc, rl_line_buffer, rl_end, &ps);
}
else
wc_bytes = 1;
@@ -1158,12 +1179,12 @@ rl_redisplay (void)
in += wc_bytes;
if (_rl_utf8locale && UTF8_SINGLEBYTE(rl_line_buffer[in]))
{
- wc = (wchar_t)rl_line_buffer[in];
+ wc = (WCHAR_T)rl_line_buffer[in];
wc_bytes = 1;
memset (&ps, 0, sizeof (mbstate_t)); /* re-init state */
}
else
- wc_bytes = mbrtowc (&wc, rl_line_buffer + in, rl_end - in, &ps);
+ wc_bytes = MBRTOWC (&wc, rl_line_buffer + in, rl_end - in, &ps);
}
else
in++;
@@ -1582,9 +1603,9 @@ putc_face (int c, int face, char *cur_face)
if (face != FACE_NORMAL && face != FACE_STANDOUT)
return;
if (face == FACE_STANDOUT && cf == FACE_NORMAL)
- _rl_standout_on ();
+ _rl_region_color_on ();
if (face == FACE_NORMAL && cf == FACE_STANDOUT)
- _rl_standout_off ();
+ _rl_region_color_off ();
*cur_face = face;
}
if (c != EOF)
@@ -1662,7 +1683,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
#if defined (HANDLE_MULTIBYTE)
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
- wchar_t wc;
+ WCHAR_T wc;
mbstate_t ps;
int oldwidth, newwidth;
int oldbytes, newbytes;
@@ -1681,7 +1702,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
/* 1. how many screen positions does first char in old consume? */
memset (&ps, 0, sizeof (mbstate_t));
- ret = mbrtowc (&wc, old, mb_cur_max, &ps);
+ ret = MBRTOWC (&wc, old, mb_cur_max, &ps);
oldbytes = ret;
if (MB_INVALIDCH (ret))
{
@@ -1697,7 +1718,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
/* 2. how many screen positions does the first char in new consume? */
memset (&ps, 0, sizeof (mbstate_t));
- ret = mbrtowc (&wc, new, mb_cur_max, &ps);
+ ret = MBRTOWC (&wc, new, mb_cur_max, &ps);
newbytes = ret;
if (MB_INVALIDCH (ret))
{
@@ -1718,7 +1739,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
{
int t;
- ret = mbrtowc (&wc, new+newbytes, mb_cur_max, &ps);
+ ret = MBRTOWC (&wc, new+newbytes, mb_cur_max, &ps);
if (MB_INVALIDCH (ret))
{
newwidth += 1;
@@ -1740,7 +1761,7 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
{
int t;
- ret = mbrtowc (&wc, old+oldbytes, mb_cur_max, &ps);
+ ret = MBRTOWC (&wc, old+oldbytes, mb_cur_max, &ps);
if (MB_INVALIDCH (ret))
{
oldwidth += 1;
@@ -1952,14 +1973,14 @@ update_line (char *old, char *old_face, char *new, char *new_face, int current_l
#if defined (HANDLE_MULTIBYTE)
if (mb_cur_max > 1 && rl_byte_oriented == 0 && _rl_utf8locale)
{
- wchar_t wc;
+ WCHAR_T wc;
mbstate_t ps = { 0 };
int t;
/* If the first character in the difference is a zero-width character,
assume it's a combining character and back one up so the two base
characters no longer compare equivalently. */
- t = mbrtowc (&wc, ofd, mb_cur_max, &ps);
+ t = MBRTOWC (&wc, ofd, mb_cur_max, &ps);
if (t > 0 && UNICODE_COMBINING_CHAR (wc) && WCWIDTH (wc) == 0)
{
old_offset = _rl_find_prev_mbchar (old, ofd - old, MB_FIND_ANY);
@@ -2421,9 +2442,24 @@ dumb_update:
((nfd-new) < (prompt_last_invisible-(current_line*_rl_screenwidth+prompt_invis_chars_first_line))))
ADJUST_CPOS (wrap_offset - prompt_invis_chars_first_line);
- /* XXX - what happens if wrap_offset == prompt_invis_chars_first_line
- and we are drawing the first line (current_line == 0)? We should
- adjust by _rl_last_c_pos -= prompt_invis_chars_first_line */
+ /* What happens if wrap_offset == prompt_invis_chars_first_line
+ and we are drawing the first line (current_line == 0), or if we
+ are drawing the first line and changing the number of invisible
+ characters in the line? If we're starting to draw before the last
+ invisible character in the prompt, we need to adjust by
+ _rl_last_c_pos -= prompt_invis_chars_first_line. This can happen
+ when we finish reading a digit argument (with the "(arg: N)"
+ prompt) and are switching back to displaying a line with a prompt
+ containing invisible characters, since we have to redraw the
+ entire prompt string. */
+ if ((mb_cur_max > 1 && rl_byte_oriented == 0) &&
+ current_line == 0 && wrap_offset &&
+ displaying_prompt_first_line &&
+ wrap_offset == prompt_invis_chars_first_line &&
+ visible_wrap_offset != current_invis_chars &&
+ visible_wrap_offset != prompt_invis_chars_first_line &&
+ ((nfd-new) < prompt_last_invisible))
+ ADJUST_CPOS (prompt_invis_chars_first_line);
}
}
else /* Delete characters from line. */
@@ -2573,7 +2609,8 @@ rl_clear_visible_line (void)
for (curr_line = _rl_last_v_pos; curr_line >= 0; curr_line--)
{
_rl_move_vert (curr_line);
- _rl_clear_to_eol (0);
+ _rl_clear_to_eol (_rl_screenwidth);
+ _rl_cr (); /* in case we use space_to_eol() */
}
return 0;
@@ -3357,27 +3394,16 @@ _rl_redisplay_after_sigwinch (void)
screen line. */
if (_rl_term_cr)
{
- _rl_move_vert (_rl_vis_botlin);
-
- _rl_cr ();
- _rl_last_c_pos = 0;
-
-#if !defined (__MSDOS__)
- if (_rl_term_clreol)
- tputs (_rl_term_clreol, 1, _rl_output_character_function);
- else
-#endif
- {
- space_to_eol (_rl_screenwidth);
- _rl_cr ();
- }
-
+ rl_clear_visible_line ();
if (_rl_last_v_pos > 0)
_rl_move_vert (0);
}
else
rl_crlf ();
+ if (_rl_screenwidth < prompt_visible_length)
+ _rl_reset_prompt (); /* update local_prompt_newlines array */
+
/* Redraw only the last line of a multi-line prompt. */
t = strrchr (rl_display_prompt, '\n');
if (t)
@@ -3451,7 +3477,7 @@ _rl_refresh_line (void)
static int
_rl_col_width (const char *str, int start, int end, int flags)
{
- wchar_t wc;
+ WCHAR_T wc;
mbstate_t ps;
int tmp, point, width, max;
@@ -3520,10 +3546,10 @@ _rl_col_width (const char *str, int start, int end, int flags)
if (_rl_utf8locale && UTF8_SINGLEBYTE(str[point]))
{
tmp = 1;
- wc = (wchar_t) str[point];
+ wc = (WCHAR_T) str[point];
}
else
- tmp = mbrtowc (&wc, str + point, max, &ps);
+ tmp = MBRTOWC (&wc, str + point, max, &ps);
if (MB_INVALIDCH ((size_t)tmp))
{
/* In this case, the bytes are invalid or too short to compose a
diff --git a/lib/readline/doc/Makefile b/lib/readline/doc/Makefile
index af5ee3e5..2ad833a9 100644
--- a/lib/readline/doc/Makefile
+++ b/lib/readline/doc/Makefile
@@ -18,7 +18,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
-
topdir = .
srcdir = .
VPATH = .
@@ -49,6 +48,8 @@ TEXI2HTML = $(srcdir)/texi2html
QUIETPS = #set this to -q to shut up dvips
PSDPI = 300 # I don't have any 600-dpi printers
DVIPS = dvips -D ${PSDPI} $(QUIETPS) -o $@ # tricky
+DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE}
+PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@
RLSRC = $(srcdir)/rlman.texi $(srcdir)/rluser.texi \
$(srcdir)/rltech.texi $(srcdir)/version.texi \
@@ -66,15 +67,25 @@ DVIOBJ = readline.dvi history.dvi rluserman.dvi
INFOOBJ = readline.info history.info rluserman.info
PSOBJ = readline.ps history.ps rluserman.ps
HTMLOBJ = readline.html history.html rluserman.html
+PDFOBJ = readline.pdf history.pdf rluserman.pdf
INTERMEDIATE_OBJ = rlman.dvi
-CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ)
+CREATED_DOCS = $(DVIOBJ) $(INFOOBJ) $(PSOBJ) $(HTMLOBJ) $(PDFOBJ)
+
+.SUFFIXES: .ps .txt .dvi .html .pdf
-.SUFFIXES: .ps .txt .dvi
+.ps.pdf:
+ $(RM) $@
+ -${PSPDF} $<
-all: info dvi html ps
+.dvi.pdf:
+ $(RM) $@
+ -${DVIPDF} $<
+
+all: info dvi html ps
nodvi: info html
+pdf: $(PDFOBJ)
readline.dvi: $(RLSRC)
TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS $(TEXI2DVI) $(srcdir)/rlman.texi
@@ -123,14 +134,17 @@ dvi: $(DVIOBJ)
ps: $(PSOBJ)
html: $(HTMLOBJ)
+readline.pdf: readline.dvi
+history.pdf: history.dvi
+rluserman.pdf: rluserman.dvi
+
clean:
$(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
- *.fns *.kys *.tps *.vrs *.o core
+ *.fns *.kys *.tps *.vrs *.bt *.bts *.o core *.core
distclean: clean
$(RM) $(CREATED_DOCS)
$(RM) $(INTERMEDIATE_OBJ)
- $(RM) Makefile
mostlyclean: clean
diff --git a/lib/readline/doc/history.texi b/lib/readline/doc/history.texi
index 7a3a4767..721118bc 100644
--- a/lib/readline/doc/history.texi
+++ b/lib/readline/doc/history.texi
@@ -12,7 +12,7 @@ This document describes the GNU History library
a programming tool that provides a consistent user interface for
recalling lines of previously typed input.
-Copyright @copyright{} 1988--2020 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2022 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/lib/readline/doc/hstech.texi b/lib/readline/doc/hstech.texi
index 7ac11953..da6417b4 100644
--- a/lib/readline/doc/hstech.texi
+++ b/lib/readline/doc/hstech.texi
@@ -1,7 +1,7 @@
@ignore
This file documents the user interface to the GNU History library.
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2022 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
Permission is granted to make and distribute verbatim copies of this manual
diff --git a/lib/readline/doc/hsuser.texi b/lib/readline/doc/hsuser.texi
index b8fedf33..9081baf8 100644
--- a/lib/readline/doc/hsuser.texi
+++ b/lib/readline/doc/hsuser.texi
@@ -1,7 +1,7 @@
@ignore
This file documents the user interface to the GNU History library.
-Copyright (C) 1988--2020 Free Software Foundation, Inc.
+Copyright (C) 1988--2022 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
Permission is granted to make and distribute verbatim copies of this manual
@@ -214,8 +214,9 @@ end of the history, and an index of @samp{-1} refers to the current
@code{history -d} command.
@item -d @var{start}-@var{end}
-Delete the history entries between positions @var{start} and @var{end},
-inclusive. Positive and negative values for @var{start} and @var{end}
+Delete the range of history entries between positions @var{start} and
+@var{end}, inclusive.
+Positive and negative values for @var{start} and @var{end}
are interpreted as described above.
@item -a
@@ -245,10 +246,15 @@ the history list as a single entry.
@end table
-When any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options is
-used, if @var{filename}
-is given, then it is used as the history file. If not, then
-the value of the @env{HISTFILE} variable is used.
+If a @var{filename} argument is supplied
+when any of the @option{-w}, @option{-r}, @option{-a}, or @option{-n} options
+is used, Bash uses @var{filename} as the history file.
+If not, then the value of the @env{HISTFILE} variable is used.
+
+The return value is 0 unless an invalid option is encountered, an
+error occurs while reading or writing the history file, an invalid
+@var{offset} or range is supplied as an argument to @option{-d}, or the
+history expansion supplied as an argument to @option{-p} fails.
@end table
@end ifset
@@ -507,7 +513,7 @@ substituted, or, if no previous history substitutions took place,
the last @var{string}
in a !?@var{string}@code{[?]}
search.
-If @var{new} is is null, each matching @var{old} is deleted.
+If @var{new} is null, each matching @var{old} is deleted.
The final delimiter is optional if it is the last
character on the input line.
diff --git a/lib/readline/doc/rlman.texi b/lib/readline/doc/rlman.texi
index ec7487b7..d046b87d 100644
--- a/lib/readline/doc/rlman.texi
+++ b/lib/readline/doc/rlman.texi
@@ -13,7 +13,7 @@ This manual describes the GNU Readline Library
consistency of user interface across discrete programs which provide
a command line interface.
-Copyright @copyright{} 1988--2020 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2022 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/lib/readline/doc/rltech.texi b/lib/readline/doc/rltech.texi
index bbf57c23..a93f77da 100644
--- a/lib/readline/doc/rltech.texi
+++ b/lib/readline/doc/rltech.texi
@@ -7,7 +7,7 @@ This document describes the GNU Readline Library, a utility for aiding
in the consistency of user interface across discrete programs that need
to provide a command line interface.
-Copyright (C) 1988--2020 Free Software Foundation, Inc.
+Copyright (C) 1988--2022 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -323,6 +323,14 @@ and point define a @emph{region}.
@deftypevar int rl_done
Setting this to a non-zero value causes Readline to return the current
line immediately.
+Readline will set this variable when it has read a key sequence bound
+to @code{accept-line} and is about to return the line to the caller.
+@end deftypevar
+
+@deftypevar int rl_eof_found
+Readline will set this variable when it has read an EOF character (e.g., the
+stty @samp{EOF} character) on an empty line or encountered a read error and
+is about to return a NULL line to the caller.
@end deftypevar
@deftypevar int rl_num_chars_to_read
@@ -385,7 +393,7 @@ value 0x0402.
@end deftypevar
@deftypevar {int} rl_gnu_readline_p
-Always set to 1, denoting that this is @sc{gnu} readline rather than some
+Always set to 1, denoting that this is @sc{gnu} Readline rather than some
emulation.
@end deftypevar
@@ -455,6 +463,11 @@ If non-zero, this is the address of a function to call if a read system
call is interrupted when Readline is reading terminal input.
@end deftypevar
+@deftypevar {rl_hook_func_t *} rl_timeout_event_hook
+If non-zero, this is the address of a function to call if Readline times
+out while reading input.
+@end deftypevar
+
@deftypevar {rl_hook_func_t *} rl_input_available_hook
If non-zero, Readline will use this function's return value when it needs
to determine whether or not there is available input on the current input
@@ -502,7 +515,7 @@ By default, this is set to @code{rl_deprep_terminal}
@deftypevar {Keymap} rl_executing_keymap
This variable is set to the keymap (@pxref{Keymaps}) in which the
-currently executing readline function was found.
+currently executing Readline function was found.
@end deftypevar
@deftypevar {Keymap} rl_binding_keymap
@@ -588,6 +601,13 @@ the current call to @code{readline()}.
@item RL_STATE_DONE
Readline has read a key sequence bound to @code{accept-line}
and is about to return the line to the caller.
+@item RL_STATE_TIMEOUT
+Readline has timed out (it did not receive a line or specified number of
+characters before the timeout duration specified by @code{rl_set_timeout}
+elapsed) and is returning that status to the caller.
+@item RL_STATE_EOF
+Readline has read an EOF character (e.g., the stty @samp{EOF} character)
+or encountered a read error and is about to return a NULL line to the caller.
@end table
@end deftypevar
@@ -876,6 +896,15 @@ It takes a "translated" key sequence and should be used if the key sequence
can include NUL.
@end deftypefun
+@deftypefun {int} rl_trim_arg_from_keyseq (const char *keyseq, size_t len, Keymap map)
+If there is a numeric argument at the beginning of @var{keyseq}, possibly
+including digits, return the index of the first character in @var{keyseq}
+following the numeric argument.
+This can be used to skip over the numeric argument (which is available as
+@code{rl_numeric_arg} while traversing the key sequence that invoked the
+current command.
+@end deftypefun
+
@deftypefun {char **} rl_invoking_keyseqs (rl_command_func_t *function)
Return an array of strings representing the key sequences used to
invoke @var{function} in the current keymap.
@@ -887,7 +916,7 @@ invoke @var{function} in the keymap @var{map}.
@end deftypefun
@deftypefun void rl_function_dumper (int readable)
-Print the readline function names and the key sequences currently
+Print the Readline function names and the key sequences currently
bound to them to @code{rl_outstream}. If @var{readable} is non-zero,
the list is formatted in such a way that it can be made part of an
@code{inputrc} file and re-read.
@@ -1063,8 +1092,9 @@ It returns the number of visible characters on the last line of the
Applications may indicate that the prompt contains characters that take
up no physical screen space when displayed by bracketing a sequence of
such characters with the special markers @code{RL_PROMPT_START_IGNORE}
-and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h}). This may
-be used to embed terminal-specific escape sequences in prompts.
+and @code{RL_PROMPT_END_IGNORE} (declared in @file{readline.h} as
+@samp{\001} and @samp{\002}, respectively).
+This may be used to embed terminal-specific escape sequences in prompts.
@end deftypefun
@deftypefun int rl_set_prompt (const char *prompt)
@@ -1151,6 +1181,30 @@ The default waiting period is one-tenth of a second.
Returns the old timeout value.
@end deftypefun
+@deftypefun int rl_set_timeout (unsigned int secs, unsigned int usecs)
+Set a timeout for subsequent calls to @code{readline()}. If Readline does
+not read a complete line, or the number of characters specified by
+@code{rl_num_chars_to_read}, before the duration specified by @var{secs}
+(in seconds) and @var{usecs} (microseconds), it returns and sets
+@code{RL_STATE_TIMEOUT} in @code{rl_readline_state}.
+Passing 0 for @code{secs} and @code{usecs} cancels any previously set
+timeout; the convenience macro @code{rl_clear_timeout()} is shorthand
+for this.
+Returns 0 if the timeout is set successfully.
+@end deftypefun
+
+@deftypefun int rl_timeout_remaining (unsigned int *secs, unsigned int *usecs)
+Return the number of seconds and microseconds remaining in the current
+timeout duration in @var{*secs} and @var{*usecs}, respectively.
+Both @var{*secs} and @var{*usecs} must be non-NULL to return any values.
+The return value is -1 on error or when there is no timeout set,
+0 when the timeout has expired (leaving @var{*secs} and @var{*usecs}
+unchanged),
+and 1 if the timeout has not expired.
+If either of @var{secs} and @var{usecs} is @code{NULL},
+the return value indicates whether the timeout has expired.
+@end deftypefun
+
@node Terminal Management
@subsection Terminal Management
@@ -1304,7 +1358,7 @@ that it can be made part of an @code{inputrc} file and re-read.
@deftypefun int rl_variable_bind (const char *variable, const char *value)
Make the Readline variable @var{variable} have @var{value}.
-This behaves as if the readline command
+This behaves as if the Readline command
@samp{set @var{variable} @var{value}} had been executed in an @code{inputrc}
file (@pxref{Readline Init File Syntax}).
@end deftypefun
@@ -1315,7 +1369,7 @@ For boolean variables, this string is either @samp{on} or @samp{off}.
@end deftypefun
@deftypefun void rl_variable_dumper (int readable)
-Print the readline variable names and their current values
+Print the Readline variable names and their current values
to @code{rl_outstream}.
If @var{readable} is non-zero, the list is formatted in such a way
that it can be made part of an @code{inputrc} file and re-read.
@@ -1346,7 +1400,7 @@ Readline saves in the history list.
Enable an @emph{active} mark.
When this is enabled, the text between point and mark (the @var{region}) is
displayed in the terminal's standout mode (a @var{face}).
-This is called by various readline functions that set the mark and insert
+This is called by various Readline functions that set the mark and insert
text, and is available for applications to call.
@end deftypefun
@@ -1355,10 +1409,10 @@ Turn off the active mark.
@end deftypefun
@deftypefun {void} rl_keep_mark_active (void)
-Indicate that the mark should remain active when the current readline function
-completes and after redisplay occurs.
+Indicate that the mark should remain active when the current Readline
+function completes and after redisplay occurs.
In most cases, the mark remains active for only the duration of a single
-bindable readline function.
+bindable Readline function.
@end deftypefun
@deftypefun {int} rl_mark_active_p (void)
@@ -1371,12 +1425,12 @@ Return a non-zero value if the mark is currently active; zero otherwise.
An alternate interface is available to plain @code{readline()}. Some
applications need to interleave keyboard I/O with file, device, or
window system I/O, typically by using a main loop to @code{select()}
-on various file descriptors. To accommodate this need, readline can
+on various file descriptors. To accommodate this need, Readline can
also be invoked as a `callback' function from an event loop. There
are functions available to make this easy.
@deftypefun void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler)
-Set up the terminal for readline I/O and display the initial
+Set up the terminal for Readline I/O and display the initial
expanded value of @var{prompt}. Save the value of @var{lhandler} to
use as a handler function to call when a complete line of input has been
entered.
@@ -1611,7 +1665,7 @@ main (int c, char **v)
Signals are asynchronous events sent to a process by the Unix kernel,
sometimes on behalf of another process. They are intended to indicate
-exceptional events, like a user pressing the interrupt key on his terminal,
+exceptional events, like a user pressing the terminal's interrupt key,
or a network connection being broken. There is a class of signals that can
be sent to the process currently reading input from the keyboard. Since
Readline changes the terminal attributes when it is called, it needs to
@@ -1761,7 +1815,7 @@ a @code{SIGWINCH}.
@deftypefun void rl_echo_signal_char (int sig)
If an application wishes to install its own signal handlers, but still
-have readline display characters that generate signals, calling this
+have Readline display characters that generate signals, calling this
function with @var{sig} set to @code{SIGINT}, @code{SIGQUIT}, or
@code{SIGTSTP} will display the character generating that signal.
@end deftypefun
@@ -2159,9 +2213,10 @@ shell variables and hostnames.
@deftypevar int rl_completion_query_items
Up to this many items will be displayed in response to a
-possible-completions call. After that, readline asks the user if she is sure
-she wants to see them all. The default value is 100. A negative value
-indicates that Readline should never ask the user.
+possible-completions call. After that, Readline asks the user for
+confirmation before displaying them.
+The default value is 100. A negative value
+indicates that Readline should never ask for confirmation.
@end deftypevar
@deftypevar {int} rl_completion_append_character
@@ -2313,6 +2368,7 @@ history list.
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
+#include <locale.h>
#if defined (HAVE_STRING_H)
# include <string.h>
@@ -2393,6 +2449,8 @@ main (argc, argv)
@{
char *line, *s;
+ setlocale (LC_ALL, "");
+
progname = argv[0];
initialize_readline (); /* Bind our completer. */
diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi
index 26b0ff07..cbcbb45c 100644
--- a/lib/readline/doc/rluser.texi
+++ b/lib/readline/doc/rluser.texi
@@ -9,7 +9,7 @@ use these features. There is a document entitled "readline.texinfo"
which contains both end-user and programmer documentation for the
GNU Readline Library.
-Copyright (C) 1988--2020 Free Software Foundation, Inc.
+Copyright (C) 1988--2022 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
@@ -179,7 +179,7 @@ empty line.
@end table
@noindent
-(Depending on your configuration, the @key{Backspace} key be set to
+(Depending on your configuration, the @key{Backspace} key might be set to
delete the character to the left of the cursor and the @key{DEL} key set
to delete the character underneath the cursor, like @kbd{C-d}, rather
than the character to the left of the cursor.)
@@ -246,7 +246,7 @@ words, to the end of the next word.
Word boundaries are the same as those used by @kbd{M-f}.
@item M-@key{DEL}
-Kill from the cursor the start of the current word, or, if between
+Kill from the cursor to the start of the current word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by @kbd{M-b}.
@@ -339,7 +339,8 @@ Although the Readline library comes with a set of Emacs-like
keybindings installed by default, it is possible to use a different set
of keybindings.
Any user can customize programs that use Readline by putting
-commands in an @dfn{inputrc} file, conventionally in his home directory.
+commands in an @dfn{inputrc} file,
+conventionally in their home directory.
The name of this
@ifset BashFeatures
file is taken from the value of the shell variable @env{INPUTRC}. If
@@ -418,6 +419,32 @@ variables.
@cindex variables, readline
@table @code
+@item active-region-start-color
+@vindex active-region-start-color
+A string variable that controls the text color and background when displaying
+the text in the active region (see the description of
+@code{enable-active-region} below).
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal before displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that puts the terminal in standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be @samp{\e[01;33m}.
+
+@item active-region-end-color
+@vindex active-region-end-color
+A string variable that "undoes" the effects of @code{active-region-start-color}
+and restores "normal" terminal display appearance after displaying text
+in the active region.
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal after displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that restores the terminal from standout mode,
+as obtained from the terminal's terminfo description.
+A sample value might be @samp{\e[0m}.
+
@item bell-style
@vindex bell-style
Controls what happens when Readline wants to ring the terminal bell.
@@ -444,6 +471,9 @@ If set to @samp{on}, when listing completions, Readline displays the
common prefix of the set of possible completions using a different color.
The color definitions are taken from the value of the @env{LS_COLORS}
environment variable.
+If there is a color definition in @env{LS_COLORS} for the custom suffix
+@samp{readline-colored-completion-prefix}, Readline uses this color for
+the common prefix instead of its default.
The default is @samp{off}.
@item colored-stats
@@ -496,8 +526,9 @@ asked whether the list of possibilities should be displayed.
If the number of possible completions is greater than or equal to this value,
Readline will ask whether or not the user wishes to view them;
otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-A negative value means Readline should never ask.
+This variable must be set to an integer value greater than or equal to zero.
+A zero value means Readline should never ask; negative values are
+treated as zero.
The default limit is @code{100}.
@item convert-meta
@@ -505,9 +536,12 @@ The default limit is @code{100}.
If set to @samp{on}, Readline will convert characters with the
eighth bit set to an @sc{ascii} key sequence by stripping the eighth
bit and prefixing an @key{ESC} character, converting them to a
-meta-prefixed key sequence. The default value is @samp{on}, but
+meta-prefixed key sequence.
+The default value is @samp{on}, but
will be set to @samp{off} if the locale is one that contains
eight-bit characters.
+This variable is dependent on the @code{LC_CTYPE} locale category, and
+may change if the locale is changed.
@item disable-completion
@vindex disable-completion
@@ -518,7 +552,7 @@ been mapped to @code{self-insert}. The default is @samp{off}.
@item echo-control-characters
@vindex echo-control-characters
When set to @samp{on}, on operating systems that indicate they support it,
-readline echoes a character corresponding to a signal generated from the
+Readline echoes a character corresponding to a signal generated from the
keyboard. The default is @samp{on}.
@item editing-mode
@@ -540,13 +574,30 @@ non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
The default is @samp{@@}.
+@item enable-active-region
+@vindex enable-active-region
+The @dfn{point} is the current cursor position, and @dfn{mark} refers
+to a saved cursor position (@pxref{Commands For Moving}).
+The text between the point and mark is referred to as the @dfn{region}.
+When this variable is set to @samp{On}, Readline allows certain commands
+to designate the region as @dfn{active}.
+When the region is active, Readline highlights the text in the region using
+the value of the @code{active-region-start-color}, which defaults to the
+string that enables
+the terminal's standout mode.
+The active region shows the text inserted by bracketed-paste and any
+matching text found by incremental and non-incremental history searches.
+The default is @samp{On}.
+
@item enable-bracketed-paste
@vindex enable-bracketed-paste
-When set to @samp{On}, Readline will configure the terminal in a way
-that will enable it to insert each paste into the editing buffer as a
-single string of characters, instead of treating each character as if
-it had been read from the keyboard. This can prevent pasted characters
-from being interpreted as editing commands. The default is @samp{On}.
+When set to @samp{On}, Readline configures the terminal to insert each
+paste into the editing buffer as a single string of characters, instead
+of treating each character as if it had been read from the keyboard.
+This is called putting the terminal into @dfn{bracketed paste mode};
+it prevents Readline from executing any editing commands bound to key
+sequences appearing in the pasted text.
+The default is @samp{On}.
@item enable-keypad
@vindex enable-keypad
@@ -601,6 +652,8 @@ regardless of what the terminal claims it can support. The
default value is @samp{off}, but Readline will set it to @samp{on} if the
locale contains eight-bit characters.
The name @code{meta-flag} is a synonym for this variable.
+This variable is dependent on the @code{LC_CTYPE} locale category, and
+may change if the locale is changed.
@item isearch-terminators
@vindex isearch-terminators
@@ -683,6 +736,8 @@ eighth bit set directly rather than as a meta-prefixed escape
sequence.
The default is @samp{off}, but Readline will set it to @samp{on} if the
locale contains eight-bit characters.
+This variable is dependent on the @code{LC_CTYPE} locale category, and
+may change if the locale is changed.
@item page-completions
@vindex page-completions
@@ -700,7 +755,7 @@ The default is @samp{off}.
If set to @samp{on}, Readline will undo all changes to history lines
before returning when @code{accept-line} is executed. By default,
history lines may be modified and retain individual undo lists across
-calls to @code{readline}. The default is @samp{off}.
+calls to @code{readline()}. The default is @samp{off}.
@item show-all-if-ambiguous
@vindex show-all-if-ambiguous
@@ -732,7 +787,7 @@ The default value is @samp{off}.
@vindex skip-completed-text
If set to @samp{on}, this alters the default completion behavior when
inserting a single match into the line. It's only active when
-performing completion in the middle of a word. If enabled, readline
+performing completion in the middle of a word. If enabled, Readline
does not insert characters from the completion that match characters
after point in the word being completed, so portions of the word
following the cursor are not duplicated.
@@ -792,12 +847,12 @@ interpreted as part of the key name.
The name of the key can be expressed in different ways, depending on
what you find most comfortable.
-In addition to command names, readline allows keys to be bound
+In addition to command names, Readline allows keys to be bound
to a string that is inserted when the key is pressed (a @var{macro}).
@ifset BashFeatures
The @w{@code{bind -p}} command displays Readline function names and
-bindings in a format that can put directly into an initialization file.
+bindings in a format that can be put directly into an initialization file.
@xref{Bash Builtins}.
@end ifset
@@ -1332,6 +1387,11 @@ for editing.
A numeric argument, if supplied, specifies the history entry to use instead
of the current line.
+@item fetch-history ()
+With a numeric argument, fetch that entry from the history list
+and make it the current line.
+Without an argument, move back to the first entry in the history list.
+
@end ftable
@node Commands For Text
@@ -1668,7 +1728,7 @@ Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
@item print-last-kbd-macro ()
-Print the last keboard macro defined in a format suitable for the
+Print the last keyboard macro defined in a format suitable for the
@var{inputrc} file.
@end ftable
@@ -1721,11 +1781,11 @@ the saved position, and the old cursor position is saved as the mark.
@item character-search (C-])
A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
+character. A negative argument searches for previous occurrences.
@item character-search-backward (M-C-])
A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
+of that character. A negative argument searches for subsequent
occurrences.
@item skip-csi-sequence ()
@@ -1733,7 +1793,7 @@ Read enough characters to consume a multi-key sequence such as those
defined for keys like Home and End. Such sequences begin with a
Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
bound to "\e[", keys producing such sequences will have no effect
-unless explicitly bound to a readline command, instead of inserting
+unless explicitly bound to a Readline command, instead of inserting
stray characters into the editing buffer. This is unbound by default,
but usually bound to ESC-[.
@@ -1772,6 +1832,11 @@ the output is formatted in such a way that it can be made part
of an @var{inputrc} file. This command is unbound by default.
@ifset BashFeatures
+@item spell-correct-word (C-x s)
+Perform spelling correction on the current word, treating it as a directory
+or filename, in the same way as the @code{cdspell} shell option.
+Word boundaries are the same as those used by @code{shell-forward-word}.
+
@item glob-complete-word (M-g)
The word before point is treated as a pattern for pathname expansion,
with an asterisk implicitly appended. This pattern is used to
@@ -2224,6 +2289,7 @@ Names of all shell variables. May also be specified as @option{-v}.
@item -C @var{command}
@var{command} is executed in a subshell environment, and its output is
used as the possible completions.
+Arguments are passed as with the @option{-F} option.
@item -F @var{function}
The shell function @var{function} is executed in the current shell
@@ -2401,7 +2467,7 @@ via @var{CDPATH}: Readline can't tell those completions are directories).
The @option{-o nospace} option tells Readline to not append a space
character to the directory name, in case we want to append to it.
The @option{-o bashdefault} option brings in the rest of the "Bash default"
-completions -- possible completion that Bash adds to the default Readline
+completions -- possible completions that Bash adds to the default Readline
set. These include things like command name completion, variable completion
for words beginning with @samp{$} or @samp{$@{}, completions containing pathname
expansion patterns (@pxref{Filename Expansion}), and so on.
diff --git a/lib/readline/doc/rluserman.texi b/lib/readline/doc/rluserman.texi
index 6e8e848b..ae9ec6eb 100644
--- a/lib/readline/doc/rluserman.texi
+++ b/lib/readline/doc/rluserman.texi
@@ -12,7 +12,7 @@ This manual describes the end user interface of the GNU Readline Library
consistency of user interface across discrete programs which provide
a command line interface.
-Copyright @copyright{} 1988--2020 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2022 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
diff --git a/lib/readline/doc/version.texi b/lib/readline/doc/version.texi
index abb9cb6b..d3102734 100644
--- a/lib/readline/doc/version.texi
+++ b/lib/readline/doc/version.texi
@@ -1,10 +1,11 @@
@ignore
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2022 Free Software Foundation, Inc.
@end ignore
-@set EDITION 8.1
-@set VERSION 8.1
-@set UPDATED 29 October 2020
-@set UPDATED-MONTH October 2020
+@set EDITION 8.2
+@set VERSION 8.2
-@set LASTCHANGE Thu Oct 29 16:49:01 EDT 2020
+@set UPDATED 19 September 2022
+@set UPDATED-MONTH September 2022
+
+@set LASTCHANGE Mon Sep 19 11:15:16 EDT 2022
diff --git a/lib/readline/examples/excallback.c b/lib/readline/examples/excallback.c
index 4206acfc..923c9238 100644
--- a/lib/readline/examples/excallback.c
+++ b/lib/readline/examples/excallback.c
@@ -50,6 +50,8 @@ Copyright (C) 1999 Jeff Solomon
#include <stdio.h>
#include <termios.h> /* xxx - should make this more general */
+#include <locale.h>
+
#ifdef READLINE_LIBRARY
# include "readline.h"
#else
@@ -104,6 +106,8 @@ main()
{
fd_set fds;
+ setlocale (LC_ALL, "");
+
/* Adjust the terminal slightly before the handler is installed. Disable
* canonical mode processing and set the input character time flag to be
* non-blocking.
diff --git a/lib/readline/examples/histexamp.c b/lib/readline/examples/histexamp.c
index 3b43674f..309d769b 100644
--- a/lib/readline/examples/histexamp.c
+++ b/lib/readline/examples/histexamp.c
@@ -27,8 +27,11 @@
# include <readline/history.h>
#endif
+#include <unistd.h>
+#include <stdlib.h>
#include <string.h>
+int
main (argc, argv)
int argc;
char **argv;
diff --git a/lib/readline/examples/rl-callbacktest.c b/lib/readline/examples/rl-callbacktest.c
index 0f00e57c..7febacd1 100644
--- a/lib/readline/examples/rl-callbacktest.c
+++ b/lib/readline/examples/rl-callbacktest.c
@@ -7,9 +7,13 @@
#include <sys/types.h>
#include <sys/select.h>
+#include <signal.h>
+
#include <errno.h>
#include <stdio.h>
+#include <locale.h>
+
/* Standard readline include files. */
#if defined (READLINE_LIBRARY)
# include "readline.h"
@@ -22,10 +26,19 @@
extern int errno;
static void cb_linehandler (char *);
+static void signandler (int);
-int running;
+int running, sigwinch_received;
const char *prompt = "rltest$ ";
+/* Handle SIGWINCH and window size changes when readline is not active and
+ reading a character. */
+static void
+sighandler (int sig)
+{
+ sigwinch_received = 1;
+}
+
/* Callback function called for each line when accept-line executed, EOF
seen, or EOF character read. This sets a flag and returns; it could
also call exit(3). */
@@ -60,6 +73,11 @@ main (int c, char **v)
fd_set fds;
int r;
+ setlocale (LC_ALL, "");
+
+ /* Handle SIGWINCH */
+ signal (SIGWINCH, sighandler);
+
/* Install the line handler. */
rl_callback_handler_install (prompt, cb_linehandler);
@@ -80,6 +98,13 @@ main (int c, char **v)
rl_callback_handler_remove ();
break;
}
+ if (sigwinch_received)
+ {
+ rl_resize_terminal ();
+ sigwinch_received = 0;
+ }
+ if (r < 0)
+ continue;
if (FD_ISSET (fileno (rl_instream), &fds))
rl_callback_read_char ();
diff --git a/lib/readline/examples/rl.c b/lib/readline/examples/rl.c
index a5cf276c..39e5b8eb 100644
--- a/lib/readline/examples/rl.c
+++ b/lib/readline/examples/rl.c
@@ -38,6 +38,10 @@
extern void exit();
#endif
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
#if defined (READLINE_LIBRARY)
# include "posixstat.h"
# include "readline.h"
@@ -93,6 +97,10 @@ main (argc, argv)
else
progname++;
+#ifdef HAVE_SETLOCALE
+ setlocale (LC_ALL, "");
+#endif
+
/* defaults */
prompt = "readline$ ";
fd = nch = 0;
diff --git a/lib/readline/examples/rlcat.c b/lib/readline/examples/rlcat.c
index b4942413..aabe0ca3 100644
--- a/lib/readline/examples/rlcat.c
+++ b/lib/readline/examples/rlcat.c
@@ -45,6 +45,10 @@
extern void exit();
#endif
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
#ifndef errno
extern int errno;
#endif
@@ -79,6 +83,10 @@ main (argc, argv)
char *temp;
int opt, Vflag, Nflag;
+#ifdef HAVE_SETLOCALE
+ setlocale (LC_ALL, ""):
+#endif
+
progname = strrchr(argv[0], '/');
if (progname == 0)
progname = argv[0];
diff --git a/lib/readline/examples/rltest.c b/lib/readline/examples/rltest.c
index 65abe87c..8b7c00c8 100644
--- a/lib/readline/examples/rltest.c
+++ b/lib/readline/examples/rltest.c
@@ -36,6 +36,10 @@
extern void exit();
#endif
+#ifdef HAVE_LOCALE_H
+# include <locale.h>
+#endif
+
#ifdef READLINE_LIBRARY
# include "readline.h"
# include "history.h"
@@ -52,6 +56,10 @@ main ()
char *temp, *prompt;
int done;
+#ifdef HAVE_SETLOCALE
+ setlocale (LC_ALL, "");
+#endif
+
temp = (char *)NULL;
prompt = "readline$ ";
done = 0;
diff --git a/lib/readline/funmap.c b/lib/readline/funmap.c
index eca49a3e..8b1cb402 100644
--- a/lib/readline/funmap.c
+++ b/lib/readline/funmap.c
@@ -1,6 +1,6 @@
/* funmap.c -- attach names to functions. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -46,7 +46,7 @@ typedef int QSFUNC (const void *, const void *);
typedef int QSFUNC ();
#endif
-extern int _rl_qsort_string_compare PARAMS((char **, char **));
+extern int _rl_qsort_string_compare (char **, char **);
FUNMAP **funmap;
static int funmap_size;
@@ -93,6 +93,7 @@ static const FUNMAP default_funmap[] = {
{ "end-of-history", rl_end_of_history },
{ "end-of-line", rl_end_of_line },
{ "exchange-point-and-mark", rl_exchange_point_and_mark },
+ { "fetch-history", rl_fetch_history },
{ "forward-backward-delete-char", rl_rubout_or_delete },
{ "forward-byte", rl_forward_byte },
{ "forward-char", rl_forward_char },
@@ -198,6 +199,7 @@ static const FUNMAP default_funmap[] = {
{ "vi-set-mark", rl_vi_set_mark },
{ "vi-subst", rl_vi_subst },
{ "vi-tilde-expand", rl_vi_tilde_expand },
+ { "vi-undo", rl_vi_undo },
{ "vi-unix-word-rubout", rl_vi_unix_word_rubout },
{ "vi-yank-arg", rl_vi_yank_arg },
{ "vi-yank-pop", rl_vi_yank_pop },
diff --git a/lib/readline/histexpand.c b/lib/readline/histexpand.c
index b986dba0..8ab68091 100644
--- a/lib/readline/histexpand.c
+++ b/lib/readline/histexpand.c
@@ -1,6 +1,6 @@
/* histexpand.c -- history expansion. */
-/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2021 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -57,7 +57,7 @@
#define fielddelim(c) (whitespace(c) || (c) == '\n')
-typedef int _hist_search_func_t PARAMS((const char *, int));
+typedef int _hist_search_func_t (const char *, int);
static char error_pointer;
@@ -70,14 +70,14 @@ static int subst_rhs_len;
specifications from word designators. Static for now */
static char *history_event_delimiter_chars = HISTORY_EVENT_DELIMITERS;
-static char *get_history_word_specifier PARAMS((char *, char *, int *));
-static int history_tokenize_word PARAMS((const char *, int));
-static char **history_tokenize_internal PARAMS((const char *, int, int *));
-static char *history_substring PARAMS((const char *, int, int));
-static void freewords PARAMS((char **, int));
-static char *history_find_word PARAMS((char *, int));
+static char *get_history_word_specifier (char *, char *, int *);
+static int history_tokenize_word (const char *, int);
+static char **history_tokenize_internal (const char *, int, int *);
+static char *history_substring (const char *, int, int);
+static void freewords (char **, int);
+static char *history_find_word (char *, int);
-static char *quote_breaks PARAMS((char *));
+static char *quote_breaks (char *);
/* Variables exported by this file. */
/* The character that represents the start of a history expansion
@@ -1207,13 +1207,36 @@ history_expand (char *hstring, char **output)
characters in history_no_expand_chars, then it is not a
candidate for expansion of any kind. */
if (cc == 0 || member (cc, history_no_expand_chars) ||
- (dquote && cc == '"') ||
- (history_inhibit_expansion_function && (*history_inhibit_expansion_function) (string, i)))
+ (dquote && cc == '"'))
{
ADD_CHAR (string[i]);
break;
}
+ /* If the application has defined a function to determine whether
+ or not a history expansion should be performed, call it here. */
+ /* We check against what we've expanded so far, with the current
+ expansion appended, because that seems to be what csh does. We
+ decide to expand based on what we have to this point, not what
+ we started with. */
+ if (history_inhibit_expansion_function)
+ {
+ int save_j, temp;
+
+ save_j = j;
+ ADD_CHAR (string[i]);
+ ADD_CHAR (cc);
+
+ temp = (*history_inhibit_expansion_function) (result, save_j);
+ if (temp)
+ {
+ result[--j] = '\0'; /* `unadd' cc, leaving ADD_CHAR(string[i]) */
+ break;
+ }
+ else
+ result[j = save_j] = '\0';
+ }
+
#if defined (NO_BANG_HASH_MODIFIERS)
/* There is something that is listed as a `word specifier' in csh
documentation which means `the expanded text to this point'.
diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c
index f0fa5ce1..3bfec550 100644
--- a/lib/readline/histfile.c
+++ b/lib/readline/histfile.c
@@ -114,8 +114,6 @@ extern int errno;
# define PATH_MAX 1024 /* default */
#endif
-extern void _hs_append_history_line PARAMS((int, const char *));
-
/* history file version; currently unused */
int history_file_version = 1;
@@ -141,11 +139,11 @@ int history_lines_written_to_file = 0;
for more extensive tests. */
#define HIST_TIMESTAMP_START(s) (*(s) == history_comment_char && isdigit ((unsigned char)(s)[1]) )
-static char *history_backupfile PARAMS((const char *));
-static char *history_tempfile PARAMS((const char *));
-static int histfile_backup PARAMS((const char *, const char *));
-static int histfile_restore PARAMS((const char *, const char *));
-static int history_rename PARAMS((const char *, const char *));
+static char *history_backupfile (const char *);
+static char *history_tempfile (const char *);
+static int histfile_backup (const char *, const char *);
+static int histfile_restore (const char *, const char *);
+static int history_rename (const char *, const char *);
/* Return the string that should be used in the place of this
filename. This only matters when you don't specify the
@@ -312,7 +310,7 @@ read_history_range (const char *filename, int from, int to)
if (file_size == 0)
{
- free (input);
+ xfree (input);
close (file);
return 0; /* don't waste time if we don't have to */
}
diff --git a/lib/readline/histlib.h b/lib/readline/histlib.h
index 9627b245..29fc4d2e 100644
--- a/lib/readline/histlib.h
+++ b/lib/readline/histlib.h
@@ -1,6 +1,6 @@
/* histlib.h -- internal definitions for the history library. */
-/* Copyright (C) 1989-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2009,2021-2022 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -80,6 +80,13 @@ extern char *strchr ();
/* internal extern function declarations used by other parts of the library */
/* histsearch.c */
-extern int _hs_history_patsearch PARAMS((const char *, int, int));
+extern int _hs_history_patsearch (const char *, int, int);
+
+/* history.c */
+extern void _hs_replace_history_data (int, histdata_t *, histdata_t *);
+extern int _hs_at_end_of_history (void);
+
+/* histfile.c */
+extern void _hs_append_history_line (int, const char *);
#endif /* !_HISTLIB_H_ */
diff --git a/lib/readline/history.c b/lib/readline/history.c
index 67158b14..81d4c168 100644
--- a/lib/readline/history.c
+++ b/lib/readline/history.c
@@ -1,6 +1,6 @@
/* history.c -- standalone history library */
-/* Copyright (C) 1989-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2021 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -62,7 +62,7 @@ extern int errno;
/* The number of slots to increase the_history by. */
#define DEFAULT_HISTORY_GROW_SIZE 50
-static char *hist_inittime PARAMS((void));
+static char *hist_inittime (void);
/* **************************************************************** */
/* */
@@ -165,6 +165,13 @@ history_set_pos (int pos)
history_offset = pos;
return (1);
}
+
+/* Are we currently at the end of the history list? */
+int
+_hs_at_end_of_history (void)
+{
+ return (the_history == 0 || history_offset == history_length);
+}
/* Return the current history array. The caller has to be careful, since this
is the actual array of data, and could be bashed or made corrupt easily.
@@ -390,7 +397,7 @@ replace_history_entry (int which, const char *line, histdata_t data)
temp->line = savestring (line);
temp->data = data;
- temp->timestamp = savestring (old_value->timestamp);
+ temp->timestamp = old_value->timestamp ? savestring (old_value->timestamp) : 0;
the_history[which] = temp;
return (old_value);
diff --git a/lib/readline/history.h b/lib/readline/history.h
index cc3de29a..5208f9a4 100644
--- a/lib/readline/history.h
+++ b/lib/readline/history.h
@@ -1,6 +1,6 @@
/* history.h -- the names of functions that you can call in history. */
-/* Copyright (C) 1989-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2022 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -42,6 +42,11 @@ typedef void *histdata_t;
typedef char *histdata_t;
#endif
+/* Let's not step on anyone else's define for now, since we don't use this yet. */
+#ifndef HS_HISTORY_VERSION
+# define HS_HISTORY_VERSION 0x0802 /* History 8.2 */
+#endif
+
/* The structure used to store a history entry. */
typedef struct _hist_entry {
char *line;
@@ -68,102 +73,102 @@ typedef struct _hist_state {
/* Begin a session in which the history functions might be used. This
just initializes the interactive variables. */
-extern void using_history PARAMS((void));
+extern void using_history (void);
/* Return the current HISTORY_STATE of the history. */
-extern HISTORY_STATE *history_get_history_state PARAMS((void));
+extern HISTORY_STATE *history_get_history_state (void);
/* Set the state of the current history array to STATE. */
-extern void history_set_history_state PARAMS((HISTORY_STATE *));
+extern void history_set_history_state (HISTORY_STATE *);
/* Manage the history list. */
/* Place STRING at the end of the history list.
The associated data field (if any) is set to NULL. */
-extern void add_history PARAMS((const char *));
+extern void add_history (const char *);
/* Change the timestamp associated with the most recent history entry to
STRING. */
-extern void add_history_time PARAMS((const char *));
+extern void add_history_time (const char *);
/* Remove an entry from the history list. WHICH is the magic number that
tells us which element to delete. The elements are numbered from 0. */
-extern HIST_ENTRY *remove_history PARAMS((int));
+extern HIST_ENTRY *remove_history (int);
/* Remove a set of entries from the history list: FIRST to LAST, inclusive */
-extern HIST_ENTRY **remove_history_range PARAMS((int, int));
+extern HIST_ENTRY **remove_history_range (int, int);
/* Allocate a history entry consisting of STRING and TIMESTAMP and return
a pointer to it. */
-extern HIST_ENTRY *alloc_history_entry PARAMS((char *, char *));
+extern HIST_ENTRY *alloc_history_entry (char *, char *);
/* Copy the history entry H, but not the (opaque) data pointer */
-extern HIST_ENTRY *copy_history_entry PARAMS((HIST_ENTRY *));
+extern HIST_ENTRY *copy_history_entry (HIST_ENTRY *);
/* Free the history entry H and return any application-specific data
associated with it. */
-extern histdata_t free_history_entry PARAMS((HIST_ENTRY *));
+extern histdata_t free_history_entry (HIST_ENTRY *);
/* Make the history entry at WHICH have LINE and DATA. This returns
the old entry so you can dispose of the data. In the case of an
invalid WHICH, a NULL pointer is returned. */
-extern HIST_ENTRY *replace_history_entry PARAMS((int, const char *, histdata_t));
+extern HIST_ENTRY *replace_history_entry (int, const char *, histdata_t);
/* Clear the history list and start over. */
-extern void clear_history PARAMS((void));
+extern void clear_history (void);
/* Stifle the history list, remembering only MAX number of entries. */
-extern void stifle_history PARAMS((int));
+extern void stifle_history (int);
/* Stop stifling the history. This returns the previous amount the
history was stifled by. The value is positive if the history was
stifled, negative if it wasn't. */
-extern int unstifle_history PARAMS((void));
+extern int unstifle_history (void);
/* Return 1 if the history is stifled, 0 if it is not. */
-extern int history_is_stifled PARAMS((void));
+extern int history_is_stifled (void);
/* Information about the history list. */
/* Return a NULL terminated array of HIST_ENTRY which is the current input
history. Element 0 of this list is the beginning of time. If there
is no history, return NULL. */
-extern HIST_ENTRY **history_list PARAMS((void));
+extern HIST_ENTRY **history_list (void);
/* Returns the number which says what history element we are now
looking at. */
-extern int where_history PARAMS((void));
+extern int where_history (void);
/* Return the history entry at the current position, as determined by
history_offset. If there is no entry there, return a NULL pointer. */
-extern HIST_ENTRY *current_history PARAMS((void));
+extern HIST_ENTRY *current_history (void);
/* Return the history entry which is logically at OFFSET in the history
array. OFFSET is relative to history_base. */
-extern HIST_ENTRY *history_get PARAMS((int));
+extern HIST_ENTRY *history_get (int);
/* Return the timestamp associated with the HIST_ENTRY * passed as an
argument */
-extern time_t history_get_time PARAMS((HIST_ENTRY *));
+extern time_t history_get_time (HIST_ENTRY *);
/* Return the number of bytes that the primary history entries are using.
This just adds up the lengths of the_history->lines. */
-extern int history_total_bytes PARAMS((void));
+extern int history_total_bytes (void);
/* Moving around the history list. */
/* Set the position in the history list to POS. */
-extern int history_set_pos PARAMS((int));
+extern int history_set_pos (int);
/* Back up history_offset to the previous history entry, and return
a pointer to that entry. If there is no previous entry, return
a NULL pointer. */
-extern HIST_ENTRY *previous_history PARAMS((void));
+extern HIST_ENTRY *previous_history (void);
/* Move history_offset forward to the next item in the input_history,
and return the a pointer to that entry. If there is no next entry,
return a NULL pointer. */
-extern HIST_ENTRY *next_history PARAMS((void));
+extern HIST_ENTRY *next_history (void);
/* Searching the history list. */
@@ -173,45 +178,45 @@ extern HIST_ENTRY *next_history PARAMS((void));
current_history () is the history entry, and the value of this function
is the offset in the line of that history entry that the string was
found in. Otherwise, nothing is changed, and a -1 is returned. */
-extern int history_search PARAMS((const char *, int));
+extern int history_search (const char *, int);
/* Search the history for STRING, starting at history_offset.
The search is anchored: matching lines must begin with string.
DIRECTION is as in history_search(). */
-extern int history_search_prefix PARAMS((const char *, int));
+extern int history_search_prefix (const char *, int);
/* Search for STRING in the history list, starting at POS, an
absolute index into the list. DIR, if negative, says to search
backwards from POS, else forwards.
Returns the absolute index of the history element where STRING
was found, or -1 otherwise. */
-extern int history_search_pos PARAMS((const char *, int, int));
+extern int history_search_pos (const char *, int, int);
/* Managing the history file. */
/* Add the contents of FILENAME to the history list, a line at a time.
If FILENAME is NULL, then read from ~/.history. Returns 0 if
successful, or errno if not. */
-extern int read_history PARAMS((const char *));
+extern int read_history (const char *);
/* Read a range of lines from FILENAME, adding them to the history list.
Start reading at the FROM'th line and end at the TO'th. If FROM
is zero, start at the beginning. If TO is less than FROM, read
until the end of the file. If FILENAME is NULL, then read from
~/.history. Returns 0 if successful, or errno if not. */
-extern int read_history_range PARAMS((const char *, int, int));
+extern int read_history_range (const char *, int, int);
/* Write the current history to FILENAME. If FILENAME is NULL,
then write the history list to ~/.history. Values returned
are as in read_history (). */
-extern int write_history PARAMS((const char *));
+extern int write_history (const char *);
/* Append NELEMENT entries to FILENAME. The entries appended are from
the end of the list minus NELEMENTs up to the end of the list. */
-extern int append_history PARAMS((int, const char *));
+extern int append_history (int, const char *);
/* Truncate the history file, leaving only the last NLINES lines. */
-extern int history_truncate_file PARAMS((const char *, int));
+extern int history_truncate_file (const char *, int);
/* History expansion. */
@@ -227,12 +232,12 @@ extern int history_truncate_file PARAMS((const char *, int));
If an error occurred in expansion, then OUTPUT contains a descriptive
error message. */
-extern int history_expand PARAMS((char *, char **));
+extern int history_expand (char *, char **);
/* Extract a string segment consisting of the FIRST through LAST
arguments present in STRING. Arguments are broken up as in
the shell. */
-extern char *history_arg_extract PARAMS((int, int, const char *));
+extern char *history_arg_extract (int, int, const char *);
/* Return the text of the history event beginning at the current
offset into STRING. Pass STRING with *INDEX equal to the
@@ -240,11 +245,11 @@ extern char *history_arg_extract PARAMS((int, int, const char *));
DELIMITING_QUOTE is a character that is allowed to end the string
specification for what to search for in addition to the normal
characters `:', ` ', `\t', `\n', and sometimes `?'. */
-extern char *get_history_event PARAMS((const char *, int *, int));
+extern char *get_history_event (const char *, int *, int);
/* Return an array of tokens, much as the shell might. The tokens are
parsed out of STRING. */
-extern char **history_tokenize PARAMS((const char *));
+extern char **history_tokenize (const char *);
/* Exported history variables. */
extern int history_base;
diff --git a/lib/readline/histsearch.c b/lib/readline/histsearch.c
index 7a426c96..b62c06b7 100644
--- a/lib/readline/histsearch.c
+++ b/lib/readline/histsearch.c
@@ -1,6 +1,6 @@
/* histsearch.c -- searching the history list. */
-/* Copyright (C) 1989, 1992-2009,2017 Free Software Foundation, Inc.
+/* Copyright (C) 1989, 1992-2009,2017,2021 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -51,7 +51,7 @@
string. */
char *history_search_delimiter_chars = (char *)NULL;
-static int history_search_internal PARAMS((const char *, int, int));
+static int history_search_internal (const char *, int, int);
/* Search the history for STRING, starting at history_offset.
If DIRECTION < 0, then the search is through previous entries, else
@@ -248,7 +248,7 @@ _hs_history_patsearch (const char *string, int direction, int flags)
ret = history_search_internal (pat, direction, flags|PATTERN_SEARCH);
if (pat != string)
- free (pat);
+ xfree (pat);
return ret;
}
diff --git a/lib/readline/input.c b/lib/readline/input.c
index 61b0fde3..6f038d45 100644
--- a/lib/readline/input.c
+++ b/lib/readline/input.c
@@ -1,6 +1,6 @@
/* input.c -- character input functions for readline. */
-/* Copyright (C) 1994-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -50,6 +50,7 @@
#include <signal.h>
#include "posixselect.h"
+#include "posixtime.h"
#if defined (FIONREAD_IN_SYS_IOCTL)
# include <sys/ioctl.h>
@@ -78,7 +79,7 @@ extern int errno;
# define O_NDELAY O_NONBLOCK /* Posix style */
#endif
-#if defined (HAVE_PSELECT)
+#if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
extern sigset_t _rl_orig_sigset;
#endif
@@ -89,6 +90,9 @@ rl_hook_func_t *rl_event_hook = (rl_hook_func_t *)NULL;
/* A function to call if a read(2) is interrupted by a signal. */
rl_hook_func_t *rl_signal_event_hook = (rl_hook_func_t *)NULL;
+/* A function to call when readline times out after a time is specified. */
+rl_hook_func_t *rl_timeout_event_hook = (rl_hook_func_t *)NULL;
+
/* A function to replace _rl_input_available for applications using the
callback interface. */
rl_hook_func_t *rl_input_available_hook = (rl_hook_func_t *)NULL;
@@ -97,9 +101,9 @@ rl_getc_func_t *rl_getc_function = rl_getc;
static int _keyboard_input_timeout = 100000; /* 0.1 seconds; it's in usec */
-static int ibuffer_space PARAMS((void));
-static int rl_get_char PARAMS((int *));
-static int rl_gather_tyi PARAMS((void));
+static int ibuffer_space (void);
+static int rl_get_char (int *);
+static int rl_gather_tyi (void);
/* Windows isatty returns true for every character device, including the null
device, so we need to perform additional checks. */
@@ -132,6 +136,36 @@ win32_isatty (int fd)
#define isatty(x) win32_isatty(x)
#endif
+/* Readline timeouts */
+
+/* I don't know how to set a timeout for _getch() in MinGW32, so we use
+ SIGALRM. */
+#if (defined (HAVE_PSELECT) || defined (HAVE_SELECT)) && !defined (__MINGW32__)
+# define RL_TIMEOUT_USE_SELECT
+#else
+# define RL_TIMEOUT_USE_SIGALRM
+#endif
+
+int rl_set_timeout (unsigned int, unsigned int);
+int rl_timeout_remaining (unsigned int *, unsigned int *);
+
+int _rl_timeout_init (void);
+int _rl_timeout_sigalrm_handler (void);
+int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *);
+
+static void _rl_timeout_handle (void);
+#if defined (RL_TIMEOUT_USE_SIGALRM)
+static int set_alarm (unsigned int *, unsigned int *);
+static void reset_alarm (void);
+#endif
+
+/* We implement timeouts as a future time using a supplied interval
+ (timeout_duration) from when the timeout is set (timeout_point).
+ That allows us to easily determine whether the timeout has occurred
+ and compute the time remaining until it does. */
+static struct timeval timeout_point;
+static struct timeval timeout_duration;
+
/* **************************************************************** */
/* */
/* Character Input Buffering */
@@ -223,13 +257,17 @@ rl_gather_tyi (void)
input = 0;
tty = fileno (rl_instream);
-#if defined (HAVE_SELECT)
+#if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
FD_ZERO (&readfds);
FD_ZERO (&exceptfds);
FD_SET (tty, &readfds);
FD_SET (tty, &exceptfds);
USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout);
+#if defined (RL_TIMEOUT_USE_SELECT)
+ result = _rl_timeout_select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout, NULL);
+#else
result = select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout);
+#endif
if (result <= 0)
return 0; /* Nothing to read. */
#endif
@@ -330,11 +368,11 @@ rl_set_keyboard_input_timeout (int u)
int
_rl_input_available (void)
{
-#if defined(HAVE_SELECT)
+#if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
fd_set readfds, exceptfds;
struct timeval timeout;
#endif
-#if !defined (HAVE_SELECT) && defined(FIONREAD)
+#if !defined (HAVE_SELECT) && defined (FIONREAD)
int chars_avail;
#endif
int tty;
@@ -344,13 +382,17 @@ _rl_input_available (void)
tty = fileno (rl_instream);
-#if defined (HAVE_SELECT)
+#if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
FD_ZERO (&readfds);
FD_ZERO (&exceptfds);
FD_SET (tty, &readfds);
FD_SET (tty, &exceptfds);
USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout);
+# if defined (RL_TIMEOUT_USE_SELECT)
+ return (_rl_timeout_select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout, NULL) > 0);
+# else
return (select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout) > 0);
+# endif
#else
#if defined (FIONREAD)
@@ -465,6 +507,242 @@ rl_clear_pending_input (void)
/* **************************************************************** */
/* */
+/* Timeout utility */
+/* */
+/* **************************************************************** */
+
+#if defined (RL_TIMEOUT_USE_SIGALRM)
+# if defined (HAVE_SETITIMER)
+
+static int
+set_alarm (unsigned int *secs, unsigned int *usecs)
+{
+ struct itimerval it;
+
+ timerclear (&it.it_interval);
+ timerset (&it.it_value, *secs, *usecs);
+ return setitimer (ITIMER_REAL, &it, NULL);
+}
+
+static void
+reset_alarm ()
+{
+ struct itimerval it;
+
+ timerclear (&it.it_interval);
+ timerclear (&it.it_value);
+ setitimer (ITIMER_REAL, &it, NULL);
+}
+# else
+static int
+set_alarm (unsigned int *secs, unsigned int *usecs)
+{
+ if (*secs == 0 || *usecs >= USEC_PER_SEC / 2)
+ (*secs)++;
+ *usecs = 0;
+
+ return alarm (*secs);
+}
+static void
+reset_alarm ()
+{
+ alarm (0);
+}
+# endif
+#endif
+
+/* Set a timeout which will be used for the next call of `readline
+ ()'. When (0, 0) are specified the timeout is cleared. */
+int
+rl_set_timeout (unsigned int secs, unsigned int usecs)
+{
+ timeout_duration.tv_sec = secs + usecs / USEC_PER_SEC;
+ timeout_duration.tv_usec = usecs % USEC_PER_SEC;
+
+ return 0;
+}
+
+/* Start measuring the time. Returns 0 on success. Returns -1 on
+ error. */
+int
+_rl_timeout_init (void)
+{
+ unsigned int secs, usecs;
+
+ /* Clear the timeout state of the previous edit */
+ RL_UNSETSTATE(RL_STATE_TIMEOUT);
+ timerclear (&timeout_point);
+
+ /* Return 0 when timeout is unset. */
+ if (timerisunset (&timeout_duration))
+ return 0;
+
+ /* Return -1 on gettimeofday error. */
+ if (gettimeofday(&timeout_point, 0) != 0)
+ {
+ timerclear (&timeout_point);
+ return -1;
+ }
+
+ secs = timeout_duration.tv_sec;
+ usecs = timeout_duration.tv_usec;
+
+#if defined (RL_TIMEOUT_USE_SIGALRM)
+ /* If select(2)/pselect(2) is unavailable, use SIGALRM. */
+ if (set_alarm (&secs, &usecs) < 0)
+ return -1;
+#endif
+
+ timeout_point.tv_sec += secs;
+ timeout_point.tv_usec += usecs;
+ if (timeout_point.tv_usec >= USEC_PER_SEC)
+ {
+ timeout_point.tv_sec++;
+ timeout_point.tv_usec -= USEC_PER_SEC;
+ }
+
+ return 0;
+}
+
+/* Get the remaining time until the scheduled timeout. Returns -1 on
+ error or no timeout set with secs and usecs unchanged. Returns 0
+ on an expired timeout with secs and usecs unchanged. Returns 1
+ when the timeout has not yet expired. The remaining time is stored
+ in secs and usecs. When NULL is specified to either of the
+ arguments, just the expiration is tested. */
+int
+rl_timeout_remaining (unsigned int *secs, unsigned int *usecs)
+{
+ struct timeval current_time;
+
+ /* Return -1 when timeout is unset. */
+ if (timerisunset (&timeout_point))
+ {
+ errno = 0;
+ return -1;
+ }
+
+ /* Return -1 on error. errno is set by gettimeofday. */
+ if (gettimeofday(&current_time, 0) != 0)
+ return -1;
+
+ /* Return 0 when timeout has already expired. */
+ /* could use timercmp (&timeout_point, &current_time, <) here */
+ if (current_time.tv_sec > timeout_point.tv_sec ||
+ (current_time.tv_sec == timeout_point.tv_sec &&
+ current_time.tv_usec >= timeout_point.tv_usec))
+ return 0;
+
+ if (secs && usecs)
+ {
+ *secs = timeout_point.tv_sec - current_time.tv_sec;
+ *usecs = timeout_point.tv_usec - current_time.tv_usec;
+ if (timeout_point.tv_usec < current_time.tv_usec)
+ {
+ (*secs)--;
+ *usecs += USEC_PER_SEC;
+ }
+ }
+
+ return 1;
+}
+
+/* This should only be called if RL_TIMEOUT_USE_SELECT is defined. */
+
+#if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+int
+_rl_timeout_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout, const sigset_t *sigmask)
+{
+ int result;
+#if defined (HAVE_PSELECT)
+ struct timespec ts;
+#else
+ sigset_t origmask;
+ struct timeval tv;
+#endif
+ int tmout_status;
+ struct timeval tmout;
+ unsigned int sec, usec;
+
+ /* When the remaining time for rl_timeout is shorter than the
+ keyboard input timeout, replace `timeout' with the remaining time
+ for `rl_timeout' and set `tmout_status = 1'. */
+ tmout_status = rl_timeout_remaining (&sec, &usec);
+ tmout.tv_sec = sec;
+ tmout.tv_usec = usec;
+
+ if (tmout_status == 0)
+ _rl_timeout_handle ();
+ else if (tmout_status == 1)
+ {
+ if (timeout == NULL || timercmp (&tmout, timeout, <))
+ timeout = &tmout;
+ else
+ tmout_status = -1;
+ }
+
+#if defined (HAVE_PSELECT)
+ if (timeout)
+ {
+ TIMEVAL_TO_TIMESPEC (timeout, &ts);
+ result = pselect (nfds, readfds, writefds, exceptfds, &ts, sigmask);
+ }
+ else
+ result = pselect (nfds, readfds, writefds, exceptfds, NULL, sigmask);
+#else
+ if (sigmask)
+ sigprocmask (SIG_SETMASK, sigmask, &origmask);
+
+ if (timeout)
+ {
+ tv.tv_sec = timeout->tv_sec;
+ tv.tv_usec = timeout->tv_usec;
+ result = select (nfds, readfds, writefds, exceptfds, &tv);
+ }
+ else
+ result = select (nfds, readfds, writefds, exceptfds, NULL);
+
+ if (sigmask)
+ sigprocmask (SIG_SETMASK, &origmask, NULL);
+#endif
+
+ if (tmout_status == 1 && result == 0)
+ _rl_timeout_handle ();
+
+ return result;
+}
+#endif
+
+static void
+_rl_timeout_handle ()
+{
+ if (rl_timeout_event_hook)
+ (*rl_timeout_event_hook) ();
+
+ RL_SETSTATE(RL_STATE_TIMEOUT);
+ _rl_abort_internal ();
+}
+
+int
+_rl_timeout_handle_sigalrm ()
+{
+#if defined (RL_TIMEOUT_USE_SIGALRM)
+ if (timerisunset (&timeout_point))
+ return -1;
+
+ /* Reset `timeout_point' to the current time to ensure that later
+ calls of `rl_timeout_pending ()' return 0 (timeout expired). */
+ if (gettimeofday(&timeout_point, 0) != 0)
+ timerclear (&timeout_point);
+
+ reset_alarm ();
+
+ _rl_timeout_handle ();
+#endif
+ return -1;
+}
+/* **************************************************************** */
+/* */
/* Character Input */
/* */
/* **************************************************************** */
@@ -497,6 +775,7 @@ rl_read_key (void)
if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */
{
rl_done = 1;
+ RL_SETSTATE (RL_STATE_DONE);
return (errno == EIO ? (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF) : '\n');
}
else if (r > 0) /* read something */
@@ -525,11 +804,13 @@ rl_getc (FILE *stream)
{
int result;
unsigned char c;
+ int fd;
#if defined (HAVE_PSELECT)
sigset_t empty_set;
fd_set readfds;
#endif
+ fd = fileno (stream);
while (1)
{
RL_CHECK_SIGNALS ();
@@ -537,23 +818,27 @@ rl_getc (FILE *stream)
/* We know at this point that _rl_caught_signal == 0 */
#if defined (__MINGW32__)
- if (isatty (fileno (stream)))
+ if (isatty (fd)
return (_getch ()); /* "There is no error return." */
#endif
result = 0;
-#if defined (HAVE_PSELECT)
+#if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
+ /* At this point, if we have pselect, we're using select/pselect for the
+ timeouts. We handled MinGW above. */
FD_ZERO (&readfds);
- FD_SET (fileno (stream), &readfds);
+ FD_SET (fd, &readfds);
# if defined (HANDLE_SIGNALS)
- result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset);
+ result = _rl_timeout_select (fd + 1, &readfds, NULL, NULL, NULL, &_rl_orig_sigset);
# else
sigemptyset (&empty_set);
sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set);
- result = pselect (fileno (stream) + 1, &readfds, NULL, NULL, NULL, &empty_set);
+ result = _rl_timeout_select (fd + 1, &readfds, NULL, NULL, NULL, &empty_set);
# endif /* HANDLE_SIGNALS */
+ if (result == 0)
+ _rl_timeout_handle (); /* check the timeout */
#endif
if (result >= 0)
- result = read (fileno (stream), &c, sizeof (unsigned char));
+ result = read (fd, &c, sizeof (unsigned char));
if (result == sizeof (unsigned char))
return (c);
@@ -582,7 +867,7 @@ rl_getc (FILE *stream)
if (errno == X_EWOULDBLOCK || errno == X_EAGAIN)
{
- if (sh_unset_nodelay_mode (fileno (stream)) < 0)
+ if (sh_unset_nodelay_mode (fd) < 0)
return (EOF);
continue;
}
@@ -645,7 +930,7 @@ _rl_read_mbchar (char *mbchar, int size)
{
int mb_len, c;
size_t mbchar_bytes_length;
- wchar_t wc;
+ WCHAR_T wc;
mbstate_t ps, ps_back;
memset(&ps, 0, sizeof (mbstate_t));
@@ -661,7 +946,7 @@ _rl_read_mbchar (char *mbchar, int size)
mbchar[mb_len++] = c;
- mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
+ mbchar_bytes_length = MBRTOWC (&wc, mbchar, mb_len, &ps);
if (mbchar_bytes_length == (size_t)(-1))
break; /* invalid byte sequence for the current locale */
else if (mbchar_bytes_length == (size_t)(-2))
diff --git a/lib/readline/isearch.c b/lib/readline/isearch.c
index 080ba3cb..c2d4d236 100644
--- a/lib/readline/isearch.c
+++ b/lib/readline/isearch.c
@@ -6,7 +6,7 @@
/* */
/* **************************************************************** */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -59,13 +59,10 @@ char *_rl_isearch_terminators = (char *)NULL;
_rl_search_cxt *_rl_iscxt = 0;
-/* Variables imported from other files in the readline library. */
-extern HIST_ENTRY *_rl_saved_line_for_history;
+static int rl_search_history (int, int);
-static int rl_search_history PARAMS((int, int));
-
-static _rl_search_cxt *_rl_isearch_init PARAMS((int));
-static void _rl_isearch_fini PARAMS((_rl_search_cxt *));
+static _rl_search_cxt *_rl_isearch_init (int);
+static void _rl_isearch_fini (_rl_search_cxt *);
/* Last line found by the current incremental search, so we don't `find'
identical lines many times in a row. Now part of isearch context. */
@@ -197,7 +194,10 @@ rl_display_search (char *search_string, int flags, int where)
rl_message ("%s", message);
xfree (message);
+#if 0
+ /* rl_message calls this */
(*rl_redisplay_function) ();
+#endif
}
static _rl_search_cxt *
@@ -276,6 +276,8 @@ _rl_isearch_fini (_rl_search_cxt *cxt)
last_isearch_string = cxt->search_string;
last_isearch_string_len = cxt->search_string_index;
cxt->search_string = 0;
+ cxt->search_string_size = 0;
+ cxt->search_string_index = 0;
if (cxt->last_found_line < cxt->save_line)
rl_get_previous_history (cxt->save_line - cxt->last_found_line, 0);
@@ -321,7 +323,7 @@ _rl_search_getchar (_rl_search_cxt *cxt)
#if defined (HANDLE_MULTIBYTE)
/* This ends up with C (and LASTC) being set to the last byte of the
multibyte character. In most cases c == lastc == mb[0] */
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ if (c >= 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0)
c = cxt->lastc = _rl_read_mbstring (cxt->lastc, cxt->mb, MB_LEN_MAX);
#endif
@@ -680,7 +682,7 @@ opcode_dispatch:
paste = _rl_bracketed_text (&pastelen);
if (paste == 0 || *paste == 0)
{
- free (paste);
+ xfree (paste);
break;
}
if (_rl_enable_active_region)
@@ -690,9 +692,10 @@ opcode_dispatch:
cxt->search_string_size += pastelen + 2;
cxt->search_string = (char *)xrealloc (cxt->search_string, cxt->search_string_size);
}
- strcpy (cxt->search_string + cxt->search_string_index, paste);
+ memcpy (cxt->search_string + cxt->search_string_index, paste, pastelen);
cxt->search_string_index += pastelen;
- free (paste);
+ cxt->search_string[cxt->search_string_index] = '\0';
+ xfree (paste);
break;
/* Add character to search string and continue search. */
diff --git a/lib/readline/keymaps.h b/lib/readline/keymaps.h
index 1fa853d8..29038148 100644
--- a/lib/readline/keymaps.h
+++ b/lib/readline/keymaps.h
@@ -1,6 +1,6 @@
/* keymaps.h -- Manipulation of readline keymaps. */
-/* Copyright (C) 1987, 1989, 1992 Free Software Foundation, Inc.
+/* Copyright (C) 1987, 1989, 1992-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -65,33 +65,33 @@ extern KEYMAP_ENTRY_ARRAY vi_insertion_keymap, vi_movement_keymap;
/* Return a new, empty keymap.
Free it with free() when you are done. */
-extern Keymap rl_make_bare_keymap PARAMS((void));
+extern Keymap rl_make_bare_keymap (void);
/* Return a new keymap which is a copy of MAP. */
-extern Keymap rl_copy_keymap PARAMS((Keymap));
+extern Keymap rl_copy_keymap (Keymap);
/* Return a new keymap with the printing characters bound to rl_insert,
the lowercase Meta characters bound to run their equivalents, and
the Meta digits bound to produce numeric arguments. */
-extern Keymap rl_make_keymap PARAMS((void));
+extern Keymap rl_make_keymap (void);
/* Free the storage associated with a keymap. */
-extern void rl_discard_keymap PARAMS((Keymap));
+extern void rl_discard_keymap (Keymap);
/* These functions actually appear in bind.c */
/* Return the keymap corresponding to a given name. Names look like
`emacs' or `emacs-meta' or `vi-insert'. */
-extern Keymap rl_get_keymap_by_name PARAMS((const char *));
+extern Keymap rl_get_keymap_by_name (const char *);
/* Return the current keymap. */
-extern Keymap rl_get_keymap PARAMS((void));
+extern Keymap rl_get_keymap (void);
/* Set the current keymap to MAP. */
-extern void rl_set_keymap PARAMS((Keymap));
+extern void rl_set_keymap (Keymap);
/* Set the name of MAP to NAME */
-extern int rl_set_keymap_name PARAMS((const char *, Keymap));
+extern int rl_set_keymap_name (const char *, Keymap);
#ifdef __cplusplus
}
diff --git a/lib/readline/kill.c b/lib/readline/kill.c
index 50c3fdea..4cf933b2 100644
--- a/lib/readline/kill.c
+++ b/lib/readline/kill.c
@@ -1,6 +1,6 @@
/* kill.c -- kill ring management. */
-/* Copyright (C) 1994-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -70,10 +70,10 @@ static int rl_kill_index;
/* How many slots we have in the kill ring. */
static int rl_kill_ring_length;
-static int _rl_copy_to_kill_ring PARAMS((char *, int));
-static int region_kill_internal PARAMS((int));
-static int _rl_copy_word_as_kill PARAMS((int, int));
-static int rl_yank_nth_arg_internal PARAMS((int, int, int));
+static int _rl_copy_to_kill_ring (char *, int);
+static int region_kill_internal (int);
+static int _rl_copy_word_as_kill (int, int);
+static int rl_yank_nth_arg_internal (int, int, int);
/* How to say that you only want to save a certain amount
of kill material. */
@@ -351,6 +351,30 @@ rl_unix_filename_rubout (int count, int key)
while (count--)
{
c = rl_line_buffer[rl_point - 1];
+
+ /* First move backwards through whitespace */
+ while (rl_point && whitespace (c))
+ {
+ rl_point--;
+ c = rl_line_buffer[rl_point - 1];
+ }
+
+ /* Consume one or more slashes. */
+ if (c == '/')
+ {
+ int i;
+
+ i = rl_point - 1;
+ while (i > 0 && c == '/')
+ c = rl_line_buffer[--i];
+ if (i == 0 || whitespace (c))
+ {
+ rl_point = i + whitespace (c);
+ continue; /* slashes only */
+ }
+ c = '/';
+ }
+
while (rl_point && (whitespace (c) || c == '/'))
{
rl_point--;
@@ -535,7 +559,7 @@ rl_yank_pop (int count, int key)
int
rl_vi_yank_pop (int count, int key)
{
- int l, n;
+ int l, n, origpoint;
if (((rl_last_func != rl_vi_yank_pop) && (rl_last_func != rl_vi_put)) ||
!rl_kill_ring)
@@ -545,11 +569,21 @@ rl_vi_yank_pop (int count, int key)
}
l = strlen (rl_kill_ring[rl_kill_index]);
+#if 0 /* TAG:readline-8.3 8/29/2022 matteopaolini1995@gmail.com */
+ origpoint = rl_point;
+ n = rl_point - l + 1;
+#else
n = rl_point - l;
+#endif
if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l))
{
+#if 0 /* TAG:readline-8.3 */
+ rl_delete_text (n, n + l); /* remember vi cursor positioning */
+ rl_point = origpoint - l;
+#else
rl_delete_text (n, rl_point);
rl_point = n;
+#endif
rl_kill_index--;
if (rl_kill_index < 0)
rl_kill_index = rl_kill_ring_length - 1;
diff --git a/lib/readline/macro.c b/lib/readline/macro.c
index 92cc55c3..231a24bc 100644
--- a/lib/readline/macro.c
+++ b/lib/readline/macro.c
@@ -276,6 +276,8 @@ rl_end_kbd_macro (int count, int ignore)
}
current_macro_index -= rl_key_sequence_length;
+ if (current_macro_index < 0)
+ current_macro_index = 0;
current_macro[current_macro_index] = '\0';
RL_UNSETSTATE(RL_STATE_MACRODEF);
diff --git a/lib/readline/mbutil.c b/lib/readline/mbutil.c
index dc62b4cc..47e9100a 100644
--- a/lib/readline/mbutil.c
+++ b/lib/readline/mbutil.c
@@ -1,6 +1,6 @@
/* mbutil.c -- readline multibyte character utility functions */
-/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -153,7 +153,7 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z
size_t tmp, len;
mbstate_t ps;
int point;
- wchar_t wc;
+ WCHAR_T wc;
tmp = 0;
@@ -183,11 +183,11 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z
if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point]))
{
tmp = 1;
- wc = (wchar_t) string[point];
+ wc = (WCHAR_T) string[point];
memset(&ps, 0, sizeof(mbstate_t));
}
else
- tmp = mbrtowc (&wc, string+point, len, &ps);
+ tmp = MBRTOWC (&wc, string+point, len, &ps);
if (MB_INVALIDCH ((size_t)tmp))
{
/* invalid bytes. assume a byte represents a character */
@@ -216,11 +216,11 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z
if (find_non_zero)
{
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
+ tmp = MBRTOWC (&wc, string + point, strlen (string + point), &ps);
while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && WCWIDTH (wc) == 0)
{
point += tmp;
- tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
+ tmp = MBRTOWC (&wc, string + point, strlen (string + point), &ps);
}
}
@@ -231,11 +231,11 @@ static inline int
_rl_test_nonzero (char *string, int ind, int len)
{
size_t tmp;
- wchar_t wc;
+ WCHAR_T wc;
mbstate_t ps;
memset (&ps, 0, sizeof (mbstate_t));
- tmp = mbrtowc (&wc, string + ind, len - ind, &ps);
+ tmp = MBRTOWC (&wc, string + ind, len - ind, &ps);
/* treat invalid multibyte sequences as non-zero-width */
return (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp) || WCWIDTH (wc) > 0);
}
@@ -293,7 +293,7 @@ _rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero)
mbstate_t ps;
int prev, non_zero_prev, point, length;
size_t tmp;
- wchar_t wc;
+ WCHAR_T wc;
if (_rl_utf8locale)
return (_rl_find_prev_utf8char (string, seed, find_non_zero));
@@ -312,11 +312,11 @@ _rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero)
if (_rl_utf8locale && UTF8_SINGLEBYTE(string[point]))
{
tmp = 1;
- wc = (wchar_t) string[point];
+ wc = (WCHAR_T) string[point];
memset(&ps, 0, sizeof(mbstate_t));
}
else
- tmp = mbrtowc (&wc, string + point, length - point, &ps);
+ tmp = MBRTOWC (&wc, string + point, length - point, &ps);
if (MB_INVALIDCH ((size_t)tmp))
{
/* in this case, bytes are invalid or too short to compose
@@ -470,27 +470,27 @@ _rl_is_mbchar_matched (char *string, int seed, int end, char *mbchar, int length
return 1;
}
-wchar_t
+WCHAR_T
_rl_char_value (char *buf, int ind)
{
size_t tmp;
- wchar_t wc;
+ WCHAR_T wc;
mbstate_t ps;
int l;
if (MB_LEN_MAX == 1 || rl_byte_oriented)
- return ((wchar_t) buf[ind]);
+ return ((WCHAR_T) buf[ind]);
if (_rl_utf8locale && UTF8_SINGLEBYTE(buf[ind]))
- return ((wchar_t) buf[ind]);
+ return ((WCHAR_T) buf[ind]);
l = strlen (buf);
if (ind >= l - 1)
- return ((wchar_t) buf[ind]);
+ return ((WCHAR_T) buf[ind]);
if (l < ind) /* Sanity check */
l = strlen (buf+ind);
memset (&ps, 0, sizeof (mbstate_t));
- tmp = mbrtowc (&wc, buf + ind, l - ind, &ps);
+ tmp = MBRTOWC (&wc, buf + ind, l - ind, &ps);
if (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp))
- return ((wchar_t) buf[ind]);
+ return ((WCHAR_T) buf[ind]);
return wc;
}
#endif /* HANDLE_MULTIBYTE */
diff --git a/lib/readline/misc.c b/lib/readline/misc.c
index 3d9a674c..4bca9c58 100644
--- a/lib/readline/misc.c
+++ b/lib/readline/misc.c
@@ -1,6 +1,6 @@
/* misc.c -- miscellaneous bindable readline functions. */
-/* Copyright (C) 1987-2019 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -50,14 +50,12 @@
#include "history.h"
#include "rlprivate.h"
+#include "histlib.h"
#include "rlshell.h"
#include "xmalloc.h"
-static int rl_digit_loop PARAMS((void));
-static void _rl_history_set_point PARAMS((void));
-
-/* Forward declarations used in this file */
-void _rl_free_history_entry PARAMS((HIST_ENTRY *));
+static int rl_digit_loop (void);
+static void _rl_history_set_point (void);
/* If non-zero, rl_get_previous_history and rl_get_next_history attempt
to preserve the value of rl_point from line to line. */
@@ -309,9 +307,9 @@ _rl_start_using_history (void)
{
using_history ();
if (_rl_saved_line_for_history)
- _rl_free_history_entry (_rl_saved_line_for_history);
-
+ _rl_free_saved_history_line ();
_rl_saved_line_for_history = (HIST_ENTRY *)NULL;
+ _rl_history_search_pos = -99; /* some random invalid history position */
}
/* Free the contents (and containing structure) of a HIST_ENTRY. */
@@ -355,6 +353,8 @@ rl_maybe_unsave_line (void)
list from a history entry, as in rl_replace_from_history() below. */
rl_replace_line (_rl_saved_line_for_history->line, 0);
rl_undo_list = (UNDO_LIST *)_rl_saved_line_for_history->data;
+
+ /* Doesn't free `data'. */
_rl_free_history_entry (_rl_saved_line_for_history);
_rl_saved_line_for_history = (HIST_ENTRY *)NULL;
rl_point = rl_end; /* rl_replace_line sets rl_end */
@@ -382,8 +382,18 @@ rl_maybe_save_line (void)
int
_rl_free_saved_history_line (void)
{
+ UNDO_LIST *orig;
+
if (_rl_saved_line_for_history)
{
+ if (rl_undo_list && rl_undo_list == (UNDO_LIST *)_rl_saved_line_for_history->data)
+ rl_undo_list = 0;
+ /* Have to free this separately because _rl_free_history entry can't:
+ it doesn't know whether or not this has application data. Only the
+ callers that know this is _rl_saved_line_for_history can know that
+ it's an undo list. */
+ if (_rl_saved_line_for_history->data)
+ _rl_free_undo_list ((UNDO_LIST *)_rl_saved_line_for_history->data);
_rl_free_history_entry (_rl_saved_line_for_history);
_rl_saved_line_for_history = (HIST_ENTRY *)NULL;
}
@@ -625,7 +635,7 @@ rl_get_previous_history (int count, int key)
if (temp == 0)
{
if (had_saved_line == 0)
- _rl_free_saved_history_line ();
+ _rl_free_saved_history_line ();
rl_ding ();
}
else
@@ -637,6 +647,42 @@ rl_get_previous_history (int count, int key)
return 0;
}
+/* With an argument, move back that many history lines, else move to the
+ beginning of history. */
+int
+rl_fetch_history (int count, int c)
+{
+ int wanted, nhist;
+
+ /* Giving an argument of n means we want the nth command in the history
+ file. The command number is interpreted the same way that the bash
+ `history' command does it -- that is, giving an argument count of 450
+ to this command would get the command listed as number 450 in the
+ output of `history'. */
+ if (rl_explicit_arg)
+ {
+ nhist = history_base + where_history ();
+ /* Negative arguments count back from the end of the history list. */
+ wanted = (count >= 0) ? nhist - count : -count;
+
+ if (wanted <= 0 || wanted >= nhist)
+ {
+ /* In vi mode, we don't change the line with an out-of-range
+ argument, as for the `G' command. */
+ if (rl_editing_mode == vi_mode)
+ rl_ding ();
+ else
+ rl_beginning_of_history (0, 0);
+ }
+ else
+ rl_get_previous_history (wanted, c);
+ }
+ else
+ rl_beginning_of_history (count, 0);
+
+ return (0);
+}
+
/* The equivalent of the Korn shell C-o operate-and-get-next-history-line
editing command. */
@@ -664,15 +710,13 @@ set_saved_history ()
}
int
-rl_operate_and_get_next (count, c)
- int count, c;
+rl_operate_and_get_next (int count, int c)
{
/* Accept the current line. */
rl_newline (1, c);
saved_history_logical_offset = rl_explicit_arg ? count : where_history () + history_base + 1;
-
_rl_saved_internal_startup_hook = _rl_internal_startup_hook;
_rl_internal_startup_hook = set_saved_history;
diff --git a/lib/readline/nls.c b/lib/readline/nls.c
index d2f67e0d..5c6a13b6 100644
--- a/lib/readline/nls.c
+++ b/lib/readline/nls.c
@@ -1,6 +1,6 @@
/* nls.c -- skeletal internationalization code. */
-/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -53,8 +53,12 @@
#include "readline.h"
#include "rlshell.h"
#include "rlprivate.h"
+#include "xmalloc.h"
-static int utf8locale PARAMS((char *));
+static int utf8locale (char *);
+
+#define RL_DEFAULT_LOCALE "C"
+static char *_rl_current_locale = 0;
#if !defined (HAVE_SETLOCALE)
/* A list of legal values for the LANG or LC_CTYPE environment variables.
@@ -78,12 +82,12 @@ static char *legal_lang_values[] =
0
};
-static char *normalize_codeset PARAMS((char *));
+static char *normalize_codeset (char *);
#endif /* !HAVE_SETLOCALE */
-static char *find_codeset PARAMS((char *, size_t *));
+static char *find_codeset (char *, size_t *);
-static char *_rl_get_locale_var PARAMS((const char *));
+static char *_rl_get_locale_var (const char *);
static char *
_rl_get_locale_var (const char *v)
@@ -131,50 +135,61 @@ _rl_init_locale (void)
that doesn't return anything, we set lspec to the empty string to
force the subsequent call to setlocale() to define the `native'
environment. */
+#if defined (HAVE_SETLOCALE)
if (lspec == 0 || *lspec == 0)
lspec = setlocale (LC_CTYPE, (char *)NULL);
if (lspec == 0)
lspec = "";
ret = setlocale (LC_CTYPE, lspec); /* ok, since it does not change locale */
+#else
+ ret = (lspec == 0 || *lspec == 0) ? RL_DEFAULT_LOCALE : lspec;
+#endif
_rl_utf8locale = (ret && *ret) ? utf8locale (ret) : 0;
+ _rl_current_locale = savestring (ret);
return ret;
}
-/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
- to decide the defaults for 8-bit character input and output. Returns
- 1 if we set eight-bit mode. */
-int
-_rl_init_eightbit (void)
-{
/* If we have setlocale(3), just check the current LC_CTYPE category
- value, and go into eight-bit mode if it's not C or POSIX. */
+ value (passed as LOCALESTR), and go into eight-bit mode if it's not "C"
+ or "POSIX". If FORCE is non-zero, we reset the locale variables to values
+ appropriate for the C locale if the locale is "C" or "POSIX". FORCE is 0
+ when this is called from _rl_init_eightbit, since we're modifying the
+ default initial values and don't need to change anything else. If we
+ don't have setlocale(3), we check the codeset portion of LOCALESTR against
+ a set of known values and go into eight-bit mode if it matches one of those.
+ Returns 1 if we set eight-bit (multibyte) mode. */
+static int
+_rl_set_localevars (char *localestr, int force)
+{
#if defined (HAVE_SETLOCALE)
- char *lspec, *t;
-
- t = _rl_init_locale (); /* returns static pointer */
-
- if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0))
+ if (localestr && *localestr && (localestr[0] != 'C' || localestr[1]) && (STREQ (localestr, "POSIX") == 0))
{
_rl_meta_flag = 1;
_rl_convert_meta_chars_to_ascii = 0;
_rl_output_meta_chars = 1;
return (1);
}
+ else if (force)
+ {
+ /* Default "C" locale settings. */
+ _rl_meta_flag = 0;
+ _rl_convert_meta_chars_to_ascii = 1;
+ _rl_output_meta_chars = 0;
+ return (0);
+ }
else
return (0);
#else /* !HAVE_SETLOCALE */
- char *lspec, *t;
+ char *t;
int i;
/* We don't have setlocale. Finesse it. Check the environment for the
appropriate variables and set eight-bit mode if they have the right
values. */
- lspec = _rl_get_locale_var ("LC_CTYPE");
-
- if (lspec == 0 || (t = normalize_codeset (lspec)) == 0)
+ if (localestr == 0 || (t = normalize_codeset (localestr)) == 0)
return (0);
for (i = 0; t && legal_lang_values[i]; i++)
if (STREQ (t, legal_lang_values[i]))
@@ -185,6 +200,14 @@ _rl_init_eightbit (void)
break;
}
+ if (force && legal_lang_values[i] == 0) /* didn't find it */
+ {
+ /* Default "C" locale settings. */
+ _rl_meta_flag = 0;
+ _rl_convert_meta_chars_to_ascii = 1;
+ _rl_output_meta_chars = 0;
+ }
+
_rl_utf8locale = *t ? STREQ (t, "utf8") : 0;
xfree (t);
@@ -192,6 +215,21 @@ _rl_init_eightbit (void)
#endif /* !HAVE_SETLOCALE */
}
+/* Check for LC_ALL, LC_CTYPE, and LANG and use the first with a value
+ to decide the defaults for 8-bit character input and output. Returns
+ 1 if we set eight-bit mode. */
+int
+_rl_init_eightbit (void)
+{
+ char *t, *ol;
+
+ ol = _rl_current_locale;
+ t = _rl_init_locale (); /* resets _rl_current_locale, returns static pointer */
+ xfree (ol);
+
+ return (_rl_set_localevars (t, 0));
+}
+
#if !defined (HAVE_SETLOCALE)
static char *
normalize_codeset (char *codeset)
@@ -288,3 +326,19 @@ find_codeset (char *name, size_t *lenp)
return result;
}
+
+void
+_rl_reset_locale (void)
+{
+ char *ol, *nl;
+
+ /* This should not be NULL; _rl_init_eightbit sets it on the first call to
+ readline() or rl_initialize(). */
+ ol = _rl_current_locale;
+ nl = _rl_init_locale (); /* resets _rl_current_locale */
+
+ if ((ol == 0 && nl) || (ol && nl && (STREQ (ol, nl) == 0)))
+ (void)_rl_set_localevars (nl, 1);
+
+ xfree (ol);
+}
diff --git a/lib/readline/parens.c b/lib/readline/parens.c
index af479773..57ce7045 100644
--- a/lib/readline/parens.c
+++ b/lib/readline/parens.c
@@ -1,6 +1,6 @@
/* parens.c -- implementation of matching parentheses feature. */
-/* Copyright (C) 1987, 1989, 1992-2015, 2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987, 1989, 1992-2015, 2017, 2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -53,7 +53,7 @@ extern char *strchr (), *strrchr ();
#include "readline.h"
#include "rlprivate.h"
-static int find_matching_open PARAMS((char *, int, int));
+static int find_matching_open (char *, int, int);
/* Non-zero means try to blink the matching open parenthesis when the
close parenthesis is inserted. */
@@ -135,7 +135,11 @@ rl_insert_close (int count, int invoking_key)
orig_point = rl_point;
rl_point = match_point;
(*rl_redisplay_function) ();
+# if defined (RL_TIMEOUT_USE_SELECT)
+ ready = _rl_timeout_select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer, NULL);
+# else
ready = select (1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &timer);
+# endif
rl_point = orig_point;
#else /* !HAVE_SELECT */
_rl_insert_char (count, invoking_key);
diff --git a/lib/readline/posixdir.h b/lib/readline/posixdir.h
index af5be801..b737bd7d 100644
--- a/lib/readline/posixdir.h
+++ b/lib/readline/posixdir.h
@@ -1,6 +1,6 @@
/* posixdir.h -- Posix directory reading includes and defines. */
-/* Copyright (C) 1987,1991,2012 Free Software Foundation, Inc.
+/* Copyright (C) 1987,1991,2012,2019,2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/lib/readline/posixtime.h b/lib/readline/posixtime.h
new file mode 100644
index 00000000..e70ebec6
--- /dev/null
+++ b/lib/readline/posixtime.h
@@ -0,0 +1,84 @@
+/* posixtime.h -- wrapper for time.h, sys/times.h mess. */
+
+/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _POSIXTIME_H_
+#define _POSIXTIME_H_
+
+/* include this after config.h */
+/* Some systems require this, mostly for the definition of `struct timezone'.
+ For example, Dynix/ptx has that definition in <time.h> rather than
+ sys/time.h */
+#if defined (HAVE_SYS_TIME_H)
+# include <sys/time.h>
+#endif
+#include <time.h>
+
+#if !defined (HAVE_SYSCONF) || !defined (_SC_CLK_TCK)
+# if !defined (CLK_TCK)
+# if defined (HZ)
+# define CLK_TCK HZ
+# else
+# define CLK_TCK 60 /* 60HZ */
+# endif
+# endif /* !CLK_TCK */
+#endif /* !HAVE_SYSCONF && !_SC_CLK_TCK */
+
+#if !HAVE_TIMEVAL
+struct timeval
+{
+ time_t tv_sec;
+ long int tv_usec;
+};
+#endif
+
+#if !HAVE_GETTIMEOFDAY
+extern int gettimeofday PARAMS((struct timeval *, void *));
+#endif
+
+/* These exist on BSD systems, at least. */
+#if !defined (timerclear)
+# define timerclear(tvp) do { (tvp)->tv_sec = 0; (tvp)->tv_usec = 0; } while (0)
+#endif
+#if !defined (timerisset)
+# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#endif
+#if !defined (timercmp)
+# define timercmp(a, b, CMP) \
+ (((a)->tv_sec == (b)->tv_sec) ? ((a)->tv_usec CMP (b)->tv_usec) \
+ : ((a)->tv_sec CMP (b)->tv_sec))
+#endif
+
+/* These are non-standard. */
+#if !defined (timerisunset)
+# define timerisunset(tvp) ((tvp)->tv_sec == 0 && (tvp)->tv_usec == 0)
+#endif
+#if !defined (timerset)
+# define timerset(tvp, s, u) do { tvp->tv_sec = s; tvp->tv_usec = u; } while (0)
+#endif
+
+#ifndef TIMEVAL_TO_TIMESPEC
+# define TIMEVAL_TO_TIMESPEC(tv, ts) \
+ do { \
+ (ts)->tv_sec = (tv)->tv_sec; \
+ (ts)->tv_nsec = (tv)->tv_usec * 1000; \
+ } while (0)
+#endif
+
+#endif /* _POSIXTIME_H_ */
diff --git a/lib/readline/readline.c b/lib/readline/readline.c
index e61d188b..9d42a8d6 100644
--- a/lib/readline/readline.c
+++ b/lib/readline/readline.c
@@ -1,7 +1,7 @@
/* readline.c -- a general facility for reading lines of input
with emacs style editing and completion. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -72,35 +72,34 @@ extern int errno;
#include "rlshell.h"
#include "xmalloc.h"
-#ifndef RL_LIBRARY_VERSION
-# define RL_LIBRARY_VERSION "8.0"
+#if defined (COLOR_SUPPORT)
+# include "parse-colors.h"
#endif
-#ifndef RL_READLINE_VERSION
-# define RL_READLINE_VERSION 0x0800
+#ifndef RL_LIBRARY_VERSION
+# define RL_LIBRARY_VERSION "8.1"
#endif
-extern void _rl_free_history_entry PARAMS((HIST_ENTRY *));
-
-#if defined (COLOR_SUPPORT)
-extern void _rl_parse_colors PARAMS((void)); /* XXX */
+#ifndef RL_READLINE_VERSION
+# define RL_READLINE_VERSION 0x0801
#endif
-
/* Forward declarations used in this file. */
-static char *readline_internal PARAMS((void));
-static void readline_initialize_everything PARAMS((void));
+static char *readline_internal (void);
+static void readline_initialize_everything (void);
+
+static void run_startup_hooks (void);
-static void bind_arrow_keys_internal PARAMS((Keymap));
-static void bind_arrow_keys PARAMS((void));
+static void bind_arrow_keys_internal (Keymap);
+static void bind_arrow_keys (void);
-static void bind_bracketed_paste_prefix PARAMS((void));
+static void bind_bracketed_paste_prefix (void);
-static void readline_default_bindings PARAMS((void));
-static void reset_default_bindings PARAMS((void));
+static void readline_default_bindings (void);
+static void reset_default_bindings (void);
-static int _rl_subseq_result PARAMS((int, Keymap, int, int));
-static int _rl_subseq_getchar PARAMS((int));
+static int _rl_subseq_result (int, Keymap, int, int);
+static int _rl_subseq_getchar (int);
/* **************************************************************** */
/* */
@@ -165,6 +164,9 @@ int rl_end;
/* Make this non-zero to return the current input_line. */
int rl_done;
+/* If non-zero when readline_internal returns, it means we found EOF */
+int rl_eof_found = 0;
+
/* The last function executed by readline. */
rl_command_func_t *rl_last_func = (rl_command_func_t *)NULL;
@@ -218,9 +220,6 @@ int _rl_eof_char = CTRL ('D');
/* Non-zero makes this the next keystroke to read. */
int rl_pending_input = 0;
-/* If non-zero when readline_internal returns, it means we found EOF */
-int _rl_eof_found = 0;
-
/* Pointer to a useful terminal name. */
const char *rl_terminal_name = (const char *)NULL;
@@ -241,6 +240,9 @@ char *_rl_comment_begin;
/* Keymap holding the function currently being executed. */
Keymap rl_executing_keymap;
+/* The function currently being executed. */
+rl_command_func_t *_rl_executing_func;
+
/* Keymap we're currently using to dispatch. */
Keymap _rl_dispatching_keymap;
@@ -403,6 +405,16 @@ readline (const char *prompt)
return (value);
}
+static void
+run_startup_hooks (void)
+{
+ if (rl_startup_hook)
+ (*rl_startup_hook) ();
+
+ if (_rl_internal_startup_hook)
+ (*_rl_internal_startup_hook) ();
+}
+
#if defined (READLINE_CALLBACKS)
# define STATIC_CALLBACK
#else
@@ -422,11 +434,7 @@ readline_internal_setup (void)
if (_rl_enable_meta & RL_ISSTATE (RL_STATE_TERMPREPPED))
_rl_enable_meta_key ();
- if (rl_startup_hook)
- (*rl_startup_hook) ();
-
- if (_rl_internal_startup_hook)
- (*_rl_internal_startup_hook) ();
+ run_startup_hooks ();
rl_deactivate_mark ();
@@ -474,12 +482,18 @@ readline_internal_teardown (int eof)
RL_CHECK_SIGNALS ();
+ if (eof)
+ RL_SETSTATE (RL_STATE_EOF); /* XXX */
+
/* Restore the original of this history line, iff the line that we
are editing was originally in the history, AND the line has changed. */
entry = current_history ();
+ /* We don't want to do this if we executed functions that call
+ history_set_pos to set the history offset to the line containing the
+ non-incremental search string. */
if (entry && rl_undo_list)
- {
+ {
temp = savestring (the_line);
rl_revert_line (1, 0);
entry = replace_history_entry (where_history (), the_line, (histdata_t)NULL);
@@ -511,6 +525,11 @@ readline_internal_teardown (int eof)
void
_rl_internal_char_cleanup (void)
{
+ if (_rl_keep_mark_active)
+ _rl_keep_mark_active = 0;
+ else if (rl_mark_active_p ())
+ rl_deactivate_mark ();
+
#if defined (VI_MODE)
/* In vi mode, when you exit insert mode, the cursor moves back
over the previous character. We explicitly check for that here. */
@@ -567,6 +586,15 @@ readline_internal_charloop (void)
{
(*rl_redisplay_function) ();
_rl_want_redisplay = 0;
+
+ /* If we longjmped because of a timeout, handle it here. */
+ if (RL_ISSTATE (RL_STATE_TIMEOUT))
+ {
+ RL_SETSTATE (RL_STATE_DONE);
+ rl_done = 1;
+ return 1;
+ }
+
/* If we get here, we're not being called from something dispatched
from _rl_callback_read_char(), which sets up its own value of
_rl_top_level (saving and restoring the old, of course), so
@@ -596,6 +624,7 @@ readline_internal_charloop (void)
RL_SETSTATE(RL_STATE_DONE);
return (rl_done = 1);
#else
+ RL_SETSTATE(RL_STATE_EOF);
eof_found = 1;
break;
#endif
@@ -636,6 +665,7 @@ readline_internal_charloop (void)
RL_SETSTATE(RL_STATE_DONE);
return (rl_done = 1);
#else
+ RL_SETSTATE(RL_STATE_EOF);
eof_found = 1;
break;
#endif
@@ -652,6 +682,8 @@ readline_internal_charloop (void)
rl_executing_keymap = _rl_command_to_execute->map;
rl_executing_key = _rl_command_to_execute->key;
+ _rl_executing_func = _rl_command_to_execute->func;
+
rl_dispatching = 1;
RL_SETSTATE(RL_STATE_DISPATCHING);
r = (*(_rl_command_to_execute->func)) (_rl_command_to_execute->count, _rl_command_to_execute->key);
@@ -668,11 +700,6 @@ readline_internal_charloop (void)
if (rl_pending_input == 0 && lk == _rl_last_command_was_kill)
_rl_last_command_was_kill = 0;
- if (_rl_keep_mark_active)
- _rl_keep_mark_active = 0;
- else if (rl_mark_active_p ())
- rl_deactivate_mark ();
-
_rl_internal_char_cleanup ();
#if defined (READLINE_CALLBACKS)
@@ -703,8 +730,8 @@ static char *
readline_internal (void)
{
readline_internal_setup ();
- _rl_eof_found = readline_internal_charloop ();
- return (readline_internal_teardown (_rl_eof_found));
+ rl_eof_found = readline_internal_charloop ();
+ return (readline_internal_teardown (rl_eof_found));
}
void
@@ -878,6 +905,8 @@ _rl_dispatch_subseq (register int key, Keymap map, int got_subseq)
rl_executing_keymap = map;
rl_executing_key = key;
+ _rl_executing_func = func;
+
RESIZE_KEYSEQ_BUFFER();
rl_executing_keyseq[rl_key_sequence_length++] = key;
rl_executing_keyseq[rl_key_sequence_length] = '\0';
@@ -1143,6 +1172,9 @@ _rl_subseq_result (int r, Keymap map, int key, int got_subseq)
int
rl_initialize (void)
{
+ /* Initialize the timeout first to get the precise start time. */
+ _rl_timeout_init ();
+
/* If we have never been called before, initialize the
terminal and data structures. */
if (rl_initialized == 0)
@@ -1154,14 +1186,14 @@ rl_initialize (void)
RL_SETSTATE(RL_STATE_INITIALIZED);
}
else
- (void)_rl_init_locale (); /* check current locale */
+ _rl_reset_locale (); /* check current locale and set locale variables */
/* Initialize the current line information. */
_rl_init_line_state ();
/* We aren't done yet. We haven't even gotten started yet! */
rl_done = 0;
- RL_UNSETSTATE(RL_STATE_DONE);
+ RL_UNSETSTATE(RL_STATE_DONE|RL_STATE_TIMEOUT|RL_STATE_EOF);
/* Tell the history routines what is going on. */
_rl_start_using_history ();
@@ -1282,8 +1314,8 @@ readline_initialize_everything (void)
/* If the completion parser's default word break characters haven't
been set yet, then do so now. */
- if (rl_completer_word_break_characters == (char *)NULL)
- rl_completer_word_break_characters = (char *)rl_basic_word_break_characters;
+ if (rl_completer_word_break_characters == 0)
+ rl_completer_word_break_characters = rl_basic_word_break_characters;
#if defined (COLOR_SUPPORT)
if (_rl_colored_stats || _rl_colored_completion_prefix)
@@ -1532,3 +1564,12 @@ _rl_add_executing_keyseq (int key)
RESIZE_KEYSEQ_BUFFER ();
rl_executing_keyseq[rl_key_sequence_length++] = key;
}
+
+/* `delete' the last character added to the executing key sequence. Use this
+ before calling rl_execute_next to avoid keys being added twice. */
+void
+_rl_del_executing_keyseq (void)
+{
+ if (rl_key_sequence_length > 0)
+ rl_key_sequence_length--;
+}
diff --git a/lib/readline/readline.h b/lib/readline/readline.h
index 78fa39d0..cac269f0 100644
--- a/lib/readline/readline.h
+++ b/lib/readline/readline.h
@@ -1,6 +1,6 @@
/* Readline.h -- the names of functions callable from within readline. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -39,9 +39,9 @@ extern "C" {
#endif
/* Hex-encoded Readline version number. */
-#define RL_READLINE_VERSION 0x0801 /* Readline 8.0 */
+#define RL_READLINE_VERSION 0x0802 /* Readline 8.2 */
#define RL_VERSION_MAJOR 8
-#define RL_VERSION_MINOR 1
+#define RL_VERSION_MINOR 2
/* Readline data structures. */
@@ -79,211 +79,212 @@ extern FUNMAP **funmap;
/* **************************************************************** */
/* Bindable commands for numeric arguments. */
-extern int rl_digit_argument PARAMS((int, int));
-extern int rl_universal_argument PARAMS((int, int));
+extern int rl_digit_argument (int, int);
+extern int rl_universal_argument (int, int);
/* Bindable commands for moving the cursor. */
-extern int rl_forward_byte PARAMS((int, int));
-extern int rl_forward_char PARAMS((int, int));
-extern int rl_forward PARAMS((int, int));
-extern int rl_backward_byte PARAMS((int, int));
-extern int rl_backward_char PARAMS((int, int));
-extern int rl_backward PARAMS((int, int));
-extern int rl_beg_of_line PARAMS((int, int));
-extern int rl_end_of_line PARAMS((int, int));
-extern int rl_forward_word PARAMS((int, int));
-extern int rl_backward_word PARAMS((int, int));
-extern int rl_refresh_line PARAMS((int, int));
-extern int rl_clear_screen PARAMS((int, int));
-extern int rl_clear_display PARAMS((int, int));
-extern int rl_skip_csi_sequence PARAMS((int, int));
-extern int rl_arrow_keys PARAMS((int, int));
-
-extern int rl_previous_screen_line PARAMS((int, int));
-extern int rl_next_screen_line PARAMS((int, int));
+extern int rl_forward_byte (int, int);
+extern int rl_forward_char (int, int);
+extern int rl_forward (int, int);
+extern int rl_backward_byte (int, int);
+extern int rl_backward_char (int, int);
+extern int rl_backward (int, int);
+extern int rl_beg_of_line (int, int);
+extern int rl_end_of_line (int, int);
+extern int rl_forward_word (int, int);
+extern int rl_backward_word (int, int);
+extern int rl_refresh_line (int, int);
+extern int rl_clear_screen (int, int);
+extern int rl_clear_display (int, int);
+extern int rl_skip_csi_sequence (int, int);
+extern int rl_arrow_keys (int, int);
+
+extern int rl_previous_screen_line (int, int);
+extern int rl_next_screen_line (int, int);
/* Bindable commands for inserting and deleting text. */
-extern int rl_insert PARAMS((int, int));
-extern int rl_quoted_insert PARAMS((int, int));
-extern int rl_tab_insert PARAMS((int, int));
-extern int rl_newline PARAMS((int, int));
-extern int rl_do_lowercase_version PARAMS((int, int));
-extern int rl_rubout PARAMS((int, int));
-extern int rl_delete PARAMS((int, int));
-extern int rl_rubout_or_delete PARAMS((int, int));
-extern int rl_delete_horizontal_space PARAMS((int, int));
-extern int rl_delete_or_show_completions PARAMS((int, int));
-extern int rl_insert_comment PARAMS((int, int));
+extern int rl_insert (int, int);
+extern int rl_quoted_insert (int, int);
+extern int rl_tab_insert (int, int);
+extern int rl_newline (int, int);
+extern int rl_do_lowercase_version (int, int);
+extern int rl_rubout (int, int);
+extern int rl_delete (int, int);
+extern int rl_rubout_or_delete (int, int);
+extern int rl_delete_horizontal_space (int, int);
+extern int rl_delete_or_show_completions (int, int);
+extern int rl_insert_comment (int, int);
/* Bindable commands for changing case. */
-extern int rl_upcase_word PARAMS((int, int));
-extern int rl_downcase_word PARAMS((int, int));
-extern int rl_capitalize_word PARAMS((int, int));
+extern int rl_upcase_word (int, int);
+extern int rl_downcase_word (int, int);
+extern int rl_capitalize_word (int, int);
/* Bindable commands for transposing characters and words. */
-extern int rl_transpose_words PARAMS((int, int));
-extern int rl_transpose_chars PARAMS((int, int));
+extern int rl_transpose_words (int, int);
+extern int rl_transpose_chars (int, int);
/* Bindable commands for searching within a line. */
-extern int rl_char_search PARAMS((int, int));
-extern int rl_backward_char_search PARAMS((int, int));
+extern int rl_char_search (int, int);
+extern int rl_backward_char_search (int, int);
/* Bindable commands for readline's interface to the command history. */
-extern int rl_beginning_of_history PARAMS((int, int));
-extern int rl_end_of_history PARAMS((int, int));
-extern int rl_get_next_history PARAMS((int, int));
-extern int rl_get_previous_history PARAMS((int, int));
-extern int rl_operate_and_get_next PARAMS((int, int));
+extern int rl_beginning_of_history (int, int);
+extern int rl_end_of_history (int, int);
+extern int rl_get_next_history (int, int);
+extern int rl_get_previous_history (int, int);
+extern int rl_operate_and_get_next (int, int);
+extern int rl_fetch_history (int, int);
/* Bindable commands for managing the mark and region. */
-extern int rl_set_mark PARAMS((int, int));
-extern int rl_exchange_point_and_mark PARAMS((int, int));
+extern int rl_set_mark (int, int);
+extern int rl_exchange_point_and_mark (int, int);
/* Bindable commands to set the editing mode (emacs or vi). */
-extern int rl_vi_editing_mode PARAMS((int, int));
-extern int rl_emacs_editing_mode PARAMS((int, int));
+extern int rl_vi_editing_mode (int, int);
+extern int rl_emacs_editing_mode (int, int);
/* Bindable commands to change the insert mode (insert or overwrite) */
-extern int rl_overwrite_mode PARAMS((int, int));
+extern int rl_overwrite_mode (int, int);
/* Bindable commands for managing key bindings. */
-extern int rl_re_read_init_file PARAMS((int, int));
-extern int rl_dump_functions PARAMS((int, int));
-extern int rl_dump_macros PARAMS((int, int));
-extern int rl_dump_variables PARAMS((int, int));
+extern int rl_re_read_init_file (int, int);
+extern int rl_dump_functions (int, int);
+extern int rl_dump_macros (int, int);
+extern int rl_dump_variables (int, int);
/* Bindable commands for word completion. */
-extern int rl_complete PARAMS((int, int));
-extern int rl_possible_completions PARAMS((int, int));
-extern int rl_insert_completions PARAMS((int, int));
-extern int rl_old_menu_complete PARAMS((int, int));
-extern int rl_menu_complete PARAMS((int, int));
-extern int rl_backward_menu_complete PARAMS((int, int));
+extern int rl_complete (int, int);
+extern int rl_possible_completions (int, int);
+extern int rl_insert_completions (int, int);
+extern int rl_old_menu_complete (int, int);
+extern int rl_menu_complete (int, int);
+extern int rl_backward_menu_complete (int, int);
/* Bindable commands for killing and yanking text, and managing the kill ring. */
-extern int rl_kill_word PARAMS((int, int));
-extern int rl_backward_kill_word PARAMS((int, int));
-extern int rl_kill_line PARAMS((int, int));
-extern int rl_backward_kill_line PARAMS((int, int));
-extern int rl_kill_full_line PARAMS((int, int));
-extern int rl_unix_word_rubout PARAMS((int, int));
-extern int rl_unix_filename_rubout PARAMS((int, int));
-extern int rl_unix_line_discard PARAMS((int, int));
-extern int rl_copy_region_to_kill PARAMS((int, int));
-extern int rl_kill_region PARAMS((int, int));
-extern int rl_copy_forward_word PARAMS((int, int));
-extern int rl_copy_backward_word PARAMS((int, int));
-extern int rl_yank PARAMS((int, int));
-extern int rl_yank_pop PARAMS((int, int));
-extern int rl_yank_nth_arg PARAMS((int, int));
-extern int rl_yank_last_arg PARAMS((int, int));
-extern int rl_bracketed_paste_begin PARAMS((int, int));
+extern int rl_kill_word (int, int);
+extern int rl_backward_kill_word (int, int);
+extern int rl_kill_line (int, int);
+extern int rl_backward_kill_line (int, int);
+extern int rl_kill_full_line (int, int);
+extern int rl_unix_word_rubout (int, int);
+extern int rl_unix_filename_rubout (int, int);
+extern int rl_unix_line_discard (int, int);
+extern int rl_copy_region_to_kill (int, int);
+extern int rl_kill_region (int, int);
+extern int rl_copy_forward_word (int, int);
+extern int rl_copy_backward_word (int, int);
+extern int rl_yank (int, int);
+extern int rl_yank_pop (int, int);
+extern int rl_yank_nth_arg (int, int);
+extern int rl_yank_last_arg (int, int);
+extern int rl_bracketed_paste_begin (int, int);
/* Not available unless _WIN32 is defined. */
#if defined (_WIN32)
-extern int rl_paste_from_clipboard PARAMS((int, int));
+extern int rl_paste_from_clipboard (int, int);
#endif
/* Bindable commands for incremental searching. */
-extern int rl_reverse_search_history PARAMS((int, int));
-extern int rl_forward_search_history PARAMS((int, int));
+extern int rl_reverse_search_history (int, int);
+extern int rl_forward_search_history (int, int);
/* Bindable keyboard macro commands. */
-extern int rl_start_kbd_macro PARAMS((int, int));
-extern int rl_end_kbd_macro PARAMS((int, int));
-extern int rl_call_last_kbd_macro PARAMS((int, int));
-extern int rl_print_last_kbd_macro PARAMS((int, int));
+extern int rl_start_kbd_macro (int, int);
+extern int rl_end_kbd_macro (int, int);
+extern int rl_call_last_kbd_macro (int, int);
+extern int rl_print_last_kbd_macro (int, int);
/* Bindable undo commands. */
-extern int rl_revert_line PARAMS((int, int));
-extern int rl_undo_command PARAMS((int, int));
+extern int rl_revert_line (int, int);
+extern int rl_undo_command (int, int);
/* Bindable tilde expansion commands. */
-extern int rl_tilde_expand PARAMS((int, int));
+extern int rl_tilde_expand (int, int);
/* Bindable terminal control commands. */
-extern int rl_restart_output PARAMS((int, int));
-extern int rl_stop_output PARAMS((int, int));
+extern int rl_restart_output (int, int);
+extern int rl_stop_output (int, int);
/* Miscellaneous bindable commands. */
-extern int rl_abort PARAMS((int, int));
-extern int rl_tty_status PARAMS((int, int));
+extern int rl_abort (int, int);
+extern int rl_tty_status (int, int);
/* Bindable commands for incremental and non-incremental history searching. */
-extern int rl_history_search_forward PARAMS((int, int));
-extern int rl_history_search_backward PARAMS((int, int));
-extern int rl_history_substr_search_forward PARAMS((int, int));
-extern int rl_history_substr_search_backward PARAMS((int, int));
-extern int rl_noninc_forward_search PARAMS((int, int));
-extern int rl_noninc_reverse_search PARAMS((int, int));
-extern int rl_noninc_forward_search_again PARAMS((int, int));
-extern int rl_noninc_reverse_search_again PARAMS((int, int));
+extern int rl_history_search_forward (int, int);
+extern int rl_history_search_backward (int, int);
+extern int rl_history_substr_search_forward (int, int);
+extern int rl_history_substr_search_backward (int, int);
+extern int rl_noninc_forward_search (int, int);
+extern int rl_noninc_reverse_search (int, int);
+extern int rl_noninc_forward_search_again (int, int);
+extern int rl_noninc_reverse_search_again (int, int);
/* Bindable command used when inserting a matching close character. */
-extern int rl_insert_close PARAMS((int, int));
+extern int rl_insert_close (int, int);
/* Not available unless READLINE_CALLBACKS is defined. */
-extern void rl_callback_handler_install PARAMS((const char *, rl_vcpfunc_t *));
-extern void rl_callback_read_char PARAMS((void));
-extern void rl_callback_handler_remove PARAMS((void));
-extern void rl_callback_sigcleanup PARAMS((void));
+extern void rl_callback_handler_install (const char *, rl_vcpfunc_t *);
+extern void rl_callback_read_char (void);
+extern void rl_callback_handler_remove (void);
+extern void rl_callback_sigcleanup (void);
/* Things for vi mode. Not available unless readline is compiled -DVI_MODE. */
/* VI-mode bindable commands. */
-extern int rl_vi_redo PARAMS((int, int));
-extern int rl_vi_undo PARAMS((int, int));
-extern int rl_vi_yank_arg PARAMS((int, int));
-extern int rl_vi_fetch_history PARAMS((int, int));
-extern int rl_vi_search_again PARAMS((int, int));
-extern int rl_vi_search PARAMS((int, int));
-extern int rl_vi_complete PARAMS((int, int));
-extern int rl_vi_tilde_expand PARAMS((int, int));
-extern int rl_vi_prev_word PARAMS((int, int));
-extern int rl_vi_next_word PARAMS((int, int));
-extern int rl_vi_end_word PARAMS((int, int));
-extern int rl_vi_insert_beg PARAMS((int, int));
-extern int rl_vi_append_mode PARAMS((int, int));
-extern int rl_vi_append_eol PARAMS((int, int));
-extern int rl_vi_eof_maybe PARAMS((int, int));
-extern int rl_vi_insertion_mode PARAMS((int, int));
-extern int rl_vi_insert_mode PARAMS((int, int));
-extern int rl_vi_movement_mode PARAMS((int, int));
-extern int rl_vi_arg_digit PARAMS((int, int));
-extern int rl_vi_change_case PARAMS((int, int));
-extern int rl_vi_put PARAMS((int, int));
-extern int rl_vi_column PARAMS((int, int));
-extern int rl_vi_delete_to PARAMS((int, int));
-extern int rl_vi_change_to PARAMS((int, int));
-extern int rl_vi_yank_to PARAMS((int, int));
-extern int rl_vi_yank_pop PARAMS((int, int));
-extern int rl_vi_rubout PARAMS((int, int));
-extern int rl_vi_delete PARAMS((int, int));
-extern int rl_vi_back_to_indent PARAMS((int, int));
-extern int rl_vi_unix_word_rubout PARAMS((int, int));
-extern int rl_vi_first_print PARAMS((int, int));
-extern int rl_vi_char_search PARAMS((int, int));
-extern int rl_vi_match PARAMS((int, int));
-extern int rl_vi_change_char PARAMS((int, int));
-extern int rl_vi_subst PARAMS((int, int));
-extern int rl_vi_overstrike PARAMS((int, int));
-extern int rl_vi_overstrike_delete PARAMS((int, int));
-extern int rl_vi_replace PARAMS((int, int));
-extern int rl_vi_set_mark PARAMS((int, int));
-extern int rl_vi_goto_mark PARAMS((int, int));
+extern int rl_vi_redo (int, int);
+extern int rl_vi_undo (int, int);
+extern int rl_vi_yank_arg (int, int);
+extern int rl_vi_fetch_history (int, int);
+extern int rl_vi_search_again (int, int);
+extern int rl_vi_search (int, int);
+extern int rl_vi_complete (int, int);
+extern int rl_vi_tilde_expand (int, int);
+extern int rl_vi_prev_word (int, int);
+extern int rl_vi_next_word (int, int);
+extern int rl_vi_end_word (int, int);
+extern int rl_vi_insert_beg (int, int);
+extern int rl_vi_append_mode (int, int);
+extern int rl_vi_append_eol (int, int);
+extern int rl_vi_eof_maybe (int, int);
+extern int rl_vi_insertion_mode (int, int);
+extern int rl_vi_insert_mode (int, int);
+extern int rl_vi_movement_mode (int, int);
+extern int rl_vi_arg_digit (int, int);
+extern int rl_vi_change_case (int, int);
+extern int rl_vi_put (int, int);
+extern int rl_vi_column (int, int);
+extern int rl_vi_delete_to (int, int);
+extern int rl_vi_change_to (int, int);
+extern int rl_vi_yank_to (int, int);
+extern int rl_vi_yank_pop (int, int);
+extern int rl_vi_rubout (int, int);
+extern int rl_vi_delete (int, int);
+extern int rl_vi_back_to_indent (int, int);
+extern int rl_vi_unix_word_rubout (int, int);
+extern int rl_vi_first_print (int, int);
+extern int rl_vi_char_search (int, int);
+extern int rl_vi_match (int, int);
+extern int rl_vi_change_char (int, int);
+extern int rl_vi_subst (int, int);
+extern int rl_vi_overstrike (int, int);
+extern int rl_vi_overstrike_delete (int, int);
+extern int rl_vi_replace (int, int);
+extern int rl_vi_set_mark (int, int);
+extern int rl_vi_goto_mark (int, int);
/* VI-mode utility functions. */
-extern int rl_vi_check PARAMS((void));
-extern int rl_vi_domove PARAMS((int, int *));
-extern int rl_vi_bracktype PARAMS((int));
+extern int rl_vi_check (void);
+extern int rl_vi_domove (int, int *);
+extern int rl_vi_bracktype (int);
-extern void rl_vi_start_inserting PARAMS((int, int, int));
+extern void rl_vi_start_inserting (int, int, int);
/* VI-mode pseudo-bindable commands, used as utility functions. */
-extern int rl_vi_fWord PARAMS((int, int));
-extern int rl_vi_bWord PARAMS((int, int));
-extern int rl_vi_eWord PARAMS((int, int));
-extern int rl_vi_fword PARAMS((int, int));
-extern int rl_vi_bword PARAMS((int, int));
-extern int rl_vi_eword PARAMS((int, int));
+extern int rl_vi_fWord (int, int);
+extern int rl_vi_bWord (int, int);
+extern int rl_vi_eWord (int, int);
+extern int rl_vi_fword (int, int);
+extern int rl_vi_bword (int, int);
+extern int rl_vi_eword (int, int);
/* **************************************************************** */
/* */
@@ -293,114 +294,115 @@ extern int rl_vi_eword PARAMS((int, int));
/* Readline functions. */
/* Read a line of input. Prompt with PROMPT. A NULL PROMPT means none. */
-extern char *readline PARAMS((const char *));
+extern char *readline (const char *);
-extern int rl_set_prompt PARAMS((const char *));
-extern int rl_expand_prompt PARAMS((char *));
+extern int rl_set_prompt (const char *);
+extern int rl_expand_prompt (char *);
-extern int rl_initialize PARAMS((void));
+extern int rl_initialize (void);
/* Undocumented; unused by readline */
-extern int rl_discard_argument PARAMS((void));
+extern int rl_discard_argument (void);
/* Utility functions to bind keys to readline commands. */
-extern int rl_add_defun PARAMS((const char *, rl_command_func_t *, int));
-extern int rl_bind_key PARAMS((int, rl_command_func_t *));
-extern int rl_bind_key_in_map PARAMS((int, rl_command_func_t *, Keymap));
-extern int rl_unbind_key PARAMS((int));
-extern int rl_unbind_key_in_map PARAMS((int, Keymap));
-extern int rl_bind_key_if_unbound PARAMS((int, rl_command_func_t *));
-extern int rl_bind_key_if_unbound_in_map PARAMS((int, rl_command_func_t *, Keymap));
-extern int rl_unbind_function_in_map PARAMS((rl_command_func_t *, Keymap));
-extern int rl_unbind_command_in_map PARAMS((const char *, Keymap));
-extern int rl_bind_keyseq PARAMS((const char *, rl_command_func_t *));
-extern int rl_bind_keyseq_in_map PARAMS((const char *, rl_command_func_t *, Keymap));
-extern int rl_bind_keyseq_if_unbound PARAMS((const char *, rl_command_func_t *));
-extern int rl_bind_keyseq_if_unbound_in_map PARAMS((const char *, rl_command_func_t *, Keymap));
-extern int rl_generic_bind PARAMS((int, const char *, char *, Keymap));
-
-extern char *rl_variable_value PARAMS((const char *));
-extern int rl_variable_bind PARAMS((const char *, const char *));
+extern int rl_add_defun (const char *, rl_command_func_t *, int);
+extern int rl_bind_key (int, rl_command_func_t *);
+extern int rl_bind_key_in_map (int, rl_command_func_t *, Keymap);
+extern int rl_unbind_key (int);
+extern int rl_unbind_key_in_map (int, Keymap);
+extern int rl_bind_key_if_unbound (int, rl_command_func_t *);
+extern int rl_bind_key_if_unbound_in_map (int, rl_command_func_t *, Keymap);
+extern int rl_unbind_function_in_map (rl_command_func_t *, Keymap);
+extern int rl_unbind_command_in_map (const char *, Keymap);
+extern int rl_bind_keyseq (const char *, rl_command_func_t *);
+extern int rl_bind_keyseq_in_map (const char *, rl_command_func_t *, Keymap);
+extern int rl_bind_keyseq_if_unbound (const char *, rl_command_func_t *);
+extern int rl_bind_keyseq_if_unbound_in_map (const char *, rl_command_func_t *, Keymap);
+extern int rl_generic_bind (int, const char *, char *, Keymap);
+
+extern char *rl_variable_value (const char *);
+extern int rl_variable_bind (const char *, const char *);
/* Backwards compatibility, use rl_bind_keyseq_in_map instead. */
-extern int rl_set_key PARAMS((const char *, rl_command_func_t *, Keymap));
+extern int rl_set_key (const char *, rl_command_func_t *, Keymap);
/* Backwards compatibility, use rl_generic_bind instead. */
-extern int rl_macro_bind PARAMS((const char *, const char *, Keymap));
+extern int rl_macro_bind (const char *, const char *, Keymap);
/* Undocumented in the texinfo manual; not really useful to programs. */
-extern int rl_translate_keyseq PARAMS((const char *, char *, int *));
-extern char *rl_untranslate_keyseq PARAMS((int));
+extern int rl_translate_keyseq (const char *, char *, int *);
+extern char *rl_untranslate_keyseq (int);
-extern rl_command_func_t *rl_named_function PARAMS((const char *));
-extern rl_command_func_t *rl_function_of_keyseq PARAMS((const char *, Keymap, int *));
-extern rl_command_func_t *rl_function_of_keyseq_len PARAMS((const char *, size_t, Keymap, int *));
+extern rl_command_func_t *rl_named_function (const char *);
+extern rl_command_func_t *rl_function_of_keyseq (const char *, Keymap, int *);
+extern rl_command_func_t *rl_function_of_keyseq_len (const char *, size_t, Keymap, int *);
+extern int rl_trim_arg_from_keyseq (const char *, size_t, Keymap);
-extern void rl_list_funmap_names PARAMS((void));
-extern char **rl_invoking_keyseqs_in_map PARAMS((rl_command_func_t *, Keymap));
-extern char **rl_invoking_keyseqs PARAMS((rl_command_func_t *));
+extern void rl_list_funmap_names (void);
+extern char **rl_invoking_keyseqs_in_map (rl_command_func_t *, Keymap);
+extern char **rl_invoking_keyseqs (rl_command_func_t *);
-extern void rl_function_dumper PARAMS((int));
-extern void rl_macro_dumper PARAMS((int));
-extern void rl_variable_dumper PARAMS((int));
+extern void rl_function_dumper (int);
+extern void rl_macro_dumper (int);
+extern void rl_variable_dumper (int);
-extern int rl_read_init_file PARAMS((const char *));
-extern int rl_parse_and_bind PARAMS((char *));
+extern int rl_read_init_file (const char *);
+extern int rl_parse_and_bind (char *);
/* Functions for manipulating keymaps. */
-extern Keymap rl_make_bare_keymap PARAMS((void));
-extern int rl_empty_keymap PARAMS((Keymap));
-extern Keymap rl_copy_keymap PARAMS((Keymap));
-extern Keymap rl_make_keymap PARAMS((void));
-extern void rl_discard_keymap PARAMS((Keymap));
-extern void rl_free_keymap PARAMS((Keymap));
+extern Keymap rl_make_bare_keymap (void);
+extern int rl_empty_keymap (Keymap);
+extern Keymap rl_copy_keymap (Keymap);
+extern Keymap rl_make_keymap (void);
+extern void rl_discard_keymap (Keymap);
+extern void rl_free_keymap (Keymap);
-extern Keymap rl_get_keymap_by_name PARAMS((const char *));
-extern char *rl_get_keymap_name PARAMS((Keymap));
-extern void rl_set_keymap PARAMS((Keymap));
-extern Keymap rl_get_keymap PARAMS((void));
+extern Keymap rl_get_keymap_by_name (const char *);
+extern char *rl_get_keymap_name (Keymap);
+extern void rl_set_keymap (Keymap);
+extern Keymap rl_get_keymap (void);
-extern int rl_set_keymap_name PARAMS((const char *, Keymap));
+extern int rl_set_keymap_name (const char *, Keymap);
/* Undocumented; used internally only. */
-extern void rl_set_keymap_from_edit_mode PARAMS((void));
-extern char *rl_get_keymap_name_from_edit_mode PARAMS((void));
+extern void rl_set_keymap_from_edit_mode (void);
+extern char *rl_get_keymap_name_from_edit_mode (void);
/* Functions for manipulating the funmap, which maps command names to functions. */
-extern int rl_add_funmap_entry PARAMS((const char *, rl_command_func_t *));
-extern const char **rl_funmap_names PARAMS((void));
+extern int rl_add_funmap_entry (const char *, rl_command_func_t *);
+extern const char **rl_funmap_names (void);
/* Undocumented, only used internally -- there is only one funmap, and this
function may be called only once. */
-extern void rl_initialize_funmap PARAMS((void));
+extern void rl_initialize_funmap (void);
/* Utility functions for managing keyboard macros. */
-extern void rl_push_macro_input PARAMS((char *));
+extern void rl_push_macro_input (char *);
/* Functions for undoing, from undo.c */
-extern void rl_add_undo PARAMS((enum undo_code, int, int, char *));
-extern void rl_free_undo_list PARAMS((void));
-extern int rl_do_undo PARAMS((void));
-extern int rl_begin_undo_group PARAMS((void));
-extern int rl_end_undo_group PARAMS((void));
-extern int rl_modifying PARAMS((int, int));
+extern void rl_add_undo (enum undo_code, int, int, char *);
+extern void rl_free_undo_list (void);
+extern int rl_do_undo (void);
+extern int rl_begin_undo_group (void);
+extern int rl_end_undo_group (void);
+extern int rl_modifying (int, int);
/* Functions for redisplay. */
-extern void rl_redisplay PARAMS((void));
-extern int rl_on_new_line PARAMS((void));
-extern int rl_on_new_line_with_prompt PARAMS((void));
-extern int rl_forced_update_display PARAMS((void));
-extern int rl_clear_visible_line PARAMS((void));
-extern int rl_clear_message PARAMS((void));
-extern int rl_reset_line_state PARAMS((void));
-extern int rl_crlf PARAMS((void));
+extern void rl_redisplay (void);
+extern int rl_on_new_line (void);
+extern int rl_on_new_line_with_prompt (void);
+extern int rl_forced_update_display (void);
+extern int rl_clear_visible_line (void);
+extern int rl_clear_message (void);
+extern int rl_reset_line_state (void);
+extern int rl_crlf (void);
/* Functions to manage the mark and region, especially the notion of an
active mark and an active region. */
-extern void rl_keep_mark_active PARAMS((void));
+extern void rl_keep_mark_active (void);
-extern void rl_activate_mark PARAMS((void));
-extern void rl_deactivate_mark PARAMS((void));
-extern int rl_mark_active_p PARAMS((void));
+extern void rl_activate_mark (void);
+extern void rl_deactivate_mark (void);
+extern int rl_mark_active_p (void);
#if defined (USE_VARARGS) && defined (PREFER_STDARG)
extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
@@ -408,99 +410,106 @@ extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1,
extern int rl_message ();
#endif
-extern int rl_show_char PARAMS((int));
+extern int rl_show_char (int);
/* Undocumented in texinfo manual. */
-extern int rl_character_len PARAMS((int, int));
-extern void rl_redraw_prompt_last_line PARAMS((void));
+extern int rl_character_len (int, int);
+extern void rl_redraw_prompt_last_line (void);
/* Save and restore internal prompt redisplay information. */
-extern void rl_save_prompt PARAMS((void));
-extern void rl_restore_prompt PARAMS((void));
+extern void rl_save_prompt (void);
+extern void rl_restore_prompt (void);
/* Modifying text. */
-extern void rl_replace_line PARAMS((const char *, int));
-extern int rl_insert_text PARAMS((const char *));
-extern int rl_delete_text PARAMS((int, int));
-extern int rl_kill_text PARAMS((int, int));
-extern char *rl_copy_text PARAMS((int, int));
+extern void rl_replace_line (const char *, int);
+extern int rl_insert_text (const char *);
+extern int rl_delete_text (int, int);
+extern int rl_kill_text (int, int);
+extern char *rl_copy_text (int, int);
/* Terminal and tty mode management. */
-extern void rl_prep_terminal PARAMS((int));
-extern void rl_deprep_terminal PARAMS((void));
-extern void rl_tty_set_default_bindings PARAMS((Keymap));
-extern void rl_tty_unset_default_bindings PARAMS((Keymap));
+extern void rl_prep_terminal (int);
+extern void rl_deprep_terminal (void);
+extern void rl_tty_set_default_bindings (Keymap);
+extern void rl_tty_unset_default_bindings (Keymap);
-extern int rl_tty_set_echoing PARAMS((int));
-extern int rl_reset_terminal PARAMS((const char *));
-extern void rl_resize_terminal PARAMS((void));
-extern void rl_set_screen_size PARAMS((int, int));
-extern void rl_get_screen_size PARAMS((int *, int *));
-extern void rl_reset_screen_size PARAMS((void));
+extern int rl_tty_set_echoing (int);
+extern int rl_reset_terminal (const char *);
+extern void rl_resize_terminal (void);
+extern void rl_set_screen_size (int, int);
+extern void rl_get_screen_size (int *, int *);
+extern void rl_reset_screen_size (void);
-extern char *rl_get_termcap PARAMS((const char *));
+extern char *rl_get_termcap (const char *);
/* Functions for character input. */
-extern int rl_stuff_char PARAMS((int));
-extern int rl_execute_next PARAMS((int));
-extern int rl_clear_pending_input PARAMS((void));
-extern int rl_read_key PARAMS((void));
-extern int rl_getc PARAMS((FILE *));
-extern int rl_set_keyboard_input_timeout PARAMS((int));
+extern int rl_stuff_char (int);
+extern int rl_execute_next (int);
+extern int rl_clear_pending_input (void);
+extern int rl_read_key (void);
+extern int rl_getc (FILE *);
+extern int rl_set_keyboard_input_timeout (int);
+
+/* Functions to set and reset timeouts. */
+extern int rl_set_timeout (unsigned int, unsigned int);
+extern int rl_timeout_remaining (unsigned int *, unsigned int *);
+
+#undef rl_clear_timeout
+#define rl_clear_timeout() rl_set_timeout (0, 0)
/* `Public' utility functions . */
-extern void rl_extend_line_buffer PARAMS((int));
-extern int rl_ding PARAMS((void));
-extern int rl_alphabetic PARAMS((int));
-extern void rl_free PARAMS((void *));
+extern void rl_extend_line_buffer (int);
+extern int rl_ding (void);
+extern int rl_alphabetic (int);
+extern void rl_free (void *);
/* Readline signal handling, from signals.c */
-extern int rl_set_signals PARAMS((void));
-extern int rl_clear_signals PARAMS((void));
-extern void rl_cleanup_after_signal PARAMS((void));
-extern void rl_reset_after_signal PARAMS((void));
-extern void rl_free_line_state PARAMS((void));
+extern int rl_set_signals (void);
+extern int rl_clear_signals (void);
+extern void rl_cleanup_after_signal (void);
+extern void rl_reset_after_signal (void);
+extern void rl_free_line_state (void);
-extern int rl_pending_signal PARAMS((void));
-extern void rl_check_signals PARAMS((void));
+extern int rl_pending_signal (void);
+extern void rl_check_signals (void);
-extern void rl_echo_signal_char PARAMS((int));
+extern void rl_echo_signal_char (int);
-extern int rl_set_paren_blink_timeout PARAMS((int));
+extern int rl_set_paren_blink_timeout (int);
/* History management functions. */
-extern void rl_clear_history PARAMS((void));
+extern void rl_clear_history (void);
/* Undocumented. */
-extern int rl_maybe_save_line PARAMS((void));
-extern int rl_maybe_unsave_line PARAMS((void));
-extern int rl_maybe_replace_line PARAMS((void));
+extern int rl_maybe_save_line (void);
+extern int rl_maybe_unsave_line (void);
+extern int rl_maybe_replace_line (void);
/* Completion functions. */
-extern int rl_complete_internal PARAMS((int));
-extern void rl_display_match_list PARAMS((char **, int, int));
+extern int rl_complete_internal (int);
+extern void rl_display_match_list (char **, int, int);
-extern char **rl_completion_matches PARAMS((const char *, rl_compentry_func_t *));
-extern char *rl_username_completion_function PARAMS((const char *, int));
-extern char *rl_filename_completion_function PARAMS((const char *, int));
+extern char **rl_completion_matches (const char *, rl_compentry_func_t *);
+extern char *rl_username_completion_function (const char *, int);
+extern char *rl_filename_completion_function (const char *, int);
-extern int rl_completion_mode PARAMS((rl_command_func_t *));
+extern int rl_completion_mode (rl_command_func_t *);
#if 0
/* Backwards compatibility (compat.c). These will go away sometime. */
-extern void free_undo_list PARAMS((void));
-extern int maybe_save_line PARAMS((void));
-extern int maybe_unsave_line PARAMS((void));
-extern int maybe_replace_line PARAMS((void));
-
-extern int ding PARAMS((void));
-extern int alphabetic PARAMS((int));
-extern int crlf PARAMS((void));
-
-extern char **completion_matches PARAMS((char *, rl_compentry_func_t *));
-extern char *username_completion_function PARAMS((const char *, int));
-extern char *filename_completion_function PARAMS((const char *, int));
+extern void free_undo_list (void);
+extern int maybe_save_line (void);
+extern int maybe_unsave_line (void);
+extern int maybe_replace_line (void);
+
+extern int ding (void);
+extern int alphabetic (int);
+extern int crlf (void);
+
+extern char **completion_matches (char *, rl_compentry_func_t *);
+extern char *username_completion_function (const char *, int);
+extern char *filename_completion_function (const char *, int);
#endif
/* **************************************************************** */
@@ -553,6 +562,10 @@ extern int rl_mark;
line and should return it. */
extern int rl_done;
+/* Flag to indicate that readline has read an EOF character or read has
+ returned 0 or error, and is returning a NULL line as a result. */
+extern int rl_eof_found;
+
/* If set to a character value, that will be the next keystroke read. */
extern int rl_pending_input;
@@ -599,6 +612,8 @@ extern rl_hook_func_t *rl_event_hook;
/* The address of a function to call if a read is interrupted by a signal. */
extern rl_hook_func_t *rl_signal_event_hook;
+extern rl_hook_func_t *rl_timeout_event_hook;
+
/* The address of a function to call if Readline needs to know whether or not
there is data available from the current input source. */
extern rl_hook_func_t *rl_input_available_hook;
@@ -689,7 +704,7 @@ extern const char *rl_basic_word_break_characters;
/* The list of characters that signal a break between words for
rl_complete_internal. The default list is the contents of
rl_basic_word_break_characters. */
-extern /*const*/ char *rl_completer_word_break_characters;
+extern const char *rl_completer_word_break_characters;
/* Hook function to allow an application to set the completion word
break characters before readline breaks up the line. Allows
@@ -906,6 +921,8 @@ extern int rl_persistent_signal_handlers;
#define RL_STATE_REDISPLAYING 0x1000000 /* updating terminal display */
#define RL_STATE_DONE 0x2000000 /* done; accepted line */
+#define RL_STATE_TIMEOUT 0x4000000 /* done; timed out */
+#define RL_STATE_EOF 0x8000000 /* done; got eof on read */
#define RL_SETSTATE(x) (rl_readline_state |= (x))
#define RL_UNSETSTATE(x) (rl_readline_state &= ~(x))
@@ -949,7 +966,7 @@ struct readline_state {
rl_compentry_func_t *menuentryfunc;
rl_compignore_func_t *ignorefunc;
rl_completion_func_t *attemptfunc;
- char *wordbreakchars;
+ const char *wordbreakchars;
/* options state */
@@ -959,8 +976,8 @@ struct readline_state {
char reserved[64];
};
-extern int rl_save_state PARAMS((struct readline_state *));
-extern int rl_restore_state PARAMS((struct readline_state *));
+extern int rl_save_state (struct readline_state *);
+extern int rl_restore_state (struct readline_state *);
#ifdef __cplusplus
}
diff --git a/lib/readline/rldefs.h b/lib/readline/rldefs.h
index dab1beba..98577a64 100644
--- a/lib/readline/rldefs.h
+++ b/lib/readline/rldefs.h
@@ -2,7 +2,7 @@
for readline. This should be included after any files that define
system-specific constants like _POSIX_VERSION or USG. */
-/* Copyright (C) 1987-2011 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -79,14 +79,14 @@ extern char *strchr (), *strrchr ();
#define _rl_stricmp strcasecmp
#define _rl_strnicmp strncasecmp
#else
-extern int _rl_stricmp PARAMS((const char *, const char *));
-extern int _rl_strnicmp PARAMS((const char *, const char *, int));
+extern int _rl_stricmp (const char *, const char *);
+extern int _rl_strnicmp (const char *, const char *, int);
#endif
#if defined (HAVE_STRPBRK) && !defined (HAVE_MULTIBYTE)
# define _rl_strpbrk(a,b) strpbrk((a),(b))
#else
-extern char *_rl_strpbrk PARAMS((const char *, const char *));
+extern char *_rl_strpbrk (const char *, const char *);
#endif
#if !defined (emacs_mode)
diff --git a/lib/readline/rlmbutil.h b/lib/readline/rlmbutil.h
index 4d3e9070..d9060572 100644
--- a/lib/readline/rlmbutil.h
+++ b/lib/readline/rlmbutil.h
@@ -1,6 +1,6 @@
/* rlmbutil.h -- utility functions for multibyte characters. */
-/* Copyright (C) 2001-2015 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -82,6 +82,19 @@
/************************************************/
/*
+ * wchar_t doesn't work for 32-bit values on Windows using MSVC
+ */
+#ifdef WCHAR_T_BROKEN
+# define WCHAR_T char32_t
+# define MBRTOWC mbrtoc32
+# define WCRTOMB c32rtomb
+#else /* normal systems */
+# define WCHAR_T wchar_t
+# define MBRTOWC mbrtowc
+# define WCRTOMB wcrtomb
+#endif
+
+/*
* Flags for _rl_find_prev_mbchar and _rl_find_next_mbchar:
*
* MB_FIND_ANY find any multibyte character
@@ -91,22 +104,22 @@
#define MB_FIND_ANY 0x00
#define MB_FIND_NONZERO 0x01
-extern int _rl_find_prev_mbchar PARAMS((char *, int, int));
-extern int _rl_find_next_mbchar PARAMS((char *, int, int, int));
+extern int _rl_find_prev_mbchar (char *, int, int);
+extern int _rl_find_next_mbchar (char *, int, int, int);
#ifdef HANDLE_MULTIBYTE
-extern int _rl_compare_chars PARAMS((char *, int, mbstate_t *, char *, int, mbstate_t *));
-extern int _rl_get_char_len PARAMS((char *, mbstate_t *));
-extern int _rl_adjust_point PARAMS((char *, int, mbstate_t *));
+extern int _rl_compare_chars (char *, int, mbstate_t *, char *, int, mbstate_t *);
+extern int _rl_get_char_len (char *, mbstate_t *);
+extern int _rl_adjust_point (char *, int, mbstate_t *);
-extern int _rl_read_mbchar PARAMS((char *, int));
-extern int _rl_read_mbstring PARAMS((int, char *, int));
+extern int _rl_read_mbchar (char *, int);
+extern int _rl_read_mbstring (int, char *, int);
-extern int _rl_is_mbchar_matched PARAMS((char *, int, int, char *, int));
+extern int _rl_is_mbchar_matched (char *, int, int, char *, int);
-extern wchar_t _rl_char_value PARAMS((char *, int));
-extern int _rl_walphabetic PARAMS((wchar_t));
+extern WCHAR_T _rl_char_value (char *, int);
+extern int _rl_walphabetic (WCHAR_T);
#define _rl_to_wupper(wc) (iswlower (wc) ? towupper (wc) : (wc))
#define _rl_to_wlower(wc) (iswupper (wc) ? towlower (wc) : (wc))
@@ -126,8 +139,7 @@ extern int _rl_walphabetic PARAMS((wchar_t));
/* Try and shortcut the printable ascii characters to cut down the number of
calls to a libc wcwidth() */
static inline int
-_rl_wcwidth (wc)
- wchar_t wc;
+_rl_wcwidth (WCHAR_T wc)
{
switch (wc)
{
diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h
index 23ab2d8c..d87d07a7 100644
--- a/lib/readline/rlprivate.h
+++ b/lib/readline/rlprivate.h
@@ -1,10 +1,10 @@
/* rlprivate.h -- functions and variables global to the readline library,
but not intended for use by applications. */
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
- for reading lines of text with interactive input and history editing.
+ for reading lines of text with interactive input and history editing.
Readline is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -78,7 +78,7 @@ typedef struct __rl_search_context
int search_string_size;
char **lines;
- char *allocated_line;
+ char *allocated_line;
int hlen;
int hindex;
@@ -169,16 +169,16 @@ typedef struct __rl_vimotion_context
/* fill in more as needed */
/* `Generic' callback data and functions */
-typedef struct __rl_callback_generic_arg
+typedef struct __rl_callback_generic_arg
{
int count;
int i1, i2;
/* add here as needed */
} _rl_callback_generic_arg;
-typedef int _rl_callback_func_t PARAMS((_rl_callback_generic_arg *));
+typedef int _rl_callback_func_t (_rl_callback_generic_arg *);
-typedef void _rl_sigcleanup_func_t PARAMS((int, void *));
+typedef void _rl_sigcleanup_func_t (int, void *);
/*************************************************************************
* *
@@ -221,16 +221,16 @@ extern int rl_blink_matching_paren;
*************************************************************************/
/* kill.c */
-extern int rl_set_retained_kills PARAMS((int));
+extern int rl_set_retained_kills (int);
/* terminal.c */
-extern void _rl_set_screen_size PARAMS((int, int));
+extern void _rl_set_screen_size (int, int);
/* undo.c */
-extern int _rl_fix_last_undo_of_type PARAMS((int, int, int));
+extern int _rl_fix_last_undo_of_type (int, int, int);
/* util.c */
-extern char *_rl_savestring PARAMS((const char *));
+extern char *_rl_savestring (const char *);
/*************************************************************************
* *
@@ -250,66 +250,73 @@ extern char *_rl_savestring PARAMS((const char *));
#if defined(READLINE_CALLBACKS)
/* readline.c */
-extern void readline_internal_setup PARAMS((void));
-extern char *readline_internal_teardown PARAMS((int));
-extern int readline_internal_char PARAMS((void));
+extern void readline_internal_setup (void);
+extern char *readline_internal_teardown (int);
+extern int readline_internal_char (void);
-extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc PARAMS((void));
-extern void _rl_keyseq_cxt_dispose PARAMS((_rl_keyseq_cxt *));
-extern void _rl_keyseq_chain_dispose PARAMS((void));
+extern _rl_keyseq_cxt *_rl_keyseq_cxt_alloc (void);
+extern void _rl_keyseq_cxt_dispose (_rl_keyseq_cxt *);
+extern void _rl_keyseq_chain_dispose (void);
+
+extern int _rl_dispatch_callback (_rl_keyseq_cxt *);
-extern int _rl_dispatch_callback PARAMS((_rl_keyseq_cxt *));
-
/* callback.c */
-extern _rl_callback_generic_arg *_rl_callback_data_alloc PARAMS((int));
-extern void _rl_callback_data_dispose PARAMS((_rl_callback_generic_arg *));
+extern _rl_callback_generic_arg *_rl_callback_data_alloc (int);
+extern void _rl_callback_data_dispose (_rl_callback_generic_arg *);
#endif /* READLINE_CALLBACKS */
/* bind.c */
-extern char *_rl_untranslate_macro_value PARAMS((char *, int));
+extern char *_rl_untranslate_macro_value (char *, int);
/* complete.c */
-extern void _rl_reset_completion_state PARAMS((void));
-extern char _rl_find_completion_word PARAMS((int *, int *));
-extern void _rl_free_match_list PARAMS((char **));
+extern void _rl_reset_completion_state (void);
+extern char _rl_find_completion_word (int *, int *);
+extern void _rl_free_match_list (char **);
/* display.c */
-extern char *_rl_strip_prompt PARAMS((char *));
-extern void _rl_reset_prompt PARAMS((void));
-extern void _rl_move_vert PARAMS((int));
-extern void _rl_save_prompt PARAMS((void));
-extern void _rl_restore_prompt PARAMS((void));
-extern char *_rl_make_prompt_for_search PARAMS((int));
-extern void _rl_erase_at_end_of_line PARAMS((int));
-extern void _rl_clear_to_eol PARAMS((int));
-extern void _rl_clear_screen PARAMS((int));
-extern void _rl_update_final PARAMS((void));
-extern void _rl_optimize_redisplay PARAMS((void));
-extern void _rl_redisplay_after_sigwinch PARAMS((void));
-extern void _rl_clean_up_for_exit PARAMS((void));
-extern void _rl_erase_entire_line PARAMS((void));
-extern int _rl_current_display_line PARAMS((void));
-extern void _rl_refresh_line PARAMS((void));
+extern char *_rl_strip_prompt (char *);
+extern void _rl_reset_prompt (void);
+extern void _rl_move_vert (int);
+extern void _rl_save_prompt (void);
+extern void _rl_restore_prompt (void);
+extern char *_rl_make_prompt_for_search (int);
+extern void _rl_erase_at_end_of_line (int);
+extern void _rl_clear_to_eol (int);
+extern void _rl_clear_screen (int);
+extern void _rl_update_final (void);
+extern void _rl_optimize_redisplay (void);
+extern void _rl_redisplay_after_sigwinch (void);
+extern void _rl_clean_up_for_exit (void);
+extern void _rl_erase_entire_line (void);
+extern int _rl_current_display_line (void);
+extern void _rl_refresh_line (void);
/* input.c */
-extern int _rl_any_typein PARAMS((void));
-extern int _rl_input_available PARAMS((void));
-extern int _rl_nchars_available PARAMS((void));
-extern int _rl_input_queued PARAMS((int));
-extern void _rl_insert_typein PARAMS((int));
-extern int _rl_unget_char PARAMS((int));
-extern int _rl_pushed_input_available PARAMS((void));
+extern int _rl_any_typein (void);
+extern int _rl_input_available (void);
+extern int _rl_nchars_available (void);
+extern int _rl_input_queued (int);
+extern void _rl_insert_typein (int);
+extern int _rl_unget_char (int);
+extern int _rl_pushed_input_available (void);
+
+extern int _rl_timeout_init (void);
+extern int _rl_timeout_handle_sigalrm (void);
+#if defined (_POSIXSELECT_H_)
+/* use as a sentinel for fd_set, struct timeval, and sigset_t definitions */
+extern int _rl_timeout_select (int, fd_set *, fd_set *, fd_set *, const struct timeval *, const sigset_t *);
+#endif
/* isearch.c */
-extern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int));
-extern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int));
+extern _rl_search_cxt *_rl_scxt_alloc (int, int);
+extern void _rl_scxt_dispose (_rl_search_cxt *, int);
-extern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int));
-extern int _rl_isearch_callback PARAMS((_rl_search_cxt *));
-extern int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int));
+extern int _rl_isearch_dispatch (_rl_search_cxt *, int);
+extern int _rl_isearch_callback (_rl_search_cxt *);
+extern int _rl_isearch_cleanup (_rl_search_cxt *, int);
-extern int _rl_search_getchar PARAMS((_rl_search_cxt *));
+extern int _rl_search_getchar (_rl_search_cxt *);
/* kill.c */
#ifndef BRACKETED_PASTE_DEFAULT
@@ -325,110 +332,117 @@ extern int _rl_search_getchar PARAMS((_rl_search_cxt *));
#define BRACK_PASTE_INIT "\033[?2004h"
#define BRACK_PASTE_FINI "\033[?2004l\r"
-extern int _rl_read_bracketed_paste_prefix PARAMS((int));
-extern char *_rl_bracketed_text PARAMS((size_t *));
-extern int _rl_bracketed_read_key PARAMS((void));
-extern int _rl_bracketed_read_mbstring PARAMS((char *, int));
+extern int _rl_read_bracketed_paste_prefix (int);
+extern char *_rl_bracketed_text (size_t *);
+extern int _rl_bracketed_read_key (void);
+extern int _rl_bracketed_read_mbstring (char *, int);
/* macro.c */
-extern void _rl_with_macro_input PARAMS((char *));
-extern int _rl_peek_macro_key PARAMS((void));
-extern int _rl_next_macro_key PARAMS((void));
-extern int _rl_prev_macro_key PARAMS((void));
-extern void _rl_push_executing_macro PARAMS((void));
-extern void _rl_pop_executing_macro PARAMS((void));
-extern void _rl_add_macro_char PARAMS((int));
-extern void _rl_kill_kbd_macro PARAMS((void));
+extern void _rl_with_macro_input (char *);
+extern int _rl_peek_macro_key (void);
+extern int _rl_next_macro_key (void);
+extern int _rl_prev_macro_key (void);
+extern void _rl_push_executing_macro (void);
+extern void _rl_pop_executing_macro (void);
+extern void _rl_add_macro_char (int);
+extern void _rl_kill_kbd_macro (void);
/* misc.c */
-extern int _rl_arg_overflow PARAMS((void));
-extern void _rl_arg_init PARAMS((void));
-extern int _rl_arg_getchar PARAMS((void));
-extern int _rl_arg_callback PARAMS((_rl_arg_cxt));
-extern void _rl_reset_argument PARAMS((void));
+extern int _rl_arg_overflow (void);
+extern void _rl_arg_init (void);
+extern int _rl_arg_getchar (void);
+extern int _rl_arg_callback (_rl_arg_cxt);
+extern void _rl_reset_argument (void);
-extern void _rl_start_using_history PARAMS((void));
-extern int _rl_free_saved_history_line PARAMS((void));
-extern void _rl_set_insert_mode PARAMS((int, int));
+extern void _rl_start_using_history (void);
+extern int _rl_free_saved_history_line (void);
+extern void _rl_set_insert_mode (int, int);
-extern void _rl_revert_previous_lines PARAMS((void));
-extern void _rl_revert_all_lines PARAMS((void));
+extern void _rl_revert_previous_lines (void);
+extern void _rl_revert_all_lines (void);
/* nls.c */
-extern char *_rl_init_locale PARAMS((void));
-extern int _rl_init_eightbit PARAMS((void));
+extern char *_rl_init_locale (void);
+extern int _rl_init_eightbit (void);
+extern void _rl_reset_locale (void);
/* parens.c */
-extern void _rl_enable_paren_matching PARAMS((int));
+extern void _rl_enable_paren_matching (int);
/* readline.c */
-extern void _rl_init_line_state PARAMS((void));
-extern void _rl_set_the_line PARAMS((void));
-extern int _rl_dispatch PARAMS((int, Keymap));
-extern int _rl_dispatch_subseq PARAMS((int, Keymap, int));
-extern void _rl_internal_char_cleanup PARAMS((void));
+extern void _rl_init_line_state (void);
+extern void _rl_set_the_line (void);
+extern int _rl_dispatch (int, Keymap);
+extern int _rl_dispatch_subseq (int, Keymap, int);
+extern void _rl_internal_char_cleanup (void);
+
+extern void _rl_init_executing_keyseq (void);
+extern void _rl_term_executing_keyseq (void);
+extern void _rl_end_executing_keyseq (void);
+extern void _rl_add_executing_keyseq (int);
+extern void _rl_del_executing_keyseq (void);
-extern void _rl_init_executing_keyseq PARAMS((void));
-extern void _rl_term_executing_keyseq PARAMS((void));
-extern void _rl_end_executing_keyseq PARAMS((void));
-extern void _rl_add_executing_keyseq PARAMS((int));
+extern rl_command_func_t *_rl_executing_func;
/* rltty.c */
-extern int _rl_disable_tty_signals PARAMS((void));
-extern int _rl_restore_tty_signals PARAMS((void));
+extern int _rl_disable_tty_signals (void);
+extern int _rl_restore_tty_signals (void);
/* search.c */
-extern int _rl_nsearch_callback PARAMS((_rl_search_cxt *));
-extern int _rl_nsearch_cleanup PARAMS((_rl_search_cxt *, int));
+extern int _rl_nsearch_callback (_rl_search_cxt *);
+extern int _rl_nsearch_cleanup (_rl_search_cxt *, int);
/* signals.c */
-extern void _rl_signal_handler PARAMS((int));
+extern void _rl_signal_handler (int);
-extern void _rl_block_sigint PARAMS((void));
-extern void _rl_release_sigint PARAMS((void));
-extern void _rl_block_sigwinch PARAMS((void));
-extern void _rl_release_sigwinch PARAMS((void));
+extern void _rl_block_sigint (void);
+extern void _rl_release_sigint (void);
+extern void _rl_block_sigwinch (void);
+extern void _rl_release_sigwinch (void);
/* terminal.c */
-extern void _rl_get_screen_size PARAMS((int, int));
-extern void _rl_sigwinch_resize_terminal PARAMS((void));
-extern int _rl_init_terminal_io PARAMS((const char *));
+extern void _rl_get_screen_size (int, int);
+extern void _rl_sigwinch_resize_terminal (void);
+extern int _rl_init_terminal_io (const char *);
#ifdef _MINIX
-extern void _rl_output_character_function PARAMS((int));
+extern void _rl_output_character_function (int);
#else
-extern int _rl_output_character_function PARAMS((int));
+extern int _rl_output_character_function (int);
#endif
-extern void _rl_cr PARAMS((void));
-extern void _rl_output_some_chars PARAMS((const char *, int));
-extern int _rl_backspace PARAMS((int));
-extern void _rl_enable_meta_key PARAMS((void));
-extern void _rl_disable_meta_key PARAMS((void));
-extern void _rl_control_keypad PARAMS((int));
-extern void _rl_set_cursor PARAMS((int, int));
-extern void _rl_standout_on PARAMS((void));
-extern void _rl_standout_off PARAMS((void));
+extern void _rl_cr (void);
+extern void _rl_output_some_chars (const char *, int);
+extern int _rl_backspace (int);
+extern void _rl_enable_meta_key (void);
+extern void _rl_disable_meta_key (void);
+extern void _rl_control_keypad (int);
+extern void _rl_set_cursor (int, int);
+extern void _rl_standout_on (void);
+extern void _rl_standout_off (void);
+extern int _rl_reset_region_color (int, const char *);
+extern void _rl_region_color_on (void);
+extern void _rl_region_color_off (void);
/* text.c */
-extern void _rl_fix_point PARAMS((int));
-extern void _rl_fix_mark PARAMS((void));
-extern int _rl_replace_text PARAMS((const char *, int, int));
-extern int _rl_forward_char_internal PARAMS((int));
-extern int _rl_backward_char_internal PARAMS((int));
-extern int _rl_insert_char PARAMS((int, int));
-extern int _rl_overwrite_char PARAMS((int, int));
-extern int _rl_overwrite_rubout PARAMS((int, int));
-extern int _rl_rubout_char PARAMS((int, int));
+extern void _rl_fix_point (int);
+extern void _rl_fix_mark (void);
+extern int _rl_replace_text (const char *, int, int);
+extern int _rl_forward_char_internal (int);
+extern int _rl_backward_char_internal (int);
+extern int _rl_insert_char (int, int);
+extern int _rl_overwrite_char (int, int);
+extern int _rl_overwrite_rubout (int, int);
+extern int _rl_rubout_char (int, int);
#if defined (HANDLE_MULTIBYTE)
-extern int _rl_char_search_internal PARAMS((int, int, char *, int));
+extern int _rl_char_search_internal (int, int, char *, int);
#else
-extern int _rl_char_search_internal PARAMS((int, int, int));
+extern int _rl_char_search_internal (int, int, int);
#endif
-extern int _rl_set_mark_at_pos PARAMS((int));
+extern int _rl_set_mark_at_pos (int);
/* undo.c */
-extern UNDO_LIST *_rl_copy_undo_entry PARAMS((UNDO_LIST *));
-extern UNDO_LIST *_rl_copy_undo_list PARAMS((UNDO_LIST *));
-extern void _rl_free_undo_list PARAMS((UNDO_LIST *));
+extern UNDO_LIST *_rl_copy_undo_entry (UNDO_LIST *);
+extern UNDO_LIST *_rl_copy_undo_list (UNDO_LIST *);
+extern void _rl_free_undo_list (UNDO_LIST *);
/* util.c */
#if defined (USE_VARARGS) && defined (PREFER_STDARG)
@@ -440,31 +454,37 @@ extern void _rl_ttymsg ();
extern void _rl_errmsg ();
extern void _rl_trace ();
#endif
-extern void _rl_audit_tty PARAMS((char *));
-
-extern int _rl_tropen PARAMS((void));
-
-extern int _rl_abort_internal PARAMS((void));
-extern int _rl_null_function PARAMS((int, int));
-extern char *_rl_strindex PARAMS((const char *, const char *));
-extern int _rl_qsort_string_compare PARAMS((char **, char **));
-extern int (_rl_uppercase_p) PARAMS((int));
-extern int (_rl_lowercase_p) PARAMS((int));
-extern int (_rl_pure_alphabetic) PARAMS((int));
-extern int (_rl_digit_p) PARAMS((int));
-extern int (_rl_to_lower) PARAMS((int));
-extern int (_rl_to_upper) PARAMS((int));
-extern int (_rl_digit_value) PARAMS((int));
+extern void _rl_audit_tty (char *);
+
+extern int _rl_tropen (void);
+
+extern int _rl_abort_internal (void);
+extern int _rl_null_function (int, int);
+extern char *_rl_strindex (const char *, const char *);
+extern int _rl_qsort_string_compare (char **, char **);
+extern int (_rl_uppercase_p) (int);
+extern int (_rl_lowercase_p) (int);
+extern int (_rl_pure_alphabetic) (int);
+extern int (_rl_digit_p) (int);
+extern int (_rl_to_lower) (int);
+extern int (_rl_to_upper) (int);
+extern int (_rl_digit_value) (int);
/* vi_mode.c */
-extern void _rl_vi_initialize_line PARAMS((void));
-extern void _rl_vi_reset_last PARAMS((void));
-extern void _rl_vi_set_last PARAMS((int, int, int));
-extern int _rl_vi_textmod_command PARAMS((int));
-extern int _rl_vi_motion_command PARAMS((int));
-extern void _rl_vi_done_inserting PARAMS((void));
-extern int _rl_vi_domove_callback PARAMS((_rl_vimotion_cxt *));
-extern int _rl_vi_domove_motion_cleanup PARAMS((int, _rl_vimotion_cxt *));
+extern void _rl_vi_initialize_line (void);
+extern void _rl_vi_reset_last (void);
+extern void _rl_vi_set_last (int, int, int);
+extern int _rl_vi_textmod_command (int);
+extern int _rl_vi_motion_command (int);
+extern void _rl_vi_done_inserting (void);
+extern int _rl_vi_domove_callback (_rl_vimotion_cxt *);
+extern int _rl_vi_domove_motion_cleanup (int, _rl_vimotion_cxt *);
+
+/* Use HS_HISTORY_VERSION as the sentinel to see if we've included history.h
+ and so can use HIST_ENTRY */
+#if defined (HS_HISTORY_VERSION)
+extern void _rl_free_history_entry (HIST_ENTRY *);
+#endif
/*************************************************************************
* Undocumented private variables *
@@ -537,6 +557,8 @@ extern int _rl_echo_control_chars;
extern int _rl_show_mode_in_prompt;
extern int _rl_enable_bracketed_paste;
extern int _rl_enable_active_region;
+extern char *_rl_active_region_start_color;
+extern char *_rl_active_region_end_color;
extern char *_rl_comment_begin;
extern unsigned char _rl_parsing_conditionalized_out;
extern Keymap _rl_keymap;
@@ -544,7 +566,6 @@ extern FILE *_rl_in_stream;
extern FILE *_rl_out_stream;
extern int _rl_last_command_was_kill;
extern int _rl_eof_char;
-extern int _rl_eof_found;
extern procenv_t _rl_top_level;
extern _rl_keyseq_cxt *_rl_kscxt;
extern int _rl_keyseq_timeout;
@@ -555,6 +576,7 @@ extern rl_hook_func_t *_rl_internal_startup_hook;
/* search.c */
extern _rl_search_cxt *_rl_nscxt;
+extern int _rl_history_search_pos;
/* signals.c */
extern int volatile _rl_caught_signal;
@@ -602,4 +624,10 @@ extern int _rl_vi_last_command;
extern int _rl_vi_redoing;
extern _rl_vimotion_cxt *_rl_vimvcxt;
+/* Use HS_HISTORY_VERSION as the sentinel to see if we've included history.h
+ and so can use HIST_ENTRY */
+#if defined (HS_HISTORY_VERSION)
+extern HIST_ENTRY *_rl_saved_line_for_history;
+#endif
+
#endif /* _RL_PRIVATE_H_ */
diff --git a/lib/readline/rlshell.h b/lib/readline/rlshell.h
index 3e17d8bc..6055b144 100644
--- a/lib/readline/rlshell.h
+++ b/lib/readline/rlshell.h
@@ -1,6 +1,6 @@
/* rlshell.h -- utility functions normally provided by bash. */
-/* Copyright (C) 1999-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -24,10 +24,10 @@
#include "rlstdc.h"
-extern char *sh_single_quote PARAMS((char *));
-extern void sh_set_lines_and_columns PARAMS((int, int));
-extern char *sh_get_env_value PARAMS((const char *));
-extern char *sh_get_home_dir PARAMS((void));
-extern int sh_unset_nodelay_mode PARAMS((int));
+extern char *sh_single_quote (char *);
+extern void sh_set_lines_and_columns (int, int);
+extern char *sh_get_env_value (const char *);
+extern char *sh_get_home_dir (void);
+extern int sh_unset_nodelay_mode (int);
#endif /* _RL_SHELL_H_ */
diff --git a/lib/readline/rltty.c b/lib/readline/rltty.c
index d0cd5727..882a3d46 100644
--- a/lib/readline/rltty.c
+++ b/lib/readline/rltty.c
@@ -1,7 +1,7 @@
/* rltty.c -- functions to prepare and restore the terminal for readline's
use. */
-/* Copyright (C) 1992-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -52,7 +52,7 @@ extern int errno;
rl_vintfunc_t *rl_prep_term_function = rl_prep_terminal;
rl_voidfunc_t *rl_deprep_term_function = rl_deprep_terminal;
-static void set_winsize PARAMS((int));
+static void set_winsize (int);
/* **************************************************************** */
/* */
@@ -119,15 +119,15 @@ struct bsdtty {
static TIOTYPE otio;
-static void save_tty_chars PARAMS((TIOTYPE *));
-static int _get_tty_settings PARAMS((int, TIOTYPE *));
-static int get_tty_settings PARAMS((int, TIOTYPE *));
-static int _set_tty_settings PARAMS((int, TIOTYPE *));
-static int set_tty_settings PARAMS((int, TIOTYPE *));
+static void save_tty_chars (TIOTYPE *);
+static int _get_tty_settings (int, TIOTYPE *);
+static int get_tty_settings (int, TIOTYPE *);
+static int _set_tty_settings (int, TIOTYPE *);
+static int set_tty_settings (int, TIOTYPE *);
-static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
+static void prepare_terminal_settings (int, TIOTYPE, TIOTYPE *);
-static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *));
+static void set_special_char (Keymap, TIOTYPE *, int, rl_command_func_t *);
static void
save_tty_chars (TIOTYPE *tiop)
@@ -332,16 +332,16 @@ prepare_terminal_settings (int meta_flag, TIOTYPE oldtio, TIOTYPE *tiop)
static TIOTYPE otio;
-static void save_tty_chars PARAMS((TIOTYPE *));
-static int _get_tty_settings PARAMS((int, TIOTYPE *));
-static int get_tty_settings PARAMS((int, TIOTYPE *));
-static int _set_tty_settings PARAMS((int, TIOTYPE *));
-static int set_tty_settings PARAMS((int, TIOTYPE *));
+static void save_tty_chars (TIOTYPE *);
+static int _get_tty_settings (int, TIOTYPE *);
+static int get_tty_settings (int, TIOTYPE *);
+static int _set_tty_settings (int, TIOTYPE *);
+static int set_tty_settings (int, TIOTYPE *);
-static void prepare_terminal_settings PARAMS((int, TIOTYPE, TIOTYPE *));
+static void prepare_terminal_settings (int, TIOTYPE, TIOTYPE *);
-static void set_special_char PARAMS((Keymap, TIOTYPE *, int, rl_command_func_t *));
-static void _rl_bind_tty_special_chars PARAMS((Keymap, TIOTYPE));
+static void set_special_char (Keymap, TIOTYPE *, int, rl_command_func_t *);
+static void _rl_bind_tty_special_chars (Keymap, TIOTYPE);
#if defined (FLUSHO)
# define OUTPUT_BEING_FLUSHED(tp) (tp->c_lflag & FLUSHO)
@@ -692,7 +692,11 @@ rl_deprep_terminal (void)
if (terminal_prepped & TPX_BRACKPASTE)
{
fprintf (rl_outstream, BRACK_PASTE_FINI);
- if (_rl_eof_found)
+ /* Since the last character in BRACK_PASTE_FINI is \r */
+ _rl_last_c_pos = 0;
+ if (rl_eof_found && (RL_ISSTATE (RL_STATE_TIMEOUT) == 0))
+ fprintf (rl_outstream, "\n");
+ else if (_rl_echoing_p == 0)
fprintf (rl_outstream, "\n");
}
diff --git a/lib/readline/rltypedefs.h b/lib/readline/rltypedefs.h
index f9f5cd3a..16365492 100644
--- a/lib/readline/rltypedefs.h
+++ b/lib/readline/rltypedefs.h
@@ -1,6 +1,6 @@
/* rltypedefs.h -- Type declarations for readline functions. */
-/* Copyright (C) 2000-2011 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -32,10 +32,10 @@ extern "C" {
# define _FUNCTION_DEF
#if defined(__GNUC__) || defined(__clang__)
-typedef int Function () __attribute__ ((deprecated));
-typedef void VFunction () __attribute__ ((deprecated));
-typedef char *CPFunction () __attribute__ ((deprecated));
-typedef char **CPPFunction () __attribute__ ((deprecated));
+typedef int Function () __attribute__((deprecated));
+typedef void VFunction () __attribute__((deprecated));
+typedef char *CPFunction () __attribute__((deprecated));
+typedef char **CPPFunction () __attribute__((deprecated));
#else
typedef int Function ();
typedef void VFunction ();
@@ -51,45 +51,45 @@ typedef char **CPPFunction ();
# define _RL_FUNCTION_TYPEDEF
/* Bindable functions */
-typedef int rl_command_func_t PARAMS((int, int));
+typedef int rl_command_func_t (int, int);
/* Typedefs for the completion system */
-typedef char *rl_compentry_func_t PARAMS((const char *, int));
-typedef char **rl_completion_func_t PARAMS((const char *, int, int));
+typedef char *rl_compentry_func_t (const char *, int);
+typedef char **rl_completion_func_t (const char *, int, int);
-typedef char *rl_quote_func_t PARAMS((char *, int, char *));
-typedef char *rl_dequote_func_t PARAMS((char *, int));
+typedef char *rl_quote_func_t (char *, int, char *);
+typedef char *rl_dequote_func_t (char *, int);
-typedef int rl_compignore_func_t PARAMS((char **));
+typedef int rl_compignore_func_t (char **);
-typedef void rl_compdisp_func_t PARAMS((char **, int, int));
+typedef void rl_compdisp_func_t (char **, int, int);
/* Type for input and pre-read hook functions like rl_event_hook */
-typedef int rl_hook_func_t PARAMS((void));
+typedef int rl_hook_func_t (void);
/* Input function type */
-typedef int rl_getc_func_t PARAMS((FILE *));
+typedef int rl_getc_func_t (FILE *);
/* Generic function that takes a character buffer (which could be the readline
line buffer) and an index into it (which could be rl_point) and returns
an int. */
-typedef int rl_linebuf_func_t PARAMS((char *, int));
+typedef int rl_linebuf_func_t (char *, int);
/* `Generic' function pointer typedefs */
-typedef int rl_intfunc_t PARAMS((int));
+typedef int rl_intfunc_t (int);
#define rl_ivoidfunc_t rl_hook_func_t
-typedef int rl_icpfunc_t PARAMS((char *));
-typedef int rl_icppfunc_t PARAMS((char **));
-
-typedef void rl_voidfunc_t PARAMS((void));
-typedef void rl_vintfunc_t PARAMS((int));
-typedef void rl_vcpfunc_t PARAMS((char *));
-typedef void rl_vcppfunc_t PARAMS((char **));
-
-typedef char *rl_cpvfunc_t PARAMS((void));
-typedef char *rl_cpifunc_t PARAMS((int));
-typedef char *rl_cpcpfunc_t PARAMS((char *));
-typedef char *rl_cpcppfunc_t PARAMS((char **));
+typedef int rl_icpfunc_t (char *);
+typedef int rl_icppfunc_t (char **);
+
+typedef void rl_voidfunc_t (void);
+typedef void rl_vintfunc_t (int);
+typedef void rl_vcpfunc_t (char *);
+typedef void rl_vcppfunc_t (char **);
+
+typedef char *rl_cpvfunc_t (void);
+typedef char *rl_cpifunc_t (int);
+typedef char *rl_cpcpfunc_t (char *);
+typedef char *rl_cpcppfunc_t (char **);
#endif /* _RL_FUNCTION_TYPEDEF */
diff --git a/lib/readline/search.c b/lib/readline/search.c
index 38a29361..eea23011 100644
--- a/lib/readline/search.c
+++ b/lib/readline/search.c
@@ -1,6 +1,6 @@
/* search.c - code for non-incremental searching in emacs and vi modes. */
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -55,33 +55,28 @@
_rl_search_cxt *_rl_nscxt = 0;
-extern HIST_ENTRY *_rl_saved_line_for_history;
-
-/* Functions imported from the rest of the library. */
-extern void _rl_free_history_entry PARAMS((HIST_ENTRY *));
-
static char *noninc_search_string = (char *) NULL;
static int noninc_history_pos;
static char *prev_line_found = (char *) NULL;
-static int rl_history_search_len;
-static int rl_history_search_pos;
-static int rl_history_search_flags;
+static int _rl_history_search_len;
+/*static*/ int _rl_history_search_pos;
+static int _rl_history_search_flags;
static char *history_search_string;
static int history_string_size;
-static void make_history_line_current PARAMS((HIST_ENTRY *));
-static int noninc_search_from_pos PARAMS((char *, int, int, int, int *));
-static int noninc_dosearch PARAMS((char *, int, int));
-static int noninc_search PARAMS((int, int));
-static int rl_history_search_internal PARAMS((int, int));
-static void rl_history_search_reinit PARAMS((int));
+static void make_history_line_current (HIST_ENTRY *);
+static int noninc_search_from_pos (char *, int, int, int, int *);
+static int noninc_dosearch (char *, int, int);
+static int noninc_search (int, int);
+static int rl_history_search_internal (int, int);
+static void rl_history_search_reinit (int);
-static _rl_search_cxt *_rl_nsearch_init PARAMS((int, int));
-static void _rl_nsearch_abort PARAMS((_rl_search_cxt *));
-static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int));
+static _rl_search_cxt *_rl_nsearch_init (int, int);
+static void _rl_nsearch_abort (_rl_search_cxt *);
+static int _rl_nsearch_dispatch (_rl_search_cxt *, int);
/* Make the data from the history entry ENTRY be the contents of the
current line. This doesn't do anything with rl_point; the caller
@@ -89,6 +84,15 @@ static int _rl_nsearch_dispatch PARAMS((_rl_search_cxt *, int));
static void
make_history_line_current (HIST_ENTRY *entry)
{
+ UNDO_LIST *xlist;
+
+ xlist = _rl_saved_line_for_history ? (UNDO_LIST *)_rl_saved_line_for_history->data : 0;
+ /* At this point, rl_undo_list points to a private search string list. */
+ if (rl_undo_list && rl_undo_list != (UNDO_LIST *)entry->data && rl_undo_list != xlist)
+ rl_free_undo_list ();
+
+ /* Now we create a new undo list with a single insert for this text.
+ WE DON'T CHANGE THE ORIGINAL HISTORY ENTRY UNDO LIST */
_rl_replace_text (entry->line, 0, rl_end);
_rl_fix_point (1);
#if defined (VI_MODE)
@@ -100,6 +104,11 @@ make_history_line_current (HIST_ENTRY *entry)
rl_free_undo_list ();
#endif
+ /* This will need to free the saved undo list associated with the original
+ (pre-search) line buffer.
+ XXX - look at _rl_free_saved_history_line and consider calling it if
+ rl_undo_list != xlist (or calling rl_free_undo list directly on
+ _rl_saved_line_for_history->data) */
if (_rl_saved_line_for_history)
_rl_free_history_entry (_rl_saved_line_for_history);
_rl_saved_line_for_history = (HIST_ENTRY *)NULL;
@@ -264,11 +273,11 @@ static void
_rl_nsearch_abort (_rl_search_cxt *cxt)
{
rl_maybe_unsave_line ();
- rl_clear_message ();
rl_point = cxt->save_point;
rl_mark = cxt->save_mark;
- _rl_fix_point (1);
rl_restore_prompt ();
+ rl_clear_message ();
+ _rl_fix_point (1);
RL_UNSETSTATE (RL_STATE_NSEARCH);
}
@@ -521,8 +530,10 @@ rl_history_search_internal (int count, int dir)
{
HIST_ENTRY *temp;
int ret, oldpos, newcol;
+ int had_saved_line;
char *t;
+ had_saved_line = _rl_saved_line_for_history != 0;
rl_maybe_save_line ();
temp = (HIST_ENTRY *)NULL;
@@ -534,14 +545,14 @@ rl_history_search_internal (int count, int dir)
while (count)
{
RL_CHECK_SIGNALS ();
- ret = noninc_search_from_pos (history_search_string, rl_history_search_pos + dir, dir, 0, &newcol);
+ ret = noninc_search_from_pos (history_search_string, _rl_history_search_pos + dir, dir, 0, &newcol);
if (ret == -1)
break;
/* Get the history entry we found. */
- rl_history_search_pos = ret;
+ _rl_history_search_pos = ret;
oldpos = where_history ();
- history_set_pos (rl_history_search_pos);
+ history_set_pos (_rl_history_search_pos);
temp = current_history (); /* will never be NULL after successful search */
history_set_pos (oldpos);
@@ -555,20 +566,21 @@ rl_history_search_internal (int count, int dir)
/* If we didn't find anything at all, return. */
if (temp == 0)
{
+ /* XXX - check had_saved_line here? */
rl_maybe_unsave_line ();
rl_ding ();
/* If you don't want the saved history line (last match) to show up
in the line buffer after the search fails, change the #if 0 to
#if 1 */
#if 0
- if (rl_point > rl_history_search_len)
+ if (rl_point > _rl_history_search_len)
{
- rl_point = rl_end = rl_history_search_len;
+ rl_point = rl_end = _rl_history_search_len;
rl_line_buffer[rl_end] = '\0';
rl_mark = 0;
}
#else
- rl_point = rl_history_search_len; /* rl_maybe_unsave_line changes it */
+ rl_point = _rl_history_search_len; /* rl_maybe_unsave_line changes it */
rl_mark = rl_end;
#endif
return 1;
@@ -578,13 +590,13 @@ rl_history_search_internal (int count, int dir)
make_history_line_current (temp);
/* decide where to put rl_point -- need to change this for pattern search */
- if (rl_history_search_flags & ANCHORED_SEARCH)
- rl_point = rl_history_search_len; /* easy case */
+ if (_rl_history_search_flags & ANCHORED_SEARCH)
+ rl_point = _rl_history_search_len; /* easy case */
else
{
#if 0
t = strstr (rl_line_buffer, history_search_string); /* XXX */
- rl_point = t ? (int)(t - rl_line_buffer) + rl_history_search_len : rl_end;
+ rl_point = t ? (int)(t - rl_line_buffer) + _rl_history_search_len : rl_end;
#else
rl_point = (newcol >= 0) ? newcol : rl_end;
#endif
@@ -599,17 +611,17 @@ rl_history_search_reinit (int flags)
{
int sind;
- rl_history_search_pos = where_history ();
- rl_history_search_len = rl_point;
- rl_history_search_flags = flags;
+ _rl_history_search_pos = where_history ();
+ _rl_history_search_len = rl_point;
+ _rl_history_search_flags = flags;
prev_line_found = (char *)NULL;
if (rl_point)
{
/* Allocate enough space for anchored and non-anchored searches */
- if (rl_history_search_len >= history_string_size - 2)
+ if (_rl_history_search_len >= history_string_size - 2)
{
- history_string_size = rl_history_search_len + 2;
+ history_string_size = _rl_history_search_len + 2;
history_search_string = (char *)xrealloc (history_search_string, history_string_size);
}
sind = 0;
@@ -618,7 +630,7 @@ rl_history_search_reinit (int flags)
strncpy (history_search_string + sind, rl_line_buffer, rl_point);
history_search_string[rl_point + sind] = '\0';
}
- _rl_free_saved_history_line ();
+ _rl_free_saved_history_line (); /* XXX rl_undo_list? */
}
/* Search forward in the history for the string of characters
@@ -634,7 +646,7 @@ rl_history_search_forward (int count, int ignore)
rl_last_func != rl_history_search_backward)
rl_history_search_reinit (ANCHORED_SEARCH);
- if (rl_history_search_len == 0)
+ if (_rl_history_search_len == 0)
return (rl_get_next_history (count, ignore));
return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1));
}
@@ -652,7 +664,7 @@ rl_history_search_backward (int count, int ignore)
rl_last_func != rl_history_search_backward)
rl_history_search_reinit (ANCHORED_SEARCH);
- if (rl_history_search_len == 0)
+ if (_rl_history_search_len == 0)
return (rl_get_previous_history (count, ignore));
return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1));
}
@@ -671,7 +683,7 @@ rl_history_substr_search_forward (int count, int ignore)
rl_last_func != rl_history_substr_search_backward)
rl_history_search_reinit (NON_ANCHORED_SEARCH);
- if (rl_history_search_len == 0)
+ if (_rl_history_search_len == 0)
return (rl_get_next_history (count, ignore));
return (rl_history_search_internal (abs (count), (count > 0) ? 1 : -1));
}
@@ -689,7 +701,7 @@ rl_history_substr_search_backward (int count, int ignore)
rl_last_func != rl_history_substr_search_backward)
rl_history_search_reinit (NON_ANCHORED_SEARCH);
- if (rl_history_search_len == 0)
+ if (_rl_history_search_len == 0)
return (rl_get_previous_history (count, ignore));
return (rl_history_search_internal (abs (count), (count > 0) ? -1 : 1));
}
diff --git a/lib/readline/shell.c b/lib/readline/shell.c
index 7fe2e97c..36c91484 100644
--- a/lib/readline/shell.c
+++ b/lib/readline/shell.c
@@ -1,7 +1,7 @@
/* shell.c -- readline utility functions that are normally provided by
bash when readline is linked as part of the shell. */
-/* Copyright (C) 1997-2009,2017 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2009,2017,2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -64,7 +64,7 @@
#include "xmalloc.h"
#if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS)
-extern struct passwd *getpwuid PARAMS((uid_t));
+extern struct passwd *getpwuid (uid_t);
#endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */
#ifndef NULL
diff --git a/lib/readline/signals.c b/lib/readline/signals.c
index f9174ab8..9df365e4 100644
--- a/lib/readline/signals.c
+++ b/lib/readline/signals.c
@@ -1,6 +1,6 @@
/* signals.c -- signal handling support for readline. */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -48,23 +48,11 @@
#if defined (HANDLE_SIGNALS)
-#if !defined (RETSIGTYPE)
-# if defined (VOID_SIGHANDLER)
-# define RETSIGTYPE void
-# else
-# define RETSIGTYPE int
-# endif /* !VOID_SIGHANDLER */
-#endif /* !RETSIGTYPE */
-
-#if defined (VOID_SIGHANDLER)
-# define SIGHANDLER_RETURN return
-#else
-# define SIGHANDLER_RETURN return (0)
-#endif
+#define SIGHANDLER_RETURN return
/* This typedef is equivalent to the one for Function; it allows us
to say SigHandler *foo = signal (SIGKILL, SIG_IGN); */
-typedef RETSIGTYPE SigHandler ();
+typedef void SigHandler (int);
#if defined (HAVE_POSIX_SIGNALS)
typedef struct sigaction sighandler_cxt;
@@ -78,12 +66,12 @@ typedef struct { SigHandler *sa_handler; int sa_mask, sa_flags; } sighandler_cxt
# define SA_RESTART 0
#endif
-static SigHandler *rl_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
-static void rl_maybe_set_sighandler PARAMS((int, SigHandler *, sighandler_cxt *));
-static void rl_maybe_restore_sighandler PARAMS((int, sighandler_cxt *));
+static SigHandler *rl_set_sighandler (int, SigHandler *, sighandler_cxt *);
+static void rl_maybe_set_sighandler (int, SigHandler *, sighandler_cxt *);
+static void rl_maybe_restore_sighandler (int, sighandler_cxt *);
-static RETSIGTYPE rl_signal_handler PARAMS((int));
-static RETSIGTYPE _rl_handle_signal PARAMS((int));
+static void rl_signal_handler (int);
+static void _rl_handle_signal (int);
/* Exported variables for use by applications. */
@@ -136,7 +124,7 @@ void *_rl_sigcleanarg;
/* Readline signal handler functions. */
/* Called from RL_CHECK_SIGNALS() macro to run signal handling code. */
-RETSIGTYPE
+void
_rl_signal_handler (int sig)
{
_rl_caught_signal = 0; /* XXX */
@@ -163,7 +151,7 @@ _rl_signal_handler (int sig)
SIGHANDLER_RETURN;
}
-static RETSIGTYPE
+static void
rl_signal_handler (int sig)
{
_rl_caught_signal = sig;
@@ -173,7 +161,7 @@ rl_signal_handler (int sig)
/* This is called to handle a signal when it is safe to do so (out of the
signal handler execution path). Called by _rl_signal_handler for all the
signals readline catches except SIGWINCH. */
-static RETSIGTYPE
+static void
_rl_handle_signal (int sig)
{
int block_sig;
@@ -222,6 +210,9 @@ _rl_handle_signal (int sig)
switch (sig)
{
case SIGINT:
+ /* We will end up blocking SIGTTOU while we are resetting the tty, so
+ watch out for this if it causes problems. We could prevent this by
+ setting block_sig to 1 without modifying SET. */
_rl_reset_completion_state ();
rl_free_line_state ();
#if defined (READLINE_CALLBACKS)
@@ -242,8 +233,11 @@ _rl_handle_signal (int sig)
this even if we've been stopped on SIGTTOU, since we handle signals
when we have returned from the signal handler and the signal is no
longer blocked. */
- sigaddset (&set, SIGTTOU);
- block_sig = 1;
+ if (block_sig == 0)
+ {
+ sigaddset (&set, SIGTTOU);
+ block_sig = 1;
+ }
# endif
#endif /* SIGTSTP */
/* Any signals that should be blocked during cleanup should go here. */
@@ -261,13 +255,17 @@ _rl_handle_signal (int sig)
case SIGTERM:
#if defined (SIGALRM)
case SIGALRM:
+ if (sig == SIGALRM)
+ _rl_timeout_handle_sigalrm ();
#endif
#if defined (SIGQUIT)
case SIGQUIT:
#endif
+#if defined (HAVE_POSIX_SIGNALS)
if (block_sig)
sigprocmask (SIG_BLOCK, &set, &oset);
+#endif
rl_echo_signal_char (sig);
rl_cleanup_after_signal ();
@@ -283,19 +281,6 @@ _rl_handle_signal (int sig)
/* We don't have to bother unblocking the signal because we are not
running in a signal handler context. */
-#if 0
-#if defined (HAVE_POSIX_SIGNALS)
- /* Make sure this signal is not blocked when we resend it to the
- calling application. */
- sigemptyset (&set);
- sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
- sigdelset (&set, sig);
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- omask = sigblock (0);
-# endif /* HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-#endif
#if defined (__EMX__)
signal (sig, SIG_ACK);
@@ -309,16 +294,6 @@ _rl_handle_signal (int sig)
/* We don't need to modify the signal mask now that this is not run in
a signal handler context. */
-#if 0
- /* Let the signal that we just sent through if it is blocked. */
-#if defined (HAVE_POSIX_SIGNALS)
- sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL);
-#else /* !HAVE_POSIX_SIGNALS */
-# if defined (HAVE_BSD_SIGNALS)
- sigsetmask (omask & ~(sigmask (sig)));
-# endif /* HAVE_BSD_SIGNALS */
-#endif /* !HAVE_POSIX_SIGNALS */
-#endif
rl_reset_after_signal ();
}
@@ -328,7 +303,7 @@ _rl_handle_signal (int sig)
}
#if defined (SIGWINCH)
-static RETSIGTYPE
+static void
rl_sigwinch_handler (int sig)
{
SigHandler *oh;
diff --git a/lib/readline/terminal.c b/lib/readline/terminal.c
index 05415dc4..9997161f 100644
--- a/lib/readline/terminal.c
+++ b/lib/readline/terminal.c
@@ -1,6 +1,6 @@
/* terminal.c -- controlling the terminal with termcap. */
-/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2022 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -73,11 +73,11 @@
# include <windows.h>
# include <wincon.h>
-static void _win_get_screensize PARAMS((int *, int *));
+static void _win_get_screensize (int *, int *);
#endif
#if defined (__EMX__)
-static void _emx_get_screensize PARAMS((int *, int *));
+static void _emx_get_screensize (int *, int *);
#endif
/* If the calling application sets this to a non-zero value, readline will
@@ -177,10 +177,19 @@ static char *_rl_term_kD;
/* Insert key */
static char *_rl_term_kI;
+/* Page up and page down keys */
+static char *_rl_term_kP;
+static char *_rl_term_kN;
+
/* Cursor control */
static char *_rl_term_vs; /* very visible */
static char *_rl_term_ve; /* normal */
+/* User-settable color sequences to begin and end the active region. Defaults
+ are rl_term_so and rl_term_se on non-dumb terminals. */
+char *_rl_active_region_start_color = NULL;
+char *_rl_active_region_end_color = NULL;
+
/* It's not clear how HPUX is so broken here. */
#ifdef TGETENT_BROKEN
# define TGETENT_SUCCESS 0
@@ -194,7 +203,7 @@ static char *_rl_term_ve; /* normal */
#endif
#define TGETFLAG(cap) (tgetflag (cap) == TGETFLAG_SUCCESS)
-static void bind_termcap_arrow_keys PARAMS((Keymap));
+static void bind_termcap_arrow_keys (Keymap);
/* Variables that hold the screen dimensions, used by the display code. */
int _rl_screenwidth, _rl_screenheight, _rl_screenchars;
@@ -382,8 +391,12 @@ _rl_sigwinch_resize_terminal (void)
void
rl_resize_terminal (void)
{
+ int width, height;
+
+ width = _rl_screenwidth;
+ height = _rl_screenheight;
_rl_get_screen_size (fileno (rl_instream), 1);
- if (_rl_echoing_p)
+ if (_rl_echoing_p && (width != _rl_screenwidth || height != _rl_screenheight))
{
if (CUSTOM_REDISPLAY_FUNC ())
rl_forced_update_display ();
@@ -415,6 +428,8 @@ static const struct _tc_string tc_strings[] =
{ "kD", &_rl_term_kD }, /* delete */
{ "kH", &_rl_term_kH }, /* home down ?? */
{ "kI", &_rl_term_kI }, /* insert */
+ { "kN", &_rl_term_kN }, /* page down */
+ { "kP", &_rl_term_kP }, /* page up */
{ "kd", &_rl_term_kd },
{ "ke", &_rl_term_ke }, /* end keypad mode */
{ "kh", &_rl_term_kh }, /* home */
@@ -456,7 +471,7 @@ _rl_init_terminal_io (const char *terminal_name)
{
const char *term;
char *buffer;
- int tty, tgetent_ret, dumbterm;
+ int tty, tgetent_ret, dumbterm, reset_region_colors;
term = terminal_name ? terminal_name : sh_get_env_value ("TERM");
_rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL;
@@ -467,6 +482,8 @@ _rl_init_terminal_io (const char *terminal_name)
dumbterm = STREQ (term, "dumb");
+ reset_region_colors = 1;
+
#ifdef __MSDOS__
_rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL;
_rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL;
@@ -478,6 +495,7 @@ _rl_init_terminal_io (const char *terminal_name)
_rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL;
_rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL;
_rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL;
+ _rl_term_kN = _rl_term_kP = (char *)NULL;
_rl_term_so = _rl_term_se = (char *)NULL;
#if defined(HACK_TERMCAP_MOTION)
_rl_term_forward_char = (char *)NULL;
@@ -540,6 +558,7 @@ _rl_init_terminal_io (const char *terminal_name)
_rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL;
_rl_term_kh = _rl_term_kH = _rl_term_kI = _rl_term_kD = (char *)NULL;
_rl_term_ks = _rl_term_ke = _rl_term_at7 = (char *)NULL;
+ _rl_term_kN = _rl_term_kP = (char *)NULL;
_rl_term_mm = _rl_term_mo = (char *)NULL;
_rl_term_ve = _rl_term_vs = (char *)NULL;
_rl_term_forward_char = (char *)NULL;
@@ -550,6 +569,11 @@ _rl_init_terminal_io (const char *terminal_name)
escape sequences */
_rl_enable_bracketed_paste = 0;
+ /* No terminal so/se capabilities. */
+ _rl_enable_active_region = 0;
+ _rl_reset_region_color (0, NULL);
+ _rl_reset_region_color (1, NULL);
+
/* Reasonable defaults for tgoto(). Readline currently only uses
tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we
change that later... */
@@ -604,8 +628,14 @@ _rl_init_terminal_io (const char *terminal_name)
/* There's no way to determine whether or not a given terminal supports
bracketed paste mode, so we assume a terminal named "dumb" does not. */
if (dumbterm)
- _rl_enable_bracketed_paste = 0;
-
+ _rl_enable_bracketed_paste = _rl_enable_active_region = 0;
+
+ if (reset_region_colors)
+ {
+ _rl_reset_region_color (0, _rl_term_so);
+ _rl_reset_region_color (1, _rl_term_se);
+ }
+
return 0;
}
@@ -629,6 +659,9 @@ bind_termcap_arrow_keys (Keymap map)
rl_bind_keyseq_if_unbound (_rl_term_kD, rl_delete);
rl_bind_keyseq_if_unbound (_rl_term_kI, rl_overwrite_mode); /* Insert */
+ rl_bind_keyseq_if_unbound (_rl_term_kN, rl_history_search_forward); /* Page Down */
+ rl_bind_keyseq_if_unbound (_rl_term_kP, rl_history_search_backward); /* Page Up */
+
_rl_keymap = xkeymap;
}
@@ -776,6 +809,67 @@ _rl_standout_off (void)
/* **************************************************************** */
/* */
+/* Controlling color for a portion of the line */
+/* */
+/* **************************************************************** */
+
+/* Reset the region color variables to VALUE depending on WHICH (0 == start,
+ 1 == end). This is where all the memory allocation for the color variable
+ strings is performed. We might want to pass a flag saying whether or not
+ to translate VALUE like a key sequence, but it doesn't really matter. */
+int
+_rl_reset_region_color (int which, const char *value)
+{
+ int len;
+
+ if (which == 0)
+ {
+ xfree (_rl_active_region_start_color);
+ if (value && *value)
+ {
+ _rl_active_region_start_color = (char *)xmalloc (2 * strlen (value) + 1);
+ rl_translate_keyseq (value, _rl_active_region_start_color, &len);
+ _rl_active_region_start_color[len] = '\0';
+ }
+ else
+ _rl_active_region_start_color = NULL;
+ }
+ else
+ {
+ xfree (_rl_active_region_end_color);
+ if (value && *value)
+ {
+ _rl_active_region_end_color = (char *)xmalloc (2 * strlen (value) + 1);
+ rl_translate_keyseq (value, _rl_active_region_end_color, &len);
+ _rl_active_region_end_color[len] = '\0';
+ }
+ else
+ _rl_active_region_end_color = NULL;
+ }
+
+ return 0;
+}
+
+void
+_rl_region_color_on (void)
+{
+#ifndef __MSDOS__
+ if (_rl_active_region_start_color && _rl_active_region_end_color)
+ tputs (_rl_active_region_start_color, 1, _rl_output_character_function);
+#endif
+}
+
+void
+_rl_region_color_off (void)
+{
+#ifndef __MSDOS__
+ if (_rl_active_region_start_color && _rl_active_region_end_color)
+ tputs (_rl_active_region_end_color, 1, _rl_output_character_function);
+#endif
+}
+
+/* **************************************************************** */
+/* */
/* Controlling the Meta Key and Keypad */
/* */
/* **************************************************************** */
diff --git a/lib/readline/text.c b/lib/readline/text.c
index 2567dea2..91c3f330 100644
--- a/lib/readline/text.c
+++ b/lib/readline/text.c
@@ -1,6 +1,6 @@
/* text.c -- text handling commands for readline. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -59,12 +59,12 @@
#include "xmalloc.h"
/* Forward declarations. */
-static int rl_change_case PARAMS((int, int));
-static int _rl_char_search PARAMS((int, int, int));
+static int rl_change_case (int, int);
+static int _rl_char_search (int, int, int);
#if defined (READLINE_CALLBACKS)
-static int _rl_insert_next_callback PARAMS((_rl_callback_generic_arg *));
-static int _rl_char_search_callback PARAMS((_rl_callback_generic_arg *));
+static int _rl_insert_next_callback (_rl_callback_generic_arg *);
+static int _rl_char_search_callback (_rl_callback_generic_arg *);
#endif
/* The largest chunk of text that can be inserted in one call to
@@ -96,6 +96,7 @@ rl_insert_text (const char *string)
for (i = rl_end; i >= rl_point; i--)
rl_line_buffer[i + l] = rl_line_buffer[i];
+
strncpy (rl_line_buffer + rl_point, string, l);
/* Remember how to undo this if we aren't undoing something. */
@@ -735,7 +736,7 @@ _rl_insert_char (int count, int c)
}
else
{
- wchar_t wc;
+ WCHAR_T wc;
size_t ret;
if (stored_count <= 0)
@@ -745,7 +746,7 @@ _rl_insert_char (int count, int c)
ps_back = ps;
pending_bytes[pending_bytes_length++] = c;
- ret = mbrtowc (&wc, pending_bytes, pending_bytes_length, &ps);
+ ret = MBRTOWC (&wc, pending_bytes, pending_bytes_length, &ps);
if (ret == (size_t)-2)
{
@@ -919,8 +920,11 @@ _rl_overwrite_char (int count, int c)
int k;
/* Read an entire multibyte character sequence to insert COUNT times. */
+ k = 1;
if (count > 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0)
k = _rl_read_mbstring (c, mbkey, MB_LEN_MAX);
+ if (k < 0)
+ return 1;
#endif
rl_begin_undo_group ();
@@ -1132,7 +1136,7 @@ rl_newline (int count, int key)
int
rl_do_lowercase_version (int ignore1, int ignore2)
{
- return 0;
+ return 99999; /* prevent from being combined with _rl_null_function */
}
/* This is different from what vi does, so the code's not shared. Emacs
@@ -1401,9 +1405,9 @@ rl_change_case (int count, int op)
{
int start, next, end;
int inword, nc, nop;
- wchar_t c;
+ WCHAR_T c;
#if defined (HANDLE_MULTIBYTE)
- wchar_t wc, nwc;
+ WCHAR_T wc, nwc;
char mb[MB_LEN_MAX+1];
int mlen;
size_t m;
@@ -1462,9 +1466,9 @@ rl_change_case (int count, int op)
#if defined (HANDLE_MULTIBYTE)
else
{
- m = mbrtowc (&wc, rl_line_buffer + start, end - start, &mps);
+ m = MBRTOWC (&wc, rl_line_buffer + start, end - start, &mps);
if (MB_INVALIDCH (m))
- wc = (wchar_t)rl_line_buffer[start];
+ wc = (WCHAR_T)rl_line_buffer[start];
else if (MB_NULLWCH (m))
wc = L'\0';
nwc = (nop == UpCase) ? _rl_to_wupper (wc) : _rl_to_wlower (wc);
@@ -1474,12 +1478,12 @@ rl_change_case (int count, int op)
mbstate_t ts;
memset (&ts, 0, sizeof (mbstate_t));
- mlen = wcrtomb (mb, nwc, &ts);
+ mlen = WCRTOMB (mb, nwc, &ts);
if (mlen < 0)
{
nwc = wc;
memset (&ts, 0, sizeof (mbstate_t));
- mlen = wcrtomb (mb, nwc, &ts);
+ mlen = WCRTOMB (mb, nwc, &ts);
if (mlen < 0) /* should not happen */
strncpy (mb, rl_line_buffer + start, mlen = m);
}
@@ -1536,7 +1540,10 @@ rl_transpose_words (int count, int key)
{
char *word1, *word2;
int w1_beg, w1_end, w2_beg, w2_end;
- int orig_point = rl_point;
+ int orig_point, orig_end;
+
+ orig_point = rl_point;
+ orig_end = rl_end;
if (!count)
return 0;
@@ -1580,6 +1587,7 @@ rl_transpose_words (int count, int key)
/* This is exactly correct since the text before this point has not
changed in length. */
rl_point = w2_end;
+ rl_end = orig_end; /* just make sure */
/* I think that does it. */
rl_end_undo_group ();
diff --git a/lib/readline/tilde.h b/lib/readline/tilde.h
index e26dd047..bc8022af 100644
--- a/lib/readline/tilde.h
+++ b/lib/readline/tilde.h
@@ -1,6 +1,6 @@
/* tilde.h: Externally available variables and function in libtilde.a. */
-/* Copyright (C) 1992-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2009,2021 Free Software Foundation, Inc.
This file contains the Readline Library (Readline), a set of
routines for providing Emacs style line input to programs that ask
@@ -27,19 +27,7 @@
extern "C" {
#endif
-/* A function can be defined using prototypes and compile on both ANSI C
- and traditional C compilers with something like this:
- extern char *func PARAMS((char *, char *, int)); */
-
-#if !defined (PARAMS)
-# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-# define PARAMS(protos) protos
-# else
-# define PARAMS(protos) ()
-# endif
-#endif
-
-typedef char *tilde_hook_func_t PARAMS((char *));
+typedef char *tilde_hook_func_t (char *);
/* If non-null, this contains the address of a function that the application
wants called before trying the standard tilde expansions. The function
@@ -64,14 +52,14 @@ extern char **tilde_additional_prefixes;
extern char **tilde_additional_suffixes;
/* Return a new string which is the result of tilde expanding STRING. */
-extern char *tilde_expand PARAMS((const char *));
+extern char *tilde_expand (const char *);
/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
tilde. If there is no expansion, call tilde_expansion_failure_hook. */
-extern char *tilde_expand_word PARAMS((const char *));
+extern char *tilde_expand_word (const char *);
/* Find the portion of the string beginning with ~ that should be expanded. */
-extern char *tilde_find_word PARAMS((const char *, int, int *));
+extern char *tilde_find_word (const char *, int, int *);
#ifdef __cplusplus
}
diff --git a/lib/readline/undo.c b/lib/readline/undo.c
index 14799911..e4c457dc 100644
--- a/lib/readline/undo.c
+++ b/lib/readline/undo.c
@@ -1,6 +1,6 @@
/* undo.c - manage list of changes to lines, offering opportunity to undo them */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -49,9 +49,7 @@
#include "rlprivate.h"
#include "xmalloc.h"
-extern void _hs_replace_history_data PARAMS((int, histdata_t *, histdata_t *));
-
-extern HIST_ENTRY *_rl_saved_line_for_history;
+#include "histlib.h"
/* Non-zero tells rl_delete_text and rl_insert_text to not add to
the undo list. */
diff --git a/lib/readline/util.c b/lib/readline/util.c
index 1576b55d..2e986db0 100644
--- a/lib/readline/util.c
+++ b/lib/readline/util.c
@@ -72,7 +72,7 @@ static const char * const pathname_alphabetic_chars = "/-_=~.#$";
int
rl_alphabetic (int c)
{
- if (ALPHABETIC (c))
+ if (_rl_alphabetic_p (c))
return (1);
return (_rl_allow_pathname_alphabetic_chars &&
@@ -81,7 +81,7 @@ rl_alphabetic (int c)
#if defined (HANDLE_MULTIBYTE)
int
-_rl_walphabetic (wchar_t wc)
+_rl_walphabetic (WCHAR_T wc)
{
int c;
@@ -98,7 +98,8 @@ _rl_walphabetic (wchar_t wc)
int
_rl_abort_internal (void)
{
- rl_ding ();
+ if (RL_ISSTATE (RL_STATE_TIMEOUT) == 0)
+ rl_ding (); /* Don't ring the bell on a timeout */
rl_clear_message ();
_rl_reset_argument ();
rl_clear_pending_input ();
diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c
index 742341e3..3a033bab 100644
--- a/lib/readline/vi_mode.c
+++ b/lib/readline/vi_mode.c
@@ -1,7 +1,7 @@
/* vi_mode.c -- A vi emulation mode for Bash.
Derived from code written by Jeff Sparkes (jsparkes@bnr.ca). */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -124,44 +124,44 @@ static const char * const vi_textmod = "_*\\AaIiCcDdPpYyRrSsXx~";
/* Arrays for the saved marks. */
static int vi_mark_chars['z' - 'a' + 1];
-static void _rl_vi_replace_insert PARAMS((int));
-static void _rl_vi_save_replace PARAMS((void));
-static void _rl_vi_stuff_insert PARAMS((int));
-static void _rl_vi_save_insert PARAMS((UNDO_LIST *));
+static void _rl_vi_replace_insert (int);
+static void _rl_vi_save_replace (void);
+static void _rl_vi_stuff_insert (int);
+static void _rl_vi_save_insert (UNDO_LIST *);
-static void vi_save_insert_buffer PARAMS ((int, int));
+static void vi_save_insert_buffer (int, int);
-static inline void _rl_vi_backup PARAMS((void));
+static inline void _rl_vi_backup (void);
-static int _rl_vi_arg_dispatch PARAMS((int));
-static int rl_digit_loop1 PARAMS((void));
+static int _rl_vi_arg_dispatch (int);
+static int rl_digit_loop1 (void);
-static int _rl_vi_set_mark PARAMS((void));
-static int _rl_vi_goto_mark PARAMS((void));
+static int _rl_vi_set_mark (void);
+static int _rl_vi_goto_mark (void);
-static inline int _rl_vi_advance_point PARAMS((void));
-static inline int _rl_vi_backup_point PARAMS((void));
+static inline int _rl_vi_advance_point (void);
+static inline int _rl_vi_backup_point (void);
-static void _rl_vi_append_forward PARAMS((int));
+static void _rl_vi_append_forward (int);
-static int _rl_vi_callback_getchar PARAMS((char *, int));
+static int _rl_vi_callback_getchar (char *, int);
#if defined (READLINE_CALLBACKS)
-static int _rl_vi_callback_set_mark PARAMS((_rl_callback_generic_arg *));
-static int _rl_vi_callback_goto_mark PARAMS((_rl_callback_generic_arg *));
-static int _rl_vi_callback_change_char PARAMS((_rl_callback_generic_arg *));
-static int _rl_vi_callback_char_search PARAMS((_rl_callback_generic_arg *));
+static int _rl_vi_callback_set_mark (_rl_callback_generic_arg *);
+static int _rl_vi_callback_goto_mark (_rl_callback_generic_arg *);
+static int _rl_vi_callback_change_char (_rl_callback_generic_arg *);
+static int _rl_vi_callback_char_search (_rl_callback_generic_arg *);
#endif
-static int rl_domove_read_callback PARAMS((_rl_vimotion_cxt *));
-static int rl_domove_motion_callback PARAMS((_rl_vimotion_cxt *));
-static int rl_vi_domove_getchar PARAMS((_rl_vimotion_cxt *));
+static int rl_domove_read_callback (_rl_vimotion_cxt *);
+static int rl_domove_motion_callback (_rl_vimotion_cxt *);
+static int rl_vi_domove_getchar (_rl_vimotion_cxt *);
-static int vi_change_dispatch PARAMS((_rl_vimotion_cxt *));
-static int vi_delete_dispatch PARAMS((_rl_vimotion_cxt *));
-static int vi_yank_dispatch PARAMS((_rl_vimotion_cxt *));
+static int vi_change_dispatch (_rl_vimotion_cxt *);
+static int vi_delete_dispatch (_rl_vimotion_cxt *);
+static int vi_yank_dispatch (_rl_vimotion_cxt *);
-static int vidomove_dispatch PARAMS((_rl_vimotion_cxt *));
+static int vidomove_dispatch (_rl_vimotion_cxt *);
void
_rl_vi_initialize_line (void)
@@ -337,24 +337,7 @@ rl_vi_yank_arg (int count, int key)
int
rl_vi_fetch_history (int count, int c)
{
- int wanted;
-
- /* Giving an argument of n means we want the nth command in the history
- file. The command number is interpreted the same way that the bash
- `history' command does it -- that is, giving an argument count of 450
- to this command would get the command listed as number 450 in the
- output of `history'. */
- if (rl_explicit_arg)
- {
- wanted = history_base + where_history () - count;
- if (wanted <= 0)
- rl_beginning_of_history (0, 0);
- else
- rl_get_previous_history (wanted, c);
- }
- else
- rl_beginning_of_history (count, 0);
- return (0);
+ return (rl_fetch_history (count, c));
}
/* Search again for the last thing searched for. */
@@ -944,7 +927,7 @@ rl_vi_arg_digit (int count, int c)
static int
_rl_vi_change_mbchar_case (int count)
{
- wchar_t wc;
+ WCHAR_T wc;
char mb[MB_LEN_MAX+1];
int mlen, p;
size_t m;
@@ -955,9 +938,9 @@ _rl_vi_change_mbchar_case (int count)
count--;
while (count-- && rl_point < rl_end)
{
- m = mbrtowc (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps);
+ m = MBRTOWC (&wc, rl_line_buffer + rl_point, rl_end - rl_point, &ps);
if (MB_INVALIDCH (m))
- wc = (wchar_t)rl_line_buffer[rl_point];
+ wc = (WCHAR_T)rl_line_buffer[rl_point];
else if (MB_NULLWCH (m))
wc = L'\0';
if (iswupper (wc))
@@ -975,7 +958,7 @@ _rl_vi_change_mbchar_case (int count)
if (wc)
{
p = rl_point;
- mlen = wcrtomb (mb, wc, &ps);
+ mlen = WCRTOMB (mb, wc, &ps);
if (mlen >= 0)
mb[mlen] = '\0';
rl_begin_undo_group ();
@@ -1389,8 +1372,15 @@ int
rl_vi_delete_to (int count, int key)
{
int c, r;
+ _rl_vimotion_cxt *savecxt;
- if (_rl_vimvcxt)
+ savecxt = 0;
+ if (_rl_vi_redoing)
+ {
+ savecxt = _rl_vimvcxt;
+ _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key);
+ }
+ else if (_rl_vimvcxt)
_rl_mvcxt_init (_rl_vimvcxt, VIM_DELETE, key);
else
_rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key);
@@ -1433,7 +1423,7 @@ rl_vi_delete_to (int count, int key)
}
_rl_mvcxt_dispose (_rl_vimvcxt);
- _rl_vimvcxt = 0;
+ _rl_vimvcxt = savecxt;
return r;
}
@@ -1481,8 +1471,15 @@ int
rl_vi_change_to (int count, int key)
{
int c, r;
+ _rl_vimotion_cxt *savecxt;
- if (_rl_vimvcxt)
+ savecxt = 0;
+ if (_rl_vi_redoing)
+ {
+ savecxt = _rl_vimvcxt;
+ _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key);
+ }
+ else if (_rl_vimvcxt)
_rl_mvcxt_init (_rl_vimvcxt, VIM_CHANGE, key);
else
_rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key);
@@ -1524,7 +1521,7 @@ rl_vi_change_to (int count, int key)
}
_rl_mvcxt_dispose (_rl_vimvcxt);
- _rl_vimvcxt = 0;
+ _rl_vimvcxt = savecxt;
return r;
}
@@ -1553,8 +1550,15 @@ int
rl_vi_yank_to (int count, int key)
{
int c, r;
+ _rl_vimotion_cxt *savecxt;
- if (_rl_vimvcxt)
+ savecxt = 0;
+ if (_rl_vi_redoing)
+ {
+ savecxt = _rl_vimvcxt;
+ _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key);
+ }
+ else if (_rl_vimvcxt)
_rl_mvcxt_init (_rl_vimvcxt, VIM_YANK, key);
else
_rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key);
@@ -1596,7 +1600,7 @@ rl_vi_yank_to (int count, int key)
}
_rl_mvcxt_dispose (_rl_vimvcxt);
- _rl_vimvcxt = 0;
+ _rl_vimvcxt = savecxt;
return r;
}
@@ -2036,6 +2040,9 @@ _rl_vi_callback_change_char (_rl_callback_generic_arg *data)
char mb[MB_LEN_MAX+1];
c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+ if (c < 0)
+ return -1;
+
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
@@ -2044,9 +2051,6 @@ _rl_vi_callback_change_char (_rl_callback_generic_arg *data)
_rl_vi_last_replacement[0] = c;
_rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* XXX */
- if (c < 0)
- return -1;
-
_rl_callback_func = 0;
_rl_want_redisplay = 1;
@@ -2077,6 +2081,8 @@ rl_vi_change_char (int count, int key)
else
{
c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+ if (c < 0)
+ return -1;
#ifdef HANDLE_MULTIBYTE
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
@@ -2113,7 +2119,8 @@ rl_vi_overstrike (int count, int key)
if (count > 0)
{
- _rl_overwrite_char (count, key);
+ if (_rl_overwrite_char (count, key) != 0)
+ return (1);
vi_replace_count += count;
}
diff --git a/lib/readline/xmalloc.h b/lib/readline/xmalloc.h
index f40d7a59..0fb9df9c 100644
--- a/lib/readline/xmalloc.h
+++ b/lib/readline/xmalloc.h
@@ -1,6 +1,6 @@
/* xmalloc.h -- memory allocation that aborts on errors. */
-/* Copyright (C) 1999-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2009,2010-2021 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -38,8 +38,8 @@
#endif /* !PTR_T */
-extern PTR_T xmalloc PARAMS((size_t));
-extern PTR_T xrealloc PARAMS((void *, size_t));
-extern void xfree PARAMS((void *));
+extern PTR_T xmalloc (size_t);
+extern PTR_T xrealloc (void *, size_t);
+extern void xfree (void *);
#endif /* _XMALLOC_H_ */
diff --git a/lib/sh/Makefile.in b/lib/sh/Makefile.in
index 98064de5..8c42c73d 100644
--- a/lib/sh/Makefile.in
+++ b/lib/sh/Makefile.in
@@ -2,7 +2,7 @@
# Makefile for the Bash library
#
#
-# Copyright (C) 1998-2020 Free Software Foundation, Inc.
+# Copyright (C) 1998-2022 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -57,6 +57,7 @@ SHELL = @MAKE_SHELL@
CFLAGS = @CFLAGS@
LOCAL_CFLAGS = @LOCAL_CFLAGS@ ${DEBUG}
+STYLE_CFLAGS = @STYLE_CFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@
@@ -68,7 +69,7 @@ LOCAL_DEFS = @LOCAL_DEFS@
INCLUDES = -I. -I../.. -I$(topdir) -I$(topdir)/lib -I$(BASHINCDIR) -I$(srcdir) $(INTL_INC)
CCFLAGS = ${ADDON_CFLAGS} ${PROFILE_FLAGS} ${INCLUDES} $(DEFS) $(LOCAL_DEFS) \
- $(LOCAL_CFLAGS) $(CFLAGS) $(CPPFLAGS)
+ $(LOCAL_CFLAGS) $(STYLE_CFLAGS) $(CFLAGS) $(CPPFLAGS)
GCC_LINT_FLAGS = -Wall -Wshadow -Wpointer-arith -Wcast-qual \
-Wcast-align -Wstrict-prototypes -Wconversion \
@@ -93,7 +94,7 @@ CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \
wcsdup.c fpurge.c zgetline.c mbscmp.c uconvert.c ufuncs.c \
casemod.c dprintf.c input_avail.c mbscasecmp.c fnxform.c \
strchrnul.c unicode.c wcswidth.c wcsnwidth.c shmbchar.c strdup.c \
- utf8.c random.c gettimeofday.c
+ strvis.c utf8.c random.c gettimeofday.c timers.c
# The header files for this library.
HSOURCES =
@@ -107,8 +108,8 @@ OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \
strtrans.o snprintf.o mailstat.o fmtulong.o \
fmtullong.o fmtumax.o zcatfd.o zmapfd.o winsize.o wcsdup.o \
fpurge.o zgetline.o mbscmp.o uconvert.o ufuncs.o casemod.o \
- input_avail.o mbscasecmp.o fnxform.o unicode.o shmbchar.o \
- utf8.o random.o gettimeofday.o wcsnwidth.o ${LIBOBJS}
+ input_avail.o mbscasecmp.o fnxform.o unicode.o shmbchar.o strvis.o \
+ utf8.o random.o gettimeofday.o timers.o wcsnwidth.o ${LIBOBJS}
SUPPORT = Makefile
@@ -197,6 +198,8 @@ strtoul.o: strtoul.c
strtoull.o: strtoull.c
strtoumax.o: strtoumax.c
strtrans.o: strtrans.c
+strvis.o: strvis.c
+timers.o: timers.c
times.o: times.c
timeval.o: timeval.c
tmpfile.o: tmpfile.c
@@ -277,6 +280,8 @@ strtoul.o: ${BUILD_DIR}/config.h
strtoull.o: ${BUILD_DIR}/config.h
strtoumax.o: ${BUILD_DIR}/config.h
strtrans.o: ${BUILD_DIR}/config.h
+strvis.o: ${BUILD_DIR}/config.h
+timers.o: ${BUILD_DIR}/config.h
times.o: ${BUILD_DIR}/config.h
timeval.o: ${BUILD_DIR}/config.h
tmpfile.o: ${BUILD_DIR}/config.h ${topdir}/config-top.h
@@ -509,6 +514,11 @@ strtrans.o: ${BUILD_DIR}/pathnames.h ${topdir}/externs.h
strtrans.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
#strtrans.o: ${BUILD_DIR}/version.h
+strvis.o: ${topdir}/bashansi.h
+strvis.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h
+strvis.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
+strvis.o: ${topdir}/bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
+
times.o: ${BASHINCDIR}/systimes.h
times.o: ${BASHINCDIR}/posixtime.h
@@ -620,6 +630,14 @@ fnxform.o: ${topdir}/bashintl.h ${LIBINTL_H} ${BASHINCDIR}/gettext.h
shmbchar.o: ${BASHINCDIR}/shmbchar.h
shmbchar.o: ${BASHINCDIR}/shmbutil.h
+timers.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h
+timers.o: ${BASHINCDIR}/stdc.h
+timers.o: ${topdir}/xmalloc.h ${topdir}/sig.h
+timers.o: ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/stat-time.h
+timers.o: ${BASHINCDIR}/posixselect.h
+timers.o: ${topdir}/bashjmp.h ${BASHINCDIR}/posixjmp.h
+timers.o: ${BASHINCDIR}/timer.h
+
unicode.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h
unicode.o: ${BASHINCDIR}/stdc.h
unicode.o: ${topdir}/xmalloc.h
diff --git a/lib/sh/casemod.c b/lib/sh/casemod.c
index bdd96f84..0403f91c 100644
--- a/lib/sh/casemod.c
+++ b/lib/sh/casemod.c
@@ -47,7 +47,7 @@
#define _to_wlower(wc) (iswupper (wc) ? towlower (wc) : (wc))
#if !defined (HANDLE_MULTIBYTE)
-# define cval(s, i) ((s)[(i)])
+# define cval(s, i, l) ((s)[(i)])
# define iswalnum(c) (isalnum(c))
# define TOGGLE(x) (ISUPPER (x) ? tolower ((unsigned char)x) : (TOUPPER (x)))
#else
@@ -75,18 +75,16 @@ extern char *substring PARAMS((char *, int, int));
#if defined (HANDLE_MULTIBYTE)
static wchar_t
-cval (s, i)
+cval (s, i, l)
char *s;
- int i;
+ int i, l;
{
size_t tmp;
wchar_t wc;
- int l;
mbstate_t mps;
if (MB_CUR_MAX == 1 || is_basic (s[i]))
return ((wchar_t)s[i]);
- l = strlen (s);
if (i >= (l - 1))
return ((wchar_t)s[i]);
memset (&mps, 0, sizeof (mbstate_t));
@@ -143,7 +141,7 @@ sh_modcase (string, pat, flags)
inword = 0;
while (start < end)
{
- wc = cval ((char *)string, start);
+ wc = cval ((char *)string, start, end);
if (iswalnum (wc) == 0)
inword = 0;
diff --git a/lib/sh/fmtullong.c b/lib/sh/fmtullong.c
index 97a1dc18..46eaf509 100644
--- a/lib/sh/fmtullong.c
+++ b/lib/sh/fmtullong.c
@@ -20,7 +20,7 @@
#include <config.h>
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
#define LONG long long
#define UNSIGNED_LONG unsigned long long
diff --git a/lib/sh/input_avail.c b/lib/sh/input_avail.c
index 695165fd..2ac44616 100644
--- a/lib/sh/input_avail.c
+++ b/lib/sh/input_avail.c
@@ -110,7 +110,7 @@ nchars_avail (fd, nchars)
#if defined(HAVE_SELECT)
fd_set readfds, exceptfds;
#endif
-#if defined (HAVE_PSELECT)
+#if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
sigset_t set, oset;
#endif
diff --git a/lib/sh/oslib.c b/lib/sh/oslib.c
index 65eb99d9..edc5c6f2 100644
--- a/lib/sh/oslib.c
+++ b/lib/sh/oslib.c
@@ -167,8 +167,8 @@ getdtablesize ()
# endif
void
bcopy (s,d,n)
- char *d, *s;
- int n;
+ void *d, *s;
+ size_t n;
{
FASTCOPY (s, d, n);
}
@@ -180,8 +180,8 @@ bcopy (s,d,n)
# endif
void
bzero (s, n)
- char *s;
- int n;
+ void *s;
+ size_t n;
{
register int i;
register char *r;
@@ -197,7 +197,7 @@ bzero (s, n)
int
gethostname (name, namelen)
char *name;
- int namelen;
+ size_t namelen;
{
int i;
struct utsname ut;
@@ -214,7 +214,7 @@ gethostname (name, namelen)
int
gethostname (name, namelen)
char *name;
- int namelen;
+ size_t namelen;
{
strncpy (name, "unknown", namelen);
name[namelen] = '\0';
@@ -237,7 +237,7 @@ killpg (pgrp, sig)
int
mkfifo (path, mode)
char *path;
- int mode;
+ mode_t mode;
{
#if defined (S_IFIFO)
return (mknod (path, (mode | S_IFIFO), 0));
diff --git a/lib/sh/setlinebuf.c b/lib/sh/setlinebuf.c
index 6473ddfc..dd76e9fc 100644
--- a/lib/sh/setlinebuf.c
+++ b/lib/sh/setlinebuf.c
@@ -1,6 +1,6 @@
/* setlinebuf.c - line-buffer a stdio stream. */
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997,2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -25,36 +25,39 @@
#include <xmalloc.h>
#if defined (USING_BASH_MALLOC)
-# define LBUF_BUFSIZE 1008
+# define LBUF_BUFSIZE 2016
#else
# define LBUF_BUFSIZE BUFSIZ
#endif
+static char *stdoutbuf = 0;
+static char *stderrbuf = 0;
+
/* Cause STREAM to buffer lines as opposed to characters or blocks. */
int
sh_setlinebuf (stream)
FILE *stream;
{
- char *local_linebuf;
-
#if !defined (HAVE_SETLINEBUF) && !defined (HAVE_SETVBUF)
return (0);
#endif
+#if defined (HAVE_SETVBUF)
+ char *local_linebuf;
+
#if defined (USING_BASH_MALLOC)
- local_linebuf = (char *)xmalloc (LBUF_BUFSIZE);
+ if (stream == stdout && stdoutbuf == 0)
+ local_linebuf = stdoutbuf = (char *)xmalloc (LBUF_BUFSIZE);
+ else if (stream == stderr && stderrbuf == 0)
+ local_linebuf = stderrbuf = (char *)xmalloc (LBUF_BUFSIZE);
+ else
+ local_linebuf = (char *)NULL; /* let stdio handle it */
#else
local_linebuf = (char *)NULL;
#endif
-#if defined (HAVE_SETVBUF)
-
-# if defined (SETVBUF_REVERSED)
- return (setvbuf (stream, _IOLBF, local_linebuf, LBUF_BUFSIZE));
-# else /* !SETVBUF_REVERSED */
return (setvbuf (stream, local_linebuf, _IOLBF, LBUF_BUFSIZE));
-# endif /* !SETVBUF_REVERSED */
-# else /* !HAVE_SETVBUF */
+#else /* !HAVE_SETVBUF */
setlinebuf (stream);
return (0);
diff --git a/lib/sh/shmatch.c b/lib/sh/shmatch.c
index d6e7f904..a717d45c 100644
--- a/lib/sh/shmatch.c
+++ b/lib/sh/shmatch.c
@@ -2,7 +2,7 @@
* shmatch.c -- shell interface to posix regular expression matching.
*/
-/* Copyright (C) 2003-2015 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -41,6 +41,10 @@
extern int glob_ignore_case, match_ignore_case;
+#if defined (ARRAY_VARS)
+extern SHELL_VAR *builtin_find_indexed_array (char *, int);
+#endif
+
int
sh_regmatch (string, pattern, flags)
const char *string;
@@ -92,11 +96,16 @@ sh_regmatch (string, pattern, flags)
/* Store the parenthesized subexpressions in the array BASH_REMATCH.
Element 0 is the portion that matched the entire regexp. Element 1
is the part that matched the first subexpression, and so on. */
- unbind_variable_noref ("BASH_REMATCH");
+#if 1
+ unbind_global_variable_noref ("BASH_REMATCH");
rematch = make_new_array_variable ("BASH_REMATCH");
- amatch = array_cell (rematch);
+#else
+ /* TAG:bash-5.3 */
+ rematch = builtin_find_indexed_array ("BASH_REMATCH", 1);
+#endif
+ amatch = rematch ? array_cell (rematch) : (ARRAY *)0;
- if (matches && (flags & SHMAT_SUBEXP) && result == EXECUTION_SUCCESS && subexp_str)
+ if (matches && amatch && (flags & SHMAT_SUBEXP) && result == EXECUTION_SUCCESS && subexp_str)
{
for (subexp_ind = 0; subexp_ind <= regex.re_nsub; subexp_ind++)
{
diff --git a/lib/sh/shquote.c b/lib/sh/shquote.c
index 680f84ed..26fe0185 100644
--- a/lib/sh/shquote.c
+++ b/lib/sh/shquote.c
@@ -311,12 +311,13 @@ sh_backslash_quote (string, table, flags)
return (result);
}
-#if defined (PROMPT_STRING_DECODE)
+#if defined (PROMPT_STRING_DECODE) || defined (TRANSLATABLE_STRINGS)
/* Quote characters that get special treatment when in double quotes in STRING
- using backslashes. Return a new string. */
+ using backslashes. FLAGS is reserved for future use. Return a new string. */
char *
-sh_backslash_quote_for_double_quotes (string)
+sh_backslash_quote_for_double_quotes (string, flags)
char *string;
+ int flags;
{
unsigned char c;
char *result, *r, *s, *send;
diff --git a/lib/sh/snprintf.c b/lib/sh/snprintf.c
index 406a3a50..1f0f4c73 100644
--- a/lib/sh/snprintf.c
+++ b/lib/sh/snprintf.c
@@ -70,7 +70,7 @@
#endif
#if defined(DRIVER) && !defined(HAVE_CONFIG_H)
-#define HAVE_LONG_LONG
+#define HAVE_LONG_LONG_INT
#define HAVE_LONG_DOUBLE
#ifdef __linux__
#define HAVE_PRINTF_A_FORMAT
@@ -286,7 +286,7 @@ static void floating PARAMS((struct DATA *, double));
static void exponent PARAMS((struct DATA *, double));
#endif
static void number PARAMS((struct DATA *, unsigned long, int));
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
static void lnumber PARAMS((struct DATA *, unsigned long long, int));
#endif
static void pointer PARAMS((struct DATA *, unsigned long));
@@ -767,7 +767,7 @@ number(p, d, base)
FREE (t);
}
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
/*
* identical to number() but works for `long long'
*/
@@ -1262,7 +1262,7 @@ vsnprintf_internal(data, string, length, format, args)
long double ld; /* for later */
#endif
unsigned long ul;
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_UNSIGNED_LONG_LONG_INT
unsigned long long ull;
#endif
int state, i, c, n;
@@ -1486,7 +1486,7 @@ conv_break:
/* FALLTHROUGH */
case 'u':
STAR_ARGS(data);
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
if (data->flags & PF_LONGLONG)
{
ull = GETARG (unsigned long long);
@@ -1506,7 +1506,7 @@ conv_break:
case 'd': /* decimal */
case 'i':
STAR_ARGS(data);
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
if (data->flags & PF_LONGLONG)
{
ull = GETARG (long long);
@@ -1522,7 +1522,7 @@ conv_break:
break;
case 'o': /* octal */
STAR_ARGS(data);
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
if (data->flags & PF_LONGLONG)
{
ull = GETARG (unsigned long long);
@@ -1539,7 +1539,7 @@ conv_break:
case 'x':
case 'X': /* hexadecimal */
STAR_ARGS(data);
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
if (data->flags & PF_LONGLONG)
{
ull = GETARG (unsigned long long);
@@ -1602,7 +1602,7 @@ conv_break:
state = 0;
break;
case 'n':
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
if (data->flags & PF_LONGLONG)
*(GETARG (long long *)) = data->counter;
else
@@ -2082,7 +2082,7 @@ main()
printf("<%s>\n", holder);
printf("<%s>\n\n", h);
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
printf ("<%%llu> LLONG_MAX+1\n");
i = snprintf(holder, 100, "%llu", (unsigned long long)(LLONG_MAX)+1);
i = asprintf(&h, "%llu", (unsigned long long)(LLONG_MAX)+1);
diff --git a/lib/sh/strdup.c b/lib/sh/strdup.c
index 90fa3532..3d35f7c0 100644
--- a/lib/sh/strdup.c
+++ b/lib/sh/strdup.c
@@ -17,7 +17,6 @@
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
-
#include <config.h>
diff --git a/lib/sh/strftime.c b/lib/sh/strftime.c
index 08ccb9a3..60bee79f 100644
--- a/lib/sh/strftime.c
+++ b/lib/sh/strftime.c
@@ -59,16 +59,13 @@
*/
#include <config.h>
+#include <sys/types.h>
+
#include <stdio.h>
#include <ctype.h>
-#include <time.h>
+#include <posixtime.h>
#include <errno.h>
-#if defined(TM_IN_SYS_TIME)
-#include <sys/types.h>
-#include <sys/time.h>
-#endif
-
#include <stdlib.h>
#include <string.h>
diff --git a/lib/sh/strtoimax.c b/lib/sh/strtoimax.c
index 676e02ef..584fa0ba 100644
--- a/lib/sh/strtoimax.c
+++ b/lib/sh/strtoimax.c
@@ -51,7 +51,7 @@ extern long strtol PARAMS((const char *, char **, int));
#ifndef HAVE_DECL_STRTOLL
"this configure-time declaration test was not run"
#endif
-#if !HAVE_DECL_STRTOLL && HAVE_LONG_LONG
+#if !HAVE_DECL_STRTOLL && HAVE_LONG_LONG_INT
extern long long strtoll PARAMS((const char *, char **, int));
#endif
@@ -65,7 +65,7 @@ strtoimax (ptr, endptr, base)
char **endptr;
int base;
{
-#if HAVE_LONG_LONG
+#if HAVE_LONG_LONG_INT
verify(size_is_that_of_long_or_long_long,
(sizeof (intmax_t) == sizeof (long) ||
sizeof (intmax_t) == sizeof (long long)));
@@ -86,20 +86,20 @@ main ()
{
char *p, *endptr;
intmax_t x;
-#if HAVE_LONG_LONG
+#if HAVE_LONG_LONG_INT
long long y;
#endif
long z;
printf ("sizeof intmax_t: %d\n", sizeof (intmax_t));
-#if HAVE_LONG_LONG
+#if HAVE_LONG_LONG_INT
printf ("sizeof long long: %d\n", sizeof (long long));
#endif
printf ("sizeof long: %d\n", sizeof (long));
x = strtoimax("42", &endptr, 10);
-#if HAVE_LONG_LONG
+#if HAVE_LONG_LONG_INT
y = strtoll("42", &endptr, 10);
#else
y = -1;
diff --git a/lib/sh/strtol.c b/lib/sh/strtol.c
index 8aa74788..c839a97c 100644
--- a/lib/sh/strtol.c
+++ b/lib/sh/strtol.c
@@ -20,7 +20,7 @@
#include <config.h>
-#if !defined (HAVE_STRTOL)
+#if !HAVE_STRTOL
#include <chartypes.h>
#include <errno.h>
diff --git a/lib/sh/strtoll.c b/lib/sh/strtoll.c
index f6060eef..f90300b9 100644
--- a/lib/sh/strtoll.c
+++ b/lib/sh/strtoll.c
@@ -20,11 +20,11 @@
#include <config.h>
-#if defined (HAVE_LONG_LONG) && !defined (HAVE_STRTOLL)
+#if defined (HAVE_LONG_LONG_INT) && !HAVE_STRTOLL
#define QUAD 1
#undef HAVE_STRTOL
#include "strtol.c"
-#endif /* HAVE_LONG_LONG && !HAVE_STRTOLL */
+#endif /* HAVE_LONG_LONG_INT && !HAVE_STRTOLL */
diff --git a/lib/sh/strtoull.c b/lib/sh/strtoull.c
index 02ddebb9..fe6592e5 100644
--- a/lib/sh/strtoull.c
+++ b/lib/sh/strtoull.c
@@ -20,7 +20,7 @@
#include <config.h>
-#if defined (HAVE_LONG_LONG) && !defined (HAVE_STRTOULL)
+#if defined (HAVE_UNSIGNED_LONG_LONG_INT) && !HAVE_STRTOULL
#define QUAD 1
#define UNSIGNED 1
@@ -28,4 +28,4 @@
#include "strtol.c"
-#endif /* HAVE_LONG_LONG && !HAVE_STRTOULL */
+#endif /* HAVE_UNSIGNED_LONG_LONG_INT && !HAVE_STRTOULL */
diff --git a/lib/sh/strtoumax.c b/lib/sh/strtoumax.c
index 0247e57b..2e26efcf 100644
--- a/lib/sh/strtoumax.c
+++ b/lib/sh/strtoumax.c
@@ -51,7 +51,7 @@ extern unsigned long strtoul PARAMS((const char *, char **, int));
#ifndef HAVE_DECL_STRTOULL
"this configure-time declaration test was not run"
#endif
-#if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG
+#if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG_INT
extern unsigned long long strtoull PARAMS((const char *, char **, int));
#endif
@@ -65,7 +65,7 @@ strtoumax (ptr, endptr, base)
char **endptr;
int base;
{
-#if HAVE_UNSIGNED_LONG_LONG
+#if HAVE_UNSIGNED_LONG_LONG_INT
verify (size_is_that_of_unsigned_long_or_unsigned_long_long,
(sizeof (uintmax_t) == sizeof (unsigned long) ||
sizeof (uintmax_t) == sizeof (unsigned long long)));
@@ -86,20 +86,20 @@ main ()
{
char *p, *endptr;
uintmax_t x;
-#if HAVE_UNSIGNED_LONG_LONG
+#if HAVE_UNSIGNED_LONG_LONG_INT
unsigned long long y;
#endif
unsigned long z;
printf ("sizeof uintmax_t: %d\n", sizeof (uintmax_t));
-#if HAVE_UNSIGNED_LONG_LONG
+#if HAVE_UNSIGNED_LONG_LONG_INT
printf ("sizeof unsigned long long: %d\n", sizeof (unsigned long long));
#endif
printf ("sizeof unsigned long: %d\n", sizeof (unsigned long));
x = strtoumax("42", &endptr, 10);
-#if HAVE_LONG_LONG
+#if HAVE_LONG_LONG_INT
y = strtoull("42", &endptr, 10);
#else
y = 0;
diff --git a/lib/sh/strvis.c b/lib/sh/strvis.c
new file mode 100644
index 00000000..7a11d579
--- /dev/null
+++ b/lib/sh/strvis.c
@@ -0,0 +1,154 @@
+/* strvis.c - make unsafe graphical characters in a string visible. */
+
+/* Copyright (C) 2022 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/* This is a stripped-down version suitable for the shell's use. */
+#include <config.h>
+
+#include <unistd.h>
+
+#include "bashansi.h"
+#include <stdio.h>
+
+#include "chartypes.h"
+#include "bashintl.h"
+#include "shmbutil.h"
+
+#define SAFECHAR(c) ((c) == ' ' || (c) == '\t')
+
+#ifndef RUBOUT
+#define RUBOUT 0x7f
+#endif
+
+#ifndef CTRL_CHAR
+#define CTRL_CHAR(c) ((c) < 0x20)
+#endif
+
+#ifndef META_CHAR
+#define META_CHAR(c) ((c) > 0x7f && (c) <= UCHAR_MAX)
+#endif
+
+#ifndef UNCTRL
+#define UNCTRL(c) (TOUPPER ((c) | 0x40))
+#endif
+
+#ifndef UNMETA
+#define UNMETA(c) ((c) & 0x7f)
+#endif
+
+int
+sh_charvis (s, sindp, slen, ret, rindp)
+ const char *s;
+ size_t *sindp;
+ size_t slen;
+ char *ret;
+ size_t *rindp;
+{
+ unsigned char c;
+ size_t si, ri;
+ const char *send;
+ DECLARE_MBSTATE;
+
+ si = *sindp;
+ ri = *rindp;
+ c = s[*sindp];
+
+#if defined (HANDLE_MULTIBYTE)
+ send = (locale_mb_cur_max > 1) ? s + slen : 0;
+#else
+ send = 0;
+#endif
+
+ if (SAFECHAR (c))
+ {
+ ret[ri++] = c;
+ si++;
+ }
+ else if (c == RUBOUT)
+ {
+ ret[ri++] = '^';
+ ret[ri++] = '?';
+ si++;
+ }
+ else if (CTRL_CHAR (c))
+ {
+ ret[ri++] = '^';
+ ret[ri++] = UNCTRL (c);
+ si++;
+ }
+#if defined (HANDLE_MULTIBYTE)
+ else if (locale_utf8locale && (c & 0x80))
+ COPY_CHAR_I (ret, ri, s, send, si);
+ else if (locale_mb_cur_max > 1 && is_basic (c) == 0)
+ COPY_CHAR_I (ret, ri, s, send, si);
+#endif
+ else if (META_CHAR (c))
+ {
+ ret[ri++] = 'M';
+ ret[ri++] = '-';
+ ret[ri++] = UNMETA (c);
+ si++;
+ }
+ else
+ ret[ri++] = s[si++];
+
+ *sindp = si;
+ *rindp = ri;
+
+ return si;
+}
+
+/* Return a new string with `unsafe' non-graphical characters in S rendered
+ in a visible way. */
+char *
+sh_strvis (string)
+ const char *string;
+{
+ size_t slen, sind;
+ char *ret;
+ size_t retind, retsize;
+ unsigned char c;
+ DECLARE_MBSTATE;
+
+ if (string == 0)
+ return 0;
+ if (*string == '\0')
+ {
+ if ((ret = (char *)malloc (1)) == 0)
+ return 0;
+ ret[0] = '\0';
+ return ret;
+ }
+
+ slen = strlen (string);
+ retsize = 3 * slen + 1;
+
+ ret = (char *)malloc (retsize);
+ if (ret == 0)
+ return 0;
+
+ retind = 0;
+ sind = 0;
+
+ while (string[sind])
+ sind = sh_charvis (string, &sind, slen, ret, &retind);
+
+ ret[retind] = '\0';
+ return ret;
+}
diff --git a/lib/sh/timers.c b/lib/sh/timers.c
new file mode 100644
index 00000000..69b754c9
--- /dev/null
+++ b/lib/sh/timers.c
@@ -0,0 +1,262 @@
+/* timers - functions to manage shell timers */
+
+/* Copyright (C) 2021 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "config.h"
+
+#include "bashtypes.h"
+#include "posixtime.h"
+
+#if defined (HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
+
+#if defined (HAVE_SELECT)
+# include "posixselect.h"
+# include "stat-time.h"
+#endif
+
+#include "sig.h"
+#include "bashjmp.h"
+#include "xmalloc.h"
+
+#include "timer.h"
+
+#include <errno.h>
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
+#ifndef FREE
+#define FREE(s) do { if (s) free (s); } while (0)
+#endif
+
+extern unsigned int falarm (unsigned int, unsigned int);
+
+static void shtimer_zero (sh_timer *);
+
+static void
+shtimer_zero (sh_timer *t)
+{
+ t->tmout.tv_sec = 0;
+ t->tmout.tv_usec = 0;
+
+ t->fd = -1;
+ t->flags = t->alrmflag = 0;
+
+ t->alrm_handler = t->old_handler = 0;
+
+ memset (t->jmpenv, '\0', sizeof (t->jmpenv));
+
+ t->tm_handler = 0;
+ t->data = 0;
+}
+
+sh_timer *
+shtimer_alloc (void)
+{
+ sh_timer *t;
+
+ t = (sh_timer *)xmalloc (sizeof (sh_timer));
+ shtimer_zero (t);
+ return t;
+}
+
+void
+shtimer_flush (sh_timer *t)
+{
+ /* The caller can manage t->data arbitrarily as long as it frees and sets
+ t->data to 0 before calling this function. Otherwise, we do what we can
+ to avoid memleaks. */
+ FREE (t->data);
+ shtimer_zero (t);
+}
+
+void
+shtimer_dispose (sh_timer *t)
+{
+ free (t);
+}
+
+/* We keep the timer as an offset into the future from the time it's set. */
+void
+shtimer_set (sh_timer *t, time_t sec, long usec)
+{
+ struct timeval now;
+
+ if (t->flags & SHTIMER_ALARM)
+ {
+ t->alrmflag = 0; /* just paranoia */
+ t->old_handler = set_signal_handler (SIGALRM, t->alrm_handler);
+ t->flags |= SHTIMER_SIGSET;
+ falarm (t->tmout.tv_sec = sec, t->tmout.tv_usec = usec);
+ t->flags |= SHTIMER_ALRMSET;
+ return;
+ }
+
+ if (gettimeofday (&now, 0) < 0)
+ timerclear (&now);
+
+ t->tmout.tv_sec = now.tv_sec + sec;
+ t->tmout.tv_usec = now.tv_usec + usec;
+ if (t->tmout.tv_usec > USEC_PER_SEC)
+ {
+ t->tmout.tv_sec++;
+ t->tmout.tv_usec -= USEC_PER_SEC;
+ }
+}
+
+void
+shtimer_unset (sh_timer *t)
+{
+ t->tmout.tv_sec = 0;
+ t->tmout.tv_usec = 0;
+
+ if (t->flags & SHTIMER_ALARM)
+ {
+ t->alrmflag = 0;
+ if (t->flags & SHTIMER_ALRMSET)
+ falarm (0, 0);
+ if (t->old_handler && (t->flags & SHTIMER_SIGSET))
+ {
+ set_signal_handler (SIGALRM, t->old_handler);
+ t->flags &= ~SHTIMER_SIGSET;
+ t->old_handler = 0;
+ }
+ }
+}
+
+void
+shtimer_cleanup (sh_timer *t)
+{
+ shtimer_unset (t);
+}
+
+void
+shtimer_clear (sh_timer *t)
+{
+ shtimer_unset (t);
+ shtimer_dispose (t);
+}
+
+int
+shtimer_chktimeout (sh_timer *t)
+{
+ struct timeval now;
+ int r;
+
+ /* Use the flag to avoid returning sigalrm_seen here */
+ if (t->flags & SHTIMER_ALARM)
+ return t->alrmflag;
+
+ /* Could check a flag for this */
+ if (t->tmout.tv_sec == 0 && t->tmout.tv_usec == 0)
+ return 0;
+
+ if (gettimeofday (&now, 0) < 0)
+ return 0;
+ r = ((now.tv_sec > t->tmout.tv_sec) ||
+ (now.tv_sec == t->tmout.tv_sec && now.tv_usec >= t->tmout.tv_usec));
+
+ return r;
+}
+
+#if defined (HAVE_SELECT) || defined (HAVE_PSELECT)
+int
+shtimer_select (sh_timer *t)
+{
+ int r, nfd;
+ sigset_t blocked_sigs, prevmask;
+ struct timeval now, tv;
+ fd_set readfds;
+#if defined (HAVE_PSELECT)
+ struct timespec ts;
+#endif
+
+ /* We don't want a SIGCHLD to interrupt this */
+ sigemptyset (&blocked_sigs);
+# if defined (SIGCHLD)
+ sigaddset (&blocked_sigs, SIGCHLD);
+# endif
+
+ if (gettimeofday (&now, 0) < 0)
+ {
+ if (t->flags & SHTIMER_LONGJMP)
+ sh_longjmp (t->jmpenv, 1);
+ else
+ return -1;
+ }
+
+ /* If the timer has already expired, return immediately */
+ if ((now.tv_sec > t->tmout.tv_sec) ||
+ (now.tv_sec == t->tmout.tv_sec && now.tv_usec >= t->tmout.tv_usec))
+ {
+ if (t->flags & SHTIMER_LONGJMP)
+ sh_longjmp (t->jmpenv, 1);
+ else if (t->tm_handler)
+ return ((*t->tm_handler) (t));
+ else
+ return 0;
+ }
+
+ /* compute timeout */
+ tv.tv_sec = t->tmout.tv_sec - now.tv_sec;
+ tv.tv_usec = t->tmout.tv_usec - now.tv_usec;
+ if (tv.tv_usec < 0)
+ {
+ tv.tv_sec--;
+ tv.tv_usec += USEC_PER_SEC;
+ }
+
+#if defined (HAVE_PSELECT)
+ ts.tv_sec = tv.tv_sec;
+ ts.tv_nsec = tv.tv_usec * 1000;
+#else
+ sigemptyset (&prevmask);
+#endif /* !HAVE_PSELECT */
+
+ nfd = (t->fd >= 0) ? t->fd + 1 : 0;
+ FD_ZERO (&readfds);
+ if (t->fd >= 0)
+ FD_SET (t->fd, &readfds);
+
+#if defined (HAVE_PSELECT)
+ r = pselect(nfd, &readfds, (fd_set *)0, (fd_set *)0, &ts, &blocked_sigs);
+#else
+ sigprocmask (SIG_SETMASK, &blocked_sigs, &prevmask);
+ r = select(nfd, &readfds, (fd_set *)0, (fd_set *)0, &tv);
+ sigprocmask (SIG_SETMASK, &prevmask, NULL);
+#endif
+
+ if (r < 0)
+ return r; /* caller will handle */
+ else if (r == 0 && (t->flags & SHTIMER_LONGJMP))
+ sh_longjmp (t->jmpenv, 1);
+ else if (r == 0 && t->tm_handler)
+ return ((*t->tm_handler) (t));
+ else
+ return r;
+}
+#endif /* !HAVE_TIMEVAL || !HAVE_SELECT */
+
+int
+shtimer_alrm (sh_timer *t)
+{
+ return 0;
+}
diff --git a/lib/sh/unicode.c b/lib/sh/unicode.c
index d95d1e25..d781353b 100644
--- a/lib/sh/unicode.c
+++ b/lib/sh/unicode.c
@@ -145,7 +145,7 @@ u32tocesc (wc, s)
if (wc < 0x10000)
l = sprintf (s, "\\u%04X", wc);
else
- l = sprintf (s, "\\u%08X", wc);
+ l = sprintf (s, "\\U%08X", wc);
return l;
}
diff --git a/lib/sh/winsize.c b/lib/sh/winsize.c
index 861c7c89..846fcd58 100644
--- a/lib/sh/winsize.c
+++ b/lib/sh/winsize.c
@@ -68,6 +68,11 @@ extern int errno;
extern int shell_tty;
#if defined (READLINE)
+/* Let's not call readline, forcing readline to initialize the termcap/terminfo
+ variables it needs, unless we have to. */
+extern int interactive_shell;
+extern int no_line_editing;
+extern int bash_readline_initialized;
extern void rl_set_screen_size PARAMS((int, int));
#endif
extern void sh_set_lines_and_columns PARAMS((int, int));
@@ -87,12 +92,13 @@ get_new_window_size (from_sig, rp, cp)
{
sh_set_lines_and_columns (win.ws_row, win.ws_col);
#if defined (READLINE)
- rl_set_screen_size (win.ws_row, win.ws_col);
+ if ((interactive_shell && no_line_editing == 0) || bash_readline_initialized)
+ rl_set_screen_size (win.ws_row, win.ws_col);
+#endif
if (rp)
*rp = win.ws_row;
if (cp)
*cp = win.ws_col;
-#endif
}
#endif
}
diff --git a/lib/sh/zgetline.c b/lib/sh/zgetline.c
index 8ded1442..5e1ef724 100644
--- a/lib/sh/zgetline.c
+++ b/lib/sh/zgetline.c
@@ -68,7 +68,8 @@ zgetline (fd, lineptr, n, delim, unbuffered_read)
int delim;
int unbuffered_read;
{
- int nr, retval;
+ int retval;
+ size_t nr;
char *line, c;
if (lineptr == 0 || n == 0 || (*lineptr == 0 && *n != 0))
diff --git a/lib/sh/zmapfd.c b/lib/sh/zmapfd.c
index f9e9ed71..9ff50a47 100644
--- a/lib/sh/zmapfd.c
+++ b/lib/sh/zmapfd.c
@@ -54,7 +54,7 @@ zmapfd (fd, ostr, fn)
int rval;
char lbuf[ZBUFSIZ];
char *result;
- int rsize, rind;
+ size_t rsize, rind;
rval = 0;
result = (char *)xmalloc (rsize = ZBUFSIZ);
diff --git a/lib/sh/zread.c b/lib/sh/zread.c
index 71a06a76..dafb7f60 100644
--- a/lib/sh/zread.c
+++ b/lib/sh/zread.c
@@ -46,6 +46,7 @@ extern int executing_builtin;
extern void check_signals_and_traps (void);
extern void check_signals (void);
extern int signal_is_trapped (int);
+extern int read_builtin_timeout (int);
/* Read LEN bytes from FD into BUF. Retry the read on EINTR. Any other
error causes the loop to break. */
@@ -58,7 +59,10 @@ zread (fd, buf, len)
ssize_t r;
check_signals (); /* check for signals before a blocking read */
- while ((r = read (fd, buf, len)) < 0 && errno == EINTR)
+ /* should generalize into a mechanism where different parts of the shell can
+ `register' timeouts and have them checked here. */
+ while (((r = read_builtin_timeout (fd)) < 0 || (r = read (fd, buf, len)) < 0) &&
+ errno == EINTR)
{
int t;
t = errno;
diff --git a/lib/termcap/termcap.c b/lib/termcap/termcap.c
index ba3dab2c..87fae05f 100644
--- a/lib/termcap/termcap.c
+++ b/lib/termcap/termcap.c
@@ -52,15 +52,18 @@ extern char *realloc ();
#else /* not HAVE_CONFIG_H */
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
#include <stdlib.h>
-#include <string.h>
#else
char *getenv ();
char *malloc ();
char *realloc ();
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
/* Do this after the include, in case string.h prototypes bcopy. */
#if (defined(HAVE_STRING_H) || defined(STDC_HEADERS)) && !defined(bcopy)
#define bcopy(s, d, n) memcpy ((d), (s), (n))
diff --git a/lib/tilde/Makefile.in b/lib/tilde/Makefile.in
index c21d3897..e61c6718 100644
--- a/lib/tilde/Makefile.in
+++ b/lib/tilde/Makefile.in
@@ -4,7 +4,7 @@
# #
####################################################################
-# Copyright (C) 1996-2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -42,6 +42,7 @@ PROFILE_FLAGS = @PROFILE_FLAGS@
CFLAGS = @CFLAGS@
LOCAL_CFLAGS = @LOCAL_CFLAGS@
+STYLE_CFLAGS = @STYLE_CFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@ @LOCAL_LDFLAGS@
@@ -53,7 +54,7 @@ BASHINCDIR = ${topdir}/include
INCLUDES = -I. -I../.. -I$(topdir) -I${BASHINCDIR} -I$(topdir)/lib
CCFLAGS = ${ASAN_CFLAGS} $(PROFILE_FLAGS) $(DEFS) $(LOCAL_DEFS) $(CPPFLAGS) \
- ${INCLUDES} $(LOCAL_CFLAGS) $(CFLAGS)
+ ${INCLUDES} $(STYLE_CFLAGS) $(LOCAL_CFLAGS) $(CFLAGS)
.c.o:
$(CC) -c $(CCFLAGS) $<
diff --git a/lib/tilde/tilde.h b/lib/tilde/tilde.h
index e26dd047..bc8022af 100644
--- a/lib/tilde/tilde.h
+++ b/lib/tilde/tilde.h
@@ -1,6 +1,6 @@
/* tilde.h: Externally available variables and function in libtilde.a. */
-/* Copyright (C) 1992-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2009,2021 Free Software Foundation, Inc.
This file contains the Readline Library (Readline), a set of
routines for providing Emacs style line input to programs that ask
@@ -27,19 +27,7 @@
extern "C" {
#endif
-/* A function can be defined using prototypes and compile on both ANSI C
- and traditional C compilers with something like this:
- extern char *func PARAMS((char *, char *, int)); */
-
-#if !defined (PARAMS)
-# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-# define PARAMS(protos) protos
-# else
-# define PARAMS(protos) ()
-# endif
-#endif
-
-typedef char *tilde_hook_func_t PARAMS((char *));
+typedef char *tilde_hook_func_t (char *);
/* If non-null, this contains the address of a function that the application
wants called before trying the standard tilde expansions. The function
@@ -64,14 +52,14 @@ extern char **tilde_additional_prefixes;
extern char **tilde_additional_suffixes;
/* Return a new string which is the result of tilde expanding STRING. */
-extern char *tilde_expand PARAMS((const char *));
+extern char *tilde_expand (const char *);
/* Do the work of tilde expansion on FILENAME. FILENAME starts with a
tilde. If there is no expansion, call tilde_expansion_failure_hook. */
-extern char *tilde_expand_word PARAMS((const char *));
+extern char *tilde_expand_word (const char *);
/* Find the portion of the string beginning with ~ that should be expanded. */
-extern char *tilde_find_word PARAMS((const char *, int, int *));
+extern char *tilde_find_word (const char *, int, int *);
#ifdef __cplusplus
}
diff --git a/locale.c b/locale.c
index 17ccc585..fabf7b12 100644
--- a/locale.c
+++ b/locale.c
@@ -1,6 +1,6 @@
/* locale.c - Miscellaneous internationalization functions. */
-/* Copyright (C) 1996-2009,2012,2016,2020 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2009,2012,2016-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -47,6 +47,8 @@ int locale_utf8locale;
int locale_mb_cur_max; /* value of MB_CUR_MAX for current locale (LC_CTYPE) */
int locale_shiftstates = 0;
+int singlequote_translations = 0; /* single-quote output of $"..." */
+
extern int dump_translatable_strings, dump_po_strings;
/* The current locale when the program begins */
@@ -91,7 +93,7 @@ set_default_locale ()
#if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
#else
- local_shiftstates = 0;
+ locale_shiftstates = 0;
#endif
}
@@ -117,7 +119,7 @@ set_default_locale_vars ()
# if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
# else
- local_shiftstates = 0;
+ locale_shiftstates = 0;
# endif
u32reset ();
@@ -226,7 +228,7 @@ set_locale_var (var, value)
# if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
# else
- local_shiftstates = 0;
+ locale_shiftstates = 0;
# endif
u32reset ();
return r;
@@ -250,7 +252,7 @@ set_locale_var (var, value)
#if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
#else
- local_shiftstates = 0;
+ locale_shiftstates = 0;
#endif
u32reset ();
}
@@ -391,13 +393,14 @@ reset_locale_vars ()
# if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
# else
- local_shiftstates = 0;
+ locale_shiftstates = 0;
# endif
u32reset ();
#endif
return 1;
}
+#if defined (TRANSLATABLE_STRINGS)
/* Translate the contents of STRING, a $"..." quoted string, according
to the current locale. In the `C' or `POSIX' locale, or if gettext()
is not available, the passed string is returned unchanged. The
@@ -512,7 +515,7 @@ mk_msgstr (string, foundnlp)
by the caller. The length of the translated string is returned in LENP,
if non-null. */
char *
-localeexpand (string, start, end, lineno, lenp)
+locale_expand (string, start, end, lineno, lenp)
char *string;
int start, end, lineno, *lenp;
{
@@ -565,6 +568,7 @@ localeexpand (string, start, end, lineno, lenp)
return (temp);
}
}
+#endif
/* Set every character in the <blank> character class to be a shell break
character for the lexical analyzer when the locale changes. */
diff --git a/m4/gettext.m4 b/m4/gettext.m4
index fec38045..8231ce05 100644
--- a/m4/gettext.m4
+++ b/m4/gettext.m4
@@ -1,5 +1,5 @@
# gettext.m4 serial 69 (gettext-0.19.9)
-dnl Copyright (C) 1995-2014, 2016, 2018-2019 Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2014, 2016, 2018-2019, 2021 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -16,10 +16,12 @@ dnl They are *not* in the public domain.
dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
+dnl
+dnl Modified for bash use by Chet Ramey <chet.ramey@case.edu>, 2021
dnl Macro to add for using GNU gettext.
-dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl Usage: BASH_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
dnl default (if it is not specified or empty) is 'no-libtool'.
dnl INTLSYMBOL should be 'external' for packages with no intl directory,
@@ -54,14 +56,12 @@ dnl GNU format catalogs when building on a platform with an X/Open gettext),
dnl but we keep it in order not to force irrelevant filename changes on the
dnl maintainers.
dnl
-AC_DEFUN([AM_GNU_GETTEXT],
+AC_DEFUN([BASH_GNU_GETTEXT],
[
dnl Argument checking.
ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
])])])])])
- ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
- [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
])])])])
diff --git a/m4/strtoimax.m4 b/m4/strtoimax.m4
new file mode 100644
index 00000000..30985723
--- /dev/null
+++ b/m4/strtoimax.m4
@@ -0,0 +1,35 @@
+dnl Copyright (C) 2022 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Make sure we replace strtoimax if we don't have a declaration
+dnl We can use this as a template for future function checks
+
+AC_DEFUN([BASH_FUNC_STRTOIMAX], [
+AC_MSG_CHECKING([for usable strtoimax])
+AC_CACHE_VAL(bash_cv_func_strtoimax,
+[
+ HAVE_STRTOIMAX=0 HAVE_DECL_STRTOIMAX=0
+
+ AC_CHECK_FUNCS([strtoimax])
+ AC_CHECK_DECLS([strtoimax])
+
+ if test "$ac_cv_func_strtoimax" = "yes" ; then
+ HAVE_STRTOIMAX=1
+ fi
+ if test "$ac_cv_have_decl_strtoimax" = "yes" ; then
+ HAVE_DECL_STRTOIMAX=1
+ fi
+
+ if test "$HAVE_STRTOIMAX" = 0 || test "$HAVE_DECL_STRTOIMAX" = 0 ; then
+ bash_cv_func_strtoimax=no REPLACE_STRTOIMAX=1
+ else
+ bash_cv_func_strtoimax=yes
+ fi
+])
+AC_MSG_RESULT($bash_cv_func_strtoimax)
+if test $bash_cv_func_strtoimax = yes; then
+AC_LIBOBJ(strtoimax)
+fi
+])
diff --git a/m4/threadlib.m4 b/m4/threadlib.m4
index bfc3bac8..60e4197b 100644
--- a/m4/threadlib.m4
+++ b/m4/threadlib.m4
@@ -51,8 +51,8 @@ AC_DEFUN([gl_THREADLIB_EARLY_BODY],
[m4_divert_text([DEFAULTS], [gl_use_threads_default=no])],
[m4_divert_text([DEFAULTS], [gl_use_threads_default=])])
AC_ARG_ENABLE([threads],
-AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
-AC_HELP_STRING([--disable-threads], [build without multithread safety])]),
+AS_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
+AS_HELP_STRING([--disable-threads], [build without multithread safety])]),
[gl_use_threads=$enableval],
[if test -n "$gl_use_threads_default"; then
gl_use_threads="$gl_use_threads_default"
@@ -94,7 +94,7 @@ changequote([,])dnl
# need special flags to disable these optimizations. For example, the
# definition of 'errno' in <errno.h>.
case "$host_os" in
- aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+ aix* | freebsd* | midnightbsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
esac
fi
diff --git a/make_cmd.c b/make_cmd.c
index 2d7ac960..98151a41 100644
--- a/make_cmd.c
+++ b/make_cmd.c
@@ -1,7 +1,7 @@
/* make_cmd.c -- Functions for making instances of the various
parser constructs. */
-/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -251,10 +251,7 @@ make_arith_for_expr (s)
if (s == 0 || *s == '\0')
return ((WORD_LIST *)NULL);
wd = make_word (s);
- wd->flags |= W_NOGLOB|W_NOSPLIT|W_QUOTED|W_DQUOTE; /* no word splitting or globbing */
-#if defined (PROCESS_SUBSTITUTION)
- wd->flags |= W_NOPROCSUB; /* no process substitution */
-#endif
+ wd->flags |= W_NOGLOB|W_NOSPLIT|W_QUOTED|W_NOTILDE|W_NOPROCSUB; /* no word splitting or globbing */
result = make_word_list (wd, (WORD_LIST *)NULL);
return result;
}
@@ -575,12 +572,19 @@ make_here_document (temp, lineno)
kill_leading = temp->instruction == r_deblank_reading_until;
- document = (char *)NULL;
+ full_line = document = (char *)NULL;
document_index = document_size = 0;
+ delim_unquoted = (temp->redirectee.filename->flags & W_QUOTED) == 0;
+
/* Quote removal is the only expansion performed on the delimiter
for here documents, making it an extremely special case. */
- redir_word = string_quote_removal (temp->redirectee.filename->word, 0);
+ /* "If any part of word is quoted, the delimiter shall be formed by
+ performing quote removal on word." */
+ if (delim_unquoted == 0)
+ redir_word = string_quote_removal (temp->redirectee.filename->word, 0);
+ else
+ redir_word = savestring (temp->redirectee.filename->word);
/* redirection_expand will return NULL if the expansion results in
multiple words or no words. Check for that here, and just abort
@@ -607,7 +611,6 @@ make_here_document (temp, lineno)
/* If the here-document delimiter was quoted, the lines should
be read verbatim from the input. If it was not quoted, we
need to perform backslash-quoted newline removal. */
- delim_unquoted = (temp->redirectee.filename->flags & W_QUOTED) == 0;
while (full_line = read_secondary_line (delim_unquoted))
{
register char *line;
@@ -628,7 +631,7 @@ make_here_document (temp, lineno)
check the word before stripping the whitespace. This
is a hack, though. */
if (STREQN (line, redir_word, redir_len) && line[redir_len] == '\n')
- goto document_done;
+ break;
while (*line == '\t')
line++;
@@ -638,7 +641,15 @@ make_here_document (temp, lineno)
continue;
if (STREQN (line, redir_word, redir_len) && line[redir_len] == '\n')
- goto document_done;
+ break;
+
+ /* Backwards compatibility here */
+ if (STREQN (line, redir_word, redir_len) && (parser_state & PST_EOFTOKEN) && shell_eof_token && strchr (line+redir_len, shell_eof_token))
+ {
+ shell_ungets (line + redir_len);
+ full_line = 0;
+ break;
+ }
len = strlen (line);
if (len + document_index >= document_size)
diff --git a/nojobs.c b/nojobs.c
index f2563ca0..b7504cd8 100644
--- a/nojobs.c
+++ b/nojobs.c
@@ -3,7 +3,7 @@
/* This file works under BSD, System V, minix, and Posix systems. It does
not implement job control. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -664,7 +664,7 @@ wait_for_single_pid (pid, flags)
if (pstatus == PROC_BAD)
{
internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid);
- return (127);
+ return (257);
}
if (pstatus != PROC_STILL_ALIVE)
@@ -707,18 +707,20 @@ wait_for_single_pid (pid, flags)
/* Wait for all of the shell's children to exit. Called by the `wait'
builtin. */
-void
+int
wait_for_background_pids (ps)
struct procstat *ps;
{
pid_t got_pid;
WAIT status;
+ int njobs;
/* If we aren't using job control, we let the kernel take care of the
bookkeeping for us. wait () will return -1 and set errno to ECHILD
when there are no more unwaited-for child processes on both
4.2 BSD-based and System V-based systems. */
+ njobs = 0;
siginterrupt (SIGINT, 1);
/* Wait for ECHILD */
@@ -726,6 +728,7 @@ wait_for_background_pids (ps)
while ((got_pid = WAITPID (-1, &status, 0)) != -1)
{
waiting_for_child = 0;
+ njobs++;
set_pid_status (got_pid, status);
if (ps)
{
@@ -749,6 +752,8 @@ wait_for_background_pids (ps)
mark_dead_jobs_as_notified (1);
cleanup_dead_jobs ();
+
+ return njobs;
}
void
diff --git a/parse.y b/parse.y
index f4168c7c..d887eecb 100644
--- a/parse.y
+++ b/parse.y
@@ -1,6 +1,6 @@
/* parse.y - Yacc grammar for bash. */
-/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -114,11 +114,24 @@ typedef void *alias_t;
# define MBTEST(x) ((x))
#endif
+#define EXTEND_SHELL_INPUT_LINE_PROPERTY() \
+do { \
+ if (shell_input_line_len + 2 > shell_input_line_propsize) \
+ { \
+ shell_input_line_propsize = shell_input_line_len + 2; \
+ shell_input_line_property = (char *)xrealloc (shell_input_line_property, \
+ shell_input_line_propsize); \
+ } \
+} while (0)
+
#if defined (EXTENDED_GLOB)
extern int extended_glob;
#endif
+#if defined (TRANSLATABLE_STRINGS)
extern int dump_translatable_strings, dump_po_strings;
+extern int singlequote_translations;
+#endif /* TRANSLATABLE_STRINGS */
#if !defined (errno)
extern int errno;
@@ -144,7 +157,6 @@ static int yy_readline_unget PARAMS((int));
static int yy_string_get PARAMS((void));
static int yy_string_unget PARAMS((int));
-static void rewind_input_string PARAMS((void));
static int yy_stream_get PARAMS((void));
static int yy_stream_unget PARAMS((int));
@@ -152,11 +164,9 @@ static int shell_getc PARAMS((int));
static void shell_ungetc PARAMS((int));
static void discard_until PARAMS((int));
-#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
static void push_string PARAMS((char *, int, alias_t *));
static void pop_string PARAMS((void));
static void free_string_list PARAMS((void));
-#endif
static char *read_a_line PARAMS((int));
@@ -200,7 +210,7 @@ static void print_offending_line PARAMS((void));
static void report_syntax_error PARAMS((char *));
static void handle_eof_input_unit PARAMS((void));
-static void prompt_again PARAMS((void));
+static void prompt_again PARAMS((int));
#if 0
static void reset_readline_prompt PARAMS((void));
#endif
@@ -353,16 +363,20 @@ static FILE *yyerrstream;
%token LESS_LESS_MINUS AND_GREATER AND_GREATER_GREATER LESS_GREATER
%token GREATER_BAR BAR_AND
+/* Special; never created by yylex; only set by parse_comsub and xparse_dolparen */
+%token DOLPAREN
+
/* The types that the various syntactical units return. */
%type <command> inputunit command pipeline pipeline_command
-%type <command> list list0 list1 compound_list simple_list simple_list1
+%type <command> list0 list1 compound_list simple_list simple_list1
%type <command> simple_command shell_command
%type <command> for_command select_command case_command group_command
%type <command> arith_command
%type <command> cond_command
%type <command> arith_for_command
%type <command> coproc
+%type <command> comsub
%type <command> function_def function_body if_command elif_clause subshell
%type <redirect> redirection redirection_list
%type <element> simple_command_element
@@ -389,6 +403,14 @@ inputunit: simple_list simple_list_terminator
parser_state |= PST_EOFTOKEN;
YYACCEPT;
}
+ | comsub
+ {
+ /* This is special; look at the production and how
+ parse_comsub sets token_to_read */
+ global_command = $1;
+ eof_encountered = 0;
+ YYACCEPT;
+ }
| '\n'
{
/* Case of regular command, but not a very
@@ -865,32 +887,32 @@ arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_
}
;
-select_command: SELECT WORD newline_list DO list DONE
+select_command: SELECT WORD newline_list DO compound_list DONE
{
$$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]);
if (word_top > 0) word_top--;
}
- | SELECT WORD newline_list '{' list '}'
+ | SELECT WORD newline_list '{' compound_list '}'
{
$$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $5, word_lineno[word_top]);
if (word_top > 0) word_top--;
}
- | SELECT WORD ';' newline_list DO list DONE
+ | SELECT WORD ';' newline_list DO compound_list DONE
{
$$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]);
if (word_top > 0) word_top--;
}
- | SELECT WORD ';' newline_list '{' list '}'
+ | SELECT WORD ';' newline_list '{' compound_list '}'
{
$$ = make_select_command ($2, add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), $6, word_lineno[word_top]);
if (word_top > 0) word_top--;
}
- | SELECT WORD newline_list IN word_list list_terminator newline_list DO list DONE
+ | SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE
{
$$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]);
if (word_top > 0) word_top--;
}
- | SELECT WORD newline_list IN word_list list_terminator newline_list '{' list '}'
+ | SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'
{
$$ = make_select_command ($2, REVERSE_LIST ($5, WORD_LIST *), $9, word_lineno[word_top]);
if (word_top > 0) word_top--;
@@ -974,6 +996,16 @@ subshell: '(' compound_list ')'
}
;
+comsub: DOLPAREN compound_list ')'
+ {
+ $$ = $2;
+ }
+ | DOLPAREN newline_list ')'
+ {
+ $$ = (COMMAND *)NULL;
+ }
+ ;
+
coproc: COPROC shell_command
{
$$ = make_coproc_command ("COPROC", $2);
@@ -1094,15 +1126,12 @@ pattern: WORD
It must end with a newline or semicolon.
Lists are used within commands such as if, for, while. */
-list: newline_list list0
+compound_list: newline_list list0
{
$$ = $2;
- if (need_here_doc)
+ if (need_here_doc && last_read_token == '\n')
gather_here_documents ();
}
- ;
-
-compound_list: list
| newline_list list1
{
$$ = $2;
@@ -1135,7 +1164,12 @@ list1: list1 AND_AND newline_list list1
| list1 ';' newline_list list1
{ $$ = command_connect ($1, $4, ';'); }
| list1 '\n' newline_list list1
- { $$ = command_connect ($1, $4, ';'); }
+ {
+ if (parser_state & PST_CMDSUBST)
+ $$ = command_connect ($1, $4, '\n');
+ else
+ $$ = command_connect ($1, $4, ';');
+ }
| pipeline_command
{ $$ = $1; }
;
@@ -1166,12 +1200,14 @@ simple_list: simple_list1
{
$$ = $1;
if (need_here_doc)
- gather_here_documents ();
+ gather_here_documents (); /* XXX */
if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token)
{
+INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 -> simple_list"));
global_command = $1;
eof_encountered = 0;
- rewind_input_string ();
+ if (bash_input.type == st_string)
+ rewind_input_string ();
YYACCEPT;
}
}
@@ -1182,12 +1218,14 @@ simple_list: simple_list1
else
$$ = command_connect ($1, (COMMAND *)NULL, '&');
if (need_here_doc)
- gather_here_documents ();
+ gather_here_documents (); /* XXX */
if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token)
{
+INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 '&' -> simple_list"));
global_command = $1;
eof_encountered = 0;
- rewind_input_string ();
+ if (bash_input.type == st_string)
+ rewind_input_string ();
YYACCEPT;
}
}
@@ -1195,12 +1233,14 @@ simple_list: simple_list1
{
$$ = $1;
if (need_here_doc)
- gather_here_documents ();
+ gather_here_documents (); /* XXX */
if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token)
{
+INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 ';' -> simple_list"));
global_command = $1;
eof_encountered = 0;
- rewind_input_string ();
+ if (bash_input.type == st_string)
+ rewind_input_string ();
YYACCEPT;
}
}
@@ -1614,7 +1654,7 @@ with_input_from_string (string, name)
That is the true input location. Rewind bash_input.location.string by
that number of characters, so it points to the last character actually
consumed by the parser. */
-static void
+void
rewind_input_string ()
{
int xchars;
@@ -1626,7 +1666,7 @@ rewind_input_string ()
xchars++;
/* XXX - how to reflect bash_input.location.string back to string passed to
- parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how
+ parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how
far into the string we parsed. parse_and_execute knows where bash_input.
location.string is, and how far from orig_string that is -- that's the
number of characters the command consumed. */
@@ -1823,8 +1863,6 @@ restore_token_state (ts)
* everything between a `;;' and the next `)' or `esac'
*/
-#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
-
#define END_OF_ALIAS 0
/*
@@ -1848,7 +1886,7 @@ typedef struct string_saver {
#if defined (ALIAS)
alias_t *expander; /* alias that caused this line to be pushed. */
#endif
- size_t saved_line_size, saved_line_index;
+ size_t saved_line_size, saved_line_index, saved_line_len;
int saved_line_terminator;
int flags;
} STRING_SAVER;
@@ -1874,6 +1912,7 @@ push_string (s, expand, ap)
temp->expand_alias = expand;
temp->saved_line = shell_input_line;
temp->saved_line_size = shell_input_line_size;
+ temp->saved_line_len = shell_input_line_len;
temp->saved_line_index = shell_input_line_index;
temp->saved_line_terminator = shell_input_line_terminator;
temp->flags = 0;
@@ -1891,7 +1930,7 @@ push_string (s, expand, ap)
#endif
shell_input_line = s;
- shell_input_line_size = STRLEN (s);
+ shell_input_line_size = shell_input_line_len = STRLEN (s);
shell_input_line_index = 0;
shell_input_line_terminator = '\0';
#if 0
@@ -1916,12 +1955,15 @@ pop_string ()
shell_input_line = pushed_string_list->saved_line;
shell_input_line_index = pushed_string_list->saved_line_index;
shell_input_line_size = pushed_string_list->saved_line_size;
+ shell_input_line_len = pushed_string_list->saved_line_len;
shell_input_line_terminator = pushed_string_list->saved_line_terminator;
+#if defined (ALIAS)
if (pushed_string_list->expand_alias)
parser_state |= PST_ALEXPNEXT;
else
parser_state &= ~PST_ALEXPNEXT;
+#endif
t = pushed_string_list;
pushed_string_list = pushed_string_list->next;
@@ -1955,8 +1997,6 @@ free_string_list ()
pushed_string_list = (STRING_SAVER *)NULL;
}
-#endif /* ALIAS || DPAREN_ARITHMETIC */
-
void
free_pushed_string_input ()
{
@@ -2046,12 +2086,7 @@ read_a_line (remove_quoted_newline)
/* Ignore null bytes in input. */
if (c == 0)
- {
-#if 0
- internal_warning ("read_a_line: ignored null byte in input");
-#endif
- continue;
- }
+ continue;
/* If there is no more input, then we return NULL. */
if (c == EOF)
@@ -2125,8 +2160,8 @@ read_secondary_line (remove_quoted_newline)
int n, c;
prompt_string_pointer = &ps2_prompt;
- if (SHOULD_PROMPT())
- prompt_again ();
+ if (SHOULD_PROMPT ())
+ prompt_again (0);
ret = read_a_line (remove_quoted_newline);
#if defined (HISTORY)
if (ret && remember_on_history && (parser_state & PST_HEREDOC))
@@ -2362,9 +2397,6 @@ shell_getc (remove_quoted_newline)
if (c == '\0')
{
-#if 0
- internal_warning ("shell_getc: ignored null byte in input");
-#endif
/* If we get EOS while parsing a string, treat it as EOF so we
don't just keep looping. Happens very rarely */
if (bash_input.type == st_string)
@@ -2511,7 +2543,7 @@ shell_getc (remove_quoted_newline)
shell_input_line_size = 0;
prompt_string_pointer = &current_prompt_string;
if (SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
goto restart_read;
}
@@ -2533,21 +2565,12 @@ shell_getc (remove_quoted_newline)
shell_input_line[shell_input_line_len] = '\n';
shell_input_line[shell_input_line_len + 1] = '\0';
-#if 0
- set_line_mbstate (); /* XXX - this is wasteful */
-#else
-# if defined (HANDLE_MULTIBYTE)
+#if defined (HANDLE_MULTIBYTE)
/* This is kind of an abstraction violation, but there's no need to
go through the entire shell_input_line again with a call to
set_line_mbstate(). */
- if (shell_input_line_len + 2 > shell_input_line_propsize)
- {
- shell_input_line_propsize = shell_input_line_len + 2;
- shell_input_line_property = (char *)xrealloc (shell_input_line_property,
- shell_input_line_propsize);
- }
+ EXTEND_SHELL_INPUT_LINE_PROPERTY();
shell_input_line_property[shell_input_line_len] = 1;
-# endif
#endif
}
}
@@ -2600,12 +2623,29 @@ next_alias_char:
(current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
{
parser_state |= PST_ENDALIAS;
+ /* We need to do this to make sure last_shell_getc_is_singlebyte returns
+ true, since we are returning a single-byte space. */
+ if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0)
+ {
+#if 0
+ EXTEND_SHELL_INPUT_LINE_PROPERTY();
+ shell_input_line_property[shell_input_line_len++] = 1;
+ /* extend shell_input_line to accommodate the shell_ungetc that
+ read_token_word() will perform, since we're extending the index */
+ RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, 2, shell_input_line_size, 16);
+ shell_input_line[++shell_input_line_index] = '\0'; /* XXX */
+#else
+ shell_input_line_property[shell_input_line_index - 1] = 1;
+#endif
+ }
return ' '; /* END_ALIAS */
}
#endif
pop_alias:
- /* This case works for PSH_DPAREN as well */
+#endif /* ALIAS || DPAREN_ARITHMETIC */
+ /* This case works for PSH_DPAREN as well as the shell_ungets() case that uses
+ push_string */
if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE)
{
parser_state &= ~PST_ENDALIAS;
@@ -2614,12 +2654,11 @@ pop_alias:
if (uc)
shell_input_line_index++;
}
-#endif /* ALIAS || DPAREN_ARITHMETIC */
if MBTEST(uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n')
{
if (SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
line_number++;
/* What do we do here if we're expanding an alias whose definition
@@ -2687,6 +2726,60 @@ shell_ungetc (c)
eol_ungetc_lookahead = c;
}
+/* Push S back into shell_input_line; updating shell_input_line_index */
+void
+shell_ungets (s)
+ char *s;
+{
+ size_t slen, chars_left;
+
+ slen = strlen (s);
+
+ if (shell_input_line[shell_input_line_index] == '\0')
+ {
+ /* Easy, just overwrite shell_input_line. This is preferred because it
+ saves on set_line_mbstate () and other overhead like push_string */
+ if (shell_input_line_size <= slen)
+ RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, slen + 1, shell_input_line_size, 64);
+ strcpy (shell_input_line, s);
+ shell_input_line_index = 0;
+ shell_input_line_len = slen;
+ shell_input_line_terminator = 0;
+ }
+ else if (shell_input_line_index >= slen)
+ {
+ /* Just as easy, just back up shell_input_line_index, but it means we
+ will re-process some characters in set_line_mbstate(). Need to
+ watch pushing back newlines here. */
+ while (slen > 0)
+ shell_input_line[--shell_input_line_index] = s[--slen];
+ }
+ else if (s[slen - 1] == '\n')
+ {
+ push_string (savestring (s), 0, (alias_t *)NULL);
+ /* push_string does set_line_mbstate () */
+ return;
+ }
+ else
+ {
+ /* Harder case: pushing back input string that's longer than what we've
+ consumed from shell_input_line so far. */
+ INTERNAL_DEBUG (("shell_ungets: not at end of shell_input_line"));
+
+ chars_left = shell_input_line_len - shell_input_line_index;
+ if (shell_input_line_size <= (slen + chars_left))
+ RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, chars_left + slen + 1, shell_input_line_size, 64);
+ memmove (shell_input_line + slen, shell_input_line + shell_input_line_index, shell_input_line_len - shell_input_line_index);
+ strcpy (shell_input_line, s);
+ shell_input_line_index = 0;
+ shell_input_line_len = strlen (shell_input_line); /* chars_left + slen? */
+ }
+
+#if defined (HANDLE_MULTIBYTE)
+ set_line_mbstate (); /* XXX */
+#endif
+}
+
char *
parser_remaining_input ()
{
@@ -2760,7 +2853,7 @@ push_token (x)
static char *token = (char *)NULL;
/* Current size of the token buffer. */
-static int token_buffer_size;
+static size_t token_buffer_size;
/* Command to read_token () explaining what we want it to do. */
#define READ 0
@@ -2788,7 +2881,7 @@ yylex ()
/* Avoid printing a prompt if we're not going to read anything, e.g.
after resetting the parser with read_token (RESET). */
if (token_to_read == 0 && SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
}
two_tokens_ago = token_before_that;
@@ -2798,11 +2891,16 @@ yylex ()
if ((parser_state & PST_EOFTOKEN) && current_token == shell_eof_token)
{
- current_token = yacc_EOF;
- if (bash_input.type == st_string)
- rewind_input_string ();
+ /* placeholder for any special handling. */
+ return (current_token);
}
- parser_state &= ~PST_EOFTOKEN; /* ??? */
+
+ if (current_token < 0)
+#if defined (YYERRCODE) && !defined (YYUNDEF)
+ current_token = YYERRCODE;
+#else
+ current_token = YYerror;
+#endif
return (current_token);
}
@@ -2893,9 +2991,12 @@ static int open_brace_count;
break; \
if ((parser_state & PST_CASEPAT) && last_read_token == '|' && word_token_alist[i].token == ESAC) \
break; /* Posix grammar rule 4 */ \
- if (word_token_alist[i].token == ESAC) \
+ if ((parser_state & PST_CASEPAT) && last_read_token == '(' && word_token_alist[i].token == ESAC) /*)*/ \
+ break; /* phantom Posix grammar rule 4 */ \
+ if (word_token_alist[i].token == ESAC) { \
parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \
- else if (word_token_alist[i].token == CASE) \
+ esacs_needed_count--; \
+ } else if (word_token_alist[i].token == CASE) \
parser_state |= PST_CASESTMT; \
else if (word_token_alist[i].token == COND_END) \
parser_state &= ~(PST_CONDCMD|PST_CONDEXPR); \
@@ -2955,8 +3056,12 @@ alias_expand_token (tokstr)
char *expanded;
alias_t *ap;
+#if 0
if (((parser_state & PST_ALEXPNEXT) || command_token_position (last_read_token)) &&
(parser_state & PST_CASEPAT) == 0)
+#else
+ if ((parser_state & PST_ALEXPNEXT) || assignment_acceptable (last_read_token))
+#endif
{
ap = find_alias (tokstr);
@@ -3198,7 +3303,7 @@ reset_parser ()
#if defined (EXTENDED_GLOB)
/* Reset to global value of extended glob */
- if (parser_state & PST_EXTPAT)
+ if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
extended_glob = global_extglob;
#endif
@@ -3223,6 +3328,11 @@ reset_parser ()
eol_ungetc_lookahead = 0;
+ /* added post-bash-5.1 */
+ need_here_doc = 0;
+ redir_stack[0] = 0;
+ esacs_needed_count = expecting_in_token = 0;
+
current_token = '\n'; /* XXX */
last_read_token = '\n';
token_to_read = '\n';
@@ -3300,9 +3410,7 @@ read_token (command)
we are eval'ing a string that is an incomplete command), return EOF */
if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0)
{
-#if defined (DEBUG)
-itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string);
-#endif
+ INTERNAL_DEBUG (("shell_getc: bash_input.location.string = `%s'", bash_input.location.string));
EOF_Reached = 1;
return (yacc_EOF);
}
@@ -3317,7 +3425,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri
character = '\n'; /* this will take the next if statement and return. */
}
- if (character == '\n')
+ if MBTEST(character == '\n')
{
/* If we're about to return an unquoted newline, we can go and collect
the text of any pending here document. */
@@ -3337,7 +3445,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri
goto tokword;
/* Shell meta-characters. */
- if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0))
+ if MBTEST(shellmeta (character))
{
#if defined (ALIAS)
/* Turn off alias tokenization iff this character sequence would
@@ -3358,7 +3466,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri
else
peek_char = shell_getc (1);
- if (character == peek_char)
+ if MBTEST(character == peek_char)
{
switch (character)
{
@@ -3517,6 +3625,9 @@ tokword:
#define LEX_QUOTEDDOC 0x0400 /* here doc with quoted delim */
#define LEX_INWORD 0x0800
#define LEX_GTLT 0x1000
+#define LEX_CKESAC 0x2000 /* check esac after in -- for later */
+#define LEX_CASEWD 0x4000 /* word after case */
+#define LEX_PATLIST 0x8000 /* case statement pattern list */
#define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|')
@@ -3584,8 +3695,8 @@ parse_matched_pair (qc, open, close, lenp, flags)
}
/* Possible reprompting. */
- if (ch == '\n' && SHOULD_PROMPT ())
- prompt_again ();
+ if MBTEST(ch == '\n' && SHOULD_PROMPT ())
+ prompt_again (0);
/* Don't bother counting parens or doing anything else if in a comment
or part of a case statement */
@@ -3595,7 +3706,7 @@ parse_matched_pair (qc, open, close, lenp, flags)
RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
ret[retind++] = ch;
- if (ch == '\n')
+ if MBTEST(ch == '\n')
tflags &= ~LEX_INCOMMENT;
continue;
@@ -3610,7 +3721,8 @@ parse_matched_pair (qc, open, close, lenp, flags)
if (tflags & LEX_PASSNEXT) /* last char was backslash */
{
tflags &= ~LEX_PASSNEXT;
- if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
+ /* XXX - PST_NOEXPAND? */
+ if MBTEST(qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
{
if (retind > 0)
retind--; /* swallow previously-added backslash */
@@ -3719,9 +3831,10 @@ parse_matched_pair (qc, open, close, lenp, flags)
pop_delimiter (dstack);
CHECK_NESTRET_ERROR ();
- if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0))
+ if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0 || dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_QUOTE2))
{
/* Translate $'...' here. */
+ /* PST_NOEXPAND */
ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen);
free (nestret);
@@ -3730,12 +3843,22 @@ parse_matched_pair (qc, open, close, lenp, flags)
make sure we single-quote the results of the ansi
expansion because quote removal should remove them later */
/* FLAG POSIX INTERP 221 */
- if ((shell_compatibility_level > 42) && (rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2) && (flags & P_DOLBRACE))
+ if ((shell_compatibility_level > 42) && (rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2 || dolbrace_state == DOLBRACE_QUOTE) && (flags & P_DOLBRACE))
+ {
+ nestret = sh_single_quote (ttrans);
+ free (ttrans);
+ nestlen = strlen (nestret);
+ }
+#if 0 /* TAG:bash-5.3 */
+ /* This single-quotes PARAM in ${PARAM OP WORD} when PARAM
+ contains a $'...' even when extended_quote is set. */
+ else if ((rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_PARAM) && (flags & P_DOLBRACE))
{
nestret = sh_single_quote (ttrans);
free (ttrans);
nestlen = strlen (nestret);
}
+#endif
else if ((rflags & P_DQUOTE) == 0)
{
nestret = sh_single_quote (ttrans);
@@ -3744,22 +3867,41 @@ parse_matched_pair (qc, open, close, lenp, flags)
}
else
{
+ /* Should we quote CTLESC here? */
nestret = ttrans;
nestlen = ttranslen;
}
retind -= 2; /* back up before the $' */
}
+#if defined (TRANSLATABLE_STRINGS)
else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0))
{
/* Locale expand $"..." here. */
- ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
+ /* PST_NOEXPAND */
+ ttrans = locale_expand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
free (nestret);
- nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
+ /* If we're supposed to single-quote translated strings,
+ check whether the translated result is different from
+ the original and single-quote the string if it is. */
+ if (singlequote_translations &&
+ ((nestlen - 1) != ttranslen || STREQN (nestret, ttrans, ttranslen) == 0))
+ {
+ if ((rflags & P_DQUOTE) == 0)
+ nestret = sh_single_quote (ttrans);
+ else if ((rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2) && (flags & P_DOLBRACE))
+ nestret = sh_single_quote (ttrans);
+ else
+ /* single quotes aren't special, use backslash instead */
+ nestret = sh_backslash_quote_for_double_quotes (ttrans, 0);
+ }
+ else
+ nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
free (ttrans);
- nestlen = ttranslen + 2;
+ nestlen = strlen (nestret);
retind -= 2; /* back up before the $" */
}
+#endif /* TRANSLATABLE_STRINGS */
APPEND_NESTRET ();
FREE (nestret);
@@ -3861,11 +4003,26 @@ dump_tflags (flags)
f &= ~LEX_CKCASE;
fprintf (stderr, "LEX_CKCASE%s", f ? "|" : "");
}
+ if (f & LEX_CKESAC)
+ {
+ f &= ~LEX_CKESAC;
+ fprintf (stderr, "LEX_CKESAC%s", f ? "|" : "");
+ }
if (f & LEX_INCASE)
{
f &= ~LEX_INCASE;
fprintf (stderr, "LEX_INCASE%s", f ? "|" : "");
}
+ if (f & LEX_CASEWD)
+ {
+ f &= ~LEX_CASEWD;
+ fprintf (stderr, "LEX_CASEWD%s", f ? "|" : "");
+ }
+ if (f & LEX_PATLIST)
+ {
+ f &= ~LEX_PATLIST;
+ fprintf (stderr, "LEX_PATLIST%s", f ? "|" : "");
+ }
if (f & LEX_INHEREDOC)
{
f &= ~LEX_INHEREDOC;
@@ -3897,554 +4054,172 @@ dump_tflags (flags)
}
#endif
-/* Parse a $(...) command substitution. This is messier than I'd like, and
- reproduces a lot more of the token-reading code than I'd like. */
+/* Parse a $(...) command substitution. This reads input from the current
+ input stream. */
static char *
parse_comsub (qc, open, close, lenp, flags)
int qc; /* `"' if this construct is within double quotes */
int open, close;
int *lenp, flags;
{
- int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind;
- int nestlen, ttranslen, start_lineno, orig_histexp;
- char *ret, *nestret, *ttrans, *heredelim;
- int retind, retsize, rflags, hdlen;
+ int peekc, r;
+ int start_lineno, local_extglob, was_extpat;
+ char *ret, *tcmd;
+ int retlen;
+ sh_parser_state_t ps;
+ STRING_SAVER *saved_strings;
+ COMMAND *saved_global, *parsed_command;
/* Posix interp 217 says arithmetic expressions have precedence, so
assume $(( introduces arithmetic expansion and parse accordingly. */
- peekc = shell_getc (0);
- shell_ungetc (peekc);
- if (peekc == '(')
- return (parse_matched_pair (qc, open, close, lenp, 0));
+ if (open == '(') /*)*/
+ {
+ peekc = shell_getc (1);
+ shell_ungetc (peekc);
+ if (peekc == '(') /*)*/
+ return (parse_matched_pair (qc, open, close, lenp, 0));
+ }
/*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/
- count = 1;
- tflags = LEX_RESWDOK;
-#if defined (BANG_HISTORY)
- orig_histexp = history_expansion_inhibited;
-#endif
-
- if ((flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0)
- tflags |= LEX_CKCASE;
- if ((tflags & LEX_CKCASE) && (interactive == 0 || interactive_comments))
- tflags |= LEX_CKCOMMENT;
-
- /* RFLAGS is the set of flags we want to pass to recursive calls. */
- rflags = (flags & P_DQUOTE);
-
- ret = (char *)xmalloc (retsize = 64);
- retind = 0;
+ /*debug_parser(1);*/
start_lineno = line_number;
- lex_rwlen = lex_wlen = 0;
- heredelim = 0;
- lex_firstind = -1;
+ save_parser_state (&ps);
- while (count)
+ was_extpat = (parser_state & PST_EXTPAT);
+
+ /* State flags we don't want to persist into command substitutions. */
+ parser_state &= ~(PST_REGEXP|PST_EXTPAT|PST_CONDCMD|PST_CONDEXPR|PST_COMPASSIGN);
+ /* Could do PST_CASESTMT too, but that also affects history. Setting
+ expecting_in_token below should take care of the parsing requirements.
+ Unsetting PST_REDIRLIST isn't strictly necessary because of how we set
+ token_to_read below, but we do it anyway. */
+ parser_state &= ~(PST_CASEPAT|PST_ALEXPNEXT|PST_SUBSHELL|PST_REDIRLIST);
+ /* State flags we want to set for this run through the parser. */
+ parser_state |= PST_CMDSUBST|PST_EOFTOKEN|PST_NOEXPAND;
+
+ /* leave pushed_string_list alone, since we might need to consume characters
+ from it to satisfy this command substitution (in some perverse case). */
+ shell_eof_token = close;
+
+ saved_global = global_command; /* might not be necessary */
+ global_command = (COMMAND *)NULL;
+
+ /* These are reset by reset_parser() */
+ need_here_doc = 0;
+ esacs_needed_count = expecting_in_token = 0;
+
+ /* We want to expand aliases on this pass if we're in posix mode, since the
+ standard says you have to take aliases into account when looking for the
+ terminating right paren. Otherwise, we defer until execution time for
+ backwards compatibility. */
+ if (expand_aliases)
+ expand_aliases = posixly_correct != 0;
+#if defined (EXTENDED_GLOB)
+ /* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
+ conditional command and have already set global_extglob appropriately. */
+ if (shell_compatibility_level <= 51 && was_extpat == 0)
{
-comsub_readchar:
- ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0);
-
- if (ch == EOF)
- {
-eof_error:
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = orig_histexp;
+ local_extglob = global_extglob = extended_glob;
+ extended_glob = 1;
+ }
#endif
- free (ret);
- FREE (heredelim);
- parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
- EOF_Reached = 1; /* XXX */
- return (&matched_pair_error);
- }
- /* If we hit the end of a line and are reading the contents of a here
- document, and it's not the same line that the document starts on,
- check for this line being the here doc delimiter. Otherwise, if
- we're in a here document, mark the next character as the beginning
- of a line. */
- if (ch == '\n')
- {
- if ((tflags & LEX_HEREDELIM) && heredelim)
- {
- tflags &= ~LEX_HEREDELIM;
- tflags |= LEX_INHEREDOC;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = 1;
-#endif
- lex_firstind = retind + 1;
- }
- else if (tflags & LEX_INHEREDOC)
- {
- int tind;
- tind = lex_firstind;
- while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t')
- tind++;
- if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
- {
- tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC);
-/*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/
- free (heredelim);
- heredelim = 0;
- lex_firstind = -1;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = orig_histexp;
-#endif
- }
- else
- lex_firstind = retind + 1;
- }
- }
+ current_token = '\n'; /* XXX */
+ token_to_read = DOLPAREN; /* let's trick the parser */
- /* Possible reprompting. */
- if (ch == '\n' && SHOULD_PROMPT ())
- prompt_again ();
+ r = yyparse ();
- /* XXX -- we currently allow here doc to be delimited by ending right
- paren in default mode and posix mode. To change posix mode, change
- the #if 1 to #if 0 below */
- if ((tflags & LEX_INHEREDOC) && ch == close && count == 1)
- {
- int tind;
-/*itrace("parse_comsub:%d: in here doc, ch == close, retind - firstind = %d hdlen = %d retind = %d", line_number, retind-lex_firstind, hdlen, retind);*/
- tind = lex_firstind;
- while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t')
- tind++;
-#if 1
- if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
-#else
- /* Posix-mode shells require the newline after the here-document
- delimiter. */
- if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen) &&
- posixly_correct == 0)
-#endif
- {
- tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC);
-/*itrace("parse_comsub:%d: found here doc end `%*s'", line_number, hdlen, ret + tind);*/
- free (heredelim);
- heredelim = 0;
- lex_firstind = -1;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = orig_histexp;
-#endif
- }
- }
-
- /* Don't bother counting parens or doing anything else if in a comment or
- here document (not exactly right for here-docs -- if we want to allow
- recursive calls to parse_comsub to have their own here documents,
- change the LEX_INHEREDOC to LEX_QUOTEDDOC here and uncomment the next
- clause below. Note that to make this work completely, we need to make
- additional changes to allow xparse_dolparen to work right when the
- command substitution is parsed, because read_secondary_line doesn't know
- to recursively parse through command substitutions embedded in here-
- documents */
- if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC))
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
-
- if ((tflags & LEX_INCOMMENT) && ch == '\n')
- {
-/*itrace("parse_comsub:%d: lex_incomment -> 0 ch = `%c'", line_number, ch);*/
- tflags &= ~LEX_INCOMMENT;
- }
+ if (need_here_doc > 0)
+ {
+ internal_warning ("command substitution: %d unterminated here-document%s", need_here_doc, (need_here_doc == 1) ? "" : "s");
+ gather_here_documents (); /* XXX check compatibility level? */
+ }
- continue;
- }
-#if 0
- /* If we're going to recursively parse a command substitution inside a
- here-document, make sure we call parse_comsub recursively below. See
- above for additional caveats. */
- if ((tflags & LEX_INHEREDOC) && ((tflags & LEX_WASDOL) == 0 || ch != '(')) /*)*/
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- if MBTEST(ch == '$')
- tflags |= LEX_WASDOL;
- else
- tflags &= ~LEX_WASDOL;
- }
+#if defined (EXTENDED_GLOB)
+ if (shell_compatibility_level <= 51 && was_extpat == 0)
+ extended_glob = local_extglob;
#endif
- if (tflags & LEX_PASSNEXT) /* last char was backslash */
- {
-/*itrace("parse_comsub:%d: lex_passnext -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/
- tflags &= ~LEX_PASSNEXT;
- if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
- {
- if (retind > 0)
- retind--; /* swallow previously-added backslash */
- continue;
- }
+ parsed_command = global_command;
- RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
- if MBTEST(ch == CTLESC)
- ret[retind++] = CTLESC;
- ret[retind++] = ch;
- continue;
- }
+ if (EOF_Reached)
+ {
+ shell_eof_token = ps.eof_token;
+ expand_aliases = ps.expand_aliases;
- /* If this is a shell break character, we are not in a word. If not,
- we either start or continue a word. */
- if MBTEST(shellbreak (ch))
- {
- tflags &= ~LEX_INWORD;
-/*itrace("parse_comsub:%d: lex_inword -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/
- }
+ /* yyparse() has already called yyerror() and reset_parser() */
+ return (&matched_pair_error);
+ }
+ else if (r != 0)
+ {
+ /* parser_error (start_lineno, _("could not parse command substitution")); */
+ /* Non-interactive shells exit on parse error in a command substitution. */
+ if (last_command_exit_value == 0)
+ last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (last_command_exit_value);
+ if (interactive_shell == 0)
+ jump_to_top_level (FORCE_EOF); /* This is like reader_loop() */
else
{
- if (tflags & LEX_INWORD)
- {
- lex_wlen++;
-/*itrace("parse_comsub:%d: lex_inword == 1 ch = `%c' lex_wlen = %d (%d)", line_number, ch, lex_wlen, __LINE__);*/
- }
- else
- {
-/*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/
- tflags |= LEX_INWORD;
- lex_wlen = 0;
- if (tflags & LEX_RESWDOK)
- lex_rwlen = 0;
- }
- }
-
- /* Skip whitespace */
- if MBTEST(shellblank (ch) && (tflags & LEX_HEREDELIM) == 0 && lex_rwlen == 0)
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- continue;
- }
-
- /* Either we are looking for the start of the here-doc delimiter
- (lex_firstind == -1) or we are reading one (lex_firstind >= 0).
- If this character is a shell break character and we are reading
- the delimiter, save it and note that we are now reading a here
- document. If we've found the start of the delimiter, note it by
- setting lex_firstind. Backslashes can quote shell metacharacters
- in here-doc delimiters. */
- if (tflags & LEX_HEREDELIM)
- {
- if (lex_firstind == -1 && shellbreak (ch) == 0)
- lex_firstind = retind;
-#if 0
- else if (heredelim && (tflags & LEX_PASSNEXT) == 0 && ch == '\n')
- {
- tflags |= LEX_INHEREDOC;
- tflags &= ~LEX_HEREDELIM;
- lex_firstind = retind + 1;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = 1;
-#endif
- }
-#endif
- else if (lex_firstind >= 0 && (tflags & LEX_PASSNEXT) == 0 && shellbreak (ch))
- {
- if (heredelim == 0)
- {
- nestret = substring (ret, lex_firstind, retind);
- heredelim = string_quote_removal (nestret, 0);
- hdlen = STRLEN(heredelim);
-/*itrace("parse_comsub:%d: found here doc delimiter `%s' (%d)", line_number, heredelim, hdlen);*/
- if (STREQ (heredelim, nestret) == 0)
- tflags |= LEX_QUOTEDDOC;
- free (nestret);
- }
- if (ch == '\n')
- {
- tflags |= LEX_INHEREDOC;
- tflags &= ~LEX_HEREDELIM;
- lex_firstind = retind + 1;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = 1;
-#endif
- }
- else
- lex_firstind = -1;
- }
- }
+ shell_eof_token = ps.eof_token;
+ expand_aliases = ps.expand_aliases;
- /* Meta-characters that can introduce a reserved word. Not perfect yet. */
- if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && (shellmeta(ch) || ch == '\n'))
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- peekc = shell_getc (1);
- if (ch == peekc && (ch == '&' || ch == '|' || ch == ';')) /* two-character tokens */
- {
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = peekc;
-/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/
- tflags |= LEX_RESWDOK;
- lex_rwlen = 0;
- continue;
- }
- else if (ch == '\n' || COMSUB_META(ch))
- {
- shell_ungetc (peekc);
-/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/
- tflags |= LEX_RESWDOK;
- lex_rwlen = 0;
- continue;
- }
- else if (ch == EOF)
- goto eof_error;
- else
- {
- /* `unget' the character we just added and fall through */
- retind--;
- shell_ungetc (peekc);
- }
+ jump_to_top_level (DISCARD); /* XXX - return (&matched_pair_error)? */
}
+ }
- /* If we can read a reserved word, try to read one. */
- if (tflags & LEX_RESWDOK)
- {
- if MBTEST(islower ((unsigned char)ch))
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- lex_rwlen++;
- continue;
- }
- else if MBTEST(lex_rwlen == 4 && shellbreak (ch))
- {
- if (STREQN (ret + retind - 4, "case", 4))
- {
- tflags |= LEX_INCASE;
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: found `case', lex_incase -> 1 lex_reswdok -> 0", line_number);*/
- }
- else if (STREQN (ret + retind - 4, "esac", 4))
- {
- tflags &= ~LEX_INCASE;
-/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 1", line_number);*/
- tflags |= LEX_RESWDOK;
- lex_rwlen = 0;
- }
- else if (STREQN (ret + retind - 4, "done", 4) ||
- STREQN (ret + retind - 4, "then", 4) ||
- STREQN (ret + retind - 4, "else", 4) ||
- STREQN (ret + retind - 4, "elif", 4) ||
- STREQN (ret + retind - 4, "time", 4))
- {
- /* these are four-character reserved words that can be
- followed by a reserved word; anything else turns off
- the reserved-word-ok flag */
-/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 1", line_number, ret+retind-4);*/
- tflags |= LEX_RESWDOK;
- lex_rwlen = 0;
- }
- else if (shellmeta (ch) == 0)
- {
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/
- }
- else /* can't be in a reserved word any more */
- lex_rwlen = 0;
- }
- else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0)))
- ; /* don't modify LEX_RESWDOK if we're starting a comment */
- /* Allow `do' followed by space, tab, or newline to preserve the
- RESWDOK flag, but reset the reserved word length counter so we
- can read another one. */
- else if MBTEST(((tflags & LEX_INCASE) == 0) &&
- (isblank((unsigned char)ch) || ch == '\n') &&
- lex_rwlen == 2 &&
- STREQN (ret + retind - 2, "do", 2))
- {
-/*itrace("parse_comsub:%d: lex_incase == 0 found `%c', found \"do\"", line_number, ch);*/
- lex_rwlen = 0;
- }
- else if MBTEST((tflags & LEX_INCASE) && ch != '\n')
- /* If we can read a reserved word and we're in case, we're at the
- point where we can read a new pattern list or an esac. We
- handle the esac case above. If we read a newline, we want to
- leave LEX_RESWDOK alone. If we read anything else, we want to
- turn off LEX_RESWDOK, since we're going to read a pattern list. */
- {
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: lex_incase == 1 found `%c', lex_reswordok -> 0", line_number, ch);*/
- }
- else if MBTEST(shellbreak (ch) == 0)
- {
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/
- }
-#if 0
- /* If we find a space or tab but have read something and it's not
- `do', turn off the reserved-word-ok flag */
- else if MBTEST(isblank ((unsigned char)ch) && lex_rwlen > 0)
- {
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/
- }
-#endif
- }
-
- /* Might be the start of a here-doc delimiter */
- if MBTEST((tflags & LEX_INCOMMENT) == 0 && (tflags & LEX_CKCASE) && ch == '<')
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- peekc = shell_getc (1);
- if (peekc == EOF)
- goto eof_error;
- if (peekc == ch)
- {
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = peekc;
- peekc = shell_getc (1);
- if (peekc == EOF)
- goto eof_error;
- if (peekc == '-')
- {
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = peekc;
- tflags |= LEX_STRIPDOC;
- }
- else
- shell_ungetc (peekc);
- if (peekc != '<')
- {
- tflags |= LEX_HEREDELIM;
- lex_firstind = -1;
- }
- continue;
- }
- else
- {
- shell_ungetc (peekc); /* not a here-doc, start over */
- continue;
- }
- }
- else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0)))
- {
-/*itrace("parse_comsub:%d: lex_incomment -> 1 (%d)", line_number, __LINE__);*/
- tflags |= LEX_INCOMMENT;
- }
-
- if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */
- {
- RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
- ret[retind++] = CTLESC;
- ret[retind++] = ch;
- continue;
- }
-#if 0
- else if MBTEST((tflags & LEX_INCASE) && ch == close && close == ')')
- tflags &= ~LEX_INCASE; /* XXX */
-#endif
- else if MBTEST(ch == close && (tflags & LEX_INCASE) == 0) /* ending delimiter */
- {
- count--;
-/*itrace("parse_comsub:%d: found close: count = %d", line_number, count);*/
- }
- else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && (tflags & LEX_INCASE) == 0 && ch == open) /* nested begin */
- {
- count++;
-/*itrace("parse_comsub:%d: found open: count = %d", line_number, count);*/
- }
-
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
-
- /* If we just read the ending character, don't bother continuing. */
- if (count == 0)
- break;
-
- if MBTEST(ch == '\\') /* backslashes */
- tflags |= LEX_PASSNEXT;
-
- if MBTEST(shellquote (ch))
- {
- /* '', ``, or "" inside $(...). */
- push_delimiter (dstack, ch);
- if MBTEST((tflags & LEX_WASDOL) && ch == '\'') /* $'...' inside group */
- nestret = parse_matched_pair (ch, ch, ch, &nestlen, P_ALLOWESC|rflags);
- else
- nestret = parse_matched_pair (ch, ch, ch, &nestlen, rflags);
- pop_delimiter (dstack);
- CHECK_NESTRET_ERROR ();
-
- if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0))
- {
- /* Translate $'...' here. */
- ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen);
- free (nestret);
-
- if ((rflags & P_DQUOTE) == 0)
- {
- nestret = sh_single_quote (ttrans);
- free (ttrans);
- nestlen = strlen (nestret);
- }
- else
- {
- nestret = ttrans;
- nestlen = ttranslen;
- }
- retind -= 2; /* back up before the $' */
- }
- else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0))
- {
- /* Locale expand $"..." here. */
- ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
- free (nestret);
-
- nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
- free (ttrans);
- nestlen = ttranslen + 2;
- retind -= 2; /* back up before the $" */
- }
+ if (current_token != shell_eof_token)
+ {
+INTERNAL_DEBUG(("current_token (%d) != shell_eof_token (%c)", current_token, shell_eof_token));
+ token_to_read = current_token;
- APPEND_NESTRET ();
- FREE (nestret);
- }
- else if MBTEST((tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */
- /* check for $(), $[], or ${} inside command substitution. */
- {
- if ((tflags & LEX_INCASE) == 0 && open == ch) /* undo previous increment */
- count--;
- if (ch == '(') /* ) */
- nestret = parse_comsub (0, '(', ')', &nestlen, (rflags|P_COMMAND) & ~P_DQUOTE);
- else if (ch == '{') /* } */
- nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
- else if (ch == '[') /* ] */
- nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags);
+ /* If we get here we can check eof_encountered and if it's 1 but the
+ previous EOF_Reached test didn't succeed, we can assume that the shell
+ is interactive and ignoreeof is set. We might want to restore the
+ parser state in this case. */
+ shell_eof_token = ps.eof_token;
+ expand_aliases = ps.expand_aliases;
- CHECK_NESTRET_ERROR ();
- APPEND_NESTRET ();
+ return (&matched_pair_error);
+ }
- FREE (nestret);
- }
- if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0)
- tflags |= LEX_WASDOL;
- else
- tflags &= ~LEX_WASDOL;
+ /* We don't want to restore the old pushed string list, since we might have
+ used it to consume additional input from an alias while parsing this
+ command substitution. */
+ saved_strings = pushed_string_list;
+ restore_parser_state (&ps);
+ pushed_string_list = saved_strings;
+
+ tcmd = print_comsub (parsed_command); /* returns static memory */
+ retlen = strlen (tcmd);
+ if (tcmd[0] == '(') /* ) need a space to prevent arithmetic expansion */
+ retlen++;
+ ret = xmalloc (retlen + 2);
+ if (tcmd[0] == '(') /* ) */
+ {
+ ret[0] = ' ';
+ strcpy (ret + 1, tcmd);
}
+ else
+ strcpy (ret, tcmd);
+ ret[retlen++] = ')';
+ ret[retlen] = '\0';
+
+ dispose_command (parsed_command);
+ global_command = saved_global;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = orig_histexp;
-#endif
- FREE (heredelim);
- ret[retind] = '\0';
if (lenp)
- *lenp = retind;
+ *lenp = retlen;
+
/*itrace("parse_comsub:%d: returning `%s'", line_number, ret);*/
return ret;
}
-/* Recursively call the parser to parse a $(...) command substitution. */
+/* Recursively call the parser to parse a $(...) command substitution. This is
+ called by the word expansion code and so does not have to reset as much
+ parser state before calling yyparse(). */
char *
xparse_dolparen (base, string, indp, flags)
char *base;
@@ -4454,11 +4229,8 @@ xparse_dolparen (base, string, indp, flags)
{
sh_parser_state_t ps;
sh_input_line_state_t ls;
- int orig_ind, nc, sflags, orig_eof_token, start_lineno;
+ int orig_ind, nc, sflags, start_lineno;
char *ret, *ep, *ostring;
-#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
- STRING_SAVER *saved_pushed_strings;
-#endif
/*debug_parser(1);*/
orig_ind = *indp;
@@ -4476,41 +4248,48 @@ xparse_dolparen (base, string, indp, flags)
}
/*itrace("xparse_dolparen: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/
+
sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
if (flags & SX_NOLONGJMP)
sflags |= SEVAL_NOLONGJMP;
+
save_parser_state (&ps);
save_input_line_state (&ls);
- orig_eof_token = shell_eof_token;
+
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
- saved_pushed_strings = pushed_string_list; /* separate parsing context */
pushed_string_list = (STRING_SAVER *)NULL;
#endif
-
/*(*/
parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/
shell_eof_token = ')';
+ if (flags & SX_COMPLETE)
+ parser_state |= PST_NOERROR;
+
+ /* Don't expand aliases on this pass at all. Either parse_comsub() does it
+ at parse time, in which case this string already has aliases expanded,
+ or command_substitute() does it in the child process executing the
+ command substitution and we want to defer it completely until then. The
+ old value will be restored by restore_parser_state(). */
+ expand_aliases = 0;
+#if defined (EXTENDED_GLOB)
+ global_extglob = extended_glob; /* for reset_parser() */
+#endif
- /* Should we save and restore the bison/yacc lookahead token (yychar) here?
- Or only if it's not YYEMPTY? */
+ token_to_read = DOLPAREN; /* let's trick the parser */
- nc = parse_string (string, "command substitution", sflags, &ep);
+ nc = parse_string (string, "command substitution", sflags, (COMMAND **)NULL, &ep);
+ /* Should we save and restore the bison/yacc lookahead token (yychar) here?
+ Or only if it's not YYEMPTY? */
if (current_token == shell_eof_token)
yyclearin; /* might want to clear lookahead token unconditionally */
- reset_parser ();
+ reset_parser (); /* resets extended_glob too */
/* reset_parser() clears shell_input_line and associated variables, including
parser_state, so we want to reset things, then restore what we need. */
restore_input_line_state (&ls);
-
- shell_eof_token = orig_eof_token;
restore_parser_state (&ps);
-#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
- pushed_string_list = saved_pushed_strings;
-#endif
-
token_to_read = 0;
/* If parse_string returns < 0, we need to jump to top level with the
@@ -4521,17 +4300,18 @@ xparse_dolparen (base, string, indp, flags)
clear_shell_input_line (); /* XXX */
if (bash_input.type != st_string) /* paranoia */
parser_state &= ~(PST_CMDSUBST|PST_EOFTOKEN);
- jump_to_top_level (-nc); /* XXX */
+ if ((flags & SX_NOLONGJMP) == 0)
+ jump_to_top_level (-nc); /* XXX */
}
- /* Need to find how many characters parse_and_execute consumed, update
+ /* Need to find how many characters parse_string() consumed, update
*indp, if flags != 0, copy the portion of the string parsed into RET
and return it. If flags & 1 (SX_NOALLOC) we can return NULL. */
/*(*/
if (ep[-1] != ')')
{
-#if DEBUG
+#if 0
if (ep[-1] != '\n')
itrace("xparse_dolparen:%d: ep[-1] != RPAREN (%d), ep = `%s'", line_number, ep[-1], ep);
#endif
@@ -4543,17 +4323,18 @@ xparse_dolparen (base, string, indp, flags)
*indp = ep - base - 1;
/*((*/
-#if DEBUG
+#if 0
if (base[*indp] != ')')
itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base);
if (*indp < orig_ind)
itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring);
#endif
- if (base[*indp] != ')')
+ if (base[*indp] != ')' && (flags & SX_NOLONGJMP) == 0)
{
/*(*/
- parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')');
+ if ((flags & SX_NOERROR) == 0)
+ parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')');
jump_to_top_level (DISCARD);
}
@@ -4571,6 +4352,74 @@ xparse_dolparen (base, string, indp, flags)
return ret;
}
+/* Recursively call the parser to parse the string from a $(...) command
+ substitution to a COMMAND *. This is called from command_substitute() and
+ has the same parser state constraints as xparse_dolparen(). */
+COMMAND *
+parse_string_to_command (string, flags)
+ char *string;
+ int flags;
+{
+ sh_parser_state_t ps;
+ sh_input_line_state_t ls;
+ int nc, sflags;
+ size_t slen;
+ char *ret, *ep;
+ COMMAND *cmd;
+
+ if (*string == 0)
+ return (COMMAND *)NULL;
+
+ ep = string;
+ slen = STRLEN (string);
+
+/*itrace("parse_string_to_command: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/
+
+ sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
+ if (flags & SX_NOLONGJMP)
+ sflags |= SEVAL_NOLONGJMP;
+
+ save_parser_state (&ps);
+ save_input_line_state (&ls);
+
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+ pushed_string_list = (STRING_SAVER *)NULL;
+#endif
+ if (flags & SX_COMPLETE)
+ parser_state |= PST_NOERROR;
+
+ expand_aliases = 0;
+
+ cmd = 0;
+ nc = parse_string (string, "command substitution", sflags, &cmd, &ep);
+
+ reset_parser ();
+ /* reset_parser() clears shell_input_line and associated variables, including
+ parser_state, so we want to reset things, then restore what we need. */
+ restore_input_line_state (&ls);
+ restore_parser_state (&ps);
+
+ /* If parse_string returns < 0, we need to jump to top level with the
+ negative of the return value. We abandon the rest of this input line
+ first */
+ if (nc < 0)
+ {
+ clear_shell_input_line (); /* XXX */
+ if ((flags & SX_NOLONGJMP) == 0)
+ jump_to_top_level (-nc); /* XXX */
+ }
+
+ /* Need to check how many characters parse_string() consumed, make sure it's
+ the entire string. */
+ if (nc < slen)
+ {
+ dispose_command (cmd);
+ return (COMMAND *)NULL;
+ }
+
+ return cmd;
+}
+
#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND)
/* Parse a double-paren construct. It can be either an arithmetic
command, an arithmetic `for' command, or a nested subshell. Returns
@@ -4587,7 +4436,9 @@ parse_dparen (c)
#if defined (ARITH_FOR_COMMAND)
if (last_read_token == FOR)
{
- arith_for_lineno = line_number;
+ if (word_top < MAX_CASE_NEST)
+ word_top++;
+ arith_for_lineno = word_lineno[word_top] = line_number;
cmdtyp = parse_arith_cmd (&wval, 0);
if (cmdtyp == 1)
{
@@ -4611,7 +4462,7 @@ parse_dparen (c)
{
wd = alloc_word_desc ();
wd->word = wval;
- wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_DQUOTE;
+ wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_NOTILDE|W_NOPROCSUB;
yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL);
return (ARITH_CMD);
}
@@ -4746,7 +4597,7 @@ cond_skip_newlines ()
while ((cond_token = read_token (READ)) == '\n')
{
if (SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
}
return (cond_token);
}
@@ -4759,7 +4610,7 @@ cond_term ()
{
WORD_DESC *op;
COND_COM *term, *tleft, *tright;
- int tok, lineno;
+ int tok, lineno, local_extglob;
char *etext;
/* Read a token. It can be a left paren, a `!', a unary operator, or a
@@ -4828,6 +4679,7 @@ cond_term ()
tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL);
/* binop */
+ /* tok = cond_skip_newlines (); ? */
tok = read_token (READ);
if (tok == WORD && test_binop (yylval.word->word))
{
@@ -4872,11 +4724,12 @@ cond_term ()
}
/* rhs */
+ local_extglob = extended_glob;
if (parser_state & PST_EXTPAT)
extended_glob = 1;
tok = read_token (READ);
if (parser_state & PST_EXTPAT)
- extended_glob = global_extglob;
+ extended_glob = local_extglob;
parser_state &= ~(PST_REGEXP|PST_EXTPAT);
if (tok == WORD)
@@ -5032,11 +4885,18 @@ read_token_word (character)
double-quotes, quote some things inside of double-quotes. */
if MBTEST(character == '\\')
{
+ if (parser_state & PST_NOEXPAND)
+ {
+ pass_next_character++;
+ quoted = 1;
+ goto got_character;
+ }
+
peek_char = shell_getc (0);
/* Backslash-newline is ignored in all cases except
when quoted with single quotes. */
- if (peek_char == '\n')
+ if MBTEST(peek_char == '\n')
{
character = '\n';
goto next_character;
@@ -5046,7 +4906,7 @@ read_token_word (character)
shell_ungetc (peek_char);
/* If the next character is to be quoted, note it now. */
- if (cd == 0 || cd == '`' ||
+ if MBTEST(cd == 0 || cd == '`' ||
(cd == '"' && peek_char >= 0 && (sh_syntaxtab[peek_char] & CBSDQUOTE)))
pass_next_character++;
@@ -5131,7 +4991,7 @@ read_token_word (character)
/* If the delimiter character is not single quote, parse some of
the shell expansions that must be read as a single word. */
- if (shellexp (character))
+ if MBTEST(shellexp (character))
{
peek_char = shell_getc (1);
/* $(...), <(...), >(...), $((...)), ${...}, and $[...] constructs */
@@ -5168,7 +5028,11 @@ read_token_word (character)
goto next_character;
}
/* This handles $'...' and $"..." new-style quoted strings. */
+#if defined (TRANSLATABLE_STRINGS)
else if MBTEST(character == '$' && (peek_char == '\'' || peek_char == '"'))
+#else
+ else if MBTEST(character == '$' && peek_char == '\'')
+#endif
{
int first_line;
@@ -5182,6 +5046,7 @@ read_token_word (character)
return -1;
if (peek_char == '\'')
{
+ /* PST_NOEXPAND */
ttrans = ansiexpand (ttok, 0, ttoklen - 1, &ttranslen);
free (ttok);
@@ -5193,18 +5058,27 @@ read_token_word (character)
ttranslen = strlen (ttok);
ttrans = ttok;
}
+#if defined (TRANSLATABLE_STRINGS)
else
{
+ /* PST_NOEXPAND */
/* Try to locale-expand the converted string. */
- ttrans = localeexpand (ttok, 0, ttoklen - 1, first_line, &ttranslen);
+ ttrans = locale_expand (ttok, 0, ttoklen - 1, first_line, &ttranslen);
free (ttok);
- /* Add the double quotes back */
- ttok = sh_mkdoublequoted (ttrans, ttranslen, 0);
+ /* Add the double quotes back (or single quotes if the user
+ has set that option). */
+ if (singlequote_translations &&
+ ((ttoklen - 1) != ttranslen || STREQN (ttok, ttrans, ttranslen) == 0))
+ ttok = sh_single_quote (ttrans);
+ else
+ ttok = sh_mkdoublequoted (ttrans, ttranslen, 0);
+
free (ttrans);
- ttranslen += 2;
ttrans = ttok;
+ ttranslen = strlen (ttrans);
}
+#endif /* TRANSLATABLE_STRINGS */
RESIZE_MALLOCED_BUFFER (token, token_index, ttranslen + 1,
token_buffer_size,
@@ -5297,7 +5171,7 @@ read_token_word (character)
}
got_character:
- if (character == CTLESC || character == CTLNUL)
+ if MBTEST(character == CTLESC || character == CTLNUL)
{
RESIZE_MALLOCED_BUFFER (token, token_index, 2, token_buffer_size,
TOKEN_DEFAULT_GROW_SIZE);
@@ -5315,7 +5189,7 @@ got_escaped_character:
next_character:
if (character == '\n' && SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
/* We want to remove quoted newlines (that is, a \<newline> pair)
unless we are within single quotes or pass_next_character is
@@ -5411,7 +5285,7 @@ got_token:
yylval.word = the_word;
/* should we check that quoted == 0 as well? */
- if (token[0] == '{' && token[token_index-1] == '}' &&
+ if MBTEST(token[0] == '{' && token[token_index-1] == '}' &&
(character == '<' || character == '>'))
{
/* can use token; already copied to the_word */
@@ -5473,8 +5347,10 @@ reserved_word_acceptable (toksym)
case '{':
case '}': /* XXX */
case AND_AND:
+ case ARITH_CMD:
case BANG:
case BAR_AND:
+ case COND_END:
case DO:
case DONE:
case ELIF:
@@ -5494,6 +5370,7 @@ reserved_word_acceptable (toksym)
case UNTIL:
case WHILE:
case 0:
+ case DOLPAREN:
return 1;
default:
#if defined (COPROCESS_SUPPORT)
@@ -5653,8 +5530,11 @@ history_delimiting_chars (line)
return (" ");
}
+ /* Assume that by this point we are reading lines in a multi-line command.
+ If we have multiple consecutive blank lines we want to return only one
+ semicolon. */
if (line_isblank (line))
- return ("");
+ return (current_command_line_count > 1 && last_read_token == '\n' && token_before_that != '\n') ? "; " : "";
return ("; ");
}
@@ -5663,7 +5543,8 @@ history_delimiting_chars (line)
/* Issue a prompt, or prepare to issue a prompt when the next character
is read. */
static void
-prompt_again ()
+prompt_again (force)
+ int force;
{
char *temp_prompt;
@@ -5793,7 +5674,7 @@ decode_prompt_string (string)
int last_exit_value, last_comsub_pid;
#if defined (PROMPT_STRING_DECODE)
size_t result_size;
- int result_index;
+ size_t result_index;
int c, n, i;
char *temp, *t_host, octal_string[4];
struct tm *tm;
@@ -5930,7 +5811,7 @@ decode_prompt_string (string)
/* Make sure that expand_prompt_string is called with a
second argument of Q_DOUBLE_QUOTES if we use this
function here. */
- temp = sh_backslash_quote_for_double_quotes (timebuf);
+ temp = sh_backslash_quote_for_double_quotes (timebuf, 0);
else
temp = savestring (timebuf);
goto add_string;
@@ -5946,9 +5827,14 @@ decode_prompt_string (string)
temp = base_pathname (shell_name);
/* Try to quote anything the user can set in the file system */
if (promptvars || posixly_correct)
- temp = sh_backslash_quote_for_double_quotes (temp);
+ {
+ char *t;
+ t = sh_strvis (temp);
+ temp = sh_backslash_quote_for_double_quotes (t, 0);
+ free (t);
+ }
else
- temp = savestring (temp);
+ temp = sh_strvis (temp);
goto add_string;
case 'v':
@@ -6023,9 +5909,14 @@ decode_prompt_string (string)
/* Make sure that expand_prompt_string is called with a
second argument of Q_DOUBLE_QUOTES if we use this
function here. */
- temp = sh_backslash_quote_for_double_quotes (t_string);
+ {
+ char *t;
+ t = sh_strvis (t_string);
+ temp = sh_backslash_quote_for_double_quotes (t, 0);
+ free (t);
+ }
else
- temp = savestring (t_string);
+ temp = sh_strvis (t_string);
goto add_string;
}
@@ -6045,7 +5936,7 @@ decode_prompt_string (string)
/* Make sure that expand_prompt_string is called with a
second argument of Q_DOUBLE_QUOTES if we use this
function here. */
- temp = sh_backslash_quote_for_double_quotes (t_host);
+ temp = sh_backslash_quote_for_double_quotes (t_host, 0);
else
temp = savestring (t_host);
free (t_host);
@@ -6200,7 +6091,8 @@ int
yyerror (msg)
const char *msg;
{
- report_syntax_error ((char *)NULL);
+ if ((parser_state & PST_NOERROR) == 0)
+ report_syntax_error ((char *)NULL);
reset_parser ();
return (0);
}
@@ -6362,8 +6254,14 @@ report_syntax_error (message)
}
else
{
- msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error");
- parser_error (line_number, "%s", msg);
+ if (EOF_Reached && shell_eof_token && current_token != shell_eof_token)
+ parser_error (line_number, _("unexpected EOF while looking for matching `%c'"), shell_eof_token);
+ else
+ {
+ msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error");
+ parser_error (line_number, "%s", msg);
+ }
+
/* When the shell is interactive, this file uses EOF_Reached
only for error reporting. Other mechanisms are used to
decide whether or not to exit. */
@@ -6432,7 +6330,7 @@ handle_eof_input_unit ()
last_read_token = current_token = '\n';
/* Reset the prompt string to be $PS1. */
prompt_string_pointer = (char **)NULL;
- prompt_again ();
+ prompt_again (0);
return;
}
}
@@ -6471,31 +6369,26 @@ parse_string_to_word_list (s, flags, whom)
const char *whom;
{
WORD_LIST *wl;
- int tok, orig_current_token, orig_line_number, orig_input_terminator;
- int orig_line_count;
- int old_echo_input, old_expand_aliases, ea;
-#if defined (HISTORY)
- int old_remember_on_history, old_history_expansion_inhibited;
-#endif
+ int tok, orig_current_token, orig_line_number;
+ int orig_parser_state;
+ sh_parser_state_t ps;
+ int ea;
+
+ orig_line_number = line_number;
+ save_parser_state (&ps);
#if defined (HISTORY)
- old_remember_on_history = remember_on_history;
-# if defined (BANG_HISTORY)
- old_history_expansion_inhibited = history_expansion_inhibited;
-# endif
bash_history_disable ();
#endif
- orig_line_number = line_number;
- orig_line_count = current_command_line_count;
- orig_input_terminator = shell_input_line_terminator;
- old_echo_input = echo_input_at_read;
- old_expand_aliases = expand_aliases;
-
push_stream (1);
if (ea = expanding_alias ())
parser_save_alias ();
- last_read_token = WORD; /* WORD to allow reserved words here */
+
+ /* WORD to avoid parsing reserved words as themselves and just parse them as
+ WORDs. */
+ last_read_token = WORD;
+
current_command_line_count = 0;
echo_input_at_read = expand_aliases = 0;
@@ -6503,7 +6396,13 @@ parse_string_to_word_list (s, flags, whom)
wl = (WORD_LIST *)NULL;
if (flags & 1)
- parser_state |= PST_COMPASSIGN|PST_REPARSE;
+ {
+ orig_parser_state = parser_state; /* XXX - not needed? */
+ /* State flags we don't want to persist into compound assignments. */
+ parser_state &= ~PST_NOEXPAND; /* parse_comsub sentinel */
+ /* State flags we want to set for this run through the tokenizer. */
+ parser_state |= PST_COMPASSIGN|PST_REPARSE;
+ }
while ((tok = read_token (READ)) != yacc_EOF)
{
@@ -6532,21 +6431,10 @@ parse_string_to_word_list (s, flags, whom)
if (ea)
parser_restore_alias ();
-#if defined (HISTORY)
- remember_on_history = old_remember_on_history;
-# if defined (BANG_HISTORY)
- history_expansion_inhibited = old_history_expansion_inhibited;
-# endif /* BANG_HISTORY */
-#endif /* HISTORY */
-
- echo_input_at_read = old_echo_input;
- expand_aliases = old_expand_aliases;
-
- current_command_line_count = orig_line_count;
- shell_input_line_terminator = orig_input_terminator;
+ restore_parser_state (&ps);
if (flags & 1)
- parser_state &= ~(PST_COMPASSIGN|PST_REPARSE);
+ parser_state = orig_parser_state; /* XXX - not needed? */
if (wl == &parse_string_error)
{
@@ -6565,30 +6453,37 @@ parse_compound_assignment (retlenp)
int *retlenp;
{
WORD_LIST *wl, *rl;
- int tok, orig_line_number, orig_token_size, orig_last_token, assignok;
- char *saved_token, *ret;
+ int tok, orig_line_number, assignok;
+ sh_parser_state_t ps;
+ char *ret;
- saved_token = token;
- orig_token_size = token_buffer_size;
orig_line_number = line_number;
- orig_last_token = last_read_token;
+ save_parser_state (&ps);
- last_read_token = WORD; /* WORD to allow reserved words here */
+ /* WORD to avoid parsing reserved words as themselves and just parse them as
+ WORDs. Plus it means we won't be in a command position and so alias
+ expansion won't happen. */
+ last_read_token = WORD;
token = (char *)NULL;
token_buffer_size = 0;
+ wl = (WORD_LIST *)NULL; /* ( */
assignok = parser_state&PST_ASSIGNOK; /* XXX */
- wl = (WORD_LIST *)NULL; /* ( */
+ /* State flags we don't want to persist into compound assignments. */
+ parser_state &= ~(PST_NOEXPAND|PST_CONDCMD|PST_CONDEXPR|PST_REGEXP|PST_EXTPAT);
+ /* State flags we want to set for this run through the tokenizer. */
parser_state |= PST_COMPASSIGN;
+ esacs_needed_count = expecting_in_token = 0;
+
while ((tok = read_token (READ)) != ')')
{
if (tok == '\n') /* Allow newlines in compound assignments */
{
if (SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
continue;
}
if (tok != WORD && tok != ASSIGNMENT_WORD)
@@ -6606,11 +6501,7 @@ parse_compound_assignment (retlenp)
wl = make_word_list (yylval.word, wl);
}
- FREE (token);
- token = saved_token;
- token_buffer_size = orig_token_size;
-
- parser_state &= ~PST_COMPASSIGN;
+ restore_parser_state (&ps);
if (wl == &parse_string_error)
{
@@ -6622,8 +6513,6 @@ parse_compound_assignment (retlenp)
jump_to_top_level (DISCARD);
}
- last_read_token = orig_last_token; /* XXX - was WORD? */
-
if (wl)
{
rl = REVERSE_LIST (wl, WORD_LIST *);
@@ -6662,6 +6551,7 @@ save_parser_state (ps)
ps->input_line_terminator = shell_input_line_terminator;
ps->eof_encountered = eof_encountered;
+ ps->eol_lookahead = eol_ungetc_lookahead;
ps->prompt_string_pointer = prompt_string_pointer;
@@ -6687,11 +6577,19 @@ save_parser_state (ps)
ps->need_here_doc = need_here_doc;
ps->here_doc_first_line = here_doc_first_line;
+ ps->esacs_needed = esacs_needed_count;
+ ps->expecting_in = expecting_in_token;
+
if (need_here_doc == 0)
ps->redir_stack[0] = 0;
else
memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX);
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+ ps->pushed_strings = pushed_string_list;
+#endif
+
+ ps->eof_token = shell_eof_token;
ps->token = token;
ps->token_buffer_size = token_buffer_size;
/* Force reallocation on next call to read_token_word */
@@ -6719,6 +6617,7 @@ restore_parser_state (ps)
shell_input_line_terminator = ps->input_line_terminator;
eof_encountered = ps->eof_encountered;
+ eol_ungetc_lookahead = ps->eol_lookahead;
prompt_string_pointer = ps->prompt_string_pointer;
@@ -6744,6 +6643,9 @@ restore_parser_state (ps)
need_here_doc = ps->need_here_doc;
here_doc_first_line = ps->here_doc_first_line;
+ esacs_needed_count = ps->esacs_needed;
+ expecting_in_token = ps->expecting_in;
+
#if 0
for (i = 0; i < HEREDOC_MAX; i++)
redir_stack[i] = ps->redir_stack[i];
@@ -6754,9 +6656,14 @@ restore_parser_state (ps)
memcpy (redir_stack, ps->redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX);
#endif
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+ pushed_string_list = (STRING_SAVER *)ps->pushed_strings;
+#endif
+
FREE (token);
token = ps->token;
token_buffer_size = ps->token_buffer_size;
+ shell_eof_token = ps->eof_token;
}
sh_input_line_state_t *
diff --git a/parser-built b/parser-built
index 41bdea08..e69de29b 100644
--- a/parser-built
+++ b/parser-built
@@ -1,186 +0,0 @@
-/* A Bison parser, made by GNU Bison 3.6.4. */
-
-/* Bison interface for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
- Inc.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
- especially those whose name start with YY_ or yy_. They are
- private implementation details that can be changed or removed. */
-
-#ifndef YY_YY_Y_TAB_H_INCLUDED
-# define YY_YY_Y_TAB_H_INCLUDED
-/* Debug traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token kinds. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- enum yytokentype
- {
- YYEMPTY = -2,
- YYEOF = 0, /* "end of file" */
- YYerror = 256, /* error */
- YYUNDEF = 257, /* "invalid token" */
- IF = 258, /* IF */
- THEN = 259, /* THEN */
- ELSE = 260, /* ELSE */
- ELIF = 261, /* ELIF */
- FI = 262, /* FI */
- CASE = 263, /* CASE */
- ESAC = 264, /* ESAC */
- FOR = 265, /* FOR */
- SELECT = 266, /* SELECT */
- WHILE = 267, /* WHILE */
- UNTIL = 268, /* UNTIL */
- DO = 269, /* DO */
- DONE = 270, /* DONE */
- FUNCTION = 271, /* FUNCTION */
- COPROC = 272, /* COPROC */
- COND_START = 273, /* COND_START */
- COND_END = 274, /* COND_END */
- COND_ERROR = 275, /* COND_ERROR */
- IN = 276, /* IN */
- BANG = 277, /* BANG */
- TIME = 278, /* TIME */
- TIMEOPT = 279, /* TIMEOPT */
- TIMEIGN = 280, /* TIMEIGN */
- WORD = 281, /* WORD */
- ASSIGNMENT_WORD = 282, /* ASSIGNMENT_WORD */
- REDIR_WORD = 283, /* REDIR_WORD */
- NUMBER = 284, /* NUMBER */
- ARITH_CMD = 285, /* ARITH_CMD */
- ARITH_FOR_EXPRS = 286, /* ARITH_FOR_EXPRS */
- COND_CMD = 287, /* COND_CMD */
- AND_AND = 288, /* AND_AND */
- OR_OR = 289, /* OR_OR */
- GREATER_GREATER = 290, /* GREATER_GREATER */
- LESS_LESS = 291, /* LESS_LESS */
- LESS_AND = 292, /* LESS_AND */
- LESS_LESS_LESS = 293, /* LESS_LESS_LESS */
- GREATER_AND = 294, /* GREATER_AND */
- SEMI_SEMI = 295, /* SEMI_SEMI */
- SEMI_AND = 296, /* SEMI_AND */
- SEMI_SEMI_AND = 297, /* SEMI_SEMI_AND */
- LESS_LESS_MINUS = 298, /* LESS_LESS_MINUS */
- AND_GREATER = 299, /* AND_GREATER */
- AND_GREATER_GREATER = 300, /* AND_GREATER_GREATER */
- LESS_GREATER = 301, /* LESS_GREATER */
- GREATER_BAR = 302, /* GREATER_BAR */
- BAR_AND = 303, /* BAR_AND */
- yacc_EOF = 304 /* yacc_EOF */
- };
- typedef enum yytokentype yytoken_kind_t;
-#endif
-/* Token kinds. */
-#define YYEOF 0
-#define YYerror 256
-#define YYUNDEF 257
-#define IF 258
-#define THEN 259
-#define ELSE 260
-#define ELIF 261
-#define FI 262
-#define CASE 263
-#define ESAC 264
-#define FOR 265
-#define SELECT 266
-#define WHILE 267
-#define UNTIL 268
-#define DO 269
-#define DONE 270
-#define FUNCTION 271
-#define COPROC 272
-#define COND_START 273
-#define COND_END 274
-#define COND_ERROR 275
-#define IN 276
-#define BANG 277
-#define TIME 278
-#define TIMEOPT 279
-#define TIMEIGN 280
-#define WORD 281
-#define ASSIGNMENT_WORD 282
-#define REDIR_WORD 283
-#define NUMBER 284
-#define ARITH_CMD 285
-#define ARITH_FOR_EXPRS 286
-#define COND_CMD 287
-#define AND_AND 288
-#define OR_OR 289
-#define GREATER_GREATER 290
-#define LESS_LESS 291
-#define LESS_AND 292
-#define LESS_LESS_LESS 293
-#define GREATER_AND 294
-#define SEMI_SEMI 295
-#define SEMI_AND 296
-#define SEMI_SEMI_AND 297
-#define LESS_LESS_MINUS 298
-#define AND_GREATER 299
-#define AND_GREATER_GREATER 300
-#define LESS_GREATER 301
-#define GREATER_BAR 302
-#define BAR_AND 303
-#define yacc_EOF 304
-
-/* Value type. */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
-{
-#line 328 "/Users/chet/src/bash/src/parse.y"
-
- WORD_DESC *word; /* the word that we read. */
- int number; /* the number that we read. */
- WORD_LIST *word_list;
- COMMAND *command;
- REDIRECT *redirect;
- ELEMENT element;
- PATTERN_LIST *pattern;
-
-#line 174 "y.tab.h"
-
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE yylval;
-
-int yyparse (void);
-
-#endif /* !YY_YY_Y_TAB_H_INCLUDED */
diff --git a/parser.h b/parser.h
index 59bddaca..59bf0fec 100644
--- a/parser.h
+++ b/parser.h
@@ -1,7 +1,7 @@
/* parser.h -- Everything you wanted to know about the parser, but were
afraid to ask. */
-/* Copyright (C) 1995-2019 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -30,7 +30,7 @@
#define PST_ALEXPNEXT 0x000002 /* expand next word for aliases */
#define PST_ALLOWOPNBRC 0x000004 /* allow open brace for function def */
#define PST_NEEDCLOSBRC 0x000008 /* need close brace */
-#define PST_DBLPAREN 0x000010 /* double-paren parsing */
+#define PST_DBLPAREN 0x000010 /* double-paren parsing - unused */
#define PST_SUBSHELL 0x000020 /* ( ... ) subshell */
#define PST_CMDSUBST 0x000040 /* $( ... ) command substitution */
#define PST_CASESTMT 0x000080 /* parsing a case statement */
@@ -48,6 +48,8 @@
#define PST_REDIRLIST 0x080000 /* parsing a list of redirections preceding a simple command name */
#define PST_COMMENT 0x100000 /* parsing a shell comment; used by aliases */
#define PST_ENDALIAS 0x200000 /* just finished expanding and consuming an alias */
+#define PST_NOEXPAND 0x400000 /* don't expand anything in read_token_word; for command substitution */
+#define PST_NOERROR 0x800000 /* don't print error messages in yyerror */
/* Definition of the delimiter stack. Needed by parse.y and bashhist.c. */
struct dstack {
diff --git a/patchlevel.h b/patchlevel.h
index 3c226949..165390c1 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1,6 +1,6 @@
/* patchlevel.h -- current bash patch level */
-/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 16
+#define PATCHLEVEL 0
#endif /* _PATCHLEVEL_H_ */
diff --git a/pathexp.c b/pathexp.c
index 6e7ef283..379128e7 100644
--- a/pathexp.c
+++ b/pathexp.c
@@ -42,12 +42,7 @@ static int glob_name_is_acceptable PARAMS((const char *));
static void ignore_globbed_names PARAMS((char **, sh_ignore_func_t *));
static char *split_ignorespec PARAMS((char *, int *));
-#if defined (USE_POSIX_GLOB_LIBRARY)
-# include <glob.h>
-typedef int posix_glob_errfunc_t PARAMS((const char *, int));
-#else
-# include <glob/glob.h>
-#endif
+#include <glob/glob.h>
/* Control whether * matches .files in globbing. */
int glob_dot_filenames;
@@ -171,6 +166,7 @@ ere_char (c)
return (0);
}
+/* This is only used to determine whether to backslash-quote a character. */
int
glob_char_p (s)
const char *s;
@@ -412,54 +408,6 @@ shell_glob_filename (pathname, qflags)
const char *pathname;
int qflags;
{
-#if defined (USE_POSIX_GLOB_LIBRARY)
- register int i;
- char *temp, **results;
- glob_t filenames;
- int glob_flags;
-
- temp = quote_string_for_globbing (pathname, QGLOB_FILENAME|qflags);
-
- filenames.gl_offs = 0;
-
-# if defined (GLOB_PERIOD)
- glob_flags = glob_dot_filenames ? GLOB_PERIOD : 0;
-# else
- glob_flags = 0;
-# endif /* !GLOB_PERIOD */
-
- glob_flags |= (GLOB_ERR | GLOB_DOOFFS);
-
- i = glob (temp, glob_flags, (posix_glob_errfunc_t *)NULL, &filenames);
-
- free (temp);
-
- if (i == GLOB_NOSPACE || i == GLOB_ABORTED)
- return ((char **)NULL);
- else if (i == GLOB_NOMATCH)
- filenames.gl_pathv = (char **)NULL;
- else if (i != 0) /* other error codes not in POSIX.2 */
- filenames.gl_pathv = (char **)NULL;
-
- results = filenames.gl_pathv;
-
- if (results && ((GLOB_FAILED (results)) == 0))
- {
- if (should_ignore_glob_matches ())
- ignore_glob_matches (results);
- if (results && results[0])
- strvec_sort (results, 1); /* posix sort */
- else
- {
- FREE (results);
- results = (char **)NULL;
- }
- }
-
- return (results);
-
-#else /* !USE_POSIX_GLOB_LIBRARY */
-
char *temp, **results;
int gflags, quoted_pattern;
@@ -484,7 +432,6 @@ shell_glob_filename (pathname, qflags)
}
return (results);
-#endif /* !USE_POSIX_GLOB_LIBRARY */
}
/* Stuff for GLOBIGNORE. */
diff --git a/pathexp.h b/pathexp.h
index 7ed0d2ad..b96f92af 100644
--- a/pathexp.h
+++ b/pathexp.h
@@ -21,13 +21,10 @@
#if !defined (_PATHEXP_H_)
#define _PATHEXP_H_
-#if defined (USE_POSIX_GLOB_LIBRARY)
-# define GLOB_FAILED(glist) !(glist)
-#else /* !USE_POSIX_GLOB_LIBRARY */
-# define GLOB_FAILED(glist) (glist) == (char **)&glob_error_return
+#define GLOB_FAILED(glist) (glist) == (char **)&glob_error_return
+
extern int noglob_dot_filenames;
extern char *glob_error_return;
-#endif /* !USE_POSIX_GLOB_LIBRARY */
/* Flag values for quote_string_for_globbing */
#define QGLOB_CVTNULL 0x01 /* convert QUOTED_NULL strings to '\0' */
diff --git a/pcomplete.c b/pcomplete.c
index fe1a0320..9612406d 100644
--- a/pcomplete.c
+++ b/pcomplete.c
@@ -1,6 +1,6 @@
/* pcomplete.c - functions to generate lists of matches for programmable completion. */
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -414,6 +414,7 @@ init_itemlist_from_varlist (itp, svfunc)
sl->list[i] = savestring (vlist[i]->name);
sl->list[sl->list_len = n] = (char *)NULL;
itp->slist = sl;
+ free (vlist);
}
static int
@@ -884,16 +885,18 @@ gen_action_completions (cs, text)
TEXT as a match prefix, or just go without? Currently, the code does not
use TEXT, just globs CS->globpat and returns the results. If we do decide
to use TEXT, we should call quote_string_for_globbing before the call to
- glob_filename. */
+ glob_filename (in which case we could use shell_glob_filename). */
static STRINGLIST *
gen_globpat_matches (cs, text)
COMPSPEC *cs;
const char *text;
{
STRINGLIST *sl;
+ int gflags;
sl = strlist_create (0);
- sl->list = glob_filename (cs->globpat, 0);
+ gflags = glob_star ? GX_GLOBSTAR : 0;
+ sl->list = glob_filename (cs->globpat, gflags);
if (GLOB_FAILED (sl->list))
sl->list = (char **)NULL;
if (sl->list)
@@ -1296,7 +1299,7 @@ command_line_to_word_list (line, llen, sentinel, nwp, cwp)
int llen, sentinel, *nwp, *cwp;
{
WORD_LIST *ret;
- char *delims;
+ const char *delims;
#if 0
delims = "()<>;&| \t\n"; /* shell metacharacters break words */
diff --git a/pcomplib.c b/pcomplib.c
index 075fce73..e8df62ec 100644
--- a/pcomplib.c
+++ b/pcomplib.c
@@ -1,6 +1,6 @@
/* pcomplib.c - library functions for programmable completion. */
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -37,7 +37,7 @@
#include "shell.h"
#include "pcomplete.h"
-#define COMPLETE_HASH_BUCKETS 256 /* must be power of two */
+#define COMPLETE_HASH_BUCKETS 512 /* must be power of two */
#define STRDUP(x) ((x) ? savestring (x) : (char *)NULL)
diff --git a/po/af.gmo b/po/af.gmo
index 28fbbfb6..56f6b5aa 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index c3506814..d9e5f084 100644
--- a/po/af.po
+++ b/po/af.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 2.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2004-03-17 13:48+0200\n"
"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
"Language-Team: Afrikaans <i18n@af.org.za>\n"
@@ -21,57 +21,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "Os/2 Biskaart Skikking"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr ""
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr ""
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: kan nie %s skep nie"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr ""
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr ""
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr ""
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "%s: bevel nie gevind nie"
@@ -91,7 +86,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr ""
@@ -154,7 +149,7 @@ msgstr ""
msgid "HOME not set"
msgstr ""
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
#, fuzzy
msgid "too many arguments"
msgstr "te veel parameters"
@@ -183,7 +178,7 @@ msgstr ""
msgid "%s: usage: "
msgstr ""
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, fuzzy, c-format
msgid "%s: option requires an argument"
msgstr "%s: option `%s' requires an argument\n"
@@ -198,7 +193,7 @@ msgstr ""
msgid "%s: not found"
msgstr "%s: bevel nie gevind nie"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, fuzzy, c-format
msgid "%s: invalid option"
msgstr "%s: illegal option -- %c\n"
@@ -208,7 +203,7 @@ msgstr "%s: illegal option -- %c\n"
msgid "%s: invalid option name"
msgstr "%s: illegal option -- %c\n"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, fuzzy, c-format
msgid "`%s': not a valid identifier"
msgstr "Die datum is nie geldige!"
@@ -223,7 +218,7 @@ msgstr "Die sein nommer wat was gevang het"
msgid "invalid hex number"
msgstr "Die sein nommer wat was gevang het"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
#, fuzzy
msgid "invalid number"
msgstr "Die sein nommer wat was gevang het"
@@ -238,90 +233,95 @@ msgstr ""
msgid "`%s': not a pid or valid job spec"
msgstr ""
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, fuzzy, c-format
msgid "%s: readonly variable"
msgstr "Veranderlike boom"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: kan nie %s skep nie"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr ""
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
#, fuzzy
msgid "argument"
msgstr "argument verwag\n"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr ""
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr ""
-#: builtins/common.c:292
+#: builtins/common.c:299
#, fuzzy, c-format
msgid "%s: no job control"
msgstr "geen taakbeheer in hierdie dop nie"
-#: builtins/common.c:294
+#: builtins/common.c:301
#, fuzzy
msgid "no job control"
msgstr "geen taakbeheer in hierdie dop nie"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, fuzzy, c-format
msgid "%s: restricted"
msgstr "Die bediener beëindig Die verbinding."
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr ""
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr ""
-#: builtins/common.c:323
+#: builtins/common.c:330
#, fuzzy, c-format
msgid "write error: %s"
msgstr "pypfout: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr ""
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, fuzzy, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: dubbelsinnige herroetering"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, fuzzy, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: kan nie %s skep nie"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, fuzzy, c-format
msgid "%s: cannot unset"
msgstr "%s: kan nie %s skep nie"
@@ -331,108 +331,108 @@ msgstr "%s: kan nie %s skep nie"
msgid "%s: invalid action name"
msgstr ""
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr ""
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr ""
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr ""
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr ""
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr ""
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr ""
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: leesalleen-funksie"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr ""
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: leesalleen-funksie"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, fuzzy, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr ""
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, fuzzy, c-format
msgid "cannot open shared object %s: %s"
msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr ""
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr ""
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr ""
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, fuzzy, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: kan nie %s skep nie"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: is 'n gids"
@@ -447,7 +447,7 @@ msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
msgid "%s: file is too large"
msgstr ""
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
@@ -542,12 +542,12 @@ msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-#: builtins/help.def:224
+#: builtins/help.def:223
#, fuzzy, c-format
msgid "%s: cannot open: %s"
msgstr "%s: kan nie %s skep nie"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -559,21 +559,21 @@ msgid ""
"\n"
msgstr ""
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr ""
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr ""
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr ""
-#: builtins/history.def:451
+#: builtins/history.def:449
#, fuzzy, c-format
msgid "%s: history expansion failed"
msgstr "%s: heelgetal-uitdrukking is verwag\n"
@@ -597,79 +597,79 @@ msgstr ""
msgid "Unknown error"
msgstr "Onbekende fout %d"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
#, fuzzy
msgid "expression expected"
msgstr "Bools uitdrukking verwag"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr ""
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr ""
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr ""
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr ""
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, fuzzy, c-format
msgid "%s: invalid array origin"
msgstr "Os/2 Biskaart Skikking"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr ""
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr ""
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr ""
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr ""
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr ""
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr ""
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr ""
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr ""
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr ""
@@ -767,12 +767,12 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr ""
-#: builtins/read.def:755
+#: builtins/read.def:827
#, fuzzy, c-format
msgid "read error: %d: %s"
msgstr "pypfout: %s"
@@ -785,7 +785,7 @@ msgstr ""
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
-#: builtins/set.def:966
+#: builtins/set.def:969
#, fuzzy, c-format
msgid "%s: not an array variable"
msgstr "Veranderlike boom"
@@ -805,11 +805,11 @@ msgstr "%s: kan nie %s skep nie"
msgid "shift count"
msgstr "Shift"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr ""
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr ""
@@ -877,17 +877,17 @@ msgstr ""
msgid "`%c': bad command"
msgstr "%s: illegal option -- %c\n"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, fuzzy, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: kan nie %s skep nie"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
#, fuzzy
msgid "limit"
msgstr "Filter beperk:"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, fuzzy, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: kan nie %s skep nie"
@@ -907,7 +907,7 @@ msgstr ""
msgid "`%c': invalid symbolic mode character"
msgstr ""
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr ""
@@ -927,101 +927,111 @@ msgstr ""
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr ""
+
+#: error.c:488
#, fuzzy
msgid "unknown command error"
msgstr "Onbekende fout %d"
-#: error.c:463
+#: error.c:489
#, fuzzy
msgid "bad command type"
msgstr "bevelnaam"
-#: error.c:464
+#: error.c:490
#, fuzzy
msgid "bad connector"
msgstr "foutiewe verbinder`%d'"
-#: error.c:465
+#: error.c:491
#, fuzzy
msgid "bad jump"
msgstr "Spring na:"
-#: error.c:503
+#: error.c:529
#, fuzzy, c-format
msgid "%s: unbound variable"
msgstr "Veranderlike boom"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr ""
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr ""
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr ""
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
#, fuzzy
msgid "pipe error"
msgstr "pypfout: %s"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr ""
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: bevel nie gevind nie"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
+
+#: execute_cmd.c:6000
#, fuzzy, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: is 'n gids"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr ""
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, fuzzy, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "kan nie fd %d na fd 0 dupliseer nie: %s"
@@ -1035,76 +1045,76 @@ msgstr ""
msgid "recursion stack underflow"
msgstr "Stapel grootte verhoog"
-#: expr.c:477
+#: expr.c:478
#, fuzzy
msgid "syntax error in expression"
msgstr "Sintaks fout in patroon"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr ""
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "Sintaks fout in patroon"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
#, fuzzy
msgid "division by 0"
msgstr "devisie by nul."
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr ""
-#: expr.c:646
+#: expr.c:647
#, fuzzy
msgid "`:' expected for conditional expression"
msgstr "Soek die lêer vir 'n uitdrukking"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr ""
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
-#: expr.c:1056
+#: expr.c:1057
#, fuzzy
msgid "missing `)'"
msgstr "Ontbrekende '>'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
#, fuzzy
msgid "syntax error: operand expected"
msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr ""
-#: expr.c:1513
+#: expr.c:1518
#, fuzzy, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr ""
"Hierdie is die fout boodskap van %1:\n"
"%2"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr ""
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr ""
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "waarde te groot vir basis"
-#: expr.c:1647
+#: expr.c:1652
#, fuzzy, c-format
msgid "%s: expression error\n"
msgstr "Pypfout.\n"
@@ -1114,7 +1124,7 @@ msgstr "Pypfout.\n"
msgid "getcwd: cannot access parent directories"
msgstr "Kan nie die program uitvoer nie:"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1133,218 +1143,218 @@ msgstr ""
msgid "start_pipeline: pgrp pipe"
msgstr ""
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr ""
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr ""
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
-#: jobs.c:1850
+#: jobs.c:1839
#, fuzzy, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "E108: Geen veranderlike: \"%s\""
-#: jobs.c:1865
+#: jobs.c:1854
#, fuzzy, c-format
msgid "Signal %d"
msgstr "Sein kwaliteit:"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Klaar"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
#, fuzzy
msgid "Stopped"
msgstr "Op gehou"
-#: jobs.c:1888
+#: jobs.c:1877
#, fuzzy, c-format
msgid "Stopped(%s)"
msgstr "Op gehou"
-#: jobs.c:1892
+#: jobs.c:1881
#, fuzzy
msgid "Running"
msgstr "aktief"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Klaar(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Verlaat %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Onbekende status"
-#: jobs.c:2001
+#: jobs.c:1990
#, fuzzy, c-format
msgid "(core dumped) "
msgstr "Kern Ontwikkelaar"
-#: jobs.c:2020
+#: jobs.c:2009
#, fuzzy, c-format
msgid " (wd: %s)"
msgstr "Aktiveer nou dadelik"
-#: jobs.c:2259
+#: jobs.c:2250
#, fuzzy, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "Fout in die skryf van %s"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr ""
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr ""
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr ""
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: kan nie %s skep nie"
-#: jobs.c:3571
+#: jobs.c:3558
#, fuzzy, c-format
msgid "%s: job has terminated"
msgstr "Die bediener beëindig Die verbinding."
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr ""
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr ""
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, fuzzy, c-format
msgid " (core dumped)"
msgstr "Kern Ontwikkelaar"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, fuzzy, c-format
msgid "(wd now: %s)\n"
msgstr "Aktiveer nou dadelik"
-#: jobs.c:4391
+#: jobs.c:4378
#, fuzzy
msgid "initialize_job_control: getpgrp failed"
msgstr "Inisialisering van OpenGL het misluk."
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr ""
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr ""
-#: jobs.c:4473
+#: jobs.c:4460
#, fuzzy
msgid "initialize_job_control: setpgid"
msgstr "Inisialisering van OpenGL het misluk."
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr ""
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "geen taakbeheer in hierdie dop nie"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr ""
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "onbekend"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr ""
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr ""
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr ""
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr ""
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr ""
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr ""
@@ -1386,22 +1396,22 @@ msgstr ""
msgid "network operations not supported"
msgstr ""
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr ""
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr ""
@@ -1421,144 +1431,144 @@ msgstr "Wanneer nuwe pos arriveer in"
msgid "The mail in %s has been read\n"
msgstr ""
-#: make_cmd.c:317
+#: make_cmd.c:314
#, fuzzy
msgid "syntax error: arithmetic expression required"
msgstr "Sintaks fout in patroon"
-#: make_cmd.c:319
+#: make_cmd.c:316
#, fuzzy
msgid "syntax error: `;' unexpected"
msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
-#: make_cmd.c:320
+#: make_cmd.c:317
#, fuzzy, c-format
msgid "syntax error: `((%s))'"
msgstr "sintaksfout"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr ""
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr ""
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr ""
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
-#: parse.y:4705
+#: parse.y:4461
#, fuzzy
msgid "syntax error in conditional expression"
msgstr "Sintaks fout in patroon"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr ""
-#: parse.y:4787
+#: parse.y:4543
#, fuzzy
msgid "expected `)'"
msgstr "')' is verwag\n"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr ""
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr ""
-#: parse.y:4865
+#: parse.y:4621
#, fuzzy, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "%s: binêre operator is verwag\n"
-#: parse.y:4869
+#: parse.y:4625
#, fuzzy
msgid "conditional binary operator expected"
msgstr "%s: binêre operator is verwag\n"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr ""
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr ""
-#: parse.y:4906
+#: parse.y:4662
#, fuzzy, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "Soek die lêer vir 'n uitdrukking"
-#: parse.y:4909
+#: parse.y:4665
#, fuzzy, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "Soek die lêer vir 'n uitdrukking"
-#: parse.y:4913
+#: parse.y:4669
#, fuzzy, c-format
msgid "unexpected token %d in conditional command"
msgstr "Soek die lêer vir 'n uitdrukking"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr ""
-#: parse.y:6355
+#: parse.y:6137
#, fuzzy, c-format
msgid "syntax error near `%s'"
msgstr "Sintaks fout in patroon"
-#: parse.y:6365
+#: parse.y:6151
#, fuzzy
msgid "syntax error: unexpected end of file"
msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "sintaksfout"
-#: parse.y:6428
+#: parse.y:6216
#, fuzzy, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Gebruik Kaart na Los Tronk"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr ""
@@ -1596,456 +1606,456 @@ msgstr ""
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr ""
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr ""
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr ""
-#: redir.c:204
+#: redir.c:205
#, fuzzy, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: dubbelsinnige herroetering"
-#: redir.c:208
+#: redir.c:209
#, fuzzy, c-format
msgid "%s: cannot overwrite existing file"
msgstr "Jy het gespesifiseer 'n bestaande lêer"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr ""
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr ""
-#: redir.c:222
+#: redir.c:223
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
#, fuzzy
msgid "redirection error: cannot duplicate fd"
msgstr "Pypfout.\n"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr ""
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr ""
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, fuzzy, c-format
msgid "%c%c: invalid option"
msgstr "%s: illegal option -- %c\n"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: is 'n gids"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Ek het nie 'n naam nie!"
-#: shell.c:2035
+#: shell.c:2061
#, fuzzy, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "bedryfstelselkernweergawe"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
msgstr ""
-#: shell.c:2038
+#: shell.c:2064
#, fuzzy
msgid "GNU long options:\n"
msgstr "Gnu C Saamsteller Opsies"
-#: shell.c:2042
+#: shell.c:2068
#, fuzzy
msgid "Shell options:\n"
msgstr "opneem opsies"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr ""
-#: shell.c:2062
+#: shell.c:2088
#, fuzzy, c-format
msgid "\t-%s or -o option\n"
msgstr ""
"Gebruik so: %s LÊER \n"
" of: %s OPSIE\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr ""
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Foutiewe sein"
-#: siglist.c:50
+#: siglist.c:51
#, fuzzy
msgid "Hangup"
msgstr "Ophang"
-#: siglist.c:54
+#: siglist.c:55
#, fuzzy
msgid "Interrupt"
msgstr "Interrupt"
-#: siglist.c:58
+#: siglist.c:59
#, fuzzy
msgid "Quit"
msgstr "Verlaat"
-#: siglist.c:62
+#: siglist.c:63
#, fuzzy
msgid "Illegal instruction"
msgstr "Sigill (onwettige instruksie)"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr ""
-#: siglist.c:74
+#: siglist.c:75
#, fuzzy
msgid "ABORT instruction"
msgstr "Verwerking Instruksie"
-#: siglist.c:78
+#: siglist.c:79
#, fuzzy
msgid "EMT instruction"
msgstr "Verwerking Instruksie"
-#: siglist.c:82
+#: siglist.c:83
#, fuzzy
msgid "Floating point exception"
msgstr "wisselpuntgetaluitsondering"
-#: siglist.c:86
+#: siglist.c:87
#, fuzzy
msgid "Killed"
msgstr "Doodgemaak proses."
-#: siglist.c:90
+#: siglist.c:91
#, fuzzy
msgid "Bus error"
msgstr "Pypfout.\n"
-#: siglist.c:94
+#: siglist.c:95
#, fuzzy
msgid "Segmentation fault"
msgstr "Sigsegv (segmentasie oortreding)"
-#: siglist.c:98
+#: siglist.c:99
#, fuzzy
msgid "Bad system call"
msgstr "fork-stelselroep het gefaal"
-#: siglist.c:102
+#: siglist.c:103
#, fuzzy
msgid "Broken pipe"
msgstr "Sigpipe (gebroke pyp)"
-#: siglist.c:106
+#: siglist.c:107
#, fuzzy
msgid "Alarm clock"
msgstr "wêreld horlosie"
-#: siglist.c:110
+#: siglist.c:111
#, fuzzy
msgid "Terminated"
msgstr ""
"\n"
"Bevel beëindig\n"
-#: siglist.c:114
+#: siglist.c:115
#, fuzzy
msgid "Urgent IO condition"
msgstr "Ooreenstem enige kondisie"
-#: siglist.c:118
+#: siglist.c:119
#, fuzzy
msgid "Stopped (signal)"
msgstr "Sein kwaliteit:"
-#: siglist.c:126
+#: siglist.c:127
#, fuzzy
msgid "Continue"
msgstr "Gaan voort"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr ""
-#: siglist.c:138
+#: siglist.c:139
#, fuzzy
msgid "Stopped (tty input)"
msgstr "Sigttin (tty invoer)"
-#: siglist.c:142
+#: siglist.c:143
#, fuzzy
msgid "Stopped (tty output)"
msgstr "Sigttou (tty uitset)"
-#: siglist.c:146
+#: siglist.c:147
#, fuzzy
msgid "I/O ready"
msgstr "Gereed."
-#: siglist.c:150
+#: siglist.c:151
#, fuzzy
msgid "CPU limit"
msgstr "Filter beperk:"
-#: siglist.c:154
+#: siglist.c:155
#, fuzzy
msgid "File limit"
msgstr "Filter beperk:"
-#: siglist.c:158
+#: siglist.c:159
#, fuzzy
msgid "Alarm (virtual)"
msgstr "virtuele werkskerms"
-#: siglist.c:162
+#: siglist.c:163
#, fuzzy
msgid "Alarm (profile)"
msgstr "Vee profiel uit..."
-#: siglist.c:166
+#: siglist.c:167
#, fuzzy
msgid "Window changed"
msgstr "Lêer Het verander"
-#: siglist.c:170
+#: siglist.c:171
#, fuzzy
msgid "Record lock"
msgstr "Sluit Lêers"
-#: siglist.c:174
+#: siglist.c:175
#, fuzzy
msgid "User signal 1"
msgstr "Gebruiker Sein 1"
-#: siglist.c:178
+#: siglist.c:179
#, fuzzy
msgid "User signal 2"
msgstr "Gebruiker Sein 1"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr ""
-#: siglist.c:186
+#: siglist.c:187
#, fuzzy
msgid "power failure imminent"
msgstr "Vaaling na Uitpak"
-#: siglist.c:190
+#: siglist.c:191
#, fuzzy
msgid "system crash imminent"
msgstr "Die Kde Omval Handteerder"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr ""
-#: siglist.c:198
+#: siglist.c:199
#, fuzzy
msgid "programming error"
msgstr "Pypfout.\n"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr ""
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr ""
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr ""
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr ""
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, fuzzy, c-format
msgid "Unknown Signal #%d"
msgstr "Sein kwaliteit:"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, fuzzy, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "--Geen reëls in buffer--"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr ""
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
#, fuzzy
msgid "cannot make pipe for process substitution"
msgstr "Woord Substitusie"
-#: subst.c:5985
+#: subst.c:6124
#, fuzzy
msgid "cannot make child for process substitution"
msgstr "Woord Substitusie"
-#: subst.c:6059
+#: subst.c:6198
#, fuzzy, c-format
msgid "cannot open named pipe %s for reading"
msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
-#: subst.c:6061
+#: subst.c:6200
#, fuzzy, c-format
msgid "cannot open named pipe %s for writing"
msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
-#: subst.c:6084
+#: subst.c:6223
#, fuzzy, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
-#: subst.c:6213
+#: subst.c:6370
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "--Geen reëls in buffer--"
-#: subst.c:6353
+#: subst.c:6533
#, fuzzy
msgid "cannot make pipe for command substitution"
msgstr "Woord Substitusie"
-#: subst.c:6397
+#: subst.c:6580
#, fuzzy
msgid "cannot make child for command substitution"
msgstr "Woord Substitusie"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr ""
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "Veranderlike boom"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr ""
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr ""
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, fuzzy, c-format
msgid "%s: substring expression < 0"
msgstr "ongeldige uitdrukking"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, fuzzy, c-format
msgid "%s: bad substitution"
msgstr "Woord Substitusie"
-#: subst.c:9390
+#: subst.c:9678
#, fuzzy, c-format
msgid "$%s: cannot assign in this way"
msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10367
+#: subst.c:10795
#, fuzzy, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "--Geen reëls in buffer--"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr ""
@@ -2070,22 +2080,22 @@ msgstr "')' is verwag\n"
msgid "`)' expected, found %s"
msgstr "')' is verwag, maar %s gevind\n"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, fuzzy, c-format
msgid "%s: binary operator expected"
msgstr "%s: binêre operator is verwag\n"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, fuzzy, c-format
msgid "%s: unary operator expected"
msgstr "%s: unitêre operator is verwag\n"
-#: test.c:881
+#: test.c:896
#, fuzzy
msgid "missing `]'"
msgstr "Ontbrekende '>'"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
@@ -2095,99 +2105,104 @@ msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
msgid "invalid signal number"
msgstr "Die sein nommer wat was gevang het"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr ""
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr ""
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr ""
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr ""
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr ""
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr ""
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr ""
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr ""
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr ""
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr ""
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr ""
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr ""
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr ""
#: version.c:47 version2.c:47
@@ -2282,12 +2297,16 @@ msgstr "Gebruik so: %s [OPSIE] [BEVEL [ARG]...]\n"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "E418: Ongeldige waarde: %s"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "E418: Ongeldige waarde: %s"
#: builtins.c:82
@@ -2396,7 +2415,7 @@ msgstr "Terug Adres - 3/4 x 2\""
#: builtins.c:142
#, fuzzy
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "Gebruik so: %s [OPSIE]... [-] [GEBRUIKER [ARG]...]\n"
#: builtins.c:144
@@ -2455,7 +2474,7 @@ msgstr "Tipe die naam van die %1 speler."
#: builtins.c:171
#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "Grootte beperk (Kb):"
#: builtins.c:174
@@ -2500,12 +2519,13 @@ msgid ""
msgstr ""
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr ""
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr ""
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "Bediener of domein naam:"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3316,7 +3336,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3357,7 +3379,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3369,7 +3391,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3455,7 +3477,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3477,7 +3499,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3496,7 +3518,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3517,7 +3539,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3528,7 +3550,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3542,7 +3564,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3556,7 +3578,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3639,7 +3661,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3647,7 +3669,7 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -3659,7 +3681,7 @@ msgid ""
" Always succeeds."
msgstr ""
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3703,7 +3725,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -3733,7 +3755,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3783,7 +3805,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3801,7 +3823,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3833,7 +3855,7 @@ msgid ""
" children."
msgstr ""
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3848,7 +3870,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3861,7 +3883,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3878,7 +3900,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3898,7 +3920,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3914,7 +3936,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3925,7 +3947,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -3946,29 +3968,31 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3981,7 +4005,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -3995,7 +4019,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4006,7 +4030,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4020,7 +4044,7 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4031,7 +4055,7 @@ msgid ""
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4059,7 +4083,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4113,7 +4137,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4144,7 +4168,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4171,7 +4195,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -4200,7 +4224,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4220,7 +4244,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4243,6 +4267,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -4259,7 +4285,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4290,7 +4316,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4303,7 +4329,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4335,7 +4361,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4377,7 +4403,7 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
diff --git a/po/bash.pot b/po/bash.pot
index fb895a27..767b0af9 100644
--- a/po/bash.pot
+++ b/po/bash.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,57 +22,52 @@ msgstr ""
msgid "bad array subscript"
msgstr ""
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr ""
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr ""
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr ""
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr ""
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr ""
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr ""
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr ""
@@ -92,7 +87,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr ""
@@ -155,7 +150,7 @@ msgstr ""
msgid "HOME not set"
msgstr ""
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr ""
@@ -182,7 +177,7 @@ msgstr ""
msgid "%s: usage: "
msgstr ""
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr ""
@@ -197,7 +192,7 @@ msgstr ""
msgid "%s: not found"
msgstr ""
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr ""
@@ -207,7 +202,7 @@ msgstr ""
msgid "%s: invalid option name"
msgstr ""
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr ""
@@ -220,7 +215,7 @@ msgstr ""
msgid "invalid hex number"
msgstr ""
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr ""
@@ -234,88 +229,93 @@ msgstr ""
msgid "`%s': not a pid or valid job spec"
msgstr ""
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr ""
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr ""
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr ""
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr ""
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr ""
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr ""
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr ""
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr ""
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr ""
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr ""
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr ""
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr ""
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr ""
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr ""
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr ""
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr ""
@@ -325,108 +325,108 @@ msgstr ""
msgid "%s: invalid action name"
msgstr ""
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr ""
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr ""
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr ""
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr ""
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr ""
-#: builtins/declare.def:363 builtins/declare.def:756
-#, c-format
-msgid "%s: reference variable cannot be an array"
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:464 execute_cmd.c:6132
#, c-format
-msgid "%s: nameref variable self references not allowed"
+msgid "%s: readonly function"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
-msgid "%s: circular name reference"
+msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:532 variables.c:3359
#, c-format
-msgid "`%s': invalid variable name for name reference"
-msgstr ""
-
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
+msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:526 execute_cmd.c:5986
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
-msgid "%s: readonly function"
+msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:824
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
-msgid "%s: quoted compound array assignment deprecated"
+msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr ""
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr ""
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr ""
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr ""
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr ""
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr ""
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr ""
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr ""
@@ -441,7 +441,7 @@ msgstr ""
msgid "%s: file is too large"
msgstr ""
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr ""
@@ -535,12 +535,12 @@ msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr ""
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -552,21 +552,21 @@ msgid ""
"\n"
msgstr ""
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr ""
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr ""
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr ""
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr ""
@@ -589,78 +589,78 @@ msgstr ""
msgid "Unknown error"
msgstr ""
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr ""
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr ""
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr ""
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr ""
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr ""
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr ""
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr ""
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr ""
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr ""
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr ""
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr ""
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr ""
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr ""
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr ""
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr ""
@@ -756,12 +756,12 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr ""
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr ""
@@ -774,7 +774,7 @@ msgstr ""
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr ""
@@ -793,11 +793,11 @@ msgstr ""
msgid "shift count"
msgstr ""
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr ""
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr ""
@@ -864,16 +864,16 @@ msgstr ""
msgid "`%c': bad command"
msgstr ""
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr ""
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr ""
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr ""
@@ -892,7 +892,7 @@ msgstr ""
msgid "`%c': invalid symbolic mode character"
msgstr ""
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr ""
@@ -912,96 +912,106 @@ msgstr ""
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr ""
+
+#: error.c:488
msgid "unknown command error"
msgstr ""
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr ""
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr ""
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr ""
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr ""
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr ""
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr ""
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr ""
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr ""
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr ""
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr ""
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr ""
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr ""
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr ""
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr ""
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr ""
@@ -1014,68 +1024,68 @@ msgstr ""
msgid "recursion stack underflow"
msgstr ""
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr ""
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr ""
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr ""
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr ""
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr ""
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr ""
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr ""
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr ""
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr ""
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr ""
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr ""
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr ""
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr ""
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr ""
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr ""
@@ -1084,7 +1094,7 @@ msgstr ""
msgid "getcwd: cannot access parent directories"
msgstr ""
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1103,214 +1113,214 @@ msgstr ""
msgid "start_pipeline: pgrp pipe"
msgstr ""
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr ""
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr ""
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr ""
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr ""
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr ""
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr ""
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr ""
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr ""
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr ""
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr ""
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr ""
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr ""
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr ""
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr ""
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr ""
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr ""
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr ""
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr ""
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr ""
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr ""
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr ""
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr ""
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr ""
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr ""
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr ""
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr ""
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr ""
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr ""
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr ""
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr ""
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr ""
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr ""
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr ""
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr ""
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr ""
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr ""
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr ""
@@ -1352,22 +1362,22 @@ msgstr ""
msgid "network operations not supported"
msgstr ""
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr ""
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr ""
@@ -1385,138 +1395,138 @@ msgstr ""
msgid "The mail in %s has been read\n"
msgstr ""
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr ""
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr ""
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr ""
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr ""
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr ""
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr ""
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr ""
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr ""
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr ""
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr ""
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr ""
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr ""
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr ""
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr ""
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr ""
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr ""
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr ""
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr ""
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr ""
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr ""
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr ""
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr ""
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr ""
@@ -1554,413 +1564,413 @@ msgstr ""
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr ""
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr ""
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr ""
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr ""
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr ""
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr ""
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr ""
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr ""
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr ""
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr ""
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr ""
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr ""
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr ""
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr ""
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr ""
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
msgstr ""
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr ""
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr ""
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr ""
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr ""
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr ""
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr ""
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr ""
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr ""
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr ""
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr ""
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr ""
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr ""
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr ""
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr ""
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr ""
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr ""
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr ""
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr ""
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr ""
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr ""
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr ""
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr ""
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr ""
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr ""
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr ""
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr ""
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr ""
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr ""
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr ""
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr ""
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr ""
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr ""
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr ""
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr ""
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr ""
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr ""
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr ""
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr ""
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr ""
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr ""
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr ""
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr ""
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr ""
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr ""
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr ""
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr ""
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr ""
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr ""
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr ""
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr ""
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr ""
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr ""
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr ""
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr ""
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr ""
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr ""
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr ""
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr ""
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr ""
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr ""
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr ""
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr ""
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr ""
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr ""
@@ -1983,21 +1993,21 @@ msgstr ""
msgid "`)' expected, found %s"
msgstr ""
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr ""
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr ""
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr ""
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr ""
@@ -2006,99 +2016,104 @@ msgstr ""
msgid "invalid signal number"
msgstr ""
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr ""
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr ""
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr ""
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr ""
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr ""
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr ""
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr ""
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr ""
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr ""
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr ""
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr ""
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr ""
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr ""
#: version.c:47 version2.c:47
@@ -2183,11 +2198,15 @@ msgid "command [-pVv] command [arg ...]"
msgstr ""
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr ""
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr ""
#: builtins.c:82
@@ -2281,7 +2300,7 @@ msgid "return [n]"
msgstr ""
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr ""
#: builtins.c:144
@@ -2329,7 +2348,7 @@ msgid "type [-afptP] name [name ...]"
msgstr ""
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr ""
#: builtins.c:174
@@ -2371,11 +2390,11 @@ msgid ""
msgstr ""
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr ""
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr ""
#: builtins.c:200
@@ -3179,7 +3198,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3220,7 +3241,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3232,7 +3253,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3318,7 +3339,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3340,7 +3361,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3359,7 +3380,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3380,7 +3401,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3391,7 +3412,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3405,7 +3426,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3419,7 +3440,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3502,7 +3523,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3510,7 +3531,7 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -3522,7 +3543,7 @@ msgid ""
" Always succeeds."
msgstr ""
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3566,7 +3587,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -3596,7 +3617,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3646,7 +3667,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3664,7 +3685,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3696,7 +3717,7 @@ msgid ""
" children."
msgstr ""
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3711,7 +3732,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3724,7 +3745,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3741,7 +3762,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3761,7 +3782,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3777,7 +3798,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3788,7 +3809,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -3809,29 +3830,31 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3844,7 +3867,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -3858,7 +3881,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -3869,7 +3892,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -3883,7 +3906,7 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -3894,7 +3917,7 @@ msgid ""
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -3922,7 +3945,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -3976,7 +3999,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4007,7 +4030,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4034,7 +4057,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -4063,7 +4086,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4083,7 +4106,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4106,6 +4129,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -4122,7 +4147,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4153,7 +4178,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4166,7 +4191,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4198,7 +4223,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4240,7 +4265,7 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
diff --git a/po/bg.gmo b/po/bg.gmo
index b8337414..8638773e 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 9e876f49..68331a58 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -1,14 +1,14 @@
# Bulgarian translation of bash po-file.
-# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020, 2022 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
-# Alexander Shopov <ash@kambanaria.org>, 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020.
+# Alexander Shopov <ash@kambanaria.org>, 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020, 2022.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash-5.1\n"
+"Project-Id-Version: bash-5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-12 16:27+0100\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-18 14:33+0200\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@ludost.net>\n"
"Language: bg\n"
@@ -22,59 +22,54 @@ msgstr ""
msgid "bad array subscript"
msgstr "грешен Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° маÑив"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: изтриване на атрибута за указател от променливата"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: маÑивът не може да бъде преобразуван към речник"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: грешно име на ключ в речник"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: не може да Ñе приÑвоÑва на нецифров индекÑ"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: при приÑвоÑване към речник Ñ‚Ñ€Ñбва да Ñе използва индекÑ"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: не може да Ñе Ñъздаде: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"изпълнение на команда на Ð®Ð½Ð¸ÐºÑ Ð¾Ñ‚ bash: не може да Ñе открие подредбата на\n"
"функциите на клавишите за командата"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: първиÑÑ‚ непразен знак не е „\"“"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "в %2$s липÑва затварÑщ знак „%1$c“"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: разделителÑÑ‚ „:“ липÑва"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "„%s“: неуÑпешно премахне на приÑвоÑване в подредбата на функциите на клавишите"
@@ -94,7 +89,7 @@ msgstr "замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби:
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: неуÑпешно заделÑне на памет за „%s“"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: грешно име на Ñиноним"
@@ -165,7 +160,7 @@ msgstr ""
msgid "HOME not set"
msgstr "Променливата „HOME“ не е зададена"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "прекалено много аргументи"
@@ -192,7 +187,7 @@ msgstr "предупреждение: "
msgid "%s: usage: "
msgstr "%s: употреба: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: опциÑта изиÑква аргумент"
@@ -207,7 +202,7 @@ msgstr "%s: изиÑква Ñе чиÑлов аргумент"
msgid "%s: not found"
msgstr "%s: не е открит"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: грешна опциÑ"
@@ -217,7 +212,7 @@ msgstr "%s: грешна опциÑ"
msgid "%s: invalid option name"
msgstr "%s: грешно име на опциÑ"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: грешен идентификатор"
@@ -230,7 +225,7 @@ msgstr "грешно оÑмично чиÑло"
msgid "invalid hex number"
msgstr "грешно шеÑтнайÑетично чиÑло"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "грешно чиÑло"
@@ -244,88 +239,93 @@ msgstr "%s: грешно указване на Ñигнал"
msgid "`%s': not a pid or valid job spec"
msgstr "„%s“: грешен идентификатор на Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸Ð»Ð¸ задача"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: променлива Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: не може да Ñе приÑвои"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "аргументът"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: нÑма такава задача"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: нÑма управление на задачите"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "нÑма управление на задачите"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: ограничена обвивка"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "ограничена обвивка"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: не е команда вградена в обвивката"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "грешка при запиÑ: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "грешка при задаване на атрибутите на терминала: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "грешка при получаване на атрибутите на терминала: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: грешка при получаване на текущата директориÑ: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: нееднозначно указана задача"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "помощта не е включена в тази верÑиÑ"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: не може да Ñе премахне: %s е Ñамо за четене"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: не може да Ñе премахне"
@@ -335,108 +335,108 @@ msgstr "%s: не може да Ñе премахне"
msgid "%s: invalid action name"
msgstr "%s: грешно име на дейÑтвие"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: не е указано допиÑване"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "предупреждение: опциÑта „-F“ може да не работи Ñпоред очакваниÑта ви"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "предупреждение: опциÑта „-C“ може да не работи Ñпоред очакваниÑта ви"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "в момента не Ñе изпълнÑва Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° допиÑване"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "може да Ñе използва Ñамо във функциÑ"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "„-f“ не може да Ñе използва за Ñъздаването на функции"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: променливата-указател не може да е маÑив"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: променливата-указател не може да Ñочи към Ñебе Ñи"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: цикъл в променливите-указатели"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%s“: неправилно име за променлива-указател"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "„-f“ не може да Ñе използва за Ñъздаването на функции"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: ÑÑŠÑтавното приÑвоÑване на маÑив чрез цитат е оÑтарÑло"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: променливите за маÑиви не могат да Ñе унищожават така"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: речник не може да Ñе преобразува в маÑив"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: ÑÑŠÑтавното приÑвоÑване на маÑив чрез цитат е оÑтарÑло"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "липÑва възможноÑÑ‚ за динамично зареждане"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "ÑподелениÑÑ‚ обект „%s“ не може да бъде зареден: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "„%s“ не може да Ñе открие в ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: вградената команда вече е динамично заредена"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "зареждащата Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° „%s“ върна грешка (%d): не е зареден"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: не е зареден динамично"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: не може да Ñе изтрие: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: е директориÑ"
@@ -451,7 +451,7 @@ msgstr "%s: не е обикновен файл"
msgid "%s: file is too large"
msgstr "%s: файлът е прекалено голÑм"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: двоичниÑÑ‚ файл не може да бъде изпълнен"
@@ -548,12 +548,12 @@ msgstr ""
"нÑма теми в помощта, които да отговарÑÑ‚ на „%s“. Опитайте Ñ\n"
"„help help“, „man -k %s“ или „info %s“."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: не може да Ñе отвори: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -573,21 +573,21 @@ msgstr ""
"Знакът звездичка „*“ до името на команда означава, че Ñ‚Ñ Ðµ изключена.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "не може да Ñе ползва едновременно повече от една от опциите „-anrw“"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² иÑториÑта"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: грешна дата Ñ Ð²Ñ€ÐµÐ¼Ðµ"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: неуÑпешно замеÑтване чрез иÑториÑта"
@@ -610,78 +610,78 @@ msgstr "%s: аргументите Ñ‚Ñ€Ñбва да Ñа идентификат
msgid "Unknown error"
msgstr "ÐеизвеÑтна грешка"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "очаква Ñе израз"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: не е маÑив"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: грешно указване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: грешен файлов деÑкриптор: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: грешен номер на ред"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: грешен начален Ð¸Ð½Ð´ÐµÐºÑ Ð·Ð° маÑив"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: грешно количеÑтво редове за обработка"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "празно име на променлива за маÑив"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "изиÑква Ñе поддръжка на променливи за маÑиви"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: липÑва форматиращ знак"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: грешен формат на времето"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: грешен форматиращ знак"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "предупреждение: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "неуÑпешен анализ на форма̀та: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "липÑва шеÑтнадеÑетична цифра за \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "липÑва цифра за Уникод за \\%c"
@@ -831,12 +831,12 @@ msgstr ""
" \n"
" Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: грешно указване на изтичането на времето"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "грешка при четене: %d: %s"
@@ -849,7 +849,7 @@ msgstr "„return“ е възможен Ñамо от Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ иÐ
msgid "cannot simultaneously unset a function and a variable"
msgstr "не може едновременно да Ñе премахват задаваниÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸ променлива"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: не е променлива за маÑив"
@@ -868,11 +868,11 @@ msgstr "%s: не може да Ñе изнеÑе"
msgid "shift count"
msgstr "брой на премеÑтваниÑта"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "не може едновременно да Ñе задават и да Ñе премахват опции на обвивката"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: грешно име на Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° обвивката"
@@ -939,16 +939,16 @@ msgstr "%s: грешен аргумент за ограничение"
msgid "`%c': bad command"
msgstr "„%c“: грешна команда"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: ограничението не може да бъде получено: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "ограничение"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: ограничението не може да бъде променено: %s"
@@ -967,7 +967,7 @@ msgstr "„%c“: неправилен оператор за опиÑателеÐ
msgid "`%c': invalid symbolic mode character"
msgstr "„%c“: неправилен знак за опиÑателен режим"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " ред "
@@ -987,96 +987,106 @@ msgstr "ПреуÑтановÑване…"
msgid "INFORM: "
msgstr "ИÐФОРМÐЦИЯ: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "ПРЕДУПРЕЖДЕÐИЕ: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "неизвеÑтна грешка в команда"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "грешен вид команда"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "грешна връзка"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "грешен преход"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: променлива без ÑтойноÑÑ‚"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aвремето за изчакване на вход изтече: Ñледва автоматично излизане от ÑиÑтемата\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "ÑтандартниÑÑ‚ вход не може да бъде пренаÑочен от „/dev/null“: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: копроцеÑÑŠÑ‚ [%d:%s] вÑе още ÑъщеÑтвува"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "грешка в програмен канал"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: превишено е макÑималното ниво на влагане на „eval“ (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: превишено е макÑималното ниво на влагане на код (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: превишено е макÑималното ниво на влагане на функции (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ограничение: в имената на командите не може да приÑÑŠÑтва знакът „/“"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: командата не е открита"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: не може да Ñе изпълни — липÑва необходим файл "
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: лош интерпретатор"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: двоичниÑÑ‚ файл не може да бъде изпълнен: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s“ е вградена команда в обвивката"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "файловиÑÑ‚ деÑкриптор %d не може да Ñе дублира като деÑкриптор %d"
@@ -1089,68 +1099,68 @@ msgstr "макÑималниÑÑ‚ брой нива за рекурÑÐ¸Ñ Ð² из
msgid "recursion stack underflow"
msgstr "отрицателно препълване на Ñтека за рекурÑии"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "Ñинтактична грешка в израз"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "опит за приÑвоÑване на ÑтойноÑÑ‚ на нещо, което не е променлива"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "Ñинтактична грешка при приÑвоÑване на променлива"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "деление на 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "програмна грешка: неправилна лекÑема за приÑвоÑване на израз"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "за уÑловен израз Ñе изиÑква „:“"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "Ñтепента е по-малка от 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "очаква Ñе идентификатор Ñлед предварително увеличаване или намалÑване"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "липÑва „)“"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "Ñинтактична грешка: очаква Ñе оператор"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "Ñинтактична грешка: грешен аритметичен оператор"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (грешната лекÑема е „%s“)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "грешна аритметична оÑнова на бройна ÑиÑтема"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "неправилна целочиÑлена конÑтанта"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "ÑтойноÑтта е прекалено голÑма за оÑновата"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: грешка в израза\n"
@@ -1159,7 +1169,7 @@ msgstr "%s: грешка в израза\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: нÑма доÑтъп до родителÑките директории"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "неуÑпешно изчиÑтване на режима без забавÑне на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d"
@@ -1180,169 +1190,169 @@ msgstr ""
"Ñтартиране на програмен канал: не може да Ñе комуникира Ñ Ð²Ð¾Ð´Ð°Ñ‡Ð° на канала\n"
"(pgrp pipe)"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: ЦИКЪЛ: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: ЦИКЪЛ: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "ÑтартираниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ %d е в изпълнÑваната задача %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "изтриване на ÑпрÑната задача %d в групата процеÑи %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "добавÑне на процеÑ: процеÑÑŠÑ‚ %5ld (%s) е отбелÑзан като още жив"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "опиÑателен идентификатор на процеÑ: %ld: нÑма такъв идентификатор на процеÑ"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Сигнал %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Завършен"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "СпрÑн"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "СпрÑн (%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "ИзпълнÑван"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Завършен (%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Изход %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Ðепознато ÑÑŠÑтоÑние"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(паметта е разтоварена)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "дъщерниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñмени групата при изпълнение (от %ld на %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "изчакване: процеÑÑŠÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld не е дъщерен на тази обвивка"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "изчакване: липÑват данни за Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "изчакване на задача: задачата %d е ÑпрÑна"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: нÑма текуща задача"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: задачата е приключила"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: задача %d вече е във фонов режим"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
"изчакване на дъщерен процеÑ: включване на незабавното излизане от функциÑта\n"
"чрез WNOHANG, за да Ñе избегне недефиниран блок"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: ред %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (паметта е разтоварена)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(работната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ðµ: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: неуÑпешно изпълнение на getpgrp"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: нÑма управление на задачите във фонов режим"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: диÑциплина на линиÑта"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: задаване на група при изпълнение (setpgid)"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "групата на процеÑите на терминала не може да бъде зададена (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "в тази обвивка нÑма управление на задачите"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "заделÑне на памет: грешно предположение: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1351,53 +1361,53 @@ msgstr ""
"\r\n"
"заделÑне на памет: %s:%d: предположението е отпечатано\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "непознат"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "заделÑне на памет: блок в ÑпиÑъка ÑÑŠÑ Ñвободни блокове е зает или неподходÑщ"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "изчиÑтване на памет: извикано е Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² аргумент, който вече е изчиÑтен"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "изчиÑтване на памет: извикано е Ñ Ð½ÐµÐ·Ð°Ð´ÐµÐ»ÐµÐ½ блоков аргумент"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
"изчиÑтване на памет: открито е отрицателно препълване Ñ mh_nbytes извън\n"
"допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr ""
"изчиÑтване на памет: открито е отрицателно препълване, неправилна ÑтойноÑÑ‚\n"
"за magic8"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "изчиÑтване на памет: къÑовете на началната и крайната облаÑти Ñе различават"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "презаделÑне: извикано е Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ñ Ð½ÐµÐ·Ð°Ð´ÐµÐ»ÐµÐ½ блок"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
"презаделÑне: открито е отрицателно препълване Ñ mh_nbytes извън допуÑтимиÑ\n"
"диапазон"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "презаделÑне: открито е отрицателно препълване, неправилна ÑтойноÑÑ‚ за magic8"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "презаделÑне: къÑовете на началната и крайната облаÑти Ñе различават"
@@ -1439,22 +1449,22 @@ msgstr "%s: неправилно указан мрежов път"
msgid "network operations not supported"
msgstr "не Ñе поддържат мрежови операции"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: локалът не може да бъде Ñменен (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: локалът не може да бъде Ñменен (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: локалът не може да бъде Ñменен (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: локалът не може да бъде Ñменен (%s): %s"
@@ -1472,136 +1482,136 @@ msgstr "Имате нова поща в $_"
msgid "The mail in %s has been read\n"
msgstr "Пощата в %s вече е прочетена\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "Ñинтактична грешка: изиÑква Ñе аритметичен израз"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "Ñинтактична грешка: неочакван знак „;“"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "Ñинтактична грешка: „((%s))“"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "вътрешен документ Ñ â€ž<<“: неправилен вид инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "вътрешниÑÑ‚ документ на ред %d е отделен ÑÑŠÑ Ð·Ð½Ð°Ðº за нов ред (а Ñ‚Ñ€Ñбва да е „%s“)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "пренаÑочване: инÑтрукциÑта за пренаÑочване „%d“ е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc: shell_input_line_size (%zu) надвишава SIZE_MAX (%lu): редът е отрÑзан"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "превишен е макÑималниÑÑ‚ брой възможни вътрешни документи"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "неочакван знак за край на файл „EOF“, а Ñе очакваше ÑъответÑтващ знак „%c“"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "неочакван знак за край на файл „EOF“, а Ñе очакваше „]]“"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "Ñинтактична грешка в уÑловен израз: неочаквана лекÑема „%s“"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "Ñинтактична грешка в уÑловен израз"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "неочаквана лекÑема „%s“, а Ñе очакваше знакът „)“"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "очакваше Ñе „)“"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "неочакван аргумент „%s“ за унарен уÑловен оператор"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "неочакван аргумент за унарен уÑловен оператор"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "неочаквана лекÑема „%s“, очакваше Ñе бинарен уÑловен оператор"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "очакваше Ñе бинарен уÑловен оператор"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "неочакван аргумент „%s“ за бинарен уÑловен оператор"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "неочакван аргумент за бинарен уÑловен оператор"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "неочаквана лекÑема „%c“ в уÑловна команда"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "неочаквана лекÑема „%s“ в уÑловна команда"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "неочаквана лекÑема %d в уÑловна команда"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "Ñинтактична грешка в близоÑÑ‚ до неочакваната лекÑема „%s“"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "Ñинтактична грешка в близоÑÑ‚ до „%s“"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "Ñинтактична грешка: неочакван край на файл"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "Ñинтактична грешка"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Използвайте „%s“, за да излезете от обвивката.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "неочакван знак за край на файл „EOF“, очакваше Ñе знакът „)“"
@@ -1639,98 +1649,98 @@ msgstr "xtrace_set: указател към файл – NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "отпечатване: „%c“: неправилен форматиращ знак"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "файловиÑÑ‚ деÑкриптор е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: двуÑмиÑлено пренаÑочване"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: не може да Ñе презапише ÑъщеÑтвуващ файл"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: поради ограничение изходът не може да Ñе пренаÑочи"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "не може да Ñе Ñъздаде временен файл за вътрешен документ: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: на променлива не може да Ñе приÑвои файлов деÑкриптор"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "„/dev/(tcp|udp)/host/port“ не Ñе поддържат, ако нÑма поддръжка на мрежа"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "грешка при пренаÑочване: файловиÑÑ‚ деÑкриптор не може да бъде дублиран"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "не е открита директориÑта „/tmp“. Създайте Ñ!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "„/tmp“ Ñ‚Ñ€Ñбва да е директориÑ"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "режимът за краÑив изход Ñе игнорира при интерактивна работа"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: неправилна опциÑ"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
"идентификаторът на потребител на процеÑа не може да Ñе зададе да е %d,\n"
"ефективниÑÑ‚ идентификатор на потребител на процеÑа е %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
"идентификаторът на група на процеÑа не може да Ñе зададе да е %d,\n"
"ефективниÑÑ‚ идентификатор на група на процеÑа е %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "режимът на изчиÑтване на грешки е недоÑтъпен, защото е изключен"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: е директориÑ"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Ðе може да Ñе получи името на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, верÑÐ¸Ñ %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1739,321 +1749,321 @@ msgstr ""
"Употреба: %s [дълга Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° GNU] [опциÑ]…\n"
" %s [дълга Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° GNU] [опциÑ] файл-Ñкрипт…\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Дълги опции на GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Опции на обвивката:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr " -ilrsD или -c команда, или -O къÑа_Ð¾Ð¿Ñ†Ð¸Ñ (Ñамо при Ñтартиране)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr " -%s или -o опциÑ\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° опциите на обвивката въведете „%s -c \"help set\"“.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените в обвивката команди въведете „%s -c help“.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "За да докладвате грешки, използвайте командата „bashbug“.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Интернет Ñтраница на bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "маÑка за обработката на Ñигнали: %d: грешна операциÑ"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Фалшив Ñигнал"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "ПрекъÑване на връзката"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "ПрекъÑване"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Спиране"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Ðеправилна инÑтрукциÑ"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Капан за авариен изход чрез BPT"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð·Ð° прекратÑване"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Капан Ñ EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Изключение от плаваща запетаÑ"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Убит"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Грешка в шината"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Грешка в разделÑнето"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Грешно ÑиÑтемно извикване"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "ПрекъÑнат програмен канал"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Ðларма"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Прекратен"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Спешно вх./изх. ÑÑŠÑтоÑние"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "СпрÑн (Ñигнал)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Продължаване"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Смърт или Ñпиране на дъщерен процеÑ"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Спиране (вход от tty)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Спиране (изход към tty)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "ГотовноÑÑ‚ за вх./изх."
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Ограничение на процеÑора"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Ограничение на файловете"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Ðларма (виртуална)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Ðларма (по профил)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Преоразмерен прозорец"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Заключен запиÑ"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "ПотребителÑки Ñигнал 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "ПотребителÑки Ñигнал 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Идват данни по конзола HFT"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "ПредÑтои Ñпиране на захранването"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "ПредÑтои забиване на ÑиÑтемата"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "ПремеÑтване на процеÑа на друг процеÑор"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "Програмна грешка"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "Дадено право за управление чрез конзола HFT"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "Отнето право за управление чрез конзола HFT"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "Завършена звукова поредица през HFT"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "ЗаÑвка за информациÑ"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Ðепознат Ñигнал #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "лошо замеÑтване: липÑва затварÑщ знак „%s“ в %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: на член от маÑив не може да Ñе приÑвои ÑпиÑък"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на процеÑи"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на процеÑи"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за четене"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за запиÑ"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
"именуваниÑÑ‚ програмен канал %s не може да Ñе\n"
"дублира като Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "замеÑтване на команди: знакът „null“ във входа е преÑкочен"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на команди"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на команди"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "замеÑтване на команди: каналът не може да Ñе дублира като fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: неправилно име за променлива-указател"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: грешно непрÑко замеÑтване"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "„%s“: грешно име на променлива"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: аргументът не е зададен"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: аргументът е „null“ или не е зададен"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: изразът от подниза е < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: лошо замеÑтване"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: не може да Ñе задава по този начин"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr ""
"бъдещите верÑии на обвивката ще използват изчиÑлÑване като аритметично\n"
"замеÑтване"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "лошо замеÑтване: липÑва затварÑщ знак „`“ в %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "нÑма Ñъвпадение: %s"
@@ -2076,21 +2086,21 @@ msgstr "очаква Ñе „)“"
msgid "`)' expected, found %s"
msgstr "очаква Ñе „)“, а е получено %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: очаква Ñе бинарен оператор"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: очаква Ñе унарен оператор"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "липÑва „]“"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "Ñинтактична грешка: неочакван знак/ци „%s“"
@@ -2099,113 +2109,118 @@ msgstr "Ñинтактична грешка: неочакван знак/ци â€
msgid "invalid signal number"
msgstr "неправилен номер на Ñигнал"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: превишено е макÑималното ниво на влагане на „eval“ (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr ""
"Ñтартиране на предÑтоÑщите прихващаниÑ: неправилна ÑтойноÑÑ‚ в\n"
"trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
"Ñтартиране на предÑтоÑщите прихващаниÑ: обработката на Ñигнали е SIG_DFL.\n"
"%d (%s) е преизпратен на текущата обвивка"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "обработка на прихващаниÑ: неправилен Ñигнал %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "грешка при внаÑÑнето на дефинициÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° „%s“"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "нивото на обвивката (%d) е прекалено голÑмо. Задава Ñе да е 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr ""
"Ñъздаване на локална променлива: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата облаÑÑ‚\n"
"на видимоÑÑ‚"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: на тази променлива не може да Ñе приÑвои ÑтойноÑÑ‚"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: не може да Ñе наÑледи ÑтойноÑÑ‚ от неÑъвмеÑтим вид"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: приÑвоÑване на чиÑло на променлива-указател"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr ""
"вÑички локални променливи: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата облаÑÑ‚ на\n"
"видимоÑÑ‚"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s: аргументът за низа за изнаÑÑне не Ñ‚Ñ€Ñбва да е „null“"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "неправилен знак на Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ %d в низа за изнаÑÑне за %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "липÑва „=“ в низа за изнаÑÑне за %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
"изваждане на контекÑÑ‚ на променливи: в началото на Ñтруктурата за променливи на\n"
"обвивката (shell_variables) е нещо, което не е контекÑÑ‚ на функциÑ"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr ""
"изваждане на контекÑÑ‚ на променливи: липÑва контекÑÑ‚ за глобални променливи\n"
"(global_variables)"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"изваждане на облаÑÑ‚: в началото на Ñтруктурата за променливи на обвивката\n"
"(shell_variables) е нещо, което не е временна облаÑÑ‚ в обкръжението"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s не може да Ñе отвори като ФÐЙЛ"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: грешен файлов деÑкриптор за файла за траÑиране"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "ÐвторÑки права © 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "ÐвторÑки права © 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2289,12 +2304,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] команда [ÐРГУМЕÐТ…]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [ИМЕ[=СТОЙÐОСТ]…]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [ИМЕ[=СТОЙÐОСТ]…] или declare -p [-aAfFilnrtux] [ИМЕ…]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] ИМЕ[=СТОЙÐОСТ]…"
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] ИМЕ[=СТОЙÐОСТ]… или typeset -p [-aAfFilnrtux] [ИМЕ…]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2390,8 +2405,8 @@ msgid "return [n]"
msgstr "return [ЦИФРОВ_КОД]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o ОПЦИЯ] [--] [ÐРГУМЕÐТИ…]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o ОПЦИЯ] [--] [ÐРГУМЕÐТ…]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2438,8 +2453,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] ИМЕ [ИМЕ…]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ОГРÐÐИЧЕÐИЕ]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [ОГРÐÐИЧЕÐИЕ]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2478,12 +2493,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if КОМÐÐДИ; then КОМÐÐДИ; [ elif КОМÐÐДИ; then КОМÐÐДИ; ]… [ else КОМÐÐДИ; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while КОМÐÐДИ; do КОМÐÐДИ; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while КОМÐÐДИ; do КОМÐÐДИ_2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until КОМÐÐДИ; do КОМÐÐДИ; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until КОМÐÐДИ; do КОМÐÐДИ_2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3833,7 +3848,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3875,8 +3891,9 @@ msgstr ""
" „-u“, Ñе прочита един ред. Редът Ñе Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ð½Ð° полета — думи. Първата дума\n"
" Ñе приÑвоÑва на първото ИМЕ, втората дума на второто ИМЕ и Ñ‚.н., а на\n"
" поÑледното ИМЕ Ñе приÑвоÑват оÑтаващите думи. Като разделители на думи Ñе\n"
-" използват Ñамо знаците указани в променливата „IFS“.\n"
-" \n"
+" използват Ñамо знаците указани в променливата „IFS“. Стандартно знакът „\\“\n"
+" екранира разделителите и новите редове.\n"
+"\n"
" Ðко не Ñа дадени ИМЕна, прочетениÑÑ‚ ред Ñе запазва в променливата „REPLY“.\n"
" \n"
" Опции:\n"
@@ -3915,7 +3932,7 @@ msgstr ""
" грешка при задаване на ÑтойноÑÑ‚ на променлива или е зададен неправилен\n"
" файлов деÑкриптор като аргумент на -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3936,7 +3953,7 @@ msgstr ""
" Връща ЦИФРОВиÑ_КОД или грешка, ако обвивката в момента не изпълнÑва функциÑ\n"
" или Ñкрипт."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4102,7 +4119,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако не е зададена неправилна опциÑ."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4142,7 +4159,7 @@ msgstr ""
" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е Ñамо за\n"
" четене."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4176,7 +4193,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е неправилно."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4214,7 +4231,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е неправилно."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4233,7 +4250,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако БРОÑÑ‚ е отрицателно или по-голÑмо от ÑтойноÑтта „$#“."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4257,7 +4274,7 @@ msgstr ""
" Връща ÑÑŠÑтоÑнието на поÑледно изпълнената команда във ФÐЙЛа. Ðко той не\n"
" може да бъде открит, изходът е грешка."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4282,7 +4299,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако не възникне грешка или управлението на задачи е изключено."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4439,7 +4456,7 @@ msgstr ""
" 0, ако ИЗРÐЗът е верен. Грешка, когато ИЗРÐЗът е неверен или е даден\n"
" неправилен аргумент."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4452,7 +4469,7 @@ msgstr ""
" задължително да е знакът „]“, който да ÑъответÑтва на отварÑщата квадратна\n"
" Ñкоба „[“."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4470,7 +4487,7 @@ msgstr ""
" Изходен код:\n"
" Винаги 0."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4539,7 +4556,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако е зададен неправилен Ñигнал или опциÑ."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4593,7 +4610,7 @@ msgstr ""
" Изходен код:\n"
" 0, ако вÑички подадени ИМЕна Ñа открити, неуÑпех, ако нÑкое от Ñ‚ÑÑ… липÑва."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4690,7 +4707,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако не възникни грешка или е дадена неправилна опциÑ."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4723,7 +4740,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако ÐœÐСКÐта или нÑÐºÐ¾Ñ Ð¾Ñ‚ зададените опции Ñа неправилни."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4777,7 +4794,7 @@ msgstr ""
" връща и при задаването на опциÑта „-n“, а обвивката нÑма дъщерни процеÑи,\n"
" които не Ñе чакат."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4800,7 +4817,7 @@ msgstr ""
" Ð˜Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на процеÑа Ñ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€. Грешка, ако е даден\n"
" неправилен идентификатор или е дадена неправилна опциÑ."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4822,7 +4839,7 @@ msgstr ""
" Изходен код:\n"
" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4851,7 +4868,7 @@ msgstr ""
" Изходен код:\n"
" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4887,7 +4904,7 @@ msgstr ""
" Изходен код:\n"
" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4917,7 +4934,7 @@ msgstr ""
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на ПРОГРÐÐœÐиÑ_КÐÐÐЛ."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4935,7 +4952,7 @@ msgstr ""
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4965,43 +4982,43 @@ msgstr ""
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Изпълнение на команда докато определен теÑÑ‚ е уÑпешен.\n"
" \n"
-" ЗамеÑтване и изпълнение на КОМÐÐДИте докато поÑледната команда в блока\n"
-" „while“ е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който е 0.\n"
+" ЗамеÑтване и изпълнение на КОМÐÐДИ_2 докато поÑледната команда в блока\n"
+" КОМÐÐДИ е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който е 0.\n"
" \n"
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Изпълнение на команда докато определен теÑÑ‚ е неуÑпешен.\n"
" \n"
-" ЗамеÑтване и изпълнение на КОМÐÐДИте докато поÑледната команда в блока\n"
-" „until“ е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който не е 0.\n"
+" ЗамеÑтване и изпълнение на КОМÐÐДИ_2 докато поÑледната команда в блока\n"
+" КОМÐÐДИ е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който не е 0.\n"
" \n"
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5023,7 +5040,7 @@ msgstr ""
" Изходен код:\n"
" ИзходниÑÑ‚ код е 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5045,7 +5062,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако ИМЕто не е Ñамо за четене."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5063,7 +5080,7 @@ msgstr ""
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5087,7 +5104,7 @@ msgstr ""
" Изходен код:\n"
" ИзходниÑÑ‚ код е този възобновената задача."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5105,7 +5122,7 @@ msgstr ""
" Изходен код:\n"
" 1, ако резултатът на ИЗРÐЗа е 0. Ð’ противен Ñлучай — 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5155,7 +5172,7 @@ msgstr ""
" Изходен код:\n"
" 0 или едно Ñпоред ÑтойноÑтта на ИЗРÐЗа."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5260,7 +5277,7 @@ msgstr ""
" HISTIGNORE СпиÑък Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸, разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ, които указват кои\n"
" команди да не Ñе запазват в иÑториÑта\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5318,7 +5335,7 @@ msgstr ""
" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине към\n"
" Ñъответната директориÑ."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5369,7 +5386,7 @@ msgstr ""
" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине към\n"
" Ñъответната директориÑ."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5419,7 +5436,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5455,7 +5472,7 @@ msgstr ""
" 0, ако ОПЦИЯта е включена, грешка, ако е зададена неправилна или изключена\n"
" ОПЦИЯ."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5474,6 +5491,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5505,6 +5524,8 @@ msgstr ""
" черти в ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚\n"
" %q предизвиква цитирането на аргумента, така че да може да бъде\n"
" използван като вход за обвивката\n"
+" %Q подобно на „%q“, но Ñе прилага нÑкаква точноÑÑ‚ към нецитираниÑ\n"
+" аргумент преди цитирането му\n"
" %(fmt) отпечатване на низа при третиране на аргумента като дата и време\n"
" Ñпоред strftime(3)\n"
" \n"
@@ -5516,7 +5537,7 @@ msgstr ""
" 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка при\n"
" извеждането на резултата или при приÑвоÑването на ÑтойноÑтта."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5567,7 +5588,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5587,7 +5608,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5642,7 +5663,7 @@ msgstr ""
" 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ липÑват инÑтрукции към ИМЕто\n"
" за автоматично допиÑване."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5712,7 +5733,7 @@ msgstr ""
" Връща 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ ако ÐœÐСИВът е променлива\n"
" Ñамо за четене или не е индекÑиран маÑив."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
diff --git a/po/ca.gmo b/po/ca.gmo
index 0b94a7a0..c144d0ed 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index f1cadd2b..eb9791a0 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -1,15 +1,15 @@
# Catalan messages for GNU bash.
-# Copyright (C) 2002, 2003, 2010, 2014, 2015, 2017 Free Software Foundation, Inc.
+# Copyright (C) 2022 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# Montxo Vicente i Sempere <montxo@enmoviment.com>, 2003 (traducció), 2010 (revisions).
# Jordi Mas i Hernàndez <jmas@softcatala.org>, 2004 (correccions).
-# Ernest Adrogué Calveras <eadrogue@gmx.net>, 2014, 2015, 2017.
+# Ernest Adrogué i Calveras <nr9@posteo.net>, 2014-2022.
msgid ""
msgstr ""
-"Project-Id-Version: bash-4.4\n"
+"Project-Id-Version: bash-5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2017-01-10 20:11+0100\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-07-06 20:08+0200\n"
"Last-Translator: Ernest Adrogué Calveras <eadrogue@gmx.net>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
"Language: ca\n"
@@ -23,61 +23,55 @@ msgstr ""
msgid "bad array subscript"
msgstr "subíndex erroni"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: s'elimina l'atribut «nameref»"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: no és possible convertir un vector indexat en associatiu"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: clau de vector associatiu no vàlida"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: no es pot assignar a un índex no-numèric"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: l'assignació en vectors associatius requereix un subíndex"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: no es pot crear: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
-"bash_execute_unix_command: no s'ha trobat el mapa de tecles per a l'ordre"
+msgstr "bash_execute_unix_command: no s'ha trobat el mapa de tecles per a l'ordre"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: el primer caràcter no-blanc no és «\"»"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "falta un caràcter de tancament «%c» a %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: falta un caràcter «:» de separació"
-#: bashline.c:4555
-#, fuzzy, c-format
+#: bashline.c:4733
+#, c-format
msgid "`%s': cannot unbind in command keymap"
-msgstr "«%s»: no es pot desvincular"
+msgstr "«%s»: no es pot desvincular en el mapa de tecles de l'ordre"
#: braces.c:327
#, c-format
@@ -85,16 +79,16 @@ msgid "brace expansion: cannot allocate memory for %s"
msgstr "expansió de claus: no es pot assignar memòria per a %s"
#: braces.c:406
-#, fuzzy, c-format
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "expansió de claus: ha fallat l'assignació de memòria per a %d elements"
+msgstr "expansió de claus: ha fallat l'assignació de memòria per a %u elements"
#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansió de claus: ha fallat l'assignació de memòria per a «%s»"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "«%s»: el nom de l'àlies no és valid"
@@ -143,7 +137,6 @@ msgstr "només té sentit en una iteració de tipus «for», «while» o «until
# help caller
#: builtins/caller.def:136
-#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
@@ -161,17 +154,13 @@ msgstr ""
" per a proporcionar un traçat de la pila.\n"
"\n"
" El valor de EXPR indica quants «frames» retrocedir des de l'actual; el\n"
-" «frame» superior és el 0.\n"
-"\n"
-" Estat de sortida:\n"
-" Retorna 0 excepte si l'intèrpret no està executant una funció o si EXPR\n"
-" no és una expressió vàlida."
+" «frame» superior és el 0."
#: builtins/cd.def:327
msgid "HOME not set"
msgstr "la variable HOME no està definida"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "sobren arguments"
@@ -198,7 +187,7 @@ msgstr "atenció: "
msgid "%s: usage: "
msgstr "%s: sintaxi: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: l'opció requereix un argument"
@@ -213,7 +202,7 @@ msgstr "%s: falta un argument numèric"
msgid "%s: not found"
msgstr "%s: no s'ha trobat"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: l'opció no és vàlida"
@@ -223,7 +212,7 @@ msgstr "%s: l'opció no és vàlida"
msgid "%s: invalid option name"
msgstr "%s: el nom de l'opció no és vàlid"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "«%s»: no és un identificador vàlid"
@@ -236,7 +225,7 @@ msgstr "nombre octal no vàlid"
msgid "invalid hex number"
msgstr "nombre hexadecimal no vàlid"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "nombre no vàlid"
@@ -250,90 +239,95 @@ msgstr "%s: especificació de senyal no vàlida"
msgid "`%s': not a pid or valid job spec"
msgstr "«%s»: pid o especificació de feina no vàlids"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: variable de només lectura"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: no es pot assignar"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s fora del domini"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s fora del domini"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: no existeix tal feina"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: no hi ha control de feines"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "no hi ha control de feines"
# cd .. en un intèrpret restringit
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: restringit"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "restringit"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: no és una ordre interna de l'intèrpret"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "error d'escriptura: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "error en establir els atributs del terminal: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "error en obtenir els atributs del terminal: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: error en obtenir el directori actual: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: l'especificació de feina és ambigua"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "aquesta versió no té ajuda disponible"
# unset UID
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: no es pot suprimir: %s de només lectura"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: no es pot suprimir"
@@ -343,109 +337,109 @@ msgstr "%s: no es pot suprimir"
msgid "%s: invalid action name"
msgstr "%s: nom d'acció no vàlid"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: no hi ha especificació de compleció"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "atenció: l'opció -F pot no funcionar com us espereu"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "atenció: l'opció -C pot no funcionar com us espereu"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "no s'està executant una funció de compleció"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "només es pot utilitzar en una funció"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "no és possible usar «-f» per convertir en funció"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funció de només lectura"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: una variable referència no pot ser un vector"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: no es permeten autoreferències en variables referència"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: referència circular"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "«%s»: la variable referència conté un nom de variable no vàlid"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "no és possible usar «-f» per convertir en funció"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: funció de només lectura"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-"%s: es desaconsella l'assignació múltiple en vectors utilitzant cometes"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: no és possible destruir variables vector d'aquesta manera"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: no és possible convertir un vector associatiu en indexat"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: es desaconsella l'assignació múltiple en vectors utilitzant cometes"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "no es poden carregar biblioteques dinàmicament"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "no es pot obrir l'objecte compartit %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "no s'ha trobat %s a l'objecte compartit %s: %s"
-#: builtins/enable.def:388
-#, fuzzy, c-format
+# help enable
+#: builtins/enable.def:422
+#, c-format
msgid "%s: dynamic builtin already loaded"
-msgstr "%s: no s'ha carregat dinàmicament"
+msgstr "%s: ordre interna dinàmica ja carregada"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "l'intent de carregar %s ha fallat (%d): no carregat"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: no s'ha carregat dinàmicament"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: no es pot eliminar: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: és un directori"
@@ -460,7 +454,7 @@ msgstr "%s: no és un fitxer ordinari"
msgid "%s: file is too large"
msgstr "%s: el fitxer és massa gran"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: no es poden executar fitxers binaris"
@@ -549,20 +543,20 @@ msgid ""
"'\n"
"\n"
msgstr ""
+"'\n"
+"\n"
#: builtins/help.def:185
#, c-format
-msgid ""
-"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-"no hi ha ajuda sobre «%s». Proveu «help help», «man -k %s» o «info %s»."
+msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr "no hi ha ajuda sobre «%s». Proveu «help help», «man -k %s» o «info %s»."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: no es pot obrir: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -582,21 +576,21 @@ msgstr ""
"Un asterisc (*) significa que l'ordre està deshabilitada.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "no és possible usar més d'una opció d'entre -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "posició a l'historial"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: la marca horària no és vàlida"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: ha fallat l'expansió de l'historial"
@@ -619,78 +613,78 @@ msgstr "%s: els arguments han de ser ids de processos o feines"
msgid "Unknown error"
msgstr "Error desconegut"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "s'esperava una expressió"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: no és un vector indexat"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: l'especificació de descriptor de fitxer no és vàlida"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: el descriptor de fitxer no és vàlid: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: el nombre de línies no és vàlid"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: l'origen del vector no és vàlid"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: el quàntum de retorn no és vàlid"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "nom de variable vector en blanc"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "fa falta suport per a variables vector"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "«%s»: falta un caràcter de format"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: l'especificació de format de temps no és vàlida"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: el caràcter de format no és vàlid"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "atenció: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "problema en interpretar el format: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "falta un dígit hexadecimal a \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "falta un dígit Unicode a \\%c"
@@ -732,16 +726,13 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
-"Mostra la llista actual de directoris recordats. Els directoris són "
-"afegits\n"
+"Mostra la llista actual de directoris recordats. Els directoris són afegits\n"
" a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista de\n"
" directoris cap enrere amb l'ordre «popd».\n"
"\n"
@@ -789,8 +780,7 @@ msgid ""
msgstr ""
"Afegeix un directori al capdamunt de la pila de directoris, o fa girar la\n"
" llista, de manera que al capdamunt de la pila hi queda el directori de\n"
-" treball corrent. Sense arguments, intercanvia els dos directoris de "
-"més\n"
+" treball corrent. Sense arguments, intercanvia els dos directoris de més\n"
" amunt.\n"
"\n"
" Opcions:\n"
@@ -855,12 +845,12 @@ msgstr ""
" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»."
# read -t -5
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: el límit de temps no és vàlid"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "error de lectura: %d: %s"
@@ -874,7 +864,7 @@ msgstr "només es permet fer «return» des d'una funció o script"
msgid "cannot simultaneously unset a function and a variable"
msgstr "no és possible suprimir una funció i una variable alhora"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: no és una variable vector"
@@ -894,12 +884,12 @@ msgstr "%s: no es pot exportar"
msgid "shift count"
msgstr "nombre de «shifts»"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "no es poden activar i desactivar opcions de forma simultània"
# shopt -s foo
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: l'opció de l'intèrpret no és vàlida"
@@ -969,16 +959,16 @@ msgstr "%s: el límit no és vàlid"
msgid "`%c': bad command"
msgstr "«%c»: ordre errònia"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: no es pot obtenir el límit: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "límit"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: no es pot modificar el límit: %s"
@@ -999,7 +989,7 @@ msgstr "«%c»: l'operador de mode simbòlic no és vàlid"
msgid "`%c': invalid symbolic mode character"
msgstr "«%c»: el mode simbòlic conté caràcters no vàlids"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " línia "
@@ -1020,100 +1010,110 @@ msgstr "Avortant..."
msgid "INFORM: "
msgstr "INFORMACIÓ: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "atenció: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "error no identificat"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "tipus d'ordre erroni"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "connector erroni"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "salt erroni"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: variable no definida"
# SIGALRM
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atemps esgotat mentre s'esperaven dades: autodesconnexió\n"
# error intern
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "no s'ha pogut redirigir l'entrada estàndard des de /dev/null: %s"
# error intern
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c»: el caràcter de format no és vàlid"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: el coprocés [%d:%s] encara existeix"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "error de canonada"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: excedit el nombre màxim d'imbricacions per a «source» (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: excedit el nombre màxim de funcions imbricades (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restricció: no podeu especificar «/» en noms d'ordres"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: no s'ha trobat l'ordre"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: no es pot executar: no s'ha trobat un fitxer necessari"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: intèrpret erroni"
# error intern
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: no es pot executar el fitxer binari: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "«%s»: és una ordre interna especial"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "no s'ha pogut duplicar l'fd %d com a fd %d"
@@ -1126,72 +1126,70 @@ msgstr "excedit el nivell màxim de recursivitat per a expressions"
msgid "recursion stack underflow"
msgstr "«underflow» a la pila de recursivitat"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "error de sintaxi a l'expressió"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "intent d'assignació a una no-variable"
-#: expr.c:530
-#, fuzzy
+#: expr.c:531
msgid "syntax error in variable assignment"
-msgstr "error de sintaxi a l'expressió"
+msgstr "error de sintaxi en una assignació de variable"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "divisió per 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "bug: el component «expassign» és erroni"
# echo $((4 > 5 ? 0))
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "falta un caràcter «:» a l'expressió condicional"
# echo $((4 ** -1))
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "exponent menor que 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "fa falta un identificador després del pre-increment o pre-decrement"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "falta un caràcter «)»"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "error de sintaxi: s'esperava un operand"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "error de sintaxi: l'operador aritmètic no és vàlid"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (l'element erroni és «%s»)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "la base aritmètica no és vàlida"
-#: expr.c:1582
-#, fuzzy
+#: expr.c:1587
msgid "invalid integer constant"
-msgstr "%s: el nombre de línies no és vàlid"
+msgstr "nombre enter invàlid"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "el valor de la base és massa gran"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expressió errònia\n"
@@ -1200,7 +1198,7 @@ msgstr "%s: expressió errònia\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: els directoris superiors són inaccessibles"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "no s'ha pogut restablir el mode «nodelay» per a l'fd %d"
@@ -1219,220 +1217,219 @@ msgstr "save_bash_input: ja existia un «buffer» per al nou fd %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp de la canonada"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "el pid bifurcat %d apareix a la feina en execució %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "s'elimina la feina aturada %d amb grup de procés %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: el pid %5ld (%s) està marcat com a viu"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: no existeix tal pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Senyal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Fet"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Aturat"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Aturat(%s)"
# ha de tenir menys de 10 caràcters o no queda alineat
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Funcionant"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Fet(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Sortida %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Estat desconegut"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(s'ha bolcat la memòria)"
# wd = working directory
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (dt: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid (de %ld a %ld) per al procés inferior"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: el pid %ld no és un fill d'aquest intèrpret"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
-msgstr "wait_for: No es té constància del procés %ld"
+msgstr "wait_for: No hi ha constància del procés %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: la feina %d està aturada"
-#: jobs.c:3564
-#, fuzzy, c-format
+#: jobs.c:3551
+#, c-format
msgid "%s: no current jobs"
-msgstr "%s: no existeix tal feina"
+msgstr "%s: no hi ha feines en curs"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: la feina ha acabat"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: la feina %d ja es troba en segon pla"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: s'activa «WNOHANG» per a evitar un bloqueig indefinit"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s línia %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (s'ha bolcat la memòria)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(dt ara: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp ha fallat"
-#: jobs.c:4447
-#, fuzzy
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: disciplina de línia"
+msgstr "initialize_job_control: no s'està executant el control de feines"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina de línia"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "no s'ha pogut establir el grup de procés del terminal (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "aquesta sessió no té control de feines"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: asserció fallida: %s\n"
# error intern i el \r provoca warnings
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
+"\\r\n"
+"malloc: %s:%d: asserció mal executada\\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "desconegut"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloc abatussat a la llista de disponibles"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: cridat amb un argument de bloc ja alliberat"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: cridat amb un argument bloc no assignat"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underflow detectat; mh_nbytes fora del domini"
-#: lib/malloc/malloc.c:1001
-#, fuzzy
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
-msgstr "free: underflow detectat; mh_nbytes fora del domini"
+msgstr "free: underflow detectat; la variable magic8 està corrompuda"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: les mides inicial i final del fragment difereixen"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: cridat amb un argument de bloc no assignat"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underflow detectat: mh_nbytes fora del domini"
-#: lib/malloc/malloc.c:1141
-#, fuzzy
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
-msgstr "realloc: underflow detectat: mh_nbytes fora del domini"
+msgstr "realloc: underflow detectat: la variable magic8 està corrumpuda"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: les mides inicial i final del fragment difereixen"
@@ -1474,22 +1471,22 @@ msgstr "%s: la ubicació remota no és vàlida"
msgid "network operations not supported"
msgstr "les operacions de xarxa no estan suportades"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: no s'ha pogut canviar el local (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: no s'ha pogut canviar el local (%s): %s"
@@ -1507,142 +1504,138 @@ msgstr "Teniu correu nou a $_"
msgid "The mail in %s has been read\n"
msgstr "El correu a %s ha estat llegit\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "error de sintaxi: fa falta una expressió aritmètica"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "error de sintaxi: «;» inesperat"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "error de sintaxi: «((%s))»"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: tipus d'instrucció erroni %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "document literal a la línia %d delimitat per EOF (volia «%s»)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instrucció de redirecció «%d» fora del domini"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
-msgid ""
-"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
-"truncated"
-msgstr ""
-"shell_getc: shell_input_line_size (%zu) excedeix «SIZE_MAX» (%lu): línia "
-"truncada"
+msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
+msgstr "shell_getc: shell_input_line_size (%zu) excedeix «SIZE_MAX» (%lu): línia truncada"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "excedit el nombre màxim de documents literals"
# "echo $(echo" en un script
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF inesperat mentre es cercava «%c»"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF inesperat mentre es cercava «]]»"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "error de sintaxi a l'expressió condicional: element «%s» inesperat"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "error de sintaxi a l'expressió condicional"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "element «%s» inesperat, s'esperava «)»"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "s'esperava «)»"
# [[ -d ]]
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argument «%s» inesperat a un operador unari condicional"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "argument inesperat a un operador unari condicional"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "element «%s» inesperat, s'esperava un operador binari condicional"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "s'esperava un operador binari condicional"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argument inesperat «%s» a un operador binari condicional"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "argument inesperat a un operador binari condicional"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "element «%c» inesperat en una ordre condicional"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "element «%s» inesperat en una ordre condicional"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "element %d inesperat en una ordre condicional"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "error de sintaxi a prop de l'element inesperat «%s»"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "error de sintaxi a prop de «%s»"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "error de sintaxi: final de fitxer inesperat"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "error de sintaxi"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Useu \"%s\" per a abandonar l'intèrpret.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF inesperat mentre es cercava un «)»"
@@ -1680,96 +1673,96 @@ msgstr "xtrace_set: el punter de fitxer és NUL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: el caràcter de format no és vàlid"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "descriptor de fitxer fora del domini"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redirecció ambigua"
# opció noclobber
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: no es pot escriure sobre un fitxer existent"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricció: no podeu redirigir la sortida"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "no s'ha pogut crear el fitxer temporal per a un document literal: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: no és possible assignar un fd a una variable"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port no està suportat si no hi ha xarxa"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "error de redirecció: no es pot duplicar l'fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "no s'ha trobat el directori /tmp, sis-plau creeu-lo!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp ha de ser un nom de directori vàlid"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "el mode «pretty-printing» s'ignora en sessions interactives"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: l'opció no és vàlida"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "no s'ha pogut establir l'uid com a %d: uid effectiu %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "no s'ha pogut establir el gid com a %d: gid effectiu %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "no es pot iniciar el depurador; mode de depuració desactivat"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: És un directori"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "No teniu nom!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versió %s-(%s)\n"
#
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1778,324 +1771,321 @@ msgstr ""
"Sintaxi: %s [opció GNU llarga] [opció] ...\n"
" %s [opció GNU llarga] [opció] fitxer-script ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Opcions GNU llargues:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Opcions de l'intèrpret:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD, o -c ordre, o bé -O opció_intèrpret\t(només invocació)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s, o bé -o opció\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-"Feu «%s -c \"help set\"» per a informació sobre les opcions de l'intèrpret.\n"
+msgstr "Feu «%s -c \"help set\"» per a informació sobre les opcions de l'intèrpret.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Feu «%s -c help» per a obtenir informació sobre les ordres internes.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Feu servir l'ordre «bashbug» per a informar de «bugs».\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "pàgina web de bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: l'operació no és vàlida"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Senyal no fiable"
# Senyals POSIX
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Desconnexió"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interrupció"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Sortida"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Instrucció il·legal"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Traçat/trampa BPT"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Instrucció «ABORT»"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Instrucció «EMT»"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Excepció de coma flotant"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Mort"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Error de bus"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Violació de segment"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Crida de sistema errònia"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Canonada trencada"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Alarma"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Finalitzat"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Estat E/S urgent"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Aturat (senyal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continua"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Procés inferior mort o aturat"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Aturat (entrada tty)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Aturat (sortida tty)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "E/S a punt"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Limitació de CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Limitació de fitxers"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarma (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarma (perfil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Canvi de finestra"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Bloqueig de registre"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Senyal d'usuari 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Senyal d'usuari 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Dades HFT d'entrada pendents"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "fallada imminent de l'alimentació"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "fallada imminent del sistema"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migració del procés a una altra CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "error de programació"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "mode de monitoratge HFT concedit"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "mode de monitoratge HFT retractat"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "seqüència d'àudio HFT completada"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Petició d'informació"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Senyal Desconegut #%d"
# missatge similar a subst.c:75XX
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "substitució errònia: falta un «%s» a %s"
# foo[1]=(1 2 3)
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: no és possible assignar llistes a l'element d'un vector"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "no s'ha pogut crear la canonada per a la substitució de procés"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "no s'ha pogut crear el fill per a la substitució de procés"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "no s'ha pogut obrir la canonada %s per a lectura"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "no s'ha pogut obrir la canonada %s per a escriptura"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "no s'ha pogut duplicar la canonada %s com a fd %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "substitució d'ordre: s'ignora un octet nul en l'entrada"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "no s'ha pogut crear la canonada per a la substitució d'ordre"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "no s'ha pogut crear un fill per a la substitució d'ordre"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: no s'ha pogut duplicar la canonada com a fd 1"
# buscar context
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: el nom de la variable referenciada no és vàlid"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: expansió indirecta no vàlida"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nom de variable no vàlid"
-#: subst.c:7256
-#, fuzzy, c-format
+#: subst.c:7478
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: paràmetre nul o no definit"
+msgstr "%s: paràmetre no definit"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: paràmetre nul o no definit"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expressió de subcadena < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: substitució errònia"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: no és possible assignar d'aquesta manera"
-#: subst.c:9814
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
+#: subst.c:10111
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "en futures versions de bash s'avaluarà com a substitució aritmètica"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "subtitució errònia: falta un caràcter «`» final a %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "cap coincidència: %s"
@@ -2118,139 +2108,140 @@ msgstr "s'esperava «)»"
msgid "`)' expected, found %s"
msgstr "s'esperava «)», s'ha trobat %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: s'esperava un operador binari"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: s'esperava un operador unari"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "falta un «]»"
-#: test.c:899
-#, fuzzy, c-format
+#: test.c:914
+#, c-format
msgid "syntax error: `%s' unexpected"
-msgstr "error de sintaxi: «;» inesperat"
+msgstr "error de sintaxi: «%s» inesperat"
#: trap.c:220
msgid "invalid signal number"
msgstr "el número de senyal no és vàlid"
-#: trap.c:325
-#, fuzzy, c-format
+#: trap.c:323
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)"
+msgstr "trap handler: excedit el nivell màxim d'interceptació de senyals (%d)"
# internal warning
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: valor incorrecte a trap_list[%d]: %p"
# internal warning
-#: trap.c:418
+#: trap.c:416
#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr "run_pending_traps: el gestor de senyal és SIG_DFL, em re-envio %d (%s) a mi mateix"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: senyal erroni %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error en importar la definició de funció de «%s»"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "el nivell de l'intèrpret (%d) és massa elevat, es restableix a 1"
# error intern
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
-msgstr ""
+msgstr "make_local_variable: no existeix un context de funció en l'àmbit actual"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: no és possible assignar un valor a la variable"
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: no es pot heretar un valor de tipus incompatible"
+
# buscar context
-#: variables.c:3475
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: assignació numèrica a una variable referència"
# error intern
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
-msgstr ""
+msgstr "all_local_variables: no existeix un context de función en l'àmbit actual"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "el paràmetre «exportstr» de la variable %s és nul"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "el caràcter %d en el paràmetre «exportstr» de %s no és vàlid"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "falta un «=» en el paràmetre «exportstr» de %s"
# error intern
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
+msgstr "pop_var_context: la capçalera de shell_variables no és un context de funció"
# error intern
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
-msgstr ""
+msgstr "pop_var_context: no existeix un context de global_variables"
# error intern
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
+msgstr "pop_scope: la capçaleras shell_variables no és un àmbit temporal d'entorn"
# error intern
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: no s'ha pogut obrir com a FITXER"
# error intern
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
-msgstr ""
+msgstr "%s: %s: valor invàlid per a una traça de descriptor de fitxer"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: el valor de compatibilitat és fora del domini"
#: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2012 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
msgstr ""
"Llicència GPLv3+: GNU GPL versió 3 o posterior\n"
" <http://gnu.org/licenses/gpl.html>\n"
@@ -2262,8 +2253,7 @@ msgstr "GNU bash, versió %s (%s)\n"
#: version.c:91 version2.c:91
msgid "This is free software; you are free to change and redistribute it."
-msgstr ""
-"Aquest programa és lliure; sou lliures de modificar-lo i redistribuir-lo."
+msgstr "Aquest programa és lliure; sou lliures de modificar-lo i redistribuir-lo."
#: version.c:92 version2.c:92
msgid "There is NO WARRANTY, to the extent permitted by law."
@@ -2301,12 +2291,8 @@ msgstr "unalias [-a] nom [nom ...]"
# help bind
#: builtins.c:53
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpsvPSVX] [-m mapa] [-f fitxer] [-q nom] [-u nom] [-r tecles] [-x "
-"tecles:ordre-intèrpret] [tecles:funció-readline o ordre-readline]"
+msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr "bind [-lpsvPSVX] [-m mapa] [-f fitxer] [-q nom] [-u nom] [-r tecles] [-x tecles:ordre-intèrpret] [tecles:funció-readline o ordre-readline]"
#: builtins.c:56
msgid "break [n]"
@@ -2337,14 +2323,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] ordre [arg ...]"
#: builtins.c:78
-#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valor] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [nom[=valor] ...] o declare -p [-aAfFilnrtux] [nom ...]"
#: builtins.c:80
-#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valor] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] nom[=valor] ... o typeset -p [-aAfFilnrtux] [nom ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2367,14 +2351,12 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-#, fuzzy
msgid "getopts optstring name [arg ...]"
-msgstr "getopts cadena nom [arg]"
+msgstr "getopts cadena nom [arg ...]"
#: builtins.c:98
-#, fuzzy
msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
-msgstr "exec [-cl] [-a nom] [ordre [arguments ...]] [redirecció ...]"
+msgstr "exec [-cl] [-a nom] [ordre [argument ...]] [redirecció ...]"
#: builtins.c:100
msgid "exit [n]"
@@ -2405,12 +2387,8 @@ msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [patró ...]"
#: builtins.c:123
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [-d offset] [n] o history -anrw [fitxer] o history -ps arg "
-"[arg...]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
+msgstr "history [-c] [-d offset] [n] o history -anrw [fitxer] o history -ps arg [arg...]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2421,31 +2399,24 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
msgstr "disown [-h] [-ar] [feina ... | pid ...]"
#: builtins.c:134
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-"kill [-s senyal | -n númsenyal | -senyal] pid | feina ... o kill -l [senyal]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
+msgstr "kill [-s senyal | -n númsenyal | -senyal] pid | feina ... o kill -l [senyal]"
#: builtins.c:136
msgid "let arg [arg ...]"
msgstr "let arg [arg ...]"
#: builtins.c:138
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a vector] [-d delim] [-i text] [-n núm] [-N núm] [-p introd] [-"
-"t espera] [-u fd] [nom ...]"
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgstr "read [-ers] [-a vector] [-d delim] [-i text] [-n núm] [-N núm] [-p introd] [-t espera] [-u fd] [nom ...]"
#: builtins.c:140
msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o nom-opció] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o nom-opció] [--] [-] [arg ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2492,17 +2463,16 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] nom [nom ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [límit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [límit]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
-#, fuzzy
msgid "wait [-fn] [-p var] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgstr "wait [-fn] [-p var] [id ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2529,19 +2499,16 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
msgstr "case PARAULA in [PATRÓ [| PATRÓ]...) ORDRES ;;]... esac"
#: builtins.c:194
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if ORDRES; then ORDRES; [ elif ORDRES; then ORDRES; ]... [ else ORDRES; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if ORDRES; then ORDRES; [ elif ORDRES; then ORDRES; ]... [ else ORDRES; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while ORDRES; do ORDRES; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while ORDRES; do ORDRES-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until ORDRES; do ORDRES; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until ORDRES; do ORDRES-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -2592,45 +2559,24 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] format [arguments]"
#: builtins.c:231
-#, fuzzy
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o opció] [-A acció] [-G patró] [-W "
-"llista] [-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [nom ...]"
+msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
+msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o opció] [-A acció] [-G patró] [-W paraules] [-F funció] [-C ordre] [-X patró] [-P prefix] [-S sufix] [nom ...]"
#: builtins.c:235
-#, fuzzy
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
-"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W paraules]\n"
-"[-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]"
+msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr "compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W paraules] [-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o opció] [-DE] [nom ...]"
+msgstr "compopt [-o|+o opció] [-DEI] [nom ...]"
#: builtins.c:242
-msgid ""
-"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-"mapfile [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C "
-"callback] [-c quàntum] [vector]"
+msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "mapfile [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c quàntum] [vector]"
#: builtins.c:244
-#, fuzzy
-msgid ""
-"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-"readarray [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c "
-"quàntum] [vector]"
+msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "readarray [-d delim] [-n nombre] [-O origen] [-s nombre] [-t] [-u fd] [-C callback] [-c quàntum] [vector]"
#: builtins.c:256
msgid ""
@@ -2647,8 +2593,7 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
+" alias returns true unless a NAME is supplied for which no alias has been\n"
" defined."
msgstr ""
"Defineix o mostra àlies.\n"
@@ -2695,30 +2640,25 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
+" -S List key sequences that invoke macros and their values\n"
+" -s List key sequences that invoke macros and their values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
+" -u function-name Unbind all keys which are bound to the named function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated "
-"commands\n"
+" -X List key sequences bound with -x and associated commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
@@ -2734,8 +2674,7 @@ msgstr ""
" Opcions:\n"
" -m mapa Usa MAPA com a mapa de tecles mentre duri aquesta\n"
" ordre. Els noms de mapes acceptables són emacs, emacs-\n"
-" standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-"
-"command,\n"
+" standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command,\n"
" i vi-insert.\n"
" -l Mostra els noms de les funcions\n"
" -P Mostra els noms de les funcions i els vincles de tecla.\n"
@@ -2744,15 +2683,13 @@ msgstr ""
" -S Mostra les seqüències de tecles que invoquen macros i els\n"
" seus valors respectius.\n"
" -s Mostra les seqüències de tecles que invoquen macros i els\n"
-" seus valors respectius en un format que es pot "
-"reutilitzar\n"
+" seus valors respectius en un format que es pot reutilitzar\n"
" com a entrada.\n"
" -V Mostra els noms de les variables i els seus valors.\n"
" -v Mostra els noms de les variables i els seus respectius\n"
" valors en un format que es pot reutilitzar com a entrada.\n"
" -q funció Consulta quines tecles invoquen la funció especificada.\n"
-" -u funció Desvincula les tecles vinculades a la funció "
-"especificada.\n"
+" -u funció Desvincula les tecles vinculades a la funció especificada.\n"
" -r tecles Elimina el vincle associat a TECLES.\n"
" -f fitxer Obté els vincles de tecles de FITXER.\n"
" -x tecles:ordre Fa que s'executi ORDRE quan es prem TECLES.\n"
@@ -2802,14 +2739,12 @@ msgstr ""
" L'estat de sortida és 0 excepte si N és més petit que 1."
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
+" as a shell function, but need to execute the builtin within the function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2823,8 +2758,7 @@ msgstr ""
" pròpia funció.\n"
"\n"
" Estat de sortida:\n"
-" Torna l'estat de sortida de ORDRE-INTERNA, o fals si ORDRE-INTERNA no "
-"és\n"
+" Torna l'estat de sortida de ORDRE-INTERNA, o fals si ORDRE-INTERNA no és\n"
" una ordre interna."
# help caller
@@ -2860,22 +2794,16 @@ msgstr ""
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
+" Change the current directory to DIR. The default DIR is the value of the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
+" The variable CDPATH defines the search path for the directory containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
+" A null directory name is the same as the current directory. If DIR begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is set,\n"
+" the word is assumed to be a variable name. If that variable has a value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2891,13 +2819,11 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname "
-"component\n"
+" `..' is processed by removing the immediately previous pathname component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
" -P is used; non-zero otherwise."
msgstr ""
"Canvia el directori de treball de l'intèrpret.\n"
@@ -2910,8 +2836,7 @@ msgstr ""
" punts (:). Un nom de directori nul s'interpreta com al directori\n"
" actual. Si DIR comença amb una barra, aleshores no s'usa CDPATH.\n"
"\n"
-" Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» "
-"està\n"
+" Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» està\n"
" activada, aleshores la paraula s'interpreta com a un nom de variable.\n"
" Si la variable especificada té algun valor, aquest valor s'usa en lloc\n"
" de DIR.\n"
@@ -2919,8 +2844,7 @@ msgstr ""
" Opcions:\n"
" -L força el seguiment d'enllaços simbòlics: resol els enllaços\n"
" simbòlics que conté DIR després de processar «..»\n"
-" -P usa l'estructura de directoris física sense seguir "
-"possibles\n"
+" -P usa l'estructura de directoris física sense seguir possibles\n"
" enllaços simbòlics: resol els enllaços simbòlics que conté\n"
" DIR abans de processar «..»\n"
" -e amb l'opció -P, si no es pot determinar el directori de\n"
@@ -2929,8 +2853,7 @@ msgstr ""
" estesos com a directoris que contenen els atributs del\n"
" fitxer\n"
"\n"
-" Per defecte, se segueixen els enllaços simbòlics, com si "
-"especifiquéssiu\n"
+" Per defecte, se segueixen els enllaços simbòlics, com si especifiquéssiu\n"
" l'opció «-L». El component «..» es processa eliminant el component del\n"
" camí immediatament previ fins a la primera barra o fins al principi de\n"
" DIR.\n"
@@ -3012,8 +2935,7 @@ msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
+" information about the specified COMMANDs. Can be used to invoke commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -3044,7 +2966,6 @@ msgstr ""
# help declare
#: builtins.c:490
-#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3077,8 +2998,7 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -3096,18 +3016,20 @@ msgstr ""
" el nom del fitxer, en mode de depuració)\n"
" -g crea variables globals quan s'utilitza dins d'una funció,\n"
" altrament s'ignora\n"
+" -I en crear una variable local, hereda els atributs i valor de \n"
+" la variable del mateix nom d'un àmbit anterior\n"
" -p mostra els atributs i el valor de cada NOM\n"
"\n"
" Opcions que estableixen atributs:\n"
" -a per a fer NOMs vectors indexats (si estan suportats)\n"
" -A per a fer NOMs vectors associatius (si estan suportats)\n"
" -i per a assignar l'atribut de nombre enter a NOMs\n"
-" -l per a convertir NOMs a minúscules en l'assignació\n"
+" -l per a convertir els valors de NOMs a minúscules en l'assignació\n"
" -n per a fer NOM una referència a la variable que té per nom\n"
" el seu valor\n"
" -r per a fer NOMs variables de només lectura\n"
" -t per a assignar l'atribut «traça» a NOMs\n"
-" -u per a convertir NOMs a majúscules en l'assignació\n"
+" -u per a convertir els valors de NOMs a majúscules en l'assignació\n"
" -x per a exportar NOMs\n"
"\n"
" Si feu servir «+» en lloc de «-», elimina l'atribut.\n"
@@ -3116,10 +3038,8 @@ msgstr ""
" aritmèticament (vegeu l'ordre «let») quan s'assigna un valor a la\n"
" variable.\n"
"\n"
-" Quan s'usa en una funció, «declare» converteix NOMs en variables "
-"locals,\n"
-" igual que l'ordre «local». L'opció «-g» inhabilita aquest "
-"comportament.\n"
+" Quan s'usa en una funció, «declare» converteix NOMs en variables locals,\n"
+" igual que l'ordre «local». L'opció «-g» suprimeix aquest comportament.\n"
"\n"
" Estat de sortida:\n"
" Torna èxit, excepte si rep una opció invàlida o es produeix un error."
@@ -3151,13 +3071,11 @@ msgid ""
msgstr ""
"Defineix variables locals.\n"
"\n"
-" Crea una variable local anomenada NOM i li assigna VALOR. OPCIÓ pot "
-"ser\n"
+" Crea una variable local anomenada NOM i li assigna VALOR. OPCIÓ pot ser\n"
" qualsevol opció que «declare» admeti.\n"
"\n"
" Les variables locals només es poden utilitzar dins d'una funció; només\n"
-" són visibles a dins de la funció on són definides i dins de les "
-"funcions\n"
+" són visibles a dins de la funció on són definides i dins de les funcions\n"
" imbricades dins d'aquestes.\n"
"\n"
" Estat de sortida:\n"
@@ -3165,12 +3083,10 @@ msgstr ""
" un error, o l'intèrpret no està executant una funció."
#: builtins.c:557
-#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by "
-"a\n"
+" Display the ARGs, separated by a single space character and followed by a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -3194,11 +3110,9 @@ msgid ""
" \t\t0 to 3 octal digits\n"
" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
" \t\tcan be one or two hex digits\n"
-" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
-"HHHH.\n"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n"
" \t\tHHHH can be one to four hex digits.\n"
-" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
-"value\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n"
" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
" \n"
" Exit Status:\n"
@@ -3214,8 +3128,7 @@ msgstr ""
" -e activa la interpretació de seqüències d'escapada\n"
" -E desactiva la interpretació de seqüències d'escapada\n"
"\n"
-" «echo» interpreta els següents caràcters escapats amb una barra "
-"inversa:\n"
+" «echo» interpreta els següents caràcters escapats amb una barra inversa:\n"
" \\a alerta (campana)\n"
" \\b retrocés\n"
" \\c suprimeix tota sortida ulterior\n"
@@ -3227,11 +3140,14 @@ msgstr ""
" \\t tabulació horitzontal\n"
" \\v tabulació vertical\n"
" \\\\ barra invertida\n"
-" \\0nnn caràcter corresponent al codi ASCII número NNN, on NNN és "
-"un\n"
+" \\0nnn caràcter corresponent al codi ASCII número NNN, on NNN és un\n"
" número octal de 0 a 3 dígits.\n"
" \\xHH caràcter de 8 bits corresponent al valor HH, on HH és un\n"
" número hexadecimal d'1 o 2 dígits.\n"
+" \\uHHHH caràcter Unicode corresponent al valor hexadecimal HHHH, on\n"
+" HHHH pot tenir de 1 a 4 dígits.\n"
+" \\uHHHHHHHH caràcter Unicode corresponent al valor hexadecimal HHHHHHHH,\n"
+" on HHHHHHHH pot tenir de 1 a 8 dígits.\n"
"\n"
" Estat de sortida:\n"
" Torna èxit, tret que es produeixi un error d'escriptura."
@@ -3288,15 +3204,13 @@ msgstr ""
"Habilita o inhabilita ordres internes de l'intèrpret.\n"
"\n"
" Habilita o inhabilita ordres internes de l'intèrpret. Inhabilitar una\n"
-" ordre interna permet executar una ordre que es troba en el disc i que "
-"té\n"
+" ordre interna permet executar una ordre que es troba en el disc i que té\n"
" el mateix nom que l'ordre interna, sense necessitat d'escriure'n la\n"
" ubicació completa.\n"
"\n"
" Opcions:\n"
" -a mostra una llista d'ordres internes indicant-ne l'estat\n"
-" -n inhabilita NOM o bé mostra una llista de les ordres "
-"internes\n"
+" -n inhabilita NOM o bé mostra una llista de les ordres internes\n"
" que es troben inhabilitades\n"
" -p mostra la llista en format reutilitzable\n"
" -s mostra només les ordres internes «especials» Posix\n"
@@ -3317,8 +3231,7 @@ msgstr ""
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+" Combine ARGs into a single string, use the result as input to the shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -3326,15 +3239,13 @@ msgid ""
msgstr ""
"Executa els arguments com una ordre.\n"
"\n"
-" Combina ARGs en una única cadena, utilitza el resultat com a entrada "
-"per\n"
+" Combina ARGs en una única cadena, utilitza el resultat com a entrada per\n"
" a l'intèrpret i executa les ordres resultants.\n"
"\n"
" Estat de sortida:\n"
" Torna l'estat de sortida de l'ordre, o èxit si l'ordre és nul·la."
#: builtins.c:652
-#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3374,33 +3285,28 @@ msgid ""
" Returns success if an option is found; fails if the end of options is\n"
" encountered or an error occurs."
msgstr ""
-"Interpreta arguments que representen opcions.\n"
+"Processa arguments que representen opcions.\n"
"\n"
-" getopts és utilitzat per les utilitats de bash per a interpretar els\n"
+" getopts és utilitzat per les utilitats de bash per a processar els\n"
" paràmetres posicionals com a opcions.\n"
"\n"
" CADENA conté les lletres de les opcions a reconèixer; si una lletra va\n"
-" seguida de dos punts, l'opció requereix un argument, que s'ha de "
-"separar\n"
-" amb un espai en blanc.\n"
+" seguida de dos punts, l'opció requereix un argument, que s'ha de separar\n"
+" de l'opció amb un espai en blanc.\n"
"\n"
-" Cada cop que s'invoca, getopts posarà l'opció successiva a la variable\n"
+" Cada cop que s'invoca, getopts posa l'opció successiva a la variable\n"
" d'entorn $nom, inicialitzant nom si no existeix, i l'índex del següent\n"
" argument a la variable OPTIND. La variable OPTIND s'inicialitza a 1\n"
-" cada cop que s'invoca l'intèrpret o un script. Quan una opció "
-"requereix\n"
+" cada cop que s'invoca l'intèrpret o un script. Quan una opció requereix\n"
" un argument, getopts col·loca l'argument a la variable OPTARG.\n"
"\n"
-" getopts pot informar d'errors de dues maneres. Si el primer caràcter "
-"de\n"
-" CADENA és un caràcter de dos punts (:), getopts entra en mode "
-"silenciós.\n"
+" getopts pot informar d'errors de dues maneres. Si el primer caràcter de\n"
+" CADENA és un caràcter de dos punts (:), getopts entra en mode silenciós.\n"
" En aquest mode, no es mostra cap missatge d'error. Si es detecta una\n"
" opció no vàlida, getopts col·loca el caràcter de l'opció a OPTARG. Si\n"
" no es troba un argument requerit, getopts posa un ':' a NOM, i el\n"
" caràcter de l'opció trobada a OPTARG. Si getopts no es troba en mode\n"
-" silenciós, i es detecta una opció no vàlida, getopts posa un '?' a NOM "
-"i\n"
+" silenciós, i es detecta una opció no vàlida, getopts posa un '?' a NOM i\n"
" elimina la variable OPTARG. Si no troba un argument requerit, posa un\n"
" '?' a NOM, elimina OPTARG, i mostra un missatge de diagnòstic.\n"
"\n"
@@ -3408,12 +3314,11 @@ msgstr ""
" d'error, encara que el primer caràcter de CADENA no siguin dos punts.\n"
" Per defecte, OPTERR té el valor 1.\n"
"\n"
-" Normalment, getopts interpreta els paràmetres posicionals ($0 - $9),\n"
-" però si hi ha més arguments, s'interpreten aquests.\n"
+" Normalment, getopts interpreta els paràmetres posicionals, però si\n"
+" es proporcionen arguments com a valors ARG, s'intepreten aquests.\n"
"\n"
" Estat de sortida:\n"
-" Retorna èxit si es troba alguna opció; falla si s'arriba al final de "
-"les\n"
+" Retorna èxit si es troba alguna opció; falla si s'arriba al final de les\n"
" opcions o si es produeix un error."
#: builtins.c:694
@@ -3421,8 +3326,7 @@ msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3430,13 +3334,11 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+" If the command cannot be executed, a non-interactive shell exits, unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+" Returns success unless COMMAND is not found or a redirection error occurs."
msgstr ""
"Substitueix el procés de l'intèrpret per l'ordre especificada.\n"
"\n"
@@ -3449,8 +3351,7 @@ msgstr ""
" -c executa ORDRE en un entorn buit\n"
" -t passa un guionet a ORDRE com a argument número zero\n"
"\n"
-" Si l'ordre no es pot executar i la sessió és no-interactiva, "
-"l'intèrpret\n"
+" Si l'ordre no es pot executar i la sessió és no-interactiva, l'intèrpret\n"
" surt, excepte si l'opció «execfail» està habilitada.\n"
"\n"
" Estat de sortida:\n"
@@ -3473,14 +3374,12 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
+" Exits a login shell with exit status N. Returns an error if not executed\n"
" in a login shell."
msgstr ""
"Abandona una sessió d'entrada.\n"
"\n"
-" Abandona una sessió d'entrada amb estat de sortida N. Torna un error "
-"si\n"
+" Abandona una sessió d'entrada amb estat de sortida N. Torna un error si\n"
" no s'està executant en una sessió d'entrada."
# help fc (hi ha un bug a la cadena original)
@@ -3488,15 +3387,13 @@ msgstr ""
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+" fc is used to list or edit and re-execute commands from the history list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3510,8 +3407,7 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
+" Returns success or status of executed command; non-zero if an error occurs."
msgstr ""
"Mostra o executa ordres de l'historial.\n"
"\n"
@@ -3524,20 +3420,18 @@ msgstr ""
" -e EDITOR selecciona quin editor utilitzar. Per defecte és el valor\n"
" de la variable FCEDIT, després el valor de EDITOR, i\n"
" finalment vi\n"
-" -l\tmostra les línies en lloc d'editar-les\n"
-" -n\tomet els números de línia a l'hora de mostrar la llista\n"
-" -r\tinverteix l'ordre de les línies (més recents primer)\n"
+" -l mostra les línies en lloc d'editar-les\n"
+" -n omet els números de línia a l'hora de mostrar la llista\n"
+" -r inverteix l'ordre de les línies (més recents primer)\n"
"\n"
-" Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa "
-"després\n"
+" Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa després\n"
" d'haver fet la substitució PAT=SUB.\n"
"\n"
" Un àlies útil és r='fc -s', de manera que «r cc» executa l'última ordre\n"
" que comença per «cc» i «r» re-executa l'última ordre.\n"
"\n"
" Estat de sortida:\n"
-" Torna èxit o l'estat de l'última ordre executada; diferent de zero si "
-"es\n"
+" Torna èxit o l'estat de l'última ordre executada; diferent de zero si es\n"
" produeix un error."
#: builtins.c:764
@@ -3558,18 +3452,15 @@ msgstr ""
" considera com a corrent.\n"
"\n"
" Estat de sortida:\n"
-" L'estat de l'ordre que es mou al primer pla, o fallada si es produeix "
-"un\n"
+" L'estat de l'ordre que es mou al primer pla, o fallada si es produeix un\n"
" error."
#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's "
-"notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
@@ -3591,8 +3482,7 @@ msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
+" no arguments are given, information about remembered commands is displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3616,8 +3506,7 @@ msgstr ""
"\n"
" Opcions:\n"
" -d oblida la ubicació recordada per a cada NOM\n"
-" -l utilitza un format que es pot reciclar com a "
-"entrada\n"
+" -l utilitza un format que es pot reciclar com a entrada\n"
" -p ubicació utilitza UBICACIÓ com a ubicació completa per a NOM\n"
" -r oblida totes les ubicacions recordades\n"
" -t mostra la ubicació recordada per a cada NOM,\n"
@@ -3632,7 +3521,6 @@ msgstr ""
# help help
#: builtins.c:818
-#, fuzzy
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3650,14 +3538,13 @@ msgid ""
" PATTERN\tPattern specifying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
+" Returns success unless PATTERN is not found or an invalid option is given."
msgstr ""
"Mostra informació sobre ordres internes.\n"
"\n"
-" Mostra ajuda sobre les ordres internes. Amb PATRÓ, dóna informació\n"
-" detallada sobre aquelles ordres que coincideixen amb PATRÓ, altrament\n"
-" mostra una llista amb temes d'ajuda.\n"
+" Mostra ajuda sobre les ordres internes. Si s'especifica PATRÓ,\n"
+" dóna informació detallada sobre aquelles ordres que coincideixen\n"
+" amb PATRÓ, altrament mostra una llista amb temes d'ajuda.\n"
"\n"
" Opcions:\n"
" -d mostra una descripció curta de cada tema\n"
@@ -3671,7 +3558,6 @@ msgstr ""
" Torna èxit, excepte si PATRÓ no es troba o passeu una opció invàlida."
#: builtins.c:842
-#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3699,8 +3585,7 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
+" with each displayed history entry. No time stamps are printed otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3724,16 +3609,14 @@ msgstr ""
" a la llista\n"
" -s afegeix ARGs a la llista com una única entrada\n"
"\n"
-" Si passeu un nom de FITXER, s'utilitza com a fitxer d'historial. En "
-"cas\n"
-" contrari, si $HISTFILE té algun valor, s'utilitza aquest, si no\n"
+" Si proporcioneu un nom de FITXER, s'utilitza com a fitxer d'historial.\n"
+" En cas contrari, si $HISTFILE té algun valor, s'utilitza aquest, si no\n"
" s'utilitza ~/.bash_history.\n"
"\n"
-" Si la variable $HISTTIMEFORMAT està definida i no és nul·la, el seu\n"
-" valor s'utilitza com a cadena de format strftime(3) per a mostrar "
-"l'hora\n"
+" Si la variable HISTTIMEFORMAT està definida i no és nul·la, el seu valor\n"
+" s'utilitza com a cadena de format strftime(3) per a mostrar l'hora\n"
" associada a cada entrada de l'historial. En cas contrari no es mostra\n"
-" informació horària.\n"
+" la marca horària.\n"
"\n"
" Estat de sortida: \n"
" Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
@@ -3764,8 +3647,7 @@ msgstr ""
"Mostra l'estat de feines.\n"
"\n"
" Mostra les feines actives. Si especifiqueu FEINA, es restringeix la\n"
-" sortida a la feina especificada. Sense opcions, mostra l'estat de "
-"totes\n"
+" sortida a la feina especificada. Sense opcions, mostra l'estat de totes\n"
" les feines actives.\n"
"\n"
" Opcions:\n"
@@ -3781,8 +3663,7 @@ msgstr ""
" processos d'aquella feina, a ARGS.\n"
"\n"
" Estat de sortida:\n"
-" Torna èxit, excepte si passeu una opció invàlida o es produeix un "
-"error.\n"
+" Torna èxit, excepte si passeu una opció invàlida o es produeix un error.\n"
" Si utilitzeu -x, torna l'estat de sortida d'ORDRE."
# help disown
@@ -3809,7 +3690,7 @@ msgstr ""
"\n"
" Opcions:\n"
" -a suprimeix totes les feines si no especifiqueu FEINA\n"
-" -h\tmarca FEINA per a no enviar-li un senyal SIGHUP si\n"
+" -h marca FEINA per a no enviar-li un senyal SIGHUP si\n"
" l'intèrpret rep un SIGHUP\n"
" -r suprimeix totes les feines en execució\n"
"\n"
@@ -3841,20 +3722,18 @@ msgid ""
msgstr ""
"Envia un senyal a una feina.\n"
"\n"
-" Envia el senyal SENYAL o NÚMSENYAL al procés corresponent a PID o "
-"FEINA.\n"
+" Envia el senyal SENYAL o NÚMSENYAL al procés corresponent a PID o FEINA.\n"
" Si no especifiqueu cap senyal, s'envia un SIGTERM.\n"
"\n"
" Opcions:\n"
" -s senyal SENYAL és el nom d'un senyal\n"
-" -n númsenyal\tNÚMSENYAL és el número d'un senyal\n"
+" -n númsenyal NÚMSENYAL és el número d'un senyal\n"
" -l mostra els noms dels senyals; si hi ha arguments \n"
" després de «-l» s'interpreten com a números de\n"
" senyals, els noms dels quals s'han de mostrar\n"
" -L sinònim de -l\n"
"\n"
-" kill és una ordre interna per dues raons: perquè això permet usar IDs "
-"de\n"
+" kill és una ordre interna per dues raons: perquè això permet usar IDs de\n"
" feina en lloc de IDs de procés, i perquè permet matar processos encara\n"
" que arribeu al límit de processos que se us permet crear.\n"
"\n"
@@ -3869,8 +3748,7 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
+" grouped into levels of equal-precedence operators. The levels are listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3909,33 +3787,31 @@ msgstr ""
"Avalua expressions aritmètiques.\n"
"\n"
" Avalua cada ARG com a expressió aritmètica. Les operacions es fan amb\n"
-" enters d'amplada fixa sense comprovacions de desbordament, tot i que "
-"les\n"
-" divisions per 0 es detecten i es marquen com a error. La següent "
-"llista\n"
+" enters d'amplada fixa sense comprovacions de desbordament, tot i que les\n"
+" divisions per 0 es detecten i es marquen com a error. La següent llista\n"
" mostra els operadors, agrupats en nivells d'igual precedència. Els\n"
" nivells apareixen en ordre descendent de precedència.\n"
"\n"
-" \tid++, id--\tpostincrement, postdecrement\n"
-" \t++id, --id\tpreincrement, predecrement\n"
-" \t-, +\t\tnegatiu, positiu unaris\n"
-" \t!, ~\t\tnegació lògica i a nivell de bits\n"
-" \t**\t\texponenciació\n"
-" \t*, /, %\t\tmultiplicació, divisió, residu\n"
-" \t+, -\t\taddició, subtracció\n"
-" \t<<, >>\t\tdesplaçament de bits a l'esquerra i a la dreta\n"
-" \t<=, >=, <, >\tcomparació\n"
-" \t==, !=\t\tigualtat, desigualtat\n"
-" \t&\t\tAND a nivell de bits\n"
-" \t^\t\tXOR a nivell de bits\n"
-" \t|\t\tOR a nivell de bits\n"
-" \t&&\t\tAND lògic\n"
-" \t||\t\tOR lògic\n"
-" \texpr ? expr : expr\n"
-" \t\t\toperador condicional\n"
-" \t=, *=, /=, %=,\n"
-" \t+=, -=, <<=, >>=,\n"
-" \t&=, ^=, |=\tassignació\n"
+" id++, id-- postincrement, postdecrement\n"
+" ++id, --id preincrement, predecrement\n"
+" -, + negatiu, positiu unaris\n"
+" !, ~ negació lògica i a nivell de bits\n"
+" ** exponenciació\n"
+" *, /, % multiplicació, divisió, residu\n"
+" +, - addició, subtracció\n"
+" <<, >> desplaçament de bits a l'esquerra i a la dreta\n"
+" <=, >=, <, > comparació\n"
+" ==, != igualtat, desigualtat\n"
+" & AND a nivell de bits\n"
+" ^ XOR a nivell de bits\n"
+" | OR a nivell de bits\n"
+" && AND lògic\n"
+" || OR lògic\n"
+" expr ? expr : expr\n"
+" operador condicional\n"
+" =, *=, /=, %=,\n"
+" +=, -=, <<=, >>=,\n"
+" &=, ^=, |= assignació\n"
"\n"
" S'admeten variables de l'intèrpret com a operands. El nom de la\n"
" variable se substitueix pel seu valor (convertit en enter d'amplada\n"
@@ -3950,21 +3826,18 @@ msgstr ""
" Si l'avaluació de l'últim ARG és 0, let torna 1; altrament torna 0."
#: builtins.c:994
-#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
+" if the -u option is supplied. The line is split into fields as with word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
-" delimiters.\n"
+" the last NAME. Only the characters found in $IFS are recognized as word\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3976,8 +3849,7 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -3995,36 +3867,31 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-" (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times out\n"
+" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"Llegeix una línia a l'entrada estàndard i la divideix en camps.\n"
"\n"
" Llegeix una sola línia a l'entrada estàndard, o al descriptor de fitxer\n"
-" FD si especifiqueu l'opció -u. La línia es divideix en camps, segons\n"
+" FD si especifiqueu l'opció -u. La línia és dividida en camps, segons\n"
" les mateixes regles que en la separació de paraules, i la primera\n"
" paraula s'assigna al primer NOM, la segona al segon NOM, etc., mentre\n"
" que les paraules sobrants, si n'hi ha, s'assignen a l'últim NOM. Només\n"
" es reconeixen com a delimitadors de paraula els caràcters que conté la\n"
" variable $IFS.\n"
"\n"
-" Si no especifiqueu cap NOM, en aquest cas la línia llegida es desa a la\n"
-" variable REPLY.\n"
+" Si no especifiqueu cap NOM, la línia es desa a la variable REPLY.\n"
"\n"
" Opcions:\n"
-" -a vector\tassigna les paraules llegides a VECTOR, de forma "
-"seqüencial\n"
+" -a vector assigna les paraules llegides a VECTOR, de forma seqüencial\n"
" començant des de l'índex número 0.\n"
-" -d delim\tcontinue llegint fins a trobar el caràcter DELIM, en lloc "
-"de\n"
+" -d delim continua llegint fins a trobar el caràcter DELIM, en lloc de\n"
" fins a trobar un salt de línia\n"
-" -e\tsi la sessió és interactiva, utilitza Readline per a obtenir\n"
+" -e si la sessió és interactiva, utilitza Readline per a obtenir\n"
" la línia\n"
-" -i text\tUtilitza TEXT com a text inicial per a Readline\n"
-" -n núm\ttorna després de llegir exactament NÚM caràcters, o quan es\n"
+" -i text Utilitza TEXT com a text inicial per a Readline\n"
+" -n núm torna després de llegir exactament NÚM caràcters, o quan es\n"
" trobi el delimitador si apareix abans de NÚM caràcters\n"
" -N núm torna només després de llegir exactament NÚM caràcters,\n"
" excepte si es troba EOF o s'esgota el temps d'espera,\n"
@@ -4032,29 +3899,26 @@ msgstr ""
" -p introd mostra la cadena INTROD sense cap caràcter de salt de línia\n"
" afegit, abans d'intentar llegir res\n"
" -r prohibeix escapar caràcters amb una barra invertida\n"
-" -s suprimeix l'eco quan l'entrada està connectada a un "
-"terminal\n"
+" -s suprimeix l'eco quan l'entrada està connectada a un terminal\n"
" -t temps surt si transcorre TEMPS (en segons) abans d'haver\n"
" aconseguit llegir una línia sencera. Per defecte, el límit\n"
-" de temps és el valor de la variable TMOUT. TEMPS pot ser "
-"un\n"
+" de temps és el valor de la variable TMOUT. TEMPS pot ser un\n"
" número amb decimals. Si TEMPS és 0, read torna\n"
" immediatament, sense intentar llegir cap dada, i torna èxit\n"
" només si hi ha dades disponibles en el descriptor de fitxer\n"
-" FD especificat. Un estat de sortida més gran que 128 "
-"indica\n"
+" FD especificat. Un estat de sortida més gran que 128 indica\n"
" que s'ha esgotat el temps d'espera.\n"
" -u fd llegeix dades al descriptor de fitxer FD, en lloc de a\n"
" l'entrada estàndard.\n"
"\n"
" Estat de sortida:\n"
" El codi de retorn és zero, excepte si es troba EOF (final de fitxer),\n"
-" s'arriba al límit de temps (en aquest cas, és major que 128), es\n"
-" produeix un error d'assignació de variable, o si heu especificat un\n"
-" descriptor de fitxer invàlid amb l'opció -u."
+" s'arriba al límit de temps (en aquest cas, retorna un número major que\n"
+" 128), es produeix un error d'assignació de variable, o si heu\n"
+" especificat un descriptor de fitxer invàlid amb l'opció -u."
# help return
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4067,15 +3931,14 @@ msgid ""
msgstr ""
"Torna des d'una funció de l'intèrpret.\n"
"\n"
-" Provoca que una funció o script executat amb «source» torni amb el "
-"valor\n"
+" Provoca que una funció o script executat amb «source» torni amb el valor\n"
" de retorn especificat per N. Si s'omet N, l'estat de retorn és aquell\n"
" de l'última ordre executada dins la funció o script.\n"
"\n"
" Estat de sortida:\n"
" Torna N, o fallada si l'intèrpret no està executant cap funció o script."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4118,8 +3981,7 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
+" or zero if no command exited with a non-zero status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -4143,8 +4005,7 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell "
-"functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -4162,8 +4023,7 @@ msgid ""
msgstr ""
"Estableix opcions de l'intèrpret i paràmetres posicionals.\n"
"\n"
-" Modifica el valor d'atributs de l'intèrpret i de paràmetres "
-"posicionals,\n"
+" Modifica el valor d'atributs de l'intèrpret i de paràmetres posicionals,\n"
" o mostra els noms i valors de les variables de l'intèrpret.\n"
"\n"
" Opcions:\n"
@@ -4204,8 +4064,7 @@ msgstr ""
" l'última ordre que ha acabat amb estat no-zero,\n"
" o zero si cap ordre ha acabat amb estat diferent\n"
" de zero\n"
-" posix ajusta el comportament de bash a l'estàndard "
-"Posix\n"
+" posix ajusta el comportament de bash a l'estàndard Posix\n"
" privileged igual que -p\n"
" verbose igual que -v\n"
" vi usa una interfície d'edició estil vi\n"
@@ -4245,7 +4104,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si especifiqueu una opció no vàlida."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4257,8 +4116,7 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
+" Without options, unset first tries to unset a variable, and if that fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -4286,13 +4144,12 @@ msgstr ""
" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM és una\n"
" variable o funció de només lectura."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -4322,7 +4179,7 @@ msgstr ""
" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n"
" vàlid."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4362,7 +4219,7 @@ msgstr ""
" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n"
" vàlid."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4374,14 +4231,13 @@ msgid ""
msgstr ""
"Desplaça els paràmetres posicionals.\n"
"\n"
-" Reanomena els paràmetres posicionals $N+1, $N+2 ... com a $1, $2 ... "
-"Si\n"
+" Reanomena els paràmetres posicionals $N+1, $N+2 ... com a $1, $2 ... Si\n"
" ometeu N, s'assumeix que és 1.\n"
"\n"
" Estat de sortida:\n"
" Torna èxit, excepte si N és negatiu o més gran que $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4405,7 +4261,7 @@ msgstr ""
" Torna l'estat de l'última ordre a FITXER executada; falla si FITXER no\n"
" es pot llegir."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4420,8 +4276,7 @@ msgid ""
msgstr ""
"Suspèn l'execució de l'intèrpret.\n"
"\n"
-" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT. "
-"Si\n"
+" Suspèn l'execució d'aquest intèrpret fins a rebre un senyal SIGCONT. Si\n"
" no es força, les sessions d'entrada no es poden suspendre.\n"
"\n"
" Opcions:\n"
@@ -4430,7 +4285,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si no hi ha control de feines o es produeix un error."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4464,8 +4319,7 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
+" -N FILE True if the file has been modified since it was last read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4486,8 +4340,7 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+" True if STRING1 sorts before STRING2 lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4514,8 +4367,7 @@ msgid ""
msgstr ""
"Avalua una expressió condicional.\n"
"\n"
-" Surt amb estat 0 (cert) o 1 (fals) en funció de l'avaluació d'EXPR. "
-"Les\n"
+" Surt amb estat 0 (cert) o 1 (fals) en funció de l'avaluació d'EXPR. Les\n"
" expressions poden ser unàries o binàries. Les expressions unàries\n"
" s'utilitzen sovint per a determinar l'estat de fitxers. També podeu\n"
" utilitzar operadors de cadenes, i operadors de comparació numèrica.\n"
@@ -4547,8 +4399,7 @@ msgstr ""
" -G FITXER Cert si el vostre grup és propietari del fitxer.\n"
" -N FITXER Cert si el fitxer ha canviat des de l'última lectura.\n"
"\n"
-" FITXER1 -nt FITXER2 Cert si fitxer1 és més nou que fitxer2 (segons "
-"la\n"
+" FITXER1 -nt FITXER2 Cert si fitxer1 és més nou que fitxer2 (segons la\n"
" data de modificació).\n"
"\n"
" FITXER1 -ot FITXER2 Cert si fitxer1 és més antic que fitxer2.\n"
@@ -4580,8 +4431,7 @@ msgstr ""
" EXPR1 -a EXPR2 Cert si tant expr1 com expr2 són cert.\n"
" EXPR1 -o EXPR2 Cert si qualsevol de expr1 o expr2 són certes.\n"
"\n"
-" arg1 OP arg2 Tests aritmètics. OP és un de -eq, -ne, -lt, -le, -"
-"gt,\n"
+" arg1 OP arg2 Tests aritmètics. OP és un de -eq, -ne, -lt, -le, -gt,\n"
" o -ge.\n"
"\n"
" Els operadors aritmètics binaris tornen cert si ARG1 és igual, no\n"
@@ -4592,7 +4442,7 @@ msgstr ""
" Torna èxit si EXPR s'avalua com a cert; falla si EXPR s'avalua com a\n"
" fals o si especifiqueu un argument no vàlid."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4605,12 +4455,11 @@ msgstr ""
" l'últim argument ha de ser un signe «]» que tanqui el «[» inicial."
# help times
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
+" Prints the accumulated user and system times for the shell and all of its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4618,19 +4467,17 @@ msgid ""
msgstr ""
"Mostra els temps d'execució.\n"
"\n"
-" Mostra el temps d'execució d'usuari i sistema acumulat per l'intèrpret "
-"i\n"
+" Mostra el temps d'execució d'usuari i sistema acumulat per l'intèrpret i\n"
" per tots els seus processos inferiors.\n"
"\n"
" Estat de sortida:\n"
" Sempre reïx."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
+" Defines and activates handlers to be run when the shell receives signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4639,42 +4486,33 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+" If no arguments are supplied, trap prints the list of commands associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\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."
+" Returns success unless a SIGSPEC is invalid or an invalid option is given."
msgstr ""
"Intercepta senyals i altres esdeveniments.\n"
"\n"
" Defineix i activa controladors de senyal, que són executats quan\n"
" l'intèrpret rep senyals o en altres circumstàncies.\n"
"\n"
-" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep "
-"SENYAL.\n"
+" ARG és una ordre que es llegeix i s'executa quan l'intèrpret rep SENYAL.\n"
" Si ometeu ARG (i especifiqueu un únic SENYAL) o ARG és «-», cada senyal\n"
" és restablert al seu valor original. Si ARG és una cadena nul·la,\n"
" aleshores SENYAL és ignorat per l'intèrpret i per tots els programes\n"
@@ -4704,7 +4542,7 @@ msgstr ""
" Torna èxit, excepte si algun SENYAL no és vàlid o especifiqueu una\n"
" ordre no vàlida."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4730,8 +4568,7 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
+" Returns success if all of the NAMEs are found; fails if any are not found."
msgstr ""
"Mostra informació sobre el tipus d'ordre.\n"
"\n"
@@ -4760,13 +4597,11 @@ msgstr ""
" Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no es\n"
" pot trobar."
-#: builtins.c:1431
-#, fuzzy
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
+" Provides control over the resources available to the shell and processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -4810,48 +4645,47 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-"Canvia els límits d'utilització de recursos per part de l'intèrpret.\n"
+"Modifica la limitació de recursos de l'intèrpret.\n"
"\n"
-" Permet controlar la quantitat de recursos disponibles per a l'intèrpret\n"
-" d'ordres i per als processos que aquest crea, en els sistemes que\n"
-" admeten tal control.\n"
+" Permet especificar la quantitat de recursos disponibles per a\n"
+" l'intèrpret d'ordres i per als processos que aquest crea, en els\n"
+" sistemes que permeten tal control.\n"
"\n"
" Opcions:\n"
" -S estableix una limitació «tova»\n"
" -H estableix una limitació «dura»\n"
-" -a\tmostra tots els límits establerts\n"
-" -b\tmida màxima de la memòria intermèdia per a «sockets»\n"
-" -c\tmida màxima dels fitxers de bolcat de memòria\n"
-" -d\tmida màxima del segment de dades d'un procés\n"
-" -e\tprioritat màxima d'un procés («nice»)\n"
-" -f\tmida màxima dels fitxers escrits per l'intèrpret i fills\n"
-" -i\tnombre màxim de senyals pendents\n"
+" -a mostra tots els límits establerts\n"
+" -b mida màxima de la memòria intermèdia per a «sockets»\n"
+" -c mida màxima dels fitxers de bolcat de memòria\n"
+" -d mida màxima del segment de dades d'un procés\n"
+" -e prioritat màxima d'un procés («nice»)\n"
+" -f mida màxima dels fitxers escrits per l'intèrpret i fills\n"
+" -i nombre màxim de senyals pendents\n"
" -k nombre màxim de cues («kqueue») obertes per a aquest procés\n"
-" -l\tquantitat màxima de memòria que un procés pot blocar\n"
-" -m\tmida màxima del conjunt resident (RSS)\n"
-" -n\tnombre màxim de descriptors de fitxers oberts\n"
-" -p\tmida màxima de la memòria intermèdia per a canonades\n"
-" -q\tnombre màxim d'octets a les cues de missatges POSIX\n"
-" -r\tprioritat màxima de temps-real\n"
-" -s\tmida màxima de la pila\n"
-" -t\tquantitat màxima de temps de CPU en segons\n"
-" -u\tnombre màxim de processos d'usuari\n"
-" -v\tmida de la memòria virtual\n"
-" -x\tnombre màxim de fitxers de bloqueig\n"
+" -l quantitat màxima de memòria que un procés pot blocar\n"
+" -m mida màxima del conjunt resident (RSS)\n"
+" -n nombre màxim de descriptors de fitxers oberts\n"
+" -p mida màxima de la memòria intermèdia per a canonades\n"
+" -q nombre màxim d'octets a les cues de missatges POSIX\n"
+" -r prioritat màxima de temps-real\n"
+" -s mida màxima de la pila\n"
+" -t quantitat màxima de temps de CPU en segons\n"
+" -u nombre màxim de processos d'usuari\n"
+" -v mida de la memòria virtual\n"
+" -x nombre màxim de fitxers de bloqueig\n"
" -P nombre màxim de pseudoterminals\n"
+" -R temps màxim d'execució per a processos de temps real\n"
" -T nombre màxim de fils d'execució\n"
"\n"
" Algunes opcions poden no estar disponibles en algunes plataformes.\n"
"\n"
" Si especifiqueu un LÃMIT, aquest s'utilitza com a nou valor per al\n"
" recurs indicat; els valors especials de LÃMIT són «soft», «hard» i\n"
-" «unlimited», que signifiquen límit tou actual, límit dur actual, i "
-"sense\n"
+" «unlimited», que signifiquen límit tou actual, límit dur actual, i sense\n"
" límit, respectivament. En cas contrari, es mostra el valor actual per\n"
" al recurs especificat. Si no especifiqueu cap opció, se suposa -f.\n"
"\n"
-" Els valors s'indiquen en increments de 1024 octets, excepte en el cas "
-"de\n"
+" Els valors s'indiquen en increments de 1024 octets, excepte en el cas de\n"
" l'opció -t, que és en segons, -p, que és en increments de 512 octets, i\n"
" -u, que és en nombre de processos.\n"
"\n"
@@ -4859,7 +4693,7 @@ msgstr ""
" Torna èxit, tret que especifiqueu una opció invàlida o es produeixi un\n"
" error."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4887,34 +4721,29 @@ msgstr ""
" Opcions:\n"
" -p sense MODE, mostra la sortida en un format que es pot\n"
" reciclar com a entrada\n"
-" -S\tmostra la màscara en forma simbòlica; altrament produeix un\n"
+" -S mostra la màscara en forma simbòlica; altrament produeix un\n"
" número octal\n"
"\n"
" Estat de sortida:\n"
" Torna èxit, excepte si MODE no és vàlid o passeu una opció no vàlida."
-#: builtins.c:1502
-#, fuzzy
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
+" Waits for each process identified by an ID, which may be a process ID or a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for a single job from the list of "
-"IDs,\n"
-" or, if no IDs are supplied, for the next job to complete and returns "
-"its\n"
+" If the -n option is supplied, waits for a single job from the list of IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns its\n"
" exit status.\n"
" \n"
" If the -p option is supplied, the process or job identifier of the job\n"
" for which the exit status is returned is assigned to the variable VAR\n"
-" named by the option argument. The variable will be unset initially, "
-"before\n"
+" named by the option argument. The variable will be unset initially, before\n"
" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
@@ -4925,32 +4754,43 @@ msgid ""
" option is given, or if -n is supplied and the shell has no unwaited-for\n"
" children."
msgstr ""
-"Espera la finalització de feines i en retorna l'estat de sortida.\n"
+"Espera la finalització de feines i retorna l'estat de sortida.\n"
"\n"
" Espera que cada procés identificat per un ID, que pot ser l'ID del\n"
-" procés o una especificació de feina, acabi d'executar-se, i en torna\n"
+" procés o una especificació de feina, acabi d'executar-se, i informa de\n"
" l'estat de sortida. Si ometeu ID, espera que acabin d'executar-se tots\n"
" els processos inferiors, i surt amb estat zero. Si ID és una\n"
" especificació de feina, espera cada un dels processos a la canonada\n"
" d'aquella feina.\n"
"\n"
+" Si especifiqueu l'opció -n, espera que finalitzi una única feina de la\n"
+" llista d'IDs. Si no s'ha especificat cap ID, espera que finalitzi la\n"
+" propera feina i en retorna l'estat de sortida.\n"
+"\n"
+" Si especifiqueu l'opció -p, el procés o l'identificador de la feina\n"
+" s'assigna a la variable VAR. La variable inicialment serà esborrada,\n"
+" abans de que es podueixi assignació. L'opció -p només és útil en\n"
+" combinació amb l'opció -n.\n"
+"\n"
+" Si especifiqueu l'opció -f, i el control de feines està habilitat,\n"
+" espera fins que les IDs especificades finalitzin, enlloc d'esperar fins\n"
+" que canviïn d'estat.\n"
+"\n"
" Estat de sortida:\n"
-" Torna l'estat de sortida de l'últim ID; falla si ID no és vàlid o "
-"passeu\n"
-" una opció no vàlida."
+" Torna l'estat de sortida de l'última ID; falla si ID no és vàlid o\n"
+" passeu una opció no vàlida, o si s'ha especificat -n i l'intèrpret no té\n"
+" processos inferiors que no s'estiguin esperant."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination "
-"status.\n"
+" Waits for each process specified by a PID and reports its termination status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an "
-"invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
" option is given."
msgstr ""
"Espera la finalització de processos i en retorna l'estat de sortida.\n"
@@ -4964,7 +4804,7 @@ msgstr ""
" Torna l'estat de sortida de l'últim PID; falla si PID no és vàlid o es\n"
" passa una opció no vàlida."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4980,14 +4820,13 @@ msgstr ""
"\n"
" Els bucles «for» executen una seqüència d'ordres per a cada un dels\n"
" elements d'una llista. Si «in PARAULES ...;» s'omet, aleshores se\n"
-" suposa «in \"$@\"». Per a cada element de la llista PARAULES, "
-"l'element\n"
+" suposa «in \"$@\"». Per a cada element de la llista PARAULES, l'element\n"
" s'assigna a NOM, i les ORDRES s'executen.\n"
"\n"
" Estat de sortida:\n"
" Torna l'estat de sortida de l'última ordre executada."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5006,11 +4845,11 @@ msgstr ""
"Bucle «for» aritmètic.\n"
"\n"
" Equivalent a\n"
-" \t(( EXP1 ))\n"
-" \twhile (( EXP2 )); do\n"
-" \t\tORDRES\n"
-" \t\t(( EXP 3 ))\n"
-" \tdone\n"
+" (( EXP1 ))\n"
+" while (( EXP2 )); do\n"
+" ORDRES\n"
+" (( EXP 3 ))\n"
+" done\n"
"\n"
" EXP1, EXP2 i EXP3 són expressions aritmètiques. Si s'omet qualsevol de\n"
" les expressions, es comporta com si el resultat de l'avaluació de\n"
@@ -5019,7 +4858,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de sortida de l'última ordre executada."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5042,11 +4881,9 @@ msgstr ""
"\n"
" Les PARAULES s'expandeixen i generen una llista de paraules. Les\n"
" paraules expandides s'envien a la sortida d'errors estàndard, cada una\n"
-" precedida per un número. Si «in PARAULES» s'omet, se suposa «in \"$@"
-"\"».\n"
+" precedida per un número. Si «in PARAULES» s'omet, se suposa «in \"$@\"».\n"
" Llavors, es mostra l'introductor PS3 i es llegeix una línia a l'entrada\n"
-" estàndard. Si la línia correspon amb el número d'alguna de les "
-"paraules\n"
+" estàndard. Si la línia correspon amb el número d'alguna de les paraules\n"
" mostrades, aleshores aquesta paraula s'assigna a NOM. Si la línia està\n"
" buida, les PARAULES i l'introductor es tornen a mostrar. Si es llegeix\n"
" EOF, l'ordre finalitza. Qualsevol altre valor llegit, fa que s'assigni\n"
@@ -5058,7 +4895,7 @@ msgstr ""
" Torna l'estat de sortida de l'última ordre executada."
# help time
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5076,8 +4913,7 @@ msgstr ""
"Informa del temps transcorregut durant l'execució d'una canonada.\n"
"\n"
" Executa CANONADA i mostra un resum del temps real, el temps de CPU\n"
-" d'usuari i el temps de CPU de sistema transcorregut durant l'execució "
-"de\n"
+" d'usuari i el temps de CPU de sistema transcorregut durant l'execució de\n"
" CANONADA.\n"
"\n"
" Opcions:\n"
@@ -5088,7 +4924,7 @@ msgstr ""
" Estat de sortida:\n"
" L'estat de sortida és l'estat de sortida de la CANONADA."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5100,28 +4936,22 @@ msgid ""
msgstr ""
"Executa ordres segons la coincidència amb patrons.\n"
"\n"
-" Executa ORDRES de forma selectiva en funció de si PARAULA coincideix "
-"amb\n"
+" Executa ORDRES de forma selectiva en funció de si PARAULA coincideix amb\n"
" PATRÓ. El signe «|» serveix per a separar múltiples patrons.\n"
"\n"
" Estat de sortida:\n"
" Torna l'estat de sortida de l'última ordre executada."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then "
-"the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
-"is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. "
-"Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
+" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of the\n"
+" entire construct is the exit status of the last command executed, or zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -5135,51 +4965,50 @@ msgstr ""
" sortida zero, també s'executa la corresponent llista «then ORDRES», i\n"
" l'ordre if finalitza. En cas contrari, la llista «else ORDRES»\n"
" s'executa, si és que existeix. L'estat de sortida la construcció\n"
-" sencera és l'estat de sortida de l'última ordre executada, o zero si "
-"cap\n"
+" sencera és l'estat de sortida de l'última ordre executada, o zero si cap\n"
" de les condicions s'avalua com a certa.\n"
"\n"
" Estat de sortida:\n"
" Torna l'estat de l'última ordre executada."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Executa ordres repetidament mentre es compleixi una condició.\n"
"\n"
-" Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n"
-" «ORDRES while» tingui estat de sortida igual a zero.\n"
+" Expandeix i executa ORDRES-2 repetidament mentre l'última ordre de\n"
+" les ORDRES tingui estat de sortida igual a zero.\n"
"\n"
" Estat de sortida:\n"
" Torna l'estat de l'última ordre executada."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Executa ordres repetidament mentre no es compleixi una condició.\n"
"\n"
-" Expandeix i executa ORDRES repetidament mentre l'última ordre de les\n"
-" ORDRES «until» tingui estat de sortida diferent de zero.\n"
+" Expandeix i executa ORDRES-2 repetidament mentre l'última ordre de\n"
+" les ORDRES tingui estat de sortida diferent de zero.\n"
"\n"
" Estat de sortida:\n"
" Torna l'estat de l'última ordre executada."
# help coproc
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5193,8 +5022,7 @@ msgid ""
msgstr ""
"Crea un coprocés anomenat NOM.\n"
"\n"
-" Executa ORDRE de forma asincrònica, amb la sortida estàndard i "
-"l'entrada\n"
+" Executa ORDRE de forma asincrònica, amb la sortida estàndard i l'entrada\n"
" estàndard de l'ordre connectades via canonada als descriptors de fitxer\n"
" assignats als índexs 0 i 1 de la variable vector NOM. Per defecte NOM\n"
" és \"COPROC\".\n"
@@ -5202,13 +5030,12 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de sortida d'ORDRE."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -5217,8 +5044,7 @@ msgid ""
msgstr ""
"Defineix una funció.\n"
"\n"
-" Crea una funció de l'intèrpret anomenada NOM. Quan s'invoca com a "
-"ordre\n"
+" Crea una funció de l'intèrpret anomenada NOM. Quan s'invoca com a ordre\n"
" simple, NOM executa ORDRES en el context de l'intèrpret de qui fa la\n"
" crida. Quan NOM s'invoca, els arguments es passen a la funció com a\n"
" $1...$n, i el nom de la funció es troba a $FUNCNAME.\n"
@@ -5226,7 +5052,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si NOM és de només lectura."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5244,7 +5070,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de sortida de l'última ordre executada."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5259,8 +5085,7 @@ msgid ""
msgstr ""
"Reprèn una feina i la porta al primer pla.\n"
"\n"
-" Equivalent a utilitzar FEINA com a argument en l'ordre «fg». Reprèn "
-"una\n"
+" Equivalent a utilitzar FEINA com a argument en l'ordre «fg». Reprèn una\n"
" feina aturada o en segon pla. FEINA pot ser el nom d'una feina, o el\n"
" número d'una feina. Si es troba un «&» després de FEINA, llavors la\n"
" feina s'envia en un segon pla, com si l'especificació de feina\n"
@@ -5270,8 +5095,7 @@ msgstr ""
" Torna l'estat de sortida de la feina represa."
# help '(('
-#: builtins.c:1726
-#, fuzzy
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5290,16 +5114,13 @@ msgstr ""
" Si el resultat de l'avaluació és 0, torna 1; altrament torna 0."
# help '[['
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the `test' builtin, and may be combined using the following "
-"operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries used\n"
+" by the `test' builtin, and may be combined using the following operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -5330,10 +5151,8 @@ msgstr ""
" EXPR1 || EXPR2 Cert si EXPR1 o EXPR2 és cert; si no, fals.\n"
"\n"
" Quan s'utilitzen els operadors «==» o «!=», el component de la dreta\n"
-" s'interpreta com a un patró i es comprova si coincideix amb la cadena "
-"de\n"
-" l'esquerra de l'operador. Quan s'utilitza l'operador «=~», el "
-"component\n"
+" s'interpreta com a un patró i es comprova si coincideix amb la cadena de\n"
+" l'esquerra de l'operador. Quan s'utilitza l'operador «=~», el component\n"
" de la dreta de l'operador s'interpreta com a expressió regular i es\n"
" comprova si coincideix amb la cadena de l'esquerra de l'operador.\n"
"\n"
@@ -5343,7 +5162,7 @@ msgstr ""
" Estat de sortida:\n"
" 0 o 1, depenent del valor d'EXPRESSIÓ."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5399,45 +5218,45 @@ msgstr ""
"Nom i ús de variables de l'intèrpret habituals.\n"
"\n"
" BASH_VERSION Informació de la versió de Bash.\n"
-" CDPATH\t\tLlista de directoris separats per «:» on buscar\n"
+" CDPATH Llista de directoris separats per «:» on buscar\n"
" directoris passats com a arguments a «cd».\n"
-" GLOBIGNORE\t\tLlista de patrons separats per «:» que indiquen noms\n"
+" GLOBIGNORE Llista de patrons separats per «:» que indiquen noms\n"
" que s'ignoren en fer expansions de noms de fitxer.\n"
-" HISTFILE\t\tNom del fitxer on es desa l'historial d'ordres.\n"
-" HISTFILESIZE\tNombre màxim de línies que pot contenir el\n"
+" HISTFILE Nom del fitxer on es desa l'historial d'ordres.\n"
+" HISTFILESIZE Nombre màxim de línies que pot contenir el\n"
" fitxer de l'historial.\n"
-" HISTSIZE\t\tNombre màxim de línies de l'historial a què un\n"
-" \t\t\tintèrpret té accés.\n"
-" HOME\t\tCamí complet cap al vostre directori personal.\n"
-" HOSTNAME\t\tNom de la màquina actual.\n"
-" HOSTTYPE\t\tTipus de CPU de la màquina en què corre Bash.\n"
-" IGNOREEOF\t Controla el comportament de l'intèrpret en trobar un\n"
-" \t\t\tcaràcter EOF (final de fitxer) com a únic caràcter.\n"
+" HISTSIZE Nombre màxim de línies de l'historial a què un\n"
+" intèrpret té accés.\n"
+" HOME Camí complet cap al vostre directori personal.\n"
+" HOSTNAME Nom de la màquina actual.\n"
+" HOSTTYPE Tipus de CPU de la màquina en què corre Bash.\n"
+" IGNOREEOF Controla el comportament de l'intèrpret en trobar un\n"
+" caràcter EOF (final de fitxer) com a únic caràcter.\n"
" Si la variable està definida, llavors el seu valor\n"
" és el nombre de caràcters EOF seguits que es poden\n"
" llegir en una línia buida abans que l'intèrpret\n"
" surti (per defecte: 10). Si no està definida, EOF\n"
" s'interpreta com el final de les dades d'entrada.\n"
-" MACHTYPE\t\tCadena que descriu el sistema en què corre Bash.\n"
-" MAILCHECK\t\tAmb quina freqüència, en segons, Bash comprova si hi\n"
+" MACHTYPE Cadena que descriu el sistema en què corre Bash.\n"
+" MAILCHECK Amb quina freqüència, en segons, Bash comprova si hi\n"
" ha correu nou.\n"
-" MAILPATH\t\tLlista de fitxers separats per «:» que Bash comprova\n"
+" MAILPATH Llista de fitxers separats per «:» que Bash comprova\n"
" si tenen correu nou.\n"
-" OSTYPE\t\tLa versió de Unix en què corre Bash.\n"
-" PATH\t\tLlista de directoris separats per «:» on buscar quan\n"
-" \t\t\tse cerquen ordres.\n"
-" PROMPT_COMMAND\tOrdre que s'executa cada cop abans de mostrar\n"
-" \t\t\tl'introductor de l'intèrpret.\n"
-" PS1\t\t\tCadena de l'introductor principal.\n"
-" PS2\t\t\tCadena de l'introductor secundari.\n"
-" PWD\t\t\tCamí complet cap al directori corrent.\n"
-" SHELLOPTS\t\tLlista d'opcions habilitades separades per «:».\n"
-" TERM\t\tNom del tipus de terminal actual.\n"
-" TIMEFORMAT\t\tFormat de sortida per a les estadístiques de temps\n"
-" \t\t\tproduïdes per l'ordre «time».\n"
-" auto_resume\t\tNo-nul·la significa que una ordre sola en una línia\n"
-" \t\t\tes busca en primera instància a la llista actual de\n"
-" \t\t\tfeines aturades. Si es troba, aquella feina es\n"
+" OSTYPE La versió de Unix en què corre Bash.\n"
+" PATH Llista de directoris separats per «:» on buscar quan\n"
+" se cerquen ordres.\n"
+" PROMPT_COMMAND Ordre que s'executa cada cop abans de mostrar\n"
+" l'introductor de l'intèrpret.\n"
+" PS1 Cadena de l'introductor principal.\n"
+" PS2 Cadena de l'introductor secundari.\n"
+" PWD Camí complet cap al directori corrent.\n"
+" SHELLOPTS Llista d'opcions habilitades separades per «:».\n"
+" TERM Nom del tipus de terminal actual.\n"
+" TIMEFORMAT Format de sortida per a les estadístiques de temps\n"
+" produïdes per l'ordre «time».\n"
+" auto_resume No-nul·la significa que una ordre sola en una línia\n"
+" es busca en primera instància a la llista actual de\n"
+" feines aturades. Si es troba, aquella feina es\n"
" passa a primer pla. El valor «exact» significa que\n"
" l'ordre ha de coincidir exactament amb alguna ordre\n"
" de la llista de feines aturades. El valor\n"
@@ -5445,18 +5264,18 @@ msgstr ""
" amb una subcadena de la feina. Qualsevol altre\n"
" valor significa que l'ordre ha de ser el prefix\n"
" d'una feina aturada.\n"
-" histchars\t\tCaràcters que controlen l'expansió de l'historial i\n"
-" \t\t\tles substitucions ràpides. El primer caràcter és el\n"
-" \t\t\tcaràcter de substitució de l'historial, habitualment\n"
-" \t\t\t«!». El segon és el caràcter de «substitució\n"
+" histchars Caràcters que controlen l'expansió de l'historial i\n"
+" les substitucions ràpides. El primer caràcter és el\n"
+" caràcter de substitució de l'historial, habitualment\n"
+" «!». El segon és el caràcter de «substitució\n"
" ràpida», normalment «^». El tercer és el caràcter\n"
" de «comentari d'historial», normalment «#».\n"
-" HISTIGNORE\t\tLlista de patrons separats per «:» utilitzats per a\n"
-" \t\t\tdecidir si les ordres s'han de desar a l'historial.\n"
+" HISTIGNORE Llista de patrons separats per «:» utilitzats per a\n"
+" decidir si les ordres s'han de desar a l'historial.\n"
# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més
# enrere en aquest fitxer
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5518,7 +5337,7 @@ msgstr ""
# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més
# enrere en aquest fitxer
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5573,7 +5392,7 @@ msgstr ""
# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més
# enrere en aquest fitxer
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5604,8 +5423,7 @@ msgstr ""
"Mostra la pila de directoris.\n"
"\n"
" Mostra la llista actual de directoris recordats. Els directoris són\n"
-" afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la "
-"llista\n"
+" afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista\n"
" de directoris cap enrere amb l'ordre «popd».\n"
"\n"
" Opcions:\n"
@@ -5629,8 +5447,7 @@ msgstr ""
" Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n"
" error."
-#: builtins.c:1916
-#, fuzzy
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5651,21 +5468,23 @@ msgid ""
msgstr ""
"Activa i desactiva opcions de l'intèrpret.\n"
"\n"
-" Canvia l'estat de cada OPCIÓ. Si no especifiqueu cap OPCIÓ, mostra una\n"
-" llista de totes les opcions indicant si estan activades o no.\n"
+" Canvia l'estat de cada OPCIÓ. Sense cap argument d'opció, mostra un\n"
+" llistat amb cada OPCIÓ, o un llistat amb totes les opcions de\n"
+" l'intèrpret si no s'ha especificat cap OPCIÓ, indicant si les opcions\n"
+" estan activades o no.\n"
"\n"
" Opcions:\n"
" -o limita les opcions a les que es poden canviar amb «set -o»\n"
-" -p\tmostra totes les opcions indicant-ne l'estat\n"
-" -q\tsuprimeix la sortida\n"
-" -s\tactiva OPCIÓ\n"
-" -u\tdesactiva OPCIÓ\n"
+" -p mostra totes les opcions indicant-ne l'estat\n"
+" -q suprimeix la sortida\n"
+" -s activa OPCIÓ\n"
+" -u desactiva OPCIÓ\n"
"\n"
" Estat de sortida:\n"
" Torna èxit si OPCIÓ està activada; falla si especifiqueu una opció\n"
" invàlida o OPCIÓ està desactivada."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5673,34 +5492,29 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
+" FORMAT is a character string which contains three types of objects: plain\n"
+" characters, which are simply copied to standard output; character escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
+" format specifications, each of which causes printing of the next successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in "
-"printf(1),\n"
+" In addition to the standard format specifications described in printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a "
-"format\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as "
-"appropriate,\n"
+" specifications behave as if a zero value or null string, as appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
+" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
"Formata i escriu ARGUMENTS d'acord amb FORMAT.\n"
@@ -5721,6 +5535,8 @@ msgstr ""
" %b expandeix seqüències d'escapada a l'argument corresponent\n"
" %q afegeix les cometes necessàries perquè l'argument pugui ser\n"
" utilitzat com a entrada de l'intèrpret\n"
+" %Q com %q, però aplica qualsevol precisió a l'argument abans\n"
+" d'afegir les cometes \n"
" %(fmt)T escriu la cadena resultant de passar FMT a strftime(3) com a\n"
" argument\n"
"\n"
@@ -5733,15 +5549,12 @@ msgstr ""
" Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n"
" error d'assignació o d'escriptura."
-#: builtins.c:1971
-#, fuzzy
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
+" For each NAME, specify how arguments are to be completed. If no options\n"
+" are supplied, existing completion specifications are printed in a way that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -5756,10 +5569,8 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
-"supplied,\n"
-" the -D option takes precedence over -E, and both take precedence over -"
-"I.\n"
+" uppercase-letter options are listed above. If multiple options are supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -I.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
@@ -5773,26 +5584,29 @@ msgstr ""
" Opcions:\n"
" -p mostra les especificacions existents en format reciclable\n"
" -r suprimeix l'especificació de compleció per a NOM, o, si no\n"
-" \t\ts'indica cap NOM, totes les especificacions de compleció\n"
-" -D assigna les accions o complecions a totes les ordres que no\n"
+" s'indica cap NOM, totes les especificacions de compleció\n"
+" -D assigna les accions i complecions a totes les ordres que no\n"
" tenen definida una compleció específica\n"
-" -E assigna les accions o complecions a ordres \"en blanc\", o\n"
+" -E assigna les accions i complecions a ordres \"en blanc\", o\n"
" sigui, als intents de completar una línia en blanc\n"
+" -I assigna les accions i complecions a la paraula inicial\n"
+" (normalment una ordre)\n"
"\n"
-" Quan s'intenta una compleció, les accions s'apliquen en l'ordre en què\n"
-" les opcions -D i -E apareixen al paràgraf anterior. L'opció -D té\n"
-" preferència sobre l'opció -E.\n"
+" Quan s'intenta una compleció, s'apliquen primer les accions\n"
+" especificades amb l'opció -D, seguides de les acciones especificades amb\n"
+" l'opció -E, i l'opció -I (en aquest ordre). Si es proporcionen\n"
+" múltiples opcions, l'opció -D té preferència sobre l'opció -E, i ambdues\n"
+" opcions tenen preferència sobre l'opció -I.\n"
"\n"
" Estat de sortida:\n"
" Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
+" completions. If the optional WORD argument is supplied, matches against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -5800,25 +5614,20 @@ msgid ""
msgstr ""
"Mostra possibles complecions en funció de les opcions.\n"
"\n"
-" Aquesta ordre està pensada per a ser utilitzada en una funció que "
-"generi\n"
+" Aquesta ordre està pensada per a ser utilitzada en una funció que generi\n"
" possibles complecions. Si especifiqueu l'argument opcional PARAULA, es\n"
" limiten les complecions a aquelles que coincideixen amb PARAULA.\n"
"\n"
" Estat de sortida:\n"
" Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
-#: builtins.c:2016
-#, fuzzy
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, print\n"
+" the completion options for each NAME or the current completion specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5842,17 +5651,16 @@ msgid ""
msgstr ""
"Modifica o mostra opcions de compleció.\n"
"\n"
-" Modifica les opcions de compleció de NOM, o, si no especifiqueu cap "
-"NOM,\n"
+" Modifica les opcions de compleció de NOM, o, si no especifiqueu cap NOM,\n"
" la compleció que s'està executant en el moment. Si no s'indica cap\n"
" OPCIÓ, mostra les opcions de compleció per a cada NOM o\n"
" l'especificació de compleció en ús.\n"
"\n"
" Opcions:\n"
" -o opció Activa OPCIÓ per a NOM\n"
-" -D Canvia les opcions de compleció d'ordres per "
-"defecte\n"
-" -E Canvia les opcions de compleció d'ordres \"buides\"\n"
+" -D Canvia les opcions de compleció d'ordres per defecte\n"
+" -E Canvia les opcions de compleció d'ordres «buides»\n"
+" -I Canvia les opcions de compleció de la paraula inicial\n"
"\n"
" Si utilitzeu «+o» en lloc de «-o», desactiva l'opció especificada.\n"
"\n"
@@ -5860,8 +5668,7 @@ msgstr ""
"\n"
" Cada NOM és el nom d'una ordre per la qual s'ha d'haver definit una\n"
" especificació de compleció amb l'ordre interna «complete». Si no\n"
-" especifiqueu cap NOM, compopt s'ha de cridar des d'una funció "
-"generadora\n"
+" especifiqueu cap NOM, compopt s'ha de cridar des d'una funció generadora\n"
" de complecions, i les opcions que es modifiquen afecten la generació de\n"
" complecions que s'està executant en aquell moment.\n"
"\n"
@@ -5870,26 +5677,21 @@ msgstr ""
" definida cap especificació de compleció."
# help readarray
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
+" Read lines from the standard input into the indexed array variable ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard "
-"input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -5902,13 +5704,11 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
"Llegeix línies d'un fitxer cap a una variable vector.\n"
@@ -5918,26 +5718,23 @@ msgstr ""
" per defecte és MAPFILE.\n"
"\n"
" Opcions:\n"
-" -d delim Usa DELIM com delimitador de línies, en lloc del caràcter "
-"de\n"
+" -d delim Usa DELIM com delimitador de línies, en lloc del caràcter de\n"
" salt de línia\n"
" -n nombre Copia com a màxim NOMBRE línies. Si NOMBRE és 0, es copien\n"
-" \t\ttotes les línies.\n"
+" totes les línies.\n"
" -O origen Comença l'assignació a l'índex ORIGEN, per defecte 0.\n"
" -s nombre Descarta les primeres NOMBRE línies.\n"
" -t Estripa el caràcter de salt de línia de cada línia llegida.\n"
" -u fd Llegeix el descriptor de fitxer FD, en lloc de l'entrada\n"
" estàndard.\n"
" -C callback Avalua CALLBACK cada QUÀNTUM línies llegides.\n"
-" -c quàntum Nombre de línies llegides abans de cridar "
-"CALLBACK\n"
+" -c quàntum Nombre de línies llegides abans de cridar CALLBACK\n"
"\n"
" Arguments:\n"
" VECTOR Nom de la variable vector per a les dades.\n"
"\n"
" Si especifiqueu l'opció -C sense -c, el quàntum per defecte és 5000.\n"
-" Quan s'avalua la funció CALLBACK, se li passa l'índex del proper "
-"element\n"
+" Quan s'avalua la funció CALLBACK, se li passa l'índex del proper element\n"
" del vector i la línia que s'assigna a aquest element, com a arguments\n"
" addicionals.\n"
"\n"
@@ -5948,7 +5745,7 @@ msgstr ""
" Torna èxit, excepte si passeu una opció no vàlida o VECTOR és de només\n"
" lectura o no és una variable vector."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5958,9 +5755,8 @@ msgstr ""
"\n"
" Un sinònim de «mapfile»."
-#, fuzzy
-#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: clau de vector associatiu no vàlida"
#~ msgid "add_process: process %5ld (%s) in the_pipeline"
#~ msgstr "add_process: procés %5ld (%s) a the_pipeline"
@@ -5968,6 +5764,9 @@ msgstr ""
#~ msgid "Unknown Signal #"
#~ msgstr "Senyal Desconegut #"
+#~ msgid "Copyright (C) 2016 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+
#, fuzzy
#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
#~ msgstr "Copyright (C) 2013 Free Software Foundation, Inc."
diff --git a/po/cs.gmo b/po/cs.gmo
index aa75fcc5..39e0b6c7 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index bb123dbd..d2df43b1 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, 2019, 2020.
+# Petr Pisar <petr.pisar@atlas.cz>, 2015, 2016, 2018, 2019, 2020, 2022.
#
# alias → alias
# subscript → podskript
@@ -12,10 +12,10 @@
# Názvy signálů a stavů procesu by měly souhlasit se signal(7).
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.1\n"
+"Project-Id-Version: bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-10 10:46+01:00\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-21 20:10+02:00\n"
"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
"Language: cs\n"
@@ -29,57 +29,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "chybný podskript pole"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: odstraňuje se atribut odkazu na název"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: Äíslované pole nezle pÅ™evést na pole asociativní"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: neplatný klÃ­Ä asociativního pole"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: pÅ™es neÄíselný indexu nelze dosadit"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: při přiřazovaní asociativního pole se musí použít podskript"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nelze vytvořit: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: pro příkaz nelze nalézt klávesovou mapu "
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: první nebílý znak není „\"“"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "ne zavírající „%c“ v %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: chybí dvojteÄkový oddÄ›lovaÄ"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "„%s“: v mapě kláves příkazů nelze zrušit vazbu"
@@ -100,7 +95,7 @@ msgstr "závorková expanze: alokace paměti pro %u prvků selhala"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "závorková expanze: alokace paměti pro „%s“ selhala"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: chybný název aliasu"
@@ -171,7 +166,7 @@ msgstr ""
msgid "HOME not set"
msgstr "není nestavena HOME"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "příliš mnoho argumentů"
@@ -198,7 +193,7 @@ msgstr "varování: "
msgid "%s: usage: "
msgstr "%s: užití: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: pÅ™epínaÄ vyžaduje argument"
@@ -213,7 +208,7 @@ msgstr "%s: vyžadován Äíselný argument"
msgid "%s: not found"
msgstr "%s: nenalezeno"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: chybný pÅ™epínaÄ"
@@ -223,7 +218,7 @@ msgstr "%s: chybný pÅ™epínaÄ"
msgid "%s: invalid option name"
msgstr "%s: chybný název pÅ™epínaÄe"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: není platným identifikátorem"
@@ -236,7 +231,7 @@ msgstr "neplatné osmiÄkové Äíslo"
msgid "invalid hex number"
msgstr "chybné Å¡estnáctkové Äíslo"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "chybné Äíslo"
@@ -250,88 +245,93 @@ msgstr "%s: chybné urÄení signálu"
msgid "`%s': not a pid or valid job spec"
msgstr "„%s“: není PID ani platným oznaÄením úlohy"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: promÄ›nná pouze pro Ätení"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: nelze přiřadit"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s mimo rozsah"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s mimo rozsah"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: žádná taková úloha"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: žádné řízení úloh"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "žádné řízení úloh"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: omezeno"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "omezeno"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: není vestavěným příkazem shellu"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "chyba zápisu: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "chyba při nastavování vlastností terminálu: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "chyba při získávání vlastností terminálu: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: chyba pÅ™i zjiÅ¡Å¥ování souÄasného adresáře: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: nejednoznaÄné urÄení úlohy"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "k této verzi není dostupná nápověda"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: nelze zruÅ¡it: %s jen pro Ätení"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: nelze zrušit"
@@ -341,108 +341,108 @@ msgstr "%s: nelze zrušit"
msgid "%s: invalid action name"
msgstr "%s: neplatný název akce"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: žádné doplňování neurÄeno"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "varování: pÅ™epínaÄ -F možná nebude dÄ›lat, co jste Äekali"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "varování: pÅ™epínaÄ -C možná nebude dÄ›lat, co jste Äekali"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "doplňovací funkce se právě nevykonává"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "může být použito jen ve funkci"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "„-f“ nezle použít na výrobu funkce"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funkce jen pro Ätení"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: proměnná s odkazem nemůže být polem"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: proměnná s odkazem na název nemůže odkazovat sama na sebe"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: kruhový odkaz na název"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%s“: neplatný název proměnné pro odkaz na název"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "„-f“ nezle použít na výrobu funkce"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: funkce jen pro Ätení"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: přiřazení do složeného pole uzavřeného v uvozovkách je zastaralé"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: takto nelze likvidovat pole"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: asociativní pole nelze pÅ™evést na Äíslované pole"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: přiřazení do složeného pole uzavřeného v uvozovkách je zastaralé"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynamické nahrávání není dostupné"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "sdílený objekt %s nelze otevřít: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "ve sdílením objektu %2$s nelze nalézt %1$s: %3$s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: vestavěné příkazy již dynamicky zavedeny"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "zaváděcí funkce pro %s vrací chybu (%d): nezavedeno"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: není dynamicky nahráno"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nelze smazat: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: je adresářem"
@@ -457,7 +457,7 @@ msgstr "%s: není obyÄejný soubor"
msgid "%s: file is too large"
msgstr "%s: soubor je příliš velký"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: binární soubor nelze spustit"
@@ -555,12 +555,12 @@ msgstr ""
msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr "žádné téma nápovědy se nehodí pro „%s“. Zkuste „help help“ nebo „man -k %s“ nebo „info %s“."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: nelze otevřít: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -580,21 +580,21 @@ msgstr ""
"HvÄ›zdiÄka (*) vedle jména znamená, že příkaz je zakázán.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "nelze použít více jak jeden z -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "místo v historii"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: neplatný Äasový údaj"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: expanze historie selhala"
@@ -617,78 +617,78 @@ msgstr "%s: argumenty musí být proces nebo identifikátor úlohy"
msgid "Unknown error"
msgstr "Neznámá chyba"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "oÄekáván výraz"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: není (proměnnou typu) indexované pole"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: chybné urÄení deskriptoru souboru"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: neplatný deskriptor souboru: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: chybný poÄet řádků"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: chybný poÄátek pole"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: neplatné množství mezi voláními"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "prázdný název proměnné typu pole"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "je vyžadována podpora proměnných typu pole"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: postrádám formátovací znak"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: chybné urÄení Äasového limitu"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: neplatný formátovací znak"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "varování: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "potíže s rozebráním formátovacího řetězce: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "u \\x chybí Å¡estnáctková Äíslovka"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "u \\%c chybí unikódová Äíslovka"
@@ -837,12 +837,12 @@ msgstr ""
" \n"
" Zásobník adresářů si můžete prohlédnout příkazem „dirs“."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: chybné urÄení Äasového limitu"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "chyba Ätení: %d: %s"
@@ -855,7 +855,7 @@ msgstr "„return“ lze provést jen z funkce nebo skriptu naÄteného pÅ™es â€
msgid "cannot simultaneously unset a function and a variable"
msgstr "funkci i promÄ›nnou nelze ruÅ¡it souÄasnÄ›"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: není (proměnnou typu) pole"
@@ -874,11 +874,11 @@ msgstr "%s: nelze exportovat"
msgid "shift count"
msgstr "poÄet shiftů"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "pÅ™epínaÄ shellu nelze zároveň nastavit a zruÅ¡it"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: chybný název pÅ™epínaÄe shellu"
@@ -945,16 +945,16 @@ msgstr "%s: chybný argument s limitou"
msgid "`%c': bad command"
msgstr "„%c“: chybný příkaz"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: limit nelze zjistit: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: limit nelze změnit: %s"
@@ -973,7 +973,7 @@ msgstr "„%c“: chybný operátor symbolických práv"
msgid "`%c': invalid symbolic mode character"
msgstr "„%c“: chybný znak symbolický práv "
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " řádek "
@@ -993,96 +993,106 @@ msgstr "UkonÄuji…"
msgid "INFORM: "
msgstr "INFORMACE: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "LADICà upozornění: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "chyba neznámého příkazu"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "chybný druh příkazu"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "chybný konektor"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "chybný skok"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: nevázaná proměnná"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aÄasový limit pro Äekání na vstup vyprÅ¡el: automatické odhlášení\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "standardní vstup nelze přesměrovat z /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c“: chybný formátovací znak"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: koproces [%d:%s] stále existuje"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "chyba v rouře"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: maximální úroveň zanoÅ™ení funkce eval byla pÅ™ekroÄena (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximální úroveň zanoÅ™ení funkce source byla pÅ™ekroÄena (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximální úroveň zanoÅ™ení funkcí byla pÅ™ekroÄena (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: omezeno: v názvu příkazu nesmí být „/“"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: příkaz nenalezen"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: nelze spustit: požadovaný soubor neexistuje"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: chybný interpretr"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: binární soubor nelze spustit: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s“: je zvláštní vestavěný příkaz shellu"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d"
@@ -1095,68 +1105,68 @@ msgstr "úroveň rekurze výrazu byla pÅ™ekroÄena"
msgid "recursion stack underflow"
msgstr "zásobník rekurze podtekl"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "syntaktická chyba ve výrazu"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "pokus o přiřazení do ne-proměnné"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "syntaktická chyba v přiřazení do proměnné"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "dělení nulou"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "chyba: chybný expassing token"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "v podmínÄ›ném výrazu oÄekávána „:“"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "mocnitel menší než 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "po pÅ™ednostním zvýšení nebo snížení oÄekáván identifikátor"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "postrádám „)“"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "syntaktická chyba: oÄekáván operand"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaktická chyba: chybný aritmetický operátor"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (chybný token je „%s“)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "chybný aritmetický základ"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "chybná celoÄíselná konstanta"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "hodnot je pro základ příliš velká"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: chyba výrazu\n"
@@ -1165,7 +1175,7 @@ msgstr "%s: chyba výrazu\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: rodiÄovské adresáře nejsou přístupné"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "na deskriptoru %d nelze resetovat režim nodelay"
@@ -1184,169 +1194,169 @@ msgstr "save_bash_input: buffer již pro nový deskriptor %d existuje"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp roury"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: SMYÄŒKA: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: SMYÄŒKA: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forknutý PID %d se objevil v běžící úloze %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: PID %5ld (%s) oznaÄen za stále živého"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: žádný takový PID"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signál %d"
# XXX: (úloha) dokonÄna. Používat ženský rod i unásledujících. Jedná se
# o výpis úloh.
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "DokonÄena"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Pozastavena"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Pozastavena (%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Běží"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "DokonÄena (%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "UkonÄena %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Stav neznámý"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(core dumped [obraz paměti uložen]) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (cwd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid na potomku (z %ld na %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: PID %ld není potomkem tohoto shellu"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Žádný záznam o procesu %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: úloha %d je pozastavena"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: žádné souÄasné úlohy"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: úloha skonÄila"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: úloha %d je již na pozadí"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: zapíná se WNOHANG, aby se zabránilo neurÄitému zablokování"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: řádek %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (core dumped [obraz paměti uložen])"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(cwd nyní: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp selhalo"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: správa úloh nefunguje na pozadí"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplína linky"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nelze nastavit skupinu procesů terminálu (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "žádná správa úloh v tomto shellu"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: předpoklad nesplněn: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1355,47 +1365,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: zbabraný předpoklad\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "není známo"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: blok v seznamu uvolněných zbit"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: zavoláno s argumentem již uvolněného bloku"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: zavoláno s argumentem nenaalokovaného bloku"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: zjiÅ¡tÄ›no podteÄení, magic8 poÅ¡kozeno"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: velikosti poÄáteÄního a koncového kusu se liší"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: zavoláno s argumentem nenaalokovaného bloku"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: zjiÅ¡tÄ›no podteÄení, magic8 poÅ¡kozeno"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: velikosti poÄáteÄního a koncového kusu se liší"
@@ -1437,22 +1447,22 @@ msgstr "%s: chybné urÄení síťové cesty"
msgid "network operations not supported"
msgstr "síťové operace nejsou podporovány"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: národní prostředí nelze změnit (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: národní prostředí nelze změnit (%s): %s"
@@ -1470,139 +1480,139 @@ msgstr "V $_ máte novou poštu"
msgid "The mail in %s has been read\n"
msgstr "PoÅ¡ta v %s je pÅ™eÄtená\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "chyba syntaxe: vyžadován aritmetický výraz"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "chyba syntaxe: neoÄekávaný „;“"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "chyba syntaxe: „((%s))“"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: chybný druh instrukce %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "„here“ dokument na řádku %d ukonÄen koncem souboru (požadováno „%s“)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instrukce přesměrování „%d“ mimo rozsah"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc: shell_input_line_size (%zu) přesahuje SIZE_MAX (%lu): řádek zkrácen"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "maximální poÄet here dokumentů pÅ™ekroÄen"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "neoÄekávaný konec souboru pÅ™i hledání znaku odpovídajícímu „%c“"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "neoÄekávaný konec souboru pÅ™i hledání „]]“"
# XXX: Condional means condition (adj.) probably. Can English distinguish
# between the condition (podmínkový) and the code branch (podmíněný)? Check
# for all "conditional" string occurences.
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "chyba syntaxe ve výrazu podmínky: neoÄekávaný token „%s“"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "chyba syntaxe ve výrazu podmínky"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "neoÄekávaný token „%s“, oÄekávána „)“"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "oÄekávána „)“"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "neoÄekávaný argument „%s“ u podmínkového unárního operátoru"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "neoÄekávaný argument u podmínkového unárního operátoru"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "neoÄekávaný token „%s“, oÄekáván podmínkový binární operátor"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "oÄekáván podmínkový binární operátor"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "neoÄekávaný argument „%s„ u podmínkového binárního operátoru"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "neoÄekávaný argument u podmínkového binárního operátoru"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "neoÄekávaný token „%c“ v podmínkovém příkazu"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "neoÄekávaný token „%s“ v podmínkovém příkazu"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "neoÄekávaný token %d v podmínkovém příkazu"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "chyba syntaxe poblíž neoÄekávaného tokenu „%s“"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "chyba syntaxe poblíž „%s“"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "chyba syntaxe: nenadálý konec souboru"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "chyba syntaxe"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Shell lze ukonÄit příkazem „%s“.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "nenadálý konec souboru při hledání odpovídající „)“"
@@ -1641,94 +1651,94 @@ msgstr "xtrace_set: nullový ukazatel na soubor"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace: fd (%d) != fileno fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c“: chybný formátovací znak"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "deskriptor souboru mimo rozsah"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: nejednoznaÄné pÅ™esmÄ›rování"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: existující soubor nelze přepsat"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: omezeno: výstup nelze přesměrovat"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "pro „here“ dokument nelze vytvoÅ™it doÄasný soubor: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: deskriptor souboru nelze přiřadit do proměnné"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port není bez síťování podporováno"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "chyba přesměrování: deskriptor souboru nelze duplikovat"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "nelze nalézt /tmp, vytvořte jej, prosím!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp musí být platným názvem pro adresář"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "v interaktivních shellech se režim krásného výpisu nepoužije"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: chybný pÅ™epínaÄ"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "UID nelze nastavit na %d: efektivní UID je %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "GID nelze nastavit na %d: efektivní GID je %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "debuger nelze spustit, ladicí režim zakázán"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Je adresářem"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Nemám žádné jméno!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, verze %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1737,323 +1747,323 @@ msgstr ""
"Použití:\t%s [Dlouhý GNU pÅ™epínaÄ] [pÅ™epínaÄ]…\n"
"\t%s [Dlouhý GNU pÅ™epínaÄ] [pÅ™epínaÄ] skriptový_soubor…\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Dlouhé GNU pÅ™epínaÄe:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "PÅ™epínaÄe shellu:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD nebo -c příkaz nebo -O shopt_pÅ™epínaÄ\t(pouze pÅ™i vyvolání)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s nebo -o pÅ™epínaÄ\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Podrobnosti o pÅ™epínaÄích shellu získáte tím, že napíšete „%s -c \"help set\"“.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Podrobnosti o příkazech vestavěných do shellu získáte tím, že\n"
"napište „%s -c help“.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Chyby nahlásíte příkazem „bashbug“.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Domovská stránka bashe: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: neplatná operace"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Falešný signál"
# PÅ™eklady názvů signálů pÅ™evzaty (s mírnými úpravami) z Äeské pÅ™ekladu
# manuálové stránky signal(7).
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Linka terminálu zavěšena"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Přerušení"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "UkonÄení"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Neplatná instrukce"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Přerušení při ladění"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "UkonÄení funkcí abort()"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Instrukce EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Výjimka pÅ™i práci s pohyblivou řádovou Äárkou"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Zabit"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Chyba sběrnice"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Chyba segmentace"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Špatné volání systému"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Z roury nikdo neÄte"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Signál ÄasovaÄe"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "UkonÄit"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Čekají urgentní I/O data"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Pozastaveno (signálem)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "PokraÄovat"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Potomek byl pozastaven nebo zemřel"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Pozastaveno (vstupem TTY)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Pozastaveno (výstupem na TTY)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O je připraveno"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Dosažen limit procesorového Äasu"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Dosažen limit velikosti souboru"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "ÄŒasovaÄ (virtuální)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "ÄŒasovaÄ (profilovací)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Změna okna"
# XXX: SIGLOST
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Zámek záznamu"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Uživatelský signal 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Uživatelský signál 2"
# FIXME: HFT znamená High Frequency Timer? Zkontrolovat i další výskyty
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "vstupní data HFT Äekají"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "hrozí selhání napájení"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "hrozí selhání systému"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "přesunout proces na jiný procesor"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "chyba programování"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "Režim HFT sledování přidělen"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "Režim HFT sledování odebrán"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT zvuková posloupnost byla dokonÄena"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Požadavek o informaci"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Neznámý signál Ä. %d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: seznam nelze přiřadit do prvku pole"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "nelze vyrobit rouru za úÄelem substituce procesu"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "nelze vytvoÅ™it potomka za úÄelem substituce procesu"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "pojmenovanou rouru %s nelze otevřít pro Ätení"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "pojmenovanou rouru %s nelze otevřít pro zápis"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "substituce příkazu: nulový bajt ve vstupu ignorován"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "nelze vytvořit rouru pro substituci příkazu"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "nelze vytvořit potomka pro substituci příkazu"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: neplatný název proměnné pro odkaz na název"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: chybná nepřímá expanze"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: chybný název proměnné"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parametr nenastaven"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametr null nebo nenastaven"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: výraz podřetězce < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: chybná substituce"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: takto nelze přiřazovat"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "budoucá verze tohoto shellu budou vynucovat vyhodnocení jako aritmetickou substituci"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "chybná substituce: v %s chybí uzavírací „`“"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "žádná shoda: %s"
@@ -2076,21 +2086,21 @@ msgstr "oÄekávána „)“"
msgid "`)' expected, found %s"
msgstr "oÄekávána „)“, nalezeno %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: oÄekáván binární operátor"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: oÄekáván unární operátor"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "postrádám „]“"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "chyba syntaxe: neoÄekávaný Å™etÄ›zec „%s“"
@@ -2099,99 +2109,104 @@ msgstr "chyba syntaxe: neoÄekávaný Å™etÄ›zec „%s“"
msgid "invalid signal number"
msgstr "neplatné Äíslo signálu"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "obsluha signálů: maximální úroveň zanoÅ™ení obsluhy signálů byla pÅ™ekroÄena (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: obsluha signálu je SIG_DFL, přeposílám %d (%s) sobě"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: chybný signál %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "chyba při importu definice „%s“"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "úroveň shellu (%d) příliš vysoká, resetuji na 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: hodnotu nelze do proměnné přiřadit"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: z nekompatibilního typu nelze hodnotu zdědit"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: pÅ™iÅ™azení Äísla odkazu na název"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s: má nullový exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "neplatný znak %d v exportstr pro %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "v exportstr pro %s chybí „=“"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: hlava shell_variables není kontextem funkce"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: chybí kontext global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: hlava shell_variables není doÄasným rozsahem prostÅ™edí"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nelze otevřít jako SOUBOR"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: hodnota kompatibility je mimo rozsah"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright © 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright © 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2271,12 +2286,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] příkaz [argument…]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [název[=hodnota]…]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [název[=hodnota]…] nebo declare [-p] [-aAfFilnrtux] [název…]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] název[=hodnota]…"
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] název[=hodnota]… nebo typeset -p [-aAfFilnrtux] [název…]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2363,8 +2378,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o název_pÅ™epínaÄe] [--] [argument…]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o název_pÅ™epínaÄe] [--] [-] [argument…]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2411,8 +2426,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] název [název…]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2451,12 +2466,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if PŘÃKAZY; then PŘÃKAZY; [ elif PŘÃKAZY; then PŘÃKAZY; ]… [ else PŘÃKAZY; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while PŘÃKAZY; do PŘÃKAZY; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while PŘÃKAZY; do PŘÃKAZY-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until PŘÃKAZY; do PŘÃKAZY; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until PŘÃKAZY; do PŘÃKAZY-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3753,7 +3768,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3796,7 +3812,8 @@ msgstr ""
" dělení na slova a první slovo je přiřazeno do prvního JMÉNA, druhé slovo\n"
" do druhého JMÉNA a tak dále, pÅ™iÄemž pÅ™ebývající slova se pÅ™iÅ™adí do\n"
" posledního JMÉNA. Pouze znaky uvedené v $IFS jsou považovány za\n"
-" oddÄ›lovaÄe slov.\n"
+" oddÄ›lovaÄe slov. Ve výchozím nastavení znak zpÄ›tného lomítka ruší\n"
+" zvláštní význam znaků oddÄ›lovaÄe a nového řádku.\n"
" \n"
" Nejsou-li uvedena žádná JMÉNA, naÄtený řádek bude uložen do promÄ›nné REPLY.\n"
" \n"
@@ -3832,7 +3849,7 @@ msgstr ""
" přiřazování do proměnné, nebo není poskytnut neplatný deskriptor souboru\n"
" jako argument -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3852,7 +3869,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vrátí N, nebo selže, pokud shell neprovádí funkci nebo skript."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4020,7 +4037,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspěch, pokud nebyl zadán neplatný argument."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4059,7 +4076,7 @@ msgstr ""
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a JMÉNO není jen pro\n"
" Ätení."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4091,7 +4108,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo NÃZEV."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4129,7 +4146,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo NÃZEV."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4147,7 +4164,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspěch, pokud N není záporný a není větší než $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4171,7 +4188,7 @@ msgstr ""
" Vrací návratový kód posledního provedeného příkazu z NÃZVU_SOUBORU.\n"
" Selže, pokud NÃZEV_SOUBORU nelze naÄíst."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4195,7 +4212,7 @@ msgstr ""
" Návratový kód:\n"
" Vrací úspěch, pokud je správa úloh zapnuta a nevyskytla se chyba."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4362,7 +4379,7 @@ msgstr ""
" Vrací úspÄ›ch, je-li VÃRAZ vyhodnocen jako pravdivý. Selže, je-li VÃRAZ\n"
" vyhodnocen jako nepravdivý nebo je-li zadán neplatný argument."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4374,7 +4391,7 @@ msgstr ""
" Toto je synonymum pro vestavěný příkaz „test“, až na to, že poslední\n"
" argument musí být doslovně „]“, aby se shodoval s otevírající „[“."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4392,7 +4409,7 @@ msgstr ""
" Návratový kód:\n"
" Vždy uspěje."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4459,7 +4476,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud SIGSPEC a zadané pÅ™epínaÄe jsou platné."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4514,7 +4531,7 @@ msgstr ""
" Vrátí úspÄ›ch, pokud vÅ¡echny NÃZVY byly nalezeny. Selže, pokud nÄ›které\n"
" nalezeny nebyly."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4609,7 +4626,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vrací úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4642,7 +4659,7 @@ msgstr ""
" Návratový kód\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný MÓD nebo pÅ™epínaÄ."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4693,7 +4710,7 @@ msgstr ""
" neplatný pÅ™epínaÄ nebo byl použit pÅ™epínaÄ -n a shell nemá žádné\n"
" nevyhodnocené potomky."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4715,7 +4732,7 @@ msgstr ""
" Vrátí kód posledního PID. Selže, pokud PID není platný nebo byl zadán\n"
" neplatný pÅ™epínaÄ."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4736,7 +4753,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4765,7 +4782,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy vykonaného příkazu."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4800,7 +4817,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy prováděného příkazu."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4829,7 +4846,7 @@ msgstr ""
" Návratový kód:\n"
" Návratová hodnota je návratová hodnota KOLONY."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4847,7 +4864,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4875,42 +4892,43 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Vykonává příkazy, dokud test úspěšně prochází.\n"
" \n"
-" Expanduje a provádí PŘÃKAZY tak dlouho, dokud poslední příkaz ve „while“\n"
-" PŘÃKAZECH má nulový návratový kód.\n"
+" Expanduje a provádí PŘÃKAZY-2 tak dlouho, dokud poslední příkaz v PŘÃKAZECH\n"
+" má nulový návratový kód.\n"
" \n"
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Vykonává příkazy, dokud test konÄí neúspěšnÄ›.\n"
" \n"
-" Expanduje a provádí PŘÃKAZY tak dlouho, dokud poslední příkaz ve „until“\n"
-" PŘÃKAZECH má nenulový návratový kód. \n"
+" Expanduje a provádí PŘÃKAZY-2 tak dlouho, dokud poslední příkaz v PŘÃKAZECH\n"
+" má nenulový návratový kód.\n"
+" \n"
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4931,7 +4949,7 @@ msgstr ""
" Návratový kód:\n"
" Příkaz coproc vrací návratový kód 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4953,7 +4971,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud NÃZEV není jen pro Ätení."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4970,7 +4988,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy spuštěného příkazu."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4993,7 +5011,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód obnovené úlohy."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5015,7 +5033,7 @@ msgstr ""
# příkaz, který by byl vykonán na základě splnění jiné podmínky. Tj. překlad
# „podmíněný příkaz“ je chybný.
# Toto je nápověda k vestavěnému příkazu „[“.
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5062,7 +5080,7 @@ msgstr ""
" Návratový kód:\n"
" 0 nebo 1 podle hodnoty VÃRAZU."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5166,7 +5184,7 @@ msgstr ""
" \t\trozlišení, které příkazy by měly být uloženy do seznamu\n"
" \t\thistorie.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5223,7 +5241,7 @@ msgstr ""
" Vrátí úspěch, pokud nebyl zadán neplatný argument a změna adresáře\n"
" neselhala."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5273,7 +5291,7 @@ msgstr ""
" Vrátí úspěch, pokud nebyl zadán neplatný argument nebo neselhala změna\n"
" adresáře."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5323,7 +5341,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5360,7 +5378,7 @@ msgstr ""
" Vrátí úspÄ›ch, je-li NÃZEV_VOLBY zapnut. Selže, byl-li zadán neplatný\n"
" pÅ™epínaÄ nebo je-li NÃZEV_VOLBY vypnut."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5379,6 +5397,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5409,6 +5429,8 @@ msgstr ""
" v odpovídajícím argumentu\n"
" %q oescapuje argument takovým způsobem, že jej bude možné\n"
" použít jako vstup shellu\n"
+" %Q jako %q, ale použije libovolnou přesnost na neescapovaný\n"
+" argument před samotným escapováním\n"
" %(FORMÃT)T vypíše Å™etÄ›zec data-Äasu tak, jako by to byl výstup\n"
" funkce strftime(3) s formátovacím Å™etÄ›zcem FORMÃT\n"
" \n"
@@ -5421,7 +5443,7 @@ msgstr ""
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nedoÅ¡lo k chybÄ›\n"
" zápisu nebo přiřazení."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5471,7 +5493,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5491,7 +5513,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5545,7 +5567,7 @@ msgstr ""
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a NÃZEV mÄ›l definováno\n"
" pravidlo doplňování."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5615,7 +5637,7 @@ msgstr ""
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ, POLE nebylo jen pro\n"
" Ätení a bylo indexovaným polem."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5625,6 +5647,9 @@ msgstr ""
" \n"
" Synonymum pro „mapfile“."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: neplatný klÃ­Ä asociativního pole"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/da.gmo b/po/da.gmo
index 44572c77..46243f38 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 09b2cf64..d5334e28 100644
--- a/po/da.po
+++ b/po/da.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2011-03-18 01:36+0100\n"
"Last-Translator: Kenneth Nielsen <k.nielsen81@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -29,59 +29,54 @@ msgstr ""
msgid "bad array subscript"
msgstr "ugyldigt arrayindeks"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: kan ikke konvertere indekseret til associativt array"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: ugyldig nøgle til associativt array"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: kan ikke tildele til ikkenumerisk indeks"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: et indeks skal bruges ved tildeling til associativt array"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: kan ikke oprette %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: kan ikke finde tastetildeling for kommando"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: første ikke-blank-tegn er ikke '\"'"
# Kønnet her er et gæt, hvis det er parenteser eller anførselstegn passer det
# FEJLRAPPORT
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "ingen afsluttende \"%c\" i %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: manglende kolonseparator"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "\"%s\": kan ikke løsne"
@@ -101,7 +96,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, fuzzy, c-format
msgid "`%s': invalid alias name"
msgstr "\"%s\": ugyldigt tastetildelingsnavn"
@@ -178,7 +173,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME ikke indstillet"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "for mange argumenter"
@@ -206,7 +201,7 @@ msgstr "advarsel: "
msgid "%s: usage: "
msgstr "%s: brug: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: tilvalg kræver et argument"
@@ -221,7 +216,7 @@ msgstr "%s: numerisk argument påkrævet"
msgid "%s: not found"
msgstr "%s: ikke fundet"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: ugyldigt tilvalg"
@@ -231,7 +226,7 @@ msgstr "%s: ugyldigt tilvalg"
msgid "%s: invalid option name"
msgstr "%s: ugyldigt tilvalgsnavn"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "\"%s\": ikke et gyldigt identificeringsnavn"
@@ -244,7 +239,7 @@ msgstr "ugyldigt oktaltal"
msgid "invalid hex number"
msgstr "ugyldigt heksadecimalt tal"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "ugyldigt tal"
@@ -258,88 +253,93 @@ msgstr "%s: ugyldig signalspecifikation"
msgid "`%s': not a pid or valid job spec"
msgstr "\"%s\": ikke en pid eller gyldig job-spec"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: skrivebeskyttet variabel"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: kan ikke fjerne"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s udenfor rækkevidde"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s udenfor rækkevidde"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: intet sådant job"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: ingen jobkontrol"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "ingen jobkontrol"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: begrænset"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "begrænset"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: ikke indbygget i skallen"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "skrivefejl: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "fejl ved indstilling af terminalattribut: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "fejl ved indhentning af terminalattribut: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: fejl ved indhentning af nuværende mappe: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: tvetydig job-spec"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: kan ikke fjerne: skrivebeskyttet %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: kan ikke fjerne"
@@ -349,108 +349,108 @@ msgstr "%s: kan ikke fjerne"
msgid "%s: invalid action name"
msgstr "%s: ugyldigt handlingsnavn"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ingen fuldførselsspecifikation"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "advarsel: tilvalget -F vil måske ikke virke, som du forventer"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "advarsel: tilvalget -C vil måske ikke virke, som du forventer"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "ikke i gang med at eksekvere fuldførelsesfunktion"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "kan kun bruges i en funktion"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "kan ikke bruge \"-f\" til at lave funktioner"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: skrivebeskyttet funktion"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "\"%s\": ugyldigt tastetildelingsnavn"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "kan ikke bruge \"-f\" til at lave funktioner"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: skrivebeskyttet funktion"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: kan ikke destruere arrayvariabel på denne måde"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: kan ikke konvertere associativt til indekseret array"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynamisk indlæsning ikke tilgængelig"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "kan ikke åbne delt objekt %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "kan ikke finde %s i delt objekt %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: ikke dynamisk indlæst"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: ikke dynamisk indlæst"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: kan ikke slette: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: er en mappe"
@@ -465,7 +465,7 @@ msgstr "%s: ikke en regulær fil"
msgid "%s: file is too large"
msgstr "%s: fil er for stor"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: kan ikke eksekvere binær fil"
@@ -563,12 +563,12 @@ msgstr ""
"ingen hjælpeemner matcher \"%s\". Prøv \"help help\" eller \"man -k %s\" "
"eller \"info %s\"."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: kan ikke åbne: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -590,21 +590,21 @@ msgstr ""
"En stjerne (*) ved siden af et navn betyder at kommandoen er slået fra.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "kan ikke bruge mere end en af -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "historikposition"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: ugyldigt tilvalgsnavn"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: historikudvidelse fejlede"
@@ -627,79 +627,79 @@ msgstr "%s: argumenter skal være processer eller job-id'er"
msgid "Unknown error"
msgstr "Ukendt fejl"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "forventede et udtryk"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, fuzzy, c-format
msgid "%s: not an indexed array"
msgstr "%s: ikke en arrayvariabel"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: ugyldig filbeskrivelsesspecifikation"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: ugyldig filbeskrivelse: %s"
# -c Specify the number of lines read between each call to callback.
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: ugyldigt antal linjer"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: ugyldig array-startindeks"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: ugyldigt tilbagekaldskvantum"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "tomt arrayvariabelnavn"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "understøttelse af arrayvariabel påkrævet"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "\"%s\": manglende formattegn"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, fuzzy, c-format
msgid "`%c': invalid time format specification"
msgstr "%s: ugyldig specifikation af tidsudløb"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "\"%c\": ugyldigt formattegn"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "advarsel: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "manglende heksciffer for \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, fuzzy, c-format
msgid "missing unicode digit for \\%c"
msgstr "manglende heksciffer for \\x"
@@ -853,12 +853,12 @@ msgstr ""
" \n"
"Den indbyggede funktion \"dirs\" viser mappestakken."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: ugyldig specifikation af tidsudløb"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "læsefejl: %d: %s"
@@ -871,7 +871,7 @@ msgstr "kan kun udføre \"return\" fra en funktion eller indlæst skript"
msgid "cannot simultaneously unset a function and a variable"
msgstr "kan ikke fjerne en funktion og en variabel samtidig"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ikke en arrayvariabel"
@@ -890,11 +890,11 @@ msgstr "%s: kan ikke fjerne"
msgid "shift count"
msgstr "skifttæller"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "kan ikke indstille og fjerne skaltilvalg samtidig"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ugyldigt navn for skaltilvalg"
@@ -961,16 +961,16 @@ msgstr "%s: ugyldigt grænseargument"
msgid "`%c': bad command"
msgstr "\"%c\": ugyldig kommando"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: kan ikke indhente grænse: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "grænse"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: kan ikke modificere grænse: %s"
@@ -989,7 +989,7 @@ msgstr "\"%c\": ugyldig symbolsk tilstandsoperator"
msgid "`%c': invalid symbolic mode character"
msgstr "\"%c\": ugyldigt symbolsk tilstandstegn"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " linje "
@@ -1009,91 +1009,101 @@ msgstr "Afbryder..."
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "advarsel: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "ukendt kommandofejl"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "ugyldig kommandotype"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "dårligt mellemled"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "dårligt hop"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: ubundet variabel"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atidsudløb mens der ventedes på input: auto-logud\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "kan ikke videresende standardinput fra /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: \"%c\": ugyldigt formateringstegn"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "datakanalfejl (pipe error)"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: begrænset: kan ikke specificere \"/\" i kommandonavne"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: kommando ikke fundet"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: kan ikke eksekvere binær fil"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: dårlig fortolker"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: kan ikke eksekvere binær fil"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s er indbygget i skallen\n"
@@ -1107,7 +1117,7 @@ msgstr "%s er indbygget i skallen\n"
# expansion. If the >(list) form is used, writing to the file will proâ€
# vide input for list. If the <(list) form is used, the file passed as
# an argument should be read to obtain the output of list.
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "kan ikke duplikere fd %d til fd %d"
@@ -1120,72 +1130,72 @@ msgstr "grænse for rekursion af udtryk overskredet"
msgid "recursion stack underflow"
msgstr "underløb i rekursionsstak"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "syntaksfejl i udtryk"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "forsøgte tildeling til ikke-variabel"
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "syntaksfejl i udtryk"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "division med 0"
# denne her streng er dårlig på så mange måder at det fatter man slet ikke. Skal bug oversætter og hvad er expassign. Jeg laver et bud og har fejlmeldt den
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "bug: dårligt expassign-udtryk"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "\":\" forventet for betingede udtryk"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "eksponent mindre end 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identifikator forventet efter præforøgelse eller -formindskelse"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "manglende \")\""
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "syntaksfejl: operand forventet"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaksfejl: ugyldig aritmetisk operator"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (fejlelement er \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "ugyldig aritmetisk grundtal"
# -c Specify the number of lines read between each call to callback.
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: ugyldigt antal linjer"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "værdi for stor til grundtal"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: fejl i udtryk\n"
@@ -1195,7 +1205,7 @@ msgid "getcwd: cannot access parent directories"
msgstr "getcwd: kan ikke tilgå overliggende mapper"
# Har ladet nodelay stå, idet jeg gætter på at det er et navn
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d"
@@ -1215,168 +1225,168 @@ msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp-datakanal (pipe)"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forgrenet pid %d figurerer i kørende job %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "sletter stoppet job %d med procesgruppe %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) markeret som stadig i live"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ingen process med det pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Færdig"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Stoppet"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Stoppet(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Kører"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Færdig(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Afslut %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Ukendt status"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(smed kerne) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "underproces setpgid (%ld til %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld er ikke en underproces af denne skal"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ingen optegnelse af proces %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: job %d er stoppet"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: intet sådant job"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: job er afbrudt"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: job %d er allerede i baggrunden"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: linje %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (smed kerne)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd nu: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp fejlede"
-#: jobs.c:4447
+#: jobs.c:4434
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: linjedisciplin"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: linjedisciplin"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "kan ikke indstille terminal-procesgruppe (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "ingen jobkontrol i denne skal"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: forfejlet hævdelse: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1385,49 +1395,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: hævdelse forkludret\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "ukendt"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: blok i fri liste tværet ud"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: kaldt med blokargument som allerede er fri"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: kaldt med ikke-allokeret blokargument"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underløb detekteret, mh_nbytes uden for interval"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: underløb detekteret, mh_nbytes uden for interval"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: størrelse på start- og slut-bid afviger"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: kaldt med ikke-allokeret blokargument"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underløb detekteret, mh_nbytes uden for interval"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: underløb detekteret, mh_nbytes uden for interval"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: størrelse på start- og slut-bid afviger"
@@ -1469,22 +1479,22 @@ msgstr "%s: dårlig specifikation for netværkssti"
msgid "network operations not supported"
msgstr "netværksoperation ikke understøttet"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:292
+#: locale.c:294
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes"
-#: locale.c:294
+#: locale.c:296
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes"
@@ -1502,144 +1512,144 @@ msgstr "Du har ny post i $_"
msgid "The mail in %s has been read\n"
msgstr "Posten i %s er blevet læst\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "syntaksfejl: aritmetisk udtryk påkrævet"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "syntaksfejl: \";\" uventet"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "syntaksfejl: \"((%s))\""
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: dårlig instruktionstype %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
"here-document ved linje %d er adskilt af slut-på-linje (ønskede \"%s\")"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_direction: videresendelsesinstruktion \"%d\" uden for interval"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "uventet EOF mens der ledtes efter samhørende \"%c\""
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "uventet EOF mens der ledtes efter \"]]\""
# word A sequence of characters considered as a single unit by the
# shell. Also known as a token.
# Jeg har valgt udtryk
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntaksfejl i betingelsesudtryk: uventet element \"%s\""
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "syntaksfejl i betingelsesudtryk"
# word A sequence of characters considered as a single unit by the
# shell. Also known as a token.
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "uventet element \"%s\", forventede \")\""
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "forventede \")\""
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "uventet argument \"%s\" til unær betingelsesoperator"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "uventet argument til unær betingelsesoperator"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "uventet udtryk \"%s\", ventede binær betingelsesoperator"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "ventedet binær betingelsesoperator"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "uventet argument \"%s\" til binær betingelsesoperator"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "uventet argument til binær betingelsesoperator"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "uventet udtryk \"%c\" i betingelseskommando"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "uventet udtryk \"%s\" i betingelseskommando"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "uventet udtryk \"%d\" i betingelseskommando"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntaksfejl nær uventet udtryk \"%s\""
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "syntaksfejl nær \"%s\""
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "syntaksfejl: uventet slutning på fil"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "syntaksfejl"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Brug \"%s\" for at forlade skallen.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "uventet EOF mens der ledtes efter samhørende \")\""
@@ -1677,96 +1687,96 @@ msgstr ""
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr ""
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: \"%c\": ugyldigt formateringstegn"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "fil-deskriptor uden for interval"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: tvetydig videresendelse"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: kan ikke overskrive eksisterende fil"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: begrænset: kan ikke videresende output"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "kan ikke danne midlertidig fil til here-dokument: %s"
-#: redir.c:222
+#: redir.c:223
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: kan ikke tildele liste til arrayelementer"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/vært/port ikke understøttet uden netværk"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "videresendelsesfejl: kan ikke duplikere fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "kan ikke finde /tmp, opret venligst mappen!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp skal være et gyldigt mappenavn"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: ugyldigt tilvalg"
# Har ladet nodelay stå, idet jeg gætter på at det er et navn
-#: shell.c:1319
+#: shell.c:1343
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d"
# Har ladet nodelay stå, idet jeg gætter på at det er et navn
-#: shell.c:1330
+#: shell.c:1354
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: er en mappe"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Jeg har ikke noget navn!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1775,327 +1785,327 @@ msgstr ""
"Brug:\t%s [langt GNU-tilvalg] [tilvalg] ...\n"
"\t%s [langt GNU-tilvalg] [tilvalg] skript-fil ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Lange GNU-tilvalg:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Skal-tilvalg:\n"
-#: shell.c:2043
+#: shell.c:2069
#, fuzzy
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD eller -c kommando eller -O shopt_option\t\t(kun programkald)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\tTilvalg -%s eller -o\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Skriv \"%s -c \"help set\"\" for at få mere information om skaltilvalg.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Skriv \"%s -c help\" for at få mere information om indbyggede "
"skalkommandoer.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Brug kommandoen \"bashbug\" til at rapportere fejl.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: ugyldig handling"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Falsk signal"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Læg på"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Afbryd"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Afslut"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Ugyldig instruktion"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT-spor/fang"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT-instruktion"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT-instruktion"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Kommatalsundtagelse"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Slået ihjel"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Bus-fejl"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Segmenteringsfejl"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Ugyldigt systemkald"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Ødelagt datakanal"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Alarmklokke"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Afsluttet"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Presserende IO-forhold"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Stoppet (signal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Fortsæt"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Død eller stop af underproces"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Stoppet (tty-input)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Stoppet (tty-output)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O klar"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU-grænse"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Filgrænse"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (virtuel)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Vindue ændret"
# I fejlrapport for at få meningen
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Optag lås"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Brugersignal 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Brugersignal 2"
# Fejlrapport
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT-inputdata afventer"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "strømsvigt nært forestående"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "systemnedbrud nært forestående"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "flyt proces til en anden CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "programmeringsfejl"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT-skærmtilstand tildelt"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT-skærmtilstand trukket tilbage"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT-lydsekvens er afsluttet"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Informationsforespørgsel"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Ukendt signal #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "dårlig udskiftning: ingen lukkende \"%s\" i %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: kan ikke tildele liste til arrayelementer"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "kan ikke lave datakanal (pipe) til procesudskiftning"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "kan ikke danne underproces til procesudskiftning"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "kan ikke åbne navngiven datakanal (pipe) %s til læsning"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "kan ikke åbne navngiven datakanal (pipe) %s til skrivning"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "kan ikke duplikere navngiven datakanal (pipe) %s som %d"
-#: subst.c:6213
+#: subst.c:6370
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "dårlig udskiftning: ingen lukkende \"`\" i %s"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "kan ikke danne datakanal (pipe) til kommandoudskiftning"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "kan ikke danne underproces til kommandoudskiftning"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: kan ikke duplikere datakanal (pipe) som fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, fuzzy, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%d: ugyldig filbeskrivelse: %s"
# -c Specify the number of lines read between each call to callback.
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: ugyldigt antal linjer"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "\"%s\": ugyldigt tastetildelingsnavn"
-#: subst.c:7256
+#: subst.c:7478
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter null eller ikke indstillet"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter null eller ikke indstillet"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: understreng-udtryk < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: dårlig udskiftning"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: kan ikke tildele på denne måde"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "dårlig udskiftning: ingen lukkende \"`\" i %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "intet match: %s"
@@ -2118,21 +2128,21 @@ msgstr "\")\" forventet"
msgid "`)' expected, found %s"
msgstr "\")\" forventet, fandt %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: binær operator forventet"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: unær operator forventet"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "manglende \"]\""
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "syntaksfejl: \";\" uventet"
@@ -2141,17 +2151,17 @@ msgstr "syntaksfejl: \";\" uventet"
msgid "invalid signal number"
msgstr "ugyldigt signalnummer"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: dårlig værdi i trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2159,85 +2169,90 @@ msgstr ""
"run_pending_traps: signalhåndtering er SIG_DFL, gensender %d (%s) til mig "
"selv"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: ugyldigt signal %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "fejl under importering af funktionsdefinition for \"%s\""
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "skalniveau (%d) for højt, genindstiller til 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ingen funktionskontekst ved nuværende navneområde"
-#: variables.c:2693
+#: variables.c:2661
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: kan ikke tildele liste til arrayelementer"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ingen funktionskontekst ved nuværende navneområde"
-#: variables.c:4771
+#: variables.c:4757
#, fuzzy, c-format
msgid "%s has null exportstr"
msgstr "%s: parameter null eller ikke indstillet"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "ugyldigt tegn %d i exportstr for %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "intet \"=\" i exportstr for %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: hoved af shell_variables er ikke en funktionskontekst"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: ingen global_variables-kontekst"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: hoved af shell_variables er ikke et midlertidigt miljønavnerum"
-#: variables.c:6387
+#: variables.c:6400
#, fuzzy, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: kan ikke åbne: %s"
-#: variables.c:6392
+#: variables.c:6405
#, fuzzy, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%d: ugyldig filbeskrivelse: %s"
-#: variables.c:6437
+#: variables.c:6450
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s udenfor rækkevidde"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2332,12 +2347,16 @@ msgstr "command [-pVv] kommando [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFilrtux] [-p] [navn[=værdi] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFilrtux] [-p] navn[=værdi] ..."
#: builtins.c:82
@@ -2445,7 +2464,7 @@ msgstr "return [n]"
#: builtins.c:142
#, fuzzy
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [--abefhkmnptuvxBCHP] [-o tilvalgsnavn] [arg ...]"
#: builtins.c:144
@@ -2496,7 +2515,7 @@ msgstr "type [-afptP] navn [navn ...]"
#: builtins.c:171
#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHacdefilmnpqrstuvx] [grænse]"
#: builtins.c:174
@@ -2542,11 +2561,13 @@ msgstr ""
"[ else KOMMANDOER; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while KOMMANDOER; do KOMMANDOER; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until KOMMANDOER; do KOMMANDOER; done"
#: builtins.c:200
@@ -3986,7 +4007,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -4071,7 +4094,7 @@ msgstr ""
"indtræffer,\n"
" eller hvis en ugyldig fildeskriptor gives som argument til -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4096,7 +4119,7 @@ msgstr ""
"en\n"
" funktion eller et skript."
-#: builtins.c:1054
+#: builtins.c:1055
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4281,7 +4304,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer succes med mindre der angives et ugyldigt tilvalg."
-#: builtins.c:1139
+#: builtins.c:1140
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4323,7 +4346,7 @@ msgstr ""
"et\n"
" givent navn er skrivebeskyttet."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4359,7 +4382,7 @@ msgstr ""
" Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n"
" NAVN er ugyldig."
-#: builtins.c:1180
+#: builtins.c:1181
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4399,7 +4422,7 @@ msgstr ""
" Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n"
" NAVN er ugyldigt."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4418,7 +4441,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer succes med mindre N er negativ eller større end $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4444,7 +4467,7 @@ msgstr ""
"hvis\n"
" FILNAVN ikke kan læses."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4471,7 +4494,7 @@ msgstr ""
"der\n"
" opstår en fejl."
-#: builtins.c:1261
+#: builtins.c:1262
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4633,7 +4656,7 @@ msgstr ""
" Returnerer succes hvis UDTRYK evalueres til sand, og fejler hvis UDTRYK\n"
" evalueres til falsk eller hvis der gives et ugyldigt argument."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4646,7 +4669,7 @@ msgstr ""
"sidste\n"
" argument skal være \"]\", for at den passer til den åbnende \"[\"."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4666,7 +4689,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Lykkes altid."
-#: builtins.c:1364
+#: builtins.c:1365
#, fuzzy
msgid ""
"Trap signals and other events.\n"
@@ -4747,7 +4770,7 @@ msgstr ""
"angivet\n"
" et ugyldigt tilvalg."
-#: builtins.c:1400
+#: builtins.c:1401
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4810,7 +4833,7 @@ msgstr ""
"enkelt\n"
" ikke findes."
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4907,7 +4930,7 @@ msgstr ""
"der\n"
" opstår en fejl."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4945,7 +4968,7 @@ msgstr ""
"ugyldigt\n"
" tilvalg angives."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4992,7 +5015,7 @@ msgstr ""
"angives\n"
" et ugyldigt tilvalg."
-#: builtins.c:1533
+#: builtins.c:1534
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -5018,7 +5041,7 @@ msgstr ""
" Returnerer statussen for ID, fejler hvis ID er ugyldig eller hvis der\n"
" angives et ugyldigt tilvalg."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -5043,7 +5066,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen for den sidst eksekverede kommando."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5073,7 +5096,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer afslutningsstatussen for den sidst eksekverede kommando."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5111,7 +5134,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5140,7 +5163,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Afslutningsstatus er afslutningsstatus for DATAKANAL."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5159,7 +5182,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5198,12 +5221,14 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5216,12 +5241,14 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5234,7 +5261,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1671
+#: builtins.c:1672
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5258,7 +5285,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer afslutningsstatussen for KOMMANDO."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5282,7 +5309,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer succes med mindre NAVN er skrivebeskyttet."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5300,7 +5327,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5327,7 +5354,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen af det genoptagede job."
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
@@ -5347,7 +5374,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer 1 hvis udtrykket evalueres til 0, ellers returneres 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5402,7 +5429,7 @@ msgstr ""
" Afslutningsstatus:\n"
" 0 eller 1 afhængigt af udtrykkets værdi."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5515,7 +5542,7 @@ msgstr ""
" HISTIGNORE\tEn kolonsepareret liste af mønstre som bliver brugt til at\n"
" \t\tbestemme hvilke kommandoer der skal gemmes i historikken.\n"
-#: builtins.c:1821
+#: builtins.c:1822
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5575,7 +5602,7 @@ msgstr ""
"hvis\n"
" mappeskiftet mislykkes."
-#: builtins.c:1855
+#: builtins.c:1856
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5630,7 +5657,7 @@ msgstr ""
"hvis\n"
" mappeskiftet mislykkes."
-#: builtins.c:1885
+#: builtins.c:1886
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5685,7 +5712,7 @@ msgstr ""
"der\n"
" opstår en fejl."
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5726,7 +5753,7 @@ msgstr ""
"et\n"
" ugyldigt tilvalg eller hvis INDSTNAVN er deaktiveret."
-#: builtins.c:1937
+#: builtins.c:1938
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5750,6 +5777,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5793,7 +5822,7 @@ msgstr ""
"hvis\n"
" der opstår en skrive- eller tildelingsfejl."
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5845,7 +5874,7 @@ msgstr ""
"hvis\n"
" der opstår en fejl."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5870,7 +5899,7 @@ msgstr ""
" der opstår en fejl."
# Fejlrapport
-#: builtins.c:2016
+#: builtins.c:2019
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5933,7 +5962,7 @@ msgstr ""
"hvis\n"
" der ikke er defineret en fuldførselsspecifikation for NAVN."
-#: builtins.c:2047
+#: builtins.c:2050
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -6012,7 +6041,7 @@ msgstr ""
"hvis\n"
" ARRAY er skrivebeskyttet."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -6022,6 +6051,10 @@ msgstr ""
" \n"
" Et synonym for \"mapfile\"."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: ugyldig nøgle til associativt array"
+
#, fuzzy
#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc."
diff --git a/po/de.gmo b/po/de.gmo
index 7a31bc58..388ad49e 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 64d676fe..c73aef46 100644
--- a/po/de.po
+++ b/po/de.po
@@ -2,13 +2,14 @@
# Copyright (C) 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# Roland Illig <roland.illig@gmx.de> 2019
-# Nils Naumann <nau@gmx.net>, 1996-2019.
+# Nils Naumann <nau@gmx.net>, 1996-2021.
+#
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0\n"
+"Project-Id-Version: bash 5.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2019-10-21 20:58+0200\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2021-12-29 22:04+0100\n"
"Last-Translator: Nils Naumann <nau@gmx.net>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
@@ -16,67 +17,62 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "Falscher Feldindex."
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: Entferne das Nameref Attribut."
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
"%s: Das indizierte Array kann in kein assoziatives Array umgewandelt werden."
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: Ungültiger Schlüssel für das assoziative Array."
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: Das Zuweisen auf einen nicht-numerischen Index ist nicht möglich."
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
"%s: %s: Ein Feldindex wird zum Zuweisen eines assoziativen Arrays benötigt."
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: Kann die Datei %s nicht erzeugen."
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando "
"finden."
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr " %s: Das erste Zeichen ist nicht `\\'."
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "fehlende schließende `%c' in %s."
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: Fehlender Doppelpunkt."
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "»%s«: Bindung kann nicht gelöst werden."
@@ -96,7 +92,7 @@ msgstr "Klammererweiterung: Konnte keinen Speicher für %u Elemente zuweisen."
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "Klammererweiterung: Konnte keinen Speicher für »%s« zuweisen."
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "»%s«: Ungültiger Aliasname."
@@ -145,7 +141,6 @@ msgstr "nur in einer for-, while- oder until-Schleife sinnvoll."
# caller
#: builtins/caller.def:136
-#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
@@ -163,18 +158,13 @@ msgstr ""
" Mit diesen Informationen kann ein Stacktrace erzeugt werden.\n"
"\n"
" Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n"
-" wobei 0 der aktuelle Funktionsaufruf ist.\n"
-"\n"
-" Rückgabewert:\n"
-" Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das "
-"Argument\n"
-" ungültig ist, sonst 0."
+" wobei 0 der aktuelle Funktionsaufruf ist."
#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME ist nicht zugewiesen."
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "Zu viele Argumente."
@@ -202,7 +192,7 @@ msgstr "Warnung: "
msgid "%s: usage: "
msgstr "%s: Aufruf: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: Die Option erfordert ein Argument."
@@ -217,7 +207,7 @@ msgstr "%s: Ein numerischer Parameter ist erforderlich."
msgid "%s: not found"
msgstr "%s: Nicht gefunden."
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: Ungültige Option."
@@ -227,7 +217,7 @@ msgstr "%s: Ungültige Option."
msgid "%s: invalid option name"
msgstr "%s: Ungültiger Optionsname."
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "»%s«: Ist kein gültiger Bezeichner."
@@ -240,7 +230,7 @@ msgstr "Ungültige Oktalzahl."
msgid "invalid hex number"
msgstr "Ungültige hexadezimale Zahl."
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "Ungültige Zahl."
@@ -254,88 +244,93 @@ msgstr "%s: Ungültige Signalbezeichnung."
msgid "`%s': not a pid or valid job spec"
msgstr "»%s«: Ist keine gültige Prozess-ID oder Jobbezeichnung."
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: Schreibgeschützte Variable."
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: »unset« nicht möglich."
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches."
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "Argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s ist außerhalb des Gültigkeitsbereiches."
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: Kein solcher Job."
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: Keine Jobsteuerung in dieser Shell."
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "Keine Jobsteuerung in dieser Shell."
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: eingeschränkt"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "eingeschränkt"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: Ist kein eingebautes Shellkommando."
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "Schreibfehler: %s."
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "Fehler beim Setzen der Terminalattribute: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "Fehler beim Ermitteln der Terminalattribute: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: Kann das aktuelle Verzeichnis nicht wiederfinden: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: Mehrdeutige Jobbezeichnung."
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "In dieser Version ist keine Hilfe verfügbar."
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: »unset« nicht möglich: %s ist schreibgeschützt"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: »unset« nicht möglich."
@@ -345,110 +340,110 @@ msgstr "%s: »unset« nicht möglich."
msgid "%s: invalid action name"
msgstr "%s: Ungültiger Aktionsname."
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: Keine Komplettierung angegeben."
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "Warnung: Die Option -F könnte unerwartete Ergebnisse liefern."
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "Warnung: Die Option -C könnte unerwartete Ergebnisse liefern."
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt."
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "Kann nur innerhalb einer Funktion benutzt werden."
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "Mit »-f« können keine Funktionen erzeugt werden."
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: Schreibgeschützte Funktion."
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
-msgstr ""
+msgstr "%s: Referenzvariable darf kein Array sein."
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: Zirkularbezug auf indirekte Variable."
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "»%s«: Ungültiger Name für indirekte Variablenreferenz."
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "Mit »-f« können keine Funktionen erzeugt werden."
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: Schreibgeschützte Funktion."
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen."
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
"%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich."
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "Dynamisches Laden ist nicht verfügbar."
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "Kann die dynamische Bibliothek nicht laden %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "Kann %s nicht in der dynamischen Bibliothek finden %s: %s"
-#: builtins/enable.def:388
-#, fuzzy, c-format
+#: builtins/enable.def:422
+#, c-format
msgid "%s: dynamic builtin already loaded"
-msgstr "%s: Ist nicht dynamisch geladen."
+msgstr "%s: Ist bereits geladen."
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
"Die Ladefunktion von %s lieferte einen Fehler (%d), daher nicht geladen."
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: Ist nicht dynamisch geladen."
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: Kann nicht löschen: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: ist ein Verzeichnis."
@@ -463,7 +458,7 @@ msgstr "%s: Ist keine normale Datei."
msgid "%s: file is too large"
msgstr "%s: Die Datei ist zu groß."
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: Kann die Datei nicht ausführen."
@@ -551,6 +546,8 @@ msgid ""
"'\n"
"\n"
msgstr ""
+"'\n"
+"\n"
#: builtins/help.def:185
#, c-format
@@ -560,12 +557,12 @@ msgstr ""
"Kein passendes Hilfethema für »%s«. Probieren Sie »help help«, »man -k %s« "
"oder »info %s«."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: Kann die Datei nicht öffnen: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -587,21 +584,21 @@ msgstr ""
"Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "Es darf höchstens eine Option aus -anrw angegeben werden."
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "Kommandostapelposition."
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: Ungültiger Zeitstempel."
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: Kommandoersetzung gescheitert."
@@ -624,79 +621,79 @@ msgstr "%s: Die Argumente müssen Prozess- oder Job-IDs sein."
msgid "Unknown error"
msgstr "Unbekannter Fehler."
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "Ausdruck erwartet."
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: Ist kein indiziertes Array."
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: Ungültige Dateideskriptor-Angabe."
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: Ungültiger Dateideskriptor: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: Ungültige Zeilenanzahlangabe."
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: Ungültiger Arrayanfang."
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr ""
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "Fehlender Name für die Arrayvariable."
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr ""
"Die Unterstützung für Arrayvariablen ist in dieser Shell nicht vorhanden."
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "»%s«: Fehlendes Formatierungszeichen."
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "»%c«: Ungültige Zeitformatangabe."
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "»%c«: Ungültiges Formatierungszeichen."
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "Warnung: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "Formatleseproblem: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "Fehlende hexadezimale Ziffer nach \\x."
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "Fehlende Unicode-Ziffer für \\%c."
@@ -851,12 +848,12 @@ msgstr ""
" \n"
" Das Kommando »dirs« zeigt den Verzeichnisstapel an."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: Ungültige Wartezeitangebe."
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "Lesefehler: %d: %s"
@@ -872,7 +869,7 @@ msgid "cannot simultaneously unset a function and a variable"
msgstr ""
"Gleichzeitiges »unset« einer Funktion und einer Variable ist nicht möglich."
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: Ist keine Feldvariable."
@@ -891,11 +888,11 @@ msgstr "%s: Exportieren nicht möglich."
msgid "shift count"
msgstr "Verschiebeanzahl"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "Kann nicht Shelloptionen gleichzeitig aktivieren und deaktivieren."
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: Ungültiger Name für Shelloption."
@@ -963,16 +960,16 @@ msgstr "%s: Ungültiges Grenzwertargument."
msgid "`%c': bad command"
msgstr "`%c': Falsches Kommando."
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: Kann die nicht Grenze setzen: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "Grenze"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: Kann die Grenze nicht ändern: %s"
@@ -991,7 +988,7 @@ msgstr "`%c': Ungültiger Operator für den symbolischen Modus."
msgid "`%c': invalid symbolic mode character"
msgstr "`%c': Ungültiges Zeichen im symbolischen Modus."
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " Zeile "
@@ -1011,97 +1008,107 @@ msgstr "Abbruch..."
msgid "INFORM: "
msgstr "INFO: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "Warnung: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "Unbekanntes Kommando"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
-msgstr ""
+msgstr "Falscher Kommandotyp"
# Programmierfehler
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr ""
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "Falscher Sprung"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s ist nicht gesetzt."
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: »%c«: Ungültiges Formatzeichen."
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "Pipe-Fehler"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: Maximale Schachtelungstiefe überschritten (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: Maximale Quellcode-Schachtelungstiefe überschritten (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximale Schachtelungstiefe für Funktionen überschritten (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: eingeschränkt: `/' ist in Kommandonamen unzulässig."
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: Kommando nicht gefunden."
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: Kann die Datei nicht ausführen."
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: Defekter Interpreter"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: Kann die Binärdatei nicht ausführen: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "»%s« ist eine spezielle eingebaute Funktion."
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "Kann fd %d nicht auf fd %d verdoppeln."
@@ -1114,70 +1121,69 @@ msgstr "Zu viele Rekursionen in Ausdruck."
msgid "recursion stack underflow"
msgstr "Rekursionsstapel leer."
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "Syntaxfehler im Ausdruck."
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "Versuchte Zuweisung zu etwas, das keine Variable ist."
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "Syntaxfehler in der Variablenzuweisung."
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "Division durch 0."
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "Fehler: Falscher Zuweisungsoperator."
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "»:« für ein bedingten Ausdruck erwartet."
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "Der Exponent ist kleiner als 0."
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
"Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet."
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "Fehlende »)«"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "Syntaxfehler: Operator erwartet."
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "Syntaxfehler: Ungültiger arithmetischer Operator."
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \"%s\")."
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "Ungültige Basis."
-#: expr.c:1582
-#, fuzzy
+#: expr.c:1587
msgid "invalid integer constant"
-msgstr "%s: Ungültige Zeilenanzahlangabe."
+msgstr "Ungültige Ganzzahlenkonstante."
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "Der Wert ist für die aktuelle Basis zu groß."
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: Fehler im Ausdruck.\n"
@@ -1186,7 +1192,7 @@ msgstr "%s: Fehler im Ausdruck.\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: Kann auf die übergeordneten Verzeichnisse nicht zugreifen."
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "Konnte den No-Delay-Modus für fd %d nicht wiederherstellen."
@@ -1206,175 +1212,175 @@ msgstr "save_bash_input: Es existiert bereits ein Puffer für den neuen fd %d."
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d."
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld."
# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00024.html
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
# Programmierfehler
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: Prozessnummer existiert nicht."
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Fertig"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Angehalten"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Angehalten(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Läuft"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Fertig(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Exit %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Unbekannter Status"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(Speicherabzug geschrieben) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (Verz.: %s)"
# interner Fehler
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr ""
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: Prozess %ld wurde nicht von dieser Shell gestartet."
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr ""
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: Der Job %d ist gestoppt."
-#: jobs.c:3564
-#, fuzzy, c-format
+#: jobs.c:3551
+#, c-format
msgid "%s: no current jobs"
-msgstr "%s: Kein solcher Job."
+msgstr "%s: Kein aktueller Job."
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: Der Job ist beendet."
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: Der Job %d läuft bereits im Hintergrund."
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
# Debug Ausgabe
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: Zeile %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (Speicherabzug geschrieben)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n"
# interner Fehler
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp war nicht erfolgreich."
# interner Fehler
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: Keine Jobsteuerung im Hintergrund."
# interner Fehler
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
# interner Fehler
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)."
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "Keine Jobsteuerung in dieser Shell."
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: Zusicherung gescheitert: %s.\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1383,51 +1389,48 @@ msgstr ""
"\r\n"
"malloc: %s:%d: Zusicherung verpfuscht\\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "Unbekannt"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "Malloc: Ein internet Speicherbereich (free list) wurde überschrieben."
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: Wurde für bereits freigegebenen Speicherbereich aufgerufen."
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: Wurde für nicht zugeordneten Speicherbereich aufgerufen."
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
-#: lib/malloc/malloc.c:1001
-#, fuzzy
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
-msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
+msgstr "free: Underflow erkannt; magic8 beschädigt."
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: Beginn und Ende Segmentgrößen sind unterschiedlich."
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen."
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
-#: lib/malloc/malloc.c:1141
-#, fuzzy
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
-msgstr ""
-"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
+msgstr "realloc: Underflow erkannt; magic8 beschädigt."
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<"
@@ -1474,22 +1477,22 @@ msgstr "%s: Fehlerhafte Netzwerkspfadangabe."
msgid "network operations not supported"
msgstr "Der Netzwerkbetrieb ist nicht unterstützt."
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: Kann die Regionseinstellungen nicht ändern (%s)."
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: Kann die Regionseinstellungen nicht ändern (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: Kann die Regionseinstellungen nicht ändern (%s)."
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: Kann die Regionseinstellungen nicht ändern (%s): %s"
@@ -1508,142 +1511,142 @@ msgstr "Sie haben neue Post in $_."
msgid "The mail in %s has been read\n"
msgstr "Die Post in %s wurde bereits gelesen.\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "Syntaxfehler: Es wird ein arithmetischer Ausdruck benötigt."
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "Syntax Fehler: unerwartetes `;'."
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "Syntaxfehler: »((%s))«."
# interner Fehler
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: Falscher Befehlstyp %d."
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
"Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende "
"(erwartet wird »%s«)."
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "Dateiende beim Suchen nach »%c« erreicht."
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "Dateiende beim Suchen nach »]]« erreicht."
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Symbol »%s«."
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "Syntaxfehler im bedingten Ausdruck."
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "Unerwartetes Zeichen: »%s« anstatt von »)«"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "»)« erwartet."
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr ""
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr ""
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr ""
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr ""
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr ""
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr ""
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr ""
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr ""
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "Syntaxfehler beim unerwarteten Symbol »%s«"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "Syntaxfehler bei »%s«"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "Syntaxfehler: Unerwartetes Dateiende."
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "Syntaxfehler"
# Du oder Sie?
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Verwenden Sie »%s«, um die Shell zu verlassen.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "Dateiende beim Suchen nach zugehöriger »)« erreicht."
@@ -1681,96 +1684,96 @@ msgstr ""
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr ""
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: »%c«: Ungültiges Formatsymbol."
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "Dateideskriptor außerhalb des gültigen Bereichs."
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: Mehrdeutige Umlenkung."
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: Kann existierende Datei nicht überschreiben."
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: eingeschränkt: Die Ausgabe darf nicht umgeleitet werden."
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "Kann die temporäre Datei für das Hier-Dokument nicht anlegen: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: Kann fd keiner Variable zuweisen."
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
"Dateinamen der Form /dev/(tcp|udp)/host/port werden ohne Netzwerk nicht "
"unterstützt"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "Umleitungsfehler: Verdoppeln des Dateibezeichners nicht möglich."
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "Konnte das Verzeichnis »/tmp« nicht finden, bitte anlegen."
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp muss ein Verzeichnis sein."
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "Der hübsche Druckmodus wird in interaktiven Schells ignoriert."
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: Ungültige Option"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "Konnte die UID nicht in %d ändern: Die effektive UID ist %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "Konnte die GID nicht in %d ändern: Die effektive GID ist %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "Kann keinen Debugger starten. Der Debugmodus ist gesperrt."
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Ist ein Verzeichnis."
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Ich habe keinen Benutzernamen!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, Version %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1779,315 +1782,315 @@ msgstr ""
"Aufruf:\t%s [Lange GNU-Option] [Option] ...\n"
"\t%s [Lange GNU-Option] [Option] Script-Datei ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Lange GNU-Optionen:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Shell-Optionen:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD oder -c Kommando oder -O shopt_option\t\t(Nur Aufruf)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s oder Option -o\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Geben Sie »%s -c \"help set\"« ein, um mehr über Shell-Optionen zu "
"erfahren.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Geben Sie »%s -c help« ein, um mehr über eingebaute Shellkommandos zu "
"erfahren.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Mit dem Kommando »bashbug« Kommando können Sie Fehler melden.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Bash-Homepage: <https://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Allgemeine Hilfe für GNU-Software: <https://www.gnu.org/gethelp/>\n"
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: Ungültige Operation"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Falsches Signal."
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Aufgelegt"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Unterbrochen (Interrupt)"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Quit"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Ungültige Anweisung."
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Verfolgen/anhalten abfangen (Trace/breakpoint trap)"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Abbruchkommando"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT abfangen (EMT trap)"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Gleitkommafehler"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Abgebrochen (Killed)"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Bus-Fehler"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Adressierungsfehler"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Falscher Systemaufruf"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Unterbrochene Pipe"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Wecker"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Abgebrochen (Terminated)"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Dringende IO-Bedingung"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Angehalten (Signal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Prozessbearbeitung wieder aufgenommen."
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Kindprozess abgebrochen oder gestoppt."
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Angehalten (Terminaleingabe)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Angehalten (Terminalausgabe)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "E/A fertig"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Rechenzeitgrenze"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Grenze für Dateigröße"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (Virtuell)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (Profil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Fenster geändert"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Datei blockiert"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Nutzersignal 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Nutzersignal 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT Eingabedaten ausstehend"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "Spannungsausfall steht bevor"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "Systemausfall steht bevor"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "Verlege den Prozess auf einen anderen Prozessor"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "Programmierfehler"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT-Monitormodus erlaubt"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT-Monitormodus abgeschaltet"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT-Tonfolge beendet"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Informationsanforderung"
# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00025.html
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Unbekanntes Signal Nr.: %d."
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "Falsche Ersetzung: Kein schließendes »%s« in »%s« enthalten."
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: Kann einem Feldelement keine Liste zuweisen."
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "Kann keine Pipe für die Prozessersetzung erzeugen."
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "Kann den Kindsprozess für die Prozessersetzung nicht erzeugen."
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "Kann nicht die benannte Pipe %s zum Lesen öffnen."
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "Kann nicht die benannte Pipe %s zum Schreiben öffnen."
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "Kann die benannte Pipe %s nicht auf fd %d duplizieren."
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "Kommandoersetzung: NULL-Byte in der Eingabe ignoriert."
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "Kann keine Pipes für Kommandoersetzung erzeugen."
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen."
# interner Fehler
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: Kann Pipe nicht als Dateideskriptor 1 duplizieren."
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: Ungültiger Variablenname für Namensreferenz."
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: Ungültige indirekte Expansion."
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: Ungültiger Variablenname."
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: Der Parameter ist nicht gesetzt."
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: Parameter ist leer oder nicht gesetzt."
# interner Fehler
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: Teilstring-Ausdruck < 0."
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: Falsche Substitution."
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: Kann so nicht zuweisen."
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2095,12 +2098,12 @@ msgstr ""
"Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer "
"Ersetzungen erzwingen."
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "Falsche Ersetzung: Kein schließendes »`« in %s."
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "Keine Entsprechung: %s"
@@ -2123,136 +2126,141 @@ msgstr "»)« erwartet."
msgid "`)' expected, found %s"
msgstr "»)« erwartet, %s gefunden."
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: Zweistelliger (binärer) Operator erwartet."
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: Einstelliger (unärer) Operator erwartet."
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "Fehlende »]«"
-#: test.c:899
-#, fuzzy, c-format
+#: test.c:914
+#, c-format
msgid "syntax error: `%s' unexpected"
-msgstr "Syntax Fehler: unerwartetes `;'."
+msgstr "Syntax Fehler: »%s« unerwartet."
#: trap.c:220
msgid "invalid signal number"
msgstr "Ungültige Signalnummer."
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "Traphandler: Maximale Traphandler-Ebene überschritten (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: Ungültiger Wert in trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
# Programmierfehler
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: Falsches Signal %d."
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "Fehler beim Importieren der Funktionsdefinition für »%s«."
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "Der Shell-Level (%d) ist zu hoch und wird auf 1 zurückgesetzt."
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: no function context at current scope"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: Der Variable darf kein Wert zugewiesen werden."
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
# Interner Fehler
-#: variables.c:3475
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: assigning integer to name reference"
# Interner Fehler
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: no function context at current scope"
# Interner Fehler
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s has null exportstr"
# Interner Fehler
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "invalid character %d in exportstr for %s"
# Interner Fehler
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "no `=' in exportstr for %s"
# Interner Fehler
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: head of shell_variables not a function context"
# Interner Fehler
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: no global_variables context"
# Interner Fehler
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: head of shell_variables not a temporary environment scope"
# Interner Fehler
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: cannot open as FILE"
# Interner Fehler
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: invalid value for trace file descriptor"
# Interner Fehler
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: compatibility value out of range"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2342,14 +2350,18 @@ msgstr "command [-pVv] Kommando [Argument ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilrntux] [-p] [Name[=Wert] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
+msgstr "declare [-aAfFgiIlrntux] [-p] [Name[=Wert] ...]"
#
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilnrtux] [-p] Name[=Wert] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] [-p] Name[=Wert] ..."
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2373,15 +2385,13 @@ msgstr "eval [Argument ...]"
# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html
#: builtins.c:96
-#, fuzzy
msgid "getopts optstring name [arg ...]"
-msgstr "getopts Optionen Variable [Argumente]"
+msgstr "getopts Optionen [Argumente ...]"
# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html
#: builtins.c:98
-#, fuzzy
msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
-msgstr "exec [-cl] [-a Name] [Kommando [Argumente ...]] [Umleitung ...]"
+msgstr "exec [-cl] [-a Name] [Kommando [Argument ...]] [Umleitung ...]"
#: builtins.c:100
msgid "exit [n]"
@@ -2454,7 +2464,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o Option] [--] [Argument ...]"
#: builtins.c:144
@@ -2502,7 +2513,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] Name [Name ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [Grenze]"
#: builtins.c:174
@@ -2510,9 +2522,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [Modus]"
#: builtins.c:177
-#, fuzzy
msgid "wait [-fn] [-p var] [id ...]"
-msgstr "wait [-fn] [id ...]"
+msgstr "wait [-fn] [-p Variable] [id ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2547,11 +2558,13 @@ msgstr ""
"Kommandos; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while Kommandos; do Kommandos; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until Kommandos; do Kommandos; done"
#: builtins.c:200
@@ -2604,28 +2617,25 @@ msgstr "printf [-v var] Format [Argumente]"
# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html
#: builtins.c:231
-#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o Option] [-A Aktion]\n"
-" [-G Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando]\n"
-" [-X Filtermuster] [-P Prefix] [-S Suffix] [Name ...]"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o Option] [-A Aktion] [-G "
+"Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-"
+"P Prefix] [-S Suffix] [Name \n"
+"...]"
# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html
#: builtins.c:235
-#, fuzzy
msgid ""
"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
"compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W "
-"Wortliste]\n"
-" [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S "
-"Suffix]\n"
-" [Wort]"
+"Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S "
+"Suffix] [Wort]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
@@ -3095,7 +3105,6 @@ msgstr ""
# declare
#: builtins.c:490
-#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3149,6 +3158,10 @@ msgstr ""
" und Quelldatei beim Debuggen).\n"
" -g Deklariert globale Varieblen innerhalb einer\n"
" Shellfunktion; wird ansonsten ignoriert.\n"
+" -I Eine neue lokale Variable erhält die Attribute und Werte "
+"der\n"
+" Variable mit gleichen Namen im vorherigen "
+"Gültigkeitsbereich. \n"
" -p Zeigt die Attribute und Werte jeder angegebenen\n"
" Variable an.\n"
"\n"
@@ -3156,13 +3169,12 @@ msgstr ""
" -a\tDeklariert ein indiziertes Feld (wenn unterstützt).\n"
" -A\tDeklariert ein assoziatives Feld (wenn unterstützt).\n"
" -i\tDeklariert eine ganzzahlige Variable.\n"
-" -l\tKonvertiert die Variabennmamen in Kleinbuchstaben.\n"
+" -l\tKonvertiert die übergebenen Werte zu Kleinbuchstaben.\n"
" -n\tDer Name wird als Variable interpretiert. \n"
" -r\tDeklariert nur lesbare Variablen.\n"
" -t\tWeist das Attribut »trace« zu.\n"
-" -u\tKonvertiert die Variablennamen in Großbuchstaben.\n"
-" -x\tExportiert die Variablen über die aktuelle Shell-\n"
-" Umgebung hinaus.\n"
+" -u\tKonvertiert die übergebenen Werte in Großbuchstaben.\n"
+" -x\tExportiert die Variablen.\n"
"\n"
" Das Voranstellen von »+« anstelle von »-« schaltet die angegebenen\n"
" Attribute ab.\n"
@@ -3387,7 +3399,6 @@ msgstr ""
# getopts
#: builtins.c:652
-#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3429,7 +3440,7 @@ msgid ""
msgstr ""
"Verarbeitet Optionsargumente.\n"
"\n"
-" Getopts wird von Shell-Prozeduren verwendet, um die\n"
+" Getopts wird von Shellprozeduren verwendet, um die\n"
" Kommandozeilenoptionen auszuwerten.\n"
"\n"
" \"Optionen\" enthält die auszuwertenden Buchstaben. Ein Doppelpunkt\n"
@@ -3569,6 +3580,31 @@ msgid ""
" Returns success or status of executed command; non-zero if an error "
"occurs."
msgstr ""
+"Anzeigen oder Ausführen von Befehlen aus der History-Liste.\n"
+" \n"
+" fc wird verwendet, um Befehle aus der History-Liste aufzulisten,\n"
+" zu bearbeiten und erneut auszuführen. FIRST und LAST können\n"
+" Zahlen sein, die den Bereich angeben, oder FIRST kann eine\n"
+" Zeichenkette sein, was bedeutet, dass der jüngste Befehl mit\n"
+" dieser Zeichenfolge beginnt.\n"
+" \n"
+" Optionen:\n"
+" -e ENAME Auswahl des zu verwendenden Editors. Standard sind FCEDIT,\n"
+" dann EDITOR, dann vi.\n"
+" -l Zeilen auflisten statt bearbeiten.\n"
+" -n Zeilennummern beim Auflisten weglassen.\n"
+" -r kehrt die Reihenfolge der Zeilen um (die neuesten Zeilen zuerst).\n"
+" \n"
+" Mit `fc -s [pat=rep ...] [command]' wird COMMAND erneut\n"
+" ausgeführt, nachdem die Ersetzung OLD=NEW durchgeführt wurde.\n"
+" \n"
+" Ein nützlicher Alias ist r='fc -s', so dass die Eingabe von `r cc'\n"
+" den letzten Befehl ausführt, der mit \"cc\" beginnt, und die Eingabe\n"
+" von \"r\" den letzten Befehl erneut ausführt.\n"
+" \n"
+" Exit-Status:\n"
+" Gibt den Erfolg oder den Status des ausgeführten Befehls zurück;\n"
+" ungleich Null, wenn ein Fehler auftritt."
#: builtins.c:764
msgid ""
@@ -3612,6 +3648,7 @@ msgstr ""
" Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n"
" oder ein Fehler auftritt."
+# hash
#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
@@ -3635,6 +3672,31 @@ msgid ""
" Exit Status:\n"
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
+"Programpfade merken oder anzeigen.\n"
+" \n"
+" Ermittelt und speichert den vollständigen Pfadnamen jedes\n"
+" Kommandos NAME. Wenn keine Argumente angegeben werden, werden\n"
+" Informationen über gespeicherte Kommandod angezeigt.\n"
+" \n"
+" Optionen:\n"
+" -d Vergessen des Speicherortes für jeden NAME\n"
+" -l Anzeige in einem Format, das als Eingabe wiederverwendet werden "
+"kann\n"
+" -p Pfadname verwendet PATHNAME als den vollständigen Pfadnamen von "
+"NAME\n"
+" -r vergisst alle gespeicherten Pfade\n"
+" \n"
+" -t gibt den Speicherort jedes NAMENS aus, wobei jedem\n"
+" Speicherort der entsprechende NAME vorangestellt wird,\n"
+" wenn mehrere NAMEs angegeben sind\n"
+" \n"
+" Argumente:\n"
+" NAME Jeder NAME wird in $PATH gesucht und in die Liste\n"
+" der gespeicherten Befehle hinzugefügt.\n"
+" \n"
+" Exit-Status:\n"
+" Gibt Erfolg zurück, es sei denn, NAME wird nicht gefunden oder es\n"
+" wird eine ungültige Option angegeben."
# help
#: builtins.c:818
@@ -3678,6 +3740,7 @@ msgstr ""
" Erfolg, außer wenn das Muster nicht gefunden oder eine ungültige Option\n"
" angegeben wurde."
+# history
#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
@@ -3712,7 +3775,42 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
+"Zeigt die Verlaufsliste an oder bearbeitet sie.\n"
+" \n"
+" Zeigt die Verlaufsliste mit Zeilennummern an und stellt jedem\n"
+" geänderten Eintrag ein `*' vorangestellt. Ein Argument von N\n"
+" listet nur die letzten N Einträge auf.\n"
+" \n"
+" Optionen:\n"
+" -c Löscht die Verlaufsliste, indem alle Einträge gelöscht werden.\n"
+" -d offset löscht den Verlaufseintrag an der Position\n"
+" OFFSET. Negative Offsets zählen vom Verlaufslistenende\n"
+" zurück.\n"
+" -a Anhängen vom Verlauf dieser Sitzung an die Verlaufsdatei.\n"
+" -n alle nicht bereits aus der Verlaufsdatei gelesenen.\n"
+" Verlaufszeilen lesen und an die Verlaufsliste anhängen.\n"
+" -r liest die Verlaufsdatei und hängt den Inhalt an die\n"
+" Verlaufsliste an.\n"
+" -w schreibt den aktuellen Verlauf in die Verlaufsdatei.\n"
+" -p führt eine Verlaufserweiterung für jedes ARG durch und zeigt\n"
+" das Ergebnis an, ohne es in der Verlaufslise einzutragen.\n"
+" -s die ARGs als einen einzigen Eintrag an die History-Liste anhängen.\n"
+" \n"
+" Wenn FILENAME angegeben ist, wird dieser als History-Datei verwendet.\n"
+" Andernfalls, wenn HISTFILE einen Wert hat, wird dieser verwendet,\n"
+" sonst ~/.bash_history.\n"
+" \n"
+" Wenn die Variable HISTTIMEFORMAT gesetzt und nicht null ist, wird\n"
+" ihr Wert verwendet als Formatierungszeichenfolge für strftime(3)\n"
+" verwendet, um den Zeitstempel zu Zeitstempel für jeden angezeigten\n"
+" History-Eintrag zu drucken. Andernfalls werden keine Zeitstempel\n"
+" gedruckt.\n"
+" \n"
+" Rückgabewert:\n"
+" Gibt einen Erfolg zurück, es sei denn, es wurde eine ungültige\n"
+" Option angegeben oder es ist ein Fehler aufgetreten."
+# jobs
#: builtins.c:879
msgid ""
"Display status of jobs.\n"
@@ -3736,7 +3834,30 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs.\n"
" If -x is used, returns the exit status of COMMAND."
msgstr ""
+"Auftragstatus anzeigen.\n"
+" \n"
+" Listet die aktiven Aufträge auf. JOBSPEC schränkt die Ausgabe auf\n"
+" diesen Auftrag ein. Ohne Optionen werden die Status der aktiven\n"
+" Aufträge angezeigt.\n"
+" \n"
+" Optionen:\n"
+" -l zeigt zusätzlich auch die Prozessnummern an.\n"
+" -n zeigt nur die Prozesse an, deren Status sich seit der letzten\n"
+" Benachrichtigung geändert haben.\n"
+" -p zeigt nur Prozessnummern an.\n"
+" -r zeigt nur laufende Aufträge an.\n"
+" -s zeigt nur gestoppte Aufträge an\n"
+" \n"
+" Mit der Option -x wird COMMAND ausgeführt, nachdem alle in ARGS\n"
+" enthaltenen Auftragsspezifikationen durch die zugehörigen\n"
+" Prozesnummern ersetzt worden sind.\n"
+" \n"
+" Rückgabewert:\n"
+" Gibt einen Erfolg zurück, es sei denn, es wurde eine ungültige\n"
+" Option angegeben oder es ist ein Fehler aufgetreten. Wenn -x\n"
+" verwendet wird, wird der Rückgebewert von COMMAND zurückgegeben."
+# disown
#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
@@ -3753,7 +3874,23 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
+"Entfernt Aufträge aus der aktuellen Shell.\n"
+" \n"
+" Entfernt jedes JOBSPEC-Argument aus der Tabelle der aktiven\n"
+" Aufträge. Ohne JOBSPECs verwendet die Shell ihre Vorstellung vom\n"
+" aktuellen Auftrag.\n"
+" \n"
+" Optionen:\n"
+" -a entfernt alle Aufträge, wenn JOBSPEC nicht angegeben wird.\n"
+" -h JOBSPEC maskieren, so dass der Auftrag kein SIGHUP erhält,\n"
+" wenn die Shell ein SIGHUP empfängt.\n"
+" -r entfernt nur laufende Aufträge.\n"
+" \n"
+" Beenden Status:\n"
+" Gibt Erfolg zurück, außer wenn eine ungültige Option oder\n"
+" JOBSPEC angegeben wurde."
+# kill
#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
@@ -3776,6 +3913,27 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
+"Sendet ein Signal an einen Auftrag.\n"
+" \n"
+" Sendet den durch PID oder JOBSPEC identifizierten Prozessen das\n"
+" mit SIGSPEC oder SIGNUM anggebene Signal. Wenn weder SIGSPEC\n"
+" noch SIGNUM angegeben sind, dann wird wird SIGTERM gesendet.\n"
+" \n"
+" Optionen:\n"
+" -s sig SIG ist ein Signalname.\n"
+" -n sig SIG ist eine Signalnummer.\n"
+" -l listet die Signalnamen auf. Wenn Argumente auf `-l' folgen,\n"
+" werden für diese Signalnummern die Namen aufgelistet.\n"
+" -L Synonym für -l.\n"
+" \n"
+" Kill ist ein in die Shell eingebaute Funktion, da diese erlaubt,\n"
+" Auftrags- statt Prozessnummern anzugeben. Weierhin kann Kill\n"
+" Prozesse auch dann beenden, wenn die maximal erlaubte\n"
+" Prozessanzahl erreicht ist.\n"
+" \n"
+" Exit-Status:\n"
+" Gibt Erfolg zurück, es sei denn, es wurde eine ungültige Option\n"
+" angegeben oder es ist ein Fehler aufgetreten."
#: builtins.c:949
msgid ""
@@ -3821,8 +3979,52 @@ msgid ""
" Exit Status:\n"
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
+"Auswerten arithmetischer Ausdrücke.\n"
+" \n"
+" Jedes ARG wird als arithmetischer Ausdruck ausgewertet. Die\n"
+" Auswertung erfolgt in Ganzzahlen mit fester Breite ohne\n"
+" Überprüfung auf Überlauf. Division durch 0 wird abgefangen und als\n"
+" Fehler gekennzeichnet. Die folgende Liste von Operatoren ist in\n"
+" abnehmender Präferenz nach gleichrangigen Operatoren gruppiert.\n"
+" \n"
+" \tid++, id-- Variable post-increment, post-decrement\n"
+" \t++id, --id Variable pre-increment, pre-decrement\n"
+" \t-, + unäres Minus, Plus\n"
+" \t!, ~ logische und bitweise Negation\n"
+" \t** Potenzierung\n"
+" \t*, /, % Multiplikation, Division, Rest\n"
+" \t+, - Addition, Subtraktion\n"
+" \t<<, >> bitweise Links- und Rechtsverschiebung\n"
+" \t<=, >=, <, > Vergleich\n"
+" \t==, != Gleichheit, Ungleichheit\n"
+" \t& bitweises UND\n"
+" \t^ bitweises XOR\n"
+" \t| bitweises ODER\n"
+" \t&& logisches UND\n"
+" \t|| logisches OR\n"
+" \texpr ? expr : expr\n"
+" Bedingte Ausführung\n"
+" \t=, *=, /=, %=,\n"
+" \t+=, -=, <<=, >>=,\n"
+" \t&=, ^=, |= Zuweisung\n"
+" \n"
+" Shell-Variablen sind als Operanden zulässig. Der Variablenname\n"
+" wird innerhalb eines Ausdrucks durch seinen Wert (der in eine\n"
+" Ganzzahl mit fester Breite umgewandelt wird) ersetzt. Das\n"
+" Integer-Attribut der Variablen muss nicht eingeschaltet sein, um\n"
+" in einem Ausdruck verwendet zu werden.\n"
+" \n"
+" Die Operatoren werden in der Reihenfolge ihres Vorrangs\n"
+" ausgewertet. Unterausdrücke in Klammern werden zuerst ausgewertet\n"
+" und können die obigen Rangfolge Regeln außer Kraft setzen.\n"
+" \n"
+" Rückgabewert:\n"
+" Wenn der letzte ARG 0 ergibt, gibt let 1 zurück; andernfalls gibt let 0 "
+"zurück."
+# read
#: builtins.c:994
+#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3833,7 +4035,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3873,8 +4077,53 @@ msgid ""
"occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
+"Liest eine Zeile von der Standardeingabe und teilt sie in Felder auf.\n"
+" \n"
+" Liest eine einzelne Zeile aus der Standardeingabe oder vom\n"
+" Dateideskriptor FD wenn die Option -u angegeben ist. Die Zeile\n"
+" wird wie bei der Wortaufteilung in Felder aufgeteilt aufgeteilt,\n"
+" und das erste Wort wird dem ersten NAME zugewiesen, das zweite\n"
+" NAME zugewiesen, das zweite Wort dem zweiten NAME usw., wobei alle\n"
+" verbleibenden Wörter dem dem letzten NAME zugeordnet werden. Die\n"
+" in $IFS enthaltenen Zeichen werden als Worttrennzeichen verwendet.\n"
+" \n"
+" Wenn keine NAMEn angegeben werden, wird die gelesene Zeile in der\n"
+" REPLY-Variablen gespeichert.\n"
+" \n"
+" Optionen:\n"
+" -a array weist die gelesenen Wörter den aufeinanderfolgenden\n"
+" Indizes der Array Variable ARRAY, beginnend bei Null.\n"
+" -d delim fortfahren, bis das erste Zeichen von DELIM gelesen\n"
+" wird, anstelle von statt Newline.\n"
+" -e Readline verwenden, um die Zeile zu lesen.\n"
+" -i text TEXT als Anfangstext für Readline verwenden.\n"
+" -n nchars Liest maximal NCHARS Zeichen, ohne ein Zeilenumbruch\n"
+" \t\tzu suchen. Worttrennzeichen werden ausgewertet.\n"
+" -N nchars Liest genau NCHARS Zeichen, bis EOF oder einer\n"
+" \t\tZeitüberschreitung. Worttrennzeichen werden ignoriert.\n"
+" -p prompt Gibt vor dem Lesen die Zeichenkette PROMPT ohne einen\n"
+" \t\tabschließenden Zeilenumbruch aus.\n"
+" -r lässt keine Backslashes als Escape-Zeichen zu\n"
+" -s keine Echo-Eingabe von einem Terminal\n"
+" -t timeout\n"
+" Zeitüberschreitung und Rückgabe eines Fehlers, wenn\n"
+" \t\teine vollständige Eingabezeile nicht innerhalb von\n"
+" \t\tTIMEOUT Sekunden gelesen wird. Die TMOUT Variable\n"
+" \t\tenthält das Standard-Timeout. TIMEOUT kann als\n"
+" \t\tBruchteil angegeben werden. Wenn TIMEOUT gleich 0\n"
+" \t\tist, werden keine daten geleden und gibt Erfolg\n"
+" \t\tzurück, wenn Daten dem angegebenen Dateideskriptor\n"
+" \t\tverfügbar sind. Der Rückgabewert ist größer als 128,\n"
+" \t\twenn die Zeitüberschreitung abgelaufen ist.\n"
+" -u fd Lesen von Dateideskriptor FD statt von der Standardeingabe\n"
+" \n"
+" Rückgabewert: \n"
+" Der Rückgabewert ist Null. Es sei denn, das Dateiende wurde\n"
+" erreicht, die Lesezeit überschritten (in diesem Fall ist er größer\n"
+" als 128), ein Variablenzuweisungsfehler tritt auf oder ein\n"
+" ungültiger Dateideskriptor wurde als Argument von -u übergeben."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3885,8 +4134,19 @@ msgid ""
" Exit Status:\n"
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
+"Rückkehr aus einer Shell-Funktion.\n"
+" \n"
+" Bewirkt, dass eine Funktion oder ein geladenes Skript mit dem\n"
+" durch N angegebenen Rückgabewert beendet wird. Wenn N weggelassen\n"
+" wird, wird als Rückgabewert der des zuletzt ausgeführten Befehls\n"
+" verwendet.\n"
+" \n"
+" Rückgabewert:\n"
+" Gibt N zurück, oder einen Fehler, wenn return außerhalb einer Funktion\n"
+" oder Skript aufgerufen wird."
-#: builtins.c:1054
+# set
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3971,8 +4231,99 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
msgstr ""
+"Setzen oder Aufheben von Shell-Optionen und Positionsparametern.\n"
+" \n"
+" Den Wert von Shell-Attributen und Positionsparametern ändern, oder\n"
+" die Namen und Werte von Shell-Variablen anzeigen.\n"
+" \n"
+" Optionen:\n"
+" -a Markieren von Variablen die geändert oder erstellt wurden, für den "
+"Export.\n"
+" -b Sofortige Benachrichtigung über das Auftragsende.\n"
+" -e Sofortiger Abbruch, wenn ein Befehl mit einem Status ungleich Null "
+"beendet wird.\n"
+" -f Deaktiviert das Generieren von Dateinamen (globbing).\n"
+" -h Merkt sich den Speicherort von Befehlen, wenn sie nachgeschlagen "
+"werden.\n"
+" -k Alle Zuweisungsargumente werden in die Umgebung für einen\n"
+" Befehl in die Umgebung aufgenommen, nicht nur diejenigen,\n"
+" die dem Befehl vorangestellt sind.\n"
+" -m Die Auftragskontrolle ist aktiviert.\n"
+" -n Befehle lesen, aber nicht ausführen.\n"
+" -o Optionsname\n"
+" Setzt die Variable, die dem Optionsname entspricht:\n"
+" allexport wie -a\n"
+" braceexpand wie -B\n"
+" emacs verwendet eine emacsähnliche Schnittstelle zur "
+"Zeilenbearbeitung\n"
+" errexit gleich wie -e\n"
+" errtrace dasselbe wie -E\n"
+" functrace dasselbe wie -T\n"
+" hashall dasselbe wie -h\n"
+" histexpand gleich wie -H\n"
+" history Befehlshistorie aktivieren\n"
+" ignoreeof die Shell wird beim Lesen von EOF nicht beendet\n"
+" interaktive-Kommentare\n"
+" erlaubt das Erscheinen von Kommentaren in "
+"interaktiven Befehlen\n"
+" keyword dasselbe wie -k\n"
+" monitor gleich wie -m\n"
+" noclobber dasselbe wie -C\n"
+" noexec gleich wie -n\n"
+" noglob gleich wie -f\n"
+" nolog wird derzeit akzeptiert, aber ignoriert\n"
+" notify gleich wie -b\n"
+" nounset dasselbe wie -u\n"
+" onecmd dasselbe wie -t\n"
+" physical wie -P\n"
+" pipefail der Rückgabewert einer Pipeline ist der Status\n"
+" des des letzten Befehls, der mit einem Status\n"
+" ungleich Null beendet wurde, oder Null, wenn\n"
+" kein Befehl mit einem Status ungleich Null\n"
+" beendet wurde.\n"
+" posix Ändert das Verhalten von bash, wo die Standard\n"
+" Operation vom Posix-Standard abweicht, um mit\n"
+" dem Standard übereinstimmen.\n"
+" privilegiert gleich wie -p\n"
+" verbose dasselbe wie -v\n"
+" vi eine vi-ähnliche Schnittstelle zur Zeilenbearbeitung "
+"verwenden\n"
+" xtrace dasselbe wie -x\n"
+" -p Wird eingeschaltet, wenn die realen und effektiven\n"
+" Benutzerkennungen nicht übereinstimmen. Deaktiviert die\n"
+" Verarbeitung der $ENV-Datei und das Importieren von Shell\n"
+" Funktionen. Wenn diese Option ausgeschalten ist, werden die\n"
+" effektive uid und gid auf die reale uid und gid gesetzt. \n"
+" -t Beenden nach dem Lesen und Ausführen eines Befehls.\n"
+" -u Nicht gesetzte Variablen beim Substituieren als Fehler behandeln.\n"
+" -v Shell-Eingabezeilen ausgeben, wenn sie gelesen werden.\n"
+" -x Befehle und ihre Argumente ausgeben, wenn sie ausgeführt werden.\n"
+" -B Die Shell führt eine Klammererweiterung durch\n"
+" -C Dateien werden bei Ausgabeumleitung nicht überschrieben.\n"
+" -E Wenn gesetzt, wird die Fehlerfalle (trap) an Shell-Funktionen "
+"vererbt.\n"
+" -H Aktiviert die !-Stil Verlaufsersetzung. Diese Option ist\n"
+" bei einer interaktiven Shell standardmäßig aktiviert.\n"
+" -P Symbolische Links werden nicht aufgelöst, wenn Befehle wie\n"
+" z.B. cd, das aktuelle Verzeichnis ändern.\n"
+" -T DEBUG und RETURN Fallen (trap) werden an Shellfunktionen vererbt.\n"
+" -- Weist alle verbleibenden Argumente den Positionsparametern\n"
+" zu. Sind keine Argumente verblieben, werden die\n"
+" Positionsparameter nicht gesetzt.\n"
+" - Weist alle verbleibenden Argumente den Positionsparametern zu.\n"
+" Die Optionen -x und -v sind ausgeschaltet.\n"
+" \n"
+" Durch Verwenden von + anstelle von - werden Option ausgeschaltet.\n"
+" Die Optionen können auch beim Shellaufruf verwendet werden. Die\n"
+" aktuelle aktiven Optionen sind in $- gespeichert. Die restlichen\n"
+" n ARGs sind positionale Parameter und werden der Reihe nach $1,\n"
+" $2, ... $n zugewiesen. Wenn keine ARGs angegeben werden, werden\n"
+" alle Shell-Variablen ausgegeben.\n"
+" \n"
+" Rückgabewert:\n"
+" Gibt Erfolg zurück, es sei denn, eine ungültige Option wurde angegeben."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3994,7 +4345,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4013,7 +4364,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4034,7 +4385,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4045,7 +4396,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4059,7 +4410,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4073,7 +4424,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4157,7 +4508,7 @@ msgid ""
msgstr ""
# [
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4171,7 +4522,7 @@ msgstr ""
" schließt."
# times
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4190,7 +4541,7 @@ msgstr ""
" Rückgabewert:\n"
" Immer 0."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4234,7 +4585,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4264,7 +4615,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4314,7 +4665,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4332,7 +4683,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4364,7 +4715,7 @@ msgid ""
" children."
msgstr ""
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4379,7 +4730,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4392,7 +4743,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4409,7 +4760,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4429,7 +4780,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4445,7 +4796,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4456,7 +4807,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4477,29 +4828,31 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4512,7 +4865,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4526,7 +4879,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4537,7 +4890,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4552,8 +4905,7 @@ msgid ""
msgstr ""
# (( ))
-#: builtins.c:1726
-#, fuzzy
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4568,12 +4920,11 @@ msgstr ""
" Der Ausdruck wird nach den Regeln für arithmetische Berechnungen\n"
" ausgewertet. Diese Schreibweise entspricht »let Ausdruck«.\n"
"\n"
-" Rückgabewert: \n"
-" Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n"
-" ergibt, sonst »0«."
+" Rückgabewert:\n"
+" Ist »1«, wenn der arithmetische Ausdruck 0 ergibt, sonst »0«."
# [[
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4624,7 +4975,7 @@ msgstr ""
" 0 oder 1 abhängig vom Wert des AUSDRUCKs."
# variable_help
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4736,7 +5087,7 @@ msgstr ""
" Kommandos angibt.\n"
# pushd
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4792,7 +5143,7 @@ msgstr ""
" wurde oder der Verzeichniswechsel nicht erfolgreich war."
# popd
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4846,7 +5197,7 @@ msgstr ""
" wurde oder der Verzeichniswechsel nicht erfolgreich war."
# dirs
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -4900,7 +5251,7 @@ msgstr ""
" Gibt Erfolg zurück, außer bei einer ungültigen Option oder wenn\n"
" ein Fehler auftritt."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4939,7 +5290,8 @@ msgstr ""
" worden ist, wird ein Fehler zurückgegeben."
# printf
-#: builtins.c:1937
+#: builtins.c:1938
+#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4962,6 +5314,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5012,7 +5366,7 @@ msgstr ""
"ein\n"
" Aus- bzw. Zuweisungsfehler auftritt."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5044,7 +5398,7 @@ msgid ""
msgstr ""
# compgen
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5066,7 +5420,7 @@ msgstr ""
" Rückgabewert:\n"
" Falsche Optionen oder Fehler führen zu Rückgabewerten ungleich Null."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5098,7 +5452,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5141,7 +5495,7 @@ msgid ""
msgstr ""
# readarray
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5151,6 +5505,10 @@ msgstr ""
"\n"
" Ist ein Synonym für »mapfile«."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: Ungültiger Schlüssel für das assoziative Array."
+
# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00025.html
#~ msgid "Unknown Signal #"
#~ msgstr "Unbekannte Signalnummer"
diff --git a/po/el.gmo b/po/el.gmo
index 97304da9..809aac86 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index ed9fb5b4..a84b8f07 100644
--- a/po/el.po
+++ b/po/el.po
@@ -2,13 +2,13 @@
# Copyright (C) 2013 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
#
-# Lefteris Dimitroulakis <ledimitro@gmail.com>, 2013, 2016, 2017.
+# Lefteris Dimitroulakis <ledimitro@gmail.com>, 2013, 2016, 2017, 2021
msgid ""
msgstr ""
-"Project-Id-Version: bash-4.4\n"
+"Project-Id-Version: bash-5.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2017-06-21 17:08+0300\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2021-04-12 10:35+0300\n"
"Last-Translator: Lefteris Dimitroulakis <ledimitro@gmail.com>\n"
"Language-Team: Greek <team@lists.gnome.gr>\n"
"Language: el\n"
@@ -17,86 +17,81 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 1.5\n"
+"X-Generator: Poedit 2.3\n"
#: arrayfunc.c:66
msgid "bad array subscript"
-msgstr "κακός δείκτης πίνακα"
+msgstr "λάθος δείκτης πίνακα"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
-msgstr "%s: αφαίÏεση του χαÏακτηÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï nameref "
+msgstr "%s: αφαίÏεση του χαÏακτηÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
-msgstr "%s: αδυναμία μετατÏοπής indexed πίνακα σε associative πίνακα "
+msgstr "%s: αδυναμία μετατÏοπής indexed πίνακα σε associative πίνακα"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: μη έγκυÏο κλειδί associative πίνακα "
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
-msgstr "%s: αδυναμία εκχώÏησης σε μη αÏιθμητικό δείκτη "
+msgstr "%s: αδυναμία εκχώÏησης σε μη αÏιθμητικό δείκτη"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: αδυναμία δημιουÏγίας: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: δεν μποÏÏŽ να βÏω keymap για εντολή"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: ο Ï€Ïώτος μη-λευκό διάστημα χαÏακτήÏας δεν είναι «\"» "
+msgstr "%s: ο Ï€Ïώτος μη-λευκό διάστημα χαÏακτήÏας δεν είναι «\"»"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "όχι «%c» κλεισήματος σε %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
-msgstr "%s: απουσιάζει διαχωÏιστής δίστιγμο "
+msgstr "%s: απουσιάζει ο διαχωÏιστής δίστιγμο"
-#: bashline.c:4555
-#, fuzzy, c-format
+#: bashline.c:4733
+#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "«%s»: αδυναμία αποσÏνδεσης"
#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
-msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για %s "
+msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για %s"
#: braces.c:406
-#, fuzzy, c-format
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για %d στοιχεία "
+msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για %u στοιχεία"
#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για «%s»"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
-msgstr "«%s»: μη έγκυÏο ψευδώνημο"
+msgstr "«%s»: μη έγκυÏο συνώνυμο"
#: builtins/bind.def:122 builtins/bind.def:125
msgid "line editing not enabled"
@@ -151,12 +146,21 @@ msgid ""
" The value of EXPR indicates how many call frames to go back before the\n"
" current one; the top frame is frame 0."
msgstr ""
+"ΕπιστÏέφει το context της κλήσης της Ï„Ïέχουσας υποÏουτίνας.\n"
+" \n"
+" ΧωÏίς EXPR, επιστÏέφει \"$line $filename\". Με EXPR, επιστÏέφει\n"
+" \"$line $subroutine $filename\", αυτή η έξτÏα πληÏοφοÏία μποÏεί να "
+"χÏησιμοποιηθει\n"
+" για να δώσει ένα stack trace.\n"
+" \n"
+" Η τιμή του EXPR δηλώνει πόσα call frames να πας πίσω Ï€Ïιν\n"
+" από το Ï„Ïέχον, το ανώτατο είναι το frame 0."
#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME δεν έχει οÏιστεί"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "πάÏα πολλά οÏίσματα"
@@ -183,7 +187,7 @@ msgstr "Ï€Ïοειδοποίηση: "
msgid "%s: usage: "
msgstr "%s: χÏήση: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: η επιλογή απαιτεί ÏŒÏισμα"
@@ -198,7 +202,7 @@ msgstr "%s: απαιτείται αÏιθμητικό ÏŒÏισμα"
msgid "%s: not found"
msgstr "%s: δεν βÏέθηκε"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: μη έγκυÏη επιλογή"
@@ -208,10 +212,10 @@ msgstr "%s: μη έγκυÏη επιλογή"
msgid "%s: invalid option name"
msgstr "%s: μη έγκυÏο όνομα επιλογής"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
-msgstr "«%s»: μή έγκυÏο αναγνωÏιστικό "
+msgstr "«%s»: μή έγκυÏο αναγνωÏιστικό"
#: builtins/common.c:240
msgid "invalid octal number"
@@ -221,7 +225,7 @@ msgstr "μη έγκυÏος οκταδικός αÏιθμός"
msgid "invalid hex number"
msgstr "μη έγκυÏος εξαδικός αÏιθμός"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "μη έγκυÏος αÏιθμός"
@@ -235,88 +239,93 @@ msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή σήματος"
msgid "`%s': not a pid or valid job spec"
msgstr "«%s»: όχι pid ή έγκυÏο job spec"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: μεταβλητή μόνο για ανάγνωση"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: αδυναμία «unset»"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s εκτός οÏίων"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "ÏŒÏισμα"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s εκτός οÏίων"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: δεν υπάÏχει τέτοια εÏγασία"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
-msgstr "%s: όχι έλεγχος εγασιών "
+msgstr "%s: όχι έλεγχος εγασιών"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "όχι έλεγχος εÏγασιών"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
-msgstr "%s: πεÏιοÏισμένο "
+msgstr "%s: πεÏιοÏισμένο"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "πεÏιοÏισμένο"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
-msgstr "%s: όχι ένα builtin κελÏφους "
+msgstr "%s: όχι ένα builtin κελÏφους"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "σφάλμα εγγÏαφής: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
-msgstr "σφάλμα κατά τον οÏισμό των χαÏακτηÏιστικών τεÏματικοÏ: %s "
+msgstr "σφάλμα κατά τον οÏισμό των χαÏακτηÏιστικών τεÏματικοÏ: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "σφάλμα κατά την λήψη των χαÏακτηÏιστικών τεÏματικοÏ: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: σφάλμα κατά την ανάκτηση Ï„Ïέχοντος καταλόγου: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: ασαφείς Ï€ÏοδιαγÏαφές εÏγασίας"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
-msgstr "βοήθεια μη διαθέσιμη σ' αυτήν την έκδοση "
+msgstr "βοήθεια μη διαθέσιμη σ' αυτήν την έκδοση"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: αδυναμία unset: %s μόνο για ανάγνωση"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: αδυναμία «unset»"
@@ -326,109 +335,109 @@ msgstr "%s: αδυναμία «unset»"
msgid "%s: invalid action name"
msgstr "%s: μη έγκυÏο όνομα ενέÏγειας"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: δεν υπάÏχει Ï€ÏοδιαγÏαφή συμπλήÏωσης"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "Ï€Ïοειδοποίηση: η επιλογή -F μποÏεί να μη δουλέψει όπως πεÏιμένεις"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "Ï€Ïοειδοποίηση: η επιλογή -C ίσως δεν δουλέψει όπως αναμένετε"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
-msgstr "η λειτουÏγία συμπλήÏωσης δεν εκτελείται επί του παÏόντος "
+msgstr "η λειτουÏγία συμπλήÏωσης δεν εκτελείται επί του παÏόντος"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "μποÏεί να χÏησιμοποιηθεί μόνο μέσα σε συνάÏτηση"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr ""
+"η επιλογή «-f» δεν μποÏεί να χÏησιμοποιηθεί για τη δημιουÏγία συναÏτήσεων"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: συνάÏτηση μόνο για ανάγνωση"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
-msgstr "%s: η μεταβλητή αναφοÏάς δεν μποÏεί να είναι πίνακας "
+msgstr "%s: η μεταβλητή αναφοÏάς δεν μποÏεί να είναι πίνακας"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
-msgstr "%s: nameref αυτοαναφοÏά μεταβλητής δεν επιτÏέπεται "
+msgstr "%s: nameref αυτοαναφοÏά μεταβλητής δεν επιτÏέπεται"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
-msgstr "%s: κυκλική αναφοÏά ονόματος "
+msgstr "%s: κυκλική αναφοÏά ονόματος"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
-msgstr "«%s»: μη έγκυÏο όνομα μεταβλητής για όνομα αναφοÏάς "
+msgstr "«%s»: μη έγκυÏο όνομα μεταβλητής για όνομα αναφοÏάς"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr ""
-"η επιλογή «-f» δεν μποÏεί να χÏησιμοποιηθεί για τη δημιουÏγία συναÏτήσεων"
+#: builtins/declare.def:856
+#, c-format
+msgid "%s: cannot destroy array variables in this way"
+msgstr "%s: αδυναμία καταστÏοφής μεταβλητής πίνακα κατ' αυτόν τον Ï„Ïόπο"
-#: builtins/declare.def:526 execute_cmd.c:5986
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
-msgid "%s: readonly function"
-msgstr "%s: συνάÏτηση μόνο για ανάγνωση"
+msgid "%s: cannot convert associative to indexed array"
+msgstr "%s: αδυναμία μετατÏοπής associative πίνακα σε indexed πίνακα"
-#: builtins/declare.def:824
+#: builtins/declare.def:891
#, c-format
msgid "%s: quoted compound array assignment deprecated"
msgstr "%s: η σÏνθετη εκχώÏηση πίνακα αποÏÏίφθηκε"
-#: builtins/declare.def:838
-#, c-format
-msgid "%s: cannot destroy array variables in this way"
-msgstr "%s: αδυναμία καταστÏοφής μεταβλητής πίνακα κατ' αυτόν τον Ï„Ïόπο "
-
-#: builtins/declare.def:845 builtins/read.def:815
-#, c-format
-msgid "%s: cannot convert associative to indexed array"
-msgstr "%s: αδυναμία μετατÏοπής associative πίνακα σε indexed πίνακα "
-
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "δυναμική φόÏτωση μη διαθέσημη"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "αδυναμία ανοίγματος κοινόχÏηστου αντικειμένου %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "αδυναμία εÏÏεσης %s στο κοινόχÏηστο αντικείμενο %s: %s"
-#: builtins/enable.def:388
-#, fuzzy, c-format
+#: builtins/enable.def:422
+#, c-format
msgid "%s: dynamic builtin already loaded"
-msgstr "%s: δεν φοÏτώθηκε δυναμικά"
+msgstr "%s: δυναμικό builtin ήδη φοÏτωμένο"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
-msgstr "Η συνάÏτηση φοÏτώματος του %s επιστÏέφει λάθος (%d): δεν φοÏτώθηκε "
+msgstr "h συνάÏτηση φοÏτώματος του %s επιστÏέφει λάθος (%d): δεν φοÏτώθηκε"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: δεν φοÏτώθηκε δυναμικά"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: αδυναμία διαγÏαφής: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: είναι κατάλογος"
@@ -443,7 +452,7 @@ msgstr "%s: όχι κανονικό αÏχείο"
msgid "%s: file is too large"
msgstr "%s: αÏχείο Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: αδυναμία εκτέλεσης Î´Ï…Î±Î´Î¹ÎºÎ¿Ï Î±Ïχείου"
@@ -493,7 +502,7 @@ msgstr "Ï„Ïέχων"
#: builtins/fg_bg.def:161
#, c-format
msgid "job %d started without job control"
-msgstr "η εÏγασία %d ξεκίνησε χωÏίς έλεγχο εÏγασιών "
+msgstr "η εÏγασία %d ξεκίνησε χωÏίς έλεγχο εÏγασιών"
#: builtins/getopt.c:110
#, c-format
@@ -507,7 +516,7 @@ msgstr "%s: η επιλογή απαιτεί ένα ÏŒÏισμα -- %c\n"
#: builtins/hash.def:91
msgid "hashing disabled"
-msgstr "hashing απενεÏγοποιημένο "
+msgstr "hashing απενεÏγοποιημένο"
#: builtins/hash.def:139
#, c-format
@@ -530,6 +539,8 @@ msgid ""
"'\n"
"\n"
msgstr ""
+"'\n"
+"\n"
#: builtins/help.def:185
#, c-format
@@ -539,12 +550,12 @@ msgstr ""
"ουδεμία βοήθεια ταιÏιάζει με «%s». Δοκιμάστε «help help» ή «man -k %s» ή "
"«info %s»."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: αδυναμία ανοίγματος: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -565,24 +576,24 @@ msgstr ""
"απενεÏγοποιημένη.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "δεν μποÏÏŽ να χÏησιμοποιήσω πεÏισσότεÏες της μιας από τις -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "θέση στο ιστοÏικό"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: μη έγκυÏη χÏονοσήμανση"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
-msgstr ""
+msgstr "%s: η ανάπτυξη του ιστοÏÎ¹ÎºÎ¿Ï ÏƒÏ„Î±Î¼Î¬Ï„Î·ÏƒÎµ"
#: builtins/inlib.def:71
#, c-format
@@ -602,78 +613,78 @@ msgstr "%s: οÏίσματα Ï€Ïέπει να είναι ID διεÏγασιώÎ
msgid "Unknown error"
msgstr "Άγνωστο σφάλμα"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "αναμενόταν έκφÏαση"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: μη δικτοδοτημένος πίνακας"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή πεÏιγÏαφέα αÏχείου"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: μη έγκυÏος πεÏιγÏαφέας αÏχείου: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: μη έγκυÏος αÏιθμός γÏαμμής"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
-msgstr "%s: μη έγκυÏη αÏχή πίνακα "
+msgstr "%s: μη έγκυÏη αÏχή πίνακα"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
-msgstr "%s: μη έγκυÏο κβάντο του callback "
+msgstr "%s: μη έγκυÏο κβάντο του callback"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
-msgstr "όνομα μεταβλητής πίνακα κενό "
+msgstr "όνομα μεταβλητής πίνακα κενό"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "απαιτείται υποστήÏιξη μεταβλητής πίνακος"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
-msgstr "«%s»: απουσία χαÏακτήÏα φοÏμαÏίσματος "
+msgstr "«%s»: απουσία χαÏακτήÏα φοÏμαÏίσματος"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: μη έγκυÏη Ï€ÏοδιαγÏαφή για φοÏμά χÏόνου"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: μη έγκυÏος χαÏακτήÏας φοÏμαÏίσματος"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "Ï€Ïοειδοποίηση: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "Ï€Ïόβλημα ανάλυσης του format: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "απουσία hex ψηφίου για \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "απουσία ψηφίου unicode για \\%c"
@@ -769,25 +780,25 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
-msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή timeout "
+msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή timeout"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "σφάλμα ανάγνωσης: %d: %s"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
-msgstr "«επιστÏοφή» είναι μόνο δυνατή από συνάÏτηση ή sourced script "
+msgstr "«επιστÏοφή» είναι μόνο δυνατή από συνάÏτηση ή sourced script"
#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "«unset» δεν μποÏεί να εφαÏμοστεί συγχÏόνως σε συνάÏτηση και μεταβλητή"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: δεν είναι μεταβλητή πίνακα"
@@ -806,13 +817,13 @@ msgstr "%s: αδυναμία εξαγωγής"
msgid "shift count"
msgstr "αÏιθμός του « shift »"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr ""
"οι επιλογές κελÏφους δεν είναι δυνατόν συγχÏόνως να ενεÏγοποιηθοÏν και "
"απενεÏγοποιηθοÏν"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: μη έγκυÏο όνομα επιλογής"
@@ -828,16 +839,16 @@ msgstr "%s: αÏχείο δεν βÏέθηκε"
#: builtins/suspend.def:102
msgid "cannot suspend"
-msgstr "αναστολή αδÏνατη "
+msgstr "αναστολή αδÏνατη"
#: builtins/suspend.def:112
msgid "cannot suspend a login shell"
-msgstr "ένα κέλυφος σÏνδεσης δεν μποÏεί ν' ανασταλεί "
+msgstr "ένα κέλυφος σÏνδεσης δεν μποÏεί ν' ανασταλεί"
#: builtins/type.def:235
#, c-format
msgid "%s is aliased to `%s'\n"
-msgstr "%s είναι ψευδώνημο του «%s»\n"
+msgstr "%s είναι συνώνυμο του «%s»\n"
#: builtins/type.def:256
#, c-format
@@ -879,16 +890,16 @@ msgstr "%s: μη έγκυÏο ÏŒÏισμα οÏίου"
msgid "`%c': bad command"
msgstr "«%c»: λάθος διαταγή"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: αδÏνατον να πάÏω το ÏŒÏιο: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "ÏŒÏιο"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: αδυναμία μεταβολής οÏίου: %s"
@@ -905,9 +916,9 @@ msgstr "`%c': μη έγκυÏος τελεστής ÏƒÏ…Î¼Î²Î¿Î»Î¹ÎºÎ¿Ï mode"
#: builtins/umask.def:287
#, c-format
msgid "`%c': invalid symbolic mode character"
-msgstr "`%c': μη έγκυÏος χαÏακτήÏας ÏƒÏ…Î¼Î²Î¿Î»Î¹ÎºÎ¿Ï mode "
+msgstr "`%c': μη έγκυÏος χαÏακτήÏας ÏƒÏ…Î¼Î²Î¿Î»Î¹ÎºÎ¿Ï mode"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " γÏαμμή "
@@ -927,172 +938,180 @@ msgstr "ΑκÏÏωση..."
msgid "INFORM: "
msgstr "INFORM: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "Ï€Ïοειδοποίηση: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "σφάλμα άγνωστης εντολής"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "λάθος Ï„Ïπος εντολής"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "bad connector"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "κακό άλμα"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
-msgstr "%s: μεταβλητή χωÏίς σÏνδεση "
+msgstr "%s: μεταβλητή χωÏίς σÏνδεση"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aη αναμονή για δεδομένα έληξε: αυτόματη αποσÏνδεση\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "αδυναμία ανακατεÏθυνσης τυπικής εισόδου από /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c»: μη έγκυÏος χαÏακτήÏας μοÏφοποίησης"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr "execute_coproc: coproc [%d:%s] υφίσταται ακόμη "
+msgstr "execute_coproc: coproc [%d:%s] υφίσταται ακόμη"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "pipe error"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεÏάστηκε (%d) "
+msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεÏάστηκε (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s: μέγιστο επίπεδο φωλιάσματος source ξεπεÏάστηκε (%d) "
+msgstr "%s: μέγιστο επίπεδο φωλιάσματος source ξεπεÏάστηκε (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr "%s: μέγιστο επίπεδο φωλιάσματος συνάÏτησης ξεπεÏάστηκε (%d) "
+msgstr "%s: μέγιστο επίπεδο φωλιάσματος συνάÏτησης ξεπεÏάστηκε (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: πεÏιοÏισμός: δεν μποÏεί να πεÏιέχεται «/» σε όνομα εντολής"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: εντολή δεν βÏέθηκε"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: αδυναμία εκτέλεσης Î´Ï…Î±Î´Î¹ÎºÎ¿Ï Î±Ïχείου"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
-msgstr "%s: %s: κακός interpreter "
+msgstr "%s: %s: κακός interpreter"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: αδυναμία εκτέλεσης Î´Ï…Î±Î´Î¹ÎºÎ¿Ï Î±Ïχείου: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "«%s»: είναι ειδικό builtin"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "αδυναμία αντιγÏαφής του fd %d στον fd %d"
#: expr.c:263
msgid "expression recursion level exceeded"
-msgstr ""
+msgstr "υπέÏβαση του επιπέδου αναδÏομικότητας στην έκφÏαση"
#: expr.c:291
msgid "recursion stack underflow"
-msgstr ""
+msgstr "αÏνητική υπεÏχείλιση στοίβας"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "συντακτικό σφάλμα στην έκφÏαση"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "απόπειÏα ανάθεσης σε μη-μεταβλητή"
-#: expr.c:530
-#, fuzzy
+#: expr.c:531
msgid "syntax error in variable assignment"
-msgstr "συντακτικό σφάλμα στην έκφÏαση"
+msgstr "συντακτικό σφάλμα στην ανάθεση μεταβλητής"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
-msgstr "διαίÏεση διά 0"
+msgstr "διαίÏεση διά του 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
-msgstr "bug: κακό σÏμβολο για expassign "
+msgstr "bug: κακό σÏμβολο για expassign"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "«:» αναμενόταν για μια έκφÏαση υπό συνθήκη"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "εκθέτης μικÏότεÏος του 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "αναγνωÏιστικό αναμενόταν μετά από pre-increment ή pre-decrement "
+msgstr "αναγνωÏιστικό αναμενόταν μετά από pre-increment ή pre-decrement"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "λείπει «)»"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "syntax error: αναμενόταν τελεστέος"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "syntax error: μη έγκυÏος αÏιθμητικός τελεστής"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (το λανθασμένο σÏμβολο είναι \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "μη έγκυÏη αÏιθμητική βάση"
-#: expr.c:1582
-#, fuzzy
+#: expr.c:1587
msgid "invalid integer constant"
-msgstr "%s: μη έγκυÏος αÏιθμός γÏαμμής"
+msgstr "μη έγκυÏη ακέÏαιη σταθεÏά"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "τιμή Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· για βάση"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: σφάλμα έκφÏασης\n"
@@ -1101,7 +1120,7 @@ msgstr "%s: σφάλμα έκφÏασης\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: αδυναμία Ï€Ïόσβασης στο γονικό κατάλογο"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "αδυναμία επανάταξης nodelay mode για fd %d"
@@ -1115,226 +1134,224 @@ msgstr ""
#: input.c:274
#, c-format
msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "save_bash_input: ο buffer υπάÏχει ήδη για νέο fd %d "
+msgstr "save_bash_input: ο buffer υπάÏχει ήδη για νέο fd %d"
#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "η διεÏγασία κλώνος %d εμφανίζεται στην εÏγασία που Ï„Ïέχει %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "διαγÏαφή σταματημένης εγασίας %d με ομάδα %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr "add_process: pid %5ld (%s) μαÏκαÏισμένη ως ακόμα ζωντανή "
+msgstr "add_process: pid %5ld (%s) μαÏκαÏισμένη ως ακόμα ζωντανή"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: δεν υπάÏχει τέτοιο pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Σήμα %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Done"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
-msgstr "σταματημένο"
+msgstr "Sταματημένο"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
-msgstr "σταματημένο(%s)"
+msgstr "Σταματημένο(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
-msgstr "υπό εκτέλεση"
+msgstr "Υπό εκτέλεση"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Done(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Έξοδος %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Άγνωστη κατάσταση"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(core dumped) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "child setpgid (%ld to %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: διεÏγασία %ld δεν αποτελεί θυγατÏική Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… κελÏφους"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Δεν υπάÏχουν στοιχεία για διεÏγασία %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: η εÏγασία %d είναι σταματημένη"
-#: jobs.c:3564
-#, fuzzy, c-format
+#: jobs.c:3551
+#, c-format
msgid "%s: no current jobs"
msgstr "%s: δεν υπάÏχει τέτοια εÏγασία"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: η εÏγασία τεÏματίστηκε"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: εÏγασία %d ήδη στο παÏασκήνιο"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr ""
-"waitchld: ενεÏγοποίηση WNOHANG ώστε ν' αποφευχθεί οÏιστικό μπλοκάÏισμα "
+msgstr "waitchld: ενεÏγοποίηση WNOHANG ώστε ν' αποφευχθεί οÏιστικό μπλοκάÏισμα"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: γÏαμμή %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(Ï„ÏŽÏα wd: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: αποτυχία getpgrp"
-#: jobs.c:4447
-#, fuzzy
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: setpgid"
+msgstr "initialize_job_control: όχι έλεγχος εÏγασιών στο παÏασκήνιο"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
-msgstr ""
+msgstr "initialize_job_control: line discipline"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
-msgstr "αδυναμία ÏÏθμισης της ομάδας της διεÏγασίας του τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï (%d) "
+msgstr "αδυναμία ÏÏθμισης της ομάδας της διεÏγασίας του τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "δεν υπάÏχει job control σ'αυτό το κέλυφος"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: αποτυχημένη assertion: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
+"\r\n"
+"malloc: %s:%d: αποτυχιμένη επιβεβαίωση\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "άγνωστο"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
-msgstr ""
+msgstr "malloc: μπλοκ στην ελεÏθεÏη λίστα clobbered"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
-msgstr "free: κλήθηκε με ÏŒÏισμα ήδη ελευθεÏωμένο μπλοκ "
+msgstr "free: κλήθηκε με ÏŒÏισμα ήδη ελευθεÏωμένο μπλοκ"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
-msgstr "free: κλήθηκε με ÏŒÏισμα ένα μη εκχωÏημένο μπλοκ "
+msgstr "free: κλήθηκε με ÏŒÏισμα ένα μη εκχωÏημένο μπλοκ"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
-msgstr "free: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου "
+msgstr "free: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου"
-#: lib/malloc/malloc.c:1001
-#, fuzzy
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
-msgstr "free: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου "
+msgstr "free: εντοπίστηκε αÏνητική υπεÏχείληση, magic8 corrupted"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
-msgstr "free: τα μεγέθη των κομματιών στην αÏχή και το τέλος διαφέÏουν "
+msgstr "free: τα μεγέθη των κομματιών στην αÏχή και το τέλος διαφέÏουν"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
-msgstr "realloc: κλήθηκε με ÏŒÏισμα ένα μη εκχωÏημένο μπλοκ "
+msgstr "realloc: κλήθηκε με ÏŒÏισμα ένα μη εκχωÏημένο μπλοκ"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου"
-#: lib/malloc/malloc.c:1141
-#, fuzzy
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
-msgstr "realloc: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου"
+msgstr "realloc: εντοπίστηκε αÏνητική υπεÏχείληση, magic8 αλλειωμένο"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
-msgstr "realloc: μεγέθη κομματιών σ' αÏχή και τέλος διαφέÏουν "
+msgstr "realloc: μεγέθη κομματιών σ' αÏχή και τέλος διαφέÏουν"
#: lib/malloc/table.c:191
#, c-format
@@ -1368,28 +1385,28 @@ msgstr "%s: μη έγκυÏη υπηÏεσία"
#: lib/sh/netopen.c:306
#, c-format
msgid "%s: bad network path specification"
-msgstr "%s: κακιά Ï€ÏοδιαγÏαφή διαδÏομής δικτÏου "
+msgstr "%s: κακιά Ï€ÏοδιαγÏαφή διαδÏομής δικτÏου"
#: lib/sh/netopen.c:347
msgid "network operations not supported"
msgstr "μη υποστηÏιζόμενες δικτιακές υπηÏεσίες"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s): %s"
@@ -1407,141 +1424,141 @@ msgstr "Έχεις νέο μήνυμα στο $_"
msgid "The mail in %s has been read\n"
msgstr "Το μήνυμα στο %s διαβάστηκε\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "syntax error: απαιτείται αÏιθμητική έκφÏαση"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "συντακτικό σφάλμα: «((%s))»"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: ο Ï„Ïπος οδηγίας δεν είναι σωστός %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
"here-document στη γÏαμμή %d με ÏŒÏιο το τέλος του αÏχείου (αντί του «%s»)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: η οδηγία της ανακατεÏθυνσης «%d» εκτός οÏίων"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
"shell_getc: shell_input_line_size (%zu) υπεÏβαίνει το SIZE_MAX (%lu): γÏαμμή "
-"κόπηκε "
+"κόπηκε"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
-msgstr "ο μέγιστος αÏιθμός here-document ξεπεÏάστηκε "
+msgstr "ο μέγιστος αÏιθμός here-document ξεπεÏάστηκε"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "μη αναμενόμενο EOF κατά την αναζήτηση «%c»"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "μη αναμενόμενο EOF ενώ έψαχνα για «]]»"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntax error in conditional expression: μη αναμενόμενο σÏμβολο «%s»"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
-msgstr "συντακτικό σφάλμα σ' έκφÏαση υπό συνθήκη "
+msgstr "συντακτικό σφάλμα σ' έκφÏαση υπό συνθήκη"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "μη αναμενόμενο σÏμβολο «%s», αναμενόταν «)»"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "αναμενόταν «)»"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
-msgstr "απÏοσδόκητο ÏŒÏισμα «%s» στον υπό αίÏεση μοναδιαίο τελεστή "
+msgstr "απÏοσδόκητο ÏŒÏισμα «%s» στον υπό αίÏεση μοναδιαίο τελεστή"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
-msgstr "απÏοσδόκητο ÏŒÏισμα για τον μοναδιαίο τελεστή "
+msgstr "απÏοσδόκητο ÏŒÏισμα για τον μοναδιαίο τελεστή"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "απÏοσδόκητο σÏμβολο «%s» βÏέθηκε αντί για δυαδικό τελεστή υπό αίÏεση "
+msgstr "απÏοσδόκητο σÏμβολο «%s» βÏέθηκε αντί για δυαδικό τελεστή υπό αίÏεση"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
-msgstr "αναμενόταν δυαδικός τελεστής υπό αίÏεση "
+msgstr "αναμενόταν δυαδικός τελεστής υπό αίÏεση"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "απÏοσδόκητο ÏŒÏισμα «%s» για δυαδικό τελεστή υπό αίÏεση "
+msgstr "απÏοσδόκητο ÏŒÏισμα «%s» για δυαδικό τελεστή υπό αίÏεση"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
-msgstr "απÏοσδόκητο ÏŒÏισμα για δυαδικό τελεστή υπό αίÏεση "
+msgstr "απÏοσδόκητο ÏŒÏισμα για δυαδικό τελεστή υπό αίÏεση"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
-msgstr "απÏοσδόκητο σÏμβολο «%c» σε εντολή υπό αίÏεση "
+msgstr "απÏοσδόκητο σÏμβολο «%c» σε εντολή υπό αίÏεση"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
-msgstr "απÏοσδόκητο σÏμβολο «%s» σε εντολή υπό αίÏεση "
+msgstr "απÏοσδόκητο σÏμβολο «%s» σε εντολή υπό αίÏεση"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
-msgstr "απÏοσδόκητο σÏμβολο %d σε εντολή υπό αίÏεση "
+msgstr "απÏοσδόκητο σÏμβολο %d σε εντολή υπό αίÏεση"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "συντακτικό σφάλμα κοντά στο μη αναμενόμενο σÏμβολο «%s»"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "συντακτικό σφάλμα κοντά σε «%s»"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "syntax error: μη αναμενόμενο τέλος αÏχείου"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "συντακτικό σφάλμα"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "ΧÏήση «%s» για έξοδο από το κέλυφος.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "μη αναμενόμενο EOF ενώ έψαχνα «)»"
@@ -1563,7 +1580,7 @@ msgstr "progcomp_insert: %s: NULL COMPSPEC"
#: print_cmd.c:302
#, c-format
msgid "print_command: bad connector `%d'"
-msgstr ""
+msgstr "print_command: λάθος connector «%d»"
#: print_cmd.c:375
#, c-format
@@ -1579,94 +1596,96 @@ msgstr "xtrace_set: NULL file pointer"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: μη έγκυÏη μοÏφή χαÏακτήÏα"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "πεÏιγÏαφέας αÏχείου εκτός οÏίων"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: ασαφής ανακατεÏθυνση"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: αδυναμία εγγÏαφής πάνω σε υπάÏχον αÏχείο"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricted: αδυναμία ανακατεÏθυνσης εξόδου"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "αδυναμία δημιουÏγίας Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου για here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: αδυναμία ανάθεσης fd σε μεταβλητή"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port δεν υποστηÏίζεται χωÏίς δικτÏωση"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
-msgstr ""
+msgstr "redirection error: ντουμπλάÏισμα fd αδÏνατον"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "δεν μπόÏεσα να βÏω /tmp, παÏακαλώ να τον δημιουÏγήσετε!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp Ï€Ïέπει να είναι ένα έγκυÏο όνομα αÏχείου"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
+"κατάσταση βελτιωμένης εμφάνισης δεδομένων παÏακάμπτεται στο "
+"αλληλοεπιδÏαστικό κέλυφος"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: μη έγκυÏη επιλογή"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
-msgstr "αδυναμία ÏÏθμισης uid σε %d: effective uid %d "
+msgstr "αδυναμία ÏÏθμισης uid σε %d: effective uid %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
-msgstr "αδυναμί ÏÏθμισης gid σε %d: effective gid %d "
+msgstr "αδυναμί ÏÏθμισης gid σε %d: effective gid %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
-msgstr "αδυναμία εκκίνησης του debugger, debugging απενεÏγοποιημένο "
+msgstr "αδυναμία εκκίνησης του debugger, debugging απενεÏγοποιημένο"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: είναι κατάλογος"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Δεν έχω όνομα!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, έκδοση %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1675,314 +1694,314 @@ msgstr ""
"ΧÏήση:\t%s [μακÏά επιλογή GNU] [επιλογή] ...\n"
"\t%s [μακÏά επιλογή GNU] [επιλοη] script-file ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "ΜακÏές επιλογές GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Επιλογές κελÏφους:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD ή -c εντολή ή -O shopt_option\t\t(invocation only)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ή επιλογή -o\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"ΠληκτÏολόγησε «%s -c \"help set\"» για πληÏοφοÏίες επί των επιλογών "
"κελÏφους.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"ΠληκτÏολόγησε «%s -c help» για πεÏισσότεÏες πληÏοφοÏίες σχετικά με τις "
"ενσωματομένες στο κέλυφος εντολές.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "ΧÏησιμοποίησε την εντολή «bashbug» για αναφοÏά σφαλμάτων.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "σελίδα του bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: μη έγκυÏη λειτουÏγία"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
-msgstr "ΨεÏτικο σήματος "
+msgstr "ΨεÏτικο σήμα"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Διακοπή"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Quit"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Μη έγκυÏη οδηγία"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
-msgstr "οδηγία ABORT"
+msgstr "Οδηγία ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
-msgstr "οδηγία EMT"
+msgstr "Οδηγία EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "ΕξαίÏεση κινητής υποδιαστολής"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Killed"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Bus error"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Σφάλμα κατάτμησης"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
-msgstr "Κακή κλήση συστήματος "
+msgstr "Κακή κλήση συστήματος"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Σπασμένη σωλήνα"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Ρολόι συναγεÏμοÏ"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
-msgstr "τεÏματισμός"
+msgstr "ΤεÏματισμός"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Επείγουσα κατάσταση IO"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Σταματημένο (σήμα)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Συνέχεια"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Child death or stop"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Σταματημένο (είσοδος tty)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Σταματημένο (έξοδος tty)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O ready"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "ÏŒÏιο CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "ÎŒÏιο αÏχείου"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profile)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "ΠαÏάθυÏο άλλαξε"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
-msgstr ""
+msgstr "Κλείδωμα καταγÏαφής"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Σήμα χÏήστη 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
-msgstr "Σήμα χÏήστη 2 "
+msgstr "Σήμα χÏήστη 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Δεδομένα εισόδου HFT στην αναμονή"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "επικείμενη έλλειψη ÏεÏματος"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "επικείμενη πτώση συστήματος"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "μετανάστευση διεÏγασίας σε άλλη CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "Ï€ÏογÏαμματιστικό σφάλμα"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
-msgstr ""
+msgstr "Κατάσταση επιτήÏησης HFT δόθηκε"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
-msgstr ""
+msgstr "Κατάσταση επιτήÏησης HFT αναιÏέθηκε"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
-msgstr ""
+msgstr "Στιγμιότυπο ήχου HFT πεÏατώθηκε."
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Αίτηση για πληÏοφοÏίες"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Άγνωστο σήμα #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "κακή αντικατάσταση: όχι «%s» που κλείνει στο %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
-msgstr "%s: αδυναμία εκχώÏησης λίστας σε στοιχείο του πίνακα "
+msgstr "%s: αδυναμία εκχώÏησης λίστας σε στοιχείο του πίνακα"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
-msgstr "αδυναμία δημιουÏγίας σωλήνα για αντικατάσταση διεÏγασίας "
+msgstr "αδυναμία δημιουÏγίας σωλήνα για αντικατάσταση διεÏγασίας"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
-msgstr "αδυναμία δημιουÏγίας θυγατÏικής για αντικατάσταση διεÏγασίας "
+msgstr "αδυναμία δημιουÏγίας θυγατÏικής για αντικατάσταση διεÏγασίας"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "αδυναμία ανοίγματοε επώνυμης σωλήνας %s Ï€Ïος ανάγνωση"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "αδυναμία ανοίγματος επώνυμης σωλήνας %s Ï€Ïος εγγÏαφή"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "αδυναμία αναπαÏαγωγής named pipe %s ως fd %d "
+msgstr "αδυναμία αναπαÏαγωγής named pipe %s ως fd %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
-msgstr "αντικατάσταση εντολής: null byte αγνοήθηκε στην είσοδο "
+msgstr "αντικατάσταση εντολής: null byte αγνοήθηκε στην είσοδο"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
-msgstr "αδυναμία δημιουÏγίας σωλήνα για αντικατάσταση εντολής "
+msgstr "αδυναμία δημιουÏγίας σωλήνα για αντικατάσταση εντολής"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
-msgstr "αδυναμία δημιουÏγίας θυγατÏικής για αντικατάσταση εντολής "
+msgstr "αδυναμία δημιουÏγίας θυγατÏικής για αντικατάσταση εντολής"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "command_substitute: αδυναμία αναπαÏαγωγής σωλήνα ως fd 1 "
+msgstr "command_substitute: αδυναμία αναπαÏαγωγής σωλήνα ως fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
-msgstr "%s: μη έγκυÏο όνομα μεταβλητής ως όνομα αναφοÏάς "
+msgstr "%s: μη έγκυÏο όνομα μεταβλητής ως όνομα αναφοÏάς"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
-msgstr "%s: μη έγκυÏη έμμεση επέκταση "
+msgstr "%s: μη έγκυÏη έμμεση επέκταση"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: μη έγκυÏο όνομα μεταβλητής"
-#: subst.c:7256
-#, fuzzy, c-format
+#: subst.c:7478
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: παÏάμετÏος κενή ή δεν έχει οÏιστεί"
+msgstr "%s: παÏάμετÏος δεν έχει οÏιστεί"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: παÏάμετÏος κενή ή δεν έχει οÏιστεί"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: έκφÏαση αÏνητική < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: κακή αντικατάσταση"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: αδÏνατη ανάθεση κατ' αυτόν τον Ï„Ïόπο"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -1990,12 +2009,12 @@ msgstr ""
"μελλοντικές εκδόσεις του κελÏφους θα επιβάλουν την αποτίμηση ως μια "
"αÏιθμητική αντικατάσταση"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "κακή αντικατάσταση: δεν υπάÏχει «`» που κλείνει στο %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "χωÏίς ταίÏιασμα: %s"
@@ -2018,126 +2037,131 @@ msgstr "αναμενόταν «)»"
msgid "`)' expected, found %s"
msgstr "σναμενόταν «)», βÏέθηκε %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: αναμενόταν δυαδικός τελεστής"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
-msgstr "%s: αναμενόταν μοναδιαίος τελεστής "
+msgstr "%s: αναμενόταν μοναδιαίος τελεστής"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "αποÏσα «]»"
-#: test.c:899
-#, fuzzy, c-format
+#: test.c:914
+#, c-format
msgid "syntax error: `%s' unexpected"
-msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»"
+msgstr "συντακτικό σφάλμα: δεν αναμενόταν «%s»"
#: trap.c:220
msgid "invalid signal number"
msgstr "μη έγκυÏος αÏιθμός σήματος"
-#: trap.c:325
-#, fuzzy, c-format
+#: trap.c:323
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεÏάστηκε (%d) "
+msgstr "trap handler: μέγιστο επίπεδο φωλιάσματος ξεπεÏάστηκε (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr "run_pending_traps: κακή τιμή στην trap_list[%d]: %p "
+msgstr "run_pending_traps: κακή τιμή στην trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
"run_pending_traps: ο διαχειÏιστής σήματος είναι ο SIG_DFL, στέλνει %d (%s) "
-"σε μένα "
+"σε μένα"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: κακό σήμα %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "σφάλμα κατά την εισαγωγή του οÏÎ¹ÏƒÎ¼Î¿Ï Ï„Î·Ï‚ συνάÏτησης «%s»"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "επίπεδο κελÏφους (%d) Ï€Î¿Î»Ï Ï…ÏˆÎ·Î»ÏŒ, επαναφοÏά στο 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: no function context at current scope"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
-msgstr "%s: η μεταβλητή δεν μποÏεί να δεχτεί τιμή "
+msgstr "%s: η μεταβλητή δεν μποÏεί να δεχτεί τιμή"
+
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
-#: variables.c:3475
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s έχει κενό exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "ο χαÏακτήÏας %d δεν έίναι έγκυÏος στην exportstr για %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "απουσία «=» στην exportstr για %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: head of shell_variables not a function context"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: no global_variables context"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: head of shell_variables not a temporary environment scope"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: αδυναμία ανοίγματος ως ΑΡΧΕΙΟ"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: μη έγκυÏη τιμή για trace file descriptor"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
-msgstr "%s: %s: τιμή συμβατότητας εκτός οÏίου "
+msgstr "%s: %s: τιμή συμβατότητας εκτός οÏίου"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2226,12 +2250,16 @@ msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
#: builtins.c:82
@@ -2255,12 +2283,10 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-#, fuzzy
msgid "getopts optstring name [arg ...]"
-msgstr "getopts optstring name [arg]"
+msgstr "getopts optstring όνομα [arg]"
#: builtins.c:98
-#, fuzzy
msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
@@ -2333,7 +2359,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
#: builtins.c:144
@@ -2381,7 +2408,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] name [name ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
#: builtins.c:174
@@ -2389,7 +2417,6 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
-#, fuzzy
msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-n] [id ...]"
@@ -2426,11 +2453,13 @@ msgstr ""
"COMMANDS; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while COMMANDS; do COMMANDS; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until COMMANDS; do COMMANDS; done"
#: builtins.c:200
@@ -2482,7 +2511,6 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] format [οÏίσματα]"
#: builtins.c:231
-#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
@@ -2493,7 +2521,6 @@ msgstr ""
"suffix] [name ...]"
#: builtins.c:235
-#, fuzzy
msgid ""
"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
@@ -2502,7 +2529,6 @@ msgstr ""
"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
msgstr "compopt [-o|+o option] [-DE] [name ...]"
@@ -2515,7 +2541,6 @@ msgstr ""
"callback] [-c quantum] [array]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
@@ -2552,12 +2577,12 @@ msgid ""
" \n"
" Return success unless a NAME is not an existing alias."
msgstr ""
-"ΑφαίÏεση κάθε ΟÎΟΜΑτος από τη λίστα των καθοÏισμένων ψευδωνÏμων.\n"
+"ΑφαίÏεση κάθε ΟÎΟΜΑτος από τη λίστα των καθοÏισμένων συνωνÏμων.\n"
" \n"
" Επιλογές:\n"
-" -a\tαφαίÏεση όλων των ψευδωνÏμων.\n"
+" -a\tαφαίÏεση όλων των συνωνÏμων.\n"
" \n"
-" ΕπιστÏέφει επιτυχία εκτός αν το ΟÎΟΜΑ δεν είναι υπαÏκτό ψευδώνυμο."
+" ΕπιστÏέφει επιτυχία εκτός αν το ΟÎΟΜΑ δεν είναι υπαÏκτό συνώνυμο."
#: builtins.c:291
msgid ""
@@ -2860,7 +2885,6 @@ msgid ""
msgstr ""
#: builtins.c:557
-#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2911,7 +2935,7 @@ msgstr ""
" -E\tÏητή απενεÏγοποίηση εÏμηνείας του backslash διαφυγής\n"
" \n"
" η «echo» εÏμηνεÏει τους επόμενους backslash-escaped χαÏακτήÏες:\n"
-" \\a\tσυναγεÏμός (κουδοÏνι)\n"
+" \a\tσυναγεÏμός (κουδοÏνι)\n"
" \\b\tbackspace\n"
" \\c\tκαταστέλλει την παÏαπέÏα έξοδο\n"
" \\e\tχαÏακτήÏας διαφυγής\n"
@@ -2928,7 +2952,7 @@ msgstr ""
" \t\tμποÏεί να είναι ένα ή δÏο εξαδικά ψηφία\n"
" \n"
" Κατάσταση εξόδου:\n"
-" ΕπιστÏέφει επιτυχία εκτός αν συμβεί λάθος εγγÏαφής. "
+" ΕπιστÏέφει επιτυχία εκτός αν συμβεί λάθος εγγÏαφής."
#: builtins.c:597
msgid ""
@@ -2950,7 +2974,7 @@ msgstr ""
" -n\tδεν επισυνάπτεις μια νέα γÏαμμή\n"
" \n"
" Κατάσταση εξόδου:\n"
-" ΕπιστÏέφει επιτυχία εκτός αν συμβεί σφάλμα. "
+" ΕπιστÏέφει επιτυχία εκτός αν συμβεί σφάλμα."
#: builtins.c:612
msgid ""
@@ -2998,7 +3022,7 @@ msgstr ""
" \n"
" Κατάσταση εξόδου:\n"
" ΕπιστÏέφει τον ίδιο κωδικό εξόδου με την εντολή ή επιτυχία αν ή εντολή "
-"είναι κενή. "
+"είναι κενή."
#: builtins.c:652
msgid ""
@@ -3089,7 +3113,7 @@ msgstr ""
" \n"
" ΤεÏματίζει ένα κέλυφος σÏνδεσης με κατάσταση εξόδου N. ΕπιστÏέφει σφάλμα "
"αν δεν εκτελείται\n"
-" σ' ένα κέλυφος σÏνδεσης. "
+" σ' ένα κέλυφος σÏνδεσης."
#: builtins.c:734
msgid ""
@@ -3384,7 +3408,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3425,7 +3451,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3437,7 +3463,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3523,7 +3549,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3545,7 +3571,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3564,7 +3590,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3585,7 +3611,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3601,9 +3627,9 @@ msgstr ""
" δεν δίνεται, υποτίθεται πως είναι 1.\n"
" \n"
" Κατάσταση εξόδου:\n"
-" ΕπιστÏέφει επιτυχία εκτός αν N είναι αÏνητικός ή μαγαλÏτεÏο; από $#. "
+" ΕπιστÏέφει επιτυχία εκτός αν N είναι αÏνητικός ή μαγαλÏτεÏο; από $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3617,7 +3643,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3631,7 +3657,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3733,7 +3759,7 @@ msgstr ""
" -c ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι ειδικό αÏχείο χαÏακτήÏων.\n"
" -d ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι κατάλογος.\n"
" -e ΑΡΧΕΙΟ Αληθής αν το αÏχείο υπάÏχει.\n"
-" -f ΑΡΧΕΙΟ Αληθής αν το αÏχείο υπάÏχει και είναι κανονικό "
+" -f ΑΡΧΕΙΟ Αληθής αν το αÏχείο υπάÏχει και είναι κανονικό "
"αÏχείο.\n"
" -g ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι «set-group-id».\n"
" -h ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι συμβολικός σÏνδεσμος.\n"
@@ -3743,8 +3769,7 @@ msgstr ""
" -r ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι αναγνώσιμο από εσάς.\n"
" -s ΑΡΧΕΙΟ Αληθής αν το αÏχείο υπάÏχει και δεν είναι κενό.\n"
" -S ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι ένα socket.\n"
-" -t FD Αληθής αν ο FD είναι ανοιγμένος σ' ενα "
-"τεÏματικό.\n"
+" -t FD Αληθής αν ο FD είναι ανοιγμένος σ' ενα τεÏματικό.\n"
" -u ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι «set-user-id».\n"
" -w ΑΡΧΕΙΟ Αληθής αν το αÏχείο εγγÏάψιμο από εσάς.\n"
" -x ΑΡΧΕΙΟ Αληθής αν το αÏχείο είναι εκτελέσιμο από εσάς.\n"
@@ -3806,7 +3831,7 @@ msgstr ""
"αποτιμάται σε\n"
" ψευδές ή αν δίδεται ένα μη έγκυÏο ÏŒÏισμα."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3818,7 +3843,7 @@ msgstr ""
" Συνώνυμο με το «test» builtin, αλλά το τελευταίο ÏŒÏισμα Ï€Ïέπει\n"
"να είναι ένα «]», ώστε να κλείνει το αντίστοιχο «[»."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -3838,7 +3863,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" Πάντα επιτυχία."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3882,7 +3907,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -3912,7 +3937,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3962,7 +3987,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3980,7 +4005,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4012,7 +4037,7 @@ msgid ""
" children."
msgstr ""
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4027,7 +4052,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4050,7 +4075,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" ΕπιστÏέφει την κατάσταση της τελευταίας εκτελεσμένης εντολής."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4080,7 +4105,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" ΕπιστÏέφει τη κατάσταση της τελευταίας εκτελεσμένης εντολής."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4100,7 +4125,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4116,7 +4141,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4127,7 +4152,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4148,29 +4173,49 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"Ομαδοποιεί εντολές σαν να είναι μία.\n"
+" \n"
+" ΤÏέχει ένα σÏνολο εντολών μιας ομάδας. Αυτό είναι ένας Ï„Ïόπος "
+"ανακατεÏθυνσης\n"
+" ενός συνόλου εντολών.\n"
+" \n"
+" Κατάσταση εξόδου:\n"
+" ΕπιστÏέφει την κατάσταση της τελευταίας εντολής που εκτελέστηκε."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"Ομαδοποιεί εντολές σαν να είναι μία.\n"
+" \n"
+" ΤÏέχει ένα σÏνολο εντολών μιας ομάδας. Αυτό είναι ένας Ï„Ïόπος "
+"ανακατεÏθυνσης\n"
+" ενός συνόλου εντολών.\n"
+" \n"
+" Κατάσταση εξόδου:\n"
+" ΕπιστÏέφει την κατάσταση της τελευταίας εντολής που εκτελέστηκε."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4183,7 +4228,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4197,7 +4242,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4207,8 +4252,16 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"Ομαδοποιεί εντολές σαν να είναι μία.\n"
+" \n"
+" ΤÏέχει ένα σÏνολο εντολών μιας ομάδας. Αυτό είναι ένας Ï„Ïόπος "
+"ανακατεÏθυνσης\n"
+" ενός συνόλου εντολών.\n"
+" \n"
+" Κατάσταση εξόδου:\n"
+" ΕπιστÏέφει την κατάσταση της τελευταίας εντολής που εκτελέστηκε."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4222,8 +4275,7 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1726
-#, fuzzy
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4235,13 +4287,13 @@ msgid ""
msgstr ""
"Αποτίμηση αÏιθμητικής εκφÏάσεως.\n"
" \n"
-" Η ΕΚΦΡΑΣΗ αποτιμάται σÏμφωνα με τους αÏιθμητικοÏÏ‚ κανόνες.\n"
-" ΙσοδÏναμο με το \"let ΕΚΦΡΑΣΗ\".\n"
+" Η ΕΚΦΡΑΣΗ αποτιμάται σÏμφωνα με τους κανόνες της αÏιθμητικής.\n"
+" ΙσοδÏναμο με το `let \"ΕΚΦΡΑΣΗ\"'.\n"
" \n"
" Κωδικός εξόδου:\n"
" ΕπιστÏέφει 1 αν η ΕΚΦΡΑΣΗ αποτιμάται σε 0, αλλιώς επιστÏέφει 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4269,7 +4321,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4323,7 +4375,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4354,7 +4406,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4381,7 +4433,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -4410,7 +4462,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4430,7 +4482,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4453,6 +4505,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -4469,7 +4523,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4500,7 +4554,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4513,7 +4567,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4545,7 +4599,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4587,7 +4641,7 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -4595,19 +4649,8 @@ msgid ""
msgstr ""
"Διαβάζει γÏαμμές από αÏχείο σε μεταβλητή Ï„Ïπου πίνακα.\n"
" \n"
-" Συνώνημο του «mapfile»."
+" Συνώνυμο του «mapfile»."
-#~ msgid ""
-#~ "Returns the context of the current subroutine call.\n"
-#~ " \n"
-#~ " Without EXPR, returns "
-#~ msgstr ""
-#~ "ΕπιστÏέφει το context της κλήσης της Ï„Ïέχουσας υποÏουτίνας.\n"
-#~ " \n"
-#~ " ΧωÏίς EXPR, επιστÏέφει "
-
-#~ msgid "add_process: process %5ld (%s) in the_pipeline"
-#~ msgstr "add_process: διεÏγασία %5ld (%s) στη the_pipeline "
-
-#~ msgid "Unknown Signal #"
-#~ msgstr "Άγνωστο σήμα #"
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: μη έγκυÏο κλειδί associative πίνακα"
diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo
index 15cd5f1f..21505e33 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 edfa3c7d..6b388ff2 100644
--- a/po/en@boldquot.po
+++ b/po/en@boldquot.po
@@ -32,7 +32,7 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU bash 5.1-rc3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2020-11-28 12:51-0500\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -46,57 +46,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "bad array subscript"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: removing nameref attribute"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: cannot convert indexed to associative array"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: invalid associative array key"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: cannot assign to non-numeric index"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: must use subscript when assigning associative array"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: cannot create: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: cannot find keymap for command"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: first non-whitespace character is not ‘\"’"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "no closing ‘%c’ in %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: missing colon separator"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "‘%s’: cannot unbind in command keymap"
@@ -116,7 +111,7 @@ msgstr "brace expansion: failed to allocate memory for %u elements"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace expansion: failed to allocate memory for ‘%s’"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "‘%s’: invalid alias name"
@@ -188,7 +183,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME not set"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "too many arguments"
@@ -215,7 +210,7 @@ msgstr "warning: "
msgid "%s: usage: "
msgstr "%s: usage: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: option requires an argument"
@@ -230,7 +225,7 @@ msgstr "%s: numeric argument required"
msgid "%s: not found"
msgstr "%s: not found"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: invalid option"
@@ -240,7 +235,7 @@ msgstr "%s: invalid option"
msgid "%s: invalid option name"
msgstr "%s: invalid option name"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "‘%s’: not a valid identifier"
@@ -253,7 +248,7 @@ msgstr "invalid octal number"
msgid "invalid hex number"
msgstr "invalid hex number"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "invalid number"
@@ -267,88 +262,93 @@ msgstr "%s: invalid signal specification"
msgid "`%s': not a pid or valid job spec"
msgstr "‘%s’: not a pid or valid job spec"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: readonly variable"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: cannot unset"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s out of range"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s out of range"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: no such job"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: no job control"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "no job control"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: restricted"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "restricted"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: not a shell builtin"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "write error: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "error setting terminal attributes: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "error getting terminal attributes: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: error retrieving current directory: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: ambiguous job spec"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "help not available in this version"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: cannot unset: readonly %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: cannot unset"
@@ -358,108 +358,108 @@ msgstr "%s: cannot unset"
msgid "%s: invalid action name"
msgstr "%s: invalid action name"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: no completion specification"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "warning: -F option may not work as you expect"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "warning: -C option may not work as you expect"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "not currently executing completion function"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "can only be used in a function"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "cannot use ‘-f’ to make functions"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: readonly function"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: reference variable cannot be an array"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: nameref variable self references not allowed"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: circular name reference"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "‘%s’: invalid variable name for name reference"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "cannot use ‘-f’ to make functions"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: readonly function"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: quoted compound array assignment deprecated"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: cannot destroy array variables in this way"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: cannot convert associative to indexed array"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: quoted compound array assignment deprecated"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynamic loading not available"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "cannot open shared object %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "cannot find %s in shared object %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: dynamic builtin already loaded"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "load function for %s returns failure (%d): not loaded"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: not dynamically loaded"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: cannot delete: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: is a directory"
@@ -474,7 +474,7 @@ msgstr "%s: not a regular file"
msgid "%s: file is too large"
msgstr "%s: file is too large"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: cannot execute binary file"
@@ -572,12 +572,12 @@ msgstr ""
"no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ "
"or ‘info %s’."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: cannot open: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -598,21 +598,21 @@ msgstr ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "cannot use more than one of -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "history position"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: invalid timestamp"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: history expansion failed"
@@ -635,78 +635,78 @@ msgstr "%s: arguments must be process or job IDs"
msgid "Unknown error"
msgstr "Unknown error"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "expression expected"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: not an indexed array"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: invalid file descriptor specification"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: invalid file descriptor: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: invalid line count"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: invalid array origin"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: invalid callback quantum"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "empty array variable name"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "array variable support required"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "‘%s’: missing format character"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "‘%c’: invalid time format specification"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "‘%c’: invalid format character"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "warning: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "format parsing problem: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "missing hex digit for \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "missing unicode digit for \\%c"
@@ -863,12 +863,12 @@ msgstr ""
" \n"
" The ‘dirs’ builtin displays the directory stack."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: invalid timeout specification"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "read error: %d: %s"
@@ -881,7 +881,7 @@ msgstr "can only ‘return’ from a function or sourced script"
msgid "cannot simultaneously unset a function and a variable"
msgstr "cannot simultaneously unset a function and a variable"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: not an array variable"
@@ -900,11 +900,11 @@ msgstr "%s: cannot export"
msgid "shift count"
msgstr "shift count"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "cannot set and unset shell options simultaneously"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: invalid shell option name"
@@ -971,16 +971,16 @@ msgstr "%s: invalid limit argument"
msgid "`%c': bad command"
msgstr "‘%c’: bad command"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: cannot get limit: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: cannot modify limit: %s"
@@ -999,7 +999,7 @@ msgstr "‘%c’: invalid symbolic mode operator"
msgid "`%c': invalid symbolic mode character"
msgstr "‘%c’: invalid symbolic mode character"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " line "
@@ -1019,96 +1019,106 @@ msgstr "Aborting..."
msgid "INFORM: "
msgstr "INFORM: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "warning: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "unknown command error"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "bad command type"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "bad connector"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "bad jump"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: unbound variable"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atimed out waiting for input: auto-logout\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "cannot redirect standard input from /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: ‘%c’: invalid format character"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] still exists"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "pipe error"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: maximum eval nesting level exceeded (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximum source nesting level exceeded (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximum function nesting level exceeded (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restricted: cannot specify ‘/’ in command names"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: command not found"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: cannot execute binary file"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: bad interpreter"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: cannot execute binary file: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "‘%s’: is a special builtin"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "cannot duplicate fd %d to fd %d"
@@ -1121,68 +1131,68 @@ msgstr "expression recursion level exceeded"
msgid "recursion stack underflow"
msgstr "recursion stack underflow"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "syntax error in expression"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "attempted assignment to non-variable"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "syntax error in variable assignment"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "division by 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "bug: bad expassign token"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "‘:’ expected for conditional expression"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "exponent less than 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identifier expected after pre-increment or pre-decrement"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "missing ‘)’"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "syntax error: operand expected"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "syntax error: invalid arithmetic operator"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (error token is “%sâ€)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "invalid arithmetic base"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "invalid integer constant"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "value too great for base"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expression error\n"
@@ -1191,7 +1201,7 @@ msgstr "%s: expression error\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: cannot access parent directories"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "cannot reset nodelay mode for fd %d"
@@ -1210,167 +1220,167 @@ msgstr "save_bash_input: buffer already exists for new fd %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forked pid %d appears in running job %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "deleting stopped job %d with process group %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marked as still alive"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: no such pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Done"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Stopped"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Stopped(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Running"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Done(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Exit %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Unknown status"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(core dumped) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "child setpgid (%ld to %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld is not a child of this shell"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: No record of process %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: job %d is stopped"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: no current jobs"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: job has terminated"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: job %d already in background"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: turning on WNOHANG to avoid indefinite block"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: line %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd now: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp failed"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: no job control in background"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "cannot set terminal process group (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "no job control in this shell"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: failed assertion: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1379,47 +1389,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "unknown"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: block on free list clobbered"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: called with already freed block argument"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: called with unallocated block argument"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underflow detected; mh_nbytes out of range"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: underflow detected; magic8 corrupted"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: start and end chunk sizes differ"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: called with unallocated block argument"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underflow detected; mh_nbytes out of range"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: underflow detected; magic8 corrupted"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: start and end chunk sizes differ"
@@ -1461,22 +1471,22 @@ msgstr "%s: bad network path specification"
msgid "network operations not supported"
msgstr "network operations not supported"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: cannot change locale (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: cannot change locale (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: cannot change locale (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: cannot change locale (%s): %s"
@@ -1494,35 +1504,35 @@ msgstr "You have new mail in $_"
msgid "The mail in %s has been read\n"
msgstr "The mail in %s has been read\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "syntax error: arithmetic expression required"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "syntax error: ‘;’ unexpected"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "syntax error: ‘((%s))’"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: bad instruction type %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: redirection instruction ‘%d’ out of range"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1531,103 +1541,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "maximum here-document count exceeded"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "unexpected EOF while looking for matching ‘%c’"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "unexpected EOF while looking for ‘]]’"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntax error in conditional expression: unexpected token ‘%s’"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "syntax error in conditional expression"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "unexpected token ‘%s’, expected ‘)’"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "expected ‘)’"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "unexpected argument ‘%s’ to conditional unary operator"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "unexpected argument to conditional unary operator"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "unexpected token ‘%s’, conditional binary operator expected"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "conditional binary operator expected"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "unexpected argument ‘%s’ to conditional binary operator"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "unexpected argument to conditional binary operator"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "unexpected token ‘%c’ in conditional command"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "unexpected token ‘%s’ in conditional command"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "unexpected token %d in conditional command"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntax error near unexpected token ‘%s’"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "syntax error near ‘%s’"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "syntax error: unexpected end of file"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "syntax error"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use “%s†to leave the shell.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "unexpected EOF while looking for matching ‘)’"
@@ -1665,94 +1675,94 @@ msgstr "xtrace_set: NULL file pointer"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: ‘%c’: invalid format character"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "file descriptor out of range"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: ambiguous redirect"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: cannot overwrite existing file"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricted: cannot redirect output"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "cannot create temp file for here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: cannot assign fd to variable"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port not supported without networking"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "redirection error: cannot duplicate fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "could not find /tmp, please create!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp must be a valid directory name"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "pretty-printing mode ignored in interactive shells"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: invalid option"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "cannot set uid to %d: effective uid %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "cannot set gid to %d: effective gid %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "cannot start debugger; debugging mode disabled"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Is a directory"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "I have no name!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1761,311 +1771,311 @@ msgstr ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU long options:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Shell options:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s or -o option\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Type ‘%s -c “help set‒ for more information about shell "
"options.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Type ‘%s -c help’ for more information about shell builtin commands.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Use the ‘bashbug’ command to report bugs.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash home page: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: invalid operation"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Bogus signal"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interrupt"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Quit"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Illegal instruction"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT instruction"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT instruction"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Floating point exception"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Killed"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Bus error"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Segmentation fault"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Bad system call"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Broken pipe"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Alarm clock"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Terminated"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Urgent IO condition"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Stopped (signal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continue"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Child death or stop"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Stopped (tty input)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Stopped (tty output)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O ready"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU limit"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "File limit"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profile)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Window changed"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Record lock"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "User signal 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "User signal 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT input data pending"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "power failure imminent"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "system crash imminent"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migrate process to another CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "programming error"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT monitor mode granted"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT monitor mode retracted"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT sound sequence has completed"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Information request"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Unknown Signal #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "bad substitution: no closing ‘%s’ in %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: cannot assign list to array member"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "cannot make pipe for process substitution"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "cannot make child for process substitution"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "cannot open named pipe %s for reading"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "cannot open named pipe %s for writing"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "cannot duplicate named pipe %s as fd %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "command substitution: ignored null byte in input"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "cannot make pipe for command substitution"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "cannot make child for command substitution"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: cannot duplicate pipe as fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: invalid variable name for name reference"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: invalid indirect expansion"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: invalid variable name"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter not set"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter null or not set"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: substring expression < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: bad substitution"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: cannot assign in this way"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2073,12 +2083,12 @@ msgstr ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "bad substitution: no closing “`†in %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "no match: %s"
@@ -2101,21 +2111,21 @@ msgstr "‘)’ expected"
msgid "`)' expected, found %s"
msgstr "‘)’ expected, found %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: binary operator expected"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: unary operator expected"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "missing ‘]’"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "syntax error: ‘%s’ unexpected"
@@ -2124,100 +2134,106 @@ msgstr "syntax error: ‘%s’ unexpected"
msgid "invalid signal number"
msgstr "invalid signal number"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "trap handler: maximum trap handler level exceeded (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: bad value in trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: bad signal %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error importing function definition for ‘%s’"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "shell level (%d) too high, resetting to 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: no function context at current scope"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variable may not be assigned value"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: assigning integer to name reference"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: no function context at current scope"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s has null exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "invalid character %d in exportstr for %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "no ‘=’ in exportstr for %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: head of shell_variables not a function context"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: no global_variables context"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: head of shell_variables not a temporary environment scope"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: cannot open as FILE"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: invalid value for trace file descriptor"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: compatibility value out of range"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2306,11 +2322,17 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
#: builtins.c:82
@@ -2410,7 +2432,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
#: builtins.c:144
@@ -2458,7 +2481,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] name [name ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
#: builtins.c:174
@@ -2502,11 +2526,13 @@ msgstr ""
"COMMANDS; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while COMMANDS; do COMMANDS; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until COMMANDS; do COMMANDS; done"
#: builtins.c:200
@@ -3897,6 +3923,7 @@ msgstr ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
#: builtins.c:994
+#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3907,7 +3934,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3996,7 +4025,7 @@ msgstr ""
"occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4016,7 +4045,7 @@ msgstr ""
" Exit Status:\n"
" Returns N, or failure if the shell is not executing a function or script."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4184,7 +4213,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4224,7 +4253,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or a NAME is read-only."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4258,7 +4287,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4296,7 +4325,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4314,7 +4343,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless N is negative or greater than $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4338,7 +4367,7 @@ msgstr ""
" Returns the status of the last command executed in FILENAME; fails if\n"
" FILENAME cannot be read."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4362,7 +4391,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4524,7 +4553,7 @@ msgstr ""
" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
" false or an invalid argument is given."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4537,7 +4566,7 @@ msgstr ""
"must\n"
" be a literal ‘]’, to match the opening ‘[’."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4557,7 +4586,7 @@ msgstr ""
" Exit Status:\n"
" Always succeeds."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4642,7 +4671,7 @@ msgstr ""
" Returns success unless a SIGSPEC is invalid or an invalid option is "
"given."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4700,7 +4729,7 @@ msgstr ""
" Returns success if all of the NAMEs are found; fails if any are not "
"found."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4797,7 +4826,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4829,7 +4858,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless MODE is invalid or an invalid option is given."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4889,7 +4918,7 @@ msgstr ""
" option is given, or if -n is supplied and the shell has no unwaited-for\n"
" children."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4915,7 +4944,7 @@ msgstr ""
"invalid\n"
" option is given."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4939,7 +4968,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4969,7 +4998,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5006,7 +5035,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5034,7 +5063,7 @@ msgstr ""
" Exit Status:\n"
" The return status is the return status of PIPELINE."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5052,7 +5081,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5090,12 +5119,14 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5108,12 +5139,14 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5126,7 +5159,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5148,7 +5181,7 @@ msgstr ""
" Exit Status:\n"
" The coproc command returns an exit status of 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5172,7 +5205,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless NAME is readonly."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5190,7 +5223,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5215,7 +5248,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the resumed job."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5233,7 +5266,7 @@ msgstr ""
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5287,7 +5320,7 @@ msgstr ""
" Exit Status:\n"
" 0 or 1 depending on value of EXPRESSION."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5391,7 +5424,7 @@ msgstr ""
" HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
" \t\tcommands should be saved on the history list.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5449,7 +5482,7 @@ msgstr ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5501,7 +5534,7 @@ msgstr ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5556,7 +5589,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5592,7 +5625,8 @@ msgstr ""
" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
" given or OPTNAME is disabled."
-#: builtins.c:1937
+#: builtins.c:1938
+#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5615,6 +5649,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5666,7 +5702,7 @@ msgstr ""
"assignment\n"
" error occurs."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5724,7 +5760,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5746,7 +5782,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5807,7 +5843,7 @@ msgstr ""
" Returns success unless an invalid option is supplied or NAME does not\n"
" have a completion specification defined."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5887,7 +5923,7 @@ msgstr ""
"or\n"
" not an indexed array."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5896,3 +5932,7 @@ msgstr ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for ‘mapfile’."
+
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: invalid associative array key"
diff --git a/po/en@quot.gmo b/po/en@quot.gmo
index 749c3a70..710a9d7c 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 5d978b23..b7668e28 100644
--- a/po/en@quot.po
+++ b/po/en@quot.po
@@ -29,7 +29,7 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU bash 5.1-rc3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2020-11-28 12:51-0500\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -43,57 +43,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "bad array subscript"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: removing nameref attribute"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: cannot convert indexed to associative array"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: invalid associative array key"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: cannot assign to non-numeric index"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: must use subscript when assigning associative array"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: cannot create: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: cannot find keymap for command"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: first non-whitespace character is not ‘\"’"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "no closing ‘%c’ in %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: missing colon separator"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "‘%s’: cannot unbind in command keymap"
@@ -113,7 +108,7 @@ msgstr "brace expansion: failed to allocate memory for %u elements"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace expansion: failed to allocate memory for ‘%s’"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "‘%s’: invalid alias name"
@@ -184,7 +179,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME not set"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "too many arguments"
@@ -211,7 +206,7 @@ msgstr "warning: "
msgid "%s: usage: "
msgstr "%s: usage: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: option requires an argument"
@@ -226,7 +221,7 @@ msgstr "%s: numeric argument required"
msgid "%s: not found"
msgstr "%s: not found"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: invalid option"
@@ -236,7 +231,7 @@ msgstr "%s: invalid option"
msgid "%s: invalid option name"
msgstr "%s: invalid option name"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "‘%s’: not a valid identifier"
@@ -249,7 +244,7 @@ msgstr "invalid octal number"
msgid "invalid hex number"
msgstr "invalid hex number"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "invalid number"
@@ -263,88 +258,93 @@ msgstr "%s: invalid signal specification"
msgid "`%s': not a pid or valid job spec"
msgstr "‘%s’: not a pid or valid job spec"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: readonly variable"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: cannot unset"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s out of range"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s out of range"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: no such job"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: no job control"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "no job control"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: restricted"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "restricted"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: not a shell builtin"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "write error: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "error setting terminal attributes: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "error getting terminal attributes: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: error retrieving current directory: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: ambiguous job spec"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "help not available in this version"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: cannot unset: readonly %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: cannot unset"
@@ -354,108 +354,108 @@ msgstr "%s: cannot unset"
msgid "%s: invalid action name"
msgstr "%s: invalid action name"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: no completion specification"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "warning: -F option may not work as you expect"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "warning: -C option may not work as you expect"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "not currently executing completion function"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "can only be used in a function"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "cannot use ‘-f’ to make functions"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: readonly function"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: reference variable cannot be an array"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: nameref variable self references not allowed"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: circular name reference"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "‘%s’: invalid variable name for name reference"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "cannot use ‘-f’ to make functions"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: readonly function"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: quoted compound array assignment deprecated"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: cannot destroy array variables in this way"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: cannot convert associative to indexed array"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: quoted compound array assignment deprecated"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynamic loading not available"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "cannot open shared object %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "cannot find %s in shared object %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: dynamic builtin already loaded"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "load function for %s returns failure (%d): not loaded"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: not dynamically loaded"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: cannot delete: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: is a directory"
@@ -470,7 +470,7 @@ msgstr "%s: not a regular file"
msgid "%s: file is too large"
msgstr "%s: file is too large"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: cannot execute binary file"
@@ -567,12 +567,12 @@ msgid ""
msgstr ""
"no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ or ‘info %s’."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: cannot open: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -591,21 +591,21 @@ msgstr ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "cannot use more than one of -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "history position"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: invalid timestamp"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: history expansion failed"
@@ -628,78 +628,78 @@ msgstr "%s: arguments must be process or job IDs"
msgid "Unknown error"
msgstr "Unknown error"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "expression expected"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: not an indexed array"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: invalid file descriptor specification"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: invalid file descriptor: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: invalid line count"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: invalid array origin"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: invalid callback quantum"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "empty array variable name"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "array variable support required"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "‘%s’: missing format character"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "‘%c’: invalid time format specification"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "‘%c’: invalid format character"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "warning: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "format parsing problem: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "missing hex digit for \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "missing unicode digit for \\%c"
@@ -853,12 +853,12 @@ msgstr ""
" \n"
" The ‘dirs’ builtin displays the directory stack."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: invalid timeout specification"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "read error: %d: %s"
@@ -871,7 +871,7 @@ msgstr "can only ‘return’ from a function or sourced script"
msgid "cannot simultaneously unset a function and a variable"
msgstr "cannot simultaneously unset a function and a variable"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: not an array variable"
@@ -890,11 +890,11 @@ msgstr "%s: cannot export"
msgid "shift count"
msgstr "shift count"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "cannot set and unset shell options simultaneously"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: invalid shell option name"
@@ -961,16 +961,16 @@ msgstr "%s: invalid limit argument"
msgid "`%c': bad command"
msgstr "‘%c’: bad command"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: cannot get limit: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: cannot modify limit: %s"
@@ -989,7 +989,7 @@ msgstr "‘%c’: invalid symbolic mode operator"
msgid "`%c': invalid symbolic mode character"
msgstr "‘%c’: invalid symbolic mode character"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " line "
@@ -1009,96 +1009,106 @@ msgstr "Aborting..."
msgid "INFORM: "
msgstr "INFORM: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "warning: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "unknown command error"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "bad command type"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "bad connector"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "bad jump"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: unbound variable"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atimed out waiting for input: auto-logout\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "cannot redirect standard input from /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: ‘%c’: invalid format character"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] still exists"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "pipe error"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: maximum eval nesting level exceeded (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximum source nesting level exceeded (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximum function nesting level exceeded (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restricted: cannot specify ‘/’ in command names"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: command not found"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: cannot execute binary file"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: bad interpreter"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: cannot execute binary file: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "‘%s’: is a special builtin"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "cannot duplicate fd %d to fd %d"
@@ -1111,68 +1121,68 @@ msgstr "expression recursion level exceeded"
msgid "recursion stack underflow"
msgstr "recursion stack underflow"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "syntax error in expression"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "attempted assignment to non-variable"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "syntax error in variable assignment"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "division by 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "bug: bad expassign token"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "‘:’ expected for conditional expression"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "exponent less than 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identifier expected after pre-increment or pre-decrement"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "missing ‘)’"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "syntax error: operand expected"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "syntax error: invalid arithmetic operator"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (error token is “%sâ€)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "invalid arithmetic base"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "invalid integer constant"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "value too great for base"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expression error\n"
@@ -1181,7 +1191,7 @@ msgstr "%s: expression error\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: cannot access parent directories"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "cannot reset nodelay mode for fd %d"
@@ -1200,167 +1210,167 @@ msgstr "save_bash_input: buffer already exists for new fd %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forked pid %d appears in running job %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "deleting stopped job %d with process group %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marked as still alive"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: no such pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Done"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Stopped"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Stopped(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Running"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Done(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Exit %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Unknown status"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(core dumped) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "child setpgid (%ld to %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld is not a child of this shell"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: No record of process %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: job %d is stopped"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: no current jobs"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: job has terminated"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: job %d already in background"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: turning on WNOHANG to avoid indefinite block"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: line %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd now: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp failed"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: no job control in background"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "cannot set terminal process group (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "no job control in this shell"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: failed assertion: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1369,47 +1379,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "unknown"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: block on free list clobbered"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: called with already freed block argument"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: called with unallocated block argument"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underflow detected; mh_nbytes out of range"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: underflow detected; magic8 corrupted"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: start and end chunk sizes differ"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: called with unallocated block argument"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underflow detected; mh_nbytes out of range"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: underflow detected; magic8 corrupted"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: start and end chunk sizes differ"
@@ -1451,22 +1461,22 @@ msgstr "%s: bad network path specification"
msgid "network operations not supported"
msgstr "network operations not supported"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: cannot change locale (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: cannot change locale (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: cannot change locale (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: cannot change locale (%s): %s"
@@ -1484,35 +1494,35 @@ msgstr "You have new mail in $_"
msgid "The mail in %s has been read\n"
msgstr "The mail in %s has been read\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "syntax error: arithmetic expression required"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "syntax error: ‘;’ unexpected"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "syntax error: ‘((%s))’"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: bad instruction type %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: redirection instruction ‘%d’ out of range"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1521,103 +1531,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "maximum here-document count exceeded"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "unexpected EOF while looking for matching ‘%c’"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "unexpected EOF while looking for ‘]]’"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntax error in conditional expression: unexpected token ‘%s’"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "syntax error in conditional expression"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "unexpected token ‘%s’, expected ‘)’"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "expected ‘)’"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "unexpected argument ‘%s’ to conditional unary operator"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "unexpected argument to conditional unary operator"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "unexpected token ‘%s’, conditional binary operator expected"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "conditional binary operator expected"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "unexpected argument ‘%s’ to conditional binary operator"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "unexpected argument to conditional binary operator"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "unexpected token ‘%c’ in conditional command"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "unexpected token ‘%s’ in conditional command"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "unexpected token %d in conditional command"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntax error near unexpected token ‘%s’"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "syntax error near ‘%s’"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "syntax error: unexpected end of file"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "syntax error"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use “%s†to leave the shell.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "unexpected EOF while looking for matching ‘)’"
@@ -1655,94 +1665,94 @@ msgstr "xtrace_set: NULL file pointer"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: ‘%c’: invalid format character"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "file descriptor out of range"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: ambiguous redirect"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: cannot overwrite existing file"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricted: cannot redirect output"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "cannot create temp file for here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: cannot assign fd to variable"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port not supported without networking"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "redirection error: cannot duplicate fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "could not find /tmp, please create!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp must be a valid directory name"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "pretty-printing mode ignored in interactive shells"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: invalid option"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "cannot set uid to %d: effective uid %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "cannot set gid to %d: effective gid %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "cannot start debugger; debugging mode disabled"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Is a directory"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "I have no name!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1751,308 +1761,308 @@ msgstr ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU long options:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Shell options:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s or -o option\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Type ‘%s -c “help setâ€â€™ for more information about shell options.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Type ‘%s -c help’ for more information about shell builtin commands.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Use the ‘bashbug’ command to report bugs.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash home page: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: invalid operation"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Bogus signal"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interrupt"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Quit"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Illegal instruction"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT instruction"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT instruction"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Floating point exception"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Killed"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Bus error"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Segmentation fault"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Bad system call"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Broken pipe"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Alarm clock"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Terminated"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Urgent IO condition"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Stopped (signal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continue"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Child death or stop"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Stopped (tty input)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Stopped (tty output)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O ready"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU limit"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "File limit"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profile)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Window changed"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Record lock"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "User signal 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "User signal 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT input data pending"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "power failure imminent"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "system crash imminent"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migrate process to another CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "programming error"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT monitor mode granted"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT monitor mode retracted"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT sound sequence has completed"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Information request"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Unknown Signal #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "bad substitution: no closing ‘%s’ in %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: cannot assign list to array member"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "cannot make pipe for process substitution"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "cannot make child for process substitution"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "cannot open named pipe %s for reading"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "cannot open named pipe %s for writing"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "cannot duplicate named pipe %s as fd %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "command substitution: ignored null byte in input"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "cannot make pipe for command substitution"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "cannot make child for command substitution"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: cannot duplicate pipe as fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: invalid variable name for name reference"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: invalid indirect expansion"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: invalid variable name"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter not set"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter null or not set"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: substring expression < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: bad substitution"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: cannot assign in this way"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2060,12 +2070,12 @@ msgstr ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "bad substitution: no closing “`†in %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "no match: %s"
@@ -2088,21 +2098,21 @@ msgstr "‘)’ expected"
msgid "`)' expected, found %s"
msgstr "‘)’ expected, found %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: binary operator expected"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: unary operator expected"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "missing ‘]’"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "syntax error: ‘%s’ unexpected"
@@ -2111,100 +2121,106 @@ msgstr "syntax error: ‘%s’ unexpected"
msgid "invalid signal number"
msgstr "invalid signal number"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "trap handler: maximum trap handler level exceeded (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: bad value in trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: bad signal %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error importing function definition for ‘%s’"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "shell level (%d) too high, resetting to 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: no function context at current scope"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variable may not be assigned value"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: assigning integer to name reference"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: no function context at current scope"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s has null exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "invalid character %d in exportstr for %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "no ‘=’ in exportstr for %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: head of shell_variables not a function context"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: no global_variables context"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: head of shell_variables not a temporary environment scope"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: cannot open as FILE"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: invalid value for trace file descriptor"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: compatibility value out of range"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2293,11 +2309,17 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
#: builtins.c:82
@@ -2397,7 +2419,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
#: builtins.c:144
@@ -2445,7 +2468,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] name [name ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
#: builtins.c:174
@@ -2489,11 +2513,13 @@ msgstr ""
"COMMANDS; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while COMMANDS; do COMMANDS; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until COMMANDS; do COMMANDS; done"
#: builtins.c:200
@@ -3873,6 +3899,7 @@ msgstr ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
#: builtins.c:994
+#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3883,7 +3910,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3972,7 +4001,7 @@ msgstr ""
"occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3992,7 +4021,7 @@ msgstr ""
" Exit Status:\n"
" Returns N, or failure if the shell is not executing a function or script."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4160,7 +4189,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4200,7 +4229,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or a NAME is read-only."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4234,7 +4263,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4272,7 +4301,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4290,7 +4319,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless N is negative or greater than $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4314,7 +4343,7 @@ msgstr ""
" Returns the status of the last command executed in FILENAME; fails if\n"
" FILENAME cannot be read."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4338,7 +4367,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4500,7 +4529,7 @@ msgstr ""
" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
" false or an invalid argument is given."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4512,7 +4541,7 @@ msgstr ""
" This is a synonym for the “test†builtin, but the last argument must\n"
" be a literal ‘]’, to match the opening ‘[’."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4532,7 +4561,7 @@ msgstr ""
" Exit Status:\n"
" Always succeeds."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4616,7 +4645,7 @@ msgstr ""
" Returns success unless a SIGSPEC is invalid or an invalid option is "
"given."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4672,7 +4701,7 @@ msgstr ""
" Returns success if all of the NAMEs are found; fails if any are not "
"found."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4768,7 +4797,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4800,7 +4829,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless MODE is invalid or an invalid option is given."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4860,7 +4889,7 @@ msgstr ""
" option is given, or if -n is supplied and the shell has no unwaited-for\n"
" children."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4886,7 +4915,7 @@ msgstr ""
"invalid\n"
" option is given."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4908,7 +4937,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4938,7 +4967,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4974,7 +5003,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5002,7 +5031,7 @@ msgstr ""
" Exit Status:\n"
" The return status is the return status of PIPELINE."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5020,7 +5049,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5058,12 +5087,14 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5076,12 +5107,14 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5094,7 +5127,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5116,7 +5149,7 @@ msgstr ""
" Exit Status:\n"
" The coproc command returns an exit status of 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5140,7 +5173,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless NAME is readonly."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5158,7 +5191,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5182,7 +5215,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the resumed job."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5200,7 +5233,7 @@ msgstr ""
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5252,7 +5285,7 @@ msgstr ""
" Exit Status:\n"
" 0 or 1 depending on value of EXPRESSION."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5356,7 +5389,7 @@ msgstr ""
" HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
" \t\tcommands should be saved on the history list.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5414,7 +5447,7 @@ msgstr ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5464,7 +5497,7 @@ msgstr ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5518,7 +5551,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5554,7 +5587,8 @@ msgstr ""
" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
" given or OPTNAME is disabled."
-#: builtins.c:1937
+#: builtins.c:1938
+#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5577,6 +5611,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5628,7 +5664,7 @@ msgstr ""
"assignment\n"
" error occurs."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5686,7 +5722,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5708,7 +5744,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5768,7 +5804,7 @@ msgstr ""
" Returns success unless an invalid option is supplied or NAME does not\n"
" have a completion specification defined."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5848,7 +5884,7 @@ msgstr ""
"or\n"
" not an indexed array."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5857,3 +5893,7 @@ msgstr ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for ‘mapfile’."
+
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: invalid associative array key"
diff --git a/po/eo.gmo b/po/eo.gmo
index 586b9ef9..b0227e55 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 65268c3c..1e781094 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -30,7 +30,7 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU bash 5.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2020-12-13 10:53+0700\n"
"Last-Translator: Sergio Pokrovskij <sergio.pokrovskij@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
@@ -45,58 +45,53 @@ msgstr ""
msgid "bad array subscript"
msgstr "Misa tabel-indico"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: ne plu nomreferenco (la atributo nameref forigitas)"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: Maleblas konverti entjerindican tabelon en asocitabelon"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: Misa asocitabela Ålosilo"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: Valorizato havu nombran indicon"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: Valorizante per asocitabelo uzu indicon"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: Ne prosperis krei: %s"
# XXX: internal_error
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: Mankas klavartabelo por komando"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "Mankas ferma „%c‟ en %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: Mankas disiga dupunkto"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "«%s»: Ne eblas malligi en komandaj klavaĵoj"
@@ -119,7 +114,7 @@ msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %u elementoj"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %s"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "%s: MaltaÅ­gas por uzi kiel alinomon"
@@ -192,7 +187,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME malhavas valoron"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "Tro multe da argumentoj"
@@ -219,7 +214,7 @@ msgstr "Averto: "
msgid "%s: usage: "
msgstr "%s: Uzmaniero: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: La opcio bezonas argumenton"
@@ -234,7 +229,7 @@ msgstr "%s: Necesas nombra argumento"
msgid "%s: not found"
msgstr "%s: Ne trovita"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: Misa opcio"
@@ -244,7 +239,7 @@ msgstr "%s: Misa opcio"
msgid "%s: invalid option name"
msgstr "%s: Misa opcinomo"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s‟ ne estas taŭga nomo"
@@ -257,7 +252,7 @@ msgstr "Misa okuma nombro"
msgid "invalid hex number"
msgstr "Misa 16uma nombro"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "Misa nombro"
@@ -271,88 +266,93 @@ msgstr "%s: Misa signalindiko"
msgid "`%s': not a pid or valid job spec"
msgstr "„%s‟: Nek proceznumero, nek taŭga laborindiko"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: Nurlega variablo"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: Malaktivigo fiaskis"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s estas ekster sia variejo"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argumento"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s estas ekster sia variejo"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: Ne estas tia laboro"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: Ĉi tiu Åelo ne disponigas laborregadon"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "Laborregado ne disponeblas"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: Limigita"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "limigita"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "„%s‟ ne estas primitiva komando Åela"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "Eraro ĉe skribo: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "Eraro ĉe agordado de terminalaj atributoj: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "Eraro ĉe akiro de terminalaj atributoj: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: Eraro ĉe provo determini la kurantan dosierujon: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: Ambigua laborindiko"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "helpilo mankas en ĉi tiu versio"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: Malaktivigo fiaskis: nurlega %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: Malaktivigo fiaskis"
@@ -362,108 +362,108 @@ msgstr "%s: Malaktivigo fiaskis"
msgid "%s: invalid action name"
msgstr "%s: Misa nomo de ago"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: Kompletigo ne estas specifita"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "Averto: La opcio -F povas funkcii alie ol vi eble supozas"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "Averto: La opcio -C povas funkcii alie ol vi eble supozas"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "Ni ne estas en plenumado de kompletiga funkcio"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "Uzeblas nur ene de funkcio"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "„-f‟ ne estas uzebla por fari funkciojn"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: Nurlega funkcio"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: Referenca variablo ne povas esti tabelo"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: Nomreferenca variablo ne referencu sin mem"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: Cikla nomreferenco"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%s“: Misa variablonomo por nomreferenco"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "„-f‟ ne estas uzebla por fari funkciojn"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: Nurlega funkcio"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: Tutopa tabelvalorizo citila estas evitinda"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: Ĉi tiel ne eblas neniigi tabelvariablojn"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: Ne eblas konverti asocitabelon en entjerindican tabelon"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: Tutopa tabelvalorizo citila estas evitinda"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "Rultempa Åargo ne disponeblas"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "Ne malfermiÄis dinamika biblioteko %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "Mankas %s en la dinamika biblioteko%s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: primitiva komando dinamika jam Åargitas"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "Åœarga funkcio por %s liveris fiaskon (%d): ne Åargite"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: Ne Åargita dinamike"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: Ne eblas forigi: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s estas dosierujo"
@@ -478,7 +478,7 @@ msgstr "%s: Ne ordinara dosiero"
msgid "%s: file is too large"
msgstr "%s: Tro granda dosiero"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: Neplenumebla duuma dosiero"
@@ -570,17 +570,18 @@ msgstr ""
#: builtins/help.def:185
#, c-format
-msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgid ""
+"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
"Helpaĵo pri „%s‟ malestas.\n"
"Provu «help help» aŭ «man -k %s» aŭ «info %s»."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: Fiaskis malfermo de %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -599,21 +600,21 @@ msgstr ""
"Steleto (*) tuj post nomo indikas, ke la komando estas malebligita.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "Ne pli ol unu el -anrw estas uzebla"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "pozicio en la historio"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: MaltaÅ­ga tempomarko"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: Historia malvolvo fiaskis"
@@ -636,80 +637,80 @@ msgstr "%s: Argumento estu proceznumero aÅ­ laborindiko"
msgid "Unknown error"
msgstr "Nekonata eraro"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "Mankas esprimo"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: Äi ne estas entjerindica tabelo"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: Misa indiko de dosiernumero"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: Misa dosiernumero: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: Misa lininombro"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: Misa tabelbazo"
# Supozeble callback => retrovoko ??
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: Misa kvanto ĉe retrovoko"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "Mankas nomo de tabelvariablo"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "necesas subteno de tabelvariabloj"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "„%s‟: Mankas formata signo"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "%c: Misa tempoformato"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c‟: Misa signo formata"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "Averto: %s: %s"
# XXX: internal_error
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "Miso ĉe analizado de formato: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "Mankas 16uma cifero por \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "Post „%c‟ mankas unikoda cifero"
@@ -751,10 +752,12 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown "
+"by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown "
+"by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
"Listigu la kurantan dosierujstakon. La dosierujoj trafas en\n"
@@ -862,25 +865,26 @@ msgstr ""
"\n"
" Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: Misa indiko de atendotempo"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "Lega (read) eraro: %d: %s"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
-msgstr "„return‟ sencas nur en funkcio aŭ punkte vokita („.‟, „source‟) skripto"
+msgstr ""
+"„return‟ sencas nur en funkcio aŭ punkte vokita („.‟, „source‟) skripto"
#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: Ne tabela variablo"
@@ -899,11 +903,11 @@ msgstr "%s: Ne eblas eksporti"
msgid "shift count"
msgstr "Nombrilo de „shift‟"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "Maleblas samtempe Åalti kaj malÅalti Åelan opcion"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: Misa nomo de Åela opcio"
@@ -970,16 +974,16 @@ msgstr "%s: MaltaÅ­ga argumento por limo"
msgid "`%c': bad command"
msgstr "„%c‟: Misa komando"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: Fiaskis provo legi limon: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limo"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: Malprosperis ÅanÄi limon: %s"
@@ -1000,7 +1004,7 @@ msgstr "„%c‟: Maltaŭga simbolo por atingorajta modifilo"
msgid "`%c': invalid symbolic mode character"
msgstr "„%c‟: La signo ne estas simbolo de atingorajta kategorio"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " linio "
@@ -1020,99 +1024,109 @@ msgstr "Ĉesigado ..."
msgid "INFORM: "
msgstr "INFORMO: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "Averto: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "Nekonata komand-eraro"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "Misa komandotipo"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "Misa stir-operacio"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "Misa salto"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: Neligita variablo"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aTro longe sen enigo: AÅ­tomata seancofino\n"
# XXX: internal error:
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "Fiaskis provo nomumi la disponaĵon «/dev/null» ĉefenigujo: %s"
# XXX: internal error:
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c‟: Misa formatsigno"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: la kunprocezo [%d:%s] ankoraÅ­ ekzistas"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "Eraro en dukto"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: La ingado de „source“oj superis sian maksimumon (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: La ingado de funkcioj superis sian maksimumon (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: Komando ne trovita"
# XXX: internal error:
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: Neplenumebla duuma dosiero"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: Misa interpretilo"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: Neplenumebla duuma dosiero: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s‟ estas primitiva komando speciala"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d"
@@ -1125,68 +1139,68 @@ msgstr "Tro profunda rekursio en esprimo"
msgid "recursion stack underflow"
msgstr "Rekursistako elĉerpita"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "Sintaksa eraro en esprimo"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "Provo valorizi ne-variablon"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "Sintaksa eraro en valorizo de variablo"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "Divido per 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "CIMO: Misa operacisigno en kombinita valorizsimbolo"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "„:‟ mankas kondiĉa esprimo"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "Negativa eksponento"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "Post antaÅ­kremento aperu nomo de variablo"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "Mankas „)‟"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "Sintaksa eraro: Mankas operando"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (misa simbolo estas „%s‟)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "MaltaÅ­ga bazo nombrosistema"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "MaltaÅ­ga konstanto entjera"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "Tro granda valoro por bazo de nombrosistemo"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: Misa esprimo\n"
@@ -1195,7 +1209,7 @@ msgstr "%s: Misa esprimo\n"
msgid "getcwd: cannot access parent directories"
msgstr "getwd: Ne eblas atingi patrajn dosierujojn"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "Ne eblas reÅalti senprokrastan reÄimon por dosiernumero %d"
@@ -1216,172 +1230,172 @@ msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: procezgrupo dukto"
# ZZZ: internal_warning
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
# ZZZ: internal_warning
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "Forke farita proceznumero %d aperas en rulata laboro %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "Haltigita laboro %d kun procezgrupo %ld estas forigata"
# ifdef DEBUG ... internal_warning():
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marked as still alive"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: Ne estas tia proceznumero (%ld)!"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signalo %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Farite"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Haltigita"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Haltigita(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Rulata"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Farite(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Eliro %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Nekonata stato"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(nekropsio elÅutita)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (labordosierujo: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "provo atribui (setpgid) procezgrupon %2$ld de la procezido %1$ld"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: La procezo %ld ne estas ido de ĉi tiu Åelo"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Malestas informoj pri procezo %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: La laboro %d estas haltigita"
# XXX: internal_error
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: no current jobs"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: La laboro finiÄis"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: La laboro %d jam estas fona"
# XXX: internal warning:
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: WNOHANG iÄas Åaltita por eviti nedifintan pendiÄon"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: linio %dª: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr "(nekropsio elÅutita)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(nun labordosierujo estas: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp fiaskis"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: laborregado ne funkcias en la fono"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: liniaranÄo"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid()"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "ne prosperis atribui grupon (%d) de terminala procezo"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "Ĉi tiu Åelo ne disponigas laborregadon"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: Malveras la aserto: %s\n"
# XXX: debug?
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1391,57 +1405,57 @@ msgstr ""
"malloc: %s:%d: aserto sufokita\r\n"
# XXX: internal error
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "nekonata"
# XXX: debug?
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: Skribdifektita bloko en malokupa listo (free list)"
# XXX: debug?
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: La argumento montras blokon jam malokupitan"
# XXX: debug?
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: La argumento ne montras generitan memoron"
# XXX: debug?
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: Okazis maltroo; mh_nbytes estas ekster sia variejo"
# XXX: debug?
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: Okazis maltroo; «magic8» difektitas"
# XXX: debug?
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj"
# XXX: debug?
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: La argumento ne montras generitan memoron"
# XXX: debug?
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: Okazis maltroo; mh_nbytes estas ekster sia variejo"
# XXX: debug?
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: Okazis maltroo; «magic8» difektitas"
# XXX: debug?
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj"
@@ -1491,25 +1505,25 @@ msgid "network operations not supported"
msgstr "Reta funkciado ne disponeblas"
# XXX: internal warning:
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: Maleblas ÅanÄi lokaĵaron (%s)"
# XXX: internal warning:
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: Maleblas ÅanÄi lokaĵaron (%s): %s"
# XXX: fatal_error
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: ne eblas ÅanÄi la lokaĵaron (%s)"
# XXX: fatal_error
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: ne eblas ÅanÄi la lokaĵaron (%s): %s"
@@ -1527,139 +1541,143 @@ msgstr "Nova poÅto en $_"
msgid "The mail in %s has been read\n"
msgstr "La poÅto en %s estas jam legita\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "Sintaksa eraro: Necesas aritmetika esprimo"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "Sintaksa eraro: Neatendita „;‟"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "Sintaksa eraro: „((%s))‟"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: Misa ordontipo %d"
# internal_warning():
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "Tuj-dokumenton de linio %d limigas dosierfino (mankas „%s‟)"
# XXX: programming_error
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo"
# internal_warning():
-#: parse.y:2393
+#: parse.y:2428
#, c-format
-msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
-msgstr "shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio tranĉita"
+msgid ""
+"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
+"truncated"
+msgstr ""
+"shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio "
+"tranĉita"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "La nombro de tuj-documentoj superis sian maksimumon"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "Neatendita dosierfino dum serĉo de responda „%c‟"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "Neatendita dosierfino dum serĉo de „]]‟"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "Sintaksa eraro en kondiĉa esprimo"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "Nekonvena simbolo „%s‟ anstataŭ „)‟"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "Mankas „)‟"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "Maltaŭga argumento por unuloka kondiĉa operacisimbolo"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "Misa simbolo „%s‟ anstataŭ duloka kondiĉa operacisigno"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "ĉi tie devas esti duloka kondiĉa operacisigno"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "<maltaŭga argumento por duloka kondiĉa operacisimbolo"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "Misa simbolo „%c‟ en kondiĉa komando"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "Misa simbolo „%s‟ en kondiĉa komando"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "Misa simbolo „%d‟ en kondiĉa komando"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "Sintaksa eraro apud neatendita simbolo „%s‟"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "Sintaksa eraro apud „%s‟"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "Sintaksa eraro: Neatendita dosierfino"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "Sintaksa eraro"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Uzu «%s» por eliri el la Åelo.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "Neatendita dosierfino dum serĉo de responda „)‟"
@@ -1703,100 +1721,100 @@ msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
# XXX: programming_error
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c‟: Misa formatsigno"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "Ekstervarieja dosiernumero"
# XXX: internal_error
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: Ambigua alidirektado"
# XXX: internal_error
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: Maleblas surskribi ekzistantan dosieron"
# XXX: internal_error
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: Limigita Åelo: malpermesitas alidirekti eligon"
# XXX: internal_error
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "Malprosperis krei labordosieron por tuj-dokumento: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: Maleblas konservi la dosiernumeron en la variablo"
# XXX: internal_warning
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "«/dev/(tcp|udp)/host/port» ne disponeblas ekster retumado"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "Alidirektada eraro: Fiaskis kunnomumo al dosiernumero"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "Mankas «/tmp», bv krei Äin!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "«/tmp» devas esti valida dosierujo"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "La reÄimo de struktura tekstaranÄo ne funkcias en dialogaj Åeloj"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: Misa opcio"
-#: shell.c:1319
+#: shell.c:1343
#, 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:1330
+#: shell.c:1354
#, 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:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "Maleblas lanĉi erarserĉilon: la erarserĉa reÄimo malÅaltitas."
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s : ĉi tio estas dosierujo"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Mi ne havas nomon!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNUa «bash», versio %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1805,359 +1823,364 @@ msgstr ""
"Uzo:\t%s [GNUa opcio longforma] [opcio] ...\n"
"\t%s [GNUa opcio longforma] [opcio] SKRIPTODOSIERO ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNUaj opcioj longformaj:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Åœelaj opcioj:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD aŭ -c KOMANDO aŭ -O SHOPT_OPCIO\t\t(nur ĉe voko)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s aÅ­ -o opcio\n"
# bash --help
-#: shell.c:2068
+#: shell.c:2094
#, 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:2069
+#: shell.c:2095
#, 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:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Por raporti pri eraroj uzu la komandon „bashbug‟\n"
-#: shell.c:2072
+#: shell.c:2098
#, 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"
+msgstr ""
+"La hejmpaÄo de BaÅo (anglalingva): <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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"
+msgstr ""
+"Äœenerala helpilo pri uzo de GNUa programaro: <http://www.gnu.org/gethelp/>\n"
# XXX: internal_error
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: Misa operacio"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Åœtopsignalo"
# Hangup detected on controlling terminal or death of controlling
# process
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Malkonekto"
# Interrupt from keyboard
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interrompo"
# Quit from keyboard
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Klavara eliro"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Miskomando"
# SIGTRAP 5 Core Trace/breakpoint trap
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Spurada kontrolpunkto"
# Abort signal from abort(3)
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Komando ABORT"
# SIGEMT is not specified in POSIX 1003.1-2001, but neverthless appears
# on most other Unices, where its default action is typically to termi-
# nate the process with a core dump.
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT-komando"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Glitpunkta escepto"
# SIGKILL 9 Term Kill signal
# Nek kaptebla nek ignorebla (malkiel ABORT)
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Murdu"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Bus-eraro"
# SIGSEGV 11 Core Invalid memory reference
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Adreseraro"
# SIGSYS 12,-,12 Core Bad argument to routine (SVID)
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Misa sistemvoko"
# SIGPIPE 13 Term Broken pipe: write to pipe with no readers
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Rompita dukto"
# SIGALRM 14 Term Timer signal from alarm(2)
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "VekhorloÄo"
# SIGTERM 15 Term Termination signal
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "FiniÄu"
# SIGURG 16,23,21 Ign Urgent condition on socket (4.2 BSD)
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "UrÄa stato eneliga"
# SIGSTOP 17,19,23 Stop Stop process
# Nek kaptebla nek ignorebla (samkiel SIGKILL)
# Haltu (poste eblos plu iri, vd SIGCONT)
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Haltu (signalo)"
# SIGCONT 19,18,25 Continue if stopped
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Pluen"
# SIGCHLD 20,17,18 Ign Child stopped or terminated
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Procezido mortis aÅ­ haltis"
# SIGTTIN 21,21,26 Stop tty input for background process
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Haltu (pro terminalenigo)"
# SIGTTOU 22,22,27 Stop tty output for background process
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Haltu (pro terminaleligo)"
# SIGIO 23,29,22 Term I/O now possible (4.2 BSD)
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "Eneligo pretas"
# SIGXCPU 24,24,30 Core CPU time limit exceeded (4.2 BSD)
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Ĉefprocesora tempolimo"
# SIGXFSZ 25,25,31 Core File size limit exceeded (4.2 BSD)
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Dosiera longolimo"
# SIGVTALRM 26,26,28 Term Virtual alarm clock (4.2 BSD)
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Vekilo (virtuala)"
# SIGPROF 27,27,29 Term Profiling timer expired
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Vekilo (profilada)"
# SIGWINCH 28,28,20 Ign Window resize signal (4.3 BSD, Sun)
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Fenestro ÅanÄiÄis"
# SIGLOST -,-,- Term File lock lost
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "DosierÅloso"
# SIGUSR1 30,10,16 Term User-defined signal 1
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Uzulsignalo 1ª"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Uzulsignalo 2ª"
# Harbor File Transfer:
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Pendas HFT-enigo"
# SIGPWR 29,30,19 Term Power failure (System V)
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "Energiprovizo paneontas"
# SIGDANGER
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "La sistemo estas kraÅonta"
# SIGMIGRATE:
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "La procezo iru al alia ĉefprocesoro"
# SIGPRE
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "Programeraro"
# SIGGRANT (monopola??)
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT-monitorreÄimo jesigita"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT-monitorreÄimo forprenita"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT-sonsekvenco finiÄis"
# SIGINFO 29,-,- A synonym for SIGPWR
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Informmendo"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Nekonata signalo n-ro %d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "Misa anstataŭigo: Mankas ferma „%s‟ en %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: Maleblas valorizi tabelanon per listo"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "Ne prosperis fari dukton por proceza anstataÅ­igo"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "Ne prosperis krei idon por proceza anstataÅ­igo"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "Ne prosperis malfermi nomitan dukton %s porlegan"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "Ne prosperis malfermi nomitan dukton %s por skribado"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "Ne prosperis kunnomumi nomhavan dukton %s kiel dosiernumeron %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "Komanda anstataŭigo: nul-bajto en enigaĵo, ignorita"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "Ne prosperis fari dukton por komanda anstataÅ­igo"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "Ne prosperis krei procezidon por komanda anstataÅ­igo"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: Ne prosperis kunnomumi la dosiernumeron 1 al dukto"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: Misa variablonomo por nomreferenco"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: Misa malvolvo malrekta"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: MaltaÅ­ga variablonomo"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: Parametro estas malaktiva"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: Parametro estas NUL aÅ­ malaktiva"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: subĉeno-esprimo < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: Misa anstataÅ­igo"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ĉi tiel ne valorizebla"
# XXX: internal warning:
-#: subst.c:9814
-msgid "future versions of the shell will force evaluation as an arithmetic substitution"
-msgstr "Ontaj versioj de la Åelo plenumos komputon kiel aritmetikan anstataÅ­igon"
+#: subst.c:10111
+msgid ""
+"future versions of the shell will force evaluation as an arithmetic "
+"substitution"
+msgstr ""
+"Ontaj versioj de la Åelo plenumos komputon kiel aritmetikan anstataÅ­igon"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "Misa anstataŭigo: Mankas ferma „`‟ en %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "Nenio kongrua: %s"
@@ -2180,21 +2203,21 @@ msgstr "Mankas „)‟"
msgid "`)' expected, found %s"
msgstr "AnstataÅ­ „)‟ troviÄas %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: Tie devas esti duloka operacisigno"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: Tie devas esti unuloka operacisigno"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "Mankas „]‟"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "Sintaksa eraro: Neatendita «%s»"
@@ -2203,116 +2226,127 @@ msgstr "Sintaksa eraro: Neatendita «%s»"
msgid "invalid signal number"
msgstr "Misa signalnumero"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "trap handler: La nivelo de kaptilotraktiloj superis sian maksimumon (%d)"
+msgstr ""
+"trap handler: La nivelo de kaptilotraktiloj superis sian maksimumon (%d)"
# XXX: internal_warning
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: Misa valoro en trap_list[%d]: %p"
# XXX: internal_warning
-#: trap.c:418
+#: trap.c:416
#, c-format
-msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgid ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: Signaltraktilo SIG_DFL resendas %d (%s) al mi mem"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: Misa signalnumero %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "Eraro ĉe importo de funkcidifino por „%s‟"
# XXX: internal_warning
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "%d estas tro granda Åelnivelo; mallevita Äis 1"
# XXX: internal_error
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: Malestas funkcia kunteksto en ĉi-regiono"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: Variablo ne valorizebla"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: Nomreferenco valorizata per entjero"
# XXX: internal_error
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: Malestas funkcia kunteksto en ĉi-regiono"
# XXX: internal_error
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "«exportstr» de %s estas NUL"
# XXX: internal_error
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "Misa signo %d en eksporta signoĉeno por „%s‟"
# XXX: internal_error
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "Mankas „=‟ en eksporta signoĉeno por „%s‟"
# XXX: internal_error
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
-msgstr "pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto"
+msgstr ""
+"pop_var_context: La kapo de „shell_variables‟ ne estas funkcia kunteksto"
# XXX: internal_error
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: Mankas kunteksto de „global_variables‟"
# XXX: internal_error
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: La kapo de „shell_variables‟ ne estas provizora regiono"
# XXX: internal_error
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: Ne malfermeblas kiel DOSIERO"
# XXX: internal_error
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: Misa valoro por spurada dosiernumero (trace file descriptor)"
# # XXX: internal_error
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s kongruo-nivelo estas ekster sia variejo"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright (C) 2020 ĉe «Free Software Foundation, Inc.»"
#: version.c:47 version2.c:47
-msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
msgstr ""
"La permesilo estas GPLv3+; t.e. GNU GPL, versio 3ª aŭ pli nova.\n"
"La tekston vd ĉe <http://gnu.org/licenses/gpl.html>\n"
@@ -2361,7 +2395,9 @@ msgid "unalias [-a] name [name ...]"
msgstr "unalias [-a] NOMO [NOMO ...]"
#: builtins.c:53
-msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgid ""
+"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
+"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
msgstr ""
"bind [-lpsvPSVX] [-m KLAVARTABELO] [-f DOSIERNOMO] [-q NOMO]\n"
" [-u NOMO] [-r KLAVAÄ´O] [-x KLAVAÄ´O:ÅœELKOMANDO]\n"
@@ -2396,11 +2432,17 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] KOMANDO [ARG ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgiIlnrtux] [-p] [NOMO[=VALORO] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgiIlnrtux] [-p] NOMO[=VALORO] ..."
#: builtins.c:82
@@ -2462,7 +2504,9 @@ msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [ÅœABLONO ...]"
#: builtins.c:123
-msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
+msgid ""
+"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
+"[arg...]"
msgstr ""
"history [-c] [-d POZICIO] [n] aÅ­\n"
"history -awr [DOSIERNOMO] aÅ­\n"
@@ -2479,7 +2523,9 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
msgstr "disown [-h] [-ar] [LABORINDIKO ... | PROCEZNUMERO ...]"
#: builtins.c:134
-msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
+msgid ""
+"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
+"[sigspec]"
msgstr ""
"kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] [PN | LABORINDIKO] ... aÅ­\n"
"kill -l [SIGNOM]"
@@ -2489,7 +2535,9 @@ msgid "let arg [arg ...]"
msgstr "let ARG [ARG ...]"
#: builtins.c:138
-msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgid ""
+"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
+"prompt] [-t timeout] [-u fd] [name ...]"
msgstr ""
"read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO]\n"
" [-n NSIGN] [-N NSIGN] [-p INVIT] [-t TLIM]\n"
@@ -2500,7 +2548,8 @@ msgid "return [n]"
msgstr "return [N]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...]"
#: builtins.c:144
@@ -2548,7 +2597,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] NOMO [NOMO ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMO]"
#: builtins.c:174
@@ -2584,15 +2634,21 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
msgstr "case VORTO in [ÅœABLONO [| ÅœABLONO]...) KOMANDOJ ;;]... esac"
#: builtins.c:194
-msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
-msgstr "if KOMANDOJ; then KOMANDOJ; [ elif KOMANDOJ; then KOMANDOJ; ]... [ else KOMANDOJ; ] fi"
+msgid ""
+"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
+"COMMANDS; ] fi"
+msgstr ""
+"if KOMANDOJ; then KOMANDOJ; [ elif KOMANDOJ; then KOMANDOJ; ]... [ else "
+"KOMANDOJ; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while KOMANDOJ; do KOMANDOJ; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until KOMANDOJ; do KOMANDOJ; done"
#: builtins.c:200
@@ -2646,14 +2702,19 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v VAR] FORMATO [ARGUMENTOJ]"
#: builtins.c:231
-msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
+msgid ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIO] [-A AGO] [-G ÅœABLONO]\n"
" [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]\n"
" [-P PREFIKSO] [-S SUFIKSO] [NOMO ...]"
#: builtins.c:235
-msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgid ""
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
"compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G ÅœABLONO]\n"
" [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]\n"
@@ -2664,13 +2725,17 @@ msgid "compopt [-o|+o option] [-DEI] [name ...]"
msgstr "compopt [-o|+o OPCIO] [-DEI] [NOMO ...]"
#: builtins.c:242
-msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgid ""
+"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
msgstr ""
"mapfile [-d DISIG] [-n KIOM] [-O ORIGINO] [-s KIOM] [-t] [-u DN]\n"
" [-C RETROVOKO] [-c KVANTO] [TABELO]"
#: builtins.c:244
-msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgid ""
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
msgstr ""
"readarray [-d DISIG] [-n KIOM] [-O ORIGINO] [-s KIOM] [-t]\n"
" [-u DN] [-C RETROVOKO] [-c KVANTO] [TABELO]"
@@ -2691,7 +2756,8 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has been\n"
+" alias returns true unless a NAME is supplied for which no alias has "
+"been\n"
" defined."
msgstr ""
"Difinu aÅ­ listigu alinomojn.\n"
@@ -2743,25 +2809,30 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
+"move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their values\n"
-" -s List key sequences that invoke macros and their values\n"
+" -S List key sequences that invoke macros and their "
+"values\n"
+" -s List key sequences that invoke macros and their "
+"values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named function.\n"
+" -u function-name Unbind all keys which are bound to the named "
+"function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated commands\n"
+" -X List key sequences bound with -x and associated "
+"commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
@@ -2847,7 +2918,8 @@ msgid ""
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the function.\n"
+" as a shell function, but need to execute the builtin within the "
+"function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2899,16 +2971,22 @@ msgstr ""
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of the\n"
+" Change the current directory to DIR. The default DIR is the value of "
+"the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
-" A null directory name is the same as the current directory. If DIR begins\n"
+" The variable CDPATH defines the search path for the directory "
+"containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon "
+"(:).\n"
+" A null directory name is the same as the current directory. If DIR "
+"begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is set,\n"
-" the word is assumed to be a variable name. If that variable has a value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is "
+"set,\n"
+" the word is assumed to be a variable name. If that variable has a "
+"value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2924,11 +3002,13 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname component\n"
+" `..' is processed by removing the immediately previous pathname "
+"component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully "
+"when\n"
" -P is used; non-zero otherwise."
msgstr ""
"ÅœanÄu la kurantan laboran dosierujon de la Åelo.\n"
@@ -3042,7 +3122,8 @@ msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke commands\n"
+" information about the specified COMMANDs. Can be used to invoke "
+"commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -3105,7 +3186,8 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the "
+"`local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -3147,7 +3229,8 @@ msgstr ""
" komando „local‟. La opcio „-g‟ ĉi tiun efikon abolas.\n"
"\n"
" Eliistato:\n"
-" Sukceso, krom se aperas misa opcio aŭ okazas eraro ĉe valorizo de variablo."
+" Sukceso, krom se aperas misa opcio aŭ okazas eraro ĉe valorizo de "
+"variablo."
# typeset [-aAfFgilrtux] [-p] name[=value] ...
#: builtins.c:532
@@ -3193,7 +3276,8 @@ msgstr ""
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by a\n"
+" Display the ARGs, separated by a single space character and followed by "
+"a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -3217,9 +3301,11 @@ msgid ""
" \t\t0 to 3 octal digits\n"
" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
" \t\tcan be one or two hex digits\n"
-" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
" \t\tHHHH can be one to four hex digits.\n"
-" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
" \n"
" Exit Status:\n"
@@ -3343,7 +3429,8 @@ msgstr ""
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the shell,\n"
+" Combine ARGs into a single string, use the result as input to the "
+"shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -3445,7 +3532,8 @@ msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
+"specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3453,11 +3541,13 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, unless\n"
+" If the command cannot be executed, a non-interactive shell exits, "
+"unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error occurs."
+" Returns success unless COMMAND is not found or a redirection error "
+"occurs."
msgstr ""
"AnstataÅ­igu la Åelon je la donita komando\n"
"\n"
@@ -3496,7 +3586,8 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not executed\n"
+" Exits a login shell with exit status N. Returns an error if not "
+"executed\n"
" in a login shell."
msgstr ""
"AdiaÅ­, saluta Åelo!\n"
@@ -3512,13 +3603,15 @@ msgstr ""
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history list.\n"
+" fc is used to list or edit and re-execute commands from the history "
+"list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
+"EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3532,7 +3625,8 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error occurs."
+" Returns success or status of executed command; non-zero if an error "
+"occurs."
msgstr ""
"Eligu aÅ­ plenumu komandojn el la historilisto\n"
"\n"
@@ -3585,8 +3679,10 @@ msgstr ""
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if "
+"they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's "
+"notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
@@ -3608,7 +3704,8 @@ msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is displayed.\n"
+" no arguments are given, information about remembered commands is "
+"displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3666,7 +3763,8 @@ msgid ""
" PATTERN\tPattern specifying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is given."
+" Returns success unless PATTERN is not found or an invalid option is "
+"given."
msgstr ""
"Vidigu informon pri prmitivaj komandoj\n"
"\n"
@@ -3720,7 +3818,8 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed otherwise.\n"
+" with each displayed history entry. No time stamps are printed "
+"otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3901,7 +4000,8 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are listed\n"
+" grouped into levels of equal-precedence operators. The levels are "
+"listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3984,17 +4084,23 @@ msgstr ""
# read [-ers] [-a TABELO] [-d DISIG] [-i TEKSTO] [-n NSIGN] [-N NSIGN]
# [-p INVIT] [-t TLIM] [-u DN] [NOMO ...]
#: builtins.c:994
+#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with word\n"
+" if the -u option is supplied. The line is split into fields as with "
+"word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" the last NAME. Only the characters found in $IFS are recognized as "
+"word\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY "
+"variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -4006,7 +4112,8 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, "
+"unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -4024,8 +4131,10 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times out\n"
-" (in which case it's greater than 128), a variable assignment error occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times "
+"out\n"
+" (in which case it's greater than 128), a variable assignment error "
+"occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"Legu linion el la ĉefenigujo kaj disigu Äin en kampojn\n"
@@ -4072,7 +4181,7 @@ msgstr ""
# return [n]
# return [N]
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4094,7 +4203,7 @@ msgstr ""
# set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
# set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...]
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4137,7 +4246,8 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero status\n"
+" or zero if no command exited with a non-zero "
+"status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -4161,7 +4271,8 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell "
+"functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -4263,7 +4374,7 @@ msgstr ""
# unset [-f] [-v] [name ...]
# unset [-f] [-v] [NOMO ...]
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4275,7 +4386,8 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that fails,\n"
+" Without options, unset first tries to unset a variable, and if that "
+"fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -4303,12 +4415,13 @@ msgstr ""
# export [-fn] [name[=value] ...] or export -p
# export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before "
+"exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -4338,7 +4451,7 @@ msgstr ""
# readonly [-aAf] [name[=value] ...] or readonly -p
# readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4377,7 +4490,7 @@ msgstr ""
" Sukceso, krom se aperas nevalida nomo aÅ­ misa opcio."
# shift [n]
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4394,7 +4507,7 @@ msgstr ""
# source filename [arguments]
# source DOSIERNOMO [ARGUMENTOJ]
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4419,7 +4532,7 @@ msgstr ""
" DOSIERNOMO ne legeblas."
# suspend [-f]
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4445,7 +4558,7 @@ msgstr ""
# test [expr]
# test [ESPRIMO]
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4479,7 +4592,8 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last read.\n"
+" -N FILE True if the file has been modified since it was last "
+"read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4500,7 +4614,8 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 lexicographically.\n"
+" True if STRING1 sorts before STRING2 "
+"lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4600,7 +4715,7 @@ msgstr ""
" argumento."
# [ arg... ]
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4610,11 +4725,12 @@ msgstr ""
"Ĉi tiu estas sinonimo de la primitivo „test‟; tamen la lasta\n"
" argumento devas esti „]‟ fermanta la esprimon komencitan per „[‟."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of its\n"
+" Prints the accumulated user and system times for the shell and all of "
+"its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4630,11 +4746,12 @@ msgstr ""
# trap [-lp] [[arg] signal_spec ...]
# trap [-lp] [[ARG] SIGNALINDIKO ...]
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives signals\n"
+" Defines and activates handlers to be run when the shell receives "
+"signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4643,26 +4760,34 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
-" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
+"If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
+"If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
+"a\n"
+" script run by the . or source builtins finishes executing. A "
+"SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause "
+"the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands associated\n"
+" If no arguments are supplied, trap prints the list of commands "
+"associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\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."
+" Returns success unless a SIGSPEC is invalid or an invalid option is "
+"given."
msgstr ""
"Kaptu signalojn kaj aliajn eventojn\n"
"\n"
@@ -4700,7 +4825,7 @@ msgstr ""
# type [-afptP] name [name ...]
# type [-afptP] NOMO [NOMO ...]
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4726,7 +4851,8 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not found."
+" Returns success if all of the NAMEs are found; fails if any are not "
+"found."
msgstr ""
"Vidigu informon pri tipo de komando\n"
"\n"
@@ -4757,11 +4883,12 @@ msgstr ""
# ulimit [-SHacdefilmnpqrstuvx] [limit]
# ulimit [-SHacdefilmnpqrstuvx] [LIMO]
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and processes\n"
+" Provides control over the resources available to the shell and "
+"processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -4854,7 +4981,7 @@ msgstr ""
# umask [-p] [-S] [mode]
# umask [-p] [-S] [REÄœIMO]
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4889,23 +5016,27 @@ msgstr ""
# wait [-fn] [id ...]
# wait [-fn] [IND ...]
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or a\n"
+" Waits for each process identified by an ID, which may be a process ID or "
+"a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for a single job from the list of IDs,\n"
-" or, if no IDs are supplied, for the next job to complete and returns its\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
" exit status.\n"
" \n"
" If the -p option is supplied, the process or job identifier of the job\n"
" for which the exit status is returned is assigned to the variable VAR\n"
-" named by the option argument. The variable will be unset initially, before\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
@@ -4943,16 +5074,18 @@ msgstr ""
# wait [pid ...]
# wait [PN ...]
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination status.\n"
+" Waits for each process specified by a PID and reports its termination "
+"status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an "
+"invalid\n"
" option is given."
msgstr ""
"Atendu ke procezoj finiÄu, kaj liveru elirstaton\n"
@@ -4967,7 +5100,7 @@ msgstr ""
# for NAME [in WORDS ... ] ; do COMMANDS; done
# for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4991,7 +5124,7 @@ msgstr ""
# for (( exp1; exp2; exp3 )); do COMMANDS; done
# for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5023,7 +5156,7 @@ msgstr ""
# select NAME [in WORDS ... ;] do COMMANDS; done
# select NONO [in VORTOJ ... ;] do KOMANDOJ; done
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5060,7 +5193,7 @@ msgstr ""
# time [-p] PIPELINE
# time [-p] DUKTO
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5091,7 +5224,7 @@ msgstr ""
# case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac
# case VORTO in [ÅœABLONO [| ÅœABLONO]...) KOMANDOJ ;;]... esac
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5113,16 +5246,21 @@ msgstr ""
# [ else COMMANDS; ] fi
# if KOMANDOJ; then KOMANDOJ;[ elif KOMANDOJ; then KOMANDOJ; ]...
# [ else KOMANDOJ; ] fi
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then "
+"the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
+"is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of the\n"
-" entire construct is the exit status of the last command executed, or zero\n"
+" `then COMMANDS' list is executed and the if command completes. "
+"Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of "
+"the\n"
+" entire construct is the exit status of the last command executed, or "
+"zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -5140,12 +5278,14 @@ msgstr ""
# while COMMANDS; do COMMANDS; done
# while KOMANDOJ; do KOMANDOJ; done
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5160,12 +5300,14 @@ msgstr ""
# until COMMANDS; do COMMANDS; done
# until KOMANDOJ; do KOMANDOJ; done
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5180,7 +5322,7 @@ msgstr ""
# coproc [NAME] command [redirections]
# coproc [NOMO] KOMANDO [ALIDIREKTADOJ]
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5204,12 +5346,13 @@ msgstr ""
# function name { COMMANDS ; } or name () { COMMANDS ; }
# function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; }
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is "
+"invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -5228,7 +5371,7 @@ msgstr ""
# grouping_braces: { COMMANDS ; }
# { KOMANDOJ ; }
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5248,7 +5391,7 @@ msgstr ""
# job_spec [&]
# LABORINDIKO [&]
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5273,7 +5416,7 @@ msgstr ""
# (( expression ))
# (( ESPRIMO ))
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5293,13 +5436,16 @@ msgstr ""
# [[ expression ]]
# [[ ESPRIMO ]]
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries used\n"
-" by the `test' builtin, and may be combined using the following operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the "
+"conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries "
+"used\n"
+" by the `test' builtin, and may be combined using the following "
+"operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -5341,7 +5487,7 @@ msgstr ""
# help var
# variables - Names and meanings of some shell variables
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5448,7 +5594,7 @@ msgstr ""
# pushd [-n] [+N | -N | dir]
# pushd [-n] [+N | -N | DOSIERUJO]
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5507,7 +5653,7 @@ msgstr ""
" Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas."
# popd [-n] [+N | -N]
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5556,7 +5702,7 @@ msgstr ""
" Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas."
# dirs [-clpv] [+N] [-N]
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5610,7 +5756,7 @@ msgstr ""
# shopt [-pqsu] [-o] [optname ...]
# shopt [-pqsu] [-o] [OPCINOMO ...]
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5649,7 +5795,8 @@ msgstr ""
# printf [-v var] format [arguments]
# printf [-v VAR] FORMATO [ARGUMENTOJ]
-#: builtins.c:1937
+#: builtins.c:1938
+#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5657,27 +5804,36 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: plain\n"
-" characters, which are simply copied to standard output; character escape\n"
+" FORMAT is a character string which contains three types of objects: "
+"plain\n"
+" characters, which are simply copied to standard output; character "
+"escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next successive\n"
+" format specifications, each of which causes printing of the next "
+"successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in printf(1),\n"
+" In addition to the standard format specifications described in "
+"printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a "
+"format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as appropriate,\n"
+" specifications behave as if a zero value or null string, as "
+"appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or assignment\n"
+" Returns success unless an invalid option is given or a write or "
+"assignment\n"
" error occurs."
msgstr ""
"AranÄu kaj eligu ARGUMENTOJn laÅ­ FORMATO.\n"
@@ -5709,12 +5865,14 @@ msgstr ""
# complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIO] [-A AGO] [-G ÅœABLONO]
# [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]
# [-P PREFIKSO] [-S SUFIKSO] [NOMO ...]
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no options\n"
-" are supplied, existing completion specifications are printed in a way that\n"
+" For each NAME, specify how arguments are to be completed. If no "
+"options\n"
+" are supplied, existing completion specifications are printed in a way "
+"that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -5729,8 +5887,10 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are supplied,\n"
-" the -D option takes precedence over -E, and both take precedence over -I.\n"
+" uppercase-letter options are listed above. If multiple options are "
+"supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
@@ -5766,12 +5926,13 @@ msgstr ""
# compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G ÅœABLONO]
# [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]
# [-P PREFIKSO] [-S SUFIKSO] [VORTO]
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches against\n"
+" completions. If the optional WORD argument is supplied, matches "
+"against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -5786,13 +5947,16 @@ msgstr ""
" Sukceso, krom se aperas misa opcio aÅ­ okazas eraro."
# compopt [-o|+o OPCIO] [-DE] [NOMO ...]
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, print\n"
-" the completion options for each NAME or the current completion specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are "
+"supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, "
+"print\n"
+" the completion options for each NAME or the current completion "
+"specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5844,21 +6008,26 @@ msgstr ""
# [-c quantum] [array]
# mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN] [-C RETROVOKO]
# [-c KVANTO] [TABELO]
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
+" Read lines from the standard input into the indexed array variable "
+"ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable "
+"MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
+"copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
+"index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard "
+"input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -5871,11 +6040,13 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY "
+"before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly "
+"or\n"
" not an indexed array."
msgstr ""
"Legu liniojn el la ĉefenigujo en tabelvariablon\n"
@@ -5914,7 +6085,7 @@ msgstr ""
# readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback]
# [-c quantum] [array]
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5923,3 +6094,7 @@ msgstr ""
"Legu liniojn el dosiero en tabelvariablon.\n"
"\n"
" Sinonimo de „mapfile‟."
+
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: Misa asocitabela Ålosilo"
diff --git a/po/es.gmo b/po/es.gmo
index 06e833a9..68edd53c 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 526963c8..66ac8e66 100644
--- a/po/es.po
+++ b/po/es.po
@@ -3,14 +3,14 @@
# This file is distributed under the same license as the bash package.
# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2000 - 2011.
# Francisco Javier Serrador <fserrador@gmail.com>
-# Antonio Ceballos Roa <aceballos@gmail.com>, 2018, 2019, 2020
+# Antonio Ceballos Roa <aceballos@gmail.com>, 2018, 2019, 2020, 2022
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU bash 5.1\n"
+"Project-Id-Version: GNU bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-08 20:10+0100\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-09-21 08:56+0200\n"
"Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
"Language: es\n"
@@ -24,57 +24,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "subíndice de matriz incorrecto"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: se elimina el atributo nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: no se puede convertir la matriz indexada en asociativa"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: clave de matriz asociativa no válida"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: no se puede asignar a un índice que no es numérico"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: se debe usar un subíndice al asignar a una matriz asociativa"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: no se puede crear: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: no se puede encontrar la combinación de teclas para la orden"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: el primer carácter que no es espacio en blanco no es «\"»"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "no hay un `%c' que cierre en %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: falta un «:» separador"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "`%s': no se puede borrar la asignación en la combinación de teclas de órdenes"
@@ -94,7 +89,7 @@ msgstr "expansión de llaves: fallo al asignar memoria a %u elementos"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansión de llaves: fallo al asignar memoria a «%s»"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': nombre de alias inválido"
@@ -165,7 +160,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME no está definido"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "demasiados argumentos"
@@ -192,7 +187,7 @@ msgstr "aviso: "
msgid "%s: usage: "
msgstr "%s: modo de empleo: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: la opción requiere un argumento"
@@ -207,7 +202,7 @@ msgstr "%s: se requiere un argumento numérico"
msgid "%s: not found"
msgstr "%s: no encontrado"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: opción inválida"
@@ -217,7 +212,7 @@ msgstr "%s: opción inválida"
msgid "%s: invalid option name"
msgstr "%s: nombre de opción inválido"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': no es un identificador válido"
@@ -230,7 +225,7 @@ msgstr "número octal inválido"
msgid "invalid hex number"
msgstr "número hexadecimal inválido"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "número inválido"
@@ -244,88 +239,93 @@ msgstr "%s: la especificación de señal no es válida"
msgid "`%s': not a pid or valid job spec"
msgstr "`%s': no es un pid o una especificación válida de trabajo"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: variable de sólo lectura"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: no se puede asignar"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s fuera de rango"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argumento"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s fuera de rango"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: no existe ese trabajo"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: no hay control de trabajos"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "no hay control de trabajos"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: restringido"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "restringido"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: no es una orden interna de shell"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "error de escritura: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "error al establecer los atributos de la terminal: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "error al obtener los atributos de la terminal: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: error al obtener el directorio actual: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: especificación de trabajo ambigua"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "ayuda no disponible en esta versión"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: no se puede borrar: %s es de solo lectura"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: no se puede borrar"
@@ -335,110 +335,110 @@ msgstr "%s: no se puede borrar"
msgid "%s: invalid action name"
msgstr "%s: nombre de acción inválido"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: no hay especificación para completado"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "aviso: es posible que la opción -F no funcione como se espera"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "aviso: es posible que la opción -C no funcione como se espera"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "no se está ejecutando la función de completado"
# sólo se puede usar. sv
# De acuerdo. cfuga
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "sólo se puede usar dentro de una función"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "no se puede usar `-f' para hacer funciones"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: función de sólo lectura"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: referencia variable no puede ser una matriz"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: no se permiten las autoreferencias a variables nameref"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: referencia de nombre circular"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': nombre variable inválido para referencia de nombre"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "no se puede usar `-f' para hacer funciones"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: función de sólo lectura"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: asignación obsoleta de matriz compuesta entrecomillada"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: no se pueden destruir variables de matriz de esta forma"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: no se puede convertir una matriz asociativa a indexada"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: asignación obsoleta de matriz compuesta entrecomillada"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "la carga dinámica no está disponible"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "no se puede abrir el objeto compartido %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "no se puede encontrar %s en el objeto compartido %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: la orden interna dinámica ya está cargada"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "función de carga para %s devuelve fallo (%d): no se ha efectuado la carga"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: no cargado dinámicamente"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: no se puede borrar: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: es un directorio"
@@ -455,7 +455,7 @@ msgstr "%s: el fichero es demasiado grande"
# file=fichero. archive=archivo. Si no, es imposible traducir tar. sv
# De acuerdo. Corregido en todo el fichero. cfuga
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: no se puede ejecutar el fichero binario"
@@ -550,12 +550,12 @@ msgstr ""
msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr "no hay temas de ayuda que coincidan con `%s'. Pruebe `help help' o `man -k %s' o `info %s'."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: no se puede abrir: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -576,21 +576,21 @@ msgstr ""
"Un asterisco (*) junto a un nombre significa que la orden está desactivada.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "no se puede usar más de uno de -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "posición en la historia"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: marca de tiempo inválida"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: falló la expansión de la historia"
@@ -613,78 +613,78 @@ msgstr "%s: los argumentos deben ser IDs de procesos o trabajos"
msgid "Unknown error"
msgstr "Error desconocido"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "se esperaba una expresión"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: no es una matriz indexada"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: especificación de descriptor de fichero inválida"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descriptor de fichero inválido: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: cuenta de líneas inválida"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: origen de matriz inválido"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: quantum de llamada inválido"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "nombre de variable matriz vacío"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "se requiere el soporte de variable de matriz"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': falta el carácter de formato"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': especificación de formato de tiempo inválida"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': carácter de formato inválido"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "aviso: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "problema con el análisis del formato: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "falta el dígito hexadecimal para \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "falta el dígito unicode para \\%c"
@@ -836,12 +836,12 @@ msgstr ""
" \n"
" La orden interna `dirs' muestra la pila de directorios."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: especificación del tiempo de expiración inválida"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "error de lectura: %d: %s"
@@ -854,7 +854,7 @@ msgstr "sólo se puede usar `return' desde una función o un script leído con `
msgid "cannot simultaneously unset a function and a variable"
msgstr "no se puede borrar al mismo tiempo una función y una variable"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: no es una variable de matriz"
@@ -873,11 +873,11 @@ msgstr "%s: no se puede exportar"
msgid "shift count"
msgstr "contador de desplazamiento"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "no se pueden activar y desactivar opciones del shell simultáneamente"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nombre de opción de shell inválido"
@@ -944,16 +944,16 @@ msgstr "%s: límite de argumento inválido"
msgid "`%c': bad command"
msgstr "`%c': orden incorrecta"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: no se puede obtener el límite: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "límite"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: no se puede modificar el límite: %s"
@@ -972,7 +972,7 @@ msgstr "`%c': operador de modo simbólico inválido"
msgid "`%c': invalid symbolic mode character"
msgstr "`%c': carácter de modo simbólico inválido"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " línea "
@@ -992,98 +992,110 @@ msgstr "Abortando..."
msgid "INFORM: "
msgstr "INFORME: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "DEBUG aviso: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "error de orden desconocida"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "tipo de orden incorrecto"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "conector erróneo"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "salto erróneo"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: variable sin asignar"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "no se puede redirigir la entrada estándar desde /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': carácter de formato inválido"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] aún existe"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "error de tubería"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: nivel máximo de anidamiento de lecturas con `source' excedido (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: nivel máximo de anidamiento de funciones excedido (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: orden no encontrada"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+# file=fichero. archive=archivo. Si no, es imposible traducir tar. sv
+# De acuerdo. Corregido en todo el fichero. cfuga
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: no se puede ejecutar: no se ha encontrado el fichero requerido"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: intérprete erróneo"
# file=fichero. archive=archivo. Si no, es imposible traducir tar. sv
# De acuerdo. Corregido en todo el fichero. cfuga
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: no se puede ejecutar fichero binario: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s': es una orden interna especial"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "no se puede duplicar el df %d al df %d"
@@ -1096,73 +1108,73 @@ msgstr "se ha excedido el nivel de recursión de la expresión"
msgid "recursion stack underflow"
msgstr "desbordamiento de la pila de recursión"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "error sintáctico en la expresión"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "se intentó asignar a algo que no es una variable"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "error sintáctico en asignación de variable"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "división por 0"
# token en bison fue traducido como terminal. ¿Lo traducimos igual aquí
# o lo dejamos como 'unidad' o 'elemento'? cfuga
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "defecto: elemento de asignación de expresión erróneo"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "se esperaba `:' para la expresión condicional"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "exponente menor que 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "se esperaba un identificador después del pre-incremento o pre-decremento"
# falta , singular em+
# mmmh, puede faltar más de un paréntesis cfuga
# tiene razón Enrique, es singular. cfuga
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "falta un `)'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "error sintáctico: se esperaba un operando"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "error sintáctico: operador aritmético inválido"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (el elemento de error es \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "base aritmética inválida"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "constante entera inválida"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "valor demasiado grande para la base"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: error de expresión\n"
@@ -1171,7 +1183,7 @@ msgstr "%s: error de expresión\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: no se puede acceder a los directorios padre"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "no se puede reestablecer el modo nodelay para el df %d"
@@ -1193,168 +1205,168 @@ msgstr "save_bash_input: el almacenamiento intermedio ya existe para el nuevo df
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: tubería de pgrp"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: BUCLE: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: BUCLE: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "el pid `forked' %d aparece en el trabajo en ejecución %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "borrando el trabajo detenido %d con grupo de proceso %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) se marca como vivo aún"
# Cambiaría 'hay' por 'existe' em+
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: no existe tal pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Señal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Hecho"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Detenido"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Detenido(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Ejecutando"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Hecho(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Salida %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Estado desconocido"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(`core' generado) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (da: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid hijo (%ld a %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld no es un proceso hijo de este shell"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: No hay un registro del proceso %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: el trabajo %d está detenido"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: no hay trabajos actuales"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: el trabajo ha terminado"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: el trabajo %d ya está en segundo plano"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: línea %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (`core' generado)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(dir ahora: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: falló getpgrp"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: no hay control de trabajos en segundo plano"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina de línea"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "no se puede establecer el grupo de proceso de terminal (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "no hay control de trabajos en este shell"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: falló la aserción: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1363,47 +1375,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: aserción arruinada\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "desconocido"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloque en la lista libre sobreescrito"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: se llamó con un argumento de bloque previamente liberado"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: se llamó con un argumento de bloque sin asignar"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: se detectó un desbordamiento por debajo; magic8 corrupto"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: los tamaños de los fragmentos del inicio y del final son diferentes"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: se llamó con un argumento de bloque sin asignar"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: se detectó un desbordamiento por debajo; magic8 corrupto"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: los tamaños de los pedazos de inicio y fin son diferentes"
@@ -1445,22 +1457,22 @@ msgstr "%s: especificación de ruta de red errónea"
msgid "network operations not supported"
msgstr "no hay soporte para operaciones de red"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: no se puede cambiar el local (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: no se puede cambiar el local (%s): %s"
@@ -1478,108 +1490,108 @@ msgstr "Tiene correo nuevo en $_"
msgid "The mail in %s has been read\n"
msgstr "El correo en %s fue leído\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "error sintáctico: se requiere una expresión aritmética"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "error sintáctico: `;' inesperado"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "error sintáctico: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: tipo de instrucción %d erróneo"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "el documento-aquí en la línea %d está delimitado por fin-de-fichero (se esperaba `%s')"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: la instrucción de redirección `%d' está fuera de rango"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc: shell_input_line_size (%zu) excede TAMAÑO_MAX (%lu): línea truncada"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "número máximo de documentos en «here--document» excedido"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF inesperado mientras se buscaba un `%c' coincidente"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF inesperado mientras se buscaba `]]'"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "error sintáctico en la expresión condicional: elemento inesperado `%s'"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "error sintáctico en la expresión condicional"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "elemento inesperado `%s', se esperaba `)'"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "se esperaba `)'"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumento inesperado `%s' para el operador unario condicional"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "argumento inesperado para el operador unario condicional"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "elemento inesperado `%s', se esperaba un operador binario condicional"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "se esperaba un operador binario condicional"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumento inesperado `%s' para el operador binario condicional"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "argumento inesperado para el operador binario condicional"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "elemento inesperado `%c' en la orden condicional"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "elemento inesperado `%s' en la orden condicional"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "elemento inesperado %d en la orden condicional"
@@ -1590,12 +1602,12 @@ msgstr "elemento inesperado %d en la orden condicional"
# provocado por el símbolo. Simplemente estar cerca del mismo. cfuga
# Por consistencia con el siguiente, yo borraría la coma. sv
# Cierto. Coma borrada. cfuga
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "error sintáctico cerca del elemento inesperado `%s'"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "error sintáctico cerca de `%s'"
@@ -1604,20 +1616,20 @@ msgstr "error sintáctico cerca de `%s'"
# no se esperaba el final de la línea em+
# Ojo, que end of file es fin de fichero, no de línea. sv
# Se hicieron ambos cambios. cfuga
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "error sintáctico: no se esperaba el final del fichero"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "error sintáctico"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Utilice \"%s\" para dejar el shell.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF inesperado mientras se buscaba un `)' coincidente"
@@ -1655,80 +1667,80 @@ msgstr "xtrace_set: puntero NULL a fichero"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != numfich xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': carácter de formato inválido"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "descriptor de fichero fuera de rango"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redireccionamiento ambiguo"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: no se puede sobreescribir un fichero existente"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restringido: no se puede redirigir la salida"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "no se puede crear un fichero temporal para el documento-aquí: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: no se puede asignar el fd a la variable"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "error de redirección: no se puede duplicar el df"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "¡no se puede encontrar /tmp, crear por favor!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp debe ser un nombre de directorio válido"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "modo de impresión bonita desactivado en shells interactivos"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opción inválida"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "no se puede establecer el uid %d: uid efectivo %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "no se puede establecer gid a %d: gid efectivo %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "no puede ejecutar el depurador; modo depurado desactivado"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: es un directorio"
@@ -1736,11 +1748,11 @@ msgstr "%s: es un directorio"
# Yo pondría "no tengo ningún nombre". sv
# Revisé el código fuente de bash. Es un mensaje de error cuando no se
# encuentra el nombre del usuario que ejecuta el shell. cfuga
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "¡No tengo nombre de usuario!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versión %s-(%s)\n"
@@ -1750,7 +1762,7 @@ msgstr "GNU bash, versión %s-(%s)\n"
# traducido en otras ocasiones. Sehll script lo henmos traducido
# como guión del shell , eso es seguro ... así que puede estar
# bien así , ya lo verán otros em+
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1759,98 +1771,98 @@ msgstr ""
"Modo de empleo:\t%s [opción GNU larga] [opción] ...\n"
"\t%s [opción GNU larga] [opción] fichero de shell ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Opciones GNU largas:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Opciones del shell:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD o -c orden o -O opción_shopt\t\t(sólo invocación)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s o -o opción\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Teclee `%s -c \"help set\"' para más información sobre las opciones del shell.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Teclee `%s -c help' para más información sobre las órdenes internas del shell.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Utilice la orden `bashbug' para reportar defectos.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "página inicial bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operación inválida"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Señal ambigua"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Colgar"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interrumpir"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Salir"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Instrucción ilegal"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT rastreo/captura"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "instrucción ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "instrucción EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Excepción de coma flotante"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Matado"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Error del bus"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Violación de segmento"
@@ -1858,86 +1870,86 @@ msgstr "Violación de segmento"
# Es una llamada a una función del sistema em+
# De acuerdo, pero lo que está mal es la forma de invocar la
# llamada a la función del sistema, no la llamada en sí cfuga
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Llamada al sistema errónea"
# (pipe) no, por favor. Esto ya está traducido en libc, así que a estas
# alturas, la gente ya debería saber qué es eso de la tubería. sv
# De acuerdo. cfuga
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Tubería rota"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Temporizador"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Terminado"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Condición de E/S urgente"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Detenido (señal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continúa"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "El proceso hijo ha muerto o está parado"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Detenido (entrada por terminal)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Detenido (salida por terminal)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "E/S listas"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Límite de CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Límite de ficheros"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarma (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarma (entorno)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Ventana cambiada"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Bloqueo de registro"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Señal de usuario 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Señal de usuario 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "entrada de datos HFT pendiente"
@@ -1945,142 +1957,142 @@ msgstr "entrada de datos HFT pendiente"
# Suscribo lo anterior. falla suena muy raro.
# Yo lo pondría además al revés: fallo de energía inminente. sv
# Me gusta como lo sugieres. Cambio hecho. cfuga
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "fallo de energía inminente"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "caída del sistema inminente"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migrando el proceso a otra CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "error de programación"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "el modo monitor HFT ha sido concedido"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "el modo monitor HTF ha sido retirado"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "la secuencia de sonido HFT ha sido completada"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Solicitud de información"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Señal Desconocida #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "sustitución errónea: no hay un `%s' que cierre en %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: no se puede asignar una lista a un miembro de la matriz"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "no se puede crear la tubería para la sustitución del proceso"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "no se puede crear un proceso hijo para la sustitución del proceso"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "no se puede abrir la tubería llamada %s para lectura"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "no se puede abrir la tubería llamada %s para escritura"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "no se puede duplicar la tubería llamada %s como df %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "sustitución de orden: se ignora byte nulo en la entrada"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "no se puede crear la tubería para la sustitución de la orden"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "no se puede crear un proceso hijo para la sustitución de la orden"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: no se puede duplicar la tubería como df 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nombre de variable inválido para referencia de nombre"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: expansión indirecta inválida"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nombre de variable inválido"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parámetro no establecido"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parámetro nulo o no establecido"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expresión de subcadena < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: sustitución errónea"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: no se puede asignar de esta forma"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "versiones futuras del intérprete obligarán la evaluación como una sustitución aritmética"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "sustitución errónea: no hay una \"`\" que cierre en %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "no hay coincidencia: %s"
@@ -2103,12 +2115,12 @@ msgstr "`)' esperado"
msgid "`)' expected, found %s"
msgstr "se esperaba `)', se encontró %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: se esperaba un operador binario"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: se esperaba un operador unario"
@@ -2120,11 +2132,11 @@ msgstr "%s: se esperaba un operador unario"
# Abreviando "falta [al menos] un `]'" saldría: "falta un `]'".
# ¿No es mejor "falta algún `]'"? cfuga
# Tiene razón Enrique: singular. cfuga
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "falta un `]'"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "error sintáctico: `%s' inesperado"
@@ -2133,99 +2145,104 @@ msgstr "error sintáctico: `%s' inesperado"
msgid "invalid signal number"
msgstr "número de señal inválido"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "manejador de capturas: se ha excedido el nivel máximo de manejadores de capturas (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí mismo"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: señal errónea %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error al importar la definición de la función para `%s'"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "el nivel de shell (%d) es demasiado alto, se reestablece a 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: no hay contexto de función en el ámbito actual"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variable quizá no es valor asignado"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: no se puede heredar un valor de un tipo incompatible"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: asignando entero a nombre referencia"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: no hay contexto de función en el ámbito actual"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s tiene exportstr nulo"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "carácter inválido %d en exportstr para %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "no hay `=' en exportstr para %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: la cabeza de shell_variables no es un contexto de función"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: no es un contexto global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: la cabeza de shell_variables no es un ámbito de entorno temporal"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: no se puede abrir como FICHERO"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: valor inválido para el descriptor de fichero de rastreo"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: valor de compatibilidad fuera del rango"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2305,12 +2322,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] orden [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [nombre[=valor] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [nombre[=valor] ...] o declare -p [-aAfFilnrtux] [nombre ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] nombre[=valor] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] nombre[=valor] ... o typeset -p [-aAfFilnrtux] [nombre ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2402,8 +2419,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o nombre-opción] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o nombre-opción] [--] [-] [arg ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2450,8 +2467,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] nombre [nombre ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [límite]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2490,12 +2507,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if ÓRDENES; then ÓRDENES; [ elif ÓRDENES; then ÓRDENES; ]...[ else ÓRDENES; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while ÓRDENES; do ÓRDENES; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while ÓRDENES; do ÓRDENES-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until ÓRDENES; do ÓRDENES; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until ÓRDENES; do ÓRDENES-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3849,7 +3866,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3893,6 +3911,8 @@ msgstr ""
" NOMBRE, la segunda palabra al segundo NOMBRE, y así sucesivamente, con\n"
" las palabras restantes asignadas al último NOMBRE. Sólo los caracteres\n"
" que se encuentran en $IFS se reconocen como delimitadores de palabras.\n"
+" Lo predefinido es que el carácter de barra inclinada inversa escape los\n"
+" delimitadores de caracteres y las nuevas líneas.\n"
" \n"
" Si no se proporciona ningún NOMBRE, la línea leída se guarda en la\n"
" variable REPLY.\n"
@@ -3929,7 +3949,7 @@ msgstr ""
" línea, el tiempo de lectura se agote, o se proporcione un descriptor\n"
" de fichero inválido como el argumento de -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3949,7 +3969,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve N, o falla si el shell no está ejecutando una función o un script."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4115,7 +4135,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve correcto a menos que se proporcione una opción inválida."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4154,7 +4174,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" un NOMBRE sea de sólo lectura."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4188,7 +4208,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o que\n"
" NOMBRE sea inválido."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4227,7 +4247,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" el NOMBRE sea inválido."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4245,7 +4265,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve correcto a menos que N sea negativo o mayor que $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4269,7 +4289,7 @@ msgstr ""
" Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n"
" no se puede leer el FICHERO."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4294,7 +4314,7 @@ msgstr ""
" Devuelve correcto a menos que no esté activo el control de trabajos o\n"
" suceda un error."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4454,7 +4474,7 @@ msgstr ""
" Devuelve correcto si EXPR evalúa a verdadero; falla si EXPR evalúa a\n"
" falso o se proporciona un argumento inválido."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4466,7 +4486,7 @@ msgstr ""
" Este es un sinónimo para la orden interna \"test\", pero el último\n"
" argumento debe ser un `]' literal, que concuerde con el `[' inicial."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4484,7 +4504,7 @@ msgstr ""
" Estado de Salida:\n"
" Siempre correcto."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4555,7 +4575,7 @@ msgstr ""
# No he visto que este fichero incluya la posibilidad de traducir las
# palabras que muestra `type -t'. Por esta razón, se dejan en inglés. cfuga
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4610,7 +4630,7 @@ msgstr ""
" Devuelve correcto si se encuentran todos los NOMBREs; falla si alguno\n"
" no se encuentra."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4707,7 +4727,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o suceda\n"
" un error."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4740,7 +4760,7 @@ msgstr ""
" Devuelve correcto a menos que el MODO sea inválido o se proporcione\n"
" una opción inválida."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4794,7 +4814,7 @@ msgstr ""
" opción inválida o si proporciona -n y la shell no tiene ningún hijo al que\n"
" esperar."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4817,7 +4837,7 @@ msgstr ""
" Devuelve el estado del último PID; falla si PID es inválido o se proporciona\n"
" una opción inválida."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4839,7 +4859,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4869,7 +4889,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4906,7 +4926,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4933,7 +4953,7 @@ msgstr ""
" Estado de Salida:\n"
" El estado de devolución es el estado de devolución de la TUBERÃA."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4951,7 +4971,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4980,43 +5000,43 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Ejecuta órdenes mientras una prueba sea correcta.\n"
" \n"
-" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n"
-" `while' tenga un estado de salida de cero.\n"
+" Expande y ejecuta ÓRDENES-2 mientras la orden final en ÓRDENES\n"
+" tenga un estado de salida de cero.\n"
" \n"
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Ejecuta órdenes mientras una prueba sea correcta.\n"
" \n"
-" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n"
-" `until' tengan un estado de salida que no sea cero.\n"
+" Expande y ejecuta ÓRDENES-2 mientras la orden final en ÓRDENES\n"
+" tenga un estado de salida que no sea cero.\n"
" \n"
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5039,7 +5059,7 @@ msgstr ""
" Estado de Salida:\n"
" La orden «coproc» devuelve un estado de salida de 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5061,7 +5081,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve correcto a menos que NOMBRE sea de sólo lectura."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5079,7 +5099,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5104,7 +5124,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado del trabajo reiniciado."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5122,7 +5142,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 en caso contrario."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5170,7 +5190,7 @@ msgstr ""
" Estado de Salida:\n"
" 0 o 1 dependiendo del valor de la EXPRESIÓN."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5285,7 +5305,7 @@ msgstr ""
" \t\tutilizados para decidir qué órdenes se deben guardar en\n"
" \t\tel listado histórico.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5344,7 +5364,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione un argumento\n"
" inválido o falle el cambio de directorio."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5398,7 +5418,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione un\n"
" argumento inválido o falle el cambio de directorio."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5453,7 +5473,7 @@ msgstr ""
" Devuelve correcto, a menos que se proporcione una opción inválida o\n"
" suceda un error."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5491,7 +5511,7 @@ msgstr ""
" Devuelve correcto si se activa NOMBRE_OPCIÓN; falla si se proporciona\n"
" una opción inválida o NOMBRE_OPCIÓN está desactivado."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5510,6 +5530,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5539,9 +5561,11 @@ msgstr ""
" printf(1) y printf(3), printf interpreta:\n"
" \n"
" %b\texpande las secuencias de escape de barra invertida en\n"
-" el argumento correspondiente\n"
-" %q\tcita el argumento de tal forma que se pueda reutilizar como\n"
-" entrada del shell.\n"
+" \t\tel argumento correspondiente\n"
+" %q\tentrecomilla el argumento de tal forma que se pueda reutilizar\n"
+" \t\tcomo entrada del shell.\n"
+" %Q\tigual que %q, pero aplica la precisión al argumento sin\n"
+" \t\tentrecomillar antes de entrecomillarlo\n"
" %(fmt)T muestra la cadena fecha hora resultante de usar FMT como\n"
" una cadena de formato para strftime(3)\n"
" \n"
@@ -5554,7 +5578,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" suceda un error de escritura o de asignación."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5608,7 +5632,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" suceda un error."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5629,7 +5653,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" suceda un error."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5684,7 +5708,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" NOMBRE no tenga una especificación de completado definida."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5751,7 +5775,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" la MATRIZ sea de sólo lectura o no sea una matriz indexada."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5761,6 +5785,9 @@ msgstr ""
" \n"
" Sinónimo de `mapfile'."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: clave de matriz asociativa no válida"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/et.gmo b/po/et.gmo
index c0181254..ac47880e 100644
--- a/po/et.gmo
+++ b/po/et.gmo
Binary files differ
diff --git a/po/et.po b/po/et.po
index 58f0e27e..80c092e6 100644
--- a/po/et.po
+++ b/po/et.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 3.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2006-11-11 16:38+0200\n"
"Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
"Language-Team: Estonian <et@li.org>\n"
@@ -20,57 +20,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "vigane massiivi indeks"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
-#: arrayfunc.c:700
-#, fuzzy, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: vigane tegevuse nimi"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: mitte-numbrilisele indeksile ei saa omistada"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: ei saa luua: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: esimine mitte-tühemik sümbol pole `\"'"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "sulgev `%c' puudub %s sees"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: puudub eraldav koolon"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "`%s': ei saa lahti siduda"
@@ -90,7 +85,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, fuzzy, c-format
msgid "`%s': invalid alias name"
msgstr "%s: vigane tegevuse nimi"
@@ -153,7 +148,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME pole seatud"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "liiga palju argumente"
@@ -181,7 +176,7 @@ msgstr "%s: hoiatus: "
msgid "%s: usage: "
msgstr "%s: hoiatus: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: võti nõuab argumenti"
@@ -196,7 +191,7 @@ msgstr "%s: nõutakse numbrilist argumenti"
msgid "%s: not found"
msgstr "%s: ei leitud"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: vigane võti"
@@ -206,7 +201,7 @@ msgstr "%s: vigane võti"
msgid "%s: invalid option name"
msgstr "%s: vigane võtme nimi"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': ei ole lubatud identifikaator"
@@ -221,7 +216,7 @@ msgstr "vigane signaali number"
msgid "invalid hex number"
msgstr "vigane number"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "vigane number"
@@ -235,88 +230,93 @@ msgstr "%s: vigane signaali spetsifikatsioon"
msgid "`%s': not a pid or valid job spec"
msgstr "`%s': ei ole pid ega korrektne töö spetsifikatsioon"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: mittemuudetav muutuja"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: ei saa eemaldada"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s on piiridest väljas"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s on piiridest väljas"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: sellist tööd pole"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: töökontroll puudub"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "töökontroll puudub"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: piiratud"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "piiratud"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: ei ole sisekäsk"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "kirjutamise viga: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr ""
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: segane töö"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: ei saa eemaldada"
@@ -326,108 +326,108 @@ msgstr "%s: ei saa eemaldada"
msgid "%s: invalid action name"
msgstr "%s: vigane tegevuse nimi"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr ""
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "hoiatus: võti -F ei pruugi töötada nagu te ootate"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "hoiatus: võti -C ei pruugi töötada nagu te ootate"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr ""
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "saab kasutada ainult funktsioonis"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funktsioon ei ole muudetav"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: funktsioon ei ole muudetav"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: masiivi muutujaid ei saa nii kustutada"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dünaamilist laadimist et saa kasutada"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "jagatud objekti %s ei saa avada: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "%s puudub jagatud objektis %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: pole dünaamiliselt laetud"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: pole dünaamiliselt laetud"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: ei saa kustutada: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: on kataloog"
@@ -442,7 +442,7 @@ msgstr "%s: ei ole tavaline fail"
msgid "%s: file is too large"
msgstr "%s: fail on liiga suur"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: kahendfaili ei õnnestu käivitada"
@@ -536,12 +536,12 @@ msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: ei saa avada: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -553,21 +553,21 @@ msgid ""
"\n"
msgstr ""
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr ""
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr ""
-#: builtins/history.def:340
+#: builtins/history.def:338
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: vigane võtme nimi"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr ""
@@ -590,79 +590,79 @@ msgstr ""
msgid "Unknown error"
msgstr "Tundmatu viga"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "oodati avaldist"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, fuzzy, c-format
msgid "%s: not an indexed array"
msgstr "%s: pole massiiv"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr ""
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr ""
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, fuzzy, c-format
msgid "%s: invalid line count"
msgstr "%s: vigane võti"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, fuzzy, c-format
msgid "%s: invalid array origin"
msgstr "%s: vigane võti"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, fuzzy, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: vigane tegevuse nimi"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
#, fuzzy
msgid "empty array variable name"
msgstr "%s: pole massiiv"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr ""
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr ""
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, fuzzy, c-format
msgid "`%c': invalid time format specification"
msgstr "%s: vigane signaali spetsifikatsioon"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr ""
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, fuzzy, c-format
msgid "warning: %s: %s"
msgstr "%s: hoiatus: "
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr ""
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr ""
@@ -758,12 +758,12 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr ""
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "viga lugemisel: %d: %s"
@@ -776,7 +776,7 @@ msgstr ""
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: pole massiiv"
@@ -795,11 +795,11 @@ msgstr "%s: ei saa eemaldada"
msgid "shift count"
msgstr "shift arv"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr ""
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr ""
@@ -866,16 +866,16 @@ msgstr ""
msgid "`%c': bad command"
msgstr "`%c': halb käsklus"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: ei õnnestu lugeda piirangut: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr ""
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: ei õnnestu muuta piirangut: %s"
@@ -894,7 +894,7 @@ msgstr ""
msgid "`%c': invalid symbolic mode character"
msgstr ""
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr ""
@@ -914,97 +914,107 @@ msgstr "Katkestan..."
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "%s: hoiatus: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "tundmatu viga käsus"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr ""
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr ""
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr ""
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: sidumata muutuja"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr ""
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr ""
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr ""
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
#, fuzzy
msgid "pipe error"
msgstr "kirjutamise viga: %s"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: käsku ei ole"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: kahendfaili ei õnnestu käivitada"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: halb interpretaator"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: kahendfaili ei õnnestu käivitada"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s on shelli sisekäsk\n"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr ""
@@ -1017,70 +1027,70 @@ msgstr "avaldise rekursioon on liiga sügav"
msgid "recursion stack underflow"
msgstr ""
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "süntaksi viga avaldises"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "üritati omistada mitte-muutujale"
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "süntaksi viga avaldises"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "nulliga jagamine"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr ""
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr ""
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "eksponent on väiksem kui 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "puudub `)'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "süntaksi viga: oodati operandi"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "süntaksi viga: vigane aritmeetiline operaator"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr ""
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "vigane aritmeetiline baas"
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: vigane võti"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "väärtus on baasiks liiga suur"
-#: expr.c:1647
+#: expr.c:1652
#, fuzzy, c-format
msgid "%s: expression error\n"
msgstr "%s: oodati täisarvude avaldist"
@@ -1089,7 +1099,7 @@ msgstr "%s: oodati täisarvude avaldist"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1108,215 +1118,215 @@ msgstr ""
msgid "start_pipeline: pgrp pipe"
msgstr ""
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr ""
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr ""
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: pid puudub"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr ""
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr ""
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr ""
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr ""
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr ""
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr ""
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr ""
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr ""
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr ""
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr ""
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr ""
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr ""
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr ""
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: töö %d on peatatud"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: sellist tööd pole"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: töö on lõpetatud"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: töö %d on juba taustal"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4320
+#: jobs.c:4307
#, fuzzy, c-format
msgid "%s: line %d: "
msgstr "%s: hoiatus: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr ""
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr ""
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr ""
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr ""
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr ""
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr ""
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr ""
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr ""
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr ""
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
#, fuzzy
msgid "unknown"
msgstr "%s: tundmatu masin"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr ""
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr ""
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr ""
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr ""
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr ""
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr ""
@@ -1358,22 +1368,22 @@ msgstr ""
msgid "network operations not supported"
msgstr ""
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr ""
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr ""
@@ -1391,138 +1401,138 @@ msgstr "Teil on uus kiri kaustas $_"
msgid "The mail in %s has been read\n"
msgstr "Kiri kaustas %s on loetud\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "süntaksi viga: nõutakse aritmeetilist avaldist"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "süntaksi viga: ootamatu `;'"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "süntaksi viga: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr ""
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr ""
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr ""
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "süntaksi viga tingimuslikus avaldises"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "ootamatu märk `%s', oodati `)'"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "oodati `)'"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr ""
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr ""
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr ""
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr ""
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr ""
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr ""
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr ""
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr ""
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr ""
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "süntaksi viga kohal `%s'"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "süntaksi viga: ootamatu faililõpp"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "süntaksi viga"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr ""
@@ -1560,94 +1570,94 @@ msgstr ""
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr ""
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr ""
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "faili deskriptor on piiridest väljas"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: segane ümbersuunamine"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: fail on olemas, ei kirjuta üle"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: piiratud: väljundit ei saa ümber suunata"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr ""
-#: redir.c:222
+#: redir.c:223
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "$%s: sedasi ei saa omistada"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "/tmp puudub, palun looge see!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp peab olema kataloogi nimi"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: vigane võti"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: on kataloog"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Mul ei ole nime!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr ""
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1656,321 +1666,321 @@ msgstr ""
"Kasuta:\t%s [GNU pikk võti] [võti] ...\n"
"\t%s [GNU pikk võti] [võti] skript-fail ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU pikad võtmed:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Käsuinterpretaatori võtmed:\n"
-#: shell.c:2043
+#: shell.c:2069
#, fuzzy
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD või -c käsklus või -O lühivõti\t\t(ainult käivitamine)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s või -o võti\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: vigane operatsioon"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr ""
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr ""
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr ""
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr ""
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr ""
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr ""
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr ""
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr ""
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr ""
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr ""
-#: siglist.c:90
+#: siglist.c:91
#, fuzzy
msgid "Bus error"
msgstr "süntaksi viga"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr ""
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr ""
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr ""
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr ""
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr ""
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr ""
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr ""
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr ""
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr ""
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr ""
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr ""
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr ""
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr ""
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr ""
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr ""
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr ""
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr ""
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr ""
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr ""
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr ""
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr ""
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr ""
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr ""
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr ""
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr ""
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr ""
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr ""
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr ""
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr ""
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr ""
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr ""
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr ""
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr ""
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr ""
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr ""
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr ""
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr ""
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr ""
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr ""
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: vigane võti"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "%s: vigane tegevuse nimi"
-#: subst.c:7256
+#: subst.c:7478
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parameeter on null või pole seatud"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameeter on null või pole seatud"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr ""
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: halb asendus"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: sedasi ei saa omistada"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10367
+#: subst.c:10795
#, fuzzy, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "sulgev `%c' puudub %s sees"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "ei leitud: %s"
@@ -1993,21 +2003,21 @@ msgstr "oodati `)'"
msgid "`)' expected, found %s"
msgstr "oodati `)', saadi %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: eeldati binaarset operaatorit"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: eeldati unaarset operaatorit"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "puudub `]'"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "süntaksi viga: ootamatu `;'"
@@ -2016,101 +2026,106 @@ msgstr "süntaksi viga: ootamatu `;'"
msgid "invalid signal number"
msgstr "vigane signaali number"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: halb väärtus muutujas trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
"run_pending_traps: signaali käsitleja on SIG_DFL, saadan %d (%s) iseendale"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: vigane signaal %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr ""
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "shelli tase (%d) on liiga kõrge, kasutan väärtust 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst"
-#: variables.c:4771
+#: variables.c:4757
#, fuzzy, c-format
msgid "%s has null exportstr"
msgstr "%s: parameeter on null või pole seatud"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr ""
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr ""
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: pole global_variables kontekst"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
-#: variables.c:6387
+#: variables.c:6400
#, fuzzy, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: ei saa avada: %s"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr ""
-#: variables.c:6437
+#: variables.c:6450
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s on piiridest väljas"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
@@ -2195,11 +2210,15 @@ msgid "command [-pVv] command [arg ...]"
msgstr ""
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr ""
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr ""
#: builtins.c:82
@@ -2293,7 +2312,7 @@ msgid "return [n]"
msgstr ""
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr ""
#: builtins.c:144
@@ -2343,7 +2362,7 @@ msgid "type [-afptP] name [name ...]"
msgstr ""
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr ""
#: builtins.c:174
@@ -2385,11 +2404,11 @@ msgid ""
msgstr ""
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr ""
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr ""
#: builtins.c:200
@@ -3195,7 +3214,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3236,7 +3257,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3248,7 +3269,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3334,7 +3355,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3356,7 +3377,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3375,7 +3396,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3396,7 +3417,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3407,7 +3428,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3421,7 +3442,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3435,7 +3456,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3518,7 +3539,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3526,7 +3547,7 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -3538,7 +3559,7 @@ msgid ""
" Always succeeds."
msgstr ""
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3582,7 +3603,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -3612,7 +3633,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3662,7 +3683,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3680,7 +3701,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3712,7 +3733,7 @@ msgid ""
" children."
msgstr ""
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3727,7 +3748,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3740,7 +3761,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3757,7 +3778,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3777,7 +3798,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3793,7 +3814,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3804,7 +3825,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -3825,29 +3846,31 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3860,7 +3883,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -3874,7 +3897,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -3885,7 +3908,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -3899,7 +3922,7 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -3910,7 +3933,7 @@ msgid ""
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -3938,7 +3961,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -3992,7 +4015,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4023,7 +4046,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4050,7 +4073,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -4079,7 +4102,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4099,7 +4122,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4122,6 +4145,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -4138,7 +4163,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4169,7 +4194,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4182,7 +4207,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4214,7 +4239,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4256,13 +4281,17 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for `mapfile'."
msgstr ""
+#, fuzzy, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: vigane tegevuse nimi"
+
#, fuzzy
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
diff --git a/po/fi.gmo b/po/fi.gmo
index 31ddbe45..7f4b31dd 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 6d13f2d3..166fe272 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2009-05-09 15:13+0300\n"
"Last-Translator: Pekka Niemi <pekka.niemi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -25,59 +25,54 @@ msgstr ""
msgid "bad array subscript"
msgstr "virheellinen taulukkoindeksi"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: indeksoitua taulukkoa ei voi muuttaa assosiatiiviseksi"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: virheellinen assosiatiivinen indeksi"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: ei voida sijoittaa epänumeeriseen indeksiin"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
"%s: %s: assosiatiiviseen taulukkoon sijoitettaessa täytyy käyttää "
"avainindeksiä"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: ei voida luoda: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: komennolle ei löydy näppäinkarttaa"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: ensimmäinen ei-tyhjä merkki ei ole â€\"â€"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "ei loppumerkkiä â€%c†rivissä %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: puuttuva kaksoispiste-erotin"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "â€%sâ€: ei voida irrottaa"
@@ -97,7 +92,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, fuzzy, c-format
msgid "`%s': invalid alias name"
msgstr "â€%sâ€: virheellinen näppäinkartan nimi"
@@ -174,7 +169,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME-ympäristömuuttujaa ei ole asetettu"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "liian monta argumenttia"
@@ -202,7 +197,7 @@ msgstr "varoitus: "
msgid "%s: usage: "
msgstr "%s: käyttö: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: valitsin vaatii argumentin"
@@ -217,7 +212,7 @@ msgstr "%s: vaaditaan numeerinen argumentti"
msgid "%s: not found"
msgstr "%s: ei löytynyt"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: virheellinen valitsin"
@@ -227,7 +222,7 @@ msgstr "%s: virheellinen valitsin"
msgid "%s: invalid option name"
msgstr "%s: virheellinen valitsimen nimi"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "â€%sâ€: virheellinen tunniste"
@@ -240,7 +235,7 @@ msgstr "virheellinen oktaaliluku"
msgid "invalid hex number"
msgstr "virheellinen heksadesimaaliluku"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "virheellinen luku"
@@ -254,88 +249,93 @@ msgstr "%s: virheellinen signaalimääritys"
msgid "`%s': not a pid or valid job spec"
msgstr "â€%sâ€: ei ole prosessitunnus eikä kelvollinen työtunniste"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: kirjoitussuojattu muuttuja"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: ei voida poistaa"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s rajojen ulkopuolella"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argumentti"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s rajojen ulkopuolella"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: työtä ei löydy"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: ei työnohjausta"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "ei työnohjausta"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: rajoitettu"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "rajoitettu"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: ei ole komentotulkin sisäänrakennettu komento"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "kirjoitusvirhe: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "pääteasetuksia asetettaessa tapahtui virhe: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "pääteasetuksia luettaessa tapahtui virhe: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: nykyhakemistoa luettaessa tapahtui virhe: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: ei ole yksiselitteinen työtunniste"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: ei voida poistaa: kirjoitussuojattu %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: ei voida poistaa"
@@ -345,108 +345,108 @@ msgstr "%s: ei voida poistaa"
msgid "%s: invalid action name"
msgstr "%s: virheellinen toiminnon nimi"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ei lavennusmääritystä"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "varoitus: -F -valitsin ei ehkä toimi odotetusti"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "varoitus: -C -valitsin ei ehkä toimi odotetusti"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "tällä hetkellä komennon lavennusfunktiota ei suoriteta"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "voidaan käyttää ainoastaan funktiossa"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "â€-fâ€:ää ei voida käyttää funktioiden luomiseen"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: kirjoitussuojattu funktio"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "â€-fâ€:ää ei voida käyttää funktioiden luomiseen"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: kirjoitussuojattu funktio"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: taulukkomuuttujia ei voi tuhota näin"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: assosiatiivista taulukkoa ei voi muuttaa indeksoiduksi"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynaaminen lataus ei ole käytettävissä"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "jaettua objektia %s ei voida avata: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "kohdetta %s ei löydy jaetusta objektista %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: ei dynaamisesti ladattu"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: ei dynaamisesti ladattu"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: ei voida poistaa: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: on hakemisto"
@@ -461,7 +461,7 @@ msgstr "%s: ei tavallinen tiedosto"
msgid "%s: file is too large"
msgstr "%s: tiedosto on liian iso"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: binääritiedostoa ei voida suorittaa"
@@ -557,12 +557,12 @@ msgstr ""
"Ohjeita kohteelle â€%s†ei löydy. Kokeile â€help helpâ€, â€man -k %s†tai \n"
"â€info %sâ€."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: ei voida avata: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -583,21 +583,21 @@ msgstr ""
"Asteriski (*) nimen vieressä tarkoittaa, että komennon käyttö on estetty.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "valitsimista -anrw voidaan käyttää vain yhtä"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "sijainti komentohistoriassa"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: virheellinen valitsimen nimi"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: historiaviittaus epäonnistui"
@@ -620,78 +620,78 @@ msgstr "%s: argumenttien pitää olla prosessi- tai työtunnisteita"
msgid "Unknown error"
msgstr "Tuntematon virhe"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "odotettiin lauseketta"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, fuzzy, c-format
msgid "%s: not an indexed array"
msgstr "%s: ei ole taulukkomuuttuja"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: virheellinen tiedostokahvamääritys"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: virheellinen tiedostokahva: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: virheellinen rivimäärä"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: virheellinen taulukkoindeksi"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: virheellinen paluukutsumäärä"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "tyhjä taulukkomuuttujan nimi"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "vaaditaan tukea taulukkomuuttujille"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "â€%sâ€: puuttuva muotoilumerkki"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, fuzzy, c-format
msgid "`%c': invalid time format specification"
msgstr "%s: virheellinen aikakatkaisumääritys"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "â€%câ€: virheellinen muotoilumerkki"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "varoitus: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "\\x:stä puuttuu heksadesimaalinumero"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, fuzzy, c-format
msgid "missing unicode digit for \\%c"
msgstr "\\x:stä puuttuu heksadesimaalinumero"
@@ -839,12 +839,12 @@ msgstr ""
" \n"
" Sisäänrakennettu â€dirsâ€-komento näyttää hakemistopinon sisällön."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: virheellinen aikakatkaisumääritys"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "lukuvirhe: %d: %s"
@@ -857,7 +857,7 @@ msgstr "â€return†on käytettävissä vain funktiossa tai ladatussa skriptiss
msgid "cannot simultaneously unset a function and a variable"
msgstr "funktiota ja muuttujaa ei voi poistaa yhtä aikaa"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ei ole taulukkomuuttuja"
@@ -876,13 +876,13 @@ msgstr "%s: ei voida poistaa"
msgid "shift count"
msgstr "siirtolaskuri"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr ""
"komentotulkin valitsimia ei voida laittaa päällä ja ottaa pois päältä "
"samanaikaisesti"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: virheellinen komentotulkin valitsimen nimi"
@@ -949,16 +949,16 @@ msgstr "%s: virheellinen rajoitusargumentti"
msgid "`%c': bad command"
msgstr "â€%câ€: virheellinen komento"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: rajoitusta ei saada: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "rajoitus"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: rajoitusta ei voida muokata: %s"
@@ -977,7 +977,7 @@ msgstr "â€%câ€: virheellinen symbolisen tilan operaattori"
msgid "`%c': invalid symbolic mode character"
msgstr "â€%câ€: virheellinen symbolisen tilan merkki"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " rivi "
@@ -997,96 +997,106 @@ msgstr "Keskeytetään..."
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "varoitus: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "tuntematon komentovirhe"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "virheellinen komentotyyppi"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "virheellinen liittäjä"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "virheellinen hyppy"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: sitomaton muuttuja"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aaikakatkaisu: automaattinen uloskirjautuminen\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "syötettä ei voida lukea tiedostosta /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "AJAN MUOTOMÄÄRITYS: â€%câ€: virheellinen muotoilumerkki"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "putkitusvirhe"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: rajoitettu: komentojen nimissä ei voi käyttää â€/â€-merkkiä"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: komentoa ei löydy"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: binääritiedostoa ei voida suorittaa"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: virheellinen tulkki"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: binääritiedostoa ei voida suorittaa"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s on komentotulkin sisäänrakennettu komento\n"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "tiedostokahvaa %d ei voida kopioida kahvaksi %d"
@@ -1099,70 +1109,70 @@ msgstr "lausekkeen rekursiomäärä ylittyi"
msgid "recursion stack underflow"
msgstr "rekursiopinon alivuoto"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "lauseoppivirhe lausekkeessa"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "yritettiin sijoittaa objektiin, joka ei ole muuttuja"
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "lauseoppivirhe lausekkeessa"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "jako nollalla"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "bugi: virheellinen sijoitusavainsana"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "â€:â€:ttä odotettiin ehdolliseen lausekkeeseen"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "eksponentti on pienempi kuin 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "odotettiin muuttujaa ++:n tai --:n jälkeen"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "puuttuva â€)â€"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "lauseoppivirhe: odotettiin operandia"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "lauseoppivirhe: virheellinen aritmetiikkaoperaattori"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (virheellinen avainsana on â€%sâ€)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "virheellinen lukujärjestelmä"
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: virheellinen rivimäärä"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "liian iso luku lukujärjestelmälle"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: virhe lausekkeessa\n"
@@ -1171,7 +1181,7 @@ msgstr "%s: virhe lausekkeessa\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: ylempiin hakemistoihin ei päästä"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d"
@@ -1190,168 +1200,168 @@ msgstr "save_bash_input: uudella tiedostokahvalla %d on jo puskuri"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp-putki"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "haarautettu prosessi-id %d on ajossa olevalla työllä %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "poistetaan pysäytetty työ %d prosessiryhmästä %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: prosessi %5ld (%s) on merkattu vielä toimivaksi"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: prosessitunnusta ei löydy."
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signaali %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Valmis"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Pysäytetty"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Pysäytetty(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Ajossa"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Valmis(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Poistui %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Tuntematon tila"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(luotiin core-tiedosto)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (työhakemisto: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "lapsiprosessin setpgid (%ld => %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: prosessi %ld ei ole tämän komentotulkin lapsiprosessi"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Prosessista %ld ei ole tietoja"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: työ %d on pysäytetty"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: työtä ei löydy"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: työ on lopetettu"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: työ %d on jo taustalla"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: rivi %d:"
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (luotiin core-tiedosto)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(työhakemisto nyt: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp epäonnistui"
-#: jobs.c:4447
+#: jobs.c:4434
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: vuonhallinta"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: vuonhallinta"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "päätteen prosessiryhmää ei voitu asettaa (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "tällä komentotulkilla ei ole työnohjausta"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: varmistus epäonnistui: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1360,49 +1370,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: varmistus epäonnistui\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "tuntematon"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: vapaitten listan lohko ylikirjoittui"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: kutsuttiin argumenttina jo vapautettu lohko"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: kutsuttuun argumenttina varaamaton lohko"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: alku- ja loppulohkojen koot eroavat"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: kutsuargumentti on varaamaton lohko"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: alku- ja loppulohkojen koot eroavat"
@@ -1444,22 +1454,22 @@ msgstr "%s: virheellinen verkkopolkumääritys"
msgid "network operations not supported"
msgstr "verkko-operaatioita ei ole tuettu"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:292
+#: locale.c:294
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "xrealloc: %s:%d: ei voida varata %lu tavua"
-#: locale.c:294
+#: locale.c:296
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "xrealloc: %s:%d: ei voida varata %lu tavua"
@@ -1477,140 +1487,140 @@ msgstr "Sinulla on uutta postia laatikossa $_"
msgid "The mail in %s has been read\n"
msgstr "Posti laatikossa %s on luettu\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "lauseoppivirhe: vaaditaan aritmeettinen lauseke"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "lauseoppivirhe: odottamaton â€;â€"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "lauseoppivirhe: â€((%s))â€"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: virheellinen käskytyyppi %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
"here-dokumentti rivillä %d päättyi tiedoston loppumiseen (haluttiin â€%sâ€)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: uudelleenohjaus â€%d†rajojen ulkopuolella"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "odottamaton EOF (tiedostonloppu) odotettaessa sulkevaa â€%câ€"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "odottamaton EOF odotettaessa â€]]â€"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "lauseoppivirhe ehdollisessa lausekkeessa: odottamaton avainsana â€%sâ€"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "lauseoppivirhe ehdollisessa lausekkeessa"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "odottamaton avainsana â€%sâ€, odotettiin â€)â€"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "odototettiin â€)â€"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "odottamaton argumentti â€%s†ehdolliselle unaariselle operaattorille"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "odottamaton argumentti ehdolliselle unaariselle operaattorille"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
"odottamaton avainsana â€%sâ€, odotettiin ehdollista binääristä operaattoria"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "odotettiin ehdollista binääristä operaattoria"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "odottamaton argumentti â€%s†ehdolliselle binääriselle operaattorille"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "odottamaton argumentti ehdolliselle binääriselle operaattorille"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "odottamaton avainsana â€%c†ehdollisessa komennossa"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "odottamaton avainsana â€%s†ehdollisessa komennossa"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "odottamaton avainsana %d ehdollisessa komennossa"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "lauseoppivirhe lähellä odottamatonta avainsanaa â€%sâ€"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "lauseoppivirhe lähellä â€%sâ€"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "lauseoppivirhe: odottamaton tiedostonloppu"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "lauseoppivirhe"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Kirjoita â€%s†poistuaksesi komentotulkista.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "Odottamaton EOF odotettaessa vastaavaa â€)â€"
@@ -1648,94 +1658,94 @@ msgstr ""
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr ""
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: â€%câ€: virheellinen muotoilumerkki"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "tiedostokahva rajojen ulkopuolella"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: epämääräinen uudelleenohjaus"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: olemassa olevan tiedoston päälle ei voida kirjoittaa"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: rajoitettu: tulostusta ei voida uudelleenohjata"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "here-dokumentille ei voida luoda väliaikaistiedostoa: %s"
-#: redir.c:222
+#: redir.c:223
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: listaa ei voida sijoittaa taulukon alkioon"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port-muotoa ei tueta ilman tietoliikennettä"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "virhe uudelleenohjauksessa: tiedostokahvaa ei voida kopioida"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "/tmp-hakemistoa ei löytynyt, luo se!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp:n pitää olla kelvollinen hakemiston nimi"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: virheellinen valitsin"
-#: shell.c:1319
+#: shell.c:1343
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d"
-#: shell.c:1330
+#: shell.c:1354
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: on hakemisto"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Minulla ei ole nimeä!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versio %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1744,326 +1754,326 @@ msgstr ""
"Käyttö:\t%s[GNU:n pitkä valitsin] [valitsin] ...\n"
"\t%s [GNU:n pitkä valitsin] [valitsin] komentotiedosto ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU:n pitkät valitsimet:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Komentotulkin valitsimet:\n"
-#: shell.c:2043
+#: shell.c:2069
#, fuzzy
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr ""
"\t-irsD tai -c komento tai -O shopt_option (ainoastaan käynnistettäessä)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s tai -o -valitsin\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Kirjoita â€%s -c 'help set'†saadaksesi lisätietoja komentotulkin "
"valitsimista.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Kirjoita â€%s -c help†saadaksesi lisätietoja komentotulkin "
"sisäänrakennetuista komennoista.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Raportoi virheet komennolla â€bashbugâ€.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: virheellinen operaatio"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Väärä signaali"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Linjankatkaisu"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Keskeytys"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Lopetettu"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Virheellinen käsky"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Jäljitys/katkaisupisteansa"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT-käsky"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT-käsky"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Liukulukupoikkeus"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Tapettu"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Väylävirhe"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Muistialueen ylitys"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Virheellinen järjestelmäkutsu"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Katkennut putki"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Herätyskello"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Päätetty"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Kiireellinen I/O-ehto"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Pysäytetty (signaali)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Jatka"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Lapsiprosessin kuolema tai pysähtyminen"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Pysäytetty (päätteen syöte)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Pysäytetty (päätteen tuloste)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O on valmis"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU-rajoitus"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Tiedostorajoitus"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Hälytys (virtuaalinen)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Hälytys (profiili)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Ikkuna vaihtunut"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Tietuelukko"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Käyttäjän määrittelemä signaali 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Käyttäjän määrittelemä signaali 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT-syöte odottaa"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "sähkökatko lähellä"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "järjestelmän kaatuminen lähellä"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "siirrä prosessi toiselle CPU:lle"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "ohjelmointivirhe"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT-monitorointitila käytössä"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT-monitorointitila peruttu"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT-äänisekvenssi on valmistunut"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Informaatiopyyntö"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Tuntematon signaali #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "virheellinen korvaus: ei sulkevaa â€%s†jonossa %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: listaa ei voida sijoittaa taulukon alkioon"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "putkea ei voida luoda prosessin korvaamista varten"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "lapsiprosessia ei voida luoda prosessin korvaamista varten"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nimettyä putkea %s ei voida avata lukemista varten"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "nimettyä putkea %s ei voida avata kirjoitusta varten"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "nimettyä putkea %s ei voida kopioida tiedostokahvaksi %d"
-#: subst.c:6213
+#: subst.c:6370
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "virheellinen korvaus: ei sulkevaa â€`†jonossa %s"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "putkea ei voida luoda komennon korvaamista varten"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "ei voida luoda lapsiprosessia komennon korvaamista varten"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: putkea ei voida kopioida tiedostokahvaksi 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: virheellinen rivimäärä"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "%s: virheellinen toiminnon nimi"
-#: subst.c:7256
+#: subst.c:7478
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parametria ei ole tai sitä ei ole asetettu"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametria ei ole tai sitä ei ole asetettu"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: alimerkkijonolauseke < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: virheellinen korvaus"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ei voida asettaa näin"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "virheellinen korvaus: ei sulkevaa â€`†jonossa %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "ei osumia: %s"
@@ -2086,21 +2096,21 @@ msgstr "odotettiin â€)â€"
msgid "`)' expected, found %s"
msgstr "odotettiin â€)â€, löydettiin %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: odotettiin binääristä operaattoria"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: odotettiin unaarista operaattoria"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "puuttuva â€]â€"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "lauseoppivirhe: odottamaton â€;â€"
@@ -2109,17 +2119,17 @@ msgstr "lauseoppivirhe: odottamaton â€;â€"
msgid "invalid signal number"
msgstr "virheellinen signaalinumero"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: virheellinen arvo trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2127,86 +2137,91 @@ msgstr ""
"run_pending_traps: signaalikäsittelijä on SIG_DFL, lähetän %d (%s) uudelleen "
"itselleni"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: virheellinen signaali %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "virhe tuotaessa â€%sâ€:n funktiomääritystä"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "komentotulkkitaso (%d) liian korkea, palautetaan 1:ksi"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ei funktiokontekstia nykytilassa"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ei funktiokontekstia nykytilassa"
-#: variables.c:4771
+#: variables.c:4757
#, fuzzy, c-format
msgid "%s has null exportstr"
msgstr "%s: parametria ei ole tai sitä ei ole asetettu"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "virheellinen merkki %d %s:n exportstr:ssä"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "ei =:ä kohteen %s exportstr:ssä"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: shell_variablesin alku ei ole funktiokonteksti"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: ei global_variables-kontekstia"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: shell_variablesin alku ei väliaikaisten ympäristömuuttujien "
"ympäristössä"
-#: variables.c:6387
+#: variables.c:6400
#, fuzzy, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: ei voida avata: %s"
-#: variables.c:6392
+#: variables.c:6405
#, fuzzy, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%d: virheellinen tiedostokahva: %s"
-#: variables.c:6437
+#: variables.c:6450
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s rajojen ulkopuolella"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright © 2009 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2301,12 +2316,16 @@ msgstr "command [-pVv] komento [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFilrtux] [-p] [niemi[=arvo] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFilrtux] [-p] nimi[=arvo] ..."
#: builtins.c:82
@@ -2413,7 +2432,7 @@ msgstr "return [n]"
#: builtins.c:142
#, fuzzy
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [--abefhkmnptuvxBCHP] [-o valitsinnimi] [arg ...]"
#: builtins.c:144
@@ -2464,7 +2483,7 @@ msgstr "type [-afptP] nimi [nimi ...]"
#: builtins.c:171
#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHacdefilmnpqrstuvx] [raja]"
#: builtins.c:174
@@ -2510,11 +2529,13 @@ msgstr ""
"KOMENNOT; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while KOMENNOT; do KOMENNOT; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until KOMENNOT; do KOMENNOT; done"
#: builtins.c:200
@@ -3920,7 +3941,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3999,7 +4022,7 @@ msgstr ""
" Paluuarvo on nolla, ellei törmätä tiedoston loppumiseen, aikarajan\n"
" ylitykseen tai mikäli -u:lle annetaan virheellinen tiedostokahva."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4023,7 +4046,7 @@ msgstr ""
"suorittamassa\n"
" funktiota tai skriptiä."
-#: builtins.c:1054
+#: builtins.c:1055
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4194,7 +4217,7 @@ msgstr ""
" Paluuarvo:\n"
" Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta."
-#: builtins.c:1139
+#: builtins.c:1140
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4233,7 +4256,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai NIMI on kirjoitussuojattu."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4267,7 +4290,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai NIMI on virheellinen."
-#: builtins.c:1180
+#: builtins.c:1181
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4306,7 +4329,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai NIMI on virheellinen."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4325,7 +4348,7 @@ msgstr ""
" Paluuarvo:\n"
" Palauttaa onnistuneen ellei N ole negatiivinen tai suurempi kuin $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4350,7 +4373,7 @@ msgstr ""
"epäonnistuu\n"
" mikäli TIEDOSTOA ei voida lukea."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4377,7 +4400,7 @@ msgstr ""
"tapahtuu\n"
" virhe."
-#: builtins.c:1261
+#: builtins.c:1262
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4540,7 +4563,7 @@ msgstr ""
" Palauttaa onnistumisen jos LAUSEKE evaluoituu todeksi; epäonnistuu jos\n"
" LAUSEKE evaluoituu vääräksi tai on annettu virheellinen argumentti."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4552,7 +4575,7 @@ msgstr ""
" Tämä on sisäänrakennetun â€testâ€-komennon synonyymi, mutta viimeisen\n"
" argumentin pitää olla â€]â€, joka sulkee avaavan â€[â€:n."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4572,7 +4595,7 @@ msgstr ""
" Paluuarvo:\n"
" Onnistuu aina."
-#: builtins.c:1364
+#: builtins.c:1365
#, fuzzy
msgid ""
"Trap signals and other events.\n"
@@ -4654,7 +4677,7 @@ msgstr ""
"annettu\n"
" virheellinen valitsin."
-#: builtins.c:1400
+#: builtins.c:1401
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4711,7 +4734,7 @@ msgstr ""
" Palauttaa onnistuneen mikäli kaikki NIMET löytyivät, muussa tapauksessa\n"
" epäonnistuu."
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4803,7 +4826,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai tapahtuu virhe."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4838,7 +4861,7 @@ msgstr ""
" Palauttaa onnistuneen ellei TILA ole virheellinen tai on annettu \n"
" virheellinen valitsin."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4884,7 +4907,7 @@ msgstr ""
" Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n"
" virheellinen valitsin."
-#: builtins.c:1533
+#: builtins.c:1534
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4910,7 +4933,7 @@ msgstr ""
" Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n"
" virheellinen valitsin."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4932,7 +4955,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4964,7 +4987,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5001,7 +5024,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5030,7 +5053,7 @@ msgstr ""
" Paluuarvo:\n"
" KOMENTOKETJUN paluuarvo."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5049,7 +5072,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5083,12 +5106,14 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5101,12 +5126,14 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen komennon paluuarvo."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5119,7 +5146,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1671
+#: builtins.c:1672
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5142,7 +5169,7 @@ msgstr ""
" Paluuarvo:\n"
" KOMENNON paluuarvo."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5165,7 +5192,7 @@ msgstr ""
" Paluuarvo:\n"
" Onnistuu, ellei NIMI ole kirjoitussuojattu."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5184,7 +5211,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5210,7 +5237,7 @@ msgstr ""
" Paluuarvo:\n"
" Työn tila."
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
@@ -5229,7 +5256,7 @@ msgstr ""
" Paluuarvo:\n"
" Palauttaa 1, jos LAUSEKKEEN arvo on 0; muuten palauttaa 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5283,7 +5310,7 @@ msgstr ""
" Paluuarvo:\n"
" 0 tai 1 riippuen LAUSEKKEEN arvosta."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5386,7 +5413,7 @@ msgstr ""
" HISTIGNORE\tKaksoispistein eroteltu lista mallineista, joita käytetään\n"
" \t\tpäätettäessä komentojen tallentamisesta historialistaan.\n"
-#: builtins.c:1821
+#: builtins.c:1822
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5445,7 +5472,7 @@ msgstr ""
"tai\n"
" hakemiston vaihtaminen epäonnistuu."
-#: builtins.c:1855
+#: builtins.c:1856
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5493,7 +5520,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen argumentti tai\n"
" hakemiston vaihto epäonnistuu."
-#: builtins.c:1885
+#: builtins.c:1886
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5548,7 +5575,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai tapahtuu virhe."
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5586,7 +5613,7 @@ msgstr ""
" Palauttaa onnistuneen, mikäli VALITSIN on käytössä, epäonnistuu jos on\n"
" annettu virheellinen VALITSIN tai VALITSIN ei ole käytössä."
-#: builtins.c:1937
+#: builtins.c:1938
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5610,6 +5637,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5646,7 +5675,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n"
" tapahtuu kirjoitus- tai sijoitusvirhe."
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5698,7 +5727,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n"
" tapahtuu virhe."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5721,7 +5750,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n"
" tapahtuu virhe."
-#: builtins.c:2016
+#: builtins.c:2019
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5776,7 +5805,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n"
" NIMELLE ei ole määritetty täydennysmääritystä."
-#: builtins.c:2047
+#: builtins.c:2050
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5850,7 +5879,7 @@ msgstr ""
" tai TAULUKKO on kirjoitussuojattu."
# Changed " characters into â€...
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5860,6 +5889,10 @@ msgstr ""
" \n"
" â€mapfileâ€:n synonyymi."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: virheellinen assosiatiivinen indeksi"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/fr.gmo b/po/fr.gmo
index c093d8c0..39d8520c 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index e2f75890..2d503ed4 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,15 +1,15 @@
# Messages français pour GNU concernant bash.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2022 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# Michel Robitaille <robitail@IRO.UMontreal.CA>, 2004
# Christophe Combelles <ccomb@free.fr>, 2008, 2009, 2010, 2011
-# Frédéric Marchal <fmarchal@perso.be>, 2020
+# Frédéric Marchal <fmarchal@perso.be>, 2022
msgid ""
msgstr ""
-"Project-Id-Version: bash-5.1\n"
+"Project-Id-Version: bash-5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-11 14:47+0100\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-19 10:44+0200\n"
"Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
@@ -23,57 +23,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "mauvais indice de tableau"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: retire l'attribut nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s : impossible de convertir un tableau indexé en associatif"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s : clé non valable pour le tableau associatif"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s : impossible d'assigner à un index non numérique"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s : %s : l'assignation d'un tableau associatif doit se faire avec un indice"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s : impossible de créer : %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command : impossible de trouver le mappage clavier pour la commande"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s : le premier caractère non vide n'est pas « \" »"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "pas de « %c » de fermeture dans %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s : virgule de séparation manquante"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "« %s » : impossible à délier dans la commande keymap"
@@ -93,7 +88,7 @@ msgstr "expansion des accolades : échec lors de l'allocation mémoire pour %u
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansion des accolades : échec de l'allocation mémoire pour « %s »"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "« %s » : nom d'alias non valable"
@@ -164,7 +159,7 @@ msgstr ""
msgid "HOME not set"
msgstr "« HOME » non défini"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "trop d'arguments"
@@ -191,7 +186,7 @@ msgstr "avertissement :"
msgid "%s: usage: "
msgstr "%s : utilisation :"
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s : l'option nécessite un argument"
@@ -206,7 +201,7 @@ msgstr "%s : argument numérique nécessaire"
msgid "%s: not found"
msgstr "%s : non trouvé"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s : option non valable"
@@ -216,7 +211,7 @@ msgstr "%s : option non valable"
msgid "%s: invalid option name"
msgstr "%s : nom d'option non valable"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "« %s » : identifiant non valable"
@@ -229,7 +224,7 @@ msgstr "nombre octal non valable"
msgid "invalid hex number"
msgstr "nombre hexadécimal non valable"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "nombre non valable"
@@ -243,88 +238,93 @@ msgstr "%s : indication de signal non valable"
msgid "`%s': not a pid or valid job spec"
msgstr "« %s » : ce n'est pas un n° de processus ou une spécification de tâche valable"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s : variable en lecture seule"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s : impossible d'assigner"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s : %s hors plage"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s hors plage"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s : tâche inexistante"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s : pas de contrôle de tâche"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "pas de contrôle de tâche"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s : restreint"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "restreint"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s : ceci n'est pas une primitive du shell"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "erreur d'écriture : %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "erreur lors de la définition de l'attribut du terminal : %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "erreur lors de la récupération de l'attribut du terminal : %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s : erreur de détermination du répertoire actuel : %s : %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s : spécification de tâche ambiguë"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "l'aide n'est pas disponible dans cette version"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s : « unset » impossible : %s est en lecture seule"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s : « unset » impossible"
@@ -334,108 +334,108 @@ msgstr "%s : « unset » impossible"
msgid "%s: invalid action name"
msgstr "%s : nom d'action non valable"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s : pas d'indication de complètement"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "avertissement : l'option « -F » peut fonctionner différemment de ce à quoi vous vous attendez"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "avertissement : l'option « -C » peut fonctionner différemment de ce à quoi vous vous attendez"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "fonction de complétion actuellement non en cours d'exécution"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "utilisable seulement dans une fonction"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s : fonction en lecture seule"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s : la variable de référence ne peut pas être un tableau"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s : références bouclées sur la même variable interdites"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s : référence de nom circulaire"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "« %s » : nom de variable invalide pour une référence de nom"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s : fonction en lecture seule"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s : l'assignation d'un tableau composé entre apostrophes est dépréciée"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s : impossible de détruire des variables tableaux de cette façon"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s : impossible de convertir un tableau indexé en tableau associatif"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s : l'assignation d'un tableau composé entre apostrophes est dépréciée"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "chargement dynamique non disponible"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "impossible d'ouvrir l'objet partagé %s : %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "impossible de trouver %s dans l'objet partagé %s : %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s : la primitive dynamique a déjà été chargée"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "la fonction de chargement de %s retourne un échec (%d) : pas chargé"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s : non chargé dynamiquement"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s : impossible d'effacer : %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s : ceci est un répertoire"
@@ -450,7 +450,7 @@ msgstr "%s : ceci n'est pas un fichier régulier"
msgid "%s: file is too large"
msgstr "%s : le fichier est trop grand"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s : ne peut exécuter le fichier binaire"
@@ -545,12 +545,12 @@ msgstr ""
msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr "Aucune rubrique d'aide ne correspond à « %s ». Essayez « help help », « man -k %s » ou « info %s »."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s : impossible d'ouvrir : %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -570,21 +570,21 @@ msgstr ""
"Une astérisque (*) à côté d'un nom signifie que la commande est désactivée.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "impossible d'utiliser plus d'une option parmi « -anrw »"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "position dans l'historique"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s : horodatage non valable"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s : l'expansion de l'historique a échoué"
@@ -607,78 +607,78 @@ msgstr "%s : les arguments doivent être des identifiants de tâche ou de proces
msgid "Unknown error"
msgstr "Erreur inconnue"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "une expression est attendue"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s : n'est pas un tableau indexé"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s : spécification de descripteur de fichier non valable"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d : descripteur de fichier non valable : %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s : nombre de lignes non valable"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s : origine de tableau non valable"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s : quantum de callback non valable"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "nom de variable tableau vide"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "nécessité de prise en charge des variables tableaux"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "« %s » : caractère de format manquant"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "« %c » : spécification de format d'heure incorrecte"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "« %c » : caractère de format non permis"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "avertissement : %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "problème d'analyse du format : %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "chiffre hexadécimal manquant pour \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "chiffre unicode manquant pour \\%c"
@@ -828,12 +828,12 @@ msgstr ""
" \n"
" Vous pouvez voir la pile des répertoires avec la commande « dirs »."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s : spécification de délai d'expiration non valable"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "erreur de lecture : %d : %s"
@@ -846,7 +846,7 @@ msgstr "« return » n'est possible que depuis une fonction ou depuis un scrip
msgid "cannot simultaneously unset a function and a variable"
msgstr "« unset » ne peut pas s'appliquer simultanément à une fonction et à une variable"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s : n'est pas une variable tableau"
@@ -865,11 +865,11 @@ msgstr "%s : impossible d'exporter"
msgid "shift count"
msgstr "nombre de « shift »"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "les options du shell ne peuvent pas être simultanément activées et désactivées"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s : nom d'option du shell non valable"
@@ -936,16 +936,16 @@ msgstr "%s : argument de limite non valable"
msgid "`%c': bad command"
msgstr "« %c » : mauvaise commande"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s : impossible d'obtenir la limite : %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limite"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s : impossible de modifier la limite : %s"
@@ -964,7 +964,7 @@ msgstr "« %c » : opérateur de mode symbolique non valable"
msgid "`%c': invalid symbolic mode character"
msgstr "« %c » : caractère de mode symbolique non valable"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " ligne "
@@ -982,98 +982,108 @@ msgstr "Annulation…"
#: error.c:287
#, c-format
msgid "INFORM: "
-msgstr "INFORM: "
+msgstr "INFORM : "
+
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "avertissement de DÉBOGAGE :"
-#: error.c:462
+#: error.c:488
msgid "unknown command error"
msgstr "erreur de commande inconnue"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "mauvais type de commande"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "mauvais connecteur"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "mauvais saut"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s : variable sans liaison"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aattente de données expirée : déconnexion automatique\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "l'entrée standard ne peut pas être redirigée depuis /dev/null : %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT : « %c » : caractère de format non valable"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] existe encore"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "erreur de tube"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval : dépassement de la profondeur maximum d'imbrication d'évaluations (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s : dépassement de la profondeur maximum d'imbrication de sources (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s : dépassement de la profondeur maximum d'imbrication de fonctions (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s : restriction : « / » ne peut pas être spécifié dans un nom de commande"
+msgstr "%s : restriction : « / » ne peut pas être spécifié dans un nom de commande"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
-msgstr "%s : commande introuvable"
+msgstr "%s : commande introuvable"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
-msgstr "%s : %s"
+msgstr "%s : %s"
+
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s : ne peut exécuter : le fichier requis n'a pas été trouvé"
-#: execute_cmd.c:5854
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
-msgstr "%s : %s : mauvais interpréteur"
+msgstr "%s : %s : mauvais interpréteur"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
-msgstr "%s : impossible d'exécuter le fichier binaire : %s"
+msgstr "%s : impossible d'exécuter le fichier binaire : %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "« %s » : est une primitive spéciale"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "impossible de dupliquer le fd %d vers le fd %d"
@@ -1086,68 +1096,68 @@ msgstr "dépassement du niveau de récursivité dans l'expression"
msgid "recursion stack underflow"
msgstr "débordement négatif de la pile de récursivité"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "erreur de syntaxe dans l'expression"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "tentative d'affectation à une non-variable"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "erreur de syntaxe dans l'affectation d'une variable"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "division par 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "bogue : mauvais symbole pour expassign"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "« : » attendu pour une expression conditionnelle"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "exposant négatif"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identifiant attendu après un pré-incrément ou un pré-décrément"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "« ) » manquante"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "erreur de syntaxe : opérande attendu"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "erreur de syntaxe : opérateur arithmétique non valable"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s : %s (le symbole erroné est « %s »)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "base arithmétique non valable"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "constante entière invalide"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "valeur trop grande pour la base"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s : erreur d'expression\n"
@@ -1156,7 +1166,7 @@ msgstr "%s : erreur d'expression\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd : ne peut accéder aux répertoires parents"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "impossible de réinitialiser le mode « nodelay » pour le fd %d"
@@ -1175,167 +1185,167 @@ msgstr "save_bash_input : le tampon existe déjà pour le nouveau fd %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline : pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "le processus cloné n°%d apparaît dans la tâche en fonctionnement %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "suppression de la tâche stoppée %d avec le groupe de processus %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process : pid %5ld (%s) signalé toujours en vie"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid : %ld : n° de processus inexistant"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Fini"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Stoppé"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Stoppé(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "En cours d'exécution"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Fini(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Termine %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "État inconnu"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(core dumped)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd : %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "fils setpgid (%ld à %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait : le processus n°%ld n'est pas un fils de ce shell"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for : Aucun enregistrement du processus n°%ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job : la tâche %d est stoppée"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s : pas de tâche actuelle"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s : la tâche s'est terminée"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s : la tâche %d est déjà en arrière plan"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld : activation de WNOHANG pour éviter un blocage définitif"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s : ligne %d : "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(maintenant, wd : %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control : getpgrp a échoué"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control : pas de contrôle de tâche en tâche de fond"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control : discipline de ligne"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control : setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "impossible de régler le groupe de processus du terminal (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "pas de contrôle de tâche dans ce shell"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc : échec de l'assertion : %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1344,47 +1354,47 @@ msgstr ""
"\r\n"
"malloc : %s:%d : assertion manquée\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "inconnu"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc : bloc écrasé sur liste libre"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free : appelé avec un bloc déjà libéré comme argument"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free : appelé avec un bloc non alloué comme argument"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free : débordement négatif détecté ; « mh_nbytes » est hors plage"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free : débordement négatif détecté ; « magic8 » est hors plage"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free : les tailles de fragment au début et à la fin sont différentes"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc : appelé avec un bloc non alloué comme argument"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc : débordement négatif détecté ; « mh_nbytes » est hors plage"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc : débordement négatif détecté ; « magic8 » est hors plage"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc : les tailles de fragment au début et à la fin sont différentes"
@@ -1426,22 +1436,22 @@ msgstr "%s : mauvaise spécification de chemin réseau"
msgid "network operations not supported"
msgstr "opérations sur le réseau non prises en charge"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s) : %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s) : %s"
@@ -1459,136 +1469,136 @@ msgstr "Vous avez du nouveau courrier dans $_"
msgid "The mail in %s has been read\n"
msgstr "Le courrier dans %s a été lu\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "erreur de syntaxe : expression arithmétique nécessaire"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "erreur de syntaxe : « ; » non attendu"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "erreur de syntaxe : « ((%s)) »"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document : le type d'instruction %d est incorrect"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "« here-document » à la ligne %d délimité par la fin du fichier (au lieu de « %s »)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection : l'instruction de redirection « %d » est hors plage"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc: shell_input_line_size (%zu) dépasse SIZE_MAX (%lu): ligne tronquée"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "nombre maximum de documents en ligne (« here-document ») dépassé"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "fin de fichier (EOF) prématurée lors de la recherche du « %c » correspondant"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "fin de fichier (EOF) prématurée lors de la recherche de « ]] »"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "erreur de syntaxe dans une expression conditionnelle : symbole « %s » inattendu"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "erreur de syntaxe dans une expression conditionnelle"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "symbole inattendu « %s » au lieu de « ) »"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "« ) » attendu"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "argument inattendu pour l'opérateur conditionnel à un argument"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "symbole « %s » trouvé à la place d'un opérateur binaire conditionnel"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "opérateur binaire conditionnel attendu"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "argument inattendu pour l'opérateur binaire conditionnel"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "symbole « %c » inattendu dans la commande conditionnelle"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "symbole « %s » inattendu dans la commande conditionnelle"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "symbole « %d » inattendu dans la commande conditionnelle"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "erreur de syntaxe près du symbole inattendu « %s »"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "erreur de syntaxe près de « %s »"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "erreur de syntaxe : fin de fichier prématurée"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "erreur de syntaxe"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Utilisez « %s » pour quitter le shell.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "fin de fichier (EOF) prématurée lors de la recherche d'une « ) » correspondante"
@@ -1626,94 +1636,94 @@ msgstr "xtrace_set : pointeur de fichier NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf : « %c » : caractère de format invalide"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "descripteur de fichier hors plage"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s : redirection ambiguë"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s : impossible d'écraser le fichier existant"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s : restreint : impossible de rediriger la sortie"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "impossible de créer un fichier temporaire pour le « here-document » : %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s : impossible d'affecter le descripteur de fichier à la variable"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port non pris en charge sans réseau"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "erreur de redirection : impossible de dupliquer le descripteur de fichier"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "« /tmp » introuvable, veuillez le créer !"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "« /tmp » doit être un nom de répertoire valable"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "le mode d'affichage amélioré est ignoré dans les shells interactifs"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c : option non valable"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "impossible de changer le uid en %d : uid effectif %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "impossible de changer le gid en %d: gid effectif %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "impossible de démarrer le débogueur: mode déboguage désactivé"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s : Ceci est un répertoire"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Je n'ai pas de nom !"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1722,317 +1732,317 @@ msgstr ""
"Utilisation :\t%s [option longue GNU] [option] ...\n"
"\t%s [option longue GNU] [option] fichier-script ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Options longues GNU :\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Options du shell :\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ou -o option\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Pour en savoir plus sur les options du shell, saisissez « %s -c \"help set\" ».\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Pour en savoir plus sur les primitives du shell, saisissez « %s -c help ».\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Utilisez la commande « bashbug » pour faire un rapport de bogue.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "page d'accueil de bash : <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask : %d : opération non valable"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Signal falsifié"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Raccroche"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interrompt"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Quitte"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Instruction incorrecte"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "trace/trap BPT"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Instruction ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Instruction EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Exception en virgule flottante"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Tué"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Erreur de bus"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Erreur de segmentation"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Mauvais appel système"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Tube brisé"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Horloge d'alarme"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Terminé"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Condition d'E/S urgente"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Stoppé (signal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continue"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Mort ou arrêt du fils"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Stoppé (entrée tty)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Stoppé (sortie tty)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "E/S prête"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Limite CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Limite fichier"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarme (virtuelle)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarme (profile)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Fenêtre changée"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Verrou d'enregistrement"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Signal utilisateur 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Signal utilisateur 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "données d'entrée HFT en attente"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "coupure d'alimentation imminente"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "panne système imminente"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migration processus vers un autre CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "erreur de programmation"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "Mode de surveillance HFT accordé"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "Mode de surveillance HFT rétracté"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "Séquence de son HFT terminée"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Demande d'information"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Signal n°%d inconnu"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s : impossible d'affecter une liste à un élément de tableau"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "impossible de fabriquer un tube pour une substitution de processus"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "impossible de fabriquer un fils pour une substitution de processus"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "impossible d'ouvrir le tube nommé « %s » en lecture"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "impossible d'ouvrir le tube nommé « %s » en écriture"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "impossible de dupliquer le tube nommé « %s » vers le fd %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "substitution de commande: octet nul ignoré en entrée"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "impossible de fabriquer un tube pour une substitution de commande"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "impossible de fabriquer un processus fils pour une substitution de commande"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s : nom de variable invalide pour une référence de nom"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s : expansion indirecte invalide"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nom de variable invalide"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s : paramètre non défini"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s : paramètre vide ou non défini"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s : expression de sous-chaîne négative"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s : mauvaise substitution"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s : affectation impossible de cette façon"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "les versions futures du shell forceront l'évaluation comme une substitution arithmétique"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "pas de correspondance : %s"
@@ -2055,21 +2065,21 @@ msgstr "« ) » attendue"
msgid "`)' expected, found %s"
msgstr "« ) » attendue au lieu de %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s : opérateur binaire attendu"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s : opérateur unaire attendu"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "« ] » manquant"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "erreur de syntaxe : « %s » non attendu"
@@ -2078,103 +2088,108 @@ msgstr "erreur de syntaxe : « %s » non attendu"
msgid "invalid signal number"
msgstr "numéro de signal non valable"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "gestionnaire trap : dépassement de la profondeur maximum du gestionnaire « trap » (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps : mauvaise valeur dans trap_list[%d] : %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps : le gestionnaire de signal est SIG_DFL, renvoi de %d (%s) à moi-même"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
-msgstr "trap_handler : mauvais signal %d"
+msgstr "trap_handler : mauvais signal %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "erreur lors de l'importation de la définition de fonction pour « %s »"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "niveau de shell trop élevé (%d), initialisation à 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
-msgstr "make_local_variable : aucun contexte de fonction dans le champ d'application actuel"
+msgstr "make_local_variable : aucun contexte de fonction dans le champ d'application actuel"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
-msgstr "%s : la variable ne peut se voir assigner une valeur"
+msgstr "%s : la variable ne peut se voir assigner une valeur"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s : impossible d'hériter de la valeur d'un type incompatible"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
-msgstr "%s : assigne un entier à la référence de nom"
+msgstr "%s : assigne un entier à la référence de nom"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
-msgstr "all_local_variables : aucun contexte de fonction dans le champ d'application actuel"
+msgstr "all_local_variables : aucun contexte de fonction dans le champ d'application actuel"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s a un « exportstr » nul"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "caractère %d non valable dans « exportstr » pour %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "pas de « = » dans « exportstr » pour %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
-msgstr "pop_var_context : le début de « shell_variables » n'est pas un contexte de fonction"
+msgstr "pop_var_context : le début de « shell_variables » n'est pas un contexte de fonction"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
-msgstr "pop_var_context : aucun contexte à « global_variables »"
+msgstr "pop_var_context : aucun contexte à « global_variables »"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr "pop_scope : le début de « shell_variables » n'est pas un champ d'application temporaire d'environnement"
+msgstr "pop_scope : le début de « shell_variables » n'est pas un champ d'application temporaire d'environnement"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
-msgstr "%s : %s : impossible d'ouvrir comme FILE"
+msgstr "%s : %s : impossible d'ouvrir comme FILE"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
-msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace"
+msgstr "%s : %s : valeur non valable pour un descripteur de fichier de trace"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
-msgstr "%s : %s : valeur de compatibilité hors plage"
+msgstr "%s : %s : valeur de compatibilité hors plage"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
-msgstr "Licence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/gpl.html>\n"
+msgstr "Licence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/gpl.html>\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2192,12 +2207,12 @@ msgstr "AUCUNE GARANTIE n'est fournie, dans les limites permises par la loi."
#: xmalloc.c:93
#, c-format
msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s : impossible d'allouer %lu octets (%lu octets alloués)"
+msgstr "%s : impossible d'allouer %lu octets (%lu octets alloués)"
#: xmalloc.c:95
#, c-format
msgid "%s: cannot allocate %lu bytes"
-msgstr "%s : impossible d'allouer %lu octets"
+msgstr "%s : impossible d'allouer %lu octets"
#: xmalloc.c:165
#, c-format
@@ -2250,12 +2265,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] commande [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [nom[=valeur] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [nom[=valeur] ...] ou declare -p [-aAfFilnrtux] [nom ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] nom[=valeur] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] nom[=valeur] ... ou typeset -p [-aAfFilnrtux] [nom ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2342,8 +2357,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o nom-option] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o nom-option] [--] [-] [arg ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2390,8 +2405,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] nom [nom ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limite]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2430,12 +2445,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if COMMANDES; then COMMANDES; [ elif COMMANDES; then COMMANDES; ]... [ else COMMANDES; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while COMMANDES; do COMMANDES; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while COMMANDES; do COMMANDES-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until COMMANDES; do COMMANDES; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until COMMANDES; do COMMANDES-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3753,7 +3768,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3796,11 +3812,12 @@ msgstr ""
" comme des mots, et le premier mot est assigné au premier NOM, le deuxième mot\n"
" au deuxième NOM, et ainsi de suite, le dernier NOM récupérant la liste des mots\n"
" restants. Seuls les caractères trouvés dans $IFS sont reconnus comme délimiteurs\n"
-" de mots\n"
+" de mots. Par défaut, la barre oblique inverse échappe les caractères délimiteurs\n"
+" et les sauts de ligne.\n"
" \n"
" Si aucun NOM n'est fourni, la ligne lue est stockée dans la variable REPLY.\n"
" \n"
-" Options :\n"
+" Options :\n"
" -a tableau\taffecte les mots lus séquentiellement aux indices de la variable\n"
" \t\ttableau ARRAY en commençant à 0\n"
" -d délim\tcontinue jusqu'à ce que le premier caractère de DELIM soit lu,\n"
@@ -3827,11 +3844,12 @@ msgstr ""
" \t\tde sortie est supérieur à 128 si le délai a expiré\n"
" -u fd\tlit depuis le descripteur de fichier FD plutôt que l'entrée standard\n"
" \n"
-" Code de sortie :\n"
-" Le code de retour est 0, à moins qu'une fin de fichier ne survienne, que le délai expire,\n"
+" Code de sortie :\n"
+" Le code de retour est 0, à moins qu'une fin de fichier ne survienne, que le délai expire\n"
+" (auquel cas, il est plus grand que 128), une erreur d'affectation à une variable survient\n"
" ou qu'un descripteur de fichier non valable ne soit fourni comme argument à « -u »."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3853,7 +3871,7 @@ msgstr ""
" Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter\n"
" une fonction ou un script."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4017,7 +4035,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de succès à moins qu'une option non valable ne soit donnée."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4056,7 +4074,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit\n"
" donnée ou que NOM soit en lecture seule."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4090,7 +4108,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit données\n"
" ou que NOM ne soit pas valable."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4129,7 +4147,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit\n"
" donnée ou que NOM ne soit pas valable."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4147,7 +4165,7 @@ msgstr ""
" Code de retour :\n"
" Renvoie le code de succès à moins que N soit négatif ou supérieur à $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4171,7 +4189,7 @@ msgstr ""
" Renvoie le code de la dernière commande exécutée dans NOMFICHIER, ou le code\n"
" d'échec si NOMFICHIER ne peut pas être lu."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4196,7 +4214,7 @@ msgstr ""
" Renvoie le code de succès à moins que le contrôle de tâche ne soit pas activé\n"
" ou qu'une erreur survienne."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4353,7 +4371,7 @@ msgstr ""
" Renvoie le code de succès si EXPR est vraie, le code d'échec si EXPR est fausse ou si\n"
" un argument non valable est donné."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4365,7 +4383,7 @@ msgstr ""
" Ceci est un synonyme de la primitive « test », mais le dernier argument\n"
" doit être le caractère « ] », pour fermer le « [ » correspondant."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4383,7 +4401,7 @@ msgstr ""
" Code de retour :\n"
" Toujours le code de succès."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4451,7 +4469,7 @@ msgstr ""
" Renvoie le code de succès à moins que SIGSPEC ne soit pas valable ou qu'une\n"
" option non valable ne soit donnée."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4507,7 +4525,7 @@ msgstr ""
" Renvoie le code de succès si tous les NOMs sont trouvés, le code d'échec si l'un\n"
" d'entre eux n'est pas trouvé."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4603,7 +4621,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit fournie ou\n"
" qu'une erreur ne survienne."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4636,7 +4654,7 @@ msgstr ""
" Renvoie le code de succès à moins que MODE ne soit pas valable ou qu'une\n"
" option non valable ne soit donnée."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4687,7 +4705,7 @@ msgstr ""
" ou si une option non valable et fournie ou si -n est employé et que le shell\n"
" n'a aucun enfant sur lequel attendre."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4710,7 +4728,7 @@ msgstr ""
" Renvoie le code de retour du dernier PID. Échoue si PID n'est pas valable ou\n"
" si une option non valable est donnée."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4732,7 +4750,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4762,7 +4780,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4798,7 +4816,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4827,7 +4845,7 @@ msgstr ""
" Code de sortie :\n"
" Le code de retour est celui du PIPELINE."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4845,7 +4863,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4873,45 +4891,45 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Exécute des commandes aussi longtemps qu'elles réussissent.\n"
" \n"
-" Effectue une expansion et exécute les COMMANDES aussi longtemps\n"
-" que la commande finale du « while » se termine avec un code de\n"
-" retour à zéro.\n"
+" Effectue une expansion et exécute les COMMANDES-2 aussi longtemps\n"
+" que la commande finale de COMMANDES se termine avec un code de retour\n"
+" à zéro.\n"
" \n"
-" Code de sortie :\n"
+" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Exécute des commandes aussi longtemps qu'un test échoue.\n"
" \n"
-" Effectue une expansion et exécute les commandes « COMMANDES »\n"
-" aussi longtemps que les commandes de « until » se terminent avec\n"
-" un code de retour différent de zéro.\n"
+" Effectue une expansion et exécute les commandes COMMANDES-2\n"
+" aussi longtemps que la commande finale de COMMANDES se termine\n"
+" avec un code de retour différent de zéro.\n"
" \n"
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4933,7 +4951,7 @@ msgstr ""
" Code de retour :\n"
" La commande coproc renvoie le code de sortie 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4955,7 +4973,7 @@ msgstr ""
" Code de retour :\n"
" Renvoie le code de succès à moins que NOM ne soit en lecture seule."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4973,7 +4991,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4997,7 +5015,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la commande reprise."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5015,7 +5033,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie 1 si EXPRESSION est évaluée à 0, sinon renvoie 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5061,7 +5079,7 @@ msgstr ""
" Code de sortie :\n"
" 0 ou 1 selon la valeur de l'EXPRESSION."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5165,7 +5183,7 @@ msgstr ""
" HISTIGNORE\tUne liste de motifs séparés par un deux-points, utilisés pour\n"
" \t\tdécider quelles commandes doivent être conservées dans la liste d'historique.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5222,7 +5240,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'un argument non valable ne soit fourni\n"
" ou que le changement de répertoire n'échoue."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5273,7 +5291,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'un argument non valable ne soit donné\n"
" ou que le changement de répertoire n'échoue."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5326,7 +5344,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit\n"
" fournie ou qu'une erreur ne survienne."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5362,7 +5380,7 @@ msgstr ""
" Renvoie le code de succès si NOMOPT est active ; échec si une option non valable\n"
" est donnée ou si NOMOPT est inactive."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5381,6 +5399,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5395,33 +5415,35 @@ msgid ""
msgstr ""
"Formate et affiche des ARGUMENTS en contrôlant le FORMAT.\n"
" \n"
-" Options :\n"
+" Options :\n"
" -v var\taffecte la sortie à la variable VAR du shell plutôt que de l'afficher\n"
" \t\tsur la sortie standard\n"
" \n"
-" Le FORMAT est une chaîne de caractères qui contient trois types d'objets : des caractères\n"
+" Le FORMAT est une chaîne de caractères qui contient trois types d'objets : des caractères\n"
" normaux qui sont simplement copiés vers la sortie standard ; des séquences d'échappement\n"
" qui sont converties et copiées vers la sortie standard et des spécifications de\n"
" format, chacun entraînant l'affichage de l'argument suivant.\n"
" \n"
-" En plus des formats standards décrits dans printf(1), « printf » interprète :\n"
+" En plus des formats standards décrits dans printf(1), « printf » interprète :\n"
" \n"
" %b\tdéveloppe les séquences d'échappement à contre-oblique dans l'argument correspondant\n"
" %q\tprotège les arguments avec des guillemets de façon qu'ils puissent être réutilisés\n"
" comme entrée du shell.\n"
+" %Q\tcomme %q mais applique une éventuelle précision à l'argument sans guillemets avant\n"
+" d'ajouter les guillemets.\n"
" %(fmt)T\trenvoie la chaîne date-heure résultant de l'utilisation de FMT comme\n"
" \t chaîne de format pour strftime(3)\n"
" \n"
-" Le format est réutilisé si nécessaire pour consommer tous les arguments. Si il y a\n"
-" moins d'arguments que exigé par le format, les spécificateurs de format surnuméraires\n"
-" se comportent comme si la valeur zéro ou une chaîne nulle avait été fournie (selon\n"
+" Le format est réutilisé si nécessaire pour consommer tous les arguments. S'il y a\n"
+" moins d'arguments qu'exigé par le format, les spécificateurs de format surnuméraires\n"
+" se comportent comme si la valeur zéro ou une chaîne nulle avait été fournies (selon\n"
" ce qui est approprié).\n"
" \n"
-" Code de sortie :\n"
+" Code de sortie :\n"
" Renvoie le code de succès à moins qu'une option non valable ne soit donnée ou qu'une\n"
" erreur d'écriture ou d'affectation ne survienne."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5473,7 +5495,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit fournie ou\n"
" qu'une erreur ne survienne."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5494,7 +5516,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit\n"
" fournie ou qu'une erreur ne survienne."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5549,7 +5571,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit fournie\n"
" ou que NOM n'ait aucun réglage d'auto-complètement."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5613,7 +5635,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit donnée ou que\n"
" le TABLEAU soit en lecture seule ou ne soit pas un tableau indexé."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5623,6 +5645,9 @@ msgstr ""
" \n"
" Synonyme de « mapfile »."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s : clé non valable pour le tableau associatif"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/ga.gmo b/po/ga.gmo
index 70423c34..88309c9d 100644
--- a/po/ga.gmo
+++ b/po/ga.gmo
Binary files differ
diff --git a/po/ga.po b/po/ga.po
index 36f1b274..d6252612 100644
--- a/po/ga.po
+++ b/po/ga.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2019-01-16 21:05+0000\n"
"Last-Translator: Séamus Ó Ciardhuáin <sociardhuain@gmail.com>\n"
"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
@@ -24,60 +24,55 @@ msgstr ""
msgid "bad array subscript"
msgstr "droch-fhoscript eagair"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: aitreabúid nameref (tagairt athróga) á baint"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
"%s: ní féidir eagar innéacsaithe a thiontú go heagar comhthiomsaitheach"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil."
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
"%s: %s: caithfear foscript a úsáid le sannadh chuig eagar comhthiomsaitheach"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: ní féidir cruthú: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: ní féidir mapa eochrach an ordaithe a aimsiú"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: ní \" an chéad charachtar nach spás bán é."
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "Níl '%c' dúnta i %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: deighilteoir idirstaid ar iarraidh"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "'%s': ní féidir dícheangail"
@@ -98,7 +93,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh '%s'"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "'%s': ainm neamhbhailí ar mhapa eochrach"
@@ -176,7 +171,7 @@ msgstr ""
msgid "HOME not set"
msgstr "Níl HOME socruithe"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "An iomarca argóintí"
@@ -203,7 +198,7 @@ msgstr "rabhadh: "
msgid "%s: usage: "
msgstr "%s: úsáid: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: tá argóint riachtanach don rogha"
@@ -218,7 +213,7 @@ msgstr "%s: argóint uimhriúil de dhíth"
msgid "%s: not found"
msgstr "%s: gan aimsiú"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: rogha neamhbhailí"
@@ -228,7 +223,7 @@ msgstr "%s: rogha neamhbhailí"
msgid "%s: invalid option name"
msgstr "%s: ainm neamhbhailí rogha"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "'%s': ní aitheantóir bailí é"
@@ -241,7 +236,7 @@ msgstr "uimhir ochtnártha neamhbhailí"
msgid "invalid hex number"
msgstr "uimhir heicsidheachúlach neamhbhailí"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "uimhir neamhbhailí"
@@ -255,88 +250,93 @@ msgstr "%s: sonrú neamhbhailí comhartha"
msgid "`%s': not a pid or valid job spec"
msgstr "'%s': ní aitheantas próisis nó sonrú taisc bailí é"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: athróg inléite amháin"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: ní féidir díshocrú"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s as raon"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argóint"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s as raon"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: níl a léithéid de tasc ann."
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: gan rialú tascanna."
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "Gan rialú tascanna."
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: srianta"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "srianta"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: ní ordú ionsuite blaoisce é."
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "earráid scríofa: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "earráid agus airíonna teirminéil á socrú: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "earráid agus airíonna teirminéil á fáil: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: earráid ag fáil na comhadlainne reatha: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: sonrú taisc athbhríoch"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "Níl cabhair ar fáil sa leagan seo."
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: ní féidir díshocrú: %s inléite amháin"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: ní féidir díshocrú"
@@ -346,114 +346,114 @@ msgstr "%s: ní féidir díshocrú"
msgid "%s: invalid action name"
msgstr "%s: ainm neamhbhailí gnímh"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: níl sonrú iomlánaithe ann."
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr ""
"Rabhadh: b'fhéidir nach n-oibríonn an rogha -F mar a bheifeá ag súil leis."
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr ""
"Rabhadh: b'fhéidir nach n-oibríonn an rogha -C mar a bheifeá ag súil leis."
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "Inúsáidte i bhfeidhmeanna amháin. "
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: feidhm inléite amháin"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: ní féidir le athróg thagartha bheith ina h-eagar"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
"%s: ní cheadaítear tagairtí don athróg féin i nameref (tagairt athróga)"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: tagairt ainm ciorclach"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: feidhm inléite amháin"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: cáintear sannadh na gcomheagar athfhriotail"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: ní féidir athróga eagair a scrios mar seo."
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
"%s: ní féidir eagar comhthiomsaitheach a thiontú go heagar innéacsaithe"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: cáintear sannadh na gcomheagar athfhriotail"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "Níl luchtú dinimiciúil ar fáil"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "Ní féidir an réad comhroinnte %s a oscailt: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "Ní féidir %s a aimsiú sa réad comhroinnte %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: níl sé luchtaithe go dinimiciúil"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
"Theip ar an ngníomh luchtála le haghaidh %s (aiscuireadh %d): níor "
"luchtáladh é"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: níl sé luchtaithe go dinimiciúil"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: ní féidir scrios: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: is comhadlann é"
@@ -468,7 +468,7 @@ msgstr "%s: ní gnáthchomhad é"
msgid "%s: file is too large"
msgstr "%s: tá an comhad ró-mhór"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: ní féidir comhad dénártha a rith"
@@ -567,12 +567,12 @@ msgstr ""
"Ní mheaitseálann ábhar cabhrach ar bith \"%s\". Bain triail as \"help help\" "
"nó \"man -k %s\" nó \"info %s\"."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: ní féidir oscailt: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -592,21 +592,21 @@ msgstr ""
"Ciallaíonn réalt (*) ar ainm go bhfuil an t-ordú díchumasaithe.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "Ní féidir níos mó ná ceann amháin as -anrw a úsáid."
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "suíomh staire"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: stampa ama neamhbhailí"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: theip ar fhairsingiú staire."
@@ -629,78 +629,78 @@ msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó taisc"
msgid "Unknown error"
msgstr "Earráid neamhaithnid"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "Ag súil le slonn"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: ní eagar innéacsaithe é"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: sonrú neamhbhailí tuairisceora comhaid"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: tuairisceoir comhaid neamhbhailí: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: comhaireamh neamhbhailí línte"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: bunphointe neamhbhailí eagair"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: candam neamhbhailí aisghlaoigh"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "ainm folamh athróga eagair"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "tacaíocht le hathróga eagair de dhíth"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "'%s': carachtar formáide ar iarraidh."
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "'%c': sonrú neamhbhailí formáide ama"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "'%c': carachtar formáide neamhbhailí."
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "rabhadh: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "fadhb i bpársáil formáide: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "digit Unicode ar iarraidh le haghaidh \\%c"
@@ -861,12 +861,12 @@ msgstr ""
" \n"
" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: sonrú neamhbhailí teorann ama"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "Earráid léite: %d: %s"
@@ -880,7 +880,7 @@ msgstr ""
msgid "cannot simultaneously unset a function and a variable"
msgstr "Ní féidir feidhm agus athróg a dhíshocrú ag an am céanna."
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ní athróg eagair é"
@@ -899,11 +899,11 @@ msgstr "%s: ní féidir easpórtáil"
msgid "shift count"
msgstr "comhaireamh iomlaoide"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "Ní féidir roghanna blaoisce a shocrú agus a dhíshocrú ag an am céanna."
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ainm neamhbhailí ar rogha blaoisce"
@@ -970,16 +970,16 @@ msgstr "%s: argóint teorann neamhbhailí"
msgid "`%c': bad command"
msgstr "'%c': droch-ordú"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: ní féidir teorainn a fháil: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "teorainn"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: ní féidir teorainn a athrú: %s"
@@ -998,7 +998,7 @@ msgstr "'%c': oibreoir neamhbhailí móid shiombalaigh"
msgid "`%c': invalid symbolic mode character"
msgstr "'%c': carachtar neamhbhailí móid shiombalaigh"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " líne "
@@ -1018,96 +1018,106 @@ msgstr "Ag tobscor..."
msgid "INFORM: "
msgstr "EOLAS: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "rabhadh: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "earráid ordaithe neamhaithnid"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "droch-chineál ordaithe"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "drochnascóir"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "drochléim"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: athróg neamhcheangailte"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aImithe thar am ag feitheamh le hionchur: logáil amach uathoibríoch\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "Ní féidir an ionchur caighdeánach a atreorú ó /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "FORMÃID_AMA: '%c': carachtar formáide neamhbhaií."
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: tá an comhphróiseas [%d:%s] fós ann"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "earráid phíopa"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: imithe thar uasleibhéal neadaithe eval (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: imithe thar uasleibhéal neadaithe foinse (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: imithe thar uasleibhéal neadaithe feidhme (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: srianta: ní féidir \"/\" a shonrú in ainmneacha ordaithe"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: níor aimsíodh an t-ordú"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: ní féidir comhad dénártha a rith"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: drochléirmhínitheoir"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: ní féidir comhad dénártha a rith: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "Is ordú ionsuite speisialta é '%s'"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr ""
@@ -1121,69 +1131,69 @@ msgstr "Imithe thar leibhéal athchursála sloinn"
msgid "recursion stack underflow"
msgstr "Gannsreabhadh na cruaiche athchúrsála"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "Earráid chomhréire sa slonn."
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "Deineadh iarracht sannadh go rud nach athróg é."
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "Earráid chomhréire i sannadh athróige."
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "Roinnt ar 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "Fabht: droch-chomhartha expassign"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "Bhíothas ag súil le \":\" le haghaidh sloinn choinníollaigh."
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "Easpónant níos lú ná 0."
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "Ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "\")\" ar iarraidh"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann."
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "Earráid chomhréire: oibreoir neamhbhailí uimhríochta"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (comhartha earráide '%s')"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "Bonnuimhir uimhríochtúil neamhbhailí."
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: comhaireamh neamhbhailí línte"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "Tá an luach rómhór don bhonnuimhir."
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: earráid sloinn\n"
@@ -1192,7 +1202,7 @@ msgstr "%s: earráid sloinn\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain."
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1217,167 +1227,167 @@ msgstr ""
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp píopa"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "Tá aitheantas an phróisis ghabhlaithe %d sa tasc %d atá ag rith"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "Tá an tasc stoptha %d leis an ngrúpa próisis %ld á scrios."
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: próiseas %5ld (%s) marcáilte mar fós beo"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann."
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Comhartha %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Déanta"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Stoptha"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Stoptha(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Ag Rith"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Déanta(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Scoir %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Stádas neamhaithnid"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(cuimhne dumpáilte)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (comhadlann oibre: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid macphróisis (%ld go %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: níl an próiseas %ld ina mhacphróiseas den bhlaosc seo."
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: níl taifead den phróiseas %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: tá an tasc %d stoptha."
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: níl a léithéid de tasc ann."
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: tá an tasc críochnaithe."
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: tá an tasc %d sa chúlra cheana."
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: ag cumasú WNOHANG chun stad éiginnte a sheachaint"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: líne %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (cuimhne dumpáilte)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(comhadlann oibre anois: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: theip ar getpgrp"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: níl rialú jabanna ar fáil sa chúlra"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: araíonacht líne"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "ní féidir an grúpa próisis teirminéil a athrú (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "Níl rialú tascanna sa bhlaosc seo."
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: dearbhú teipthe: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1386,49 +1396,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: dearbhú ina phraiseach\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "neamhaithnid"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloc ar an liosta saor scriosta"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: glaoite le argóint bhloic á saoradh cheana"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: glaoite le argóint bhloic nár leithdháileadh"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: gannsreabhadh; tá mh_nbytes as raon"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: gannsreabhadh; tá mh_nbytes as raon"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: ní ionann méid na smután túis agus deiridh"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: glaoite le argóint bhloic nár leithdháileadh"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: ní ionann méideanna na smután túis agus deiridh"
@@ -1471,22 +1481,22 @@ msgstr "%s: drochshonrú conaire líonra"
msgid "network operations not supported"
msgstr "Ní thacaítear le oibríochtaí líonra."
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s): %s"
@@ -1504,37 +1514,37 @@ msgstr "Tá ríomhphost nua agat i $_"
msgid "The mail in %s has been read\n"
msgstr "Tá an ríomhphost i %s léite\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "Earráid chomhréire: tá slonn uimhríochtúil de dhith."
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "Earráid chomhréire: ';' gan súil leis."
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "Earráid chomhréire: '((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: drochchineál ordaithe %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
"Cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid (\"%s\" á "
"lorg)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: ordú atreoraithe \"%d\" as raon."
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1543,106 +1553,106 @@ msgstr ""
"shell_getc: tá méid an líne ionchuir blaoisce (%zu) níos mó ná SIZE_MAX "
"(%lu): líne giorraithe"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "Imithe thar uasfhad na cáipéise-anseo"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "Deireadh comhaid gan súil leis agus \"%c\" a mheaitseálann á lorg."
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "Deireadh comhaid gan súil leis agus \"]]\" á lorg."
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
"Earráid chomhréire i slonn coinníollach: comhartha \"%s\" gan suil leis."
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "Earráid chomhréire i slonn coinníollach."
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "Comhartha '%s' gan súil leis; ag súil le ')'."
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "Ag súil le \")\""
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "Argóint \"%s\" gan súil lei go hoibreoir aonártha coinníollach."
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ."
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
"Comhartha \"%s\" gan súil leis. Bhíothas ag súil le hoibreoir coinníollach "
"dénártha."
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha."
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "Argóint '%s' gan súil lei go hoibreoir dénártha coinníollach."
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach."
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "Comhartha '%c' gan súil leis in ordú coinníollach."
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "Comhartha \"%s\" gan súil leis in ordú coinníollach."
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "Comhartha %d gan súil leis in ordú coinníollach."
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "Earráid chomhréire in aice comhartha '%s' nach rabhthas ag súil leis."
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "Earráid chomhréire in aice '%s'"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "Earráid chomhréire: deireadh comhaid gan súil leis."
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "Earráid chomhréire"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Úsáid '%s' le scoir den mblaosc.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "Deireadh comhaid gan súil leis agus ')' á lorg le meaitseáil."
@@ -1680,100 +1690,100 @@ msgstr "xtrace_set: pointeoir folamh comhaid"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: '%c': carachtar formáide neamhbhailí"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "tuairisceoir comhaid as raon"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: atreorú athbhríoch"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: ní féidir comhad atá ann cheana a fhorscríobh."
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: srianta: ní féidir aschur a atreorú."
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "ní féidir cáipéis shealadach a chruthú don cháipéis leabaithe: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: ní féidir tuairisceoir comhaid a shannadh go hathróg."
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "Ní thacaítear le /dev/(tcp|udp)/óstríomhaire/port gan líonrú."
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt."
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí."
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
"Tabharfar neamhaird ar an mód deaphriontála i mblaoscanna idirghníomhacha."
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: rogha neamhbhailí"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
"Ní féidir an t-aitheantóir úsáideora (uid) a athrú go %d: aitheantóir "
"éifeachtach %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
"Ní féidir an t-aitheantóir grúpa (gid) a athrú go %d: aitheantóir "
"éifeachtach %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
"Ní féidir an dífhabhtóir a thosú; tá an mód dífhabhtaithe díchumasaithe."
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: is comhadlann é"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Níl ainm orm!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, leagan %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1782,314 +1792,314 @@ msgstr ""
"Úsáid:\t%s [rogha fada GNU] [rogha] ...\n"
"\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Roghanna fada GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Roghanna blaoisce:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD nó -c ordú nó -O rogha_shopt\t\t(glaoch amháin)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s nó -o rogha\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Úsáid %s -c 'help set' le haghaidh tuilleadh eolais faoi roghanna blaoisce.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Úsáid '%s -c help' le haghaidh tuilleadh eolais faoi orduithe ionsuite "
"blaoisce.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Úsáid an t-ordú 'bashbug' le tuarascáil a sheoladh faoi fhabht.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "leathanach baile bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: oibríocht neamhbhailí"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Droch-chomhartha"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Crochadh"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Idirbhriseadh"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Scoir"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Treoir mídhleathach"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Rianú/gaistiú brisphointe"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Treoir ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Treoir EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Eisceacht snámhphointe"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Maraithe"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Earráid bhus"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Fabht deighilte"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Droch-ghlaoch córais"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Píopa briste"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Clog aláraim"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Críochnaithe"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Staid phráinneach I/A"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Stoptha (comhartha)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Lean ar aghaidh"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Bás macphróisis nó stopadh"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Stoptha (ionchur teirminéil)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Stoptha (aschur teirminéil)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/A ullamh"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Teorainn LAP"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Teorainn chomhad"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Aláram (fíorúil)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Aláram (próifíl)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Fuinneog athraithe"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Glas taifid"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Comhartha úsáideora 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Comhartha úsáideora 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "sonraí ionchuir HFT ar feitheamh"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "teip chumhachta ar tí tarlú"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "cliseadh córais ar tí tarlú"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "bog próiseas go LAP eile"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "earráid ríomhchláraithe"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "mód monatóireachta HFT ceadaithe"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "mód monatóireachta HFT cealaithe"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "seicheamh fuaime HFT críochnaithe"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Iarratas faisnéise"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Comhartha neamhaithnid #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "Drochionadú: níl '%s' dúnta i %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: ní féidir liosta a shannadh go ball eagair."
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis."
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis."
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh léamh."
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh scríofa."
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
"Ní féidir an píopa ainmnithe %s a dhúbailt mar thuairisceoir comhaid %d."
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "ionadú orduithe: tugadh neamhaird ar ghiotán neamhnitheach san ionchur"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe."
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe."
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
"command_substitute: ní feidir an píopa a dhúbailt mar thuairisceoir comhaid "
"1."
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: fairsingiú neamhbhailí indíreach"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: ainm neamhbhailí athróige"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: paraiméadar gan socrú."
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: paraiméadar neamhnitheach nó gan socrú."
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: slonn fotheaghráin < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: drochionadú"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ní féidir sannadh mar seo."
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2097,12 +2107,12 @@ msgstr ""
"i leaganacha den bhlaosc amach anseo, beidh luachálú mar ionadú uimhríochta "
"éigeantach"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "drochionadú: níl '`' dúnta i %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "gan meaitseáil: %s"
@@ -2125,21 +2135,21 @@ msgstr "Ag súil le ')'"
msgid "`)' expected, found %s"
msgstr "Ag súil le ')', ach fuarthas %s."
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: ag súil le hoibreoir dénártha."
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: ag súil le hoibreoir aonártha."
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "']' ar iarraidh"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "Earráid chomhréire: ';' gan súil leis."
@@ -2148,17 +2158,17 @@ msgstr "Earráid chomhréire: ';' gan súil leis."
msgid "invalid signal number"
msgstr "Uimhir chomhartha neamhbhailí"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: imithe thar uasleibhéal na láimhseálaithe gaistí (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: drochluach sa liosta_gaistí[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2166,84 +2176,89 @@ msgstr ""
"run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á "
"athsheoladh chugam féin."
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: droch-chomhartha %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "Earráid agus sainmhíniú na feidhme '%s' á iompórtáil."
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "Tá an leibhéal blaoisce (%d) ró-ard; á athshocrú go 1."
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: níl comhthéacs feidhme sa scóip reatha."
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: ní féidir luach a shannadh ar an athróg"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: slánuimhir a sannadh go tagairt ainm"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: níl comhthéacs feidhme sa scóip reatha"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "Tá teaghrán easpórtála neamhnitheach ag %s"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "Carachtar neamhbhailí %d sa teaghrán easpórtála le haghaidh %s."
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "Níl '=' sa teaghrán easpórtála le haghaidh %s."
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: ní comhthéacs feidhme é ceann shell_variables"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: níl comhthéacs global_variables ann"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: ní scóip shealadach thimpeallachta é ceann shell_variables"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: ní féidir a oscailt mar CHOMHAD"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: luach neamhbhailí le haghaidh tuairisceoir comhaid rianaithe"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: luach comhoiriúnachta as raon"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Cóipcheart © 2012 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2336,12 +2351,16 @@ msgstr "command [-pVv] ORDÚ [ARGÓINT ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [AINM[=LUACH] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgilnrtux] [-p] AINM[=LUACH] ..."
#: builtins.c:82
@@ -2445,7 +2464,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o AINM-ROGHA] [--] [ARGÓINT ...]"
#: builtins.c:144
@@ -2493,7 +2513,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] ainm [ainm ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [teorainn]"
#: builtins.c:174
@@ -2538,11 +2559,13 @@ msgstr ""
"ORDUITHE; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while ORDUITHE1; do ORDUITHE2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until ORDUITHE; do ORDUITHE; done"
#: builtins.c:200
@@ -3799,7 +3822,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3840,7 +3865,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3862,7 +3887,7 @@ msgstr ""
" Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme "
"nó scripte."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3948,7 +3973,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3970,7 +3995,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4006,7 +4031,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go bhfuil "
"AINM neamhbhailí."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4027,7 +4052,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4045,7 +4070,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear rath ach sa chás go bhfuil N diúltach, nó níos mó ná $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4070,7 +4095,7 @@ msgstr ""
"AINM_COMHAID.\n"
" Teipeann air sa chás nach féidir AINM_CHOMHAID a léamh."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4097,7 +4122,7 @@ msgstr ""
" Aischuirtear rath ach sa chás nach bhfuil rialú tascanna cumasaithe,\n"
" nó go dtarlaíonn earráid."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4180,7 +4205,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4193,7 +4218,7 @@ msgstr ""
" caithfear \"]\" go díreach a bheith ann mar an argóint\n"
" dheireanach, le bheith comhoiriúnach leis an \"[\" ag an tús."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4213,7 +4238,7 @@ msgstr ""
" Stádas Scortha:\n"
" Éiríonn leis i gcónaí."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4257,7 +4282,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4287,7 +4312,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4337,7 +4362,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4371,7 +4396,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go bhfuil MÓD neamhbhailí\n"
" nó go sonraítear rogha neamhbhailí."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4428,7 +4453,7 @@ msgstr ""
"tá\n"
" AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4455,7 +4480,7 @@ msgstr ""
" ordú má tá AITHEANTAS_PRÓISIS neamhbhailí nó má shonraítear\n"
" rogha neamhbhailí."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4477,7 +4502,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4508,7 +4533,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4528,7 +4553,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4557,7 +4582,7 @@ msgstr ""
" Stádas Scortha:\n"
" Is é stadas aischuir PÃBLÃNE an stádas aischuir ó \"time\"."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4575,7 +4600,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4610,12 +4635,14 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas scortha an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4628,12 +4655,14 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe deireanach a ritheadh."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4646,7 +4675,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe deireanach a ritheadh."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4668,7 +4697,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuireann an t-ordú \"coproc\" stádas scortha de 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4692,7 +4721,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear rath mura bhfuil AINM inléite amháin."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4710,7 +4739,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4733,7 +4762,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an taisc atosaithe."
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
@@ -4754,7 +4783,7 @@ msgstr ""
" Aischuirtear 1 más 0 an luach atá ag SLONN; aischuirtear 0 i gcásanna "
"eile."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4782,7 +4811,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4888,7 +4917,7 @@ msgstr ""
" HISTIGNORE\tLiosta deighilte le hidirstaid de phatrúin a shonraíonn\n"
" \t\tna horduithe a chuirfear leis an liosta staire.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4947,7 +4976,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n"
" go dteipeann ar an athrú comhadlainne."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5003,7 +5032,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n"
" go dteipeann ar an athrú comhadlainne."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5060,7 +5089,7 @@ msgstr ""
" Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla "
"earráid."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5099,7 +5128,7 @@ msgstr ""
"thugtar\n"
" rogha neamhbhailí, nó má tá AINM_ROGHA díchumasaithe."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5122,6 +5151,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5138,7 +5169,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5169,7 +5200,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5192,7 +5223,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go "
"dtarlaíonn earráid."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5252,7 +5283,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó nach\n"
" bhfuil sonrú iomlánaithe ann le haghaih AINM."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5340,7 +5371,7 @@ msgstr ""
"bhfuil\n"
" EAGAR inléite amháin, nó nach eagar innéacsaithe é EAGAR."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5350,6 +5381,10 @@ msgstr ""
" \n"
" Comhchiallach le \"mapfile\"."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/gl.gmo b/po/gl.gmo
index 36e79c59..ba7923da 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index ae284189..4f1cd40a 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2012-02-23 14:38+0100\n"
"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
@@ -28,59 +28,54 @@ msgstr ""
msgid "bad array subscript"
msgstr "subíndice de matriz incorrecto"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: non é posíbel converter a matriz de indizada a asociativa"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: índice de matriz asociativa non válido"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: non é posíbel asignar a un índice que non é numérico"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: se debe usar un subíndice ao asignar a unha matriz asociativa"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: non foi posíbel crear: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: non foi posíbel atopar a combinación de teclas "
"para a orde"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: o primeiro carácter que non é espazo en branco non é `\"'"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "no hai un `%c' que peche en %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: falta un `:' separador"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "%s: non se pode borrar a asignación"
@@ -100,7 +95,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': nome de alias non válido"
@@ -177,7 +172,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME non está definido"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "demasiados argumentos"
@@ -205,7 +200,7 @@ msgstr "aviso: "
msgid "%s: usage: "
msgstr "%s: uso: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: a opción require un argumento"
@@ -220,7 +215,7 @@ msgstr "%s: requírese un argumento numérico"
msgid "%s: not found"
msgstr "%s: non se atopou"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: opción non válida"
@@ -230,7 +225,7 @@ msgstr "%s: opción non válida"
msgid "%s: invalid option name"
msgstr "%s: nome de opción non válido"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': non é un identificador válido"
@@ -243,7 +238,7 @@ msgstr "número octal non válido"
msgid "invalid hex number"
msgstr "número hexadecimal non válido"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "número non válido"
@@ -257,88 +252,93 @@ msgstr "%s: especificación de sinal non válida"
msgid "`%s': not a pid or valid job spec"
msgstr "`%s': no é un pid ou unha especificación válida de traballo"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: variábel de só lectura"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: non é posíbel borrar"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s fóra de rango"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argumento"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s fóra de rango"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: non existe ese traballo"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: no hai control de traballos"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "no ha control de traballos"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: restrinxido"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "restrinxido"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: no é una orde interna do shell"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "erro de escritura: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "erro ao estabelecer os atributos da terminal: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "erro ao obtener os atributos da terminal: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: erro ao obtener o directorio actual: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: especificación de traballo ambigüa"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: non é posíbel borrar: %s é de só lectura"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: non é posíbel borrar"
@@ -348,108 +348,108 @@ msgstr "%s: non é posíbel borrar"
msgid "%s: invalid action name"
msgstr "%s: nome de acción non válido"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: non hai completado de especificación"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "aviso: é posíbel que a opción -F non funcione como se espera"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "aviso: é posíbel que a opción -C non funcione como se espera"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "non se está executando a función de completado"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "só se pode usar dentro dunha función"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "non se pode use `-f' para facer funcións"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: función de só lectura"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': nome de alias non válido"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "non se pode use `-f' para facer funcións"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: función de só lectura"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: non é posíbel destruír variábeis de matriz desta forma"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: non é posíbel converter unha matriz asociativa a indizada"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "a carga dinámica non está dispoñíbel"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "non é posíbel abrir o obxecto compartido %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "non é posíbel atopar %s no obxecto compartido %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: non foi cargado dinamicamente"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: non foi cargado dinamicamente"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: non foi posíbel eliminar: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: é un directorio"
@@ -464,7 +464,7 @@ msgstr "%s: non é un ficheiro regular"
msgid "%s: file is too large"
msgstr "%s: o ficheiro é demasiado grande"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: non é posíbel executar o ficheiro binario"
@@ -560,12 +560,12 @@ msgstr ""
"non hai temas de axuda que coincidan con «%s». Probe «help help» ou «man -k "
"%s» ou «info %s»"
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: non foi posíbel abrir: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -586,21 +586,21 @@ msgstr ""
"Un asterisco (*) xunto a un nome significa que a orde está desactivada.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "non foi posíbel usar máis dun de -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "posición no historial"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: nome de opción non válido"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: fallou a expansión do historial"
@@ -623,78 +623,78 @@ msgstr "%s: os argumentos deben ser procesos ou IDs de traballos"
msgid "Unknown error"
msgstr "Erro descoñecido"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "agardábase unha expresión"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: non é unha matriz indizada"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: especificación de descritor de ficheiro non válida"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descritor de ficheiro non válido: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: conta de liñas non válida"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: orixe de matriz non válido"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: quantum de chamada non válido"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "nome de variábel de matriz baleiro"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "requírese a compatibilidade de variábel de matriz"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': falta o carácter de formato"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': especificación de formato de tempo non válida"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': carácter de formato non válido"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "aviso: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "falta o díxito hexadecimal para \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "falta o díxito unicode para \\%c"
@@ -846,12 +846,12 @@ msgstr ""
" \n"
" A orde interna `dirs' mostra a pila de directorios."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: especificación de tempo de expiración non válida"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "erro de lectura: %d: %s"
@@ -864,7 +864,7 @@ msgstr "só se pode usar «return» nunha función ou guión lido con «source»
msgid "cannot simultaneously unset a function and a variable"
msgstr "non é posíbel borrar ao mesmo tempo unha función e unha variábel"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: non é unha variábel de matriz"
@@ -883,11 +883,11 @@ msgstr "%s: non é posíbel borrar"
msgid "shift count"
msgstr "conta de shift"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "non é posíbel activar e desactivar opcións do shell simultaneamente"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nome de opción do shell non válido"
@@ -954,16 +954,16 @@ msgstr "%s: límite de argumento non válido"
msgid "`%c': bad command"
msgstr "`%c': orde errónea"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: non é posíbel obter o límite: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "límite"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: non é posíbel modificar o límite: %s"
@@ -982,7 +982,7 @@ msgstr "`%c': operador de modo simbólico non válido"
msgid "`%c': invalid symbolic mode character"
msgstr "`%c': carácter de modo simbólico non válido"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " liña "
@@ -1002,96 +1002,106 @@ msgstr "Abortando…"
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "aviso: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "erro de orde descoñecido"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "tipo de orde erróneo"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "conector erróneo"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "salto erróneo"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: variable sen asignar"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aexpirou mentres agardaba algunha entrada: auto-logout\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "non é posíbel redirixir a saída estándar desde /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': carácter de formato non válido"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "erro de canalización"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restrinxido: non se pode especificar `/' en nomes de ordes"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: non se atopou a orde"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: non é posíbel executar o ficheiro binario"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: intérprete erróneo"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: non é posíbel executar o ficheiro binario"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s é unha orde interna do shell\n"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "no se pode duplicar o df %d ao df %d"
@@ -1104,71 +1114,71 @@ msgstr "excedeuse o nivel de recursión da expresión"
msgid "recursion stack underflow"
msgstr "desbordamento da base da pila de recursión"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "erro de sintaxe na expresión"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "tentouse asignar a algo que non é unha variábel"
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "erro de sintaxe na expresión"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "división entre 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "erro: elemento de asignación de expresión erróneo"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "agardábase `:' para a expresión condicional"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "expoñente menor que 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
"agardábase un identificador despois do pre-incremento ou pre-decremento"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "falta un `)'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "erro de sintaxe: agardábase un operando"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "erro de sintaxe: operador aritmético non válido"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (o elemento de erro é \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "base aritmética non válida"
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: conta de liñas non válida"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "valor demasiado grande para a base"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: erro de expresión\n"
@@ -1177,7 +1187,7 @@ msgstr "%s: erro de expresión\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: non é posíbel acceder aos directorios pai"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "non é posíbel restabelecer o modo nodelay para o df %d"
@@ -1199,168 +1209,168 @@ msgstr ""
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: tubería de pgrp"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "o pid `forked' %d aparece no traballo en execución %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "borrando o trabajo detido %d con grupo de proceso %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) márcase como vivo aínda"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: non existe tal pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Sinal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Feito"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Detido"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Detido(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "En execución"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Feito(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Saída %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Estado descoñecido"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(«core» xerado) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (dir agora: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid fillo (%ld a %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld non é un proceso fillo desta shell"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Non hai un rexistro do proceso %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: o traballo %d está detido"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: non existe ese traballo"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: o traballo rematou"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: o trabajo %d xa está en segundo plano"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: actívase WNOHANG para evitar o bloque indefinido"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: liña %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " («core» generado)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(dir agora: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_jobs_control: fallou getpgrp"
-#: jobs.c:4447
+#: jobs.c:4434
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_jobs_control: disciplina de liña"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_jobs_control: disciplina de liña"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_jobs_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "non é posíbel estabelecer o grupo de procesos de terminal (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "non hai control de trabalos nesta shell"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: fallou a aserción: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1369,51 +1379,51 @@ msgstr ""
"\r\n"
"malloc: %s:%d: aserción arruinada\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "descoñecido"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloque na lista libre sobreescrito"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: chamouse cun argumento de bloque previamente liberado"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: chamouse cun argumento de bloque sen asignar"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: os tamaños dos anacos de inicio e fin son diferentes"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: chamouse cun argumento de bloque sen asignar"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
"realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr ""
"realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: os tamaños dos anacos de inicio e fin son diferentes"
@@ -1455,23 +1465,23 @@ msgstr "%s: especificación de ruta de rede errónea"
msgid "network operations not supported"
msgstr "non hai compatibilidade para operacións de rede"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL non se pode cambiar a configuración rexional (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
"setlocale: LC_ALL: non se pode cambiar a configuración rexional (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s): %s"
@@ -1489,140 +1499,140 @@ msgstr "Ten unha nova mensaxe en $_"
msgid "The mail in %s has been read\n"
msgstr "O correo en %s foi lido\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "error de sintaxe: requírese unha expresión aritmética"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "error sintáctico: `;' non esperado"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "erro de sintaxe: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: tipo de instrución %d erróneo"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
"o documento-aquí na liña %d está delimitado por fin-de-fichero (agardábase `"
"%s')"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: a instrucción de redirección `%d' está fóra de rango"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF inesperado mentres se buscaba un `%c' coincidente"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF inesperado mentres se buscaba `]]'"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "error de sintaxe na expresión condicional: elemento inesperado `%s'"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "error sintáctico na expresión condicional"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "elemento inesperado `%s', agardábase `)'"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "agardábase `)'"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumento inesperado `%s' para o operador unario condicional"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "argumento inesperado para o operador unario condicional"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "elemento inesperado `%s', agardábase un operador binario condicional"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "agardábase un operador binario condicional"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumento inesperado `%s' para o operador binario condicional"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "argumento inesperado para o operador binario condicional"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "elemento inesperado `%c' na orde condicional"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "elemento inesperado `%s' na orde condicional"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "elemento inesperado %d na orde condicional"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "error de sintaxe perto do elemento inesperado `%s'"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "erro de sintaxe cerca de «%s»"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "error de sintaxe: non se agardaba o final do fichero"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "erro de sintaxe"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use «%s» para deixar o shell.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF non agardado mentres se buscaba un «)» coincidente"
@@ -1660,94 +1670,94 @@ msgstr "xtrace_set: punteiro a ficheiro NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != numfich xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': carácter de formato non válido"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "descritor de ficheiro fóra de rango"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redireccionamento ambigüo"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: non se pode sobreescribir un fichero existente"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restrinxido: no se pode redirixir a saída"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "non se pode crear un fichero temporal para o documento-aquí: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: non é posíbel asignar o gd á variábel"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "non se admite /dev/(tcp|udp)/anfitrion/porto sen rede"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "erro de redirección: non é posíbel duplicar o fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "non é posíbel atopar /tmp, por favor creeo!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp debe ser un nome de directorio válido"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opción non válida"
-#: shell.c:1319
+#: shell.c:1343
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "non é posíbel restabelecer o modo nodelay para o df %d"
-#: shell.c:1330
+#: shell.c:1354
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "non é posíbel restabelecer o modo nodelay para o df %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: é un directorio"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Non teño nome!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versión %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1756,314 +1766,314 @@ msgstr ""
"Uso:\t%s [opción GNU longa] [opción] ...\n"
"\t%s [opción GNU longa] [opción] guión-do-shell\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Opcións GNU longas:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Opcións do shell:\n"
-#: shell.c:2043
+#: shell.c:2069
#, fuzzy
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD o -c orde ou -O opcion_shopt\t\t(só invocación)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ou -o opción\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Escriba `%s -c \"help set\"' para máis información sobre as opcións do "
"shell.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Escriba `%s -c help' para máis información sobre as ordes internas do "
"shell.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Use a orden `bashbug' para reportar erros.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operación non válida"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Sinal ambigüa"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Colgar"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interromper"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Saír"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Instrución ilegal"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT rastreo/captura"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "instrución ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "instrución EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Excepción de coma flotante"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Matado"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Erro no bus"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Violación de segmento"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Chamada ao sistema errónea"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Tubería rota"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Temporizador"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Rematado"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Condicón de E/s urxente"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Detido (sinal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continúa"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "O proceso fillo morreu ou está parado"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Detido (entrada pola terminal)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Detido (saída pola terminal)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "E/S listas"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Límite de CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Límite de ficheiros"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarma (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarma (contorno)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Xanela cambiada"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Bloqueo de gravación"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Sinal de usuario 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Sinal de usuario 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "entrada de datos HFT pendente"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "fallo de enerxía inminente"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "caída do sistema inminente"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migrando o proceso a outra CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "erro de programación"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "o modo monitor HFT foi concedido"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "o modo monitor HTF foi retirado"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "a secuencia de son HFT foi completada"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Solicitude de información"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Sinal descoñecido #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "susbtitución errónea: non hai un `%s' que peche en %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: no é posíbel asignar unha lista a un membro da matriz"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "non é posíbel crear a tubería para a sustitución do proceso"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "non é posíbel crear un proceso fillo para a substitución do proceso"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "non é posíbel abrir a tubería chamada %s para lectura"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "non é posíbel abrir a tubería chamada %s para escritura"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "non é posíbel duplicar a tubería chamada %s como df %d"
-#: subst.c:6213
+#: subst.c:6370
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "substitución errónea: non hai unha \"`\" que peche en %s"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "non é posíble crear a tubería para a substitución da orde"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "non é posíbel crear un proceso fillo para a substitución da orde"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: non é posíbel duplicar a tubería como fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, fuzzy, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: conta de liñas non válida"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "`%s': nome de alias non válido"
-#: subst.c:7256
+#: subst.c:7478
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parámetro nulo ou non estabelecido"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parámetro nulo ou non estabelecido"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expresión de subcadea < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: substitución errónea"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: non é posíbel asignar de esta forma"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2071,12 +2081,12 @@ msgstr ""
"versiones futuras do intérprete obligarán a evaluación como unha "
"substitución aritmética"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "substitución errónea: non hai unha \"`\" que peche en %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "non hai concidencia: %s"
@@ -2099,21 +2109,21 @@ msgstr "agardábase `)'"
msgid "`)' expected, found %s"
msgstr "`)' agardábase, atopouse %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: agardábase un operador binario"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: agardábase un operador unario"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "falta un «]»"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "error sintáctico: `;' non esperado"
@@ -2122,17 +2132,17 @@ msgstr "error sintáctico: `;' non esperado"
msgid "invalid signal number"
msgstr "número de sinal non válido"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: valor erróneo en trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2140,86 +2150,91 @@ msgstr ""
"run_pending_traps: o manexador de sinal é SIG_DFL, reenviando %d (%s) a sí "
"mesmo"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: sinal errónea %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "erro ao importar a definición da función para «%s»"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "o nivel de shell (%d) é demasiado alto, restabelécese a 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: non hai contexto de función no ámbito actual"
-#: variables.c:2693
+#: variables.c:2661
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: non é posíbel asignar o gd á variábel"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: non hai contexto de función no ámbito actual"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s ten exportstr nulo"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "carácter non válido %d en exportsrt para %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "non hai «=» en exportstr para %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
"pop_var_context: a cabezak de shell_variables non é un contexto de función"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: non é un contexto global_variables "
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: a cabeza de shell_variables non é un ámbito de ambiente temporal"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: non é posíbel abrir como FICHEIRO"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: valor non válido para o descitor de ficheiro de rastreo"
-#: variables.c:6437
+#: variables.c:6450
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s fóra de rango"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
@@ -2314,12 +2329,16 @@ msgstr "command [-pVv] orde [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgilrtux] [-p] [nome[=valor] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgilrtux] [-p] nome[=valor] ..."
#: builtins.c:82
@@ -2422,7 +2441,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opción] [--] [arg ...]"
#: builtins.c:144
@@ -2472,7 +2492,7 @@ msgstr "type [-afptP] nome [nome ...]"
#: builtins.c:171
#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHacdefilmnpqrstuvx] [límite]"
#: builtins.c:174
@@ -2516,11 +2536,13 @@ msgid ""
msgstr "if ORDES; then ORDES; [ elif ORDES; then ORDES; ]...[ else ORDES; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while ORDES; do ORDES; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until ORDES; do ORDES; done"
#: builtins.c:200
@@ -3509,7 +3531,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3550,7 +3574,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3562,7 +3586,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3648,7 +3672,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3670,7 +3694,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3689,7 +3713,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3710,7 +3734,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3721,7 +3745,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3735,7 +3759,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3761,7 +3785,7 @@ msgstr ""
" Devolve con éxito a menos que non estea activo o control de traballos o\n"
" se produza un erro."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3844,7 +3868,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3856,7 +3880,7 @@ msgstr ""
" Este é un sinónimo para a orde interna \"test\", pero o último\n"
" argumento debe ser un `]' literal, que coincida co `[' inicial."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -3875,7 +3899,7 @@ msgstr ""
" Estado de saída:\n"
" Sempre con éxito."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3919,7 +3943,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -3949,7 +3973,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3999,7 +4023,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4017,7 +4041,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4049,7 +4073,7 @@ msgid ""
" children."
msgstr ""
-#: builtins.c:1533
+#: builtins.c:1534
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4074,7 +4098,7 @@ msgstr ""
" Devolve o estado de ID; falla se ID non é válido ou se se fornece unha\n"
" opción non válida."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4096,7 +4120,7 @@ msgstr ""
" Estado de Saída:\n"
" Devuelve o estado da última orden executada."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4126,7 +4150,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4146,7 +4170,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4162,7 +4186,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4180,7 +4204,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4201,12 +4225,14 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4219,12 +4245,14 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4237,7 +4265,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1671
+#: builtins.c:1672
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -4260,7 +4288,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado de saída da ORDE."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4274,7 +4302,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4292,7 +4320,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4306,7 +4334,7 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
@@ -4325,7 +4353,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve 1 se a EXPRESIÓN avalía a 0; devovle 0 de outra maneira."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4353,7 +4381,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4407,7 +4435,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1821
+#: builtins.c:1822
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -4456,7 +4484,7 @@ msgstr ""
" \n"
" A orde interna `dirs' mostra a rima de directorios."
-#: builtins.c:1855
+#: builtins.c:1856
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -4503,7 +4531,7 @@ msgstr ""
" \n"
" A orde interna `dirs' mostra a pila de directorios."
-#: builtins.c:1885
+#: builtins.c:1886
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -4553,7 +4581,7 @@ msgstr ""
"\tlista mostrada por dirs cando se chama sen opcións,\n"
"\tcomezando desde cero."
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -4590,7 +4618,7 @@ msgstr ""
" Devolve con éxito se se activa NOME_OPCIÓN; falla se se fornece\n"
" unha opción non válida ou NOME_OPCIÓN está desactivado."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4613,6 +4641,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -4629,7 +4659,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4660,7 +4690,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4682,7 +4712,7 @@ msgstr ""
" Devolve con éxito a menos que se forneza unha opción non válida o\n"
" se produza un erro."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4714,7 +4744,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4756,7 +4786,7 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -4766,6 +4796,10 @@ msgstr ""
" \n"
" Un sinónimo de `mapfile'."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: índice de matriz asociativa non válido"
+
#, fuzzy
#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
diff --git a/po/hr.gmo b/po/hr.gmo
index a7506358..228b369e 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index f68280b6..624e0d01 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -3,78 +3,73 @@
# This file is distributed under the same license as the bash package.
#
# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012, 2013.
-# Božidar Putanec <bozidarp@yahoo.com>, 2018, 2019, 2020, 2021.
+# Božidar Putanec <bozidarp@yahoo.com>, 2018, 2019, 2020, 2021, 2022.
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.1\n"
+"Project-Id-Version: bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2021-01-02 13:56-0800\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-17 11:19-0700\n"
"Last-Translator: Božidar Putanec <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"
-"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 19.12.3\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Lokalize 22.07.70\n"
#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "loši indeks polja"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: uklanjamo atribut nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: nije moguće pretvoriti indeksirano polje u asocijativno polje"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: nevaljan kljuÄ asocijativnog polja"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: nenumeriÄki indeks nije moguć"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: indeks je nužan pri dodjeli asocijativnom polju"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nije moguće stvoriti: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: nije moguće pronaći preÄac (keymap) za naredbu"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: prvi nebijeli znak nije „\"“"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "nema zakljuÄnog „%c“ u %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: nedostaje separator (dvotoÄka)"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "„%s“: nije moguće razvezati preÄac (keymap) za naredbu"
@@ -95,7 +90,7 @@ msgstr "zamjena vitiÄastih zagrada: nema dovoljno memorije za %u elemenata"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "zamjena vitiÄastih zagrada: nema dovoljno memorije za „%s“"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: ime aliasa nije valjano"
@@ -166,7 +161,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME nije definiran"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "previše argumenata"
@@ -193,7 +188,7 @@ msgstr "upozorenje: "
msgid "%s: usage: "
msgstr "%s: uporaba: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: opcija zahtijeva argument"
@@ -208,7 +203,7 @@ msgstr "%s: nužan je numeriÄki argument"
msgid "%s: not found"
msgstr "%s: nije nađeno"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: nevaljana opcija"
@@ -218,7 +213,7 @@ msgstr "%s: nevaljana opcija"
msgid "%s: invalid option name"
msgstr "%s: nevaljano ime za opciju"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: nije valjano ime"
@@ -231,7 +226,7 @@ msgstr "nevaljan oktalni broj"
msgid "invalid hex number"
msgstr "nevaljan heksadecimalni broj"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "nevaljan broj"
@@ -245,88 +240,93 @@ msgstr "%s: nevaljana specifikacija signala"
msgid "`%s': not a pid or valid job spec"
msgstr "„%s“: nije PID ili nije valjana oznaka posla"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: je samo-za-Äitanje varijabla"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: nije moguće pridružiti"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s je izvan raspona"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s je izvan raspona"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
-msgstr "%s: nema takvoga posla"
+msgstr "%s: nema takvog posla"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: nema upravljanja poslovima"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "nema upravljanja poslovima"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: ograniÄeni naÄin rada"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "ograniÄeni naÄin rada"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: nije ugrađena naredba ljuske"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "greška pisanja: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "greška pri postavljanju svojstava terminala: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "greška pri preuzimanju svojstava terminala: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: greška u određivanju trenutnog direktorija: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: oznaka posla nije jednoznaÄna"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "u ovoj inaÄici pomoć nije dostupna"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: nije moguće izbrisati: %s je samo-za-Äitanje"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: nije moguće izbrisati"
@@ -336,108 +336,108 @@ msgstr "%s: nije moguće izbrisati"
msgid "%s: invalid action name"
msgstr "%s: nevaljano ime za akciju"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: nema specifikacije za dovršavanje"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "upozorenje: opcija -F možda neće raditi prema oÄekivanju"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "upozorenje: opcija -C možda neće raditi prema oÄekivanju"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "funkcija dovršavanja trenutno ne radi"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "može se koristiti samo u funkciji"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "„-f“ se ne može koristiti za definiranje funkcija"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: je samo-za-Äitanje funkcija"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: referentna varijabla ne može biti polje (array)"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: nameref varijablu nije dopušteno samoreferencirati"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: kružna referencija imena"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%s“: nevaljano ime varijable za referenciju imena"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "„-f“ se ne može koristiti za definiranje funkcija"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: je samo-za-Äitanje funkcija"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: dodjela vrijednosti u navodnicima složenom polju je zastarjela"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: nije moguće uniÅ¡titi varijable polja na ovaj naÄin"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: nije moguće pretvoriti asocijativno u indeksirano polje"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: dodjela vrijednosti u navodnicima složenom polju je zastarjela"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dinamiÄko uÄitavanje nije dostupno"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "nije moguće otvoriti dijeljeni objekt %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "nije moguće pronaći %s u dijeljenom objektu %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: dinamiÄki uÄitljiva ugraÄ‘ena naredba već je uÄitana"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "funkcija uÄitavanja za %s zavrÅ¡ila je s greÅ¡kom (%d): nije uÄitano"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nije dinamiÄki uÄitan"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nije moguće izbrisati: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: je direktorij"
@@ -452,7 +452,7 @@ msgstr "%s: nije obiÄna datoteka"
msgid "%s: file is too large"
msgstr "%s: datoteka je prevelika"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: nije moguće izvršiti binarnu datoteku"
@@ -489,7 +489,7 @@ msgstr "nijedna naredba nije nađena"
#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
#: builtins/fc.def:412
msgid "history specification"
-msgstr "prikaz povijesti"
+msgstr "specifikacija povijesti"
#: builtins/fc.def:444
#, c-format
@@ -551,12 +551,12 @@ msgstr ""
"Nema pomoći za „%s“.\n"
"Pokušajte s „help help“, „man -k %s“ ili „info %s“."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: Nije moguće otvoriti: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -576,21 +576,21 @@ msgstr ""
"Zvjezdica (*) pokraj imena znaÄi da je naredba onemogućena.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "moguć je samo jedan od -a, -n, -r ili -w"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "pozicija u povijesti"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: nevaljan vremenski žig"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: proširenje povijesti nije uspjelo"
@@ -613,78 +613,78 @@ msgstr "%s: argumenti moraju biti ID-ovi procesa ili ID-ovi posla"
msgid "Unknown error"
msgstr "Nepoznata greška"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "oÄekivan je izraz"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: nije indeksirano polje"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: nevaljana specifikacija deskriptora datoteke"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: nevaljan deskriptor datoteke: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: nevaljan broj (koliÄina) redaka"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: nevaljan poÄetak polja (nevaljan indeks polja)"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: nevaljana koliÄina (redaka izmeÄ‘u poziva)"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "prazno ime varijable polja"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "nužna je podrška za varijable (vrsta) polje"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: nedostaje znak u specifikaciji formata"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: nevaljana specifikacija za format vremena"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: nevaljan znak u specifikaciji formata"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "upozorenje: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "problem s raÅ¡Älanjivanjem formata: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "nedostaje heksadecimalna znamenka za \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "nedostaje unikodna (unicode) znamenka za \\%c"
@@ -782,9 +782,9 @@ msgstr ""
"\n"
" Argumenti:\n"
" +N Zarotira stÈg tako, da N-ti direktorij u stÈgu (brojeći od nule s\n"
-" lijeve strane popisa prikazanoga s „dirs“) postane novi vrh stÈga.\n"
+" lijeve strane popisa pokazanog s „dirs“) postane novi vrh stÈga.\n"
" -N Zarotira stÈg tako, da N-ti direktorij u stÈgu (brojeći od nule s\n"
-" desne strane popisa prikazanoga s „dirs“) postane novi vrh stÈga.\n"
+" desne strane popisa pokazanog s „dirs“) postane novi vrh stÈga.\n"
" DIREKTORIJ Doda DIREKTORIJ na vrh stÈga direktorija i\n"
" uÄini ga novim trenutnim radnim direktorijem.\n"
"\n"
@@ -820,20 +820,20 @@ msgstr ""
"\n"
" Argumenti:\n"
" +N Ukloni da N-ti direktorij iz stÈga brojeći od nule s lijeve\n"
-" strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n"
+" strane popisa pokazanog s „dirs“. Na primjer: „popd +0“\n"
" ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n"
" +N Ukloni da N-ti direktorij iz stÈga brojeći od nule s desne\n"
-" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n"
+" strane popisa pokazanog s „dirs“. Na primjer.: „popd -0“\n"
" ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n"
"\n"
" Naredba „dirs“ prikaže trenutni sadržaj stÈga direktorija."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: nevaljana specifikacija za istek vremena (timeout)"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "greÅ¡ka Äitanja: %d: %s"
@@ -846,7 +846,7 @@ msgstr "„return“ je moguć samo iz funkcije ili iz skripte pokrenute sa „s
msgid "cannot simultaneously unset a function and a variable"
msgstr "nije moguće istovremeno poništiti funkciju i varijablu"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: nije varijabla (vrste) polja"
@@ -865,11 +865,11 @@ msgstr "%s: Nije moguće izvesti (export)"
msgid "shift count"
msgstr "broj (veliÄina) pomaka"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "nije moguće istovremeno postaviti i poništiti opcije ljuske"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nevaljano ime za opciju ljuske"
@@ -936,16 +936,16 @@ msgstr "%s: nevaljan argument za ograniÄenje"
msgid "`%c': bad command"
msgstr "„%c“: loša naredba"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nije moguće odrediti vrijednost ograniÄenja: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "ograniÄenje"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nije moguće promijeniti ograniÄenja: %s"
@@ -964,7 +964,7 @@ msgstr "„%c“: nevaljan operator u simboliÄkom naÄinu"
msgid "`%c': invalid symbolic mode character"
msgstr "„%c“: nevaljan znak u simboliÄkom naÄinu"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " redak "
@@ -984,96 +984,106 @@ msgstr "Prekidamo..."
msgid "INFORM: "
msgstr "informacija: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "DijagnostiÄko upozorenje: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "nepoznata greška naredbe"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "loša vrsta naredbe"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "loš konektor"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "loš skok"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: nevezana varijabla"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\avrijeme Äekanja na ulaz je isteklo: automatska-odjava\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "nije moguće preusmjeriti standardni ulaz iz /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c“: nevaljan znak za format"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc(): coproc [%d:%s] još uvijek postoji"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "greška cijevi"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: prekoraÄena je dopuÅ¡tena razina (dubina) gniježđenja eval (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: prekoraÄena je dopuÅ¡tena razina gniježđenja source (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: prekoraÄena je dopuÅ¡tena razina gniježđenja funkcije (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ograniÄenje : znak „/“ nije dopuÅ¡ten u imenima naredba"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: naredba nije pronađena"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: nije moguće izvršiti: potrebna datoteka nije nađena"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: loš interpreter"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: binarnu datoteku %s nije moguće pokrenuti/izvršiti"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s“ je specijalna funkcija ugrađena u ljusku"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nije moguće duplicirati deskriptor datoteke %d u deskriptor datoteke %d"
@@ -1086,68 +1096,68 @@ msgstr "prekoraÄena je dopuÅ¡tena razina rekurzija izraza"
msgid "recursion stack underflow"
msgstr "podlijevanje stÈga rekurzija (prazni stÈg)"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "sintaktiÄka greÅ¡ka u izrazu"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "pokušaj dodjeljivanja ne-varijabli (objektu koji nije varijabla)"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "sintaktiÄka greÅ¡ka u dodjeljivanju varijabli"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "dijeljenje s 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "**interna greška** : loš simbol u izrazu za dodjelu"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "znak „:“ je nužan u uvjetnom izrazu"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "eksponent je manji od 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "oÄekivalo se ime nakon pre-increment ili pre-decrement"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "nedostaje „)“"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "sintaktiÄka greÅ¡ka: oÄekivan je operand"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "sintaktiÄka greÅ¡ka: nevaljan aritmetiÄki operator"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (simbol greške je „%s“)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "nevaljana aritmetiÄka baza"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "%s: nevaljana cijelo brojna (integer) konstanta"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "vrijednost baze je prevelika"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: greška u izrazu\n"
@@ -1156,7 +1166,7 @@ msgstr "%s: greška u izrazu\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd(): nije moguće pristupiti nadređenim direktorijima"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nije moguće onemogućiti „nodelay†naÄin za deskriptor datoteke %d"
@@ -1175,167 +1185,167 @@ msgstr "save_bash_input(): meÄ‘uspremnik već postoji za novi datoteÄni deskrip
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline(): pgrp pipe (procesna skupina cijevi)"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: PETLJA: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: PETLJA: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "raÄvani PID %d pripada tekućem poslu %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "uklanjamo zaustavljeni posao %d sa skupinom procesa %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process(): PID %5ld (%s) oznaÄen kao joÅ¡ uvijek aktivan"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid(): %ld: PID ne postoji"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Gotovo"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Zaustavljeno"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Zaustavljeno(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Pokrenuto"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Gotovo(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Izlaz %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Nepoznata izlazna vrijednost (izlazni kÈd)Nepoznato"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(snimka (core dump) memorije je spremljena!) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "promijeni skupinu potomka (% ld u% ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: PID %ld nije potomak ove ljuske"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: proces %ld nije nigdje registriran"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: posao %d je zaustavljen"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: nema tekućih poslova"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: posao je završen"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: posao %d je već u pozadini"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld(): WNOHANG je omogućen kako bi se izbjeglo neograniÄeno blokiranje"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: redak %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (snimka (core dump) memorije je spremljena!)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(radni direktorij je sada: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp() nije uspješna"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: nema upravljanja poslom u pozadini"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina retka (protokol realizacije stringova/redaka)"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid()"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nije moguće postaviti procesnu skupinu (%d) terminala"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "nema upravljanja poslom u ovoj ljusci"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc(): neuspješni kontrolni test: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1344,47 +1354,47 @@ msgstr ""
"\r\n"
"malloc(): %s:%d: loše provedeni kontrolni test\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "nepoznato"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc(): zauzeti blok na popisu slobodnih blokova"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free(): pozvana s argumentom bloka koji je već slobodan"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free(): pozvana s argumentom bloka koji se ne koristi"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free(): otkriveno je podlijevanje, mh_nbytes izvan raspona"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free(): otkriveno je podlijevanje; magic8 je oštećen"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free(): veliÄine poÄetnog i zakljuÄnog (dijela) bloka su razliÄite"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc(): je pozvana s nekorištenim blokom kao argument (blok još nije odabran)"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc(): otkriveno je podlijevanje, mh_nbytes izvan raspona"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc(): otkriveno je podlijevanje; magic8 je oštećen"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc(): veliÄine poÄetnog i zakljuÄnog (dijela) bloka su razliÄite"
@@ -1426,22 +1436,22 @@ msgstr "%s: loša specifikacija za mrežnu stazu"
msgid "network operations not supported"
msgstr "mrežne operacije nisu podržane"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale(): LC_ALL: nije moguće promijeniti jeziÄno podruÄje (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale(): LC_ALL: nije moguće promijeniti jeziÄno podruÄje (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale(): %s: nije moguće promijeniti jeziÄno podruÄje (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale(): %s: nije moguće promijeniti jeziÄno podruÄje (%s): %s"
@@ -1459,138 +1469,138 @@ msgstr "Imate novu poštu u $_"
msgid "The mail in %s has been read\n"
msgstr "PoÅ¡ta u %s je već proÄitana\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "sintaktiÄka greÅ¡ka: nužan je aritmetiÄki izraz"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "sintaktiÄka greÅ¡ka: neoÄekivan „;“ znak"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "sintaktiÄka greÅ¡ka: „((%s))“"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document(): loša vrsta instrukcije %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "here-document u retku %d zavrÅ¡ava sa znakom kraj datoteke (oÄekivan je „%s“)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection(): instrukcija za preusmjeravanje „%d“ je izvan raspona"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr ""
"shell_getc(): shell_input_line_size (%zu) veća je od SIZE_MAX (%lu):\n"
" redak je skraćen"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "maksimalna broj (koliÄina) here-document-a je premaÅ¡ena"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "neoÄekivan kraj-datoteke (EOF) pri traženju odgovarajućeg „%c“"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "neoÄekivan kraj datoteke (EOF) pri traženju „]]“"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "sintaktiÄka greÅ¡ka u uvjetnom izrazu: neoÄekivan simbol „%s“"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "sintaktiÄka greÅ¡ka u uvjetnom izrazu"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "neoÄekivan simbol „%s“; oÄekivana je „)“"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "oÄekivana je „)“"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "neoÄekivan argument „%s“ za uvjetni unarni operator"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "neoÄekivan argument za uvjetni unarni operator"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "neoÄekivani simbol „%s“; oÄekivan je uvjetni binarni operator"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "oÄekivan je uvjetni binarni operator"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "neoÄekivan argument „%s“ uvjetnom binarnom operatoru"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "neoÄekivan argument uvjetnom binarnom operatoru"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "neoÄekivan simbol „%c“ u uvjetnoj naredbi"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "neoÄekivan simbol „%s“ u uvjetnoj naredbi"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "neoÄekivan simbol %d u uvjetnoj naredbi"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "sintaktiÄka greÅ¡ka blizu neoÄekivanog simbola „%s“"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "sintaktiÄka greÅ¡ka blizu „%s“"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "sintaktiÄka greÅ¡ka: neoÄekivani kraj datoteke"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "sintaktiÄka greÅ¡ka"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Koristite \"%s\" za izlaz iz ljuske.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "neoÄekivani kraj datoteke pri traženju odgovarajuće „)“"
@@ -1628,94 +1638,94 @@ msgstr "xtrace_set(): pointer datoteke je NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "deskriptor datoteke xtrace (%d) != broju datoteke u pointeru datoteke xtrace (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf(): „%c“: nevaljan znak za format"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "deskriptor datoteke je izvan raspona"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: preusmjeravanje nije jednoznaÄno"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: nije moguće pisati preko postojeće datoteke"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ograniÄeno: nije moguće preusmjeriti izlaz"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "nije moguće stvoriti privremenu datoteku za here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: nije moguće dodijeliti deskriptor datoteke varijabli"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "greška preusmjeravanja: nije moguće duplicirati deskriptor datoteke"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "nije moguće pronaći /tmp; stvorite taj direktorij!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp mora biti valjano ime direktorija"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "u interaktivnoj ljusci pretty-printing se zanemaruje"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: nevaljana opcija"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "nije moguće postaviti UID na %d: efektivni UID je %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "nije moguće postaviti GID na %d: efektivni GID je %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "nije moguće pokrenuti debugger; dijagnostika je onemogućena"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: to je direktorij"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Nemam ime!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, inaÄica %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1724,319 +1734,319 @@ msgstr ""
"Uporaba: %s [GNU dugaÄka opcija] [opcija]...\n"
" %s [GNU dugaÄka opcija] [opcija] skripta...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU dugaÄke opcije:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Kratke opcije:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD ili -c NAREDBA ili -O SHOPT-OPCIJA (samo za pozivanje)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ili -o opcija (može se promijeniti sa „setâ€)\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Utipkajte „%s -c \"help set\"“ za dodatne obavijesti o opcijama ljuske.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Utipkajte „%s -c help set“ za dodatne obavijesti o ugrađenim naredbama ljuske.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Koristite naredbu „bashbug“ za prijavljivanje grešaka.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "PoÄetna mrežna bash stranica: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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 prijevodu na lokalizacija@linux.hr/\n"
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask(): %d: nevaljana operacija"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Nepostojeći signal"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Poklopi"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Prekini"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Završi"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Nedopuštena instrukcija"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trag/zamka instrukcija (Trace/Breakpoint trap)"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT instrukcija"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT instrukcija"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Iznimka (broja) s pomiÄnim zarezom"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Ubijen"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Greška sabirnice"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Segmentacijska greška"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Loš sustavski poziv"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
-msgstr "Slomljena cijev"
+msgstr "Potrgana cijev"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Budilica"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Završeno"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Žurno U/I stanje"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Zaustavljeno (signalom)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Nastavljanje"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Potomak mrtav ili zaustavljen"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Zaustavljen (ulaz u terminal)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Zaustavljen (izlaz iz terminala)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "U/I je spreman"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "OgraniÄenje (vremena) procesora"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "OgraniÄenje (veliÄine) datoteke"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (virtualni)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Prozor je promijenjen"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Zapis je zakljuÄan"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "KorisniÄki signal 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "KorisniÄki signal 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT ulazni podaci Äekaju"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "neizbježan prekid napajanja"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "neizbježni pad sustava"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "preseli proces na drugi procesor"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "programska greška"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT nadzor je dopušten"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT nadzor je oduzet"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT sekvencija zvukova je završena"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Zahtjev za obavijestima"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Nepoznati signal #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "loÅ¡a supstitucija: nema zakljuÄnog „%s“ u %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: nije moguće dodijeliti popis elementu polja"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "nije moguće napraviti cijev za zamjenu procesa"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "nije moguće napraviti potomka za zamjenu procesa"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nije moguće otvoriti imenovanu cijev %s za Äitanje"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "nije moguće otvoriti imenovanu cijev %s za pisanje"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "nije moguće duplicirati imenovanu cijev %s kao deskriptor datoteke %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
-msgstr "nevaljana supstitucija: ignorira se prazni (nula) bajt na ulazu"
+msgstr "nevaljana supstitucija: zanemaren prazni (nula) bajt u ulazu"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "nije moguće napraviti cijev za zamjenu naredbi"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "nije moguće napraviti potomka za zamjenu naredbi"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute(): nije moguće duplicirati cijev kao deskriptor datoteke 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nevaljano ime varijable za ime referencije"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: nevaljana neizravna ekspanzija"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "„%s“: nevaljano ime varijable"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parametar nije postavljen"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametar je prazan ili nedefiniran"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: rezultat od dijela stringa (substring) < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: loša supstitucija"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: nije moguće dodijeliti na ovaj naÄin"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "buduće inaÄice ljuske prisilit će vrednovanje kao aritmetiÄku supstituciju"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "loÅ¡a supstitucija: nema zakljuÄnog znaka \"`\" u %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "nema podudaranja: %s"
@@ -2059,21 +2069,21 @@ msgstr "oÄekivana je „)“"
msgid "`)' expected, found %s"
msgstr "oÄekivana je „)“, a naÄ‘en je %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: oÄekivan je binarni operator"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: oÄekivan je unarni operator"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "nedostaje „]“"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "sintaktiÄka greÅ¡ka: neoÄekivan „%s“"
@@ -2082,99 +2092,104 @@ msgstr "sintaktiÄka greÅ¡ka: neoÄekivan „%s“"
msgid "invalid signal number"
msgstr "nevaljani broj za signal"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "trap handler: prekoraÄena je dopuÅ¡tena razina gniježđenja (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps(): loša vrijednost u trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: signalom rukuje SIG_DFL, opet Å¡alje %d (%s) samom sebi"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler(): loš signal %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "greška pri uvozu definicije funkcije za „%s“"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "razina ljuske (%d) je previsoka, vraćamo ju na 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable(): u trenutnom opsegu nema konteksta funkcije"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: varijabli se ne može dodijeliti vrijednost"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: nije moguće naslijediti vrijednost od nekompatibilne vrste"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: nazivu referencije se dodjeljuje cijeli broj"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables(): u trenutnom opsegu nema konteksta funkcije"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "*** %s ima prazni string za izvoz"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "*** nevaljani znak %d u izvoznom stringu za %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "*** nema „=“ u izvoznom stringu za %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context(): glava „shell_variables“ nije funkcijski kontekst"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context(): nije „global_variables“ kontekst"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope(): vrh od „shell_variables“ nije privremeni raspon valjanosti"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nije moguće otvoriti kao DATOTEKU"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: nevaljana vrijednost za „trace†deskriptora datoteke"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s vrijednost za kompatibilnost je izvan raspona"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2259,12 +2274,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] NAREDBA [ARGUMENT...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [IME[=VRIJEDNOST]...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [aAfFgiIlnrtux] [IME[=VRIJEDNOST]...] ili declare -p [-aAfFilnrtux] [IME...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] IME[=VRIJEDNOST]..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] IME[=VRIJEDNOST]… ili typeset -p [-aAfFilnrtux] [IME...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2363,8 +2378,8 @@ msgid "return [n]"
msgstr "return [N]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o IME_OPCIJE] [--] [ARGUMENT...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o IME_OPCIJE] [--] [-] [ARGUMENT...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2415,8 +2430,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] IME..."
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [LIMIT]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [LIMIT]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2455,12 +2470,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if NAREDBE; then NAREDBE; [ elif NAREDBE; then NAREDBE; ]... [ else NAREDBE; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while NAREDBE; do NAREDBE; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while NAREDBE; do NAREDBE-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until NAREDBE; do NAREDBE; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until NAREDBE; do NAREDBE-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -2796,10 +2811,10 @@ msgstr ""
"\n"
" Opcije:\n"
" -L slijedi simboliÄke veze; simboliÄke veze u DIREKTORIJU razrijeÅ¡i\n"
-" nakon obrade zapisa „..“\n"
+" nakon obrade instance „..“\n"
" -P rabi fiziÄku strukturu direktorija umjesto da slijedi simboliÄke\n"
" veze; simboliÄke veze u DIREKTORIJU razrijeÅ¡i prije obrade\n"
-" zapisa „..“\n"
+" instance „..“\n"
" -e ako je dana s opcijom „-P“, i trenutni radni direktorij nije\n"
" moguće uspješno odrediti nakon uspješne promjene direktorija,\n"
" „cd“ zavrÅ¡i s kÈdom razliÄitim od 0.\n"
@@ -2948,7 +2963,7 @@ msgstr ""
" -f prikaže samo definirane funkcije (ne prikaže varijable)\n"
" -F prikaže samo imena funkcija bez definicija\n"
" -g stvori globalne varijable samo za upotrebu u funkciji ljuske;\n"
-" inaÄe se ignoriraju\n"
+" inaÄe su zanemarene\n"
" -I ako stvori lokalnu varijablu, neka naslijedi atribute i vrijednost\n"
" varijable s istim imenom u prethodnom opsegu\n"
" -p prikaže atribute i vrijednost za svako dano IME\n"
@@ -3065,7 +3080,7 @@ msgstr ""
" \\E znak za escape (ESC)\n"
" \\f nova stranica (znak za FF, form feed)\n"
" \\n novi redak (znak za LF, line feed)\n"
-" \\r na poÄetak novoga retka (Enter, znak za CR, carriage return)\n"
+" \\r na poÄetak novog retka (Enter, znak za CR, carriage return)\n"
" \\t horizontalni tabulator\n"
" \\v vertikalni tabulator\n"
" \\\\ backslash (\\)\n"
@@ -3139,7 +3154,7 @@ msgstr ""
" -f uÄita ugraÄ‘enu naredbu IME iz dijeljenog objekta DATOTEKA\n"
" -d ukloni ugraÄ‘enu naredbu uÄitanu s „-f“\n"
"\n"
-" Bez opcija, omogućena su sva navedena IMENA. Bez imena prikazane su\n"
+" Bez opcija, omogućena su sva navedena IMENA. Bez imena pokazane su\n"
" omogućene naredbe (ili s „-n“ onemogućene).\n"
"\n"
" Primjer: da koristite binarnu datoteku „test“ koja se nalazi na stazi\n"
@@ -3327,7 +3342,7 @@ msgid ""
msgstr ""
"Prikaže ili izvrši naredbe iz popisa povijesti.\n"
"\n"
-" Koristi se za prikazivanje dosadašnjih, za uređivanje ili za ponovno\n"
+" Koristi se za pokazivanje dosadašnjih, za uređivanje ili za ponovno\n"
" pokretanje naredbi. PRVA i ZADNJA mogu biti brojevi koji specificiraju\n"
" raspon ili PRVA može biti string s koji specificira najnoviju naredbu\n"
" koja zapoÄinje s tim slovima.\n"
@@ -3565,7 +3580,7 @@ msgstr ""
"\n"
" Ako je navedena opcija '-x', dana NAREDBA će se izvršiti tek nakon\n"
" zatvaranja svih navedenih poslova u ARGUMENTIMA (tj. njihov ID procesa je\n"
-" zamijenjen s ID-om njima nadređenoga procesa).\n"
+" zamijenjen s ID-om njima nadređenog procesa).\n"
"\n"
" Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška.\n"
" Ako je dana opcija -x, zavrÅ¡i sa izlaznim kÈdom NAREDBE."
@@ -3736,7 +3751,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3772,14 +3788,16 @@ msgid ""
" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-"ProÄita redak iz standardnoga ulaza i razdijeli ga na polja.\n"
+"ProÄita redak iz standardnog ulaza i razdijeli ga na polja.\n"
"\n"
-" ProÄita jedan redak iz standardnoga ulaza (ili navedenog deskriptora\n"
+" ProÄita jedan redak iz standardnog ulaza (ili navedenog deskriptora\n"
" datoteke FD ako je dana opcija „-u“) i dodijeli prvu rijeÄ prvom IMENU,\n"
" drugu rijeÄ drugom IMENU, i tako dalje; preostale rijeÄi dodijeli zadnjem\n"
" IMENU. Samo se znakovi sadržani u varijabli $IFS prepoznaju kao MEÄA\n"
-" (separator rijeÄi). Ako nije navedeno nijedno IME, proÄitani redak se\n"
-" spremi u varijablu REPLY.\n"
+" (separator rijeÄi). Zadano, obratna kosa crta (backslash) maskira znakove\n"
+" za separator i znak za novi redak.\n"
+"\n"
+" Ako nije navedeno nijedno IME, proÄitani redak se spremi u varijablu REPLY.\n"
"\n"
" Opcije:\n"
" -a POLJE proÄitane rijeÄi dodijeli sekvencijalnim indeksima POLJA\n"
@@ -3801,13 +3819,13 @@ msgstr ""
" samo ako je ulaz dostupni na specificiranom deskriptoru\n"
" datoteke Završi s uspjehom\n"
"\n"
-" -u FD Äita iz deskriptora datoteke FD umjesto iz standardnoga ulaza\n"
+" -u FD Äita iz deskriptora datoteke FD umjesto iz standardnog ulaza\n"
"\n"
" Završi s uspjehom osim ako ne naiđe na konac datoteke (EOF) ili je\n"
" isteklo vrijeme Äekanja ili se dogodila greÅ¡ka pri dodjeli ili je\n"
" naveden nevaljani deskriptor datoteke kao argument opciji „-u“."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3826,7 +3844,7 @@ msgstr ""
"\n"
" Vrati vrijednost N ili 1 ako ljuska ne izvrši funkciju ili skriptu."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3962,7 +3980,7 @@ msgstr ""
" hashall == -h\n"
" histexpand == -H\n"
" history omogući naredbu „history“\n"
-" ignoreeof ignorira Ctrl-D; ne završi (ne iziđe iz) ljusku na EOF\n"
+" ignoreeof zanemari Ctrl-D; ne završi (ne iziđe iz) ljusku na EOF\n"
" interactive-comments dopusti komentiranje u interaktivnim naredbama\n"
" keyword == -k\n"
" monitor == -m\n"
@@ -3984,7 +4002,7 @@ msgstr ""
"\n"
" Završi s uspjehom osim ako je dana nevaljana opcija."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4021,7 +4039,7 @@ msgstr ""
" Završi s uspjehom osim ako je dana nevaljana opcija ili IME je\n"
" „samo-za-Äitanje“. (bez navodnika)"
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4054,7 +4072,7 @@ msgstr ""
" Završi s uspjehom osim ako je dana nevaljana opcija ili nije navedeno\n"
" valjano IME."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4081,8 +4099,8 @@ msgstr ""
" VRIJEDNOST, prvo mu dodijeli VRIJEDNOST, a zatim ga oznaÄi nepromjenjivim.\n"
"\n"
" Opcije:\n"
-" -a svako IME se odnosi na varijable indeksiranoga polja\n"
-" -A svako IME se odnosi na varijable asocijativnoga polja\n"
+" -a svako IME se odnosi na varijable indeksiranog polja\n"
+" -A svako IME se odnosi na varijable asocijativnog polja\n"
" -f svako IME se odnosi na funkcije ljuske\n"
" -p prikaže popis svih nepromjenjivih varijabli ili funkcija\n"
" ovisno o opciji „-f“ (je li ili nije dana).\n"
@@ -4091,7 +4109,7 @@ msgstr ""
"\n"
" Završi s uspjehom osim ako je dana nevaljana opcija ili je IME nevaljano."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4108,7 +4126,7 @@ msgstr ""
"\n"
" Završi s uspjehom osim ako je N negativni ili veći od $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4131,7 +4149,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe iz DATOTEKE ili s kÈdom 1 ako se\n"
" DATOTEKA ne može proÄitati."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4155,7 +4173,7 @@ msgstr ""
" Završi s uspjehom osim ako upravljanje poslovima nije omogućeno\n"
" ili se dogodila greška."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4281,9 +4299,9 @@ msgstr ""
" STRING1 = STRING2 istina ako su stringovi jednaki\n"
" STRING1 != STRING2 istina ako stringovi nisu jednaki\n"
" STRING1 < STRING2 istina ako se leksikografski prvi string\n"
-" razvrsta ispred drugoga\n"
+" razvrsta ispred drugog\n"
" STRING1 > STRING2 istina ako se leksikografski prvi string\n"
-" razvrsta iza drugoga\n"
+" razvrsta iza drugog\n"
"\n"
" Ostali operatori:\n"
" -o OPCIJA istina ako je ova OPCIJA ljuske omogućena\n"
@@ -4300,7 +4318,7 @@ msgstr ""
" Završi s uspjehom ako je IZRAZ istinit, 1 ako je IZRAZ neistinit,\n"
" ili 2 ako je dan nevaljan argument."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4312,7 +4330,7 @@ msgstr ""
" To je sinonim za ugrađenu funkciju „test“, ali zadnji argument\n"
" mora biti zagrada „]“ kao par zagradi „[“ na poÄetku."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4329,7 +4347,7 @@ msgstr ""
"\n"
" ZavrÅ¡i uvijek s kÈdom 0."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4372,7 +4390,7 @@ msgstr ""
" specificiranih signala (SIGNAL_SPEC). Ako nema ARGUMENTA (i dan je samo\n"
" jedan signal) ili ARGUMENT je „-“, specificirani signal zadobije svoju\n"
" originalnu vrijednost (koju je imao na startu ove ljuske). Ako je ARGUMENT\n"
-" prazni string, ljuska i njezini potomci ignoriraju svaki SIGNAL_SPEC.\n"
+" prazni string, ljuska i njezini potomci zanemare svaki SIGNAL_SPEC.\n"
"\n"
" Ako je SIGNAL_SPEC 0 ili EXIT, ARGUMENT se izvrši kad zatvorite\n"
" (exit) ljusku. Ako je SIGNAL_SPEC DEBUG, ARGUMENT se izvrši prije\n"
@@ -4395,7 +4413,7 @@ msgstr ""
" Završi s uspjehom osim ako SIGNAL_SPEC nije valjan ili je dana\n"
" nevaljana opcija."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4445,7 +4463,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s uspjehom ako se pronaÄ‘u sva IMENA, inaÄe s 1."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4539,7 +4557,7 @@ msgstr ""
" Završi s uspjehom osim ako je dana nevaljana opcija\n"
" ili se dogodila greška."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4571,7 +4589,7 @@ msgstr ""
"\n"
" Završi s uspjehom osim ako MODE nije valjan ili je dana nevaljana opcija."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4615,7 +4633,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom zadnjeg ID-a; s kÈdom 1 ako je ID nevaljan ili je dana\n"
" nevaljana opcija ili ako je -n dan, a ljuska nema neoÄekivane potomke."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4636,7 +4654,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom zadnjeg PID-a, s kÈdom 1 ako je PID nevaljan,\n"
" ili s 2 ako je dana nevaljana opcija."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4648,16 +4666,16 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"IzvrÅ¡i naredbe za svakoga Älana u popisu.\n"
+"IzvrÅ¡i naredbe za svakog Älana u popisu.\n"
"\n"
-" Petlja „for“ izvrÅ¡i sekvenciju naredbi za svakoga Älana u popisu stavki.\n"
+" Petlja „for“ izvrÅ¡i sekvenciju naredbi za svakog Älana u popisu stavki.\n"
" Ako nema operanda „in RIJEČIMA...; podrazumijeva se operand\n"
" „in \"$@\"“. Svakom elementu u RIJEČIMA, IME se postavi na taj element\n"
" i NAREDBE se izvrše.\n"
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4684,7 +4702,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4708,8 +4726,8 @@ msgstr ""
" Proširenjem RIJEČI, „select“ generira i prikaže izbornik na standardnom\n"
" izlazu za greÅ¡ke s brojem ispred svake rijeÄi. Ako operand „u RIJEÄŒIMA“\n"
" nije naveden, podrazumijeva se operand „in \"$@\"“.\n"
-" Nakon izbornika prikaže se PS3 prompt i redak se Äita iz standardnoga\n"
-" ulaza; ako se redak sastoji od broja koji odgovara jednoj od prikazanih\n"
+" Nakon izbornika prikaže se PS3 prompt i redak se Äita iz standardnog\n"
+" ulaza; ako se redak sastoji od broja koji odgovara jednoj od pokazanih\n"
" rijeÄi, onda varijabla IME dobije vrijednost te rijeÄi; ako je redak\n"
" prazan, RIJEÄŒI i prompt se ponovno prikažu; ako se proÄita EOF (Ctrl-D)\n"
" „select“ naredba zavrÅ¡i. Bilo koja druga proÄitana vrijednost uÄini da se\n"
@@ -4719,7 +4737,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4741,12 +4759,12 @@ msgstr ""
" korisnikom i CPU vrijeme potrošeno sustavom za izvršavanje naredbi.\n"
"\n"
" Izlazni format se može prilagoditi s varijablom okoline TIMEFORMAT.\n"
-" Opcija „-p“ ignorira TIMEFORMAT i ispiše izlaz u prenosivom POSIX\n"
+" Opcija „-p“ zanemari TIMEFORMAT i ispiše izlaz u prenosivom POSIX\n"
" formatu.\n"
"\n"
" ZavrÅ¡i s izlaznim kÈdom CJEVOVODA."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4763,7 +4781,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4788,41 +4806,41 @@ msgstr ""
"\n"
" „if“ zavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Izvršava naredbe tako dugo dok je test uspješan.\n"
"\n"
-" Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u „while“\n"
-" NAREDBAMA zavrÅ¡ava s kÈdom 0.\n"
+" Proširi i izvrši NAREDBE-2 tako dugo dok zadnja naredba u NAREDBAMA\n"
+" zavrÅ¡i s kÈdom 0.\n"
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Izvršava naredbe tako dugo dok test ne uspije.\n"
"\n"
-" Izvršava sukcesivne NAREDBE tako dugo dok zadnja naredba u\n"
-" „until“ NAREDBAMA zavrÅ¡i s kÈdom razliÄitim od 0.\n"
+" Proširi i izvrši NAREDBE-2 tako dugo dok zadnja naredba u NAREDBAMA\n"
+" zavrÅ¡i s kÈdom razliÄitim od 0.\n"
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4843,7 +4861,7 @@ msgstr ""
"\n"
" Naredba coproc zavrÅ¡i s kÈdom 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4864,7 +4882,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s uspjehom osim ako je IME readonly (samo-za-Äitanje)."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4881,7 +4899,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4903,7 +4921,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom nastavljenog posla."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4921,7 +4939,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 1 ako je rezultat IZRAZA jednak 0;\n"
" inaÄe zavrÅ¡i s uspjehom."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4967,7 +4985,7 @@ msgstr ""
"\n"
" Završi s uspjehom ili 1 ovisno o IZRAZU."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5030,25 +5048,25 @@ msgstr ""
" kad argument od „cd“ (direktorij) nije u\n"
" trenutnom radnom direktoriju\n"
" GLOBIGNORE popis uzoraka koji opisuju imena datoteka koje\n"
-" se ignoriraju prilikom ekspanzije imena staza\n"
+" su zanemarene prilikom ekspanzije imena staza\n"
" HISTFILE ime datoteke koja sadrži povijest vaših naredbi\n"
" HISTFILESIZE maksimalni broj redaka datoteke s povijesti naredba\n"
" HISTIGNORE popis uzoraka koji opisuju naredbe koje ne treba zapisati\n"
" u datoteku koja sadrži povijest vaših naredbi\n"
" HISTSIZE maksimalni broj redaka koje trenutna ljuska može dosegnuti\n"
-" HOME puni naziv staze do vašega osobnoga direktorija\n"
+" HOME puni naziv staze do vašega vlastitog direktorija\n"
" HOSTNAME ime raÄunala na kojem se izvrÅ¡ava „bash“\n"
" HOSTTYPE vrsta CPU-a na kojem se izvršava „bash“\n"
-" IGNOREEOF broj ignoriranih Ctrl-D (EOF) prije zatvaranja ljuske\n"
+" IGNOREEOF broj zanemarenih Ctrl-D (EOF) prije zatvaranja ljuske\n"
" MACHTYPE vrsta raÄunala na kojem se izvrÅ¡ava „bash“\n"
" MAILCHECK kako Äesto (u sekundama) „bash“ gleda ima li nove poÅ¡te\n"
" MAILPATH popis datoteka koje „bash“ provjeri za novu poštu\n"
" OSTYPE distribucija Unix-a no kojem se izvršava ovaj „bash“\n"
" PATH popis direktorija u kojima se traže naredbe\n"
-" PROMPT_COMMAND naredba koja se izvrši prije ispisa primarnoga prompta\n"
+" PROMPT_COMMAND naredba koja se izvrši prije ispisa primarnog prompta\n"
" PS1 string koji opisuje primarni prompt\n"
" PS2 string koji opisuje sekundarni prompt (zadano, „>“)\n"
-" PWD puni naziv staze trenutnog radnoga direktorija\n"
+" PWD puni naziv staze trenutnog radnog direktorija\n"
" SHELLOPTS popis svih omogućenih opcija ljuske\n"
" TERM naziv vrste trenutnog terminala\n"
" TIMEFORMAT pravilo za format ispisa „time“ statistika\n"
@@ -5067,7 +5085,7 @@ msgstr ""
" supstitucije“, obiÄno „^“; treći znak je „komentar\n"
" povijesti“, obiÄno „#“.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5111,16 +5129,16 @@ msgstr ""
" DIREKTORIJ Doda DIREKTORIJ na vrh stÈga direktorija i\n"
" uÄini ga novim trenutnim radnim direktorijem.\n"
" +N Zarotira stÈg tako, da N-ti direktorij u stÈgu (brojeći od nule s\n"
-" lijeve strane popisa prikazanoga s „dirs“) postane novi vrh stÈga.\n"
+" lijeve strane popisa pokazanog s „dirs“) postane novi vrh stÈga.\n"
" -N Zarotira stÈg tako, da N-ti direktorij u stÈgu (brojeći od nule s\n"
-" desne strane popisa prikazanoga s „dirs“) postane novi vrh stÈga.\n"
+" desne strane popisa pokazanog s „dirs“) postane novi vrh stÈga.\n"
"\n"
" Naredba „dirs“ prikaže trenutni sadržaj stÈga direktorija.\n"
"\n"
" Završi s uspjehom osim ako je dana nevaljana opcija ili promjena\n"
" direktorija nije uspjela"
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5158,10 +5176,10 @@ msgstr ""
"\n"
" Argumenti:\n"
" +N Ukloni da N-ti direktorij iz stÈga brojeći od nule s lijeve\n"
-" strane popisa prikazanoga s „dirs“. Na primjer: „popd +0“\n"
+" strane popisa pokazanog s „dirs“. Na primjer: „popd +0“\n"
" ukloni prvi, a „popd +1“ ukloni drugi direktorij.\n"
" +N Ukloni da N-ti direktorij iz stÈga brojeći od nule s desne\n"
-" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n"
+" strane popisa pokazanog s „dirs“. Na primjer.: „popd -0“\n"
" ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n"
"\n"
" Naredba „dirs“ prikaže trenutni sadržaj stÈga direktorija.\n"
@@ -5169,7 +5187,7 @@ msgstr ""
" Završi s uspjehom osim ako je dana nevaljana opcija ili promjena\n"
" direktorija nije uspjela."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5218,7 +5236,7 @@ msgstr ""
"\n"
" Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5255,7 +5273,7 @@ msgstr ""
" omogućeno, a s 1 ako je onemogućeno. Završi također s 1 ako je dano\n"
" nevaljano IME_OPCIJE, a završi s 2 ako je dana nevaljana opcija."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5274,6 +5292,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5304,6 +5324,8 @@ msgstr ""
" %b proširi backslash (\\) kontrolne znakove u odgovarajuće\n"
" argumente\n"
" %q citira argument tako, da se može iskoristiti kao ulaz za ljusku\n"
+" %Q kao %q, ali primijeni bilo kakvu preciznost na necitirani\n"
+" argument prije citiranja\n"
" %(fmt)T koristeći FMT, ispiše date-time string u obliku format stringa\n"
" za strftime(3)\n"
"\n"
@@ -5314,7 +5336,7 @@ msgstr ""
" Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška\n"
" u pisanju ili greška pri dodijeli."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5365,7 +5387,7 @@ msgstr ""
" Završi s uspjehom osim ako je dana nevaljana opcija\n"
" ili se dogodila greška."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5384,7 +5406,7 @@ msgstr ""
"\n"
" Završi s uspjehom osim ako je dana nevaljana opcija ili se dogodila greška."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5436,7 +5458,7 @@ msgstr ""
" Završi s uspjehom osim ako nije dana nevaljana opcija ili nije definirana\n"
" specifikacija za kompletiranje IMENA."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5470,7 +5492,7 @@ msgid ""
" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
-"ProÄitane retke iz standardnoga ulaza upiÅ¡e u varijablu indeksirano polje.\n"
+"ProÄitane retke iz standardnog ulaza upiÅ¡e u varijablu indeksirano polje.\n"
"\n"
" ProÄitane retke iz standardnog ulaza (ili ako je navedena opcija -u, iz\n"
" deskriptora datoteke FD) upiše u indeksiranu varijablu POLJE. Ako argument\n"
@@ -5500,7 +5522,7 @@ msgstr ""
" ZavrÅ¡i s uspjehom osim ako je POLJE readonly (samo-za-Äitanje) ili nije\n"
" polje ili je dana nevaljana opcija."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5510,6 +5532,9 @@ msgstr ""
"\n"
" Sinonim za „mapfile“."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: nevaljan kljuÄ asocijativnog polja"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/hu.gmo b/po/hu.gmo
index 08cb5115..cfc7843c 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 972911d8..c6d83882 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2019-11-16 17:58+0100\n"
"Last-Translator: Balázs Úr <ur.balazs@fsf.hu>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
@@ -25,58 +25,53 @@ msgstr ""
msgid "bad array subscript"
msgstr "hibás tömbindex"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: névhivatkozás attribútum eltávolítása"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: nem lehetséges az indexelt tömb asszociatívvá alakítása"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: érvénytelen asszociatívtömb-index"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: a nem-szám indexnek való értékadás nem lehetséges"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: asszociatív tömbhöz való értékadásnál meg kell adni az indexet"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nem hozható létre: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: nem található billentyűkiosztás a parancshoz"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: az elsÅ‘ nem szóközkarakter nem „\"â€"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "nincs záró „%c†a következőben: %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: hiányzó kettőspont-elválasztó"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "„%sâ€: nem lehetséges a kötés megszüntetése"
@@ -98,7 +93,7 @@ msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
"szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás „%s†számára"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%sâ€: érvénytelen alias-név"
@@ -174,7 +169,7 @@ msgstr ""
msgid "HOME not set"
msgstr "Nincs beállítva HOME"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "túl sok argumentum"
@@ -201,7 +196,7 @@ msgstr "figyelmeztetés: "
msgid "%s: usage: "
msgstr "%s: használat: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: a kapcsolónak kötelező argumentuma van"
@@ -216,7 +211,7 @@ msgstr "%s: a kötelező argumentum egy szám"
msgid "%s: not found"
msgstr "%s: nem található"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: érvénytelen kapcsoló"
@@ -226,7 +221,7 @@ msgstr "%s: érvénytelen kapcsoló"
msgid "%s: invalid option name"
msgstr "%s: érvénytelen kapcsolónév"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%sâ€: érvénytelen azonosító"
@@ -239,7 +234,7 @@ msgstr "érvénytelen oktális szám"
msgid "invalid hex number"
msgstr "érvénytelen hexadecimális szám"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "érvénytelen szám"
@@ -253,88 +248,93 @@ msgstr "%s: érvénytelen szignálmegadás"
msgid "`%s': not a pid or valid job spec"
msgstr "„%sâ€: nem pid vagy munkaazonosító"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: csak olvasható változó"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: nem szüntethető meg"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s kívül esik a tartományon"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argumentum"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s kívül esik a tartományon"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: nincs ilyen munka"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: nincs munkakezelés"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "nincs munkakezelés"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: korlátozott"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "korlátozott"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: nem beépített parancs"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "írási hiba: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "hiba a terminálattribútum beállításakor: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "hiba a terminálattribútum lekérdezésekor: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: hiba a munkakönyvtár lekérdezésekor: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: kétértelmű munkamegadás"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "ebben a verzióban nem érhető el súgó"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: nem szüntethető meg: csak olvasható %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: nem szüntethető meg"
@@ -344,108 +344,108 @@ msgstr "%s: nem szüntethető meg"
msgid "%s: invalid action name"
msgstr "%s: érvénytelen műveletnév"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: nincs kiegészítés meghatározva"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "figyelmeztetés: a -F kapcsoló nem a várt módon működhet"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "figyelmeztetés: a -C kapcsoló nem a várt módon működhet"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "jelenleg nincs kiegészítési függvény végrehajtás alatt"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "csak függvényben használható"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "nem használható a „-f†függvény létrehozására"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: csak olvasható függvény"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: a referenciaváltozó nem lehet tömb"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: a névhivatkozás változó önhivatkozása nem engedélyezett"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: körkörös névhivatkozás"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%sâ€: érvénytelen változónév a névhivatkozáshoz"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "nem használható a „-f†függvény létrehozására"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: csak olvasható függvény"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: az idézőjelezett összetett tömb értékadása elavult"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: ilyen módon nem lehet tömböt megszüntetni"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: nem lehetséges az asszociatív tömb indexeltté alakítása"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: az idézőjelezett összetett tömb értékadása elavult"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "a dinamikus betöltés nem érhető el"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "megosztott objektumfájl megnyitása sikertelen: %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "%s nem található a(z) %s megosztott objektumfájlban: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: nem dinamikusan van betöltve"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "%s betöltési függvénye hibát ad vissza (%d): nincs betöltve"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nem dinamikusan van betöltve"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nem törölhető: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s egy könyvtár"
@@ -460,7 +460,7 @@ msgstr "%s: nem normál fájl"
msgid "%s: file is too large"
msgstr "%s: a fájl túl nagy"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: bináris nem hajtható végre"
@@ -556,12 +556,12 @@ msgstr ""
"nem illeszkedik egy szócikk sem a következÅ‘re: „%sâ€.\n"
"A „help helpâ€, „man -k '%s'†vagy „info '%s'†parancsok segíthetnek."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: nem nyitható meg: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -580,21 +580,21 @@ msgstr ""
"A parancs nevét követő csillag (*) azt jelzi, hogy le van tiltva.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "a következő kapcsolók kizárják egymást: -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "előzménypozíció"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: érvénytelen időbélyeg"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: sikertelen előzményből való kiegészítés"
@@ -617,78 +617,78 @@ msgstr "%s: az argumentumok folyamat- vagy munkaazonosítók lehetnek"
msgid "Unknown error"
msgstr "Ismeretlen hiba"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "az értelmező kifejezést várt"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: nem egy indexelt tömb"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: érvénytelen fájlleíró-megadás"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: érvénytelen fájlleíró: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: sorok száma érvénytelen"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: érvénytelen tömbkezdet"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: érvénytelen parancshívási távolság"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "üres tömbváltozó-név"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "a tömbök használata nincs támogatva"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "„%sâ€: hiányzó formátumkarakter"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%câ€: érvénytelen idÅ‘formátum-megadás"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "„%câ€: érvénytelen formátumkarakter"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "figyelmeztetés: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "formátumfeldolgozási probléma: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "hiányzó hexadecimális számjegy a következőhöz: \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "hiányzó unicode számjegy a következőhöz: \\%c"
@@ -837,12 +837,12 @@ msgstr ""
" \n"
" A „dirs†beépített parancs listázza a könyvtárvermet."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: érvénytelen időkorlát-megadás"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "olvasási hiba: %d: %s"
@@ -857,7 +857,7 @@ msgstr ""
msgid "cannot simultaneously unset a function and a variable"
msgstr "nem lehet egyszerre függvényt és változót megszüntetni"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: nem egy tömbváltozó"
@@ -876,12 +876,12 @@ msgstr "%s: nem exportálható"
msgid "shift count"
msgstr "shift-szám"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr ""
"nem lehet egyszerre beállítani és törölni parancsértelmező-beállításokat"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: érvénytelen parancsértelmezőkapcsoló-név"
@@ -948,16 +948,16 @@ msgstr "%s: érvénytelen korlátérték"
msgid "`%c': bad command"
msgstr "„%câ€: érvénytelen parancs"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nem kérdezhető le a korlát: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "korlát"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nem módosítható a korlát: %s"
@@ -976,7 +976,7 @@ msgstr "„%câ€: érvénytelen szimbolikus módoperátor"
msgid "`%c': invalid symbolic mode character"
msgstr "„%câ€: érvénytelen szimbolikus módkarakter"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " sor: "
@@ -996,96 +996,106 @@ msgstr "Megszakítás..."
msgid "INFORM: "
msgstr "INFORM: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "figyelmeztetés: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "hiba: érvénytelen parancs"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "hibás parancstípus"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "hibás csatlakozó"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "hibás ugrás"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: kötetlen változó"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aidőtúllépés bemenetre várva: automatikus kijelentkezés\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "szabványos bemenet /dev/null-ra állítása sikertelen: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "IDÅFORMÃTUM: „%câ€: érvénytelen formátumkarakter"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: a coproc [%d:%s] még mindig létezik"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "hibás csővezeték"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: a maximális eval beágyazási szint túllépve (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: a maximális source beágyazási szint túllépve (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: a maximális függvénybeágyazási szint túllépve (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: korlátozott: nem adható meg „/†a parancsok nevében"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: parancs nem található"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: bináris nem hajtható végre"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: rossz parancsértelmező"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: a bináris nem hajtható végre: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%sâ€: egy speciális beépített parancs"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nem lehet duplikálni a(z) %d. fájlleírót a(z) %d. helyre"
@@ -1098,69 +1108,69 @@ msgstr "a kifejezés rekurziókorlátot"
msgid "recursion stack underflow"
msgstr "alulcsordult a rekurziós verem"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "szintaktikai hiba a kifejezésben"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "nem változóhoz próbált értéket rendelni"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "szintaktikai hiba a változó-értékadásban"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "0-val osztás"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "bug: rossz expassign token"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "„:†egy feltételkifejezés szükséges"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "0-nál kisebb kitevő"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "prefix növelés vagy csökkentés után azonosító kell következzen"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "hiányzó „)â€"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "szintaktikai hiba: operandus kell következzen"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "szintaktikai hiba: érvénytelen aritmetikai operátor"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (hibás token: „%sâ€)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "érvénytelen számrendszer"
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: sorok száma érvénytelen"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "túl nagy érték a számrendszerhez"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: hibás kifejezés\n"
@@ -1169,7 +1179,7 @@ msgstr "%s: hibás kifejezés\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: nem érhetőek el a szülőkönyvtárak"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nem lehet újraindítani a nodelay módot a(z) %d. fájlleíróhoz"
@@ -1189,167 +1199,167 @@ msgstr "save_bash_input: már van puffer a(z) %d. fájlleíróhoz"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp csővezeték"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "a(z) %d számú forkolt pid a(z) %d számú munkában jelent meg"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "%d. számú megállított munka törlése a %ld számú folyamatcsoporttal"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: %5ld. folyamat (%s) még élőként van jelölve"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: nincs ilyen pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "%d. szignál"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Kész"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Megállítva"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Megállítva(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Fut"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Kész(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Kilépett(%d)"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Ismeretlen állapot"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(core készült) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (mk: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "gyermek setpgid (innen: %ld ide: %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: %ld. számú folyamat nem gyermeke ennek a parancsértelmezőnek"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Nincs bejegyzés %ld. számú folyamatról"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: %d. számú munka le lett állítva"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: nincs ilyen munka"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: a munka be lett fejezve"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: %d. számú munka már a háttérben van"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: WNOHANG bekapcsolása a korlátlan blokk elkerülésére"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: %d. sor: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (core készült)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(mk most: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp sikertelen"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: nincs munkakezelés a háttérben"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nem állítható be a terminál folyamatcsoportja (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "nincsen munkakezelés ebben a parancsértelmezőben"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: nem teljesülő feltételezés: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1358,49 +1368,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: téves feltételezés\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "ismeretlen"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: a szabadlistán lévő blokk felülírva"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: már felszabadított blokkal lett hívva"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: nem lefoglalt blokkal lett hívva"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: kezdő- és záródarab mérete eltér"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: nem lefoglalt blokkal lett hívva"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: kezdő- és záródarab mérete eltér"
@@ -1442,22 +1452,22 @@ msgstr "%s: hibás hálózatiútvonal-megadás"
msgid "network operations not supported"
msgstr "a hálózati műveletek nincsenek támogatva"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s): %s"
@@ -1475,35 +1485,35 @@ msgstr "Új levél a következőben: $_"
msgid "The mail in %s has been read\n"
msgstr "A(z) „%s†helyen lévő levél el van olvasva\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "szintaktikai hiba: aritmetikai kifejezés szükséges"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "szintaktikai hiba: váratlan „;â€"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "szintaktikai hiba: „((%s))â€"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: hibás utasítástípus: %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "a(z) %d. sorban kezdett heredocot EOF zárja („%s†helyett)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: %d. átirányító utasítás kívül esik a tartományon"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1512,103 +1522,103 @@ msgstr ""
"shell_getc: a shell_input_line_size (%zu) meghaladja a MÉRET_MAXIMUM értékét "
"(%lu): a sor csonkolva"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "a maximális here-document szám túllépve"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "váratlan EOF „%c†helyett"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "váratlan EOF „]]†helyett"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "szintaktikai hiba a feltételben: váratlan token: „%sâ€"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "szintaktikai hiba a feltételben"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "váratlan token (%s) „)†helyett"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "„)†szükséges"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "váratlan argumentum (%s) feltételes egyoperandusú operátorhoz"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "váratlan argumentum feltételes egyoperandusú operátorhoz"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "váratlan token (%s), feltételes kétoperandusú operátor szükséges"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "feltételes kétoperandusú operátor szükséges"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "váratlan argumentum (%s) feltételes kétoperandusú operátorhoz"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "váratlan argumentum feltételes kétoperandusú operátorhoz"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "váratlan token (%c) feltételes parancsban"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "váratlan token (%s) feltételes parancsban"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "váratlan token (%d) feltételes parancsban"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "szintaktikai hiba „%s†váratlan token közelében"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "szintaktikai hiba „%s†közelében"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "szintaktikai hiba: váratlan fájlvége"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "szintaktikai hiba"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "„%s†használatával lehet elhagyni a parancsértelmezőt.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "váratlan EOF „)†helyett"
@@ -1646,94 +1656,94 @@ msgstr "xtrace_set: NULL fájlmutató"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%câ€: érvénytelen formátumkarakter"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "fájlleíró kívül esik a tartományon"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: kétértelmű átirányítás"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: nem lehet felülírni létező fájlt"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: korlátozott: nem lehet átirányítani a kimenetet"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "nem lehet a heredocnak átmeneti fájlt létrehozni: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: nem lehet változóhoz fájlleírót rendelni"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port nincs támogatva hálózat nélkül"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "átirányítási hiba: nem lehet duplikálni a fájlleírót"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "nem található /tmp, hozza létre!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp érvényes könyvtárnév kell legyen"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "a csinos kiírási mód mellőzve van interaktív az parancsértelmezőkben"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: érvénytelen kapcsoló"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "az uid nem állítható be %d értékre: a hatásos uid %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "a gid nem állítható be %d értékre: a hatásos gid %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "nem indítható el a hibakereső; a hibakeresési mód letiltva"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: ez egy könyvtár"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Nincs nevem!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, %s-(%s) verzió\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1742,312 +1752,312 @@ msgstr ""
"Használat:\t%s [GNU hosszú kapcsoló] [kapcsoló] ...\n"
"\t%s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU hosszú kapcsolók:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Parancsértelmező-kapcsolók:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD vagy -c parancs vagy -O shopt_option\t\t(csak hívás)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s vagy -o kapcsoló\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"A „%s -c \"help set\"†további információt ad a parancsértelmező-"
"beállításokról.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "A „%s -c help†további információt ad a beépített parancsokról.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "A „bashbug†paranccsal jelenthet hibákat.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "a bash honlapja: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: érvénytelen művelet"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Hibás szignál"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Bontás"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Megszakítás"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Abbahagyás"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Érvénytelen utasítás"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT utasítás"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT utasítás"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Lebegőpontos kivétel"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Kilőve"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Buszhiba"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Szegmenshiba"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Rossz rendszerhívás"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Törött csővezeték"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Ébresztés"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Befejezve"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Sürgős IO körülmény"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Megállítva (szignál)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Folytatás"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Gyermek halála vagy megállítása"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Megállítva (konzolbemenet)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Megállítva (konzolkimenet)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "IO kész"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU-korlátozás"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Fájlkorlátozás"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Ébresztés (virtuális)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Ébresztés (profilozás)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Ablak változott"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Elveszett zárolás"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Felhasználói 1."
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Felhasználói 2."
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT bemeneti adat vár"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "táphiba fenyeget"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "rendszerleállás fenyeget"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "folyamat átvitele másik CPU-ra"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "programozási hiba"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT monitor mód megadva"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT monitor mód visszavonva"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT hangfolyamat befejezve"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Információkérés"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "%d. számú ismeretlen szignál"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "hibás helyettesítés: nincs záró „%s†a következőben: %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: lista nem adható tömbelemnek értékül"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "nem hozható létre a csővezeték a folyamatbehelyettesítéshez"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "nem hozható létre a gyermek a folyamatbehelyettesítéshez"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nem nyitható meg olvasásra a(z) %s csővezeték"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "nem nyitható meg írásra a(z) %s csővezeték"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "nem duplikálható a(z) %s csővezeték %d. fájlleíróként"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "parancshelyettesítés: figyelmen kívül hagyott null bájt a bemeneten"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "nem hozható létre csővezeték a parancsbehelyettesítéshez"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "nem hozható létre gyermek a parancsbehelyettesítéshez"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: nem duplikálható a csővezeték 1. fájlleíróként"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: érvénytelen változóérték a névhivatkozáshoz"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: az indirekt kiegészítés érvénytelen"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: érvénytelen változónév"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: a paraméter nincs beállítva"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: a paraméter null vagy nincs beállítva"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: részkarakterlánc-kifejezés < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: rossz helyettesítés"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: nem lehet így értéket adni"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2055,12 +2065,12 @@ msgstr ""
"a parancsértelmező későbbi verziói kötelezővé teszik majd az aritmetikai "
"kiértékelést"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "hibás helyettesítés: nincs záró „`†a következőben: %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "nincs találat: %s"
@@ -2083,21 +2093,21 @@ msgstr "„)†szükséges"
msgid "`)' expected, found %s"
msgstr "„)†szükséges %s helyett"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: kétoperandusú operátor szükséges"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: egyoperandusú operátor szükséges"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "hiányzó „]â€"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "szintaktikai hiba: váratlan „;â€"
@@ -2106,101 +2116,106 @@ msgstr "szintaktikai hiba: váratlan „;â€"
msgid "invalid signal number"
msgstr "érvénytelen szignálszám"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "elfogáskezelő: a legnagyobb elfogáskezelő-szint túllépve (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: rossz érték a trap_list[%d]-ban: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
"run_pending_traps: szignálkezelő a SIG_DFL, %d (%s) újraküldése önmagunknak"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: rossz szignál: %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "hiba a függvénydefiníció betöltésekor: „%sâ€"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "a parancsértelmező szintje (%d) túl magas, visszaállítás 1-re"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: nincs függvénykörnyezet az aktuális látókörben"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: nem lehet a változóhoz értéket rendelni"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: egész szám hozzárendelése a névhivatkozáshoz"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: nincs függvénykörnyezet az aktuális látókörben"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s exportstr-je null"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "érvénytelen karakter (%d) %s exportstr-jében"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "nincs „=†%s exportstr-jében"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: shell_variables feje nem egy függvénykörnyezet"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: nincs global_variables környezet"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: shell_variables feje nem egy átmeneti környezeti látókör"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nem nyitható meg FILE-ként"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: érvénytelen érték a trace fájlleíróhoz"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: a kompatibilitási érték kívül esik a tartományon"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2291,12 +2306,16 @@ msgstr "command [-pVv] parancs [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [név[=érték] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgilnrtux] [-p] név[=érték] ..."
#: builtins.c:82
@@ -2399,7 +2418,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [--abefhkmnptuvxBCHP] [-o beállításnév] [--] [arg ...]"
#: builtins.c:144
@@ -2447,7 +2467,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] név [név ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [korlát]"
#: builtins.c:174
@@ -2492,11 +2513,13 @@ msgstr ""
"PARANCSOK; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while PARANCSOK; do PARANCSOK; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until PARANCSOK; do PARANCSOK; done"
#: builtins.c:200
@@ -3883,6 +3906,7 @@ msgstr ""
" Ha az utolsó argumentum 0, a let 1-gyel tér vissza, különben 0-val."
#: builtins.c:994
+#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3893,7 +3917,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3971,7 +3997,7 @@ msgstr ""
" A kilépési kód nulla, kivéve ha EOF-ot ér a beolvasás, időtúllépéskor\n"
" (ekkor > 128) vagy érvénytelen fájlleíró megadásakor a -u kapcsolónak."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3993,7 +4019,7 @@ msgstr ""
" N-nel tér vissza, kivéve ha nem függvényből vagy parancsfájlból akar\n"
" visszatérni – ekkor sikertelenséget jelez."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4163,7 +4189,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4205,7 +4231,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha hibás kapcsolót kap, vagy egy NÉV csak\n"
" olvasható."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4239,7 +4265,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4277,7 +4303,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4295,7 +4321,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha N negatív vagy nagyobb mint $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4320,7 +4346,7 @@ msgstr ""
"sikertelenül,\n"
" ha a FÃJLNÉV nem olvasható."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4346,7 +4372,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha a munkakezelés nem támogatott vagy hiba\n"
" történt."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4507,7 +4533,7 @@ msgstr ""
"vagy\n"
" érvénytelen argumentumokat kap."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4519,7 +4545,7 @@ msgstr ""
" Ez a „test†beépített parancs szinonimája, de annyiban eltér tőle,\n"
" hogy az utolsó argumentuma „]†kell legyen – a nyitó „]â€-lel összhangban."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4538,7 +4564,7 @@ msgstr ""
" Kilépési kód:\n"
" Mindig sikeres."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4621,7 +4647,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha a SZIGNÃL érvénytelen, vagy érvénytelen\n"
" kapcsolót kap."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4673,7 +4699,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel lép ki, ha minden NÉV megtalálható, sikertelenül, ha nem."
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4770,7 +4796,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy hiba esetében."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4806,7 +4832,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel lép ki, kivéve ha a MÓD vagy egy kapcsoló érvénytelen."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4858,7 +4884,7 @@ msgstr ""
" ID kilépési kódjával tér vissza; érvénytelen ID vagy kapcsoló esetén\n"
" sikertelenül."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4883,7 +4909,7 @@ msgstr ""
"kapcsoló\n"
" esetén sikertelenül."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4905,7 +4931,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja vissza."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4936,7 +4962,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4972,7 +4998,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja vissza."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5002,7 +5028,7 @@ msgstr ""
" Kilépési kód:\n"
" A kilépési kód a CSÅVEZETÉK kilépési kódja lesz."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5022,7 +5048,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja vissza."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5055,12 +5081,14 @@ msgstr ""
" Kilépési kód:\n"
" Az utoljára végrehajtott parancs kilépési kódja."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5074,12 +5102,14 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsónak végrehajtott parancs kilépési kódja."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5093,7 +5123,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsónak végrehajtott parancs kilépési kódja."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5115,7 +5145,7 @@ msgstr ""
" Kilépési kód:\n"
" A coproc parancs 0-s kilépési kóddal tér vissza."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5139,7 +5169,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha a NÉV csak olvasható."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5157,7 +5187,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja vissza."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5181,7 +5211,7 @@ msgstr ""
" Kilépési kód:\n"
" A visszaállított parancs kilépési kódjával lép ki."
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
@@ -5200,7 +5230,7 @@ msgstr ""
" Kilépési kód:\n"
" 1-gyel tér vissza, ha KIFEJEZÉS értéke 0, különben 0-val."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5249,7 +5279,7 @@ msgstr ""
" Kilépési kód:\n"
" 0 vagy 1 a KIFEJEZÉSTÅL függÅ‘en."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5350,7 +5380,7 @@ msgstr ""
" HISTIGNORE\tKettőspontokkal elválasztott mintalista, amely mintákra\n"
" \t\tilleszkedő parancsok nem kerülnek az előzmények közé\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5408,7 +5438,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n"
" során történő hiba esetén."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5457,7 +5487,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n"
" során történő hiba esetén."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5507,7 +5537,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve érvénytelen argumentum vagy hiba esetén."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5544,7 +5574,8 @@ msgstr ""
" Sikerrel tér vissza, ha az OPTNÉV engedélyezve van; sikertelenül, ha\n"
" hibás kapcsolókat kap vagy az OPTNÉV tiltva van."
-#: builtins.c:1937
+#: builtins.c:1938
+#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5567,6 +5598,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5614,7 +5647,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha hibás kapcsolókat kap, vagy az írás/\n"
" értékadás hibával járt."
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5670,7 +5703,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetén."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5692,7 +5725,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel lép ki, kivéve érvénytelen kapcsoló vagy hiba esetén."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5751,7 +5784,7 @@ msgstr ""
"nincs\n"
" még megadva."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5823,7 +5856,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy csak olvasható,\n"
" vagy nem indexelt TÖMB megadása esetén."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5833,6 +5866,10 @@ msgstr ""
" \n"
" A „mapfile†szinonimája."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: érvénytelen asszociatívtömb-index"
+
# see $ help caller
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
diff --git a/po/id.gmo b/po/id.gmo
index 61f53205..ca3c6feb 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index b0c244e4..272e1431 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,14 +1,14 @@
# Pesan Bahasa Indonesia untuk bash
# Copyright (C) 2008 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
-# Arif E. Nugroho <arif_endro@yahoo.com>, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash 4.3-rc2\n"
+"Project-Id-Version: bash 5.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2014-08-06 12:45+0700\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2021-09-17 19:30+0700\n"
"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
"Language: id\n"
@@ -22,60 +22,55 @@ msgstr ""
msgid "bad array subscript"
msgstr "array subscript buruk"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: menghapus atribut nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: kunci array assosiasi tidak valid"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: tidak dapat mengassign ke index tidak-numeric"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: tidak dapat membuat: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "tidak menutup '%c' dalam %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: hilang pemisah colon"
-#: bashline.c:4555
-#, fuzzy, c-format
+#: bashline.c:4733
+#, c-format
msgid "`%s': cannot unbind in command keymap"
-msgstr "'%s': tidak dapat melepaskan"
+msgstr "'%s': tidak dapat melepaskan dalam peta perintah"
#: braces.c:327
#, c-format
@@ -83,16 +78,16 @@ msgid "brace expansion: cannot allocate memory for %s"
msgstr "brace expansion: cannot allocate memory for %s"
#: braces.c:406
-#, fuzzy, c-format
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "brace expansion: failed to allocate memory for %d elements"
+msgstr "brace expansion: failed to allocate memory for %u elements"
#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace expansion: failed to allocate memory for `%s'"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': nama alias tidak valid"
@@ -169,14 +164,13 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME tidak diset"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "terlalu banyak argumen"
#: builtins/cd.def:342
-#, fuzzy
msgid "null directory"
-msgstr "top direktori yang baru."
+msgstr "null direktori"
#: builtins/cd.def:353
msgid "OLDPWD not set"
@@ -197,7 +191,7 @@ msgstr "peringatan: "
msgid "%s: usage: "
msgstr "%s: penggunaan: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: pilihan membutuhkan sebuah argumen"
@@ -212,7 +206,7 @@ msgstr "%s: argumen numeric dibutuhkan"
msgid "%s: not found"
msgstr "%s: tidak ditemukan"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: pilihan tidak valid"
@@ -222,7 +216,7 @@ msgstr "%s: pilihan tidak valid"
msgid "%s: invalid option name"
msgstr "%s: nama pilihan tidak valid"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': bukan sebuah identifier yang valid"
@@ -235,7 +229,7 @@ msgstr "nomor oktal tidak valid"
msgid "invalid hex number"
msgstr "nomor hexa tidak valid"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "nomor tidak valid"
@@ -249,88 +243,93 @@ msgstr "%s: spesifikasi sinyal tidak valid"
msgid "`%s': not a pid or valid job spec"
msgstr "`%s': bukan sebuah pid atau spesifikasi pekerjaan yang valid"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: variabel baca-saja"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: tidak dapat unset"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s diluar jangkauan"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argumen"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s diluar jangkauan"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: tidak ada pekerjaan seperti itu"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: tidak ada pengontrol kerja"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "tidak ada pengontrol kerja"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: terbatas"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "terbatas"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: bukan sebuah builtin shell"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "gagal menulis: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "error menentukan atribut terminal: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "error mendapatkan atribut terminal: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: error mengambil direktori saat ini: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: spesifikasi pekerjaan ambigu"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
-msgstr ""
+msgstr "bantuan tidak tersedia di versi ini"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: tidak dapat unset: baca-saja %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: tidak dapat unset"
@@ -340,110 +339,110 @@ msgstr "%s: tidak dapat unset"
msgid "%s: invalid action name"
msgstr "%s: nama aksi tidak valid"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: tidak ada spesifikasi completion"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr ""
"peringatan: pilihan -F mungkin tidak bekerja seperti yang anda harapkan"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr ""
"peringatan: pilihan -C mungkin tidak bekerja seperti yang anda harapkan"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "saat ini sedang tidak menjalankan fungsi completion"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "hanya dapat digunakan dalam sebuah fungsi"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: fungsi baca-saja"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: reference variable cannot be an array"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: nameref variable self references not allowed"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: circular name reference"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
-#, fuzzy, c-format
-msgid "`%s': invalid variable name for name reference"
-msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid"
-
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: fungsi baca-saja"
-
-#: builtins/declare.def:824
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
+msgid "`%s': invalid variable name for name reference"
+msgstr "`%s': nilai dari berkas pendeskripsi penelusur tidak valid"
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: tidak dapat menghapus variabel array secara ini"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: tidak dapat mengubah assosiasi ke array index"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: quoted compound array assignment ditinggalkan"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynamic loading tidak tersedia"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "tidak dapat membuka object shared %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "tidak dapat menemukan %s dalam shared object %s: %s"
-#: builtins/enable.def:388
-#, fuzzy, c-format
+#: builtins/enable.def:422
+#, c-format
msgid "%s: dynamic builtin already loaded"
-msgstr "%s: bukan dinamically loaded"
+msgstr "%s: dynamic builtin telah dimuat"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
+msgstr "muat fungsi untuk %s mengembalikan kegagalan (%d): tidak dimuat"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: bukan dinamically loaded"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: tidak dapat menghapus: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: bukan sebuah direktori"
@@ -458,7 +457,7 @@ msgstr "%s: bukan sebuah file umum"
msgid "%s: file is too large"
msgstr "%s: file terlalu besar"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: tidak dapat menjalankan berkas binary"
@@ -545,6 +544,8 @@ msgid ""
"'\n"
"\n"
msgstr ""
+"'\n"
+"\n"
#: builtins/help.def:185
#, c-format
@@ -554,12 +555,12 @@ msgstr ""
"tidak ada topik bantuan yang cocok dengan `%s'. Coba `help help' atau 'man -"
"k %s' atau `info %s'."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: tidak dapat membuka: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -582,21 +583,21 @@ msgstr ""
"aktif.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "tidak dapat menggunakan lebih dari satu pilihan dari -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "posisi sejarah"
-#: builtins/history.def:340
-#, fuzzy, c-format
+#: builtins/history.def:338
+#, c-format
msgid "%s: invalid timestamp"
-msgstr "%s: argumen limit tidak valid"
+msgstr "%s: penanda waktu tidak valid"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: expansi sejarah gagal"
@@ -619,78 +620,78 @@ msgstr "%s: argumen harus diproses atau ID pekerjaan"
msgid "Unknown error"
msgstr "Kesalahan tidak diketahui"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "diduga sebuah ekspresi"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: bukan sebuah indeks array"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: spesifikasi file deskripsi tidak valid"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: file deskriptor %s tidak valid"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: jumlah baris tidak valid"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: asal array tidak valid"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: nama aksi tidak valid"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "nama variabel array kosong"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "bantuan array variabel dibutuhkan"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': hilang karakter format"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': spesifikasi timeout tidak valid"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': karakter format tidak valid"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "peringatan: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "format parsing problem: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "hilang digit hexa untuk \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "hilang digit hexa untuk \\%c"
@@ -844,12 +845,12 @@ msgstr ""
" \n"
" Builtin `dirs' menampilkan direktori stack."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: spesifikasi timeout tidak valid"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "error baca: %d: %s"
@@ -862,7 +863,7 @@ msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource"
msgid "cannot simultaneously unset a function and a variable"
msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: bukan sebuah variabel array"
@@ -873,19 +874,19 @@ msgid "%s: not a function"
msgstr "%s: bukan sebuah fungsi"
#: builtins/setattr.def:194
-#, fuzzy, c-format
+#, c-format
msgid "%s: cannot export"
-msgstr "%s: tidak dapat unset"
+msgstr "%s: tidak dapat export"
#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "shift terhitung"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "tidak dapat menset dan menunset pilihan shell secara bersamaan"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nama pilihan shell tidak valid"
@@ -923,9 +924,9 @@ msgid "%s is a function\n"
msgstr "%s adalah sebuah fungsi\n"
#: builtins/type.def:299
-#, fuzzy, c-format
+#, c-format
msgid "%s is a special shell builtin\n"
-msgstr "%s adalah sebuah shell builtin\n"
+msgstr "%s adalah sebuah shell builtin spesial\n"
#: builtins/type.def:301
#, c-format
@@ -952,16 +953,16 @@ msgstr "%s: argumen limit tidak valid"
msgid "`%c': bad command"
msgstr "`%c': perintah buruk"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: tidak dapat get limit: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "batas"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: tidak dapat memodifikasi batas: %s"
@@ -980,7 +981,7 @@ msgstr "`%c': operator mode symbolic tidak valid"
msgid "`%c': invalid symbolic mode character"
msgstr "`%c': mode karakter symbolic tidak valid"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " baris "
@@ -998,99 +999,109 @@ msgstr "membatalkan..."
#: error.c:287
#, c-format
msgid "INFORM: "
-msgstr ""
+msgstr "BERI TAHU: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "peringatan: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "perintah error tidak diketahui"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "tipe perintah buruk"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "konektor buruk"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "lompat buruk"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: variabel tidak terikat"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': karakter format tidak valid"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] masih ada"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "pipe error"
-#: execute_cmd.c:4793
-#, fuzzy, c-format
+#: execute_cmd.c:4923
+#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr "%s: maximum function nesting level exceeded (%d)"
+msgstr "eval: maximum eval nesting level exceeded (%d)"
-#: execute_cmd.c:4805
-#, fuzzy, c-format
+#: execute_cmd.c:4935
+#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s: maximum function nesting level exceeded (%d)"
+msgstr "%s: maximum source nesting level exceeded (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximum function nesting level exceeded (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr ""
"%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: perintah tidak ditemukan"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: tidak dapat menjalankan berkas binary"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: interpreter buruk"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: tidak dapat menjalankan berkas binary: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s': adalah sebuah shell builtin"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "tidak dapat menduplikasikan fd %d ke fd %d"
@@ -1103,70 +1114,68 @@ msgstr "expresi level rekursi terlewati"
msgid "recursion stack underflow"
msgstr "rekursi stack underflow"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "syntax error dalam expresi"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "mencoba menempatkan ke bukan sebuah variabel"
-#: expr.c:530
-#, fuzzy
+#: expr.c:531
msgid "syntax error in variable assignment"
-msgstr "syntax error dalam expresi"
+msgstr "syntax error dalam menempatkan variabel"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "dibagi oleh 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "bug: tanda expassign buruk"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "`:' diharapkan untuk sebuah pernyataan kondisional"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "eksponen kurang dari 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "hilang `)'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "syntax error: operand diharapkan"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "syntax error: operator arithmetic tidak valid"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (error token adalah \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "basis arithmetic tidak valid"
-#: expr.c:1582
-#, fuzzy
+#: expr.c:1587
msgid "invalid integer constant"
-msgstr "%s: jumlah baris tidak valid"
+msgstr "konstanta bulat tidak valid"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "nilai terlalu besar untuk basis"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expresi error\n"
@@ -1175,7 +1184,7 @@ msgstr "%s: expresi error\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: tidak dapat mengakses direktori orang tua"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "tidak dapat mereset mode nodelay untuk fd %d"
@@ -1196,168 +1205,167 @@ msgstr "simpan bash_input: buffer telah ada untuk fd %d baru"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: tidak ada pid seperti itu"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "sinyal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Selesai"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Terhenti"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Terhenti(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Berjalan"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Selesai(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Keluar %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Status tidak diketahui"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(core didump) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "anak setpgid (%ld ke %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld bukan sebuah anak dari shell ini"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Tidak ada catatan untuk proses %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: pekerjaan %d terhenti"
-#: jobs.c:3564
-#, fuzzy, c-format
+#: jobs.c:3551
+#, c-format
msgid "%s: no current jobs"
-msgstr "%s: tidak ada pekerjaan seperti itu"
+msgstr "%s: tidak ada pekerjaan sekarang"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: pekerjaan telah selesai"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: mengaktifkan WNOHANG untuk menghindari blok tak terhingga"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: baris %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (core didump)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd sekarang: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp gagal"
-#: jobs.c:4447
-#, fuzzy
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: baris disiplin"
+msgstr "initialize_job_control: tidak ada kontrol pekerjaan di belakang"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: baris disiplin"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "tidak dapat menset terminal proses grup (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "tidak ada pengontrol pekerjaan dalam shell ini"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: gagal assertion: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1366,49 +1374,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: assertion rusak\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "tidak diketahui"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: blok dalam daftar bebas clobbered"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: dipanggil dengan argumen blok yang sudah dibebaskan"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: dipanggil dengan argumen blok yang tidak dialokasikan"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan"
-#: lib/malloc/malloc.c:1001
-#, fuzzy
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
-msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan"
+msgstr "free: underflow terdeteksi; magic8 terkorupsi"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: awal dan akhir dari ukuran potongan berbeda"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: dipanggil dengan argumen blok yang tidak teralokasikan"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan"
-#: lib/malloc/malloc.c:1141
-#, fuzzy
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
-msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan"
+msgstr "realloc: underflow terdeteksi; magic8 terkorupsi"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: awal dan akhir dari ukuran potongan berbeda"
@@ -1451,22 +1457,22 @@ msgstr "%s: spesifikasi jalur network buruk"
msgid "network operations not supported"
msgstr "operasi jaringan tidak dilayani"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: tidak dapat mengubah lokal (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: tidak dapat mengubah local (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: tidak dapat mengubah lokal (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: tidak dapat mengubah lokal (%s): %s"
@@ -1484,139 +1490,141 @@ msgstr "Anda memiliki surat baru dalam $_"
msgid "The mail in %s has been read\n"
msgstr "Surat dalam %s telah dibaca\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "syntax error: membutuhkan ekspresi arithmetic"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "syntax error: `;' tidak terduga"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "syntax error: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: tipe instruksi buruk %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
"dokumen-disini di baris %d dibatasi oleh akhir-dari-berkas (diinginkan `%s')"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
+"shell_getc: shell_input_line_size (%zu) terlampaui SIZE_MAX (%lu): baris "
+"terpotong"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
-msgstr ""
+msgstr "jumlah maksimal dokumen disini tercapai"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF tidak terduga ketika mencari untuk `]]'"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "syntax error dalam ekspresi kondisional"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "tanda `%s' tidak terduga, diduga `)'"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "diduga `)'"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumen tidak terduga `%s' ke operator kondisional unary"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "argumen tidak terduga untuk operasi unary kondisional"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "operator binary kondisional diduga"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumen `%s' tidak terduga ke operator binary kondisional"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "argumen tidak terduga ke operasi binary kondisional"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "tanda `%c' tidak terduga dalam perintah kondisional"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "tanda `%s' tidak terduga dalam perintah kondisional"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "tanda %d tidak terduga dalam perintah kondisional"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntax error didekat tanda `%s' yang tidak terduga"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "syntax error didekat `%s'"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "syntax error: tidak terduga diakhir dari berkas"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "syntax error"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'"
@@ -1628,7 +1636,7 @@ msgstr "completion: fungsi `%s' tidak ditemukan"
#: pcomplete.c:1722
#, c-format
msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programmable_completion: %s: kemungkinan retry loop"
#: pcomplib.c:182
#, c-format
@@ -1654,94 +1662,94 @@ msgstr "xtrace_set: berkas penunjuk KOSONG"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: '%c': format karakter tidak valid"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "berkas deskripsi diluar dari jangkauan"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redirect ambigu"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: tidak dapat menulis berkas yang sudah ada"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricted: tidak dapat meredirect keluaran"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "tidak dapat membuat berkas sementara untuk dokumen disini: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: tidak dapat meng-'assign' fd ke variabel"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "redirection error: tidak dapat menduplikasi fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "tidak dapat menemukan /tmp, tolong buat!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp harus berupa sebuah nama direktori yang valid"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "mode pretty-printing diabaikan dalam shells interactive"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: pilihan tidak valid"
-#: shell.c:1319
-#, fuzzy, c-format
+#: shell.c:1343
+#, c-format
msgid "cannot set uid to %d: effective uid %d"
-msgstr "tidak dapat mereset mode nodelay untuk fd %d"
+msgstr "tidak dapat menset uid ke %d: uid efektif %d"
-#: shell.c:1330
-#, fuzzy, c-format
+#: shell.c:1354
+#, c-format
msgid "cannot set gid to %d: effective gid %d"
-msgstr "tidak dapat mereset mode nodelay untuk fd %d"
+msgstr "tidak dapat menset gid ke %d: gid efektif %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "tidak dapat menjalankan debugger; mode debugging tidak aktif"
-#: shell.c:1632
-#, fuzzy, c-format
+#: shell.c:1658
+#, c-format
msgid "%s: Is a directory"
-msgstr "%s: bukan sebuah direktori"
+msgstr "%s: Direktori"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Aku tidak memiliki nama!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versi %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1750,314 +1758,314 @@ msgstr ""
"Penggunaan:\t%s [GNU pilihan panjang] [pilihan] ...\n"
"\t%s [GNU pilihan panjang] [pilihan] berkas-script ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU pilihan panjang:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Pilihan shell:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr ""
"\t-ilrsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s atau pilihan -o\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Ketik `%s -c \"help set\"' untuk informasi lebih lanjut mengenai pilihan "
"shell.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Ketik `%s -c help' untuk informasi lebih lanjut mengenai perintah builting "
"shell.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "bash halaman rumah: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
+"Bantuan umum menggunakan aplikasi GNU: <http:///www.gnu.org/gethelp/>\n"
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operasi tidak valid"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Sinyal palsu"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interupsi"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Berhenti"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Instruksi ilegal"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Instruksi ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Instruksi EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Floating point exception"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Dibunuh"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Bus error"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Kesalahan segmentasi"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Pemanggilan sistem buruk"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Pipe rusak"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Alarm clock"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Selesai"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Kodisi IO penting"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Terhenti (sinyal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Melanjutkan"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Anak tewas atau berhenti"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Terhenti (tty input)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Terhenti (tty output)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O siap"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Batas CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Batas berkas"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profile)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Window berubah"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Catatan terkunci"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Sinyal pengguna 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Sinyal pengguna 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT masukan data tertunda"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "Kelihatannya akan terjadi kegagalan power suply"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "Kelihatannya akan terjadi kerusakan sistem"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "pindahkan proses ke CPU lain"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "error dalam pemrograman"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT mode monitoring diberikan"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT mode monitoring ditarik"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFTP sound sequence telah selesai"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Permintaan informasi"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Sinyal tidak diketahui #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "tidak dapat membuat pipe untuk proses substitusi"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "tidak dapat membuat anak untuk proses substitusi"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "tidak dapat membuka named pipe %s untuk membaca"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "tidak dapat membukan named pipe %s untuk menulis"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d"
-#: subst.c:6213
-#, fuzzy
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
-msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s"
+msgstr "substitusi perintah: mengabaikan byte kosong dalam masukan"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "tidak dapat membuat pipe untuk perintah substitusi"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "tidak dapat membuat anak untuk perintah substitusi"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid"
-#: subst.c:6979 subst.c:6997 subst.c:7169
-#, fuzzy, c-format
+#: subst.c:7178 subst.c:7196 subst.c:7369
+#, c-format
msgid "%s: invalid indirect expansion"
-msgstr "%s: jumlah baris tidak valid"
+msgstr "%s: ekspansi tidak langsung tidak valid"
-#: subst.c:7013 subst.c:7177
-#, fuzzy, c-format
+#: subst.c:7212 subst.c:7377
+#, c-format
msgid "%s: invalid variable name"
-msgstr "`%s': nama alias tidak valid"
+msgstr "`%s': nama variabel tidak valid"
-#: subst.c:7256
-#, fuzzy, c-format
+#: subst.c:7478
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: parameter kosong atau tidak diset"
+msgstr "%s: parameter tidak diset"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter kosong atau tidak diset"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: substring expresi < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: substitusi buruk"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: tidak dapat meng-assign dengan cara ini"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2065,12 +2073,12 @@ msgstr ""
"versi selanjutnya dari shell akan memaksa evaluasi dari sebuah penggantian "
"aritmetika"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "tidak cocok: %s"
@@ -2093,40 +2101,40 @@ msgstr "')' diduga"
msgid "`)' expected, found %s"
msgstr "`)' diduga, ditemukan %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: operator binary diduga"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: operator unary diduga"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "hilang `]'"
-#: test.c:899
-#, fuzzy, c-format
+#: test.c:914
+#, c-format
msgid "syntax error: `%s' unexpected"
-msgstr "syntax error: `;' tidak terduga"
+msgstr "syntax error: `%s' tidak terduga"
#: trap.c:220
msgid "invalid signal number"
msgstr "nomor sinyal tidak valid"
-#: trap.c:325
-#, fuzzy, c-format
+#: trap.c:323
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "%s: maximum function nesting level exceeded (%d)"
+msgstr "trap handler: maximum trap handler level exceeded (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: nilai buruk dalam trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2134,88 +2142,93 @@ msgstr ""
"run_pending_traps: sinyal handler adalah SIG_DFL, mengirimkan kembali %d "
"(%s) kediri sendiri"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: sinyal buruk %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error mengimpor definisi fungsi untuk `%s'"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "level shell (%d) terlalu tinggi, mereset ke 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: tidak ada context fungsi di scope ini"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: tidak dapat meng-'assign' fd ke variabel"
-#: variables.c:3475
-#, fuzzy, c-format
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
+#, c-format
msgid "%s: assigning integer to name reference"
-msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid"
+msgstr "%s: memberikan integer ke berkas pendeskripsi penelusur"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: tidak ada context fungsi dalam scope ini"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s memiliki exportstr kosong"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "karakter %d tidak valid dalam exporstr untuk %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "bukan `=' dalam exportstr untuk %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
"pop_var_context: kepala dari shell_variables bukan sebuah fungsi cbntext"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: bukan global_variable context"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: kepala dari shell_variables bukan sebuah scope lingkungan "
"sementara"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: tidak dapat membuka sebagai BERKAS"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: diluar jangkauan"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Hak Cipta (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2307,13 +2320,17 @@ msgstr "perintah [-pVv] perintah [argumen ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilnrtux] [-p] [name[=nilai] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=nilai] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] name[=nilai] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=nilai] ..."
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2336,12 +2353,10 @@ msgid "eval [arg ...]"
msgstr "eval [argumen ...]"
#: builtins.c:96
-#, fuzzy
msgid "getopts optstring name [arg ...]"
-msgstr "getopts nama optstring [arg]"
+msgstr "getopts nama optstring [arg ...]"
#: builtins.c:98
-#, fuzzy
msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a nama] [perintah [argumen ...]] [redireksi ...]"
@@ -2387,9 +2402,8 @@ msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
msgstr "jobs [-lnprs] [spesifikasi pekerjaan ...] atau jobs -x perintah [args]"
#: builtins.c:131
-#, fuzzy
msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [spesifikasi pekerjaan ...]"
+msgstr "disown [-h] [-ar] [spesifikasi pekerjaan ... | pid ...]"
#: builtins.c:134
msgid ""
@@ -2416,7 +2430,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o nama-pilihan] [--] [argumen ...]"
#: builtins.c:144
@@ -2465,17 +2480,16 @@ msgstr "type [-afptP] nama [name ...]"
#: builtins.c:171
#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefilmnpqrstuvxT] [batas]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [batas]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
-#, fuzzy
msgid "wait [-fn] [-p var] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgstr "wait [-fn] [-p var] [id ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2510,11 +2524,13 @@ msgstr ""
"PERINTAH; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while PERINTAH; do PERINTAH; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until PERINTAH; do PERINTAH; done"
#: builtins.c:200
@@ -2566,18 +2582,16 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] format [argumen]"
#: builtins.c:231
-#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o pilihan] [-A action] [-G globpat] [-"
-"W daftar kata] [-F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S "
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o pilihan] [-A action] [-G globpat] "
+"[-W daftar kata] [-F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
#: builtins.c:235
-#, fuzzy
msgid ""
"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
@@ -2586,27 +2600,24 @@ msgstr ""
"F fungsi] [-C perintah] [-X filterpat] [-P prefix] [-S suffix] [word]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o pilihan] [-DE] [nama ...]"
+msgstr "compopt [-o|+o pilihan] [-DEI] [nama ...]"
#: builtins.c:242
-#, fuzzy
msgid ""
"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"mapfile [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"mapfile [-d pembatas] [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"readarray [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
+"readarray [-d pembatas] [-n jumlah] [-O asal] [-s jumlah] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
#: builtins.c:256
#, fuzzy
@@ -2649,7 +2660,6 @@ msgstr ""
" terdefinisi."
#: builtins.c:278
-#, fuzzy
msgid ""
"Remove each NAME from the list of defined aliases.\n"
" \n"
@@ -2661,7 +2671,7 @@ msgstr ""
"Hapus setiap NAMA dari daftar yang mendefinisikan aliases.\n"
" \n"
" Pilihan:\n"
-" -a\thapus semua definisi alias.\n"
+" -a\thapus semua definisi alias\n"
" \n"
" Mengembalikan sukses kecuali sebuah NAMA bukan alias yang sudah ada."
@@ -2789,7 +2799,6 @@ msgstr ""
" Status keluar adalah 0 kecuali N tidak lebih besar atau sama dengan 1."
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
@@ -2814,7 +2823,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status keluar dari SHELL-BUILTIN, atau salah jika SHELL-"
"BUILTIN adalah\n"
-" bukan sebuah shell builtin.."
+" bukan sebuah shell builtin."
#: builtins.c:369
msgid ""
@@ -2919,7 +2928,6 @@ msgstr ""
" Mengembalikan 0 jika direktori berubah; bukan nol jika tidak."
#: builtins.c:425
-#, fuzzy
msgid ""
"Print the name of the current working directory.\n"
" \n"
@@ -2938,7 +2946,7 @@ msgstr ""
" \n"
" Pilihan:\n"
" -L\tmenampilkan nilai dari $PWD jika ini nama dari direktori\n"
-" \tyang digunakan sekarang\n"
+" \t\tyang digunakan sekarang\n"
" -P\tmenampilkan direktori pisik, tanpa link simbolik apapun\n"
" \n"
" Secara default, `pwd' berlaku seperi jika pilihan `-L' "
@@ -2990,7 +2998,6 @@ msgstr ""
" Selalu gagal."
#: builtins.c:471
-#, fuzzy
msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
@@ -3018,11 +3025,11 @@ msgstr ""
" dalam disk ketika sebuah fungsi dengan nama yang sama ada.\n"
" \n"
" Pilihan:\n"
-" -p\tgunakan sebuah nilai default untuk PATH yang menjamin untuk "
+" -p gunakan sebuah nilai default untuk PATH yang menjamin untuk "
"mencari seluruh\n"
-" \tpenggunaan stadar\n"
-" -v\tmenampilkan deskripsi dari PERINTAH sama dengan `type' builtin\n"
-" -V\tmenampilkan lebih jelas deskripsi dari setiap PERINTAH\n"
+" penggunaan stadar\n"
+" -v menampilkan deskripsi dari PERINTAH sama dengan `type' builtin\n"
+" -V menampilkan lebih jelas deskripsi dari setiap PERINTAH\n"
" \n"
" Status Keluar:\n"
" Mengembalikan status keluar dari PERINTAH, atau gagal jika PERINTAH "
@@ -3105,7 +3112,6 @@ msgstr ""
"sebuah error terjadi."
#: builtins.c:532
-#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3113,7 +3119,7 @@ msgid ""
msgstr ""
"Menset nilai variabel dan atribut.\n"
" \n"
-" Kadaluarsa. Lihat `help declare'."
+" Sama dengan `declare'. Lihat `help declare'."
#: builtins.c:540
msgid ""
@@ -3788,7 +3794,6 @@ msgstr ""
" Jika -x digunakan, mengembalikan status keluar dari PERINTAH."
#: builtins.c:906
-#, fuzzy
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3813,7 +3818,7 @@ msgstr ""
" -a\thapus seluruh pekerjaan jika JOBSPEC tidak diberikan\n"
" -h\ttandai setiap JOBSPEC sehingga SIGHUP tidak dikirim ke pekerjaan "
"jika\n"
-" \tshell menerima sebuah SIGHUP\n"
+" \t\tshell menerima sebuah SIGHUP\n"
" -r\thapus hanya pekerjaan yang sedang berjalan\n"
" \n"
" Status Keluar:\n"
@@ -3965,7 +3970,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -4056,7 +4063,7 @@ msgstr ""
" atau sebuah berkas deskripsi disupply sebagai sebuah argumen ke pilihan -"
"u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4078,7 +4085,7 @@ msgstr ""
" Mengembalikan N, atau gagal jika shell tidak menjalan sebuah fungsi atau "
"script."
-#: builtins.c:1054
+#: builtins.c:1055
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4255,7 +4262,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan."
-#: builtins.c:1139
+#: builtins.c:1140
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4295,7 +4302,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah NAMA adalah baca-saja."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4330,7 +4337,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"NAMA tidak valid."
-#: builtins.c:1180
+#: builtins.c:1181
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4371,7 +4378,7 @@ msgstr ""
" Mengembalikan sukses kecual sebuah pilihan tidak valid diberikan atau "
"NAMA tidak valid."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4389,7 +4396,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan sukses kecuali N adalah negatif atau lebih besar dari $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4415,7 +4422,7 @@ msgstr ""
"BERKAS; gagal jika\n"
" NAMA BERKAS tidak dapat dibaca."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4441,7 +4448,7 @@ msgstr ""
" Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau "
"sebuah error terjadi."
-#: builtins.c:1261
+#: builtins.c:1262
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4608,7 +4615,7 @@ msgstr ""
"EXPR mengevaluasi ke\n"
" salah atau sebuah argumen tidak valid diberikan."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4620,7 +4627,7 @@ msgstr ""
" Ini sinonim untuk \"test\" builtin, tetapi argumen terakhir\n"
" harus berupa sebuah literal `]', untuk mencocokan dengan pembukaan `['."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4640,7 +4647,7 @@ msgstr ""
" Status Keluar:\n"
" Selalu sukses."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4721,7 +4728,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah SIGSPEC adalah tidak valid atau "
"sebuah pilihan tidak valid diberikan."
-#: builtins.c:1400
+#: builtins.c:1401
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4784,7 +4791,7 @@ msgstr ""
" Mengembalikan sukses jika seluruh dari NAMA ditemukan; gagal jika ada "
"yang tidak ditemukan."
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4879,7 +4886,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah error terjadi."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4917,7 +4924,7 @@ msgstr ""
" Mengembalikan sukses kecuali MODE tidak valid atau sebuah pilihan tidak "
"valid diberikan."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4965,7 +4972,7 @@ msgstr ""
"pilihan tidak\n"
" valid diberikan."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4991,7 +4998,7 @@ msgstr ""
"pilihan tidak valid\n"
" diberikan."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -5015,7 +5022,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5045,7 +5052,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5082,7 +5089,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5110,7 +5117,7 @@ msgstr ""
" Status Keluar:\n"
" Status kembali adalah status kembali dari PIPELINE."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5128,7 +5135,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan setatus dari perintah terakhir yang dijalankan."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5166,12 +5173,14 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5184,12 +5193,14 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5201,8 +5212,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1671
-#, fuzzy
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5223,9 +5233,9 @@ msgstr ""
" Nama baku adalah \"COPROC\".\n"
" \n"
" Status Keluar:\n"
-" Mengembalikan status keluar dari PERINTAH."
+" Perintah coproc mengembalikan status keluar 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5250,7 +5260,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan sukses kecuali NAMA adalah baca-saja."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5269,7 +5279,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dieksekusi."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5296,8 +5306,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari pekerjaan yang dilanjutkan."
-#: builtins.c:1726
-#, fuzzy
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5310,12 +5319,12 @@ msgstr ""
"Evaluasi ekspresi arithmetic.\n"
" \n"
" EXPRESI dievaluasi berdasarkan dalam aturan evaluasi\n"
-" arithmetic. Sama dengan \"let EXPRESI\".\n"
+" arithmetic. Sama dengan `let \"EXPRESI\"'.\n"
" \n"
" Status Keluar:\n"
" Mengembalikan 1 jika EXPRESI dievaluasi ke 0; mengembalikan 0 jika tidak."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5372,7 +5381,7 @@ msgstr ""
" Status Keluar:\n"
" 0 atau 1 tergantun dari nilai dari EKSPRESI."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5486,7 +5495,7 @@ msgstr ""
"digunakan untuk menentukan dimana\n"
" \t\tperintah seharusnya disimpan dalam daftar sejarah.\n"
-#: builtins.c:1821
+#: builtins.c:1822
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5547,7 +5556,7 @@ msgstr ""
"atau pemindahan\n"
" direktori gagal."
-#: builtins.c:1855
+#: builtins.c:1856
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5603,7 +5612,7 @@ msgstr ""
"atau pemindahan\n"
" direktori gagal."
-#: builtins.c:1885
+#: builtins.c:1886
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5660,7 +5669,7 @@ msgstr ""
" Mengembalikan sukses kecuali ada sebuah pilihan tidak valid diberikan "
"atau sebuah error terjadi."
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5699,7 +5708,7 @@ msgstr ""
"tidak valid diberikan\n"
" atau OPTNAME dinonaktifkan."
-#: builtins.c:1937
+#: builtins.c:1938
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5723,6 +5732,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5764,7 +5775,7 @@ msgstr ""
"sebuah penulisan atau penempatan\n"
" error terjadi."
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5822,7 +5833,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah error terjadi."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5845,7 +5856,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah error terjadi."
-#: builtins.c:2016
+#: builtins.c:2019
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5909,7 +5920,7 @@ msgstr ""
"NAMA tidak memiliki\n"
" spesifikasi penyelesaian yang terdefinisi."
-#: builtins.c:2047
+#: builtins.c:2050
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5987,7 +5998,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"ARRAY adalah baca-saja."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5997,9 +6008,9 @@ msgstr ""
" \n"
" Sebuah sinonim untuk `mapfile'."
-#, fuzzy
-#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
-#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: kunci array assosiasi tidak valid"
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
@@ -6016,6 +6027,9 @@ msgstr ""
#~ msgid "Unknown Signal #"
#~ msgstr "Sinyal tidak diketahui #"
+#~ msgid "Copyright (C) 2013 Free Software Foundation, Inc."
+#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc."
+
#~ msgid ":"
#~ msgstr ":"
diff --git a/po/it.gmo b/po/it.gmo
index 4bbd10a4..f23813b0 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 1defc406..ec0ebc4c 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2011-10-17 09:14+0200\n"
"Last-Translator: Sergio Zanchetta <primes2h@ubuntu.com>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
@@ -22,59 +22,54 @@ msgstr ""
msgid "bad array subscript"
msgstr "indice dell'array errato"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: impossibile convertire un array indicizzato in uno associativo"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: chiave dell'array associativo non valida"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: impossibile assegnare a un indice non numerico"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
"%s: %s: deve essere usato un indice nell'assegnazione di un array associativo"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: impossibile creare: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: impossibile trovare una mappatura per il comando"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: il primo carattere non spazio non è \"\"\""
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "carattere di chiusura \"%c\" non presente in %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: separatore di tipo due punti mancante"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "\"%s\": impossibile eliminare l'associazione"
@@ -94,7 +89,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "\"%s\": nome alias non valido"
@@ -173,7 +168,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME non impostata"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "troppi argomenti"
@@ -201,7 +196,7 @@ msgstr "attenzione: "
msgid "%s: usage: "
msgstr "%s: uso: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: l'opzione richiede un argomento"
@@ -216,7 +211,7 @@ msgstr "%s: è necessario un argomento numerico"
msgid "%s: not found"
msgstr "%s: non trovata"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: opzione non valida"
@@ -226,7 +221,7 @@ msgstr "%s: opzione non valida"
msgid "%s: invalid option name"
msgstr "%s: nome dell'opzione non valido"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "\"%s\": non è un identificatore valido"
@@ -239,7 +234,7 @@ msgstr "numero ottale non valido"
msgid "invalid hex number"
msgstr "numero esadecimale non valido"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "numero non valido"
@@ -253,88 +248,93 @@ msgstr "%s: specifica di segnale non valida"
msgid "`%s': not a pid or valid job spec"
msgstr "\"%s\": non è un pid o un numero di job valido"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: variabile in sola lettura"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: impossibile azzerare"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s fuori dall'intervallo"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argomento"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s fuori dall'intervallo"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: job inesistente"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: nessun controllo dei job"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "nessun controllo dei job"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: limitato"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "limitato"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: non è un comando interno di shell"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "errore in scrittura: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "errore nell'impostazione degli attributi del terminale: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "errore nel recupero degli attributi del terminale: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: errore nel recupero della directory corrente: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: specifica di job ambigua"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: impossibile azzerare: %s in sola lettura"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: impossibile azzerare"
@@ -344,108 +344,108 @@ msgstr "%s: impossibile azzerare"
msgid "%s: invalid action name"
msgstr "%s: nome azione non valido"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: nessun completamento specificato"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "attenzione: l'opzione -F potrebbe non funzionare come previsto"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "attenzione: l'opzione -C potrebbe non funzionare come previsto"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "funzione di completamento attualmente non in esecuzione"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "può essere usato solo in una funzione"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "impossibile usare \"-f\" per creare funzioni"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funzione in sola lettura"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "\"%s\": nome alias non valido"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "impossibile usare \"-f\" per creare funzioni"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: funzione in sola lettura"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: impossibile eliminare variabili array in questo modo"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: impossibile convertire un array associativo in uno indicizzato"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "caricamento dinamico non disponibile"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "impossibile aprire l'oggetto condiviso %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "impossibile trovare %s nell'oggetto condiviso %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: non caricato dinamicamente"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: non caricato dinamicamente"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: impossibile eliminare: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: è una directory"
@@ -460,7 +460,7 @@ msgstr "%s: non è un file regolare"
msgid "%s: file is too large"
msgstr "%s: file troppo grande"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: impossibile eseguire il file binario"
@@ -556,12 +556,12 @@ msgstr ""
"nessun argomento della guida corrisponde a \"%s\". Provare \"help help\" o "
"\"man -k %s\" o \"info %s\"."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: impossibile aprire: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -582,21 +582,21 @@ msgstr ""
"Un asterisco (*) vicino a un nome significa che il comando è disabilitato.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "impossibile usare più di uno tra -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "posizione nella cronologia"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: nome dell'opzione non valido"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: espansione della cronologia non riuscita"
@@ -619,78 +619,78 @@ msgstr "%s: gli argomenti devono essere ID di processo o di job"
msgid "Unknown error"
msgstr "Errore sconosciuto"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "attesa espressione"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: non è un array indicizzato"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: specifica di descrittore di file non valida"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descrittore di file non valido: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: numero di righe non valido"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: origine dell'array non valida"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: quantum di callback non valido"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "nome della variabile array vuoto"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "necessario il supporto alla variabile array"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "\"%s\": manca il carattere di formato"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "\"%c\": specifica di formato dell'orario non valida"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "\"%c\": carattere di formato non valido"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "attenzione: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "cifra esadecimale mancante in \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "cifra unicode mancante in \\%c"
@@ -843,12 +843,12 @@ msgstr ""
" \n"
" Il comando interno \"dirs\" visualizza lo stack delle directory."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: specifica di timeout non valida"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "errore in lettura: %d: %s"
@@ -862,7 +862,7 @@ msgstr ""
msgid "cannot simultaneously unset a function and a variable"
msgstr "impossibile azzerare contemporaneamente una funzione e una variabile"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: non è una variabile array"
@@ -881,11 +881,11 @@ msgstr "%s: impossibile azzerare"
msgid "shift count"
msgstr "numero di scorrimenti"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "impossibile impostare e azzerare opzioni di shell contemporaneamente"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nome dell'opzione di shell non valido"
@@ -952,16 +952,16 @@ msgstr "%s: argomento di limite non valido"
msgid "`%c': bad command"
msgstr "\"%c\": comando errato"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: impossibile recuperare il limite: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limite"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: impossibile modificare il limite: %s"
@@ -980,7 +980,7 @@ msgstr "\"%c\": operatore di modo simbolico non valido"
msgid "`%c': invalid symbolic mode character"
msgstr "\"%c\": carattere di modo simbolico non valido"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " riga "
@@ -1000,96 +1000,106 @@ msgstr "Interruzione..."
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "attenzione: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "errore di comando sconosciuto"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "tipo di comando errato"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "connettore errato"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "salto errato"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: variabile non assegnata"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atempo di attesa scaduto per l'input: auto-logout\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "impossibile redirigere lo standard input da /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: \"%c\": carattere di formato non valido"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "errore della pipe"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: limitato: impossibile specificare \"/\" nei nomi dei comandi"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: comando non trovato"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: impossibile eseguire il file binario"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: interprete errato"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: impossibile eseguire il file binario"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s è un comando interno di shell\n"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "impossibile duplicare fd %d su fd %d"
@@ -1102,70 +1112,70 @@ msgstr "superato il livello di ricorsione dell'espressione"
msgid "recursion stack underflow"
msgstr "underflow dello stack di ricorsione"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "errore di sintassi nell'espressione"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "tentata un'assegnazione a una non variabile"
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "errore di sintassi nell'espressione"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "divisione per 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "bug: token di expassign errato"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "atteso \":\" per l'espressione condizionale"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "esponente minore di 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "atteso identificatore dopo un pre-incremento o un pre-decremento"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "\")\" mancante"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "errore di sintassi: atteso un operando"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "errore di sintassi: operatore aritmetico non valido"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (il token dell'errore è \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "base aritmetica non valida"
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: numero di righe non valido"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "valore troppo grande per la base"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: errore di espressione\n"
@@ -1174,7 +1184,7 @@ msgstr "%s: errore di espressione\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: impossibile accedere alle directory padre"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "impossibile reimpostare il modo nodelay per fd %d"
@@ -1195,168 +1205,168 @@ msgstr "save_bash_input: buffer già esistente per il nuovo fd %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pipe pgrp"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "il pid %d del fork appare nel job in esecuzione %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "eliminazione del job %d interrotto con il gruppo di processi %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) segnato come ancora in vita"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: pid inesistente"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Segnale %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Completato"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Fermato"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Fermato(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "In esecuzione"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Eseguito(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Uscita %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Stato sconosciuto"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(core dump creato) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (dir: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid del figlio (%ld a %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: il pid %ld non è un figlio di questa shell"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: nessun record del processo %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: il job %d è fermo"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: job inesistente"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: il job è terminato"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: il job %d è già in background"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: attivato WNOHANG per evitare blocchi indefiniti"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: riga %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (core dump creato)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(dir ora: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp non riuscita"
-#: jobs.c:4447
+#: jobs.c:4434
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: disciplina di linea"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina di linea"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "impossibile impostare il gruppo di processi del terminale (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "nessun controllo dei job in questa shell"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: asserzione non riuscita: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1365,49 +1375,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: asserzione non riuscita\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "sconosciuto"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: blocco eliminato nell'elenco dei disponibili"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: chiamata con un argomento di blocco già liberato"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: chiamata con un argomento di blocco non allocato"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: dimensioni diverse dei blocchi di inizio e di fine"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: chiamata con un argomento di blocco non allocato"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: dimensioni diverse dei blocchi di inizio e di fine"
@@ -1450,22 +1460,22 @@ msgstr "%s: specifica del percorso di rete errata"
msgid "network operations not supported"
msgstr "operazione di rete non supportata"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s): %s"
@@ -1483,141 +1493,141 @@ msgstr "EÌ€ presente della nuova posta in $_"
msgid "The mail in %s has been read\n"
msgstr "La posta in %s è stata letta\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "errore di sintassi: richiesta espressione aritmetica"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "errore di sintassi: \";\" non atteso"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "errore di sintassi: \"((%s))\""
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: tipo di istruzione errata %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
"here-document alla riga %d è delimitato da un EOF (era richiesto \"%s\")"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
"make_redirection: istruzione di reindirizzamento \"%d\" fuori dell'intervallo"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF non atteso durante la ricerca di \"%c\""
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF non atteso durante la ricerca di \"]]\""
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
"errore di sintassi nell'espressione condizionale: token non atteso \"%s\""
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "errore di sintassi nell'espressione condizionale"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "token non atteso \"%s\", era atteso \")\""
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "atteso \")\""
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argomento non atteso \"%s\" per l'operatore unario condizionale"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "argomento non atteso per l'operatore unario condizionale"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "token non atteso \"%s\", era atteso un operatore binario condizionale"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "atteso operatore binario condizionale"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argomento non atteso \"%s\" per l'operatore binario condizionale"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "argomento non atteso per l'operatore binario condizionale"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "token non atteso \"%c\" nel comando condizionale"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "token non atteso \"%s\" nel comando condizionale"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "token non atteso %d nel comando condizionale"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "errore di sintassi vicino al token non atteso \"%s\""
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "errore di sintassi vicino a \"%s\""
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "errore di sintassi: EOF non atteso"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "errore di sintassi"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Usare \"%s\" per uscire dalla shell.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF non atteso durante la ricerca di \")\""
@@ -1655,94 +1665,94 @@ msgstr "xtrace_set: puntatore a file NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != numfile xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: \"%c\": carattere di formato non valido"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "descrittore di file fuori dell'intervallo"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redirezione ambigua"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: impossibile sovrascrivere il file esistente"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: limitato: impossibile redirigere l'output"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "impossibile creare un file temporaneo per here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: impossibile assegnare fd a una variabile"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port non supportata senza rete"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "errore di reindirizzamento: impossibile duplicare fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "impossibile trovare /tmp, è necessario crearla"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp deve essere un nome di directory valido"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opzione non valida"
-#: shell.c:1319
+#: shell.c:1343
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "impossibile reimpostare il modo nodelay per fd %d"
-#: shell.c:1330
+#: shell.c:1354
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "impossibile reimpostare il modo nodelay per fd %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: è una directory"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Manca il nome"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versione %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1751,314 +1761,314 @@ msgstr ""
"Uso:\t%s [opzione lunga GNU] [opzione] ...\n"
"\t%s [opzione lunga GNU] [opzione] file-script ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Opzioni lunghe GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Opzioni di shell:\n"
-#: shell.c:2043
+#: shell.c:2069
#, fuzzy
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD o -c comando o -O opzione_shopt\t\t(solo invocazione)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\topzione -%s oppure -o\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Digitare «%s -c \"help set\"» per ulteriori informazioni sulle opzioni di "
"shell.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Digitare \"%s -c help\" per ulteriori informazioni sui comandi interni di "
"shell.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Usare il comando \"bashbug\" per segnalare i bug.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operazione non valida"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Segnale inesistente"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Chiusura"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interruzione"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Uscita (con core dump)"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Istruzione non consentita"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Rilevato trace/breakpoint"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Istruzione ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Istruzione EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Eccezione in virgola mobile"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Ucciso"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Errore di bus"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Errore di segmentazione"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Chiamata di sistema errata"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Pipe interrotta"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Sveglia"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Terminato"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Condizione di I/O urgente"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Fermato (segnale)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continuato"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Processo figlio concluso o fermato"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Fermato (input da terminale)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Fermato (output da terminale)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O pronto"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Limite di CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Limite di file"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Timer (virtuale)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Timer (profilo)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Finestra modificata"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Blocco del record"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Segnale 1 dell'utente"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Segnale 2 dell'utente"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Dati di input HTF in sospeso"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "mancanza di alimentazione imminente"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "crash di sistema imminente"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "processo spostato su un'altra CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "errore di programmazione"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "Modalità di monitoraggio HFT concessa"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "Modalità di monitoraggio HFT revocata"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "la sequenza sonora HFT è stata completata"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Richiesta di informazioni"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Segnale sconosciuto n° %d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "sostituzione errata: nessuna chiusura di \"%s\" in %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: impossibile assegnare una lista a un membro di un array"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "impossibile creare una pipe per la sostituzione del processo"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "impossibile creare un figlio per la sostituzione del processo"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "impossibile aprire la pipe con nome %s in lettura"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "impossibile aprire la pipe con nome %s in scrittura"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "impossibile duplicare una pipe con nome %s come fd %d"
-#: subst.c:6213
+#: subst.c:6370
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "sostituzione errata: manca «\"» di chiusura in %s"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "impossibile creare una pipe per la sostituzione del comando"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "impossibile creare un figlio per la sostituzione del comando"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: impossibile duplicare la pipe come fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, fuzzy, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: %s: valore non valido per il descrittore del file di traccia"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: numero di righe non valido"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "\"%s\": nome alias non valido"
-#: subst.c:7256
+#: subst.c:7478
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parametro nullo o non impostato"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametro nullo o non impostato"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expressione di sottostringa < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: sostituzione errata"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: impossibile assegnare in questo modo"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2066,12 +2076,12 @@ msgstr ""
"le versioni future della shell forzeranno la valutazione come fosse una "
"sostituzione aritmetica"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "sostituzione errata: manca «\"» di chiusura in %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "nessuna corrispondenza: %s"
@@ -2094,21 +2104,21 @@ msgstr "atteso \")\""
msgid "`)' expected, found %s"
msgstr "atteso \")\", trovato %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: atteso operatore binario"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: atteso operatore unario"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "\"]\" mancante"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "errore di sintassi: \";\" non atteso"
@@ -2117,17 +2127,17 @@ msgstr "errore di sintassi: \";\" non atteso"
msgid "invalid signal number"
msgstr "numero di segnale non valido"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: valore errato in trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2135,88 +2145,93 @@ msgstr ""
"run_pending_traps: il gestore dei segnali è SIG_DFL, viene inviato "
"nuovamente %d (%s)"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: segnale errato %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "errore nell'importazione della definizione di funzione per \"%s\""
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "livello di shell (%d) troppo alto, reimpostato a 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: nessun contesto di funzione nell'ambito corrente"
-#: variables.c:2693
+#: variables.c:2661
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: impossibile assegnare fd a una variabile"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: nessun contesto di funzione nell'ambito corrente"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s ha exportstr null"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "carattere non valido %d in exportstr per %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "nessun \"=\" in exportstr per %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
"pop_var_context: la prima parte di shell_variables non è un contesto di "
"funzione"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: nessun contesto global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: la prima parte di shell_variables non è un ambito temporaneo "
"d'ambiente"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: impossibile aprire come FILE"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: valore non valido per il descrittore del file di traccia"
-#: variables.c:6437
+#: variables.c:6450
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s fuori dall'intervallo"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
@@ -2311,12 +2326,16 @@ msgstr "command [-pVv] comando [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgilrtux] [-p] [nome[=valore] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgilrtux] [-p] nome[=valore] ..."
#: builtins.c:82
@@ -2419,7 +2438,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opzione] [--] [arg ...]"
#: builtins.c:144
@@ -2469,7 +2489,7 @@ msgstr "type [-afptP] nome [nome ...]"
#: builtins.c:171
#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHacdefilmnpqrstuvx] [limite]"
#: builtins.c:174
@@ -2515,11 +2535,13 @@ msgstr ""
"COMANDI; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while COMANDI; do COMANDI; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until COMANDI; do COMANDI; done"
#: builtins.c:200
@@ -4014,7 +4036,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -4107,7 +4131,7 @@ msgstr ""
"timeout in lettura\n"
" o venga fornito un descrittore di file non valido come argomento per -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4129,7 +4153,7 @@ msgstr ""
" Restituisce N, oppure insuccesso se la shell non sta eseguendo una "
"funzione o uno script."
-#: builtins.c:1054
+#: builtins.c:1055
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4315,7 +4339,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce successo a meno che non venga fornita una opzione non valida."
-#: builtins.c:1139
+#: builtins.c:1140
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4356,7 +4380,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"NOME sia in sola lettura."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4392,7 +4416,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"il NOME non sia valido."
-#: builtins.c:1180
+#: builtins.c:1181
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4432,7 +4456,7 @@ msgstr ""
" Restituisce successo a meno che non venga fornita una opzione non valida "
"o NOME non sia valido."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4450,7 +4474,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce successo a meno che N non sia negativo o maggiore di $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4475,7 +4499,7 @@ msgstr ""
"insuccesso se\n"
" il NOMEFILE non può essere letto."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4501,7 +4525,7 @@ msgstr ""
" Restituisce successo a meno che non sia abilitato il controllo job o si "
"riscontri un errore."
-#: builtins.c:1261
+#: builtins.c:1262
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4671,7 +4695,7 @@ msgstr ""
"viene valutata\n"
" falsa o viene fornito un argomento non valido."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4684,7 +4708,7 @@ msgstr ""
"deve\n"
" essere un \"]\" letterale per corrispondere al \"[\" di apertura."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4704,7 +4728,7 @@ msgstr ""
" Stato di uscita:\n"
" Sempre successo."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4790,7 +4814,7 @@ msgstr ""
" Restituisce successo a meno che SPEC_SEGNALE non sia valido o si "
"fornisca una opzione non valida."
-#: builtins.c:1400
+#: builtins.c:1401
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4853,7 +4877,7 @@ msgstr ""
" Restituisce successo se tutti i NOMI vengono trovati; insuccesso in caso "
"contrario."
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4950,7 +4974,7 @@ msgstr ""
" Restituisce successo a meno che non venga fornita una opzione non valida "
"o venga riscontrato un errore."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4987,7 +5011,7 @@ msgstr ""
" Restituisce successo a meno che MODO non sia valido o venga fornita una "
"opzione non valida."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -5035,7 +5059,7 @@ msgstr ""
"fornita una\n"
" opzione non valida."
-#: builtins.c:1533
+#: builtins.c:1534
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -5063,7 +5087,7 @@ msgstr ""
"fornita una opzione non\n"
" valida."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -5088,7 +5112,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5119,7 +5143,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5157,7 +5181,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato di uscita dell'ultimo comando eseguito."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5186,7 +5210,7 @@ msgstr ""
" Stato di uscita:\n"
" Viene restituito lo stato della PIPELINE."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5205,7 +5229,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5244,12 +5268,14 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5262,12 +5288,14 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5280,7 +5308,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1671
+#: builtins.c:1672
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5306,7 +5334,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato di uscita del COMANDO."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5332,7 +5360,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce successo a meno che il NOME non sia in sola lettura."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5351,7 +5379,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5375,7 +5403,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato del job ripristinato."
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
@@ -5394,7 +5422,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce 1 se ESPRESSIONE è valutata 0, altrimenti restituisce 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5451,7 +5479,7 @@ msgstr ""
" Stato di uscita:\n"
" 0 o 1 a seconda del valore dell'ESPRESSIONE."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5579,7 +5607,7 @@ msgstr ""
"decidere quale\n"
" \t\tcomando dovrebbe essere salvato nell'elenco della cronologia.\n"
-#: builtins.c:1821
+#: builtins.c:1822
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5639,7 +5667,7 @@ msgstr ""
"non abbia\n"
" successo il cambio di directory."
-#: builtins.c:1855
+#: builtins.c:1856
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5691,7 +5719,7 @@ msgstr ""
"valido o non\n"
" abbia successo il cambio di directory."
-#: builtins.c:1885
+#: builtins.c:1886
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5745,7 +5773,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita un'opzione non valida o "
"si riscontri un errore."
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5786,7 +5814,7 @@ msgstr ""
"fornita\n"
" una opzione non valida o NOMEOPZ è disabilitato."
-#: builtins.c:1937
+#: builtins.c:1938
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5810,6 +5838,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5856,7 +5886,7 @@ msgstr ""
"o si riscontri\n"
" un errore di scrittura o assegnazione."
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5916,7 +5946,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"si riscontri un errore."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5940,7 +5970,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"si riscontri un errore."
-#: builtins.c:2016
+#: builtins.c:2019
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -6006,7 +6036,7 @@ msgstr ""
"o NOME non\n"
" abbia una specifica di completamento definita."
-#: builtins.c:2047
+#: builtins.c:2050
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -6087,7 +6117,7 @@ msgstr ""
"valida, ARRAY sia\n"
" in sola lettura oppure non indicizzato."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -6097,6 +6127,10 @@ msgstr ""
" \n"
" Sinonimo per \"mapfile\"."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: chiave dell'array associativo non valida"
+
#, fuzzy
#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
#~ msgstr "Copyright © 2011 Free Software Foundation, Inc."
diff --git a/po/ja.gmo b/po/ja.gmo
index 59ab5fd0..0314f9e8 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 5ecee86c..332efa3e 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -7,10 +7,10 @@
# Hiroshi Takekawa <sian@big.or.jp>, <sian.ht@gmail.com>, 2020.
msgid ""
msgstr ""
-"Project-Id-Version: GNU bash 5.1\n"
+"Project-Id-Version: GNU bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-20 21:33+0900\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-19 23:10+0900\n"
"Last-Translator: Hiroshi Takekawa <sian@big.or.jp>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
"Language: ja\n"
@@ -25,57 +25,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "誤ã£ãŸé…列ã®æ·»å­—"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: åå‰å‚照属性を削除ã—ã¾ã™"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: インデックスé…列ã‹ã‚‰é€£æƒ³é…列ã«å¤‰æ›ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: 無効ãªé€£æƒ³é…列ã®ã‚­ãƒ¼ã§ã™"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: é…列ã®æ·»å­—ã«éžæ•°å­—を設定ã§ãã¾ã›ã‚“"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: 連想é…列を設定ã™ã‚‹ã¨ãã«ã¯æ·»å­—ã‚’ã¤ã‘ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: %s を作æˆã§ãã¾ã›ã‚“"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: コマンドã®ã‚­ãƒ¼ãƒžãƒƒãƒ—ãŒã‚ã‚Šã¾ã›ã‚“"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: 最åˆã®éžç©ºç™½é¡žæ–‡å­—㌠`\"' ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "é–‰ã˜ã‚‹ `%c' ㌠%s ã«ã‚ã‚Šã¾ã›ã‚“"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: 区切り文字コロン(:)ãŒã‚ã‚Šã¾ã›ã‚“"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "`%s': コマンドキーマップã®å‰²ã‚Šå½“ã¦ã‚’解除ã§ãã¾ã›ã‚“"
@@ -95,7 +90,7 @@ msgstr "中括弧展開: %u 個ã®è¦ç´ ã®ãƒ¡ãƒ¢ãƒªã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "中括弧展開: `%s' ã¸ã®ãƒ¡ãƒ¢ãƒªå‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': 無効ãªã‚¨ã‚¤ãƒªã‚¢ã‚¹åã§ã™"
@@ -166,7 +161,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "引数ãŒå¤šã™ãŽã¾ã™"
@@ -193,7 +188,7 @@ msgstr "警告: "
msgid "%s: usage: "
msgstr "%s: 使用法: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™"
@@ -208,7 +203,7 @@ msgstr "%s: æ•°å­—ã®å¼•æ•°ãŒå¿…è¦ã§ã™"
msgid "%s: not found"
msgstr "%s: 見ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: 無効ãªã‚ªãƒ—ションã§ã™"
@@ -218,7 +213,7 @@ msgstr "%s: 無効ãªã‚ªãƒ—ションã§ã™"
msgid "%s: invalid option name"
msgstr "%s: 無効ãªã‚ªãƒ—ションåã§ã™"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': 有効ãªè­˜åˆ¥å­ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -231,7 +226,7 @@ msgstr "無効ãªå…«é€²æ•°ã§ã™"
msgid "invalid hex number"
msgstr "無効ãªå六進数ã§ã™"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "無効ãªæ•°å­—ã§ã™"
@@ -245,88 +240,93 @@ msgstr "%s: 無効ãªã‚·ã‚°ãƒŠãƒ«æŒ‡å®šã§ã™"
msgid "`%s': not a pid or valid job spec"
msgstr "`%s': pid ã¾ãŸã¯æœ‰åŠ¹ãªã‚¸ãƒ§ãƒ–指定ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: 読ã¿å–り専用ã®å¤‰æ•°ã§ã™"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: 割り当ã¦ã§ãã¾ã›ã‚“"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s ãŒç¯„囲外ã§ã™"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "引数"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s ãŒç¯„囲外ã§ã™"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: ãã®ã‚ˆã†ãªã‚¸ãƒ§ãƒ–ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: ジョブ制御ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "ジョブ制御ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: 制é™ã•ã‚Œã¦ã„ã¾ã™"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "制é™ã•ã‚Œã¦ã„ã¾ã™"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: シェルã®ãƒ“ルトイン関数ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "ターミナル属性ã®è¨­å®šæ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "ターミナル属性ã®å–得時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: カレントディレクトリã®å–得時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: 曖昧ãªã‚¸ãƒ§ãƒ–指定ã§ã™"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ãƒ˜ãƒ«ãƒ—ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: 消去ã§ãã¾ã›ã‚“: %s ã¯èª­ã¿å–り専用ã§ã™"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: 消去ã§ãã¾ã›ã‚“"
@@ -336,108 +336,108 @@ msgstr "%s: 消去ã§ãã¾ã›ã‚“"
msgid "%s: invalid action name"
msgstr "%s: 無効ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³åã§ã™"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: 補完指定ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "警告: -F オプションã¯æœŸå¾…通りã«å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "警告: -C オプションã¯æœŸå¾…通りã«å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "補完機能ã¯ç¾åœ¨å®Ÿè¡Œã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "関数ã®ä¸­ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "関数作æˆæ™‚ã« `-f' を使用ã§ãã¾ã›ã‚“"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: 読ã¿å–り専用関数ã§ã™"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: å‚照変数ã¯é…列ã§ã‚ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: 自身をå‚ç…§ã™ã‚‹åå‰å‚照変数ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: 循環åå‰å‚ç…§ã§ã™"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': åå‰å‚ç…§ã¨ã—ã¦ç„¡åŠ¹ãªå¤‰æ•°ã§ã™"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "関数作æˆæ™‚ã« `-f' を使用ã§ãã¾ã›ã‚“"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: 読ã¿å–り専用関数ã§ã™"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: ã“ã®æ–¹æ³•ã§é…列変数を消去ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: 連想é…列ã‹ã‚‰ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹é…列ã«å¤‰æ›ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "動的ロードã¯åˆ©ç”¨ã§ãã¾ã›ã‚“"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "共有オブジェクト %s ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ : %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "%s ãŒå…±æœ‰ã‚ªãƒ–ジェクト %s ã«å­˜åœ¨ã—ã¾ã›ã‚“: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: 動的ビルトインã¯ãƒ­ãƒ¼ãƒ‰æ¸ˆã§ã™"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "関数 %s ã®ãƒ­ãƒ¼ãƒ‰ãŒå¤±æ•—ã‚’è¿”ã—ã¾ã—ãŸ(%d): ロードã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: å‹•çš„ã«ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: 削除ã§ãã¾ã›ã‚“: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: ディレクトリã§ã™"
@@ -452,7 +452,7 @@ msgstr "%s: 通常ファイルã§ã¯ã‚ã‚Šã¾ã›ã‚“"
msgid "%s: file is too large"
msgstr "%s: ファイルãŒå¤§ãã™ãŽã¾ã™"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«ã‚’実行ã§ãã¾ã›ã‚“"
@@ -546,12 +546,12 @@ msgstr ""
msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr "`%s' ã«ä¸€è‡´ã™ã‚‹ãƒ˜ãƒ«ãƒ—é …ç›®ãŒã‚ã‚Šã¾ã›ã‚“。`help help'ã€`man -k %s' ã¾ãŸã¯ `info %s' を試ã—ã¦ãã ã•ã„"
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -570,21 +570,21 @@ msgstr ""
"åå‰ã®å¾Œã«ã‚¢ã‚¹ã‚¿ãƒªã‚¹ã‚¯ (*) ãŒã‚ã‚‹å ´åˆã¯ãã®ã‚³ãƒžãƒ³ãƒ‰ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "-anrw ã‚’2ã¤ä»¥ä¸Šä¸€ç·’ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "ヒストリä½ç½®"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: 無効ãªã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã§ã™"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: ヒストリã®å±•é–‹ã«å¤±æ•—ã—ã¾ã—ãŸ"
@@ -607,78 +607,78 @@ msgstr "%s: 引数ã¯ãƒ—ロセスIDã‹ã‚¸ãƒ§ãƒ–IDã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
msgid "Unknown error"
msgstr "ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼ã§ã™"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "å¼ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: インデックスé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: 無効ãªãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­æŒ‡å®šã§ã™"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: 無効ãªãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: 無効ãªè¡Œæ•°ã§ã™"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: 無効ãªé…列ã®åŽŸç‚¹ã§ã™"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: コールãƒãƒƒã‚¯ã® quantum ãŒç„¡åŠ¹ã§ã™"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "空ã®é…列変数åã§ã™"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "é…列変数ã®ã‚µãƒãƒ¼ãƒˆãŒå¿…è¦ã§ã™"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': 書å¼æŒ‡å®šæ–‡å­—ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': 無効ãªæ™‚間書å¼æŒ‡å®šã§ã™"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': 無効ãªæ›¸å¼æŒ‡å®šæ–‡å­—ã§ã™"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "警告: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "書å¼è§£æžå•é¡Œã§ã™: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "\\x 用ã®å六進数字ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "\\%c 用ã®ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰æ•°å€¤ãŒã‚ã‚Šã¾ã›ã‚“"
@@ -826,12 +826,12 @@ msgstr ""
" \n"
" `dirs' ビルトインコマンドã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯ã‚’表示ã—ã¾ã™ã€‚"
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: 無効ãªã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆæŒ‡å®šã§ã™"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼: %d: %s"
@@ -844,7 +844,7 @@ msgstr "`return' ã¯é–¢æ•°ã¾ãŸã¯ source ã•ã‚ŒãŸã‚¹ã‚¯ãƒªãƒ—ト内ã®ã¿ã§å
msgid "cannot simultaneously unset a function and a variable"
msgstr "変数ã¨é–¢æ•°ã‚’åŒæ™‚ã«æ¶ˆåŽ»ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: é…列変数ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -863,11 +863,11 @@ msgstr "%s: export ã§ãã¾ã›ã‚“"
msgid "shift count"
msgstr "シフト回数"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "シェルオプションをåŒæ™‚ã«æœ‰åŠ¹ã‹ã¤ç„¡åŠ¹ã«ã§ãã¾ã›ã‚“"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: 無効ãªã‚·ã‚§ãƒ«ã‚ªãƒ—ションåã§ã™"
@@ -934,16 +934,16 @@ msgstr "%s: limit ã®ç„¡åŠ¹ãªå¼•æ•°ã§ã™"
msgid "`%c': bad command"
msgstr "`%c': 誤ã£ãŸã‚³ãƒžãƒ³ãƒ‰ã§ã™"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: limit ã‚’å–å¾—ã§ãã¾ã›ã‚“: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: limit を変更ã§ãã¾ã›ã‚“ : %s"
@@ -962,7 +962,7 @@ msgstr "`%c': 無効ãªã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒ¢ãƒ¼ãƒ‰æ¼”ç®—å­ã§ã™"
msgid "`%c': invalid symbolic mode character"
msgstr "`%c': 無効ãªã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒ¢ãƒ¼ãƒ‰æ–‡å­—ã§ã™"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " 行 "
@@ -982,96 +982,106 @@ msgstr "中止ã—ã¦ã„ã¾ã™..."
msgid "INFORM: "
msgstr "情報: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "デãƒãƒƒã‚° 警告: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "ä¸æ˜Žãªã‚³ãƒžãƒ³ãƒ‰ã‚¨ãƒ©ãƒ¼ã§ã™"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "誤ã£ãŸã‚³ãƒžãƒ³ãƒ‰ã‚¿ã‚¤ãƒ—ã§ã™"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "誤ã£ãŸæŽ¥ç¶šã§ã™"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "誤ã£ãŸã‚¸ãƒ£ãƒ³ãƒ—ã§ã™"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: 未割り当ã¦ã®å¤‰æ•°ã§ã™"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\a入力待ã¡ãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ: 自動ログアウト\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "/dev/null ã‹ã‚‰æ¨™æº–入力ã«å¯¾ã—ã¦ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': 無効ãªæ›¸å¼æ–‡å­—ã§ã™"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "パイプエラー"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: eval ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’超ãˆã¦ã„ã¾ã™ (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: source ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’超ãˆã¦ã„ã¾ã™ (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: 関数ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’超ãˆã¦ã„ã¾ã™ (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: 制é™ã•ã‚Œã¦ã„ã¾ã™: `/' をコマンドåã®ä¸­ã«æŒ‡å®šã§ãã¾ã›ã‚“"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: 実行ã§ãã¾ã›ã‚“: å¿…è¦ãªãƒ•ã‚¡ã‚¤ãƒ«ãŒã‚ã‚Šã¾ã›ã‚“"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: 誤ã£ãŸã‚¤ãƒ³ã‚¿ãƒ—リタã§ã™"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«ã‚’実行ã§ãã¾ã›ã‚“: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s': 特殊シェル組ã¿è¾¼ã¿é–¢æ•°ã§ã™"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "fd %d ã‚’ fd %d ã«è¤‡è£½ã§ãã¾ã›ã‚“"
@@ -1084,68 +1094,68 @@ msgstr "å¼ã®å†å¸°å¯èƒ½ãƒ¬ãƒ™ãƒ«ã‚’越ãˆã¾ã—ãŸ"
msgid "recursion stack underflow"
msgstr "å†å¸°ã‚¹ã‚¿ãƒƒã‚¯ãŒã‚¢ãƒ³ãƒ€ãƒ¼ãƒ•ãƒ­ãƒ¼ã—ã¾ã—ãŸ"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "éžå¤‰æ•°ã«å‰²ã‚Šå½“ã¦ã‚’è¡ŒãŠã†ã¨ã—ã¦ã¾ã™"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "変数ã®å‰²ã‚Šå½“ã¦ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "0 ã«ã‚ˆã‚‹é™¤ç®—ã§ã™"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "ãƒã‚°: 誤ã£ãŸå¼ã®ãƒˆãƒ¼ã‚¯ãƒ³ã§ã™"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "æ¡ä»¶å¼ã«ã¯ `:' ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "0よりå°ã•ã„指数部ã§ã™"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "識別å­ã¯å‰ç½®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¾ãŸã¯å‰ç½®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "`)' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "構文エラー: オペランドãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "構文エラー: 無効ãªè¨ˆç®—演算å­ã§ã™"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (エラーã®ã‚るトークン㯠\"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "無効ãªåŸºåº•ã®æ•°å€¤ã§ã™"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "無効ãªæ•´æ•°å®šæ•°ã§ã™"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "基底ã®å€¤ãŒå¤§ãã™ãŽã¾ã™"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: å¼ã®ã‚¨ãƒ©ãƒ¼\n"
@@ -1154,7 +1164,7 @@ msgstr "%s: å¼ã®ã‚¨ãƒ©ãƒ¼\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: 親ディレクトリã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "ファイル記述å­(fd) %d ã‚’ç„¡é…延モードã«å†è¨­å®šã§ãã¾ã›ã‚“"
@@ -1173,167 +1183,167 @@ msgstr "save_bash_input: æ–°è¦ fd %d ã®ãƒãƒƒãƒ•ã‚¡ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "実行中ã®ã‚¸ãƒ§ãƒ– %2$d 㧠fork ã—㟠pid %1$d ãŒå‡ºç¾ã—ã¾ã—ãŸ"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "プロセスグループ %2$ld ã®ã‚¸ãƒ§ãƒ– %1$d を削除ã—ã¦ã„ã¾ã™"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) ã¯ã¾ã å­˜åœ¨ã—ã¦ã„ã‚‹ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã¾ã™"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ãã®ã‚ˆã†ãª pid ã¯å­˜åœ¨ã—ã¾ã›ã‚“"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "シグナル %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "終了"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "åœæ­¢"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "åœæ­¢ (%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "実行中"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "終了(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "終了 %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "ä¸æ˜Žãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(コアダンプ) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "å­ãƒ—ロセス setpgid (%ld ã‹ã‚‰ %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld ã¯ã“ã®ã‚·ã‚§ãƒ«ã®å­ãƒ—ロセスã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: プロセス %ld ã®è¨˜éŒ²ãŒã‚ã‚Šã¾ã›ã‚“"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: ジョブ %d ã¯åœæ­¢ã—ã¦ã„ã¾ã™"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: カレントジョブãŒã‚ã‚Šã¾ã›ã‚“"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: ジョブã¯çµ‚了ã—ã¾ã—ãŸ"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: ジョブ %d ã¯ã™ã§ã«ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å‹•ä½œã—ã¦ã„ã¾ã™"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: ä¸å®šã®ãƒ–ロックをé¿ã‘ã‚‹ãŸã‚ã« WNOHANG をオンã«ã—ã¾ã—ãŸã€‚"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: %d 行: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (コアダンプ)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd now: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp ãŒå¤±æ•—ã—ã¾ã—ãŸ"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã«ã‚¸ãƒ§ãƒ–コントロールãŒã‚ã‚Šã¾ã›ã‚“"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "端末プロセスグループを設定ã§ãã¾ã›ã‚“ (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "ã“ã®ã‚·ã‚§ãƒ«ã§ã¯ã‚¸ãƒ§ãƒ–制御ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: 失敗ã—ãŸã‚¢ã‚µãƒ¼ã‚·ãƒ§ãƒ³: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1342,47 +1352,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: アサーション失敗\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "ä¸æ˜Ž"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: free ブロックリストãŒå£Šã‚Œã¦ã„ã¾ã™"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: 既㫠free ã•ã‚ŒãŸãƒ–ロックを引数ã¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: 未割当ã®ãƒ–ロックを引数ã¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: アンダーフローを検出ã—ã¾ã—ãŸã€‚magic8 壊れã¦ã„ã¾ã™"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: 開始ã¨çµ‚了ã®å¡Šã®å¤§ãã•ãŒç•°ãªã£ã¦ã„ã¾ã™"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: 未割当ã®ãƒ–ロックを引数ã¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: アンダーフローを検出ã—ã¾ã—ãŸã€‚magic8 ãŒå£Šã‚Œã¦ã„ã¾ã™"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: 開始ã¨çµ‚了ã®å¡Šã®å¤§ãã•ãŒç•°ãªã£ã¦ã„ã¾ã™"
@@ -1424,22 +1434,22 @@ msgstr "%s: ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‘ス指定ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™"
msgid "network operations not supported"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æ“作ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: ロケールを変更ã§ãã¾ã›ã‚“ (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: ロケールを変更ã§ãã¾ã›ã‚“ (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: ロケールを変更ã§ãã¾ã›ã‚“ (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: ロケールを変更ã§ãã¾ã›ã‚“ (%s): %s"
@@ -1457,136 +1467,136 @@ msgstr "æ–°ã—ã„メール㌠$_ ã«ã‚ã‚Šã¾ã™"
msgid "The mail in %s has been read\n"
msgstr "%s ã®ãƒ¡ãƒ¼ãƒ«ã¯æ—¢èª­ã§ã™\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "構文エラー: 数値ã®å¼ãŒå¿…è¦ã§ã™"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "構文エラー: 予期ã—ãªã„ `;' ã§ã™"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "構文エラー: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: 誤ã£ãŸæŒ‡å®šã®ç¨®é¡ž %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "ヒアドキュメント㮠%d 行目ã§ãƒ•ã‚¡ã‚¤ãƒ«çµ‚了 (EOF) ã«é”ã—ã¾ã—㟠(`%s' ãŒå¿…è¦)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: リダイレクト指定 `%d' ã¯ç¯„囲外ã§ã™"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "ヒアドキュメントã®æœ€å¤§æ•°ã‚’超ãˆã¾ã—ãŸ"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "対応ã™ã‚‹ `%c' を探索中ã«äºˆæœŸã—ãªã„ファイル終了 (EOF) ã§ã™"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "`]]' を探索中ã«äºˆæœŸã—ãªã„ファイル終了 (EOF) ã§ã™"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "æ¡ä»¶å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼: 予期ã—ãªã„トークン `%s' ã§ã™"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "æ¡ä»¶å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "予期ã—ãªã„トークン `%s' ã§ã™ã€‚`)' ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "`)' ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "æ¡ä»¶å˜é …演算å­ã«äºˆæœŸã—ãªã„引数 `%s' ã§ã™"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "æ¡ä»¶å˜é …演算å­ã«äºˆæœŸã—ãªã„引数ã§ã™"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "`%s` ã¯äºˆæœŸã—ãªã„トークンã§ã™ã€‚æ¡ä»¶äºŒé …演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "æ¡ä»¶äºŒé …演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "æ¡ä»¶äºŒé …演算å­ã«äºˆæœŸã—ãªã„引数 `%s' ã§ã™"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "æ¡ä»¶äºŒé …演算å­ã«äºˆæœŸã—ãªã„引数ã§ã™"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン `%c' ãŒã‚ã‚Šã¾ã™"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン `%s' ãŒã‚ã‚Šã¾ã™"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン %d ãŒã‚ã‚Šã¾ã™"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "予期ã—ãªã„トークン `%s' 周辺ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "`%s' 周辺ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "構文エラー: 予期ã—ãªã„ファイル終了 (EOF) ã§ã™"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "構文エラー"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "シェルã‹ã‚‰è„±å‡ºã™ã‚‹ã«ã¯ \"%s\" を使用ã—ã¦ãã ã•ã„。\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "対応ã™ã‚‹ `)' を探索中ã«äºˆæœŸã—ãªã„ファイル終了(EOF)ã§ã™"
@@ -1624,94 +1634,94 @@ msgstr "xtrace_set: NULL ファイルãƒã‚¤ãƒ³ã‚¿ã§ã™"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': 無効ãªæ›¸å¼æ–‡å­—ã§ã™"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "ファイル記述å­ãŒç¯„囲外ã§ã™"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: 曖昧ãªãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ã™"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: 存在ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’上書ãã§ãã¾ã›ã‚“"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: 制é™ã•ã‚Œã¦ã„ã¾ã™: 出力をリダイレクト出æ¥ã¾ã›ã‚“"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "ヒアドキュメント用一時ファイルを作æˆã§ãã¾ã›ã‚“: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: ãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ (fd) を変数ã«è¨­å®šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãŒç„¡åŠ¹ãªå ´åˆ /dev/(tcp|udp)/host/port ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "リダイレクトエラー: ファイル記述å­ã‚’複製ã§ãã¾ã›ã‚“"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "/tmp ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。作æˆã—ã¦ãã ã•ã„!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp ã¯æœ‰åŠ¹ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "pretty-printing モードã¯ã‚¤ãƒ³ã‚¿ãƒ©ã‚¯ãƒ†ã‚£ãƒ–シェルã§ã¯ç„¡è¦–ã•ã‚Œã¾ã™"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: 無効ãªã‚ªãƒ—ション"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "uidã‚’ %d ã«è¨­å®šã§ãã¾ã›ã‚“: 実効uid %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "gidã‚’ %d ã«è¨­å®šã§ãã¾ã›ã‚“: 実効gid %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "デãƒãƒƒã‚¬ã‚’開始ã§ãã¾ã›ã‚“。デãƒãƒƒã‚¬ãƒ¢ãƒ¼ãƒ‰ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: ディレクトリã§ã™"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "ç§ã¯åå‰ãŒã‚ã‚Šã¾ã›ã‚“!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1720,317 +1730,317 @@ msgstr ""
"使用法:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU å½¢å¼ã®é•·ã„オプション:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "シェルオプション:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD, -c command ã¾ãŸã¯ -O shopt_option\t\t(起動時ã®ã¿)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ã¾ãŸã¯ -o option\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "シェルオプションã®è©³ç´°ã«ã¤ã„ã¦ã¯ `%s -c \"help set\"'ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "シェル組ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã«ã¤ã„ã¦ã¯ `%s -c help' ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "ãƒã‚°å ±å‘Šã‚’ã™ã‚‹å ´åˆã¯ `bashbug' コマンドを使用ã—ã¦ãã ã•ã„。\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bashホームページ: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: 無効ãªæ“作ã§ã™"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "悪ã„シグナル"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "åœæ­¢"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "割り込ã¿"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "終了"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "ä¸æ­£ãªæŒ‡å®š"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT 指定"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT 指定"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "浮動å°æ•°ç‚¹ä¾‹å¤–"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Killed"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "ãƒã‚¹ã‚¨ãƒ©ãƒ¼"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "セグメンテーションフォルト"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "誤ã£ãŸã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "パイプãŒåˆ‡ã‚Œã¾ã—ãŸ"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "アラーム時計"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Terminated"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "急ãŽã® IO 状態"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "åœæ­¢ (シグナル)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "続行"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "å­ãƒ—ロセスã®æ­»äº¡ã¾ãŸã¯åœæ­¢ "
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "åœæ­¢ (tty 入力)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "åœæ­¢ (tty 出力)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O 用æ„ãŒã§ãã¦ã„ã¾ã™"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU limit"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "ファイル limit"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "警報 (仮想)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "警報 (プロファイル)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "ウィンドウãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "記録ã®ãƒ­ãƒƒã‚¯"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "ユーザシグナル 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "ユーザシグナル 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT 未決ã®å…¥åŠ›ãƒ‡ãƒ¼ã‚¿"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "é›»æºæ•…éšœã®å±é™º"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "システムクラッシュã®å±é™º"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "プロセスを別ã®CPUã«ç§»å‹•"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "プログラミングエラー"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT monitorモードãŒä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT monitorモードãŒå¥ªã‚ã‚Œã¾ã—ãŸ"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT サウンドシーケンスãŒå®Œäº†ã—ã¾ã—ãŸ"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "情報è¦æ±‚"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "ä¸æ˜Žãªã‚·ã‚°ãƒŠãƒ«ç•ªå· %d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "誤ã£ãŸä»£å…¥: é–‰ã˜ã‚‹ `%s' ㌠%s ã«å­˜åœ¨ã—ã¾ã›ã‚“"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: リストをé…列è¦ç´ ã«å‰²ã‚Šå½“ã¦ã§ãã¾ã›ã‚“"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "プロセス代入ã§ã¯ãƒ‘イプを作æˆã§ãã¾ã›ã‚“"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "プロセス代入ã§ã¯å­ãƒ—ロセスを作æˆã§ãã¾ã›ã‚“"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "åå‰ä»˜ãパイプ %s を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "åå‰ä»˜ãパイプ %s を書ãè¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "åå‰ä»˜ãパイプ %s をファイル記述å­(fd) %d ã¨ã—ã¦è¤‡è£½ã§ãã¾ã›ã‚“"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "コマンド代入: 入力ã®ãƒŒãƒ«ãƒã‚¤ãƒˆã‚’無視ã—ã¾ã—ãŸ"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "コマンド代入ã§ã¯ãƒ‘イプを作æˆã§ãã¾ã›ã‚“"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "コマンド代入ã§ã¯å­ãƒ—ロセスを作æˆã§ãã¾ã›ã‚“"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: パイプを fd 1 ã¨ã—ã¦è¤‡è£½ã§ãã¾ã›ã‚“"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: åå‰å‚ç…§ã¨ã—ã¦ç„¡åŠ¹ãªå¤‰æ•°ã§ã™"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: 無効ãªé–“接展開ã§ã™"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: 無効ãªå¤‰æ•°åã§ã™"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: パラメータãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: パラメータ㌠null ã¾ãŸã¯è¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: substring expression < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: 誤ã£ãŸä»£å…¥ã§ã™"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ã“ã®æ–¹æ³•ã§å‰²å½“ã¯ã§ãã¾ã›ã‚“"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚·ã‚§ãƒ«ã§ã¯å¼·åˆ¶çš„ã«æ•°å€¤ä»£å…¥ã¨ã—ã¦è©•ä¾¡ã•ã‚Œã¾ã™"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "誤ã£ãŸä»£å…¥: %s ã«é–‰ã˜ã‚‹ \"`\" ãŒã‚ã‚Šã¾ã›ã‚“"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "一致ã—ã¾ã›ã‚“: %s"
@@ -2053,21 +2063,21 @@ msgstr "`)' ãŒäºˆæœŸã•ã‚Œã¾ã™"
msgid "`)' expected, found %s"
msgstr "`)' ãŒäºˆæœŸã•ã‚Œã¾ã™ãŒã€è¦‹ã¤ã‹ã£ãŸã®ã¯ %s ã§ã™"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: 二項演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: å˜é …演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "`]'ãŒã‚ã‚Šã¾ã›ã‚“"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "構文エラー: 予期ã—ãªã„ `%s' ã§ã™"
@@ -2076,99 +2086,104 @@ msgstr "構文エラー: 予期ã—ãªã„ `%s' ã§ã™"
msgid "invalid signal number"
msgstr "無効ãªã‚·ã‚°ãƒŠãƒ«ç•ªå·"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "trap handler: trap handler ã®æœ€å¤§ãƒ¬ãƒ™ãƒ«ã‚’超ãˆã¦ã„ã¾ã™ (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: trap_list[%d] ã«èª¤ã£ãŸå€¤ãŒã‚ã‚Šã¾ã™: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: シグナルãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã¯ SIG_DFLã§ã™ã€‚, %d (%s) を自身ã«å†é€ã—ã¾ã™ã€‚"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: 誤ã£ãŸã‚·ã‚°ãƒŠãƒ« %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "`%s' ã®é–¢æ•°å®šç¾©ã‚’インãƒãƒ¼ãƒˆä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "シェルレベル (%d) ã¯é«˜ã™ãŽã¾ã™ã€‚1ã«å†è¨­å®šã•ã‚Œã¾ã—ãŸ"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯é–¢æ•°ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: 変数ãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: 互æ›æ€§ã®ãªã„タイプã‹ã‚‰ã¯ç¶™æ‰¿ã§ãã¾ã›ã‚“"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: åå‰å‚ç…§ã«æ•´æ•°ã‚’代入ã—よã†ã¨ã—ã¦ã„ã¾ã™"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯é–¢æ•°ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s 㯠null ã® exportstr ã‚’æŒã£ã¦ã„ã¾ã™"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "%2$s ã«å¯¾ã™ã‚‹ exportstr 㧠%1$d ã¯ç„¡åŠ¹ãªæ–‡å­—ã§ã™"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "%s ã«å¯¾ã™ã‚‹ exportstr ã« `=' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: shell_variables ã®å…ˆé ­ã§ã™ã€‚関数コンテキストã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: global_variables コンテキストã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: shell_variables ã®å…ˆé ­ã§ã™ã€‚一時環境スコープã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: ファイルã¨ã—ã¦é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: トレースファイル記述å­ã¨ã—ã¦ç„¡åŠ¹ãªå€¤ã§ã™"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: 値ã®äº’æ›æ€§ãŒç¯„囲外ã§ã™"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2248,12 +2263,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2340,8 +2355,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2388,8 +2403,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] name [name ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2428,12 +2443,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while COMMANDS; do COMMANDS; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while COMMANDS; do COMMANDS-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until COMMANDS; do COMMANDS; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until COMMANDS; do COMMANDS-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3726,7 +3741,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3800,7 +3816,7 @@ msgstr ""
" ファイル終了(EOF)ã€èª­ã¿è¾¼ã¿ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ(ã“ã®å ´åˆã¯128以上)ã€å¤‰æ•°ã¸ã®ä»£å…¥ã‚¨\n"
" ラーãŒç™ºç”Ÿã€ -u ã«ç„¡åŠ¹ãªãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã‚’除ã0ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3821,7 +3837,7 @@ msgstr ""
" 戻り値 Nã€ã¾ãŸã¯ã‚·ã‚§ãƒ«ãŒé–¢æ•°ã¾ãŸã¯ã‚¹ã‚¯ãƒªãƒ—トを実行ã—ã¦ã„ãªã„å ´åˆã¯å¤±æ•—ã‚’\n"
" è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1054
+#: builtins.c:1055
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -3984,7 +4000,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1139
+#: builtins.c:1140
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4023,7 +4039,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ NAME ãŒèª­ã¿å–り専用ã®å ´åˆã‚’除ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4057,7 +4073,7 @@ msgstr ""
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ç„¡åŠ¹ãª NAME ãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸ\n"
" ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1180
+#: builtins.c:1181
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4097,7 +4113,7 @@ msgstr ""
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ä¸Žãˆã‚‰ã‚ŒãŸ NAME ãŒç„¡åŠ¹ãªå ´åˆã‚’除ãæˆåŠŸ\n"
" ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4115,7 +4131,7 @@ msgstr ""
" 終了ステータス:\n"
" NãŒè² ã®å€¤ã¾ãŸã¯ $# より大ãã„å ´åˆã‚’除ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4139,7 +4155,8 @@ msgstr ""
" FILENAME ã§æœ€å¾Œã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚FILENAME ãŒ\n"
" 読ã¿è¾¼ã‚ãªã‹ã£ãŸå ´åˆã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1245
+#: builtins.c:1246
+#, fuzzy
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4163,7 +4180,7 @@ msgstr ""
" 終了ステータス:\n"
" ジョブ制御ãŒæœ‰åŠ¹ã§ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1261
+#: builtins.c:1262
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4318,7 +4335,7 @@ msgstr ""
" å¼ EXPR ã®è©•ä¾¡å€¤ãŒçœŸ(true)ã®æ™‚ã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚EXPR ã®è©•ä¾¡å€¤ãŒå½(false) ã¾ãŸã¯\n"
" 引数ãŒç„¡åŠ¹ãªå ´åˆã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4330,7 +4347,7 @@ msgstr ""
" ã“れ㯠test 組ã¿è¾¼ã¿é–¢æ•°ã¨åŒç¾©èªžã§ã™ã€‚ãŸã ã—ã€æœ€å¾Œã®å¼•æ•°ã«é–‹å§‹ã®`['ã¨ä¸€è‡´\n"
" ã™ã‚‹ã‚ˆã†ã«æ–‡å­—`]'を与ãˆãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。"
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4348,7 +4365,7 @@ msgstr ""
" 終了ステータス:\n"
" 常ã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4414,7 +4431,7 @@ msgstr ""
" 終了ステータス:\n"
" SIGSPEC ãŒç„¡åŠ¹ã‹ã€ç„¡åŠ¹ãªã‚ªãƒ—ションを与ãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1400
+#: builtins.c:1401
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4470,7 +4487,7 @@ msgstr ""
" å…¨ã¦ã® NAME ãŒè¦‹ã¤ã‹ã£ãŸå ´åˆã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚ã©ã‚Œã‹ãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸå ´åˆ\n"
" ã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4561,7 +4578,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションを与ãˆã‚‹ã‹ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚Šã€æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4593,7 +4610,7 @@ msgstr ""
" 終了ステータス:\n"
" MODE ãŒç„¡åŠ¹ã‹ã€ç„¡åŠ¹ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4632,7 +4649,7 @@ msgstr ""
" 最後㮠ID ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚IDãŒç„¡åŠ¹ã§ã‚ã‚‹ã‹ã€ç„¡åŠ¹ãªã‚ªãƒ—\n"
" ションãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã«ã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4654,7 +4671,7 @@ msgstr ""
" 最後㮠PID ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚PIDãŒç„¡åŠ¹ã‹ã€ç„¡åŠ¹ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚ŒãŸ\n"
" å ´åˆã¯å¤±æ•—ã—ã¾ã™ã€‚"
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4675,7 +4692,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4705,7 +4722,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4740,7 +4757,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4768,7 +4785,7 @@ msgstr ""
" 終了ステータス:\n"
" PIPELINE ã®æˆ»ã‚Šå€¤ãŒçµ‚了ステータスã¨ãªã‚Šã¾ã™ã€‚"
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4786,7 +4803,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4813,12 +4830,13 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚"
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4831,12 +4849,13 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4849,7 +4868,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1671
+#: builtins.c:1672
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -4872,7 +4891,7 @@ msgstr ""
" 終了ステータス:\n"
" COMMAND ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚"
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4894,7 +4913,7 @@ msgstr ""
" 終了ステータス:\n"
" NAME ãŒèª­ã¿å–り専用ã§ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4912,7 +4931,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4935,7 +4954,7 @@ msgstr ""
" 終了ステータス:\n"
" å†é–‹ã•ã‚ŒãŸã‚¸ãƒ§ãƒ–ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚"
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4953,7 +4972,7 @@ msgstr ""
" 終了ステータス:\n"
" EXPRESSION ã®è©•ä¾¡å€¤ãŒ 0 ã®å ´åˆã¯ 1ã€ãれ以外㯠0 ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5002,7 +5021,7 @@ msgstr ""
" 終了ステータス:\n"
" EXPRESSION ã®å€¤ã«åŸºã¥ã„㦠0 ã¾ãŸã¯ 1 ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5103,7 +5122,7 @@ msgstr ""
" HISTIGNORE\tヒストリ一覧ã«ä¿å­˜ã•ã‚Œã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’決ã‚る時ã«ä½¿ç”¨ã•ã‚Œã‚‹\n"
" \t\tコロン (:) ã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ‘ターンã®ä¸€è¦§ã€‚\n"
-#: builtins.c:1821
+#: builtins.c:1822
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5163,7 +5182,7 @@ msgstr ""
" 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´ãŒå¤±æ•—ã—ãªã„é™ã‚ŠæˆåŠŸã‚’\n"
" è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1855
+#: builtins.c:1856
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5214,7 +5233,7 @@ msgstr ""
" 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´ãŒå¤±æ•—ã—ãªã„é™ã‚ŠæˆåŠŸã‚’\n"
" è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1885
+#: builtins.c:1886
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5267,7 +5286,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5303,7 +5322,7 @@ msgstr ""
" OPTNAME ãŒæœ‰åŠ¹ãªå ´åˆã¯æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆ\n"
" ã¾ãŸã¯ OPTNAME ãŒç„¡åŠ¹ãªå ´åˆã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1937
+#: builtins.c:1938
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5323,6 +5342,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5357,7 +5378,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€æ›¸ãè¾¼ã¿ã€ä»£å…¥ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5405,7 +5426,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5425,7 +5446,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:2016
+#: builtins.c:2019
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5478,7 +5499,7 @@ msgstr ""
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ NAME ãŒè£œå®ŒæŒ‡å®šã¨ã—ã¦å®šç¾©ã•ã‚Œã¦ã„ãªã„å ´åˆ\n"
" を除ãã€æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:2047
+#: builtins.c:2050
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5541,7 +5562,7 @@ msgstr ""
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã€é…列ãŒèª­ã¿å–り専用ã€ã¾ãŸã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹åž‹é…列ã§ç„¡ã„\n"
" å ´åˆã‚’除ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
diff --git a/po/ko.gmo b/po/ko.gmo
index e8dbf496..11fe7d2e 100644
--- a/po/ko.gmo
+++ b/po/ko.gmo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
index 01317691..4b3fbc62 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -2,14 +2,15 @@
# Copyright (C) 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# SooHyun Kim <soohyunkim@kw.ac.kr>, 2019.
+# Seong-ho Cho <darkcircle.0426@gmail.com>, 2022.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash-5.0\n"
+"Project-Id-Version: bash-5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2019-11-23 16:28+0900\n"
-"Last-Translator: SooHyun Kim <soohyunkim@kw.ac.kr>\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-25 01:50+0900\n"
+"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
@@ -17,99 +18,95 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.3.1\n"
#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "ìž˜ëª»ëœ ë°°ì—´ 첨ìž"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: ì´ë¦„ 참조 ì†ì„±ì„ 지우는 중"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
-msgstr "%s: ì¸ë±ìŠ¤ ë°°ì—´ì„ ì—°ê´€ ë°°ì—´ë¡œ 변환할 수 ì—†ìŒ"
+msgstr "%s: ìƒ‰ì¸ ë°°ì—´ì„ ì—°ê´€ ë°°ì—´ë¡œ 변환할 수 ì—†ìŒ"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: 유효하지 ì•Šì€ ì—°ê´€ ë°°ì—´ 키"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: 숫ìžê°€ ì•„ë‹Œ ì¸ë±ìŠ¤ì— 할당할 수 ì—†ìŒ"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
-msgstr "%s: %s: ì—°ê´€ ë°°ì—´ì„ í• ë‹¹í•˜ê¸° 위해서 반드시 첨ìžë¥¼ 사용해야 함"
+msgstr "%s: %s: ì—°ê´€ ë°°ì—´ì„ í• ë‹¹í•˜ë ¤ë©´ 반드시 첨ìžë¥¼ 사용해야 함"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: ìƒì„±í•  수 ì—†ìŒ: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr "bash_execute_unix_command: 명령어를 위한 keymapì„ ì°¾ì„ ìˆ˜ ì—†ìŒ"
+msgstr "bash_execute_unix_command: ëª…ë ¹ì˜ keymapì„ ì°¾ì„ ìˆ˜ ì—†ìŒ"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: ê³µë°±ì´ ì•„ë‹Œ 첫 문ìžê°€ '\"' ê°€ 아님"
+msgstr "%s: ê³µë°±ì´ ì•„ë‹Œ 첫 문ìžê°€ `\"'ê°€ 아님"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
-msgstr "%2$sì— ë‹«ëŠ” '%1$c' ì—†ìŒ"
+msgstr "%2$sì— ë‹«ëŠ” `%1$c' ì—†ìŒ"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
-msgstr "%s: 콜론(:) êµ¬ë¶„ìž ì—†ìŒ"
+msgstr "%s: 콜론 êµ¬ë¶„ìž ì—†ìŒ"
-#: bashline.c:4555
-#, fuzzy, c-format
+#: bashline.c:4733
+#, c-format
msgid "`%s': cannot unbind in command keymap"
-msgstr "'%s': unbind í•  수 ì—†ìŒ"
+msgstr "`%s': 명령 keymapì˜ ë°”ì¸ë”©ì„ 해제할 수 ì—†ìŒ"
#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
-msgstr "괄호 확장: '%s'를 위해 메모리를 할당할 수 ì—†ìŒ"
+msgstr "괄호 확장: %sì˜ ë©”ëª¨ë¦¬ë¥¼ 할당할 수 ì—†ìŒ"
#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "괄호 확장: %u개 요소를 위한 메모리 할당 실패"
+msgstr "괄호 확장: 요소 %uê°œì—ì„œ 메모리 할당 실패"
#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr "괄호 확장: '%s'를 위한 메모리 할당 실패"
+msgstr "괄호 확장: `%s'ì˜ ë©”ëª¨ë¦¬ 할당 실패"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
-msgstr "'%s': 유효하지 ì•Šì€ ë³„ëª…"
+msgstr "`%s': 부ì ì ˆí•œ 별명"
#: builtins/bind.def:122 builtins/bind.def:125
msgid "line editing not enabled"
-msgstr "줄 편집 활성화ë˜ì–´ìžˆì§€ ì•ŠìŒ"
+msgstr "줄 편집 기능 꺼ì§"
#: builtins/bind.def:212
#, c-format
msgid "`%s': invalid keymap name"
-msgstr "'%s': 유효하지 ì•Šì€ keymap ì´ë¦„"
+msgstr "`%s': 부ì ì ˆí•œ keymap ì´ë¦„"
#: builtins/bind.def:252
#, c-format
msgid "%s: cannot read: %s"
-msgstr "%s: %s를 ì½ì„ 수 ì—†ìŒ"
+msgstr "%s: %sì„(를) ì½ì„ 수 ì—†ìŒ"
#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
@@ -119,17 +116,17 @@ msgstr "`%s': ì•Œ 수 없는 함수 ì´ë¦„"
#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
-msgstr "%s 는 ì–´ëŠ í‚¤ì—ë„ bind ë˜ì–´ìžˆì§€ ì•ŠìŒ.\n"
+msgstr "%sì€(는) ì–´ë–¤ 키ì—ë„ ë°”ì¸ë”©í•˜ì§€ ì•ŠìŒ.\n"
#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
-msgstr "%s 는 다ìŒì„ 통해 í˜¸ì¶œë  ìˆ˜ ìžˆìŒ "
+msgstr "%sì€(는) 다ìŒì„ 통해 í˜¸ì¶œë  ìˆ˜ ìžˆìŒ "
#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
-msgstr "'%s': unbind í•  수 ì—†ìŒ"
+msgstr "`%s': ë°”ì¸ë”© í•´ì œ 불가"
#: builtins/break.def:77 builtins/break.def:119
msgid "loop count"
@@ -137,7 +134,7 @@ msgstr "반복 횟수"
#: builtins/break.def:139
msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "'for', 'while' ë˜ëŠ” 'until' 반복문ì—서만 ì˜ë¯¸ê°€ 있ìŒ"
+msgstr "'for', 'while', 'until' 반복문ì—서만 ì˜ë¯¸ 있ìŒ"
#: builtins/caller.def:136
msgid ""
@@ -150,27 +147,35 @@ msgid ""
" The value of EXPR indicates how many call frames to go back before the\n"
" current one; the top frame is frame 0."
msgstr ""
+"현재 하위루틴 í˜¸ì¶œì˜ ì»¨í…스트를 반환합니다.\n"
+" \n"
+" <표현ì‹>ì„ ì§€ì •í•˜ì§€ 않으면 \"$line $filename\"ì„ ë°˜í™˜í•©ë‹ˆë‹¤.\n"
+" <표현ì‹>ì„ ì§€ì •í•˜ë©´ \"$line $subroutine $filename\"ì„ ë°˜í™˜í•©ë‹ˆë‹¤.\n"
+" 추가 정보는 ìŠ¤íƒ ì¶”ì ì„ 제공할 ë•Œ 활용할 수 있습니다.\n"
+" \n"
+" <표현ì‹>ì˜ ê°’ì€ í˜„ìž¬ 호출 프레임ì—ì„œ 얼마나 뒤로 ëŒì•„가야 하는지를\n"
+" 나타냅니다. 최ìƒë‹¨ 호출 í”„ë ˆìž„ì€ í”„ë ˆìž„ 0번입니다."
#: builtins/cd.def:327
msgid "HOME not set"
-msgstr "HOME 설정ë˜ì§€ ì•ŠìŒ"
+msgstr "HOME 설정하지 ì•ŠìŒ"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "ì¸ìžê°€ 너무 많ìŒ"
#: builtins/cd.def:342
msgid "null directory"
-msgstr "null 디렉토리"
+msgstr "디렉터리 ê°’ì´ ë¹„ì–´ìžˆìŒ"
#: builtins/cd.def:353
msgid "OLDPWD not set"
-msgstr "OLDPWD 설정ë˜ì§€ ì•ŠìŒ"
+msgstr "OLDPWD 설정하지 ì•ŠìŒ"
#: builtins/common.c:96
#, c-format
msgid "line %d: "
-msgstr "%d 줄: "
+msgstr "행 %d번: "
#: builtins/common.c:134 error.c:264
#, c-format
@@ -182,7 +187,7 @@ msgstr "경고: "
msgid "%s: usage: "
msgstr "%s: 사용법: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: ì˜µì…˜ì— ì¸ìžê°€ 필요함"
@@ -190,243 +195,248 @@ msgstr "%s: ì˜µì…˜ì— ì¸ìžê°€ 필요함"
#: builtins/common.c:200
#, c-format
msgid "%s: numeric argument required"
-msgstr "%s: 숫ìžë¡œ ëœ ì¸ìžê°€ 필요함"
+msgstr "%s: ìˆ«ìž ì¸ìžê°€ 필요함"
#: builtins/common.c:207
#, c-format
msgid "%s: not found"
msgstr "%s: ì°¾ì„ ìˆ˜ ì—†ìŒ"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
-msgstr "%s: 유효하지 ì•Šì€ ì˜µì…˜"
+msgstr "%s: 부ì ì ˆí•œ 옵션"
#: builtins/common.c:223
#, c-format
msgid "%s: invalid option name"
-msgstr "%s: 유효하지 ì•Šì€ ì˜µì…˜ ì´ë¦„"
+msgstr "%s: 부ì ì ˆí•œ 옵션 ì´ë¦„"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
-msgstr "`%s': 유효한 ì‹ë³„ìžê°€ 아님"
+msgstr "`%s': ì ì ˆí•œ ì‹ë³„ìž ì•„ë‹˜"
#: builtins/common.c:240
msgid "invalid octal number"
-msgstr "유효하지 ì•Šì€ 8진수"
+msgstr "부ì ì ˆí•œ 8진수"
#: builtins/common.c:242
msgid "invalid hex number"
-msgstr "유효하지 ì•Šì€ 16진수"
+msgstr "부ì ì ˆí•œ 16진수"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
-msgstr "유효하지 ì•Šì€ ìˆ˜"
+msgstr "부ì ì ˆí•œ 숫ìž"
#: builtins/common.c:252
#, c-format
msgid "%s: invalid signal specification"
-msgstr "%s: 유효하지 ì•Šì€ ì‹ í˜¸ ì •ì˜"
+msgstr "%s: 부ì ì ˆí•œ ì‹œê·¸ë„ ì •ì˜"
#: builtins/common.c:259
#, c-format
msgid "`%s': not a pid or valid job spec"
-msgstr "'%s': pidê°€ 아니거나 유효한 job specì´ ì•„ë‹˜"
+msgstr "`%s': PIDê°€ 아니거나 ì ì ˆí•œ ìž‘ì—… 명세 ì—†ìŒ"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: ì½ê¸° ì „ìš© 변수임"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: 할당할 수 ì—†ìŒ"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
-msgstr "%s: %s가 범위를 벗어남"
+msgstr "%s: %sì´(ê°€) 범위를 벗어남"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "ì¸ìž"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
-msgstr "%s가 범위를 벗어남"
+msgstr "%sì´(ê°€) 범위를 벗어남"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
-msgstr "%s: 그러한 jobì´ ì—†ìŒ"
+msgstr "%s: 그런 ìž‘ì—…ì´ ì—†ìŒ"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
-msgstr "%s: job controlì´ ì—†ìŒ"
+msgstr "%s: ìž‘ì—… 컨트롤 ì—†ìŒ"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
-msgstr "job controlì´ ì—†ìŒ"
+msgstr "ìž‘ì—… 컨트롤 ì—†ìŒ"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: 제한ë¨"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "제한ë¨"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
-msgstr "%s: 쉘 ë‚´ìž¥ì´ ì•„ë‹˜"
+msgstr "%s: ì…¸ 내장 ëª…ë ¹ì´ ì•„ë‹˜"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "쓰기 오류: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "í„°ë¯¸ë„ ì†ì„± 설정 오류: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "í„°ë¯¸ë„ ì†ì„± ì½ê¸° 오류: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr "%s: 현재 디렉토리를 받아오는 ë° ì˜¤ë¥˜ ë°œìƒ: %s: %s\n"
+msgstr "%s: 현재 디렉터리 가져오는 중 오류 ë°œìƒ: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
-msgstr "%s: 모호한 job spec"
+msgstr "%s: 모호한 작업 명세"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
-msgstr "ì´ ë²„ì „ì—는 ë„움ë§ì´ ì—†ìŒ"
+msgstr "ì´ ë²„ì „ì—는 ë„움ë§ì´ 없습니다"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
-msgstr "%s: unsetí•  수 ì—†ìŒ: %sê°€ ì½ê¸° ì „ìš©ìž„"
+msgstr "%s: 설정 해제할 수 ì—†ìŒ: %sì´(ê°€) ì½ê¸° ì „ìš©ìž„"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
-msgstr "%s: unsetí•  수 ì—†ìŒ"
+msgstr "%s: 설정 해제할 수 ì—†ìŒ"
#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
-msgstr "%s: 유효하지 ì•Šì€ ì•¡ì…˜ ì´ë¦„"
+msgstr "%s: 부ì ì ˆí•œ ì•¡ì…˜ ì´ë¦„"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
-msgstr "%s: 완료 사양 ì—†ìŒ"
+msgstr "%s: 완성 명세 ì—†ìŒ"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "경고: -F ì˜µì…˜ì´ ì˜ˆìƒëŒ€ë¡œ ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있ìŒ"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "경고: -C ì˜µì…˜ì´ ì˜ˆìƒëŒ€ë¡œ ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있ìŒ"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
-msgstr "현재 완료 함수가 ì‹¤í–‰ì¤‘ì´ ì•„ë‹˜"
+msgstr "완성 함수를 현재 실행하고 있지 ì•ŠìŒ"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
-msgstr "함수ì—서만 ì‚¬ìš©ë  ìˆ˜ 있ìŒ"
+msgstr "함수ì—서만 사용할 수 있ìŒ"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "함수 êµ¬ì„±ì— `-f' ì˜µì…˜ì„ ì‚¬ìš©í•  수 ì—†ìŒ"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: ì½ê¸° ì „ìš© 함수"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: 참조 변수로 ë°°ì—´ì´ ì˜¬ 수 ì—†ìŒ"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
-msgstr "%s: ì´ë¦„ 참조 ë³€ìˆ˜ì˜ ìžê°€ 참조는 허용ë˜ì§€ ì•ŠìŒ"
+msgstr "%s: ì´ë¦„ 참조 ë³€ìˆ˜ì˜ ìžê°€ 참조를 허용하지 ì•ŠìŒ"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: 순환 ì´ë¦„ 참조"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
-msgstr "'%s': 유효하지 ì•Šì€ ì´ë¦„ 참조 변수 ì´ë¦„"
-
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "함수를 만들기 위해 '-f'를 사용할 수 ì—†ìŒ"
+msgstr "`%s': ì´ë¦„ ì°¸ì¡°ì˜ ë¶€ì ì ˆí•œ 변수 ì´ë¦„"
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: ì½ê¸° ì „ìš© 함수임"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: 따옴표를 ì´ìš©í•œ 복합 ë°°ì—´ í• ë‹¹ì€ í–¥í›„ ì œê±°ë  ì˜ˆì •ìž„"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
-msgstr "%s: ì´ ë°©ë²•ìœ¼ë¡œ ë°°ì—´ 변수를 파괴할 수 ì—†ìŒ"
+msgstr "%s: ì´ ë°©ë²•ìœ¼ë¡œ ë°°ì—´ 변수를 í•´ì²´í•  수 ì—†ìŒ"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
-msgstr "%s: 참조 ë°°ì—´ì„ ì¸ë±ìŠ¤ ë°°ì—´ë¡œ 변환할 수 ì—†ìŒ"
+msgstr "%s: 참조 ë°°ì—´ì„ ìƒ‰ì¸ ë°°ì—´ë¡œ 변환할 수 ì—†ìŒ"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: 따옴표를 ì´ìš©í•œ 복합 ë°°ì—´ í• ë‹¹ì€ í–¥í›„ 제거 예정"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
-msgstr "ë™ì  ë¡œë”©ì„ ì´ìš©í•  수 ì—†ìŒ"
+msgstr "ë™ì  불러오기 불가"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
-msgstr "공유 오브ì íŠ¸ %s를 ì—´ 수 ì—†ìŒ: %s"
+msgstr "%s 공유 ê°ì²´ë¥¼ ì—´ 수 ì—†ìŒ: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
-msgstr "공유 오브ì íŠ¸ %2$sì—ì„œ %1$s를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %3$s"
+msgstr "%2$s 공유 ê°ì²´ì—ì„œ %1$sì„(를) ì°¾ì„ ìˆ˜ ì—†ìŒ: %3$s"
-#: builtins/enable.def:388
-#, fuzzy, c-format
+#: builtins/enable.def:422
+#, c-format
msgid "%s: dynamic builtin already loaded"
-msgstr "%s: ë™ì ìœ¼ë¡œ 로드ë˜ì§€ ì•ŠìŒ"
+msgstr "%s: ë™ì  내장 ëª…ë ¹ì„ ì´ë¯¸ 불러왔습니다"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
-msgstr "%sì— ëŒ€í•œ 함수 로드가 실패 반환 (%d): 로드ë˜ì§€ ì•ŠìŒ"
+msgstr "%sì— ëŒ€í•œ 함수 불러오기 중 실패 반환 (%d): 불러오지 ì•ŠìŒ"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
-msgstr "%s: ë™ì ìœ¼ë¡œ 로드ë˜ì§€ ì•ŠìŒ"
+msgstr "%s: ë™ì ìœ¼ë¡œ 불러오지 ì•ŠìŒ"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: 삭제할 수 ì—†ìŒ: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: 디렉터리임"
@@ -434,17 +444,17 @@ msgstr "%s: 디렉터리임"
#: builtins/evalfile.c:144
#, c-format
msgid "%s: not a regular file"
-msgstr "%s: ì¼ë°˜ì ì¸ 파ì¼ì´ 아님"
+msgstr "%s: ì¼ë°˜ 파ì¼ì´ 아님"
#: builtins/evalfile.c:153
#, c-format
msgid "%s: file is too large"
msgstr "%s: 파ì¼ì´ 너무 í¼"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
-msgstr "%s: ë°”ì´ë„ˆë¦¬ 파ì¼ì„ 실행할 수 ì—†ìŒ"
+msgstr "%s: ì´ì§„ 파ì¼ì„ 실행할 수 ì—†ìŒ"
#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
@@ -458,26 +468,26 @@ msgstr "로그아웃\n"
#: builtins/exit.def:89
msgid "not login shell: use `exit'"
-msgstr "ë¡œê·¸ì¸ ì‰˜ì´ ì•„ë‹˜: 'exit'를 사용하세요"
+msgstr "ë¡œê·¸ì¸ ì…¸ì´ ì•„ë‹˜: `exit'를 사용하십시오"
#: builtins/exit.def:121
#, c-format
msgid "There are stopped jobs.\n"
-msgstr "ì •ì§€ëœ jobì´ ìžˆìŠµë‹ˆë‹¤.\n"
+msgstr "멈춘 ìž‘ì—…ì´ ìžˆìŠµë‹ˆë‹¤.\n"
#: builtins/exit.def:123
#, c-format
msgid "There are running jobs.\n"
-msgstr "ì‹¤í–‰ì¤‘ì¸ jobì´ ìžˆìŠµë‹ˆë‹¤.\n"
+msgstr "실행 ì¤‘ì¸ ìž‘ì—…ì´ ìžˆìŠµë‹ˆë‹¤.\n"
#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
-msgstr "명령어를 ì°¾ì„ ìˆ˜ ì—†ìŒ"
+msgstr "ëª…ë ¹ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ"
#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
#: builtins/fc.def:412
msgid "history specification"
-msgstr "히스토리 사양"
+msgstr "ê¸°ë¡ ëª…ì„¸"
#: builtins/fc.def:444
#, c-format
@@ -491,7 +501,7 @@ msgstr "현재"
#: builtins/fg_bg.def:161
#, c-format
msgid "job %d started without job control"
-msgstr "job %dê°€ job control ì—†ì´ ì‹œìž‘í•¨"
+msgstr "ìž‘ì—… %dë²ˆì´ ìž‘ì—… 컨트롤 ì—†ì´ ì‹œìž‘í–ˆìŠµë‹ˆë‹¤"
#: builtins/getopt.c:110
#, c-format
@@ -501,7 +511,7 @@ msgstr "%s: ìž˜ëª»ëœ ì˜µì…˜ -- %c\n"
#: builtins/getopt.c:111
#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: ì˜µì…˜ì´ ì¸ìžë¥¼ 필요로 함 -- %c\n"
+msgstr "%s: ì˜µì…˜ì— ì¸ìžê°€ 필요함 -- %c\n"
#: builtins/hash.def:91
msgid "hashing disabled"
@@ -520,28 +530,27 @@ msgstr "hits\tcommand\n"
#: builtins/help.def:133
msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
-msgstr[0] "ë‹¤ìŒ í‚¤ì›Œë“œì— ì¼ì¹˜í•˜ëŠ” 쉘 명령어 '"
+msgstr[0] "ë‹¤ìŒ í‚¤ì›Œë“œì— ì¼ì¹˜í•˜ëŠ” ì…¸ 명령어 '"
#: builtins/help.def:135
msgid ""
"'\n"
"\n"
msgstr ""
+"'\n"
+"\n"
#: builtins/help.def:185
#, c-format
-msgid ""
-"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-"'%s'ì— í•´ë‹¹í•˜ëŠ” ë„ì›€ë§ ì£¼ì œê°€ 없습니다. 'man -k %s' ë˜ëŠ” 'info %s'를 사용해 "
-"보세요."
+msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr "`%s'ì— í•´ë‹¹í•˜ëŠ” ë„ì›€ë§ ì£¼ì œê°€ 없습니다. `man -k %s' ë˜ëŠ” `info %s' ëª…ë ¹ì„ ìž…ë ¥í•˜ì‹­ì‹œì˜¤."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: ì—´ 수 ì—†ìŒ: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -552,34 +561,32 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
-"ì´ ì‰˜ ëª…ë ¹ì–´ë“¤ì€ ë‚´ë¶€ì ìœ¼ë¡œ ì •ì˜ë˜ì–´ 있습니다. 목ë¡ì„ 보려면 `help' 를 ìž…ë ¥"
-"하세요.\n"
-"`help name' ì„ ìž…ë ¥í•˜ë©´ 함수 `name' ì— ëŒ€í•œ 정보를 ë” í™•ì¸í•  수 있습니다.\n"
-"ì‰˜ì— ëŒ€í•œ ì¼ë°˜ì ì¸ 정보를 ë” í™•ì¸í•˜ë ¤ë©´ `info bash' 를 사용하세요.\n"
-"ì´ ëª©ë¡ì— 없는 ëª…ë ¹ì–´ì— ëŒ€í•´ ë” ì•Œì•„ë³´ë ¤ë©´ `man -k' ë˜ëŠ” `info' 를 사용하세"
-"ìš”.\n"
+"ì´ ì…¸ 명령어는 ë‚´ë¶€ì— ì§€ì •í–ˆìŠµë‹ˆë‹¤. 목ë¡ì„ 보려면 `help'를 입력하십시오.\n"
+"`help name'ì„ ìž…ë ¥í•˜ë©´ 함수 `name'ì˜ ì •ë³´ë¥¼ ë” í™•ì¸í•  수 있습니다.\n"
+"ì…¸ì— ëŒ€í•œ ì¼ë°˜ì ì¸ 정보를 ë” í™•ì¸í•˜ë ¤ë©´ `info bash'를 사용하십시오.\n"
+"ì´ ëª©ë¡ì— 없는 ëª…ë ¹ì–´ì— ëŒ€í•´ ë” ì•Œì•„ë³´ë ¤ë©´ `man -k' ë˜ëŠ” `info'를 사용하십시오.\n"
"\n"
-"명령어 ì´ë¦„ 다ìŒì˜ 별 (*) ì€ í•´ë‹¹ 명령어가 비활성화 ë˜ì—ˆìŒì„ ì˜ë¯¸í•©ë‹ˆë‹¤.\n"
+"명령어 ì´ë¦„ 다ìŒì˜ 별(*) 표시는 해당 ëª…ë ¹ì–´ì˜ ë¹„í™œì„± ìƒíƒœì„ ì˜ë¯¸í•©ë‹ˆë‹¤.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "-anrw를 í•œ ê°œ ì´ìƒ 사용할 수 ì—†ìŒ"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
-msgstr "히스토리 위치"
+msgstr "ê¸°ë¡ ìœ„ì¹˜"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
-msgstr "%s: 유효하지 ì•Šì€ íƒ€ìž„ìŠ¤íƒ¬í”„"
+msgstr "%s: 부ì ì ˆí•œ 타임스탬프"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
-msgstr "%s: 히스토리 확장 실패"
+msgstr "%s: ê¸°ë¡ í™•ìž¥ 실패"
#: builtins/inlib.def:71
#, c-format
@@ -588,113 +595,113 @@ msgstr "%s: inlib 실패"
#: builtins/jobs.def:109
msgid "no other options allowed with `-x'"
-msgstr "'-x'와 다른 ì˜µì…˜ë“¤ì€ ê°™ì´ ì‚¬ìš©í•  수 ì—†ìŒ"
+msgstr "`-x'와 다른 ì˜µì…˜ì„ ê°™ì´ ì‚¬ìš©í•  수 ì—†ìŒ"
#: builtins/kill.def:211
#, c-format
msgid "%s: arguments must be process or job IDs"
-msgstr "%s: ì¸ìžëŠ” 반드시 프로세스 ë˜ëŠ” job IDì´ì–´ì•¼ 함"
+msgstr "%s: ì¸ìžëŠ” 반드시 프로세스 ë˜ëŠ” ìž‘ì—… IDì´ì–´ì•¼ 함"
#: builtins/kill.def:274
msgid "Unknown error"
msgstr "알 수 없는 오류"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
-msgstr "표현ì‹ì„ 예ìƒí•¨"
+msgstr "표현ì‹ì´ 필요합니다"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
-msgstr "%s: ì¸ë±ìŠ¤ ë°°ì—´ì´ ì•„ë‹˜"
+msgstr "%s: ìƒ‰ì¸ ë°°ì—´ì´ ì•„ë‹˜"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
-msgstr "%s: 유효하지 ì•Šì€ íŒŒì¼ ë””ìŠ¤í¬ë¦½í„° 명세"
+msgstr "%s: 부ì ì ˆí•œ íŒŒì¼ ì„œìˆ ìž ëª…ì„¸"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
-msgstr "%d: 유효하지 ì•Šì€ íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°: %s"
+msgstr "%d: 부ì ì ˆí•œ íŒŒì¼ ì„œìˆ ìž: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
-msgstr "%s: 유효하지 ì•Šì€ ì¤„ 수"
+msgstr "%s: 부ì ì ˆí•œ 줄 수"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
-msgstr "%s: 유효하지 ì•Šì€ ë°°ì—´ì˜ ì‹œìž‘"
+msgstr "%s: 부ì ì ˆí•œ ë°°ì—´ì˜ ì‹œìž‘"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
-msgstr "%s: 유효하지 ì•Šì€ ì½œë°± ì–‘ìž"
+msgstr "%s: 부ì ì ˆí•œ 콜백 ì–‘ìž"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "빈 ë°°ì—´ 변수 ì´ë¦„"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "ë°°ì—´ 변수 지ì›ì´ 필요함"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
-msgstr "'%s': ì„œì‹ ë¬¸ìž ì—†ìŒ"
+msgstr "`%s': ì„œì‹ ë¬¸ìž ì—†ìŒ"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
-msgstr "'%c': 유효하지 ì•Šì€ ì‹œê°„ í¬ë§· 사양"
+msgstr "`%c': 부ì ì ˆí•œ 시간 í¬ë§· 사양"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
-msgstr "'%c': 유효하지 ì•Šì€ ì„œì‹ ë¬¸ìž"
+msgstr "`%c': 부ì ì ˆí•œ ì„œì‹ ë¬¸ìž"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "경고: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
-msgstr "í˜•ì‹ íŒŒì‹± 문제: %s"
+msgstr "í˜•ì‹ í•´ì„ ë¬¸ì œ: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "\\xì— 16진수 ìˆ«ìž ì—†ìŒ"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
-msgstr "\\%cì— í•´ë‹¹í•˜ëŠ” 유니코드 ë¬¸ìž ì—†ìŒ"
+msgstr "\\%cì— ìœ ë‹ˆì½”ë“œ ë¬¸ìž ì—†ìŒ"
#: builtins/pushd.def:199
msgid "no other directory"
-msgstr "다른 디렉토리 ì—†ìŒ"
+msgstr "다른 디렉터리 ì—†ìŒ"
#: builtins/pushd.def:360
#, c-format
msgid "%s: invalid argument"
-msgstr "%s: 유효하지 ì•Šì€ ì¸ìž"
+msgstr "%s: 부ì ì ˆí•œ ì¸ìž"
#: builtins/pushd.def:480
msgid "<no current directory>"
-msgstr "<현재 디렉토리 ì—†ìŒ>"
+msgstr "<현재 디렉터리 ì—†ìŒ>"
#: builtins/pushd.def:524
msgid "directory stack empty"
-msgstr "디렉토리 스íƒì´ 비어있ìŒ"
+msgstr "디렉터리 스íƒì´ 비어있ìŒ"
#: builtins/pushd.def:526
msgid "directory stack index"
-msgstr "디렉토리 ìŠ¤íƒ ì¸ë±ìŠ¤"
+msgstr "디렉터리 ìŠ¤íƒ ìƒ‰ì¸"
#: builtins/pushd.def:701
msgid ""
@@ -711,35 +718,30 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
-"현재 ê¸°ì–µëœ ë””ë ‰í† ë¦¬ì˜ ëª©ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 디렉토리들ì€\n"
-" `pushd' ëª…ë ¹ì„ í†µí•´ 목ë¡ì— 경로를 저장할 수 있고; 'popd' \n"
-" ëª…ë ¹ì„ í†µí•´ 거슬러 올ë¼ê°ˆ 수 있습니다.\n"
+"현재 기억한 ë””ë ‰í„°ë¦¬ì˜ ëª©ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 디렉터리는\n"
+" `pushd' 명령으로 목ë¡ì— 경로를 저장할 수 있고 'popd' \n"
+" 명령으로 거슬러 올ë¼ê°ˆ 수 있습니다.\n"
" \n"
" 옵션:\n"
-" -c\tì›ì†Œë¥¼ 전부 ì‚­ì œí•¨ìœ¼ë¡œì¨ ë””ë ‰í† ë¦¬ 스íƒì„ 초기화합니다\n"
-" -l\t홈 디렉토리까지 ~ë¡œ ì¶•ì•½ëœ ìƒëŒ€ê²½ë¡œë¥¼ 표시하지 않습니다\n"
-" -p\tí•œ ì¤„ì— í•˜ë‚˜ì”© 디렉토리 스íƒì„ 표시합니다\n"
-" -v\tí•œ ì¤„ì— í•˜ë‚˜ì”© 스íƒì˜ 위치와 함께 디렉토리 스íƒì„ 표시합니다\n"
+" -c\tì›ì†Œë¥¼ 전부 삭제하여 디렉터리 스íƒì„ 초기화합니다\n"
+" -l\t홈 디렉터리까지 ~ 축약 ìƒëŒ€ê²½ë¡œë¥¼ 표시하지 않습니다\n"
+" -p\tí•œ ì¤„ì— í•˜ë‚˜ì”© 디렉터리 스íƒì„ 표시합니다\n"
+" -v\tí•œ ì¤„ì— í•˜ë‚˜ì”© 스íƒì˜ 위치와 디렉터리 스íƒì„ 표시합니다\n"
" \n"
" ì¸ìž:\n"
-" +N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 왼쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆ"
-"다.\n"
-" \t세는 수는 0부터 시작합니다.\n"
+" +N\tì¸ìž ì—†ì´ ì‹¤í–‰í•  ë•Œ dirsì—ì„œ 보여주는 목ë¡ì˜ 왼쪽부터 N번째\n"
+" \tí•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 세는 수는 0부터 시작합니다.\n"
" \n"
-" -N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 오른쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤"
-"니다.\n"
-"\t세는 수는 0부터 시작합니다."
+" -N\tì¸ìž ì—†ì´ ì‹¤í–‰í•  ë•Œ dirsì—ì„œ 보여주는 목ë¡ì˜ 오른쪽부터 N번째\n"
+" \t í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 세는 수는 0부터 시작합니다."
#: builtins/pushd.def:723
-#, fuzzy
msgid ""
"Adds a directory to the top of the directory stack, or rotates\n"
" the stack, making the new top of the stack the current working\n"
@@ -763,30 +765,27 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"디렉토리 스íƒì˜ 최ìƒìœ„ì— ë””ë ‰í† ë¦¬ë¥¼ 추가하거나 스íƒì„ 회전\n"
-" 하거나, 현재 ìž‘ì—…ì¤‘ì¸ ë””ë ‰í† ë¦¬ì—ì„œ 스íƒì˜ 새 최ìƒìœ„를 \n"
-" 만듭니다. ì¸ìžê°€ 없다면 ìƒìœ„ ë‘ ë””ë ‰í† ë¦¬ë¥¼ êµí™˜í•©ë‹ˆë‹¤.\n"
+"디렉터리 스íƒì˜ 최ìƒìœ„ì— ë””ë ‰í„°ë¦¬ë¥¼ 추가하거나 스íƒì„ 회전\n"
+" 하거나, 현재 ìž‘ì—…ì¤‘ì¸ ë””ë ‰í„°ë¦¬ì—ì„œ 스íƒì˜ 새 최ìƒìœ„를 \n"
+" 만듭니다. ì¸ìžê°€ 없다면 ìƒìœ„ ë‘ ë””ë ‰í„°ë¦¬ë¥¼ êµí™˜í•©ë‹ˆë‹¤.\n"
" \n"
" 옵션:\n"
-" -n\tSuppresses the normal change of directory when adding\n"
-" \tdirectories to the stack, so only the stack is manipulated.\n"
+" -n\t스íƒì— 디렉터리를 추가할 ë•Œ 디렉터리 ì¼ë°˜ 변경 ë™ìž‘ì„\n"
+" \t억제해서 스íƒë§Œ 바뀌게 합니다.\n"
" \n"
-" Arguments:\n"
-" +N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the left of the list shown by `dirs', starting with\n"
-" \tzero) is at the top.\n"
+" ì¸ìž:\n"
+" +N\tN번째 디렉터리가 최ìƒë‹¨ì´ ë˜ë„ë¡(0부터 시작해서\n"
+" \t`dirs' 내장 명령 ëª©ë¡ ì™¼ìª½ë¶€í„° 갯수를 ì…ˆ) 스íƒì„ 뒤집습니다.\n"
" \n"
-" -N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the right of the list shown by `dirs', starting with\n"
-" \tzero) is at the top.\n"
+" -N\tN 번째 디렉터리가 최ìƒë‹¨ì´ ë˜ë„ë¡(0부터 시작해서\n"
+" \t`dirs' 내장 명령 ëª©ë¡ ì˜¤ë¥¸ìª½ë¶€í„° 갯수를 ì…ˆ) 스íƒì„ 뒤집습니다.\n"
" \n"
-" dir\tAdds DIR to the directory stack at the top, making it the\n"
-" \tnew current working directory.\n"
+" dir\t새 현재 ìž‘ì—… 디렉터리로 만들 DIRì„ ìƒë‹¨ 디렉터리\n"
+" \t 스íƒì— 추가합니다.\n"
" \n"
-" `dirs' ë‚´ìž¥ì€ ë””ë ‰í† ë¦¬ 스íƒì„ ë³´ì—¬ì¤ë‹ˆë‹¤."
+" `dirs' 내장 ëª…ë ¹ì€ ë””ë ‰í„°ë¦¬ 스íƒì„ ë³´ì—¬ì¤ë‹ˆë‹¤."
#: builtins/pushd.def:748
-#, fuzzy
msgid ""
"Removes entries from the directory stack. With no arguments, removes\n"
" the top directory from the stack, and changes to the new top directory.\n"
@@ -806,43 +805,43 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"디렉토리 스íƒì—ì„œ í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤. 주어진 ì¸ìžê°€ ì—†ì„ ê²½ìš°\n"
-" 최ìƒìœ„ 디렉토리를 스íƒì—ì„œ 제거하고 새 최ìƒìœ„ 디렉토리로 변경합니다.\n"
+"디렉터리 스íƒì—ì„œ í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤. 주어진 ì¸ìžê°€ ì—†ì„ ê²½ìš°\n"
+" 최ìƒìœ„ 디렉터리를 스íƒì—ì„œ 제거하고 새 최ìƒìœ„ 디렉터리로 변경합니다.\n"
" \n"
" 옵션:\n"
-" -n\tSuppresses the normal change of directory when removing\n"
-" \tdirectories from the stack, so only the stack is manipulated.\n"
+" -n\t스íƒì— 디렉터리를 제거할 ë•Œ 디렉터리 ì¼ë°˜ 변경 ë™ìž‘ì„\n"
+" \t억제해서 스íƒë§Œ 바뀌게 합니다.\n"
" \n"
-" Arguments:\n"
-" +N\tRemoves the Nth entry counting from the left of the list\n"
-" \tshown by `dirs', starting with zero. For example: `popd +0'\n"
-" \tremoves the first directory, `popd +1' the second.\n"
+" ì¸ìž:\n"
+" +N\t0부터 시작해서 `dirs' 내장 명령 ëª©ë¡ ì™¼ìª½ë¶€í„° 갯수를 세어\n"
+" \tN번째 í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤. 예: `popd +0'는 첫번째 디렉터리를, \n"
+" \t`popd +1'는 ë‘번째 디렉터리를 제거합니다.\n"
" \n"
-" -N\tRemoves the Nth entry counting from the right of the list\n"
-" \tshown by `dirs', starting with zero. For example: `popd -0'\n"
-" \tremoves the last directory, `popd -1' the next to last.\n"
+" -N\t0부터 시작해서 `dirs' 내장 명령 ëª©ë¡ ì˜¤ë¥¸ìª½ë¶€í„° 갯수를 세어\n"
+" \tN번째 í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤. 예: `popd -0'는 마지막 디렉터리를, \n"
+" \t`popd -1'는 ë§ˆì§€ë§‰ì˜ ê·¸ ì „ 디렉터리를 제거합니다.\n"
" \n"
-" The `dirs' builtin displays the directory stack."
+" `dirs' 내장 ëª…ë ¹ì€ ë””ë ‰í„°ë¦¬ 스íƒì„ 나타냅니다."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
-msgstr "%s: 유효하지 ì•Šì€ íƒ€ìž„ì•„ì›ƒ ì •ì˜"
+msgstr "%s: 부ì ì ˆí•œ 타임아웃 ì •ì˜"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "ì½ê¸° 오류: %d: %s"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
-msgstr "함수 ë˜ëŠ” ì†ŒìŠ¤ëœ ìŠ¤í¬ë¦½íŠ¸ì—서만 'return' í•  수 있ìŒ"
+msgstr "함수 ë˜ëŠ” ì›ë³¸ 참조 스í¬ë¦½íŠ¸ì—서만 'return' í•  수 있ìŒ"
#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
-msgstr "함수와 변수를 ë™ì‹œì— unsetí•  수 ì—†ìŒ"
+msgstr "함수와 변수를 ë™ì‹œì— 설정 해제할 수 ì—†ìŒ"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: 배열 변수가 아님"
@@ -855,20 +854,20 @@ msgstr "%s: 함수가 아님"
#: builtins/setattr.def:194
#, c-format
msgid "%s: cannot export"
-msgstr "%s: exportí•  수 ì—†ìŒ"
+msgstr "%s: 환경으로 내보낼 수 ì—†ìŒ"
#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "시프트 횟수"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
-msgstr "쉘 ì˜µì…˜ì„ ë™ì‹œì— set 하고 unset í•  수 ì—†ìŒ"
+msgstr "ì…¸ ì˜µì…˜ì„ ë™ì‹œì— 설정 ë° ì„¤ì • 해제할 수 ì—†ìŒ"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
-msgstr "%s: 유효하지 ì•Šì€ ì‰˜ 옵션 ì´ë¦„"
+msgstr "%s: 부ì ì ˆí•œ ì…¸ 옵션 ì´ë¦„"
#: builtins/source.def:128
msgid "filename argument required"
@@ -885,66 +884,66 @@ msgstr "ì¼ì‹œ 정지할 수 ì—†ìŒ"
#: builtins/suspend.def:112
msgid "cannot suspend a login shell"
-msgstr "ë¡œê·¸ì¸ ì‰˜ì„ ì¼ì‹œ 정지할 수 ì—†ìŒ"
+msgstr "ë¡œê·¸ì¸ ì…¸ì„ ì¼ì‹œ 정지할 수 ì—†ìŒ"
#: builtins/type.def:235
#, c-format
msgid "%s is aliased to `%s'\n"
-msgstr "%s는 '%s'ì˜ ë³„ì¹­ìž„\n"
+msgstr "%sì€(는) `%s'ì˜ ë³„ì¹­ìž„\n"
#: builtins/type.def:256
#, c-format
msgid "%s is a shell keyword\n"
-msgstr "%s 는 쉘 키워드임\n"
+msgstr "%sì€(는) ì…¸ 키워드임\n"
#: builtins/type.def:275
#, c-format
msgid "%s is a function\n"
-msgstr "%s 는 함수임\n"
+msgstr "%sì€(는) 함수임\n"
#: builtins/type.def:299
#, c-format
msgid "%s is a special shell builtin\n"
-msgstr "%s 는 특수한 쉘 내장임\n"
+msgstr "%sì€(는) 특수 ì…¸ 내장 명령임\n"
#: builtins/type.def:301
#, c-format
msgid "%s is a shell builtin\n"
-msgstr "%s 는 쉘 내장임\n"
+msgstr "%sì€(는) ì…¸ 내장임\n"
#: builtins/type.def:323 builtins/type.def:408
#, c-format
msgid "%s is %s\n"
-msgstr "%s 는 %s 임\n"
+msgstr "%sì€(는) %s ìž„\n"
#: builtins/type.def:343
#, c-format
msgid "%s is hashed (%s)\n"
-msgstr "%s 는 í•´ì‹œë¨ (%s)\n"
+msgstr "%sì€(는) í•´ì‹œë¨ (%s)\n"
#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
-msgstr "%s: 유효하지 ì•Šì€ ì œí•œ ì¸ìž"
+msgstr "%s: 부ì ì ˆí•œ 제한 ì¸ìž"
#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
-msgstr "'%c': ìž˜ëª»ëœ ëª…ë ¹ì–´"
+msgstr "`%c': ìž˜ëª»ëœ ëª…ë ¹ì–´"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: ì œí•œì„ ì½ì„ 수 ì—†ìŒ: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "제한"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
-msgstr "%s: ì œí•œì„ ë³€ê²½í•  수 ì—†ìŒ: %s"
+msgstr "%s: ì œí•œì„ ë°”ê¿€ 수 ì—†ìŒ: %s"
#: builtins/umask.def:115
msgid "octal number"
@@ -953,14 +952,14 @@ msgstr "8진수"
#: builtins/umask.def:232
#, c-format
msgid "`%c': invalid symbolic mode operator"
-msgstr "'%c': 유효하지 ì•Šì€ ì‹¬ë³¼ë¦­ 모드 ì—°ì‚°ìž"
+msgstr "`%c': 부ì ì ˆí•œ 심볼릭 모드 ì—°ì‚°ìž"
#: builtins/umask.def:287
#, c-format
msgid "`%c': invalid symbolic mode character"
-msgstr "'%c': 유효하지 ì•Šì€ ì‹¬ë³¼ë¦­ 모드 문ìž"
+msgstr "`%c': 부ì ì ˆí•œ 심볼릭 모드 문ìž"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " 줄 "
@@ -980,359 +979,368 @@ msgstr "취소중..."
msgid "INFORM: "
msgstr "ì •ë³´: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "디버깅 경고: "
+
+#: error.c:488
msgid "unknown command error"
-msgstr "알 수 없는 명령어 오류"
+msgstr "알 수 없는 명령 오류"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
-msgstr "ìž˜ëª»ëœ ëª…ë ¹ì–´ 타입"
+msgstr "ìž˜ëª»ëœ ëª…ë ¹ 형ì‹"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "ìž˜ëª»ëœ ì»¤ë„¥í„°"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "ìž˜ëª»ëœ ì í”„"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
-msgstr "%s: í•´ì œëœ ë³€ìˆ˜"
+msgstr "%s: ë°”ì¸ë”© 해제한 변수"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aìž…ë ¥ 대기중 시간 초과: ìžë™ìœ¼ë¡œ 로그아웃\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
-msgstr "표준 ìž…ë ¥ì„ /dev/nullì—ì„œ 리다ì´ë ‰íŠ¸ í•  수 ì—†ìŒ: %s"
+msgstr "표준 ìž…ë ¥ì„ /dev/nullì—ì„œ 방향재지정 처리할 수 ì—†ìŒ: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr "TIMEFORMAT: `%c': 유효하지 ì•Šì€ ì„œì‹ ë¬¸ìž"
+msgstr "TIMEFORMAT: `%c': 부ì ì ˆí•œ ì„œì‹ ë¬¸ìž"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] 가 여전히 존재"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "파ì´í”„ 오류"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: 최대 eval 중첩 레벨 초과 (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: 최대 소스 중첩 레벨 초과 (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: 최대 함수 중첩 레벨 초과 (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: 제한ë¨: 명령 ì´ë¦„ì— '/'를 지정할 수 ì—†ìŒ"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: 명령어를 ì°¾ì„ ìˆ˜ ì—†ìŒ"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: 실행할 수 ì—†ìŒ: 필요한 파ì¼ì´ 없습니다"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: ìž˜ëª»ëœ ì¸í„°í”„리터"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: ì´ì§„ 파ì¼ì„ 실행할 수 ì—†ìŒ: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
-msgstr "'%s': 특수한 내장 명령임"
+msgstr "`%s': 특수한 내장 명령임"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
-msgstr "fd %d를 fd %dë¡œ 복제할 수 ì—†ìŒ"
+msgstr "íŒŒì¼ ì„œìˆ ìž %dë²ˆì„ íŒŒì¼ ì„œìˆ ìž %d번으로 복제할 수 ì—†ìŒ"
#: expr.c:263
msgid "expression recursion level exceeded"
-msgstr "í‘œí˜„ì‹ ìž¬ê·€ 레벨 초과ë¨"
+msgstr "í‘œí˜„ì‹ ìž¬ê·€ 레벨 초과"
#: expr.c:291
msgid "recursion stack underflow"
msgstr "재귀 ìŠ¤íƒ ì–¸ë”플로우"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "í‘œí˜„ì‹ ë¬¸ë²• 오류"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
-msgstr "변수가 ì•„ë‹Œ ê²ƒì— í• ë‹¹ì„ ì‹œë„함"
+msgstr "비 ë³€ìˆ˜ì— í• ë‹¹ ì‹œë„"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "변수 할당 문법 오류"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "0으로 나눔"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "버그: ìž˜ëª»ëœ í‘œí˜„ì‹ í† í°"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
-msgstr "ì¡°ê±´ë¬¸ì— ':' 예ìƒí•¨"
+msgstr "ì¡°ê±´ë¬¸ì— ':' 필요함"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "지수가 0보다 ìž‘ìŒ"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "전위 ì¦ê°€ ë˜ëŠ” 후위 ê°ì†Œ í›„ì— ì‹ë³„ìžë¥¼ 예ìƒí•¨"
+msgstr "전위 ì¦ê°€ ë˜ëŠ” 후위 ê°ì†Œ í›„ì— ì‹ë³„ìžê°€ 필요함"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "')' ë¹ ì§"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
-msgstr "문법 오류: í”¼ì—°ì‚°ìž ì˜ˆìƒí•¨"
+msgstr "문법 오류: í”¼ì—°ì‚°ìž í•„ìš”í•¨"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
-msgstr "문법 오류: 유효하지 ì•Šì€ ì‚°ìˆ  ì—°ì‚°ìž"
+msgstr "문법 오류: 부ì ì ˆí•œ 산술 ì—°ì‚°ìž"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (오류 토í°ì€ \"%s\" ìž„)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
-msgstr "유효하지 ì•Šì€ ì§„ë²•"
+msgstr "부ì ì ˆí•œ 진법"
-#: expr.c:1582
-#, fuzzy
+#: expr.c:1587
msgid "invalid integer constant"
-msgstr "%s: 유효하지 ì•Šì€ ì¤„ 수"
+msgstr "부ì ì ˆí•œ 정수 ìƒìˆ˜"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "해당 진법ì—ì„œ 표현할 수 없는 ê°’"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: í‘œí˜„ì‹ ì˜¤ë¥˜\n"
#: general.c:70
msgid "getcwd: cannot access parent directories"
-msgstr "getcwd: 부모 ë””ë ‰í„°ë¦¬ì— ì ‘ê·¼í•  수 ì—†ìŒ"
+msgstr "getcwd: ìƒìœ„ ë””ë ‰í„°ë¦¬ì— ì ‘ê·¼í•  수 ì—†ìŒ"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
-msgstr "fd %dì— ëŒ€í•´ nodelay 모드를 재설정 í•  수 ì—†ìŒ"
+msgstr "íŒŒì¼ ì„œìˆ ìž %dë²ˆì— nodelay 모드를 초기화할 수 ì—†ìŒ"
#: input.c:266
#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "fd %dì—ì„œ bash ìž…ë ¥ì„ ìœ„í•œ 새 íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°ë¥¼ 할당할 수 ì—†ìŒ"
+msgstr "íŒŒì¼ ì„œìˆ ìž %d번ì—ì„œ bash 입력용 새 íŒŒì¼ ì„œìˆ ìžë¥¼ 할당할 수 ì—†ìŒ"
#: input.c:274
#, c-format
msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "save_bash_input: 새로운 fd %d를 위한 버í¼ê°€ ì´ë¯¸ 존재함"
+msgstr "save_bash_input: 새 íŒŒì¼ ì„œìˆ ìž %dë²ˆì˜ ë²„í¼ê°€ ì´ë¯¸ 존재함"
#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
-msgstr "í¬í¬ëœ pid %dê°€ ì‹¤í–‰ì¤‘ì¸ job %dì— ë‚˜íƒ€ë‚¨"
+msgstr "í¬í¬í•œ PID %dë²ˆì´ ì‹¤í–‰ì¤‘ì¸ ìž‘ì—… %dì— ë‚˜íƒ€ë‚¨"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
-msgstr "프로세스 그룹 %2$ldì˜ ì •ì§€ëœ ìž‘ì—… %1$d 를 삭제중"
+msgstr "프로세스 그룹 %2$ldë²ˆì˜ ë©ˆì¶˜ ìž‘ì—… %1$dë²ˆì„ ì‚­ì œì¤‘"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr "add_process: pid %5ld (%s) ê°€ í˜„ìž¬ë„ ì‚´ì•„ìžˆë‹¤ê³  표시ë¨"
+msgstr "add_process: pid %5ld (%s)ì´(ê°€) 여전히 살아있다고 나타남"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: 그런 pidê°€ ì—†ìŒ"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
-msgstr "신호 %d"
+msgstr "ì‹œê·¸ë„ %d번"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "완료"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "멈춤"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "멈춤(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "실행중"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "완료(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "ë‚˜ê° %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "ì•Œ 수 없는 ìƒíƒœ"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(코어 ë¤í”„ë¨) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
-msgstr "child setpgid (%ld ì—ì„œ %ld ë¡œ)"
+msgstr "child setpgid (%ldì—ì„œ %ld(으)ë¡œ)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
-msgstr "wait: pid %ld는 ì´ ì‰˜ì˜ ìžì‹ì´ 아님"
+msgstr "wait: pid %ldë²ˆì€ ì´ ì…¸ì˜ ìžì‹ì´ 아님"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
-msgstr "wait_for: 프로세스 %ldì— ëŒ€í•œ ê¸°ë¡ ì—†ìŒ"
+msgstr "wait_for: 프로세스 %ldë²ˆì˜ ê¸°ë¡ ì—†ìŒ"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
-msgstr "wait_for_job: job %d ì€ ì •ì§€ë¨"
+msgstr "wait_for_job: ìž‘ì—… %dë²ˆì´ ë©ˆì¶¤"
-#: jobs.c:3564
-#, fuzzy, c-format
+#: jobs.c:3551
+#, c-format
msgid "%s: no current jobs"
-msgstr "%s: 그러한 jobì´ ì—†ìŒ"
+msgstr "%s: 현재 ìž‘ì—…ì´ ì—†ìŒ"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: ìž‘ì—…ì´ ì¢…ë£Œë¨"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
-msgstr "%s: job %d는 ì´ë¯¸ 백그ë¼ìš´ë“œì— 있ìŒ"
+msgstr "%s: ìž‘ì—… %dë²ˆì€ ì´ë¯¸ 백그ë¼ìš´ë“œì— 있ìŒ"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr "waitchld: ì •ì˜ë˜ì§€ ì•Šì€ ë¸”ë¡ì„ 피하기 위해 WNOHANG를 켜는 중"
+msgstr "waitchld: 미지정 차단 ë™ìž‘ 회피 목ì ìœ¼ë¡œ WNOHANG를 켜는 중"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: 줄 %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (코어 ë¤í”„ë¨)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd now: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp 실패"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: 백그ë¼ìš´ë“œì— job control ì—†ìŒ"
+msgstr "initialize_job_control: 백그ë¼ìš´ë“œì— ìž‘ì—… 컨트롤 ì—†ìŒ"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
-msgstr "initialize_job_control: line discipline"
+msgstr "initialize_job_control: ë¼ì¸ 제어"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
-msgstr "터미털 프로세스 그룹 (%d)ì„ ì„¤ì •í•  수 ì—†ìŒ"
+msgstr "터미털 프로세스 그룹(%d)ì„ ì„¤ì •í•  수 ì—†ìŒ"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
-msgstr "ì´ ì‰˜ì— job control ì—†ìŒ"
+msgstr "ì´ ì…¸ì— ìž‘ì—… 제어 ì—†ìŒ"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: assertion 실패: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1341,70 +1349,68 @@ msgstr ""
"\r\n"
"malloc: %s:%d: assertion ë§ê°€ì§\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "ì•Œ 수 ì—†ìŒ"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
-msgstr "malloc: block on free list clobbered"
+msgstr "malloc: í•´ì œ ëª©ë¡ ì²˜ë¦¬ì¤‘ 중단"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: ì´ë¯¸ í•´ì œëœ ë¸”ë¡ ì¸ìžë¥¼ 가지고 호출ë¨"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: 할당ë˜ì§€ ì•Šì€ ë¸”ë¡ ì¸ìžì™€ 호출ë¨"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
-msgstr "free: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남"
+msgstr "free: ì–¸ë”플로우 ê°ì§€! mh_nbytesê°€ 범위를 벗어남"
-#: lib/malloc/malloc.c:1001
-#, fuzzy
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
-msgstr "free: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남"
+msgstr "free: ì–¸ë”플로우 ê°ì§€! magic8 ì†ìƒ"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: 시작과 ëì˜ ì²­í¬ ì‚¬ì´ì¦ˆê°€ 다름"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: 할당ë˜ì§€ ì•Šì€ ë¸”ë¡ ì¸ìžë¥¼ 가지고 호출ë¨"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr "realloc: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남"
+msgstr "realloc: ì–¸ë”플로우 ê°ì§€! mh_nbytesê°€ 범위를 벗어남"
-#: lib/malloc/malloc.c:1141
-#, fuzzy
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
-msgstr "realloc: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남"
+msgstr "realloc: ì–¸ë”플로우 ê°ì§€! magic8 ì†ìƒ"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: 시작과 ëì˜ ì²­í¬ ì‚¬ì´ì¦ˆê°€ 다름"
#: lib/malloc/table.c:191
#, c-format
msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr "register_alloc: FIND_ALLOCì´ í• ë‹¹ í…Œì´ë¸”ì´ ê°€ë“ ì°¼ë‹¤ê³  함?\n"
+msgstr "register_alloc: FIND_ALLOCì´ í• ë‹¹ í…Œì´ë¸”ì´ ê°€ë“ì°¸?\n"
#: lib/malloc/table.c:200
#, c-format
msgid "register_alloc: %p already in table as allocated?\n"
-msgstr "register_alloc: %pê°€ í• ë‹¹ëœ í…Œì´ë¸”ì— ìžˆìŒ?\n"
+msgstr "register_alloc: %pì´(ê°€) 할당한 í…Œì´ë¸”ì— ìžˆìŒ?\n"
#: lib/malloc/table.c:253
#, c-format
msgid "register_free: %p already in table as free?\n"
-msgstr "register_free: %pê°€ ì´ë¯¸ í•´ì œëœ í…Œì´ë¸”ì— ìžˆìŒ?\n"
+msgstr "register_free: %pì´(ê°€) ì´ë¯¸ 해제한 í…Œì´ë¸”ì— ìžˆìŒ?\n"
#: lib/sh/fmtulong.c:102
msgid "invalid base"
-msgstr "유효하지 ì•Šì€ ì§„ë²•"
+msgstr "부ì ì ˆí•œ 진법"
#: lib/sh/netopen.c:168
#, c-format
@@ -1414,7 +1420,7 @@ msgstr "%s: 알 수 없는 호스트"
#: lib/sh/netopen.c:175
#, c-format
msgid "%s: invalid service"
-msgstr "%s: 유효하지 ì•Šì€ ì„œë¹„ìŠ¤"
+msgstr "%s: 부ì ì ˆí•œ 서비스"
#: lib/sh/netopen.c:306
#, c-format
@@ -1425,25 +1431,25 @@ msgstr "%s: ìž˜ëª»ëœ ë„¤íŠ¸ì›Œí¬ ê²½ë¡œ 사양"
msgid "network operations not supported"
msgstr "ë„¤íŠ¸ì›Œí¬ ìž‘ì—…ì€ ì§€ì›ë˜ì§€ ì•ŠìŒ"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr "setlocale: LC_ALL: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s)"
+msgstr "setlocale: LC_ALL: ë¡œìº˜ì„ ë°”ê¿€ 수 ì—†ìŒ (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr "setlocale: LC_ALL: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s): %s"
+msgstr "setlocale: LC_ALL: ë¡œìº˜ì„ ë°”ê¿€ 수 ì—†ìŒ (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
-msgstr "setlocale: %s: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s)"
+msgstr "setlocale: %s: ë¡œìº˜ì„ ë°”ê¿€ 수 ì—†ìŒ (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr "setlocale: %s: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s): %s"
+msgstr "setlocale: %s: ë¡œìº˜ì„ ë°”ê¿€ 수 ì—†ìŒ (%s): %s"
#: mailcheck.c:439
msgid "You have mail in $_"
@@ -1456,148 +1462,145 @@ msgstr "$_ì— ìƒˆë¡œìš´ ë©”ì¼ì´ 있습니다"
#: mailcheck.c:480
#, c-format
msgid "The mail in %s has been read\n"
-msgstr "%sì— ìžˆëŠ” ë©”ì¼ì€ ì½ì—ˆìŠµë‹ˆë‹¤\n"
+msgstr "%sì˜ ë©”ì¼ì„ ì½ì—ˆìŠµë‹ˆë‹¤\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "문법 오류: 산술 표현ì‹ì´ 필요함"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
-msgstr "문법 오류: ';' 예ìƒë˜ì§€ ì•ŠìŒ"
+msgstr "문법 오류: ';' 필요하지 ì•ŠìŒ"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "문법 오류: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: ìž˜ëª»ëœ ëª…ë ¹ì–´ í˜•ì‹ %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "here-documentê°€ 줄 %d ì—ì„œ 파ì¼ì˜ ë으로 êµ¬ë¶„ë¨ (`%s'를 예ìƒí•¨)"
+msgstr "here-documentê°€ %d번 í–‰ì—ì„œ 파ì¼ì˜ ë으로 구분함 (`%s'ì•„(ê°€) 필요함)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr "make_redirection: 리다ì´ë ‰ì…˜ 명령어 `%d' 범위 벗어남"
+msgstr "make_redirection: 방향재지정 처리 명령어 `%d' 범위 벗어남"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
-msgid ""
-"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
-"truncated"
-msgstr ""
-"shell_getc: shell_input_line_size (%zu)가 SIZE_MAX (%lu)를 초과함: 줄 잘림"
+msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
+msgstr "shell_getc: shell_input_line_size(%zu)가 SIZE_MAX(%lu)를 초과함: 줄 잘림"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "최대 here-document 카운트 초과"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
-msgstr "'%c'를 찾는 ë„중 예ìƒí•˜ì§€ 못한 파ì¼ì˜ ë"
+msgstr "`%c'ì„(를) 찾는 ë„중 예ìƒì¹˜ 못한 파ì¼ì˜ ë"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
-msgstr "']]'를 ì°¾ë˜ ë„중 예ìƒí•˜ì§€ 못한 파ì¼ì˜ ë"
+msgstr "']]'를 ì°¾ë˜ ë„중 예ìƒì¹˜ 못한 파ì¼ì˜ ë"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "ì¡°ê±´ 표현ì‹ì— 문법 오류: 예ìƒí•˜ì§€ 못한 í† í° '%s'"
+msgstr "ì¡°ê±´ 표현ì‹ì— 문법 오류: 예ìƒì¹˜ 못한 í† í° `%s'"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "ì¡°ê±´ 표현ì‹ì— 문법 오류"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
-msgstr "예ìƒë˜ì§€ ì•Šì€ í† í° '%s', ')' 예ìƒë¨"
+msgstr "예ìƒì¹˜ 못한 í† í° `%s', ')' 필요함"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
-msgstr "')' 예ìƒë¨"
+msgstr "')' 필요함"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
-msgstr "ì¡°ê±´ 단항 ì—°ì‚°ìžì— 예기치 ì•Šì€ ì¸ìž '%s'"
+msgstr "ì¡°ê±´ 단항 ì—°ì‚°ìžì— 예기치 ì•Šì€ ì¸ìž `%s'"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "ì¡°ê±´ 단항 ì—°ì‚°ìžì— 예기치 ì•Šì€ ì¸ìž"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "예기치 ì•Šì€ í† í° '%s', ì¡°ê±´ ì´í•­ ì—°ì‚°ìž ì˜ˆìƒë¨"
+msgstr "예기치 ì•Šì€ í† í° `%s', ì¡°ê±´ ì´í•­ ì—°ì‚°ìž í•„ìš”í•¨"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
-msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìž ì˜ˆìƒë¨"
+msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìž í•„ìš”í•¨"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìžì— 대해 예기치 ì•Šì€ ì¸ìž '%s'"
+msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìžì— 대해 예기치 ì•Šì€ ì¸ìž `%s'"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìžì— 대해 예기치 ì•Šì€ ì¸ìž"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
-msgstr "ì¡°ê±´ 명령어ì—ì„œ 예기치 ì•Šì€ í† í° '%c'"
+msgstr "ì¡°ê±´ 명령어ì—ì„œ 예기치 ì•Šì€ í† í° `%c'"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
-msgstr "ì¡°ê±´ 명령어ì—ì„œ 예기치 ì•Šì€ í† í° '%s'"
+msgstr "ì¡°ê±´ 명령어ì—ì„œ 예기치 ì•Šì€ í† í° `%s'"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "ì¡°ê±´ 명령어ì—ì„œ 예기치 ì•Šì€ í† í° %d"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
-msgstr "예기치 ì•Šì€ í† í° '%s' 근처ì—ì„œ 문법 오류"
+msgstr "예기치 ì•Šì€ í† í° `%s' 근처ì—ì„œ 문법 오류"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
-msgstr "'%s' 근처ì—ì„œ 문법 오류"
+msgstr "`%s' 근처ì—ì„œ 문법 오류"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "문법 오류: 예기치 ì•Šì€ íŒŒì¼ì˜ ë"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "문법 오류"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
-msgstr "ì‰˜ì„ ë‚˜ê°€ë ¤ë©´ \"%s\"를 사용하세요.\n"
+msgstr "ì…¸ì„ ë‚˜ê°€ë ¤ë©´ \"%s\" ëª…ë ¹ì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "맞는 ')'를 ì°¾ë˜ ë„중 예기치 ì•Šì€ íŒŒì¼ì˜ ë"
#: pcomplete.c:1132
#, c-format
msgid "completion: function `%s' not found"
-msgstr "completion: 함수 `%s' 를 ì°¾ì„ ìˆ˜ ì—†ìŒ"
+msgstr "completion: `%s' 함수를 ì°¾ì„ ìˆ˜ ì—†ìŒ"
#: pcomplete.c:1722
#, c-format
@@ -1617,7 +1620,7 @@ msgstr "print_command: ìž˜ëª»ëœ ì»¤ë„¥í„° `%d'"
#: print_cmd.c:375
#, c-format
msgid "xtrace_set: %d: invalid file descriptor"
-msgstr "xtrace_set: %d: 유효하지 ì•Šì€ íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°"
+msgstr "xtrace_set: %d: 부ì ì ˆí•œ íŒŒì¼ ì„œìˆ ìž"
#: print_cmd.c:380
msgid "xtrace_set: NULL file pointer"
@@ -1628,569 +1631,560 @@ msgstr "xtrace_set: NULL íŒŒì¼ í¬ì¸í„°"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': ìž˜ëª»ëœ ì„œì‹ ë¬¸ìž"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
-msgstr "íŒŒì¼ ë””ìŠ¤í¬ë¦½í„° 범위 벗어남"
+msgstr "íŒŒì¼ ì„œìˆ ìž ë²”ìœ„ 벗어남"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: 모호한 리다ì´ë ‰íŠ¸"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: ì´ë¯¸ 있는 파ì¼ì„ ë®ì–´ì“¸ 수 ì—†ìŒ"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
-msgstr "%s: 제한ë¨: ì¶œë ¥ì„ ë¦¬ë‹¤ì´ë ‰íŠ¸í•  수 ì—†ìŒ"
+msgstr "%s: 제한ë¨: ì¶œë ¥ì„ ë°©í–¥ 재지정할 수 ì—†ìŒ"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "here-document를 위한 ìž„ì‹œ 파ì¼ì„ ìƒì„±í•  수 ì—†ìŒ: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
-msgstr "%s: fd를 ë³€ìˆ˜ì— í• ë‹¹í•  수 ì—†ìŒ"
+msgstr "%s: íŒŒì¼ ì„œìˆ ìžë¥¼ ë³€ìˆ˜ì— í• ë‹¹í•  수 ì—†ìŒ"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr "/dev/(tcp|udp)/host/port 는 네트워킹 ì—†ì´ ì§€ì›ë˜ì§€ ì•ŠìŒ"
+msgstr "/dev/(tcp|udp)/host/port는 네트워킹 ì—†ì´ ì§€ì›í•˜ì§€ ì•ŠìŒ"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
-msgstr "리다ì´ë ‰ì…˜ 오류: fd를 복제할 수 ì—†ìŒ"
+msgstr "방향재지정 처리 오류: íŒŒì¼ ì„œìˆ ìžë¥¼ 복제할 수 ì—†ìŒ"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
-msgstr "/tmp를 ì°¾ì„ ìˆ˜ ì—†ìŒ, 만들어 주세요!"
+msgstr "/tmp를 ì°¾ì„ ìˆ˜ ì—†ìŒ, 만드십시오!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
-msgstr "/tmp는 반드시 유효한 디렉토리 ì´ë¦„ì´ì–´ì•¼ 함"
+msgstr "/tmp는 반드시 ì ì ˆí•œ 디렉터리 ì´ë¦„ì´ì–´ì•¼ 함"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
-msgstr "ìƒí˜¸ì  쉘ì—서는 pretty-printing 모드가 무시ë¨"
+msgstr "대화형 ì…¸ì—서는 ì •ëˆ ì¶œë ¥ 모드를 무시함"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
-msgstr "%c%c: 유효하지 ì•Šì€ ì˜µì…˜"
+msgstr "%c%c: 부ì ì ˆí•œ 옵션"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
-msgstr "uid를 %dë¡œ 설정할 수 ì—†ìŒ: effective uid %d"
+msgstr "uid를 %d번으로 설정할 수 ì—†ìŒ: íš¨ë ¥ìƒ ì‚¬ìš©ìž ID %d번"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
-msgstr "gid를 %dë¡œ 설정할 수 ì—†ìŒ: effective gid %d"
+msgstr "gid를 %d번으로 설정할 수 ì—†ìŒ: íš¨ë ¥ìƒ ê·¸ë£¹ ID %d번"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
-msgstr "디버거를 시작할 수 ì—†ìŒ; 디버깅 모드 비활성화ë¨"
+msgstr "디버거를 시작할 수 ì—†ìŒ! 디버깅 모드 꺼ì§"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
-msgstr "%s: 는 디렉터리임"
+msgstr "%s: 디렉터리임"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "ì´ë¦„ ì—†ìŒ!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
-msgstr "GNU bash, 버전 %s-(%s)\n"
+msgstr "GNU 배시, 버전 %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
msgstr ""
-"사용법:\t%s [GNU 긴 옵션] [옵션] ...\n"
-"\t%s [GNU 긴 옵션] [옵션] 스í¬ë¦½íŠ¸-íŒŒì¼ ...\n"
+"사용법:\t%s [<GNU_긴_옵션>] [<옵션>] ...\n"
+"\t%s [<GNU_긴_옵션>] [<옵션>] <스í¬ë¦½íŠ¸íŒŒì¼> ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU 긴 옵션:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
-msgstr "쉘 옵션:\n"
+msgstr "셸 옵션:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr "\t-ilrsD ë˜ëŠ” -c 명령 ë˜ëŠ” -O shopt_option\t\t(invocation ì „ìš©)\n"
+msgstr "\t-ilrsD ë˜ëŠ” -c <명령> ë˜ëŠ” -O shopt_option\t\t(invocation ì „ìš©)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ë˜ëŠ” -o 옵션\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-"`%s -c \"help set\"' 를 사용하면 쉘 ì˜µì…˜ì— ê´€í•´ ë” ë§Žì€ ì •ë³´ë¥¼ 확ì¸í•  수 있습"
-"니다.\n"
+msgstr "`%s -c \"help set\"' ëª…ë ¹ì„ ì‚¬ìš©í•˜ë©´ ì…¸ ì˜µì…˜ì— ê´€í•´ ë” ë§Žì€ ì •ë³´ë¥¼ 확ì¸í•  수 있습니다.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-"`%s -c help' 를 사용하면 쉘 내장 ëª…ë ¹ì–´ì— ê´€í•´ ë” ë§Žì€ ì •ë³´ë¥¼ 확ì¸í•  수 있습"
-"니다.\n"
+msgstr "`%s -c help' ëª…ë ¹ì„ ì‚¬ìš©í•˜ë©´ ì…¸ 내장 ëª…ë ¹ì–´ì— ê´€í•´ ë” ë§Žì€ ì •ë³´ë¥¼ 확ì¸í•  수 있습니다.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "버그를 보고하려면 'bashbug' ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”.\n"
+msgstr "버그를 보고하려면 'bashbug' ëª…ë ¹ì„ ì‚¬ìš©í•˜ì‹­ì‹œì˜¤.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash 홈페ì´ì§€: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr ""
-"GNU 소프트웨어를 ì‚¬ìš©í•˜ëŠ”ë° ì¼ë°˜ì ì¸ ë„움ë§: <http://www.gnu.org/gethelp/>\n"
+msgstr "GNU 소프트웨어 ì‚¬ìš©ìž ì¼ë°˜ ë„움ë§: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
-msgstr "sigprocmask: %d: 유효하지 ì•Šì€ ìž‘ì—…"
+msgstr "sigprocmask: %d: 부ì ì ˆí•œ ìž‘ì—…"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
-msgstr "Bogus 신호"
+msgstr "가짜 시그ë„"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
-msgstr "Hangup"
+msgstr "수행 중단(Hangup)"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "ì¸í„°ëŸ½íŠ¸"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "나가기"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
-msgstr "Illegal instruction"
+msgstr "부ì ì ˆí•œ 명령"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
-msgstr "BPT trace/trap"
+msgstr "BPT 추ì /중단"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT 명령"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT 명령"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "ë¶€ë™ ì†Œìˆ˜ì  ì˜ˆì™¸"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
-msgstr "Killed"
+msgstr "죽었ìŒ"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "버스 오류"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
-msgstr "세그멘테ì´ì…˜ 오류"
+msgstr "세그먼테ì´ì…˜ 오류"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "ìž˜ëª»ëœ ì‹œìŠ¤í…œ 콜"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
-msgstr "고장난 파ì´í”„"
+msgstr "파ì´í”„ 깨ì§"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
-msgstr "알람 시계"
+msgstr "알림 시계"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
-msgstr "Terminated"
+msgstr "중단ë¨"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
-msgstr "긴급한 IO ìƒí™©"
+msgstr "긴급 입출력 ìƒíƒœ"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
-msgstr "멈춤 (신호)"
+msgstr "멈춤 (시그ë„)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "계ì†"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
-msgstr "ìžì‹ì´ 죽거나 멈춤"
+msgstr "하위 요소가 죽거나 멈춤"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "멈춤 (tty 입력)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "멈춤 (tty 출력)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O 준비"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU 제한"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "íŒŒì¼ ì œí•œ"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
-msgstr "알람 (ê°€ìƒ)"
+msgstr "알림 (ê°€ìƒ)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
-msgstr "알람 (프로파ì¼)"
+msgstr "알림 (프로파ì¼)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
-msgstr "윈ë„ìš° 변경ë¨"
+msgstr "윈ë„ìš° 바뀜"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "ê¸°ë¡ ìž ê¸ˆ"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
-msgstr "유저 신호 1"
+msgstr "ì‚¬ìš©ìž ì‹œê·¸ë„ 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
-msgstr "유저 신호 2"
+msgstr "ì‚¬ìš©ìž ì‹œê·¸ë„ 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT ìž…ë ¥ ë°ì´í„° 대기중"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "ì „ì› ë¬¸ì œ ìž„ë°•"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "시스템 ì¶©ëŒ ìž„ë°•"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "다른 CPUë¡œ 프로세스 ì´ì „"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "í”„ë¡œê·¸ëž˜ë° ì˜¤ë¥˜"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
-msgstr "HFT 모니터 모드 승ì¸ë¨"
+msgstr "HFT 모니터 모드 승ì¸í•¨"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
-msgstr "HFT 모니터 모드 철회ë¨"
+msgstr "HFT 모니터 모드 철회함"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
-msgstr "HFT 사운드 절차가 완료ë¨"
+msgstr "HFT 사운드 시퀀스가 ë남"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "정보 요청"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
-msgstr "알 수 없는 신호 #%d"
+msgstr "ì•Œ 수 없는 ì‹œê·¸ë„ #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
-msgstr "ìž˜ëª»ëœ ëŒ€ì²´: %2$sì— ë‹«ëŠ” '%1$s' ì—†ìŒ"
+msgstr "ìž˜ëª»ëœ ëŒ€ì²´: %2$sì— ë‹«ëŠ” `%1$s' ì—†ìŒ"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
-msgstr "%s: 리스트를 ë°°ì—´ ë©¤ë²„ì— í• ë‹¹í•  수 ì—†ìŒ"
+msgstr "%s: 리스트를 ë°°ì—´ 멤버로 할당할 수 ì—†ìŒ"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
-msgstr "프로세스 대체를 위해 파ì´í”„를 만들 수 ì—†ìŒ"
+msgstr "프로세스 대체용 파ì´í”„를 만들 수 ì—†ìŒ"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
-msgstr "프로세스 대체를 위해 ìžì‹ì„ 만들 수 ì—†ìŒ"
+msgstr "프로세스 대체용 하위 요소를 만들 수 ì—†ìŒ"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
-msgstr "ì½ê¸°ë¥¼ 위해 ëª…ëª…ëœ íŒŒì´í”„ %s를 ì—´ 수 ì—†ìŒ"
+msgstr "ì½ê¸°ìš© 명명 파ì´í”„ %sì„(를) ì—´ 수 ì—†ìŒ"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
-msgstr "쓰기를 위해 ëª…ëª…ëœ íŒŒì´í”„ %s를 ì—´ 수 ì—†ìŒ"
+msgstr "쓰기용 명명 파ì´í”„ %sì„(를) ì—´ 수 ì—†ìŒ"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "ëª…ëª…ëœ íŒŒì´í”„ %s를 fd %dë¡œ 복제할 수 ì—†ìŒ"
+msgstr "ëª…ëª…ëœ íŒŒì´í”„ %sì„(를) íŒŒì¼ ì„œìˆ ìž %d번으로 복제할 수 ì—†ìŒ"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
-msgstr "command substitution: ìž…ë ¥ì˜ null ë°”ì´íŠ¸ 무시ë¨"
+msgstr "command substitution: ìž…ë ¥ì˜ null ë°”ì´íŠ¸ 무시"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
-msgstr "명령어 대체를 위해 파ì´í”„를 만들 수 ì—†ìŒ"
+msgstr "명령어 대체용 파ì´í”„를 만들 수 ì—†ìŒ"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
-msgstr "명령어 대체를 위해 ìžì‹ì„ 만들 수 ì—†ìŒ"
+msgstr "명령어 대체용 하위 요소를 만들 수 ì—†ìŒ"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "command_substitute: 파ì´í”„를 fd 1ë¡œ 복제할 수 ì—†ìŒ"
+msgstr "command_substitute: 파ì´í”„를 íŒŒì¼ ì„œìˆ ìž 1번으로 복제할 수 ì—†ìŒ"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
-msgstr "%s: ì´ë¦„ ì°¸ì¡°ì— ëŒ€í•´ 유효하지 ì•Šì€ ë³€ìˆ˜ ì´ë¦„"
+msgstr "%s: ì´ë¦„ ì°¸ì¡°ì— ë¶€ì ì ˆí•œ 변수 ì´ë¦„"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
-msgstr "%s: 유효하지 ì•Šì€ ê°„ì ‘ 확장"
+msgstr "%s: 부ì ì ˆí•œ ê°„ì ‘ 확장"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
-msgstr "%s: 유효하지 ì•Šì€ ë³€ìˆ˜ ì´ë¦„"
+msgstr "%s: 부ì ì ˆí•œ 변수 ì´ë¦„"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
-msgstr "%s: 파ë¼ë¯¸í„° 설정ë˜ì§€ ì•ŠìŒ"
+msgstr "%s: 매개변수값 설정 안함"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
-msgstr "%s: 파ë¼ë¯¸í„°ê°€ null ë˜ëŠ” 설정ë˜ì§€ ì•ŠìŒ"
+msgstr "%s: 매개변수 ê°’ì´ null ì´ê±°ë‚˜ 설정하지 ì•ŠìŒ"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: 부분 문ìžì—´ í‘œí˜„ì‹ < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: ìž˜ëª»ëœ ëŒ€ì²´"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ì´ ë°©ë²•ìœ¼ë¡œ 할당할 수 ì—†ìŒ"
-#: subst.c:9814
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr "향후 ë²„ì „ì˜ ì‰˜ì—서는 산술 대체로 ì—°ì‚°ì´ ê°•ì œë©ë‹ˆë‹¤"
+#: subst.c:10111
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
+msgstr "향후 ë²„ì „ì˜ ì…¸ì—서는 산술 대체로 ì—°ì‚°ì´ ê°•ì œë©ë‹ˆë‹¤"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "ìž˜ëª»ëœ ëŒ€ì²´: %sì— ë‹«ëŠ” \"`\" ì—†ìŒ"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "ì¼ì¹˜ ì—†ìŒ: %s"
#: test.c:147
msgid "argument expected"
-msgstr "ì¸ìž 예ìƒë¨"
+msgstr "ì¸ìž 필요함"
#: test.c:156
#, c-format
msgid "%s: integer expression expected"
-msgstr "%s: 정수 í‘œí˜„ì‹ ì˜ˆìƒë¨"
+msgstr "%s: 정수 í‘œí˜„ì‹ í•„ìš”í•¨"
#: test.c:265
msgid "`)' expected"
-msgstr "`)' 예ìƒë¨"
+msgstr "`)'가 필요함"
#: test.c:267
#, c-format
msgid "`)' expected, found %s"
-msgstr "`)' 예ìƒë˜ì—ˆìœ¼ë‚˜ %s를 발견"
+msgstr "`)'ê°€ 있어야 하지만, %sì´(ê°€) 있습니다"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
-msgstr "%s: ì´í•­ ì—°ì‚°ìž ì˜ˆìƒë¨"
+msgstr "%s: ì´í•­ ì—°ì‚°ìžê°€ 필요합니다"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
-msgstr "%s: 단항 ì—°ì‚°ìž ì˜ˆìƒë¨"
+msgstr "%s: 단항 ì—°ì‚°ìžê°€ 필요합니다"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
-msgstr "']' ì—†ìŒ"
+msgstr "']' ë¹ ì§"
-#: test.c:899
-#, fuzzy, c-format
+#: test.c:914
+#, c-format
msgid "syntax error: `%s' unexpected"
-msgstr "문법 오류: ';' 예ìƒë˜ì§€ ì•ŠìŒ"
+msgstr "문법 오류: `%s' 필요하지 ì•ŠìŒ"
#: trap.c:220
msgid "invalid signal number"
-msgstr "유효하지 ì•Šì€ ì‹ í˜¸ 번호"
+msgstr "부ì ì ˆí•œ ì‹œê·¸ë„ ë²ˆí˜¸"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "trap handler: 최대 trap handler 레벨 초과 (%d)"
+msgstr "trap handler: 최대 트랩 핸들러 레벨 초과 (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: trap_list[%d]ì— ìž˜ëª»ëœ ê°’: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-"run_pending_traps: 신호 핸들러는 SIG_DFL ì´ê³ , %d (%s)를 ìžì‹ ì—게 보내는 중"
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr "run_pending_traps: ì‹œê·¸ë„ í•¸ë“¤ëŸ¬ëŠ” SIG_DFL ì´ê³ , %d (%s)를 ìžì‹ ì—게 다시 보내는 중"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
-msgstr "trap_handler: ìž˜ëª»ëœ ì‹ í˜¸ %d"
+msgstr "trap_handler: ìž˜ëª»ëœ ì‹œê·¸ë„ %d번"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
-msgstr "'%s'ì— ëŒ€í•´ 함수 ì •ì˜ë¥¼ ë¶ˆëŸ¬ì˜¤ëŠ”ë° ì˜¤ë¥˜ ë°œìƒ"
+msgstr "`%s'ì˜ í•¨ìˆ˜ ì •ì˜ ê°€ì ¸ì˜¤ê¸° 오류"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
-msgstr "쉘 레벨 (%d)ì´ ë„ˆë¬´ 높습니다, 1ë¡œ 재설정합니다"
+msgstr "ì…¸ 레벨 (%d)ì´ ë„ˆë¬´ 높습니다, 1ë¡œ 재설정합니다"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: 현재 범위ì—ì„œ 함수 컨í…스트 ì—†ìŒ"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
-msgstr "%s: 변수는 í• ë‹¹ëœ ê°’ì´ ë  ìˆ˜ ì—†ìŒ"
+msgstr "%s: 변수는 할당 ê°’ì´ ì•„ë‹˜"
+
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: 비호환 형ì‹ì˜ ê°’ì„ ê°€ì ¸ì˜¬ 수 ì—†ìŒ"
-#: variables.c:3475
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: ì´ë¦„ ì°¸ì¡°ì— ì •ìˆ˜ë¥¼ 할당하고 있ìŒ"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: 현재 범위ì—ì„œ 함수 컨í…스트 ì—†ìŒ"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
-msgstr "%sê°€ null exportstrì„ ê°€ì§"
+msgstr "%sì´(ê°€) null exportstrì„ ê°€ì§"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
-msgstr "%2$s를 위한 exportstrì—ì„œ 유효하지 ì•Šì€ ë¬¸ìž %1$d"
+msgstr "%2$sì˜ exportstrì—ì„œ 부ì ì ˆí•œ ë¬¸ìž %1$d"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
-msgstr "%s를 위한 exportstrì— '=' ì—†ìŒ"
+msgstr "%sì˜ exportstrì— '=' ì—†ìŒ"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: shell_variablesì˜ ì‹œìž‘ì´ í•¨ìˆ˜ì˜ ì»¨í…스트가 아님"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: 컨í…ìŠ¤íŠ¸ì— global_variables ì—†ìŒ"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: shell_variablesì˜ ì‹œìž‘ì´ ìž„ì‹œ 환경 범위가 아님"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
-msgstr "%s: %s: 파ì¼ë¡œì¨ ì—´ 수 ì—†ìŒ"
+msgstr "%s: %s: <파ì¼>ë¡œ ì—´ 수 ì—†ìŒ"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
-msgstr "%s: %s: 추척 íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°ì— 유효하지 ì•Šì€ ê°’"
+msgstr "%s: %s: 추척 íŒŒì¼ ì„œìˆ ìžì— 부ì ì ˆí•œ ê°’"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: 호환 ê°’ì´ ë²”ìœ„ë¥¼ 벗어남"
#: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"ë¼ì´ì„ ìŠ¤ GPLv3+: GNU GPL version 3 or later <http://gnu.org/license/gpl."
-"html>\n"
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "ë¼ì´ì„ ìŠ¤ GPLv3+: GNU GPL 버전 3 ì´ìƒ <http://gnu.org/license/gpl.html>\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2199,67 +2193,63 @@ msgstr "GNU bash, 버전 %s (%s)\n"
#: version.c:91 version2.c:91
msgid "This is free software; you are free to change and redistribute it."
-msgstr "This is free software; you are free to change and redistribute it."
+msgstr "ì´ í”„ë¡œê·¸ëž¨ì€ ìžìœ  소프트웨어입니다. ìžìœ ë¡­ê²Œ 바꾸고 재배í¬í•  수 있습니다."
#: version.c:92 version2.c:92
msgid "There is NO WARRANTY, to the extent permitted by law."
-msgstr "There is NO WARRANTY, to the extent permitted by law."
+msgstr "ë²•ë¥ ì´ í—ˆìš©í•˜ëŠ” 모든 ë²”ìœ„ë‚´ì˜ ë³´ì¦ì€ 없습니다."
#: xmalloc.c:93
#, c-format
msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: %lu bytes를 할당할 수 ì—†ìŒ (%lu bytes 할당ë¨)"
+msgstr "%s: %lu ë°”ì´íŠ¸ë¥¼ 할당할 수 ì—†ìŒ (%lu ë°”ì´íŠ¸ 할당함)"
#: xmalloc.c:95
#, c-format
msgid "%s: cannot allocate %lu bytes"
-msgstr "%s: %lu bytes를 할당할 수 ì—†ìŒ"
+msgstr "%s: %lu ë°”ì´íŠ¸ë¥¼ 할당할 수 ì—†ìŒ"
#: xmalloc.c:165
#, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: %s:%d: %lu bytes를 할당할 수 ì—†ìŒ (%lu bytes 할당ë¨)"
+msgstr "%s: %s:%d: %lu ë°”ì´íŠ¸ë¥¼ 할당할 수 ì—†ìŒ (%lu ë°”ì´íŠ¸ 할당함)"
#: xmalloc.c:167
#, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "%s: %s:%d: %lu bytes를 할당할 수 ì—†ìŒ"
+msgstr "%s: %s:%d: %lu ë°”ì´íŠ¸ë¥¼ 할당할 수 ì—†ìŒ"
#: builtins.c:45
msgid "alias [-p] [name[=value] ... ]"
-msgstr "alias [-p] [name[=value] ... ]"
+msgstr "alias [-p] [<ì´ë¦„>[=<ê°’>] ... ]"
#: builtins.c:49
msgid "unalias [-a] name [name ...]"
-msgstr "unalias [-a] name [name ...]"
+msgstr "unalias [-a] <ì´ë¦„> [<ì´ë¦„> ...]"
#: builtins.c:53
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function ë˜ëŠ” readline-command]"
+msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr "bind [-lpsvPSVX] [-m <키매핑>] [-f <파ì¼ì´ë¦„>] [-q <ì´ë¦„>] [-u <ì´ë¦„>] [-r <키시퀀스>] [-x <키시퀀스>:<셸명령>] [<키시퀀스>:<í–‰ì½ê¸°í•¨ìˆ˜> ë˜ëŠ” <í–‰ì½ê¸°ëª…ë ¹>]"
#: builtins.c:56
msgid "break [n]"
-msgstr "break [n]"
+msgstr "break [<번호>]"
#: builtins.c:58
msgid "continue [n]"
-msgstr "continue [n]"
+msgstr "continue [<번호>]"
#: builtins.c:60
msgid "builtin [shell-builtin [arg ...]]"
-msgstr "builtin [shell-builtin [arg ...]]"
+msgstr "builtin [<셸내장명령> [<ì¸ìž> ...]]"
#: builtins.c:63
msgid "caller [expr]"
-msgstr "caller [expr]"
+msgstr "caller [<표현ì‹>]"
#: builtins.c:66
msgid "cd [-L|[-P [-e]] [-@]] [dir]"
-msgstr "cd [-L|[-P [-e]] [-@]] [dir]"
+msgstr "cd [-L|[-P [-e]] [-@]] [<디렉터리>]"
#: builtins.c:68
msgid "pwd [-LP]"
@@ -2267,83 +2257,75 @@ msgstr "pwd [-LP]"
#: builtins.c:76
msgid "command [-pVv] command [arg ...]"
-msgstr "command [-pVv] command [arg ...]"
+msgstr "<명령> [-pVv] <명령> [<ì¸ìž> ...]"
#: builtins.c:78
-#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgilnrtux] [-p] [<ì´ë¦„>[=<ê°’>] ...]"
#: builtins.c:80
-#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgilnrtux] [-p] <ì´ë¦„>[=<ê°’>] ..."
#: builtins.c:82
msgid "local [option] name[=value] ..."
-msgstr "local [옵션] name[=value] ..."
+msgstr "local [<옵션>] <ì´ë¦„>[=<ê°’>] ..."
#: builtins.c:85
msgid "echo [-neE] [arg ...]"
-msgstr "echo [-neE] [ì¸ìž ...]"
+msgstr "echo [-neE] [<ì¸ìž> ...]"
#: builtins.c:89
msgid "echo [-n] [arg ...]"
-msgstr "echo [-n] [ì¸ìž ...]"
+msgstr "echo [-n] [<ì¸ìž> ...]"
#: builtins.c:92
msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr "enable [-a] [-dnps] [-f 파ì¼ëª…] [ì´ë¦„ ...]"
+msgstr "enable [-a] [-dnps] [-f <파ì¼ì´ë¦„>] [<ì´ë¦„> ...]"
#: builtins.c:94
msgid "eval [arg ...]"
msgstr "eval [ì¸ìž ...]"
#: builtins.c:96
-#, fuzzy
msgid "getopts optstring name [arg ...]"
-msgstr "getopts optstring name [arg]"
+msgstr "getopts optstring name [<ì¸ìž> ...]"
#: builtins.c:98
-#, fuzzy
msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
-msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+msgstr "exec [-cl] [-a <ì´ë¦„>] [<명령> [<ì¸ìž> ...]] [<방향재지정> ...]"
#: builtins.c:100
msgid "exit [n]"
-msgstr "exit [n]"
+msgstr "exit [<번호>]"
#: builtins.c:102
msgid "logout [n]"
-msgstr "logout [n]"
+msgstr "logout [<번호>]"
#: builtins.c:105
msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr "fc [-e ename] [-lnr] [first] [last] ë˜ëŠ” fc -s [pat=rep] [command]"
+msgstr "fc [-e <편집기ì´ë¦„>] [-lnr] [<처ìŒ>] [<종결>] ë˜ëŠ” fc -s [<패턴>=<대체>] [<명령>]"
#: builtins.c:109
msgid "fg [job_spec]"
-msgstr "fg [job_spec]"
+msgstr "fg [<JOBSPEC>]"
#: builtins.c:113
msgid "bg [job_spec ...]"
-msgstr "bg [job_spec ...]"
+msgstr "bg [<JOBSPEC> ...]"
#: builtins.c:116
msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr "hash [-lr] [-p pathname] [-dt] [name ...]"
+msgstr "hash [-lr] [-p <경로ì´ë¦„>] [-dt] [<ì´ë¦„> ...]"
#: builtins.c:119
msgid "help [-dms] [pattern ...]"
-msgstr "help [-dms] [패턴 ...]"
+msgstr "help [-dms] [<패턴> ...]"
#: builtins.c:123
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [-d 오프셋] [n] ë˜ëŠ” history -anrw [파ì¼ëª…] ë˜ëŠ” history -ps "
-"arg [ì¸ìž...]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
+msgstr "history [-c] [-d <오프셋>] [n] ë˜ëŠ” history -anrw [<파ì¼ì´ë¦„>] ë˜ëŠ” history -ps <ì¸ìž> [<ì¸ìž>...]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2351,47 +2333,39 @@ msgstr "jobs [-lnprs] [jobspec ...] ë˜ëŠ” jobs -x command [args]"
#: builtins.c:131
msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [jobspec ... | pid ...]"
+msgstr "disown [-h] [-ar] [<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]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
+msgstr "kill [-s <시그ë„명세> | -n <시그ë„번호> | -<시그ë„명세>] <PID> | <JOBSPEC> ... ë˜ëŠ” kill -l [<시그ë„명세>]"
#: builtins.c:136
msgid "let arg [arg ...]"
-msgstr "let arg [arg ...]"
+msgstr "let <ì¸ìž> [<ì¸ìž> ...]"
#: builtins.c:138
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgstr "read [-ers] [-a <ë°°ì—´>] [-d <구분ìž>] [-i <í…스트>] [-n <문ìžìˆ˜>] [-N <문ìžìˆ˜>] [-p <프롬프트>] [-t <제한시간>] [-u <파ì¼ì„œìˆ ìž>] [<ì´ë¦„> ...]"
#: builtins.c:140
msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o 옵션ì´ë¦„] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCHP] [-o <옵션-ì´ë¦„>] [--] [<ì¸ìž> ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
-msgstr "unset [-f] [-v] [-n] [name ...]"
+msgstr "unset [-f] [-v] [-n] [<ì´ë¦„> ...]"
#: builtins.c:146
msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr "export [-fn] [name[=value] ...] ë˜ëŠ” export -p"
+msgstr "export [-fn] [<ì´ë¦„>[=<ê°’>] ...] ë˜ëŠ” export -p"
#: builtins.c:148
msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr "readonly [-aAf] [name[=value] ...] ë˜ëŠ” readonly -p"
+msgstr "readonly [-aAf] [<ì´ë¦„>[=<ê°’>] ...] ë˜ëŠ” readonly -p"
#: builtins.c:150
msgid "shift [n]"
@@ -2399,11 +2373,11 @@ msgstr "shift [n]"
#: builtins.c:152
msgid "source filename [arguments]"
-msgstr "source 파ì¼ëª… [ì¸ìžë“¤]"
+msgstr "source <파ì¼ì´ë¦„> [<ì¸ìž>]"
#: builtins.c:154
msgid ". filename [arguments]"
-msgstr ". 파ì¼ëª… [ì¸ìžë“¤]"
+msgstr ". <파ì¼ì´ë¦„> [<ì¸ìž>]"
#: builtins.c:157
msgid "suspend [-f]"
@@ -2411,83 +2385,79 @@ msgstr "suspend [-f]"
#: builtins.c:160
msgid "test [expr]"
-msgstr "test [expr]"
+msgstr "test [<표현ì‹>]"
#: builtins.c:162
msgid "[ arg... ]"
-msgstr "[ ì¸ìž... ]"
+msgstr "[ <ì¸ìž>... ]"
#: builtins.c:166
msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr "trap [-lp] [[arg] signal_spec ...]"
+msgstr "trap [-lp] [[<ì¸ìž>] <시그ë„_명세> ...]"
#: builtins.c:168
msgid "type [-afptP] name [name ...]"
-msgstr "type [-afptP] name [name ...]"
+msgstr "type [-afptP] <ì´ë¦„> [<ì´ë¦„> ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [<한계값>]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
-msgstr "umask [-p] [-S] [모드]"
+msgstr "umask [-p] [-S] [<모드>]"
#: builtins.c:177
-#, fuzzy
msgid "wait [-fn] [-p var] [id ...]"
-msgstr "wait [-fn] [id ...]"
+msgstr "wait [-fn] [<ID> ...]"
#: builtins.c:181
msgid "wait [pid ...]"
-msgstr "wait [pid ...]"
+msgstr "wait [<PID> ...]"
#: builtins.c:184
msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done"
+msgstr "for <ì´ë¦„> [in <여러단어> ... ] ; do <명령>; done"
#: builtins.c:186
msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done"
+msgstr "for (( <ì¡°ê±´ì‹1>; <ì¡°ê±´ì‹2>; <ì¡°ê±´ì‹3> )); do <명령>; done"
#: builtins.c:188
msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr "select NAME [in WORDS ... ;] do COMMANDS; done"
+msgstr "select <ì´ë¦„> [in <여러단어> ... ;] do <명령>; done"
#: builtins.c:190
msgid "time [-p] pipeline"
-msgstr "time [-p] pipeline"
+msgstr "time [-p] <파ì´í”„ë¼ì¸>"
#: builtins.c:192
msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr "case 단어 in [패턴 [| 패턴]...) 명령어 ;;]... esac"
+msgstr "case <단어> in [<패턴> [| <패턴>]...) <명령> ;;]... esac"
#: builtins.c:194
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if 명령어; then 명령어; [ elif 명령어; then 명령어; ]... [ else 명령어; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if <명령>; then <명령>; [ elif <명령>; then <명령>; ]... [ else <명령>; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while 명령어; do 명령어; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while <명령>; do <명령-2>; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until 명령어; do 명령어; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until <명령>; do <명령-2>; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
-msgstr "coproc [NAME] command [redirections]"
+msgstr "coproc [<ì´ë¦„>] <명령> [<방향재지정>]"
#: builtins.c:202
msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr "function name { 명령어 ; } ë˜ëŠ” name () { 명령어 ; }"
+msgstr "function <ì´ë¦„> { <명령> ; } ë˜ëŠ” <ì´ë¦„> () { <명령> ; }"
#: builtins.c:204
msgid "{ COMMANDS ; }"
-msgstr "{ 명령어 ; }"
+msgstr "{ <명령> ; }"
#: builtins.c:206
msgid "job_spec [&]"
@@ -2495,75 +2465,55 @@ msgstr "job_spec [&]"
#: builtins.c:208
msgid "(( expression ))"
-msgstr "(( í‘œí˜„ì‹ ))"
+msgstr "(( <표현ì‹> ))"
#: builtins.c:210
msgid "[[ expression ]]"
-msgstr "[[ í‘œí˜„ì‹ ]]"
+msgstr "[[ <표현ì‹> ]]"
#: builtins.c:212
msgid "variables - Names and meanings of some shell variables"
-msgstr ""
+msgstr "variables - ì´ë¦„ì´ìž ì¼ë¶€ ì…¸ 변수를 ì˜ë¯¸í•©ë‹ˆë‹¤"
#: builtins.c:215
msgid "pushd [-n] [+N | -N | dir]"
-msgstr "pushd [-n] [+N | -N | dir]"
+msgstr "pushd [-n] [+<갯수> | -<갯수> | <디렉터리>]"
#: builtins.c:219
msgid "popd [-n] [+N | -N]"
-msgstr "popd [-n] [+N | -N]"
+msgstr "popd [-n] [+<갯수> | -<갯수>]"
#: builtins.c:223
msgid "dirs [-clpv] [+N] [-N]"
-msgstr "dirs [-clpv] [+N] [-N]"
+msgstr "dirs [-clpv] [+<갯수>] [-<갯수>]"
#: builtins.c:226
msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr "shopt [-pqsu] [-o] [옵션ì´ë¦„...]"
+msgstr "shopt [-pqsu] [-o] [<옵션ì´ë¦„>...]"
#: builtins.c:228
msgid "printf [-v var] format [arguments]"
-msgstr "printf [-v 변수] format [ì¸ìž]"
+msgstr "printf [-v <변수>] <출력형ì‹> [<ì¸ìž>]"
#: builtins.c:231
-#, fuzzy
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
+msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
+msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o <옵션>] [-A <ë™ìž‘>] [-G <글롭패턴>] [-W <단어목ë¡>] [-F <함수>] [-C <명령>] [-X <필터패턴>] [-P <ì ‘ë‘ì–´>] [-S <접미어>] [<ì´ë¦„> ...]"
#: builtins.c:235
-#, fuzzy
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
-"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr "compgen [-abcdefgjksuv] [-o <옵션>] [-A <ë™ìž‘>] [-G <글롭패턴>] [-W <단어목ë¡>] [-F <함수>] [-C <명령>] [-X <필터패턴>] [-P <ì ‘ë‘ì–´>] [-S <접미어>] [<단어>]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o <옵션>] [-DEI] [<ì´ë¦„> ...]"
#: builtins.c:242
-msgid ""
-"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
+msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "mapfile [-d <구분ìž>] [-n <갯수>] [-O <시작>] [-s <갯수>] [-t] [-u <파ì¼ì„œìˆ ìž>] [-C <콜백>] [-c <ì–‘ìž>] [<ë°°ì—´>]"
#: builtins.c:244
-msgid ""
-"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
+msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "readarray [-d <구분ìž>] [-n <갯수>] [-O <시작>] [-s <갯수>] [-t] [-u <파ì¼ì„œìˆ ìž>] [-C <콜백>] [-c <ì–‘ìž>] [<ë°°ì—´>]"
#: builtins.c:256
msgid ""
@@ -2580,10 +2530,23 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
+" alias returns true unless a NAME is supplied for which no alias has been\n"
" defined."
msgstr ""
+"ë³„ì¹­ì„ ì§€ì •í•˜ê±°ë‚˜ 표시합니다.\n"
+" \n"
+" ì¸ìžê°€ 없다면, `alias'는 `alias <ì´ë¦„>=<ê°’>' 형ì‹ìœ¼ë¡œ 표준 출력ì—\n"
+" 별칭 목ë¡ì„ 출력합니다.\n"
+" \n"
+" 그렇지 않으면 <ê°’>ì„ ë¶€ì—¬í•œ ê° <ì´ë¦„>ì„ ì§€ì •í•©ë‹ˆë‹¤.\n"
+" <ê°’>ì— ê³µë°± 문ìžë¥¼ ë§ë¶™ì´ë©´ ë³„ì¹­ì„ í™•ìž¥í•  ë•Œ 별칭 대체 대ìƒ\n"
+" 문ìžì—´ì˜ ë‹¤ìŒ ë‹¨ì–´ë¥¼ 확ì¸í•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -p\t재사용 형ì‹ìœ¼ë¡œ 지정한 모든 ë³„ì¹­ì„ ì¶œë ¥í•©ë‹ˆë‹¤\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 별칭으로 지정한 <ì´ë¦„>ì„ í™•ì¸í•˜ë©´ ì°¸ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:278
msgid ""
@@ -2594,6 +2557,12 @@ msgid ""
" \n"
" Return success unless a NAME is not an existing alias."
msgstr ""
+"지정 ë³„ì¹­ì˜ ëª©ë¡ì—ì„œ ê° <ì´ë¦„>ì„ ì œê±°í•©ë‹ˆë‹¤\n"
+" \n"
+" 옵션:\n"
+" -a\t모든 별칭 지정 í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤.\n"
+" \n"
+" <ì´ë¦„>ì´ ê¸°ì¡´ ë³„ì¹­ì¼ ê²½ìš° ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:291
msgid ""
@@ -2607,35 +2576,61 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
+" -S List key sequences that invoke macros and their values\n"
+" -s List key sequences that invoke macros and their values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
+" -u function-name Unbind all keys which are bound to the named function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated "
-"commands\n"
+" -X List key sequences bound with -x and associated commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
" bind returns 0 unless an unrecognized option is given or an error occurs."
msgstr ""
+"readline 키 ë°”ì¸ë”©ê³¼ ê°’ì„ ì„¤ì •í•©ë‹ˆë‹¤.\n"
+" \n"
+" 키 시퀀스를 readline 함수 ë˜ëŠ” 매í¬ë¡œì— ë°”ì¸ë”©í•˜ê±°ë‚˜, readline\n"
+" ë³€ìˆ˜ì— ì„¤ì •í•©ë‹ˆë‹¤. ì˜µì…˜ì„ ì§€ì •í•˜ì§€ ì•Šì€ ì¸ìž ë¬¸ë²•ì€ ~/.inputrc\n"
+" ì—ì„œ ì°¾ì„ ìˆ˜ 있는 문법과 ë™ì¼í•©ë‹ˆë‹¤ë§Œ ë‹¨ì¼ ì¸ìžë¡œ 전달해야 합니다.\n"
+" 예: bind '\"\\C-x\\C-r\": re-read-init-file'\n"
+" \n"
+" 옵션:\n"
+" -m <키매핑> <키매핑>ì„ ì´ ëª…ë ¹ 실행ë™ì•ˆ 사용하는 키매핑\n"
+" 으로 활용합니다. 허용할 수 있는 키매핑 ì´ë¦„ì€ emacs,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
+" vi-command, vi-insert가 있습니다.\n"
+" -l 함수 ì´ë¦„ 목ë¡.\n"
+" -P 함수 ì´ë¦„ ë° ë°”ì¸ë”© 목ë¡.\n"
+" -p ìž…ë ¥ì— ë‹¤ì‹œ 활용할 수 있는 형ì‹ì˜ 함수 ì´ë¦„ê³¼ ë°”ì¸ë”© 목ë¡.\n"
+" -S 매í¬ë¡œì™€ ê°’ì„ ì‹¤í–‰í•˜ëŠ” 키 시퀀스 목ë¡\n"
+" -s 입력으로 다시 활용할 수 있는 매í¬ë¡œì™€ ê°’ì„ ì‹¤í–‰í•˜ëŠ”\n"
+" 키 시퀀스 목ë¡.\n"
+" -V 변수 ì´ë¦„ê³¼ ê°’ 목ë¡\n"
+" -v 입력으로 다시 활용할 수 있는 변수 ì´ë¦„ê³¼ ê°’ 목ë¡.\n"
+" -q <함수ì´ë¦„> ì–´ë–¤ 키가 명명 함수를 실행하는지 요청.\n"
+" -u <함수ì´ë¦„> 명명 í•¨ìˆ˜ì— ë°”ì¸ë”©í•œ 모든 í‚¤ì˜ ë°”ì¸ë”© í•´ì œ.\n"
+" -r <키시퀀스> <키시퀀스>ì˜ ë°”ì¸ë”© 제거.\n"
+" -f <파ì¼ì´ë¦„> <파ì¼ì´ë¦„>ì˜ í‚¤ ë°”ì¸ë”© ì½ê¸°.\n"
+" -x <키시퀀스>:<셸명령>\t<키시퀀스>를 입력하면 <셸명령>ì„\n"
+" \t\t\t\t실행하게 합.\n"
+" -X 입력으로 다시 활용할 수 있는 -x로 지정한 키 시퀀스\n"
+" ë° ê´€ë ¨ 명령 목ë¡\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì•Œ 수 없는 ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않았거나 오류가 없으면 0ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:330
msgid ""
@@ -2647,6 +2642,13 @@ msgid ""
" Exit Status:\n"
" The exit status is 0 unless N is not greater than or equal to 1."
msgstr ""
+"for, while, until ë°˜ë³µë¬¸ì„ ë‚˜ê°‘ë‹ˆë‹¤.\n"
+" \n"
+" FOR, WHILE, UNTIL ë°˜ë³µë¬¸ì„ ë‚˜ê°‘ë‹ˆë‹¤. <횟수>를 지정하면,\n"
+" 반복 <횟수>ì— ë„ë‹¬í–ˆì„ ë•Œ 중단합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <횟수>ê°€ 1보다 í¬ê±°ë‚˜ 같으면 0입니다."
#: builtins.c:342
msgid ""
@@ -2658,6 +2660,13 @@ msgid ""
" Exit Status:\n"
" The exit status is 0 unless N is not greater than or equal to 1."
msgstr ""
+"for, while, until ë°˜ë³µë¬¸ì„ ë‹¤ì‹œ 실행합니다.\n"
+" \n"
+" FOR, WHILE, UNTIL ë°˜ë³µë¬¸ì˜ ë‹¤ìŒ ë°˜ë³µ ì‹¤í–‰ì„ ì§„í–‰í•©ë‹ˆë‹¤.\n"
+" <횟수>를 지정하면 <횟수> ë§Œí¼ ë‹¤ì‹œ 실행합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <횟수>ê°€ 1보다 í¬ê±°ë‚˜ 같으면 0입니다."
#: builtins.c:354
msgid ""
@@ -2665,13 +2674,21 @@ msgid ""
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
+" as a shell function, but need to execute the builtin within the function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
" not a shell builtin."
msgstr ""
+"ì…¸ 내장 ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" <셸내장명령>ì„ ëª…ë ¹ 검색 ë™ìž‘ ì—†ì´ <ì¸ìž>를 지정하여 실행합니다.\n"
+" ì…¸ 내장 ëª…ë ¹ì„ ì…¸ 함수로 재구현할 ë•Œ 쓸만합니다만, 내장 명령ì€\n"
+" 함수 안ì—ì„œ 실행해야합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <셸내장명령>ì˜ ì¢…ë£Œ ìƒíƒœë¥¼ 반환하거나 <셸내장명령>ì´ ë‚´ìž¥\n"
+" ëª…ë ¹ì´ ì•„ë‹ ê²½ìš° ê±°ì§“ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:369
msgid ""
@@ -2688,27 +2705,29 @@ msgid ""
" Returns 0 unless the shell is not executing a shell function or EXPR\n"
" is invalid."
msgstr ""
+"현재 하위루틴 호출 컨í…스트를 반환합니다.\n"
+" \n"
+" <표현ì‹>ì´ ì—†ë‹¤ë©´ \"$line $filename\"ì„ ë°˜í™˜í•˜ë©°, <표현ì‹>ì„ ì§€ì •í–ˆë‹¤ë©´\n"
+" \"$line $subroutine $filename\"ì„ ë°˜í™˜í•©ë‹ˆë‹¤. 추가 정보는 ìŠ¤íƒ íŠ¸ë ˆì´ìŠ¤\n"
+" ì— í™œìš©í•  수 있습니다.\n"
+" \n"
+" <표현ì‹>ì˜ ê°’ì€ í˜„ìž¬ 호출 프레임으로부터 얼마나 ë˜ëŒì•„가야 하는지를\n"
+" 나타냅니다. 최ìƒë‹¨ í”„ë ˆìž„ì€ í”„ë ˆìž„ 0번입니다."
#: builtins.c:387
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
+" Change the current directory to DIR. The default DIR is the value of the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
+" The variable CDPATH defines the search path for the directory containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
+" A null directory name is the same as the current directory. If DIR begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is set,\n"
+" the word is assumed to be a variable name. If that variable has a value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2724,15 +2743,45 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname "
-"component\n"
+" `..' is processed by removing the immediately previous pathname component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
" -P is used; non-zero otherwise."
msgstr ""
+"셸 작업 디렉터리를 바꿉니다.\n"
+" \n"
+" 현재 디렉터리를 <디렉터리>로 바꿉니다. 기본 <디렉터리>는 HOME 셸 변수\n"
+" 값입니다.\n"
+" \n"
+" CDPATH 변수ì—는 <디렉터리> ê°’ì´ ë“¤ì–´ê°„ 디렉터리 검색 경로를 지정합니다.\n"
+" CDPATHì˜ ëŒ€ì•ˆ 디렉터리 ì´ë¦„ì€ ì½œë¡ ìœ¼ë¡œ 구분합니다. ë„ ë””ë ‰í„°ë¦¬ ì´ë¦„ì€ \n"
+" 현재 디렉터리와 같습니다. <디렉터리> ê°’ì´ ìŠ¬ëž˜ì‹œ 문ìž(/)ë¡œ 시작하면, \n"
+" CDPATH 변수를 사용하지 않습니다.\n"
+" \n"
+" 디렉터리가 없고, `cdable_vars' ì…¸ ì˜µì…˜ì„ ì„¤ì •í–ˆë‹¤ë©´, 단어를 변수 ì´ë¦„으로\n"
+" 가정합니다. ë³€ìˆ˜ì— ê°’ì´ ë“¤ì–´ê°€ìžˆë‹¤ë©´, 해당 ê°’ì„ <디렉터리> 값으로 활용\n"
+" 합니다.\n"
+" \n"
+" 옵션:\n"
+" -L\t강제로 심볼릭 ë§í¬ë¥¼ ë”°ë¼ê°‘니다. <디렉터리>ì˜ ì‹¬ë³¼ë¦­ ë§í¬ë¥¼\n"
+" \t\t`..' ì¸ìŠ¤í„´ìŠ¤ë¥¼ 처리한 다ìŒì— í•´ì„합니다.\n"
+" -P\t심볼릭 ë§í¬ë¥¼ 따르지 ì•Šê³  실제 디렉터리 구조를 활용합니다.\n"
+" \t\t`..' ì¸ìŠ¤í„´ìŠ¤ë¥¼ 처리하기 ì „ì— <디렉터리>ì˜ ì‹¬ë³¼ë¦­ ë§í¬ë¥¼\n"
+" \t\tí•´ì„합니다.\n"
+" -e\t-P ì˜µì…˜ì„ ì§€ì •í•˜ê³ , 현재 디렉터리를 제대로 ì‹ë³„하지 못하면\n"
+" \t\t0ì´ ì•„ë‹Œ ìƒíƒœ 값으로 나갑니다\n"
+" -@\tì´ ì˜µì…˜ì„ ì§€ì›í•˜ëŠ” 시스템ì—서는 íŒŒì¼ ì†ì„±ì´ 들어간\n"
+" \t\t디렉터리처럼 확장 ì†ì„±ì„ 가진 파ì¼ì„ 나타냅니다\n"
+" \n"
+" `-L' ì˜µì…˜ì„ ì§€ì •í–ˆì„ ë•Œì™€ ê°™ì´ ì‹¬ë³¼ë¦­ ë§í¬ë¥¼ ë”°ë¼ê°€ëŠ”게 기본 ë™ìž‘입니다.\n"
+" `..'ì€ ì´ì „ 경로 ì´ë¦„ 요소를 즉시 제거하여 슬래시 경로로 ëŒì•„가거나\n"
+" <디렉터리>ì˜ ì‹œìž‘ì ìœ¼ë¡œ ëŒì•„갑니댜.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 디렉터리가 바뀌었고 -P ì˜µì…˜ì„ ì‚¬ìš©í–ˆì„ ë•Œ $PWD ê°’ì„ ì œëŒ€ë¡œ 설정하면\n"
+" 0 ê°’ì„ ë°˜í™˜í•˜ë©°, 그렇지 않으면 0ì´ ì•„ë‹Œ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:425
msgid ""
@@ -2749,6 +2798,16 @@ msgid ""
" Returns 0 unless an invalid option is given or the current directory\n"
" cannot be read."
msgstr ""
+"현재 ìž‘ì—… ë””ë ‰í„°ë¦¬ì˜ ì´ë¦„ì„ ì¶œë ¥í•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -L\t$PWDê°’ì˜ ì´ë¦„ì´ í˜„ìž¬ ìž‘ì—… ë””ë ‰í„°ë¦¬ì¼ ê²½ìš° ê°’ì„ ì¶œë ¥\n"
+" -P\t심볼릭 ë§í¬ê°€ ì•„ë‹Œ 물리 디렉터리를 출력\n"
+" \n"
+" 기본ì ìœ¼ë¡œ `pwd'ì—는 `-L' ì˜µì…˜ì´ ë¶™ì–´ìžˆìŠµë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì´ ë¶™ì—ˆê±°ë‚˜ 현재 디렉터리를 ì½ì„ 수 있다면 0ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:442
msgid ""
@@ -2761,7 +2820,7 @@ msgid ""
msgstr ""
"Null 명령.\n"
" \n"
-" 효과 ì—†ìŒ; ì•„ë¬´ê²ƒë„ í•˜ì§€ 않습니다.\n"
+" 효과 ì—†ìŒ. ì•„ë¬´ê²ƒë„ í•˜ì§€ 않습니다.\n"
" \n"
" 종료 ìƒíƒœ:\n"
" í•­ìƒ ì„±ê³µí•©ë‹ˆë‹¤."
@@ -2773,7 +2832,7 @@ msgid ""
" Exit Status:\n"
" Always succeeds."
msgstr ""
-"성공ì ì¸ 결과를 반환합니다.\n"
+"성공 결과를 반환합니다.\n"
" \n"
" 종료 ìƒíƒœ:\n"
" í•­ìƒ ì„±ê³µí•©ë‹ˆë‹¤."
@@ -2785,19 +2844,17 @@ msgid ""
" Exit Status:\n"
" Always fails."
msgstr ""
-"실패한 결과를 반환합니다.\n"
+"실패 결과를 반환합니다.\n"
" \n"
" 종료 ìƒíƒœ:\n"
" í•­ìƒ ì‹¤íŒ¨í•©ë‹ˆë‹¤."
#: builtins.c:471
-#, fuzzy
msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
+" information about the specified COMMANDs. Can be used to invoke commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -2809,21 +2866,20 @@ msgid ""
" Exit Status:\n"
" Returns exit status of COMMAND, or failure if COMMAND is not found."
msgstr ""
-"간단한 ëª…ë ¹ì„ ì‹¤í–‰í•˜ê±°ë‚˜ ëª…ë ¹ì— ê´€í•œ 정보를 표시합니다..\n"
+"간단한 ëª…ë ¹ì„ ì‹¤í–‰í•˜ê±°ë‚˜ 명령 정보를 표시합니다.\n"
" \n"
-" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
-" on disk when a function with the same name exists.\n"
+" ì…¸ 함수 íƒìƒ‰ì„ 억제하는 <ì¸ìž>ë¡œ <명령>ì„ ì‹¤í–‰í•˜ê±°ë‚˜, 지정 <명령>ì˜ ì •ë³´ë¥¼\n"
+" 나타냅니다. ë™ì¼í•œ ì´ë¦„ì„ ê°€ì§„ 함수가 ìžˆì„ ë•Œ 디스í¬ì˜ ëª…ë ¹ì„ ì‹¤í–‰í•  경우\n"
+" 활용할 수 있습니다.\n"
" \n"
" 옵션:\n"
-" -p 표준 유틸리티를 전부 ì°¾ì„ ìˆ˜ 있다고 ë³´ìž¥ëœ PATHì˜\n"
-" 기본 ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.\n"
-" -v `type' 빌트ì¸ê³¼ 유사한 ëª…ë ¹ì˜ ì„¤ëª…ì„ ë³´ì—¬ì¤ë‹ˆë‹¤\n"
-" -V ê° ëª…ë ¹ì— ê´€í•´ ë” ìƒì„¸í•œ 정보를 ë³´ì—¬ì¤ë‹ˆë‹¤\n"
+" -p 표준 유틸리티를 전부 ì°¾ì„ ìˆ˜ 있다고 보장하는\n"
+" PATH ê¸°ë³¸ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.\n"
+" -v `type' 내장 명령과 비슷하게 <명령>ì˜ ì„¤ëª…ì„ ë³´ì—¬ì¤ë‹ˆë‹¤\n"
+" -V ê° <명령>ì˜ ë” ìžì„¸í•œ 정보를 ë³´ì—¬ì¤ë‹ˆë‹¤\n"
" \n"
" 종료 ìƒíƒœ:\n"
-" ëª…ë ¹ì˜ ì‹¤í–‰ 결과를 반환하거나 ëª…ë ¹ì´ ì—†ì„ ê²½ìš° 오류를 반환합니다."
+" <명령>ì˜ ì‹¤í–‰ 결과를 반환하거나 <명령>ì´ ì—†ì„ ê²½ìš° 오류를 반환합니다."
#: builtins.c:490
msgid ""
@@ -2858,14 +2914,50 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or a variable\n"
" assignment error occurs."
msgstr ""
+"변수 ê°’ê³¼ ì†ì„±ì„ 설정합니다.\n"
+" \n"
+" 변수를 선언하고 ì†ì„±ì„ 부여합니다. <ì´ë¦„>ì„ ì •í•˜ì§€ 않으면,\n"
+" ì†ì„±ê³¼ 모든 변수 ê°’ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -f\t함수 ì´ë¦„ê³¼ ì •ì˜ë¡œ ë™ìž‘ê³¼ 표시를 제한합니다\n"
+" -F\t함수 ì´ë¦„만 표시를 제한합니다 (디버깅할 때는 í–‰ 번호와\n"
+" \t\t소스 íŒŒì¼ í¬í•¨)\n"
+" -g\tì…¸ 함수ì—ì„œ 사용할 ë•Œ ì „ì—­ 변수를 만듭니다. 아니면 무시\n"
+" -I\t지역 변수를 만들 ë•Œ, ì´ì „ ë²”ìœ„ì˜ ê°™ì€ ì´ë¦„ì„ ê°€ì§„ ì†ì„±ê³¼\n"
+" \t\të³€ìˆ˜ê°’ì„ ì´ì–´ë°›ìŠµë‹ˆë‹¤\n"
+" -p\tì†ì„±ê³¼ ê° <ì´ë¦„>ì˜ ê°’ì„ í‘œì‹œí•©ë‹ˆë‹¤\n"
+" \n"
+" ì†ì„±ì„ 설정하는 옵션:\n"
+" -a\t<ì´ë¦„>ì„ ìƒ‰ì¸ ë°°ì—´ë¡œ 만듬 (지ì›í•  경우)\n"
+" -A\t<ì´ë¦„>ì„ ì—°ê´€ ë°°ì—´ë¡œ 만듬 (지ì›í•  경우)\n"
+" -i\t<ì´ë¦„>ì„ `정수' ì†ì„±ì„ 가지게 함\n"
+" -l\tê° <ì´ë¦„>ì˜ í• ë‹¹ ê°’ì„ ì†Œë¬¸ìžë¡œ 변환\n"
+" -n\t<ì´ë¦„> 값으로 지정한 ì´ë¦„ì„ ì°¸ì¡°í•˜ê²Œ 함\n"
+" -r\t<ì´ë¦„>ì„ ì½ê¸° 전용으로 설정\n"
+" -t\t<ì´ë¦„>ì— `trace' ì†ì„±ì„ 가지게 함\n"
+" -u\tê° <ì´ë¦„>ì˜ í• ë‹¹ ê°’ì„ ëŒ€ë¬¸ìžë¡œ 변환\n"
+" -x\t<ì´ë¦„>ì„ ë‚´ë³´ëƒ„\n"
+" \n"
+" 주어진 ì†ì„±ì„ 사용하려면 `+'를 ë„려면 `-'를 사용합니다.\n"
+" \n"
+" 정수 ì†ì„± 변수는 ë³€ìˆ˜ì— ê°’ì„ í• ë‹¹í•˜ë©´ 산술 ì—°ì‚°ì„ ìˆ˜í–‰\n"
+" 합니다 (`let' 명령 참고).\n"
+" \n"
+" 함수ì—ì„œ 사용할 ë•Œ, `declare' ëª…ë ¹ì€ `local' 명령처럼\n"
+" <ì´ë¦„>ì„ ë¡œì»¬ 변수로 만듭니다. `-g' ì˜µì…˜ì€ ì´ ë™ìž‘ì„\n"
+" 억제합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì„¤ì •í–ˆê±°ë‚˜ 변수 할당 오류가 없다면\n"
+" ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:532
msgid ""
@@ -2891,13 +2983,23 @@ msgid ""
" Returns success unless an invalid option is supplied, a variable\n"
" assignment error occurs, or the shell is not executing a function."
msgstr ""
+"지역 변수를 지정합니다.\n"
+" \n"
+" <ì´ë¦„> 지역 변수를 만들고 <ê°’>ì„ ë¶€ì—¬í•©ë‹ˆë‹¤. <옵션>ì€ `declare'\n"
+" ë¡œ ë°›ì•„ë“¤ì¼ ìˆ˜ 있는 ì–´ë–¤ ì˜µì…˜ë„ ê°€ëŠ¥í•©ë‹ˆë‹¤.\n"
+" \n"
+" 지역 변수는 함수 ë‚´ì—서만 활용할 수 있습니다. 하위 요소ì—ì„œ 지정했다면,\n"
+" ì—­ì‹œ 하위 함수ì—서만 ë³¼ 수 있습니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í–ˆê±°ë‚˜, 변수 í• ë‹¹ì— ì˜¤ë¥˜ê°€ 없거나,\n"
+" ì…¸ì—ì„œ 함수를 실행하면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by "
-"a\n"
+" Display the ARGs, separated by a single space character and followed by a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -2921,16 +3023,43 @@ msgid ""
" \t\t0 to 3 octal digits\n"
" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
" \t\tcan be one or two hex digits\n"
-" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
-"HHHH.\n"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n"
" \t\tHHHH can be one to four hex digits.\n"
-" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
-"value\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n"
" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
" \n"
" Exit Status:\n"
" Returns success unless a write error occurs."
msgstr ""
+"표준 ì¶œë ¥ì— ì¸ìžë¥¼ 기ë¡í•©ë‹ˆë‹¤.\n"
+" \n"
+" ë‹¨ì¼ ê³µë°±ë¬¸ìžë¡œ 구분하며 개행 문ìžê°€ ë”°ë¼ì˜¤ëŠ” <ì¸ìž>를\n"
+" 표준 ì¶œë ¥ì— ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -n\t개행 ë¬¸ìž ì¶”ê°€ 안함\n"
+" -e\t추가 백슬래시 탈출 ë¬¸ìž ì²˜ë¦¬ 활성\n"
+" -E\t백슬래시 탈출 ë¬¸ìž ì²˜ë¦¬ë¥¼ 명백하게 무시\n"
+" \n"
+" `echo' ëª…ë ¹ì€ ë‹¤ìŒ ë°±ìŠ¬ëž˜ì‹œ 탈출 문ìžë¥¼ 처리합니다:\n"
+" \a\t경고 (알림ìŒ)\n"
+" \\b\t백스페ì´ìŠ¤\n"
+" \\c\tì´í›„ 출력 무시\n"
+" \\e\t탈출 문ìž\n"
+" \\E\t탈출 문ìž\n"
+" \\f\tí¼ í”¼ë“œ\n"
+" \\n\t개행 문ìž\n"
+" \\r\tìºë¦¬ì§€ 리턴\n"
+" \\t\tìˆ˜í‰ íƒ­\n"
+" \\v\t수ì§íƒ­\n"
+" \\\\\t백슬래시\n"
+" \\0nnn\t8진수 ASCII 코드 문ìž. NNNì€ ìµœëŒ€ 3ìžë¦¬ 8진수\n"
+" \\xHH\t16진수 8비트 문ìž. HH는 2ìžë¦¬ 16진수\n"
+" \\uHHHH\t16진수 유니코드 문ìž. HHHH는 4ìžë¦¬ 16진수\n"
+" \\UHHHHHHHH 16진수 유니코드 문ìž. HHHHHHHH는 8ìžë¦¬ 16진수\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ê¸°ë¡ ì˜¤ë¥˜ê°€ 없으면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:597
msgid ""
@@ -2944,6 +3073,15 @@ msgid ""
" Exit Status:\n"
" Returns success unless a write error occurs."
msgstr ""
+"표준 ì¶œë ¥ì— ì¸ìžë¥¼ 기ë¡í•©ë‹ˆë‹¤.\n"
+" \n"
+" <ì¸ìž> ê°’ê³¼ ì¤„ë°”ê¿ˆì„ í‘œì¤€ ì¶œë ¥ì— ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -n\t개행 ë¬¸ìž ì¶”ê°€ 안함\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ê¸°ë¡ ì˜¤ë¥˜ê°€ 없다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:612
msgid ""
@@ -2971,18 +3109,47 @@ msgid ""
" Exit Status:\n"
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
+"ì…¸ 내장 ëª…ë ¹ì„ ì‚¬ìš© í˜¹ì€ ë¯¸ì‚¬ìš©ì²˜ë¦¬ 합니다.\n"
+" \n"
+" 내장 ì…¸ ëª…ë ¹ì„ ì‚¬ìš©/미사용 처리합니다. 미사용 처리하면 ì „ì²´ 경로 ì´ë¦„ì„\n"
+" 지정하지 ì•Šê³ ë„ ì…¸ 내장명령처럼 ë™ì¼í•œ ì´ë¦„ì„ ê°€ì§„ ë””ìŠ¤í¬ ëª…ë ¹ì„ ì‹¤í–‰í• \n"
+" 수 있습니다\n"
+" \n"
+" 옵션:\n"
+" -a\t내장 ëª…ë ¹ì˜ í™œì„± 여부를 나타내는 목ë¡ì„ 출력합니다\n"
+" -n\tê° <ì´ë¦„>ì„ ë¯¸ì‚¬ìš© 처리하거나 미사용 내장 명령 목ë¡ì„ 출력합니다\n"
+" -p\t재활용 형ì‹ìœ¼ë¡œ 내장 명령 목ë¡ì„ 출력합니다\n"
+" -s\tPOSIX `특수' 내장 명령 ì´ë¦„만 출력합니다\n"
+" \n"
+" ë™ì  불러오기를 제어하는 ì˜µì…˜ì€ ë‹¤ìŒê³¼ 같습니다:\n"
+" -f\t<파ì¼ì´ë¦„> 공유 ê°ì²´ì˜ 내장 <ì´ë¦„>ì„ ë¶ˆëŸ¬ì˜µë‹ˆë‹¤\n"
+" -d\t-fë¡œ 불러온 내장 ëª…ë ¹ì„ ì œê±°í•©ë‹ˆë‹¤\n"
+" \n"
+" ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않으면, ê° <ì´ë¦„>ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.\n"
+" \n"
+" ì…¸ 내장 버전 대신 $PATHì—ì„œ ì°¾ì€ `test'를 활용하려면,\n"
+" `enable -n test'를 입력하십시오.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <ì´ë¦„>ì´ ì…¸ 내장 명령ì´ê³  오류가 없으면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+" Combine ARGs into a single string, use the result as input to the shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
" Returns exit status of command or success if command is null."
msgstr ""
+"ì¸ìžë¥¼ ì…¸ 명령으로 실행합니다.\n"
+" \n"
+" <ì¸ìž>를 ë‹¨ì¼ ë¬¸ìžì—´ì— 결합하여 ì…¸ ìž…ë ¥ 결과로 í• ìš©í•œ 다ìŒ,\n"
+" 결과를 내는 명령으로 실행합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 명령 ê°’ì´ ìžˆë‹¤ë©´ 종료 ìƒíƒœë¥¼, null ì´ë¼ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:652
msgid ""
@@ -3024,14 +3191,48 @@ msgid ""
" Returns success if an option is found; fails if the end of options is\n"
" encountered or an error occurs."
msgstr ""
+"옵션 ì¸ìžë¥¼ í•´ì„합니다.\n"
+" \n"
+" getopts는 위치 매개변수를 옵션으로 í•´ì„하는 ì…¸ 프로시저ì—ì„œ\n"
+" 활용합니다.\n"
+" \n"
+" <옵션문ìžì—´>ì—는 ì‹ë³„í•  옵션 문ìžê°€ 들어갑니다. 문ìžì— 콜론ì´\n"
+" ë’¤ë”°ë¼ ë¶™ì„ ê²½ìš°, ì˜µì…˜ì— ê³µë°± 문ìžë¡œ 구분한 ì¸ìžê°€ 뒤따ë¼ì˜¤ëŠ”\n"
+" 것으로 간주합니다.\n"
+" \n"
+" 실행할 때마다, getoptsì—ì„œ $name ì…¸ ë³€ìˆ˜ì˜ ë‹¤ìŒ ì˜µì…˜ì„ í™•ì¸í•˜ì—¬\n"
+" 해당 ì˜µì…˜ì´ ì—†ì„ ê²½ìš° ì´ë¦„ì„ ì´ˆê¸°í™”í•˜ê³  OPTIND ì…¸ ë³€ìˆ˜ì— ë‹¤ìŒ\n"
+" ì¸ìžì˜ 색ì¸ì„ 처리합니다. OPTIND는 ì…¸ ë˜ëŠ” ì…¸ 스í¬ë¦½íŠ¸ë¥¼ 실행\n"
+" í•  때마다 1ë¡œ 초기화합니다. ì˜µì…˜ì— ì¸ìžê°€ 필요하면, getoptsì—ì„œ\n"
+" 해당 ì¸ìžë¥¼ OPTARG ì…¸ ë³€ìˆ˜ì— ë„£ìŠµë‹ˆë‹¤.\n"
+" \n"
+" getopts는 ë‘가지 방법으로 오류를 나타냅니다. OPTSTRINGì˜ ì²«ë²ˆì§¸\n"
+" 문ìžê°€ 콜론ì´ë©´, getoptsì—서는 오류 ë³´ê³ ì‹œ ì¡°ìš©í•œ ìƒíƒœë¡œ ë°”ë€ë‹ˆë‹¤.\n"
+" ì´ ë•Œ, ì–´ë–¤ 오류 ë©”ì‹œì§€ë„ ë‚˜íƒ€ë‚˜ì§€ 않습니다. ê·¸ëŸ°ë° ë¶€ì ì ˆí•œ 옵션ì´\n"
+" 나타나면, getoptsì—ì„œ OPTARGì˜ ìž˜ëª»ëœ ì˜µì…˜ 문ìžë¥¼ 찾아 가리킵니다.\n"
+" 필요한 ì¸ìžê°€ 없다면, getopts는 ì½œë¡ ì„ <ì´ë¦„>ì— ëŒ€ìž…í•˜ê³ , OPTARG \n"
+" 변수ì—는 ì°¾ì€ ì˜µì…˜ 문ìžë¥¼ 할당합니다. getoptsê°€ 미출력 ìƒíƒœê°€ 아니고,\n"
+" 부ì ì ˆí•œ ì˜µì…˜ì„ í™•ì¸í–ˆë‹¤ë©´, getopts는 '?' ê°’ì„ <ì´ë¦„>ì— ëŒ€ìž…í•˜ê³ , \n"
+" OPTARG ì„¤ì •ì„ í•´ì œí•©ë‹ˆë‹¤. 필요한 ì¸ìžê°€ 없다면 '?' ê°’ì´ <ì´ë¦„>ì—\n"
+" 들어가고, OPTARG 변수 ì„¤ì •ì„ í•´ì œí•˜ë©°, 진단 메시지를 출력합니다.\n"
+" \n"
+" OPTERR ì…¸ ë³€ìˆ˜ê°’ì´ 0ì´ë©´, getoptsì—서는 오류 메시지 ì¶œë ¥ì„ í•˜ì§€\n"
+" 않습니다. OPTSTRING 첫번째 문ìžê°€ ì½œë¡ ì´ ì•„ë‹ˆë”ë¼ë„, 기본ì ìœ¼ë¡œ\n"
+" OPTERR ì…¸ 변수값ì—는 1ì´ ë“¤ì–´ê°€ 있습니다.\n"
+" \n"
+" getopts는 보통 위치 매개변수를 í•´ì„하지만, <ì¸ìž> 값처럼 ì¸ìžë¥¼\n"
+" 지정하면, 해당 ê°’ì„ ë¨¼ì € í•´ì„합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì˜µì…˜ì„ ì°¾ìœ¼ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤.ì˜µì…˜ì˜ ëì— ë„달했거나, 오류가\n"
+" 나타나면 실패를 반환합니다."
#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3039,14 +3240,28 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+" If the command cannot be executed, a non-interactive shell exits, unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+" Returns success unless COMMAND is not found or a redirection error occurs."
msgstr ""
+"ì…¸ì„ ì£¼ì–´ì§„ 명령으로 대체합니다.\n"
+" \n"
+" ì´ ì…¸ì„ ì§€ì • 프로그램으로 대체하는 <명령>ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" <ì¸ìž>는 <명령>ì„ ë”°ë¼ê°‘니다. <명령>ì„ ì§€ì •í•˜ì§€ 않으면,\n"
+" 현재 ì…¸ì˜ ì–´ë–¤ 방향재지정 명령ì´ë“  결과가 나타납니다.\n"
+" \n"
+" 옵션:\n"
+" -a <ì´ë¦„>\t<ì´ë¦„>ì„ <명령>ì˜ 0번째 ì¸ìžë¡œ 전달합니다\n"
+" -c\t빈 환경ì—ì„œ <명령>ì„ ì‹¤í–‰í•©ë‹ˆë‹¤\n"
+" -l\t<명령>ì˜ 0번째 ì¸ìžë¡œ 대시 문ìžë¥¼ 둡니다\n"
+" \n"
+" ëª…ë ¹ì„ ì‹¤í–‰í•  수 없다면, `execfail' ì…¸ ì˜µì…˜ì„ ì„¤ì •í•˜ì§€ ì•Šì•˜ì„ ê²½ìš°,\n"
+" ë¹„ëŒ€í™”ì‹ ì…¸ì„ ë‚˜ê°‘ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <명령>ì´ ìžˆê±°ë‚˜ 방향재지정 실행시 오류가 없다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:715
msgid ""
@@ -3055,33 +3270,34 @@ msgid ""
" Exits the shell with a status of N. If N is omitted, the exit status\n"
" is that of the last command executed."
msgstr ""
+"ì…¸ì„ ë‚˜ê°‘ë‹ˆë‹¤.\n"
+" \n"
+" <번호> ê°’ ìƒíƒœë¡œ ì…¸ì„ ë‚˜ê°‘ë‹ˆë‹¤. <번호>를 지정하지 않으면,\n"
+" 종료 ìƒíƒœëŠ” 최종 명령 실행 ìƒíƒœì™€ ë™ì¼í•©ë‹ˆë‹¤."
#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
+" Exits a login shell with exit status N. Returns an error if not executed\n"
" in a login shell."
msgstr ""
-"ë¡œê·¸ì¸ ì‰˜ì„ ë‚˜ê°‘ë‹ˆë‹¤.\n"
+"ë¡œê·¸ì¸ ì…¸ì„ ë‚˜ê°‘ë‹ˆë‹¤.\n"
" \n"
-" 종료 ìƒíƒœ N으로 ë¡œê·¸ì¸ ì‰˜ì„ ë‚˜ê°‘ë‹ˆë‹¤. ë¡œê·¸ì¸ ì‰˜ì—ì„œ 실행ë˜ì§€ 않는 경우\n"
+" 종료 ìƒíƒœ N으로 ë¡œê·¸ì¸ ì…¸ì„ ë‚˜ê°‘ë‹ˆë‹¤. ë¡œê·¸ì¸ ì…¸ì—ì„œ 실행ë˜ì§€ 않는 경우\n"
" ì—러가 ë°œìƒí•©ë‹ˆë‹¤."
#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+" fc is used to list or edit and re-execute commands from the history list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3095,9 +3311,30 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
+" Returns success or status of executed command; non-zero if an error occurs."
msgstr ""
+"ê¸°ë¡ ëª©ë¡ì˜ ëª…ë ¹ì„ í‘œì‹œí•˜ê±°ë‚˜ 실행합니다.\n"
+" \n"
+" fc는 ê¸°ë¡ ëª©ë¡ì˜ ëª…ë ¹ì„ ë³´ì—¬ì£¼ê±°ë‚˜ 편집하고 다시 실행할 ë•Œ 사용합니다.\n"
+" <처ìŒ>ê³¼ <종결>ì€ ë²”ìœ„ 지정 숫ìžì´ë©°, <처ìŒ>ì€ ë¬¸ìžì—´ì¼ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.\n"
+" ì´ëŠ”, 최근 ëª…ë ¹ì´ <처ìŒ>ì— ì§€ì •í•œ 문ìžì—´ë¡œ ì‹œìž‘í•¨ì„ ì˜ë¯¸í•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -e <편집기ì´ë¦„>\t사용할 편집기를 ì„ íƒí•©ë‹ˆë‹¤. ê¸°ë³¸ì€ FCEDIT, EDITOR, \n"
+" \t\tê·¸ 다ìŒì€ vi입니다\n"
+" -l \t편집하지 ì•Šê³  ëª©ë¡ í–‰ì„ ë³´ì—¬ì¤ë‹ˆë‹¤\n"
+" -n\t목ë¡ì„ 나타낼 ë•Œ 번호를 ìƒëžµí•©ë‹ˆë‹¤\n"
+" -r\tí–‰ 순서를 뒤집습니다 (최신 í•­ëª©ì„ ë¨¼ì €)\n"
+" \n"
+" `fc -s [<패턴>=<대체> ...] [<명령>]' 형ì‹ì—ì„œ, <명령> ì€\n"
+" <ì´ì „>=<최신> 대체 ë™ìž‘ì„ ìˆ˜í–‰í•œ ë‹¤ìŒ ë‹¤ì‹œ 실행합니다.\n"
+" \n"
+" r='fc -s'(으)ë¡œ 쓸만한 ë³„ì¹­ì„ ë§Œë“¤ì–´ 쓸 수 있는ë°, `r cc'를 입력하면\n"
+" `cc'ë¡œ 시작하는 최근 ëª…ë ¹ì„ ì‹¤í–‰í•˜ê³  `r'ì„ ìž…ë ¥í•˜ë©´ ì§ì „ì— ìž…ë ¥í•œ\n"
+" 최근 ëª…ë ¹ì„ ë‹¤ì‹œ 실행할 수 있습니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 성공 ë˜ëŠ” 실행 명령 ìƒíƒœë¥¼ 반환합니다. 오류가 있다면 0ì´ ì•„ë‹Œ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:764
msgid ""
@@ -3110,28 +3347,41 @@ msgid ""
" Exit Status:\n"
" Status of command placed in foreground, or failure if an error occurs."
msgstr ""
+"ìž‘ì—…ì„ í¬ê·¸ë¼ìš´ë“œë¡œ ì´ë™í•©ë‹ˆë‹¤.\n"
+" \n"
+" JOB_SPEC으로 ì‹ë³„하는 ìž‘ì—…ì„ í¬ê·¸ë¼ìš´ë“œì— ë‘ì–´, 현재 작업으로\n"
+" 전환합니다. JOB_SPECì´ í˜„ìž¬ ìž‘ì—…ì´ ì•„ë‹ˆë©´, ì…¸ì˜ ê°œë…ìƒ í˜„ìž¬ ìž‘ì—…ì„\n"
+" 활용합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" í¬ê·¸ë¼ìš´ë“œì— 있는 ëª…ë ¹ì˜ ìƒíƒœë¥¼ 반환합니다. 오류가 있다면 실패를 반환합니다."
#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's "
-"notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
+"ìž‘ì—…ì„ ë°±ê·¸ë¼ìš´ë“œë¡œ ì´ë™í•©ë‹ˆë‹¤.\n"
+" \n"
+" `&'ë¡œ ì‹œìž‘í–ˆì„ ë•Œì™€ 마찬가지로, ê° JOB_SPEC으로 ì‹ë³„하는 ìž‘ì—…ì„\n"
+" 백그ë¼ìš´ë“œì— 둡니다. JOB_SPECì´ ì—†ë‹¤ë©´, ì…¸ì˜ ê°œë…ìƒ í˜„ìž¬ ìž‘ì—…ì„\n"
+" 활용합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ìž‘ì—… ì»¨íŠ¸ë¡¤ì´ ìžˆê³  오류가 없다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
+" no arguments are given, information about remembered commands is displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3148,6 +3398,24 @@ msgid ""
" Exit Status:\n"
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
+"프로그램 위치를 기억하거나 표시합니다.\n"
+" \n"
+" 명령 <ì´ë¦„>ì˜ ì „ì²´ 경로 ì´ë¦„ì„ íŒë‹¨í•˜ê±°ë‚˜ 기억합니다. ì–´ë–¤ ì¸ìžë„\n"
+" 설정하지 않으면, 기억한 ëª…ë ¹ì˜ ì •ë³´ë¥¼ 표시합니다.\n"
+" \n"
+" 옵션:\n"
+" -d\tê° <ì´ë¦„>ì˜ ê¸°ì–µ 위치를 소거합니다\n"
+" -l\t입력으로 재활용할 형ì‹ì„ 표시합니다\n"
+" -p <경로ì´ë¦„>\t<ì´ë¦„> ì˜ ì „ì²´ 경로 ì´ë¦„으로 <경로ì´ë¦„>ì„ í™œìš©í•©ë‹ˆë‹¤\n"
+" -r\t기억한 모든 위치를 소거합니다\n"
+" -t\tê° <ì´ë¦„>ì˜ ê¸°ì–µ 위치를 출력하며 여러 <ì´ë¦„>ì„ ì§€ì •í–ˆì„ ê²½ìš°,\n"
+" \t\t<ì´ë¦„>ì— í•´ë‹¹í•˜ëŠ” ê° ìœ„ì¹˜ë¥¼ ìš°ì„  나타냅니다\n"
+" ì¸ìž:\n"
+" <ì´ë¦„>\tê° <ì´ë¦„>ì€ $PATHì—ì„œ 검색하며 기억 ëª…ë ¹ì— ëŒ€í•´ 목ë¡ì—\n"
+" \t\t추가합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <ì´ë¦„>ì„ ì°¾ì•˜ê±°ë‚˜ ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í–ˆë‹¤ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:818
msgid ""
@@ -3167,9 +3435,24 @@ msgid ""
" PATTERN\tPattern specifying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
+" Returns success unless PATTERN is not found or an invalid option is given."
msgstr ""
+"내장 명령 정보를 표시합니다.\n"
+" \n"
+" 내장 명령 요약 정보를 표시합니다. <패턴>ì„ ì§€ì •í•˜ë©´ <패턴>ì— ì¼ì¹˜\n"
+" 하는 모든 ëª…ë ¹ì˜ ìžì„¸í•œ ë‚´ìš©ì„ ë‚˜íƒ€ë‚´ë©°, 그렇지 않으면 ë„ì›€ë§ ì£¼ì œ \n"
+" 목ë¡ì„ 나타냅니다.\n"
+" \n"
+" 옵션:\n"
+" -d\tê° ì£¼ì œì˜ ê°„ë‹¨í•œ ì„¤ëª…ì„ ì¶œë ¥í•©ë‹ˆë‹¤\n"
+" -m\t유사 맨 페ì´ì§€ 형ì‹ìœ¼ë¡œ ì‚¬ìš©ë²•ì„ ì¶œë ¥í•©ë‹ˆë‹¤.\n"
+" -s\t<패턴>ì— ì¼ì¹˜í•˜ëŠ” ì£¼ì œì˜ ê°„ë‹¨í•œ 개요만 출력합니다\n"
+" \n"
+" ì¸ìž:\n"
+" <패턴>\të„ì›€ë§ ì£¼ì œë¥¼ 지정합니다\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <패턴>ì— ì¼ì¹˜í•˜ëŠ” 주제를 찾았거나 ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í•˜ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:842
msgid ""
@@ -3199,12 +3482,41 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
+" with each displayed history entry. No time stamps are printed otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
+"ê¸°ë¡ ëª©ë¡ì„ 표시하거나 편집합니다.\n"
+" \n"
+" ê¸°ë¡ ëª©ë¡ì— 행번호를 붙여 나타내며, 수정한 í•­ëª©ì€ `*' 표시가\n"
+" ì•žì— ë¶™ìŠµë‹ˆë‹¤. ì¸ìž Nì€ ìµœê·¼ 항목 N개만 ë‚˜íƒ€ëƒ„ì„ ì˜ë¯¸í•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -c\t모든 í•­ëª©ì„ ì‚­ì œí•˜ì—¬ ê¸°ë¡ ëª©ë¡ì„ 지ì›ë‹ˆë‹¤\n"
+" -d <오프셋>\t<오프셋> í¬ì§€ì…˜ì— 있는 í•­ëª©ì„ ì‚­ì œí•©ë‹ˆë‹¤. ìŒìˆ˜\n"
+" \t\tì˜¤í”„ì…‹ì€ ê¸°ë¡ ëª©ë¡ ë부터 거꾸로 셉니다\n"
+" \n"
+" -a\tì´ ì„¸ì„ ì˜ ê¸°ë¡ íŒŒì¼ì— ê¸°ë¡ í–‰ì„ ì¶”ê°€í•©ë‹ˆë‹¤\n"
+" -n\tê¸°ë¡ íŒŒì¼ì—ì„œ ì´ë¯¸ ì½ì€ ë¶€ë¶„ì€ ì½ì§€ ì•Šê³  모든 ê¸°ë¡ í•­ëª©ì„\n"
+" \t\tì½ì–´ ê¸°ë¡ ëª©ë¡ì— 추가합니다\n"
+" -r\tê¸°ë¡ íŒŒì¼ì„ ì½ê³  ê¸°ë¡ ëª©ë¡ì— ë‚´ìš©ì„ ì¶”ê°€í•©ë‹ˆë‹¤\n"
+" -w\t현재 기ë¡ì„ ê¸°ë¡ íŒŒì¼ì— 기ë¡í•©ë‹ˆë‹¤\n"
+" \n"
+" -p\tê° <ì¸ìž>ì˜ ê¸°ë¡ í™•ìž¥ì„ ìˆ˜í–‰í•œ 후 ê¸°ë¡ ëª©ë¡ì— 저장하지\n"
+" \t\t않고 결과를 표시합니다\n"
+" -s\t<ì¸ìž>를 ê¸°ë¡ ëª©ë¡ì— ë‹¨ì¼ í•­ëª©ìœ¼ë¡œ 추가합니다\n"
+" \n"
+" <파ì¼ì´ë¦„>ì„ ì§€ì •í•˜ë©´ ê¸°ë¡ íŒŒì¼ë¡œ 사용합니다. 아니면,\n"
+" HISTFILE ë³€ìˆ˜ì— ê°’ì„ ì§€ì •í–ˆë‹¤ë©´ 해당 ê°’ì„ ì‚¬ìš©í•˜ê³ , \n"
+" 아니면 ~/.bash_history를 활용합니다.\n"
+" \n"
+" HISTTIMEFORMAT ë³€ìˆ˜ì— ê°’ì„ ì„¤ì •í•˜ì—¬ ë„ ìƒíƒœê°€ 아니ë¼ë©´ 해당 ê°’ì„\n"
+" 앞으로 표시할 ê° ê¸°ë¡ í•­ëª©ì— ëŒ€í•œ 타임스탬프를 출력할 ë•Œ strftime(3)ì˜\n"
+" í˜•ì‹ ë¬¸ìžì—´ë¡œ 활용합니다. 그렇지 않으면 타임스탬프를 출력하지 않습니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì„¤ì •í–ˆê±°ë‚˜ 오류가 없다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:879
msgid ""
@@ -3229,6 +3541,25 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs.\n"
" If -x is used, returns the exit status of COMMAND."
msgstr ""
+"ìž‘ì—… ìƒíƒœë¥¼ 표시합니다.\n"
+" \n"
+" 활성 ìž‘ì—…ì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤. JOBSPECì—는 해당 ìž‘ì—…ì˜ ì¶œë ¥ì„\n"
+" 제한합니다. ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않으면 모든 활성 ìž‘ì—… ìƒíƒœë¥¼\n"
+" 나타냅니다.\n"
+" \n"
+" 옵션:\n"
+" -l\tì¼ë°˜ ì •ë³´ ë° í”„ë¡œì„¸ìŠ¤ ID를 ë³´ì—¬ì¤ë‹ˆë‹¤.\n"
+" -n\t최근 알림 ì´í›„ ìƒíƒœê°€ ë°”ë€ í”„ë¡œì„¸ìŠ¤ë§Œ ë³´ì—¬ì¤ë‹ˆë‹¤.\n"
+" -p\t프로세스 ID만 ë³´ì—¬ì¤ë‹ˆë‹¤\n"
+" -r\t출력 대ìƒì„ 실행 작업으로 제한합니다\n"
+" -s\t출력 대ìƒì„ 멈춘 작업으로 제한합니다\n"
+" \n"
+" -x ì˜µì…˜ì„ ì§€ì •í•˜ë©´ <ì¸ìž>ì— ë‚˜íƒ€ë‚œ 모든 ìž‘ì—… 명세가 프로세스 그룹ì˜\n"
+" ë¦¬ë” í”„ë¡œì„¸ìŠ¤ IDë¡œ ë°”ë€ í›„ <명령> ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì„¤ì •í–ˆê±°ë‚˜ 오류가 없다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤.\n"
+" -x ì˜µì…˜ì„ ì‚¬ìš©í–ˆë‹¤ë©´ <명령>ì˜ ì¢…ë£Œ ìƒíƒœë¥¼ 반환합니다."
#: builtins.c:906
msgid ""
@@ -3246,6 +3577,19 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
+"현재 ì…¸ì—ì„œ ìž‘ì—…ì„ ì œê±°í•©ë‹ˆë‹¤.\n"
+" \n"
+" ê° <JOBSPEC> ì¸ìžë¥¼ 활성 ìž‘ì—… í…Œì´ë¸”ì—ì„œ 제거합니다. ì–´ë–¤ <JOBSPEC>ë„\n"
+" 지정하지 않으면, 현재 ìž‘ì—…ì„ ì§€ì •í•œ 것으로 간주합니다.\n"
+" \n"
+" 옵션:\n"
+" -a\t<JOBSPEC>를 지정하지 않으면 모든 ìž‘ì—…ì„ ì œê±°í•©ë‹ˆë‹¤\n"
+" -h\tê° <JOBSPEC>ì„ ë§ˆí‚¹í•´ì„œ ì…¸ì—ì„œ SIGHUP 시그ë„ì„ ë°›ì•˜ë‹¤ë©´\n"
+" \t\tìž‘ì—…ì— í•´ë‹¹ 시그ë„ì„ ë³´ë‚´ì§€ 않게 합니다.\n"
+" -r\t실행 작업만 제거합니다\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í•˜ê³  주어진 <JOBSPEC> ê°’ì´ ì˜¬ë°”ë¥¼ 경우 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:925
msgid ""
@@ -3269,6 +3613,25 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
+"ìž‘ì—…ì— ì‹œê·¸ë„ì„ ë³´ëƒ…ë‹ˆë‹¤..\n"
+" \n"
+" <PID> ë˜ëŠ” <JOBSPEC>으로 ì‹ë³„하는 í”„ë¡œì„¸ìŠ¤ì— SIGSPEC ë˜ëŠ”\n"
+" SIGNUM으로 ì´ë¦„ì´ ë¶™ì€ ì‹œê·¸ë„ì„ ë³´ëƒ…ë‹ˆë‹¤. SIGSPEC, SIGNUM \n"
+" ëŒ ë‹¤ ì—†ì„ ê²½ìš°, SIGTERMì„ ê³ ë ¤í•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -s <시그ë„>\t<시그ë„>ì€ ì‹œê·¸ë„ ì´ë¦„입니다\n"
+" -n <시그ë„>\t<시그ë„>ì€ ì‹œê·¸ë„ ë²ˆí˜¸ìž…ë‹ˆë‹¤\n"
+" -l\tì‹œê·¸ë„ ì´ë¦„ 목ë¡ì„ 나타냅니다. ì¸ìžì— `-l'ì„ ë¶™ì´ë©´ 나타낼 ì´ë¦„ì—\n"
+" \t\t대한 ì‹œê·¸ë„ ë²ˆí˜¸ë¥¼ 나타내ë¼ëŠ” ì˜ë¯¸ìž…니다\n"
+" -L\t-lê³¼ ë™ì¼í•œ ì˜ë¯¸\n"
+" \n"
+" ë‘가지 ì´ìœ ë¡œ killì€ ì…¸ 내장 명령입니다: 프로세스 ID 대신 ìž‘ì—… ID를\n"
+" 허용하며, 만들 수 있는 프로세스 ìˆ˜ì˜ í•œê³„ì— ë„ë‹¬í–ˆì„ ë•Œ 강제로 ë내야\n"
+" í•  프로세스를 강제로 ë낼 수 있습니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì„¤ì •í–ˆê±°ë‚˜ 오류가 없다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:949
msgid ""
@@ -3277,8 +3640,7 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
+" grouped into levels of equal-precedence operators. The levels are listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3314,22 +3676,57 @@ msgid ""
" Exit Status:\n"
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
+"산술 ì—°ì‚°ì„ ì²˜ë¦¬í•©ë‹ˆë‹¤.\n"
+" \n"
+" ê° <ì¸ìž>ì˜ ì‚°ìˆ  ì—°ì‚°ì„ ì²˜ë¦¬í•©ë‹ˆë‹¤. 오버플로우를 검사하지 ì•Šê³ \n"
+" ê³ ì • ê¸¸ì´ ì •ìˆ˜ë¡œ 처리하며, 0나누기 ë™ìž‘ì€ ìž¡í˜€ì„œ 오류로 표시합니다.\n"
+" ë‹¤ìŒ ì—°ì‚°ìž ëª©ë¡ì€ ë™ì¼í•œ 우선순위별로 묶었습니다. 우선순위 수준ì€\n"
+" 우선순위가 ê°ì†Œí•˜ëŠ” 순서대로 나열했습니다.\n"
+" \n"
+" \tid++, id--\të³€ìˆ˜ì˜ í›„ìœ„ ì¦ê°€, 후위 ê°ì†Œ\n"
+" \t++id, --id\të³€ìˆ˜ì˜ ì „ìœ„ ì¦ê°€, 전위 ê°ì†Œ\n"
+" \t-, +\t\tìŒ, ì–‘ 부호\n"
+" \t!, ~\t\t논리, 비트 반전\n"
+" \t**\t\t지수 연산\n"
+" \t*, /, %\t\t곱하기, 나누기, 나머지\n"
+" \t+, -\t\të”하기, 빼기\n"
+" \t<<, >>\t\t좌측, 우측 비트 ì´ë™\n"
+" \t<=, >=, <, >\t비êµ\n"
+" \t==, !=\t\të™ë“±, ìƒì´\n"
+" \t&\t\t비트 논리곱\n"
+" \t^\t\t비트 배타합\n"
+" \t|\t\t비트 논리합\n"
+" \t&&\t\t논리 논리곱\n"
+" \t||\t\t논리 논리합\n"
+" \t<수ì‹> ? <수ì‹> : <수ì‹>\n"
+" \t\t\t3í•­ ì¡°ê±´ ì—°ì‚°ìž\n"
+" \t=, *=, /=, %=,\n"
+" \t+=, -=, <<=, >>=,\n"
+" \t&=, ^=, |=\t할당\n"
+" \n"
+" ì…¸ 변수를 피연산ìžë¡œ 활용할 수 있습니다. ìˆ˜ì‹ ë‚´ 변수 ì´ë¦„ì€ ê°’ìœ¼ë¡œ \n"
+" ë°”ë€ë‹ˆë‹¤(ê³ ì • ê¸¸ì´ ì •ìˆ˜ë¡œ ê°•ì œ 변환) 변수는 수ì‹ì—ì„œ 활용할 정수 \n"
+" ì†ì„±ì„ 가질 필요는 없습니다.\n"
+" \n"
+" ì—°ì‚°ìžëŠ” 우선순위 순서대로 처리합니다. 괄호 ë‚´ 하위 ì—°ì‚°ì„ ìš°ì„ \n"
+" 처리하며, ì´ ë˜í•œ ìœ„ì˜ ìš°ì„ ìˆœìœ„ ê·œì¹™ì„ ë”°ë¦…ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <ì¸ìž>ê°€ 0ì„ ê³„ì‚°í•˜ë©´ 1ì„ ë°˜í™˜í•˜ê³  그렇지 않으면 0ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
+" if the -u option is supplied. The line is split into fields as with word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
-" delimiters.\n"
+" the last NAME. Only the characters found in $IFS are recognized as word\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3341,8 +3738,7 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -3360,14 +3756,48 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-" (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times out\n"
+" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
+"표준 ìž…ë ¥ì—ì„œ í–‰ì„ ì½ê³  í•„ë“œ 단위로 분리합니다.\n"
+" \n"
+" 표준 ìž…ë ¥ ë˜ëŠ” -u ì˜µì…˜ì„ ì§€ì •í–ˆì„ ê²½ìš° íŒŒì¼ ì„œìˆ ìžì—ì„œ ë‹¨ì¼ í–‰ì„\n"
+" ì½ìŠµë‹ˆë‹¤. í–‰ì€ ë‹¨ì–´ë¥¼ 분리할 때처럼 필드로 분리하며, 첫번째 단어는\n"
+" ì²˜ìŒ <ì´ë¦„>으로, ë‘번째 단어는 ë‘번째 <ì´ë¦„>으로 ì´ëŸ° ì‹ìœ¼ë¡œ 할당\n"
+" 하여 나머지 단어ì—ì„œë„ ì—­ì‹œ ê·¸ ë‹¤ìŒ <ì´ë¦„>으로 할당합니다. ì˜¤ì§ $IFS\n"
+" ì˜ ë¬¸ìžë§Œ 단어 구분ìžë¡œ ì¸ì‹í•©ë‹ˆë‹¤. 기본ì ìœ¼ë¡œ 백슬래시 문ìžëŠ” 구분\n"
+" 문ìžì™€ 개행 문ìžë¥¼ ì´ìŠ¤ì¼€ì´í•‘합니다.\n"
+" \n"
+" <ì´ë¦„>ì„ ì§€ì •í•˜ì§€ 않으면, 해당 í–‰ì„ REPLY ë³€ìˆ˜ì— ì €ìž¥í•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -a <ë°°ì—´>\t0부터 시작하는 ARRAY ë°°ì—´ ë³€ìˆ˜ì˜ ìˆœì°¨ 색ì¸ì„ ì½ì„\n"
+" \t\t단어를 할당합니다\n"
+" -d <구분>\t개행 문ìžê°€ ì•„ë‹Œ DELIMì˜ ì²« 글ìžë¥¼ ì½ì„ 때까지 계ì†í•©ë‹ˆë‹¤\n"
+" -e\tí–‰ ì½ê¸°ì— readlineì„ í™œìš©í•©ë‹ˆë‹¤\n"
+" -i <í…스트>\treadline 초기 í…스트 값으로 TEXT를 활용합니다.\n"
+" -n <문ìžìˆ˜>\t개행 문ìžë¥¼ 기다리기 보다는 <문ìžìˆ˜> 만í¼ì˜ 문ìžë¥¼ ì½ì€ 다ìŒ\n"
+" \t\t반환합니다만, 구분 문ìžê°€ 나타나기 ì „ì— <문ìžìˆ˜> ë§Œí¼ ì½ì—ˆì„ ë•Œ 개행 문ìžê°€\n"
+" \t\t먼저 오면 구분 문ìžë³´ë‹¤ 개행 문ìžë¥¼ ìš°ì„  처리합니다.\n"
+" -N <문ìžìˆ˜>\tEOFê°€ 나타났거나, ì½ê¸° 시간 초과가 있지 ì•Šì€ í•œ,\n"
+" \t\t<문ìžìˆ˜> ë§Œí¼ ë¬¸ìžë¥¼ ì½ì€ ë‹¤ìŒ êµ¬ë¶„ìžë¥¼ 무시하고 ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤.\n"
+" -p <프롬프트>\tì½ê¸° ì „, 개행 문ìžë¥¼ 제외하고 PROMPT 문ìžì—´ì„ 출력합니다\n"
+" -r\t문ìžë¥¼ ì´ìŠ¤ì¼€ì´í•‘하는 백슬래시 문ìžë¥¼ 허용하지 않습니다\n"
+" -s\t터미ë„ì˜ ìž…ë ¥ì— ëŒ€í•´ 반향 출력 처리하지 않습니다\n"
+" -t <제한시간>\tTIIMEOUT ì´ˆ ì´ë‚´ì— ìž…ë ¥ í–‰ì„ ì™„ì „ížˆ ì½ì§€ 않으면 실패를\n"
+" \t\t반환합니다. TMOUT 변수 기본 ê°’ì€ ê¸°ë³¸ 제한시간입니다. TIMEOUTì€\n"
+" \t\t분수 값입니다. ì´ ê°’ì„ 0으로 지정하면, ì–´ë–¤ 결과를 ì½ìœ¼ë ¤ ì‹œë„하지 ì•Šê³ \n"
+" \t\tì½ì€ 결과를 바로 반환하며, 지정 íŒŒì¼ ì„œìˆ ìžì— ìž…ë ¥ì´ ìžˆì„ ê²½ìš°ì—만\n"
+" \t\tì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤. ì‹œê°„ì„ ì´ˆê³¼í•˜ë©´ 종료 ìƒíƒœê°’ì€ 128보다 í½ë‹ˆë‹¤.\n"
+" -u <파ì¼ì„œìˆ ìž>\t표준 ìž…ë ¥ 대신 íŒŒì¼ ì„œìˆ ìžì—ì„œ ì½ìŠµë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" EOFê°€ 나타나지 않았다거나, ì½ê¸° ì‹œê°„ì„ ì´ˆê³¼í•˜ì§€ 않았다거나(초과하면 \n"
+" 128보다 í° ìˆ˜ 반환), 변수 할당 오류가 없었다거나, -u ì˜µì…˜ì— ìž˜ëª»ëœ íŒŒì¼\n"
+" 서술ìžë¥¼ 지정하지 않았다면 0 ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3378,8 +3808,17 @@ msgid ""
" Exit Status:\n"
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
+"ì…¸ 함수로부터 ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤.\n"
+" \n"
+" 함수 ë˜ëŠ” 소싱 스í¬ë¦½íŠ¸ë¡œ 하여금 반환 ê°’ì„ ë‚´ë†“ë„ë¡ í•©ë‹ˆë‹¤.\n"
+" <횟수>ë¡œ 지정합니다. <횟수> ê°’ì„ ìƒëžµí•˜ë©´, 반환 ìƒíƒœëŠ”\n"
+" 스í¬ë¦½íŠ¸ 함수 ë‚´ 최종 명령 실행 ê²°ê³¼ì— ë”°ë¦…ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <횟수>를 반환하거나, ì…¸ì—ì„œ 함수 ë˜ëŠ” 스í¬ë¦½íŠ¸ë¥¼\n"
+" 실행하지 않으면 실패를 반환합니다."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3422,8 +3861,7 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
+" or zero if no command exited with a non-zero status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -3447,8 +3885,7 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell "
-"functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -3464,8 +3901,84 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
msgstr ""
+"ì…¸ 옵션과 위치 매개변수를 설정 ë˜ëŠ” 설정 해제합니다.\n"
+" \n"
+" ì…¸ ì†ì„± ê°’ ë° ìœ„ì¹˜ 매개변수를 바꾸거나, ì…¸ ë³€ìˆ˜ì˜ ì´ë¦„ê³¼ ê°’ì„\n"
+" 표시합니다.\n"
+" \n"
+" 옵션:\n"
+" -a 환경으로 내보내려 수정하거나 만든 변수를 표시합니다.\n"
+" -b ìž‘ì—… 중단 ì•Œë¦¼ì„ ì¦‰ì‹œ 수행.\n"
+" -e ëª…ë ¹ì´ 0 ê°’ì´ ì•„ë‹Œ ìƒíƒœë¥¼ 내보냈다면 즉시 나ê°.\n"
+" -f íŒŒì¼ ì´ë¦„ ìƒì„± 사용 안힘(글로빙).\n"
+" -h ì°¾ì€ ëª…ë ¹ 위치 기억.\n"
+" -k 명령 ì´ë¦„ì— ì•žì„  요소 ë¿ë§Œ ì•„ë‹ˆë¼ ëª…ë ¹ ì‹¤í–‰ì— í•„ìš”í•œ 모든\n"
+" 할당 ì¸ìžë¥¼ í™˜ê²½ì— ì„¤ì •í•©ë‹ˆë‹¤.\n"
+" -m ìž‘ì—… ì»¨íŠ¸ë¡¤ì„ í™œì„±í•©ë‹ˆë‹¤..\n"
+" -n ëª…ë ¹ì€ ì½ë˜ 실행하지는 않습니다.\n"
+" -o <명령-ì´ë¦„>\n"
+" <옵션-ì´ë¦„>ê³¼ 관련한 변수를 설정합니다:\n"
+" allexport -a와 ë™ì¼\n"
+" braceexpand -B와 ë™ì¼\n"
+" emacs ì´ë§¥ìŠ¤ ë°©ì‹ í–‰ 편집 ì¸í„°íŽ˜ì´ìŠ¤ 활용\n"
+" errexit -e와 ë™ì¼\n"
+" errtrace -E와 ë™ì¼\n"
+" functrace -T와 ë™ì¼\n"
+" hashall -h와 ë™ì¼\n"
+" histexpand -H와 ë™ì¼\n"
+" history 명령 ê¸°ë¡ ì‚¬ìš©\n"
+" ignoreeof EOF를 ì½ê³  나서 ì…¸ì„ ë‚˜ê°€ì§€ ì•ŠìŒ\n"
+" interactive-comments\n"
+" interactive commandsì— ë‚˜íƒ€ë‚œ ì£¼ì„ í—ˆìš©\n"
+" keyword -k와 ë™ì¼\n"
+" monitor -mê³¼ ë™ì¼\n"
+" noclobber -C와 ë™ì¼\n"
+" noexec -nê³¼ ë™ì¼\n"
+" noglob -f와 ë™ì¼\n"
+" nolog 현재 허용하나 무시함\n"
+" notify -b와 ë™ì¼\n"
+" nounset -u와 ë™ì¼\n"
+" onecmd -t와 ë™ì¼\n"
+" physical -P와 ë™ì¼\n"
+" pipefail 파ì´í”„ë¼ì¸ 반환 ê°’ì€ ìµœì¢… ëª…ë ¹ì˜ 0ì´ ì•„ë‹Œ\n"
+" 종료 ìƒíƒœì´ê±°ë‚˜, 0ì´ ì•„ë‹Œ 종료 ìƒíƒœë¥¼ 반환한 명령ì´\n"
+" 없다면 0 ê°’ì„ ë°˜í™˜í•¨\n"
+" posix ë°°ì‹œ ë™ìž‘ì„ ë°”ê¾¸ì–´ POSIX 표준과 다른 기본 ë™ìž‘\n"
+" ë¶€ë¶„ì„ í‘œì¤€ì— ë§žì¶¤\n"
+" privileged -p와 ë™ì¼\n"
+" verbose -v와 ë™ì¼\n"
+" vi vi ë°©ì‹ í–‰ 종결 ì¸í„°íŽ˜ì´ìŠ¤\n"
+" xtrace -x와 ë™ì¼\n"
+" -p 실제 ID와 íš¨ë ¥ìƒ IDê°€ ì¼ì¹˜í•˜ì§€ ì•Šì„ ë•Œë¼ë„ 켭니다.\n"
+" $ENV 파ì¼ì˜ 처리와 ì…¸ 함수 가져오기 ë™ìž‘ì„ ë•ë‹ˆë‹¤.\n"
+" ì´ ì˜µì…˜ì„ ë„ë©´ íš¨ë ¥ìƒ ì‚¬ìš©ìž ID와 그룹 ID를 실제\n"
+" ì‚¬ìš©ìž ID와 그룹 IDë¡œ 설정합니다.\n"
+" -t 명령하나를 ì½ê³  실행한 후 나갑니다.\n"
+" -u 설정 해제한 변수를 대체할 때 오류로 간주.\n"
+" -v ì…¸ ìž…ë ¥ í–‰ì„ ì½ëŠ”대로 출력합니다.\n"
+" -x 명령과 ì¸ìžë¥¼ 실행하는 대로 출력합니다.\n"
+" -B ì…¸ì— ì¤‘ê´„í˜¸ í™•ìž¥ì„ ìˆ˜í–‰í•˜ê²Œ 합니다\n"
+" -C ì´ ì˜µì…˜ì„ ì„¤ì •í•˜ë©´, 기존 ì¼ë°˜ 파ì¼ì— 출력 ë°©í–¥ ìž¬ì§€ì •ì„ í†µí•œ\n"
+" ë‚´ìš© ë®ì–´ì“°ê¸°ë¥¼ 허용하지 않습니다.\n"
+" -E ì´ ì˜µì…˜ì„ ì„¤ì •í•˜ë©´, ERR íŠ¸ëž©ì„ ì…¸ 함수ì—ì„œ 승계합니다.\n"
+" -H ! ë°©ì‹ ê¸°ë¡ ëŒ€ì²´ë¥¼ 활성화합니다. ì´ í”Œëž˜ê·¸ëŠ” ì…¸ì´ ëŒ€í™”ëª¨ë“œì¼ ë–„\n"
+" 기본ì ìœ¼ë¡œ 사용 ìƒíƒœìž…니다..\n"
+" -P ì´ ì˜µì…˜ì„ ì„¤ì •í•˜ë©´, 현재 디렉터리를 바꾸는 cd 명령과 ê°™ì€ ê·¸ë ¨\n"
+" ëª…ë ¹ì„ ì‹¤í–‰í•  ë•Œ 심볼릭 ë§í¬ë¥¼ í•´ì„하지 않습니다.\n"
+" -T ì´ ì˜µì…˜ì„ ì„¤ì •í•˜ë©´, DEBUG와 RETURNì„ ì…¸ 함수ì—ì„œ 계승합니다..\n"
+" -- ë‚¨ì€ ì¸ìžë¥¼ 위치 매개변수로 할당합니다. ë‚¨ì€ ì¸ìžê°€ 없으면\n"
+" 위치 매개변수를 삭제합니다.\n"
+" - ë‚¨ì€ ì¸ìžë¥¼ 위치 매개변수로 할당합니다. -x 옵션과 -v ì˜µì…˜ì„ ë•ë‹ˆë‹¤.\n"
+" \n"
+" 플래그를 사용하려면 + 를, 아니면 - 기호를 ì”니다. 플래그는 ì…¸ 실행애\n"
+" 활용할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. 현재 플래그 ì…‹ì€ $-ì— ìžˆìŠµë‹ˆë‹¤. ë‚¨ì€ <ì¸ìž>는\n"
+" $1, $2, ... $n 순으로 할당한 위치 매개변수입니다. 지정 <ì¸ìž>ê°€ 없으면\n"
+" 모든 셸 변수를 출력합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í•˜ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3477,8 +3990,7 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
+" Without options, unset first tries to unset a variable, and if that fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -3486,14 +3998,30 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
+"ì…¸ 변수와 í•¨ìˆ˜ì˜ ê°’ê³¼ ì†ì„± ì„¤ì •ì„ í•´ì œí•©ë‹ˆë‹¤.\n"
+" \n"
+" ê° <ì´ë¦„>ì— ëŒ€í•´ 관련 변수 ë˜ëŠ” 함수를 제거합니다.\n"
+" \n"
+" 옵션:\n"
+" -f\tê° <ì´ë¦„>ì„ ì…¸ 함수로 취급합니다.\n"
+" -v\tê° <ì´ë¦„>ì„ ì…¸ 변수로 취급합니다.\n"
+" -n\tê° <ì´ë¦„>ì„ ì´ë¦„ 참조ìžë¡œ 활용하며, ì´ë¦„ì„ ì°¸ì¡°í•˜ëŠ” 변수가 ì•„ë‹Œ\n"
+" \t\t변수 ìžì²´ë¥¼ 참조하는 ì´ë¦„ ì„¤ì •ì„ í•´ì œí•©ë‹ˆë‹¤\n"
+" \n"
+" ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않으면, 변수를 ìš°ì„  설정 해제하려고 하며, 실패했다면,\n"
+" 함수 설정 해제를 ì‹œë„합니다.\n"
+" \n"
+" ì¼ë¶€ 변수는 ì„¤ì •ì„ í•´ì œí•  수 없습니다. `readonly' 참조.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í–ˆê±°ë‚˜ <ì´ë¦„>ì´ ì½ê¸° ì „ìš©ì´ ì•„ë‹ˆë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -3505,8 +4033,22 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
+"ì…¸ 변수 ì†ì„±ì„ 내보내기 설정합니다.\n"
+" \n"
+" ê° <ì´ë¦„>ì€ ëª…ë ¹ì„ ê³„ì† ì‹¤í–‰í•´ë‚˜ê°€ë©´ì„œ í™˜ê²½ì— ë‚´ë³´ë‚´ê¸°(export)처리 합니다.\n"
+" <ê°’>ì„ ì§€ì •í–ˆë‹¤ë©´ 내보내기(export) ì „, <ê°’>ì„ í• ë‹¹í•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -f\t셸 함수를 참조합니다\n"
+" -n\tê° <ì´ë¦„>ì˜ ë‚´ë³´ë‚´ê¸° ì†ì„±ì„ 제거합니다\n"
+" -p\tí™˜ê²½ì— ë‚´ë³´ë‚¸ 변수와 함수 목ë¡ì„ 나타냅니다\n"
+" \n"
+" `--' ì¸ìžëŠ” ì´í›„ 옵션 처리를 막습니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì„¤ì •í–ˆê±°ë‚˜ <ì´ë¦„>ì´ ì˜¬ë°”ë¥´ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3526,8 +4068,25 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
+"셸 변수를 바꾸지 못하게 합니다.\n"
+" \n"
+" ê° <ì´ë¦„>ì„ ì½ê¸° 전용으로 만듭니다. ì´ <ì´ë¦„>ì˜ ê°’ì€ ì•žìœ¼ë¡œì˜ í• ë‹¹\n"
+" ë™ìž‘ì—ì„œ 바뀌지 않습니다. <ê°’>ì„ ì§€ì •í–ˆë‹¤ë©´ ì½ê¸° 전용으로 지정하기 ì „\n"
+" <값>부터 할당합니다.\n"
+" \n"
+" 옵션:\n"
+" -a\tìƒ‰ì¸ ë°°ì—´ 변수를 참조합니다\n"
+" -A\t연관 배열 변수를 참조합니다\n"
+" -f\t셸 함수를 참조합니다\n"
+" -p\t-f ì˜µì…˜ì˜ ì§€ì • ì—¬ë¶€ì— ë”°ë¼ ëª¨ë“  ì½ê¸° ì „ìš© 변수\n"
+" \t\të˜ëŠ” 함수를 표시합니다\n"
+" \n"
+" `--' ì¸ìžëŠ” ì´í›„ 옵션 처리를 중단합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í–ˆê±°ë‚˜ <ì´ë¦„>ì´ ì˜¬ë°”ë¥´ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3537,8 +4096,15 @@ msgid ""
" Exit Status:\n"
" Returns success unless N is negative or greater than $#."
msgstr ""
+"위치 매개변수를 ì´ë™í•©ë‹ˆë‹¤.\n"
+" \n"
+" <초기횟수> ê°’ì„ ì§€ì •í•˜ì§€ 않으면 , $<초기횟수>+1, $<초기횟수>+2,\n"
+" ... $1, $2 ... ë¡œ 위치 매개변수 ì´ë¦„ì„ ë°”ê¾¸ë©°, <초기횟수> ê°’ì€ 1ë¡œ 가정합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <횟수>ê°€ 양수거나 $# 보다 작거나 같으면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3551,8 +4117,17 @@ msgid ""
" Returns the status of the last command executed in FILENAME; fails if\n"
" FILENAME cannot be read."
msgstr ""
+"현재 ì…¸ì˜ íŒŒì¼ì—ì„œ ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" 현제 ì…¸ì˜ <파ì¼ì´ë¦„>ì—ì„œ ëª…ë ¹ì„ ì½ê³  실행합니다. $PATH í•­ëª©ì€ <파ì¼\n"
+" ì´ë¦„>ì— ìžˆëŠ” 디렉터리를 ì°¾ì„ ë•Œ 활용합니다. <ì¸ìž>를 지정했다면, \n"
+" <파ì¼ì´ë¦„>ì„ ì‹¤í–‰í•  ë•Œ 위치 매개 변수가 ë”°ë¼ì˜µë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <파ì¼ì´ë¦„>ì˜ ë§ˆì§€ë§‰ 명령 실행 ìƒíƒœë¥¼ 반환합니다. <파ì¼ì´ë¦„>ì„\n"
+" ì½ì§€ 못하면, 실패를 반환합니다."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3565,19 +4140,18 @@ msgid ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-"쉘 ì‹¤í–‰ì„ ì¼ì‹œì •ì§€í•©ë‹ˆë‹¤.\n"
+"ì…¸ ì‹¤í–‰ì„ ìž ì‹œ 멈춥니다.\n"
" \n"
-" SIGCONT 신호를 ë°›ì„ ë•Œ 까지 ì‰˜ì˜ ì‹¤í–‰ì„ ì¼ì‹œ 정지합니다.\n"
-" ê°•ì œ ì˜µì…˜ì´ ì—†ëŠ” 경우 ë¡œê·¸ì¸ ì‰˜ì€ ì¼ì‹œ ì •ì§€ë  ìˆ˜ 없습니다.\n"
+" SIGCONT 시그ë„를 ë°›ì„ ë•Œ 까지 ì…¸ì˜ ì‹¤í–‰ì„ ì¼ì‹œ 정지합니다.\n"
+" ê°•ì œ ì˜µì…˜ì´ ì—†ëŠ” 경우 ë¡œê·¸ì¸ ì…¸ì€ ì¼ì‹œ ì •ì§€ë  ìˆ˜ 없습니다.\n"
" \n"
" 옵션:\n"
-" -f\të¡œê·¸ì¸ ì‰˜ì˜ ê²½ìš°ì—ë„ ì¼ì‹œ 정지를 강제합니다.\n"
+" -f\të¡œê·¸ì¸ ì…¸ì˜ ê²½ìš°ì—ë„ ì¼ì‹œ 정지를 강제합니다.\n"
" \n"
" 종료 ìƒíƒœ:\n"
-" job controlì´ í™œì„±í™”ë˜ì§€ 않았거나 오류가 ë°œìƒí•˜ì§€ 않으면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆ"
-"다."
+" ìž‘ì—… ì»¨íŠ¸ë¡¤ì´ ë™ìž‘하거나 오류가 없으면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3611,8 +4185,7 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
+" -N FILE True if the file has been modified since it was last read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -3633,8 +4206,7 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+" True if STRING1 sorts before STRING2 lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -3659,33 +4231,118 @@ msgid ""
" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
" false or an invalid argument is given."
msgstr ""
+"ì¡°ê±´ì‹ì„ 처리합니다.\n"
+" \n"
+" <표현ì‹>ì˜ ê³„ì‚° ê²°ê³¼ì— ë”°ë¼ 0(ì°¸) ë˜ëŠ” 1(거짓) ìƒíƒœ ê°’ì„\n"
+" ë‚´ë©° 빠져나옵니다. 수ì‹ì€ 단항 ìˆ˜ì‹ ë˜ëŠ” ì´í•­ 수ì‹ì¼ 수 있습니다.\n"
+" 단항 수ì‹ì€ 보통 íŒŒì¼ ìƒíƒœë¥¼ 확ì¸í•  ë•Œ 사용합니다. ìˆ«ìž ë¹„êµ \n"
+" ì—°ì‚°ìžì™€ 마찬가지로 문ìžì—´ ì—°ì‚°ìžë„ 있습니다.\n"
+" \n"
+" 테스트 ë™ìž‘ì€ ì¸ìž ê°¯ìˆ˜ì— ë”°ë¦…ë‹ˆë‹¤. 완전한 ë‚´ìš©ì„ ì•Œì•„ë³´ë ¤ë©´,\n"
+" ë°°ì‹œ 설명서 페ì´ì§€ë¥¼ ì½ì–´ë³´ì‹­ì‹œì˜¤.\n"
+" \n"
+" íŒŒì¼ ì—°ì‚°ìž:\n"
+" \n"
+" -a <파ì¼> 파ì¼ì´ 있으면 ì°¸.\n"
+" -b <파ì¼> ë¸”ë¡ íŠ¹ìˆ˜ 파ì¼ì´ë©´ ì°¸.\n"
+" -c <파ì¼> ë¬¸ìž íŠ¹ìˆ˜ 파ì¼ì´ë©´ ì°¸.\n"
+" -d <파ì¼> 파ì¼ì´ 디렉터리면 ì°¸.\n"
+" -e <파ì¼> 파ì¼ì´ 있으면 ì°¸.\n"
+" -f <파ì¼> ì¼ë°˜ 파ì¼ì´ 있으면 ì°¸.\n"
+" -g <파ì¼> 파ì¼ì´ 그룹 ID 모ìŒì´ë©´ ì°¸.\n"
+" -h <파ì¼> 파ì¼ì´ 심볼릭 ë§í¬ë©´ ì°¸.\n"
+" -L <파ì¼> 파ì¼ì´ 심볼릭 ë§í¬ë©´ ì°¸.\n"
+" -k <파ì¼> 파ì¼ì— `ëˆì ì´' 비트 ì„¤ì •ì´ ìžˆìœ¼ë©´ ì°¸.\n"
+" -p <파ì¼> 파ì¼ì´ 명명 파ì´í”„ë©´ ì°¸.\n"
+" -r <파ì¼> 파ì¼ì„ ì½ì„ 수 잇으면 ì°¸.\n"
+" -s <파ì¼> 비아있지 ì•Šì€ íŒŒì¼ì´ 있으면 ì°¸.\n"
+" -S <파ì¼> 소켓 파ì¼ì´ë©´ ì°¸.\n"
+" -t <파ì¼ì„œìˆ ìž> <파ì¼ì„œìˆ ìž>를 터미ë„ì—ì„œ ì—´ë©´ ì°¸.\n"
+" -u <파ì¼> 파ì¼ì´ ì‚¬ìš©ìž ID 세트면 ì°¸.\n"
+" -w <파ì¼> 파ì¼ì„ 기ë¡í•  수 있으면 ì°¸.\n"
+" -x <파ì¼> 파ì¼ì„ 실행할 수 있으면 ì°¸.\n"
+" -O <파ì¼> 파ì¼ì„ 명백히 소유하면 ì°¸.\n"
+" -G <파ì¼> 파ì¼ì„ 명백시 ì†Œì† ê·¸ë£¹ì—ì„œ 소유하면 ì°¸.\n"
+" -N <파ì¼> 파ì¼ì„ ì½ì€ 후 수정했다면 ì°¸.\n"
+" \n"
+" <파ì¼1> -nt <파ì¼2> 파ì¼1ì´ íŒŒì¼2보다 최신ì´ë©´\n"
+" (수정ì¼ìžì— ë”°ë¼)ì°¸.\n"
+" \n"
+" <파ì¼1> -ot <파ì¼2> 파ì¼2ê°€ 파ì¼1보다 최신ì´ë©´ ì°¸.\n"
+" \n"
+" <파ì¼1> -ef <파ì¼2> 파ì¼1ì´ íŒŒì¼2ì˜ í•˜ë“œë§í¬ë¼ë©´ ì°¸.\n"
+" \n"
+" 문ìžì—´ ì—°ì‚°ìž:\n"
+" \n"
+" -z <문ìžì—´> 문ìžì—´ì´ 비었으면 ì°¸.\n"
+" \n"
+" -n <문ìžì—´>\n"
+" <문ìžì—´> 문ìžì—´ì´ 있으면 ì°¸.\n"
+" \n"
+" <문ìžì—´1> = <문ìžì—´2>\n"
+" 문ìžì—´ì´ 같으면 ì°¸.\n"
+" <문ìžì—´1> != <문ìžì—´2>\n"
+" 문ìžì—´ì´ 다르면 ì°¸.\n"
+" <문ìžì—´1> < <문ìžì—´2>\n"
+" 문ìžì—´1ì´ ë¬¸ìžì—´2보다 ë¬¸ìž ìˆœì„œìƒ ë¨¼ì €ì¼ ê²½ìš° ì°¸.\n"
+" <문ìžì—´1> > <문ìžì—´2>\n"
+" 문ìžì—´1ì´ ë¬¸ìžì—´2보다 ë¬¸ìž ìˆœì„œìƒ ë‚˜ì¤‘ì¼ ê²½ìš° ì°¸.\n"
+" \n"
+" 기타 연산:\n"
+" \n"
+" -o <옵션> ì…¸ <옵션>ì„ ì‚¬ìš©í•  수 있으면 ì°¸.\n"
+" -v <변수> 셸 <변수>를 설정하면 참.\n"
+" -R <변수> ì…¸ <변수>를 ì´ë¦„ 참조로 설정하면 ì°¸.\n"
+" \n"
+" ! <표현ì‹> 표현ì‹ì´ 거짓ì´ë©´ ì°¸.\n"
+" <표현ì‹1> -a <표현ì‹2> <표현ì‹1>, <표현ì‹2>ê°€ ëª¨ë‘ ì°¸ì´ë©´ ì°¸.\n"
+" <표현ì‹1> -o <표현ì‹2> <표현ì‹1> ë˜ëŠ” <표현ì‹2> 둘 중 하나가 ì°¸ì´ë©´ ì°¸.\n"
+" \n"
+" <변수1> <ì—°ì‚°ìž> <변수2> 산술 시험. <ì—°ì‚°ìž>는 -eq, -ne,\n"
+" -lt, -le, -gt, or -ge 중 하나.\n"
+" \n"
+" 산술 ì´ì§„ ì—°ì‚°ìžëŠ” <ì¸ìž1>ê³¼ <ì¸ìž2>ê°€ 같거나, 다르거나, 작거나, ìž‘ê³ \n"
+" 같거나, í¬ê±°ë‚˜, í¬ê³  ê°™ì„ ê²½ìš° ì°¸ì„ ë°˜í™˜í•©ë‹ˆë‹¤\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <표현ì‹>ì´ ì°¸ì´ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤. <표현ì‹>ì´ ê±°ì§“ì„ ê²°ê³¼ë¡œ 냈거나\n"
+" 부ì ì ˆí•œ ì¸ìžë¥¼ 대입하면 실패를 반환합니다."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
" This is a synonym for the \"test\" builtin, but the last argument must\n"
" be a literal `]', to match the opening `['."
msgstr ""
+"ì¡°ê±´ì‹ì„ 처리합니다.\n"
+" \n"
+" \"test\" 내장 ëª…ë ¹ì˜ ë™ì˜ 명령입니다만, 마지막 ì¸ìžëŠ” 반드시\n"
+" `]' 문ìžë¡œ 마무리하여 열기 괄호 `['와 ì¼ì¹˜í•´ì•¼í•©ë‹ˆë‹¤."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
+" Prints the accumulated user and system times for the shell and all of its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
" Always succeeds."
msgstr ""
+"프로세스 ì‹œê°„ì„ í‘œì‹œí•©ë‹ˆë‹¤.\n"
+" \n"
+" ì…¸ì˜ ì‚¬ìš©ìž ë° ì‹œìŠ¤í…œ ëˆ„ì  ì‹œê°„, 하위 í”„ë¡œì„¸ìŠ¤ì˜ ëˆ„ì  ì‹œê°„ì„\n"
+" 나타냅니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" í•­ìƒ ì„±ê³µ."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
+" Defines and activates handlers to be run when the shell receives signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -3694,37 +4351,60 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+" If no arguments are supplied, trap prints the list of commands associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\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."
+" Returns success unless a SIGSPEC is invalid or an invalid option is given."
msgstr ""
+"시그ë„ê³¼ 기타 ì´ë²¤íŠ¸ë¥¼ 잡습니다.\n"
+" \n"
+" ì…¸ì—ì„œ ì‹œê·¸ë„ ë˜ëŠ” 기타 ìƒíƒœë¥¼ ë°›ì•˜ì„ ë•Œ 실행할 핸들러를 지정하고 활성\n"
+" ìƒíƒœë¡œ 전환합니다.\n"
+" \n"
+" <ì¸ìž>는 <시그ë„명세>ì˜ ì‹œê·¸ë„ì„ ì…¸ì—ì„œ ë°›ì•˜ì„ ë•Œ ì½ê³  실행할 명령\n"
+" 입니다. <ì¸ìž>ê°’ì´ ë¹ ì§€ë©´ (그리고 ë‹¨ì¼ <시그ë„명세> ê°’ì„ ì§€ì •í•˜ë©´)\n"
+" ë˜ëŠ” ê°’ì´ `-'으로 설정했다면, ê° ì§€ì • 시그ë„ì„ ì›ëž˜ 값으로 ë˜ëŒë¦½ë‹ˆë‹¤.\n"
+" <ì¸ìž>ì— ë„ ë¬¸ìžì—´ì´ 들어갔다면, ê° <시그ë„명세> ê°’ì€ ì…¸ê³¼ 실행 명령\n"
+" ì—ì„œ 무시합니다.\n"
+" \n"
+" <시그ë„명세>ê°€ EXIT(0) ì´ë©´ <ì¸ìž>는 ì…¸ì„ ë¹ ì ¸ë‚˜ê°ˆ ë–„ 실행합니다.\n"
+" <시그ë„명세>ê°€ DEBUGë©´, 모든 단순 ëª…ë ¹ì„ ì‹¤í–‰í•˜ê¸° ì „ì— <ì¸ìž>를\n"
+" 실행 합니다. <시그ë„명세>ê°€ RETURNì´ë©´, <ì¸ìž>는 . ë˜ëŠ” ì›ì‹œ 내장 \n"
+" 명령 ì‹¤í–‰ì„ ë내는 ì…¸ 함수 ë˜ëŠ” 스í¬ë¦½íŠ¸ë¥¼ 실행할 때마다 실행합니다.\n"
+" <오류> <시그ë„명세> 는 -e ì˜µì…˜ì„ ë„£ì—ˆì„ ë•Œ, ì…¸ì„ ë¹ ì ¸ë‚˜ì˜¤ê²Œ 하는 \n"
+" 명령 실패를 ê²ªì„ ë•Œë§ˆë‹¤ <ì¸ìž>를 실행합니다.\n"
+" \n"
+" ì–´ë–¤ ì¸ìžë„ 지정하지 않으면 trapì—ì„œ ê° ì‹œê·¸ë„ ë³„ë¡œ 실행하는 명령\n"
+" 목ë¡ì„ 출력합니다.\n"
+" \n"
+" 옵션:\n"
+" -l\tì‹œê·¸ë„ ì´ë¦„ê³¼ 관련 ìˆ«ìž ëª©ë¡ì„ 출력합니다\n"
+" -p\tê° <시그ë„명세> 관련 처리 ëª…ë ¹ì„ í‘œì‹œí•©ë‹ˆë‹¤\n"
+" \n"
+" ê° <시그ë„명세>는 <signal.h>ì— ì§€ì •í•œ ì‹œê·¸ë„ ì´ë¦„ì´ê±°ë‚˜ 시그ë„\n"
+" 번호입니다. ì‹œê·¸ë„ ì´ë¦„ì€ ëŒ€ì†Œë¬¸ìž ë¬´ê´€í•˜ë©°, SIG ì ‘ë‘사는 ì„ íƒì‚¬í•­\n"
+" 입니다. 시그ë„ì€ \"kill -signal $$\" 처럼 ì…¸ì— ë³´ë‚¼ 수 있습니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ <시그ë„명세> ë˜ëŠ” ì˜µì…˜ì„ ì§€ì •í–ˆë‹¤ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -3750,16 +4430,37 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
+" Returns success if all of the NAMEs are found; fails if any are not found."
msgstr ""
+"명령 í˜•ì‹ ì •ë³´ë¥¼ 표시합니다.\n"
+" \n"
+" ê° <ì´ë¦„>ì— ëŒ€í•´ 명령 ì´ë¦„으로 활용할 ë•Œ 어떻게 í•´ì„하는지\n"
+" 나타냅니다.\n"
+" \n"
+" 옵션:\n"
+" -a\t<ì´ë¦„>ì´ ë“¤ì–´ê°„ 모든 실행 íŒŒì¼ ë³´ê´€ 위치를 나타냅니다.\n"
+" \t\t별칭, 내장명령, 함수가 해당하며, `-p' ì˜µì…˜ì€ ì‚¬ìš©í•˜ì§€\n"
+" \t\t ë§ì•„야합니다.\n"
+" -f\tì…¸ 함수 찾기 ë™ìž‘ì„ ë©ˆì¶¥ë‹ˆë‹¤\n"
+" -P\tê° <ì´ë¦„>별로 별칭, 내장 명령, 함수로 í•´ë„ PATH ê²€ìƒ‰ì„ ê°•ì œ\n"
+" \t\t시행하며, 실행 íŒŒì¼ ë””ìŠ¤í¬ ì´ë¦„ì„ ë°˜í™˜í•©ë‹ˆë‹¤\n"
+" -p\t실행할 ë””ìŠ¤í¬ íŒŒì¼ ì´ë¦„ì„ ë°˜í™˜í•˜ê±°ë‚˜ , `type -t <ì´ë¦„>'ì„\n"
+" \t\t`file'ë¡œ 반환하지 않으면 ì•„ë¬´ê²ƒë„ ë°˜í™˜í•˜ì§€ 않습니다.\n"
+" -t\t<ì´ë¦„>ì´ ë³„ì¹­, ì…¸ 예약 단어, ì…¸ 함수, ì…¸ 내장 명령, ë””ìŠ¤í¬ íŒŒì¼\n"
+" \t\t ë˜ëŠ” ì—†ìŒ ì—¬ë¶€ì— ë”°ë¼ `alias', `keyword', `function', `builtin',\n"
+" \t\t `file', `' 중 하나를 반환합니다.\n"
+" \n"
+" ì¸ìž:\n"
+" <ì´ë¦„>\tí•´ì„í•  명령 ì´ë¦„.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 모든 <ì´ë¦„>ì„ ì°¾ìœ¼ë©´ ì„±ê³µì„ ë°˜í™˜, 그렇지 않으면 실패를 반환합니다."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
+" Provides control over the resources available to the shell and processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -3803,8 +4504,52 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
+"ì…¸ ìžì› ì œí•œì„ ì¡°ì •í•©ë‹ˆë‹¤.\n"
+" \n"
+" 셸과 ìƒì„± 프로세스를 제어하는 시스템ì—ì„œ 사용할 수 있는 ìžì›ì˜\n"
+" 제어 ì „ë°˜ì„ ì œê³µí•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -S\t`soft' ìžì› ì œí•œì„ í™œìš©í•©ë‹ˆë‹¤\n"
+" -H\t`hard' ìžì› ì œí•œì„ í™œìš©í•©ë‹ˆë‹¤\n"
+" -a\t현재 모든 제한 í˜„í™©ì„ ë³´ê³ í•©ë‹ˆë‹¤\n"
+" -b\t소켓 ë²„í¼ í‚‚ê¸°\n"
+" -c\tìƒì„± 핵심 íŒŒì¼ ìµœëŒ€ í¬ê¸°\n"
+" -d\t프로세스 ë°ì´í„° 세그먼트 최대 í¬ê¸°\n"
+" -e\t최대 ìŠ¤ì¼€ì¥´ë§ ìš°ì„ ìˆœìœ„ (`nice')\n"
+" -f\t셸과 하위 프로세스ì—ì„œ 작성한 파ì¼ì˜ 최대 í¬ê¸°\n"
+" -i\t최대 대기 ì‹œê·¸ë„ ìˆ˜\n"
+" -k\tí”„ë¡œì„¸ìŠ¤ì— í• ë‹¹í•œ ì»¤ë„ í 최대 수\n"
+" -l\t메모리ì—ì„œ 잠글 프로세스 최대 수\n"
+" -m\t최대 ì ìœ  설정 í¬ê¸°\n"
+" -n\tíŒŒì¼ ì„œìˆ ìž ê°œë°© 최대 갯수\n"
+" -p\t파ì´í”„ ë²„í¼ í¬ê¸°\n"
+" -q\tPOSIX 메시지 í 최대 ë°”ì´íŠ¸ 단위 í¬ê¸°\n"
+" -r\t최대 실시간 ìŠ¤ì¼€ì¥´ë§ ìš°ì„ ìˆœìœ„\n"
+" -s\t최대 ìŠ¤íƒ í¬ê¸°\n"
+" -t\t초단위 최대 CPU 시간\n"
+" -u\t최대 ì‚¬ìš©ìž í”„ë¡œì„¸ìŠ¤ 수\n"
+" -v\tê°€ìƒ ë©”ëª¨ë¦¬ í¬ê¸°\n"
+" -x\t최대 íŒŒì¼ ìž ê¸ˆ 수\n"
+" -P\tê°€ìƒ í„°ë¯¸ë„ ìµœëŒ€ 갯수\n"
+" -R\t블로킹 전 실시간 프로세스 최대 실행 가능 시간\n"
+" -T\t최대 스레드 수\n"
+" \n"
+" 모든 플랫í¼ì—ì„œ 모든 ì˜µì…˜ì„ í™œìš©í•  수 있는건 아닙니다.\n"
+" \n"
+" <한계>ê°’ì´ ì£¼ì–´ì§€ë©´, 지정 ìžì›ì˜ 새 ê°’ì´ ë©ë‹ˆë‹¤. `soft', `hard', \n"
+" `unlimited' <한계> ê°’ì€ í˜„ìž¬ soft 한계, hard 한계, 한계 ì—†ìŒì„ ê°ê°\n"
+" ì˜ë¯¸í•©ë‹ˆë‹¤. 아니면, 지정 ìžì›ì˜ 현재 ê°’ì„ ì¶œë ¥í•©ë‹ˆë‹¤. ì˜µì…˜ì„ ì§€ì •\n"
+" 하지 않으면, -f ì˜µì…˜ì„ ì„¤ì •í•œ 걸로 간주합니다.\n"
+" \n"
+" ì´ˆ 단위를 취급하는 -t 옵션과 512 ë°”ì´íŠ¸ 단위로 ì¦ê°€í•˜ëŠ” -p 옵션,\n"
+" 그리고 í¬ê¸°ë¥¼ 갖지 않는 프로세스 수를 취급하는 -u ì˜µì…˜ì„ ì œì™¸í•˜ê³ ,\n"
+" 1024 ë°”ì´íŠ¸ì”© ê°’ì„ ì¦ê°€í•©ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì˜µì…˜ì„ ì˜¬ë°”ë¥´ê²Œ 설정했거나 오류가 없다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3821,28 +4566,38 @@ msgid ""
" Exit Status:\n"
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
+"íŒŒì¼ ëª¨ë“œ 마스í¬ë¥¼ 표시하거나 설정합니다.\n"
+" \n"
+" ì‚¬ìš©ìž íŒŒì¼ ìƒì„± 마스í¬ë¥¼ <모드>ë¡œ 설정합니다. <모드>를 ìƒëžµí•˜ë©´,\n"
+" ë§ˆìŠ¤í¬ í˜„ìž¬ ê°’ì„ ì¶œë ¥í•©ë‹ˆë‹¤.\n"
+" \n"
+" <모드>를 숫ìžë¡œ 시작하면, 8진수로 í•´ì„합니다. 그렇지 않으면 chmod(1)\n"
+" ì—ì„œ ì¸ì‹í•˜ëŠ” 심볼릭 모드 문ìžì—´ì´ ë©ë‹ˆë‹¤.\n"
+" \n"
+" ì›ì…˜:\n"
+" -p\t<모드>를 ìƒëžµí•˜ë©´ 입력으로 재활용할 형ì‹ìœ¼ë¡œ 출력합니다\n"
+" -S\t출력 ì‹¬ë³¼ë¦­ì„ ë§Œë“­ë‹ˆë‹¤. 그렇지 않으면 8진수로 출력합니다\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <모드>ê°€ 올바르거나 ì˜µì…˜ì„ ì ì ˆí•˜ê²Œ 설정하면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
+" Waits for each process identified by an ID, which may be a process ID or a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for a single job from the list of "
-"IDs,\n"
-" or, if no IDs are supplied, for the next job to complete and returns "
-"its\n"
+" If the -n option is supplied, waits for a single job from the list of IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns its\n"
" exit status.\n"
" \n"
" If the -p option is supplied, the process or job identifier of the job\n"
" for which the exit status is returned is assigned to the variable VAR\n"
-" named by the option argument. The variable will be unset initially, "
-"before\n"
+" named by the option argument. The variable will be unset initially, before\n"
" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
@@ -3853,23 +4608,52 @@ msgid ""
" option is given, or if -n is supplied and the shell has no unwaited-for\n"
" children."
msgstr ""
+"ìž‘ì—… 완료를 기다리며 종료 ìƒíƒœë¥¼ 반환합니다.\n"
+" \n"
+" 프로세스 ID ë˜ëŠ” ìž‘ì—… 명세가 ë  IDë¡œ ì‹ë³„하는 ê° í”„ë¡œì„¸ìŠ¤ë¥¼ \n"
+" 기다리며, 중단 ìƒíƒœë¥¼ 보고합니다. IDê°€ 주어지지 않으면 현재ì˜\n"
+" 모든 활성 하위 프로세스를 기다리며, 반환 ìƒíƒœ ê°’ì€ 0입니다.\n"
+" IDê°€ ìž‘ì—… 명세ë¼ë©´ ìž‘ì—… 파ì´í”„ë¼ì¸ì˜ 모든 프로세스를 기다립니다.\n"
+" \n"
+" -n ì˜µì…˜ì„ ì§€ì •í•˜ë©´ ID 목ë¡ì˜ ë‹¨ì¼ ìž‘ì—…ì„ ê¸°ë‹¤ë¦¬ë©°, ID를 지정하지\n"
+" 않으면, ë‹¤ìŒ ìž‘ì—… 완료시까지 기다리고 해당 ìž‘ì—…ì˜ ì¢…ë£Œ ìƒíƒœë¥¼ 반환\n"
+" 합니다.\n"
+" \n"
+" -p ì˜µì…˜ì„ ì§€ì •í•˜ë©´ 종료 ìƒíƒœë¥¼ 반환할 ìž‘ì—…ì˜ í”„ë¡œì„¸ìŠ¤ ë˜ëŠ” ìž‘ì—…\n"
+" ì‹ë³„ìžë£° 옵션 ì¸ìžê°€ 명명한 <변수>ì— í• ë‹¹í•©ë‹ˆë‹¤. 변수는 할당 ì „\n"
+" ì„¤ì •ì„ í•´ì œí•  수 있습니다. 보통 -n ì˜µì…˜ì„ ì§€ì •í•  때만 쓸만합니다.\n"
+" \n"
+" -f ì˜µì…˜ì„ ì§€ì •í•˜ê³  ìž‘ì—… ì»¨íŠ¸ë¡¤ì„ ì‚¬ìš©í•˜ë©´ 지정 IDì˜ ìƒíƒœê°€ 바뀌기를\n"
+" 기다리기보다는, 중단 시기를 기다립니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 최종 IDì˜ ìƒíƒœë¥¼ 반환합니다. IDê°€ 잘못ë˜ì—ˆê±°ë‚˜ ìž˜ëª»ëœ ì˜µì…˜ì„ ì§€ì •\n"
+" 했다든지, -n ì˜µì…˜ì„ ì§€ì •í•˜ê³  ì…¸ì—ì„œ 하위 프로세스를 기다리지 않는\n"
+" 다면 실패를 반환합니다."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination "
-"status.\n"
+" Waits for each process specified by a PID and reports its termination status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an "
-"invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
" option is given."
msgstr ""
+"프로세스 처리 완료를 기다리고 종료 ìƒíƒœë¥¼ 반환합니다.\n"
+" \n"
+" 지정 <PID>ì˜ ê° í”„ë¡œì„¸ìŠ¤ë¥¼ 기다리며, 종료 ìƒíƒœë¥¼ 보고합니다.\n"
+" <PID>를 지정하지 않으면 모든 현재 하위 활성 프로세스를 기다리며,\n"
+" 반환 ìƒíƒœëŠ” 0ì´ ë©ë‹ˆë‹¤. <PID>는 프로세스 ID여야 합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 최종 PIDì˜ ìƒíƒœë¥¼ 반환합니다. PID ê°’ì´ ìž˜ëª»ë˜ì—ˆê±°ë‚˜,\n"
+" 부ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í•˜ë©´ 실패를 반환합니다."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3881,8 +4665,17 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"ëª©ë¡ ê° êµ¬ì„± ìš”ì†Œì˜ ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" `for' ë°˜ë³µë¬¸ì€ í•­ëª© ëª©ë¡ ê° êµ¬ì„±ìš”ì†Œì˜ ëª…ë ¹ 목ë¡ì„ 실행합니다.\n"
+" `in <단어> ...;' ì‹ìœ¼ë¡œ 나타나지 않으면, `in $@\"'으로 가정합니다.\n"
+" <단어>ì˜ ê° ìš”ì†Œì— ëŒ€í•´ <ì´ë¦„>ì„ í•´ë‹¹ ìš”ì†Œì— ì„¤ì •í•˜ê³ ,\n"
+" <명령>ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 최종 명령 실행 ìƒíƒœë¥¼ 반환합니다."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3898,8 +4691,21 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"ë°˜ë³µë¬¸ì˜ ì‚°ìˆ  ì—°ì‚°ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" 다ìŒê³¼ ë™ì¼í•©ë‹ˆë‹¤\n"
+" \t(( <표현ì‹1> ))\n"
+" \twhile (( <표현ì‹2> )); do\n"
+" \t\t <명령>\n"
+" \t\t (( 표현ì‹3 ))\n"
+" \tdone\n"
+" <표현ì‹1>, <표현ì‹2>, <표현ì‹3> ì€ ì‚°ìˆ  수ì‹ìž…니다. ì–´ë–¤ 수ì‹ì´ë“  ìƒëžµí•˜ë©´\n"
+" 1 ê°’ì„ ê³„ì‚°í•œê±¸ë¡œ 간주합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 최종 명령 실행 ìƒíƒœë¥¼ 반환합니다."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3918,8 +4724,22 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"단어를 목ë¡ì—ì„œ ì„ íƒí•˜ê³  ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" <단어>는 단어 목ë¡ì„ 만들 ë•Œ 확장합니다. 확장 단어는 표준 오류ì—\n"
+" 출력하며, ì¶œë ¥í–‰ì— ìˆ«ìžê°€ 붙습니다. ê° `in <단어>'ê°€ 없다면 `in \"$@\"'\n"
+" 를 고려합니다. ê·¸ ë‹¤ìŒ PS3 프롬프트를 나타내고 표준 ìž…ë ¥ì—ì„œ \n"
+" ì½ìŠµë‹ˆë‹¤. 표시 단어 중 í•˜ë‚˜ì˜ ìˆ«ìžë¡œ í–‰ì„ êµ¬ì„±í–ˆë‹¤ë©´, <ì´ë¦„>\n"
+" ì„ í•´ë‹¹ ë‹¨ì–´ì— ì„¤ì •í•©ë‹ˆë‹¤. í–‰ì´ ë¹„ì–´ìžˆìœ¼ë©´, <단어>와 프롬프트는\n"
+" 다시 나타납니다. EOF (íŒŒì¼ ë)ì„ ì½ìœ¼ë©´, 명령 ì‹¤í–‰ì´ ë납니다.\n"
+" 다른 ê°’ì„ ì½ìœ¼ë©´ <ì´ë¦„>ì„ nullë¡œ 설정할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤. ì½ì€ í–‰ì€\n"
+" REPLY ë³€ìˆ˜ì— ì €ìž¥í•©ë‹ˆë‹¤. <명령>ì€ break ëª…ë ¹ì„ ì‹¤í–‰í•˜ê¸° 전까지\n"
+" ê° ì„ íƒ ë•Œë§ˆë‹¤ 실행합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 마지막 명령 실행 ìƒíƒœë¥¼ 반환합니다."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3934,8 +4754,20 @@ msgid ""
" Exit Status:\n"
" The return status is the return status of PIPELINE."
msgstr ""
+"파ì´í”„ë¼ì¸ ì‹¤í–‰ì˜ ì†Œìš” ì‹œê°„ì„ ë³´ê³ í•©ë‹ˆë‹¤.\n"
+" \n"
+" <파ì´í”„ë¼ì¸>ì„ ì‹¤í–‰í•œ 후 파ì´í”„ë¼ì¸ì´ ë©ˆì·„ì„ ë•Œ, <파ì´í”„ë¼ì¸> 실행ì—\n"
+" 걸린 실제 시간, ì‚¬ìš©ìž CPU 시간, 시스템 CPU 시간 요약 ë‚´ìš©ì„ ì¶œë ¥í•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -p\tì´ì‹ì„±ì´ 있는 POSIX 형ì‹ì˜ 타ì´ë° 요약 ë‚´ìš©ì„ ì¶œë ¥í•©ë‹ˆë‹¤.\n"
+" \n"
+" TIMEFORMAT ë³€ìˆ˜ì˜ ê°’ì€ ì¶œë ¥ 형ì‹ì— 활용합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <파ì´í”„ë¼ì¸>ì˜ ë°˜í™˜ ìƒíƒœê°€ 곧 반환 ìƒíƒœ 입니다."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3945,51 +4777,76 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"패턴 ì¼ì¹˜ì— 기반하여 ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" <패턴>ì— ì¼ì¹˜í•˜ëŠ” <단어> 기반으로 <명령>ì„ ë³„ë„ë¡œ 실행합니다.\n"
+" `|' 문ìžë¡œ 여러 íŒ¨í„´ì„ ë‚˜ëˆŒ 수 있습니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 최종 명령 실행 ìƒíƒœë¥¼ 반환합니다."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then "
-"the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
-"is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. "
-"Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
+" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of the\n"
+" entire construct is the exit status of the last command executed, or zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"ì¡°ê±´ 기반으로 ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" `if <명령>' 목ë¡ì„ 실행합니다. 종료 ìƒíƒœê°’ì´ 0ì´ë©´, `then <명령>'\n"
+" 목ë¡ë„ 실행합니다. 아니면, `elif <명령>' 목ë¡ë„ 실행하며, 종료 ìƒíƒœ\n"
+" ê°’ì´ 0ì´ë©´ 관련 `then <명령>' 목ë¡ì„ 실행하여 if ëª…ë ¹ì˜ ì²˜ë¦¬ê°€ ë\n"
+" 납니다. 위 ê³¼ì •ì— ë§Œì¡±í•˜ì§€ 않으면 `else <명령>' 목ë¡ì´ ìžˆì„ ê²½ìš°\n"
+" 실행합니다. ì „ì²´ 명령 êµ¬ì„±ì˜ ì¢…ë£Œ ìƒíƒœ ê°’ì€ ìµœì¢… 명령 실행 종료\n"
+" ìƒíƒœê°’ì´ë©°, ë˜ëŠ” ì–´ë–¤ ì¡°ê±´ì—ì„œë„ ì°¸ì´ ì•„ë‹Œ 경우 0ì´ ë©ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 최종 명령 실행 ìƒíƒœ ê°’ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"í…ŒìŠ¤íŠ¸ì— ì„±ê³µí•˜ëŠ” ë™ì•ˆ ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" <명령>ì˜ ìµœì¢… 명령 종료 ìƒíƒœê°€ 0ì¸ ë™ì•ˆ <명령-2>ë¡œ 확장 실행합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 최종 명령 ìƒíƒœë¥¼ 반환합니다."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"í…ŒìŠ¤íŠ¸ì— ì‹¤íŒ¨í•˜ëŠ” ë™ì•ˆ ëª…ë ¹ì„ ì‹¤í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" <명령>ì˜ ìµœì¢… 명령 종료 ìƒíƒœê°€ 0ì´ ì•„ë‹ˆë©´ <명령-2>ë¡œ 확장 실행합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 최종 명령 실행 ìƒíƒœë¥¼ 반환합니다."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4001,22 +4858,37 @@ msgid ""
" Exit Status:\n"
" The coproc command returns an exit status of 0."
msgstr ""
+"<ì´ë¦„>으로 병행 프로세스를 만듭니다.\n"
+" \n"
+" <명령>ì„ ë¹„ë™ê¸° 실행합니다. ëª…ë ¹ì˜ í‘œì¤€ 출력과 표준 ìž…ë ¥ì€ ì‹¤í–‰í•˜ëŠ” \n"
+" ì…¸ì—ì„œ ë°°ì—´ 변수 <ì´ë¦„>ì˜ ìƒ‰ì¸ 0번과 1ë²ˆì— í• ë‹¹í•œ íŒŒì¼ ì„œìˆ ìžì™€\n"
+" 파ì´í”„ë¡œ 연결합니다. 기본 <ì´ë¦„>ì€ \"COPROC\" 입니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" coproc ëª…ë ¹ì´ ì¢…ë£Œ ìƒíƒœ 0ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
" Exit Status:\n"
" Returns success unless NAME is readonly."
msgstr ""
+"ì…¸ 함수를 ì •ì˜í•©ë‹ˆë‹¤.\n"
+" \n"
+" <ì´ë¦„>ì„ ê°€ì§„ ì…¸ 함수를 만듭니다. 단순 명령으로 실행할 경우, <ì´ë¦„>ì€\n"
+" ì…¸ 컨í…스트를 호출할 ë•Œ <명령>ì„ ì‹¤í–‰í•©ë‹ˆë‹¤. <ì´ë¦„>ì„ ì‹¤í–‰í•˜ë©´, 함수ì—\n"
+" 전달하는 ì¸ìžëŠ” $1,...$N ì´ë©°, 함수 ì´ë¦„ì€ $FUNCNAMEì´ ë©ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <ì´ë¦„>ì´ ì½ê¸° ì „ìš©ì´ ì•„ë‹ˆë¼ë©´ ì°¸ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4026,8 +4898,15 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"여러 ëª…ë ¹ì„ ë‹¨ìœ„ë¡œ 묶습니다.\n"
+" \n"
+" 여러 ëª…ë ¹ì„ ê·¸ë£¹ 하나로 묶어 실행합니다. 명령 전체를 방향재지정\n"
+" 처리하는 방법 중 하나입니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 최종 명령 실행 ìƒíƒœë¥¼ 반환합니다."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4040,8 +4919,17 @@ msgid ""
" Exit Status:\n"
" Returns the status of the resumed job."
msgstr ""
+"í¬ê·¸ë¼ìš´ë“œì˜ ìž‘ì—…ì„ ìž¬ê°œí•©ë‹ˆë‹¤.\n"
+" \n"
+" `fg' ëª…ë ¹ì˜ JOB_SPEC ì¸ìžì™€ ë™ì¼í•©ë‹ˆë‹¤. 멈춘 ìž‘ì—… ë˜ëŠ” 백그ë¼ìš´ë“œ\n"
+" ìž‘ì—…ì„ ìž¬ê°œí•©ë‹ˆë‹¤. JOB_SPECì€ ìž‘ì—… ì´ë¦„ ë˜ëŠ” ìž‘ì—… 번호를 지정할 수\n"
+" 있습니다. JOB_SPEC 다ìŒì— `&'를 입력하여 백그ë¼ìš´ë“œì—ì„œ 실행하게\n"
+" 합니다. `bg' ì¸ìžë¡œ 지정할 때처럼 ìž‘ì—… 명세를 지정합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 재개한 ìž‘ì—…ì˜ ìƒíƒœë¥¼ 반환합니다."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4051,17 +4939,20 @@ msgid ""
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
+"산술 ì—°ì‚°ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" <표현ì‹>ì€ ì‚°ìˆ  ì—°ì‚° ê·œì¹™ì— ë”°ë¼ ì‹¤í–‰í•©ë‹ˆë‹¤. `let \"<표현ì‹>\"'ê³¼ ë™ì¼í•©ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <표현ì‹> 결과가 0ì´ë©´ 1ì„ ë°˜í™˜í•˜ê³  그렇지 않으면 0ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the `test' builtin, and may be combined using the following "
-"operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries used\n"
+" by the `test' builtin, and may be combined using the following operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -4079,8 +4970,28 @@ msgid ""
" Exit Status:\n"
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
+"ì¡°ê±´ ëª…ë ¹ì„ ìˆ˜í–‰í•©ë‹ˆë‹¤.\n"
+" \n"
+" <표현ì‹>ì˜ ì¡°ê±´ë¬¸ ìˆ˜í–‰ì˜ ì²˜ë¦¬ ê²°ê³¼ì— ë”°ë¼ ìƒíƒœê°’ì„ 0 ë˜ëŠ” 1ë¡œ 반환합니다.\n"
+" 표현ì‹ì€ `test' 내장 명령ì—ì„œ 활용하는 ë™ì¼í•œ ê·œì¹™ì— ë”°ë¼ ìž‘ì„±í•˜ë©°,\n"
+" ë‹¤ìŒ ì—°ì‚°ìžë¡œ 결합합니다:\n"
+" ( <표현ì‹> )\t<표현ì‹>ì˜ ê°’ì„ ë°˜í™˜\n"
+" ! <표현ì‹>\t\t <표현ì‹> 결과가 거짓ì´ë©´ ì°¸ì„, 그렇지 않으면 ê±°ì§“ì„ ë°˜í™˜\n"
+" <표현ì‹1> && <표현ì‹2>\t\t<표현ì‹1>ê³¼ <표현ì‹2>ê°€ ëª¨ë‘ ì°¸ì´ë©´ ì°¸ì„\n"
+" \t\t\t\t그렇지 않으면 ê±°ì§“ì„ ë°˜í™˜\n"
+" <표현ì‹1> || <표현ì‹2>\t\t<표현ì‹1> ë˜ëŠ” <표현ì‹2> 둘 중 하나가 ì°¸ì´ë©´ ì°¸ì„\n"
+" \t\t\t\t그렇지 않으면 ê±°ì§“ì„ ë°˜í™˜\n"
+" \n"
+" `=='ê³¼ `!=' ì—°ì‚°ìžë¥¼ 사용한다면 ìš°í•­ì˜ ë¬¸ìžì—´ì€ 패턴으로 활용하며, 패턴 검사를\n"
+" 수행합니다. `=~' ì—°ì‚°ìžë¥¼ 사용할 때는 ìš°í•­ì˜ ë¬¸ìžì—´ì€ 정규표현ì‹ìœ¼ë¡œ 간주합니다.\n"
+" \n"
+" && ì—°ì‚°ìžì™€ || ì—°ì‚°ìžëŠ” <표현ì‹1>ì´ í‘œí˜„ì‹ ê°’ì„ ë‚´ëŠ”ë° ì¶©ë¶„í•˜ë‹¤ë©´ <표현ì‹2>를\n"
+" 처리하지는 않습니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <표현ì‹> ê°’ì— ë”°ë¼ 0 ë˜ëŠ” 1ì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4133,8 +5044,54 @@ msgid ""
" HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-
-#: builtins.c:1821
+"ì¼ë°˜ ì…¸ 변수 ì´ë¦„ê³¼ 사용법입니다.\n"
+" \n"
+" BASH_VERSION\t배시 버전 정보입니다.\n"
+" CDPATH\t`cd' ì¸ìžì²˜ëŸ¼ 디렉터리 ê²€ìƒ‰ì— ì£¼ì–´ì§€ëŠ” 콜론으로 구분한\n"
+" \t\t디렉터리 목ë¡ìž…니다.\n"
+" GLOBIGNORE\t경로 ì´ë¦„ì„ í™•ìž¥í•˜ì—¬ 무시할 콜론 ì´ë¦„으로 구분한 íŒŒì¼ ì´ë¦„\n"
+" \t\t특징 패턴 목ë¡ìž…니다.\n"
+" HISTFILE\tëª…ë ¹ì„ ê¸°ë¡ì— 저장하는 íŒŒì¼ ì´ë¦„입니다.\n"
+" HISTFILESIZE\t파ì¼ì— ë„£ì„ ìˆ˜ 있는 최대 줄 수 입니다.\n"
+" HISTSIZE\të™ìž‘ ì¤‘ì¸ ì…¸ì—ì„œ 접근할 수 있는 최대 ê¸°ë¡ ì¤„ 수 입니다.\n"
+" HOME\të¡œê·¸ì¸ í›„ 접근하는 완전한 경로 ì´ë¦„입니다.\n"
+" HOSTNAME\t현재 호스트 ì´ë¦„입니다.\n"
+" HOSTTYPE\tì´ ë°°ì‹œ ë²„ì „ì´ ì‹¤í–‰í•˜ê³  있는 ì‹œìŠ¤í…œì˜ CPU 형ì‹ìž…니다.\n"
+" IGNOREEOF\n"
+"EOF ë¬¸ìž ìž…ë ¥ì„ ìœ ì¼í•œ 입력으로 받는 ì…¸ì˜ ë™ìž‘ì„\n"
+" \t\t제어합니다. 설정하면, ì´ ë³€ìˆ˜ì˜ ê°’ì€ ì…¸ì„ ë‚˜ê°€ê¸°\n"
+" \t\tì „ 빈 ì¤„ì— í•œì¤„ë¡œ 나타낼 EOF ë¬¸ìž ìˆ˜ 입니다 (기본 10ê°œ).\n"
+" \t\tì„¤ì •ì„ í•´ì œí•˜ë©´, EOF는 ìž…ë ¥ ëì„ ë‚˜íƒ€ëƒ…ë‹ˆë‹¤.\n"
+" MACHTYPE\t현재 배시를 실행하고 있는 ì‹œìŠ¤í…œì„ ì„¤ëª…í•˜ëŠ” 문ìžì—´ìž…니다.\n"
+" MAILCHECK\të°°ì‹œì—ì„œ 새 ë©”ì¼ì„ 확ì¸í•˜ëŠ” 초단위 ë¹ˆë„ ì‹œê°„ìž…ë‹ˆë‹¤.\n"
+" MAILPATH\të°°ì‹œì—ì„œ 새 ë©”ì¼ì„ 확ì¸í•  콜론 구분 íŒŒì¼ ëª©ë¡ìž…니다.\n"
+" OSTYPE\tì´ ë°°ì‹œ ë²„ì „ì„ ì‹¤í–‰í•˜ê³  있는 유닉스 버전입니다.\n"
+" PATH\tëª…ë ¹ì„ ì°¾ì„ ë•Œ 검색할 콜론 구분 디렉터리 목ë¡ìž…니다.\n"
+" PROMPT_COMMAND\tê° ê¸°ë³¸ 프롬프트를 출력하기 ì „ì— ì‹¤í–‰í• \n"
+" \t\t명령입니다.\n"
+" PS1\t\t기본 프롬프트 문ìžì—´ìž…니다.\n"
+" PS2\t\t2ì°¨ 프롬프트 문ìžì—´ìž…니다.\n"
+" PWD\t\t현재 ë””ë ‰í„°ë¦¬ì˜ ì „ì²´ 경로 ì´ë¦„ 입니다.\n"
+" SHELLOPTS\t콜론으로 구분한 활성 ì…¸ 옵션 목ë¡ìž…니다.\n"
+" TERM\t현재 í„°ë¯¸ë„ í˜•ì‹ ì´ë¦„입니다.\n"
+" TIMEFORMAT\t`time' ì—­ë°©í–¥ 단어로 표시하는 시간 통계ì˜\n"
+" \t\t출력 형ì‹ìž…니다.\n"
+" <ìžë™_재개>\tnull ê°’ì´ ì•„ë‹ˆë¼ë©´ ìžì²´ì—ì„œ 나타내는 명령행ì„\n"
+" \t\t먼저 나타내고, 현재 멈춘 ìž‘ì—… 목ë¡ì˜ 첫번째 í™•ì¸ ìš”ì†Œìž„ì„\n"
+" \t\tì˜ë¯¸í•©ë‹ˆë‹¤. ì´ ìƒíƒœê°€ 나타나면 ìž‘ì—…ì„ í¬ ê·¸ë¼ìš´ë“œì—ì„œ\n"
+" \t\t실행헙니다. `exact' ê°’ì€ ëª…ë ¹ 단어가 멈춘 ìž‘ì—… 목ë¡ì˜\n"
+" \t\t명령과 정확히 ì¼ì¹˜í•´ì•¼ í•¨ì„ ì˜ë¯¸í•©ë‹ˆë‹¤.\n"
+" \t\t`substring' ê°’ì€ ëª…ë ¹ 단어가 ìž‘ì—…ì˜ ë¶€ë¶„ 문ìžì—´ê³¼\n"
+" \t\tì¼ì¹˜í•´ì•¼ 하는 ì˜ë¯¸ë¥¼ ë‹´ê³  있습니다. 다른 ê°’ì€\n"
+" \t\tëª…ë ¹ì´ ë©ˆì¶˜ ìž‘ì—…ì˜ ì ‘ë‘어여야 하는 ì˜ë¯¸ë¥¼ ë‹´ê³  있습니다.\n"
+" <ê¸°ë¡ ë¬¸ìž>\tê¸°ë¡ í™•ìž¥ê³¼ 빠른 대체를 제어하는 문ìžìž…니다.\n"
+" \t\t첫번째는 ê¸°ë¡ ì œê±° 문ìžë¡œ, 보통 `!'ì„ í™œìš©í•©ë‹ˆë‹¤.\n"
+" \t\të‘번째는 보통 `^'으로 표기하는 `빠른 대체문ìž' 입니다.\n"
+" \t\t세번째는 `ê¸°ë¡ ì£¼ì„' 문ìžë¡œ 보통 `#'으로 표기합니다.\n"
+" HISTIGNORE\tì–´ë–¤ ëª…ë ¹ì„ ê¸°ë¡ ëª©ë¡ì— 저장해야 하는지 íŒë‹¨í•  ë•Œ\n"
+" \t\t활용하는 콜론 구분 패턴 목ë¡ìž…니다.\n"
+
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4164,8 +5121,33 @@ msgid ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
msgstr ""
+"디렉터리를 스íƒì— 추가합니다.\n"
+" \n"
+" 디렉터리를 디렉터리 ìŠ¤íƒ ìƒë‹¨ì— 추가하거나, 스íƒì„ ëŒë¦¬ê±°ë‚˜,\n"
+" 스íƒì˜ 새 ìƒë‹¨ì— 현재 ìž‘ì—… 디렉터리를 둡니다. ì¸ìžë¥¼ 지정하지\n"
+" 않으면 ìƒë‹¨ 디렉터리 ë‘˜ì„ ë°”ê¿‰ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -n\t스íƒì— 디렉터리를 추가할 ë•Œ 디렉터리 ì¼ë°˜ 변경 ë™ìž‘ì„\n"
+" \t\të§‰ì€ ìƒíƒœì—ì„œ, 스íƒë§Œ 다루게 합니다.\n"
+" \n"
+" ì¸ìž:\n"
+" +N\t`dirs' 내장 ëª…ë ¹ì— ë‚˜íƒ€ë‚œ í•­ëª©ì„ 0부터 시작해서 왼쪽부터\n"
+" \t\t세어 N번째 í•­ëª©ì„ ìŠ¤íƒì˜ 최ìƒë‹¨ì— 오ë„ë¡ íšŒì „í•©ë‹ˆë‹¤.\n"
+" \n"
+" -N\t`dirs' 내장 ëª…ë ¹ì— ë‚˜íƒ€ë‚œ í•­ëª©ì„ 0부터 시작해서 오른쪽부터\n"
+" \t\t세어 N번째 í•­ëª©ì„ ìŠ¤íƒì˜ 최ìƒë‹¨ì— 오ë„ë¡ íšŒì „í•©ë‹ˆë‹¤.\n"
+" \n"
+" <디렉터리>\t<디렉터리>를 ìŠ¤íƒ ìƒë‹¨ì— 추가하여 새 현재 ìž‘ì—…\n"
+" \t\t디렉터리로 지정합니다.\n"
+" \n"
+" `dirs' 내장 ëª…ë ¹ì€ ë””ë ‰í„°ë¦¬ 스íƒì„ 표시합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì¸ìžë¥¼ 지정하고 디렉터리 ë³€ê²½ì— ì„±ê³µí•˜ë©´ ì„±ê³µì„ ë°˜í™˜\n"
+" 합니다."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4191,8 +5173,32 @@ msgid ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
msgstr ""
+"스íƒì—ì„œ 디렉터리를 제거합니다.\n"
+" \n"
+" 디렉터리 스íƒì—ì„œ í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤. ì¸ìžë¥¼ 지정하지 않으면,\n"
+" 스íƒì˜ ìƒë‹¨ 디렉터리를 제거하며, 새 ìƒë‹¨ 디렉터리로 바꿉니다.\n"
+" \n"
+" 옵션:\n"
+" -n\t스íƒì—ì„œ 디렉터리를 제거할 ë•Œ 디렉터리 ì¼ë°˜ 변경ë™ìž‘ì„\n"
+" \t\t막아 스íƒë§Œ 처리하게합니다.\n"
+" \n"
+" ì¸ìž:\n"
+" +N\t0부터 시작해서 `dirs' 내장 ëª…ë ¹ì— ë‚˜íƒ€ë‚œ í•­ëª©ì„ ì™¼ìª½ë¶€í„°\n"
+" \t\t세어 N번째 í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤. 예를 들어 `popd +0' 명령ì€\n"
+" \t\tì²˜ìŒ ë””ë ‰í„°ë¦¬ë¥¼ `popd +1' ëª…ë ¹ì€ ë‘번째 디렉터리를\n"
+" \t\t제거합니다.\n"
+" -N\t0부터 시작해서 `dirs' 내장 ëª…ë ¹ì— ë‚˜íƒ€ë‚œ í•­ëª©ì„ ì˜¤ë¥¸ìª½ë¶€í„°\n"
+" \t\t세어 N번째 í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤. 예를 들어 `popd -0' 명령ì€\n"
+" \t\t마지막 디렉터리를 `popd -1' ëª…ë ¹ì€ ë§ˆì§€ë§‰ì—ì„œ ë‘번째ì˜\n"
+" \t\t디렉터리를 제거합니다.\n"
+" \n"
+" `dirs' 내장 ëª…ë ¹ì€ ë””ë ‰í„°ë¦¬ 스íƒì„ ë³´ì—¬ì¤ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì¸ìžë¥¼ 지정했거나 디렉터리를 제대로 ì´ë™í–ˆë‹¤ë©´\n"
+" ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤.ì „"
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -4220,31 +5226,28 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-"디렉토리 스íƒì„ ë³´ì—¬ì¤ë‹ˆë‹¤.\n"
+"디렉터리 스íƒì„ 표시합니다.\n"
" \n"
-" 현재 ê¸°ì–µëœ ë””ë ‰í† ë¦¬ì˜ ëª©ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 디렉토리들ì€\n"
-" `pushd' ëª…ë ¹ì„ í†µí•´ 목ë¡ì— 경로를 저장할 수 있고; 'popd' \n"
-" ëª…ë ¹ì„ í†µí•´ 거슬러 올ë¼ê°ˆ 수 있습니다.\n"
+" 현재 기억한 디렉터리 목ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 디렉터리는\n"
+" `pushd' 명령으로 목ë¡ì— 경로를 저장할 수 있고, 'popd' \n"
+" 명령으로 거슬러 올ë¼ê°ˆ 수 있습니다.\n"
" \n"
" 옵션:\n"
-" -c\tì›ì†Œë¥¼ 전부 ì‚­ì œí•¨ìœ¼ë¡œì¨ ë””ë ‰í† ë¦¬ 스íƒì„ 초기화합니다\n"
-" -l\t홈 디렉토리까지 ~ë¡œ ì¶•ì•½ëœ ìƒëŒ€ê²½ë¡œë¥¼ 표시하지 않습니다\n"
-" -p\tí•œ ì¤„ì— í•˜ë‚˜ì”© 디렉토리 스íƒì„ 표시합니다\n"
-" -v\tí•œ ì¤„ì— í•˜ë‚˜ì”© 스íƒì˜ 위치와 함께 디렉토리 스íƒì„ 표시합니다\n"
+" -c\tì›ì†Œë¥¼ 전부 ì‚­ì œí•¨ìœ¼ë¡œì¨ ë””ë ‰í„°ë¦¬ 스íƒì„ 초기화합니다\n"
+" -l\t홈 디렉터리까지 ~ë¡œ ì¶•ì•½ëœ ìƒëŒ€ê²½ë¡œë¥¼ 표시하지 않습니다\n"
+" -p\tí•œ ì¤„ì— í•˜ë‚˜ì”© 디렉터리 스íƒì„ 표시합니다\n"
+" -v\tí•œ ì¤„ì— í•˜ë‚˜ì”© 스íƒì˜ 위치 ë° ë””ë ‰í„°ë¦¬ 스íƒì„ 표시합니다\n"
" \n"
" ì¸ìž:\n"
-" +N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 왼쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆ"
-"다.\n"
+" +N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 왼쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.\n"
" \t세는 수는 0부터 시작합니다.\n"
" \n"
-" -N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 오른쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤"
-"니다.\n"
+" -N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 오른쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆë‹¤.\n"
"\t세는 수는 0부터 시작합니다.\n"
" 종료 ìƒíƒœ:\n"
-" 유효하지 ì•Šì€ ì˜µì…˜ì´ ì£¼ì–´ì§€ê±°ë‚˜ 오류가 ë°œìƒí•˜ì§€ 않는다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆ"
-"다."
+" 부ì ì ˆí•œ ì˜µì…˜ì´ ì£¼ì–´ì§€ê±°ë‚˜ 오류가 ë°œìƒí•˜ì§€ 않는다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4263,8 +5266,24 @@ msgid ""
" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
" given or OPTNAME is disabled."
msgstr ""
+"ì…¸ ì˜µì…˜ì„ ì„¤ì • ë˜ëŠ” 해제합니다.\n"
+" \n"
+" <옵션ì´ë¦„> ì…¸ ì˜µì…˜ì˜ ì„¤ì •ì„ ë°”ê¿‰ë‹ˆë‹¤. ì–´ë–¤ 옵션 ì¸ìžë„ 지정하지 않으면\n"
+" <옵션ì´ë¦„>ì— ì§€ì •í•œ í•­ëª©ì„ ë³´ì—¬ì£¼ê±°ë‚˜, <옵션ì´ë¦„>ì´ ì—†ì„ ê²½ìš° 모든\n"
+" ì…¸ ì˜µì…˜ì„ ë³´ì—¬ì£¼ë“ ì§€ 설정 여부를 함께 나타냅니다.\n"
+" \n"
+" 옵션:\n"
+" -o\t`set -o'ë¡œ 지정한 <옵션ì´ë¦„>으로 제한합니다\n"
+" -p\tê° ì…¸ 옵션과 ìƒíƒœë¥¼ 출력합니다\n"
+" -q\tì¶œë ¥ì„ ë•ë‹ˆë‹¤\n"
+" -s\tê° <옵션ì´ë¦„>ì„ ì‚¬ìš©í•©ë‹ˆë‹¤ (설정)\n"
+" -u\tê° <옵션ì´ë¦„>ì„ ì‚¬ìš©í•˜ì§€ 않습니다 (설정해제)\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" <옵션ì´ë¦„>ì„ í™œì„±í™”í–ˆë‹¤ë©´ ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤. 부ì ì ˆí•œ 옵션ì„\n"
+" 지정했거나 <옵션ì´ë¦„>ì„ ì‚¬ìš©í•˜ì§€ 않으면 실패를 반환합니다."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4272,45 +5291,63 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
+" FORMAT is a character string which contains three types of objects: plain\n"
+" characters, which are simply copied to standard output; character escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
+" format specifications, each of which causes printing of the next successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in "
-"printf(1),\n"
+" In addition to the standard format specifications described in printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a "
-"format\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as "
-"appropriate,\n"
+" specifications behave as if a zero value or null string, as appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
+" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
+"<형ì‹>ì— ë”°ë¼ <ì¸ìž>를 구성하고 출력합니다.\n"
+" \n"
+" 옵션:\n"
+" -v <변수>\t표준 ì¶œë ¥ì— ë‚˜íƒ€ë‚´ëŠ” 대신 ì…¸ <변수>ì— í• ë‹¹í•©ë‹ˆë‹¤.\n"
+" \n"
+" <형ì‹>ì€ ì„¸ê°€ì§€ 형ì‹ì˜ ê°ì²´ê°€ 들어간 문ìžì—´ìž…니다. 표준 ì¶œë ¥ì— ê·¸ëƒ¥\n"
+" 복사하는 ì¼ë°˜ 문ìž, 표준 ì¶œë ¥ì— ë³€í™˜í•˜ì—¬ 복사하는 ë¬¸ìž ì´ìŠ¤ì¼€ì´í•‘ 시퀀스,\n"
+" 그리고 ë‹¤ìŒ ë’¤ë”°ë¼ì˜¤ëŠ” ì¸ìžë¥¼ 형ì‹ì— 맞춰 출력하는 í˜•ì‹ ì§€ì •ìžê°€ 바로\n"
+" 세가지 í˜•ì‹ ìž…ë‹ˆë‹¤.\n"
+" \n"
+" 게다가 printf(1)ì— í‘œì¤€ í˜•ì‹ ì§€ì •ìžì—ì„œ printf는 다ìŒê³¼ ê°™ì´ í•´ì„합니다:\n"
+" \n"
+" %b\t관련 ì¸ìžì˜ 백슬래시 ì´ìŠ¤ì¼€ì´í”„ 시퀀스를 확장합니다\n"
+" %q\tì…¸ 입력으로 다시 사용할 수 있ë„ë¡ ë³€ìˆ˜ë¥¼ 따옴표 처리합니다\n"
+" %Q\t%q와 비슷하지만, 따옴표 처리하기 ì „ì˜ ì¸ìžì— 정빌ë„를 ì ìš©í•©ë‹ˆë‹¤\n"
+" %(fmt)T\tstrftime(3)ì˜ í˜•ì‹ ë¬¸ìžì—´ë¡œ <형ì‹>ì„ ì‚¬ìš©í•˜ë„ë¡ ë‚ ì§œ-시간\n"
+" \t 문ìžì—´ì„ 출력합니다\n"
+" \n"
+" 형ì‹ì€ 모든 ì¸ìžì— 대해 필요한대로 재활용합니다. 필요한 형ì‹ë³´ë‹¤\n"
+" ì ì€ ì¸ìžë¥¼ 지정했다면, 추가 í˜•ì‹ ì§€ì • ë¶€ë¶„ì— ëŒ€í•´ ì ë‹¹í•˜ê²Œ ë„ ë¬¸ìžì—´\n"
+" ì´ ë“¤ì–´ê°„ 것처럼 처리해ì¤ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì„¤ì •í–ˆê±°ë‚˜ 기ë¡, 할당 오류가 나타나지 않으면 성공ì„\n"
+" 반환합니다."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
+" For each NAME, specify how arguments are to be completed. If no options\n"
+" are supplied, existing completion specifications are printed in a way that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -4325,38 +5362,61 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
-"supplied,\n"
-" the -D option takes precedence over -E, and both take precedence over -"
-"I.\n"
+" uppercase-letter options are listed above. If multiple options are supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -I.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
+"readlineì—ì„œ ì¸ìžë¥¼ 어떻게 완성 처리할 지 지정합니다.\n"
+" \n"
+" ê° <ì´ë¦„>ì— ëŒ€í•´ ì¸ìžë¥¼ 어떻게 완성할 지 지정합니다. ì˜µì…˜ì„ ì§€ì •í•˜ì§€\n"
+" 않으면, 입력할 ë•Œ 다시 활용할 수 있게 하는 ë°©ì‹ìœ¼ë¡œ 기존 완성 명세를\n"
+" 출력합니다.\n"
+" \n"
+" 옵션:\n"
+" -p\t기존 완성 명세를 재사용 형ì‹ìœ¼ë¡œ 출력합니다\n"
+" -r\tê° <ì´ë¦„>별 완성 명세를 제거하거나, <ì´ë¦„>ì„ ì§€ì •í•˜ì§€ 않았다면\n"
+" \t\t모든 완성 명세를 제거합니다\n"
+" -D\tì–´ë–¤ 개별 완성 명세 ì—†ì´ ëª…ë ¹ì— ëŒ€í•´ 기본 완성 명세와 ë™ìž‘ì„\n"
+" \t\tì ìš©í•©ë‹ˆë‹¤\n"
+" -E\t\"빈\" ëª…ë ¹ì— ëŒ€í•´ 완성 명세와 ë™ìž‘ì„ ì ìš©í•©ë‹ˆë‹¤ -- 빈 줄 ìƒíƒœì—ì„œ\n"
+" \t\t완성 ë™ìž‘ì„ ì‹œë„합니다\n"
+" -I\t초기 단어(보통 명령) 완성 명세와 ë™ìž‘ì„ ì ìš©í•©ë‹ˆë‹¤\n"
+" \n"
+" 완성 ë™ìž‘ì„ ì‹œë„í•  ë•Œ ìƒë‹¨ì— ëŒ€ë¬¸ìž ì˜µì…˜ 순서대로 ë™ìž‘ì„ ì ìš©í•©ë‹ˆë‹¤. 여러\n"
+" ì˜µì…˜ì„ ì§€ì •í•˜ë©´ -D ì˜µì…˜ì€ -E 옵션보다 우선하며, ë‘ ì˜µì…˜ì€ -I 옵션보다\n"
+" 우선합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í–ˆê±°ë‚˜ 오류가 ë°œìƒí•˜ì§€ 않으면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
+" completions. If the optional WORD argument is supplied, matches against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
+"ì˜µì…˜ì— ë”°ë¼ ê°€ëŠ¥í•œ 완성 명세를 표시합니다.\n"
+" \n"
+" 가능한 완성 명세를 만드는 ì…¸ 함수ì—ì„œ 사용하ë„ë¡ ì˜ë„했습니다.\n"
+" 추가 <단어> ì¸ìžë¥¼ 지정하면, <단어>ì— ì¼ì¹˜í•˜ëŠ” í•­ëª©ì„ ë§Œë“­ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í–ˆê±°ë‚˜ 오류가 없으면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, print\n"
+" the completion options for each NAME or the current completion specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -4378,27 +5438,46 @@ msgid ""
" Returns success unless an invalid option is supplied or NAME does not\n"
" have a completion specification defined."
msgstr ""
+"ìžë™ 완성 ì˜µì…˜ì„ ìˆ˜ì •í•˜ê±°ë‚˜ 표시합니다.\n"
+"\n"
+" ê° <ì´ë¦„> 별로 ìžë™ 완성 ì˜µì…˜ì„ ìˆ˜ì •í•˜ê±°ë‚˜, 지정 <ì´ë¦„>ì´ ì—†ë‹¤ë©´,\n"
+" 현재 실행하는 ëª…ë ¹ì˜ ìžë™ì™„성 ì˜µì…˜ì„ ìˆ˜ì •í•©ë‹ˆë‹¤. 주어진 <옵션>ì´ ì—†ë‹¤ë©´\n"
+" ê° <ì´ë¦„> 별 ìžë™ 완성 ì˜µì…˜ì„ ì¶œë ¥í•˜ê±°ë‚˜ 현재 ìžë™ 완성 명세를 출력합니다.\n"
+" \n"
+" 옵션:\n"
+" \t-o <옵션>\tê° <ì´ë¦„>별 <옵션>ì„ ì„¤ì •í•©ë‹ˆë‹¤\n"
+" \t-D\t\t\"기본\" 명령 ìžë™ 완성 ì˜µì…˜ì„ ë°”ê¿‰ë‹ˆë‹¤\n"
+" \t-E\t\t\"빈\" 명령 ìžë™ 완성 ì˜µì…˜ì„ ë°”ê¿‰ë‹ˆë‹¤\n"
+" \t-I\t\t초기 ë‹¨ì–´ì˜ ìžë™ 완성 ì˜µì…˜ì„ ë°”ê¿‰ë‹ˆë‹¤\n"
+" \n"
+" 지정 ì˜µì…˜ì„ ë„는 `-o' 대신 `+o'를 사용하십시오.\n"
+" \n"
+" ì¸ìž:\n"
+" \n"
+" ê° <ì´ë¦„>ì€ `complete' 내장 명령으로 ì•žì„œ 지정해야 하는 ìžë™ 완성\n"
+" 명세 ëª…ë ¹ì„ ì°¸ì¡°í•©ë‹ˆë‹¤. <ì´ë¦„>ì´ ì—†ë‹¤ë©´ 현재 ìžë™ 완성 ê·œì¹™ì„ ìƒì„±í•˜ëŠ”\n"
+" compopt를 호출해야 하며, 현재 실행하는 ìžë™ 완성 ìƒì„±ìžì˜ 옵션ë„\n"
+" 역시 마찬가지로 수정해야합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 부ì ì ˆí•œ ì˜µì…˜ì„ ì§€ì •í•˜ì§€ 않았거나 <ì´ë¦„>ì— ìžë™ 완성 명세를 지정했다면\n"
+" ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
+" Read lines from the standard input into the indexed array variable ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard "
-"input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -4411,17 +5490,47 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
+"표준 ìž…ë ¥ì„ ì½ì–´ ìƒ‰ì¸ ë°°ì—´ ë³€ìˆ˜ì— ëŒ€ìž…í•©ë‹ˆë‹¤.\n"
+" \n"
+" 표준 ìž…ë ¥ì—ì„œ í–‰ì„ ì½ì–´ ìƒ‰ì¸ <ë°°ì—´> ë³€ìˆ˜ì— ë„£ê±°ë‚˜ -u ì˜µì…˜ì„ ì§€ì •í•˜ì—¬\n"
+" <파ì¼ì„œìˆ ìž>ì—ì„œ í–‰ì„ ì½ì–´ ìƒ‰ì¸ <ë°°ì—´> ë³€ìˆ˜ì— ë„£ìŠµë‹ˆë‹¤. <매핑파ì¼>\n"
+" 변수는 기본ì ìœ¼ë¡œ <ë°°ì—´> 취급합니다.\n"
+" \n"
+" 옵션:\n"
+" -d <구분ìž>\t개행 ë¬¸ìž ëŒ€ì‹  <구분ìž>ë¡œ í–‰ì„ ëŠìŠµë‹ˆë‹¤.\n"
+" -n <갯수>\t\t<갯수>ë§Œí¼ í–‰ì„ ì½ìŠµë‹ˆë‹¤. <갯수> ê°’ì´ 0ì´ë©´\n"
+" \t\t 모든 í–‰ì„ ë³µì‚¬í•©ë‹ˆë‹¤.\n"
+" -O <시작>\t\t<시작> ì¸ë±ìŠ¤ì— <ë°°ì—´> í• ë‹¹ì„ ì‹œìž‘í•©ë‹ˆë‹¤.\n"
+" \t\t기본 ì¸ë±ìŠ¤ëŠ” 0 입니다.\n"
+" -s <갯수>\t\tì²˜ìŒ <갯수>ë§Œí¼ ì½ì€ í–‰ì„ ë¬´ì‹œí•©ë‹ˆë‹¤\n"
+" -t\t\tì½ì€ ê° í–‰ ëì— ë’¤ë‹¤ë¼ì˜¤ëŠ” <구분ìž>를 제거합니다\n"
+" \t\t(기본 ê°’ì€ ê°œí–‰ 문ìž)\n"
+" -u <파ì¼ì„œìˆ ìž>\t표준 ìž…ë ¥ 대신 <파ì¼ì„œìˆ ìž>ì—ì„œ í–‰ì„ ì½ìŠµë‹ˆë‹¤\n"
+" -C <콜백>\t\t<ì–‘ìž> í–‰ì„ ì½ì„ 때마다 실행할 <콜백> 입니다\n"
+" -c <ì–‘ìž>\t\t<콜백>ì„ ì‹¤í–‰í•  때마다 ì½ì„ í–‰ 갯수를 지정합니다\n"
+" \n"
+" ì¸ìž:\n"
+" <ë°°ì—´>\tíŒŒì¼ ë°ì´í„°ì— 활용할 ë°°ì—´ 변수 ì´ë¦„\n"
+" \n"
+" -c 옵션 ì—†ì´ -C를 지정하면, 기본 ì–‘ìž ìˆ˜ëŠ” 5000입니다. <콜백>ì„\n"
+" 실행하면, ë‹¤ìŒ ë°°ì—´ ìš”ì†Œì˜ ìƒ‰ì¸ ë²ˆí˜¸ë¥¼ 할당하고, 해당 ìš”ì†Œì— í• ë‹¹í•  í–‰ì„\n"
+" 추가 ì¸ìžë¡œ 지정합니다.\n"
+" \n"
+" <시작> ìƒ‰ì¸ ë²ˆí˜¸ë¥¼ 제대로 지정하지 않으면, mapfileì—ì„œ <ë°°ì—´>ì—\n"
+" 할당하기 ì „ì— <ë°°ì—´>ê°’ì„ ì‚­ì œí•©ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" 부ì ì ˆí•œ ì˜µì…˜ì„ ì£¼ì§€ 않았거나 <ë°°ì—´>ì„ ì½ê¸° 전용으로 ë‘지 않았거나\n"
+" ìƒ‰ì¸ ë°°ì—´ë¡œ 올바르게 지정했다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆë‹¤."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -4430,18 +5539,3 @@ msgstr ""
"파ì¼ì—ì„œ ì¤„ì„ ì½ì–´ ë°°ì—´ ë³€ìˆ˜ì— ë„£ìŠµë‹ˆë‹¤.\n"
" \n"
" `mapfile'ì˜ ë™ì˜ì–´."
-
-#~ msgid ""
-#~ "Returns the context of the current subroutine call.\n"
-#~ " \n"
-#~ " Without EXPR, returns "
-#~ msgstr ""
-#~ "현재 서브루틴 ì½œì˜ ì»¨í…스트를 반환합니다.\n"
-#~ " \n"
-#~ " EXPRì´ ì—†ìœ¼ë©´, 다ìŒì„ 반환 "
-
-#~ msgid "add_process: process %5ld (%s) in the_pipeline"
-#~ msgstr "add_process: 프로세스 %5ld (%s) 는 the_pipelineì— ìžˆìŒ"
-
-#~ msgid "Unknown Signal #"
-#~ msgstr "알 수 없는 신호 #"
diff --git a/po/lt.gmo b/po/lt.gmo
index 31a29ca4..59b42925 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index 06bdb449..6bcc068e 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2009-03-25 16:49+0200\n"
"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -24,57 +24,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "blogas masyvo indeksas"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
-#: arrayfunc.c:700
-#, fuzzy, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: netaisyklingas veiksmo pavadinimas"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: nepavyko priskirti prie neskaitinio indekso"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nepavyko sukurti: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: pirmas ne tarpo simbolis nėra „\"“"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "nÄ—ra uždaranÄiojo „%c“ %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: trūksta dvitaškio skirtuko"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "„%s“: nepavyko atjungti (unbind)"
@@ -94,7 +89,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, fuzzy, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: netaisyklingas keymap'o pavadinimas"
@@ -166,7 +161,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME nenustatytas"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "per daug argumentų"
@@ -194,7 +189,7 @@ msgstr "įspėjimas: "
msgid "%s: usage: "
msgstr "%s: naudojimas: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: parametrui reikia argumento"
@@ -209,7 +204,7 @@ msgstr "%s: reikia skaitinio argumento"
msgid "%s: not found"
msgstr "%s: nerasta"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: negalimas parametras"
@@ -219,7 +214,7 @@ msgstr "%s: negalimas parametras"
msgid "%s: invalid option name"
msgstr "%s: netaisyklingas parametro vardas"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': netaisyklingas identifikatorius"
@@ -232,7 +227,7 @@ msgstr "netaisyklingas aÅ¡tuonetainis skaiÄius"
msgid "invalid hex number"
msgstr "netaisyklingas Å¡eÅ¡ioliktainis skaiÄius"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "netaisyklingas skaiÄius"
@@ -246,88 +241,93 @@ msgstr "%s: netaisyklinga signalo specifikacija"
msgid "`%s': not a pid or valid job spec"
msgstr "„%s“: ne pid'as ar taisyklinga darbo specifikacija"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: kintamasis tik skaitymui"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: nepavyko ištrinti"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s išėjo už ribų"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argumentas"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s už ribų"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: nÄ—ra tokio darbo"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: nėra darbų valdymo"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "nėra darbų valdymo"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: apribota"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "apribota"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: ne vidinÄ— aplinkos komanda"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "rašymo klaida: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: klaida skaitant esamÄ… aplankÄ…: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: dviprasmis darbo aprašymas"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: nepavyko ištrinti: %s tik skaitymui"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: nepavyko ištrinti"
@@ -337,108 +337,108 @@ msgstr "%s: nepavyko ištrinti"
msgid "%s: invalid action name"
msgstr "%s: netaisyklingas veiksmo pavadinimas"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: nÄ—ra baigimo specifikacijos"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "įspėjimas: parametras -F gali neveikti taip, kaip tikitės"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "įspėjimas: parametras -C gali neveikti taip, kaip tikitės"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr ""
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "galima naudoti tik funkcijoje"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "negalima naudoti „-f“ funkcijoms kurti"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funkcija tik skaitymui"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "negalima naudoti „-f“ funkcijoms kurti"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: funkcija tik skaitymui"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: negalima tokiu būdu sunaikinti masyvų kintamųjų"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dinaminis įkrovimas negalimas"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "nepavyko atverti bendrojo objekto %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "nepavyko rasti %s bendrajame objekte %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: nedinamiškai įkrauta"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nedinamiškai įkrauta"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nepavyko ištrinti: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: aplankas"
@@ -453,7 +453,7 @@ msgstr "%s: ne paprastas failas"
msgid "%s: file is too large"
msgstr "%s: failas per didelis"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: negalima vykdyti dvejetainių failų"
@@ -551,12 +551,12 @@ msgstr ""
"nÄ—ra žinyno temų, atitinkanÄių „%s“. Bandykite „help help“, „man -k %s“ arba "
"„info %s“."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: nepavyko atverti: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -577,21 +577,21 @@ msgstr ""
"Žvaigždutė (*) prie vardo reiškia, kad komanda išjungta.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "negalima naudoti daugiau negu vieno parametro iš -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "istorijos pozicija"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: netaisyklingas parametro vardas"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: istorijos išskleidimas nesėkmingas"
@@ -614,79 +614,79 @@ msgstr "%s: argumentai turi būti procesų arba darbų ID"
msgid "Unknown error"
msgstr "Nežinoma klaida"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "tikėtasi išraiškos"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, fuzzy, c-format
msgid "%s: not an indexed array"
msgstr "%s: ne masyvo kintamasis"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: netaisyklingas failo deskriptorius: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, fuzzy, c-format
msgid "%s: invalid line count"
msgstr "%s: nesamas parametras"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, fuzzy, c-format
msgid "%s: invalid array origin"
msgstr "%s: nesamas parametras"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, fuzzy, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: netaisyklingas veiksmo pavadinimas"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
#, fuzzy
msgid "empty array variable name"
msgstr "%s: ne masyvo kintamasis"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr ""
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: trūksta formato simbolio"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, fuzzy, c-format
msgid "`%c': invalid time format specification"
msgstr "%s: klaidinga laiko ribos (timeout) specifikacija"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: netaisyklingas formato simbolis"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "įspėjimas: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, fuzzy, c-format
msgid "missing unicode digit for \\%c"
msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x"
@@ -783,12 +783,12 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: klaidinga laiko ribos (timeout) specifikacija"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "skaitymo klaida: %d: %s"
@@ -801,7 +801,7 @@ msgstr "galima grįžti (return) tik iš funkcijos ar scenarijaus"
msgid "cannot simultaneously unset a function and a variable"
msgstr "negalima kartu ištrinti funkcijos ir kintamojo"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ne masyvo kintamasis"
@@ -820,11 +820,11 @@ msgstr "%s: nepavyko ištrinti"
msgid "shift count"
msgstr "postÅ«mių skaiÄius"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "negalima aplinkos nuostatos vienu metu įjungti ir išjungti"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: netaisyklingas aplinkos nuostatos pavadinimas"
@@ -891,16 +891,16 @@ msgstr "%s: netaisyklingas limito argumentas"
msgid "`%c': bad command"
msgstr "`%c': bloga komanda"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nepavyko gauti limito: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "riba"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nepavyko pakeisti limito: %s"
@@ -919,7 +919,7 @@ msgstr "„%c“: netaisyklingas simbolinės veiksenos operatorius"
msgid "`%c': invalid symbolic mode character"
msgstr "„%c“: netaisyklingas simbolinės veiksenos simbolis"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " eilutÄ— "
@@ -939,97 +939,107 @@ msgstr "Nutraukiama..."
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "įspėjimas: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "nežinoma komandos klaida"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "blogas komandos tipas"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "blogas jungtukas"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "blogas Å¡uolis"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: nepriskirtas kintamasis"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\alaukiant įvedimo baigėsi laikas: automatiškai atsijungta\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "nepavyko peradresuoti standartinio įvedimo iš /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
#, fuzzy
msgid "pipe error"
msgstr "rašymo klaida: %s"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: komanda nerasta"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: negalima vykdyti dvejetainių failų"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: blogas interpretatorius"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: negalima vykdyti dvejetainių failų"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s yra aplinkos vidinÄ— komanda\n"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nepavyko dublikuoti fd %d į fd %d"
@@ -1042,71 +1052,71 @@ msgstr "viršytas išraiškos rekursijos lygis"
msgid "recursion stack underflow"
msgstr "rekursijos steko atvirkštinis perpildymas"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "sintaksės klaida išraiškoje"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "bandymas priskirti ne kintamajam"
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "sintaksės klaida išraiškoje"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "dalyba iš 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "klaida: bloga expassign leksema"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "sąlygos išraiškoje tikėtasi „:“"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "eksponentė mažesnis už 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
"po prieš-didinimo ar prieš-mažinimo operatoriaus tikėtasi identifikatoriaus"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "Trūksta „)“"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "sintaksÄ—s klaida: tikÄ—tasi operando"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "sintaksÄ—s klaida: netaisyklingas aritmetinis operatorius"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr ""
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "netaisyklingas aritmetinis pagrindas"
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: nesamas parametras"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "per didelė pagrindo reikšmė"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: išraiškos klaida\n"
@@ -1115,7 +1125,7 @@ msgstr "%s: išraiškos klaida\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: nepavyko pasiekti aukštesnių aplankų"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, fuzzy, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nepavyko dublikuoti fd %d į fd %d"
@@ -1134,167 +1144,167 @@ msgstr "save_bash_input: naujam fd %d buferis jau egzistuoja"
msgid "start_pipeline: pgrp pipe"
msgstr ""
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr ""
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "trinamas sustabdytas darbas %d procesų grupėje %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: tokio pid nÄ—ra"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signalas %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Atlikta"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr ""
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr ""
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr ""
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Atlikta(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr ""
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Nežinoma būsena"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr ""
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr ""
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr ""
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld nÄ—ra Å¡ios aplinkos dukterinis procesas"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: nėra proceso %ld įrašo"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: darbas %d yra sustabdytas"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: nÄ—ra tokio darbo"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: darbas užsibaigė"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: darbas %d jau fone"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: %d eilutÄ—: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr ""
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr ""
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr ""
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr ""
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr ""
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr ""
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr ""
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "šioje aplinkoje nėra darbų valdymo"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: pažeista prielaida: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1303,49 +1313,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: prielaida pažeista\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "nežinoma"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: blokas iš laisvų blokų sąrašo sugadintas"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: iškviestas su jau atlaisvintu bloku"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: iškviestas su nerezervuotu bloku"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: iškviestas su nerezervuotu bloku"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi"
@@ -1387,22 +1397,22 @@ msgstr "%s: netaisyklingas tinklo kelias"
msgid "network operations not supported"
msgstr "tinklo operacijos nepalaikomos"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:292
+#: locale.c:294
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų"
-#: locale.c:294
+#: locale.c:296
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų"
@@ -1420,138 +1430,138 @@ msgstr "Turite naujų laiškų $_"
msgid "The mail in %s has been read\n"
msgstr "Paštas %s perskaitytas\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "sintaksės klaida: reikia aritmetinės išraiškos"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "sintaksės klaida: netikėtas „;“"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "sintaksės klaida: „((%s))“"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: blogas instrukcijos tipas %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "netikėta failo pabaiga ieškant atitinkamo „%c“"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "netikėta failo pabaiga ieškant „]]“"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "sintaksės klaida sąlygos išraiškoje: netikėta leksema „%s“"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "sintaksės klaida sąlygos išraiškoje"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "netikėta leksema „%s“, tikėtasi „)“"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "tikėtasi „)“"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "netikėtas argumentas „%s“ sąlygos unariniam operatoriui"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "netikÄ—tas argumentas sÄ…lygos unariniam operatoriui"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "netikėta leksema „%s“, tikėtasi sąlyginio binarinio operatoriaus"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "tikÄ—tasi sÄ…lygos binarinio operatoriaus"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "netikėtas argumentas „%s“ sąlygos binariniam operatoriui"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "netikÄ—tas argumentas sÄ…lygos binariniam operatoriui"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "netikėta leksema „%c“ sąlygos komandoje"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "netikėta leksema „%s“ sąlygos komandoje"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "netikÄ—ta leksema %d sÄ…lygos komandoje"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "sintaksės klaida prie netikėtos leksemos: „%s“"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "sintaksės klaida prie „%s“"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "sintaksÄ—s klaida: netikÄ—ta failo pabaiga"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "sintaksÄ—s klaida"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Naudokite „%s“, jei norite išeiti iš ap.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "netikėta failo pabaiga ieškant atitinkamo „)“"
@@ -1589,94 +1599,94 @@ msgstr ""
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr ""
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c“: netaisyklingas formato simbolis"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "failo deskriptorius už ribų"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: ambiguous redirect"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: negalima perraÅ¡yti egzistuojanÄio failo"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: apribota: negalima peradresuoti išvedimo"
-#: redir.c:218
+#: redir.c:219
#, fuzzy, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s"
-#: redir.c:222
+#: redir.c:223
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: negalima priskirti sąrašo masyvo elementui"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "nukreipimo klaida: nepavyko dublikuoti fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "nepavyko rasti /tmp, sukurkite šį aplanką!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp turi būti taisyklingas aplanko pavadinimas"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: netaisyklingas parametras"
-#: shell.c:1319
+#: shell.c:1343
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "nepavyko dublikuoti fd %d į fd %d"
-#: shell.c:1330
+#: shell.c:1354
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "nepavyko dublikuoti fd %d į fd %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: aplankas"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Neturiu vardo!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versija %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1685,325 +1695,325 @@ msgstr ""
"Naudojimas:\t%s [GNU ilgas parametras] [parametras] ...\n"
"\t%s [GNU ilgas parametras] [parametras] scenarijaus-failas ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU ilgi parametrai:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Aplinkos parametrai:\n"
-#: shell.c:2043
+#: shell.c:2069
#, fuzzy
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr ""
"\t-irsD arba -c komanda arba -O shopt_nustatymas\t\t(tik iškvietimui)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s arba -o nustatymas\n"
-#: shell.c:2068
+#: shell.c:2094
#, fuzzy, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Bandykite „%s --help“ arba „%s --usage“, jei norite gauti daugiau "
"informacijos.\n"
-#: shell.c:2069
+#: shell.c:2095
#, fuzzy, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Bandykite „ldd --help“, jei norite daugiau informacijos."
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Naudokite komandą „bashbug“ klaidoms pranešti.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: netaisyklinga operacija"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr ""
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr ""
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr ""
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr ""
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr ""
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr ""
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT instrukcija"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr ""
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Slankaus kablelio klaida"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr ""
-#: siglist.c:90
+#: siglist.c:91
#, fuzzy
msgid "Bus error"
msgstr "sintaksÄ—s klaida"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Segmentacijos klaida"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr ""
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr ""
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Žadintuvas"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Nutraukta"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr ""
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Sustabdyta (signalas)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Tęsti"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr ""
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Sustabdyta (tty įvedimas)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Sustabdyta (tty išvedimas)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr ""
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU riba"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Failų riba"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr ""
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr ""
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Langas pakeistas"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr ""
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr ""
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr ""
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr ""
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr ""
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr ""
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "proceso migravimas į kitą CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "programavimo klaida"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr ""
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr ""
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr ""
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Informacijos užklausa"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Nežinomas signalas #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "blogas keitinys: trūksta „%s“ %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: negalima priskirti sąrašo masyvo elementui"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr ""
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr ""
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr ""
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr ""
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
-#: subst.c:6213
+#: subst.c:6370
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "blogas keitinys: trūksta „%s“ %s"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr ""
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr ""
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: nesamas parametras"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "%s: netaisyklingas veiksmo pavadinimas"
-#: subst.c:7256
+#: subst.c:7478
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parametras tuÅ¡Äias arba nenustatytas"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametras tuÅ¡Äias arba nenustatytas"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: posekio išraiška < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: blogas keitinys"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: negalima tokiu būdu priskirti"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10367
+#: subst.c:10795
#, fuzzy, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "blogas keitinys: trūksta „%s“ %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "nėra atitikmenų: %s"
@@ -2026,21 +2036,21 @@ msgstr "tikėtasi „)“"
msgid "`)' expected, found %s"
msgstr "tikėtasi „)“, rasta %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: tikÄ—tasi binarinio operatoriaus"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: tikÄ—tasi unarinio operatoriaus"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "trūksta „]“"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "sintaksės klaida: netikėtas „;“"
@@ -2049,100 +2059,105 @@ msgstr "sintaksės klaida: netikėtas „;“"
msgid "invalid signal number"
msgstr "netaisyklingas signalo numeris"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: bloga trap_list[%d] reikšmė: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: signalo doroklÄ— yra SIG_DFL, siunÄiamas %d (%s) sau"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: blogas signalas %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "klaida importuojant funkcijos apibrėžimą „%s“"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "aplinkos lygmuo (%d) per aukštas, nustatoma į 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr ""
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4771
+#: variables.c:4757
#, fuzzy, c-format
msgid "%s has null exportstr"
msgstr "%s: parametras tuÅ¡Äias arba nenustatytas"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "netaisyklingas simbolis %d %s exportstr'e"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "%s exportstr'e trūksta „=“"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: nÄ—ra global_variables konteksto"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
-#: variables.c:6387
+#: variables.c:6400
#, fuzzy, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: nepavyko atverti: %s"
-#: variables.c:6392
+#: variables.c:6405
#, fuzzy, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%d: netaisyklingas failo deskriptorius: %s"
-#: variables.c:6437
+#: variables.c:6450
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s išėjo už ribų"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "AutorinÄ—s teisÄ—s (C) 2009 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2234,12 +2249,16 @@ msgstr "command [-pVv] komanda [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFilrtux] [-p] [pavadinimas[=reikšmė] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFilrtux] [-p] pavadinimas[=reikšmė] ..."
#: builtins.c:82
@@ -2340,7 +2359,7 @@ msgstr "return [n]"
#: builtins.c:142
#, fuzzy
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [--abefhkmnptuvxBCHP] [-o nustatymas] [arg ...]"
#: builtins.c:144
@@ -2391,7 +2410,7 @@ msgstr "type [-afptP] pavadinimas [pavadinimas ...]"
#: builtins.c:171
#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHacdefilmnpqrstuvx] [riba]"
#: builtins.c:174
@@ -2437,11 +2456,13 @@ msgstr ""
"KOMANDOS; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while KOMANDOS; do KOMANDOS; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until KOMANDOS; do KOMANDOS; done"
#: builtins.c:200
@@ -3288,7 +3309,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3329,7 +3352,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3341,7 +3364,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3427,7 +3450,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3449,7 +3472,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3468,7 +3491,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3489,7 +3512,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3500,7 +3523,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
#, fuzzy
msgid ""
"Execute commands from a file in the current shell.\n"
@@ -3519,7 +3542,7 @@ msgstr ""
" Jei nurodyta ARGUMENTŲ, jie tampa poziciniais parametrais iškvietus\n"
" FAILÄ„."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3533,7 +3556,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3616,7 +3639,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3624,7 +3647,7 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -3636,7 +3659,7 @@ msgid ""
" Always succeeds."
msgstr ""
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3680,7 +3703,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -3710,7 +3733,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3760,7 +3783,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3778,7 +3801,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3810,7 +3833,7 @@ msgid ""
" children."
msgstr ""
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3825,7 +3848,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3838,7 +3861,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3855,7 +3878,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3875,7 +3898,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3891,7 +3914,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3902,7 +3925,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -3923,13 +3946,14 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1647
+#: builtins.c:1648
#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -3937,13 +3961,14 @@ msgstr ""
"Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n"
" „while“ komandų grąžina klaidos kodą 0."
-#: builtins.c:1659
+#: builtins.c:1660
#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -3951,7 +3976,7 @@ msgstr ""
"Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n"
" „until“ komandų grąžina klaidos kodą, nelygų 0."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3964,7 +3989,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -3978,7 +4003,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1699
+#: builtins.c:1700
#, fuzzy
msgid ""
"Group commands as a unit.\n"
@@ -3992,7 +4017,7 @@ msgstr ""
"Vykdyti eilę komandų grupėje. Tai yra vienas iš būdų nukreipti\n"
" visos eilės komandų įvedimą/išvedimą."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4006,7 +4031,7 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4017,7 +4042,7 @@ msgid ""
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4045,7 +4070,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4099,7 +4124,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4130,7 +4155,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4157,7 +4182,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -4186,7 +4211,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4206,7 +4231,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1937
+#: builtins.c:1938
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -4230,6 +4255,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -4257,7 +4284,7 @@ msgstr ""
" Jei pateiktas parametras -v, išvedimas įrašomas į aplinkos kintamąjį\n"
" KINT, užuot spausdinus į standartinį išvedimą."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4288,7 +4315,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2001
+#: builtins.c:2004
#, fuzzy
msgid ""
"Display possible completions depending on the options.\n"
@@ -4306,7 +4333,7 @@ msgstr ""
" Jei pateiktas nebūtinasis ŽODŽIO argumentas, išvedami įrašai,\n"
" atitinkantys ŽODĮ."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4338,7 +4365,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4380,13 +4407,17 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for `mapfile'."
msgstr ""
+#, fuzzy, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: netaisyklingas veiksmo pavadinimas"
+
#, fuzzy
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
diff --git a/po/nb.gmo b/po/nb.gmo
index 894af692..8d59f1d2 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index cdeff4d1..1a2da59c 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -1,82 +1,78 @@
# Norwegian (bokmål) translation of GNU Bash
# Copyright (C) 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
+# Johnny A. Solbu <johnny@solbu.net>, 2022.
# Ã…ka Sikrom <a4@hush.com>, 2015-2019.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash-5.0\n"
+"Project-Id-Version: bash-5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2019-01-08 19:40+0100\n"
-"Last-Translator: Ã…ka Sikrom <a4@hush.com>\n"
-"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-07-03 20:40+0200\n"
+"Last-Translator: Johnny A. Solbu <johnny@solbu.net>\n"
+"Language-Team: Norwegian Bokmaal <l10n-no@lister.huftis.org>\n"
"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.0.6\n"
+"X-Generator: Poedit 2.2.3\n"
#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "feil i tabell-underskript"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: fjerner navnref-egenskap"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: indeksert tabell kan ikke konverteres til assosiativ tabell"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: ugyldig nøkkel for assosiativ tabell"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: kan ikke tildeles ikke-numerisk indeks"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: underskript må brukes ved tildeling av assosiative tabeller"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: klarte ikke å opprette: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: fant ikke tastaturoppsett for kommando"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: første ikke-blanktegn må være «\"»"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "avsluttende «%c» mangler i %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: kolon-skilletegn mangler"
-#: bashline.c:4555
-#, fuzzy, c-format
+#: bashline.c:4733
+#, c-format
msgid "`%s': cannot unbind in command keymap"
-msgstr "«%s»: klarte ikke å fjerne tildeling"
+msgstr "«%s»: kan ikke oppheve bindingen i kommandotastaturet"
#: braces.c:327
#, c-format
@@ -93,7 +89,7 @@ msgstr "brace-utvidelse: klarte ikke å tildele minne for %u elementer"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace-utvidelse: klarte ikke å tildele minne for «%s»"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "«%s»: ugyldig alias"
@@ -125,7 +121,7 @@ msgstr "%s er ikke tilknyttet en knapp.\n"
#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
-msgstr "%s kan startes via"
+msgstr "%s kan startes via "
#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
@@ -141,7 +137,6 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "gir bare mening i «for»-, «while»- og «until»-sløyfer"
#: builtins/caller.def:136
-#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
@@ -153,24 +148,18 @@ msgid ""
" current one; the top frame is frame 0."
msgstr ""
"Vis konteksten for gjeldende underrutine-kall.\n"
-" \n"
-" Hvis UTTRykk ikke er valgt, vises «$line $filename». Med UTTRykk vises\n"
-" «$line $subroutine $filename». Denne ekstrainformasjonen kan brukes\n"
-" til stabelsporing.\n"
-" \n"
-" Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege "
-"seg\n"
-" gjennom tilbake fra gjeldende ramme. Øverste ramme er 0.\n"
-" \n"
-" Avslutningsstatus:\n"
-" Status er 0, med mindre skallet ikke kjører en skallfunksjon eller\n"
-" valgt UTTRykk er ugyldig."
+" Uten EXPR, returnerer \"$line $filnavn\". Med EXPR, returnerer\n"
+" \"$line $subrutine $filename denne ekstra informasjonen kan brukes til å\n"
+" gi en stabelsporing.\n"
+" \n"
+" Verdien til EXPR indikerer hvor mange anropsrammer som skal gå tilbake før\n"
+" nåværende; topprammen er ramme 0."
#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME har ingen verdi"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "for mange argumenter"
@@ -190,14 +179,14 @@ msgstr "linje %d: "
#: builtins/common.c:134 error.c:264
#, c-format
msgid "warning: "
-msgstr "advarsel:"
+msgstr "advarsel: "
#: builtins/common.c:148
#, c-format
msgid "%s: usage: "
msgstr "%s: bruk: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: valget krever et argument"
@@ -212,7 +201,7 @@ msgstr "%s: valget krever et tall-argument"
msgid "%s: not found"
msgstr "fant ikke %s"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: ugyldig valg"
@@ -222,7 +211,7 @@ msgstr "%s: ugyldig valg"
msgid "%s: invalid option name"
msgstr "%s: ugyldig valgnavn"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "«%s»: ugyldig navn"
@@ -235,7 +224,7 @@ msgstr "ugyldig oktal-tall"
msgid "invalid hex number"
msgstr "ugldig heksadesimalt tall"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "ugyldig tall"
@@ -249,88 +238,93 @@ msgstr "%s: ugyldig signalspesifikasjon"
msgid "`%s': not a pid or valid job spec"
msgstr "«%s» er hverken hverken et PID eller en gyldig jobbspesifikasjon"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: skrivebeskyttet variabel"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: kan ikke tildele"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s er utenfor rekkevidde"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s er utenfor rekkevidde"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: jobben finnes ikke"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: ingen jobbkontroll"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "ingen jobbkontroll"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: begrenset"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "begrenset"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: ikke innebygd i skall"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "skrivefeil: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "feil under endring av terminal-egenskaper: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "feil under henting av terminal-egenskaper: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: feil under henting av gjeldende mappe: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: flertydig jobbspesifikasjon"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "hjelp er ikke tilgjengelig for denne versjonen"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: klarte ikke å fjerne verdi fra skrivebeskyttet %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: klarte ikke å fjerne verdi"
@@ -340,108 +334,108 @@ msgstr "%s: klarte ikke å fjerne verdi"
msgid "%s: invalid action name"
msgstr "%s: ugyldig handlingsnavn"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ingen spesifikasjon for fullføring"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "advarsel: valget «-F» virker kanskje ikke slik du forventer"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "advarsel: valget «-C» virker kanskje ikke slik du forventer"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "fullføringsfunksjon kjøres ikke nå"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "kan bare brukes i funksjoner"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "valget«-f» kan ikke brukes til å lage funksjoner"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: skrivebeskyttet funksjon"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: referansevariabler kan ikke være tabeller (arrays)"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: navnref.-variabler kan ikke referere til seg selv"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: sirkulær navnreferanse"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "«%s»: ugyldig variabelnavn for navnreferanse"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "valget«-f» kan ikke brukes til å lage funksjoner"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: skrivebeskyttet funksjon"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: sammensatt tabell-tideling i hermetegn er utgått"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: tabellvariabler kan ikke ødelegges på denne måten"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: assosiative tabeller kan ikke konverteres til indekserte tabeller"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: sammensatt tabell-tideling i hermetegn er utgått"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynamisk innlasting er ikke tilgjengelig"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "klarte ikke å åpne delt objekt %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "fant ikke %s i delt objekt %s: %s"
-#: builtins/enable.def:388
-#, fuzzy, c-format
+#: builtins/enable.def:422
+#, c-format
msgid "%s: dynamic builtin already loaded"
-msgstr "%s: ikke dynamisk innlastet"
+msgstr "%s: dynamisk innebygd allerede lastet"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "innlastingsfunksjon for %s førte til feilkode (%d). Ikke lastet inn"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: ikke dynamisk innlastet"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: klarte ikke å slette: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: er en mappe"
@@ -456,7 +450,7 @@ msgstr "%s: ikke en vanlig fil"
msgid "%s: file is too large"
msgstr "%s: fila er for stor"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: klarte ikke å kjøre binærfil"
@@ -543,21 +537,20 @@ msgid ""
"'\n"
"\n"
msgstr ""
+"'\n"
+"\n"
#: builtins/help.def:185
#, c-format
-msgid ""
-"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-"ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller "
-"«info %s»."
+msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr "ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller «info %s»."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: klarte ikke å åpne: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -568,32 +561,29 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
-"Disse skallkommandoene er internt definert. Skriv «help» for å se denne "
-"lista.\n"
+"Disse skallkommandoene er internt definert. Skriv «help» for å se denne lista.\n"
"Skriv «help name» for å finne ut mer om funksjonen «name».\n"
"Bruk «info bash» for å finne generell info om skallet.\n"
-"Bruk «man -k» eller «info» for å finne ut mer om kommandoer som ikke er på "
-"denne lista.\n"
+"Bruk «man -k» eller «info» for å finne ut mer om kommandoer som ikke er på denne lista.\n"
"\n"
-"Stjerne (*) ved siden av et kommandonavn betyr at gjeldende kommando er "
-"slått av.\n"
+"Stjerne (*) ved siden av et kommandonavn betyr at gjeldende kommando er slått av.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "du kan ikke bruke flere enn ett av valgene -anrw på én gang"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "historikkposisjon"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: ugyldig tidsstempel"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: historikk-utvidelse mislyktes"
@@ -616,78 +606,78 @@ msgstr "%s: argumenter må være prosess- eller jobb-ID-er"
msgid "Unknown error"
msgstr "Ukjent feil"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "forventet uttrykk"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: ikke en indeksert tabell"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: ugyldig spesifikasjon av fildeskriptor"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: ugyldig fildeskriptor: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: ugyldig linjeantall"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: ugyldig tabellopphav"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: ugyldig tilbakekallsmengde"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "tomt navn på tabellvariabel"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "støtte for tabellvariabler kreves"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "«%s»: formattegn mangler"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: ugyldig spesifikasjon av tidsformat"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: ugyldig formattegn"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "advarsel: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "problem med tolkning av format: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "heks-siffer mangler for \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "unicode-siffer mangler for \\%c"
@@ -728,12 +718,10 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
"Vis liste over mapper som blir husket. Mapper\n"
@@ -820,8 +808,7 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
"Fjerner mapper fra mappestabelen. Hvis ingen argumenter brukes,\n"
-" fjerner programmet øverste mappe fra stabelen og bytter til det som "
-"deretter er øverste mappe.\n"
+" fjerner programmet øverste mappe fra stabelen og bytter til det som deretter er øverste mappe.\n"
" \n"
" Valg:\n"
" -n\tLar være å bytte mappe når mapper fjernes fra stabelen,\n"
@@ -838,12 +825,12 @@ msgstr ""
" \n"
" Den innebygde funksjonen «dirs» viser mappestabelen."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: ugyldig spesifikasjon av tidsavbrudd"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "lesefeil: %d: %s"
@@ -854,11 +841,9 @@ msgstr "du kan bare «return» fra en funksjon eller kildeskript"
#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
-msgstr ""
-"du kan ikke utføre «unset» (tømme både en funksjon og en variabel for "
-"verdier) samtidig"
+msgstr "du kan ikke utføre «unset» (tømme både en funksjon og en variabel for verdier) samtidig"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ikke en tabellvariabel"
@@ -877,11 +862,11 @@ msgstr "%s: klarte ikke å eksportere"
msgid "shift count"
msgstr "shift-antall"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "du kan ikke både definere og fjerne skallvalg samtidig"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ugyldig navn på skallvalg"
@@ -948,16 +933,16 @@ msgstr "%s: ugyldig grenseargument"
msgid "`%c': bad command"
msgstr "«%c»: ugyldig kommando"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: klarte ikke å hente grense: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "grense"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: klarte ikke å endre grense: %s"
@@ -976,7 +961,7 @@ msgstr "«%c»: ugyldig symbolsk modus-operatør"
msgid "`%c': invalid symbolic mode character"
msgstr "«%c»: ugyldig symbolsk modustegn"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " linje "
@@ -988,7 +973,7 @@ msgstr "forrige kommando: %s\n"
#: error.c:172
#, c-format
msgid "Aborting..."
-msgstr "Abryter …"
+msgstr "Avbryter …"
#. TRANSLATORS: this is a prefix for informational messages.
#: error.c:287
@@ -996,96 +981,106 @@ msgstr "Abryter …"
msgid "INFORM: "
msgstr "INFORM: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "DEBUG-advarsel: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "ukjent kommandofeil"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "ugyldig kommandotype"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "ugyldig tilkobling"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "ugyldig hopp"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: utildelt variabel"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atidsavbrudd for inndata: auto-utlogging\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "klarte ikke å videresende standard inndata fra «/dev/null». %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c» er et ugyldig formattegn"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] finnes fremdeles"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "datarør-feil"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: grensa for nivåer av eval-funksjoner (%d) er overskredet"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: grensa for nivåer av kilder i kilder (%d) er overskredet"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: grensa for nivåer av funksjoner i funksjoner (%d) er overskredet"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ikke tillatt: kommandonavn kan ikke inneholde «/»"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "fant ikke kommando %s"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: kan ikke kjøres: den nødvendige filen ble ikke funnet"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: ugyldig tolk"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: klarte ikke å kjøre binærfil: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "«%s» er en innebygd spesialfunksjon"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "klarte ikke å duplisere fd %d til fd %d"
@@ -1098,69 +1093,68 @@ msgstr "grensa for rekursjonsnivåer i uttrykk er overskredet"
msgid "recursion stack underflow"
msgstr "rekursjonsstabelen er tom"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "uttrykk inneholder syntaksfeil"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "du forsøkte å tilordne en verdi til noe som ikke er en variabel"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "variabeltildeling inneholder syntaksfeil"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "forsøkte å dele på 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "programfeil: ugyldig expassign-symbol"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "forventet «:» for betinget uttrykk"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "eksponent er lavere enn 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "forventet identifikator etter pre-økning eller pre-forminskelse"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "mangler «)»"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "syntaksfeil: forventet operand"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaksfeil: ugyldig aritmetisk operatør"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (feilaktig symbol er «%s»)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "ugyldig aritmetisk grunntall"
-#: expr.c:1582
-#, fuzzy
+#: expr.c:1587
msgid "invalid integer constant"
-msgstr "%s: ugyldig linjeantall"
+msgstr "ugyldig heltallskonstant"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "verdien er for høy for grunntallet"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: feil i uttrykk\n"
@@ -1169,7 +1163,7 @@ msgstr "%s: feil i uttrykk\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: fikk ikke tilgang til foreldermapper"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "klarte ikke å tilbakestille nodelay-modus for fd %d"
@@ -1188,167 +1182,167 @@ msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp-datarør"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "kopiert pid %d finnes i kjørende jobb %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "sletter ventende bakgrunnsjobb %d med prosessgruppe %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: markert PID %5ld (%s) som levende"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: pid-en finnes ikke"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Ferdig"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Venter"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Venter(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Kjører"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Ferdig(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Avsluttet %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Ukjent status"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(kjerne lagret i fil) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "underprosess setpgid (%ld til %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld er ikke en underprosess av dette skallet"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ingen kjennskap til prosess %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: prosess %d venter"
-#: jobs.c:3564
-#, fuzzy, c-format
+#: jobs.c:3551
+#, c-format
msgid "%s: no current jobs"
-msgstr "%s: jobben finnes ikke"
+msgstr "%s: ingen aktuelle jobber"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: jobben er avsluttet"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: jobb %d kjører allerede i bakgrunnen"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: slår på WNOHANG for å unngå kronisk blokkering"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: linje %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (kjerne lagret i fil)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd nå: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp mislyktes"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: ingen jobbkontroll i bakgrunn"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: linjeregler"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "klarte ikke å velge terminal-prosessgruppe (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "ingen jobbkontroll i dette skallet"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: mislykket premiss: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1357,49 +1351,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: urimelig premiss\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "ukjent"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: rotete blokk på befrielsesliste"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: ble bedt om å behandle blokk som allerede er ledig"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: ble bedt om å behandle blokk som ikke er tildelt"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: tomt. mh_nbytes er utenfor rekkevidde"
-#: lib/malloc/malloc.c:1001
-#, fuzzy
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
-msgstr "free: tomt. mh_nbytes er utenfor rekkevidde"
+msgstr "fri: underflyt oppdaget; magic8 er skadet"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: start- og sluttdel er av ulik størrelse"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: ble bedt om å behandle blokk som ikke er tildelt"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde"
-#: lib/malloc/malloc.c:1141
-#, fuzzy
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
-msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde"
+msgstr "realloc: underflyt oppdaget; magic8 er skadet"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: start- og sluttdel er av ulik størrelse"
@@ -1441,22 +1433,22 @@ msgstr "%s: ugyldig spesifikasjon av nettverkssti"
msgid "network operations not supported"
msgstr "nettverkshandlinger støttes ikke"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: klarte ikke å bytte region (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: klarte ikke å bytte region (%s): %s"
@@ -1474,141 +1466,136 @@ msgstr "Du har ny e-post i $_"
msgid "The mail in %s has been read\n"
msgstr "Posten i %s er lest\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "syntaksfeil: aritmetisk uttrykk kreves"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "syntaksfeil: uforventet «;»"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "syntaksfeil: «((%s))»"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: %d er en ugyldig instrukstype"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "here-dokument ved linje %d adskilt av slutt på fil (forventet «%s»)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr ""
-"make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde"
+msgstr "make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
-msgid ""
-"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
-"truncated"
-msgstr ""
-"shell_getc: «shell_input_line_size» (%zu) overskrider SIZE_MAX (%lu): linja "
-"er forkortet"
+msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
+msgstr "shell_getc: «shell_input_line_size» (%zu) overskrider SIZE_MAX (%lu): linja er forkortet"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "grensa for maksimalt antall here-dokumenter er overskredet"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "uforventet slutt på fil (EOF) under søk etter «%c»"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "uforventet slutt på fil (EOF) under søk etter «]]»"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntaksfeil i betinget uttrykk: forventet ikke symbolet «%s»"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "syntaksfeil i betinget uttrykk"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "forventet ikke symbolet «%s», men «)»"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "forventet «)»"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "«%s» er et uforventet argument for betinget unær operatør"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "uforventet argument for betinget unær operatør"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "«%s» er et uforventet symbol. Forventet betinget binær operatør"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "forventet betinget binæroperatør"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "«%s» er et uforventet argument for betinget binæroperatør"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "uforventet argument for betinget binæroperatør"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "«%c» er et uforventet symbol i en betinget kommando"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "«%s» er et uforventet symbol i en betinget kommando"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "«%d» er et uforventet symbol i en betinget kommando"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntaksfeil ved «%s», som er et uforventet symbol"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "syntaksfeil ved «%s»"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "syntaksfeil: uforventet slutt på fil"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "syntaksfeil"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Bruk «%s» for å gå ut av skallet.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "uforventet slutt på fil (EOF) under søk etter «)»"
@@ -1646,94 +1633,94 @@ msgstr "xtrace_set: filpeker er NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: ugyldig formattegn"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "fildeskriptor er utenfor tillatt rekkevidde"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: flertydig videresending"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: klarte ikke å overskrive fil"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ikke tillatt: klarte ikke å videresende utdata"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "klarte ikke å lage midlertidig fil for here-dokument: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: klarte ikke å knytte fd til variabel"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port støttes ikke uten nettverkstilkobling"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "videresendingsfeil: klarte ikke å duplisere fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "fant ikke «/tmp». Opprett denne mappa!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "«/tmp» må være et gyldig mappenavn"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "pen utskriftsmodus blir ignorert i interaktive skall"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: ugyldig valg"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "klarte ikke å velge %d som uid. Effektiv uid: %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "klarte ikke å velge %d som gid. Effektiv gid: %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "klarte ikke å starte feilsøkingsverktøy. Feilsøkingsmodus slått av"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: er en mappe"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Jeg manger navn!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versjon %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1742,323 +1729,317 @@ msgstr ""
"Bruk:\t%s [langt GNU-valg] [valg] …\n"
"\t%s [langt GNU-valg] [valg] skriptfil …\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Lange GNU-valg:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Skallvalg:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr ""
-"\t«-ilrsD», «-c kommando» eller «-O kortvalg_valg»\t\t(kun programkall)\n"
+msgstr "\t«-ilrsD», «-c kommando» eller «-O kortvalg_valg»\t\t(kun programkall)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t«-%s» eller «-o»\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Skriv «%s -c \"help set\"» for mer informasjon om skallvalg.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Skriv «%s -c help» for mer informasjon om innebygde skallkommandoer.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Bruk kommandoen «bashbug» for å rapportere programfeil.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash-nettside: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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"
+msgstr "Generell hjelp til bruk av GNU-programvare: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: ugyldig handling"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Ugyldig signal"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Legg på"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Forstyrr"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Avslutt"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Ugyldig instruks"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT-sporing/-fanging"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT-instruks"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT-instruks"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Flyttallsfeil"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Drept"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Bussfeil"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Segmenteringsfeil"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Ugyldig systemkall"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Ødelagt datarør"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Alarmklokke"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Avsluttet"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Hastende IO-tilstand"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Stoppet (signal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Fortsett"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Død eller stans av underprosess"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Stoppet (tty-inndata)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Stoppet (tty-utdata)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O klar"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU-grense"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Filgrense"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (virtuell)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Vindu endret"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Husk lås"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Brukersignal 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Brukersignal 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT-inndata venter"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "strømstans er nærliggende"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "systemkræsj er nærliggende"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "flytt prosess til annen CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "programmeringsfeil"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT-skjermmodus tildelt"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT-skjermmodus tilbaketrukket"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT-lydsekvens er fullført"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Informasjonsforespørsel"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "#%d er et ukjent signal"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "ugyldig substitutt: %2$s mangler avsluttende «%1$s»"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: klarte ikke å knytte liste til tabellmedlem"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "klarte ikke å lage datarør for substitusjon av prosess"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "klarte ikke å lage underprosess for substitusjon av prosess"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "klarte ikke å åpne navngitt datarør %s for lesing"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "klarte ikke å åpne navngitt datarør %s for skriving"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "klarte ikke å duplisere navngitt datarør %s som fd %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "kommandosubstitusjon: null-byte i inndata ignorert"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "klarte ikke å lage datarør for substitusjon av kommando"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "klarte ikke å lage underprosess for substitusjon av kommando"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: klarte ikke å duplisere datarør som fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: ugyldig variabelnavn for navnreferanse"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: ugyldig indirekte utvidelse"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: ugyldig variabelnavn"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter har ingen verdi"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter har null-verdi eller står tomt"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: understreng-uttrykk < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: ugyldig substitusjon"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: du kan ikke tildele på denne måten"
-#: subst.c:9814
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-"fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk "
-"substitusjon"
+#: subst.c:10111
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
+msgstr "fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk substitusjon"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "ugyldig substitusjon. %s mangler avsluttende «`»"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "ingen treff på %s"
@@ -2081,137 +2062,131 @@ msgstr "forventet «)»"
msgid "`)' expected, found %s"
msgstr "forventet «)», men fant %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: forventet binær operatør"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: forventet unær operatør"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "«]» mangler"
-#: test.c:899
-#, fuzzy, c-format
+#: test.c:914
+#, c-format
msgid "syntax error: `%s' unexpected"
-msgstr "syntaksfeil: uforventet «;»"
+msgstr "syntaksfeil: uforventet «%s»"
#: trap.c:220
msgid "invalid signal number"
msgstr "ugyldig signalnummer"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr ""
-"fellehåndtering: øvre grense for fellehåndteringsnivå (%d) er overskredet"
+msgstr "fellehåndtering: øvre grense for fellehåndteringsnivå (%d) er overskredet"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: ugyldig verdi i «trap_list[%d]»: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-"run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv "
-"på nytt"
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr "run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv på nytt"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: %d er et ugyldig signal"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "feil under importering av definisjonen av funksjonen «%s»"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "skallnivået (%d) er for høyt. Tilbakestiller til 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ingen funksjonskontekst i gjeldende virkefelt"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variabel kan ikke tilknyttes verdi"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: kan ikke arve verdi fra inkompatibel type"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: knytter heltall til navnreferanse"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ingen funksjonskontekst i gjeldende virkefelt"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s har exportstr som er null"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "%d er et ugyldig tegn i exportstr for %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "exportstr for %s mangler «=»"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
-"pop_var_context: toppen av «shell_variables» er ikke en funksjonskontekst"
+msgstr "pop_var_context: toppen av «shell_variables» er ikke en funksjonskontekst"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: kontekst for «global_variables» mangler"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-"pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt"
+msgstr "pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: klarte ikke å åpne som FIL"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: ugyldig verdi for sporing av fildeskriptor"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: samspill-verdi er utenfor tillatt rekkevidde"
#: version.c:46 version2.c:46
-#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Opphavsrett (C) 2012 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Opphavsrett (C) 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"Lisens GPLv3+: GNU GPL versjon 3 eller nyere <http://gnu.org/licenses/gpl."
-"html>\n"
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "Lisens GPLv3+: GNU GPL versjon 3 eller nyere <http://gnu.org/licenses/gpl.html>\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2220,13 +2195,11 @@ msgstr "GNU bash, versjon %s (%s)\n"
#: version.c:91 version2.c:91
msgid "This is free software; you are free to change and redistribute it."
-msgstr ""
-"Dette er fri programvare. Du står fritt til å endre og dele den videre."
+msgstr "Dette er fri programvare. Du står fritt til å endre og dele den videre."
#: version.c:92 version2.c:92
msgid "There is NO WARRANTY, to the extent permitted by law."
-msgstr ""
-"Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk."
+msgstr "Det stilles INGEN GARANTI, i den grad dette tillates av gjeldende lovverk."
#: xmalloc.c:93
#, c-format
@@ -2257,13 +2230,8 @@ msgid "unalias [-a] name [name ...]"
msgstr "unalias [-a] navn [navn …]"
#: builtins.c:53
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpsvPSVX] [-m tastaturoppsett] [-f filnavn] [-q navn] [-u navn] [-r "
-"knappesekv] [-x knappesekv:skallkommando] [knappesekv:readline-funksjon "
-"eller readline-kommando]"
+msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr "bind [-lpsvPSVX] [-m tastaturoppsett] [-f filnavn] [-q navn] [-u navn] [-r knappesekv] [-x knappesekv:skallkommando] [knappesekv:readline-funksjon eller readline-kommando]"
#: builtins.c:56
msgid "break [n]"
@@ -2294,14 +2262,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg …]"
#: builtins.c:78
-#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilnrtux] [-p] [navn[=verdi] …]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [-p] [navn[=verdi] …] eller deklarer -p [-aAfFilnrtux] [navn ...]"
#: builtins.c:80
-#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilnrtux] [-p] navn[=verdi] …"
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgilnrtux] [-p] navn[=verdi] … eller typesett -p [-aAfFilnrtux] [navn ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2324,14 +2290,12 @@ msgid "eval [arg ...]"
msgstr "eval [arg …]"
#: builtins.c:96
-#, fuzzy
msgid "getopts optstring name [arg ...]"
-msgstr "getopts valgstreng navn [arg]"
+msgstr "getopts valgstreng navn [arg ...]"
#: builtins.c:98
-#, fuzzy
msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
-msgstr "exec [-cl] [-a navn] [kommando [argumenter …]] [videresending …]"
+msgstr "exec [-cl] [-a navn] [kommando [argument …]] [videresending …]"
#: builtins.c:100
msgid "exit [n]"
@@ -2362,12 +2326,8 @@ msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [mønster …]"
#: builtins.c:123
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [-d posisjon] [n] eller history -anrw [filnavn] eller history -"
-"ps arg [arg …]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
+msgstr "history [-c] [-d posisjon] [n] eller history -anrw [filnavn] eller history -ps arg [arg …]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2378,32 +2338,24 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
msgstr "disown [-h] [-ar] [jobbspes … | pid …]"
#: builtins.c:134
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-"kill [-s sigspes | -n signum | -sigspes] pid | jobbspes … eller kill -l "
-"[sigspes]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
+msgstr "kill [-s sigspes | -n signum | -sigspes] pid | jobbspes … eller kill -l [sigspes]"
#: builtins.c:136
msgid "let arg [arg ...]"
msgstr "let arg [arg …]"
#: builtins.c:138
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a tabell] [-d adskill] [-i tekst] [-n ntegn] [-N ntegn] [-p "
-"ledetekst] [-t tidsavbrudd] [-u fd] [navn …]"
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgstr "read [-ers] [-a tabell] [-d adskill] [-i tekst] [-n ntegn] [-N ntegn] [-p ledetekst] [-t tidsavbrudd] [-u fd] [navn …]"
#: builtins.c:140
msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o valgnavn] [--] [arg …]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o valgnavn] [--] [arg …]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2450,17 +2402,16 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] navn [navn …]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [grense]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT [grense]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [modus]"
#: builtins.c:177
-#, fuzzy
msgid "wait [-fn] [-p var] [id ...]"
-msgstr "wait [-fn] [id …]"
+msgstr "wait [-fn] [-p var] [id …]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2487,20 +2438,16 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
msgstr "case ORD in [MØNSTER [| MØNSTER] …) KOMMANDOER ;;] … esac"
#: builtins.c:194
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if KOMMANDOER; then KOMMANDOER; [ elif KOMMANDOER; then KOMMANDOER; ] … "
-"[ else KOMMANDOER; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if KOMMANDOER; then KOMMANDOER; [ elif KOMMANDOER; then KOMMANDOER; ] … [ else KOMMANDOER; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while KOMMANDOER; do KOMMANDOER; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while KOMMANDOER; do KOMMANDOER-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until KOMMANDOER; do KOMMANDOER; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until KOMMANDOER; do KOMMANDOER-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -2551,44 +2498,24 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] format [argumenter]"
#: builtins.c:231
-#, fuzzy
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DEI] [-o valg] [-A handling] [-G globpat] [-"
-"W ordliste] [-F funksjon] [-C kommando] [-X filterpat] [-P prefiks] [-S "
-"suffiks] [navn …]"
+msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
+msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o valg] [-A handling] [-G globpat] [-W ordliste] [-F funksjon] [-C kommando] [-X filterpat] [-P prefiks] [-S suffiks] [navn …]"
#: builtins.c:235
-#, fuzzy
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
-"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o valg] [-A handling] [-G globpat] [-W ordliste] "
-"[-F funksjon] [-C kommando] [-X filtersti] [-P prefiks] [-S suffiks] [ord]"
+msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr "compgen [-abcdefgjksuv] [-o valg] [-A handling] [-G globpat] [-W ordliste] [-F funksjon] [-C kommando] [-X filtersti] [-P prefiks] [-S suffiks] [ord]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
msgstr "compopt [-o|+o valg] [-DEI] [navn …]"
#: builtins.c:242
-msgid ""
-"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-"mapfile [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C "
-"tilbakekall] [-c mengde] [tabell]"
+msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "mapfile [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] [-c mengde] [tabell]"
#: builtins.c:244
-msgid ""
-"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-"readarray [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-"
-"C tilbakekall] [-c mengde] [tabell]"
+msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "readarray [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] [-c mengde] [tabell]"
#: builtins.c:256
msgid ""
@@ -2605,8 +2532,7 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
+" alias returns true unless a NAME is supplied for which no alias has been\n"
" defined."
msgstr ""
"Definer eller vis alias.\n"
@@ -2622,8 +2548,7 @@ msgstr ""
" -p\tSkriv ut alle definerte alias i brukbart format\n"
" \n"
" Avslutningsstatus:\n"
-" alias avslutter med positiv verdi («true»), med mindre bruker skriver "
-"inn et NAVN\n"
+" alias avslutter med positiv verdi («true»), med mindre bruker skriver inn et NAVN\n"
" som mangler definert alias."
#: builtins.c:278
@@ -2640,8 +2565,7 @@ msgstr ""
" Valg:\n"
" -a\tfjern alle alias-definisjoner.\n"
" \n"
-" Programmet avslutter som vellykket med mindre bruker velger et aliasNAVN "
-"som ikke finnes."
+" Programmet avslutter som vellykket med mindre bruker velger et aliasNAVN som ikke finnes."
#: builtins.c:291
msgid ""
@@ -2655,30 +2579,25 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
+" -S List key sequences that invoke macros and their values\n"
+" -s List key sequences that invoke macros and their values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
+" -u function-name Unbind all keys which are bound to the named function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated "
-"commands\n"
+" -X List key sequences bound with -x and associated commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
@@ -2686,45 +2605,35 @@ msgid ""
msgstr ""
"Velg hurtigtaster og variabler for Readline.\n"
" \n"
-" Knytt en knappekombinasjon til en Readline-funksjon eller makro, eller "
-"gi\n"
-" verdi til en Readline-variabel. Argumentsyntaksen tilsvarer det som "
-"finnes\n"
+" Knytt en knappekombinasjon til en Readline-funksjon eller makro, eller gi\n"
+" verdi til en Readline-variabel. Argumentsyntaksen tilsvarer det som finnes\n"
" i «~/.inputrc», men må oppgis som ett argument.\n"
" F.eks.: bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
" \n"
" Valg:\n"
-" -m OPPSETT Bruk valgt tastaturOPPSETT under kjøring av denne "
-"kommandoen.\n"
+" -m OPPSETT Bruk valgt tastaturOPPSETT under kjøring av denne kommandoen.\n"
" Gyldige oppsettsnavn er «emacs», «emacs-standard»,\n"
" «emacs-meta», «emacs-ctlx», «vi», «vi-move»,\n"
" «vi-command» og «vi-insert».\n"
" -l Vis funksjonsnavn.\n"
" -P Vis funksjonsnavn og tildelinger.\n"
-" -p Vis funksjoner og tildelinger i et format som kan "
-"gjenbrukes\n"
+" -p Vis funksjoner og tildelinger i et format som kan gjenbrukes\n"
" som inndata.\n"
-" -S Vis knappekombinasjoner som kaller makroer og "
-"tilhørende verdier\n"
-" -s Tilsvarer «-S», men i et format som kan gjenbrukes "
-"i inndata.\n"
+" -S Vis knappekombinasjoner som kaller makroer og tilhørende verdier\n"
+" -s Tilsvarer «-S», men i et format som kan gjenbrukes i inndata.\n"
" -V Vis variabelnavn og verdier\n"
-" -v Tilsvarer «-V», men i et format som kan gjenbrukes "
-"i inndata.\n"
+" -v Tilsvarer «-V», men i et format som kan gjenbrukes i inndata.\n"
" -q function-name Spør hvilke knapper som kaller aktuell funksjon.\n"
-" -u function-name Fjern alle knappekombinasjoner som er tilknyttet "
-"aktuell funksjon.\n"
+" -u function-name Fjern alle knappekombinasjoner som er tilknyttet aktuell funksjon.\n"
" -r KOMB Fjern tildeling av valgt knappeKOMBinasjon.\n"
" -f FILNAVN Les knappekombinasjoner fra FILNAVN.\n"
" -x KOMB:KOMMANDO\tGjør slik at valgt skallKOMMANDO kjøres når\n"
" \t\t\t\tvalgt knappeKOMBinasjon trykkes.\n"
-" -X Vis knappekombinasjoner som er tildelt med «-x», og "
-"aktuelle kommandoer \n"
+" -X Vis knappekombinasjoner som er tildelt med «-x», og aktuelle kommandoer \n"
" i et format som kan gjenbrukes i inndata.\n"
" \n"
" Avslutningsstatus:\n"
-" bind avslutter med 0, med mindre bruker tar et ukjent valg eller det "
-"oppstår feil."
+" bind avslutter med 0, med mindre bruker tar et ukjent valg eller det oppstår feil."
#: builtins.c:330
msgid ""
@@ -2766,8 +2675,7 @@ msgid ""
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
+" as a shell function, but need to execute the builtin within the function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2777,8 +2685,7 @@ msgstr ""
" \n"
" Kjør SKALLFUNKSJON med valgte ARGumenter uten å slå opp\n"
" kommandonavn. Dette er nyttig når du vil re-implementere en innebygd\n"
-" skallkommando som en funksjon, samtidig som du kjører den innenfor en "
-"skallfunksjon.\n"
+" skallkommando som en funksjon, samtidig som du kjører den innenfor en skallfunksjon.\n"
" \n"
" Avslutningsstatus:\n"
" Statuskoden er den samme som aktuell SKALLFUNKSJON gir, eller\n"
@@ -2805,8 +2712,7 @@ msgstr ""
" «$line $subroutine $filename». Denne ekstrainformasjonen kan brukes\n"
" til stabelsporing.\n"
" \n"
-" Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege "
-"seg\n"
+" Verdien av UTTRykk viser hvor mange kall-rammer programmet skal bevege seg\n"
" gjennom tilbake fra gjeldende ramme. Øverste ramme er 0.\n"
" \n"
" Avslutningsstatus:\n"
@@ -2817,22 +2723,16 @@ msgstr ""
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
+" Change the current directory to DIR. The default DIR is the value of the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
+" The variable CDPATH defines the search path for the directory containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
+" A null directory name is the same as the current directory. If DIR begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is set,\n"
+" the word is assumed to be a variable name. If that variable has a value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2848,13 +2748,11 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname "
-"component\n"
+" `..' is processed by removing the immediately previous pathname component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
" -P is used; non-zero otherwise."
msgstr ""
"Bytt arbeidsmappe for skallet.\n"
@@ -2867,8 +2765,7 @@ msgstr ""
" Et null-mappenavn er det samme som gjeldende mappe. Hvis MAP begynner\n"
" med skråstrek (/), brukes ikke CDPATH.\n"
" \n"
-" Hvis valgt mappe ikke finnes, og skallvalget «cdable_vars» har en "
-"verdi,\n"
+" Hvis valgt mappe ikke finnes, og skallvalget «cdable_vars» har en verdi,\n"
" antas ordet å være et variabelnavn. Hvis den variabelen har en verdi,\n"
" brukes denne verdien som MAP.\n"
" \n"
@@ -2887,8 +2784,7 @@ msgstr ""
" én skråstrek tilbake eller til begynnelsen av MAP.\n"
" \n"
" Avslutningsstatus:\n"
-" Status er 0 hvis skallet har byttet mappe, og hvis $PWD er valgt uten "
-"problemer\n"
+" Status er 0 hvis skallet har byttet mappe, og hvis $PWD er valgt uten problemer\n"
" ved bruk av «-P». Ellers er status noe annet enn 0."
#: builtins.c:425
@@ -2964,8 +2860,7 @@ msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
+" information about the specified COMMANDs. Can be used to invoke commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -2979,10 +2874,8 @@ msgid ""
msgstr ""
"Kjør en enkel kommando, eller vis informasjon om kommandoer.\n"
" \n"
-" Kjører valgt KOMMANDO med ARG uten oppslag av skallfunksjoner, eller "
-"viser\n"
-" informasjon om valgte KOMMANDOer. Dette kan brukes til å kalle "
-"kommandoer\n"
+" Kjører valgt KOMMANDO med ARG uten oppslag av skallfunksjoner, eller viser\n"
+" informasjon om valgte KOMMANDOer. Dette kan brukes til å kalle kommandoer\n"
" på disk når det finens en funksjon med samme navn.\n"
" \n"
" Valg:\n"
@@ -2992,11 +2885,9 @@ msgstr ""
" -V\tskriv ut en mer detaljert beskrivelse av hver KOMMANDO\n"
" \n"
" Avslutningsstatus:\n"
-" Samme som statuskoden fra KOMMANDO, eller mislykket hvis KOMMANDO ikke "
-"finnes."
+" Samme som statuskoden fra KOMMANDO, eller mislykket hvis KOMMANDO ikke finnes."
#: builtins.c:490
-#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3029,8 +2920,7 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -3048,6 +2938,7 @@ msgstr ""
" \tkildefil kommer i tillegg ved feilsøking)\n"
" -g\tlag globale variabler ved bruk innenfor en skallfunksjon\n"
" \t(ignoreres ved annen bruk)\n"
+" -I\thvis du oppretter en lokal variabel, arv attributtene og verdien\n"
" -p\tvis attributter og verdi av hvert valgt NAVN\n"
" \n"
" Valg som justerer attributter:\n"
@@ -3055,8 +2946,7 @@ msgstr ""
" -A\tgjør valgte NAVN til assosiative tabeller (hvis det støttes)\n"
" -i\tgi valgte NAVN attributten «integer» (heltall)\n"
" -l\tkonverter valgte NAVN til små bokstaver\n"
-" -n\tgjør valgt NAVN til en referanse til variabelen med egen verdi som "
-"navn\n"
+" -n\tgjør valgt NAVN til en referanse til variabelen med egen verdi som navn\n"
" -r\tskrivebeskytt valgte NAVN\n"
" -t\tgi valgte NAVN attirbutten «trace»\n"
" -u\tkonverter valgte NAVN til store bokstaver\n"
@@ -3103,8 +2993,7 @@ msgstr ""
" Lag en lokal variabel med valgt NAVN og VERDI. Du kan foreta\n"
" VALG i henhold til kommandoen «declare».\n"
" \n"
-" Lokale variabler kan bare brukes innenfor en funksjon. De er kun "
-"synlige\n"
+" Lokale variabler kan bare brukes innenfor en funksjon. De er kun synlige\n"
" for funksjonen de lages innenfor, samt underfunksjoner.\n"
" \n"
" Avslutningsstatus:\n"
@@ -3115,8 +3004,7 @@ msgstr ""
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by "
-"a\n"
+" Display the ARGs, separated by a single space character and followed by a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -3140,11 +3028,9 @@ msgid ""
" \t\t0 to 3 octal digits\n"
" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
" \t\tcan be one or two hex digits\n"
-" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
-"HHHH.\n"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n"
" \t\tHHHH can be one to four hex digits.\n"
-" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
-"value\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n"
" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
" \n"
" Exit Status:\n"
@@ -3236,8 +3122,7 @@ msgstr ""
" \n"
" Valg:\n"
" -a\tskriv ut en liste som viser hvilke kommandoer som er slått på\n"
-" -n\tslå av hvert valgt NAVN, eller vis en liste over kommandoer som er "
-"slått av\n"
+" -n\tslå av hvert valgt NAVN, eller vis en liste over kommandoer som er slått av\n"
" -p\tskriv ut liste over kommandoer i et gjenbrukbart format\n"
" -s\tbare skriv ut navn på innebygde Posix-spesialkommandoer\n"
" \n"
@@ -3257,8 +3142,7 @@ msgstr ""
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+" Combine ARGs into a single string, use the result as input to the shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -3273,7 +3157,6 @@ msgstr ""
" Samme som valgt kommando, eller vellykket hvis kommando er null."
#: builtins.c:652
-#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3326,17 +3209,13 @@ msgstr ""
" kalles, laster inn navnet hvis det ikke finnes, og\n"
" indeks for neste argument som skal behandles i skallvariabelen OPTIND.\n"
" OPTIND lastes inn til 1 hver gang skallet eller et skallskript kjøres.\n"
-" NÃ¥r et valg krever et argument plasseres argumentet i skallvariabelen "
-"OPTARG.\n"
+" NÃ¥r et valg krever et argument plasseres argumentet i skallvariabelen OPTARG.\n"
" \n"
-" getopts rapporterer feil på én av to måter. Hvis første tegn i "
-"VALGSTRENG\n"
+" getopts rapporterer feil på én av to måter. Hvis første tegn i VALGSTRENG\n"
" er kolon, rapporteres feil uten direkte feilmeldinger til bruker.\n"
" Hvis getopts ser et ugyldig valg, plasseres aktuelt valgtegn i OPTARG.\n"
-" Hvis et obligatorisk argument ikke er gitt, legger getopts et «:» i NAVN "
-"og\n"
-" bruker oppdaget valgtegn som OPTARG. Hvis getopts ikke er i "
-"stillemodus,\n"
+" Hvis et obligatorisk argument ikke er gitt, legger getopts et «:» i NAVN og\n"
+" bruker oppdaget valgtegn som OPTARG. Hvis getopts ikke er i stillemodus,\n"
" og ser et ugyldig valg, brukes «?» som NAVN, og OPTARG tømmes.\n"
" Hvis et obligatorisk argument ikke er gitt, legger getopts et «?»\n"
" i NAVN, tømmer OPTARG og skriver ut en feilmelding.\n"
@@ -3345,7 +3224,7 @@ msgstr ""
" av feilmeldinger, selv hvis første tegn i VALGSTRENG ikke er kolon.\n"
" OPTERR har verdien 1 som standard.\n"
" \n"
-" Getopts tolker vanligvis posisjonsparametre ($0 - $9), men hvis\n"
+" Getopts tolker vanligvis posisjonsparametre, men hvis\n"
" flere argumenter er gitt, blir disse tolket i stedet.\n"
" \n"
" Avslutningsstatus:\n"
@@ -3357,8 +3236,7 @@ msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3366,19 +3244,16 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+" If the command cannot be executed, a non-interactive shell exits, unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+" Returns success unless COMMAND is not found or a redirection error occurs."
msgstr ""
"Erstatt skallet med valgt kommando.\n"
" \n"
" Kjør KOMMANDO, og erstatt dette skallet med valgt program.\n"
-" ARGUMENTER sendes videre til valgt KOMMANDO. Hvis KOMMANDO ikke er "
-"valgt,\n"
+" ARGUMENTER sendes videre til valgt KOMMANDO. Hvis KOMMANDO ikke er valgt,\n"
" blir videresendinger brukt i gjeldende skall.\n"
" \n"
" Valg:\n"
@@ -3386,13 +3261,11 @@ msgstr ""
" -c\t\tkjør valgt KOMMANDO med et tomt miljø\n"
" -l\t\tbruk bindestrek som argument nummer null for COMMAND\n"
" \n"
-" Hvis kommandoen ikke kan kjøres, avsluttes ikke-interaktivt skall, med "
-"mindre\n"
+" Hvis kommandoen ikke kan kjøres, avsluttes ikke-interaktivt skall, med mindre\n"
" skallvalget «execfail» er brukt.\n"
" \n"
" Avslutningsstatus:\n"
-" Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstår en "
-"videresendingsfeil."
+" Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstår en videresendingsfeil."
#: builtins.c:715
msgid ""
@@ -3410,29 +3283,25 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
+" Exits a login shell with exit status N. Returns an error if not executed\n"
" in a login shell."
msgstr ""
"Avslutt et innloggingsskall.\n"
" \n"
-" Avslutter et innloggingsskall med status N. Dette gir feilmelding hvis "
-"det\n"
+" Avslutter et innloggingsskall med status N. Dette gir feilmelding hvis det\n"
" ikke kjøres i et innloggingsskall."
#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+" fc is used to list or edit and re-execute commands from the history list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3446,20 +3315,16 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
+" Returns success or status of executed command; non-zero if an error occurs."
msgstr ""
"Vis eller kjør kommandoer fra historikklista.\n"
" \n"
-" fc brukes til å vise list eller redigere og kjøre kommandoer på nytt fra "
-"historikklista.\n"
-" FØRSTE og SISTE kan være tall som angir rekkevidde. FØRSTE kan også være "
-"en\n"
+" fc brukes til å vise list eller redigere og kjøre kommandoer på nytt fra historikklista.\n"
+" FØRSTE og SISTE kan være tall som angir rekkevidde. FØRSTE kan også være en\n"
" streng, som betyr nyeste kommando som begynner med denne strengen.\n"
" \n"
" Valg:\n"
-" -e ENAME\tvelg hvilket redigeringsprogram som skal brukes. Standard er "
-"FCEDIT, evt. EDITOR\n"
+" -e ENAME\tvelg hvilket redigeringsprogram som skal brukes. Standard er FCEDIT, evt. EDITOR\n"
" \t\teller vi\n"
" -l \tvis linjer i stedet for å redigere\n"
" -n\tikke vis linjenumre\n"
@@ -3473,8 +3338,7 @@ msgstr ""
" betyr å kjøre forrige kommando.\n"
" \n"
" Avslutningsstatus:\n"
-" Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis "
-"det oppstår feil."
+" Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis det oppstår feil."
#: builtins.c:764
msgid ""
@@ -3494,17 +3358,14 @@ msgstr ""
" allerede oppfattes som gjeldende i skallet.\n"
" \n"
" Avslutningsstatus:\n"
-" Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det "
-"oppstår feil."
+" Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det oppstår feil."
#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's "
-"notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
@@ -3513,8 +3374,7 @@ msgstr ""
"Flytt jobber til bakgrunnen.\n"
" \n"
" Plasser jobber med id-er JOB_SPEC i bakgrunnen, som om de\n"
-" ble startet med «&». Hvis JOB_SPEC ikke er oppgitt, brukes jobben som "
-"allerede\n"
+" ble startet med «&». Hvis JOB_SPEC ikke er oppgitt, brukes jobben som allerede\n"
" som gjeldende i skallet.\n"
" \n"
" Avslutningsstatus:\n"
@@ -3525,8 +3385,7 @@ msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
+" no arguments are given, information about remembered commands is displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3556,8 +3415,7 @@ msgstr ""
" -t\t\tskriv ut lagret plassering av valgt(e) NAVN, med\n"
" \t\tNAVN foran aktuell plassering hvis flere NAVN er valgt\n"
" Argumenter:\n"
-" NAVN\t\tProgrammet søker etter hvert NAVN i $PATH og legger det til i "
-"lista\n"
+" NAVN\t\tProgrammet søker etter hvert NAVN i $PATH og legger det til i lista\n"
" \t\tover lagrede kommandoer.\n"
" \n"
" Avslutningsstatus:\n"
@@ -3581,8 +3439,7 @@ msgid ""
" PATTERN\tPattern specifying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
+" Returns success unless PATTERN is not found or an invalid option is given."
msgstr ""
"Vis informasjon om innebygde kommandoer.\n"
" \n"
@@ -3600,8 +3457,7 @@ msgstr ""
" MØNSTER\tVelger hjelpeemne\n"
" \n"
" Avslutningsstatus:\n"
-" Vellykket, med mindre et MØNSTER ikke finnes eller bruker tar et ugyldig "
-"valg."
+" Vellykket, med mindre et MØNSTER ikke finnes eller bruker tar et ugyldig valg."
#: builtins.c:842
msgid ""
@@ -3631,8 +3487,7 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
+" with each displayed history entry. No time stamps are printed otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3648,8 +3503,7 @@ msgstr ""
"\t\tNegativ posisjon teller fra slutten.\n"
" \n"
" -a\tlegg til linjer fra gjeldende økt i historikkfil\n"
-" -n\tles alle historikklinjer som ikke allerede er lest inn fra "
-"historikkfil\n"
+" -n\tles alle historikklinjer som ikke allerede er lest inn fra historikkfil\n"
" -r\tles historikkfil og legg til innhold i historikkliste\n"
" -w\tlagre gjeldende historikk i historikkfil\n"
" \n"
@@ -3707,8 +3561,7 @@ msgstr ""
" jobber er erstattet med prosess-ID-en til gjeldende prosessgruppeleder.\n"
" \n"
" Avslutningsstatus:\n"
-" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår "
-"feil.\n"
+" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil.\n"
" Hvis «-x» er valgt, hentes statuskode fra aktuell KOMMANDO."
#: builtins.c:906
@@ -3734,8 +3587,7 @@ msgstr ""
" \n"
" Valg:\n"
" -a\tfjern alle jobber hvis JOBBSPES ikke er angitt\n"
-" -h\tmarker hver JOBBSPES slik at SIGHUP ikke sendes til jobben hvis "
-"skallet\n"
+" -h\tmarker hver JOBBSPES slik at SIGHUP ikke sendes til jobben hvis skallet\n"
" \tmottar et SIGHUP\n"
" -r\tbare fjern kjørende jobber\n"
" \n"
@@ -3767,8 +3619,7 @@ msgstr ""
"Send signal til en jobb.\n"
" \n"
" Gi prosesser (valgt med PID eller JOBBSPES) et signal\n"
-" (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er "
-"valgt,\n"
+" (valgt med SIGSPES eller SIGNUM). Hvis hverken SIGSPES eller SIGNUM er valgt,\n"
" brukes SIGTERM.\n"
" \n"
" Valg:\n"
@@ -3778,8 +3629,7 @@ msgstr ""
" \tantas disse å være signalnumre som det skal vises navn på\n"
" -L\ttilsvarer «-l»\n"
" \n"
-" Kill er en innebygget skallkommando av to grunner: den tillater bruk av "
-"jobb-ID\n"
+" Kill er en innebygget skallkommando av to grunner: den tillater bruk av jobb-ID\n"
" i stedet for prosess-ID, og lar bruker drepe prosesser hvis grensa for\n"
" antall tillatte prosesser er nådd.\n"
" \n"
@@ -3793,8 +3643,7 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
+" grouped into levels of equal-precedence operators. The levels are listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3860,8 +3709,7 @@ msgstr ""
" \n"
" Skallvariabler tillates som operand. Variabelens navn erstattes med\n"
" verdien (tvunget til et breddefast heltall) i et uttrykk.\n"
-" Variabelen behøver ikke heltallsattributt for å kunne brukes i et "
-"uttrykk.\n"
+" Variabelen behøver ikke heltallsattributt for å kunne brukes i et uttrykk.\n"
" \n"
" Operatører regnes ut etter presedens. Underuttrykk i parentes\n"
" regnes ut først, og kan overstyre overnevnte presedensregler.\n"
@@ -3874,16 +3722,14 @@ msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
+" if the -u option is supplied. The line is split into fields as with word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
-" delimiters.\n"
+" the last NAME. Only the characters found in $IFS are recognized as word\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3895,8 +3741,7 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -3914,10 +3759,8 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-" (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times out\n"
+" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"Les en linje fra standard inndata og del den opp i felt.\n"
@@ -3933,38 +3776,32 @@ msgstr ""
" Valg:\n"
" -a tabell\tknytt leste ord til sekvens-indekser i \n"
" \t\ttabellvariabelen TABELL, talt fra null\n"
-" -d skill\tfortsett frem til første SKILLetegn, i stedet for frem til "
-"linjeskift\n"
+" -d skill\tfortsett frem til første SKILLetegn, i stedet for frem til linjeskift\n"
" -e\t\tbruk Readline til å hente linje\n"
" -i tekst\tBruk valgt TEKST med Readline\n"
-" -n n\tgå tilbake etter å ha lest N antall tegn i stedet for å vente på "
-"ny linje,\n"
+" -n n\tgå tilbake etter å ha lest N antall tegn i stedet for å vente på ny linje,\n"
" \t\tmen bruk skilletegn hvis linja er kortere enn N\n"
" \t\tles tegn før skilletegn\n"
" -N N\tgå tilbake etter å ha lest nøyaktig N antall tegn, med mindre\n"
" \t\tEOF eller tidsavbrudd oppstår (skilletegn ignoreres)\n"
-" -p ledet\tskriv ut valgt LEDETekst uten å legge til linjeskift før "
-"lesing\n"
+" -p ledet\tskriv ut valgt LEDETekst uten å legge til linjeskift før lesing\n"
" -r\t\tikke tillat bruk av skråstrek som skiftetegn\n"
" -s\t\tikke skriv ut inndata som kommer fra en terminal\n"
" -t tidsav\tavbryt og avslutt med feil hvis en hel linje med inndata\n"
" \t\tikke blir lest ferdig innen valgt TIDSAVbrudd (i sekunder).\n"
-" \t\tStandard avbruddstid hentes fra variabelen TMOUT. TIDSAVbrudd kan "
-"være\n"
+" \t\tStandard avbruddstid hentes fra variabelen TMOUT. TIDSAVbrudd kan være\n"
" \t\tet brøktall. Hvis TIDSAV er 0, går read tilbake umiddelbart,\n"
-" \t\tog prøver ikke å lese data. I sistnevnte tilfelle avslutter read "
-"bare\n"
+" \t\tog prøver ikke å lese data. I sistnevnte tilfelle avslutter read bare\n"
" \t\tvellykket hvis inndata er tilgjengelig på valgt fildeskriptor.\n"
" \t\tAvslutningsstatus er større enn 128 ved tidsavbrudd\n"
" -u fd\t\tles fra fildeskriptor FD i stedet for standard inndata\n"
" \n"
" Avslutningsstatus:\n"
" Null (vellykket), med mindre programmet møter EOF, får tidsavbrudd\n"
-" (i så fall er verdien høyere enn 128), det oppstår en variabel-"
-"tidelingsfeil,\n"
+" (i så fall er verdien høyere enn 128), det oppstår en variabel-tidelingsfeil,\n"
" eller valget «-u» argumenteres med en ugyldig fildeskriptor."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3984,7 +3821,7 @@ msgstr ""
" Avslutningsstatus:\n"
" N, eller mislykket hvis skallet ikke kjører en funksjon eller et skript."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4027,8 +3864,7 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
+" or zero if no command exited with a non-zero status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -4052,8 +3888,7 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell "
-"functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -4109,10 +3944,8 @@ msgstr ""
" onecmd tilsvarer «-t»\n"
" physical tilsvarer «-P»\n"
" pipefail returverdi av en kommandokø er statusen for\n"
-" siste kommando som avslutter med en annen status "
-"enn null,\n"
-" eller null hvis alle kommandoer avsluttet med "
-"null\n"
+" siste kommando som avslutter med en annen status enn null,\n"
+" eller null hvis alle kommandoer avsluttet med null\n"
" posix endre bash-oppførsel hvor standardoppførselen er\n"
" annerledes enn Posix-standarden, slik at bash\n"
" samsvarer med Posix\n"
@@ -4122,8 +3955,7 @@ msgstr ""
" xtrace tilsvarer «-x»\n"
" -p Slått på når virkelig og effektiv bruker-ID ikke er like.\n"
" Dette slår av behandling av fila $ENV og importering av\n"
-" skallfunksjoner. Hvis du slår av dette valget, blir effektiv uid "
-"og\n"
+" skallfunksjoner. Hvis du slår av dette valget, blir effektiv uid og\n"
" gid det samme som virkelig uid og gid.\n"
" -t Avslutt når én kommando er lest og kjørt.\n"
" -u Behandle udefinerte variabler som en feil.\n"
@@ -4152,7 +3984,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4164,8 +3996,7 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
+" Without options, unset first tries to unset a variable, and if that fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -4180,8 +4011,7 @@ msgstr ""
" Valg:\n"
" -f\tbehandle hvert NAVN som en skallfunksjon\n"
" -v\tbehandle hvert NAVN som en skallvariabel\n"
-" -n\tbehandle hvert NAVN som en navnreferanse, og tilbakestill selve "
-"variabelen\n"
+" -n\tbehandle hvert NAVN som en navnreferanse, og tilbakestill selve variabelen\n"
" \ti stedet for variabelen den refererer til\n"
" \n"
" Hvis ingen valg er tatt, prøver programmet først å tømme en variabel.\n"
@@ -4190,16 +4020,14 @@ msgstr ""
" Enkelte variabler kan ikke tømmes. Se også «readonly».\n"
" \n"
" Avslutningsstatus:\n"
-" Vellykket, med mindre bruker tar et ugyldig valg eller et NAVN er "
-"skrivebeskyttet."
+" Vellykket, med mindre bruker tar et ugyldig valg eller et NAVN er skrivebeskyttet."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -4213,10 +4041,8 @@ msgid ""
msgstr ""
"Gi skallvariabler eksport-attributt.\n"
" \n"
-" Markerer hvert valgt NAVN for automatisk eksportering til miljøet ved "
-"etterfølgende\n"
-" kjørte kommandoer. Hvis VERDI er oppgitt, tildeles VERDI før "
-"eksportering.\n"
+" Markerer hvert valgt NAVN for automatisk eksportering til miljøet ved etterfølgende\n"
+" kjørte kommandoer. Hvis VERDI er oppgitt, tildeles VERDI før eksportering.\n"
" \n"
" Valg:\n"
" -f\thenvis til skallfunksjoner\n"
@@ -4226,10 +4052,9 @@ msgstr ""
" Bruk argumentet«--» for å slå av videre behandling av valg.\n"
" \n"
" Avslutningsstatus:\n"
-" Vellykket, med mindre bruker tar et ugyldig valg, eller et NAVN er "
-"ugyldig."
+" Vellykket, med mindre bruker tar et ugyldig valg, eller et NAVN er ugyldig."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4251,8 +4076,7 @@ msgid ""
msgstr ""
"Marker skallvariabler som skrivebeskyttet.\n"
" \n"
-" Marker hvert valgt NAVN som skrivebeskyttet. Verdier av NAVN kan ikke "
-"endres\n"
+" Marker hvert valgt NAVN som skrivebeskyttet. Verdier av NAVN kan ikke endres\n"
" av etterfølgende tildeling. Hvis VERDI er oppgitt, tildeles denne før\n"
" variabelen markeres som skrivebeskyttet.\n"
" \n"
@@ -4260,8 +4084,7 @@ msgstr ""
" -a\thenvis til indekserte tabellvariabler\n"
" -A\thenvis til assosiative tabellvariabler\n"
" -f\thenvis til skallfunksjoner\n"
-" -p\tvis en liste over alle skrivebeskyttede variabler eller "
-"funksjoner,\n"
+" -p\tvis en liste over alle skrivebeskyttede variabler eller funksjoner,\n"
" avhengig av hvorvidt «-f» er valgt\n"
" \n"
" Bruk argumentet «--» for å slå av videre behandling av valg.\n"
@@ -4269,7 +4092,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4287,7 +4110,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre N er negativ eller større enn $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4311,7 +4134,7 @@ msgstr ""
" Samme som siste kommando som ble kjørt via FILNAVN, eller\n"
" mislykket hvis FILNAVN ikke kan leses."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4326,10 +4149,8 @@ msgid ""
msgstr ""
"Sett skallkjøring på pause.\n"
" \n"
-" Sett kjøring av dette skallet på pause inntil det mottar et SIGCONT-"
-"signal.\n"
-" Innloggingsskall kan ikke settes på pause med mindre du tvinger det "
-"fram.\n"
+" Sett kjøring av dette skallet på pause inntil det mottar et SIGCONT-signal.\n"
+" Innloggingsskall kan ikke settes på pause med mindre du tvinger det fram.\n"
" \n"
" Valg:\n"
" -f\ttving skallpause, selv hvis skallet er et innloggingsskall\n"
@@ -4337,7 +4158,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre jobbkontroll er slått av eller det oppstår feil."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4371,8 +4192,7 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
+" -N FILE True if the file has been modified since it was last read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4393,8 +4213,7 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+" True if STRING1 sorts before STRING2 lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4422,8 +4241,7 @@ msgstr ""
"Kontroller betinget uttrykk.\n"
" \n"
" Avslutter med status 0 (positiv, «true») eller 1 (negativ, «false»)\n"
-" i henhold til resultatet av valgt UTTRykk. Uttrykk kan være unære eller "
-"binære.\n"
+" i henhold til resultatet av valgt UTTRykk. Uttrykk kan være unære eller binære.\n"
" Unære uttrykk brukes ofte for å undersøke status for en fil.\n"
" Streng- og tallkontroll-valg kan også brukes.\n"
" \n"
@@ -4451,10 +4269,8 @@ msgstr ""
" -w FIL Positiv hvis FIL kan overskrives av deg.\n"
" -x FIL Positiv hvis FIL kan kjøres av deg.\n"
" -O FIL Positiv hvis FIL har deg som effektiv eier.\n"
-" -G FIL Positiv hvis FIL har din gruppe som effektiv "
-"gruppetilhørighet.\n"
-" -N FIL Positiv hvis FIL er blitt endret siden den ble lest "
-"sist.\n"
+" -G FIL Positiv hvis FIL har din gruppe som effektiv gruppetilhørighet.\n"
+" -N FIL Positiv hvis FIL er blitt endret siden den ble lest sist.\n"
" \n"
" FIL1 -nt FIL2 Positiv hvis FIL1 er nyere enn FIL2 (i følge\n"
" endringsdato).\n"
@@ -4475,18 +4291,15 @@ msgstr ""
" STRENG1 != STRENG2\n"
" Positiv hvis STRENGene ikke er like.\n"
" STRENG1 < STRENG2\n"
-" Positiv hvis STRENG1 havner over STRENG2 når de "
-"sorteres leksikografisk.\n"
+" Positiv hvis STRENG1 havner over STRENG2 når de sorteres leksikografisk.\n"
" STRENG1 > STRENG2\n"
-" Positiv hvis STRENG1 havner under STRENG2 når de "
-"sorteres leksikografisk.\n"
+" Positiv hvis STRENG1 havner under STRENG2 når de sorteres leksikografisk.\n"
" \n"
" Andre valg:\n"
" \n"
" -o VALG Positiv hvis skallvalget OPTION er slått på.\n"
" -v VAR\t Positiv hvis skallvariabelen VAR har en verdi\n"
-" -R VAR\t Positiv hvis skallvariabelen VAR har en verdi, og er en "
-"navnreferanse.\n"
+" -R VAR\t Positiv hvis skallvariabelen VAR har en verdi, og er en navnreferanse.\n"
" ! UTTR Positiv hvis UTTR er usant.\n"
" UTTR1 -a UTTR2 Positiv hvis både UTTR1 og UTTR2 er sanne.\n"
" UTTR1 -o UTTR2 Positiv hvis enten UTTR1 eller UTTR2 er sanne.\n"
@@ -4494,16 +4307,14 @@ msgstr ""
" arg1 OP arg2 Aritmetiske tester. OP må være enten «-eq», «-ne»,\n"
" «-lt», «-le», «-gt» eller «-ge».\n"
" \n"
-" Aritmetiske binærvalg gir positiv verdi hvis ARG1 er lik, ulik, mindre "
-"enn,\n"
+" Aritmetiske binærvalg gir positiv verdi hvis ARG1 er lik, ulik, mindre enn,\n"
" lik-eller-mindre-enn, større enn eller større-enn-eller-lik ARG2.\n"
" \n"
" Avslutningsstatus:\n"
-" Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ "
-"verdi eller\n"
+" Vellykket hvis UTTR gir positiv verdi, og mislykket hvis det gir negativ verdi eller\n"
" bruker skriver inn et ugyldig argument."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4515,12 +4326,11 @@ msgstr ""
" Dette er synonymt med den innebygde kommandoen «test», men\n"
" siste argument må være «]» for å samsvare med «[»."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
+" Prints the accumulated user and system times for the shell and all of its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4528,18 +4338,16 @@ msgid ""
msgstr ""
"Vis prosesstider.\n"
" \n"
-" Skriver ut oppsamlet bruker- og systemtid for skallet og alle "
-"underprosesser.\n"
+" Skriver ut oppsamlet bruker- og systemtid for skallet og alle underprosesser.\n"
" \n"
" Avslutningsstatus:\n"
" Alltid vellykket."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
+" Defines and activates handlers to be run when the shell receives signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4548,43 +4356,33 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+" If no arguments are supplied, trap prints the list of commands associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\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."
+" Returns success unless a SIGSPEC is invalid or an invalid option is given."
msgstr ""
"Fang signaler og andre hendelser.\n"
" \n"
-" Definerer og slår på brytere som skal kjøres når skallet mottar "
-"signaler\n"
+" Definerer og slår på brytere som skal kjøres når skallet mottar signaler\n"
" eller havner i andre tilstander.\n"
" \n"
-" ARG er en kommando som skal leses og kjøres når skallet mottar signalet/-"
-"ene\n"
+" ARG er en kommando som skal leses og kjøres når skallet mottar signalet/-ene\n"
" i henhold til SIGNALSPES. Hvis ARG er enten utelatt eller «-»,\n"
" og én SIGNALSPES er brukt, tilbakestilles valgt(e) signal(er) til\n"
" opprinnelig verdi. Hvis ARG er null, ignoreres SIGNALSPES av skallet\n"
@@ -4592,31 +4390,26 @@ msgstr ""
" \n"
" Hvis en SIGNALSPES er EXIT (0), kjøres ARG når skallet avslutter.\n"
" Hvis en SIGNALSPES er DEBUG, kjøres ARG før hver kommando.\n"
-" Hvis en SIGNALSPES er RETURN, kjøres ARG hver gang en skallfunksjon, "
-"skript\n"
+" Hvis en SIGNALSPES er RETURN, kjøres ARG hver gang en skallfunksjon, skript\n"
" eller innebygd kommando har kjørt ferdig. Hvis en SIGNALSPES\n"
-" er ERR, kjøres ARG hver gang en feilkjørt kommando ville ført til at "
-"skallet\n"
+" er ERR, kjøres ARG hver gang en feilkjørt kommando ville ført til at skallet\n"
" avsluttes når «-e» er valgt.\n"
" \n"
-" Hvis ingen argumenter er brukt, skriver trap ut en liste over "
-"kommandoer\n"
+" Hvis ingen argumenter er brukt, skriver trap ut en liste over kommandoer\n"
" som er tilknyttet hvert signal.\n"
" \n"
" Valg:\n"
" -l\tskriv ut en liste over signalnavn og tilknyttede numre\n"
" -p\tvis trap-kommandoer som er tilknyttet hver SIGNALSPESifikasjon\n"
" \n"
-" Hver SIGNALSPES er enten et signalnavn fra <signal.h> eller et "
-"signalnummer.\n"
-" Signalnavn skiller mellom små og store bokstaver. Prefikset «SIG» er "
-"valgfritt.\n"
+" Hver SIGNALSPES er enten et signalnavn fra <signal.h> eller et signalnummer.\n"
+" Signalnavn skiller mellom små og store bokstaver. Prefikset «SIG» er valgfritt.\n"
" Du kan sende et signal til skallet med «kill -signal $$».\n"
" \n"
" Avslutningsstatus:\n"
" Vellykket, med mindre en SIGNALSPES eller et valg er ugyldig."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4642,8 +4435,7 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
+" Returns success if all of the NAMEs are found; fails if any are not found."
msgstr ""
"Vis informasjon om kommandotype.\n"
" \n"
@@ -4651,36 +4443,30 @@ msgstr ""
" et kommandonavn.\n"
" \n"
" Valg:\n"
-" -a\tvis alle plasseringer som inneholder en kjørbar fil med oppgitt "
-"NAVN.\n"
+" -a\tvis alle plasseringer som inneholder en kjørbar fil med oppgitt NAVN.\n"
" \tHer inngår alle alias, innebygde kommandoer og funksjoner, med mindre\n"
" \t«-p» er valgt i tillegg\n"
" -f\tikke slå opp skallfunksjoner\n"
" -P\ttving et søk i STI etter NAVN, selv hvis det er et alias,\n"
" \tinnebygd kommando eller en funksjon, og vis navn på fila\n"
" \tsom ville blitt kjørt\n"
-" -p\tvis enten navn på fila som ville blitt kjørt, eller ingenting "
-"hvis\n"
+" -p\tvis enten navn på fila som ville blitt kjørt, eller ingenting hvis\n"
" \t«type -t NAVN» ikke fører til «file».\n"
" -t\tbeskriv NAVN som enten «alias», «keyword» (nøkkelord),\n"
-" \t«function» (funksjon), «builtin» (innebygd kommando), «file» (fil) "
-"eller \n"
+" \t«function» (funksjon), «builtin» (innebygd kommando), «file» (fil) eller \n"
" \t«'» (ikke funnet), if NAME is an alias, shell\n"
" \n"
" Argumenter:\n"
" NAVN\tKommandonavn som skal tolkes.\n"
" \n"
" Avslutningsstatus:\n"
-" Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke "
-"finnes."
+" Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke finnes."
-#: builtins.c:1431
-#, fuzzy
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
+" Provides control over the resources available to the shell and processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -4726,8 +4512,7 @@ msgid ""
msgstr ""
"Endre grenser for skallressurser.\n"
" \n"
-" Lar deg kontrollere mengden ressurser som skal være tilgjengelig for "
-"skall og\n"
+" Lar deg kontrollere mengden ressurser som skal være tilgjengelig for skall og\n"
" prosessene det lager på systemer som tillater det.\n"
" \n"
" Valg:\n"
@@ -4738,9 +4523,9 @@ msgstr ""
" -c\tmaksimal størrelse på opprettede kjernefiler\n"
" -d\tmaksimal størrelse på datasegment av en prosess\n"
" -e\tmaksimal prioritet («nice»-verdi)\n"
-" -f\tmaksimal størrelse på filer som skrives av skallet og "
-"underprosesser\n"
+" -f\tmaksimal størrelse på filer som skrives av skallet og underprosesser\n"
" -i\tmaksimalt antall ventende signaler\n"
+" -k\tmaksimalt antall k-køer som er tildelt denne prosessen\n"
" -l\tmaksimal minnemengde en prosess kan låse\n"
" -m\tmaksimal «resident set»-størrelse\n"
" -n\tmaksimalt antall åpne fildeskriptorer\n"
@@ -4752,26 +4537,24 @@ msgstr ""
" -u\tmaksimalt antall brukerprosesser\n"
" -v\tstørrelsen på virtuelt minne\n"
" -x\tmaksimalt antall fillåser\n"
-" -T maksimalt antall tråder\n"
+" -P\tmaksimalt antall pseudoterminaler\n"
+" -R\tden maksimale tiden en sanntidsprosess kan kjøre før blokkering\n"
+" -T\tmaksimalt antall tråder\n"
" \n"
" Det er ikke alle valg som støttes på alle plattformer.\n"
" \n"
" Hvis GRENSE er oppgitt, brukes denne som ny verdi for valgt ressurs.\n"
-" Du kan også bruke spesialverdiene «soft» (myk), «hard», og "
-"«unlimited» (ubegrenset).\n"
-" Ellers skriver programmet ut gjeldende verdi av valgt ressurs. Hvis "
-"ingenting\n"
+" Du kan også bruke spesialverdiene «soft» (myk), «hard», og «unlimited» (ubegrenset).\n"
+" Ellers skriver programmet ut gjeldende verdi av valgt ressurs. Hvis ingenting\n"
" er valgt, brukes «-f».\n"
" \n"
-" Verdier oppgis i 1024-byte-enheter, bortsett fra «-t» som oppgis i "
-"sekunder,\n"
-" «-p» som oppgis i 512-byte-enheter og «-u» som er et uskalert antall "
-"prosesser.\n"
+" Verdier oppgis i 1024-byte-enheter, bortsett fra «-t» som oppgis i sekunder,\n"
+" «-p» som oppgis i 512-byte-enheter og «-u» som er et uskalert antall prosesser.\n"
" \n"
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4797,35 +4580,29 @@ msgstr ""
" og ellers som en symbolsk modusstreng av typen som brukes av chmod(1).\n"
" \n"
" Valg:\n"
-" -p\tskriv ut i et format som kan gjenbrukes som inndata hvis ingen "
-"MODUS er valgt\n"
+" -p\tskriv ut i et format som kan gjenbrukes som inndata hvis ingen MODUS er valgt\n"
" -S\tgjør utdata symbolsk (ikke skriv ut oktaltall)\n"
" \n"
" Avslutningsstatus:\n"
" Vellykket, med mindre MODUS er ugyldig eller bruker tar et ugyldig valg."
-#: builtins.c:1502
-#, fuzzy
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
+" Waits for each process identified by an ID, which may be a process ID or a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for a single job from the list of "
-"IDs,\n"
-" or, if no IDs are supplied, for the next job to complete and returns "
-"its\n"
+" If the -n option is supplied, waits for a single job from the list of IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns its\n"
" exit status.\n"
" \n"
" If the -p option is supplied, the process or job identifier of the job\n"
" for which the exit status is returned is assigned to the variable VAR\n"
-" named by the option argument. The variable will be unset initially, "
-"before\n"
+" named by the option argument. The variable will be unset initially, before\n"
" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
@@ -4837,51 +4614,48 @@ msgid ""
" children."
msgstr ""
"Vent på fullføring av jobb, og skriv ut avslutningsstatus.\n"
-" \n"
-" Vent på valgt(e) prosess(er) (valgt med ID, som kan være prosess-ID "
-"eller\n"
+" \n"
+" \n"
+" Vent på valgt(e) prosess(er) (valgt med ID, som kan være prosess-ID eller\n"
" jobbspesifikasjon), og skriv ut statuskode. Hvis ID ikke er valgt,\n"
" venter programmet på alle aktive underprosesser, og avslutter\n"
-" med kode null. Hvis ID er en jobbspesifikasjon, venter programmet på "
-"alle\n"
+" med kode null. Hvis ID er en jobbspesifikasjon, venter programmet på alle\n"
" prosesser i kommandokøen for valgt jobb.\n"
" \n"
-" Hvis «-n» er valgt, skriver programmet ut avslutningsstatus for neste "
-"jobb.\n"
+" Hvis «-n» er valgt, venter på en enkelt jobb fra listen over IDer,\n"
+" eller, hvis ingen IDer er oppgitt skriver programmet ut avslutningsstatus for neste jobb.\n"
" \n"
" Hvis «f» er valgt og jobbkontroll er slått på, venter programmet på at\n"
" valgt ID skal avslutte i stedet for å vente på statusendring.\n"
+" \n"
" Avslutningsstatus:\n"
-" Samme som siste ID, eller mislykket hvis enten ID er ugyldig eller\n"
-" bruker tar et ugyldig valg."
+" Samme som siste ID: mislykket hvis enten ID er ugyldig eller\n"
+" bruker tar et ugyldig valg, eller hvis «-n» er oppgitt og \n"
+" skallet ikke har noen uventede barne-prosesser."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination "
-"status.\n"
+" Waits for each process specified by a PID and reports its termination status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an "
-"invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
" option is given."
msgstr ""
"Vent på ferdigstillelse av prosess, og rapporter avslutningsstatus.\n"
" \n"
-" Venter på hver prosess som er valgt med PID, og rapporterer avsluttende "
-"statuskode.\n"
-" Hvis PID ikke er valgt, venter kommandoen på alle aktive "
-"underprosesser,\n"
+" Venter på hver prosess som er valgt med PID, og rapporterer avsluttende statuskode.\n"
+" Hvis PID ikke er valgt, venter kommandoen på alle aktive underprosesser,\n"
" og avslutter med null-status. PID må være en prosess-ID.\n"
" \n"
" Avslutningsstatus:\n"
" Samme som siste PID. Mislykket hvis PID er ugyldig, eller hvis\n"
" bruker tar et ugyldig valg."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4902,7 +4676,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørte kommando."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4932,7 +4706,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørte kommando."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4960,15 +4734,14 @@ msgstr ""
" består av et tall som tilsvarer antall ord, endres NAVN slik at det\n"
" tilsvarer dette tallet. Hvis linja er tom, vises ORD og ledetekst på\n"
" nytt. Hvis programmet møter EOF, avslutter kommandoen. Andre\n"
-" verdier fører til at NAVN endres til null. Lest linje lagres i "
-"variabelen\n"
+" verdier fører til at NAVN endres til null. Lest linje lagres i variabelen\n"
" REPLY. KOMMANDOER kjøres etter hvert utvalg frem til programmet\n"
" støter på en bruddkommando.\n"
" \n"
" Avslutningsstatus:\n"
" Samme som sist kjørt kommando."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4985,10 +4758,8 @@ msgid ""
msgstr ""
"Rapporter medgått tid i kommandokø-kjøring.\n"
" \n"
-" Kjør valgt DATARØR og skriv ut en oppsummering av reell tid, bruker-CPU-"
-"tid\n"
-" og system-CPU-tid som er medgått ved kjøring av DATARØR idet det "
-"avsluttes.\n"
+" Kjør valgt DATARØR og skriv ut en oppsummering av reell tid, bruker-CPU-tid\n"
+" og system-CPU-tid som er medgått ved kjøring av DATARØR idet det avsluttes.\n"
" \n"
" Valg:\n"
" -p\tkjør tidsoppsummering i gjenbrukbart Posix-format.\n"
@@ -4998,7 +4769,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som statuskoden fra valgt DATARØR."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5016,21 +4787,16 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørte kommando."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then "
-"the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
-"is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. "
-"Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
+" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of the\n"
+" entire construct is the exit status of the last command executed, or zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -5040,53 +4806,51 @@ msgstr ""
" \n"
" Kjør lista «if KOMMANDOER». Hvis avslutningsstatus er null, kjøres\n"
" «then KOMMANDOER». Ellers kjøres hver «elif KOMMANDOER»-liste\n"
-" etter tur. Hvis status er null ved sistnevnte, kjøres tilhørende «then "
-"KOMMANDOER»\n"
+" etter tur. Hvis status er null ved sistnevnte, kjøres tilhørende «then KOMMANDOER»\n"
" og if-kommandoen avslutter. Ellers kjøres evt. lista «else KOMMANDOER».\n"
-" Avslutningsstatus for hele betingelsesuttrykket er statuskoden fra sist "
-"kjørt kommando,\n"
+" Avslutningsstatus for hele betingelsesuttrykket er statuskoden fra sist kjørt kommando,\n"
" eller null hvis ingen tilstand er sann.\n"
" \n"
" Avslutningsstatus:\n"
" Samme som sist kjørt kommando."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Kjør kommandoer så lenge en test lykkes.\n"
" \n"
-" Utvid og kjør KOMMANDOER så lenge siste kommando i\n"
+" Utvid og kjør KOMMANDOER-2 så lenge siste kommando i\n"
" «while» avslutter med null-status.\n"
" \n"
" Avslutningsstatus:\n"
-" Samme som sist kjørte kommando."
+" Returnerer statusen til den siste kommandoen som ble kjørt."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Kjør kommandoer så lenge en test mislykkes.\n"
" \n"
-" Utvid og kjør KOMMANDOER så lenge siste kommando i\n"
+" Utvid og kjør KOMMANDOER-2 så lenge siste kommando i\n"
" «until» avslutter med en annen statuskode enn null.\n"
" \n"
" Avslutningsstatus:\n"
-" Samme som sist kjørte kommando."
+" Returnerer statusen til den siste kommandoen som ble kjørt."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5100,22 +4864,19 @@ msgid ""
msgstr ""
"Lag medprosess med valgt NAVN.\n"
" \n"
-" Kjør valgt KOMMANDO synkront, med standard inn- og utdata for "
-"kommandoen\n"
-" som er tilkoblet via et datarør til fildeskriptorer med indeks 0 og 1 i "
-"en tabellvariabel \n"
+" Kjør valgt KOMMANDO synkront, med standard inn- og utdata for kommandoen\n"
+" som er tilkoblet via et datarør til fildeskriptorer med indeks 0 og 1 i en tabellvariabel \n"
" med oppgitt NAVN i kjørende skall.\n"
"\v StandardNAVN er «COPROC».\n"
" \n"
" coproc avslutter med kode 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -5124,16 +4885,14 @@ msgid ""
msgstr ""
"Definer en skallfunksjon.\n"
" \n"
-" Lag en skallfunksjon med valgt NAVN. NAVN kjører KOMMANDOer i gjeldende "
-"skallkontekst\n"
-" når det kjøres som en enkel kommando, og argumenter videresendes til "
-"funksjonen som\n"
+" Lag en skallfunksjon med valgt NAVN. NAVN kjører KOMMANDOer i gjeldende skallkontekst\n"
+" når det kjøres som en enkel kommando, og argumenter videresendes til funksjonen som\n"
" $1…$n. Funksjonens navn ligger i $FUNCNAME.\n"
" \n"
" Avslutningsstatus:\n"
" Vellykket, med mindre valgt NAVN er skrivebeskyttet."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5151,7 +4910,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørt kommando."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5169,14 +4928,12 @@ msgstr ""
" Tilsvarer argumentet «JOBBSPES» for kommandoen «fg». Gjenoppta\n"
" en jobb som venter eller kjører i bakgrunnen. «JOBBSPES» kan\n"
" enten være et jobbnavn eller -nummer. Bruk «&» etter JOBBSPES for å\n"
-" legge jobben i bakgrunnen, som om jobbspesifikasjonen var et argument "
-"for «bg».\n"
+" legge jobben i bakgrunnen, som om jobbspesifikasjonen var et argument for «bg».\n"
" \n"
" Avslutningsstatus:\n"
" Samme som statuskoden for gjenopptatt jobb."
-#: builtins.c:1726
-#, fuzzy
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5194,16 +4951,13 @@ msgstr ""
" Avslutningsstatus:\n"
" 1 hvis UTTRYKK blir 0, og ellers 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the `test' builtin, and may be combined using the following "
-"operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries used\n"
+" by the `test' builtin, and may be combined using the following operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -5229,10 +4983,8 @@ msgstr ""
" \n"
" ( UTTRYKK )\tViser verdien av UTTRYKK\n"
" ! UTTRYKK\t\tPositiv hvis UTTRYKK er usant, ellers negativ\n"
-" UTTR1 && UTTR2\tPositiv hvis både UTTR1 og UTTR2 er sant, ellers "
-"negativ\n"
-" UTTR1 || UTTR2\tPositiv hvis enten UTTR1 eller UTTR2 er sant, ellers "
-"negativ\n"
+" UTTR1 && UTTR2\tPositiv hvis både UTTR1 og UTTR2 er sant, ellers negativ\n"
+" UTTR1 || UTTR2\tPositiv hvis enten UTTR1 eller UTTR2 er sant, ellers negativ\n"
" \n"
" Ved bruk av «==» og «!=» brukes etterfølgende streng som\n"
" et mønster, og programmet utfører mønsterutlikning.\n"
@@ -5245,7 +4997,7 @@ msgstr ""
" Avslutningsstatus:\n"
" 0 eller 1, avhengig av UTTRYKKets verdi."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5305,11 +5057,9 @@ msgstr ""
" \t\tfor mapper som er brukt som argumenter for «cd».\n"
" GLOBIGNORE\tEn kolondelt liste over mønstre som beskriver filnavn\n"
" \t\tsom skal ignoreres av stinavn-utvidelse.\n"
-" HISTFILE\tNavn på fil hvor kommandohistorikk for gjeldende bruker er "
-"lagret.\n"
+" HISTFILE\tNavn på fil hvor kommandohistorikk for gjeldende bruker er lagret.\n"
" HISTFILESIZE\tMaksimalt antall linjer denne fila kan inneholde.\n"
-" HISTSIZE\tMaksimalt antall historikklinjer et kjørende skall har tilgang "
-"til.\n"
+" HISTSIZE\tMaksimalt antall historikklinjer et kjørende skall har tilgang til.\n"
" HOME\tFullstendig sti til gjeldende brukers hjemmemappe.\n"
" HOSTNAME\tNavn på gjeldende vert.\n"
" HOSTTYPE\tType prosessor denne versjonen av Bash kjører på.\n"
@@ -5335,8 +5085,7 @@ msgstr ""
" TIMEFORMAT\tUtdata-format for tidsstatistikk som vises av\n"
" \t\tdet reserverte ordet «time».\n"
" auto_resume\tEt kommandoord som dukker opp alene på en linje\n"
-" \t\tblir kontrollert mot lista over ventende jobber. Hvis kommandoen "
-"finnes\n"
+" \t\tblir kontrollert mot lista over ventende jobber. Hvis kommandoen finnes\n"
" \t\ti lista, flyttes den til forgrunnen.\n"
" \t\tVerdien «exact» betyr at kommandoen må være helt lik\n"
" \t\tet kommandonavn i lista over ventende jobber.\n"
@@ -5350,7 +5099,7 @@ msgstr ""
" HISTIGNORE\tEn kolondelt liste over mønstre som bestemmer\n"
" \t\thvilke kommandoer som skal lagres i historikklista.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5406,7 +5155,7 @@ msgstr ""
" Vellykket, med mindre et ugyldig argument er brukt eller\n"
" mappebytte mislykkes."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5435,8 +5184,7 @@ msgstr ""
"Fjern mapper fra stabelen.\n"
" \n"
" Fjern oppføringer fra mappestabelen. Hvis ingen argumenter er gitt,\n"
-" fjernes øverste mappe fra stabelen, og tar i bruk ny toppmappe som "
-"arbeidsmappe.\n"
+" fjernes øverste mappe fra stabelen, og tar i bruk ny toppmappe som arbeidsmappe.\n"
" \n"
" Valg:\n"
" -n\tIkke bytt mappe når mapper fjernes fra stabelen\n"
@@ -5447,8 +5195,7 @@ msgstr ""
" F.eks.: «popd +0» fjerner første mappe, og «popd +1» mappe nr. 2.\n"
" \n"
" -N\tFjern N-te mappe (talt fra null til høyre, etter «dirs»).\n"
-" F.eks.: «popd -0» fjerner siste mappe, og «popd -1» nest siste "
-"mappe.\n"
+" F.eks.: «popd -0» fjerner siste mappe, og «popd -1» nest siste mappe.\n"
" \n"
" Bruk kommandoen «dirs» for å vise mappestabelen.\n"
" \n"
@@ -5456,7 +5203,7 @@ msgstr ""
" Vellykket, med mindre et ugyldig argument er brukt eller\n"
" mappebytte mislykkes."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5502,7 +5249,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5523,10 +5270,8 @@ msgid ""
msgstr ""
"Juster og tilbakestill skallvalg.\n"
" \n"
-" Endre innstilling for hvert VALGNAVN. Hvis ingen valg/argumenter er "
-"brukt,\n"
-" skriver programmet ut alle oppgitte VALGNAVN og viser hvorvidt de har en "
-"verdi.\n"
+" Endre innstilling for hvert VALGNAVN. Hvis ingen valg/argumenter er brukt,\n"
+" skriver programmet ut alle oppgitte VALGNAVN og viser hvorvidt de har en verdi.\n"
" Hvis ingen VALGNAVN er oppgitt, skriver programmet ut alle skallvalg.\n"
" \n"
" Valg:\n"
@@ -5540,7 +5285,7 @@ msgstr ""
" Vellykket hvis VALGNAVN er slått på, og mislykket hvis enten bruker \n"
" tar et ugyldig valg eller VALGNAVN er slått av."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5548,34 +5293,29 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
+" FORMAT is a character string which contains three types of objects: plain\n"
+" characters, which are simply copied to standard output; character escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
+" format specifications, each of which causes printing of the next successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in "
-"printf(1),\n"
+" In addition to the standard format specifications described in printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a "
-"format\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as "
-"appropriate,\n"
+" specifications behave as if a zero value or null string, as appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
+" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
"Formaterer og skriver ut ARGUMENTER på FORMATets premisser.\n"
@@ -5589,35 +5329,29 @@ msgstr ""
" - skiftetegn (som konverteres og kopieres til standardutdata), og\n"
" - formatspesifikasjoner (som skriver ut påfølgende argument).\n"
" \n"
-" Printf tolker følgende standard-formatspes. i tillegg til de som "
-"står beskrevet i printf(1):\n"
+" Printf tolker følgende standard-formatspes. i tillegg til de som står beskrevet i printf(1):\n"
" \n"
" %b\tutvid omvendt skråstrek-skiftesekvenser i gjeldende argument\n"
-" %q\tgi argumentet anførselstegn slik at det kan brukes som skall-"
-"inndata\n"
-" %(fmt)T skriv ut «date-time»-streng etter bruk av FMT som "
-"formatstreng\n"
+" %q\tgi argumentet anførselstegn slik at det kan brukes som skall-inndata\n"
+" %Q\tsom %q, men bruk hvilken som helst presisjon på argumentet uten anførselstegn før\n"
+" \t\tsitering\n"
+" %(fmt)T skriv ut «date-time»-streng etter bruk av FMT som formatstreng\n"
" med strftime(3)\n"
" \n"
-" Formatet gjenbrukes etter nødvendighet for å bruke opp alle "
-"argumentene.\n"
-" Hvis det finnes færre argumenter enn formatet krever, oppfører "
-"overflødige\n"
+" Formatet gjenbrukes etter nødvendighet for å bruke opp alle argumentene.\n"
+" Hvis det finnes færre argumenter enn formatet krever, oppfører overflødige\n"
" formatstrenger seg som om de var 0-verdier eller null-strenger.\n"
" \n"
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår en\n"
" skrive- eller tidelingsfeil."
-#: builtins.c:1971
-#, fuzzy
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
+" For each NAME, specify how arguments are to be completed. If no options\n"
+" are supplied, existing completion specifications are printed in a way that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -5632,10 +5366,8 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
-"supplied,\n"
-" the -D option takes precedence over -E, and both take precedence over -"
-"I.\n"
+" uppercase-letter options are listed above. If multiple options are supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -I.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
@@ -5643,13 +5375,11 @@ msgstr ""
"Velg hvordan argumenter skal fullføres av Readline.\n"
" \n"
" Velg hvordan argumenter skal fullføres per NAVN.\n"
-" Hvis brukeren ikke tar noen valg, blir gjeldende "
-"fullføringsspesifikasjoner\n"
+" Hvis brukeren ikke tar noen valg, blir gjeldende fullføringsspesifikasjoner\n"
" skrevet ut i et format som egner seg til gjenbruk.\n"
" \n"
" Valg:\n"
-" -p\tskriv ut gjeldende fullføringsoppsett i et gjenbrukbart format "
-"(standard)\n"
+" -p\tskriv ut gjeldende fullføringsoppsett i et gjenbrukbart format (standard)\n"
" -r\tfjern en fullføringsspesifikasjon per NAVN\n"
" \t(eller fra alle spesifikasjoner hvis ingen NAVN er valgt)\n"
" -D\tbruk fullføringer og handlinger som standard for kommandoer uten\n"
@@ -5664,13 +5394,12 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
+" completions. If the optional WORD argument is supplied, matches against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -5685,16 +5414,13 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, print\n"
+" the completion options for each NAME or the current completion specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5718,10 +5444,8 @@ msgid ""
msgstr ""
"Endre eller vis fullføringsvalg.\n"
" \n"
-" Endre fullføringsvalg per NAVN, eller kjørende fullføringsprosess hvis "
-"ingen\n"
-" NAVN er valgt. Hvis ingen VALG er brukt, skriv enten ut fullføringsvalg "
-"per NAVN,\n"
+" Endre fullføringsvalg per NAVN, eller kjørende fullføringsprosess hvis ingen\n"
+" NAVN er valgt. Hvis ingen VALG er brukt, skriv enten ut fullføringsvalg per NAVN,\n"
" eller gjeldende fullføringsoppsett.\n"
" \n"
" Valg:\n"
@@ -5734,8 +5458,7 @@ msgstr ""
" \n"
" Argumenter:\n"
" \n"
-" Hvert NAVN henviser til en kommando som må ha en "
-"fullføringsspesifikasjon\n"
+" Hvert NAVN henviser til en kommando som må ha en fullføringsspesifikasjon\n"
" definert med den innebyde kommandoen «complete». Hvis ingen NAVN\n"
" er valgt, må compopt brukes av en funksjon som genererer fullføringer.\n"
" Valgene for den aktuelle fullføringsgeneratoren blir i så fall endret.\n"
@@ -5744,26 +5467,21 @@ msgstr ""
" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN\n"
" mangler fullføringsoppsett."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
+" Read lines from the standard input into the indexed array variable ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard "
-"input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -5776,54 +5494,43 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
"Legg linjer fra standard inndata i en indeksert tabellvariabel.\n"
" \n"
-" Legg linjer fra standard inndata i indeksert tabellvariabel TABELL, "
-"eller\n"
+" Legg linjer fra standard inndata i indeksert tabellvariabel TABELL, eller\n"
" fra fildeskriptor FD ved bruk av «-u». Variabelen MAPFILE er\n"
" standard TABELL.\n"
" \n"
" Valg:\n"
-" -d skill\tBruk SKILLetegn til å avslutte linjer (i stedet for "
-"linjeskift)\n"
-" -n antall\tIkke kopier flere enn valgt ANTALL linjer. Hvis ANTALL er "
-"0, kopieres alle linjer.\n"
-" -O oppr\tTildel til TABELL ved indeks-OPPRinnelse. Standard indeks er "
-"0.\n"
+" -d skill\tBruk SKILLetegn til å avslutte linjer (i stedet for linjeskift)\n"
+" -n antall\tIkke kopier flere enn valgt ANTALL linjer. Hvis ANTALL er 0, kopieres alle linjer.\n"
+" -O oppr\tTildel til TABELL ved indeks-OPPRinnelse. Standard indeks er 0.\n"
" -s antall \tForkast valgt ANTALL linjer i starten.\n"
" -t\t\tFjern etterfølgende linjeskift fra hver lest linje.\n"
-" -u fd\t\tLes linjer fra fildeskriptor FD i stedet for standard "
-"inndata.\n"
-" -C tilbakekall\tVurder TILBAKEKALL hver gang valgt ANTALL linjer er "
-"lest.\n"
-" -c antall\tVelg antall linjer som skal leses mellom hvert "
-"TILBAKEKALL.\n"
+" -u fd\t\tLes linjer fra fildeskriptor FD i stedet for standard inndata.\n"
+" -C tilbakekall\tVurder TILBAKEKALL hver gang valgt ANTALL linjer er lest.\n"
+" -c antall\tVelg antall linjer som skal leses mellom hvert TILBAKEKALL.\n"
" \n"
" Argumenter:\n"
" ARRAY\t\tTabellvariabel-navn som skal brukes i fildata.\n"
" \n"
" Hvis «-C» er valgt men ikke «-c», brukes standardantallet 5000. Når\n"
-" TILBAKEKALL vurderes, argumenteres det i tillegg med indeks av neste "
-"tabellelement\n"
+" TILBAKEKALL vurderes, argumenteres det i tillegg med indeks av neste tabellelement\n"
" samt linjenummeret som skal tildeles aktuelt element.\n"
" \n"
-" Hvis ingen eksplisitt opprinnelse er gitt, tømmes TABELL før den får "
-"tildelt noe.\n"
+" Hvis ingen eksplisitt opprinnelse er gitt, tømmes TABELL før den får tildelt noe.\n"
" \n"
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller TABELL enten er\n"
" skrivebeskyttet eller en ikke-indeksert tabell."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5833,6 +5540,9 @@ msgstr ""
" \n"
" Dette er synonymt med «mapfile»."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: ugyldig nøkkel for assosiativ tabell"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/nl.gmo b/po/nl.gmo
index 51b3d4f6..86de738c 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index dcc82d95..f80f2470 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,5 +1,5 @@
# Dutch translations for GNU bash.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2022 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
#
# «Lernfähiger Software! Ich lach mich kaputt!»
@@ -17,17 +17,17 @@
# om stilstaan en niet om finale opgave. Een alternatieve vertaling
# zou dus "Stilstand" kunnen zijn.
#
-# Benno Schulenberg <benno@vertaalt.nl>, 2006, 2008, 2010, 2011, 2013, 2014.
-# Benno Schulenberg <benno@vertaalt.nl>, 2015, 2016, 2019, 2020.
-# Erwin Poeze <erwin.poeze@gmail.com>, 2009.
-# Julie Vermeersch <julie@lambda1.be>, 2004.
# Erick Branderhorst <branderh@iaehv.nl>, 1996.
+# Julie Vermeersch <julie@lambda1.be>, 2004.
+# Erwin Poeze <erwin.poeze@gmail.com>, 2009.
+# Benno Schulenberg <benno@vertaalt.nl>, 2006, 2008, 2010, 2011, 2013, 2014.
+# Benno Schulenberg <benno@vertaalt.nl>, 2015, 2016, 2019, 2020, 2022.
msgid ""
msgstr ""
-"Project-Id-Version: bash-5.1\n"
+"Project-Id-Version: bash-5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-16 09:57+0100\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-23 10:18+0200\n"
"Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
"Language: nl\n"
@@ -41,57 +41,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "ongeldige array-index"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: 'nameref'-eigenschap wordt verwijderd"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: ongeldige sleutel voor associatief array"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: niet-numerieke index is niet mogelijk"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: een index is nodig bij toekenning aan associatief array"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "Kan %s niet aanmaken: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: eerste teken dat geen witruimte is is niet '\"'"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "geen sluit-'%c' in %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: ontbrekend scheidingsteken (dubbele punt)"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "Kan '%s' niet losmaken in toetsenkaart"
@@ -111,7 +106,7 @@ msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %u elementen"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor '%s'"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "'%s': ongeldige naam voor alias"
@@ -182,7 +177,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME is niet gedefinieerd"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "te veel argumenten"
@@ -209,7 +204,7 @@ msgstr "waarschuwing: "
msgid "%s: usage: "
msgstr "%s: Gebruik: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: optie vereist een argument"
@@ -224,7 +219,7 @@ msgstr "%s: vereist een numeriek argument"
msgid "%s: not found"
msgstr "%s: niet gevonden"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: ongeldige optie"
@@ -234,7 +229,7 @@ msgstr "%s: ongeldige optie"
msgid "%s: invalid option name"
msgstr "%s: ongeldige optienaam"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "'%s': is geen geldige naam"
@@ -247,7 +242,7 @@ msgstr "ongeldig octaal getal"
msgid "invalid hex number"
msgstr "ongeldig hexadecimaal getal"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "ongeldig getal"
@@ -261,88 +256,93 @@ msgstr "%s: ongeldige signaalaanduiding"
msgid "`%s': not a pid or valid job spec"
msgstr "'%s': is geen PID en geen geldige taakaanduiding"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: is een alleen-lezen variabele"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: kan niet toewijzen"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s valt buiten bereik"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s valt buiten bereik"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: taak bestaat niet"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: geen taakbesturing"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "geen taakbesturing"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: beperkte modus"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "beperkte modus"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: is geen ingebouwde opdracht van de shell"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "schrijffout: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "fout tijdens instellen van terminaleigenschappen: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "fout tijdens verkrijgen van terminaleigenschappen: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: fout tijdens bepalen van huidige map: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: taakaanduiding is niet eenduidig"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "hulp is niet beschikbaar in deze versie"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "Kan '%s' niet verwijderen"
@@ -352,108 +352,108 @@ msgstr "Kan '%s' niet verwijderen"
msgid "%s: invalid action name"
msgstr "%s: ongeldige actienaam"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: is geen completerings-aanduiding"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "waarschuwing: optie -F functioneert mogelijk niet zoals verwacht"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "kan alleen worden gebruikt binnen een functie"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "'-f' kan niet gebruikt worden om een functie te definiëren"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: is een alleen-lezen functie"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: verwijzingsvariabele mag geen array zijn"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: zelfverwijzing door naamsverwijzingsvariabele is niet toegestaan"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: circulaire naamsverwijzing"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "'%s': ongeldige variabelenaam voor naamsverwijzing"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "'-f' kan niet gebruikt worden om een functie te definiëren"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: is een alleen-lezen functie"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: kan array-variabelen niet op deze manier verwijderen"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynamisch-laden is niet beschikbaar"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "kan gedeeld object %s niet openen: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "kan %s niet vinden in gedeeld object %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: dynamische ingebouwde functie is reeds geladen"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "laadfunctie voor %s geeft foutcode (%d): is niet geladen"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: is niet dynamisch geladen"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "Kan %s niet verwijderen: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: is een map"
@@ -468,7 +468,7 @@ msgstr "%s: is geen normaal bestand"
msgid "%s: file is too large"
msgstr "%s: bestand is te groot"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: kan binair bestand niet uitvoeren"
@@ -565,12 +565,12 @@ msgstr ""
"Er is geen hulptekst voor '%s'.\n"
"Probeer 'help help' of 'man -k %s' of 'info %s'."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "Kan %s niet openen: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -590,21 +590,21 @@ msgstr ""
"(Een sterretje (*) naast een naam betekent dat de functie uitgeschakeld is.)\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "slechts één van '-a', '-n', '-r' of '-w' is mogelijk"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "geschiedenispositie"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: ongeldig tijdsstempel"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: geschiedenisexpansie is mislukt"
@@ -627,80 +627,80 @@ msgstr "%s: argumenten moeten proces-IDs of taak-IDs zijn"
msgid "Unknown error"
msgstr "Onbekende fout"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "uitdrukking werd verwacht"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: is geen geïndexeerd array"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: ongeldige aanduiding van bestandsdescriptor"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: ongeldige bestandsdescriptor: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: ongeldig regelaantal"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: ongeldig array-begin"
# Quantum is een hoeveelheid regels, een getal.
# Callback is de aan te roepen functie, maar onnodig in de vertaling.
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: ongeldige hoeveelheid"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "lege naam van array-variabele"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "ondersteuning van arrayvariabelen is vereist"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "'%s': ontbrekend opmaakteken"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "'%c': ongeldige aanduiding van tijdsopmaak"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "'%c': ongeldig opmaakteken"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "waarschuwing: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "probleem bij ontleden van opmaak: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "ontbrekend hexadecimaal cijfer bij \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "ontbrekend Unicode-cijfer bij \\%c"
@@ -844,12 +844,12 @@ msgstr ""
"\n"
" De opdracht 'dirs' toont de huidige mappenstapel."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: ongeldige aanduiding van tijdslimiet"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "leesfout: %d: %s"
@@ -862,7 +862,7 @@ msgstr "kan alleen een 'return' doen uit een functie of een uit script aangeroep
msgid "cannot simultaneously unset a function and a variable"
msgstr "kan niet tegelijk een functie en een variabele verwijderen"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: is geen array-variabele"
@@ -881,11 +881,11 @@ msgstr "Kan '%s' niet exporteren"
msgid "shift count"
msgstr "shift-aantal"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ongeldige shell-optienaam"
@@ -952,16 +952,16 @@ msgstr "%s: ongeldige limietwaarde"
msgid "`%c': bad command"
msgstr "'%c': ongeldige opdracht"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: kan de limiet niet bepalen: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limiet"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: kan de limiet niet wijzigen: %s"
@@ -980,7 +980,7 @@ msgstr "'%c': ongeldige operator in symbolische modus"
msgid "`%c': invalid symbolic mode character"
msgstr "'%c': ongeldig teken in symbolische modus"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " regel "
@@ -1000,96 +1000,106 @@ msgstr "Afbreken..."
msgid "INFORM: "
msgstr "informatie: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "DEBUG-waarschuwing: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "onbekende opdrachtfout"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "ongeldig opdrachttype"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "ongeldige verbinder"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "ongeldige sprong"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: ongebonden variabele"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc(): coproc [%d:%s] bestaat nog steeds"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "pijpfout"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximum 'source'-nestingsniveau is overschreden (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximum functie-nestingsniveau is overschreden (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: opdracht niet gevonden"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: kan niet uitvoeren: vereist bestand is niet gevonden"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: ongeldige interpreter"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: kan binair bestand %s niet uitvoeren"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "'%s' is een speciale ingebouwde shell-functie"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d"
@@ -1102,68 +1112,68 @@ msgstr "recursieniveau van expressies is overschreden"
msgid "recursion stack underflow"
msgstr "recursiestapel-onderloop"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "syntaxfout in expressie"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "poging tot toewijzing aan een niet-variabele"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "syntaxfout in toewijzing aan variabele"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "deling door nul"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "**interne fout**: onjuist symbool in toewijzingsexpressie"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "':' werd verwacht voor een voorwaardelijke expressie"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "exponent is kleiner dan 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "naam verwacht na pre-increment of pre-decrement"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "ontbrekend ')'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "syntaxfout: operator verwacht"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaxfout: ongeldige rekenkundige operator"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "ongeldige rekenkundige basis"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "ongeldige integerconstante"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "waarde is te groot voor basis"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expressiefout\n"
@@ -1172,7 +1182,7 @@ msgstr "%s: expressiefout\n"
msgid "getcwd: cannot access parent directories"
msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d"
@@ -1191,167 +1201,167 @@ msgstr "check_bash_input(): buffer bestaat al voor nieuwe bestandsdescriptor %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline(): procesgroep van pijp"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LUS: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LUS: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "afgesplitst PID %d hoort bij draaiende taak %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..."
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process(): PID %5ld (%s) staat gemarkeerd als nog actief"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid(): PID %ld bestaat niet"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signaal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Klaar"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Gepauzeerd"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Gepauzeerd(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Wordt uitgevoerd"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Klaar(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Exit %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Onbekende afsluitwaarde"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(geheugendump gemaakt) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (werkmap: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "instellen van procesgroep %2$ld van dochter %1$ld"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait(): PID %ld is geen dochterproces van deze shell"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for(): proces %ld is nergens geregistreerd"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job(): taak %d is gepauzeerd"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: geen lopende taken"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: taak is afgesloten"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: taak %d draait al op de achtergrond"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld(): WNOHANG wordt ingeschakeld om een onbegrensde blokkering te vermijden"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: regel %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (geheugendump gemaakt)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(werkmap is nu: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp() is mislukt"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: geen taakbesturing in de achtergrond"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: lijnprotocol"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid()"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "kan procesgroep (%d) van terminal niet instellen"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "er is geen taakbesturing in deze shell"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc(): controletest is mislukt: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1360,47 +1370,47 @@ msgstr ""
"\r\n"
"malloc(): %s:%d: controletest is mislukt\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "onbekend"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc(): een pointer op de lijst van vrije blokken is overschreven"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free(): aangeroepen met als argument een blok dat al vrijgegeven is"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free(): aangeroepen met als argument een ongebruikt blok"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free(): onderloop: 'magic8' is beschadigd"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free(): blokgroottes van begin en eind zijn verschillend"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc(): aangeroepen met als argument een ongebruikt blok"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc(): onderloop: 'magic8' is beschadigd"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc(): blokgroottes van begin en eind zijn verschillend"
@@ -1442,22 +1452,22 @@ msgstr "%s: ongeldige aanduiding van netwerkpad"
msgid "network operations not supported"
msgstr "netwerkoperaties worden niet ondersteund"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s): %s"
@@ -1475,136 +1485,136 @@ msgstr "U hebt nieuwe post in $_"
msgid "The mail in %s has been read\n"
msgstr "De post in %s is gelezen.\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "syntaxfout: een rekenkundige uitdrukking is vereist"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "syntaxfout: onverwachte ';'"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "syntaxfout: '((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document(): ongeldig instructietype %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "regel %d van \"hier\"-document eindigt met einde van bestand (verwachtte '%s')"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc(): lengte van invoerregel (%zu) overschrijdt SIZE_MAX (%lu): regel is afgekapt"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "maximum aantal \"hier\"-documenten is overschreden"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "syntaxfout in conditionele expressie"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "onverwacht symbool '%s'; ')' werd verwacht"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "')' werd verwacht"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "onverwacht argument bij eenzijdige conditionele operator"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "tweezijdige conditionele operator werd verwacht"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "onverwacht argument bij tweezijdige conditionele operator"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "onverwacht symbool '%c' in conditionele opdracht"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "onverwacht symbool '%s' in conditionele opdracht"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "onverwacht symbool %d in conditionele opdracht"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntaxfout nabij onverwacht symbool '%s'"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "syntaxfout nabij '%s'"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "syntaxfout: onverwacht bestandseinde"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "syntaxfout"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Gebruik \"%s\" om de shell te verlaten.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'"
@@ -1642,94 +1652,94 @@ msgstr "xtrace_set(): bestandspointer is NIL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace-bestandsdescriptor (%d) != bestandsnummer van xtrace-bestandspointer (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf(): '%c': ongeldig opmaakteken"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "bestandsdescriptor valt buiten bereik"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: omleiding is niet eenduidig"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: kan bestaand bestand niet overschrijven"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "kan geen tijdelijk bestand maken voor \"hier\"-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "Kan /tmp niet vinden; maak deze aan!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp dient een geldige mapnaam te zijn"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "pretty-printing-modus wordt genegeerd in interactieve shells"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: ongeldige optie"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "kan UID niet op %d instellen; effectieve UID is %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "kan GID niet op %d instellen; effectieve GID is %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "kan debugger niet starten; debugging-modus is uitgeschakeld"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: is een map"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Ik heb geen naam!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versie %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1738,320 +1748,320 @@ msgstr ""
"Gebruik: %s [opties]\n"
" %s [opties] scriptbestand...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Lange opties:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Korte opties:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD, of -c OPDRACHT, of -O SHOPT-OPTIE (enkel bij aanroep)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s, of -o optie (veranderbaar via 'set')\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Typ '%s -c \"help set\"' voor meer informatie over shell-opties.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Typ '%s -c help' voor meer informatie over ingebouwde shell-functies.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Gebruik de opdracht 'bashbug' om fouten in bash te rapporteren.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Webpagina van 'bash': <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask(): %d: ongeldige operatie"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Niet-bestaand signaal"
# Vroeger ging dit over het afsluiten van een modemverbinding,
# tegenwoordig over het afsluiten van een pseudoterminal.
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Opgehangen"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Onderbroken"
# Verleden tijd, "Afgesloten", net als de andere actiesignaalnamen.
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Afgesloten"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Ongeldige instructie"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Traceer/breekpunt-instructie"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT-instructie"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "EMT-instructie"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Drijvendekomma-berekeningsfout"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Geëlimineerd"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Busfout"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Segmentatiefout"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Onjuiste systeemaanroep"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Gebroken pijp"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Wekker"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Beëindigd"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Urgente in-/uitvoertoestand"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Gepauzeerd (signaal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Doorgaan"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Dochter is geëlimineerd of gestopt"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Gepauzeerd (terminalinvoer)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Gepauzeerd (terminaluitvoer)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O is mogelijk"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU-limiet"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Bestandslimiet"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (virtueel)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profiel)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Venster is veranderd"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Recordvergrendeling"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Gebruikerssignaal 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Gebruikerssignaal 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT-invoergegevens staan te wachten"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "stroomstoring dreigt"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "systeemcrash dreigt"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "proces naar andere processor verplaatsen"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "programmeerfout"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT-monitormodus is gegeven"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT-monitormodus is herroepen"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT-geluidssequentie is afgespeeld"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Verzoek om informatie"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Onbekend signaal #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "ongeldige vervanging: geen sluit-'%s' in %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: kan geen lijst toewijzen aan een array-element"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "kan geen pijp maken voor procesvervanging"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "kan geen dochterproces maken voor procesvervanging"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "kan pijp genaamd %s niet openen om te lezen"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "kan pijp genaamd %s niet openen om te schrijven"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "opdrachtsubstitutie: null-byte in invoer is genegeerd"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "kan geen pijp maken voor opdrachtvervanging"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "kan geen dochterproces maken voor opdrachtvervanging"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: ongeldige variabelenaam voor naamsverwijzing"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: ongeldige indirecte expansie"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: ongeldige variabelenaam"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter is niet ingesteld"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: lege parameter, of niet ingesteld"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: ongeldige vervanging"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: kan niet op deze manier toewijzen"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "toekomstige versies van de shell zullen dit als een rekenkundige vervanging evalueren"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "ongeldige vervanging: geen afsluitende '`' in %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "geen overeenkomst: %s"
@@ -2074,21 +2084,21 @@ msgstr "')' werd verwacht"
msgid "`)' expected, found %s"
msgstr "')' werd verwacht; %s gevonden"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "tweezijdige operator werd verwacht, %s gevonden"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "eenzijdige operator werd verwacht, %s gevonden"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "ontbrekende ']'"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "syntaxfout: onverwachte '%s'"
@@ -2097,99 +2107,104 @@ msgstr "syntaxfout: onverwachte '%s'"
msgid "invalid signal number"
msgstr "ongeldig signaalnummer"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "trap handler: maximum 'trap-handler'-niveau is overschreden (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps(): ongeldige waarde in trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: signaalverwerker is SIG_DFL, herzenden van %d (%s) aan mezelf..."
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler(): ongeldig signaal %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "fout tijdens importeren van functiedefinitie voor '%s'"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "shell-niveau is te hoog (%d); teruggezet op 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: aan variabele mag geen waarde toegewezen worden"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: kan geen waarde overerven van incompatibel type"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: toekenning van geheel getal aan naamsverwijzing"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "*** %s heeft lege export-tekenreeks"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "*** ongeldig teken '%d' in export-tekenreeks voor %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "*** geen '=' in export-tekenreeks voor %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context(): top van 'shell_variables' is geen functiecontext"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context(): er is geen 'global_variables'-context"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope(): top van 'shell_variables' is geen tijdelijk geldigheidsbereik"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: Kan %s niet openen als BESTAND"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: compatibiliteitswaarde valt buiten bereik"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2276,12 +2291,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] OPDRACHT [ARGUMENT...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [NAAM[=WAARDE] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [NAAM[=WAARDE] ...] of declare -p [-aAfFilnrtux] [NAAM ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] NAAM[=WAARDE]..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] NAAM[=WAARDE] ... of typeset -p [-aAfFilnrtux] [NAAM ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2375,8 +2390,8 @@ msgid "return [n]"
msgstr "return [N]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [--abefhkmnptuvxBCHP] [-o OPTIENAAM] [--] [ARGUMENT...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o OPTIENAAM] [--] [-] [ARGUMENT...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2423,8 +2438,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] NAAM..."
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [GRENSWAARDE]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [GRENSWAARDE]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2463,12 +2478,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if OPDRACHTEN; then OPDRACHTEN; [elif OPDRACHTEN; then OPDRACHTEN;]... [else OPDRACHTEN;] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while OPDRACHTEN; do OPDRACHTEN; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while OPDRACHTEN; do OPDRACHTEN2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until OPDRACHTEN; do OPDRACHTEN; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until OPDRACHTEN; do OPDRACHTEN2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3747,7 +3762,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3789,8 +3805,11 @@ msgstr ""
" als optie '-u' gegeven is) en wijst het eerste woord aan de eerste NAAM toe,\n"
" het tweede woord aan de tweede NAAM, en zo verder; de resterende woorden\n"
" worden toegewezen aan de laatste NAAM. Alleen de tekens in de variabele\n"
-" IFS worden herkend als woordscheidingstekens. Als er geen namen gegeven\n"
-" zijn, dan wordt de gelezen regel opgeslagen in de variabele REPLY.\n"
+" IFS worden herkend als woordscheidingstekens. Standaard ontdoet een\n"
+" backslash scheidingstekens en het nieuweregelteken van hun betekenis.\n"
+"\n"
+" Als er geen namen gegeven zijn, dan wordt de gelezen regel opgeslagen in\n"
+" de variabele REPLY.\n"
"\n"
" Opties:\n"
" -a ARRAY de gelezen woorden toekennen aan de opeenvolgende posities\n"
@@ -3819,7 +3838,7 @@ msgstr ""
" de tijdslimiet overschreden werd, er een toekenningsfout optrad, of een\n"
" ongeldige bestandsdescriptor als argument van '-u' gegeven werd."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3840,7 +3859,7 @@ msgstr ""
" uitvoeren is."
# Voor de duidelijkheid is de tekstvolgorde veranderd.
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4000,7 +4019,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4037,7 +4056,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een\n"
" NAAM alleen-lezen is."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4069,7 +4088,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4106,7 +4125,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4123,7 +4142,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0 tenzij N negatief is of groter dan $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4146,7 +4165,7 @@ msgstr ""
" De afsluitwaarde is die van de laatst uitgevoerde opdracht in het gegeven\n"
" bestand, of 1 als dit bestand niet gelezen kan worden."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4171,7 +4190,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij taakbeheer uitgeschakeld is of er een fout\n"
" optreedt."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4313,7 +4332,7 @@ msgstr ""
" De afsluitwaarde is 0 als EXPRESSIE waar is, 1 als EXPRESSIE onwaar is,\n"
" en 2 als een ongeldig argument gegeven werd."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4325,7 +4344,7 @@ msgstr ""
" Dit is een synoniem voor de ingebouwde functie 'test', behalve dat\n"
" het laatste argument een ']' moet zijn, horend bij de begin-'['."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4343,7 +4362,7 @@ msgstr ""
"\n"
" De afsluitwaarde is altijd 0."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4412,7 +4431,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie of SIGNAALAANDUIDING\n"
" gegeven werd."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4463,7 +4482,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4557,7 +4576,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er een\n"
" fout optrad."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4589,7 +4608,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij MODUS ongeldig is of een ongeldige optie\n"
" gegeven werd."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4640,7 +4659,7 @@ msgstr ""
" of als een ongeldige optie gegeven werd, of als '-n' gegeven werd maar de\n"
" shell geen dochters heeft waarop gewacht wordt."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4662,7 +4681,7 @@ msgstr ""
" De afsluitwaarde is die van de laatste PID, 1 als PID ongeldig is,\n"
" of 2 als een ongeldige optie gegeven werd."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4683,7 +4702,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4710,7 +4729,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4747,7 +4766,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4772,9 +4791,10 @@ msgstr ""
" De uitvoer kan via de omgevingsvariabele TIMEFORMAT aangepast worden.\n"
" Optie '-p' negeert deze omgevingsvariabele en toont de tijden in een\n"
" overdraagbare standaardopmaak.\n"
+"\n"
" De afsluitwaarde is die van de PIJPLIJN."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4792,7 +4812,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4820,41 +4840,41 @@ msgstr ""
" De afsluitwaarde van de gehele opdracht is die van de laatst uitgevoerde\n"
" deelopdracht, of nul als geen enkele 'if' of 'elif' nul opleverde."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Opdrachten uitvoeren zolang een test slaagt.\n"
"\n"
-" Voert de gegeven opdrachten uit zolang de laatste opdracht achter\n"
-" 'while' een afsluitwaarde van 0 heeft.\n"
+" Voert de tweede reeks opdrachten uit zolang de laatste opdracht van\n"
+" de eerste reeks een afsluitwaarde van 0 heeft.\n"
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Opdrachten uitvoeren zolang een test niet slaagt.\n"
"\n"
-" Voert de gegeven opdrachten uit zolang de laatste opdracht achter\n"
-" 'until' een afsluitwaarde ongelijk aan 0 heeft.\n"
+" Voert de tweede reeks opdrachten uit zolang de laatste opdracht van\n"
+" de eerste reeks een afsluitwaarde ongelijk aan 0 heeft.\n"
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4875,7 +4895,7 @@ msgstr ""
"\n"
" De afsluitwaarde van coproc is 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4896,7 +4916,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0, tenzij NAAM onveranderbaar is."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4913,7 +4933,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4937,7 +4957,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de hervatte taak."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4954,7 +4974,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 1 als de EXPRESSIE tot 0 evalueert; anders 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5000,7 +5020,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0 of 1, afhankelijk van EXPRESSIE."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5098,7 +5118,7 @@ msgstr ""
" vervangingsteken, gewoonlijk '^'; het derde teken is het\n"
" geschiedeniscommentaarteken, gewoonlijk '#'\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5151,7 +5171,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n"
" mapwijziging mislukte."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5200,7 +5220,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n"
" mapwijziging mislukte."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5249,7 +5269,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er een\n"
" fout optrad."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5288,7 +5308,7 @@ msgstr ""
" een ongeldige optienaam gegeven werd, en de afsluitwaarde is 2 als een\n"
" ongeldige optie gegeven werd."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5307,6 +5327,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5336,8 +5358,10 @@ msgstr ""
" betekent %b dat de backslash-stuurtekens in het betreffende argument\n"
" omgezet moeten worden, en betekent %q dat het argument op zo'n manier\n"
" aangehaald moet worden dat het als invoer voor de shell hergebruikt\n"
-" kan worden. Verder betekent %(OPMAAK)T dat datum-plus-tijd getoond\n"
-" moet worden door deze opmaak aan strftime(3) mee te geven.\n"
+" kan worden. %Q is als %q, maar een precisie wordt toegepast op het\n"
+" onaangehaalde argument vóór het aanhalen. Verder betekent %(OPMAAK)T\n"
+" dat datum-plus-tijd getoond moet worden door deze opmaak aan strftime(3)\n"
+" mee te geven.\n"
"\n"
" De gegeven opmaak wordt zo vaak hergebruikt als nodig is om alle argumenten\n"
" te consumeren. Als er minder argumenten zijn dan de opmaak verwacht, dan\n"
@@ -5347,7 +5371,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er een\n"
" schrijf- of toekenningsfout optrad."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5397,7 +5421,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er\n"
" een fout optrad."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5417,7 +5441,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er een\n"
" fout optrad."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5469,7 +5493,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of voor\n"
" NAAM geen completeringsvoorschrift gedefinieerd is."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5532,7 +5556,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij ARRAY alleen-lezen is of geen array is, of\n"
" een ongeldige optie gegeven werd."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5542,6 +5566,9 @@ msgstr ""
"\n"
" Een synoniem voor 'mapfile'."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: ongeldige sleutel voor associatief array"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/pl.gmo b/po/pl.gmo
index 29d20db9..4adbed02 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 338b8bcf..b8bd94a5 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,15 +1,15 @@
# Polish translation of bash
-# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2022 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# Andrzej M. Krzysztofowicz <ankry@mif.pg.gda.pl> 2006,2007.
-# Jakub Bogusz <qboosh@pld-linux.org> 2010-2020.
+# Jakub Bogusz <qboosh@pld-linux.org> 2010-2022.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.1\n"
+"Project-Id-Version: bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-07 21:15+0100\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-19 22:15+0200\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
@@ -23,58 +23,53 @@ msgstr ""
msgid "bad array subscript"
msgstr "nieprawidłowy indeks tablicy"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: usuwanie atrybutu nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: nie można przekształcić tablicy indeksowanej na asocjacyjną"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: błędny klucz tablicy asocjacyjnej"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: nie można przypisać do nienumerycznego indeksu"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: przy przypisaniu do tablicy asocjacyjnej należy użyć nawiasów"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nie można utworzyć: %s"
# ???
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: nie można znaleźć mapy klawiszy dla polecenia"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "brak zamykajÄ…cego `%c' w %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: brak separujÄ…cego dwukropka"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "`%s': nie można usunąć dowiązania w mapie poleceń"
@@ -94,7 +89,7 @@ msgstr "rozwijanie nawiasów: nie udaÅ‚o siÄ™ przydzielić pamiÄ™ci dla elementÃ
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "rozwijanie nawiasów: nie udało się przydzielić pamięci dla `%s'"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': błędna nazwa aliasu"
@@ -167,7 +162,7 @@ msgstr ""
msgid "HOME not set"
msgstr "Nie ustawiono HOME"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "za dużo argumentów"
@@ -194,7 +189,7 @@ msgstr "uwaga: "
msgid "%s: usage: "
msgstr "%s: składnia: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: opcja wymaga argumentu"
@@ -209,7 +204,7 @@ msgstr "%s: wymagany argument numeryczny"
msgid "%s: not found"
msgstr "%s: nie znaleziono"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: nieprawidłowa opcja"
@@ -219,7 +214,7 @@ msgstr "%s: nieprawidłowa opcja"
msgid "%s: invalid option name"
msgstr "%s: nieprawidłowa nazwa opcji"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': nieprawidłowy identyfikator"
@@ -232,7 +227,7 @@ msgstr "błędna liczba ósemkowa"
msgid "invalid hex number"
msgstr "błędna liczba szesnastkowa"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "nieprawidłowa liczba"
@@ -246,88 +241,93 @@ msgstr "%s: nieprawidłowo określony sygnał"
msgid "`%s': not a pid or valid job spec"
msgstr "`%s': nie jest to nr PID ani prawidłowe określenie zadania"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: zmienna tylko do odczytu"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: nie można przypisać"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s poza zakresem"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s poza zakresem"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: brak takiego zadania"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: brak kontroli zadań"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "brak kontroli zadań"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: ograniczony"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "ograniczony"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: nie jest to polecenie powłoki"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "błąd zapisu: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "błąd podczas ustawiania atrybutów terminala: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "błąd podczas pobierania atrybutów terminala: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: błąd przy określaniu katalogu bieżącego: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: niejednoznaczne określenie zadania"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "pomoc nie jest dostępna w tej wersji"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: nie można anulować definicji: %s jest tylko do odczytu"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: nie można anulować definicji"
@@ -337,108 +337,108 @@ msgstr "%s: nie można anulować definicji"
msgid "%s: invalid action name"
msgstr "%s: nieprawidłowa nazwa akcji"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: brak definicji dla uzupełnienia"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "uwaga: opcja -F może działać inaczej niż oczekiwano"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "uwaga: opcja -C może działać inaczej niż oczekiwano"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "aktualnie nie jest wykonywana funkcja dopełniania"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "można używać tylko w funkcji"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "nie można używać `-f' do tworzenia funkcji"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funkcja tylko do odczytu"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: zmienna referencyjna nie może być tablicą"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: zmienna referencyjna nie może wskazywać na siebie"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: cykliczne odwołanie do nazwy"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': błędna nazwa zmiennej przy odwołaniu do nazwy"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "nie można używać `-f' do tworzenia funkcji"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: funkcja tylko do odczytu"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: przypisanie złożonej tablicy z cytowaniem jest przestarzałe"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: nie można w ten sposób unicestwić zmiennej tablicowej"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: nie można przekształcić tablicy asocjacyjnej na indeksowaną"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: przypisanie złożonej tablicy z cytowaniem jest przestarzałe"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "ładowanie dynamiczne nie jest dostępne"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "nie można otworzyć obiektu współdzielonego %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "nie można znaleźć %s w obiekcie współdzielonym %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: dynamiczne polecenie wbudowane już załadowane"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "funkcja ładująca dla %s zwraca niepowodzenie (%d): nie załadowano"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nie jest Å‚adowany dynamicznie"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nie można usunąć: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: jest katalogiem"
@@ -453,7 +453,7 @@ msgstr "%s: nie jest zwykłym plikiem"
msgid "%s: file is too large"
msgstr "%s: plik jest za duży"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: nie można uruchomić pliku binarnego"
@@ -551,12 +551,12 @@ msgstr ""
"żaden temat pomocy nie pasuje do `%s'. Spróbuj `help help', `man -k %s'\n"
"lub `info %s'."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: nie można otworzyć: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -577,21 +577,21 @@ msgstr ""
"Gwiazdka (*) po nazwie oznacza, że dane polecenie jest wyłączone.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "nie można używać więcej niż jednego spośród -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "pozycja historii"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: nieprawidłowy znacznik czasu"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: rozwinięcie wg historii nie powiodło się"
@@ -614,78 +614,78 @@ msgstr "%s: argumentami muszą być numery procesów lub zadań"
msgid "Unknown error"
msgstr "Nieznany błąd"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "spodziewano się wyrażenia"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: nie jest tablicÄ… indeksowanÄ…"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: nieprawidłowo określony deskryptor pliku"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: nieprawidłowy deskryptor pliku: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: błędna liczba linii"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: błędny początek tablicy"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: błędna liczba linii między wywołaniami"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "pusta nazwa zmiennej tablicowej"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "wymagana obsługa zmiennych tablicowych"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': brak znaku formatujÄ…cego"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': błędne określenie formatu czasu"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': nieprawidłowy znak formatujący"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "uwaga: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "problem z analizÄ… formatu: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "brak cyfry szesnastkowej dla \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "brak cyfry unikodowej dla \\%c"
@@ -834,12 +834,12 @@ msgstr ""
" \n"
" Zawartość stosu katalogów można zobaczyć za pomocą polecenia `dirs'."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: nieprawidłowo określony limit czasu"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "błąd odczytu: %d: %s"
@@ -852,7 +852,7 @@ msgstr "wyjście przez `return' możliwe tylko z funkcji lub skryptu"
msgid "cannot simultaneously unset a function and a variable"
msgstr "nie można jednocześnie anulować definicji funkcji i zmiennej"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: nie jest zmiennÄ… tablicowÄ…"
@@ -871,11 +871,11 @@ msgstr "%s: nie można wyeksportować"
msgid "shift count"
msgstr "licznik przesunięcia"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "nie można opcji powłoki jednocześnie ustawić i unieważnić"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nieprawidłowa nazwa opcji powłoki"
@@ -942,16 +942,16 @@ msgstr "%s: nieprawidłowy argument stanowiący ograniczenie"
msgid "`%c': bad command"
msgstr "`%c': złe polecenie"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nie można odczytać ograniczenia: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "ograniczenie"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nie można zmienić ograniczenia: %s"
@@ -970,7 +970,7 @@ msgstr "`%c': nieprawidłowy operator trybu symbolicznego"
msgid "`%c': invalid symbolic mode character"
msgstr "`%c': nieprawidłowy znak trybu symbolicznego"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " linia "
@@ -990,96 +990,106 @@ msgstr "Przerywanie..."
msgid "INFORM: "
msgstr "INFORM: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "DIAGNOSTYCZNE ostrzeżenie: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "nieznany błąd polecenia"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "zły rodzaj polecenia"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "zły łącznik"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "zły skok"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: nieustawiona zmienna"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aprzekroczony czas oczekiwania na dane wejściowe: auto-wylogowanie\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "nie można przekierować standardowego wejścia z /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': nieprawidłowy znak formatujący"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: koproces [%d:%s] nadal istnieje"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "błąd potoku"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: przekroczono maksymalny poziom zagnieżdżenia polecenia eval (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia polecenia source (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia funkcji (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ograniczony: nie można podawać `/' w nazwach poleceń"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: nie znaleziono polecenia"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: nie można uruchomić: nie znaleziono wymaganego pliku"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: zły interpreter"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: nie można uruchomić pliku binarnego: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s' jest specjalnym poleceniem wewnętrznym"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nie można skopiować deskryptora pliku %d do %d"
@@ -1092,69 +1102,69 @@ msgstr "przekroczone ograniczenie poziomu rekursji dla wyrażenia"
msgid "recursion stack underflow"
msgstr "niedomiar stosu rekursji"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "błąd składniowy w wyrażeniu"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "próba przypisania do nie-zmiennej"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "błąd składniowy w przypisaniu zmiennej"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "dzielenie przez 0"
# ???
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "błąd: zły prefiks operatora przypisującego"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "spodziewano się `:' w wyrażeniu warunkowym"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "wykładnik mniejszy niż 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "brakujÄ…cy `)'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "błąd składni: spodziewany argument"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "błąd składni: nieprawidłowy operator arytmetyczny"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (błędny znacznik to \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "nieprawidłowa podstawa arytmetyczna"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "błędna stała całkowita"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "wartość za duża na podstawę"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: błąd w wyrażeniu\n"
@@ -1163,7 +1173,7 @@ msgstr "%s: błąd w wyrażeniu\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: niemożliwy dostęp do katalogów nadrzędnych"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nie można wyłączyć trybu nieblokującego dla deskryptora %d"
@@ -1182,168 +1192,168 @@ msgstr "save_bash_input: bufor dla nowego deskryptora %d już istnieje"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: PĘTLA: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: PĘTLA: psi (%d) == storage[psi].bucket_next"
# ???
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "proces o PID %d występuje w działającym zadaniu %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "usuwanie zatrzymanego zadania %d z grupą procesów %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) oznaczony jako nadal żywy"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: brak takiego PID-u"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Sygnał %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Zakończono"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Zatrzymano"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Zatrzymano(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Działa"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Zakończono(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Kod wyjścia %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Stan nieznany"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(zrzut pamięci) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (katalog: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid potomka (%ld na %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: PID %ld nie jest potomkiem tej powłoki"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Brak rekordu dla procesu %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: zadanie %d jest zatrzymane"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: brak bieżących zadań"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: zadanie zostało przerwane"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: zadanie %d już pracuje w tle"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: wyłączanie WNOHANG w celu uniknięcia nieskończonego oczekiwania"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: linia %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (zrzut pamięci)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(katalog: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp nie powiodło się"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: brak kontroli zadań w tle"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: dyscyplina linii"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nie można ustawić grupy procesów terminala (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "w tej powłoce nie ma kontroli zadań"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: założenie, że %s nie jest spełnione\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1352,48 +1362,48 @@ msgstr ""
"\r\n"
"malloc: %s:%d: spartaczone założenie\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "nieznany"
# ???
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: nieprawidłowy blok na liście wolnych bloków"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: wywołane dla bloku, który już został zwolniony"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: wywołane dla bloku, który nie został przydzielony"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: wykryto niedomiar; uszkodzenie magic8"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: rozmiar początkowy i końcowy fragmentu są różne"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: wywołane dla bloku, który nie został przydzielony"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: wykryto niedomiar; uszkodzenie magic8"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: rozmiar początkowy i końcowy fragmentu są różne"
@@ -1435,22 +1445,22 @@ msgstr "%s: źle określona ścieżka sieciowa"
msgid "network operations not supported"
msgstr "operacje sieciowe nie sÄ… wspierane"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: nie można zmienić lokalizacji (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: nie można zmienić lokalizacji (%s): %s"
@@ -1468,136 +1478,136 @@ msgstr "Masz nowÄ… pocztÄ™ w $_"
msgid "The mail in %s has been read\n"
msgstr "Poczta w %s jest przeczytana\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "błąd składni: oczekiwano wyrażenia arytmetycznego"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "błąd składni: oczekiwany `;'"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "błąd składni: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: zły rodzaj instrukcji %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "dokument miejscowy w linii %d ograniczony końcem pliku (oczekiwano `%s')"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc: shell_input_line_size (%zu) przekracza SIZE_MAX (%lu): linia skrócona"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "przekroczono maksymalną liczbę dokumentów w miejscu"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `%c'"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "nieoczekiwany EOF podczas poszukiwania `]]'"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "błąd składni w wyrażeniu warunkowym: nieoczekiwany znacznik `%s'"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "błąd składni w wyrażeniu warunkowym"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "oczekiwano `)'"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "oczekiwano dwuargumentowego operatora warunkowego"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "błąd składni przy nieoczekiwanym znaczniku `%s'"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "błąd składni przy `%s'"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "błąd składni: nieoczekiwany koniec pliku"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "błąd składni"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Użyj \"%s\", aby opuścić tę powłokę.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `)'"
@@ -1635,94 +1645,94 @@ msgstr "xtrace_set: pusty wskaźnik pliku"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': nieprawidłowy znak formatujący"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "deskryptor pliku poza zakresem"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: niejednoznaczne przekierowanie"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: nie można nadpisać istniejącego pliku"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ograniczony: nie można przekierować wyjścia"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "nie można utworzyć pliku tymczasowego dla dokumentu miejscowego: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: nie można przypisać deskryptora pliku do zmiennej"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port nie sÄ… wspierane bez sieci"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "błąd przekierowania: nie można powielić deskryptora pliku"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "nie można znaleźć /tmp, proszę o utworzenie!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp musi być prawidłową nazwą katalogu"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "tryb ładnego wypisywania jest ignorowany w powłokach interaktywnych"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: nieprawidłowa opcja"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "nie można ustawić uid-a na %d: efektywny uid %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "nie można ustawić gid-a na %d: efektywny gid %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "nie można uruchomić debuggera; tryb diagnostyczny wyłączony"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: jest katalogiem"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Nie mam nazwy!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, wersja %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1731,319 +1741,319 @@ msgstr ""
"Użycie:\t%s [długa opcja GNU] [opcja] ...\n"
"\t%s [długa opcja GNU] [opcja] plik-skryptu ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "DÅ‚ugie opcje GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Opcje powłoki:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD lub -c polecenie lub -O shopt_option\t\t(tylko wywołanie)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s lub -o opcja\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Aby uzyskać więcej informacji o opcjach powłoki, napisz `%s -c \"help set\"'.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Aby uzyskać więcej informacji o poleceniach wewnętrznych powłoki,\n"
"napisz `%s -c help'.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Do zgłaszania błędów należy używać polecenia `bashbug'.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "strona domowa basha: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: nieprawidłowa operacja"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Błędny sygnał"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Rozłączenie"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Przerwanie"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Wyjście"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Niedozwolona instrukcja"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Pułapka debuggera/breakpoint"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Instrukcja ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Pułapka EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "BÅ‚Ä…d w obliczeniach zmiennoprzecinkowych"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Unicestwiony"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "BÅ‚Ä…d szyny"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Naruszenie ochrony pamięci"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Błędne wywołanie systemowe"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Przerwany potok"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Budzik"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Zakończony"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Nagłe żądanie we/wy"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Zatrzymany (sygnał)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Kontynuacja"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Śmierć lub zatrzymanie potomka"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Zatrzymany (wejście z tty)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Zatrzymany (wyjście na tty)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "We/wy gotowe"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Przekroczony limit procesora"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Przekroczony limit pliku"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (wirtualny)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profiler)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Okno zmienione"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Zasoby utracone"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Sygnał użytkownika 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Sygnał użytkownika 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Dane wejściowe HFT"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "Bliska awaria zasilania"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "Bliska awaria systemu"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "Przeniesienie procesu na inny procesor"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "BÅ‚Ä…d programowania"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "Nadany tryb monitora HFT"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "Wycofany tryb monitora HFT"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "Sekwencja dźwiękowa HFT zakończona"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Żądanie informacji"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Nieznany sygnał #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "złe podstawienie: brak zamykającego `%s' w %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: nie można przypisać listy do elementu tablicy"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "nie można utworzyć potoku dla podstawienia procesu"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "nie można utworzyć procesu potomnego dla podstawienia procesu"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nie można otworzyć nazwanego potoku %s do odczytu"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "nie można otworzyć nazwanego potoku %s do zapisu"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "nie można powielić nazwanego potoku %s jako deskryptor %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "podstawienie polecenia: zignorowano zerowy bajt na wejściu"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "nie można utworzyć potoku dla podstawienia polecenia"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "nie można utworzyć procesu potomnego dla podstawienia polecenia"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: nie można powielić potoku jako deskryptora 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: błędne rozwinięcie niebezpośrednie"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "`%s': błędna nazwa zmiennej"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parametr nieustawiony"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametr pusty lub nieustawiony"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: wyrażenie dla podłańcucha < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: złe podstawienie"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: nie można przypisywać w ten sposób"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "przyszłe wersje powłoki będą wymuszać obliczenie jako podstawienie arytmetyczne"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "złe podstawienie: brak zamykającego \"`\" w %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "brak pasujÄ…cego: %s"
@@ -2066,21 +2076,21 @@ msgstr "oczekiwano `)'"
msgid "`)' expected, found %s"
msgstr "oczekiwano `)', znaleziono %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: oczekiwano operatora dwuargumentowego"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: oczekiwano operatora jednoargumentowego"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "brakujÄ…cy `]'"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "błąd składni: oczekiwano `%s'"
@@ -2089,99 +2099,104 @@ msgstr "błąd składni: oczekiwano `%s'"
msgid "invalid signal number"
msgstr "nieprawidłowy numer sygnału"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "obsługa pułapki: przekroczono maksymalny poziom obsługi pułapek (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: zła wartość trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: obsługa sygnału jest ustawiona na SIG_DFL, wysyłając %d (%s) do siebie"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: zły sygnał %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "błąd importu definicji funkcji dla `%s'"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "poziom powłoki (%d) jest za duży, ustawiono na 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: brak kontekstu funkcji w bieżącym zakresie"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: nie można przypisać wartości do zmiennej"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: nie można odziedziczyć wartości z niezgodnego typu"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: przypisanie wartości całkowitej przy odwołaniu do nazwy"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: brak kontekstu funkcji w bieżącym zakresie"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s ma pusty exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "nieprawidłowy znak %d w exportstr dla %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "brak `=' w exportstr dla %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: nagłówek shell_variables poza kontekstem funkcji"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: brak kontekstu global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: nagłówek shell_variables poza zakresem tymczasowego środowiska"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nie można otworzyć jako PLIK"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: nieprawidłowa wartość dla deskryptora pliku do śledzenia"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: wartość zgodności poza zakresem"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2261,12 +2276,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] polecenie [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [nazwa[=wartość] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [nazwa[=wartość] ...] lub declare -p [-aAfFilnrtux] [nazwa ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] nazwa[=wartość] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] nazwa[=wartość] ... lub typeset -p [-aAfFilnrtux] [nazwa ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2353,8 +2368,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o nazwa-opcji] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o nazwa-opcji] [--] [-] [arg ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2401,8 +2416,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] nazwa [nazwa ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ograniczenie]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [ograniczenie]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2441,12 +2456,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if POLECENIA; then POLECENIA; [ elif POLECENIA; then POLECENIA; ]... [ else POLECENIA; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while POLECENIA; do POLECENIA; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while POLECENIA; do POLECENIA-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until POLECENIA; do POLECENIA; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until POLECENIA; do POLECENIA-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3771,7 +3786,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3813,7 +3829,8 @@ msgstr ""
" podano opcję -u). Wiersz jest dzielony na pola wg reguł podziału na słowa,\n"
" pierwsze słowo jest przypisywane pierwszej NAZWIE, drugie - drugiej NAZWIE\n"
" itd.; wszystkie pozostałe słowa są przypisywane ostatniej NAZWIE. Jako\n"
-" ograniczniki słów są rozpoznawane tylko znaki ze zmiennej $IFS.\n"
+" ograniczniki słów są rozpoznawane tylko znaki ze zmiennej $IFS. Domyślnie\n"
+" znak odwrotnego ukośnika chroni znaki ograniczników i nowej linii.\n"
" \n"
" Jeśli nie podano NAZW, odczytany wiersz jest zapisywany w zmiennej REPLY.\n"
" \n"
@@ -3849,7 +3866,7 @@ msgstr ""
" błąd przypisania zmiennej albo podano nieprawidłowy deskryptor dla\n"
" argumentu -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3870,7 +3887,7 @@ msgstr ""
" Zwracane jest N lub niepowodzenie, jeśli powłoka nie wykonuje żadnej\n"
" funkcji ani skryptu."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4041,7 +4058,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano nieprawidłową opcję."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4080,7 +4097,7 @@ msgstr ""
" Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA jest tylko do\n"
" odczytu."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4113,7 +4130,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4151,7 +4168,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4169,7 +4186,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że N jest ujemne lub większe niż $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4193,7 +4210,7 @@ msgstr ""
" Zwracany jest stan ostatnio wykonanego polecenia z PLIKU lub błąd, jeśli\n"
" PLIKU nie udało się odczytać."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4219,7 +4236,7 @@ msgstr ""
" Zwracana jest prawda, chyba że kontrola zadań jest wyłączona lub wystąpi\n"
" błąd."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4384,7 +4401,7 @@ msgstr ""
" Zwracana jest prawda, jeśli wartością WYRAŻENIA jest prawda; fałsz, gdy\n"
" wartością WYRAŻENIA jest fałsz lub podano błędny argument."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4396,7 +4413,7 @@ msgstr ""
" Jest to synonim dla wbudowanego polecenia \"test\", ale wymagajÄ…cy, by\n"
" ostatnim argumentem był `]' pasujący do początkowego `['."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4414,7 +4431,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zawsze prawda."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4483,7 +4500,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędny SYGNAŠlub błędną opcję."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4538,7 +4555,7 @@ msgstr ""
" Zwracana jest prawda, jeśli każda NAZWA zostanie znaleziona; fałsz, jeśli\n"
" którakolwiek nie zostanie znaleziona."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4631,7 +4648,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4665,7 +4682,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędną opcję."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4715,7 +4732,7 @@ msgstr ""
" Zwracany jest stan zakończenia ID; niepowodzenie, jeśli ID jest\n"
" nieprawidłowe lub podano błędną opcję."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4738,7 +4755,7 @@ msgstr ""
" Zwracany jest status ID lub niepowodzenie, jeśli ID jest błędny lub podano\n"
" nieprawidłową opcję."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4759,7 +4776,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4788,7 +4805,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4822,7 +4839,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4851,7 +4868,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Polecenie zwraca status zakończenia POTOKU poleceń."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4869,7 +4886,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4899,43 +4916,43 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Wykonywanie poleceń dopóki test kończy się powodzeniem.\n"
" \n"
-" Rozwijanie i uruchamianie POLECEŃ dopóki ostatnie polecenie\n"
-" w POLECENIACH `while' kończy się z kodem zero.\n"
+" Rozwijanie i uruchamianie POLECEŃ-2 dopóki ostatnie polecenie\n"
+" w POLECENIACH kończy się z kodem zerowym.\n"
" \n"
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Wykonywanie poleceń dopóki test nie kończy się powodzeniem.\n"
" \n"
-" Rozwijanie i uruchamianie POLECEŃ dopóki ostatnie polecenie\n"
-" w POLECENIACH `until' kończy się z kodem niezerowym.\n"
+" Rozwijanie i uruchamianie POLECEŃ-2 dopóki ostatnie polecenie\n"
+" w POLECENIACH kończy się z kodem niezerowym.\n"
" \n"
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4956,7 +4973,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Polecenie coproc zwraca status wyjścia 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4978,7 +4995,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest sukces, chyba że NAZWA jest tylko do odczytu."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4996,7 +5013,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5019,7 +5036,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest stan wznowionego zadania."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5037,7 +5054,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracane jest 1, jeśli wartością WYRAŻENIA jest 0; 0 w przeciwnym wypadku."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5086,7 +5103,7 @@ msgstr ""
" Stan wyjściowy:\n"
" 0 lub 1 w zależności od wartości WYRAŻENIA."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5193,7 +5210,7 @@ msgstr ""
" \t\tdecydowaniu, które polecenia powinny być zapisywane na liście\n"
" \t\thistorii.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5249,7 +5266,7 @@ msgstr ""
" Zwracana jest prawda, chyba że podano błędny argument lub zmiana katalogu\n"
" siÄ™ nie powiedzie."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5300,7 +5317,7 @@ msgstr ""
" Zwracana jest prawda, chyba że podano błędny argument lub zmiana katalogu\n"
" siÄ™ nie powiedzie."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5353,7 +5370,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5389,7 +5406,7 @@ msgstr ""
" Zwracana jest prawda jeśli NAZWA-OPCJI jest włączona; niepowodzenie, jeśli\n"
" podano błędną opcję lub NAZWA-OPCJI jest wyłączona."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5408,6 +5425,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5439,6 +5458,7 @@ msgstr ""
" \t\targumencie\n"
" %q\tcytowanie argumentu w sposób umożliwiający użycie na wejściu\n"
" \t\tpowłoki\n"
+" %Q\tjak %q, ale zastosowanie precyzji na wejściu przed cytowaniem\n"
" %(fmt)T\twypisanie łańcucha daty-czasu otrzymanego z użycia FMT jako\n"
" \t łańcucha formatującego dla strftime(3)\n"
" \n"
@@ -5451,7 +5471,7 @@ msgstr ""
" Zwracana jest prawda, chyba że podano błędną opcję lub zapis albo\n"
" przypisanie zakończy się niepowodzeniem."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5501,7 +5521,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5521,7 +5541,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5575,7 +5595,7 @@ msgstr ""
" Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA nie ma\n"
" zdefiniowanej specyfikacji dopełniania."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5641,7 +5661,7 @@ msgstr ""
" Zwracana jest prawda, chyba że podano błędną opcję lub TABLICA jest tylko\n"
" do odczytu, lub nie jest tablicÄ… indeksowanÄ…."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
diff --git a/po/pt.gmo b/po/pt.gmo
index 3aa7fce7..0f516eea 100644
--- a/po/pt.gmo
+++ b/po/pt.gmo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index af25824a..d0933599 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-5.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2020-12-08 03:20+0000\n"
"Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
@@ -23,57 +23,54 @@ msgstr ""
msgid "bad array subscript"
msgstr "subscrito de matriz inválido"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: a remover atributo nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: impossível converter matriz indexada para associativa"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: chave de matriz associativa inválida"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: impossível atribuir a índice não numérico"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: tem de usar subscrito ao atribuir a matriz associativa"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: impossível criar: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr "bash_execute_unix_command: impossível encontrar mapa de teclado para o comando"
+msgstr ""
+"bash_execute_unix_command: impossível encontrar mapa de teclado para o "
+"comando"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: o 1º carácter não-espaço não é \"\"\""
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "sem \"%c\" de fecho em %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: separador dois pontos em falta"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "\"%s\": impossível desassociar no mapa de teclado do comando"
@@ -93,7 +90,7 @@ msgstr "expansão: falha ao alocar memória para %u elementos"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansão: falha ao alocar memória para \"%s\""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "\"%s\": aliás inválido"
@@ -160,14 +157,15 @@ msgstr ""
" O valor de EXPR indica quantas chamadas deve recuar antes da\n"
" actual; a chamada superior é a chamada 0.\n"
" Estado de saída:\n"
-" Devolve 0 a não ser que a consola não esteja a executar uma função ou EXPR\n"
+" Devolve 0 a não ser que a consola não esteja a executar uma função ou "
+"EXPR\n"
" seja inválida."
#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME não definida"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "demasiados argumentos"
@@ -194,7 +192,7 @@ msgstr "aviso: "
msgid "%s: usage: "
msgstr "%s: uso: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: a opção requer um argumento"
@@ -209,7 +207,7 @@ msgstr "%s: requer um argumento numérico"
msgid "%s: not found"
msgstr "%s: não encontrado"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: opção inválida"
@@ -219,7 +217,7 @@ msgstr "%s: opção inválida"
msgid "%s: invalid option name"
msgstr "%s: nome de opção inválido"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "\"%s\": identificador inválido"
@@ -232,7 +230,7 @@ msgstr "número octal inválido"
msgid "invalid hex number"
msgstr "número hexadecimal inválido"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "número inválido"
@@ -246,88 +244,93 @@ msgstr "%s: especificação de sinal inválida"
msgid "`%s': not a pid or valid job spec"
msgstr "\"%s\": especificação de pid ou tarefa inválida"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: variável só de leitura"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: impossível desactivar"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s fora do intervalo"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argumento"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s fora do intervalo"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: tarefa inexistente"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: sem controlo da tarefa"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "sem controlo da tarefa"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: restrita"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "restrita"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: não é interno da consola"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "erro de escrita: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "erro ao definir atributos do terminal: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "erro ao obter atributos do terminal: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: erro ao obter a pasta actual: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: especificação de tarefa ambígua"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "ajuda indisponível nesta versão"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: impossível desactivar: %s só de leitura"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: impossível desactivar"
@@ -337,108 +340,108 @@ msgstr "%s: impossível desactivar"
msgid "%s: invalid action name"
msgstr "%s: nome de acção inválido"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: sem especificação de conclusão"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "aviso: a opção -F pode não resultar como esperado"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "aviso: a opção -C pode não resultar como esperado"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "a função de conclusão não está em execução"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "só pode ser usado numa função"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "impossível usar \"-f\" para fazer funções"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: função só de leitura"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: variável de referência não pode ser uma matriz"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: não são permitidas auto-referências de nameref"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: referência circular de nome"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "\"%s\": nome de variável inválido para referência de nome"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "impossível usar \"-f\" para fazer funções"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: função só de leitura"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: atribuição de matriz composta citada obsoleta"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: impossível destruir variáveis de matriz assim"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: impossível converter matriz associativa em indexada"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: atribuição de matriz composta citada obsoleta"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "carregamento dinâmico indisponível"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "impossível abrir objecto partilhado %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "impossível encontrar %s no objecto partilhado %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: interno dinâmico já carregado"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "carregamento da função %s devolve falha (%d): não carregada"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: não carregada dinamicamente"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: impossível eliminar: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: é uma pasta"
@@ -453,7 +456,7 @@ msgstr "%s: não é um ficheiro normal"
msgid "%s: file is too large"
msgstr "%s: ficheiro muito grande"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: impossível executar o binário"
@@ -545,15 +548,18 @@ msgstr ""
#: builtins/help.def:185
#, c-format
-msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr "nenhum tópico de ajuda para \"%s\". Tente \"help help\", \"man -k %s\" ou \"info %s\"."
+msgid ""
+"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr ""
+"nenhum tópico de ajuda para \"%s\". Tente \"help help\", \"man -k %s\" ou "
+"\"info %s\"."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: impossível abrir: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -564,7 +570,8 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
-"Estes comandos de consola são definidos internamente. Insira \"help\" para ver a lista.\n"
+"Estes comandos de consola são definidos internamente. Insira \"help\" para "
+"ver a lista.\n"
"Insira \"help nome\" para saber mais sobre a função \"nome\".\n"
"Use \"info bash\" para saber mais sobre a consola em geral.\n"
"Use \"man -k ou \"info\" para saber mais sobre comandos não listados.\n"
@@ -572,21 +579,21 @@ msgstr ""
"Um asterisco (*) junto a um nome significa que o comando está inactivo.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "impossível usar mais de um -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "posição do histórico"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: datação inválida"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: falha na expansão do histórico"
@@ -609,78 +616,78 @@ msgstr "%s: os argumentos têm de ser IDs de processos ou tarefas"
msgid "Unknown error"
msgstr "Erro desconhecido"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "esperada expressão"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: não é uma matriz indexada"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: especificação de descritor de ficheiro inválida"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descritor de ficheiro inválido: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: total de linhas inválido"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: origem de matriz inválida"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: callback inválida"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "nome de variável de matriz vazio"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "requerido suporte a variáveis de matriz"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "%s: carácter de formato em falta"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "\"%c\": especificação de formato de hora inválida"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "\"%c\": carácter de formato inválido"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "aviso: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "problema de análise de formato: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "dígito hex em falta para \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "dígito unicode em falta para \\%c"
@@ -721,10 +728,12 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown "
+"by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown "
+"by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
"Mostrar a lista de pastas actualmente lembradas. As pastas\n"
@@ -830,12 +839,12 @@ msgstr ""
" \n"
" O \"dirs\" interno mostra a pilha de pastas."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: especificação de inacção inválida"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "erro de leitura: %d: %s"
@@ -848,7 +857,7 @@ msgstr "só pode usar \"return\" a partir de uma função ou script baseado"
msgid "cannot simultaneously unset a function and a variable"
msgstr "impossível desactivar simultaneamente uma função e uma variável"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: não é variável de matriz"
@@ -867,11 +876,11 @@ msgstr "%s: impossível exportar"
msgid "shift count"
msgstr "total de trocas"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "impossível definir e desactivar opções da consola em simultâneo"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nome de opção da consola inválido"
@@ -938,16 +947,16 @@ msgstr "%s: argumento de limite inválido"
msgid "`%c': bad command"
msgstr "\"%c\": comando errado"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: impossível obter limite: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limite"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: impossível modificar limite: %s"
@@ -966,7 +975,7 @@ msgstr "\"%c\": operador de modo simbólico inválido"
msgid "`%c': invalid symbolic mode character"
msgstr "\"%c\": carácter de modo simbólico inválido"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " linha "
@@ -986,96 +995,106 @@ msgstr "A abortar..."
msgid "INFORM: "
msgstr "INFORM.: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "aviso: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "erro de comando desconhecido"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "tipo de comando errado"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "conector errado"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "salto errado"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: variável desassociada"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aDemasiada inacção à espera de entrada: sessão terminada\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "impossível redireccionar entrada padrão de /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "FORMATOHORA: \"%c\": carácter de formato inválido"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] ainda existe"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "erro de pipe"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: nível máximo de aninhamento de eval excedido (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: nível máximo de aninhamento de fonte excedido (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: nível máximo de aninhamento de função excedido (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restrito: impossível especificar \"/\" em nomes de comando"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: comando não encontrado"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: impossível executar o binário"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: interpretador errado"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: impossível executar binário: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "%s: é uma opção interna especial"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "impossível duplicar fd %d para fd %d"
@@ -1088,68 +1107,68 @@ msgstr "nível de recursão da expressão excedido"
msgid "recursion stack underflow"
msgstr "sub-fluxo da pilha de recursividade"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "erro de sintaxe na expressão"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "tentativa de atribuição a não-variável"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "erro de sintaxe na atribuição de variável"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "divisão por 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "problema: símbolo expassign errado"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "\":\" esperados para expressão condicional"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "expoente menor que 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identificador esperado após pré-incremento ou pré-decremento"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "\")\" em falta"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "erro de sintaxe: operando esperado"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "erro de sintaxe: operador aritmético inválido"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (símbolo de erro é \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "base aritmética inválida"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "constante inteira inválida"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "valor muito grande para a base"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: erro de expressão\n"
@@ -1158,7 +1177,7 @@ msgstr "%s: erro de expressão\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: impossível aceder a pastas-mãe"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "impossível repor modo nodelay para fd %d"
@@ -1166,7 +1185,8 @@ msgstr "impossível repor modo nodelay para fd %d"
#: input.c:266
#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "impossível alocar novo descritor de ficheiro para entrada bash de fd %d"
+msgstr ""
+"impossível alocar novo descritor de ficheiro para entrada bash de fd %d"
#: input.c:274
#, c-format
@@ -1177,167 +1197,167 @@ msgstr "save_bash_input: buffer já existe para o novo fd %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pipe pgrp"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "pid %d aparece em tarefa em execução %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "a eliminar tarefa interrompida %d com grupo de processo %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marcado como ainda activo"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: pid não existente"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Sinal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Feito"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Interrompido"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Interrompido(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Em execução"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Feito(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Sair de %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Estado desconhecido"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(núcleo despejado) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid filho (%ld para %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld não é um filho desta consola"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: sem registo do processo %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_tarefa: tarefa %d está interrompida"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: sem tarefas actuais"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: tarefa terminada"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: tarefa %d já em 2º plano"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: a ligar WNOHANG para evitar bloquieo indefinido"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: linha %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (núcleo despejado)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd agora: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp falhou"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: sem controlo de tarefa em 2º plano"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina de linha"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "impossível definir grupo de processo do terminal (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "não há controlo de tarefa nesta consola"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: asserção falhada: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1346,47 +1366,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: asserção frustrada\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "desconhecido"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloqueio na lista livre clobbered"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: chamado com argumento de bloco já liberto"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: chamado com argumento de bloco não alocado"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: sub-fluxo detectado; magic8 corrompido"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: tamanho dos pontos inicial e final difere"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: chamado com argumento de bloco não alocado"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: sub-fluxo detectado; magic8 corrompido"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: tamanho dos pontos inicial e final difere"
@@ -1428,22 +1448,22 @@ msgstr "%s: especificação de caminho de rede errada"
msgid "network operations not supported"
msgstr "operações de rede não suportadas"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: não pode alterar o idioma (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: não pode alterar o idioma (%s): %s"
@@ -1461,136 +1481,142 @@ msgstr "Tem novo correio em $_"
msgid "The mail in %s has been read\n"
msgstr "O correio em %s já foi lido\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "erro de sintaxe: requerida expressão aritmética"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "erro de sintaxe: \";\" inesperado"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "erro de sintaxe: \"((%s))\""
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: tipo de instrução %d errado"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "here-document na linha %d delimitado por fim-de-ficheiro (desejado \"%s\")"
+msgstr ""
+"here-document na linha %d delimitado por fim-de-ficheiro (desejado \"%s\")"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr "make_redirection: instrução de redireccionamento \"%d\" fora do intervalo"
+msgstr ""
+"make_redirection: instrução de redireccionamento \"%d\" fora do intervalo"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
-msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
-msgstr "consola_getc: consola_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada"
+msgid ""
+"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
+"truncated"
+msgstr ""
+"consola_getc: consola_input_line_size (%zu) excede SIZE_MAX (%lu): linha "
+"truncada"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "total here-document máximo excedido"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF inesperado ao procurar \"%c\" correspondentes"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF inesperado ao procurar \"]]\""
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "erro de sintaxe em expressão condicional: símbolo inesperado \"%s\""
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "erro de sintaxe em expressão condicional"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "símbolo inesperado \"%s\", esperado \")\""
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "esperado \")\""
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumento \"%s\" inesperado para operador unário condicional"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "argumento inesperado para operador unário condicional"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "símbolo \"%s\" inesperado, esperado operador binário condicional"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "esperado operador binário condicional"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumento \"%s\" inesperado para operador binário condicional"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "argumento inesperado para operador binário condicional"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "símbolo \"%c\" inesperado em comando condicional"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "símbolo \"%s\" inesperado em comando condicional"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "símbolo %d inesperado em comando condicional"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "erro de sintaxe junto a símbolo \"%s\" inesperado"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "erro de sintaxe junto a \"%s\""
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "erro de sintaxe: fim de ficheiro inesperado"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "erro de sintaxe"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use \"%s\" para sair da consola.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF inesperado ao procurar o \")\" correspondente"
@@ -1628,94 +1654,94 @@ msgstr "xtrace_set: ponteiro de ficheiro NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: \"%c\": carácter de formato inválido"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "descritor de ficheiro fora de alcance"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redireccionamento ambíguo"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: impossível sobrescrever ficheiro existente"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricto: impossível redireccionar saída"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "impossível criar ficheiro temporário para here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: impossível atribuir fd a variável"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port não suportado em trabalho de rede"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "erro de redireccionamento: impossível duplicar fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "impossível encontrar /tmp, por favor crie-a!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp tem de ser um nome de pasta válido"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "modo pretty-printing ignorado em consolas interactivas"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opção inválida"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "impossível definir uid como %d: uid efectiva %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "impossível definir gid como %d: gid efectiva %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "impossível iniciar o depurador; modo de depuração desactivado"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: é uma pasta"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Não tenho nome!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versão %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1724,317 +1750,324 @@ msgstr ""
"Uso:\t%s [opção longa GNU] [opção] ...\n"
"\t%s [opção longa GNU] [opção] script-file ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Opções longas GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Opções da consola:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\tcomando -ilrsD ou -c ou -O shopt_option\t\t(só chamada)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\topção -%s ou -o\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr "Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n"
+msgstr ""
+"Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr "Insira \"%s -c help\" para mais informação sobre comandos internos da consola.\n"
+msgstr ""
+"Insira \"%s -c help\" para mais informação sobre comandos internos da "
+"consola.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Use o comando \"bashbug\" para reportar erros.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Página inicial do bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operação inválida"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Sinal falso"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Desligar"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interromper"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Sair"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Instrução ilegal"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Instrução ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Instrução EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Excepção de vírgula flutuante"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Morto"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Erro de bus"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Falha de segmentação"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Chamada de sistema errada"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Pipe quebrado"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Alarme"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Terminado"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Condição IO urgente"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Parado (sinal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continuar"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Morte ou paragem do filho"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Parado (entrada tty)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Parado (saída tty)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O pronto"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Limite do CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Limite do ficheiro"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarme (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarme (perfil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Janela alterada"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Bloqueio de registo"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Sinal de utilizador 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Sinal de utilizador 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "entrada de dados HTF pendente"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "falha de energia iminente"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "acidente do sistema iminente"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migrar processo para outro CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "erro de programação"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "concedido modo de monitor HTF"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "retirado modo de monitor HTF"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "sequência de som HTF terminou"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Pedido de informação"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Sinal desconhecido #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "má substituição: sem \"%s\" de fecho em %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: impossível atribuir lista a membro de matriz"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "impossível fazer pipe para substituição de processo"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "impossível fazer filho para substituição de processo"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "impossível abrir pipe chamado %s para leitura"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "impossível abrir pipe chamado %s para escrita"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "imossível duplicar pipe chamado %s como fd %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "substituição de comando: byte nulo ignorado na entrada"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "impossível fazer pipe para substituição de comando"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "impossível fazer filho para substituição de comando"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: impossível duplicar pipe como fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nome de variável inválido para referência de nome"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: expansão indirecta inválida"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nome de variável inválido"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parâmetro não definido"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parâmetro nulo ou não definido"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expressão de sub-cadeia < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: má substituição"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: impossível atribuir desta forma"
-#: subst.c:9814
-msgid "future versions of the shell will force evaluation as an arithmetic substitution"
-msgstr "futuras versões da consola vão forçar a avaliação como uma substituição aritmética"
+#: subst.c:10111
+msgid ""
+"future versions of the shell will force evaluation as an arithmetic "
+"substitution"
+msgstr ""
+"futuras versões da consola vão forçar a avaliação como uma substituição "
+"aritmética"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "má substituição: sem \"\"\" de fecho em %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "sem par:%s"
@@ -2057,21 +2090,21 @@ msgstr "\")\" esperado"
msgid "`)' expected, found %s"
msgstr "\")\" esperado, encontrado %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: operador bináro esperado"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: operador unáro esperado"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "\"]\" em falta"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "erro de sintaxe: \"%s\" esperado"
@@ -2080,103 +2113,117 @@ msgstr "erro de sintaxe: \"%s\" esperado"
msgid "invalid signal number"
msgstr "número de sinal inválido"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "gestor de trap: nível máximo de gestor de captura excedido (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: valor errado em trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
-msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr "run_pending_traps: gestor de sinal é SIG_DFL, a reenviar %d (%s) para mim próprio"
+msgid ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr ""
+"run_pending_traps: gestor de sinal é SIG_DFL, a reenviar %d (%s) para mim "
+"próprio"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: sinal errado %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "erro ao importar definição de função para \"%s\""
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "nível da consola (%d) muito alto, a repor para 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variável: sem contexto de função no âmbito actual"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: não pode atribuir um valor à variável"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: a atribuir inteiro à referência de nome"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: sem contexto de função no âmbito actual"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s tem exportstr nulo"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "carácter %d inválido em exportstr para %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "sem \"=\" em exportstr para %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: cabeça de consola_variables não é contexto de função"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: sem contexto de global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr "pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário"
+msgstr ""
+"pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: impossível abrir como FICHEIRO"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: valor inválido para descritor de ficheiro trace"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: valor de compatibilidade fora do intervalo"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
-msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
-msgstr "Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl.html>\n"
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+msgstr ""
+"Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl."
+"html>\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2220,8 +2267,13 @@ msgid "unalias [-a] name [name ...]"
msgstr "unalias [-a] nome [nome ...]"
#: builtins.c:53
-msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr "bind [-lpsvPSVX] [-m mapa de teclado] [-f ficheiro] [-q nome] [-u nome] [-r seqtecl] [-x seqtecl:comando-consola] [seqtecl:função-readline ou comando-readline]"
+msgid ""
+"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
+"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr ""
+"bind [-lpsvPSVX] [-m mapa de teclado] [-f ficheiro] [-q nome] [-u nome] [-r "
+"seqtecl] [-x seqtecl:comando-consola] [seqtecl:função-readline ou comando-"
+"readline]"
#: builtins.c:56
msgid "break [n]"
@@ -2252,11 +2304,17 @@ msgid "command [-pVv] command [arg ...]"
msgstr "comando [-pVv] comando [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgiIlnrtux] [-p] [nome[=valor] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgiIlnrtux] [-p] nome[=valor] ..."
#: builtins.c:82
@@ -2316,8 +2374,12 @@ msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [padrão ...]"
#: builtins.c:123
-msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
-msgstr "history [-c] [-d desvio] [n], history -anrw [ficheiro] ou history -ps arg [arg...]"
+msgid ""
+"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
+"[arg...]"
+msgstr ""
+"history [-c] [-d desvio] [n], history -anrw [ficheiro] ou history -ps arg "
+"[arg...]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2328,23 +2390,32 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
msgstr "disown [-h] [-ar] [tarefaspec ... | pid ...]"
#: builtins.c:134
-msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
-msgstr "kill [-s sigspec | -n signum | -sigspec] pid | tarefaspec ... ou kill -l [sigspec]"
+msgid ""
+"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
+"[sigspec]"
+msgstr ""
+"kill [-s sigspec | -n signum | -sigspec] pid | tarefaspec ... ou kill -l "
+"[sigspec]"
#: builtins.c:136
msgid "let arg [arg ...]"
msgstr "let arg [arg ...]"
#: builtins.c:138
-msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
-msgstr "read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p prompt] [-t inacção] [-u fd] [nome ...]"
+msgid ""
+"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
+"prompt] [-t timeout] [-u fd] [name ...]"
+msgstr ""
+"read [-ers] [-a matriz] [-d delim] [-i texto] [-n ncars] [-N ncars] [-p "
+"prompt] [-t inacção] [-u fd] [nome ...]"
#: builtins.c:140
msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opção] [--] [arg ...]"
#: builtins.c:144
@@ -2392,7 +2463,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] nome [nome ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]"
#: builtins.c:174
@@ -2428,15 +2500,21 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac"
#: builtins.c:194
-msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
-msgstr "if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else COMANDOS; ] fi"
+msgid ""
+"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
+"COMMANDS; ] fi"
+msgstr ""
+"if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else "
+"COMANDOS; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while COMANDOS; do COMANDOS; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until COMANDOS; do COMANDOS; done"
#: builtins.c:200
@@ -2488,24 +2566,43 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] formato [argumentos]"
#: builtins.c:231
-msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
-msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A acção] [-G padrãoglobal] [-W listapalavras] [-F função] [-C comando] [-X padrãofiltro] [-P prefixo] [-S sufixo] [nome ...]"
+msgid ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"suffix] [name ...]"
+msgstr ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A acção] [-G "
+"padrãoglobal] [-W listapalavras] [-F função] [-C comando] [-X padrãofiltro] "
+"[-P prefixo] [-S sufixo] [nome ...]"
#: builtins.c:235
-msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr "compgen [-abcdefgjksuv] [-o opção] [-A acção] [-G padrãoglobal] [-W listapalavras] [-F função] [-C comando] [-X padrãofiltro] [-P prefixo] [-S sufixo] [palavra]"
+msgid ""
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr ""
+"compgen [-abcdefgjksuv] [-o opção] [-A acção] [-G padrãoglobal] [-W "
+"listapalavras] [-F função] [-C comando] [-X padrãofiltro] [-P prefixo] [-S "
+"sufixo] [palavra]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
msgstr "compopt [-o|+o opção] [-DEI] [nome ...]"
#: builtins.c:242
-msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
-msgstr "mapfile [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C callback] [-c quantia] [matriz]"
+msgid ""
+"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"mapfile [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C "
+"callback] [-c quantia] [matriz]"
#: builtins.c:244
-msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
-msgstr "readarray [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C callback] [-c quantum] [matriz]"
+msgid ""
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"readarray [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C "
+"callback] [-c quantum] [matriz]"
#: builtins.c:256
msgid ""
@@ -2522,7 +2619,8 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has been\n"
+" alias returns true unless a NAME is supplied for which no alias has "
+"been\n"
" defined."
msgstr ""
"Definir ou mostrar aliás.\n"
@@ -2538,7 +2636,8 @@ msgstr ""
" -p\timprimir todos os aliás definidos em formato reutilizável\n"
" \n"
" Estado de saída:\n"
-" alias devolve verdadeiro a não ser que seja fornecido um NOME para o qual\n"
+" alias devolve verdadeiro a não ser que seja fornecido um NOME para o "
+"qual\n"
"ainda não haja um aliás."
#: builtins.c:278
@@ -2569,25 +2668,30 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
+"move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their values\n"
-" -s List key sequences that invoke macros and their values\n"
+" -S List key sequences that invoke macros and their "
+"values\n"
+" -s List key sequences that invoke macros and their "
+"values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named function.\n"
+" -u function-name Unbind all keys which are bound to the named "
+"function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated commands\n"
+" -X List key sequences bound with -x and associated "
+"commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
@@ -2596,36 +2700,53 @@ msgstr ""
"Definir associações de teclas e variáveis para Readline.\n"
" \n"
" Associar uma sequência de teclas a uma função ou macro Readline, ou\n"
-" defina uma variável Readline. A sintaxe de argumento não-opção é equivalente\n"
-" à encontrada em ~/.inputrc, mas tem de ser passada como argumento único:\n"
+" defina uma variável Readline. A sintaxe de argumento não-opção é "
+"equivalente\n"
+" à encontrada em ~/.inputrc, mas tem de ser passada como argumento "
+"único:\n"
" e.g., bind \"\"\\C-x\\C-r\": re-read-init-file\".\n"
" \n"
" Opções:\n"
-" -m maptecl Use MAPTECL como mapa de teclado para a duração deste\n"
-" comando. Nomes de mapas aceitáveis são emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
+" -m maptecl Use MAPTECL como mapa de teclado para a "
+"duração deste\n"
+" comando. Nomes de mapas aceitáveis são "
+"emacs,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, "
+"vi-move,\n"
" vi-command, e vi-insert.\n"
" -l Listar nomes de funções.\n"
" -P Listar nomes de funções e associações.\n"
-" -p Listar funções funçãos e associações de forma a que possam\n"
+" -p Listar funções funçãos e associações de "
+"forma a que possam\n"
" ser reutilizados como entrada.\n"
-" -S Listar sequências de teclas que chamem macros e seus valores\n"
-" -s Listar sequências de teclas que chamem macros e seus valores\n"
-" de forma a que possam ser reutilizados como entrada.\n"
+" -S Listar sequências de teclas que chamem "
+"macros e seus valores\n"
+" -s Listar sequências de teclas que chamem "
+"macros e seus valores\n"
+" de forma a que possam ser reutilizados como "
+"entrada.\n"
" -V Listar nomes de variáveis e seus valores\n"
-" -v Listar nomes de variáveis e seus valores de forma a que possam\n"
+" -v Listar nomes de variáveis e seus valores de "
+"forma a que possam\n"
" ser reutilizados como entrada.\n"
-" -q nome-função Consultar que teclas chamaram a função em causa.\n"
-" -u nome-função Unbind all keys which are bound to the named função.\n"
+" -q nome-função Consultar que teclas chamaram a função em "
+"causa.\n"
+" -u nome-função Unbind all keys which are bound to the named "
+"função.\n"
" -r seqtecl Remover associação de SEQTECL.\n"
-" -f nomefich Ler associações de teclas a partir de NOMEFICH.\n"
-" -x seqtecl:comando-consola\tCausa a execuçaõ de COMANDO-SHELL quando\n"
+" -f nomefich Ler associações de teclas a partir de "
+"NOMEFICH.\n"
+" -x seqtecl:comando-consola\tCausa a execuçaõ de COMANDO-SHELL "
+"quando\n"
" \t\t\t\tSEQTECL for inserido.\n"
-" -X Listarsequências de teclas associadas a -x e comandos ligados\n"
-" de forma a que possam ser reutilizados como entrada.\n"
+" -X Listarsequências de teclas associadas a -x e "
+"comandos ligados\n"
+" de forma a que possam ser reutilizados como "
+"entrada.\n"
" \n"
" Estado de saída:\n"
-" bind devolve 0 a não ser que seja dada uma opção desconhecida ou ocorra um erro."
+" bind devolve 0 a não ser que seja dada uma opção desconhecida ou ocorra "
+"um erro."
#: builtins.c:330
msgid ""
@@ -2639,7 +2760,8 @@ msgid ""
msgstr ""
"Sair de ciclos for, while, ou until.\n"
" \n"
-" Sai de um ciclo FOR, WHILE ou UNTIL. Se N for especificado, quebrar N ciclos\n"
+" Sai de um ciclo FOR, WHILE ou UNTIL. Se N for especificado, quebrar N "
+"ciclos\n"
" envolventes.\n"
" \n"
" Estado de saída:\n"
@@ -2669,7 +2791,8 @@ msgid ""
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the function.\n"
+" as a shell function, but need to execute the builtin within the "
+"function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2677,12 +2800,15 @@ msgid ""
msgstr ""
"Executa comandos internos da consola.\n"
" \n"
-" Executa SHELL-INTERNO com argumentos ARGs sem realizar procura do comando.\n"
+" Executa SHELL-INTERNO com argumentos ARGs sem realizar procura do "
+"comando.\n"
" Útil quando deseja re-implementar um comando interno da consola como\n"
-" função da consola, mas tem de executar o comando interno dentro da função.\n"
+" função da consola, mas tem de executar o comando interno dentro da "
+"função.\n"
" \n"
" Estado de saída:\n"
-" Devolve o estado de saída de SHELL-INTERNO ou falso se SHELL-INTERNO não\n"
+" Devolve o estado de saída de SHELL-INTERNO ou falso se SHELL-INTERNO "
+"não\n"
" for um comando interno da consola."
#: builtins.c:369
@@ -2710,23 +2836,30 @@ msgstr ""
" actual; a chamada superior é a chamada 0.\n"
" \n"
" Estado de saída:\n"
-" Devolve 0 a não ser que a consola não esteja a executar uma função ou EXPR\n"
+" Devolve 0 a não ser que a consola não esteja a executar uma função ou "
+"EXPR\n"
" seja inválida."
#: builtins.c:387
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of the\n"
+" Change the current directory to DIR. The default DIR is the value of "
+"the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
-" A null directory name is the same as the current directory. If DIR begins\n"
+" The variable CDPATH defines the search path for the directory "
+"containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon "
+"(:).\n"
+" A null directory name is the same as the current directory. If DIR "
+"begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is set,\n"
-" the word is assumed to be a variable name. If that variable has a value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is "
+"set,\n"
+" the word is assumed to be a variable name. If that variable has a "
+"value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2742,25 +2875,32 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname component\n"
+" `..' is processed by removing the immediately previous pathname "
+"component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully "
+"when\n"
" -P is used; non-zero otherwise."
msgstr ""
"Alterar a pasta de trabalho da consola.\n"
" \n"
-" Altera a pasta actual para PASTA. A PASTA predefinida é o valor da variável\n"
+" Altera a pasta actual para PASTA. A PASTA predefinida é o valor da "
+"variável\n"
" HOME.\n"
" \n"
" A variável CDPATH define o caminho de procura para a pasta que contém\n"
-" PASTA. Nomes de pasta alternativos em CDPATH são separados por \":\" (:).\n"
-" Um nome de pasta nulo é equivalente à pasta actual. Se PASTA começar com\n"
+" PASTA. Nomes de pasta alternativos em CDPATH são separados por \":"
+"\" (:).\n"
+" Um nome de pasta nulo é equivalente à pasta actual. Se PASTA começar "
+"com\n"
" uma barra (/), CDPATH não é usada.\n"
" \n"
-" Se a pasta não for encontrada e a opção de consola \"cdable_vars\" estiver definida,\n"
-" a palavra é assumida como nome de variável. Se essa variável tiver um valor,\n"
+" Se a pasta não for encontrada e a opção de consola \"cdable_vars\" "
+"estiver definida,\n"
+" a palavra é assumida como nome de variável. Se essa variável tiver um "
+"valor,\n"
" será usado como PASTA.\n"
" \n"
" Opções:\n"
@@ -2772,15 +2912,19 @@ msgstr ""
" -e\tse a opção -P for usada e a pasta de trabalho actual não puder\n"
" \t\tser determinada com sucesso, sair com\n"
" \t\testado não-zero\n"
-" -@\tem sistemas que o suportam, apresentar um ficheiro com atributos\n"
+" -@\tem sistemas que o suportam, apresentar um ficheiro com "
+"atributos\n"
" \t\testendidos como uma pasta contendo os atributos do ficheiro.\n"
" \n"
-" A predefinição é seguir ligações simbólicas, como se \"-L\" fosse especificada.\n"
-" \"..\" é processado colocando o componente de caminho imediatamente anterior\n"
+" A predefinição é seguir ligações simbólicas, como se \"-L\" fosse "
+"especificada.\n"
+" \"..\" é processado colocando o componente de caminho imediatamente "
+"anterior\n"
" como barra ou o começo de PASTA.\n"
" \n"
" Estado de saída:\n"
-" Devolve 0 se a pasta for alterada e se $PWD for definida com sucesso quando\n"
+" Devolve 0 se a pasta for alterada e se $PWD for definida com sucesso "
+"quando\n"
" -P é usada; caso contrário, não-zero."
#: builtins.c:425
@@ -2805,10 +2949,12 @@ msgstr ""
" \t\ttrabalho\n"
" -P\timprimir a pasta física, sem quaisquer ligações simbólicas\n"
" \n"
-" Por predefinição, \"pwd\" comporta-se como se \"-L\" fosse especificada.\n"
+" Por predefinição, \"pwd\" comporta-se como se \"-L\" fosse "
+"especificada.\n"
" \n"
" Estado de saída:\n"
-" Devolve 0 a não ser que seja indicada uma opçãoinválida ou a pasta actual\n"
+" Devolve 0 a não ser que seja indicada uma opçãoinválida ou a pasta "
+"actual\n"
" não possa ser lida."
#: builtins.c:442
@@ -2856,7 +3002,8 @@ msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke commands\n"
+" information about the specified COMMANDs. Can be used to invoke "
+"commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -2870,18 +3017,23 @@ msgid ""
msgstr ""
"Executar um comando simples ou mostrar informação sobre comandos.\n"
" \n"
-" Executa COMANDO com ARGS suprimindo procura de funções da consola ou mostra\n"
-" informação acerca dos COMANDOs especificados. Pode ser usado para chamar comandos\n"
+" Executa COMANDO com ARGS suprimindo procura de funções da consola ou "
+"mostra\n"
+" informação acerca dos COMANDOs especificados. Pode ser usado para "
+"chamar comandos\n"
" em disco quando existe uma função com o mesmo nome.\n"
" \n"
" Opções:\n"
-" -p usar valor predefinido para CAMINHO que garanta que se encontram\n"
+" -p usar valor predefinido para CAMINHO que garanta que se "
+"encontram\n"
" todos os utilitários padrão\n"
-" -v imprimir uma descrição de COMANDO similar ao interno \"type\"\n"
+" -v imprimir uma descrição de COMANDO similar ao interno \"type"
+"\"\n"
" -V imprimir uma descrição mais detalhada de COMANDO\n"
" \n"
" Estado de saída:\n"
-" Devolve o estado de saída de COMANDO ou falha se COMANDO não for encontrado."
+" Devolve o estado de saída de COMANDO ou falha se COMANDO não for "
+"encontrado."
#: builtins.c:490
msgid ""
@@ -2916,7 +3068,8 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the "
+"`local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -2932,7 +3085,8 @@ msgstr ""
" -f\trestringe acção ou exibição a nomes e definições de função\n"
" -F\trestringe exibição só a nomes de função (mais nº de linha e\n"
" \t\tficheiro fonte ao depurar)\n"
-" -g\tcria variáveis globais quando usado numa função da consola; senão\n"
+" -g\tcria variáveis globais quando usado numa função da consola; "
+"senão\n"
" \t\té ignorada\n"
" -I\tse está a criar uma variável local, herdar atributos e valor\n"
" \t\tduma variável com o mesmo nome num âmbito anterior\n"
@@ -2954,11 +3108,13 @@ msgstr ""
" Variáveis com o atributo integer têm avaliação aritmética (veja o\n"
" comando \"let\") realizada quando lhe é atribuído um valor.\n"
" \n"
-" Quando usado numa função, \"declare\" torna NOMEs locais, como o comando\n"
+" Quando usado numa função, \"declare\" torna NOMEs locais, como o "
+"comando\n"
" \"local\". A opção \"-g\" suprime este comportamento.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que seja indicada uma opção inválida ou ocorra um\n"
+" Devolve sucesso a não ser que seja indicada uma opção inválida ou "
+"ocorra um\n"
" erro de atribuição da variável."
#: builtins.c:532
@@ -2990,18 +3146,21 @@ msgstr ""
" Cria uma variável local chamada NOME e dá-lhe VALOR. OPÇÃO pode\n"
" ser qualquer opção aceite por \"declare\".\n"
" \n"
-" Variáveis locais só podem ser usadas dentro de uma função; só são visíveis\n"
+" Variáveis locais só podem ser usadas dentro de uma função; só são "
+"visíveis\n"
" para a função onde foram definidas e para os seus filhos.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que uma opção inválida seja fornecida, ocorra \n"
+" Devolve sucesso a não ser que uma opção inválida seja fornecida, "
+"ocorra \n"
" um erro de atribuição ou a consola não esteja a executar uma função."
#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by a\n"
+" Display the ARGs, separated by a single space character and followed by "
+"a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -3025,9 +3184,11 @@ msgid ""
" \t\t0 to 3 octal digits\n"
" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
" \t\tcan be one or two hex digits\n"
-" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
" \t\tHHHH can be one to four hex digits.\n"
-" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
" \n"
" Exit Status:\n"
@@ -3041,9 +3202,11 @@ msgstr ""
" Opções:\n"
" -n\tnaõ acrescentar nova linha\n"
" -e\tpermitir interpretação dos escapes seguintes com barra esquerda\n"
-" -E\tsuprimir explicitamente interpretação de escapes com barra esquerda\n"
+" -E\tsuprimir explicitamente interpretação de escapes com barra "
+"esquerda\n"
" \n"
-" \"echo\" interpreta os seguintes caracteres de escapes com barra esquerda:\n"
+" \"echo\" interpreta os seguintes caracteres de escapes com barra "
+"esquerda:\n"
" \\a\talerta (bell)\n"
" \\b\tbackspace\n"
" \\c\tsuprimir mais saídas\n"
@@ -3123,7 +3286,8 @@ msgstr ""
" \n"
" Opções:\n"
" -a\timprimir lista de internos mostrando se estão ou não activos\n"
-" -n\tdesactivar cada NOME ou mostrar uma lista de internos desactivados\n"
+" -n\tdesactivar cada NOME ou mostrar uma lista de internos "
+"desactivados\n"
" -p\timprimir a lista de internos em formato reutilizável\n"
" -s\timprimir só os nomes de internos \"especiais\" Posix\n"
" \n"
@@ -3137,13 +3301,15 @@ msgstr ""
" insira \"enable -n test\".\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que NOME não seja um interno da consola ou ocorra um erro."
+" Devolve sucesso a não ser que NOME não seja um interno da consola ou "
+"ocorra um erro."
#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the shell,\n"
+" Combine ARGs into a single string, use the result as input to the "
+"shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -3151,7 +3317,8 @@ msgid ""
msgstr ""
"Executa argumentos como comando da consola.\n"
" \n"
-" Combina ARGs numa única cadeia, usa o resultado como entrada da consola,\n"
+" Combina ARGs numa única cadeia, usa o resultado como entrada da "
+"consola,\n"
" e executa os comandos resultantes.\n"
" \n"
" Estado de saída:\n"
@@ -3199,7 +3366,8 @@ msgid ""
msgstr ""
"Analisa argumentos da opção.\n"
" \n"
-" Getopts é usado pelos procedimentos da consola para analisar parâmetros posicionais\n"
+" Getopts é usado pelos procedimentos da consola para analisar parâmetros "
+"posicionais\n"
" como opções.\n"
" \n"
" CADEIAOPÇÕES contém as letras de opção a reconhecer; se uma letra\n"
@@ -3220,7 +3388,8 @@ msgstr ""
" Se não houver um argumento requerido, o getopts põe um \":\" no NOME e\n"
" define OPTARG como o carácter de opção encontrado. Se o getopts não\n"
" estiver em modo silêncio e for vista uma opção inválida, o getopts\n"
-" põe \"?\" no NOME e limpa OPTARG. Se não houver um argumento requerido,\n"
+" põe \"?\" no NOME e limpa OPTARG. Se não houver um argumento "
+"requerido,\n"
" é posto \"?\" no NOME, OPTARG é limpo e é imprimida uma mensagem de\n"
" diagnóstico.\n"
" \n"
@@ -3229,7 +3398,8 @@ msgstr ""
" CADEIAOPÇÕES não seja \":\". OPTERR tem o valor 1 predefinido.\n"
" \n"
" O getopts normalmente analisa os parâmetros posicionais, mas se\n"
-" os argumentosforem dados como valores ARG, são eles que são analisados.\n"
+" os argumentosforem dados como valores ARG, são eles que são "
+"analisados.\n"
" \n"
" Estado de saída:\n"
" Devolve sucesso se encontrar uma opção; falha se o fim da opção for\n"
@@ -3240,7 +3410,8 @@ msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
+"specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3248,16 +3419,20 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, unless\n"
+" If the command cannot be executed, a non-interactive shell exits, "
+"unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error occurs."
+" Returns success unless COMMAND is not found or a redirection error "
+"occurs."
msgstr ""
"Substitui a consola com o comando indicado.\n"
" \n"
-" Executar COMANDO, substituindo esta consola pelo programa especificado.\n"
-" ARGUMENTOS tornam-se os argumentos de COMANDO. Se COMANDO não for especificado,\n"
+" Executar COMANDO, substituindo esta consola pelo programa "
+"especificado.\n"
+" ARGUMENTOS tornam-se os argumentos de COMANDO. Se COMANDO não for "
+"especificado,\n"
" quaisquer redireccionamentos têm efeito na consola actual.\n"
" \n"
" Opções:\n"
@@ -3265,11 +3440,13 @@ msgstr ""
" -c\texecuta COMANDO com um ambiente vazio\n"
" -l\tpõe uma barra no argumento 0 de COMANDO\n"
" \n"
-" Se o comando não puder ser executado, uma consola não interactiva sai, a não ser que\n"
+" Se o comando não puder ser executado, uma consola não interactiva sai, "
+"a não ser que\n"
" a opção de consola \"execfail\" esteja definida.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um erro de redireccionamento."
+" Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um "
+"erro de redireccionamento."
#: builtins.c:715
msgid ""
@@ -3287,25 +3464,29 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not executed\n"
+" Exits a login shell with exit status N. Returns an error if not "
+"executed\n"
" in a login shell."
msgstr ""
"Sai de uma consola com sessão.\n"
" \n"
-" Sai de uma consola com sessão com estado de saída N. Devolve um erro se não for\n"
+" Sai de uma consola com sessão com estado de saída N. Devolve um erro "
+"se não for\n"
" executado numa consola com sessão."
#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history list.\n"
+" fc is used to list or edit and re-execute commands from the history "
+"list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
+"EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3319,17 +3500,21 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error occurs."
+" Returns success or status of executed command; non-zero if an error "
+"occurs."
msgstr ""
"Mostra ou executa comandos da lista do histórico.\n"
" \n"
-" fc é usado para listar ou editar e re-executar comandos da lsiat do histórico.\n"
-" PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou PRIMEIRO pode ser\n"
+" fc é usado para listar ou editar e re-executar comandos da lsiat do "
+"histórico.\n"
+" PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou "
+"PRIMEIRO pode ser\n"
" cadeia, que significa o comando mais recente começado por essa\n"
" cadeia.\n"
" \n"
" Opções:\n"
-" -e NOMEED\tseleciona o editor a usar. A predefinição é FCEDIT, depois EDITOR,\n"
+" -e NOMEED\tseleciona o editor a usar. A predefinição é FCEDIT, "
+"depois EDITOR,\n"
" \t\tdepois vi\n"
" -l \tlistar linhas em vez de editar\n"
" -n\tomitir nºs de linha ao ouvir\n"
@@ -3339,11 +3524,13 @@ msgstr ""
" re-executado após a substituição VELHO=NOVO ser realizada.\n"
" \n"
" Um aliás útil a usar aqui é r=\"fc -s\", para que inserir \"r cc\"\n"
-" executa o último comando começado por \"cc\" e inserir \"r\" re-executa\n"
+" executa o último comando começado por \"cc\" e inserir \"r\" re-"
+"executa\n"
" o último comando.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso ou estado do comando executado; não-zero se ocorrer um erro."
+" Devolve sucesso ou estado do comando executado; não-zero se ocorrer um "
+"erro."
#: builtins.c:764
msgid ""
@@ -3369,8 +3556,10 @@ msgstr ""
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if "
+"they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's "
+"notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
@@ -3378,19 +3567,23 @@ msgid ""
msgstr ""
"Move a tarefa para 2º plano.\n"
" \n"
-" Coloca a tarefa identificada com cada JOB_SPEC em 2º plano, como se tivessem\n"
-" sido iniciados com \"&\". Se JOB_SPEC não existir, é usada a noção da consola de\n"
+" Coloca a tarefa identificada com cada JOB_SPEC em 2º plano, como se "
+"tivessem\n"
+" sido iniciados com \"&\". Se JOB_SPEC não existir, é usada a noção da "
+"consola de\n"
" tarefa actual.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou ocorra um erro."
+" Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou "
+"ocorra um erro."
#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is displayed.\n"
+" no arguments are given, information about remembered commands is "
+"displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3425,7 +3618,8 @@ msgstr ""
" \t\tde comandos lembrados.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que NOME não seja encontrado ou indique uma opção inválida."
+" Devolve sucesso a não ser que NOME não seja encontrado ou indique uma "
+"opção inválida."
#: builtins.c:818
msgid ""
@@ -3445,12 +3639,14 @@ msgid ""
" PATTERN\tPattern specifying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is given."
+" Returns success unless PATTERN is not found or an invalid option is "
+"given."
msgstr ""
"Mostra informação sobre comandos internos.\n"
" \n"
" Mostra breves resumos de comandos internos. Se PADRÃO for\n"
-" especificado, dá ajuda detalhada em todos os comandos que cumpram PADRÃO,\n"
+" especificado, dá ajuda detalhada em todos os comandos que cumpram "
+"PADRÃO,\n"
" senão imprime a lista de tópicos de ajuda.\n"
" \n"
" Opções:\n"
@@ -3463,7 +3659,8 @@ msgstr ""
" PADRÃO\tPadrão que especifica um tópico de ajuda\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma opção inválida."
+" Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma "
+"opção inválida."
#: builtins.c:842
msgid ""
@@ -3493,7 +3690,8 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed otherwise.\n"
+" with each displayed history entry. No time stamps are printed "
+"otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3501,15 +3699,18 @@ msgstr ""
"Mostra ou manipula a lista do histórico.\n"
" \n"
" Mostra a lista do histórico com nºs de linha, prefixando cada entrada\n"
-" modificada com um \"*\". Um argumento de N lista só as últimas N entradas.\n"
+" modificada com um \"*\". Um argumento de N lista só as últimas N "
+"entradas.\n"
" \n"
" Opções:\n"
" -c\tlimpa a lista eliminado todas as entradas\n"
" -d desvio\telimina a entrada do histórico na posição DESVIO.\n"
" \t\tDesvios negativos contam-se do final da lista do histórico\n"
" \n"
-" -a\tacrescenta linhas de histórico desta sessão ao ficheiro de histórico\n"
-" -n\tlê todas as linhas de histórico ainda não lidas do ficheiro de histórico\n"
+" -a\tacrescenta linhas de histórico desta sessão ao ficheiro de "
+"histórico\n"
+" -n\tlê todas as linhas de histórico ainda não lidas do ficheiro de "
+"histórico\n"
" \t\te acrescenta-as à lista de histórico\n"
" -r\tlê o ficheiro de histórico e acrescenta o conteúdo à lista de\n"
" \t\thistórico\n"
@@ -3520,14 +3721,19 @@ msgstr ""
" -s\tacrescenta ARGs à lista de histórico como entrada única\n"
" \n"
" Se NOMEFICH for dado, é usado como ficheiro de histórico. Senão,\n"
-" se FICHHIST tiver um valor, será usado, caso contrário ~/.bash_history.\n"
+" se FICHHIST tiver um valor, será usado, caso contrário ~/."
+"bash_history.\n"
" \n"
-" Se a variável HISTTIMEFORMAT estiver definida e não for nula, o valor é usado\n"
-" como cadeia de formato para strftime(3) para imprimir o carimbo associado\n"
-" a cada entrada de histórico mostrada. Senão, não são imprimidos quaisquer carimbos.\n"
+" Se a variável HISTTIMEFORMAT estiver definida e não for nula, o valor é "
+"usado\n"
+" como cadeia de formato para strftime(3) para imprimir o carimbo "
+"associado\n"
+" a cada entrada de histórico mostrada. Senão, não são imprimidos "
+"quaisquer carimbos.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro."
+" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro."
#: builtins.c:879
msgid ""
@@ -3565,12 +3771,15 @@ msgstr ""
" -r\trea cadeiae saída a tarefas em execução\n"
" -s\trea cadeiae saída a tarefas paradas\n"
" \n"
-" Se -x for usado, COMANDO é executado após todas as especificações de tarefas\n"
-" que aparecem em ARGS terem sido substituídas pela ID de processo do líder de\n"
+" Se -x for usado, COMANDO é executado após todas as especificações de "
+"tarefas\n"
+" que aparecem em ARGS terem sido substituídas pela ID de processo do "
+"líder de\n"
" grupo do processo dessat tarefa.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro.\n"
+" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro.\n"
" Se -x for usado, devolve o estado de saída de COMANDO."
#: builtins.c:906
@@ -3596,12 +3805,14 @@ msgstr ""
" \n"
" Opções:\n"
" -a\tremove todas as tarefas se JOBSPEC não for indicado\n"
-" -h\tmarcar cada JOBSPEC para que SIGHUP não seja enviado para a tarefa\n"
+" -h\tmarcar cada JOBSPEC para que SIGHUP não seja enviado para a "
+"tarefa\n"
" \t\tse a consola receber um SIGHUP\n"
" -r\tremove só tarefas em execução\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja indicada."
+" Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja "
+"indicada."
#: builtins.c:925
msgid ""
@@ -3638,12 +3849,14 @@ msgstr ""
" \t\tassumidos como nºs de sinal para listar os nomes\n"
" -L\tsinónimo de -l\n"
" \n"
-" Mata um interno da consola por dois motivos: permite usar as IDs de tarefa\n"
+" Mata um interno da consola por dois motivos: permite usar as IDs de "
+"tarefa\n"
" em vez de IDs de processo e permite matar processos se o limite de\n"
" processos que pode criar for atingido.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro."
+" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro."
#: builtins.c:949
msgid ""
@@ -3652,7 +3865,8 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are listed\n"
+" grouped into levels of equal-precedence operators. The levels are "
+"listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3691,8 +3905,10 @@ msgstr ""
"Avalia as expressões aritméticas.\n"
" \n"
" Avalia cada ARG como uma expressão aritmética. A avaliação é feita em\n"
-" inteiros de largura fixa sem verificação de transporte, embora a divisão\n"
-" por 0 seja sinalizada como erro. A seguinte lista de operadores é agrupada\n"
+" inteiros de largura fixa sem verificação de transporte, embora a "
+"divisão\n"
+" por 0 seja sinalizada como erro. A seguinte lista de operadores é "
+"agrupada\n"
" em níveis de igual prioridade. Os níveis estão listados\n"
" por ordem de precedência decrescente.\n"
" \n"
@@ -3717,8 +3933,10 @@ msgstr ""
" \t+=, -=, <<=, >>=,\n"
" \t&=, ^=, |=\tatribuição\n"
" \n"
-" As variáveis de consola são permitidas como operandos. O nome da variável\n"
-" é substituído pelo seu valor (convertido em inteiro de largura fixa) dentro\n"
+" As variáveis de consola são permitidas como operandos. O nome da "
+"variável\n"
+" é substituído pelo seu valor (convertido em inteiro de largura fixa) "
+"dentro\n"
" de uma expressão. A variável não tem de ter o seu atributo inteiro\n"
" activado para ser usado numa expressão.\n"
" \n"
@@ -3730,17 +3948,23 @@ msgstr ""
" Se o último ARG for avaliado como 0, let devolve 1; senão let devolve 0."
#: builtins.c:994
+#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with word\n"
+" if the -u option is supplied. The line is split into fields as with "
+"word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" the last NAME. Only the characters found in $IFS are recognized as "
+"word\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY "
+"variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3752,7 +3976,8 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, "
+"unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -3770,32 +3995,40 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times out\n"
-" (in which case it's greater than 128), a variable assignment error occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times "
+"out\n"
+" (in which case it's greater than 128), a variable assignment error "
+"occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"Lê uma linha da entrada padrão e divide-a em campos.\n"
" \n"
" Lê uma linha da entrada padrão ou do descritor de ficheiro FD\n"
" se a opção -u for usada. A linha é dividida em campos como na divisão\n"
-" de palavras e a primeira palavra é atribuída ao primeiro NOME, a segunda\n"
-" ao segundo NOME, e assim por diante, com quaisquer palavras que sobrem \n"
-" atribuídas ao último NOME. Só caracteres encontrados em $IFS são reconhecidos\n"
+" de palavras e a primeira palavra é atribuída ao primeiro NOME, a "
+"segunda\n"
+" ao segundo NOME, e assim por diante, com quaisquer palavras que "
+"sobrem \n"
+" atribuídas ao último NOME. Só caracteres encontrados em $IFS são "
+"reconhecidos\n"
" como delimitadores de palavras.\n"
" \n"
" Se não indicar NOMEs, a linha é armazenada na variável RESPONDER.\n"
" \n"
" Opções:\n"
-" -a matriz\tatribui as palavras lidas a índices sequenciais da MATRIZ\n"
+" -a matriz\tatribui as palavras lidas a índices sequenciais da "
+"MATRIZ\n"
" \t\tcomeçando em zero\n"
-" -d delim\tcontinua até que o primeiro carácter de DELIM seja lido, em vez de\n"
+" -d delim\tcontinua até que o primeiro carácter de DELIM seja lido, "
+"em vez de\n"
" \t\tnewline\n"
" -e\tusa Readline para obter a linha numa consola interactiva\n"
" -i texto\tusa TEXTO como texto inicial para Readline\n"
" -n ncars\tvolta após ler NCARS caracteres em vez de esperar\n"
" \t\tpor newline, mas respeita um delimitador se estiver\n"
" \t\tantes de NCARS caracteres\n"
-" -N ncars\tvolta após ler exactamente NCARS caracteres, a não ser que\n"
+" -N ncars\tvolta após ler exactamente NCARS caracteres, a não ser "
+"que\n"
" \t\tEOF seja encontrado ou a leitura esteja inactiva, ignorando\n"
" \t\tqualquer delimitador\n"
" -p prompt\timprime PROMPT na saída sem newline final antes de\n"
@@ -3813,11 +4046,13 @@ msgstr ""
" -u fd\tlê do descritor de ficheiro FD em vez da entrada padrão\n"
" \n"
" Estado de saída:\n"
-" O código devolvido é zero, a não ser que end-of-file seja encontrado, haja\n"
-" inacção (caso em que é maior que 128), ocorra um erro de atribuição de variável,\n"
+" O código devolvido é zero, a não ser que end-of-file seja encontrado, "
+"haja\n"
+" inacção (caso em que é maior que 128), ocorra um erro de atribuição de "
+"variável,\n"
" ou seja indicado um descritor de ficheiro inválido como argumento de -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3835,9 +4070,10 @@ msgstr ""
" executado dentro da função ou script.\n"
" \n"
" Estado de saída:\n"
-" Devolve N, ou falha se a consola não estiver a executar uma função ou script."
+" Devolve N, ou falha se a consola não estiver a executar uma função ou "
+"script."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3880,7 +4116,8 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero status\n"
+" or zero if no command exited with a non-zero "
+"status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -3904,7 +4141,8 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell "
+"functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -3928,10 +4166,12 @@ msgstr ""
" Opções:\n"
" -a Marca variáveis modificadas ou criadas para exportação.\n"
" -b Notifica o fim da tarefa imediatamente.\n"
-" -e Sai imediatamente se um comando sair com estado diferente de zero.\n"
+" -e Sai imediatamente se um comando sair com estado diferente de "
+"zero.\n"
" -f Desactiva geração de nome de ficheiro (globbing).\n"
" -h Recordar localização de comandos à medida que são procurados.\n"
-" -k Todos os argumentos de atribuição são colocados no ambiente para um\n"
+" -k Todos os argumentos de atribuição são colocados no ambiente para "
+"um\n"
" comando, não só os que precedem o nome do comando.\n"
" -m Activa o controlo de tarefas.\n"
" -n Lê comandos, mas não os executa.\n"
@@ -3948,7 +4188,8 @@ msgstr ""
" history activa histórico de comandos\n"
" ignoreeof a consola não sai após ler EOF\n"
" interactive-comments\n"
-" permite que comentários apareçam em comandos interactivos\n"
+" permite que comentários apareçam em "
+"comandos interactivos\n"
" keyword igual a -k\n"
" monitor igual a -m\n"
" noclobber igual a -C\n"
@@ -3959,11 +4200,16 @@ msgstr ""
" nounset igual a -u\n"
" onecmd igual a -t\n"
" physical igual a -P\n"
-" pipefail o valor devolvido de um pipeline é o estado do\n"
-" último comando a sair com estado não-zero,\n"
-" ou zero se nenhum saiu com estado não-zero\n"
-" posix altera o comportamento do bash onde a operação\n"
-" predefinida diferir da norma Posix para cumprir\n"
+" pipefail o valor devolvido de um pipeline é o estado "
+"do\n"
+" último comando a sair com estado não-"
+"zero,\n"
+" ou zero se nenhum saiu com estado não-"
+"zero\n"
+" posix altera o comportamento do bash onde a "
+"operação\n"
+" predefinida diferir da norma Posix para "
+"cumprir\n"
" a norma\n"
" privileged igual a -p\n"
" verbose igual a -v\n"
@@ -3972,24 +4218,28 @@ msgstr ""
" -p Activado sempre que as ID de utilizador reais e efectivas não\n"
" coincidam. Desactiva o processamento do ficheiro $ ENV e a \n"
" importação de funções da consola. Desligar esta opção faz com\n"
-" que os uid e gid efectivos sejam definidos para os uid e gid reais.\n"
+" que os uid e gid efectivos sejam definidos para os uid e gid "
+"reais.\n"
" -t Sair depois de ler e executar um comando.\n"
" -u Trata as variáveis ​​não definidas como erro ao substituir.\n"
" -v Imprime as linhas de entrada da consola à medida que são lidas.\n"
" -x Imprime comandos e seus argumentos à medida que são executados.\n"
" -B a consola realizará expansão de suporte\n"
-" -C Se definido, não permitir que ficheiros normais existentes sejam\n"
+" -C Se definido, não permitir que ficheiros normais existentes "
+"sejam\n"
" sobrescritos pelo redireccionamento da saída.\n"
" -E se definido, ERR é herdada pelas funções de consola.\n"
" -H Activa estilo ! de substituição do histórico. Esta bandeira\n"
" está activada por predefinição, em consolas interativas.\n"
" -P Se definido, não resolve ligações simbólicas ao executar\n"
" comandos como \"cd\" que altera a pasta actual.\n"
-" -T Se definido, DEBUG e RETURN são herdadas por funções de consola.\n"
+" -T Se definido, DEBUG e RETURN são herdadas por funções de "
+"consola.\n"
" -- Atribui quaisquer outros argumentos aos parâmetros posicionais.\n"
" Se não houver mais argumentos, os parâmetros posicionais\n"
" são limpos.\n"
-" - Atribui quaisquer outros argumentos aos parâmetros posicionais.\n"
+" - Atribui quaisquer outros argumentos aos parâmetros "
+"posicionais.\n"
" As opções -x e -v são desactivadas.\n"
" \n"
" Usar + em vez de - faz com que as bandeiras sejam desactivadas. As\n"
@@ -4001,7 +4251,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve sucesso a não ser que indique uma opção inválida."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4013,7 +4263,8 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that fails,\n"
+" Without options, unset first tries to unset a variable, and if that "
+"fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -4037,14 +4288,16 @@ msgstr ""
" Algumas variáveis não podem ser limpas; veja também \"readonly\".\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja só de leitura."
+" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja "
+"só de leitura."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before "
+"exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -4059,7 +4312,8 @@ msgstr ""
"Define o atributo de exportação em variáveis de consola.\n"
" \n"
" Marca cada NOME para exportação automática para o ambiente de futuros\n"
-" comandos executados. Se VALOR for fornecido, atribui VALOR antes de exportar.\n"
+" comandos executados. Se VALOR for fornecido, atribui VALOR antes de "
+"exportar.\n"
" \n"
" Opções:\n"
" -f\trefere funções de consola\n"
@@ -4069,9 +4323,10 @@ msgstr ""
" Um argumento \"--\" desactiva futuro processamento da opção.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja inválido."
+" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja "
+"inválido."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4101,15 +4356,17 @@ msgstr ""
" -a\trefere a variáveis de matriz indexadas\n"
" -A\trefere a variáveis de matriz associativas\n"
" -f\trefere a funções de consola\n"
-" -p\tmostra uma lista de todas as variáveis ou funções só de leitura,\n"
+" -p\tmostra uma lista de todas as variáveis ou funções só de "
+"leitura,\n"
" \t\tdependendo ou não se a opção -f é indicada\n"
" \n"
" Um argumento \"--\" desactiva futuro processamento da opção.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja inválido."
+" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja "
+"inválido."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4127,7 +4384,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve sucesso a não ser que N seja negativo ou maior que $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4151,7 +4408,7 @@ msgstr ""
" Devolve o estado do último comando executado em NOMEFICH; falha se\n"
" NOMEFICH não pode ser lido."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4173,9 +4430,10 @@ msgstr ""
" -f\tforçar a suspensão, mesmo que seja uma consola com sessão\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou ocorra um erro."
+" Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou "
+"ocorra um erro."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4209,7 +4467,8 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last read.\n"
+" -N FILE True if the file has been modified since it was last "
+"read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4230,7 +4489,8 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 lexicographically.\n"
+" True if STRING1 sorts before STRING2 "
+"lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4258,8 +4518,10 @@ msgstr ""
"Avalia a expressão condicional.\n"
" \n"
" Sai com estado 0 (verdadeiro) ou 1 (falso) dependendo da\n"
-" avaliação de EXPR. As expressões podem ser unárias ou binárias. Expressões\n"
-" uinárias são frequentemente usadas para examinar o estado de um ficheiro. Há\n"
+" avaliação de EXPR. As expressões podem ser unárias ou binárias. "
+"Expressões\n"
+" uinárias são frequentemente usadas para examinar o estado de um "
+"ficheiro. Há\n"
" também operadores de cadeias e operadores de comparação numérica.\n"
" \n"
" O comportamento do teste depende do número de argumentos. Leia a\n"
@@ -4269,14 +4531,17 @@ msgstr ""
" \n"
" -a FICHEIRO Verdadeiro se o ficheiro existir.\n"
" -b FICHEIRO Verdadeiro se o ficheiro for bloqueio especial.\n"
-" -c FICHEIRO Verdadeiro se o ficheiro for especial de caracteres.\n"
+" -c FICHEIRO Verdadeiro se o ficheiro for especial de "
+"caracteres.\n"
" -d FICHEIRO Verdadeiro se o ficheiro for uma pasta.\n"
" -e FICHEIRO Verdadeiro se o ficheiro existir.\n"
-" -f FICHEIRO Verdadeiro se o ficheiro existe e é um ficheiro normal.\n"
+" -f FICHEIRO Verdadeiro se o ficheiro existe e é um ficheiro "
+"normal.\n"
" -g FICHEIRO Verdadeiro se o ficheiro for set-group-id.\n"
" -h FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n"
" -L FICHEIRO Verdadeiro se o ficheiro for uma ligação simbólica.\n"
-" -k FICHEIRO Verdadeiro se o ficheiro tiver o bit \"sticky\" definido.\n"
+" -k FICHEIRO Verdadeiro se o ficheiro tiver o bit \"sticky\" "
+"definido.\n"
" -p FICHEIRO Verdadeiro se o ficheiro for um pipe com nome.\n"
" -r FICHEIRO Verdadeiro se o ficheiro for legível.\n"
" -s FICHEIRO Verdadeiro se o ficheiro existe e não está vazio.\n"
@@ -4285,16 +4550,23 @@ msgstr ""
" -u FICHEIRO Verdadeiro se o ficheiro for set-user-id.\n"
" -w FICHEIRO Verdadeiro se o ficheiro for gravável por si.\n"
" -x FICHEIRO Verdadeiro se o ficheiro for executável por si.\n"
-" -O FICHEIRO Verdadeiro se o ficheiro for efectivamente sua propriedade.\n"
-" -G FICHEIRO Verdadeiro se o ficheiro for efectivamente propriedade do seu grupo.\n"
-" -N FICHEIRO Verdadeiro se o ficheiro foi modificado desde a última vez que foi lido.\n"
+" -O FICHEIRO Verdadeiro se o ficheiro for efectivamente sua "
+"propriedade.\n"
+" -G FICHEIRO Verdadeiro se o ficheiro for efectivamente "
+"propriedade do seu grupo.\n"
+" -N FICHEIRO Verdadeiro se o ficheiro foi modificado desde a "
+"última vez que foi lido.\n"
" \n"
-" FICHEIRO1 -nt FICHEIRO2 Verdadeiro se o ficheiro1 for mais novo que\n"
-" o ficheiro2 (de acordo com a data de modificação).\n"
+" FICHEIRO1 -nt FICHEIRO2 Verdadeiro se o ficheiro1 for mais novo "
+"que\n"
+" o ficheiro2 (de acordo com a data "
+"de modificação).\n"
" \n"
-" FICHEIRO1 -ot FICHEIRO2 Verdadeiro se ficheiro1 for mais antigo que o ficheiro2.\n"
+" FICHEIRO1 -ot FICHEIRO2 Verdadeiro se ficheiro1 for mais antigo que "
+"o ficheiro2.\n"
" \n"
-" FICHEIRO1 -ef FICHEIRO2 Verdadeiro se ficheiro1 for uma ligação rígida a file2.\n"
+" FICHEIRO1 -ef FICHEIRO2 Verdadeiro se ficheiro1 for uma ligação "
+"rígida a file2.\n"
" \n"
" Operadores de cadeias:\n"
" \n"
@@ -4308,15 +4580,20 @@ msgstr ""
" CADEIA1 != CADEIA2\n"
" Verdadeiro se as cadeias não são iguais.\n"
" CADEIA1 < CADEIA2\n"
-" Verdadeiro se CADEIA1 ficar antes de CADEIA2 lexicamente.\n"
+" Verdadeiro se CADEIA1 ficar antes de CADEIA2 "
+"lexicamente.\n"
" CADEIA1 > CADEIA2\n"
-" Verdadeiro se CADEIA1 ficar após CADEIA2 lexicamente.\n"
+" Verdadeiro se CADEIA1 ficar após CADEIA2 "
+"lexicamente.\n"
" \n"
" Outros operadores:\n"
" \n"
-" -o OPÇÃO Verdadeiro se a opção de consola OPÇÃO está activada.\n"
-" -v VAR Verdadeiro se a variável de consola VAR estiver definida.\n"
-" -R VAR Verdadeiro se a variável de consola VAR estiver definida e for um nome\n"
+" -o OPÇÃO Verdadeiro se a opção de consola OPÇÃO está "
+"activada.\n"
+" -v VAR Verdadeiro se a variável de consola VAR estiver "
+"definida.\n"
+" -R VAR Verdadeiro se a variável de consola VAR estiver "
+"definida e for um nome\n"
" referência.\n"
" ! EXPR Verdadeiro se EXPR for falso.\n"
" EXPR1 -a EXPR2 Verdadeiro se EXPR1 e EXPR2 forem verdadeiros.\n"
@@ -4325,15 +4602,17 @@ msgstr ""
" arg1 OP arg2 Testes aritméticos. OP é um de -eq, -ne,\n"
" -lt, -le, -gt, ou -ge.\n"
" \n"
-" Operadores binários aritméticos devolvem verdadeiro se ARG1 for igual, não\n"
+" Operadores binários aritméticos devolvem verdadeiro se ARG1 for igual, "
+"não\n"
" igual, menor que, menor ou igual que, maior que ou maior ou igual que\n"
" ARG2.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso se EXPR for avaliada como verdadeiro; falha se EXPR for\n"
+" Devolve sucesso se EXPR for avaliada como verdadeiro; falha se EXPR "
+"for\n"
" avaliado como falso ou for indicado um argumento inválido."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4345,11 +4624,12 @@ msgstr ""
" Este é um sinónimo para o interno \"test\", mas o último argumento tem\n"
" de ser um \"]\" literal, para fechar o \"[\" aberto."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of its\n"
+" Prints the accumulated user and system times for the shell and all of "
+"its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4357,17 +4637,19 @@ msgid ""
msgstr ""
"Mostrar tempos de processo.\n"
" \n"
-" Imprime os tempos acumulados de utilizador e sistema para a consola e todos\n"
+" Imprime os tempos acumulados de utilizador e sistema para a consola e "
+"todos\n"
" os seus processos-filho.\n"
" \n"
" Estado de saída:\n"
" Sempre com sucesso."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives signals\n"
+" Defines and activates handlers to be run when the shell receives "
+"signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4376,26 +4658,34 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
-" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
+"If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
+"If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
+"a\n"
+" script run by the . or source builtins finishes executing. A "
+"SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause "
+"the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands associated\n"
+" If no arguments are supplied, trap prints the list of commands "
+"associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\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."
+" Returns success unless a SIGSPEC is invalid or an invalid option is "
+"given."
msgstr ""
"Capturar sinais e outros eventos.\n"
" \n"
@@ -4404,32 +4694,40 @@ msgstr ""
" \n"
" ARG é um comando a ser lido e executado quando a consola recebe o(s)\n"
" sinal(is) SIGNAL_SPEC. Se ARG estiver ausente (e um único SIGNAL_SPEC\n"
-" for fornecido) ou \"-\", cada sinal especificado é reposto no seu valor\n"
+" for fornecido) ou \"-\", cada sinal especificado é reposto no seu "
+"valor\n"
" original. Se ARG for a cadeia nula, cada SIGNAL_SPEC será ignorado\n"
" pela consola e pelos comandos que chama.\n"
" \n"
" Se um SIGNAL_SPEC for EXIT (0) ARG é executado na saída da consola. Se\n"
" SIGNAL_SPEC é DEBUG, ARG é executado antes de cada comando simples. Se\n"
-" SIGNAL_SPEC é RETURN, ARG é executado cada vez que uma função de consola\n"
-" ou um script executado pelo . ou os internos terminam a execução. SIGNAL_SPEC\n"
-" de ERR significa executar ARG cada vez que uma falha do comando faça com\n"
+" SIGNAL_SPEC é RETURN, ARG é executado cada vez que uma função de "
+"consola\n"
+" ou um script executado pelo . ou os internos terminam a execução. "
+"SIGNAL_SPEC\n"
+" de ERR significa executar ARG cada vez que uma falha do comando faça "
+"com\n"
" que a consola sair quando a opção -e está activa.\n"
" \n"
" Se nenhum argumento for fornecido, trap imprime a lista de comandos \n"
" associados a cada sinal.\n"
" \n"
" Opções:\n"
-" -l imprime uma lista de nomes de sinais e seus números correspondentes\n"
+" -l imprime uma lista de nomes de sinais e seus números "
+"correspondentes\n"
" -p mostra os comandos trap associados a cada SIGNAL_SPEC\n"
" \n"
-" Cada SIGNAL_SPEC é um nome de sinal em <signal.h> ou um número de sinal.\n"
-" Os nomes dos sinais são insensíveis a maiúsculas e o prefixo SIG é opcional.\n"
+" Cada SIGNAL_SPEC é um nome de sinal em <signal.h> ou um número de "
+"sinal.\n"
+" Os nomes dos sinais são insensíveis a maiúsculas e o prefixo SIG é "
+"opcional.\n"
" Um sinal pode ser enviado para a consola com \"kill -signal $$\".\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma opção inválida."
+" Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma "
+"opção inválida."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4455,7 +4753,8 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not found."
+" Returns success if all of the NAMEs are found; fails if any are not "
+"found."
msgstr ""
"Mostra informações sobre o tipo de comando.\n"
" \n"
@@ -4472,8 +4771,10 @@ msgstr ""
" \t\tque seria executado\n"
" -p\tdevolve o nome do ficheiro em disco que seria executado,\n"
" \t\tou nada se \"type -t NOME\" não devolver \"file\"\n"
-" -t\tdevolve uma só palavra de entre \"alias\", \"keyword\", \"function\"\n"
-" \t\t\"builtin\", \"file\" ou \"\", se NOME for um aliás, palavra reservada\n"
+" -t\tdevolve uma só palavra de entre \"alias\", \"keyword\", "
+"\"function\"\n"
+" \t\t\"builtin\", \"file\" ou \"\", se NOME for um aliás, palavra "
+"reservada\n"
" \t\tda consola, função de consola, interno da consola, ficheiro em\n"
" \t\tdisco, ou não encontrados, respectivamente\n"
" \n"
@@ -4481,13 +4782,15 @@ msgstr ""
" Nome do comando NOME a interpretar.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não for."
+" Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não "
+"for."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and processes\n"
+" Provides control over the resources available to the shell and "
+"processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -4533,7 +4836,8 @@ msgid ""
msgstr ""
"Modifica os limites de recursos da consola.\n"
" \n"
-" Fornece controlo sobre os recursos disponíveis para consola e processos\n"
+" Fornece controlo sobre os recursos disponíveis para consola e "
+"processos\n"
" que cria, em sistemas que permitem esse controlo.\n"
" \n"
" Opções:\n"
@@ -4544,7 +4848,8 @@ msgstr ""
" -c\to tamanho máximo dos ficheiros núcleo criados\n"
" -d\to tamanho máximo do segmento de dados de um processo\n"
" -e\ta prioridade máxima de agendamento (\"nice\")\n"
-" -f\to tamanho máximo dos ficheiros escritos pela consola e seus filhos\n"
+" -f\to tamanho máximo dos ficheiros escritos pela consola e seus "
+"filhos\n"
" -i\to número máximo de sinais pendentes\n"
" -k\to número máximo de kqueues alocados para este processo\n"
" -l\to tamanho máximo que um processo pode bloquear na memória\n"
@@ -4559,25 +4864,30 @@ msgstr ""
" -v\to tamanho da memória virtual\n"
" -x\to número máximo de bloqueios de ficheiros\n"
" -P\to número máximo de pseudo-terminais\n"
-" -R\to tempo máximo que um processo em tempo real pode executar antes de bloquear\n"
+" -R\to tempo máximo que um processo em tempo real pode executar antes "
+"de bloquear\n"
" -T\to número máximo de threads\n"
" \n"
" Nem todas as opções estão disponíveis em todas as plataformas.\n"
" \n"
" Se LIMIT for indicada, é o novo valor do recurso especificado; Os\n"
" valores LIMIT especiais \"soft\", \"hard\" e \"unlimited\" representam\n"
-" o limite flexível actual, o limite rígido actual e nenhum limite, respectivamente.\n"
+" o limite flexível actual, o limite rígido actual e nenhum limite, "
+"respectivamente.\n"
" Caso contrário, é imprimido o valor actual do recurso especificado. Se\n"
" nenhuma opção for indicada, então -f é assumido.\n"
" \n"
-" Os valores estão em incrementos de 1024 bytes, exceto para -t, que é em segundos,\n"
-" -p, que é em incrementos de 512 bytes e -u, que é um número de processos\n"
+" Os valores estão em incrementos de 1024 bytes, exceto para -t, que é em "
+"segundos,\n"
+" -p, que é em incrementos de 512 bytes e -u, que é um número de "
+"processos\n"
" sem escala.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que seja indicada uma opção inválida ou ocorra um erro."
+" Devolve sucesso a não ser que seja indicada uma opção inválida ou "
+"ocorra um erro."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4596,36 +4906,45 @@ msgid ""
msgstr ""
"Mostrar ou definir a máscara do modo de ficheiro.\n"
" \n"
-" Define a máscara do utilizador de criação de ficheiro para MODO. Se MODO\n"
+" Define a máscara do utilizador de criação de ficheiro para MODO. Se "
+"MODO\n"
" for omitido, imprime o valor actual da máscara.\n"
" \n"
" Se MODO começa com um dígito, é interpretado como um número octal;\n"
-" caso contrário, é uma cadeia de modo simbólico como a aceite por chmod(1).\n"
+" caso contrário, é uma cadeia de modo simbólico como a aceite por "
+"chmod(1).\n"
" \n"
" Opções:\n"
-" -p\tse MODO for omitido, saída de forma a que possa ser reutilizado como entrada\n"
-" -S\ttorna a saída simbólica; caso contrário, a saída é um número octal\n"
+" -p\tse MODO for omitido, saída de forma a que possa ser reutilizado "
+"como entrada\n"
+" -S\ttorna a saída simbólica; caso contrário, a saída é um número "
+"octal\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que MODO seja inválido ou indique uma opção inválida."
+" Devolve sucesso a não ser que MODO seja inválido ou indique uma opção "
+"inválida."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or a\n"
+" Waits for each process identified by an ID, which may be a process ID or "
+"a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for a single job from the list of IDs,\n"
-" or, if no IDs are supplied, for the next job to complete and returns its\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
" exit status.\n"
" \n"
" If the -p option is supplied, the process or job identifier of the job\n"
" for which the exit status is returned is assigned to the variable VAR\n"
-" named by the option argument. The variable will be unset initially, before\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
@@ -4638,52 +4957,67 @@ msgid ""
msgstr ""
"Aguarda a conclusão da tarefa e devolve o estado de saída.\n"
" \n"
-" Espera por cada processo identificado por uma ID, que pode ser uma ID de\n"
-" processo ou uma especificação de tarefa e relata o estado final. Se não\n"
-" for dada uma ID, aguarda por todos os processos-filho actualmente activos e o\n"
-" estado de saída é zero. Se ID for uma especificação de tarefa, espera por\n"
+" Espera por cada processo identificado por uma ID, que pode ser uma ID "
+"de\n"
+" processo ou uma especificação de tarefa e relata o estado final. Se "
+"não\n"
+" for dada uma ID, aguarda por todos os processos-filho actualmente "
+"activos e o\n"
+" estado de saída é zero. Se ID for uma especificação de tarefa, espera "
+"por\n"
" todos os processos no pipeline da tarefa.\n"
" \n"
-" Se a opção -n for fornecida, espera por uma tarefa única da lista de IDs ou\n"
+" Se a opção -n for fornecida, espera por uma tarefa única da lista de "
+"IDs ou\n"
" se não indicar IDs, pela conclusão da tarefa seguinte devolve\n"
" o seu estado de saída.\n"
" \n"
-" Se a opção -p for indicada, o identificador de processo ou tarefa da tarefa\n"
+" Se a opção -p for indicada, o identificador de processo ou tarefa da "
+"tarefa\n"
" para a qual foi devolvido o estado de saída é atribuído à variável VAR\n"
-" nomeada pelo argumento da opção. A variável estará indefinida inicialmente,\n"
+" nomeada pelo argumento da opção. A variável estará indefinida "
+"inicialmente,\n"
" antes de qualquer atribuição. Útil só quando a opção -n é indicada.\n"
" \n"
-" Se a opção -f for indicada e o controlo de tarefas estiver activo, espera que\n"
-" a ID especificada termine, em vez de esperar por uma alteração de estado.\n"
+" Se a opção -f for indicada e o controlo de tarefas estiver activo, "
+"espera que\n"
+" a ID especificada termine, em vez de esperar por uma alteração de "
+"estado.\n"
" \n"
" Estado de saída:\n"
-" Devolve o estado da última ID; falha se a ID for inválida ou for indicada\n"
+" Devolve o estado da última ID; falha se a ID for inválida ou for "
+"indicada\n"
" uma opção inválida, ou se -n for indicada e a consola não tiver filhos\n"
" inesperados."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination status.\n"
+" Waits for each process specified by a PID and reports its termination "
+"status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an "
+"invalid\n"
" option is given."
msgstr ""
"Aguarda a conclusão do processo e devolve o estado de saída.\n"
" \n"
-" Espera por cada processo especificado por uma PID e reporta o estado final.\n"
-" Se PID não for dada, aguarda por todos os processos-filho actualmente activos,\n"
+" Espera por cada processo especificado por uma PID e reporta o estado "
+"final.\n"
+" Se PID não for dada, aguarda por todos os processos-filho actualmente "
+"activos,\n"
" e o estado devolvido é zero. A PID tem de ser uma ID de processo.\n"
" \n"
" Estado de saída:\n"
-" Devolve o estado da última PID; falha se PID for inválido ou for indicada\n"
+" Devolve o estado da última PID; falha se PID for inválido ou for "
+"indicada\n"
" uma opção inválida."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4697,15 +5031,18 @@ msgid ""
msgstr ""
"Executa comandos para cada membro numa lista.\n"
" \n"
-" O ciclo \"for\" executa uma seqüência de comandos para cada membro numa\n"
-" lista de itens. Se \"in PALAVRAS ...;\" não estiver presente, \" in \"$@\" \" é\n"
-" assumido. Para cada elemento em PALAVRAS, NOME está definido para esseelemento,\n"
+" O ciclo \"for\" executa uma seqüência de comandos para cada membro "
+"numa\n"
+" lista de itens. Se \"in PALAVRAS ...;\" não estiver presente, \" in \"$@"
+"\" \" é\n"
+" assumido. Para cada elemento em PALAVRAS, NOME está definido para "
+"esseelemento,\n"
" e os COMANDOS são executados.\n"
" \n"
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4729,13 +5066,14 @@ msgstr ""
" \t\tCOMANDOS\n"
" \t\t(( EXP3 ))\n"
" \tdone\n"
-" EXP1, EXP2 e EXP3 são expressões aritméicas. Se alguma delas for omitida\n"
+" EXP1, EXP2 e EXP3 são expressões aritméicas. Se alguma delas for "
+"omitida\n"
" comporta-se como se fosse avaliada como 1.\n"
" \n"
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4771,7 +5109,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4789,7 +5127,8 @@ msgstr ""
"Reporta o tempo consumido pela execução do pipeline.\n"
" \n"
" Executa PIPELINE e imprime um resumo do tempo real, tempo de CPU do,\n"
-" utilizador e tempo de CPU do sistema na execução de PIPELINE quando terminar.\n"
+" utilizador e tempo de CPU do sistema na execução de PIPELINE quando "
+"terminar.\n"
" \n"
" Opções:\n"
" -p\timprime o resumo do tempo no formato portátil Posix\n"
@@ -4799,7 +5138,7 @@ msgstr ""
" Estado de saída:\n"
" O estado devolvido é o estado de PIPELINE."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4817,16 +5156,21 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then "
+"the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
+"is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of the\n"
-" entire construct is the exit status of the last command executed, or zero\n"
+" `then COMMANDS' list is executed and the if command completes. "
+"Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of "
+"the\n"
+" entire construct is the exit status of the last command executed, or "
+"zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -4835,22 +5179,29 @@ msgstr ""
"Executa comandos com base em condicional.\n"
" \n"
" A lista \"if COMANDOS\" é executada. Se o estado de saída for zero, é\n"
-" executada a lista \"then COMANDOS\". Caso contrário, cada lista \"elif COMANDOS\"\n"
-" é executado por sua vez e se o estado de saída for zero, a correspondente\n"
-" lista \"then COMANDOS\" é executada e o comando if é concluído. De outra forma,\n"
-" a lista \"else COMANDOS\" é executada, se presente. O estado de saída da\n"
-" construção inteira é o estado de saída do último comando executado, ou zero\n"
+" executada a lista \"then COMANDOS\". Caso contrário, cada lista \"elif "
+"COMANDOS\"\n"
+" é executado por sua vez e se o estado de saída for zero, a "
+"correspondente\n"
+" lista \"then COMANDOS\" é executada e o comando if é concluído. De "
+"outra forma,\n"
+" a lista \"else COMANDOS\" é executada, se presente. O estado de saída "
+"da\n"
+" construção inteira é o estado de saída do último comando executado, ou "
+"zero\n"
" se nenhuma condição for verdadeira.\n"
" \n"
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4863,12 +5214,14 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4881,7 +5234,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4895,7 +5248,8 @@ msgid ""
msgstr ""
"Cria um co-processo chamado NOME.\n"
" \n"
-" Executa COMANDO assincronamente, com a saída e a entrada padrão ligadas\n"
+" Executa COMANDO assincronamente, com a saída e a entrada padrão "
+"ligadas\n"
" via pipe a descritores de ficheiro atribuídos a índices 0 e 1 de uma \n"
" variável de matriz NOME na consola em execução.\n"
" O NOME predefinido é \"COPROC\".\n"
@@ -4903,12 +5257,13 @@ msgstr ""
" Estado de saída:\n"
" O comando coproc devolve um estado de saída 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is "
+"invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -4925,7 +5280,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve sucesso a não ser que NOME seja só de leitura."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4943,7 +5298,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4967,7 +5322,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado da tarefa retomada."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4986,13 +5341,16 @@ msgstr ""
" Estado de saída:\n"
" Devolve 1 se EXPRESSÃO avaliar como 0; senão, devolve 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries used\n"
-" by the `test' builtin, and may be combined using the following operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the "
+"conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries "
+"used\n"
+" by the `test' builtin, and may be combined using the following "
+"operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -5013,22 +5371,29 @@ msgstr ""
"Executa o comando condicional.\n"
" \n"
" Devolve um estado de 0 ou 1, dependendo da avaliação da expressão\n"
-" condicional EXPRESSÃO. As expressões são compostas pelas mesmas primárias\n"
-" usadas pelo interno \"test\" e pode ser combinado com os seguintes operadores:\n"
+" condicional EXPRESSÃO. As expressões são compostas pelas mesmas "
+"primárias\n"
+" usadas pelo interno \"test\" e pode ser combinado com os seguintes "
+"operadores:\n"
" \n"
" ( EXPRESSÃO )\tDevolve o valor de EXPRESSÃO\n"
" ! EXPRESSÃO\t\tVerdadeiro se EXPRESSÃO for falsa; senão falso\n"
-" EXPR1 && EXPR2\tVerdadeiro se EXPR1 e EXPR2 forem verdadeiras; senão falso\n"
-" EXPR1 || EXPR2\tVerdadeiro se EXPR1 ou EXPR2 forem verdadeiras; senão falso\n"
-" \n"
-" Quando os operadores \"==\" e \"! =\" são usados, a cadeia à direita do operador\n"
-" é usada como padrão e é feita a comparação de padrões. Quando o operador \"= ~\"\n"
-" é usado, a cadeia à direita do operador é comparada como expressão regular.\n"
+" EXPR1 && EXPR2\tVerdadeiro se EXPR1 e EXPR2 forem verdadeiras; senão "
+"falso\n"
+" EXPR1 || EXPR2\tVerdadeiro se EXPR1 ou EXPR2 forem verdadeiras; "
+"senão falso\n"
+" \n"
+" Quando os operadores \"==\" e \"! =\" são usados, a cadeia à direita do "
+"operador\n"
+" é usada como padrão e é feita a comparação de padrões. Quando o "
+"operador \"= ~\"\n"
+" é usado, a cadeia à direita do operador é comparada como expressão "
+"regular.\n"
" \n"
" Os operadores && e || não avaliam EXPR2 se EXPR1 for suficiente para\n"
" determinar o valor da expressão."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5086,9 +5451,11 @@ msgstr ""
" BASH_VERSION\tInformações de versão para esta bash.\n"
" CDPATH\tUma lista de pastas separadas por \":\" para procurar\n"
" \t\tpor pastas dadas como argumentos a \"cd\".\n"
-" GLOBIGNORE\tUma lista de padrões separada por \":\" que descreve nomes de\n"
+" GLOBIGNORE\tUma lista de padrões separada por \":\" que descreve nomes "
+"de\n"
" ficheiro a ignorar pela expansão do nome do caminho.\n"
-" HISTFILE\tNome de ficheiro onde o seu histórico de comandos é armazenado.\n"
+" HISTFILE\tNome de ficheiro onde o seu histórico de comandos é "
+"armazenado.\n"
" HISTFILESIZE\tNúmero máximo de linhas que este ficheiro pode conter.\n"
" HISTSIZE\tNúmero máximo de linhas de histórico a que uma consola em \n"
" \t\texecução pode aceder.\n"
@@ -5101,7 +5468,8 @@ msgstr ""
" \t\tvazia antes que a consola saia (predefinição 10).\n"
" \t\tQuando não definido, EOF significa o fim da entrada.\n"
" MACHTYPE\tDescrição do sistema actual em que a bash está em execução.\n"
-" MAILCHECK\tFrequência, em segundos, com que a bash procura novo correio.\n"
+" MAILCHECK\tFrequência, em segundos, com que a bash procura novo "
+"correio.\n"
" MAILPATH\tLista de ficheiros separados por \":\" onde a bash procura\n"
" \t\tnovas mensagens.\n"
" OSTYPE\tVersão Unix em que esta versão da bash está em execução.\n"
@@ -5124,15 +5492,17 @@ msgstr ""
" \t\t\"substring\" significa que a palavra de comando deve ser igual\n"
" \t\ta uma sub-cadeia da tarefa. Qualquer outro valor significa que\n"
" \t\to comando deve ser um prefixo de uma tarefa interrompida.\n"
-" histchars\tCaracteres que controlam a expansão do histórico e substituições\n"
+" histchars\tCaracteres que controlam a expansão do histórico e "
+"substituições\n"
" \t\trápidas. O primeiro carácter é o carácter de subtituição do\n"
" \t\thistórico, normalmente \"!\". O 2º é o de substituição rápida,\n"
" \t\thabitualmente \"^\". O terceiro é o comentário do histórico,\n"
" \t\tnormalmente \"#\".\n"
-" HISTIGNORE\tLista de padrões separada por \":\" usados para decidir quais\n"
+" HISTIGNORE\tLista de padrões separada por \":\" usados para decidir "
+"quais\n"
" \t\tos comandos que devem ser gravados na lista de histórico.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5190,7 +5560,7 @@ msgstr ""
" Devolve sucesso a não ser que indique um argumento inválido ou a\n"
" troca de pastas falhe."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5240,7 +5610,7 @@ msgstr ""
" Devolve sucesso a não ser que indique um argumento inválido ou a troca\n"
" de pastas falhe."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5292,9 +5662,10 @@ msgstr ""
" \t\tpor zero.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro"
+" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro"
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5330,7 +5701,8 @@ msgstr ""
" Devolve sucesso se OPTNOME estiver activado; falha se indicar uma opção\n"
" inválida ou OPTNOME esteja desactivada."
-#: builtins.c:1937
+#: builtins.c:1938
+#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5338,27 +5710,36 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: plain\n"
-" characters, which are simply copied to standard output; character escape\n"
+" FORMAT is a character string which contains three types of objects: "
+"plain\n"
+" characters, which are simply copied to standard output; character "
+"escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next successive\n"
+" format specifications, each of which causes printing of the next "
+"successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in printf(1),\n"
+" In addition to the standard format specifications described in "
+"printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a "
+"format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as appropriate,\n"
+" specifications behave as if a zero value or null string, as "
+"appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or assignment\n"
+" Returns success unless an invalid option is given or a write or "
+"assignment\n"
" error occurs."
msgstr ""
"Formata e imprime ARGUMENTOS sob controlo do FORMATO.\n"
@@ -5369,33 +5750,43 @@ msgstr ""
" \n"
" FORMATO é uma cadeia de caracteres que contém três tipos de objectos: \n"
" caracteres simples, que são simplesmente copiados para a saída padrão;\n"
-" sequências de escape, que são convertidas e copiadas para a saída padrão; e\n"
-" especificações de formato, cada uma das quais causa a impressão do argumento\n"
+" sequências de escape, que são convertidas e copiadas para a saída "
+"padrão; e\n"
+" especificações de formato, cada uma das quais causa a impressão do "
+"argumento\n"
" sucessivo seguinte.\n"
" \n"
" Além das especificações de formato padrão descritas em printf (1),\n"
" printf interpreta:\n"
" \n"
" %b\texpande sequências de escape para o argumento correspondente\n"
-" %q\tcita o argumento de forma a ser reutilizado como entrada de consola\n"
-" %(fmt)T\timprime a cadeia de data-hora resultante da utilização do FMT\n"
+" %q\tcita o argumento de forma a ser reutilizado como entrada de "
+"consola\n"
+" %(fmt)T\timprime a cadeia de data-hora resultante da utilização do "
+"FMT\n"
" \t\tcomo formato para strftime(3)\n"
" \n"
-" O formato é reutilizado conforme necessário para consumir todos os argumentos.\n"
-" E se há menos argumentos do que o formato requer, especificações de formato\n"
-" extra comportam-se como um valor zero ou uma cadeia nula, conforme apropriado,\n"
+" O formato é reutilizado conforme necessário para consumir todos os "
+"argumentos.\n"
+" E se há menos argumentos do que o formato requer, especificações de "
+"formato\n"
+" extra comportam-se como um valor zero ou uma cadeia nula, conforme "
+"apropriado,\n"
" tenha sido fornecido.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro de\n"
+" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro de\n"
" escrita ou atribuição."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no options\n"
-" are supplied, existing completion specifications are printed in a way that\n"
+" For each NAME, specify how arguments are to be completed. If no "
+"options\n"
+" are supplied, existing completion specifications are printed in a way "
+"that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -5410,20 +5801,25 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are supplied,\n"
-" the -D option takes precedence over -E, and both take precedence over -I.\n"
+" uppercase-letter options are listed above. If multiple options are "
+"supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
"Especifica como os argumentos devem ser concluídos por Readline.\n"
" \n"
-" Para cada NOME, especifica como os argumentos devem ser concluídos. Se não \n"
-" fornecer opções, as especificações de conclusão existentes são imprimidas\n"
+" Para cada NOME, especifica como os argumentos devem ser concluídos. Se "
+"não \n"
+" fornecer opções, as especificações de conclusão existentes são "
+"imprimidas\n"
" de forma a permitir que sejam reutilizadas como entrada.\n"
" \n"
" Opções:\n"
-" -p\timprime especificações de conclusão existentes em formato reutilizável\n"
+" -p\timprime especificações de conclusão existentes em formato "
+"reutilizável\n"
" -r\tremove uma especificação de conclusão para cada NOME, ou, se não\n"
" \t\tforneceu NOMEs, todas as especificações de conclusão\n"
" -D\taplica as conclusões e acções como predefinição para comandos\n"
@@ -5434,18 +5830,22 @@ msgstr ""
" \t\tcomando)\n"
" \n"
" Quando a conclusão é tentada, as acções são aplicadas na ordem em que \n"
-" as opções de letras maiúsculas estão listadas acima. Se forem fornecidas múltiplas\n"
-" opções, a opção -D toma precedência sobre -E e ambas têm precedência sobre -I.\n"
+" as opções de letras maiúsculas estão listadas acima. Se forem fornecidas "
+"múltiplas\n"
+" opções, a opção -D toma precedência sobre -E e ambas têm precedência "
+"sobre -I.\n"
" \n"
" Estado da saída:\n"
-"devolve sucesso a não ser que seja fornecida uma opção inválida ou ocorra um erro."
+"devolve sucesso a não ser que seja fornecida uma opção inválida ou ocorra um "
+"erro."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches against\n"
+" completions. If the optional WORD argument is supplied, matches "
+"against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -5458,15 +5858,19 @@ msgstr ""
" são geradas comparações com PALAVRA.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro."
+" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
+"erro."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, print\n"
-" the completion options for each NAME or the current completion specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are "
+"supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, "
+"print\n"
+" the completion options for each NAME or the current completion "
+"specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5490,9 +5894,12 @@ msgid ""
msgstr ""
"Modifica ou mostra as opções de conclusão.\n"
" \n"
-" Modifica as opções de conclusão para cada NOME, ou, se não fornecer NOME,\n"
-" a conclusão actualmente em execução. Se nenhuma OPÇÃO for fornecida, imprime\n"
-" as opções de conclusão para cada NOME ou a especificação de conclusão actual.\n"
+" Modifica as opções de conclusão para cada NOME, ou, se não fornecer "
+"NOME,\n"
+" a conclusão actualmente em execução. Se nenhuma OPÇÃO for fornecida, "
+"imprime\n"
+" as opções de conclusão para cada NOME ou a especificação de conclusão "
+"actual.\n"
" \n"
" Opções:\n"
" \t-o opção\tDefine opção de conclusão OPÇÃO para cada NOME\n"
@@ -5504,31 +5911,40 @@ msgstr ""
" \n"
" Argumentos:\n"
" \n"
-" Cada NOME refere-se a um comando para o qual uma especificação de conclusão\n"
-" deve ter sido anteriormente definida usando o interno \"complete\". Se não\n"
+" Cada NOME refere-se a um comando para o qual uma especificação de "
+"conclusão\n"
+" deve ter sido anteriormente definida usando o interno \"complete\". Se "
+"não\n"
" forneceu NOMEs, compopt tem de ser chamado por uma função actualmente a\n"
-" gerar conclusões e as opções para esse gerador de conclusões actualmente\n"
+" gerar conclusões e as opções para esse gerador de conclusões "
+"actualmente\n"
" em execução são modificadas.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida ou NOME não tenha\n"
+" Devolve sucesso a não ser que indique uma opção inválida ou NOME não "
+"tenha\n"
" uma especificação de conclusão definida."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
+" Read lines from the standard input into the indexed array variable "
+"ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable "
+"MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
+"copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
+"index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard "
+"input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -5541,25 +5957,31 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY "
+"before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly "
+"or\n"
" not an indexed array."
msgstr ""
"Lê linhas da entrada padrão para uma variável de matriz indexada.\n"
" \n"
-" Lê linhas da entrada padrão para a variável de matriz indexada MATRIZ, ou\n"
-" do descritor de ficheiro FD se a opção -u for fornecida. A variável MAPFILE\n"
+" Lê linhas da entrada padrão para a variável de matriz indexada MATRIZ, "
+"ou\n"
+" do descritor de ficheiro FD se a opção -u for fornecida. A variável "
+"MAPFILE\n"
" é a MATRIZ predefinida.\n"
" \n"
" Opções:\n"
" -d delim\tUsa DELIM para terminar as linhas, em vez de nova linha\n"
" -n total\tCopia no máximo TOTAL linhas. Se TOTAL for 0, copia todas\n"
-" -O origem\tComeça a atribuir a MATRIZ no índice ORIGEM. A predefinição é 0\n"
+" -O origem\tComeça a atribuir a MATRIZ no índice ORIGEM. A predefinição "
+"é 0\n"
" -s total\tDescarta as primeiras TOTAL linhas lidas\n"
-" -t\tRemove um DELIM inicial de cada linha lida (predefinição é nova linha)\n"
+" -t\tRemove um DELIM inicial de cada linha lida (predefinição é nova "
+"linha)\n"
" -u fd\tLê linhas do descritor de ficheiro FD em vez da entrada padrão\n"
" -C retorno\tAvalia RETORNO cada vez que QUANTUM linhas são lidas\n"
" -c quantum\tEspecifica o número de linhas lidas entre cada chamada a\n"
@@ -5573,14 +5995,16 @@ msgstr ""
" matriz a ser atribuído e a linha a ser atribuída a esse elemento\n"
" como argumentos adicionais.\n"
" \n"
-" Se não for fornecido com uma origem explícita, mapfile limpa MATRIZ antes\n"
+" Se não for fornecido com uma origem explícita, mapfile limpa MATRIZ "
+"antes\n"
" de lhe fazer atribuições.\n"
" \n"
" Estado de saída:\n"
-" Devolve sucesso a não ser que indique uma opção inválida, MATRIZ seja só\n"
+" Devolve sucesso a não ser que indique uma opção inválida, MATRIZ seja "
+"só\n"
" de leitura ou não seja uma matriz indexada."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5590,6 +6014,10 @@ msgstr ""
" \n"
" Um sinónimo para \"mapfile\"."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: chave de matriz associativa inválida"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index c61c0b58..6048f5c9 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 cddc1d90..5d0b79db 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,10 +8,11 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 5.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2021-01-07 10:37-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
-"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\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"
@@ -22,59 +23,55 @@ msgstr ""
#: arrayfunc.c:66
msgid "bad array subscript"
-msgstr "subscrito de array incorreto"
+msgstr "subscript de array incorreto"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: removendo o atributo nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: impossível converter array indexado para associativo"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: chave de array associativo inválida"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: impossível atribuir a índice não numérico"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
-msgstr "%s: %s: deve usar subscrito ao atribuir um array associativo"
+msgstr "%s: %s: deve-se usar subscript ao atribuir um array associativo"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: impossível criar: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr "bash_execute_unix_command: impossível localizar mapa de teclas para comando"
+msgstr ""
+"bash_execute_unix_command: impossível localizar mapa de teclas para comando"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: primeiro caractere não-espaço em branco não é `\"'"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "sem `%c' de fechamento em %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s faltando separador dois-pontos"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "`%s': não foi desassociar no comando keymap"
@@ -94,7 +91,7 @@ msgstr "expansão de chaves: falha ao alocar memória para %u elementos"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansão de chaves: falha ao alocar memória para `%s'"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': nome de apelido (alias) inválido"
@@ -156,7 +153,8 @@ msgstr ""
"Retorna o contexto da chamada de sub-rotina atual.\n"
" \n"
" Sem EXPR, retorna \"$linha $arquivo\". Com EXPR, retorna\n"
-" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada para\n"
+" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada "
+"para\n"
" fornecer um rastro da pilha.\n"
" \n"
" O valor de EXPR indica quantos quadros de chamada deve voltar antes do\n"
@@ -166,7 +164,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME não definida"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "número excessivo de argumentos"
@@ -193,7 +191,7 @@ msgstr "aviso: "
msgid "%s: usage: "
msgstr "%s: uso: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: a opção requer um argumento"
@@ -208,7 +206,7 @@ msgstr "%s: requer argumento numérico"
msgid "%s: not found"
msgstr "%s: não encontrado"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: opção inválida"
@@ -218,7 +216,7 @@ msgstr "%s: opção inválida"
msgid "%s: invalid option name"
msgstr "%s: nome de opção inválido"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': não é um identificador válido"
@@ -231,7 +229,7 @@ msgstr "número octal inválido"
msgid "invalid hex number"
msgstr "número do hexa inválido"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "número inválido"
@@ -243,90 +241,97 @@ msgstr "%s: especificação de sinal inválida"
#: builtins/common.c:259
#, c-format
msgid "`%s': not a pid or valid job spec"
-msgstr "`%s': não é um identificador de processo (pid) nem é uma especificação de trabalho válida"
+msgstr ""
+"`%s': não é um identificador de processo (pid) nem é uma especificação de "
+"trabalho válida"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: a variável permite somente leitura"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: impossível remover definição"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s fora dos limites"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argumento"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s fora dos limites"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: trabalho não existe"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: nenhum controle de trabalho"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "nenhum controle de trabalho"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: restrição"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "restrição"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: não é um comando interno do shell"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "erro de escrita: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "erro ao definir atributos do terminal: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "erro ao obter atributos do terminal: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: erro ao obter o diretório atual: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: especificação de trabalho ambígua"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "ajuda não disponível nesta versão"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: impossível remover definição: %s somente-leitura"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: impossível remover definição"
@@ -336,108 +341,108 @@ msgstr "%s: impossível remover definição"
msgid "%s: invalid action name"
msgstr "%s: nome de ação inválido"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: nenhuma especificação de completação"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "aviso: a opção -F pode não funcionar como esperado"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "aviso: a opção -C pode não funcionar como esperado"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "não se está executando atualmente função de completação"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "somente pode ser usado em uma função"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "impossível usar `-f' para criar funções"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: função somente para leitura"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: variável de referência não pode ser um array"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: referência a si próprio da variável nameref não é permitido"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s referência circular de nome"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "\"%s\": nome de variável inválido para referência de nome"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "impossível usar `-f' para criar funções"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: função somente para leitura"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: atribuição de array composto com aspas está obsoleto"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: impossível destruir variáveis de array desta maneira"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: impossível converter array associativo para indexado"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: atribuição de array composto com aspas está obsoleto"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "carregamento dinâmico não está disponível"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "impossível abrir objeto compartilhado %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "impossível localizar %s no objeto compartilhado %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: comando dinâmico já foi carregado"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "função de carregamento para %s retorna falha (%d): não foi carregada"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: não foi carregado dinamicamente"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: impossível excluir: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: é um diretório"
@@ -452,7 +457,7 @@ msgstr "%s: não é um arquivo irregular"
msgid "%s: file is too large"
msgstr "%s: arquivo é muito grande"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: impossível executar o arquivo binário"
@@ -544,15 +549,18 @@ msgstr ""
#: builtins/help.def:185
#, c-format
-msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr "nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' ou `info %s'."
+msgid ""
+"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr ""
+"nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' "
+"ou `info %s'."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: impossível abrir: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -563,30 +571,32 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
-"Esses comandos shell são definidos internamente. Digite `help' para ver essa\n"
+"Esses comandos shell são definidos internamente. Digite `help' para ver "
+"essa\n"
"lista. Digite `help NOME' para descobrir mais sobre a função `NOME'.\n"
"Use `info bash' para descobrir mais sobre o shell em geral.\n"
-"Use `man -k' ou `info' para descobrir mais sobre comandos que não estão nesta\n"
+"Use `man -k' ou `info' para descobrir mais sobre comandos que não estão "
+"nesta\n"
"lista.\n"
"\n"
"Um asterisco (*) próximo ao nome significa que o comando está desabilitado.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "impossível usar mais de um dentre -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "posição no histórico"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: marca de tempo inválida"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: expansão do histórico falhou"
@@ -609,78 +619,78 @@ msgstr "%s: argumentos devem ser IDs de trabalhos ou processo"
msgid "Unknown error"
msgstr "Erro desconhecido"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "esperava uma expressão"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: não é um array indexado"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: especificação de descritor de arquivo inválida"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descritor de arquivo inválido: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: número de linhas inválido"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: origem do array inválido"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: quantidade de chamadas inválida"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "nome de variável array vazio"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "requer suporte a variável de array"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': faltando caractere de formato"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': especificação de formato de tempo inválida"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': caractere de formato inválido"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "aviso: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "problema ao analisar formato: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "faltando dígito hexa para \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "faltando dígito unicode para \\%c"
@@ -721,10 +731,12 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown "
+"by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown "
+"by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
"Exibe a lista de diretórios atualmente memorizados. Diretórios são\n"
@@ -831,25 +843,28 @@ msgstr ""
" \n"
" O comando interno `dirs' exibe a pilha de diretório."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: especificação de tempo limite inválida"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "erro de leitura: %d: %s"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
-msgstr "possível retornar (`return') apenas de uma função ou script carregado (com `source')"
+msgstr ""
+"possível retornar (`return') apenas de uma função ou script carregado (com "
+"`source')"
#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
-msgstr "impossível simultaneamente remover definição de uma função e uma variável"
+msgstr ""
+"impossível simultaneamente remover definição de uma função e uma variável"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: não é uma variável array"
@@ -868,11 +883,12 @@ msgstr "%s: impossível exportar"
msgid "shift count"
msgstr "número de shift"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
-msgstr "impossível simultaneamente definir e remover definição de opções do shell"
+msgstr ""
+"impossível simultaneamente definir e remover definição de opções do shell"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nome de opção de shell inválido"
@@ -939,16 +955,16 @@ msgstr "%s: argumento limite inválido"
msgid "`%c': bad command"
msgstr "`%c': comando incorreto"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: impossível obter limite: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limite"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: impossível modificar limite: %s"
@@ -967,7 +983,7 @@ msgstr "`%c': operador de modo simbólico inválido"
msgid "`%c': invalid symbolic mode character"
msgstr "`%c': caractere de modo simbólico inválido"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " linha "
@@ -987,96 +1003,108 @@ msgstr "Abortando..."
msgid "INFORM: "
msgstr "INFORM: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "aviso: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "erro de comando desconhecido"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "tipo de comando incorreto"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "conector incorreto"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "desvio incorreto"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: variável não associada"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "\atempo limite de espera excedido aguardando entrada: fim automático da sessão\n"
+msgstr ""
+"\atempo limite de espera excedido aguardando entrada: fim automático da "
+"sessão\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "impossível redirecionar a entrada padrão para /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': caractere de formato inválido"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] ainda existe"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "erro de `pipe'"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: excedido o nível máximo de aninhamento de `eval' (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: excedido o nível máximo de aninhamento de `function' (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: excedido o nível máximo de aninhamento de avaliação (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: comando não encontrado"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: impossível executar o arquivo binário"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: interpretador incorreto"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: impossível executar o arquivo binário: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s': é um comando interno especial"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "impossível duplicar fd (descritor de arquivo) %d para fd %d"
@@ -1089,68 +1117,68 @@ msgstr "excedido o nível de recursividade da expressão"
msgid "recursion stack underflow"
msgstr "esvaziamento de pilha de recursão"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "erro de sintaxe na expressão"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "tentativa de atribuição para algo que não é uma variável"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "erro de sintaxe na atribuição de variável"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "divisão por 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "erro de programação: token incorreto passado para expassign()"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "esperava `:' para expressão condicional"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "exponente menor que 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "esperava identificador após pré-acréscimo ou pré-decréscimo"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "faltando `)'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "erro de sintaxe: esperava operando"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "erro de sintaxe: operador aritmético inválido"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (token de erro é \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "base aritmética inválida"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "contante inteira inválida"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "valor muito grande para esta base de numeração"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: erro de expressão\n"
@@ -1159,186 +1187,192 @@ msgstr "%s: erro de expressão\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: impossível acessar os diretórios pais (anteriores)"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
-msgstr "impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d"
+msgstr ""
+"impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d"
#: input.c:266
#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a partir do fd %d"
+msgstr ""
+"impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a "
+"partir do fd %d"
#: input.c:274
#, c-format
msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d"
+msgstr ""
+"save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d"
#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: `pipe' de pgrp"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
-msgstr "identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em execução %d"
+msgstr ""
+"identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em "
+"execução %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "excluindo trabalho parado %d com grupo de processo %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marcado como ainda vivo"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: o identificador do processo (pid) não existe"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Sinal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Concluído"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Parado"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Parado(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Executando"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Concluído(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Fim da execução com status %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Status desconhecido"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(imagem do núcleo gravada)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "`setpgid' filho (%ld para %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: o pid %ld não é um processo filho deste shell"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Sem registro do processo %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: trabalho %d está parado"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: nenhum trabalho atual"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: o trabalho terminou"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: o trabalho %d já está em plano de fundo"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: ativando WNOHANG para evitar bloqueio indefinido"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s, linha %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (imagem do núcleo gravada)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd agora: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp falhou"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: nenhum controle de trabalho em plano de fundo"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina da linha"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "impossível definir grupo do processo do terminal (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "nenhum controle de trabalho neste shell"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: asserção falhou: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1347,47 +1381,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: asserção remendada\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "desconhecido"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloco socado em lista livre"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: chamado com argumento de bloco já liberado"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: chamado com argumento de bloco não alocado"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: esvaziamento de pilha detectado; magic8 corrompido"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: tamanhos de porções do início e do fim são diferentes"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: chamado com argumento de bloco não alocado"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: esvaziamento de pilha detectado; magic8 corrompido"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: tamanhos de porções do início e do fim são diferentes"
@@ -1429,22 +1463,22 @@ msgstr "%s: especificação de caminho de rede inválida"
msgid "network operations not supported"
msgstr "sem suporte a operações de rede"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: impossível alterar locale (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: impossível alterar locale (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: impossível alterar locale (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: impossível alterar locale (%s): %s"
@@ -1462,136 +1496,140 @@ msgstr "Você tem mensagem nova de correio em $_"
msgid "The mail in %s has been read\n"
msgstr "As mensagens de correio em %s foram lidas\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "erro de sintaxe: requer expressão aritmética"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "erro de sintaxe: `;' inesperado"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "erro de sintaxe: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: tipo da instrução incorreto %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')"
+msgstr ""
+"here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instrução de redirecionamento `%d' fora do limite"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
-msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
-msgstr "shell_getc: shell_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada"
+msgid ""
+"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
+"truncated"
+msgstr ""
+"shell_getc: shell_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "excedido o número máximo de here-document"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "encontrado EOF inesperado enquanto procurava por `%c' correspondente"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "encontrado EOF inesperado enquanto procurava por `]]'"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "erro de sintaxe na expressão condicional: token inesperado `%s'"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "erro de sintaxe na expressão condicional"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "token inesperado `%s', esperava`)'"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "esperava `)'"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumento inesperado `%s' para operador unário condicional"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "argumento inesperado para operador unário condicional"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "token inesperado `%s', esperava operador binário condicional"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "esperava operador binário condicional"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumento inesperado `%s' para operador binário condicional"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "argumento inesperado para operador binário condicional"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "token inesperado `%c' em comando condicional"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "token inesperado `%s' em comando condicional"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "token inesperado %d em comando condicional"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "erro de sintaxe próximo ao token inesperado `%s'"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "erro de sintaxe próximo a `%s'"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "erro de sintaxe: fim prematuro do arquivo"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "erro de sintaxe"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use \"%s\" para sair do shell.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "encontrado EOF inesperado enquanto procurava por `)' correspondente"
@@ -1630,94 +1668,94 @@ msgstr "xtrace_set: ponteiro de arquivo NULO"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': caractere de formato inválido"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "descritor de arquivo fora dos limites"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redirecionamento ambíguo"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: impossível sobrescrever arquivo existente"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restrição: impossível redirecionar saída"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "impossível criar arquivo temporário para here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: impossível atribuir fd a variável"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "sem suporte a /dev/(tcp|udp)/máquina/porta sem rede"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "erro de redirecionamento: impossível duplicar fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "impossível localizar /tmp, por favor crie!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp deve ser um nome de diretório válido"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "modo de impressão bonita ignorada em shells interativos"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opção inválida"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "impossível definir uid para %d: uid efetivo %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "impossível definir gid para %d: gid efetivo %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "possível iniciar o depurador; modo de depuração desabilitado"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: É um diretório"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Eu não tenho nome!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versão %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1726,317 +1764,325 @@ msgstr ""
"Utilização:\t%s [opção-longa-GNU] [opção] ...\n"
"\t%s [opção-longa-GNU] [opção] arquivo-de-script ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "opções-longas-GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Opções do shell:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD or -c comando ou -O opção-shopt\t\t(somente para chamada)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ou -o opção\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr "Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n"
+msgstr ""
+"Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr "Digite `%s -c help' para mais informações sobre os comandos internos do shell.\n"
+msgstr ""
+"Digite `%s -c help' para mais informações sobre os comandos internos do "
+"shell.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Uso o comando `bashbug' para relatar erros.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "página do bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operação inválida"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Sinal falso"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Interromper"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Sair"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Instrução ilegal"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT Rastreamento/Captura (BPT trace/trap)"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Instrução ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Instrução EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Exceção de ponto flutuante"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Morto (Killed)"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Erro do barramento"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Falha de segmentação"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Chamada incorreta do sistema"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "`Pipe' partido (escrita sem leitura)"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Relógio de alarme"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Terminado"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Condição urgente de Entrada/Saída"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Parado (sinal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continuar"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Processo filho parado ou terminado"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Parado (entrada tty)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Parado (saída tty)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "Entrada/Saída pronta"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Tempo limite de CPU excedido"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Tamanho limite do arquivo excedido"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarme (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarme (perfil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Janela mudada"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Registro bloqueado (lock)"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Sinal 1 definido pelo usuário"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Sinal 2 definido pelo usuário"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "entrada de dados HFT pendente"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "falha iminente de energia"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "falha iminente do sistema"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migrar o processo para outra CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "erro de programação"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "modo monitor HFT autorizado"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "modo monitor HFT rescindido"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "a sequência de som HFT foi completada"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Requisição de informação"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Sinal desconhecido #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "substituição incorreta: sem `%s' de fechamento em %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: impossível atribuir uma lista a um membro de um array"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "impossível criar `pipe' para a substituição do processo"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "impossível criar um processo filho para a substituição do processo"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "impossível abrir `pipe' %s para leitura"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "impossível abrir `pipe' %s para escrita"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "impossível duplicar `pipe' %s como descritor de arquivo (fd) %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "substituição de comando: byte nulo ignorado na entrada"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "impossível criar um `pipe' para substituição do comando"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "impossível criar um processo filho para substituição do comando"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "command_substitute: impossível duplicar o `pipe' como descritor de arquivo (fd) 1"
+msgstr ""
+"command_substitute: impossível duplicar o `pipe' como descritor de arquivo "
+"(fd) 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nome de variável inválido para referência de nome"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: expansão indireta inválida"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nome de variável inválido"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parâmetro não inicializado"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parâmetro nulo ou não inicializado"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expressão de substring < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: substituição incorreta"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: impossível atribuir desta maneira"
-#: subst.c:9814
-msgid "future versions of the shell will force evaluation as an arithmetic substitution"
-msgstr "versões futuras do shell vão forçar avaliação como um substituto aritmético"
+#: subst.c:10111
+msgid ""
+"future versions of the shell will force evaluation as an arithmetic "
+"substitution"
+msgstr ""
+"versões futuras do shell vão forçar avaliação como um substituto aritmético"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "substituição incorreta: sem \"`\" de fechamento em %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "sem correspondência: %s"
@@ -2059,21 +2105,21 @@ msgstr "esperava `)'"
msgid "`)' expected, found %s"
msgstr "esperava `)', encontrado %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: esperava operador binário"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: esperava operador unário"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "faltando `]'"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "erro de sintaxe: `%s' inesperado"
@@ -2082,105 +2128,120 @@ msgstr "erro de sintaxe: `%s' inesperado"
msgid "invalid signal number"
msgstr "número de sinal inválido"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "manipulador de trap: excedido o nível máximo de manipulador de captura (%d)"
+msgstr ""
+"manipulador de trap: excedido o nível máximo de manipulador de captura (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: valor incorreto em trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
-msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr "run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d (%s) para mim mesmo"
+msgid ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr ""
+"run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d "
+"(%s) para mim mesmo"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: sinal incorreto %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "erro ao importar a definição da função para `%s'"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "nível do shell (%d) muito grande, redefinindo para 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: nenhum contexto de função no atual escopo"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: a variável pode não ter um valor atribuído"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: atribuindo inteiro para referência de nome"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: nenhum contexto de função no escopo atual"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s possui a string de exportação nula"
# exportstr é uma variável no código fonte do bash (arquivo variiables.c)
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "caractere inválido na %d na exportstr para %s"
# exportstr é uma variável no código fonte do bash (arquivo variiables.c)
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "Sem `=' na exportstr para %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: cabeça de shell_variables não é um contexto de função"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: nenhum contexto em no global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr "pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário"
+msgstr ""
+"pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: impossível abrir como ARQUIVO"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: valor inválido para rastrear descritor de arquivo"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: valor de compatibilidade fora dos limites"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
-msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
-msgstr "Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl.html>.\n"
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+msgstr ""
+"Licença GPLv3+: GNU GPL versão 3 ou posterior <http://gnu.org/licenses/gpl."
+"html>.\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2224,8 +2285,13 @@ msgid "unalias [-a] name [name ...]"
msgstr "unalias [-a] nome [nome ...]"
#: builtins.c:53
-msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr "bind [-lpsvPSVX] [-m mapa-teclas] [-f arquivo] [-q nome] [-u nome] [-r seq-teclas] [-x seq-teclas:comando-shell] [seq-teclas:função-de-readline ou comando-readline]"
+msgid ""
+"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
+"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr ""
+"bind [-lpsvPSVX] [-m mapa-teclas] [-f arquivo] [-q nome] [-u nome] [-r seq-"
+"teclas] [-x seq-teclas:comando-shell] [seq-teclas:função-de-readline ou "
+"comando-readline]"
#: builtins.c:56
msgid "break [n]"
@@ -2256,11 +2322,17 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] COMANDO [ARG ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgiIlnrtux] [-p] [nome[=valor] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgiIlnrtux] [-p] nome[=valor] ..."
#: builtins.c:82
@@ -2301,7 +2373,8 @@ msgstr "logout [n]"
#: builtins.c:105
msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr "fc [-e EDITOR] [-lnr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]"
+msgstr ""
+"fc [-e EDITOR] [-lnr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]"
#: builtins.c:109
msgid "fg [job_spec]"
@@ -2320,8 +2393,12 @@ msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [PADRÃO ...]"
#: builtins.c:123
-msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
-msgstr "history [-c] [-d POSIÇÃO] [n] ou history -anrw [ARQUIVO] ou history -ps ARG [ARG...]"
+msgid ""
+"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
+"[arg...]"
+msgstr ""
+"history [-c] [-d POSIÇÃO] [n] ou history -anrw [ARQUIVO] ou history -ps ARG "
+"[ARG...]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2332,23 +2409,32 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
msgstr "disown [-h] [-ar] [ESPEC-JOB ... | pid ...]"
#: builtins.c:134
-msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
-msgstr "kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] PID | ESPEC-JOB ... ou kill -l [SIGSPEC]"
+msgid ""
+"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
+"[sigspec]"
+msgstr ""
+"kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] PID | ESPEC-JOB ... ou kill -l "
+"[SIGSPEC]"
#: builtins.c:136
msgid "let arg [arg ...]"
msgstr "let ARG [ARG ...]"
#: builtins.c:138
-msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
-msgstr "read [-ers] [-a ARRAY] [-d DELIM] [-i TEXTO] [-n NCHARS] [-N NCHARS] [-p CONFIRMAR ] [-t TEMPO] [-u FD] [NOME ...]"
+msgid ""
+"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
+"prompt] [-t timeout] [-u fd] [name ...]"
+msgstr ""
+"read [-ers] [-a ARRAY] [-d DELIM] [-i TEXTO] [-n NCHARS] [-N NCHARS] [-p "
+"CONFIRMAR ] [-t TEMPO] [-u FD] [NOME ...]"
#: builtins.c:140
msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [--abefhkmnptuvxBCHP] [-o NOME-OPÇÃO] [--] [ARG ...]"
#: builtins.c:144
@@ -2396,7 +2482,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-apt] nome [nome ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]"
#: builtins.c:174
@@ -2432,15 +2519,21 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac"
#: builtins.c:194
-msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
-msgstr "if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else COMANDOS; ] fi"
+msgid ""
+"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
+"COMMANDS; ] fi"
+msgstr ""
+"if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else "
+"COMANDOS; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while COMANDOS; do COMANDOS; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until COMANDOS; do COMANDOS; done"
#: builtins.c:200
@@ -2493,24 +2586,43 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] formato [argumentos]"
#: builtins.c:231
-msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
-msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A ação] [-G global] [-W lista-palavras] [-F função] [-C comando] [-X filtro] [-P prefixo] [-S sufixo] [nome ...]"
+msgid ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"suffix] [name ...]"
+msgstr ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A ação] [-G global] [-W "
+"lista-palavras] [-F função] [-C comando] [-X filtro] [-P prefixo] [-S "
+"sufixo] [nome ...]"
#: builtins.c:235
-msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr "compgen [-abcdefgjksuv] [-o opção] [-A ação] [-G global] [-W lista-palavras] [-F função] [-C comando] [-X filtro] [-P prefixo] [-S sufixo] [palavra]"
+msgid ""
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr ""
+"compgen [-abcdefgjksuv] [-o opção] [-A ação] [-G global] [-W lista-"
+"palavras] [-F função] [-C comando] [-X filtro] [-P prefixo] [-S sufixo] "
+"[palavra]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
msgstr "compopt [-o|+o opção] [-DEI] [nome ...]"
#: builtins.c:242
-msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
-msgstr "mapfile [-d delim] [-n número] [-O origem] [-s número] [-t] [-u fd] [-C chamada] [-c quantidade] [array]"
+msgid ""
+"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"mapfile [-d delim] [-n número] [-O origem] [-s número] [-t] [-u fd] [-C "
+"chamada] [-c quantidade] [array]"
#: builtins.c:244
-msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
-msgstr "readarray [-d delim] [-n número] [-O origem] [-s número] [-t] [-u fd] [-C chamada] [-c quantidade] [array]"
+msgid ""
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"readarray [-d delim] [-n número] [-O origem] [-s número] [-t] [-u fd] [-C "
+"chamada] [-c quantidade] [array]"
# help alias
#: builtins.c:256
@@ -2528,7 +2640,8 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has been\n"
+" alias returns true unless a NAME is supplied for which no alias has "
+"been\n"
" defined."
msgstr ""
"Define ou exibe apelidos (aliases).\n"
@@ -2577,25 +2690,30 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
+"move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their values\n"
-" -s List key sequences that invoke macros and their values\n"
+" -S List key sequences that invoke macros and their "
+"values\n"
+" -s List key sequences that invoke macros and their "
+"values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named function.\n"
+" -u function-name Unbind all keys which are bound to the named "
+"function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated commands\n"
+" -X List key sequences bound with -x and associated "
+"commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
@@ -2615,24 +2733,33 @@ msgstr ""
" vi, vi-move, vi-command e vi-insert.\n"
" -l Lista nomes de funções.\n"
" -P Lista nomes e associações de função.\n"
-" -p Lista funções e associações em uma forma que pode ser\n"
+" -p Lista funções e associações em uma forma que pode "
+"ser\n"
" usada como entrada.\n"
-" -S Lista sequências de teclas que chamam macros e seus\n"
+" -S Lista sequências de teclas que chamam macros e "
+"seus\n"
" valores\n"
-" -s Lista sequências de teclas que chamam macros e seus\n"
-" valores em uma forma que pode ser usada como entrada.\n"
+" -s Lista sequências de teclas que chamam macros e "
+"seus\n"
+" valores em uma forma que pode ser usada como "
+"entrada.\n"
" -V Lista nomes e valores de variáveis\n"
-" -v Lista nomes e valores de variáveis em uma forma que\n"
+" -v Lista nomes e valores de variáveis em uma forma "
+"que\n"
" pode ser usada como entrada.\n"
-" -q nome-função Consulta sobre quais teclas chamam a função informada.\n"
-" -u nome-função Desassocia todas teclas que estão associadas à função\n"
+" -q nome-função Consulta sobre quais teclas chamam a função "
+"informada.\n"
+" -u nome-função Desassocia todas teclas que estão associadas à "
+"função\n"
" informada.\n"
" -r seq-teclas Remove a associação para SEQ-TECLAS.\n"
" -f arquivo Lê associações de tecla de ARQUIVO.\n"
" -x seq-teclas:comando-shell\n"
-" Faz com que COMANDO-SHELL seja executado ao inserir\n"
+" Faz com que COMANDO-SHELL seja executado ao "
+"inserir\n"
" SEQ-TECLAS.\n"
-" -X Lista sequência de teclas associadas com -x e comandos\n"
+" -X Lista sequência de teclas associadas com -x e "
+"comandos\n"
" associados em uma forma que pode ser usada como\n"
" entrada.\n"
" \n"
@@ -2686,7 +2813,8 @@ msgid ""
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the function.\n"
+" as a shell function, but need to execute the builtin within the "
+"function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2722,7 +2850,8 @@ msgstr ""
"Retorna o contexto da chamada de sub-rotina atual.\n"
" \n"
" Sem EXPR, retorna \"$linha $arquivo\". Com EXPR, retorna\n"
-" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada para\n"
+" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada "
+"para\n"
" fornecer um rastro da pilha.\n"
" \n"
" O valor de EXPR indica quantos quadros de chamada deve voltar antes do\n"
@@ -2737,16 +2866,22 @@ msgstr ""
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of the\n"
+" Change the current directory to DIR. The default DIR is the value of "
+"the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
-" A null directory name is the same as the current directory. If DIR begins\n"
+" The variable CDPATH defines the search path for the directory "
+"containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon "
+"(:).\n"
+" A null directory name is the same as the current directory. If DIR "
+"begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is set,\n"
-" the word is assumed to be a variable name. If that variable has a value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is "
+"set,\n"
+" the word is assumed to be a variable name. If that variable has a "
+"value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2762,11 +2897,13 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname component\n"
+" `..' is processed by removing the immediately previous pathname "
+"component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully "
+"when\n"
" -P is used; non-zero otherwise."
msgstr ""
"Altera o diretório de trabalho do shell.\n"
@@ -2774,17 +2911,20 @@ msgstr ""
" Altera o diretório atual para DIR, sendo o padrão de DIR o mesmo valor\n"
" da variável HOME.\n"
" \n"
-" A variável CDPATH define o caminho de pesquisa para o diretório contendo\n"
+" A variável CDPATH define o caminho de pesquisa para o diretório "
+"contendo\n"
" DIR. Nomes de diretórios alternativos em CDPATH são separados por\n"
" dois-pontos (:). Um nome de diretório nulo é o mesmo que o diretório\n"
" atual. Se DIR inicia com uma barra (/), então CDPATH não é usada.\n"
" \n"
-" Se o diretório não for encontrado e a opção `cdable_vars` estiver definida\n"
+" Se o diretório não for encontrado e a opção `cdable_vars` estiver "
+"definida\n"
" no shell, a palavra é presumida como sendo o nome de uma variável. Se\n"
" tal variável possuir um valor, este valor é usado para DIR.\n"
" \n"
" Opções:\n"
-" -L\tforça links simbólicos a serem seguidos: resolver links simbólicos\n"
+" -L\tforça links simbólicos a serem seguidos: resolver links "
+"simbólicos\n"
" \t\tem DIR após processar instâncias de `..'\n"
" -P\tusa a estrutura do diretório físico sem seguir links\n"
" \t\tsimbólicos: resolve links simbólicos em DIR antes de processar\n"
@@ -2795,12 +2935,15 @@ msgstr ""
" \t\tatributos estendidos como um diretório contendo os atributos de\n"
" \t\tarquivo\n"
" \n"
-" O padrão é seguir links simbólicos, como se `-L' tivesse sido especificada.\n"
-" `..' é processada removendo o componente de caminho imediatamente anterior\n"
+" O padrão é seguir links simbólicos, como se `-L' tivesse sido "
+"especificada.\n"
+" `..' é processada removendo o componente de caminho imediatamente "
+"anterior\n"
" de volta para uma barra ou para o início de DIR.\n"
" \n"
" Status de saída:\n"
-" Retorna 0, se o diretório tiver sido alterado e se $PWD está definida com\n"
+" Retorna 0, se o diretório tiver sido alterado e se $PWD está definida "
+"com\n"
" sucesso quando a opção -P for usada; do contrário, retorna não-zero."
# help pwd
@@ -2881,7 +3024,8 @@ msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke commands\n"
+" information about the specified COMMANDs. Can be used to invoke "
+"commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -2943,7 +3087,8 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the "
+"`local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -2952,7 +3097,8 @@ msgid ""
msgstr ""
"Define valores e atributos de variável.\n"
" \n"
-" Declara variáveis e a elas fornece atributos. Se nenhum NOME for fornecido,\n"
+" Declara variáveis e a elas fornece atributos. Se nenhum NOME for "
+"fornecido,\n"
" exibe os atributos e valores de todas as variáveis.\n"
" \n"
" Opções:\n"
@@ -2967,11 +3113,13 @@ msgstr ""
" -a\tpara fazer NOMEs serem arrrays indexados (se houver suporte)\n"
" -A\tpara fazer NOMEs serem arrrays associativos (se houver suporte)\n"
" -i\tpara fazer NOMEs terem o atributo `integer'\n"
-" -l\tpara converter o valor de cada NOME para minúsculo em sua atribuição\n"
+" -l\tpara converter o valor de cada NOME para minúsculo em sua "
+"atribuição\n"
" -n\tfazer de NOME uma referência à variável chamada por seu valor\n"
" -r\tpara fazer de NOMEs somente leitura\n"
" -t\tpara fazer NOMEs terem o atributo `trace'\n"
-" -u\tpara converter o valor de cada NOME para maiúsculo em sua atribuição\n"
+" -u\tpara converter o valor de cada NOME para maiúsculo em sua "
+"atribuição\n"
" -x\tpra fazer NOMEs exportar\n"
" \n"
" Usar `+' ao invés de `-' desliga o atributo dado.\n"
@@ -3016,7 +3164,8 @@ msgstr ""
" Cria uma variável local chamada NOME e lhe dá VALOR. OPÇÃO pode ser\n"
" qualquer opção aceita pelo `declare'.\n"
" \n"
-" Variáveis locais podem ser usadas apenas em uma função; elas são visíveis\n"
+" Variáveis locais podem ser usadas apenas em uma função; elas são "
+"visíveis\n"
" apenas para a função na qual elas foram definidas, bem como para seus\n"
" filhos.\n"
" \n"
@@ -3030,7 +3179,8 @@ msgstr ""
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by a\n"
+" Display the ARGs, separated by a single space character and followed by "
+"a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -3054,9 +3204,11 @@ msgid ""
" \t\t0 to 3 octal digits\n"
" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
" \t\tcan be one or two hex digits\n"
-" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
" \t\tHHHH can be one to four hex digits.\n"
-" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
" \n"
" Exit Status:\n"
@@ -3178,7 +3330,8 @@ msgstr ""
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the shell,\n"
+" Combine ARGs into a single string, use the result as input to the "
+"shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -3279,7 +3432,8 @@ msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
+"specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3287,11 +3441,13 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, unless\n"
+" If the command cannot be executed, a non-interactive shell exits, "
+"unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error occurs."
+" Returns success unless COMMAND is not found or a redirection error "
+"occurs."
msgstr ""
"Substitui o shell com o comando fornecido.\n"
" \n"
@@ -3330,7 +3486,8 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not executed\n"
+" Exits a login shell with exit status N. Returns an error if not "
+"executed\n"
" in a login shell."
msgstr ""
"Sai de um shell de login.\n"
@@ -3343,13 +3500,15 @@ msgstr ""
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history list.\n"
+" fc is used to list or edit and re-execute commands from the history "
+"list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
+"EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3363,12 +3522,14 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error occurs."
+" Returns success or status of executed command; non-zero if an error "
+"occurs."
msgstr ""
"Exibe ou executa comandos da lista do histórico.\n"
" \n"
" fc é usado para listar ou editar e re-executar comandos da lista de\n"
-" histórico. PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo\n"
+" histórico. PRIMEIRO e ÚLTIMO podem ser números especificando o "
+"intervalo\n"
" ou PRIMEIRO pode ser uma string, o que significa o comando mais recente\n"
" iniciando com aquela string.\n"
" \n"
@@ -3409,15 +3570,18 @@ msgstr ""
" a noção do shell de trabalho atual é usada.\n"
" \n"
" Status de saída:\n"
-" Status do comando colocado em primeiro plano ou falha, se ocorrer um erro."
+" Status do comando colocado em primeiro plano ou falha, se ocorrer um "
+"erro."
# help bg
#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if "
+"they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's "
+"notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
@@ -3439,7 +3603,8 @@ msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is displayed.\n"
+" no arguments are given, information about remembered commands is "
+"displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3458,7 +3623,8 @@ msgid ""
msgstr ""
"Memoriza ou exibe localizações de programas.\n"
" \n"
-" Determina e memoriza do caminho completo de cada comando NOME. Se nenhum\n"
+" Determina e memoriza do caminho completo de cada comando NOME. Se "
+"nenhum\n"
" argumento for fornecido, exibe informação sobre comandos memorizados.\n"
" \n"
" Opções:\n"
@@ -3496,7 +3662,8 @@ msgid ""
" PATTERN\tPattern specifying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is given."
+" Returns success unless PATTERN is not found or an invalid option is "
+"given."
msgstr ""
"Exibe informação sobre comandos internos (builtin).\n"
" \n"
@@ -3545,7 +3712,8 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed otherwise.\n"
+" with each displayed history entry. No time stamps are printed "
+"otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3558,7 +3726,8 @@ msgstr ""
" \n"
" Opções:\n"
" -c\t\tlimpa a lista de histórico ao excluir todas as entradas\n"
-" -d posição\texclui a entrada de histórico na posição POSIÇÃO. Posições\n"
+" -d posição\texclui a entrada de histórico na posição POSIÇÃO. "
+"Posições\n"
" \t\t\tnegativas contam a partir do fim da lista de histórico\n"
" \n"
" -a\t\tanexa linhas de histórico desta sessão no arquivo de\n"
@@ -3717,7 +3886,8 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are listed\n"
+" grouped into levels of equal-precedence operators. The levels are "
+"listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3796,17 +3966,23 @@ msgstr ""
# help read
#: builtins.c:994
+#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with word\n"
+" if the -u option is supplied. The line is split into fields as with "
+"word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" the last NAME. Only the characters found in $IFS are recognized as "
+"word\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY "
+"variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3818,7 +3994,8 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, "
+"unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -3836,15 +4013,19 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times out\n"
-" (in which case it's greater than 128), a variable assignment error occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times "
+"out\n"
+" (in which case it's greater than 128), a variable assignment error "
+"occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"Lê uma linha da entrada padrão e separa em campos.\n"
"\n"
" Lê uma linha da entrada padrão ou do descritor de arquivo FD, caso a\n"
-" opção -u seja fornecida. A linha é separada em campos, na mesma forma de\n"
-" separação de palavras, e a primeira palavra é atribuída ao primeiro NOME,\n"
+" opção -u seja fornecida. A linha é separada em campos, na mesma forma "
+"de\n"
+" separação de palavras, e a primeira palavra é atribuída ao primeiro "
+"NOME,\n"
" o segundo ao segundo NOME e por aí vai, com qualquer palavras restantes\n"
" atribuídas para o último NOME. Apenas os caracteres encontrados em $IFS\n"
" são reconhecidos como delimitadores de palavras.\n"
@@ -3860,11 +4041,13 @@ msgstr ""
" -e usa Readline para obter a linha\n"
" -i texto usa TEXTO como o texto inicial para Readline\n"
" -n nchars retorna após ler NCHARS caracteres, ao invés de esperar\n"
-" por uma nova linha, mas respeita um delimitador se número\n"
+" por uma nova linha, mas respeita um delimitador se "
+"número\n"
" de caracteres menor que NCHARS sejam lidos antes do\n"
" delimitador\n"
" -N nchars retorna apenas após ler exatamente NCHARS caracteres, a\n"
-" menos que EOF (fim do arquivo) seja encontrado ou `read'\n"
+" menos que EOF (fim do arquivo) seja encontrado ou "
+"`read'\n"
" esgote o tempo limite, ignorando qualquer delimitador\n"
" -p prompt mostra a string PROMPT sem remover nova linha antes de\n"
" tentar ler\n"
@@ -3873,21 +4056,26 @@ msgstr ""
" -s não ecoa entrada vindo de um terminal\n"
" -t tempo esgota-se o tempo limite e retorna falha, caso uma toda\n"
" uma linha não seja lida em TEMPO segundos. O valor da\n"
-" variável TMOUT é o tempo limite padrão. TEMPO pode ser um\n"
-" número fracionado. SE TEMPO for 0, `read' retorna sucesso\n"
+" variável TMOUT é o tempo limite padrão. TEMPO pode ser "
+"um\n"
+" número fracionado. SE TEMPO for 0, `read' retorna "
+"sucesso\n"
" apenas se a entrada estiver disponível no descritor de\n"
-" arquivo especificado. O status de saída é maior que 128,\n"
+" arquivo especificado. O status de saída é maior que "
+"128,\n"
" se o tempo limite for excedido\n"
-" -u fd lê do descritor de arquivo FD, ao invés da entrada padrão\n"
+" -u fd lê do descritor de arquivo FD, ao invés da entrada "
+"padrão\n"
" \n"
" Status de saída:\n"
" O código de retorno é zero, a menos que o EOF (fim do arquivo) seja\n"
-" encontrado, `read' esgote o tempo limite (caso em que o código de retorno\n"
+" encontrado, `read' esgote o tempo limite (caso em que o código de "
+"retorno\n"
" será 128), ocorra erro de atribuição de uma variável ou um descritor de\n"
" arquivo inválido seja fornecido como argumento para -u."
# help return
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3909,7 +4097,7 @@ msgstr ""
" script."
# help set
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3952,7 +4140,8 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero status\n"
+" or zero if no command exited with a non-zero "
+"status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -3976,7 +4165,8 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell "
+"functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -3992,18 +4182,21 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
msgstr ""
-"Define ou remove definição de valores das opções e dos parâmetros posicionais\n"
+"Define ou remove definição de valores das opções e dos parâmetros "
+"posicionais\n"
"do shell:\n"
" \n"
" Altera o valor de opções e de parâmetros posicionais do shell ou mostra\n"
" os nomes ou valores de variáveis shell.\n"
" \n"
" Opções:\n"
-" -a Marca variáveis, que foram modificadas ou criadas, para exportação.\n"
+" -a Marca variáveis, que foram modificadas ou criadas, para "
+"exportação.\n"
" -b Notifica sobre terminação de trabalho imediatamente.\n"
" -e Sai imediatamente se um comando sai com um status não-zero.\n"
" -f Desabilita a geração de nome de arquivo (\"globbing\").\n"
-" -h Memoriza a localização de comandos à medida em que são procurados.\n"
+" -h Memoriza a localização de comandos à medida em que são "
+"procurados.\n"
" -k Todos argumentos de atribuição são colocados no ambiente para um\n"
" comando, e não apenas aqueles que precedem o nome do comando.\n"
" -m Controle de trabalho está habilitado.\n"
@@ -4021,7 +4214,8 @@ msgstr ""
" history habilita histórico de comandos\n"
" ignoreeof shell não vai sair após leitura de EOF\n"
" interactive-comments\n"
-" permite mostrar comentários em comandos interativos\n"
+" permite mostrar comentários em comandos "
+"interativos\n"
" keyword mesmo que -k\n"
" monitor mesmo que -m\n"
" noclobber mesmo que -C\n"
@@ -4033,8 +4227,10 @@ msgstr ""
" onecmd mesmo que -t\n"
" physical mesmo que -P\n"
" pipefail o valor de retorno de uma linha de comandos é o\n"
-" status do último comando a sair com status não-zero,\n"
-" ou zero se nenhum comando saiu com status não zero\n"
+" status do último comando a sair com status não-"
+"zero,\n"
+" ou zero se nenhum comando saiu com status não "
+"zero\n"
" posix altera o comportamento do bash, onde a operação\n"
" padrão diverge dos padrões do Posix para\n"
" corresponder a estes padrões\n"
@@ -4042,33 +4238,44 @@ msgstr ""
" verbose mesmo que -v\n"
" vi usa interface de edição de linha estilo vi\n"
" xtrace mesmo que -x\n"
-" -p Ligado sempre que IDs de usuário real e efetivo não corresponderem.\n"
-" Desabilita processamento do arquivo $ENV e importação de funções da\n"
+" -p Ligado sempre que IDs de usuário real e efetivo não "
+"corresponderem.\n"
+" Desabilita processamento do arquivo $ENV e importação de funções "
+"da\n"
" shell. Ao desligar essa opção, causa o uid e o gid efetivo serem\n"
" os uid e gid reais.\n"
" -t Sai após a leitura e execução de um comando.\n"
-" -u Trata limpeza (unset) de variáveis como um erro quando substituindo.\n"
+" -u Trata limpeza (unset) de variáveis como um erro quando "
+"substituindo.\n"
" -v Mostra linhas de entrada do shell na medida em que forem lidas.\n"
-" -x Mostra comandos e seus argumentos na medida em que forme executados.\n"
+" -x Mostra comandos e seus argumentos na medida em que forem "
+"executados.\n"
" -B o shell vai realizar expansão de chaves\n"
" -C Se definido, não permite arquivos normais existentes serem\n"
" sobrescritos por redirecionamento da saída.\n"
" -E Se definido, a armadilha ERR é herdada por funções do shell.\n"
-" -H Habilita substituição de histórico estilo \"!\". Essa sinalização está\n"
+" -H Habilita substituição de histórico estilo \"!\". Essa sinalização "
+"está\n"
" habilitada por padrão quando shell é interativa.\n"
-" -P Se definida, não resolve links simbólicos ao sair de comandos, tais\n"
+" -P Se definida, não resolve links simbólicos ao sair de comandos, "
+"tais\n"
" como `cd' (que altera o diretório atual).\n"
-" -T Se definido, a armadilha DEBUG e RETURN são herdadas por funções do shell.\n"
-" -- Atribui quaisquer argumentos restantes aos parâmetros posicionais.\n"
+" -T Se definido, a armadilha DEBUG e RETURN são herdadas por funções "
+"do shell.\n"
+" -- Atribui quaisquer argumentos restantes aos parâmetros "
+"posicionais.\n"
" Se não houver argumentos restantes, os parâmetros posicionais são\n"
" limpos (unset).\n"
-" - Atribui quaisquer argumentos restantes aos parâmetros posicionais.\n"
+" - Atribui quaisquer argumentos restantes aos parâmetros "
+"posicionais.\n"
" As opções -x e -v são desligadas.\n"
" \n"
" Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n"
" sinalizações também podem ser usadas por meio de chamada do shell. As\n"
-" sinalizações atualmente definidas podem ser encontradas em $-. Os n ARGs\n"
-" restantes são parâmetros posicionais e são atribuídos, em ordem, a $1, $2,\n"
+" sinalizações atualmente definidas podem ser encontradas em $-. Os n "
+"ARGs\n"
+" restantes são parâmetros posicionais e são atribuídos, em ordem, a $1, "
+"$2,\n"
" .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n"
" mostradas.\n"
" \n"
@@ -4076,7 +4283,7 @@ msgstr ""
" Retorna sucesso, a menos que uma opção inválida seja fornecida."
# help unset
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4088,7 +4295,8 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that fails,\n"
+" Without options, unset first tries to unset a variable, and if that "
+"fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -4116,12 +4324,13 @@ msgstr ""
" um NOME seja somente-leitura."
# help export
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before "
+"exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -4136,7 +4345,8 @@ msgstr ""
"Define atributo de exportação para variáveis shell.\n"
" \n"
" Marca cada NOME para exportação automática para o ambiente dos comandos\n"
-" executados subsequentemente. Se VALOR for fornecido, atribui VALOR antes\n"
+" executados subsequentemente. Se VALOR for fornecido, atribui VALOR "
+"antes\n"
" de exportar.\n"
" \n"
" Opções:\n"
@@ -4151,7 +4361,7 @@ msgstr ""
" NOME seja inválido."
# help readonly
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4191,7 +4401,7 @@ msgstr ""
" NOME seja inválido."
# help shift
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4203,14 +4413,15 @@ msgid ""
msgstr ""
"Desloca parâmetros posicionais.\n"
" \n"
-" Renomeia os parâmetros posicionais $N+1,$N+2 ... até $1,$2 ... Se N não\n"
+" Renomeia os parâmetros posicionais $N+1,$N+2 ... até $1,$2 ... Se N "
+"não\n"
" for fornecido, presume-se que ele seja 1.\n"
" \n"
" Status de saída:\n"
" Retorna sucesso, a menos que N seja negativo ou maior que $#."
# help source
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4235,7 +4446,7 @@ msgstr ""
" ARQUIVO não puder ser lido."
# help suspend
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4261,7 +4472,7 @@ msgstr ""
" ou ocorra um erro."
# help test
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4295,7 +4506,8 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last read.\n"
+" -N FILE True if the file has been modified since it was last "
+"read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4316,7 +4528,8 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 lexicographically.\n"
+" True if STRING1 sorts before STRING2 "
+"lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4343,8 +4556,10 @@ msgid ""
msgstr ""
"Avalia expressão condicional.\n"
" \n"
-" Sai com um status de 0 (verdadeiro) ou 1 (falso) dependendo da avaliação\n"
-" de EXPR. As expressões podem ser unárias ou binárias. Expressões unárias\n"
+" Sai com um status de 0 (verdadeiro) ou 1 (falso) dependendo da "
+"avaliação\n"
+" de EXPR. As expressões podem ser unárias ou binárias. Expressões "
+"unárias\n"
" são normalmente usadas para examinar o status de um arquivo. Há\n"
" operadores de strings e também há operadores de comparação numérica.\n"
" \n"
@@ -4358,7 +4573,8 @@ msgstr ""
" -c ARQUIVO Verdadeiro, se arquivo for um caractere especial.\n"
" -d ARQUIVO Verdadeiro, se arquivo for um diretório.\n"
" -e ARQUIVO Verdadeiro, se arquivo existir.\n"
-" -f ARQUIVO Verdadeiro, se arquivo existir e for um arquivo normal.\n"
+" -f ARQUIVO Verdadeiro, se arquivo existir e for um arquivo "
+"normal.\n"
" -g ARQUIVO Verdadeiro, se arquivo for set-group-id.\n"
" -h ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n"
" -L ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n"
@@ -4409,20 +4625,24 @@ msgstr ""
" e for uma referência de nome.\n"
" ! EXPR Verdadeiro, se a expressão EXPR for falsa.\n"
" EXPR1 -a EXPR2 Verdadeiro, se ambas EXPR1 e EXPR2 forem verdadeiras.\n"
-" EXPR1 -o EXPR2 Verdadeiro, se ao menos uma das expressões for verdadeira.\n"
+" EXPR1 -o EXPR2 Verdadeiro, se ao menos uma das expressões for "
+"verdadeira.\n"
" \n"
-" arg1 OP arg2 Testes aritméticos. OP é um dentre -eq, -ne, -lt, -le,\n"
+" arg1 OP arg2 Testes aritméticos. OP é um dentre -eq, -ne, -lt, -"
+"le,\n"
" -gt, or -ge.\n"
" \n"
-" Operadores binários de aritmética retornam verdadeiro se ARG1 for igual,\n"
+" Operadores binários de aritmética retornam verdadeiro se ARG1 for "
+"igual,\n"
" não-igual, menor-que, menor-ou-igual-a ou maior-ou-igual-a ARG2.\n"
" \n"
" Status de saída:\n"
-" Retorna sucesso, se EXPR for avaliada como verdadeira; falha, se EXPR for\n"
+" Retorna sucesso, se EXPR for avaliada como verdadeira; falha, se EXPR "
+"for\n"
" avaliada como falsa ou um argumento inválido for informado."
# help [
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4435,11 +4655,12 @@ msgstr ""
" argumento deve ser um `]' literal, para corresponder ao `[' que abriu."
# help times
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of its\n"
+" Prints the accumulated user and system times for the shell and all of "
+"its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4454,11 +4675,12 @@ msgstr ""
" Sempre com sucesso."
# help trap
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives signals\n"
+" Defines and activates handlers to be run when the shell receives "
+"signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4467,26 +4689,34 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
-" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
+"If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
+"If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
+"a\n"
+" script run by the . or source builtins finishes executing. A "
+"SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause "
+"the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands associated\n"
+" If no arguments are supplied, trap prints the list of commands "
+"associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\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."
+" Returns success unless a SIGSPEC is invalid or an invalid option is "
+"given."
msgstr ""
"Tratamento de sinais e outros eventos.\n"
" \n"
@@ -4526,7 +4756,7 @@ msgstr ""
" uma opção inválida seja fornecida."
# help type
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4552,7 +4782,8 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not found."
+" Returns success if all of the NAMEs are found; fails if any are not "
+"found."
msgstr ""
"Exibe informação sobre o tipo de comando.\n"
" \n"
@@ -4582,11 +4813,12 @@ msgstr ""
" deles não for encontrado."
# help ulimit
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and processes\n"
+" Provides control over the resources available to the shell and "
+"processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -4679,7 +4911,7 @@ msgstr ""
" ocorra um erro."
# help umask
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4715,23 +4947,27 @@ msgstr ""
" inválida seja fornecida."
# help wait
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or a\n"
+" Waits for each process identified by an ID, which may be a process ID or "
+"a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for a single job from the list of IDs,\n"
-" or, if no IDs are supplied, for the next job to complete and returns its\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
" exit status.\n"
" \n"
" If the -p option is supplied, the process or job identifier of the job\n"
" for which the exit status is returned is assigned to the variable VAR\n"
-" named by the option argument. The variable will be unset initially, before\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
@@ -4765,16 +5001,18 @@ msgstr ""
" filho inesperado."
# help wait
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination status.\n"
+" Waits for each process specified by a PID and reports its termination "
+"status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an "
+"invalid\n"
" option is given."
msgstr ""
"Espera por conclusão de processo e retorna o status de saída.\n"
@@ -4789,7 +5027,7 @@ msgstr ""
" inválida for fornecida."
# help for
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4805,14 +5043,15 @@ msgstr ""
" \n"
" O loop `for' executa uma sequência de comandos para cada membro em\n"
" uma lista de itens. Se `in PALAVRAS ...;' não estiver presente, então\n"
-" `in \"$@\"' é presumido. Para cada elemento em PALAVRAS, NOME é definido\n"
+" `in \"$@\"' é presumido. Para cada elemento em PALAVRAS, NOME é "
+"definido\n"
" com aquele elemento e os COMANDOS são executados.\n"
" \n"
" Status de saída:\n"
" Retorna o status do último comando executado."
# help for (( (?)
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4843,7 +5082,7 @@ msgstr ""
" Retorna o status do último comando executado."
# help select
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4881,7 +5120,7 @@ msgstr ""
" Retorna o status do último comando executado."
# help time
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4911,7 +5150,7 @@ msgstr ""
" O status de retorno é o status retornado por LINHA-COMANDOS."
# help case
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4930,16 +5169,21 @@ msgstr ""
" Retorna o status do último comando executado."
# help if
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then "
+"the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
+"is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of the\n"
-" entire construct is the exit status of the last command executed, or zero\n"
+" `then COMMANDS' list is executed and the if command completes. "
+"Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of "
+"the\n"
+" entire construct is the exit status of the last command executed, or "
+"zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -4960,12 +5204,14 @@ msgstr ""
" Retorna o status do último comando executado."
# help while
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4979,12 +5225,14 @@ msgstr ""
" Retorna o status do último comando executado."
# help until
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -4998,7 +5246,7 @@ msgstr ""
" Status de saída:\n"
" Retorna o status do último comando executado."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5021,12 +5269,13 @@ msgstr ""
" O comando coproc retorna um status de saída de 0."
# help function
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is "
+"invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -5044,7 +5293,7 @@ msgstr ""
" Retorna sucesso, a menos que NOME seja somente-leitura."
# help -m {
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5062,7 +5311,7 @@ msgstr ""
" Status de saída:\n"
" Retorna o status do último comando executado."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5088,7 +5337,7 @@ msgstr ""
" Retorna o status de um trabalho resumido."
# help '(('
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5107,13 +5356,16 @@ msgstr ""
" Retorna 1, se EXPRESSÃO for avaliada como 0; do contrário, retorna 0."
# help '['
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries used\n"
-" by the `test' builtin, and may be combined using the following operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the "
+"conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries "
+"used\n"
+" by the `test' builtin, and may be combined using the following "
+"operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -5157,7 +5409,7 @@ msgstr ""
" 0 ou 1 dependendo do valor de EXPRESSÃO."
# help variables
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5241,7 +5493,8 @@ msgstr ""
" OSTYPE\t\t\tA versão do Unix no qual Bash está sendo executado.\n"
" PATH\t\t\tUma lista separada por dois-pontos de diretórios para\n"
" \t\t\tpesquisar ao se procurar por comandos.\n"
-" PROMPT_COMMAND\tUm comando a ser executado antes de imprimir cada prompt\n"
+" PROMPT_COMMAND\tUm comando a ser executado antes de imprimir cada "
+"prompt\n"
" \t\t\tprimário.\n"
" PS1\t\t\t\tA string de prompt primário.\n"
" PS2\t\t\t\tA string de prompt secundária.\n"
@@ -5272,7 +5525,7 @@ msgstr ""
" \t\t\t\thistórico.\n"
# help pushd
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5332,7 +5585,7 @@ msgstr ""
" a alteração de diretório falhar."
# help popd
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5383,7 +5636,7 @@ msgstr ""
" a alteração de diretório falhar."
# help dirs
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5437,7 +5690,7 @@ msgstr ""
" ocorrer um erro."
# help shopt
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5474,7 +5727,8 @@ msgstr ""
" opção inválida for fornecida ou NOME-OPÇÃO estiver desabilitado."
# help printf
-#: builtins.c:1937
+#: builtins.c:1938
+#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5482,27 +5736,36 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: plain\n"
-" characters, which are simply copied to standard output; character escape\n"
+" FORMAT is a character string which contains three types of objects: "
+"plain\n"
+" characters, which are simply copied to standard output; character "
+"escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next successive\n"
+" format specifications, each of which causes printing of the next "
+"successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in printf(1),\n"
+" In addition to the standard format specifications described in "
+"printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a "
+"format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as appropriate,\n"
+" specifications behave as if a zero value or null string, as "
+"appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or assignment\n"
+" Returns success unless an invalid option is given or a write or "
+"assignment\n"
" error occurs."
msgstr ""
"Formata e imprime ARGUMENTOS sob controle de FORMATO.\n"
@@ -5537,12 +5800,14 @@ msgstr ""
" ocorra um erro de escrita ou atribuição."
# help complete
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no options\n"
-" are supplied, existing completion specifications are printed in a way that\n"
+" For each NAME, specify how arguments are to be completed. If no "
+"options\n"
+" are supplied, existing completion specifications are printed in a way "
+"that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -5557,8 +5822,10 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are supplied,\n"
-" the -D option takes precedence over -E, and both take precedence over -I.\n"
+" uppercase-letter options are listed above. If multiple options are "
+"supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
@@ -5570,8 +5837,10 @@ msgstr ""
" impressas em uma forma que permite-as serem usadas como entrada.\n"
" \n"
" Opções:\n"
-" -p\timprime especificações existentes de completar em um formato usável\n"
-" -r\tremove uma especificação de completar para cada NOME ou, se nenhum\n"
+" -p\timprime especificações existentes de completar em um formato "
+"usável\n"
+" -r\tremove uma especificação de completar para cada NOME ou, se "
+"nenhum\n"
" \t\tNOME for fornecido, todas as especificações de completar\n"
" -D\taplica as completações e ações como sendo o padrão para comandos\n"
" \t\tsem qualquer especificação definida\n"
@@ -5581,7 +5850,8 @@ msgstr ""
" \t\tcomando)\n"
" \n"
" Ao tentar completar, as ações são fornecidas na ordem em que as opções\n"
-" de letras de caixa alta são listadas acima. Se várias opções forem fornecidas,\n"
+" de letras de caixa alta são listadas acima. Se várias opções forem "
+"fornecidas,\n"
" a opção -D tem precedência sobre -E, e ambos têm precedência sobre -I.\n"
" sobre -E.\n"
" \n"
@@ -5590,12 +5860,13 @@ msgstr ""
" ocorra um erro."
# help compgen
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches against\n"
+" completions. If the optional WORD argument is supplied, matches "
+"against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -5612,13 +5883,16 @@ msgstr ""
" ocorra um erro."
# help compopt
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, print\n"
-" the completion options for each NAME or the current completion specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are "
+"supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, "
+"print\n"
+" the completion options for each NAME or the current completion "
+"specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5669,21 +5943,26 @@ msgstr ""
" NOME não tem uma especificação de completação definida."
# help mapfile
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
+" Read lines from the standard input into the indexed array variable "
+"ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable "
+"MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
+"copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
+"index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard "
+"input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -5696,11 +5975,13 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY "
+"before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly "
+"or\n"
" not an indexed array."
msgstr ""
"Lê linhas da entrada padrão para uma variável array indexado.\n"
@@ -5711,23 +5992,28 @@ msgstr ""
" \n"
" Opções:\n"
" -d dlim Usa DELIM para terminar linhas, ao invés de nova linha\n"
-" -n número Copia no máximo NÚMERO linhas. Se NÚMERO for 0, todas as\n"
+" -n número Copia no máximo NÚMERO linhas. Se NÚMERO for 0, todas "
+"as\n"
" linhas são copiadas\n"
" -O origem Inicia atribuição de ARRAY no índice ORIGEM. O índice\n"
" padrão é 0\n"
" -s número Descarta as primeiras NÚMERO linhas lidas\n"
" -t Remove uma DELIM ao final para cada linha lida\n"
" (padrão: nova linha)\n"
-" -u fd Lê linhas do descritor de arquivos FD, ao invés da entrada\n"
+" -u fd Lê linhas do descritor de arquivos FD, ao invés da "
+"entrada\n"
" padrão\n"
-" -C chamada Avalia CHAMADA a cada vez que QUANTIDADE linhas foram lidas\n"
-" -c quantidade Especifica o número de linhas lidas entre cada chamada para\n"
+" -C chamada Avalia CHAMADA a cada vez que QUANTIDADE linhas foram "
+"lidas\n"
+" -c quantidade Especifica o número de linhas lidas entre cada chamada "
+"para\n"
" CHAMADA\n"
" \n"
" Argumentos:\n"
" ARRAY Nome da variável array para usar para arquivos de dados\n"
" \n"
-" Se -C for fornecido sem -c, a quantidade padrão é 5000. Quando CHAMADA é\n"
+" Se -C for fornecido sem -c, a quantidade padrão é 5000. Quando CHAMADA "
+"é\n"
" avaliada, é fornecido o índice para o próximo elemento da array ser\n"
" atribuído e a linha para ser atribuída àquele elemento como argumentos\n"
" adicionais\n"
@@ -5740,7 +6026,7 @@ msgstr ""
" somente leitura ou não for um array indexado."
# help readarray
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5750,6 +6036,10 @@ msgstr ""
" \n"
" Um sinônimo para `mapfile'."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: chave de array associativo inválida"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
@@ -5824,9 +6114,12 @@ msgstr ""
#~ " If FILENAME is given, it is used as the history file. Otherwise,\n"
#~ " if HISTFILE has a value, that is used, else ~/.bash_history.\n"
#~ " \n"
-#~ " If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
-#~ " as a format string for strftime(3) to print the time stamp associated\n"
-#~ " with each displayed history entry. No time stamps are printed otherwise.\n"
+#~ " If the HISTTIMEFORMAT variable is set and not null, its value is "
+#~ "used\n"
+#~ " as a format string for strftime(3) to print the time stamp "
+#~ "associated\n"
+#~ " with each displayed history entry. No time stamps are printed "
+#~ "otherwise.\n"
#~ " \n"
#~ " Exit Status:\n"
#~ " Returns success unless an invalid option is given or an error occurs."
@@ -5852,12 +6145,16 @@ msgstr ""
#~ " -s\t\t\tanexa os ARGs à lista de histórico como uma única entrada\n"
#~ " \n"
#~ " Se ARQUIVO for fornecido, ele é usado como o arquivo de histórico.\n"
-#~ " Do contrário, se a variável HISTFILE tiver um valor, este será usado;\n"
+#~ " Do contrário, se a variável HISTFILE tiver um valor, este será "
+#~ "usado;\n"
#~ " senão, usa de ~/.bash_history.\n"
#~ " \n"
-#~ " Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor é\n"
-#~ " usado como uma string de formato para strftime(3) para mostrar a marca\n"
-#~ " de tempo associada com cada entrada de histórico exibida. Do contrário,\n"
+#~ " Se a variável HISTTIMEFORMAT for definida e não for nula, seu valor "
+#~ "é\n"
+#~ " usado como uma string de formato para strftime(3) para mostrar a "
+#~ "marca\n"
+#~ " de tempo associada com cada entrada de histórico exibida. Do "
+#~ "contrário,\n"
#~ " nenhuma marca de tempo é mostrada.\n"
#~ " \n"
#~ " Status de saída:\n"
@@ -5878,8 +6175,10 @@ msgstr ""
#~ " -l\tlist the signal names; if arguments follow `-l' they are\n"
#~ " \t\tassumed to be signal numbers for which names should be listed\n"
#~ " \n"
-#~ " Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
-#~ " instead of process IDs, and allows processes to be killed if the limit\n"
+#~ " Kill is a shell builtin for two reasons: it allows job IDs to be "
+#~ "used\n"
+#~ " instead of process IDs, and allows processes to be killed if the "
+#~ "limit\n"
#~ " on processes that you can create is reached.\n"
#~ " \n"
#~ " Exit Status:\n"
@@ -5937,7 +6236,8 @@ msgstr ""
#~ " history enable command history\n"
#~ " ignoreeof the shell will not exit upon reading EOF\n"
#~ " interactive-comments\n"
-#~ " allow comments to appear in interactive commands\n"
+#~ " allow comments to appear in interactive "
+#~ "commands\n"
#~ " keyword same as -k\n"
#~ " monitor same as -m\n"
#~ " noclobber same as -C\n"
@@ -5948,9 +6248,12 @@ msgstr ""
#~ " nounset same as -u\n"
#~ " onecmd same as -t\n"
#~ " physical same as -P\n"
-#~ " pipefail the return value of a pipeline is the status of\n"
-#~ " the last command to exit with a non-zero status,\n"
-#~ " or zero if no command exited with a non-zero status\n"
+#~ " pipefail the return value of a pipeline is the status "
+#~ "of\n"
+#~ " the last command to exit with a non-zero "
+#~ "status,\n"
+#~ " or zero if no command exited with a non-zero "
+#~ "status\n"
#~ " posix change the behavior of bash where the default\n"
#~ " operation differs from the Posix standard to\n"
#~ " match the standard\n"
@@ -5958,9 +6261,11 @@ msgstr ""
#~ " verbose same as -v\n"
#~ " vi use a vi-style line editing interface\n"
#~ " xtrace same as -x\n"
-#~ " -p Turned on whenever the real and effective user ids do not match.\n"
+#~ " -p Turned on whenever the real and effective user ids do not "
+#~ "match.\n"
#~ " Disables processing of the $ENV file and importing of shell\n"
-#~ " functions. Turning this option off causes the effective uid and\n"
+#~ " functions. Turning this option off causes the effective uid "
+#~ "and\n"
#~ " gid to be set to the real uid and gid.\n"
#~ " -t Exit after reading and executing one command.\n"
#~ " -u Treat unset variables as an error when substituting.\n"
@@ -5983,26 +6288,32 @@ msgstr ""
#~ " \n"
#~ " Using + rather than - causes these flags to be turned off. The\n"
#~ " flags can also be used upon invocation of the shell. The current\n"
-#~ " set of flags may be found in $-. The remaining n ARGs are positional\n"
+#~ " set of flags may be found in $-. The remaining n ARGs are "
+#~ "positional\n"
#~ " parameters and are assigned, in order, to $1, $2, .. $n. If no\n"
#~ " ARGs are given, all shell variables are printed.\n"
#~ " \n"
#~ " Exit Status:\n"
#~ " Returns success unless an invalid option is given."
#~ msgstr ""
-#~ "Define ou remove definição de valores das opções e dos parâmetros posicionais\n"
+#~ "Define ou remove definição de valores das opções e dos parâmetros "
+#~ "posicionais\n"
#~ "do shell:\n"
#~ " \n"
-#~ " Altera o valor de opções e de parâmetros posicionais do shell ou mostra\n"
+#~ " Altera o valor de opções e de parâmetros posicionais do shell ou "
+#~ "mostra\n"
#~ " os nomes ou valores de variáveis shell.\n"
#~ " \n"
#~ " Opções:\n"
-#~ " -a Marca variáveis, que foram modificadas ou criadas, para exportação.\n"
+#~ " -a Marca variáveis, que foram modificadas ou criadas, para "
+#~ "exportação.\n"
#~ " -b Notifica sobre terminação de trabalho imediatamente.\n"
#~ " -e Sai imediatamente se um comando sai com um status não-zero.\n"
#~ " -f Desabilita a geração de nome de arquivo (\"globbing\").\n"
-#~ " -h Memoriza a localização de comandos à medida em que são procurados.\n"
-#~ " -k Todos argumentos de atribuição são colocados no ambiente para um\n"
+#~ " -h Memoriza a localização de comandos à medida em que são "
+#~ "procurados.\n"
+#~ " -k Todos argumentos de atribuição são colocados no ambiente para "
+#~ "um\n"
#~ " comando, e não apenas aqueles que precedem o nome do comando.\n"
#~ " -m Controle de trabalho está habilitado.\n"
#~ " -n Lê comandos, mas não os executa.\n"
@@ -6019,7 +6330,8 @@ msgstr ""
#~ " history habilita histórico de comandos\n"
#~ " ignoreeof shell não vai sair após leitura de EOF\n"
#~ " interactive-comments\n"
-#~ " permite mostrar comentários em comandos interativos\n"
+#~ " permite mostrar comentários em comandos "
+#~ "interativos\n"
#~ " keyword mesmo que -k\n"
#~ " monitor mesmo que -m\n"
#~ " noclobber mesmo que -C\n"
@@ -6030,43 +6342,61 @@ msgstr ""
#~ " nounset mesmo que -u\n"
#~ " onecmd mesmo que -t\n"
#~ " physical mesmo que -P\n"
-#~ " pipefail o valor de retorno de uma linha de comandos é o\n"
-#~ " status do último comando a sair com status não-zero,\n"
-#~ " ou zero se nenhum comando saiu com status não zero\n"
-#~ " posix altera o comportamento do bash, onde a operação\n"
+#~ " pipefail o valor de retorno de uma linha de comandos é "
+#~ "o\n"
+#~ " status do último comando a sair com status não-"
+#~ "zero,\n"
+#~ " ou zero se nenhum comando saiu com status não "
+#~ "zero\n"
+#~ " posix altera o comportamento do bash, onde a "
+#~ "operação\n"
#~ " padrão diverge dos padrões do Posix para\n"
#~ " corresponder a estes padrões\n"
#~ " privileged mesmo que -p\n"
#~ " verbose mesmo que -v\n"
#~ " vi usa interface de edição de linha estilo vi\n"
#~ " xtrace mesmo que -x\n"
-#~ " -p Ligado sempre que IDs de usuário real e efetivo não corresponderem.\n"
-#~ " Desabilita processamento do arquivo $ENV e importação de funções da\n"
-#~ " shell. Ao desligar essa opção, causa o uid e o gid efetivo serem\n"
+#~ " -p Ligado sempre que IDs de usuário real e efetivo não "
+#~ "corresponderem.\n"
+#~ " Desabilita processamento do arquivo $ENV e importação de "
+#~ "funções da\n"
+#~ " shell. Ao desligar essa opção, causa o uid e o gid efetivo "
+#~ "serem\n"
#~ " os uid e gid reais.\n"
#~ " -t Sai após a leitura e execução de um comando.\n"
-#~ " -u Trata limpeza (unset) de variáveis como um erro quando substituindo.\n"
-#~ " -v Mostra linhas de entrada do shell na medida em que forem lidas.\n"
-#~ " -x Mostra comandos e seus argumentos na medida em que forme executados.\n"
+#~ " -u Trata limpeza (unset) de variáveis como um erro quando "
+#~ "substituindo.\n"
+#~ " -v Mostra linhas de entrada do shell na medida em que forem "
+#~ "lidas.\n"
+#~ " -x Mostra comandos e seus argumentos na medida em que forme "
+#~ "executados.\n"
#~ " -B o shell vai realizar expansão de chaves\n"
#~ " -C Se definido, não permite arquivos normais existentes serem\n"
#~ " sobrescritos por redirecionamento da saída.\n"
#~ " -E Se definido, a armadilha ERR é herdada por funções do shell.\n"
-#~ " -H Habilita substituição de histórico estilo \"!\". Essa sinalização está\n"
+#~ " -H Habilita substituição de histórico estilo \"!\". Essa "
+#~ "sinalização está\n"
#~ " habilitada por padrão quando shell é interativa.\n"
-#~ " -P Se definida, não resolve links simbólicos ao sair de comandos, tais\n"
+#~ " -P Se definida, não resolve links simbólicos ao sair de comandos, "
+#~ "tais\n"
#~ " como `cd' (que altera o diretório atual).\n"
#~ " -T Se definido, a armadilha DEBUG é herdada por funções do shell.\n"
-#~ " -- Atribui quaisquer argumentos restantes aos parâmetros posicionais.\n"
-#~ " Se não houver argumentos restantes, os parâmetros posicionais são\n"
+#~ " -- Atribui quaisquer argumentos restantes aos parâmetros "
+#~ "posicionais.\n"
+#~ " Se não houver argumentos restantes, os parâmetros posicionais "
+#~ "são\n"
#~ " limpos (unset).\n"
-#~ " - Atribui quaisquer argumentos restantes aos parâmetros posicionais.\n"
+#~ " - Atribui quaisquer argumentos restantes aos parâmetros "
+#~ "posicionais.\n"
#~ " As opções -x e -v são desligadas.\n"
#~ " \n"
#~ " Usar +, ao invés de -, causa essas sinalizações serem desligadas. As\n"
-#~ " sinalizações também podem ser usadas por meio de chamada do shell. As\n"
-#~ " sinalizações atualmente definidas podem ser encontradas em $-. Os n ARGs\n"
-#~ " restantes são parâmetros posicionais e são atribuídos, em ordem, a $1, $2,\n"
+#~ " sinalizações também podem ser usadas por meio de chamada do shell. "
+#~ "As\n"
+#~ " sinalizações atualmente definidas podem ser encontradas em $-. Os n "
+#~ "ARGs\n"
+#~ " restantes são parâmetros posicionais e são atribuídos, em ordem, a "
+#~ "$1, $2,\n"
#~ " .. $n. Se nenhuma ARG for fornecido, todas as variáveis shell são\n"
#~ " mostradas.\n"
#~ " \n"
@@ -6077,8 +6407,10 @@ msgstr ""
#~ msgid ""
#~ "Create a coprocess named NAME.\n"
#~ " \n"
-#~ " Execute COMMAND asynchronously, with the standard output and standard\n"
-#~ " input of the command connected via a pipe to file descriptors assigned\n"
+#~ " Execute COMMAND asynchronously, with the standard output and "
+#~ "standard\n"
+#~ " input of the command connected via a pipe to file descriptors "
+#~ "assigned\n"
#~ " to indices 0 and 1 of an array variable NAME in the executing shell.\n"
#~ " The default NAME is \"COPROC\".\n"
#~ " \n"
@@ -6088,7 +6420,8 @@ msgstr ""
#~ "Cria um coprocesso chamado NOME.\n"
#~ " \n"
#~ " Executa COMANDO assincronamente, com a saída padrão e entrada padrão\n"
-#~ " do comando conectados via um `pipe' (redirecionamento) para descritores\n"
+#~ " do comando conectados via um `pipe' (redirecionamento) para "
+#~ "descritores\n"
#~ " de arquivo atribuídos para índices 0 e 1 de uma variável array NOME\n"
#~ " no shell em execução. O NOME padrão é \"COPROC\".\n"
#~ " \n"
@@ -6211,7 +6544,8 @@ msgstr ""
#~ msgstr "substituição de comando"
#~ msgid "Can't reopen pipe to command substitution (fd %d): %s"
-#~ msgstr "Impossível reabrir o `pipe' para substituição de comando (fd %d): %s"
+#~ msgstr ""
+#~ "Impossível reabrir o `pipe' para substituição de comando (fd %d): %s"
#~ msgid "$%c: unbound variable"
#~ msgstr "$%c: variável não associada"
@@ -6295,7 +6629,8 @@ msgstr ""
#~ msgstr "de aliases na forma `alias NOME=VALOR' na saída padrão."
#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given."
-#~ msgstr "Ou então, um alias é definido para cada NOME cujo VALOR for fornecido."
+#~ msgstr ""
+#~ "Ou então, um alias é definido para cada NOME cujo VALOR for fornecido."
#~ msgid "A trailing space in VALUE causes the next word to be checked for"
#~ msgstr "Um espaço após VALOR faz a próxima palavra ser verificada para"
@@ -6304,34 +6639,45 @@ msgstr ""
#~ msgstr "substituição do alias quando o alias é expandido. Alias retorna"
#~ msgid "true unless a NAME is given for which no alias has been defined."
-#~ msgstr "verdadeiro, a não ser que seja fornecido um NOME sem alias definido."
+#~ msgstr ""
+#~ "verdadeiro, a não ser que seja fornecido um NOME sem alias definido."
-#~ msgid "Remove NAMEs from the list of defined aliases. If the -a option is given,"
-#~ msgstr "Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida,"
+#~ msgid ""
+#~ "Remove NAMEs from the list of defined aliases. If the -a option is given,"
+#~ msgstr ""
+#~ "Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida,"
#~ msgid "then remove all alias definitions."
#~ msgstr "então todas as definições de alias são removidas."
#~ msgid "Bind a key sequence to a Readline function, or to a macro. The"
-#~ msgstr "Víncula uma sequência de teclas a uma função de leitura de linha, ou a uma"
+#~ msgstr ""
+#~ "Víncula uma sequência de teclas a uma função de leitura de linha, ou a uma"
#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be"
-#~ msgstr "macro. A sintaxe é equivalente à encontrada em ~/.inputrc, mas deve ser"
+#~ msgstr ""
+#~ "macro. A sintaxe é equivalente à encontrada em ~/.inputrc, mas deve ser"
-#~ msgid "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'."
-#~ msgstr "passada como um único argumento: bind '\"\\C-x\\C-r\": re-read-init-file'."
+#~ msgid ""
+#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'."
+#~ msgstr ""
+#~ "passada como um único argumento: bind '\"\\C-x\\C-r\": re-read-init-file'."
#~ msgid "Arguments we accept:"
#~ msgstr "Argumentos permitidos:"
-#~ msgid " -m keymap Use `keymap' as the keymap for the duration of this"
-#~ msgstr " -m MAPA-TECLAS Usar `MAPA-TECLAS' como mapa das teclas pela duração"
+#~ msgid ""
+#~ " -m keymap Use `keymap' as the keymap for the duration of this"
+#~ msgstr ""
+#~ " -m MAPA-TECLAS Usar `MAPA-TECLAS' como mapa das teclas pela duração"
#~ msgid " command. Acceptable keymap names are emacs,"
#~ msgstr " deste comando. Os nomes aceitos são emacs,"
-#~ msgid " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
-#~ msgstr " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
+#~ msgid ""
+#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
+#~ msgstr ""
+#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
#~ msgid " vi-command, and vi-insert."
#~ msgstr " vi-command, and vi-insert."
@@ -6342,8 +6688,10 @@ msgstr ""
#~ msgid " -P List function names and bindings."
#~ msgstr " -P Listar nomes e associações das funções."
-#~ msgid " -p List functions and bindings in a form that can be"
-#~ msgstr " -p Listar nomes e associações das funções de uma forma"
+#~ msgid ""
+#~ " -p List functions and bindings in a form that can be"
+#~ msgstr ""
+#~ " -p Listar nomes e associações das funções de uma forma"
#~ msgid " reused as input."
#~ msgstr " que pode ser reutilizada como entrada."
@@ -6354,24 +6702,31 @@ msgstr ""
#~ msgid " -f filename Read key bindings from FILENAME."
#~ msgstr " -f ARQUIVO Ler os vínculos das teclas em ARQUIVO."
-#~ msgid " -q function-name Query about which keys invoke the named function."
+#~ msgid ""
+#~ " -q function-name Query about which keys invoke the named function."
#~ msgstr " -q NOME-FUNÇÃO Consultar quais teclas chamam esta função."
#~ msgid " -V List variable names and values"
#~ msgstr " -V Listar os nomes e os valores das variáveis."
-#~ msgid " -v List variable names and values in a form that can"
-#~ msgstr " -v Listar os nomes e os valores das variáveis de uma"
+#~ msgid ""
+#~ " -v List variable names and values in a form that can"
+#~ msgstr ""
+#~ " -v Listar os nomes e os valores das variáveis de uma"
#~ msgid " be reused as input."
#~ msgstr " forma que pode ser reutilizada como entrada."
-#~ msgid " -S List key sequences that invoke macros and their values"
+#~ msgid ""
+#~ " -S List key sequences that invoke macros and their "
+#~ "values"
#~ msgstr ""
#~ " -S Listar as sequências de teclas que chamam macros\n"
#~ " e seus valores."
-#~ msgid " -s List key sequences that invoke macros and their values in"
+#~ msgid ""
+#~ " -s List key sequences that invoke macros and their "
+#~ "values in"
#~ msgstr " -s Listar sequências de teclas que chamam macros"
#~ msgid " a form that can be reused as input."
@@ -6392,7 +6747,8 @@ msgstr ""
#~ msgstr "Se N for especificado, prossegue no N-ésimo laço envolvente."
#~ msgid "Run a shell builtin. This is useful when you wish to rename a"
-#~ msgstr "Executa um comando interno do shell. Útil quando desejamos substituir"
+#~ msgstr ""
+#~ "Executa um comando interno do shell. Útil quando desejamos substituir"
#~ msgid "shell builtin to be a function, but need the functionality of the"
#~ msgstr "um comando interno do shell por uma função, mas necessitamos da"
@@ -6407,10 +6763,12 @@ msgstr ""
#~ msgstr "para DIR. A variável $CDPATH define o caminho de procura para"
#~ msgid "the directory containing DIR. Alternative directory names in CDPATH"
-#~ msgstr "o diretório que contém DIR. Nomes de diretórios alternativos em CDPATH"
+#~ msgstr ""
+#~ "o diretório que contém DIR. Nomes de diretórios alternativos em CDPATH"
#~ msgid "are separated by a colon (:). A null directory name is the same as"
-#~ msgstr "são separados por dois pontos (:). Um nome de diretório nulo é o mesmo"
+#~ msgstr ""
+#~ "são separados por dois pontos (:). Um nome de diretório nulo é o mesmo"
#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/),"
#~ msgstr "que o diretório atual, i.e. `.'. Se DIR inicia com uma barra (/),"
@@ -6419,15 +6777,20 @@ msgstr ""
#~ msgstr "então $CDPATH não é usado. Se o diretório não for encontrado, e a"
#~ msgid "shell option `cdable_vars' is set, then try the word as a variable"
-#~ msgstr "opção `cdable_vars' estiver definida, tentar usar DIR como um nome de"
+#~ msgstr ""
+#~ "opção `cdable_vars' estiver definida, tentar usar DIR como um nome de"
#~ msgid "name. If that variable has a value, then cd to the value of that"
-#~ msgstr "variável. Se esta variável tiver valor, então `cd' para o valor desta"
+#~ msgstr ""
+#~ "variável. Se esta variável tiver valor, então `cd' para o valor desta"
-#~ msgid "variable. The -P option says to use the physical directory structure"
-#~ msgstr "variável. A opção -P indica para usar a estrutura física do diretório"
+#~ msgid ""
+#~ "variable. The -P option says to use the physical directory structure"
+#~ msgstr ""
+#~ "variável. A opção -P indica para usar a estrutura física do diretório"
-#~ msgid "instead of following symbolic links; the -L option forces symbolic links"
+#~ msgid ""
+#~ "instead of following symbolic links; the -L option forces symbolic links"
#~ msgstr "em vez de seguir os vínculos simbólicos; a opção -L força seguir os"
#~ msgid "to be followed."
@@ -6442,19 +6805,27 @@ msgstr ""
#~ msgid "makes pwd follow symbolic links."
#~ msgstr "com que `pwd' siga os vínculos simbólicos."
-#~ msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell"
-#~ msgstr "Executa COMANDO com ARGs ignorando as funções da shell. Ex: Havendo"
+#~ msgid ""
+#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell"
+#~ msgstr ""
+#~ "Executa COMANDO com ARGs ignorando as funções da shell. Ex: Havendo"
#~ msgid "function called `ls', and you wish to call the command `ls', you can"
-#~ msgstr "uma função `ls', e se for necessário executar o comando `ls', executa-se"
+#~ msgstr ""
+#~ "uma função `ls', e se for necessário executar o comando `ls', executa-se"
-#~ msgid "say \"command ls\". If the -p option is given, a default value is used"
-#~ msgstr "\"command ls\". Se a opção -p for fornecida, o valor padrão é utilizado"
+#~ msgid ""
+#~ "say \"command ls\". If the -p option is given, a default value is used"
+#~ msgstr ""
+#~ "\"command ls\". Se a opção -p for fornecida, o valor padrão é utilizado"
-#~ msgid "for PATH that is guaranteed to find all of the standard utilities. If"
-#~ msgstr "para PATH, garantindo-se o encontro de todos os utilitários padrão. Se"
+#~ msgid ""
+#~ "for PATH that is guaranteed to find all of the standard utilities. If"
+#~ msgstr ""
+#~ "para PATH, garantindo-se o encontro de todos os utilitários padrão. Se"
-#~ msgid "the -V or -v option is given, a string is printed describing COMMAND."
+#~ msgid ""
+#~ "the -V or -v option is given, a string is printed describing COMMAND."
#~ msgstr "a opção -V ou -v for fornecida, é exibida a descrição do COMANDO."
#~ msgid "The -V option produces a more verbose description."
@@ -6505,7 +6876,8 @@ msgstr ""
#~ msgid "name only."
#~ msgstr "somente."
-#~ msgid "Using `+' instead of `-' turns off the given attribute instead. When"
+#~ msgid ""
+#~ "Using `+' instead of `-' turns off the given attribute instead. When"
#~ msgstr "Usando `+' em vez de `-' faz o atributo ser desabilitado. Quando"
#~ msgid "used in a function, makes NAMEs local, as with the `local' command."
@@ -6524,7 +6896,8 @@ msgstr ""
#~ msgstr "Exibe ARGs. Se -n for fornecido, o caracter final de nova linha é"
#~ msgid "suppressed. If the -e option is given, interpretation of the"
-#~ msgstr "suprimido. Se a opção -e for fornecida, a interpretação dos seguintes"
+#~ msgstr ""
+#~ "suprimido. Se a opção -e for fornecida, a interpretação dos seguintes"
#~ msgid "following backslash-escaped characters is turned on:"
#~ msgstr "caracteres após a contrabarra é ativada:"
@@ -6562,56 +6935,74 @@ msgstr ""
#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)."
#~ msgstr "\t\\num\to caracter com código ASCII igual a NUM (octal)."
-#~ msgid "You can explicitly turn off the interpretation of the above characters"
-#~ msgstr "Pode-se explicitamente desabilitar a interpretação dos caracteres acima"
+#~ msgid ""
+#~ "You can explicitly turn off the interpretation of the above characters"
+#~ msgstr ""
+#~ "Pode-se explicitamente desabilitar a interpretação dos caracteres acima"
#~ msgid "with the -E option."
#~ msgstr "através da opção -E."
-#~ msgid "Output the ARGs. If -n is specified, the trailing newline is suppressed."
-#~ msgstr "Exibe ARGS. Se -n for fornecido, o caracter final de nova linha é suprimido."
+#~ msgid ""
+#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed."
+#~ msgstr ""
+#~ "Exibe ARGS. Se -n for fornecido, o caracter final de nova linha é "
+#~ "suprimido."
#~ msgid "Enable and disable builtin shell commands. This allows"
-#~ msgstr "Habilita e desabilita os comandos internos do shell, permitindo usar"
+#~ msgstr ""
+#~ "Habilita e desabilita os comandos internos do shell, permitindo usar"
#~ msgid "you to use a disk command which has the same name as a shell"
-#~ msgstr "um comando de disco que tenha o mesmo nome do comando interno do shell."
+#~ msgstr ""
+#~ "um comando de disco que tenha o mesmo nome do comando interno do shell."
#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise"
-#~ msgstr "Se -n for especificado, os NOMEs são desabilitados, senão os nomes são"
+#~ msgstr ""
+#~ "Se -n for especificado, os NOMEs são desabilitados, senão os nomes são"
#~ msgid "NAMEs are enabled. For example, to use the `test' found on your"
-#~ msgstr "habilitados. Por exemplo, para usar `test' encontrado pelo PATH em vez"
+#~ msgstr ""
+#~ "habilitados. Por exemplo, para usar `test' encontrado pelo PATH em vez"
#~ msgid "path instead of the shell builtin version, type `enable -n test'."
-#~ msgstr "da versão interna do comando, digite `enable -n test'. Em sistemas que"
+#~ msgstr ""
+#~ "da versão interna do comando, digite `enable -n test'. Em sistemas que"
#~ msgid "On systems supporting dynamic loading, the -f option may be used"
-#~ msgstr "suportam carregamento dinâmico, pode-se usar a opção -f para carregar"
+#~ msgstr ""
+#~ "suportam carregamento dinâmico, pode-se usar a opção -f para carregar"
#~ msgid "to load new builtins from the shared object FILENAME. The -d"
-#~ msgstr "novos comandos internos do objeto compartilhado ARQUIVO. A opção -d"
+#~ msgstr ""
+#~ "novos comandos internos do objeto compartilhado ARQUIVO. A opção -d"
#~ msgid "option will delete a builtin previously loaded with -f. If no"
-#~ msgstr "elimina os comandos internos previamente carregados com -f. Se nenhum"
+#~ msgstr ""
+#~ "elimina os comandos internos previamente carregados com -f. Se nenhum"
#~ msgid "non-option names are given, or the -p option is supplied, a list"
-#~ msgstr "nome for fornecido, ou se a opção -p for fornecida, uma lista de comandos"
+#~ msgstr ""
+#~ "nome for fornecido, ou se a opção -p for fornecida, uma lista de comandos"
#~ msgid "of builtins is printed. The -a option means to print every builtin"
-#~ msgstr "internos é exibida. A opção -a faz com que todos os comandos internos"
+#~ msgstr ""
+#~ "internos é exibida. A opção -a faz com que todos os comandos internos"
#~ msgid "with an indication of whether or not it is enabled. The -s option"
#~ msgstr "sejam exibidos indicando se estão habilitados ou não. A opção -s"
#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n"
-#~ msgstr "restringe a saída aos comandos internos `especiais' Posix.2. A opção"
+#~ msgstr ""
+#~ "restringe a saída aos comandos internos `especiais' Posix.2. A opção"
#~ msgid "option displays a list of all disabled builtins."
#~ msgstr "-n exibe a lista de todos os comandos internos desabilitados."
-#~ msgid "Read ARGs as input to the shell and execute the resulting command(s)."
-#~ msgstr "Ler ARGs como entrada do shell e executar o(s) comando(s) resultante(s)."
+#~ msgid ""
+#~ "Read ARGs as input to the shell and execute the resulting command(s)."
+#~ msgstr ""
+#~ "Ler ARGs como entrada do shell e executar o(s) comando(s) resultante(s)."
#~ msgid "Getopts is used by shell procedures to parse positional parameters."
#~ msgstr ""
@@ -6640,13 +7031,15 @@ msgstr ""
#~ msgstr "shell OPTIND. OPTIND é inicializado com 1 cada vez que o script"
#~ msgid "a shell script is invoked. When an option requires an argument,"
-#~ msgstr "do shell é chamado. Quando uma opção requer um argumento, `getopts'"
+#~ msgstr ""
+#~ "do shell é chamado. Quando uma opção requer um argumento, `getopts'"
#~ msgid "getopts places that argument into the shell variable OPTARG."
#~ msgstr "coloca este argumento dentro da variável do shell OPTARG."
#~ msgid "getopts reports errors in one of two ways. If the first character"
-#~ msgstr "`getopts' informa os erros de duas maneiras. Se o primeiro caracter de"
+#~ msgstr ""
+#~ "`getopts' informa os erros de duas maneiras. Se o primeiro caracter de"
#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In"
#~ msgstr "OPÇÕES for dois pontos, `getopts' usa o modo silencioso. Neste"
@@ -6658,19 +7051,24 @@ msgstr ""
#~ msgstr "encontrada, `getopts' coloca o caracter da opção em OPTARG. Se um"
#~ msgid "required argument is not found, getopts places a ':' into NAME and"
-#~ msgstr "argumento requerido não for encontrado, `getopts' coloca ':' em NOME e"
+#~ msgstr ""
+#~ "argumento requerido não for encontrado, `getopts' coloca ':' em NOME e"
#~ msgid "sets OPTARG to the option character found. If getopts is not in"
-#~ msgstr "atribui a OPTARG o caracter de opção encontrado. Se `getopts' não está em"
+#~ msgstr ""
+#~ "atribui a OPTARG o caracter de opção encontrado. Se `getopts' não está em"
#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into"
-#~ msgstr "modo silencioso, e uma opção ilegal é encontrada, `getopts' coloca '?' em"
+#~ msgstr ""
+#~ "modo silencioso, e uma opção ilegal é encontrada, `getopts' coloca '?' em"
#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'"
-#~ msgstr "NOME e desativa OPTARG. Se uma opção requerida não é encontrada, uma '?'"
+#~ msgstr ""
+#~ "NOME e desativa OPTARG. Se uma opção requerida não é encontrada, uma '?'"
#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is"
-#~ msgstr "é colocada em NOME, OPTARG é desativado, e uma mensagem de diagnóstico é"
+#~ msgstr ""
+#~ "é colocada em NOME, OPTARG é desativado, e uma mensagem de diagnóstico é"
#~ msgid "printed."
#~ msgstr "exibida."
@@ -6685,16 +7083,19 @@ msgstr ""
#~ msgstr "OPTSTRING não seja dois pontos. OPTERR tem o valor 1 por padrão."
#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if"
-#~ msgstr "`getopts' normalmente faz a leitura dos parãmetros posicionais ($0 - $9),"
+#~ msgstr ""
+#~ "`getopts' normalmente faz a leitura dos parãmetros posicionais ($0 - $9),"
#~ msgid "more arguments are given, they are parsed instead."
#~ msgstr "mas, se mais argumentos forem fornecidos, então estes são lidos."
#~ msgid "Exec FILE, replacing this shell with the specified program."
-#~ msgstr "Executa ARQUIVO, substituindo esta shell pelo programa especificado."
+#~ msgstr ""
+#~ "Executa ARQUIVO, substituindo esta shell pelo programa especificado."
#~ msgid "If FILE is not specified, the redirections take effect in this"
-#~ msgstr "Se ARQUIVO não for especificado, os redirecionamentos são efetivados"
+#~ msgstr ""
+#~ "Se ARQUIVO não for especificado, os redirecionamentos são efetivados"
#~ msgid "shell. If the first argument is `-l', then place a dash in the"
#~ msgstr "neste shell. Se o primeiro argumento for `-l', coloca um hífen no"
@@ -6712,7 +7113,8 @@ msgstr ""
#~ msgstr "Se o arquivo não puder ser executado e o shell não for interativa,"
#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\""
-#~ msgstr "então o shell termina, a menos que a variável \"no_exit_on_failed_exec\""
+#~ msgstr ""
+#~ "então o shell termina, a menos que a variável \"no_exit_on_failed_exec\""
#~ msgid "is set."
#~ msgstr "esteja inicializada."
@@ -6720,7 +7122,8 @@ msgstr ""
#~ msgid "is that of the last command executed."
#~ msgstr "de saída é igual ao do último comando executado."
-#~ msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
+#~ msgid ""
+#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
#~ msgstr "PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou"
#~ msgid "string, which means the most recent command beginning with that"
@@ -6729,11 +7132,16 @@ msgstr ""
#~ msgid "string."
#~ msgstr "mais recente começado por estes caracteres."
-#~ msgid " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,"
-#~ msgstr " -e EDITOR seleciona qual editor usar. O padrão é FCEDIT, depois EDITOR,"
+#~ msgid ""
+#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,"
+#~ msgstr ""
+#~ " -e EDITOR seleciona qual editor usar. O padrão é FCEDIT, depois "
+#~ "EDITOR,"
-#~ msgid " then the editor which corresponds to the current readline editing"
-#~ msgstr " depois o editor correspondente ao modo de edição atual da leitura"
+#~ msgid ""
+#~ " then the editor which corresponds to the current readline editing"
+#~ msgstr ""
+#~ " depois o editor correspondente ao modo de edição atual da leitura"
#~ msgid " mode, then vi."
#~ msgstr " de linha, e depois o vi."
@@ -6744,32 +7152,40 @@ msgstr ""
#~ msgid " -n means no line numbers listed."
#~ msgstr " -n indica para não listar os números das linhas."
-#~ msgid " -r means reverse the order of the lines (making it newest listed first)."
-#~ msgstr " -r faz reverter a ordem das linhas (a última torna-se a primeira)."
+#~ msgid ""
+#~ " -r means reverse the order of the lines (making it newest listed "
+#~ "first)."
+#~ msgstr ""
+#~ " -r faz reverter a ordem das linhas (a última torna-se a primeira)."
#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is"
-#~ msgstr "No formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', o comando é executado"
+#~ msgstr ""
+#~ "No formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', o comando é executado"
#~ msgid "re-executed after the substitution OLD=NEW is performed."
#~ msgstr "novamente após a substituição de ANTIGO por NOVO ser realizada."
#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'"
-#~ msgstr "Um alias útil a ser usado é r='fc -s' para que, ao se digitar `r cc',"
+#~ msgstr ""
+#~ "Um alias útil a ser usado é r='fc -s' para que, ao se digitar `r cc',"
#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes"
#~ msgstr "seja executado o último comando começado por `cc' e, ao se digitar"
#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If"
-#~ msgstr "Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual."
+#~ msgstr ""
+#~ "Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual."
#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is"
-#~ msgstr "Se JOB-ESPECIFICADO não estiver presente, a noção do shell do trabalho"
+#~ msgstr ""
+#~ "Se JOB-ESPECIFICADO não estiver presente, a noção do shell do trabalho"
#~ msgid "used."
#~ msgstr "atual é utilizada."
#~ msgid "Place JOB_SPEC in the background, as if it had been started with"
-#~ msgstr "Colocar JOB-ESPECIFICADO no segundo plano, como se tivesse sido ativado"
+#~ msgstr ""
+#~ "Colocar JOB-ESPECIFICADO no segundo plano, como se tivesse sido ativado"
#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current"
#~ msgstr "com `&'. Se JOB-ESPECIFICADO não estiver presente, a noção do shell"
@@ -6778,18 +7194,22 @@ msgstr ""
#~ msgstr "do trabalho atual é utilizada."
#~ msgid "For each NAME, the full pathname of the command is determined and"
-#~ msgstr "Para cada NOME, o caminho completo do comando é determinado e lembrado."
+#~ msgstr ""
+#~ "Para cada NOME, o caminho completo do comando é determinado e lembrado."
#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the"
-#~ msgstr "Se a opção -p for fornecida, CAMINHO é utilizado como o caminho completo"
+#~ msgstr ""
+#~ "Se a opção -p for fornecida, CAMINHO é utilizado como o caminho completo"
#~ msgid "full pathname of NAME, and no path search is performed. The -r"
#~ msgstr "para NOME, e nenhuma procura de caminho é realizada. A opção -r"
#~ msgid "option causes the shell to forget all remembered locations. If no"
-#~ msgstr "faz com que a shell esqueça todas as localizações lembradas. Sem nenhum"
+#~ msgstr ""
+#~ "faz com que a shell esqueça todas as localizações lembradas. Sem nenhum"
-#~ msgid "arguments are given, information about remembered commands is displayed."
+#~ msgid ""
+#~ "arguments are given, information about remembered commands is displayed."
#~ msgstr "argumento, as informações sobre os comandos lembrados são exibidas."
#~ msgid "Display helpful information about builtin commands. If PATTERN is"
@@ -6799,10 +7219,12 @@ msgstr ""
#~ msgstr "especificado, fornece ajuda detalhada para todos os comandos que"
#~ msgid "otherwise a list of the builtins is printed."
-#~ msgstr "correspondem ao PADRÃO, senão a lista dos comandos internos é exibida."
+#~ msgstr ""
+#~ "correspondem ao PADRÃO, senão a lista dos comandos internos é exibida."
#~ msgid "Display the history list with line numbers. Lines listed with"
-#~ msgstr "Exibe a lista histórica com os números das linhas. Linhas contendo um"
+#~ msgstr ""
+#~ "Exibe a lista histórica com os números das linhas. Linhas contendo um"
#~ msgid "with a `*' have been modified. Argument of N says to list only"
#~ msgstr "`*' foram modificadas. O argumento N faz listar somente as últimas"
@@ -6810,14 +7232,19 @@ msgstr ""
#~ msgid "the last N lines. The -c option causes the history list to be"
#~ msgstr "N linhas. A opção -c faz com que a lista histórica seja apagada"
-#~ msgid "cleared by deleting all of the entries. The `-w' option writes out the"
-#~ msgstr "removendo todas as entradas. A opção `-w' escreve o histórico atual no"
+#~ msgid ""
+#~ "cleared by deleting all of the entries. The `-w' option writes out the"
+#~ msgstr ""
+#~ "removendo todas as entradas. A opção `-w' escreve o histórico atual no"
-#~ msgid "current history to the history file; `-r' means to read the file and"
-#~ msgstr "arquivo de histórico; A opção `-r' significa ler o arquivo e apensar seu"
+#~ msgid ""
+#~ "current history to the history file; `-r' means to read the file and"
+#~ msgstr ""
+#~ "arquivo de histórico; A opção `-r' significa ler o arquivo e apensar seu"
#~ msgid "append the contents to the history list instead. `-a' means"
-#~ msgstr "conteúdo à lista histórica. A opção `-a' significa apensar as linhas de"
+#~ msgstr ""
+#~ "conteúdo à lista histórica. A opção `-a' significa apensar as linhas de"
#~ msgid "to append history lines from this session to the history file."
#~ msgstr "histórico desta sessão ao arquivo de histórico."
@@ -6826,82 +7253,113 @@ msgstr ""
#~ msgstr "A opção `-n' faz ler todas as linhas de histórico ainda não lidas"
#~ msgid "from the history file and append them to the history list. If"
-#~ msgstr "do arquivo histórico, e apensá-las à lista de histórico. Se ARQUIVO"
+#~ msgstr ""
+#~ "do arquivo histórico, e apensá-las à lista de histórico. Se ARQUIVO"
#~ msgid "FILENAME is given, then that is used as the history file else"
#~ msgstr "for fornecido, então este é usado como arquivo de histórico, senão"
#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history."
-#~ msgstr "se $HISTFILE possui valor, este é usado, senão ~/.bash_history. Se a"
+#~ msgstr ""
+#~ "se $HISTFILE possui valor, este é usado, senão ~/.bash_history. Se a"
#~ msgid "If the -s option is supplied, the non-option ARGs are appended to"
-#~ msgstr "opção -s for fornecida, os ARGs, que não forem opções, são apensados à"
+#~ msgstr ""
+#~ "opção -s for fornecida, os ARGs, que não forem opções, são apensados à"
#~ msgid "the history list as a single entry. The -p option means to perform"
-#~ msgstr "lista histórica como uma única entrada. A opção -p significa realizar a"
+#~ msgstr ""
+#~ "lista histórica como uma única entrada. A opção -p significa realizar a"
-#~ msgid "history expansion on each ARG and display the result, without storing"
-#~ msgstr "expansão da história em cada ARG e exibir o resultado, sem armazenar"
+#~ msgid ""
+#~ "history expansion on each ARG and display the result, without storing"
+#~ msgstr ""
+#~ "expansão da história em cada ARG e exibir o resultado, sem armazenar"
#~ msgid "anything in the history list."
#~ msgstr "nada na lista de histórico."
#~ msgid "Lists the active jobs. The -l option lists process id's in addition"
-#~ msgstr "Lista os trabalhos ativos. A opção -l lista os ID's dos processos além"
+#~ msgstr ""
+#~ "Lista os trabalhos ativos. A opção -l lista os ID's dos processos além"
#~ msgid "to the normal information; the -p option lists process id's only."
-#~ msgstr "das informações usuais; a opção -p lista somente os ID's dos processos."
+#~ msgstr ""
+#~ "das informações usuais; a opção -p lista somente os ID's dos processos."
-#~ msgid "If -n is given, only processes that have changed status since the last"
-#~ msgstr "Se -n for fornecido, somente os processos que mudaram de status desde a"
+#~ msgid ""
+#~ "If -n is given, only processes that have changed status since the last"
+#~ msgstr ""
+#~ "Se -n for fornecido, somente os processos que mudaram de status desde a"
-#~ msgid "notification are printed. JOBSPEC restricts output to that job. The"
-#~ msgstr "última notificação são exibidos. JOB-ESPECIFICADO restringe a saída a este"
+#~ msgid ""
+#~ "notification are printed. JOBSPEC restricts output to that job. The"
+#~ msgstr ""
+#~ "última notificação são exibidos. JOB-ESPECIFICADO restringe a saída a "
+#~ "este"
#~ msgid "-r and -s options restrict output to running and stopped jobs only,"
-#~ msgstr "trabalho. As opções -r e -s restringem a saída apenas aos trabalhos"
+#~ msgstr ""
+#~ "trabalho. As opções -r e -s restringem a saída apenas aos trabalhos"
#~ msgid "respectively. Without options, the status of all active jobs is"
-#~ msgstr "executando e parados, respectivamente. Sem opções, o status de todos os"
+#~ msgstr ""
+#~ "executando e parados, respectivamente. Sem opções, o status de todos os"
-#~ msgid "printed. If -x is given, COMMAND is run after all job specifications"
-#~ msgstr "trabalhos ativos são exibidos. Se -x for fornecido, COMANDO é executado"
+#~ msgid ""
+#~ "printed. If -x is given, COMMAND is run after all job specifications"
+#~ msgstr ""
+#~ "trabalhos ativos são exibidos. Se -x for fornecido, COMANDO é executado"
-#~ msgid "that appear in ARGS have been replaced with the process ID of that job's"
-#~ msgstr "após todas as especificações de trabalho que aparecem em ARGS terem sido"
+#~ msgid ""
+#~ "that appear in ARGS have been replaced with the process ID of that job's"
+#~ msgstr ""
+#~ "após todas as especificações de trabalho que aparecem em ARGS terem sido"
#~ msgid "process group leader."
#~ msgstr "substituídas pelo ID do processo líder deste grupo de processos."
#~ msgid "Removes each JOBSPEC argument from the table of active jobs."
-#~ msgstr "Remove cada argumento JOB-ESPECIFICADO da tabela de trabalhos ativos."
+#~ msgstr ""
+#~ "Remove cada argumento JOB-ESPECIFICADO da tabela de trabalhos ativos."
#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If"
-#~ msgstr "Envia ao processo identificado pelo PID (ou JOB) o sinal SIGSPEC. Se"
+#~ msgstr ""
+#~ "Envia ao processo identificado pelo PID (ou JOB) o sinal SIGSPEC. Se"
-#~ msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'"
-#~ msgstr "SIGSPEC não estiver presente, então SIGTERM é assumido. A opção `-l'"
+#~ msgid ""
+#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'"
+#~ msgstr ""
+#~ "SIGSPEC não estiver presente, então SIGTERM é assumido. A opção `-l'"
#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to"
-#~ msgstr "lista os nomes dos sinais; havendo argumentos após `-l', são assumidos"
+#~ msgstr ""
+#~ "lista os nomes dos sinais; havendo argumentos após `-l', são assumidos"
#~ msgid "be signal numbers for which names should be listed. Kill is a shell"
-#~ msgstr "como sendo os números dos sinais cujos nomes devem ser exibidos. Kill"
+#~ msgstr ""
+#~ "como sendo os números dos sinais cujos nomes devem ser exibidos. Kill"
#~ msgid "builtin for two reasons: it allows job IDs to be used instead of"
-#~ msgstr "é um comando interno por duas razões: permite o uso do ID do trabalho em"
+#~ msgstr ""
+#~ "é um comando interno por duas razões: permite o uso do ID do trabalho em"
#~ msgid "process IDs, and, if you have reached the limit on processes that"
-#~ msgstr "vez do ID do processo e, caso tenha sido atingido o limite de processos que"
+#~ msgstr ""
+#~ "vez do ID do processo e, caso tenha sido atingido o limite de processos "
+#~ "que"
-#~ msgid "you can create, you don't have to start a process to kill another one."
-#~ msgstr "podem ser criados, não é necessário um novo processo para remover outro."
+#~ msgid ""
+#~ "you can create, you don't have to start a process to kill another one."
+#~ msgstr ""
+#~ "podem ser criados, não é necessário um novo processo para remover outro."
#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation"
#~ msgstr "Cada ARG é uma expressão aritmética a ser avaliada. A avaliação é"
#~ msgid "is done in long integers with no check for overflow, though division"
-#~ msgstr "feita usando inteiros longos sem verificar estouro, embora a divisão"
+#~ msgstr ""
+#~ "feita usando inteiros longos sem verificar estouro, embora a divisão"
#~ msgid "by 0 is trapped and flagged as an error. The following list of"
#~ msgstr "por 0 seja capturada e indicada como erro. A lista abaixo está"
@@ -6973,7 +7431,8 @@ msgstr ""
#~ msgstr "ativo para ser usada em uma expressão."
#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in"
-#~ msgstr "Os operadores são avaliados em ordem de precedência. Sub-expressões"
+#~ msgstr ""
+#~ "Os operadores são avaliados em ordem de precedência. Sub-expressões"
#~ msgid "parentheses are evaluated first and may override the precedence"
#~ msgstr "entre parênteses são avaliadas primeiro e podem prevalecer sobre as"
@@ -6990,53 +7449,76 @@ msgstr ""
#~ msgid "One line is read from the standard input, and the first word is"
#~ msgstr "Uma linha é lida a partir da entrada padrão, e a primeira palavra é"
-#~ msgid "assigned to the first NAME, the second word to the second NAME, and so"
-#~ msgstr "atribuída ao primeiro NOME, a segunda ao segundo NOME, e assim por diante,"
+#~ msgid ""
+#~ "assigned to the first NAME, the second word to the second NAME, and so"
+#~ msgstr ""
+#~ "atribuída ao primeiro NOME, a segunda ao segundo NOME, e assim por diante,"
-#~ msgid "on, with leftover words assigned to the last NAME. Only the characters"
-#~ msgstr "com as palavras restantes atribuídas ao último NOME. Somente os caracteres"
+#~ msgid ""
+#~ "on, with leftover words assigned to the last NAME. Only the characters"
+#~ msgstr ""
+#~ "com as palavras restantes atribuídas ao último NOME. Somente os "
+#~ "caracteres"
#~ msgid "found in $IFS are recognized as word delimiters. The return code is"
-#~ msgstr "encontrados em $IFS são reconhecidos como delimitadores. O código de retorno"
+#~ msgstr ""
+#~ "encontrados em $IFS são reconhecidos como delimitadores. O código de "
+#~ "retorno"
-#~ msgid "zero, unless end-of-file is encountered. If no NAMEs are supplied, the"
-#~ msgstr "é zero, a menos que EOF seja encontrado. Se nenhum NOME for fornecido,"
+#~ msgid ""
+#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the"
+#~ msgstr ""
+#~ "é zero, a menos que EOF seja encontrado. Se nenhum NOME for fornecido,"
-#~ msgid "line read is stored in the REPLY variable. If the -r option is given,"
-#~ msgstr "a linha lida é armazenada na variável REPLY. Se a opção -r for fornecida,"
+#~ msgid ""
+#~ "line read is stored in the REPLY variable. If the -r option is given,"
+#~ msgstr ""
+#~ "a linha lida é armazenada na variável REPLY. Se a opção -r for fornecida,"
#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If"
-#~ msgstr "significa entrada `textual', desabilitando a interpretação da contrabarra."
+#~ msgstr ""
+#~ "significa entrada `textual', desabilitando a interpretação da contrabarra."
#~ msgid "the `-p' option is supplied, the string supplied as an argument is"
-#~ msgstr "Se a opção `-p' for fornecida a MENSAGEM fornecida como argumento é exibida,"
+#~ msgstr ""
+#~ "Se a opção `-p' for fornecida a MENSAGEM fornecida como argumento é "
+#~ "exibida,"
-#~ msgid "output without a trailing newline before attempting to read. If -a is"
-#~ msgstr "sem o caracter de nova linha, antes de efetuar a leitura. Se a opção -a"
+#~ msgid ""
+#~ "output without a trailing newline before attempting to read. If -a is"
+#~ msgstr ""
+#~ "sem o caracter de nova linha, antes de efetuar a leitura. Se a opção -a"
-#~ msgid "supplied, the words read are assigned to sequential indices of ARRAY,"
-#~ msgstr "for fornecida, as palavras lidas são atribuídas aos índices sequenciais"
+#~ msgid ""
+#~ "supplied, the words read are assigned to sequential indices of ARRAY,"
+#~ msgstr ""
+#~ "for fornecida, as palavras lidas são atribuídas aos índices sequenciais"
#~ msgid "starting at zero. If -e is supplied and the shell is interactive,"
-#~ msgstr "do ARRAY, começando por zero. Se a opção -e for fornecida, e a shell for"
+#~ msgstr ""
+#~ "do ARRAY, começando por zero. Se a opção -e for fornecida, e a shell for"
#~ msgid "readline is used to obtain the line."
#~ msgstr "interativa, `readline' é utilizado para ler a linha."
-#~ msgid "Causes a function to exit with the return value specified by N. If N"
+#~ msgid ""
+#~ "Causes a function to exit with the return value specified by N. If N"
#~ msgstr "Faz a função terminar com o valor de retorno especificado por N."
#~ msgid "is omitted, the return status is that of the last command."
#~ msgstr "Se N for omitido, retorna o status do último comando executado."
#~ msgid " -a Mark variables which are modified or created for export."
-#~ msgstr " -a Marcar para exportação as variáveis que são criadas ou modificadas."
+#~ msgstr ""
+#~ " -a Marcar para exportação as variáveis que são criadas ou "
+#~ "modificadas."
#~ msgid " -b Notify of job termination immediately."
#~ msgstr " -b Notificar imediatamente o término do trabalho."
#~ msgid " -e Exit immediately if a command exits with a non-zero status."
-#~ msgstr " -e Terminar imediatamente se um comando terminar com status != 0."
+#~ msgstr ""
+#~ " -e Terminar imediatamente se um comando terminar com status != 0."
#~ msgid " -f Disable file name generation (globbing)."
#~ msgstr " -f Desabilitar a geração de nome de arquivo (metacaracteres)."
@@ -7044,14 +7526,16 @@ msgstr ""
#~ msgid " -h Remember the location of commands as they are looked up."
#~ msgstr " -h Lembrar da localização dos comandos ao procurá-los."
-#~ msgid " -i Force the shell to be an \"interactive\" one. Interactive shells"
+#~ msgid ""
+#~ " -i Force the shell to be an \"interactive\" one. Interactive shells"
#~ msgstr " -i Forçar a shell ser do tipo \"interativa\". `Shells'"
#~ msgid " always read `~/.bashrc' on startup."
#~ msgstr " interativas sempre lêem `~/.bashrc' ao iniciar."
#~ msgid " -k All assignment arguments are placed in the environment for a"
-#~ msgstr " -k Todos os argumentos de atribuição são colocados no ambiente,"
+#~ msgstr ""
+#~ " -k Todos os argumentos de atribuição são colocados no ambiente,"
#~ msgid " command, not just those that precede the command name."
#~ msgstr " e não somente os que precedem o nome do comando."
@@ -7075,7 +7559,8 @@ msgstr ""
#~ msgstr " braceexpand o mesmo que -B"
#~ msgid " emacs use an emacs-style line editing interface"
-#~ msgstr " emacs usar interface de edição de linha estilo emacs"
+#~ msgstr ""
+#~ " emacs usar interface de edição de linha estilo emacs"
#~ msgid " errexit same as -e"
#~ msgstr " errexit o mesmo que -e"
@@ -7092,8 +7577,10 @@ msgstr ""
#~ msgid " interactive-comments"
#~ msgstr " interactive-comments"
-#~ msgid " allow comments to appear in interactive commands"
-#~ msgstr " permite comentários em comandos interativos"
+#~ msgid ""
+#~ " allow comments to appear in interactive commands"
+#~ msgstr ""
+#~ " permite comentários em comandos interativos"
#~ msgid " keyword same as -k"
#~ msgstr " keyword o mesmo que -k"
@@ -7122,11 +7609,15 @@ msgstr ""
#~ msgid " physical same as -P"
#~ msgstr " physical o mesmo que -P"
-#~ msgid " posix change the behavior of bash where the default"
-#~ msgstr " posix mudar o comportamento do `bash' onde o padrão"
+#~ msgid ""
+#~ " posix change the behavior of bash where the default"
+#~ msgstr ""
+#~ " posix mudar o comportamento do `bash' onde o padrão"
-#~ msgid " operation differs from the 1003.2 standard to"
-#~ msgstr " for diferente do padrão 1003.2, para tornar"
+#~ msgid ""
+#~ " operation differs from the 1003.2 standard to"
+#~ msgstr ""
+#~ " for diferente do padrão 1003.2, para tornar"
#~ msgid " match the standard"
#~ msgstr " igual ao padrão"
@@ -7138,19 +7629,26 @@ msgstr ""
#~ msgstr " verbose o mesmo que -v"
#~ msgid " vi use a vi-style line editing interface"
-#~ msgstr " vi usar interface de edição de linha estilo vi"
+#~ msgstr ""
+#~ " vi usar interface de edição de linha estilo vi"
#~ msgid " xtrace same as -x"
#~ msgstr " xtrace o mesmo que -x"
-#~ msgid " -p Turned on whenever the real and effective user ids do not match."
-#~ msgstr " -p Habilitado sempre que o usuário real e efetivo forem diferentes."
+#~ msgid ""
+#~ " -p Turned on whenever the real and effective user ids do not match."
+#~ msgstr ""
+#~ " -p Habilitado sempre que o usuário real e efetivo forem diferentes."
#~ msgid " Disables processing of the $ENV file and importing of shell"
-#~ msgstr " Desabilita o processamento do arquivo $ENV e importação das funções"
+#~ msgstr ""
+#~ " Desabilita o processamento do arquivo $ENV e importação das "
+#~ "funções"
-#~ msgid " functions. Turning this option off causes the effective uid and"
-#~ msgstr " da shell. Desabilitando esta opção faz com que o `uid' e `gid'"
+#~ msgid ""
+#~ " functions. Turning this option off causes the effective uid and"
+#~ msgstr ""
+#~ " da shell. Desabilitando esta opção faz com que o `uid' e `gid'"
#~ msgid " gid to be set to the real uid and gid."
#~ msgstr " efetivos sejam feitos o mesmo que o `uid' e `gid' reais."
@@ -7159,7 +7657,8 @@ msgstr ""
#~ msgstr " -t Sair após ler e executar um comando."
#~ msgid " -u Treat unset variables as an error when substituting."
-#~ msgstr " -u Tratar como erro as variáveis não inicializadas na substituição."
+#~ msgstr ""
+#~ " -u Tratar como erro as variáveis não inicializadas na substituição."
#~ msgid " -v Print shell input lines as they are read."
#~ msgstr " -v Exibir as linhas de entrada da shell ao lê-las."
@@ -7192,10 +7691,13 @@ msgstr ""
#~ msgstr "Usando + em vez de - faz com que as opções sejam desabilitadas. As"
#~ msgid "flags can also be used upon invocation of the shell. The current"
-#~ msgstr "opções também podem ser usadas na chamada da shell. O conjunto atual"
+#~ msgstr ""
+#~ "opções também podem ser usadas na chamada da shell. O conjunto atual"
-#~ msgid "set of flags may be found in $-. The remaining n ARGs are positional"
-#~ msgstr "de opções pode ser encontrado em $-. Os n ARGs restantes são parâmetros"
+#~ msgid ""
+#~ "set of flags may be found in $-. The remaining n ARGs are positional"
+#~ msgstr ""
+#~ "de opções pode ser encontrado em $-. Os n ARGs restantes são parâmetros"
#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no"
#~ msgstr "posicionais e são atribuídos, em ordem, a $1, $2, .. $n. Se nenhum"
@@ -7204,10 +7706,12 @@ msgstr ""
#~ msgstr "ARG for fornecido, todas as variáveis da shell são exibidas."
#~ msgid "For each NAME, remove the corresponding variable or function. Given"
-#~ msgstr "Para cada NOME, remove a variável ou a função correspondente. Usando-se a"
+#~ msgstr ""
+#~ "Para cada NOME, remove a variável ou a função correspondente. Usando-se a"
#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag,"
-#~ msgstr "opção `-v', `unset' atua somente nas variáveis. Usando-se a opção `-f'"
+#~ msgstr ""
+#~ "opção `-v', `unset' atua somente nas variáveis. Usando-se a opção `-f'"
#~ msgid "unset will only act on functions. With neither flag, unset first"
#~ msgstr "`unset' atua somente nas funções. Sem nenhuma opção, inicialmente"
@@ -7215,26 +7719,32 @@ msgstr ""
#~ msgid "tries to unset a variable, and if that fails, then tries to unset a"
#~ msgstr "`unset' tenta remover uma variável e, se falhar, tenta remover uma"
-#~ msgid "function. Some variables (such as PATH and IFS) cannot be unset; also"
-#~ msgstr "função. Algumas variáveis (como PATH e IFS) não podem ser removidas."
+#~ msgid ""
+#~ "function. Some variables (such as PATH and IFS) cannot be unset; also"
+#~ msgstr ""
+#~ "função. Algumas variáveis (como PATH e IFS) não podem ser removidas."
#~ msgid "see readonly."
#~ msgstr "Veja também o comando `readonly'."
#~ msgid "NAMEs are marked for automatic export to the environment of"
-#~ msgstr "NOMEs são marcados para serem automaticamente exportados para o ambiente"
+#~ msgstr ""
+#~ "NOMEs são marcados para serem automaticamente exportados para o ambiente"
#~ msgid "subsequently executed commands. If the -f option is given,"
#~ msgstr "dos comando executados a seguir. Se a opção -f for fornecida,"
#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'"
-#~ msgstr "os NOMEs se referem a funções. Se nenhum nome for fornecido, ou se `-p'"
+#~ msgstr ""
+#~ "os NOMEs se referem a funções. Se nenhum nome for fornecido, ou se `-p'"
#~ msgid "is given, a list of all names that are exported in this shell is"
-#~ msgstr "for usado, uma lista com todos os nomes que são exportados nesta shell é"
+#~ msgstr ""
+#~ "for usado, uma lista com todos os nomes que são exportados nesta shell é"
#~ msgid "printed. An argument of `-n' says to remove the export property"
-#~ msgstr "exibida. O argumento `-n' faz remover a propriedade de exportação dos"
+#~ msgstr ""
+#~ "exibida. O argumento `-n' faz remover a propriedade de exportação dos"
#~ msgid "from subsequent NAMEs. An argument of `--' disables further option"
#~ msgstr "NOMEs subsequentes. O argumento `--' desabilita o processamento de"
@@ -7242,29 +7752,40 @@ msgstr ""
#~ msgid "processing."
#~ msgstr "opções posteriores."
-#~ msgid "The given NAMEs are marked readonly and the values of these NAMEs may"
-#~ msgstr "Os NOMEs são marcados como somente para leitura, e os valores destes"
+#~ msgid ""
+#~ "The given NAMEs are marked readonly and the values of these NAMEs may"
+#~ msgstr ""
+#~ "Os NOMEs são marcados como somente para leitura, e os valores destes"
#~ msgid "not be changed by subsequent assignment. If the -f option is given,"
-#~ msgstr "NOMEs não poderão ser alterados por novas atribuições. Se a opção -f for"
+#~ msgstr ""
+#~ "NOMEs não poderão ser alterados por novas atribuições. Se a opção -f for"
#~ msgid "then functions corresponding to the NAMEs are so marked. If no"
-#~ msgstr "fornecida, as funções correspondentes a NOMEs também são marcadas. Sem"
+#~ msgstr ""
+#~ "fornecida, as funções correspondentes a NOMEs também são marcadas. Sem"
-#~ msgid "arguments are given, or if `-p' is given, a list of all readonly names"
-#~ msgstr "nenhum argumento, ou se `-p' for usado, uma lista com todos os nomes"
+#~ msgid ""
+#~ "arguments are given, or if `-p' is given, a list of all readonly names"
+#~ msgstr ""
+#~ "nenhum argumento, ou se `-p' for usado, uma lista com todos os nomes"
-#~ msgid "is printed. An argument of `-n' says to remove the readonly property"
-#~ msgstr "somente para leitura é exibida. O argumento `-n' remove a propriedade"
+#~ msgid ""
+#~ "is printed. An argument of `-n' says to remove the readonly property"
+#~ msgstr ""
+#~ "somente para leitura é exibida. O argumento `-n' remove a propriedade"
#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as"
#~ msgstr "somente para leitura. A opção `-a' faz tratar cada NOME como uma"
#~ msgid "an array variable. An argument of `--' disables further option"
-#~ msgstr "variável tipo array. Um argumento `--' desabilita o processamento de"
+#~ msgstr ""
+#~ "variável tipo array. Um argumento `--' desabilita o processamento de"
-#~ msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is"
-#~ msgstr "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..."
+#~ msgid ""
+#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is"
+#~ msgstr ""
+#~ "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..."
#~ msgid "not given, it is assumed to be 1."
#~ msgstr "Se N não for especificado, o valor 1 é assumido ($2 vira $1 ...)."
@@ -7276,25 +7797,31 @@ msgstr ""
#~ msgstr "$PATH são usados para encontrar o diretório contendo o ARQUIVO."
#~ msgid "Suspend the execution of this shell until it receives a SIGCONT"
-#~ msgstr "Suspender a execução desta shell até que o sinal SIGCONT seja recebido."
+#~ msgstr ""
+#~ "Suspender a execução desta shell até que o sinal SIGCONT seja recebido."
#~ msgid "signal. The `-f' if specified says not to complain about this"
#~ msgstr "Se a opção `-f' for especificada indica para não reclamar sobre ser"
#~ msgid "being a login shell if it is; just suspend anyway."
-#~ msgstr "uma `shell de login', caso seja; simplesmente suspender de qualquer forma."
+#~ msgstr ""
+#~ "uma `shell de login', caso seja; simplesmente suspender de qualquer forma."
#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on"
-#~ msgstr "Termina com status 0 (verdadeiro) ou 1 (falso) conforme EXPR for avaliada."
+#~ msgstr ""
+#~ "Termina com status 0 (verdadeiro) ou 1 (falso) conforme EXPR for avaliada."
#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary"
-#~ msgstr "As expressões podem ser unárias ou binárias. As expressões unárias são"
+#~ msgstr ""
+#~ "As expressões podem ser unárias ou binárias. As expressões unárias são"
#~ msgid "expressions are often used to examine the status of a file. There"
-#~ msgstr "muito usadas para examinar o status de um arquivo. Existem, também,"
+#~ msgstr ""
+#~ "muito usadas para examinar o status de um arquivo. Existem, também,"
#~ msgid "are string operators as well, and numeric comparison operators."
-#~ msgstr "operadores para cadeias de caracteres (strings) e comparações numéricas."
+#~ msgstr ""
+#~ "operadores para cadeias de caracteres (strings) e comparações numéricas."
#~ msgid "File operators:"
#~ msgstr "Operadores para arquivos:"
@@ -7303,7 +7830,8 @@ msgstr ""
#~ msgstr " -b ARQUIVO Verdade se o arquivo for do tipo especial de bloco."
#~ msgid " -c FILE True if file is character special."
-#~ msgstr " -c ARQUIVO Verdade se o arquivo for do tipo especial de caracter."
+#~ msgstr ""
+#~ " -c ARQUIVO Verdade se o arquivo for do tipo especial de caracter."
#~ msgid " -d FILE True if file is a directory."
#~ msgstr " -d ARQUIVO Verdade se o arquivo for um diretório."
@@ -7315,10 +7843,12 @@ msgstr ""
#~ msgstr " -f ARQUIVO Verdade se o arquivo existir e for do tipo regular."
#~ msgid " -g FILE True if file is set-group-id."
-#~ msgstr " -g ARQUIVO Verdade se o arquivo tiver o bit \"set-group-id\" ativo."
+#~ msgstr ""
+#~ " -g ARQUIVO Verdade se o arquivo tiver o bit \"set-group-id\" ativo."
#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"."
-#~ msgstr " -h ARQUIVO Verdade se arquivo for um vínculo simbólico. Usar \"-L\"."
+#~ msgstr ""
+#~ " -h ARQUIVO Verdade se arquivo for um vínculo simbólico. Usar \"-L\"."
#~ msgid " -L FILE True if file is a symbolic link."
#~ msgstr " -L ARQUIVO Verdade se o arquivo for um vínculo simbólico."
@@ -7330,7 +7860,8 @@ msgstr ""
#~ msgstr " -p ARQUIVO Verdade se o arquivo for um `named pipe'."
#~ msgid " -r FILE True if file is readable by you."
-#~ msgstr " -r ARQUIVO Verdade se você tiver autorização para ler o arquivo."
+#~ msgstr ""
+#~ " -r ARQUIVO Verdade se você tiver autorização para ler o arquivo."
#~ msgid " -s FILE True if file exists and is not empty."
#~ msgstr " -s ARQUIVO Verdade se o arquivo existir e não estiver vazio."
@@ -7344,19 +7875,26 @@ msgstr ""
#~ " em um terminal."
#~ msgid " -u FILE True if the file is set-user-id."
-#~ msgstr " -u ARQUIVO Verdade se o arquivo tiver o bit \"set-user-id\" ativo."
+#~ msgstr ""
+#~ " -u ARQUIVO Verdade se o arquivo tiver o bit \"set-user-id\" ativo."
#~ msgid " -w FILE True if the file is writable by you."
-#~ msgstr " -w ARQUIVO Verdade se você tiver autorização para escrever no arquivo."
+#~ msgstr ""
+#~ " -w ARQUIVO Verdade se você tiver autorização para escrever no "
+#~ "arquivo."
#~ msgid " -x FILE True if the file is executable by you."
-#~ msgstr " -x ARQUIVO Verdade se você tiver autorização para executar o arquivo."
+#~ msgstr ""
+#~ " -x ARQUIVO Verdade se você tiver autorização para executar o arquivo."
#~ msgid " -O FILE True if the file is effectively owned by you."
-#~ msgstr " -O ARQUIVO Verdade se o arquivo pertencer ao seu usuário efetivo."
+#~ msgstr ""
+#~ " -O ARQUIVO Verdade se o arquivo pertencer ao seu usuário efetivo."
-#~ msgid " -G FILE True if the file is effectively owned by your group."
-#~ msgstr " -G ARQUIVO Verdade se o arquivo pertencer ao seu grupo efetivo."
+#~ msgid ""
+#~ " -G FILE True if the file is effectively owned by your group."
+#~ msgstr ""
+#~ " -G ARQUIVO Verdade se o arquivo pertencer ao seu grupo efetivo."
#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to"
#~ msgstr " ARQ1 -nt ARQ2 Verdade se ARQ1 for mais novo (conforme a data"
@@ -7399,14 +7937,18 @@ msgstr ""
#~ msgid " STRING1 < STRING2"
#~ msgstr " STRING1 < STRING2"
-#~ msgid " True if STRING1 sorts before STRING2 lexicographically"
-#~ msgstr " Verdade se STRING1 tiver ordenação anterior à STRING2."
+#~ msgid ""
+#~ " True if STRING1 sorts before STRING2 lexicographically"
+#~ msgstr ""
+#~ " Verdade se STRING1 tiver ordenação anterior à STRING2."
#~ msgid " STRING1 > STRING2"
#~ msgstr " STRING1 > STRING2"
-#~ msgid " True if STRING1 sorts after STRING2 lexicographically"
-#~ msgstr " Verdade se STRING1 tiver ordenação posterior à STRING2."
+#~ msgid ""
+#~ " True if STRING1 sorts after STRING2 lexicographically"
+#~ msgstr ""
+#~ " Verdade se STRING1 tiver ordenação posterior à STRING2."
#~ msgid "Other operators:"
#~ msgstr "Outros operadores:"
@@ -7427,9 +7969,11 @@ msgstr ""
#~ msgstr " -lt, -le, -gt, ou -ge."
#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
-#~ msgstr "Operadores aritméticos binários retornam verdadeiro se ARG1 for igual,"
+#~ msgstr ""
+#~ "Operadores aritméticos binários retornam verdadeiro se ARG1 for igual,"
-#~ msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
+#~ msgid ""
+#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
#~ msgstr "diferente, menor, menor ou igual, maior, ou maior ou igual do que"
#~ msgid "than ARG2."
@@ -7442,46 +7986,60 @@ msgstr ""
#~ msgstr "argumento deve ser o literal `]', para fechar o `[' de abertura."
#~ msgid "Print the accumulated user and system times for processes run from"
-#~ msgstr "Exibe os tempos acumulados do usuário e do sistema para os processos"
+#~ msgstr ""
+#~ "Exibe os tempos acumulados do usuário e do sistema para os processos"
#~ msgid "the shell."
#~ msgstr "executados por esta shell."
#~ msgid "The command ARG is to be read and executed when the shell receives"
-#~ msgstr "O comando em ARG é para ser lido e executado quando a shell receber o(s)"
+#~ msgstr ""
+#~ "O comando em ARG é para ser lido e executado quando a shell receber o(s)"
#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are"
-#~ msgstr "sinal(is) SINAL-ESPEC. Se ARG for omitido, todos os sinais especificados"
+#~ msgstr ""
+#~ "sinal(is) SINAL-ESPEC. Se ARG for omitido, todos os sinais especificados"
#~ msgid "reset to their original values. If ARG is the null string each"
-#~ msgstr "retornam aos seus valores originais. Se ARG for uma string nula, cada"
+#~ msgstr ""
+#~ "retornam aos seus valores originais. Se ARG for uma string nula, cada"
#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
-#~ msgstr "SINAL-ESPEC é ignorado pela shell e pelos comandos chamados por ela."
+#~ msgstr ""
+#~ "SINAL-ESPEC é ignorado pela shell e pelos comandos chamados por ela."
#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
-#~ msgstr "Se SINAL-ESPEC for EXIT (0) o comando em ARG é executado na saída da"
+#~ msgstr ""
+#~ "Se SINAL-ESPEC for EXIT (0) o comando em ARG é executado na saída da"
#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every"
-#~ msgstr "shell. Se SINAL-ESPEC for DEBUG, o comando em ARG é executado após cada"
+#~ msgstr ""
+#~ "shell. Se SINAL-ESPEC for DEBUG, o comando em ARG é executado após cada"
#~ msgid "command. If ARG is `-p' then the trap commands associated with"
-#~ msgstr "comando. Se ARG for `-p' então os comandos de captura associados com cada"
+#~ msgstr ""
+#~ "comando. Se ARG for `-p' então os comandos de captura associados com cada"
#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if"
#~ msgstr "SINAL-ESPEC são exibidos. Se nenhum argumento for fornecido, ou se"
#~ msgid "only `-p' is given, trap prints the list of commands associated with"
-#~ msgstr "somente `-p' for fornecido, é exibida a lista dos comandos associados"
+#~ msgstr ""
+#~ "somente `-p' for fornecido, é exibida a lista dos comandos associados"
-#~ msgid "each signal number. SIGNAL_SPEC is either a signal name in <signal.h>"
-#~ msgstr "com cada número de sinal. SINAL-ESPEC é um nome de sinal em <signal.h> ou"
+#~ msgid ""
+#~ "each signal number. SIGNAL_SPEC is either a signal name in <signal.h>"
+#~ msgstr ""
+#~ "com cada número de sinal. SINAL-ESPEC é um nome de sinal em <signal.h> ou"
-#~ msgid "or a signal number. `trap -l' prints a list of signal names and their"
-#~ msgstr "um número de sinal. `trap -l' exibe a lista de nomes de sinais com seus"
+#~ msgid ""
+#~ "or a signal number. `trap -l' prints a list of signal names and their"
+#~ msgstr ""
+#~ "um número de sinal. `trap -l' exibe a lista de nomes de sinais com seus"
#~ msgid "corresponding numbers. Note that a signal can be sent to the shell"
-#~ msgstr "números correspondentes. Note que o sinal pode ser enviado para a shell"
+#~ msgstr ""
+#~ "números correspondentes. Note que o sinal pode ser enviado para a shell"
#~ msgid "with \"kill -signal $$\"."
#~ msgstr "através do comando \"kill -SINAL $$\"."
@@ -7490,13 +8048,19 @@ msgstr ""
#~ msgstr "Para cada NOME, indica como este deve ser interpretado caso seja"
#~ msgid "If the -t option is used, returns a single word which is one of"
-#~ msgstr "Se a opção -t for fornecida, `type' retorna uma única palavra dentre"
+#~ msgstr ""
+#~ "Se a opção -t for fornecida, `type' retorna uma única palavra dentre"
-#~ msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
-#~ msgstr "`alias', `keyword', `function', `builtin', `file' ou `', se NOME for um"
+#~ msgid ""
+#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
+#~ msgstr ""
+#~ "`alias', `keyword', `function', `builtin', `file' ou `', se NOME for um"
-#~ msgid "alias, shell reserved word, shell function, shell builtin, disk file,"
-#~ msgstr "alias, uma palavra reservada, função ou comando interno da shell, um arquivo"
+#~ msgid ""
+#~ "alias, shell reserved word, shell function, shell builtin, disk file,"
+#~ msgstr ""
+#~ "alias, uma palavra reservada, função ou comando interno da shell, um "
+#~ "arquivo"
#~ msgid "or unfound, respectively."
#~ msgstr "em disco, ou não for encontrado, respectivamente."
@@ -7510,8 +8074,10 @@ msgstr ""
#~ msgid "If the -a flag is used, displays all of the places that contain an"
#~ msgstr "Se a opção -a for fornecida, exibe todos os locais que contém um"
-#~ msgid "executable named `file'. This includes aliases and functions, if and"
-#~ msgstr "arquivo executável chamado `ARQUIVO', incluindo os aliases e funções,"
+#~ msgid ""
+#~ "executable named `file'. This includes aliases and functions, if and"
+#~ msgstr ""
+#~ "arquivo executável chamado `ARQUIVO', incluindo os aliases e funções,"
#~ msgid "only if the -p flag is not also used."
#~ msgstr "mas somente se a opção -p não for fornecida conjuntamente."
@@ -7523,10 +8089,12 @@ msgstr ""
#~ msgstr "-a, -p, and -t, respectivamente."
#~ msgid "Ulimit provides control over the resources available to processes"
-#~ msgstr "Ulimit estabelece controle sobre os recursos disponíveis para os processos"
+#~ msgstr ""
+#~ "Ulimit estabelece controle sobre os recursos disponíveis para os processos"
#~ msgid "started by the shell, on systems that allow such control. If an"
-#~ msgstr "iniciados por esta shell, em sistemas que permitem estes controles. Se uma"
+#~ msgstr ""
+#~ "iniciados por esta shell, em sistemas que permitem estes controles. Se uma"
#~ msgid "option is given, it is interpreted as follows:"
#~ msgstr "opção for fornecida, é interpretada como mostrado a seguir:"
@@ -7541,13 +8109,15 @@ msgstr ""
#~ msgstr " -a\ttodos os limites correntes são informados"
#~ msgid " -c\tthe maximum size of core files created"
-#~ msgstr " -c\to tamanho máximo para os arquivos de imagem do núcleo criados"
+#~ msgstr ""
+#~ " -c\to tamanho máximo para os arquivos de imagem do núcleo criados"
#~ msgid " -d\tthe maximum size of a process's data segment"
#~ msgstr " -d\to tamanho máximo do segmento de dados de um processo"
#~ msgid " -m\tthe maximum resident set size"
-#~ msgstr " -m\to tamanho máximo do conjunto de processos residentes em memória"
+#~ msgstr ""
+#~ " -m\to tamanho máximo do conjunto de processos residentes em memória"
#~ msgid " -s\tthe maximum stack size"
#~ msgstr " -s\to tamanho máximo da pilha"
@@ -7571,13 +8141,15 @@ msgstr ""
#~ msgstr " -v\to tamanho da memória virtual"
#~ msgid "If LIMIT is given, it is the new value of the specified resource."
-#~ msgstr "Se LIMITE for fornecido, torna-se o novo valor do recurso especificado."
+#~ msgstr ""
+#~ "Se LIMITE for fornecido, torna-se o novo valor do recurso especificado."
#~ msgid "Otherwise, the current value of the specified resource is printed."
#~ msgstr "Senão, o valor atual do recurso especificado é exibido."
#~ msgid "If no option is given, then -f is assumed. Values are in 1k"
-#~ msgstr "Se nenhuma opção for fornecida, então -f é assumido. Os valores são em"
+#~ msgstr ""
+#~ "Se nenhuma opção for fornecida, então -f é assumido. Os valores são em"
#~ msgid "increments, except for -t, which is in seconds, -p, which is in"
#~ msgstr "incrementos de 1k, exceto para -t, que é em segundos, -p, que é em"
@@ -7588,77 +8160,101 @@ msgstr ""
#~ msgid "processes."
#~ msgstr "processos."
-#~ msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if"
-#~ msgstr "MODO é atribuído à máscara de criação de arquivos do usuário. Se omitido,"
+#~ msgid ""
+#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if"
+#~ msgstr ""
+#~ "MODO é atribuído à máscara de criação de arquivos do usuário. Se omitido,"
-#~ msgid "`-S' is supplied, the current value of the mask is printed. The `-S'"
-#~ msgstr "ou se `-S' for especificado, a máscara em uso é exibida. A opção `-S'"
+#~ msgid ""
+#~ "`-S' is supplied, the current value of the mask is printed. The `-S'"
+#~ msgstr ""
+#~ "ou se `-S' for especificado, a máscara em uso é exibida. A opção `-S'"
-#~ msgid "option makes the output symbolic; otherwise an octal number is output."
+#~ msgid ""
+#~ "option makes the output symbolic; otherwise an octal number is output."
#~ msgstr "exibe símbolos na saída; sem esta opção um número octal é exibido."
#~ msgid "If MODE begins with a digit, it is interpreted as an octal number,"
-#~ msgstr "Se MODO começar por um dígito, é interpretado como sendo um número octal,"
+#~ msgstr ""
+#~ "Se MODO começar por um dígito, é interpretado como sendo um número octal,"
-#~ msgid "otherwise it is a symbolic mode string like that accepted by chmod(1)."
-#~ msgstr "senão devem ser caracteres simbólicos, como os aceitos por chmod(1)."
+#~ msgid ""
+#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)."
+#~ msgstr ""
+#~ "senão devem ser caracteres simbólicos, como os aceitos por chmod(1)."
-#~ msgid "Wait for the specified process and report its termination status. If"
-#~ msgstr "Aguardar pelo processo especificado e informar seu status de término. Se N"
+#~ msgid ""
+#~ "Wait for the specified process and report its termination status. If"
+#~ msgstr ""
+#~ "Aguardar pelo processo especificado e informar seu status de término. Se N"
#~ msgid "N is not given, all currently active child processes are waited for,"
-#~ msgstr "não for especificado, todos os processos filhos ativos são aguardados,"
+#~ msgstr ""
+#~ "não for especificado, todos os processos filhos ativos são aguardados,"
#~ msgid "and the return code is zero. N may be a process ID or a job"
#~ msgstr "e o código de retorno é zero. N pode ser o ID de um processo ou a"
#~ msgid "specification; if a job spec is given, all processes in the job's"
-#~ msgstr "especificação de um trabalho; Se for a especificação de um trabalho, todos"
+#~ msgstr ""
+#~ "especificação de um trabalho; Se for a especificação de um trabalho, todos"
#~ msgid "pipeline are waited for."
#~ msgstr "os processos presentes no `pipeline' do trabalho são aguardados."
#~ msgid "and the return code is zero. N is a process ID; if it is not given,"
-#~ msgstr "e o código de retorno é zero. N é o ID de um processo; se N não for"
+#~ msgstr ""
+#~ "e o código de retorno é zero. N é o ID de um processo; se N não for"
#~ msgid "all child processes of the shell are waited for."
#~ msgstr "especificado, todos os processos filhos da shell são aguardados."
#~ msgid "The `for' loop executes a sequence of commands for each member in a"
-#~ msgstr "O laço `for' executa a sequência de comandos para cada membro na lista de"
+#~ msgstr ""
+#~ "O laço `for' executa a sequência de comandos para cada membro na lista de"
-#~ msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is"
-#~ msgstr "items. Se `in PALAVRAS ...;' não estiver presente, então `in \"$@\"'"
+#~ msgid ""
+#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is"
+#~ msgstr ""
+#~ "items. Se `in PALAVRAS ...;' não estiver presente, então `in \"$@\"'"
-#~ msgid "assumed. For each element in WORDS, NAME is set to that element, and"
-#~ msgstr "(parâmetros posicionais) é assumido. Para cada elemento em PALAVRAS, NOME"
+#~ msgid ""
+#~ "assumed. For each element in WORDS, NAME is set to that element, and"
+#~ msgstr ""
+#~ "(parâmetros posicionais) é assumido. Para cada elemento em PALAVRAS, NOME"
#~ msgid "the COMMANDS are executed."
#~ msgstr "assume seu valor, e os COMANDOS são executados."
#~ msgid "The WORDS are expanded, generating a list of words. The"
-#~ msgstr "As palavras são expandidas, gerando uma lista de palavras. O conjunto"
+#~ msgstr ""
+#~ "As palavras são expandidas, gerando uma lista de palavras. O conjunto"
#~ msgid "set of expanded words is printed on the standard error, each"
-#~ msgstr "de palavras expandidas é enviado para a saída de erro padrão, cada uma"
+#~ msgstr ""
+#~ "de palavras expandidas é enviado para a saída de erro padrão, cada uma"
#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'"
-#~ msgstr "precedida por um número. Se `in PALAVRAS' for omitido, `in \"$@\"' é"
+#~ msgstr ""
+#~ "precedida por um número. Se `in PALAVRAS' for omitido, `in \"$@\"' é"
#~ msgid "is assumed. The PS3 prompt is then displayed and a line read"
#~ msgstr "assumido. Em seguida o prompt PS3 é exibido, e uma linha é lida da"
#~ msgid "from the standard input. If the line consists of the number"
-#~ msgstr "entrada padrão. Se a linha consistir do número correspondente ao número"
+#~ msgstr ""
+#~ "entrada padrão. Se a linha consistir do número correspondente ao número"
#~ msgid "corresponding to one of the displayed words, then NAME is set"
#~ msgstr "de uma das palavras exibidas, então NOME é atribuído para esta"
#~ msgid "to that word. If the line is empty, WORDS and the prompt are"
-#~ msgstr "PALAVRA. Se a linha estiver vazia, PALAVRAS e o prompt são exibidos"
+#~ msgstr ""
+#~ "PALAVRA. Se a linha estiver vazia, PALAVRAS e o prompt são exibidos"
#~ msgid "redisplayed. If EOF is read, the command completes. Any other"
-#~ msgstr "novamente. Se EOF for lido, o comando termina. Qualquer outro valor"
+#~ msgstr ""
+#~ "novamente. Se EOF for lido, o comando termina. Qualquer outro valor"
#~ msgid "value read causes NAME to be set to null. The line read is saved"
#~ msgstr "lido faz com que NOME seja tornado nulo. A linha lida é salva"
@@ -7670,28 +8266,42 @@ msgstr ""
#~ msgstr "até que o comando `break' ou `return' seja executado."
#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The"
-#~ msgstr "Executar seletivamente COMANDOS tomando por base a correspondência entre"
+#~ msgstr ""
+#~ "Executar seletivamente COMANDOS tomando por base a correspondência entre"
#~ msgid "`|' is used to separate multiple patterns."
-#~ msgstr "PALAVRA e PADRÃO. O caracter `|' é usado para separar múltiplos padrões."
+#~ msgstr ""
+#~ "PALAVRA e PADRÃO. O caracter `|' é usado para separar múltiplos padrões."
-#~ msgid "The if COMMANDS are executed. If the exit status is zero, then the then"
-#~ msgstr "Os COMANDOS `if' são executados. Se os status de saída for zero, então os"
+#~ msgid ""
+#~ "The if COMMANDS are executed. If the exit status is zero, then the then"
+#~ msgstr ""
+#~ "Os COMANDOS `if' são executados. Se os status de saída for zero, então os"
-#~ msgid "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed"
-#~ msgstr "COMANDOS `then' são executados, senão, os COMANDOS `elif' são executados em"
+#~ msgid ""
+#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed"
+#~ msgstr ""
+#~ "COMANDOS `then' são executados, senão, os COMANDOS `elif' são executados "
+#~ "em"
-#~ msgid "in turn, and if the exit status is zero, the corresponding then COMMANDS"
-#~ msgstr "sequência e, se o status de saída for zero, os COMANDOS `then' associados"
+#~ msgid ""
+#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS"
+#~ msgstr ""
+#~ "sequência e, se o status de saída for zero, os COMANDOS `then' associados"
-#~ msgid "are executed and the if command completes. Otherwise, the else COMMANDS"
-#~ msgstr "são executados e o `if' termina. Senão, os COMANDOS da cláusula `else'"
+#~ msgid ""
+#~ "are executed and the if command completes. Otherwise, the else COMMANDS"
+#~ msgstr ""
+#~ "são executados e o `if' termina. Senão, os COMANDOS da cláusula `else'"
-#~ msgid "are executed, if present. The exit status is the exit status of the last"
-#~ msgstr "são executados, se houver. O status de saída é o status de saída do"
+#~ msgid ""
+#~ "are executed, if present. The exit status is the exit status of the last"
+#~ msgstr ""
+#~ "são executados, se houver. O status de saída é o status de saída do"
#~ msgid "command executed, or zero if no condition tested true."
-#~ msgstr "último comando executado, ou zero, se nenhuma condição for verdadeira."
+#~ msgstr ""
+#~ "último comando executado, ou zero, se nenhuma condição for verdadeira."
#~ msgid "Expand and execute COMMANDS as long as the final command in the"
#~ msgstr "Expande e executa COMANDOS enquanto o comando final nos"
@@ -7718,16 +8328,22 @@ msgstr ""
#~ msgstr "redirecionar todo um conjunto de comandos."
#~ msgid "This is similar to the `fg' command. Resume a stopped or background"
-#~ msgstr "Semelhante ao comando `fg'. Prossegue a execução de um trabalho parado ou"
+#~ msgstr ""
+#~ "Semelhante ao comando `fg'. Prossegue a execução de um trabalho parado ou"
#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify"
-#~ msgstr "em segundo plano. Se DÃGITOS for especificado, então este trabalho é usado."
+#~ msgstr ""
+#~ "em segundo plano. Se DÃGITOS for especificado, então este trabalho é "
+#~ "usado."
-#~ msgid "WORD, then the job whose name begins with WORD is used. Following the"
-#~ msgstr "Se for especificado PALAVRA, o trabalho começado por PALAVRA é usado."
+#~ msgid ""
+#~ "WORD, then the job whose name begins with WORD is used. Following the"
+#~ msgstr ""
+#~ "Se for especificado PALAVRA, o trabalho começado por PALAVRA é usado."
#~ msgid "job specification with a `&' places the job in the background."
-#~ msgstr "Seguindo-se a especificação por um `&' põe o trabalho em segundo plano."
+#~ msgstr ""
+#~ "Seguindo-se a especificação por um `&' põe o trabalho em segundo plano."
#~ msgid "BASH_VERSION The version numbers of this Bash."
#~ msgstr "BASH_VERSION Os números da versão desta `bash'."
@@ -7741,11 +8357,15 @@ msgstr ""
#~ msgid "\t\tdirectory."
#~ msgstr "\t\tencontrado no diretório atual."
-#~ msgid "HISTFILE The name of the file where your command history is stored."
-#~ msgstr "HISTFILE O nome do arquivo onde o histórico de comandos é armazenado."
+#~ msgid ""
+#~ "HISTFILE The name of the file where your command history is stored."
+#~ msgstr ""
+#~ "HISTFILE O nome do arquivo onde o histórico de comandos é "
+#~ "armazenado."
#~ msgid "HISTFILESIZE The maximum number of lines this file can contain."
-#~ msgstr "HISTFILESIZE O número máximo de linhas que este arquivo pode conter."
+#~ msgstr ""
+#~ "HISTFILESIZE O número máximo de linhas que este arquivo pode conter."
#~ msgid "HISTSIZE The maximum number of history lines that a running"
#~ msgstr "HISTSIZE O número máximo de linhas do histórico que uma"
@@ -7754,12 +8374,16 @@ msgstr ""
#~ msgstr "\t\tshell em execução pode acessar."
#~ msgid "HOME The complete pathname to your login directory."
-#~ msgstr "HOME O nome completo do caminho do seu diretório de login."
+#~ msgstr ""
+#~ "HOME O nome completo do caminho do seu diretório de login."
-#~ msgid "HOSTTYPE The type of CPU this version of Bash is running under."
-#~ msgstr "HOSTTYPE O tipo de CPU sob a qual esta `bash' está executando."
+#~ msgid ""
+#~ "HOSTTYPE The type of CPU this version of Bash is running under."
+#~ msgstr ""
+#~ "HOSTTYPE O tipo de CPU sob a qual esta `bash' está executando."
-#~ msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF"
+#~ msgid ""
+#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF"
#~ msgstr "IGNOREEOF Controla a ação da shell ao receber um caracter"
#~ msgid "\t\tcharacter as the sole input. If set, then the value"
@@ -7772,13 +8396,16 @@ msgstr ""
#~ msgstr "\t\tde forma seguida em uma linha vazia, antes da shell terminar"
#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input."
-#~ msgstr "\t\t(padrão 10). Caso contrário, EOF significa o fim da entrada de dados."
+#~ msgstr ""
+#~ "\t\t(padrão 10). Caso contrário, EOF significa o fim da entrada de dados."
#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
-#~ msgstr "MAILCHECK\tFreqüência, em segundos, para a `bash' verificar novo e-mail."
+#~ msgstr ""
+#~ "MAILCHECK\tFreqüência, em segundos, para a `bash' verificar novo e-mail."
#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
-#~ msgstr "MAILPATH\tUma lista, separada por dois pontos, de nomes de arquivos,"
+#~ msgstr ""
+#~ "MAILPATH\tUma lista, separada por dois pontos, de nomes de arquivos,"
#~ msgid "\t\tfor new mail."
#~ msgstr "\t\tnos quais a `bash' vai verificar se existe novo e-mail."
@@ -7787,7 +8414,8 @@ msgstr ""
#~ msgstr "OSTYPE\t\tA versão do Unix sob a qual a `bash' está executando."
#~ msgid "PATH A colon-separated list of directories to search when"
-#~ msgstr "PATH Uma lista, separada por dois pontos, de diretórios a"
+#~ msgstr ""
+#~ "PATH Uma lista, separada por dois pontos, de diretórios a"
#~ msgid "\t\tlooking for commands."
#~ msgstr "\t\tserem pesquisados quando os comandos forem procurados."
@@ -7808,16 +8436,20 @@ msgstr ""
#~ msgstr "TERM O nome do tipo de terminal em uso no momento."
#~ msgid "auto_resume Non-null means a command word appearing on a line by"
-#~ msgstr "auto_resume Não nulo significa que um comando aparecendo sozinho em"
+#~ msgstr ""
+#~ "auto_resume Não nulo significa que um comando aparecendo sozinho em"
#~ msgid "\t\titself is first looked for in the list of currently"
-#~ msgstr "\t\tlinha deve ser procurado primeiro na lista de trabalhos parados."
+#~ msgstr ""
+#~ "\t\tlinha deve ser procurado primeiro na lista de trabalhos parados."
#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded."
-#~ msgstr "\t\tSe for encontrado na lista, o trabalho vai para o primeiro plano."
+#~ msgstr ""
+#~ "\t\tSe for encontrado na lista, o trabalho vai para o primeiro plano."
#~ msgid "\t\tA value of `exact' means that the command word must"
-#~ msgstr "\t\tO valor `exact' significa que a palavra do comando deve corresponder"
+#~ msgstr ""
+#~ "\t\tO valor `exact' significa que a palavra do comando deve corresponder"
#~ msgid "\t\texactly match a command in the list of stopped jobs. A"
#~ msgstr "\t\texatamente a um comando da lista de trabalhos parados."
@@ -7829,19 +8461,23 @@ msgstr ""
#~ msgstr "\t\tcorresponder a uma parte do trabalho. Qualquer outro valor"
#~ msgid "\t\tthe command must be a prefix of a stopped job."
-#~ msgstr "\t\tsignifica que o comando deve ser um prefixo de um trabalho parado."
+#~ msgstr ""
+#~ "\t\tsignifica que o comando deve ser um prefixo de um trabalho parado."
#~ msgid "command_oriented_history"
#~ msgstr "command_oriented_history"
-#~ msgid " Non-null means to save multiple-line commands together on"
-#~ msgstr " Se não for nulo significa salvar comandos com múltiplas"
+#~ msgid ""
+#~ " Non-null means to save multiple-line commands together on"
+#~ msgstr ""
+#~ " Se não for nulo significa salvar comandos com múltiplas"
#~ msgid " a single history line."
#~ msgstr " linhas, juntas em uma única linha do histórico."
#~ msgid "histchars Characters controlling history expansion and quick"
-#~ msgstr "histchars Caracteres que controlam a expansão do histórico e a"
+#~ msgstr ""
+#~ "histchars Caracteres que controlam a expansão do histórico e a"
#~ msgid "\t\tsubstitution. The first character is the history"
#~ msgstr "\t\tsubstituição rápida. O primeiro caracter é o de substituição"
@@ -7856,10 +8492,12 @@ msgstr ""
#~ msgstr "\t\té o de comentário do histórico, geralmente o `#'."
#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter"
-#~ msgstr "HISTCONTROL\tCom valor igual a `ignorespace', significa não introduzir"
+#~ msgstr ""
+#~ "HISTCONTROL\tCom valor igual a `ignorespace', significa não introduzir"
#~ msgid "\t\tlines which begin with a space or tab on the history"
-#~ msgstr "\t\tlinhas que iniciam por espaço ou tabulação na lista de histórico."
+#~ msgstr ""
+#~ "\t\tlinhas que iniciam por espaço ou tabulação na lista de histórico."
#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't"
#~ msgstr "\t\tCom valor igual a `ignoredups', significa não introduzir linhas"
@@ -7871,7 +8509,8 @@ msgstr ""
#~ msgstr "\t\t`ignoreboth' significa combinar as duas opções. Remover,"
#~ msgid "\t\tor set to any other value than those above means to save"
-#~ msgstr "\t\tou atribuir algum outro valor que não os acima, significa salvar"
+#~ msgstr ""
+#~ "\t\tou atribuir algum outro valor que não os acima, significa salvar"
#~ msgid "\t\tall lines on the history list."
#~ msgstr "\t\ttodas as linhas na lista de histórico."
@@ -7880,19 +8519,22 @@ msgstr ""
#~ msgstr "Adiciona o diretório no topo da pilha de diretórios, ou rotaciona a"
#~ msgid "the stack, making the new top of the stack the current working"
-#~ msgstr "pilha, fazendo o diretório atual de trabalho ficar no topo da pilha."
+#~ msgstr ""
+#~ "pilha, fazendo o diretório atual de trabalho ficar no topo da pilha."
#~ msgid "directory. With no arguments, exchanges the top two directories."
#~ msgstr "Sem nenhum argumento, troca os dois diretórios do topo."
#~ msgid "+N\tRotates the stack so that the Nth directory (counting"
-#~ msgstr "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a"
+#~ msgstr ""
+#~ "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a"
#~ msgid "\tfrom the left of the list shown by `dirs') is at the top."
#~ msgstr "\tpartir da esquerda da lista exibida por `dirs') fique no topo."
#~ msgid "-N\tRotates the stack so that the Nth directory (counting"
-#~ msgstr "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a"
+#~ msgstr ""
+#~ "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a"
#~ msgid "\tfrom the right) is at the top."
#~ msgstr "\tpartir da direita) fique no topo."
@@ -7933,7 +8575,8 @@ msgstr ""
#~ msgid "\tremoves the last directory, `popd -1' the next to last."
#~ msgstr "\tremove o último diretório, `popd -1' o penúltimo."
-#~ msgid "-n\tsuppress the normal change of directory when removing directories"
+#~ msgid ""
+#~ "-n\tsuppress the normal change of directory when removing directories"
#~ msgstr "-n\tsuprime a troca normal de diretório ao remover-se diretórios"
#~ msgid "\tfrom the stack, so only the stack is manipulated."
@@ -7948,44 +8591,57 @@ msgstr ""
#~ msgid "back up through the list with the `popd' command."
#~ msgstr "removidos da lista através do comando `popd'."
-#~ msgid "The -l flag specifies that `dirs' should not print shorthand versions"
+#~ msgid ""
+#~ "The -l flag specifies that `dirs' should not print shorthand versions"
#~ msgstr "A opção -l especifica que `dirs' não deve exibir a versão resumida"
-#~ msgid "of directories which are relative to your home directory. This means"
-#~ msgstr "dos diretórios relativos ao seu diretório `home'. Isto significa que"
+#~ msgid ""
+#~ "of directories which are relative to your home directory. This means"
+#~ msgstr ""
+#~ "dos diretórios relativos ao seu diretório `home'. Isto significa que"
#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag"
-#~ msgstr "`~/bin' deve ser exibido como `/home/você/bin'. A opção -v faz com que"
+#~ msgstr ""
+#~ "`~/bin' deve ser exibido como `/home/você/bin'. A opção -v faz com que"
#~ msgid "causes `dirs' to print the directory stack with one entry per line,"
#~ msgstr "`dirs' exiba a pilha de diretórios com uma entrada por linha,"
-#~ msgid "prepending the directory name with its position in the stack. The -p"
+#~ msgid ""
+#~ "prepending the directory name with its position in the stack. The -p"
#~ msgstr "antecedendo o nome do diretório com a sua posição na pilha. A opção"
#~ msgid "flag does the same thing, but the stack position is not prepended."
#~ msgstr "-p faz a mesma coisa, mas a posição na pilha não é exibida. A opção"
-#~ msgid "The -c flag clears the directory stack by deleting all of the elements."
+#~ msgid ""
+#~ "The -c flag clears the directory stack by deleting all of the elements."
#~ msgstr "-c limpa a pilha de diretórios apagando todos os seus elementos."
-#~ msgid "+N\tdisplays the Nth entry counting from the left of the list shown by"
-#~ msgstr "+N\texibe a n-ésima entrada contada a partir da esquerda da lista exibida"
+#~ msgid ""
+#~ "+N\tdisplays the Nth entry counting from the left of the list shown by"
+#~ msgstr ""
+#~ "+N\texibe a n-ésima entrada contada a partir da esquerda da lista exibida"
#~ msgid "\tdirs when invoked without options, starting with zero."
#~ msgstr "\tpor `dirs', quando este é chamado sem opções, começando por zero."
-#~ msgid "-N\tdisplays the Nth entry counting from the right of the list shown by"
-#~ msgstr "-N\texibe a n-ésima entrada contada a partir da direita da lista exibida"
+#~ msgid ""
+#~ "-N\tdisplays the Nth entry counting from the right of the list shown by"
+#~ msgstr ""
+#~ "-N\texibe a n-ésima entrada contada a partir da direita da lista exibida"
#~ msgid "Toggle the values of variables controlling optional behavior."
-#~ msgstr "Alterna os valores das variáveis controladoras de comportamentos opcionais."
+#~ msgstr ""
+#~ "Alterna os valores das variáveis controladoras de comportamentos "
+#~ "opcionais."
#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
#~ msgstr "A opção -s ativa (set) cada NOME-OPÇÃO; a opção -u desativa cada"
#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit"
-#~ msgstr "NOME-OPÇÃO. A opção -q suprime a saída; o status de término indica se"
+#~ msgstr ""
+#~ "NOME-OPÇÃO. A opção -q suprime a saída; o status de término indica se"
#~ msgid "status indicates whether each OPTNAME is set or unset. The -o"
#~ msgstr "cada NOME-OPÇÃO foi ativado ou desativado A opção -o restringe"
@@ -7997,7 +8653,8 @@ msgstr ""
#~ msgstr "Sem nenhuma opção, ou com a opção -p, uma lista com todas as"
#~ msgid "settable options is displayed, with an indication of whether or"
-#~ msgstr "opções que podem ser ativadas é exibida, com indicação sobre se cada uma"
+#~ msgstr ""
+#~ "opções que podem ser ativadas é exibida, com indicação sobre se cada uma"
#~ msgid "not each is set."
#~ msgstr "das opções está ativa ou não."
diff --git a/po/ro.gmo b/po/ro.gmo
index 3a69a47a..f1036a70 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 13ab3543..9c79e28c 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -1,124 +1,129 @@
-# Mesajele în limba română pentru pachetul bash
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# Mesajele în limba română pentru pachetul bash.
+# Copyright (C) 2003 - 2022 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
+#
# Eugen Hoanca <eugenh@urban-grafx.ro>, 2003.
# Daniel Șerbănescu <daniel@serbanescu.dk>, 2019.
+# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022.
+#
+# Cronologia traducerii fiÈ™ierului „bashâ€:
+# Traducerea inițială, făcută de EH, pentru versiunea bash 3.2 (19% - tradus).
+# Actualizare a traducerii pentru versiunea 4.0, făcută de EH (24% - tradus).
+# Actualizare a traducerii pentru versiunea 5.0, făcută de DȘ (29% - tradus).
+# Actualizare a traducerii pentru versiunea 5.1, făcută de R-GC (100% - tradus).
+# Actualizare a traducerii pentru versiunea 5.2-rc1, făcută de R-GC.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0\n"
+"Project-Id-Version: bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2019-08-25 10:11+0200\n"
-"Last-Translator: Daniel Șerbănescu <daniel@serbanescu.dk>\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-18 01:02+0200\n"
+"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && (n%100) < 20)) ? 1 : 2);\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n"
-"%100<=19) ? 1 : 2);\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 2.3.1\n"
"X-Poedit-SourceCharset: UTF-8\n"
#: arrayfunc.c:66
msgid "bad array subscript"
-msgstr "incluziune greșită în interval"
+msgstr "indice de matrice greșit"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
-msgstr ""
+msgstr "%s: se elimină atributul nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
-msgstr ""
+msgstr "%s: nu se poate converti matricea indexată în asociativă"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr ""
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
-msgstr "%s: nu se poate atribui către index ne-numeric"
+msgstr "%s: nu se poate atribui la index ne-numeric"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
-msgstr ""
+msgstr "%s: %s: trebuie să fie folosit un indice atunci când se atribuie unei matrice asociative"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nu s-a putut crea: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
+msgstr "bash_execute_unix_command: nu se poate găsi combinația de taste pentru comandă"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
-msgstr ""
+msgstr "%s: primul caracter care nu este spațiu în alb nu este «\"» (ghilimele duble)"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
-msgstr ""
+msgstr "nu se închide „%c†în %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
-msgstr "%s: lipsește separatorul două puncte"
+msgstr "%s: lipsește separatorul două puncte (:)"
-#: bashline.c:4555
-#, fuzzy, c-format
+#: bashline.c:4733
+#, c-format
msgid "`%s': cannot unbind in command keymap"
-msgstr "%s: comandă negăsită"
+msgstr "„%sâ€: nu se poate înlătura combinaÈ›ia de taste atribuită la comandă"
+# Aici, trebuie folosit forma de plural, așa cum am făcut-o, sau cea de singular:
+# extindere (de) acoladă?
#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
-msgstr ""
+msgstr "expansiunea de acolade: nu se poate aloca memorie pentru %s"
#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr ""
+msgstr "expansiunea de acolade: a eșuat alocarea memoriei pentru %u elemente"
#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr ""
+msgstr "expansiunea de acolade: a eÈ™uat alocarea memoriei pentru „%sâ€"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%sâ€: nume alias nevalid"
#: builtins/bind.def:122 builtins/bind.def:125
msgid "line editing not enabled"
-msgstr "sfârșitul de linie nu este activat"
+msgstr "editarea liniilor nu este activată"
#: builtins/bind.def:212
#, c-format
msgid "`%s': invalid keymap name"
-msgstr ""
+msgstr "`%s': nume de combinație de taste nevalid"
#: builtins/bind.def:252
-#, fuzzy, c-format
+#, c-format
msgid "%s: cannot read: %s"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu s-a putut citii: %s"
#: builtins/bind.def:328 builtins/bind.def:358
-#, fuzzy, c-format
+#, c-format
msgid "`%s': unknown function name"
-msgstr "%s: funcție doar în citire (readonly)"
+msgstr "„%sâ€: nume de funcÈ›ie necunoscut"
#: builtins/bind.def:336
#, c-format
@@ -128,12 +133,12 @@ msgstr "%s nu este asociat niciunei taste.\n"
#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
-msgstr "%s poate fi invocat prin "
+msgstr "%s poate fi invocat via "
#: builtins/bind.def:378 builtins/bind.def:395
-#, fuzzy, c-format
+#, c-format
msgid "`%s': cannot unbind"
-msgstr "%s: comandă negăsită"
+msgstr "„%sâ€: atribuirea nu poate fi È™tearsă"
#: builtins/break.def:77 builtins/break.def:119
msgid "loop count"
@@ -154,22 +159,30 @@ msgid ""
" The value of EXPR indicates how many call frames to go back before the\n"
" current one; the top frame is frame 0."
msgstr ""
+"Returnează contextul apelului subrutinei curente.\n"
+" \n"
+" Fără EXPR, returnează „$linie $nume_fiÈ™ierâ€. Cu EXPR, returnează\n"
+" „$linie $subrutină $nume_fiÈ™ierâ€; aceste informaÈ›ii suplimentare pot să fie\n"
+" folosite pentru a furniza o urmărire a stivei.\n"
+" \n"
+" Valoarea EXPR indică cîte cadre de apel trebuie să se întoarcă înaintea celui\n"
+" curent; cadrul superior este cadrul 0."
#: builtins/cd.def:327
msgid "HOME not set"
-msgstr "HOME nu este stabilit"
+msgstr "variabila $HOME nu este definită"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "prea mulți parametri"
#: builtins/cd.def:342
msgid "null directory"
-msgstr "director null"
+msgstr "director nul"
#: builtins/cd.def:353
msgid "OLDPWD not set"
-msgstr "OLDPWD nu este stabilit"
+msgstr "variabila $OLDPWD nu este definită"
#: builtins/common.c:96
#, c-format
@@ -186,10 +199,10 @@ msgstr "avertizare: "
msgid "%s: usage: "
msgstr "%s: utilizare: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
-msgstr "%s: opțiunea necesită un parametru"
+msgstr "%s: opțiunea necesită un argument"
#: builtins/common.c:200
#, c-format
@@ -197,269 +210,356 @@ msgid "%s: numeric argument required"
msgstr "%s: argument numeric necesar"
#: builtins/common.c:207
-#, fuzzy, c-format
+#, c-format
msgid "%s: not found"
-msgstr "%s: comandă negăsită"
+msgstr "%s: nu s-a găsit"
-#: builtins/common.c:216 shell.c:857
-#, fuzzy, c-format
+#: builtins/common.c:216 shell.c:879
+#, c-format
msgid "%s: invalid option"
-msgstr "%c%c: opțiune invalidă"
+msgstr "%s: opțiune nevalidă"
#: builtins/common.c:223
-#, fuzzy, c-format
+#, c-format
msgid "%s: invalid option name"
-msgstr "%c%c: opțiune invalidă"
+msgstr "%s: nume de opțiune nevalid"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
-#, fuzzy, c-format
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
+#, c-format
msgid "`%s': not a valid identifier"
-msgstr "`%s' nu este un identificator valid"
+msgstr "„%s†nu este un identificator valid"
#: builtins/common.c:240
-#, fuzzy
msgid "invalid octal number"
-msgstr "număr de semnal invalid"
+msgstr "număr octal nevalid"
#: builtins/common.c:242
-#, fuzzy
msgid "invalid hex number"
-msgstr "număr de semnal invalid"
+msgstr "număr hexazecimal nevalid"
-#: builtins/common.c:244 expr.c:1569
-#, fuzzy
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
-msgstr "număr de semnal invalid"
+msgstr "număr nevalid"
#: builtins/common.c:252
#, c-format
msgid "%s: invalid signal specification"
-msgstr ""
-
+msgstr "%s: specificație de semnal nevalidă"
+
+# spec = specificare
+# sau
+# spec = specificație
+# ???
+# de rezolvat
+# ------------------------------------
+# Opinii/Idei?
+# ***
+# după revizarea fișierului, DȘ, spune:
+# 1. „→ È™i eu aÈ™ păstra specificaÈ›ie aici È™i în restul fiÈ™ieruluiâ€
+# ===
+# Ok, rămînem cu «spec, specification = specificație»
+# .
+# 2. → iar job spec l-aș traduce cu „specificația serviciului†(fiind vorba de un proces care rulează pe computer)
+# ===
+# am tradus «job spec» ca specificație de lucru,
+# datorită faptului că «job-urile», nu sunt
+# întotdeauna niște servicii, și mai ales datorită
+# faptului că adesea sunt o pleiadă de procese,
+# grupate (cel mai adesea un proces părinte
+# cu fii săi), alteori un grup de procese
+# interacționate.
#: builtins/common.c:259
#, c-format
msgid "`%s': not a pid or valid job spec"
-msgstr ""
+msgstr "„%sâ€: nu este un pid sau o specificaÈ›ie validă de lucru"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
-msgstr "%s: variabilă doar în citire"
+msgstr "%s: variabilă protejată la scriere"
+
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: nu se poate atribui"
-#: builtins/common.c:274
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
-msgstr ""
+msgstr "%s: %s în afara intervalului"
-#: builtins/common.c:274 builtins/common.c:276
-#, fuzzy
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
-msgstr "se așteaptă parametru"
+msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
-msgstr ""
-
-#: builtins/common.c:284
+msgstr "%s în afara intervalului"
+
+# R-GC, scrie:
+# după revizarea fișierului, DȘ, spune:
+# «→ la fel È™i aici, È™i la următoarele apariÈ›ii ale lui job, → „nu există asemenea serviciuâ€Â»
+# ===
+# am tradus «job» ca lucrare, datorită faptului
+# că «job-urile», nu sunt întotdeauna niște
+# servicii, și mai ales datorită faptului că
+# adesea sunt o pleiadă de procese, grupate
+# (cel mai adesea un proces părinte cu fii săi),
+# alteori un grup de procese interacționate.
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
-msgstr ""
+msgstr "%s: nu există această lucrare"
-#: builtins/common.c:292
-#, fuzzy, c-format
+#: builtins/common.c:299
+#, c-format
msgid "%s: no job control"
-msgstr "nici un control de job în acest shell"
+msgstr "%s: nu există un control de lucrări"
-#: builtins/common.c:294
-#, fuzzy
+#: builtins/common.c:301
msgid "no job control"
-msgstr "nici un control de job în acest shell"
+msgstr "nu există un control de lucrări"
-#: builtins/common.c:304
-#, fuzzy, c-format
+#: builtins/common.c:311
+#, c-format
msgid "%s: restricted"
-msgstr "%s: jobul a fost terminat"
+msgstr "%s: restricționat"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
-msgstr ""
-
-#: builtins/common.c:314
+msgstr "restricționat"
+
+# R-GC, întreabă:
+# Ce facem cu „Shell�
+# Cum îl traducem?
+# ***
+# după revizarea fișierului, DȘ, spune:
+# „→ mă trem că „shell†ar trebui să rămână tot „shellâ€: https://ro.wikipedia.org/wiki/Shell_(informatic%C4%83)â€
+# ===
+# Mda, un răspuns la care mă așteptam; ca un
+# fapt divers: nici alte echipe de traducători,
+# n-au reușit să „translate†«shell» în altceva
+# decît în «shell», au fost încercări (traduceri
+# reale) → scoică, cochilie, carapace sau
+# ambalaj; cu toate că unele dintre ele, au
+# avut oarecare succes, niciuna n-a rezistat
+# cu trecerea timpului.
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
-msgstr ""
+msgstr "%s: nu este o comandă internă"
-#: builtins/common.c:323
-#, fuzzy, c-format
+#: builtins/common.c:330
+#, c-format
msgid "write error: %s"
-msgstr "eroare de legătură (pipe): %s"
+msgstr "eroare de scriere: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
-msgstr ""
+msgstr "eroare la configurarea atributelor terminalului: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
-msgstr ""
+msgstr "eroare la obținerea atributelor terminalului: %s"
-#: builtins/common.c:635
+# - Eroare la preluarea...
+# - Eroare la obținerea...
+# - Eroare la recuperarea...
+# Am ales prima variantă, dar este cea mai bună,
+# în contextul dat?
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr ""
+msgstr "%s: eroare la preluarea directorului curent: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
-#, fuzzy, c-format
+#: builtins/common.c:708 builtins/common.c:710
+#, c-format
msgid "%s: ambiguous job spec"
-msgstr "%s: Redirectare ambiguă"
+msgstr "%s: specificație de lucrare, ambiguă"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
-msgstr ""
-
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
-#, fuzzy, c-format
+msgstr "ajutorul nu este disponibil în această versiune"
+
+# R-GC, scrie:
+# după revizarea fișierului, DȘ, spune:
+# „→ ce zici de „readonly†= „protejat la scriere†(cam lung dar parcă este mai sugestiv)â€
+# ===
+# nu cred c-ar fi o problemă asta, odată ce face
+# ca mesajul să fie mai clar, mai sugestiv; dar
+# cred că introduce o întrebare:
+# de cine/contra cui este protejat?
+# ***
+# cel puțin de moment, dacă nu definitiv, voi
+# aplica sugestia făcută, asupra acestui mesaj
+# și aaltora asemănătoare...
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
+#, c-format
msgid "%s: cannot unset: readonly %s"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se poate deconfigura: %s este protejat la scriere"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
-#, fuzzy, c-format
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
+#, c-format
msgid "%s: cannot unset"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se poate deconfigura"
#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
-msgstr ""
+msgstr "%s: nume de acțiune nevalid"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+# ÃŽntrebare:
+# nicio...
+# sau
+# nu există (o)...
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
-msgstr ""
+msgstr "%s: nicio specificație de completare"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
-msgstr ""
+msgstr "avertisment: este posibil ca opțiunea „-F†să nu funcționeze așa cum vă așteptați"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
-msgstr ""
-
-#: builtins/complete.def:838
+msgstr "avertisment: este posibil ca opțiunea „-C†să nu funcționeze așa cum vă așteptați"
+
+# ÃŽntrebare:
+# - ÃŽn prezent ...
+# - ÃŽn acest moment ...
+# - ÃŽn momentul actual ...
+# este formula adecvată contextului?
+#: builtins/complete.def:846
msgid "not currently executing completion function"
-msgstr ""
+msgstr "în prezent funcția de completare nu rulează"
-#: builtins/declare.def:134
-#, fuzzy
+#: builtins/declare.def:137
msgid "can only be used in a function"
-msgstr "poate fi folosit doar într-o funcție, și face ca variabila NUME"
+msgstr "poate fi folosit doar într-o funcție"
+
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "nu se poate utiliza „-f†pentru a face funcții"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funcție protejată la scriere"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
-msgstr ""
+msgstr "%s: variabila de referință nu poate fi o matrice"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
-msgstr ""
+msgstr "%s: nu sunt permise auto-referințele la variabile nameref"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
-msgstr ""
+msgstr "%s: referință de nume circulară"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+# R-GC, scrie:
+# după revizarea fișierului, DȘ, spune:
+# „→ cred că s-ar putea pune ghilimele româneÈ™tiâ€
+# ===
+# corecție aplicată
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
-msgstr ""
+msgstr "„%sâ€: nume de variabilă nevalid pentru referință la nume"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr ""
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: funcție doar în citire (readonly)"
-
-#: builtins/declare.def:824
+# Problemă:
+# in this way = în acest fel
+# in this way = în acest mod
+# in this way = de această formă
+# Mă refer la această intrare, care dintre cele
+# 3 opțiuni, este cea mai bună?
+#: builtins/declare.def:856
#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
-#, fuzzy, c-format
msgid "%s: cannot destroy array variables in this way"
-msgstr "$%s: nu se poate asigna în acest mod"
+msgstr "%s: nu se pot distruge variabilele matrice în acest fel"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
-msgstr ""
+msgstr "%s: nu se poate converti o matrice asociativă într-o matrice indexată"
-#: builtins/enable.def:143 builtins/enable.def:151
+# ÃŽntrebare:
+# - se poate formula mai bine, de exp.:
+# alocarea matricei compuse, între ghilimele; este perimată-învechită
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: alocarea de matrice compusă între ghilimele este perimată"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
-msgstr ""
+msgstr "încărcarea dinamică nu este disponibilă"
-#: builtins/enable.def:343
-#, fuzzy, c-format
+#: builtins/enable.def:376
+#, c-format
msgid "cannot open shared object %s: %s"
-msgstr "nu pot deschide legătura numită %s pentru %s: %s"
+msgstr "nu poate deschide obiectul partajat %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
-msgstr ""
+msgstr "nu se poate găsi %s în obiectul partajat %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
-msgstr ""
+msgstr "%s: comanda internă dinamică a «bash», este deja încărcată"
-#: builtins/enable.def:392
+# De revizat...
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
+msgstr "funcția de încărcare pentru %s returnează eroarea (%d): încărcarea a eșuat"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
-msgstr ""
+msgstr "%s: nu este încărcat dinamic"
-#: builtins/enable.def:543
-#, fuzzy, c-format
+#: builtins/enable.def:577
+#, c-format
msgid "%s: cannot delete: %s"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se poate șterge: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
-msgstr "%s: este director"
+msgstr "%s: este un director"
#: builtins/evalfile.c:144
-#, fuzzy, c-format
+#, c-format
msgid "%s: not a regular file"
-msgstr "%s: nu se poate executa fișierul binar"
+msgstr "%s: nu este un fișier normal"
#: builtins/evalfile.c:153
#, c-format
msgid "%s: file is too large"
-msgstr ""
+msgstr "%s: fișierul este prea mare"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: nu se poate executa fișierul binar"
#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
-#, fuzzy, c-format
+#, c-format
msgid "%s: cannot execute: %s"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se poate executa: %s"
#: builtins/exit.def:64
#, c-format
@@ -468,41 +568,40 @@ msgstr "deautentificare\n"
#: builtins/exit.def:89
msgid "not login shell: use `exit'"
-msgstr ""
+msgstr "nu este un shell de autentificare: utilizaÈ›i „exitâ€"
#: builtins/exit.def:121
#, c-format
msgid "There are stopped jobs.\n"
-msgstr ""
+msgstr "Sunt(există) lucrări oprite.\n"
#: builtins/exit.def:123
#, c-format
msgid "There are running jobs.\n"
-msgstr ""
+msgstr "Sunt(există) lucrări în execuție.\n"
#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
-#, fuzzy
msgid "no command found"
-msgstr "%s: comandă negăsită"
+msgstr "nu s-a găsit nici-o comandă"
#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
#: builtins/fc.def:412
msgid "history specification"
-msgstr ""
+msgstr "specificație de istoric"
#: builtins/fc.def:444
-#, fuzzy, c-format
+#, c-format
msgid "%s: cannot open temp file: %s"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se poate deschide fișierul temporal: %s"
#: builtins/fg_bg.def:152 builtins/jobs.def:284
msgid "current"
-msgstr ""
+msgstr "actual"
#: builtins/fg_bg.def:161
#, c-format
msgid "job %d started without job control"
-msgstr ""
+msgstr "lucrarea %d a început fără controlul lucrării"
#: builtins/getopt.c:110
#, c-format
@@ -514,14 +613,21 @@ msgstr "%s: opțiune ilegală -- %c\n"
msgid "%s: option requires an argument -- %c\n"
msgstr "%s: opțiunea necesită un parametru: -- %c\n"
+# NOTÄ‚:
+# cred că aceasta este cea mai bună traducere posibilă!
+# Am frunzărit traducerile celorlalte echipe de traducere latine (nu mi-a scăpat niciuna, în afară de cea galiciană, care obligă la descărcarea fișierului pentru al vedea)
+# ÃŽn cea a echipei spaniole, a tradus mesajul ca:
+# asociación desactivada
+# ce mi s-a părut cea mai apropiată contextului în care apare mesajul:
+# #: builtins/hash.def:91
#: builtins/hash.def:91
msgid "hashing disabled"
-msgstr ""
+msgstr "asocierea este desactivată"
#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
-msgstr ""
+msgstr "%s: tabelul de asociere este gol\n"
#: builtins/hash.def:267
#, c-format
@@ -531,28 +637,29 @@ msgstr "potriviri\tcomandă\n"
#: builtins/help.def:133
msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Comenzile Shell care se potrivesc cu cuvântul cheie „"
+msgstr[1] "Comenzile Shell care se potrivesc cu cuvintele cheie „"
+msgstr[2] "Comenzile Shell care se potrivesc cu cuvintele cheie „"
#: builtins/help.def:135
msgid ""
"'\n"
"\n"
msgstr ""
+"â€\n"
+"\n"
#: builtins/help.def:185
#, c-format
-msgid ""
-"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
+msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr "niciun subiect de ajutor nu se potriveÈ™te cu „%sâ€. ÃŽncercaÈ›i «help help» sau «man -k %s» sau «info %s»."
-#: builtins/help.def:224
-#, fuzzy, c-format
+#: builtins/help.def:223
+#, c-format
msgid "%s: cannot open: %s"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se poate deschide: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -563,129 +670,141 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
+"Aceste comenzi shell, sunt definite intern. Tastează «help», pentru a vedea\n"
+"această listă.\n"
+"Tastează «help nume_funcÈ›ie» pentru a afla mai multe despre funcÈ›ia „nume_funcÈ›ieâ€.\n"
+"Utilizați «info bash» pentru a afla mai multe despre shell în general.\n"
+"Utilizați «man -k» sau «info» pentru a afla mai multe despre comenzile care nu\n"
+"sunt în această listă.\n"
+"\n"
+"O stea (*) în dreptul unui nume înseamnă că acea comandă este dezactivată.\n"
+"\n"
-#: builtins/history.def:155
+# Propunere:
+# Mă gîndesc dacă n-ar suna mai bine fraza, dacă
+# înlocuiesc „unul†cu „un argumentâ€, aÈ™a:
+# nu se poate folosi mai mult de un argument dintre -anrw
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
-msgstr ""
+msgstr "nu se poate folosi mai mult de o opÈ›iune dintre „-a, -n, -r sau -wâ€"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
-msgstr ""
+msgstr "poziție în registrul istoric al comenzilor"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
-msgstr ""
+msgstr "%s: marcaj de timp nevalid"
-#: builtins/history.def:451
-#, fuzzy, c-format
+#: builtins/history.def:449
+#, c-format
msgid "%s: history expansion failed"
-msgstr "%s: se așteaptă expresie întreagă (integer)"
+msgstr "%s: a eșuat expansiunea istoriei"
#: builtins/inlib.def:71
-#, fuzzy, c-format
+#, c-format
msgid "%s: inlib failed"
-msgstr "%s: variabilă fără limită"
+msgstr "%s: a eșuat inlib"
#: builtins/jobs.def:109
msgid "no other options allowed with `-x'"
-msgstr ""
+msgstr "nu sunt permise alte opÈ›iuni cu „-xâ€"
#: builtins/kill.def:211
#, c-format
msgid "%s: arguments must be process or job IDs"
-msgstr ""
+msgstr "%s: argumentele trebuie să fie ID-uri de proces sau de lucrări"
#: builtins/kill.def:274
-#, fuzzy
msgid "Unknown error"
-msgstr "Eroare necunoscută %d"
+msgstr "Eroare necunoscută"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "se așteaptă expresie"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
-msgstr ""
+msgstr "%s: nu este o matrice indexată"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
-msgstr ""
+msgstr "%s: specificație de descriptor de fișier nevalidă"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
-msgstr ""
+msgstr "%d: descriptor de fișier nevalid: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
-msgstr ""
+msgstr "%s: contorizare de linii nevalidă"
-#: builtins/mapfile.def:299
-#, fuzzy, c-format
+#: builtins/mapfile.def:304
+#, c-format
msgid "%s: invalid array origin"
-msgstr "%s:subscriere interval invalid"
+msgstr "%s: origine matrice nevalid"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
-msgstr ""
+msgstr "%s: cuantum de apel invers nevalid"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
-msgstr ""
+msgstr "nume de variabilă matrice gol"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
-msgstr ""
+msgstr "este necesar suport pentru variabilă matrice"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
-msgstr ""
+msgstr "„%sâ€: lipseÈ™te caracterul de format"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
-msgstr ""
+msgstr "„%câ€: specificaÈ›ie a formatului de timp nevalidă"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
-msgstr ""
+msgstr "„%câ€: caracter de format nevalid"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
-msgstr ""
+msgstr "avertizare: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
-msgstr ""
+msgstr "problemă cu analizarea formatului: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
-msgstr ""
+msgstr "lipsește o cifră hexazecimală pentru \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
-msgstr ""
+msgstr "lipsește o cifră unicode pentru \\%c"
#: builtins/pushd.def:199
msgid "no other directory"
msgstr "niciun alt director"
#: builtins/pushd.def:360
-#, fuzzy, c-format
+#, c-format
msgid "%s: invalid argument"
-msgstr "%s necesită un parametru"
+msgstr "%s argument nevalid"
#: builtins/pushd.def:480
msgid "<no current directory>"
@@ -693,12 +812,22 @@ msgstr "<niciun director curent>"
#: builtins/pushd.def:524
msgid "directory stack empty"
-msgstr ""
+msgstr "stiva de directoare este goală"
#: builtins/pushd.def:526
msgid "directory stack index"
-msgstr ""
-
+msgstr "indexul stivei de directoare"
+
+# R-GC, scrie:
+# după revizarea fișierului, DȘ, spune:
+# «→ aÈ™ pune „directorul personal†în loc de „acasăâ€Â»
+# ===
+# nu-mi prea place să amestec numele lucurilor,
+# cu definiția lor, în acest caz:
+# „directorul acasă → directorul personal al utilizatoruluiâ€
+# voi face aceasă schimbare, în cazul în care,
+# autorul numește home folder, în loc de
+# home directory
#: builtins/pushd.def:701
msgid ""
"Display the list of currently remembered directories. Directories\n"
@@ -714,14 +843,30 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
+"Afișează lista curentă a directoarelor memorate. Directoarele\n"
+" sunt adăugate la această listă cu comanda «pushd» și sunt eliminate din\n"
+" ea, cu comanda «popd».\n"
+" \n"
+" Opțiuni:\n"
+" -c\tgolește stiva de directoare prin ștergerea tuturor elementelor\n"
+" -l\tnu afișează versiuni scurtate (cu ~) ale directoarelor în raport cu\n"
+" \tdirectorul dumneavoastră «acasă»\n"
+" -p\timprimă stiva de directoare cu o intrare pe linie\n"
+" -v\timprimă stiva de directoare cu o intrare pe linie, prefixată cu poziția\n"
+" \tsa în stivă\n"
+" \n"
+" Argumente:\n"
+" +N\tAfișează a N-a intrare numărând din stânga listei afișate de «dirs»,\n"
+" \tatunci când este invocată fără opțiuni, începând cu zero.\n"
+" \n"
+" -N\tAfișează a N-a intrare numărând din dreapta listei afișate de «dirs»,\n"
+"\tatunci când este invocată fără opțiuni, începând cu zero."
#: builtins/pushd.def:723
msgid ""
@@ -747,6 +892,27 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
+"Adaugă un director în partea de sus a stivei de directoare sau rotește\n"
+" stiva, făcând din noul director din partea de sus a stivei, directorul de\n"
+" lucru curent. Fără argumente, interschimbă primele două directoare.\n"
+" \n"
+" Opțiuni:\n"
+" -n\tSuprimă schimbarea normală a directorului atunci când se\n"
+" \tadaugă directoare la stivă, astfel încât numai stiva este manipulată.\n"
+" \n"
+" Argumente:\n"
+" +N\tRotește stiva astfel încât al N-lea director (numărând din\n"
+" \tstânga listei afișate de «dirs», începând cu zero) să fie în\n"
+" \tpartea de sus.\n"
+" \n"
+" -N\tRotește stiva astfel încât al N-lea director (numărând din\n"
+" \tdreapta listei afișate de «dirs», începând cu zero) să fie în\n"
+" \tpartea de sus.\n"
+" \n"
+" dir\tAdaugă DIR la stiva de directoare din partea de sus,\n"
+" \tfăcându-l noul director de lucru curent.\n"
+" \n"
+" Comanda internă «dirs» arată stiva curentă de directoare."
#: builtins/pushd.def:748
msgid ""
@@ -768,67 +934,105 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
+"Elimină intrările din stiva de directoare. Fără argumente, elimină directorul\n"
+" din partea de sus a stivei, și trece la cel cea devenit noul director de sus\n"
+" a stivei.\n"
+" \n"
+" Opțiuni:\n"
+" -n\tSuprimă schimbarea normală a directorului atunci când se elimină\n"
+" \tdirectoare din stivă, astfel încât numai stiva este manipulată.\n"
+" \n"
+" Argumente:\n"
+" +N\tElimină intrarea a N-a numărând din stânga listei afișate de «dirs»,\n"
+" \tîncepând cu zero. De exemplu: «popd +0» elimină primul director,\n"
+" \t«popd +1» al doilea director, șamd.\n"
+" \n"
+" -N\tElimină intrarea a N-a numărând din dreapta listei afișate de «dirs»,\n"
+" \tîncepând cu zero. De exemplu: «popd -0» elimină ultimul director,\n"
+" \t„popd -1†penultimul director, șamd.\n"
+" \n"
+" Comanda internă «dirs» arată stiva curentă de directoare."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
-msgstr ""
+msgstr "%s: specificație a timpului de expirare nevalidă"
-#: builtins/read.def:755
-#, fuzzy, c-format
+#: builtins/read.def:827
+#, c-format
msgid "read error: %d: %s"
-msgstr "eroare de legătură (pipe): %s"
-
+msgstr "eroare de citire: %d: %s"
+
+# Comentariu:
+# Eram un pic indecis asupra formei finale a traducerii,
+# așa că am început să trag cu ochiul la traducerile
+# celorlalți latini, așa am descoperit la brazilieni,
+# francezi și spanioli(în ordine alfabetică), formula
+# magică pentru această traducere:
+# 1.
+# msgstr "possível retornar (`return') apenas de uma função ou script carregado (com `source')"
+# 2.
+# msgstr "« return » n'est possible que depuis une fonction ou depuis un script exécuté par « source »"
+# 3.
+# msgstr "sólo se puede usar `return' desde una función o un script leído con `source'"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
-msgstr ""
+msgstr "„returnâ€, se poate utiliza doar de la o funcÈ›ie sau script executat(ă) de la „sourceâ€"
+# R-GC, scrie:
+# după revizarea fișierului, DȘ, spune:
+# „→ nu se pot anula...â€
+# ===
+# Ok, corecție aplicată
#: builtins/set.def:869
-#, fuzzy
msgid "cannot simultaneously unset a function and a variable"
-msgstr "poate fi folosit doar într-o funcție, și face ca variabila NUME"
+msgstr "nu se pot anula simultan o funcție și o variabilă"
-#: builtins/set.def:966
-#, fuzzy, c-format
+#: builtins/set.def:969
+#, c-format
msgid "%s: not an array variable"
-msgstr "%s: variabilă fără limită"
+msgstr "%s: nu este o variabilă matrice"
#: builtins/setattr.def:189
-#, fuzzy, c-format
+#, c-format
msgid "%s: not a function"
-msgstr "%s: funcție doar în citire (readonly)"
+msgstr "%s: nu este o funcție"
#: builtins/setattr.def:194
-#, fuzzy, c-format
+#, c-format
msgid "%s: cannot export"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se poate exporta"
#: builtins/shift.def:72 builtins/shift.def:79
-#, fuzzy
msgid "shift count"
-msgstr "shift [n]"
-
-#: builtins/shopt.def:310
+msgstr "contor deplasare(shift)"
+
+# R-GC, scrie:
+# după revizarea fișierului, DȘ, spune:
+# «→ similar È™i aici: „nu se pot activa ... â€Â»
+# ===
+# Ok, corecție aplicată
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
-msgstr ""
+msgstr "nu se pot activa și dezactiva simultan opțiunile de shell"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
-msgstr ""
+msgstr "%s: nume nevalid al opțiunii shell"
#: builtins/source.def:128
msgid "filename argument required"
-msgstr ""
+msgstr "este necesar argumentul nume_de_fișier"
#: builtins/source.def:154
-#, fuzzy, c-format
+#, c-format
msgid "%s: file not found"
-msgstr "%s: comandă negăsită"
+msgstr "%s: nu s-a găsit fișierul"
#: builtins/suspend.def:102
msgid "cannot suspend"
-msgstr ""
+msgstr "nu se poate suspenda"
#: builtins/suspend.def:112
msgid "cannot suspend a login shell"
@@ -837,12 +1041,12 @@ msgstr "nu se poate suspenda un shell de autentificare"
#: builtins/type.def:235
#, c-format
msgid "%s is aliased to `%s'\n"
-msgstr ""
+msgstr "%s este un alias pentru „%sâ€\n"
#: builtins/type.def:256
#, c-format
msgid "%s is a shell keyword\n"
-msgstr ""
+msgstr "%s este un cuvânt cheie shell\n"
#: builtins/type.def:275
#, c-format
@@ -852,66 +1056,65 @@ msgstr "%s este o funcție\n"
#: builtins/type.def:299
#, c-format
msgid "%s is a special shell builtin\n"
-msgstr ""
+msgstr "%s este o comandă internă specială a shell\n"
#: builtins/type.def:301
#, c-format
msgid "%s is a shell builtin\n"
-msgstr ""
+msgstr "%s este o comandă internă a shell\n"
#: builtins/type.def:323 builtins/type.def:408
#, c-format
msgid "%s is %s\n"
-msgstr ""
+msgstr "%s este %s\n"
+# sau: este mărunțit/fragmentat ?
#: builtins/type.def:343
#, c-format
msgid "%s is hashed (%s)\n"
-msgstr ""
+msgstr "%s este asociat(hashed) (%s)\n"
#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
-msgstr ""
+msgstr "%s: limită de argument nevalidă"
#: builtins/ulimit.def:426
-#, fuzzy, c-format
+#, c-format
msgid "`%c': bad command"
-msgstr "%c%c: opțiune invalidă"
+msgstr "„%câ€: comandă incorectă"
-#: builtins/ulimit.def:455
-#, fuzzy, c-format
+#: builtins/ulimit.def:464
+#, c-format
msgid "%s: cannot get limit: %s"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se poate obține limita: %s"
-#: builtins/ulimit.def:481
-#, fuzzy
+#: builtins/ulimit.def:490
msgid "limit"
-msgstr "limită CPU"
+msgstr "limită"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
-#, fuzzy, c-format
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
+#, c-format
msgid "%s: cannot modify limit: %s"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se poate modifica limita: %s"
#: builtins/umask.def:115
-#, fuzzy
msgid "octal number"
-msgstr "număr de semnal invalid"
+msgstr "număr octal"
#: builtins/umask.def:232
#, c-format
msgid "`%c': invalid symbolic mode operator"
-msgstr ""
+msgstr "„%câ€: operator de mod simbolic nevalid"
#: builtins/umask.def:287
#, c-format
msgid "`%c': invalid symbolic mode character"
-msgstr ""
+msgstr "„%câ€: caracter de mod simbolic nevalid"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
-msgstr ""
+msgstr " linie "
#: error.c:164
#, c-format
@@ -921,109 +1124,123 @@ msgstr "ultima comandă: %s\n"
#: error.c:172
#, c-format
msgid "Aborting..."
-msgstr ""
+msgstr "Se abandonează..."
#. TRANSLATORS: this is a prefix for informational messages.
#: error.c:287
#, c-format
msgid "INFORM: "
-msgstr ""
+msgstr "RAPORT: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "Avertisment de DEPANARE: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "eroare de comandă necunoscută"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
-msgstr "tip rău de comandă"
+msgstr "tip de comandă greșit"
-#: error.c:464
-#, fuzzy
+#: error.c:490
msgid "bad connector"
-msgstr "conector greșit `%d'"
+msgstr "conector greșit"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
-msgstr "salt rău"
+msgstr "salt eronat"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
-msgstr "%s: variabilă fără limită"
+msgstr "%s: variabilă neasociată"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "\aa expirat așteptând introducerea datelor: auto-logout\n"
+msgstr "\atimed expirat așteptând introducerea datelor: auto-logout\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
-msgstr ""
+msgstr "nu se poate redirecționa intrarea standard de la /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr ""
+msgstr "TIMEFORMAT: „%câ€: caracter de format nevalid"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
-msgstr ""
+msgstr "execute_coproc: coproc [%d:%s] încă există"
-#: execute_cmd.c:2486
-#, fuzzy
+#: execute_cmd.c:2524
msgid "pipe error"
-msgstr "eroare de legătură (pipe): %s"
+msgstr "eroare de linie de conectare"
-#: execute_cmd.c:4793
+# Opinie/Motivație:
+# am ales să traduc nesting = suprapunere
+# și nu
+# nesting = imbricare
+# pentru că consider că este vorba de efectul procesului (evaluările, ce vin una după alta,suprapunîndu-se) și nu de-a numi procesul în sine
+# În plus, mi se pare că sună mult mai normal la ureche
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
-msgstr ""
+msgstr "eval: s-a depășit nivelul maxim de suprapunere de «eval» (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: s-a depășit nivelul maxim de suprapunere de citiri cu «source» (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr ""
+msgstr "%s: s-a depășit nivelul maxim de suprapunere de funcții (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor"
+msgstr "%s: limitat: nu se poate specifica „/†în numele comenzilor"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: comandă negăsită"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
-msgstr ""
+msgstr "%s: %s"
-#: execute_cmd.c:5854
-#, fuzzy, c-format
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: nu se poate executa: fișierul necesar nu a fost găsit"
+
+#: execute_cmd.c:6000
+#, c-format
msgid "%s: %s: bad interpreter"
-msgstr "%s: este director"
+msgstr "%s: %s: interpret greșit"
-#: execute_cmd.c:5891
-#, fuzzy, c-format
+#: execute_cmd.c:6037
+#, c-format
msgid "%s: cannot execute binary file: %s"
-msgstr "%s: nu se poate executa fișierul binar"
+msgstr "%s: nu se poate executa fișierul binar: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
-msgstr ""
+msgstr "„%sâ€: este o comandă internă specială"
-#: execute_cmd.c:6029
-#, fuzzy, c-format
+#: execute_cmd.c:6175
+#, c-format
msgid "cannot duplicate fd %d to fd %d"
-msgstr "nu se poate duplica fd %d în fd 0: %s"
+msgstr "nu se poate duplica descriptorul de fișier %d în descriptorul de fișier %d"
#: expr.c:263
msgid "expression recursion level exceeded"
@@ -1031,372 +1248,395 @@ msgstr "nivel de recursivitate al expresiei depășit"
#: expr.c:291
msgid "recursion stack underflow"
-msgstr "stivă recursivă prea puțin folosită (underflow)"
+msgstr "stivă recursivă sub nivelul de depășire"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "eroare de sintaxă în expresie"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "s-a încercat asignare către non-variabilă"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "eroare de sintaxă în atribuirea variabilei"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "împărțire la 0"
-#: expr.c:592
-#, fuzzy
+#: expr.c:593
msgid "bug: bad expassign token"
-msgstr "bug: identificator(token) expassign greșit %d"
+msgstr "eroare: simbol de atribuire al expresiei greșit"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
-msgstr "`:' așteptat după expresie condițională"
+msgstr "se aștepta „:†după expresia condițională"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
-msgstr ""
+msgstr "exponent mai mic de 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
+msgstr "se aștepta un identificator după pre-increment sau pre-decrement"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
-msgstr "`)' lipsă"
+msgstr "„)†lipsește"
-#: expr.c:1107 expr.c:1487
-#, fuzzy
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
-msgstr "eroare de sintaxă: sfârșit de fișier neașteptat"
+msgstr "eroare de sintaxă: se aștepta un operand"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
-msgstr ""
+msgstr "eroare de sintaxă: operator aritmetic nevalid"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (identificatorul erorii este „%sâ€)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
-msgstr ""
-
-#: expr.c:1582
+msgstr "bază aritmetică nevalidă"
+
+# R-GC, scrie:
+# cum „constantă întreagă nevalidăâ€, nu mă
+# atrăgea prea mult, am adaptat traducerea
+# la ce se vede
+# ***
+# după revizarea fișierului, DȘ, spune:
+# «→ un mic typo la „întregâ€Â»
+# ===
+# Ok, corecție aplicată; graba... e de vină
+#: expr.c:1587
msgid "invalid integer constant"
-msgstr ""
+msgstr "constantă de număr întreg nevalidă"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "valoare prea mare pentru bază"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: eroare în expresie\n"
#: general.c:70
-#, fuzzy
msgid "getcwd: cannot access parent directories"
-msgstr "getwd: nu s-au putut accesa directoarele părinte"
+msgstr "getcwd: nu s-au putut accesa directoarele părinte"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
-msgstr ""
+msgstr "nu se poate redefini modul „nodelay†pentru descriptorul de fișier %d"
#: input.c:266
-#, fuzzy, c-format
+#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr ""
-"nu se poate aloca descriptor de fișier nou pentru inputul bash din fd %d: %s"
+msgstr "nu se poate aloca un nou descriptor de fișier pentru intrarea bash din fd %d"
#: input.c:274
-#, fuzzy, c-format
+#, c-format
msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "check_bash_input: buffer deja existent pentru fd nou %d"
+msgstr "save_bash_input: memorie tampon deja existentă pentru noul descriptor de fișier %d"
#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
-msgstr ""
+msgstr "start_pipeline: linie de conectare pgrp"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_delete: BUCLÄ‚: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-msgstr ""
+msgstr "bgp_search: BUCLÄ‚: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
-msgstr ""
+msgstr "pid-ul bifurcat %d apare în lucrarea în execuție %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
-msgstr ""
+msgstr "se șterge lucrarea oprită %d cu grupul de procese %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr ""
+msgstr "add_process: pid %5ld (%s) marcat ca încă în viață"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: nu există un asemenea pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Semnal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Finalizat"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
-msgstr "Stopat"
+msgstr "Oprit"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Oprit(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "ÃŽn rulare"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Finalizat(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Ieșire %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Stare necunoscută"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(core dumped) "
-#: jobs.c:2020
+# NOTĂ: de aflat ce înseamnă:
+# wd =
+# =====================================
+# NOTA_BENE:
+# pe viitor „istețule†uită-te în fișierul de traducere,
+# deschis ca text, și vei avea mari șanse să afli
+# răspunsul; fără a «gonglear» ca bezmeticul în Internet
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
-msgstr " (wd: %s)"
+msgstr " (dir.lucru: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
-msgstr "setpgid copil (de la%ld la %ld)"
+msgstr "setpgid proces-copil (de la %ld la %ld)"
-#: jobs.c:2617 nojobs.c:664
-#, fuzzy, c-format
+# NOTÄ‚:
+# «wait», nu se traduce; aici, și în mesajele următoare,
+# face parte din categoria cuvintelor ce nu se traduc.
+# Datorită contextului în care se află.
+#: jobs.c:2608 nojobs.c:666
+#, c-format
msgid "wait: pid %ld is not a child of this shell"
-msgstr "așteptați: pid-ul %d nu este rezultat(child) al acestui shell"
+msgstr "wait: pid %ld nu este un proces-copil al acestui shell"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
-msgstr ""
+msgstr "wait_for: Nu există nicio înregistrare a procesului %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
-msgstr ""
+msgstr "wait_for_job: lucrarea %d este oprită"
-#: jobs.c:3564
-#, fuzzy, c-format
+#: jobs.c:3551
+#, c-format
msgid "%s: no current jobs"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu există lucrări actuale"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
-msgstr "%s: jobul a fost terminat"
+msgstr "%s: lucrarea a fost terminată"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
-msgstr ""
+msgstr "%s: lucrarea %d se află deja în fundal"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr ""
+msgstr "waitchld: se activează WNOHANG pentru a evita blocarea pe termen nedefinit"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
-msgstr ""
+msgstr "%s: linie %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
-msgstr "(wd actual: %s)\n"
+msgstr "(dir.lucru actual: %s)\n"
-#: jobs.c:4391
-#, fuzzy
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
-msgstr "initialize_jobs: getpgrp eșuat: %s"
+msgstr "initialize_job_control: getpgrp a eșuat"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
-msgstr ""
+msgstr "initialize_job_control: nu există control de lucrări în fundal"
-#: jobs.c:4463
-#, fuzzy
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
-msgstr "initialize_jobs: disciplină linie: %s"
+msgstr "initialize_job_control: disciplină linie"
-#: jobs.c:4473
-#, fuzzy
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
-msgstr "initialize_jobs: getpgrp eșuat: %s"
+msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
-msgstr ""
+msgstr "nu se poate configura grupul de procese din terminal (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
-msgstr "nici un control de job în acest shell"
+msgstr "nu există niciun control de lucrări în acest shell"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
-msgstr ""
+msgstr "malloc: a eșuat aserțiunea: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
+"\r\n"
+"malloc: %s:%d: aserțiune greșită\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "necunoscut"
-#: lib/malloc/malloc.c:882
+# Altă formulă de traducere al mesajului, este:
+# „malloc: bloc È™ters din lista disponibilă â€
+# Notă, pentru a decide care dintre aceste traduceri,
+# rămîne, e nevoie de colaborarea(opinii, sugestii,
+# comentarii, etc) ale utilizatorilor de «bash»...
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
-msgstr ""
+msgstr "malloc: bloc suprascris pe lista liberă"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
-msgstr ""
+msgstr "free: apelat cu un argument bloc deja eliberat"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
-msgstr ""
+msgstr "free: apelat cu un argument de bloc nealocat"
-#: lib/malloc/malloc.c:994
+# Am tradus inițial mesajul, ca:
+# „free: depășire insuficientă detectată; mh_nbytes în afara intervaluluiâ€
+# formulă actuală mi se pare mai adecvată. contextului, precum și a mesajului din engleză
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
-msgstr ""
+msgstr "free: s-a detectat o depășire insuficientă; mh_nbytes în afara intervalului"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
-msgstr ""
+msgstr "free: s-a detectat o depășire insuficientă; magic8 corupt"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
-msgstr ""
+msgstr "free: dimensiunile bucăților de început și de sfârșit sunt diferite"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
-msgstr ""
+msgstr "realloc: apelat cu un argument de bloc nealocat"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr ""
+msgstr "realloc: s-a detectat o depășire insuficientă; mh_nbytes țn afara intervalului"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
-msgstr ""
+msgstr "realloc: s-a detectat o depășire insuficientă; magic8 corupt"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
-msgstr ""
+msgstr "realloc: dimensiunile bucăților de început și de sfârșit, diferă"
#: lib/malloc/table.c:191
#, c-format
msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
+msgstr "register_alloc: tabelul de alocare este plin cu FIND_ALLOC?\n"
#: lib/malloc/table.c:200
#, c-format
msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
+msgstr "register_alloc: %p deja în tabel ca fiind alocat?\n"
#: lib/malloc/table.c:253
#, c-format
msgid "register_free: %p already in table as free?\n"
-msgstr ""
+msgstr "register_alloc: %p deja în tabel ca liber?\n"
#: lib/sh/fmtulong.c:102
msgid "invalid base"
-msgstr ""
+msgstr "bază nevalidă"
#: lib/sh/netopen.c:168
-#, fuzzy, c-format
+#, c-format
msgid "%s: host unknown"
-msgstr "necunoscut"
+msgstr "%s: gazdă necunoscută"
#: lib/sh/netopen.c:175
#, c-format
msgid "%s: invalid service"
-msgstr ""
+msgstr "%s: serviciu nevalid"
#: lib/sh/netopen.c:306
#, c-format
msgid "%s: bad network path specification"
-msgstr ""
+msgstr "%s: specificație incorectă pentru ruta rețelei"
#: lib/sh/netopen.c:347
msgid "network operations not supported"
-msgstr ""
+msgstr "operațiunile de rețea nu sunt acceptate"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr ""
+msgstr "setlocale: LC_ALL: nu se poate schimba parametrul de limbă (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr ""
+msgstr "setlocale: LC_ALL: nu se poate schimba parametrul de limbă (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
-msgstr ""
+msgstr "setlocale: %s: nu se poate schimba parametrul de limbă (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr ""
+msgstr "setlocale: %s: nu se poate schimba parametrul de limbă (%s): %s"
#: mailcheck.c:439
msgid "You have mail in $_"
@@ -1411,795 +1651,797 @@ msgstr "Aveți mail nou în $_"
msgid "The mail in %s has been read\n"
msgstr "Mailul din %s a fost citit\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "eroare de sintaxă: expresie aritmetică necesară"
-#: make_cmd.c:319
-#, fuzzy
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
-msgstr "eroare de sintaxă: sfârșit de fișier neașteptat"
+msgstr "eroare de sintaxă: „;†neașteptat"
-#: make_cmd.c:320
-#, fuzzy, c-format
+#: make_cmd.c:317
+#, c-format
msgid "syntax error: `((%s))'"
-msgstr "eroare de sintaxă"
+msgstr "eroare de sintaxă: „((%s))â€"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: tip de instrucțiune greșit %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr ""
+msgstr "«here-document» la linia %d delimitat de sfârÈ™itul fiÈ™ierului (se aÈ™tepta „%sâ€)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr ""
+msgstr "make_redirection: instrucțiunea de redirecționare „%d†este în afara intervalului"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
-msgid ""
-"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
-"truncated"
-msgstr ""
+msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
+msgstr "shell_getc: shell_input_line_size (%zu) depășește SIZE_MAX (%lu): linie trunchiată"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
-msgstr ""
+msgstr "numărul maxim de «here-document» a fost depășit"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
-msgstr "EOF neaÈ™teptat în căutare după potrivirea „%câ€"
+msgstr "sfârÈ™it neaÈ™teptat al fiÈ™ierului(EOF) în timp ce se căuta coincidenÈ›a pentru „%câ€"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
-msgstr "EOF neaÈ™teptat în căutare după „]]â€"
+msgstr "sfârÈ™it neaÈ™teptat al fiÈ™ierului(EOF) în timp ce se căuta „]]â€"
-#: parse.y:4701
-#, fuzzy, c-format
+#: parse.y:4457
+#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "eroare de sintaxă neașteptată lângă `%s'"
+msgstr "eroare de sintaxă în expresia condiÈ›ională: simbol neaÈ™teptat „%sâ€"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "eroare de sintaxă în expresia condițională"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
-msgstr ""
+msgstr "simbol neaÈ™teptat „%sâ€, aÈ™teptat „)â€"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "se aÈ™tepta „)â€"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
-msgstr ""
+msgstr "argument neașteptat „%s†pentru operatorul unar condițional"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
-msgstr ""
+msgstr "argument neașteptat pentru operatorul unar condițional"
-#: parse.y:4865
-#, fuzzy, c-format
+#: parse.y:4621
+#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "%s: se așteaptă operator binar"
+msgstr "identificator neaÈ™teptat „%sâ€, se aÈ™tepta operator binar condiÈ›ional"
-#: parse.y:4869
-#, fuzzy
+#: parse.y:4625
msgid "conditional binary operator expected"
-msgstr "%s: se așteaptă operator binar"
+msgstr "se aștepta operator binar condițional"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
-msgstr ""
+msgstr "argument neașteptat „%s†pentru operatorul binar condițional"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
-msgstr ""
+msgstr "argument neașteptat pentru operatorul binar condițional"
-#: parse.y:4906
-#, fuzzy, c-format
+#: parse.y:4662
+#, c-format
msgid "unexpected token `%c' in conditional command"
-msgstr "`:' așteptat după expresie condițională"
+msgstr "identificator neașteptat „%c†în comanda condițională"
-#: parse.y:4909
-#, fuzzy, c-format
+#: parse.y:4665
+#, c-format
msgid "unexpected token `%s' in conditional command"
-msgstr "`:' așteptat după expresie condițională"
+msgstr "identificator neașteptat „%s†în comanda condițională"
-#: parse.y:4913
-#, fuzzy, c-format
+#: parse.y:4669
+#, c-format
msgid "unexpected token %d in conditional command"
-msgstr "`:' așteptat după expresie condițională"
+msgstr "identificator neașteptat %d în comanda condițională"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
-msgstr "eroare de sintaxă neașteptată lângă `%s'"
+msgstr "eroare de sintaxă neaÈ™teptată lângă „%sâ€"
-#: parse.y:6355
-#, fuzzy, c-format
+#: parse.y:6137
+#, c-format
msgid "syntax error near `%s'"
-msgstr "eroare de sintaxă neașteptată lângă `%s'"
+msgstr "eroare de sintaxă neaÈ™teptată lângă „%sâ€"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "eroare de sintaxă: sfârșit de fișier neașteptat"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "eroare de sintaxă"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
-msgstr "Folosiți \"%s\" pentru a părăsi shellul.\n"
+msgstr "Utilizați „%s†pentru a părăsi shell-ul.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
-msgstr "EOF neaÈ™teptat în căutare după perechea lui „)â€"
+msgstr "sfârÈ™it neaÈ™teptat al fiÈ™ierului în timp ce se căuta după perechea lui „)â€"
#: pcomplete.c:1132
#, c-format
msgid "completion: function `%s' not found"
-msgstr ""
+msgstr "completare: funcția „%s†nu a fost găsită"
#: pcomplete.c:1722
#, c-format
msgid "programmable_completion: %s: possible retry loop"
-msgstr ""
+msgstr "programable_completion: %s: posibilă buclă de reîncercare"
#: pcomplib.c:182
#, c-format
msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr ""
+msgstr "progcomp_insert: %s: COMPSPEC null"
#: print_cmd.c:302
#, c-format
msgid "print_command: bad connector `%d'"
-msgstr "print_command: conector greșitr `%d'"
+msgstr "print_command: conector greÈ™it „%dâ€"
#: print_cmd.c:375
#, c-format
msgid "xtrace_set: %d: invalid file descriptor"
-msgstr ""
+msgstr "xtrace_set: %d: descriptor de fișier nevalid"
#: print_cmd.c:380
msgid "xtrace_set: NULL file pointer"
-msgstr ""
+msgstr "xtrace_set: indicatorul pentru fișier este NULL"
#: print_cmd.c:384
#, c-format
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
-msgstr ""
+msgstr "xtrace fd (%d) != nrfișier xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
-msgstr ""
+msgstr "cprintf: „%câ€: caracter de format nevalid"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
-msgstr ""
+msgstr "descriptor de fișier în afara intervalului"
-#: redir.c:204
-#, fuzzy, c-format
+#: redir.c:205
+#, c-format
msgid "%s: ambiguous redirect"
-msgstr "%s: Redirectare ambiguă"
+msgstr "%s: redirectare ambiguă"
-#: redir.c:208
-#, fuzzy, c-format
+#: redir.c:209
+#, c-format
msgid "%s: cannot overwrite existing file"
-msgstr "%s: nu se poate accesa(clobber) fișierul existent"
+msgstr "%s: nu se poate suprascrie fișierul existent"
-#: redir.c:213
-#, fuzzy, c-format
+#: redir.c:214
+#, c-format
msgid "%s: restricted: cannot redirect output"
-msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor"
+msgstr "%s: restricționat: nu se poate redirecționa ieșirea"
-#: redir.c:218
-#, fuzzy, c-format
+#: redir.c:219
+#, c-format
msgid "cannot create temp file for here-document: %s"
-msgstr "nu pot face legătură (pipe) pentru substituția procesului: %s"
+msgstr "nu se poate crea un fișier temporar pentru «here-document»: %s"
-#: redir.c:222
-#, fuzzy, c-format
+#: redir.c:223
+#, c-format
msgid "%s: cannot assign fd to variable"
-msgstr "%s: nu pot asigna listă membrului intervalului"
-
-#: redir.c:649
+msgstr "%s: nu se poate atribui descriptorul de fișier variabilei"
+
+# ÃŽntrebare: este mai bine/corect
+# „..... fără o conexiune de reÈ›eaâ€
+# sau,
+# â€fără a avea o conexiune la reÈ›eaâ€?
+# ***
+# după revizarea fișierului, DȘ, spune:
+# «→conexiunea trebuie să fie LA rețea în ambele cazuri, „conexiune de rețea†este doar un tip de conexiune (fizică sau virtuală), iar „conexiunea la rețea†reprezintă accesul calculatorului la o rețea anume. (aici se subînțelege o rețea de alte calulatoare fie ea LAN sau WAN)»
+# ===
+# Ok, corecție aplicată
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr ""
+msgstr "nu se admite «/dev/(tcp|udp)/host/port» fără a avea o conexiune la rețea"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
-#, fuzzy
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
-msgstr "eroare de redirectare"
+msgstr "eroare de redirectare: nu se poate duplica descriptorul de fișier"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
-msgstr ""
+msgstr "nu s-a putut găsi «/tmp», vă rugăm să-l creați!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
-msgstr ""
+msgstr "«/tmp» trebuie să fie un nume de director valid"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "modul de imprimare „drăguț†este ignorat în shell-urile interactive"
-#: shell.c:948
-#, fuzzy, c-format
+#: shell.c:972
+#, c-format
msgid "%c%c: invalid option"
-msgstr "%c%c: opțiune invalidă"
+msgstr "%c%c: opțiune nevalidă"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
-msgstr ""
+msgstr "nu se poate stabili uid la %d: uid efectiv %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
-msgstr ""
+msgstr "nu se poate stabili gid la %d: gid efectiv %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
-msgstr ""
+msgstr "nu se poate porni depanatorul; modul de depanare a fost dezactivat"
-#: shell.c:1632
-#, fuzzy, c-format
+#: shell.c:1658
+#, c-format
msgid "%s: Is a directory"
-msgstr "%s: este director"
+msgstr "%s: Este un director"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Nu am nici un nume!"
-#: shell.c:2035
-#, fuzzy, c-format
+#: shell.c:2061
+#, c-format
msgid "GNU bash, version %s-(%s)\n"
-msgstr "GNU %s, versiunea %s\n"
+msgstr "GNU bash, versiunea %s-(%s)\n"
-#: shell.c:2036
+# R-GC, scrie:
+# acest mesaj, și următoarele, pot să fie
+# vizualizate, rulînd comanda:
+# «bash --help».
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
msgstr ""
-"Folosire:\t%s [GNU opțiune lungă] [opțiune] ...\n"
-"\t%s [GNU opțiune lungă] [opțiune] fișier script ...\n"
+"Utilizare:\t%s [GNU opțiune lungă] [opțiune] ...\n"
+"\t%s [GNU opțiune lungă] [opțiune] fișier-script ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Opțiuni lungi GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Opțiuni ale shell-ului:\n"
-#: shell.c:2043
-#, fuzzy
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr "\t-irsD sau -c comandă\t\t(doar invocație)\n"
+msgstr "\t-ilrsD sau -c comandă sau -O shopt_option\t\t(doar invocare)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s sau -o opțiune\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-"Apăsați `%s -c \"set-ajutor\"' pentru mai multe informații despre opțiunile "
-"shell-ului.\n"
+msgstr "Tastați «%s -c \"help set\"» pentru mai multe informații despre opțiunile shell-ului.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-"Apăsați `%s -c ajutor' pentru mai multe informații despre comenzile interne "
-"ale shell-ului.\n"
+msgstr "Tastați «%s -c help» pentru mai multe informații despre comenzile interne ale shell-ului.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
-msgstr ""
+msgstr "Utilizați comanda «bashbug» pentru a raporta erori.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr ""
+msgstr "Pagina principală a lui „bashâ€: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr ""
+msgstr "Ajutor general pentru utilizarea software-ului GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
-msgstr ""
+msgstr "sigprocmask: %d: operație nevalidă"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Semnal fals"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
-msgstr "Deconectare"
+msgstr "Deconectare/Terminare anormală(Hangup)"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "ÃŽntrerupere"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Părăsire"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Instrucțiune ilegală"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
-msgstr "BPT trace/trap"
+msgstr "Punct de întrerupere de urmărire/capturare"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Instrucțiune ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Instrucțiune EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
-msgstr "Excepție virgulă mobilă"
+msgstr "Excepție de virgulă mobilă"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
-msgstr "Terminat(killed)"
+msgstr "Omorât"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
-msgstr "Eroare de bus"
+msgstr "Eroare de magistrală de date(bus)"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
-msgstr "Eroare de segmentare (Segmentation fault)"
+msgstr "Eroare de segmentare"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
-msgstr "Apelare sistem invalidă"
+msgstr "Apel de sistem incorect"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
-msgstr "Legătură(pipe) întreruptă"
+msgstr "Linie de conectare întreruptă"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
-msgstr "Ceas alarmă"
+msgstr "Ceas cu alarmă"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Terminat"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
-msgstr "Condiție IO urgentă"
+msgstr "Condiție In/Ieș urgentă"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Oprit (semnal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Continuare"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
-msgstr "Succesor mort sau oprit"
+msgstr "Proces-copil mort sau oprit"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Oprit (tty input)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Oprit (tty output)"
-#: siglist.c:146
+# Se referă la: dispozitiv(de intrare/de ieșire)
+#: siglist.c:147
msgid "I/O ready"
-msgstr "I/O pregătit"
+msgstr "In/Ieș pregătită"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Limită CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Limită fișier"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarmă (virtual)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarmă (profil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Fereastră schimbată"
-#: siglist.c:170
+# De moment rămîne traducerea veche:
+# „ReÈ›inere (lock) înregistrareâ€
+# Dar, cred că:
+# Blocare înregistrare, este formula corectă...
+# ***
+# l-am modificat la revizare
+#: siglist.c:171
msgid "Record lock"
-msgstr "Reținere (lock) înregistrare"
+msgstr "Blocare înregistrare"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Semnal utilizator 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Semnal utilizator 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
-msgstr "Date de intrare HFT în curs de rezolvare(pending)"
+msgstr "Date de intrare HFT în curs de rezolvare"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "probleme electrice iminente"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
-msgstr "crash de sistem iminent"
+msgstr "cădere iminentă a sistemului"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migrare proces spre alt CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "eroare de programare"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
-msgstr "Mod monitor HFT acordat"
+msgstr "Modul de monitor HFT a fost acordat"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
-msgstr "Mod monitor HFT retras"
+msgstr "Modul de monitor HFT a fost retras"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
-msgstr "Secvență de sunet HFT completată"
+msgstr "Secvența de sunet HFT a fost completată"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
-msgstr ""
+msgstr "Solicitare de informație"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
-msgstr "Semnal Necunoscut #%d"
+msgstr "Semnal necunoscut #%d"
-#: subst.c:1476 subst.c:1666
-#, fuzzy, c-format
+#: subst.c:1480 subst.c:1670
+#, c-format
msgid "bad substitution: no closing `%s' in %s"
-msgstr "substituție invalidă: nu există '%s' în %s"
+msgstr "înlocuire greșită: nu se închide „%s†în %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
-msgstr "%s: nu pot asigna listă membrului intervalului"
+msgstr "%s: nu se poate atribui o listă unui membru al matricei"
-#: subst.c:5910 subst.c:5926
-#, fuzzy
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
-msgstr "nu pot face legătură (pipe) pentru substituția procesului: %s"
+msgstr "nu se poate crea linia de conectare pentru substituția procesului"
-#: subst.c:5985
-#, fuzzy
+#: subst.c:6124
msgid "cannot make child for process substitution"
-msgstr "nu pot crea un proces copil pentru substituirea procesului: %s"
+msgstr "nu se poate crea un proces-copil pentru substituirea procesului: %s"
-#: subst.c:6059
-#, fuzzy, c-format
+#: subst.c:6198
+#, c-format
msgid "cannot open named pipe %s for reading"
-msgstr "nu pot deschide legătura numită %s pentru %s: %s"
+msgstr "nu se poate deschide linia de conectare numită %s pentru citire"
-#: subst.c:6061
-#, fuzzy, c-format
+#: subst.c:6200
+#, c-format
msgid "cannot open named pipe %s for writing"
-msgstr "nu pot deschide legătura numită %s pentru %s: %s"
+msgstr "nu se poate deschide linia de conectare numită %s pentru scriere"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "nu se poate duplica țeava numită %s ca fd %d"
+msgstr "nu se poate duplica linia de conectare numită %s ca fd %d"
-#: subst.c:6213
-#, fuzzy
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
-msgstr "substituție invalidă: nu există ')' de final în %s"
+msgstr "substituție de comandă: octetul null din intrare este ignorat"
-#: subst.c:6353
-#, fuzzy
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
-msgstr "nu pot face legături(pipes) pentru substituția de comenzi: %s"
+msgstr "nu se poate crea linia de conectare pentru substituția de comandă"
-#: subst.c:6397
-#, fuzzy
+#: subst.c:6580
msgid "cannot make child for command substitution"
-msgstr "nu pot crea un copil pentru substituția de comenzi: %s"
+msgstr "nu se poate crea un proces-copil pentru substituția de comandă"
-#: subst.c:6423
-#, fuzzy
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "command_substitute: nu se poate duplica legătura (pipe) ca fd 1: %s"
+msgstr "command_substitute: nu se poate duplica linia de conectare ca descriptor de fișier 1(fd 1)"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
-msgstr ""
+msgstr "%s: nume de variabilă nevalid pentru referința numelui"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
-msgstr ""
+msgstr "%s: extindere indirectă nevalidă"
-#: subst.c:7013 subst.c:7177
-#, fuzzy, c-format
+#: subst.c:7212 subst.c:7377
+#, c-format
msgid "%s: invalid variable name"
-msgstr "%s: variabilă fără limită"
+msgstr "%s: nume de variabilă nevalid"
-#: subst.c:7256
-#, fuzzy, c-format
+#: subst.c:7478
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: parametru null sau nesetat"
+msgstr "%s: parametru nedefinit"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
-msgstr "%s: parametru null sau nesetat"
+msgstr "%s: parametru nul sau nedefinit"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expresie subșir < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
-msgstr "%s: substituție invalidă"
+msgstr "%s: substituție nevalidă"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: nu se poate asigna în acest mod"
-#: subst.c:9814
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
+#: subst.c:10111
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
+msgstr "versiunile viitoare ale shell-ului vor forța evaluarea ca o substituție aritmetică"
-#: subst.c:10367
-#, fuzzy, c-format
+#: subst.c:10795
+#, c-format
msgid "bad substitution: no closing \"`\" in %s"
-msgstr "substituție invalidă: nu există ')' de final în %s"
+msgstr "înlocuire greșită: fără „`†de închidere în %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
-msgstr ""
+msgstr "nicio potrivire: %s"
#: test.c:147
msgid "argument expected"
-msgstr "se așteaptă parametru"
+msgstr "se aștepta un parametru"
#: test.c:156
#, c-format
msgid "%s: integer expression expected"
-msgstr "%s: se așteaptă expresie întreagă (integer)"
+msgstr "%s: se aștepta o expresie întreagă (integer)"
#: test.c:265
msgid "`)' expected"
-msgstr "se așteaptă `)'"
+msgstr "se aÈ™tepta „)'â€"
#: test.c:267
#, c-format
msgid "`)' expected, found %s"
-msgstr "se așteaptă `)', s-a primit %s"
+msgstr "se aÈ™tepta „)â€, s-a găsit %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: se așteaptă operator binar"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: se așteaptă operator unar"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
-msgstr "lipsește ']'"
+msgstr "lipseÈ™te „]â€"
-#: test.c:899
-#, fuzzy, c-format
+#: test.c:914
+#, c-format
msgid "syntax error: `%s' unexpected"
-msgstr "eroare de sintaxă: sfârșit de fișier neașteptat"
+msgstr "eroare de sintaxă: „%s†neașteptat"
#: trap.c:220
-#, fuzzy
msgid "invalid signal number"
-msgstr "număr de semnal invalid"
+msgstr "număr de semnal nevalid"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr ""
+msgstr "gestionarul de capturare: nivelul maxim de gestionări de capturare a fost depășit (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr ""
+msgstr "run_pending_traps: valoare greșită în trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr "run_pending_traps: gestionarul de semnal este SIG_DFL, se retrimite %d (%s) către mine"
-#: trap.c:487
-#, fuzzy, c-format
+#: trap.c:509
+#, c-format
msgid "trap_handler: bad signal %d"
-msgstr "trap_handler: Semnal invalid %d"
+msgstr "trap_handler: semnal nevalid %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
-msgstr "eroare în importarea definiției funcției pentru '%s'"
+msgstr "eroare în importarea definiÈ›iei funcÈ›iei pentru „%sâ€"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
-msgstr ""
+msgstr "nivelul shell-ului (%d) prea mare, se reinițializează la 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
-msgstr ""
+msgstr "make_local_variable: nu există context de funcție în domeniul actual"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
-msgstr ""
+msgstr "%s: nu este posibil ca variabilei să i se atribuie o valoare"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: nu se poate moșteni valoarea de la un tip incompatibil"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
-msgstr ""
+msgstr "%s: se atribuie un număr întreg referinței de nume"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
-msgstr ""
+msgstr "all_local_variables: nu există context de funcție în domeniul actual"
-#: variables.c:4771
-#, fuzzy, c-format
+#: variables.c:4757
+#, c-format
msgid "%s has null exportstr"
-msgstr "%s: parametru null sau nesetat"
+msgstr "%s are exportstr nul"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
-msgstr ""
+msgstr "caracter nevalid %d în exportstr pentru %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
-msgstr ""
+msgstr "nu există „=†în exportstr pentru %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
+msgstr "pop_var_context: partea de sus din shell_variables nu este un context de funcție"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
-msgstr ""
+msgstr "pop_var_context: nu există un context global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
+msgstr "pop_scope: partea de sus din shell_variables nu este un domeniu de mediu temporar"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
-msgstr ""
+msgstr "%s: %s: nu se poate deschide ca FIȘIER"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
-msgstr ""
+msgstr "%s: %s: valoare nevalidă pentru descriptorul fișierului de urmărire"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
-msgstr ""
+msgstr "%s: %s: valoarea de compatibilitate în afara intervalului"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr ""
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Drepturi de autor © 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "Licență GPLv3+: GNU GPL versiunea 3 sau ulterioară <http://gnu.org/licenses/gpl.html>\n"
#: version.c:86 version2.c:86
-#, fuzzy, c-format
+#, c-format
msgid "GNU bash, version %s (%s)\n"
-msgstr "GNU %s, versiunea %s\n"
+msgstr "GNU bash, versiunea %s (%s)\n"
#: version.c:91 version2.c:91
msgid "This is free software; you are free to change and redistribute it."
-msgstr ""
+msgstr "Acesta este un software liber; sunteți liber să îl modificați și să îl redistribuiți."
#: version.c:92 version2.c:92
msgid "There is NO WARRANTY, to the extent permitted by law."
-msgstr ""
+msgstr "NU EXISTĂ NICIO GARANȚIE, în măsura permisă de lege."
#: xmalloc.c:93
-#, fuzzy, c-format
+#, c-format
msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "xmalloc: nu pot aloca %lu octeți (%lu octeți alocați)"
+msgstr "%s: nu se pot aloca %lu octeți (%lu octeți alocați)"
#: xmalloc.c:95
-#, fuzzy, c-format
+#, c-format
msgid "%s: cannot allocate %lu bytes"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: nu se pot aloca %lu octeți"
#: xmalloc.c:165
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "xmalloc: nu pot aloca %lu octeți (%lu octeți alocați)"
+msgstr "%s: %s:%d: nu se pot aloca %lu octeți (%lu octeți alocați)"
#: xmalloc.c:167
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "%s: nu s-a putut crea: %s"
+msgstr "%s: %s:%d: nu se pot aloca %lu octeți"
+# R-GC, scrie:
+# acest mesaj, și următoarele, pot să fie
+# vizualizate, rulînd comanda:
+# «bash -c help», dintr-un shell diferit de «bash»;
+# «help», dintr-un shell «bash».
#: builtins.c:45
msgid "alias [-p] [name[=value] ... ]"
msgstr "alias [-p] [nume[=valoare] ... ]"
#: builtins.c:49
-#, fuzzy
msgid "unalias [-a] name [name ...]"
-msgstr "unalias [-a] [nume ...]"
+msgstr "unalias [-a] nume [nume ...]"
#: builtins.c:53
-#, fuzzy
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpvsPVS] [-m keymap] [-f nume_fișier] [-q nume] [-r keyseq] [keyseq:"
-"funcție readline]"
+msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr "bind [-lpsvPSVX] [-m comb_taste] [-f nume_fișier] [-q nume] [-u nume] [-r secv_taste] [-x secv_taste:comandă_shell] [secv_taste:funcție-readline sau comandă-readline]"
#: builtins.c:56
msgid "break [n]"
@@ -2211,41 +2453,35 @@ msgstr "continue [n]"
#: builtins.c:60
msgid "builtin [shell-builtin [arg ...]]"
-msgstr "builtin [shell-builtin [arg ...]]"
+msgstr "builtin [comandă_internă-shell [arg ...]]"
#: builtins.c:63
-#, fuzzy
msgid "caller [expr]"
-msgstr "test [expr]"
+msgstr "caller [expr]"
#: builtins.c:66
-#, fuzzy
msgid "cd [-L|[-P [-e]] [-@]] [dir]"
-msgstr "cd [-PL] [dir]"
+msgstr "cd [-L|[-P [-e]] [-@]] [dir]"
#: builtins.c:68
-#, fuzzy
msgid "pwd [-LP]"
-msgstr "pwd [-PL]"
+msgstr "pwd [-LP]"
#: builtins.c:76
msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] comandă [arg ...]"
#: builtins.c:78
-#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-afFrxi] [-p] nume[=valoare] ..."
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [nume[=valoare] ...] sau declare -p [-aAfFilnrtux] [nume ...]"
#: builtins.c:80
-#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-afFrxi] [-p] nume[=valoare] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] nume[=valoare] ... sau typeset -p [-aAfFilnrtux] [nume ...]"
#: builtins.c:82
-#, fuzzy
msgid "local [option] name[=value] ..."
-msgstr "local nume[=valoare] ..."
+msgstr "local [opțiune] nume[=valoare] ..."
#: builtins.c:85
msgid "echo [-neE] [arg ...]"
@@ -2256,129 +2492,104 @@ msgid "echo [-n] [arg ...]"
msgstr "echo [-n] [arg ...]"
#: builtins.c:92
-#, fuzzy
msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr "enable [-pnds] [-a] [-f nume_fișier] [nume ...]"
+msgstr "enable [-a] [-dnps] [-f nume_fișier]] [nume ...]"
#: builtins.c:94
msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-#, fuzzy
msgid "getopts optstring name [arg ...]"
-msgstr "getopts optstring nume [arg]"
+msgstr "getopts șir_opțiuni nume [arg ...]"
#: builtins.c:98
-#, fuzzy
msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
-msgstr "exec [-cl] [-a nume] fișier [redirectare ...]"
+msgstr "exec [-cl] [-a nume] [comandă [argument ...]] [redirectare ...]"
#: builtins.c:100
msgid "exit [n]"
msgstr "exit [n]"
#: builtins.c:102
-#, fuzzy
msgid "logout [n]"
-msgstr "logout"
+msgstr "logout [n]"
#: builtins.c:105
-#, fuzzy
msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr "fc [-e enume] [-nlr] [prim] [u8ltim] sau fc -s [pat=rep] [cmd]"
+msgstr "fc [-e enume] [-lnr] [prim] [ultim] sau fc -s [pat=rep] [comandă]"
#: builtins.c:109
msgid "fg [job_spec]"
-msgstr "fg [job_spec]"
+msgstr "fg [id_lucrare]"
#: builtins.c:113
-#, fuzzy
msgid "bg [job_spec ...]"
-msgstr "bg [job_spec]"
+msgstr "bg [id_lucrare ...]"
#: builtins.c:116
-#, fuzzy
msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr "hash [-r] [-p nume_cale] [nume ...]"
+msgstr "hash [-lr] [-p nume_rută [-dt] [nume ...]"
#: builtins.c:119
-#, fuzzy
msgid "help [-dms] [pattern ...]"
-msgstr "help [tipar ...]"
+msgstr "help [-dms] [tipar ...]"
#: builtins.c:123
-#, fuzzy
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [n] sau history -awrn [nume_fișier] sau history -ps arg [arg...]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
+msgstr "history [-c] [-d decalaj] [n] sau history -anrw [nume_fișier] sau history -ps arg [arg...]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [jobspec ...] sau jobs -x comandă [args]"
+msgstr "jobs [-lnprs] [id_lucrare ...] sau jobs -x comandă [args]"
#: builtins.c:131
-#, fuzzy
msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [jobspec ...]"
+msgstr "disown [-h] [-ar] [id_lucrare ... | pid ...]"
#: builtins.c:134
-#, fuzzy
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-"kill [-s sigspec | -n signum | -sigspec] [pid | job]... sau kill -l [sigspec]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
+msgstr "kill [-s id_semnal | -n num_semnal | -id_semnal] pid | id_lucrare ... sau kill -l [id_semnal]"
#: builtins.c:136
msgid "let arg [arg ...]"
msgstr "let arg [arg ...]"
#: builtins.c:138
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgstr "read [-ers] [-a matrice] [-d delim] [-i text] [-n nr_carac] [-N nr_carac [-p prompt] [-t timp] [-u fd] [nume ...]"
#: builtins.c:140
msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-#, fuzzy
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [--abefhkmnptuvxBCHP] [-o opțiune] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o nume-opțiune] [--] [-] [arg ...]"
#: builtins.c:144
-#, fuzzy
msgid "unset [-f] [-v] [-n] [name ...]"
-msgstr "unset [-f] [-v] [nume ...]"
+msgstr "unset [-f] [-v] [-n] [nume ...]"
#: builtins.c:146
-#, fuzzy
msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr "export [-nf] [nume ...] sau export -p"
+msgstr "export [-fn] [nume[=valoare] ...] sau export -p"
#: builtins.c:148
-#, fuzzy
msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr "readonly [-anf] [nume ...] sau readonly -p"
+msgstr "readonly [-aAf] [nume[=valoare] ...] sau readonly -p"
#: builtins.c:150
msgid "shift [n]"
msgstr "shift [n]"
#: builtins.c:152
-#, fuzzy
msgid "source filename [arguments]"
-msgstr "nume fișier sursă"
+msgstr "source nume_fișier [argumente]"
#: builtins.c:154
-#, fuzzy
msgid ". filename [arguments]"
-msgstr ". nume fișier"
+msgstr ". nume_fișier [argumente]"
#: builtins.c:157
msgid "suspend [-f]"
@@ -2393,159 +2604,135 @@ msgid "[ arg... ]"
msgstr "[ arg... ]"
#: builtins.c:166
-#, fuzzy
msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr "trap [arg] [signal_spec] sau trap -l"
+msgstr "trap [-lp] [[arg] id_semnal ...]"
#: builtins.c:168
-#, fuzzy
msgid "type [-afptP] name [name ...]"
-msgstr "type [-apt] nume [nume ...]"
+msgstr "type [-afptP] nume [nume ...]"
#: builtins.c:171
-#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHacdfmstpnuv] [limită]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limită]"
#: builtins.c:174
-#, fuzzy
msgid "umask [-p] [-S] [mode]"
-msgstr "umask [-S] [mod]"
+msgstr "umask [-p] [-S] [mod]"
#: builtins.c:177
-#, fuzzy
msgid "wait [-fn] [-p var] [id ...]"
-msgstr "echo [-n] [arg ...]"
+msgstr "wait [-fn] [-p var] [id ...]"
#: builtins.c:181
-#, fuzzy
msgid "wait [pid ...]"
-msgstr "wait [n]"
+msgstr "wait [pid ...]"
#: builtins.c:184
-#, fuzzy
msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr "for NUME [în EXPRESIE ... ;] execută COMENZI; done"
+msgstr "for NUME [in CUVINTE ... ] ; do COMENZI; done"
#: builtins.c:186
-#, fuzzy
msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr "for NUME [în EXPRESIE ... ;] execută COMENZI; done"
+msgstr "for (( exp1; exp2; exp3 )); do COMENZI; done"
#: builtins.c:188
msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr "select NUME [în EXPRESIE ... ;] execută COMENZI; done"
+msgstr "select NUME [in CUVINTE ... ;] do COMENZI; done"
#: builtins.c:190
msgid "time [-p] pipeline"
-msgstr ""
+msgstr "time [-p] secvența_de_comenzi(pipeline)"
#: builtins.c:192
msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr "case EXPRESIE în [TIPAR[[TIPAR]..) COMENZI ;;]... esac"
+msgstr "case CUVÂNT in [MODEL[[MODEL]..) COMENZI ;;]... esac"
#: builtins.c:194
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if COMENZI; then COMENZI; [elif COMENZI; then COMENZI; ]... [ else "
-"COMENZI; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if COMENZI; then COMENZI; [elif COMENZI; then COMENZI; ]... [ else COMENZI; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while COMENZI; do COMENZI; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while COMENZI; do COMENZI-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until COMENZI; do COMENZI; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until COMENZI; do COMENZI-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
-msgstr ""
+msgstr "coproc [NUME] comanda [redirecționări]"
#: builtins.c:202
-#, fuzzy
msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr "function NUME { COMENZI ; } sau NUME () { COMENZI ; }"
+msgstr "function nume { COMENZI ; } sau nume () { COMENZI ; }"
#: builtins.c:204
-#, fuzzy
msgid "{ COMMANDS ; }"
-msgstr "{ COMENZI }"
+msgstr "{ COMENZI ; }"
#: builtins.c:206
-#, fuzzy
msgid "job_spec [&]"
-msgstr "fg [job_spec]"
+msgstr "id_lucrare [&]"
#: builtins.c:208
-#, fuzzy
msgid "(( expression ))"
-msgstr "se așteaptă expresie"
+msgstr "(( expresie ))"
#: builtins.c:210
-#, fuzzy
msgid "[[ expression ]]"
-msgstr "se așteaptă expresie"
+msgstr "[[ expresie ]]"
#: builtins.c:212
msgid "variables - Names and meanings of some shell variables"
-msgstr "variabile - Numele și înțelesurile unor variabile din shell"
+msgstr "variables - Numele și semnificațiile unor variabile din shell"
#: builtins.c:215
-#, fuzzy
msgid "pushd [-n] [+N | -N | dir]"
-msgstr "pushd [dir | +N | -N] [-n]"
+msgstr "pushd [-n] [+N | -N | dir]"
#: builtins.c:219
-#, fuzzy
msgid "popd [-n] [+N | -N]"
-msgstr "popd [+N | -N] [-n]"
+msgstr "popd [-n] [+N | -N]"
#: builtins.c:223
msgid "dirs [-clpv] [+N] [-N]"
msgstr "dirs [-clpv] [+N] [-N]"
#: builtins.c:226
-#, fuzzy
msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr "shopt [-pqsu] [-o opțiune lungă] nume_opt [nume_opt...]"
+msgstr "shopt [-pqsu] [-o] [nume_opțiune ...]"
#: builtins.c:228
msgid "printf [-v var] format [arguments]"
-msgstr ""
+msgstr "printf [-v var] format [argumente]"
#: builtins.c:231
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
+msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
+msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o opțiune] [-A acțiune] [-G tipar_glob] [-W listă_cuvinte] [-F funcție] [-C comandă] [-X tipar_filtru [- P prefix] [-S sufix] [nume ...]"
#: builtins.c:235
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
-"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
+msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr "compgen [-abcdefgjksuv] [-o opțiune] [-A acțiune] [-G tipar_glob] [-W listă_cuvinte] [-F funcție] [-C comandă] [-X tipar_filtru] [-P prefix] [-S sufix] [cuvânt]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "unset [-f] [-v] [nume ...]"
+msgstr "compopt [-o|+o opțiune] [-DEI] [nume ...]"
#: builtins.c:242
-msgid ""
-"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
+msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "mapfile [-d delim] [-n cont] [-O origin] [-s cont] [-t] [-u fd] [-C apelare] [-c cantitate] [matrice]"
#: builtins.c:244
-msgid ""
-"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-
+msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "readarray [-d delim] [-n cantitate] [-O origine] [-s cantitate] [-t] [-u fd] [-C apelare] [-c sumă_de] [matrice]"
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help alias», din «bash»;
+# «bash -c "help alias"», din «bash», sau dintr-un
+# shell, diferit de «bash».
#: builtins.c:256
msgid ""
"Define or display aliases.\n"
@@ -2561,11 +2748,31 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
+" alias returns true unless a NAME is supplied for which no alias has been\n"
" defined."
msgstr ""
+"Definește sau afișează alias.\n"
+" \n"
+" Fără argumente, «alias» imprimă lista de alias în forma reutilizabilă\n"
+" „alias NUME=VALOARE†la ieșirea standard (pe ecran).\n"
+" \n"
+" În caz contrar, un alias este definit pentru fiecare NUME a cărui VALOARE\n"
+" este dată. Un spațiu final în VALOARE, face ca următorul cuvânt să fie\n"
+" verificat pentru înlocuirea aliasului atunci când aliasul este extins.\n"
+" \n"
+" Opțiuni:\n"
+" -p\timprimă toate alias definite într-un format reutilizabil\n"
+" \n"
+" Starea de ieșire:\n"
+" «alias» returnează adevărat, cu excepția cazului în care este furnizat\n"
+" un NUME pentru care nu a fost definit niciun alias."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help unalias», din «bash»;
+# «bash -c "help unalias"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:278
msgid ""
"Remove each NAME from the list of defined aliases.\n"
@@ -2575,7 +2782,19 @@ msgid ""
" \n"
" Return success unless a NAME is not an existing alias."
msgstr ""
+"Elimină fiecare NUME din lista de aliasuri definite.\n"
+" \n"
+" Opțiuni:\n"
+" -a\telimină toate definițiile de alias\n"
+" \n"
+" Returnează succes, cu excepția cazului în care un NUME nu este un alias existent."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help bind», din «bash»;
+# «bash -c "help bind"», din «bash», sau dintr-un
+# shell, diferit de «bash».
#: builtins.c:291
msgid ""
"Set Readline key bindings and variables.\n"
@@ -2588,36 +2807,71 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
+" -S List key sequences that invoke macros and their values\n"
+" -s List key sequences that invoke macros and their values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
+" -u function-name Unbind all keys which are bound to the named function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated "
-"commands\n"
+" -X List key sequences bound with -x and associated commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
" bind returns 0 unless an unrecognized option is given or an error occurs."
msgstr ""
-
+"Configurează legăturile de taste și variabilele Readline.\n"
+" \n"
+" Asociază o secvență de taste cu o funcție Readline sau cu o macrocomandă\n"
+" sau configurează o variabilă Readline. Sintaxa argumentului fără opțiune \n"
+" este echivalentă cu cea găsită în ~/.inputrc, dar trebuie transmisă ca un\n"
+" singur argument; de exp.: bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
+" \n"
+" Opțiuni:\n"
+" -m keymap Utilizează KEYMAP ca hartă de taste pe durata acestei\n"
+" comenzi. Numele valabile pentru hărți de taste sunt emacs,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
+" vi-command, și vi-insert.\n"
+" -l Enumeră numele funcțiilor.\n"
+" -P Enumeră numele și asocierile funcțiilor.\n"
+" -p Enumeră funcțiile și asocierile într-o formă care poate fi\n"
+" reutilizată ca intrare.\n"
+" -S Enumeră secvențele de chei care invocă macrocomenzi și\n"
+" valorile acestora\n"
+" -s Enumeră secvențele de chei care invocă macrocomenzi și\n"
+" valorile acestora într-o formă care poate fi reutilizată ca intrare.\n"
+" -V Enumeră numele și valorile variabilelor\n"
+" -v Enumeră numele și valorile variabilelor într-o formă care\n"
+" poate fi reutilizată ca intrare.\n"
+" -q nume-funcție Se utilizează pentru a afla care taste invocă funcția numită.\n"
+" -u nume-funcție Dezasociază toate tastele care sunt asociate cu funcția numită.\n"
+" -r sec-taste Elimină asocierea pentru sec-taste numită.\n"
+" -f nume-fișier Citește asocierile de taste din fișierul al cărui nume a fost dat.\n"
+" -x sec-taste:comandă-shell\tDetermină executarea comandă-shell când este\n"
+" \t\t\t\tintrodusă sec-taste.\n"
+" -X Enumeră secvențele de taste asociate cu -x și comenzile asociate într-o\n"
+" formă care poate fi reutilizată ca intrare.\n"
+" \n"
+" Starea de ieșire:\n"
+" «bind» returnează 0, cu excepția cazului în care este dată o opțiune nerecunoscută, sau apare o eroare."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help break», din «bash»;
+# «bash -c "help break"», din «bash», sau dintr-un
+# shell, diferit de «bash».
#: builtins.c:330
msgid ""
"Exit for, while, or until loops.\n"
@@ -2628,7 +2882,20 @@ msgid ""
" Exit Status:\n"
" The exit status is 0 unless N is not greater than or equal to 1."
msgstr ""
+"Termină buclele for, while, sau until.\n"
+" \n"
+" Termină o buclă FOR, WHILE sau UNTIL. Dacă se specifică N, termină\n"
+" numărul de bucle specificat.\n"
+" \n"
+" Starea de ieșire:\n"
+" Starea de ieșire este 0, cu excepția cazului în care N nu este mai mare sau egal cu 1."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help continue», din «bash»;
+# «bash -c "help continue"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:342
msgid ""
"Resume for, while, or until loops.\n"
@@ -2639,21 +2906,48 @@ msgid ""
" Exit Status:\n"
" The exit status is 0 unless N is not greater than or equal to 1."
msgstr ""
+"Reia buclele for, while, sau until.\n"
+" \n"
+" Reia următoarea iterație a buclei curente FOR, WHILE sau UNTIL.\n"
+" Dacă se specifică N, reia bucla și continuă pentru N niveluri în continuare.\n"
+" \n"
+" Starea de ieșire:\n"
+" Starea de ieșire este 0, cu excepția cazului în care N nu este mai mare sau egal cu 1."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help builtin», din «bash»;
+# «bash -c "help builtin"», din «bash», sau dintr-un
+# shell, diferit de «bash».
#: builtins.c:354
msgid ""
"Execute shell builtins.\n"
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
+" as a shell function, but need to execute the builtin within the function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
" not a shell builtin."
msgstr ""
+"Execută comenzile interne de shell.\n"
+" \n"
+" Execută SHELL-BUILTIN cu argumentele ARG fără a efectua căutarea comenzilor.\n"
+" Acest lucru este util atunci când doriți să reimplementați o comandă internă de shell\n"
+" ca o funcție shell, dar trebuie să executați comanda internă în cadrul funcției.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea de ieșire a lui SHELL-BUILTIN sau false dacă SHELL-BUILTIN nu\n"
+" este o comandă internă de shell."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help caller», din «bash»;
+# «bash -c "help caller"», din «bash», sau dintr-un
+# shell, diferit de «bash».
#: builtins.c:369
msgid ""
"Return the context of the current subroutine call.\n"
@@ -2669,27 +2963,39 @@ msgid ""
" Returns 0 unless the shell is not executing a shell function or EXPR\n"
" is invalid."
msgstr ""
+"Returnează contextul apelului subrutinei curente.\n"
+" \n"
+" Fără EXPR, returnează „$line $filenameâ€. Cu EXPR, returnează\n"
+" „$line $subroutine $filenameâ€; aceste informaÈ›ii suplimentare pot fi\n"
+" utilizate pentru a furniza o urmărire a stivei.\n"
+" \n"
+" Valoarea EXPR indică câte cadre de apel trebuie să se întoarcă înaintea\n"
+" celui curent; cadrul superior este cadrul 0.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează 0, cu excepția cazului în care shell-ul nu execută o funcție shell\n"
+" sau EXPR nu este validă."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help cd», din «bash»;
+# «bash -c "help cd"», din «bash», sau dintr-un
+# shell, diferit de «bash».
#: builtins.c:387
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
+" Change the current directory to DIR. The default DIR is the value of the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
+" The variable CDPATH defines the search path for the directory containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
+" A null directory name is the same as the current directory. If DIR begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is set,\n"
+" the word is assumed to be a variable name. If that variable has a value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2705,16 +3011,53 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname "
-"component\n"
+" `..' is processed by removing the immediately previous pathname component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
" -P is used; non-zero otherwise."
msgstr ""
-
+"Schimbă directorul de lucru al shell-ului.\n"
+" \n"
+" Schimbă directorul actual cu DIR. DIR implicit este valoarea variabilei de \n"
+" shell HOME.\n"
+" \n"
+" Variabila CDPATH definește calea de căutare pentru directorul care conține\n"
+" DIR. Numele alternative ale directoarelor din CDPATH sunt separate prin\n"
+" două puncte (:). Numele unui director nul este același cu directorul curent.\n"
+" Dacă DIR începe cu o bară oblică (/), atunci CDPATH nu este utilizat.\n"
+" \n"
+" Dacă directorul nu este găsit și opțiunea de shell „cdable_vars†este setată,\n"
+" cuvântul se presupune a fi un nume de variabilă. Dacă acea variabilă are o\n"
+" valoare, valoarea ei este utilizată pentru DIR.\n"
+" \n"
+" Opțiuni:\n"
+" -L\tforțează ca legăturile simbolice să fie urmate: rezolvă \n"
+" \t\tlegăturile simbolice din DIR după procesarea instanÈ›elor de „..â€\n"
+" -P\tutilizează structura fizică a directorului fără a urma legăturile\n"
+" \t\tsimbolice: rezolvă legăturile simbolice din DIR înainte de a\n"
+" \t\tprocesa instanÈ›e de „..â€\n"
+" -e\tdacă este furnizată opțiunea „-P†și directorul de lucru curent\n"
+" \t\tnu poate fi determinat cu succes, iese cu o stare diferită de\n"
+" \t\tzero\n"
+" -@\tpe sistemele care acceptă acest lucru, prezintă un fișier cu\n"
+" \t\tatribute extinse, ca un director care conține atributele fișierului\n"
+" \n"
+" Modul implicit este să urmeze legături simbolice, ca È™i cum ar fi fost specificat „-Lâ€.\n"
+" „..†este procesat prin eliminarea componentei de cale imediat anterioară până\n"
+" la o bară oblică sau la începutul DIR.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează 0 dacă directorul este schimbat și dacă $PWD este stabilit cu succes atunci\n"
+" când este utilizat „-Pâ€; diferit de zero, în caz contrar."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help pwd», din «bash»;
+# «bash -c "help pwd"», din «bash», sau dintr-un
+# shell, diferit de «bash».
#: builtins.c:425
msgid ""
"Print the name of the current working directory.\n"
@@ -2730,9 +3073,26 @@ msgid ""
" Returns 0 unless an invalid option is given or the current directory\n"
" cannot be read."
msgstr ""
+"Imprimă numele directorului de lucru curent.\n"
+" \n"
+" Opțiuni:\n"
+" -L\timprimă valoarea lui $PWD dacă aceasta numește directorul de\n"
+" \t\tlucru curent\n"
+" -P\timprimă directorul fizic, fără nicio legătură simbolică\n"
+" \n"
+" În mod implicit, „pwd†se comportă ca și cum „-L†ar fi fost specificat.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează 0, cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau directorul curent nu poate fi citit."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help :», din «bash»;
+# «bash -c "help :"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:442
-#, fuzzy
msgid ""
"Null command.\n"
" \n"
@@ -2741,8 +3101,19 @@ msgid ""
" Exit Status:\n"
" Always succeeds."
msgstr ""
-"Nici un efect, comanda nu face nimic. Un cod de ieșire zero este returnat."
+"Comandă nulă.\n"
+" \n"
+" Fără efect; comanda nu face nimic.\n"
+" \n"
+" Starea de ieșire:\n"
+" Întotdeauna reușește(0)."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help true», din «bash»;
+# «bash -c "help true"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:453
msgid ""
"Return a successful result.\n"
@@ -2750,7 +3121,17 @@ msgid ""
" Exit Status:\n"
" Always succeeds."
msgstr ""
+"Returnează un rezultat de succes(0).\n"
+" \n"
+" Starea de ieșire:\n"
+" Întotdeauna reușește(0)."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help false», din «bash»;
+# «bash -c "help false"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:462
msgid ""
"Return an unsuccessful result.\n"
@@ -2758,14 +3139,23 @@ msgid ""
" Exit Status:\n"
" Always fails."
msgstr ""
+"Returnează un rezultat nereușit(≠0).\n"
+" \n"
+" Starea de ieșire:\n"
+" Întotdeauna eșuează(≠0)."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help command», din «bash»;
+# «bash -c "help command"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:471
msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
+" information about the specified COMMANDs. Can be used to invoke commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -2777,7 +3167,38 @@ msgid ""
" Exit Status:\n"
" Returns exit status of COMMAND, or failure if COMMAND is not found."
msgstr ""
-
+"Execută o comandă simplă sau afișează informații despre comenzi.\n"
+" \n"
+" Rulează COMANDA cu ARGumente care suprimă căutarea funcției shell sau afișează\n"
+" informații despre COMENZILE specificate. Se poate utiliza pentru a invoca comenzi\n"
+" de pe disc atunci când există o funcție cu același nume.\n"
+" \n"
+" Opțiuni:\n"
+" -p utilizează o valoare implicită pentru PATH ce garantează că se\n"
+" vor găsi toate utilitățile standard\n"
+" -v imprimă o descriere a COMENZII, similară cu cea a comenzii\n"
+" interne «type».\n"
+" -V imprimă o descriere mai detaliată pentru fiecare COMANDĂ\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea de ieșire a COMENZII sau eșuează dacă COMANDA nu este găsită."
+
+# R-GC, scrie:
+# am tradus:
+# „-I if ... with the same name at a previous scopeâ€, ca:
+# „-I dacă ... cu acelaÈ™i nume dintr-un scop anteriorâ€
+# ***
+# ÃŽntrebare:
+# dacă se traduce, ca:
+# „-I dacă ... cu acelaÈ™i nume dintr-o sferă de aplicare anterioarăâ€,
+# ar fi o traducere mai bună?
+# Opinii/Idei?
+# ==================================
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help declare», din «bash»;
+# «bash -c "help declare"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:490
msgid ""
"Set variable values and attributes.\n"
@@ -2811,22 +3232,73 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or a variable\n"
" assignment error occurs."
msgstr ""
-
+"Stabilește valorile și atributele variabilelor.\n"
+" \n"
+" Declară variabilele și-le atribuie atribute. Dacă nu sunt date NUME,\n"
+" afișează atributele și valorile tuturor variabilelor.\n"
+" \n"
+" Opțiuni:\n"
+" -f\trestricționează acțiunea sau afișarea, la numele și definițiile funcțiilor\n"
+" -F\trestricționează afișarea numai la numele funcțiilor (plus numărul de\n"
+" \t\tlinie și fișierul sursă, la depanare)\n"
+" -g\tcreează variabile globale atunci când sunt utilizate într-o funcție shell;\n"
+" \t\taltfel sunt ignorate\n"
+" -I\tdacă se creează o variabilă locală, moștenește atributele și valoarea\n"
+" \t\tunei variabile cu același nume dintr-un scop anterior\n"
+" -p\tafișează atributele și valoarea fiecărui NUME\n"
+" \n"
+" Opțiuni care stabilesc atributele:\n"
+" -a\tstabilește NUME ca matrice indexată (dacă este acceptat)\n"
+" -A\tstabilește NUME ca matrice asociativă (dacă este acceptat)\n"
+" -i\tstabileÈ™te ca NUME să aibă atributul „integerâ€\n"
+" -l\tpentru a converti valoarea fiecărui NUME în minuscule, la atribuire\n"
+" -n\tface din NUME o referință la variabila numită după valoarea acesteia\n"
+" -r\tcreează NUME ca numai-citire\n"
+" -t\tstabileÈ™te ca NUME să aibă atributul „traceâ€\n"
+" -u\tpentru a converti valoarea fiecărui NUME în majuscule, la atribuire\n"
+" -x\tpentru a exporta NUME\n"
+" \n"
+" Utilizarea a „+†în loc de „-â€, dezactivează atributul dat.\n"
+" \n"
+" Variabilele cu atributul întreg au o evaluare aritmetică (vezi comanda\n"
+" «let») efectuată atunci când variabilei i se atribuie o valoare.\n"
+" \n"
+" Când este folosită într-o funcție, «declare» face ca NUME să fie local, ca\n"
+" și în cazul comenzii «local». Opțiunea „-g†suprimă acest comportament.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n"
+" nevalidă sau apare o eroare de atribuire a variabilelor."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help typeset», din «bash»;
+# «bash -c "help typeset"», din «bash», sau dintr-un
+# shell, diferit de «bash».
#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
" A synonym for `declare'. See `help declare'."
msgstr ""
+"Stabilește valorile și atributele variabilelor.\n"
+" \n"
+" Un sinonim pentru „declareâ€. A se vedea „help declareâ€."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help local», din «bash»;
+# «bash -c "help local"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:540
msgid ""
"Define local variables.\n"
@@ -2841,13 +3313,31 @@ msgid ""
" Returns success unless an invalid option is supplied, a variable\n"
" assignment error occurs, or the shell is not executing a function."
msgstr ""
+"Definește variabilele locale.\n"
+" \n"
+" Creează o variabilă locală numită NUME și îi dă această VALOARE.\n"
+" OPȚIUNE poate fi orice opțiune acceptată de «declare».\n"
+" \n"
+" Variabilele locale pot fi utilizate numai în cadrul unei funcții; sunt\n"
+" vizibile numai pentru funcția în care sunt definite și pentru copiii\n"
+" acesteia.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes cu excepția cazului în care este furnizată o opțiune\n"
+" nevalidă, apare o eroare de atribuire a variabilei sau shell-ul nu execută\n"
+" o funcție."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help echo», din «bash»;
+# «bash -c "help echo"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by "
-"a\n"
+" Display the ARGs, separated by a single space character and followed by a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -2871,16 +3361,47 @@ msgid ""
" \t\t0 to 3 octal digits\n"
" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
" \t\tcan be one or two hex digits\n"
-" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
-"HHHH.\n"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n"
" \t\tHHHH can be one to four hex digits.\n"
-" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
-"value\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n"
" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
" \n"
" Exit Status:\n"
" Returns success unless a write error occurs."
msgstr ""
+"Scrie argumente la ieșirea standard.\n"
+" \n"
+" Afișează ARGumentele, separate printr-un singur caracter de spațiu și urmate\n"
+" de o nouă linie, în ieșirea standard.\n"
+" \n"
+" Opțiuni:\n"
+" -n\tnu adaugă o nouă linie\n"
+" -e\tactivează interpretarea următoarelor eludări de bară oblică inversă\n"
+" -E\tsuprimă în mod explicit interpretarea eludărilor de bară oblică inversă\n"
+" \n"
+" «echo» interpretează următoarele caractere de eludare de bară oblică inversă:\n"
+" \a\talertă (clopoțel)\n"
+" \\b\tmută cursorul înapoi cu unul sau mai multe spații\n"
+" \\c\tsuprimă ieșirea ulterioară\n"
+" \\e\tcaracter de eludare\n"
+" \\E\tcaracter de eludare\n"
+" \\f\talimentare cu „hîrtieâ€\n"
+" \\n\tlinie nouă\n"
+" \\r\treturul de caret↵\n"
+" \\t\ttabulator orizontal\n"
+" \\v\ttabulator vertical\n"
+" \\\\\tbară oblică inversă\n"
+" \\0nnn\tcaracterul al cărui cod ASCII este NNN (octal). NNN poate fi\n"
+" \t\tde la 0 la 3 digiți octali\n"
+" \\xHH\tcaracterul de opt biți a cărui valoare este HH (hexazecimal). HH\n"
+" \t\tpoate fi unu sau doi digiți hexazecimali\n"
+" \\uHHHH\tcaracterul Unicode a cărui valoare este valoarea hexazecimală HHHH.\n"
+" \t\tHHHH poate fi de la unu până la patru digiți hexazecimali.\n"
+" \\UHHHHHHHH caracterul Unicode a cărui valoare este valoarea hexazecimală\n"
+" \t\tHHHHHHHH. HHHHHHHH poate fi de la unu până la opt digiți hexazecimali.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes cu excepția cazului în care apare o eroare de scriere."
#: builtins.c:597
msgid ""
@@ -2894,7 +3415,22 @@ msgid ""
" Exit Status:\n"
" Returns success unless a write error occurs."
msgstr ""
+"Scrie argumente la ieșirea standard.\n"
+" \n"
+" Afișează ARGumentele la ieșirea standard urmate de o linie nouă.\n"
+" \n"
+" Opțiuni:\n"
+" -n\tnu adaugă o nouă linie\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes cu excepția cazului în care apare o eroare de scriere."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help enable», din «bash»;
+# «bash -c "help enable"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
@@ -2921,19 +3457,61 @@ msgid ""
" Exit Status:\n"
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
+"Activează și dezactivează comenzile interne ale shell-ului.\n"
+" \n"
+" Activează și dezactivează comenzile interne ale shell-ului. Dezactivarea\n"
+" vă permite să executați o comandă de pe disc care are același nume ca\n"
+" și comanda internă a shell-ului, fără a utiliza calea completă.\n"
+" \n"
+" Opțiuni:\n"
+" -a\tafișează lista comenzilor interne indicând dacă sunt activate sau nu\n"
+" -n\tdezactivează fiecare NUME sau afișează o listă de comenzi interne\n"
+" \t\tdezactivate\n"
+" -p\tafișează lista comenzilor interne într-un format reutilizabil\n"
+" -s\tafișează numai numele comenzilor interne „speciale†Posix\n"
+" \n"
+" Opțiuni care controlează încărcarea dinamică:\n"
+" -f\tÎncarcă comanda internă NUME de la obiectul partajat NUME_FIȘIER\n"
+" -d\tElimină o comandă internă încărcată cu -f\n"
+" \n"
+" Fără opțiuni, fiecare NUME este activat.\n"
+" \n"
+" Pentru a utiliza comanda «test» găsită în $PATH în loc de comanda internă\n"
+" de shell, tastați «enable -n test».\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care NUME nu este o comandă shell internă sau apare o eroare."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help eval», din «bash»;
+# «bash -c "help eval"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+" Combine ARGs into a single string, use the result as input to the shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
" Returns exit status of command or success if command is null."
msgstr ""
+"Execută argumente ca o comandă de shell.\n"
+" \n"
+" Combină ARGumentele într-un singur șir, folosește rezultatul ca intrare în\n"
+" shell și execută comenzile rezultate.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea de ieșire a comenzii, sau succes dacă comanda este nulă."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help getopts», din «bash»;
+# «bash -c "help getopts"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:652
msgid ""
"Parse option arguments.\n"
@@ -2974,14 +3552,56 @@ msgid ""
" Returns success if an option is found; fails if the end of options is\n"
" encountered or an error occurs."
msgstr ""
-
+"Analizează argumentele opțiunii.\n"
+" \n"
+" «getopts» este folosit de procedurile shell pentru a analiza parametrii\n"
+" poziționali ca opțiuni.\n"
+" \n"
+" ȘIR_OPȚIUNI conține literele de opțiune care trebuie recunoscute; dacă\n"
+" o literă este urmată de două puncte, se așteaptă ca opțiunea să aibă un\n"
+" argument, care ar trebui să fie separat de aceasta prin spațiu alb.\n"
+" \n"
+" De fiecare dată când este invocată, «getopts» va plasa următoarea opțiune\n"
+" în variabila shell $nume, inițializând nume dacă nu există, iar indexul\n"
+" următorului argument va fi procesat în variabila shell OPTIND. OPTIND este\n"
+" inițializată la 1 de fiecare dată când shell-ul sau un script shell este\n"
+" invocat. Când o opțiune necesită un argument, «getopts» plasează acel\n"
+" argument în variabila shell OPTARG.\n"
+" \n"
+" «getopts» raportează erorile într-unul dintre următoarele două moduri. Dacă\n"
+" primul caracter al lui ȘIR_OPȚIUNI este două puncte, «getopts» utilizează \n"
+" raportarea silențioasă a erorilor. În acest mod, nu este afișat niciun mesaj\n"
+" de eroare. Dacă se găsește o opțiune nevalidă, «getopts» plasează caracterul\n"
+" de opțiune găsit în OPTARG. Dacă nu este găsit un argument necesar, «getopts»\n"
+" plasează un „:†în NUME și pune în OPTARG caracterul de opțiune găsit. Dacă\n"
+" «getopts» nu este în modul silențios și se găsește o opțiune nevalidă, «getopts»\n"
+" plasează „?†în NUME și dezactivează OPTARG. Dacă nu este găsit un argument\n"
+" necesar, un „?†este plasat în NUME, OPTARG este dezactivată și este afișat un\n"
+" mesaj de diagnosticare.\n"
+" \n"
+" Dacă variabila shell OPTERR are valoarea 0, «getopts» dezactivează afișarea\n"
+" mesajelor de eroare, chiar dacă primul caracter al lui ȘIR_OPȚIUNI nu este \n"
+" două puncte „:â€. OPTERR are valoarea 1 implicit.\n"
+" \n"
+" «getopts» analizează în mod normal parametrii de poziție, dar dacă argumentele\n"
+" sunt furnizate ca valori ARG, acestea sunt analizate în schimb.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes dacă este găsită o opțiune; eșuează dacă se întâlnește\n"
+" sfârșitul opțiunilor sau apare o eroare."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help exec», din «bash»;
+# «bash -c "help exec"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -2989,15 +3609,36 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+" If the command cannot be executed, a non-interactive shell exits, unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+" Returns success unless COMMAND is not found or a redirection error occurs."
msgstr ""
+"Înlocuiește shell-ul cu comanda dată.\n"
+" \n"
+" Execută COMANDA, înlocuind acest shell cu programul specificat.\n"
+" ARGUMENTELE devin argumente pentru COMANDA. Dacă COMANDA nu este\n"
+" specificată, orice redirecționare va avea efect în shell-ul curent.\n"
+" \n"
+" Opțiuni:\n"
+" -a nume\tpasează NUME ca argument zero la COMANDA\n"
+" -c\texecută COMANDA într-un mediu gol\n"
+" -l\tplasează o liniuță în argumentul zero la COMANDA\n"
+" \n"
+" Dacă comanda nu poate fi executată, un shell non-interactiv se va închide, \n"
+" cu excepția cazului în care opțiunea shell „execfail†este setată.\n"
+" \n"
+" Starea de ieșire\n"
+" Returnează succes, cu excepția cazului în care COMANDA nu este găsită sau\n"
+" apare o eroare de redirecționare."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help exit», din «bash»;
+# «bash -c "help exit"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:715
msgid ""
"Exit the shell.\n"
@@ -3005,33 +3646,46 @@ msgid ""
" Exits the shell with a status of N. If N is omitted, the exit status\n"
" is that of the last command executed."
msgstr ""
-"Ieste din shell.\n"
+"Iese din shell.\n"
" \n"
-" Iese din shell cu starea lui N. Dacă N este omis, starea de ieșire\n"
-" este starea ultimei comenzi executate."
+" Iese din shell cu starea lui N. Dacă N este omis, starea de ieșire\n"
+" este starea ultimei comenzi executate."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help logout», din «bash»;
+# «bash -c "help logout"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
+" Exits a login shell with exit status N. Returns an error if not executed\n"
" in a login shell."
msgstr ""
+"Iese din shell-ul de autentificare.\n"
+" \n"
+" Iese din shell-ul de autentificare cu starea de ieșire N. Returnează o eroare\n"
+" dacă nu este executată într-un shell de autentificare."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help fc», din «bash»;
+# «bash -c "help fc"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+" fc is used to list or edit and re-execute commands from the history list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3045,10 +3699,40 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
-msgstr ""
-
+" Returns success or status of executed command; non-zero if an error occurs."
+msgstr ""
+"Afișează sau execută comenzi din lista istoricului.\n"
+" \n"
+" «fc» se utilizează pentru a lista sau edita și re-executa comenzi din lista\n"
+" istoricului.\n"
+" PRIMA și ULTIMA pot fi numere care specifică intervalul sau PRIMA poate fi\n"
+" un șir, ceea ce înseamnă cea mai recentă comandă care începe cu acel șir.\n"
+" \n"
+" Opțiuni:\n"
+" -e NUME_EDIT\n"
+" \t\tselectează ce editor să utilizat. Implicit este FCEDIT, apoi \n"
+" \t\tEDITOR, apoi vi\n"
+" -l \tlistează linii în loc să editeze\n"
+" -n\tomite numerele de rând la listare\n"
+" -r\tinversează ordinea liniilor (cele mai noi sunt listate primele)\n"
+" \n"
+" Cu formatul «fc -s [tipar=înloc ...] [comanda]», COMANDA este re-executată\n"
+" după ce este efectuată înlocuirea VECHE=NOUĂ.\n"
+" \n"
+" Un alias util de folosit cu aceasta, este «r='fc -s'», astfel încât tastând \n"
+" «r cc» se execută ultima comandă ce începe cu „cc†și tastând «r» se execută\n"
+" din nou ultima comandă folosită.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succesul sau starea comenzii executate; diferit de zero dacă\n"
+" apare o eroare."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help fg», din «bash»;
+# «bash -c "help fg"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
@@ -3060,28 +3744,54 @@ msgid ""
" Exit Status:\n"
" Status of command placed in foreground, or failure if an error occurs."
msgstr ""
+"Mută procesul în primul plan.\n"
+" \n"
+" Plasează procesul identificat de ID_PROC în primul plan, făcându-l procesul\n"
+" curent. Dacă ID_PROC nu este prezent, este utilizată noțiunea shell-ului\n"
+" despre procesul curent\n"
+" \n"
+" Starea de ieșire:\n"
+" Starea comenzii plasată în prim-plan sau eșec dacă apare o eroare."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help bg», din «bash»;
+# «bash -c "help bg"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's "
-"notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
+"Mută procesul în fundal.\n"
+" \n"
+" Plasează procesele identificate de fiecare ID_PROC în fundal, ca și cum ar fi\n"
+" fost pornite cu „&â€. Dacă ID_PROC nu este prezent, se foloseÈ™te noÈ›iunea\n"
+" shell-ului despre procesul curent.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care controlul procesului nu este\n"
+" activat sau apare o eroare."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help hash», din «bash»;
+# «bash -c "help hash"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
+" no arguments are given, information about remembered commands is displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3098,7 +3808,33 @@ msgid ""
" Exit Status:\n"
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
-
+"Memorizează sau afișează locațiile programelor.\n"
+" \n"
+" Determină și memorizează calea completă a fiecărei comenzi NUME. Dacă nu\n"
+" sunt date argumente, sunt afișate informații despre comenzile memorate.\n"
+" \n"
+" Opțiuni:\n"
+" -d\tuită locația reținută pentru fiecare NUME\n"
+" -l\tafișează într-un format care poate fi reutilizat ca intrare\n"
+" -p calenume\n"
+" \tutilizează CALENUME drept calea completă a NUME\n"
+" -r\tuită toate locațiile memorizate\n"
+" -t\tafișează locația reținută a fiecărui NUME, precedând fiecare\n"
+" \t\tlocație cu NUMELE corespunzător dacă sunt date mai multe NUME\n"
+" Argumente:\n"
+" NUME\tFiecare NUME este căutat în $PATH și adăugat la lista comenzilor\n"
+" \t\tmemorate.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care NUME nu este găsit sau\n"
+" este dată o opțiune nevalidă."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help help», din «bash»;
+# «bash -c "help help"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
@@ -3117,10 +3853,33 @@ msgid ""
" PATTERN\tPattern specifying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
+" Returns success unless PATTERN is not found or an invalid option is given."
msgstr ""
+"Afișează informații despre comenzile interne.\n"
+" \n"
+" Afișează scurte rezumate ale comenzilor interne. Dacă TIPAR, este\n"
+" specificat, oferă ajutor detaliat pentru toate comenzile care se potrivesc\n"
+" cu TIPARul, în caz contrar, este afișată lista temelor de ajutor.\n"
+" \n"
+" Opțiuni:\n"
+" -d\tafișează o scurtă descriere pentru fiecare temă\n"
+" -m\tafișează utilizarea în format pseudo-pagină de manual\n"
+" -s\tafișează doar un scurt rezumat de utilizare pentru\n"
+" \t\tfiecare temă care se potrivește cu TIPAR\n"
+" \n"
+" Argumente:\n"
+" TIPAR \tTIPAR care specifică o temă de ajutor\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care TIPAR nu este găsit sau este\n"
+" dată o opțiune nevalidă."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help history», din «bash»;
+# «bash -c "help history"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
@@ -3149,13 +3908,52 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
+" with each displayed history entry. No time stamps are printed otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-
+"Afișează sau manipulează lista istoricului.\n"
+" \n"
+" Afișează lista istoricului cu numere de linie, prefixând fiecare intrare\n"
+" modificată cu un „*â€. Un argument de N, listează numai ultimele N intrări.\n"
+" \n"
+" Opțiuni:\n"
+" -c\tșterge lista istoricului ștergând toate intrările\n"
+" -d poziție\n"
+" \t\tșterge intrarea din istoric de la poziția POZIȚIE. Pozițiile\n"
+" \t\tnegative se numără înapoi de la sfârșitul listei istoricului\n"
+" \n"
+" -a\tadaugă linii istorice din această sesiune la fișierul istoricului\n"
+" -n\tcitește toate liniile istorice care nu sunt deja citite din\n"
+" \t\tfișierul istoricului și le adaugă la lista istoricului\n"
+" -r\tcitește fișierul istoricului și îi adaugă conținutul la lista\n"
+" \t\tistoricului\n"
+" -w\tscrie istoricul curent în fișierul istoricului\n"
+" \n"
+" -p\tefectuează extinderea istoricului pentru fiecare ARG și afișează\n"
+" \t\trezultatul fără a-l stoca în lista istoricului\n"
+" -s\tadaugă ARGumentele la lista istoricului ca o singură intrare\n"
+" \n"
+" Dacă NUME_FIȘIER este dat, acesta este utilizat ca fișierul istoricului.\n"
+" Altfel, dacă HISTFILE are o valoare, aceasta este folosită, dacă nu are,\n"
+" se folosește ~/.bash_history.\n"
+" \n"
+" Dacă variabila HISTTIMEFORMAT este definită și nu este nulă, valoarea ei este\n"
+" utilizată ca șir de format pentru strftime(3) pentru a imprima marcajul de\n"
+" timp asociat cu fiecare intrare din istoric afișată. În caz contrar, nu se\n"
+" imprimă marcajele de timp.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau apare o eroare."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help jobs», din «bash»;
+# «bash -c "help jobs"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:879
msgid ""
"Display status of jobs.\n"
@@ -3179,7 +3977,33 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs.\n"
" If -x is used, returns the exit status of COMMAND."
msgstr ""
-
+"Afișează starea proceselor.\n"
+" \n"
+" Listează procesele active. ID_PROC, restrânge afișarea la acel proces.\n"
+" Fără opțiuni, se afișează starea tuturor proceselor active.\n"
+" \n"
+" Opțiuni:\n"
+" -l\tlistează ID-urile proceselor, pe lângă informațiile normale\n"
+" -n\tlistează numai procesele care s-au schimbat de la ultima notificare\n"
+" -p\tlistează numai ID-urile proceselor\n"
+" -r\trestrânge afișarea, la procesele în execuție\n"
+" -s\trestrânge afișarea, la procesele oprite\n"
+" \n"
+" Dacă este furnizată -x, COMANDA este rulată după ce toate specificațiile\n"
+" procesului care apar în ARGumente au fost înlocuite cu ID-ul de proces al\n"
+" liderului grupului de procese, al procesului respectiv.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau apare o eroare.\n"
+" Dacă se utilizează „-xâ€, returnează starea de ieÈ™ire a COMENZII."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help disown», din «bash»;
+# «bash -c "help disown"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
@@ -3196,7 +4020,27 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
+"Elimină procese din shell-ul actual.\n"
+" \n"
+" Elimină fiecare argument ID_PROC din tabelul de procese active. Fără\n"
+" niciun ID_PROC, shell-ul folosește noțiunea sa de proces curent.\n"
+" \n"
+" Opțiuni:\n"
+" -a\telimină toate procesele dacă ID_PROC nu este furnizat\n"
+" -h\tmarchează fiecare ID_PROC astfel încât SIGHUP să nu fie trimis\n"
+" \t\tla proces dacă shell-ul primește un semnal SIGHUP\n"
+" -r\telimină numai procesele care rulează\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau ID_PROC."
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help kill», din «bash»;
+# «bash -c "help kill"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
@@ -3219,7 +4063,34 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-
+"Trimite un semnal către un proces.\n"
+" \n"
+" Trimite proceselor identificate prin PID sau JOBSPEC semnalul numit de\n"
+" SIGSPEC sau de SIGNUM. Dacă nici SIGSPEC, nici SIGNUM nu sunt\n"
+" prezente, atunci se presupune SIGTERM.\n"
+" \n"
+" Opțiuni:\n"
+" -s sig\tSIG este un nume de semnal\n"
+" -n sig\tSIG este un număr de semnal\n"
+" -l\tlistează numele semnalelor; dacă după „-l†urmează argumente, se\n"
+" \t\tpresupune că sunt numere de semnal pentru care ar trebui listate\n"
+" \t\tnume\n"
+" -L\tsinonim cu -l\n"
+" \n"
+" Kill este o comandă internă de shell din două motive: permite utilizarea\n"
+" ID-urilor de job în locul ID-urilor de proces și permite omorârea proceselor\n"
+" dacă este atinsă limita de procese pe care le puteți crea.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau apare o eroare."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help let», din «bash»;
+# «bash -c "help let"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
@@ -3227,8 +4098,7 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
+" grouped into levels of equal-precedence operators. The levels are listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3264,22 +4134,67 @@ msgid ""
" Exit Status:\n"
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-
+"Evaluează expresii aritmetice.\n"
+" \n"
+" Evaluează fiecare ARGument ca o expresie aritmetică. Evaluarea se face\n"
+" în numere întregi cu lățime fixă, fără verificarea depășirii, dar împărțirea\n"
+" la 0 este detectată și semnalată ca o eroare. Următoarea listă de operatori\n"
+" este grupată în grupuri de operatori cu prioritate egală. Nivelurile sunt\n"
+" listate în ordinea descrescătoare a priorității.\n"
+" \n"
+" \tid++, id--\tpost-incrementare, post-decrementare a variabilei\n"
+" \t++id, --id\tpre-incrementare, pre-decrementare a variabilei\n"
+" \t-, +\t\tminus unar, plus unar\n"
+" \t!, ~\t\tnegații logice și binare\n"
+" \t**\t\texponențial\n"
+" \t*, /, %\t\tînmulțire, împărțire, rest\n"
+" \t+, -\t\tadunare, scădere\n"
+" \t<<, >>\t\tdeplasare binară la stânga și la dreapta\n"
+" \t<=, >=, <, >\tcomparare\n"
+" \t==, !=\t\tegalitate, inegalitate\n"
+" \t&\t\tși (AND) binar\n"
+" \t^\t\tsau exclusiv (XOR) binar\n"
+" \t|\t\tsau (OR) binar\n"
+" \t&&\t\tlși (AND) logic\n"
+" \t||\t\tsau (OR) logic\n"
+" \texpr ? expr : expr\n"
+" \t\t\toperator condițional\n"
+" \t=, *=, /=, %=,\n"
+" \t+=, -=, <<=, >>=,\n"
+" \t&=, ^=, |=\tasignare\n"
+" \n"
+" Variabilele shell sunt permise ca operanzi. Numele variabilei este\n"
+" înlocuit cu valoarea acesteia (constrânsă la un număr întreg cu \n"
+" lățime fixă) în cadrul unei expresii. Nu este necesar ca variabila să\n"
+" aibă atributul întreg activat pentru a fi utilizată într-o expresie.\n"
+" \n"
+" Operatorii sunt evaluați în ordinea de prioritate. Subexpresiile din\n"
+" paranteze sunt evaluate mai întâi și pot suprascrie regulile de\n"
+" precedență de mai sus.\n"
+" \n"
+" Starea de ieșire:\n"
+" Dacă ultimul ARGument este evaluat la 0, «let» returnează 1; în caz contrar,\n"
+" «let» returnează 0."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help read», din «bash»;
+# «bash -c "help read"», din «bash», sau
+# dintr-un shell, diferit de «bash».
#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
+" if the -u option is supplied. The line is split into fields as with word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
-" delimiters.\n"
+" the last NAME. Only the characters found in $IFS are recognized as word\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3291,8 +4206,7 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -3310,14 +4224,64 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-" (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times out\n"
+" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-
-#: builtins.c:1041
+"Citește o linie din intrarea standard și o împarte în câmpuri.\n"
+" \n"
+" Citește o singură linie din intrarea standard sau din descriptorul de fișier\n"
+" FD dacă este furnizată opțiunea -u. Linia este împărțită în câmpuri ca în\n"
+" cazul împărțirii cuvintelor, iar primul cuvânt este atribuit primului NUME, \n"
+" al doilea cuvânt celui de-al doilea NUME și așa mai departe, ultimul NUME\n"
+" preluând lista cuvintelor rămase. Doar caracterele găsite în $IFS sunt\n"
+" recunoscute ca delimitatori de cuvinte. În mod implicit, caracterul bară oblică\n"
+" inversă eludează caracterele delimitatoare și linia nouă.\n"
+" \n"
+" Dacă nu sunt furnizate NUME, linia citită este stocată în variabila REPLY.\n"
+" \n"
+" Opțiuni:\n"
+" -a matrice\n"
+" \t\tatribuie cuvintele citite indicilor secvențiali ai variabilei\n"
+" \t\tmatrice MATRICE, începând de la zero\n"
+" -d delim\tcontinuă până când este citit primul caracter din DELIM, în loc\n"
+" \t\tde linia nouă\n"
+" -e\tutilizează Readline pentru a obține linia\n"
+" -i text\tutilizează TEXT ca text inițial pentru Readline\n"
+" -n ncarac\treturnează după citirea a NCARAC caractere în loc să aștepte\n"
+" \t\to nouă linie, dar respectă delimitatorul dacă sunt citite mai\n"
+" \t\tpuțin de NCARAC caractere înainte de delimitator\n"
+" -N ncarac\treturnează numai după citirea exactă a NCARAC caractere, cu\n"
+" \t\texcepția cazului în care se întâlnește sfârșitul fișierului sau \n"
+" \t\tdacă timpul de citire expiră, eliminând orice delimitatori\n"
+" -p prompt\tafișează șirul PROMPT fără un caracter de linie nouă la final,\n"
+" \t\tînainte de a încerca să citească\n"
+" -r\tnu permite barelor oblice inverse să eludeze niciun caracter\n"
+" -s\tnu afișează ieșirea ce vine de la un terminal\n"
+" -t timeout\n"
+" \t\texpiră și returnează un cod de eroare dacă o linie completă de\n"
+" \t\tintrare nu este citită în TIMEOUT secunde. Valoarea variabilei\n"
+" \t\tTIMEOUT este timpul de expirare implicit. TIMEOUT poate fi un\n"
+" \t\tnumăr fracțional. Dacă TIMEOUT este zero, citirea se termină\n"
+" \t\timediat fără a încerca să citească date, și returnează un cod de\n"
+" \t\tsucces numai dacă intrarea este disponibilă pe descriptorul de\n"
+" \t\tfișier specificat. Starea de ieșire este mai mare de 128 dacă\n"
+" \t\ttimpul de expirare este depășit\n"
+" -u fd\tcitește din descriptorul de fișier FD în loc de intrarea standard\n"
+" \n"
+" Starea de ieșire:\n"
+" Codul de returnare este zero, cu excepția cazului în care se întâlnește\n"
+" sfârșitul fișierului, expirarea timpului de citire (caz în care este mai mare\n"
+" de 128), apare o eroare de atribuire a variabilei sau este furnizat un\n"
+" descriptor de fiÈ™ier nevalid ca argument pentru opÈ›iunea „-uâ€."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help return», din «bash»;
+# «bash -c "help return"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3328,8 +4292,29 @@ msgid ""
" Exit Status:\n"
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-
-#: builtins.c:1054
+"Returnează dintr-o funcție shell.\n"
+" \n"
+" Determină ieșirea unei funcții sau a unui script sursă cu valoarea de\n"
+" returnare specificată de N. Dacă N este omis, starea de returnare\n"
+" este cea a ultimei comenzi executate în funcție sau script.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează N sau eșec dacă shell-ul nu execută o funcție sau un script."
+
+# R-GC, scrie:
+# unele dintre definițiile acestui(lung) mesaj,
+# sunt adaptări ale muncii altor echipe din TP.
+# ***
+# Mulțumesc, tuturor acestor echipe: es, fr, pt_BR, pt, it, nl, pl, uk; sper să nu fi uitat
+# niciuna dintre cele ce mi-au folosit ca
+# inspirație, în traducerea acestui mesaj.
+# =================================
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help set», din «bash»;
+# «bash -c "help set"», din «bash», sau dintr-un
+# shell, diferit de «bash».
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3372,8 +4357,7 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
+" or zero if no command exited with a non-zero status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -3397,8 +4381,7 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell "
-"functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -3414,8 +4397,100 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
msgstr ""
-
-#: builtins.c:1139
+"Stabilește sau anulează valorile opțiunilor de shell și ale parametrilor\n"
+"poziționali.\n"
+" \n"
+" Modifică valoarea atributelor shell și a parametrilor poziționali sau \n"
+" afișează numele și valorile variabilelor shell.\n"
+" \n"
+" Opțiuni:\n"
+" -a Marchează variabilele care sunt modificate sau create, pentru export.\n"
+" -b Notifică imediat când o sarcină este finalizată.\n"
+" -e Termină imediat dacă o comandă termină cu o stare diferită de zero.\n"
+" -f Dezactivează folosirea metacaracterelor pentru completarea numelor\n"
+" fiÈ™ierelor (fără „globbingâ€).\n"
+" -h Memorizează locația comenzilor pe măsură ce sunt căutate.\n"
+" -k Toate argumentele de atribuire sunt plasate în mediul(environment)\n"
+" unei comenzi, nu doar cele care preced numele comenzii.\n"
+" -m Activează controlul sarcinii.\n"
+" -n Citește comenzile, dar nu le execută.\n"
+" -o nume-opțiune\n"
+" Stabilește variabila corespunzătoare → nume-opțiune:\n"
+" allexport la fel ca -a\n"
+" braceexpand la fel ca -B\n"
+" emacs utilizează o interfață de editare a liniilor în\n"
+" stilul «emacs»\n"
+" errexit la fel ca -e\n"
+" errtrace la fel ca -E\n"
+" functrace la fel ca -T\n"
+" hashall la fel ca -h\n"
+" histexpand la fel ca -H\n"
+" history activează istoricul comenzilor\n"
+" ignoreeof shell-ul nu va termina după citirea „EOFâ€\n"
+" interactive-comments\n"
+" permite comentariilor să apară în comenzile interactive\n"
+" keyword la fel ca -k\n"
+" monitor la fel ca -m\n"
+" noclobber la fel ca -C\n"
+" noexec la fel ca -n\n"
+" noglob la fel ca -f\n"
+" nolog acceptat în prezent, dar ignorat\n"
+" notify la fel ca -b\n"
+" nounset la fel ca -u\n"
+" onecmd la fel ca -t\n"
+" physical la fel ca -P\n"
+" pipefail valoarea returnată a unei linii de conectare este\n"
+" starea ultimei comenzi care a ieșit cu o stare diferită\n"
+" de zero sau zero dacă nicio comandă nu a ieșit cu o\n"
+" stare diferită de zero\n"
+" posix modifică comportamentul lui «bash» în cazul în care\n"
+" operația implicită diferă de standardul Posix, pentru\n"
+" a se potrivi cu standardul Posix\n"
+" privileged la fel ca -p\n"
+" verbose la fel ca -v\n"
+" vi utilizează o interfață de editare a liniilor în\n"
+" stilul «vi»\n"
+" xtrace la fel ca -x\n"
+" -p Modul cu privilegii: Activat ori de câte ori ID-urile de utilizator\n"
+" reale și efective nu se potrivesc. Dezactivează procesarea \n"
+" fișierului $ENV și importul funcțiilor shell. Dezactivarea acestei\n"
+" opțiuni face ca uid-ul și gid-ul efectiv să fie stabilite la uid-ul și\n"
+" gid-ul real\n"
+" -t Termină după citirea și executarea unei comenzi.\n"
+" -u Tratează variabilele nedefinite ca pe o eroare la substituire.\n"
+" -v Afișează liniile de intrare ale shell-ului pe măsură ce sunt citite.\n"
+" -x Afișează comenzile și argumentele lor pe măsură ce sunt executate.\n"
+" -B Shell-ul va efectua înlocuirea acoladelor (de exp.: a{b,c} → ab ac)\n"
+" -C Dacă este specificată, nu permite ca fișierele obișnuite existente să\n"
+" fie suprascrise prin redirecționarea ieșirii.\n"
+" -E Dacă este specificată, capturarea ERR este moștenită de funcțiile shell.\n"
+" -H Permite înlocuirea istoricului cu un „!â€. Această opÈ›iune este activată\n"
+" în mod implicit atunci când shell-ul este interactiv.\n"
+" -P Dacă este specificată, legăturile simbolice nu sunt urmate la executarea\n"
+" comenzilor precum «cd» care schimbă directorul curent.\n"
+" -T Dacă este specificată, capturile DEBUG și RETURN sunt moștenite de\n"
+" funcțiile shell.\n"
+" -- Atribuie toate argumentele rămase parametrilor de poziție.\n"
+" Dacă nu există argumente rămase, parametrii de poziție sunt eliminați.\n"
+" - Atribuie toate argumentele rămase parametrilor de poziție.\n"
+" Opțiunile -x și -v sunt dezactivate.\n"
+" \n"
+" Utilizarea lui „+†în loc de „-â€, face ca aceste opÈ›iuni să fie dezactivate.\n"
+" Opțiunile pot fi folosite și la invocarea shell-ului. Setul actual de \n"
+" opțiuni poate fi găsit în $-. Restul de n ARG sunt parametri poziționali și\n"
+" sunt alocați, în ordine, la $1, $2, .. $n. Dacă nu sunt date ARG, toate \n"
+" variabilele shell sunt afișate.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes cu excepția cazului în care este dată o opțiune nevalidă."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help unset», din «bash»;
+# «bash -c "help unset"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3427,8 +4502,7 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
+" Without options, unset first tries to unset a variable, and if that fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -3436,14 +4510,37 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
+"Anulează valorile și atributele variabilelor și funcțiilor shell.\n"
+" \n"
+" Pentru fiecare NUME, elimină variabila sau funcția corespunzătoare.\n"
+" \n"
+" Opțiuni:\n"
+" -f\ttratează fiecare NUME ca pe o funcție shell\n"
+" -v\ttratează fiecare NUME ca pe o variabilă shell\n"
+" -n\ttratează fiecare NUME ca referință de nume și anulează variabila\n"
+" \t\tîn sine, în loc de variabila la care face referire\n"
+" \n"
+" Fără opțiuni, „unset†încearcă mai întâi să anuleze o variabilă și, dacă\n"
+" aceasta nu reușește, încearcă să anuleze o funcție.\n"
+" \n"
+" Unele variabile nu pot fi anulate; consultați, de asemenea, «readonly».\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau un NUME este doar pentru citire."
-#: builtins.c:1161
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help export», din «bash»;
+# «bash -c "help export"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -3455,8 +4552,30 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
+"Stabilește atributul de export pentru variabilele shell.\n"
+" \n"
+" Marchează fiecare NUME pentru export automat în mediul(environment)\n"
+" comenzilor executate ulterior. Dacă este furnizată VALOAREa, atribuie\n"
+" VALOAREa înainte de a exporta.\n"
+" \n"
+" Opțiuni:\n"
+" -f\tse referă la funcțiile shell\n"
+" -n\telimină proprietatea de export din fiecare NUME\n"
+" -p\tafișează o listă cu toate variabilele și funcțiile exportate\n"
+" \n"
+" Un argument de „--†dezactivează procesarea ulterioară a opțiunilor.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau NUME nu este valid."
-#: builtins.c:1180
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help readonly», din «bash»;
+# «bash -c "help readonly"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3476,8 +4595,32 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
+"Marchează variabilele shell ca neschimbabile.\n"
+" \n"
+" Marchează fiecare NUME ca fiind doar pentru citire; valorile acestor NUME\n"
+" nu pot fi modificate prin atribuirea ulterioară. Dacă este furnizată VALOARE,\n"
+" atribuie VALOARE înainte de a marca ca doar pentru citire.\n"
+" \n"
+" Opțiuni:\n"
+" -a\tse referă la variabilele matrice indexate\n"
+" -A\tse referă la variabile matrice asociative\n"
+" -f\tse referă la funcțiile shell\n"
+" -p\tafișează o listă cu toate variabilele sau funcțiile protejate\n"
+" \t\tla scriere, în funcÈ›ie de dacă este dată sau nu opÈ›iunea „-fâ€\n"
+" \n"
+" Un argument de „--†dezactivează procesarea ulterioară a opțiunilor.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau NUME nu este valid."
-#: builtins.c:1202
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help shift», din «bash»;
+# «bash -c "help shift"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3487,8 +4630,22 @@ msgid ""
" Exit Status:\n"
" Returns success unless N is negative or greater than $#."
msgstr ""
+"Schimbă parametrii poziționali.\n"
+" \n"
+" Redenumește parametrii de poziție $N+1,$N+2 ... la $1,$2 ... Dacă N\n"
+" nu este dat, se presupune că este 1.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care N este negativ sau mai\n"
+" mare decât $#."
-#: builtins.c:1214 builtins.c:1229
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help source», din «bash»;
+# «bash -c "help source"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3501,8 +4658,24 @@ msgid ""
" Returns the status of the last command executed in FILENAME; fails if\n"
" FILENAME cannot be read."
msgstr ""
+"Execută comenzi dintr-un fișier în shell-ul curent.\n"
+" \n"
+" Citește și execută comenzi din NUME_FIȘIER în shell-ul curent. Intrările \n"
+" din $PATH sunt utilizate pentru a găsi directorul care conține NUME_FIȘIER.\n"
+" Dacă sunt furnizate ARGUMENTE, acestea devin parametrii de poziție atunci\n"
+" când este executat NUME_FIȘIER.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimei comenzi executate în NUME_FIȘIER; eșuează dacă\n"
+" NUME_FIȘIER nu poate fi citit."
-#: builtins.c:1245
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help suspend», din «bash»;
+# «bash -c "help suspend"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3515,8 +4688,27 @@ msgid ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
+"Suspendă execuția shell-ului.\n"
+" \n"
+" Suspendă execuția acestui shell până când primește un semnal SIGCONT.\n"
+" Cu excepția cazului în care sunt forțate, shell-urile de autentificare nu pot \n"
+" fi suspendate.\n"
+" \n"
+" Opțiuni:\n"
+" -f\tforțează suspendarea, chiar dacă shell-ul este un shell de\n"
+" \tautentificare\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care controlul sarcinii nu este\n"
+" activat sau apare o eroare."
-#: builtins.c:1261
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help test», din «bash»;
+# «bash -c "help test"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3550,8 +4742,7 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
+" -N FILE True if the file has been modified since it was last read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -3572,8 +4763,7 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+" True if STRING1 sorts before STRING2 lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -3598,33 +4788,131 @@ msgid ""
" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
" false or an invalid argument is given."
msgstr ""
-
-#: builtins.c:1343
+"Evaluează expresia condițională.\n"
+" \n"
+" Termină cu starea 0 (adevărat) sau 1 (fals) în funcție de evaluarea EXPR.\n"
+" Expresiile pot fi unare sau binare. Expresiile unare sunt adesea folosite\n"
+" pentru a examina starea unui fișier. Există de-asemeni operatori de șir și\n"
+" operatori de comparație numerică.\n"
+" \n"
+" Comportamentul testului depinde de numărul de argumente. Citiți pagina\n"
+" de manual, «bash», pentru specificația completă.\n"
+" \n"
+" Operatori de fișiere:\n"
+" \n"
+" -a FIȘIER Adevărat dacă fișierul există.\n"
+" -b FIȘIER Adevărat dacă fișierul este un dispozitiv de blocuri.\n"
+" -c FIȘIER Adevărat dacă fișierul este un dispozitiv de caractere.\n"
+" -d FIȘIER Adevărat dacă fișierul este un director.\n"
+" -e FIȘIER Adevărat dacă fișierul există.\n"
+" -f FIȘIER Adevărat dacă fișierul există și este un fișier normal.\n"
+" -g FIȘIER Adevărat dacă fiÈ™ierul are activat bitul „set-group-idâ€.\n"
+" -h FIȘIER Adevărat dacă fișierul este o legătură simbolică.\n"
+" -L FIȘIER Adevărat dacă fișierul este o legătură simbolică..\n"
+" -k FIȘIER Adevărat dacă fișierul are activat bitul „sticky†(lipicios).\n"
+" -p FIȘIER Adevărat dacă fișierul este o linie de conectare numită.\n"
+" -r FIȘIER Adevărat dacă fișierul poate fi citit de dumneavoastră.\n"
+" -s FIȘIER Adevărat dacă fișierul există și nu este gol.\n"
+" -S FIȘIER Adevărat dacă fișierul este un soclu.\n"
+" -t DF Adevărat dacă DF(descriptorul de fișier) este deschis pe un terminal.\n"
+" -u FIȘIER Adevărat dacă fiÈ™ierul are activat bitul „set-user-idâ€.\n"
+" -w FIȘIER Adevărat dacă fișierul poate fi scris de dumneavoastră.\n"
+" -x FIȘIER Adevărat dacă fișierul poate fi executat de dumneavoastră.\n"
+" -O FIȘIER Adevărat dacă fișierul este deținut efectiv de dumneavoastră.\n"
+" -G FIȘIER Adevărat dacă fișierul este deținut efectiv de grupul dumneavoastră.\n"
+" -N FIȘIER Adevărat dacă fișierul a fost modificat de la ultima citire.\n"
+" \n"
+" FIȘI1 -nt FIȘI2 Adevărat dacă fișierul 1 este mai nou decât fișierul 2 (conform\n"
+" datei modificării).\n"
+" \n"
+" FIȘI1 -ot FIȘI2 Adevărat dacă fișierul1 este mai vechi decât fișierul2.\n"
+" \n"
+" FIȘI1 -ef FIȘI2 Adevărat dacă fișierul1 este o legătură dură către fișierul2.\n"
+" \n"
+" Operatori de șir:\n"
+" \n"
+" -z ȘIR Adevărat dacă șirul este gol.\n"
+" \n"
+" -n ȘIR Adevărat dacă șirul nu este gol.\n"
+" ȘIR Adevărat dacă șirul nu este gol.\n"
+" \n"
+" ȘIR1 = ȘIR2 Adevărat dacă șirurile sunt egale.\n"
+" ȘIR1 != ȘIR2 Adevărat dacă șirurile nu sunt egale.\n"
+" ȘIR1 < ȘIR2 Adevărat dacă ȘIR1 se ordonează lexicografic înainte de ȘIR2.\n"
+" ȘIR1 > ȘIR2 Adevărat dacă ȘIR1 se ordonează lexicografic după ȘIR2.n\n"
+" \n"
+" Alți operatori:\n"
+" \n"
+" -o OPȚIUNE Adevărat dacă opțiunea shell OPȚIUNE este activată.\n"
+" -v VAR Adevărat dacă este definită variabila shell VAR.\n"
+" -R VAR Adevărat dacă variabila shell VAR este definită și este o referință\n"
+" de nume.\n"
+" ! EXPR Adevărat dacă expresia EXPR este falsă.\n"
+" EXPR1 -a EXPR2 Adevărat dacă amândouă expresiile EXPR1 și EXPR2 sunt adevărate.\n"
+" EXPR1 -o EXPR2 Adevărat dacă fie expresia EXPR1, fie expresia EXPR2 este adevărată.\n"
+" \n"
+" ARG1 OP ARG2 Teste aritmetice. OP este unul dintre -eq, -ne, -lt, -le, -gt, sau -ge.\n"
+" \n"
+" Operatorii binari aritmetici returnează adevărat dacă ARG1 este egal, inegal, mai mic\n"
+" decât, mai mic decât sau egal, mai mare decât, sau mai mare decât sau egal cu ARG2.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes dacă EXPR este evaluată ca adevărată; eșuează dacă EXPR este\n"
+" evaluată ca fiind falsă sau este dat un argument nevalid."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help [», din «bash»;
+# «bash -c "help ["», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
" This is a synonym for the \"test\" builtin, but the last argument must\n"
" be a literal `]', to match the opening `['."
msgstr ""
+"Evaluează expresia condițională.\n"
+" \n"
+" Acesta este un sinonim pentru comanda internă «test», dar ultimul argument\n"
+" trebuie să fie un „]†literal, pentru a se potrivi cu „[†de deschidere."
-#: builtins.c:1352
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help times», din «bash»;
+# «bash -c "help times"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
+" Prints the accumulated user and system times for the shell and all of its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
" Always succeeds."
msgstr ""
+"Afișează timpii procesului.\n"
+" \n"
+" Afișează timpii acumulați de utilizator și sistem pentru shell și pentru toate\n"
+" procesele sale secundare.\n"
+" \n"
+" Starea de ieșire:\n"
+" Întotdeauna reușește(0)."
-#: builtins.c:1364
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help trap», din «bash»;
+# «bash -c "help trap"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
+" Defines and activates handlers to be run when the shell receives signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -3633,37 +4921,70 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+" If no arguments are supplied, trap prints the list of commands associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\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
+" Returns success unless a SIGSPEC is invalid or an invalid option is given."
+msgstr ""
+"Capturează semnale și alte evenimente.\n"
+" \n"
+" Definește și activează operatorii care urmează să fie rulați atunci când\n"
+" shell-ul primește semnale sau apar alte evenimente.\n"
+" \n"
+" ARG este o comandă care trebuie citită și executată atunci când shell-ul\n"
+" primește semnalul(ele) SIGNAL_SPEC. Dacă ARG este absentă (și este\n"
+" furnizat un singur SIGNAL_SPEC) sau „-â€, fiecare semnal specificat este\n"
+" restabilit la valoarea sa originală. Dacă ARG este un șir nul, fiecare\n"
+" SIGNAL_SPEC este ignorat de către shell și de comenzile pe care le invocă.\n"
+" \n"
+" Dacă un SIGNAL_SPEC este EXIT (0), ARG este executat la ieșirea din shell.\n"
+" Dacă un SIGNAL_SPEC este DEBUG, ARG este executat înainte de fiecare comandă\n"
+" simplă. Dacă un SIGNAL_SPEC este RETURN, ARG este executat de fiecare dată \n"
+" când o funcție shell sau un script rulat din . sau comanda internă «source»\n"
+" se termină de executat. Un SIGNAL_SPEC de ERR face ca ARG să fie executat\n"
+" de fiecare dată când eșecul unei comenzi ar determina terminarea shell-ului\n"
+" atunci când opțiunea „-e†este activată. \n"
+" \n"
+" Dacă nu sunt furnizate argumente, «trap» afișează lista de comenzi asociate\n"
+" fiecărui semnal.\n"
+" \n"
+" Opțiuni:\n"
+" -l\tafișează o listă de nume de semnale și numerele corespunzătoare\n"
+" \tale acestora\n"
+" -p\tafișează comenzile de captură asociate fiecărui SIGNAL_SPEC\n"
+" \n"
+" Fiecare SIGNAL_SPEC este fie un nume de semnal în <signal.h>, fie un număr\n"
+" de semnal. Numele semnalelor nu fac distincție între majuscule și minuscule,\n"
+" iar prefixul SIG este opțional. Un semnal poate fi trimis către shell cu\n"
+" «kill -signal $$».\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care un SIGSPEC este nevalid sau \n"
+" este dată o opțiune nevalidă."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help type», din «bash»;
+# «bash -c "help type"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -3689,16 +5010,45 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
-msgstr ""
-
-#: builtins.c:1431
+" Returns success if all of the NAMEs are found; fails if any are not found."
+msgstr ""
+"Afișează informații despre comanda «type».\n"
+" \n"
+" Pentru fiecare NUME, indică cum ar fi interpretat dacă ar fi folosit ca\n"
+" nume de comandă.\n"
+" \n"
+" Opțiuni:\n"
+" -a\tafișează toate locațiile care conțin un executabil numit NUME; \n"
+" \t\tinclude alias, componente integrate și funcții, dacă și numai\n"
+" \t\tdacă opțiunea „-p†nu este, de asemenea, utilizată\n"
+" -f\tsuprimă căutarea funcției de shell\n"
+" -P\tforțează o căutare PATH pentru fiecare NUME, chiar dacă este un\n"
+" \t\talias, o comandă internă sau o funcție, și returnează numele\n"
+" \t\tfișierului din disc care va fi executat\n"
+" -p\treturnează fie numele fișierului de pe disc care va fi executat,\n"
+" \t\tfie nimic dacă «type -t NUME» nu va returna „fileâ€\n"
+" -t\tafiÈ™ează un singur cuvânt care este unul dintre „aliasâ€, „keywordâ€,\n"
+" \t\t„functionâ€, „builtinâ€, „file†sau „â€, dacă NUME este un alias,\n"
+" \t\tcuvânt rezervat shell, funcție shell, comandă internă shell,\n"
+" \t\tfișier pe disc, sau, respectiv, negăsit\n"
+" \n"
+" Argumente:\n"
+" NUME\tNumele comenzii de interpretat.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes dacă toate NUMEle sunt găsite; eșuează dacă nu sunt găsite."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help ulimit», din «bash»;
+# «bash -c "help ulimit"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
+" Provides control over the resources available to the shell and processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -3742,8 +5092,61 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-
-#: builtins.c:1482
+"Modifică limitele resurselor shell.\n"
+" \n"
+" Oferă control asupra resurselor disponibile shell-ului și proceselor pe care\n"
+" acesta le creează, pe sisteme care permit un astfel de control.\n"
+" \n"
+" Opțiuni:\n"
+" -S\tutilizează limita de resurse „softâ€\n"
+" -H\tutilizează limita de resurse „hardâ€\n"
+" -a\tsunt raportate toate limitele curente\n"
+" -b\tdimensiunea memoriei tampon a soclului\n"
+" -c\tdimensiunea maximă a fișierelor create cu conținutul memoriei (core)\n"
+" -d\tdimensiunea maximă a segmentului de date al unui proces\n"
+" -e\tprioritatea maximă de planificare („niceâ€)\n"
+" -f\tdimensiunea maximă a fișierelor scrise de shell și subprocesele sale\n"
+" -i\tnumărul maxim de semnale în așteptare\n"
+" -k\tnumărul maxim de Kcozi alocate pentru acest proces\n"
+" -l\tdimensiunea maximă pe care un proces o poate bloca în memorie\n"
+" -m\tcantitatea maximă de memorie fizică a unui proces\n"
+" -n\tnumărul maxim de descriptori de fișier deschise\n"
+" -p\tdimensiunea memoriei tampon a liniei de conectare\n"
+" -q\tnumărul maxim de octeți din cozile de mesaje POSIX\n"
+" -r\tprioritatea maximă a procesului în timp real\n"
+" -s\tdimensiunea maximă a stivei\n"
+" -t\tcantitatea maximă de timp a CPU-ului în secunde\n"
+" -u\tnumărul maxim de procese ale utilizatorului\n"
+" -v\tdimensiunea memoriei virtuale\n"
+" -x\tnumărul maxim de blocări ale fișierelor\n"
+" -P\tnumărul maxim de pseudoterminale\n"
+" -R\ttimpul maxim pe care îl poate rula un proces în timp real înainte\n"
+" \tde blocare\n"
+" -T\tnumărul maxim de fire(threads)\n"
+" \n"
+" Nu toate opțiunile sunt disponibile pe toate platformele.\n"
+" \n"
+" Dacă se dă LIMITA, aceasta este noua valoare a resursei specificate;\n"
+" valorile speciale de LIMITÄ‚: „softâ€, „hard†și „unlimited†reprezintă\n"
+" limita curentă maleabilă, limita curentă dură și, respectiv, fără limită.\n"
+" Altminteri, este afișată valoarea curentă a resursei specificate. Dacă\n"
+" nu este dată nicio opÈ›iune, atunci se presupune „-fâ€.\n"
+" \n"
+" Valorile sunt în incremente de 1024 de octeÈ›i, cu excepÈ›ia lui „-tâ€, care\n"
+" este în secunde, a lui „-pâ€, care este în incremente de 512 octeÈ›i È™i a lui\n"
+" „-uâ€, care este un număr nescalat de procese.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n"
+" nevalidă sau apare o eroare."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help umask», din «bash»;
+# «bash -c "help umask"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3760,28 +5163,47 @@ msgid ""
" Exit Status:\n"
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
+"Afișează sau modifică masca pentru accesarea fișierelor nou create.\n"
+" \n"
+" Stabilește masca de creare a fișierelor de utilizator la MOD. Dacă MOD\n"
+" este omis, afișează valoarea curentă a măștii.\n"
+" \n"
+" Dacă MOD începe cu o cifră, acesta este interpretat ca un număr octal;\n"
+" altminteri este interpretat ca un șir în format simbolic ca cel acceptat\n"
+" de chmod(1).\n"
+" \n"
+" Opșiuni\n"
+" -p\tdacă MOD este omis, arată ieșirea într-o formă care poate fi\n"
+" \treutilizată ca intrare\n"
+" -S\tafișează MODul în formatul simbolic; altminteri în formatul octal\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care MOD este nevalid sau\n"
+" este dată o opțiune nevalidă."
-#: builtins.c:1502
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help wait», din «bash»;
+# «bash -c "help wait"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
+" Waits for each process identified by an ID, which may be a process ID or a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for a single job from the list of "
-"IDs,\n"
-" or, if no IDs are supplied, for the next job to complete and returns "
-"its\n"
+" If the -n option is supplied, waits for a single job from the list of IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns its\n"
" exit status.\n"
" \n"
" If the -p option is supplied, the process or job identifier of the job\n"
" for which the exit status is returned is assigned to the variable VAR\n"
-" named by the option argument. The variable will be unset initially, "
-"before\n"
+" named by the option argument. The variable will be unset initially, before\n"
" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
@@ -3792,23 +5214,63 @@ msgid ""
" option is given, or if -n is supplied and the shell has no unwaited-for\n"
" children."
msgstr ""
+"Așteaptă finalizarea lucrării și returnează starea de ieșire.\n"
+" \n"
+" Așteaptă fiecare proces identificat printr-un ID, care poate fi un ID de\n"
+" proces sau o specificație de lucrare și raportează starea de terminare\n"
+" a acestuia. Dacă ID-ul nu este dat, așteaptă toate procesele secundare\n"
+" active în prezent și starea de returnare este zero. Dacă ID-ul este o\n"
+" specificație de lucrare, așteaptă toate procesele din secvența de comenzi\n"
+" respectivă a lucrării.\n"
+" \n"
+" Dacă este furnizată opÈ›iunea „-nâ€, aÈ™teaptă o singură lucrare din lista de\n"
+" ID-uri sau, dacă nu sunt furnizate ID-uri, pentru finalizarea următoarei\n"
+" lucrări și returnează starea de ieșire.\n"
+" \n"
+" Dacă este furnizată opÈ›iunea „-pâ€, identificatorul de proces sau de lucrare al\n"
+" lucrării pentru care este returnată starea de ieșire este atribuit variabilei\n"
+" VAR numită de argumentul opțiunii. Variabila va fi anulată inițial, înainte\n"
+" de orice atribuire. Acest lucru este util numai atunci când este furnizată\n"
+" opÈ›iunea „-nâ€.\n"
+" \n"
+" Dacă este furnizată opțiunea „-f†și controlul lucrării este activat, \n"
+" așteaptă ca ID-ul specificat să se termine, în loc să aștepte ca acesta să\n"
+" își schimbe starea.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimului ID; eșuează dacă ID-ul este nevalid sau este\n"
+" dată o opțiune nevalidă sau dacă „-n†este furnizată și shell-ul nu are\n"
+" niciun copil pe care să-l aștepte."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination "
-"status.\n"
+" Waits for each process specified by a PID and reports its termination status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an "
-"invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
" option is given."
msgstr ""
+"Așteaptă finalizarea procesului și returnează starea de ieșire.\n"
+" \n"
+" Așteaptă fiecare proces specificat de un PID și raportează starea de terminare a\n"
+" acestuia. Dacă nu este dat PID, așteaptă toate procesele copil active în prezent,\n"
+" iar starea returnată este zero. PID trebuie să fie un ID de proces.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimului PID; eșuează dacă PID este nevalid sau este dată\n"
+" o opțiune nevalidă."
-#: builtins.c:1548
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help for», din «bash»;
+# «bash -c "help for"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3820,8 +5282,23 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"Execută comenzi pentru fiecare membru dintr-o listă.\n"
+" \n"
+" Bucla „for†execută o secvență de comenzi pentru fiecare membru dintr-o\n"
+" listă de elemente. Dacă „in CUVINTE ...;†nu este prezent, atunci se\n"
+" presupune „in \"$@\"â€. Pentru fiecare element din CUVINTE, se defineÈ™te\n"
+" NUME ca acel element, și se execută COMENZILE.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimei comenzi executate."
-#: builtins.c:1562
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help 'for (('», din «bash»;
+# «bash -c "help 'for (('"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3837,8 +5314,27 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-
-#: builtins.c:1580
+"Buclă aritmetică „forâ€.\n"
+" \n"
+" Echivalentă cu:\n"
+" \t(( EXP1 ))\n"
+" \twhile (( EXP2 )); do\n"
+" \t\tCOMENZI\n"
+" \t\t(( EXP3 ))\n"
+" \tdone\n"
+" EXP1, EXP2, și EXP3 sunt expresii aritmetice. Dacă orice expresie este\n"
+" omisă, se comportă ca și cum aceasta ar avea valoarea 1.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimei comenzi executate."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help select», din «bash»;
+# «bash -c "help select"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3857,8 +5353,31 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-
-#: builtins.c:1601
+"Selectează cuvinte dintr-o listă și execută comenzi.\n"
+" \n"
+" CUVINTELE sunt expandate, generând o listă de cuvinte. Setul\n"
+" de cuvinte expandate este afișat la ieșirea de eroare standard,\n"
+" fiecare precedat de un număr. Dacă „în CUVINTE†nu este prezent,\n"
+" se presupune „in \"$@\"â€. Se afiÈ™ează apoi promptul PS3 È™i se citeÈ™te\n"
+" o linie de la intrarea standard. Dacă linia constă din numărul\n"
+" corespunzător unuia dintre cuvintele afișate, atunci se definește NUME\n"
+" ca acest cuvânt. Dacă linia este goală, CUVINTE și promptul sunt\n"
+" reafișate. Dacă este citit sfârșitul fișierului(EOF), comanda se\n"
+" finalizează. Orice altă valoare citită face ca NUME să fie definit ca\n"
+" null. Linia citită este salvată în variabila „REPLYâ€. COMENZILE sunt\n"
+" executate după fiecare selecție până când este executată o comandă\n"
+" de întrerupere(break).\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimei comenzi executate."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help time», din «bash»;
+# «bash -c "help time"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3873,8 +5392,27 @@ msgid ""
" Exit Status:\n"
" The return status is the return status of PIPELINE."
msgstr ""
+"Raportează timpul consumat de execuția secvenței de comenzi.\n"
+" \n"
+" Execută SECVENȚA_DE_COMENZI și imprimă un rezumat al timpului real,\n"
+" al timpului CPU al utilizatorului și al timpului CPU al sistemului\n"
+" petrecut executând SECVENȚA_DE_COMENZI atunci când aceasta termină.\n"
+" \n"
+" Opțiuni:\n"
+" -p\tafișează rezumatul cronometrajului în formatul Posix portabil\n"
+" \n"
+" Valoarea variabilei TIMEFORMAT este utilizată drept format de ieșire.\n"
+" \n"
+" Starea de ieșire:\n"
+" Starea de returnare este starea de returnare a SECVENÈšEI_DE_COMENZI."
-#: builtins.c:1618
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help case», din «bash»;
+# «bash -c "help case"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3884,51 +5422,104 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"Execută comenzi bazate pe potrivirea modelelor.\n"
+" \n"
+" Execută COMENZI selectiv, pe baza potrivirilor dintre CUVÂNT și MODEL.\n"
+" „|†este folosit pentru a separa mai multe modele.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimei comenzi executate."
-#: builtins.c:1630
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help if», din «bash»;
+# «bash -c "help if"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then "
-"the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
-"is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. "
-"Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
+" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of the\n"
+" entire construct is the exit status of the last command executed, or zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-
-#: builtins.c:1647
+"Execută comenzi bazate pe condițional.\n"
+" \n"
+" Lista „if COMENZI†este executată. Dacă starea sa de ieșire este zero,\n"
+" atunci este executată lista „then COMENZIâ€. ÃŽn caz contrar, fiecare listă \n"
+" „elif COMENZI†este executată pe rând, iar dacă starea sa de ieșire este\n"
+" zero, lista corespunzătoare „then COMENZI†este executată și comanda\n"
+" «if» se completează. În caz contrar, lista „else COMENZI†este executată,\n"
+" dacă este prezentă. Starea de ieșire a întregii construcții este starea de\n"
+" ieșire a ultimei comenzi executate sau zero dacă nicio condiție nu a fost\n"
+" evaluată ca adevărată.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimei comenzi executate."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help while», din «bash»;
+# «bash -c "help while"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"Execută comenzi atâta timp cât un test reușește.\n"
+" \n"
+" Expandează și execută COMENZI-2 atâta timp cât comanda finală din\n"
+" COMENZI are o stare de ieșire zero.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimei comenzi executate."
-#: builtins.c:1659
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help until», din «bash»;
+# «bash -c "help until"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"Execută comenzi atâta timp cât un test nu reușește.\n"
+" \n"
+" Expandează și execută COMENZI-2 atâta timp cât comanda finală din\n"
+" COMENZI are o stare de ieșire diferită de zero.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimei comenzi executate."
-#: builtins.c:1671
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help coproc», din «bash»;
+# «bash -c "help coproc"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3940,22 +5531,51 @@ msgid ""
" Exit Status:\n"
" The coproc command returns an exit status of 0."
msgstr ""
+"Creează un coproces numit NUME.\n"
+" \n"
+" Execută COMANDA în mod asincron, cu ieșirea standard și intrarea standard a\n"
+" comenzii conectate printr-o conductă la descriptorii de fișiere alocați\n"
+" indicilor 0 și 1 ai unei variabile matrice NUME din shell-ul de execuție.\n"
+" NUMELE implicit este „COPROCâ€.\n"
+" \n"
+" Starea de ieșire:\n"
+" Comanda «coproc» returnează o stare de ieșire de 0."
-#: builtins.c:1685
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help function», din «bash»;
+# «bash -c "help function"», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
" Exit Status:\n"
" Returns success unless NAME is readonly."
msgstr ""
+"Definește funcția shell.\n"
+" \n"
+" Creează o funcție de shell numită NUME. Când se invocă ca o comandă simplă,\n"
+" NUME rulează COMENZI în contextul shell-ului apelant. Când NUME este \n"
+" invocat, argumentele sunt transmise funcției ca $1...$n, iar numele\n"
+" funcției este în $FUNCNAME.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care NUME este protejat la scriere"
-#: builtins.c:1699
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help -m {», din «bash»;
+# «bash -c "help -m {», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -3965,8 +5585,15 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"Grupează comenzile ca o unitate.\n"
+" \n"
+" Rulează un set de comenzi dintr-un grup. Aceasta este o modalitate\n"
+" de a redirecționa un întreg set de comenzi.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea ultimei comenzi executate."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -3979,8 +5606,24 @@ msgid ""
" Exit Status:\n"
" Returns the status of the resumed job."
msgstr ""
+"Reia lucrarea în prim-plan.\n"
+" \n"
+" Echivalent cu argumentul JOB_SPEC al comenzii «fg». Reia o lucrare\n"
+" oprită sau în fundal. JOB_SPEC poate specifica fie un nume de lucrare,\n"
+" fie un număr de lucrare. JOB_SPEC urmat de un „&†plasează lucrarea\n"
+" în fundal, ca și cum specificația lucrării ar fi fost furnizată ca argument\n"
+" pentru «bg».\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează starea lucrării reluate."
-#: builtins.c:1726
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help '(('», din «bash»;
+# «bash -c "help '(('», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -3990,17 +5633,27 @@ msgid ""
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
+"Evaluează expresia aritmetică.\n"
+" \n"
+" EXPRESIA este evaluată conform regulilor de evaluare aritmetică.\n"
+" Echivalent cu „let \"EXPRESIA\"â€.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează 1 dacă EXPRESIA este evaluată la 0; în caz contrar, returnează 0."
-#: builtins.c:1738
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help '[['», din «bash»;
+# «bash -c "help '[['», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the `test' builtin, and may be combined using the following "
-"operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries used\n"
+" by the `test' builtin, and may be combined using the following operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -4018,8 +5671,37 @@ msgid ""
" Exit Status:\n"
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-
-#: builtins.c:1764
+"Execută comanda condițională.\n"
+" \n"
+" Returnează o stare de 0 sau 1, în funcție de evaluarea expresiei condiționale\n"
+" EXPRESIA. Expresiile sunt compuse din aceleași elemente primare folosite de\n"
+" comanda INTERNĂ «test» și pot fi combinate folosind următorii operatori:\n"
+" \n"
+" ( EXPRESIA )\tReturnează valoarea EXPRESIEI\n"
+" ! EXPRESIA\tAdevărat dacă EXPRESIA este falsă; altfel fals\n"
+" EXPR1 && EXPR2\tAdevărat dacă atât EXPR1 cât și EXPR2 sunt adevărate;\n"
+" \t\t\taltfel fals\n"
+" EXPR1 || EXPR2\tAdevărat dacă fie EXPR1, fie EXPR2 este adevărată;\n"
+" \t\t\taltfel fals\n"
+" \n"
+" Când se utilizează operatorii „==†și „!=â€, È™irul din dreapta operatorului\n"
+" este utilizat ca model și se realizează potrivirea modelului.\n"
+" Când se utilizează operatorul „=~â€, È™irul din dreapta operatorului se\n"
+" potrivește ca expresie regulată.\n"
+" \n"
+" Operatorii „&&†și „||†nu evaluează EXPR2 dacă EXPR1 este suficientă pentru\n"
+" a determina valoarea expresiei.\n"
+" \n"
+" Starea de ieșire:\n"
+" 0 sau 1, în funcție de valoarea EXPRESIEI."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help variables», din «bash»;
+# «bash -c "help variables», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4072,8 +5754,67 @@ msgid ""
" HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-
-#: builtins.c:1821
+"Numele și utilizarea variabilelor shell comune.\n"
+" \n"
+" BASH_VERSION\n"
+" \tInformații despre versiunea acestui Bash.\n"
+" CDPATH\tO listă de directoare separate prin două puncte\n"
+" \t\tpentru a căuta directoare date ca argumente pentru «cd».\n"
+" GLOBIGNORE\tO listă de modele, separate prin două puncte, care descriu nume\n"
+" \t\tde fișiere care trebuie ignorate de extinderea numelui de cale.\n"
+" HISTFILE\tNumele fișierului în care este stocat istoricul comenzilor.\n"
+" HISTFILESIZE\n"
+" \tNumărul maxim de linii pe care acest fișier le poate conține.\n"
+" HISTSIZE\tNumărul maxim de linii de istoric pe care le poate accesa un\n"
+" \t\tshell care rulează.\n"
+" HOME\tCalea completă către directorul dumneavoastră de conectare.\n"
+" HOSTNAME\tNumele gazdei curente.\n"
+" HOSTTYPE\tTipul de CPU pe care rulează această versiune de Bash.\n"
+" IGNOREEOF\tControlează acÈ›iunea shell-ului la primirea unui caracter „EOFâ€\n"
+" \t\tca unică intrare. Dacă este definită, atunci valoarea acesteia\n"
+" \t\teste numărul de caractere „EOF†care pot fi văzute într-un rând\n"
+" \t\tpe o linie goală înainte ca shell-ul să iasă (implicit 10).\n"
+" \t\tCând nu este definită, „EOF†înseamnă sfârșitul intrării.\n"
+" MACHTYPE\tUn șir care descrie sistemul curent pe care rulează Bash.\n"
+" MAILCHECK\tCât de des, în secunde, verifică Bash dacă există e-mailuri noi.\n"
+" MAILPATH\tO listă de nume de fișiere, separate prin două puncte, pe care\n"
+" \t\tBash le verifică pentru e-mailuri noi.\n"
+" OSTYPE\tVersiunea de Unix pe care rulează această versiune de Bash.\n"
+" PATH\tO listă de directoare separate prin două puncte în care se caută,\n"
+" \t\tatunci când se caută comenzi.\n"
+" PROMPT_COMMAND\n"
+" \tO comandă care trebuie executată înainte de afișarea\n"
+" \t\tfiecărui prompt primar.\n"
+" PS1\t\tȘirul de prompt primar.\n"
+" PS2\t\tȘirul de prompt secundar.\n"
+" PWD\t\tCalea completă a directorului curent.\n"
+" SHELLOPTS\tO listă separată de două puncte, de opțiuni de shell activate.\n"
+" TERM\tNumele tipului actual de terminal.\n"
+" TIMEFORMAT\tFormatul de ieșire pentru statisticile de timp afișat de\n"
+" \t\tcuvântul rezervat „timeâ€.\n"
+" auto_resume\tNon-null înseamnă că un cuvânt de comandă care apare singur pe o\n"
+" \t\tlinie este căutat mai întâi în lista de lucrări opriteîn prezent.\n"
+" \t\tDacă se găsește acolo, lucrarea este în prim plan. O valoare\n"
+" \t\t„exact†înseamnă că cuvântul de comandă trebuie să se potrivească\n"
+" \t\texact cu o comandă din lista de lucrări oprite. O valoare „sub-\n"
+" \t\tstring†înseamnă că cuvântul de comandă trebuie să se potrivească\n"
+" \t\tcu un subșir al lucrării. Orice altă valoare înseamnă că\n"
+" \t\tcomanda trebuie să fie un prefix al unei lucrări oprite.\n"
+" histchars\tCaractere care controlează extinderea istoricului și\n"
+" \t\tînlocuirea rapidă. Primul caracter este caracterul\n"
+" \t\tde înlocuire a istoricului, de obicei „!â€. Al doilea este\n"
+" \t\tcaracterul „înlocuire rapidăâ€, de obicei „^â€. Al treilea\n"
+" \t\teste caracterul „comentare istoricâ€, de obicei „#â€.\n"
+" HISTIGNORE\tO listă de modele separate prin două puncte, utilizată pentru a\n"
+" \t\tdecide ce comenzi ar trebui salvate în lista istoricului.\n"
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help pushd», din «bash»;
+# «bash -c "help pushd», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4103,8 +5844,41 @@ msgid ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
msgstr ""
+"Adaugă directoare la stivă.\n"
+" \n"
+" Adaugă un director în partea de sus a stivei de directoare sau \n"
+" rotește stiva, făcând din partea de sus a stivei directorul de lucru\n"
+" curent. Fără argumente, interschimbă primele două directoare.\n"
+" \n"
+" Opțiuni:\n"
+" -n\tSuprimă schimbarea normală a directorului atunci când se adaugă\n"
+" \t\tdirectoare la stivă, astfel încât numai stiva este manipulată.\n"
+" \n"
+" Argumente:\n"
+" +N\tRotește stiva astfel încât al N-lea director (numărând \n"
+" \t\tdin stânga listei afișate de «dirs», începând cu zero) să fie\n"
+" \t\tîn partea de sus.\n"
+" \n"
+" -N\tRotește stiva astfel încât al N-lea director (numărând \n"
+" \t\tdin dreapta listei afișate de «dirs», începând cu zero) să fie\n"
+" \t\tîn partea de sus.\n"
+" \n"
+" dir\tAdaugă DIR la stiva de directoare din partea de sus, făcându-l\n"
+" \t\tnoul director de lucru curent.\n"
+" \n"
+" Comanda internă «dirs» afișează stiva de directoare.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este furnizat un argument\n"
+" nevalid sau dacă schimbarea directorului eșuează."
-#: builtins.c:1855
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help popd», din «bash»;
+# «bash -c "help popd», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4130,8 +5904,37 @@ msgid ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
msgstr ""
+"Elimină directoare din stivă.\n"
+" \n"
+" Elimină intrările din stiva de directoare. Fără argumente, elimină\n"
+" directorul de sus din stivă, și trece la noul director de sus.\n"
+" \n"
+" Opțiuni:\n"
+" -n\tSuprimă schimbarea normală a directorului atunci când se elimină\n"
+" \t\tdirectoare la stivă, astfel încât numai stiva este manipulată.\n"
+" \n"
+" Argumente:\n"
+" +N\tElimină intrarea a N-a numărând din stânga listei afișate\n"
+" \t\tde «dirs», începând cu zero. De exemplu: «popd +0»\n"
+" \t\telimină primul director, «popd +1» al doilea.\n"
+" \n"
+" -N\tElimină intrarea a N-a numărând din dreapta listei afișate\n"
+" \t\tde «dirs», începând cu zero. De exemplu: «popd -0»\n"
+" \t\telimină ultimul director, «popd -1» penultimul.\n"
+" \n"
+" Comanda internă «dirs» afișează stiva de directoare.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este furnizat un argument\n"
+" nevalid sau dacă schimbarea directorului eșuează."
-#: builtins.c:1885
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help dirs», din «bash»;
+# «bash -c "help dirs», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -4159,8 +5962,40 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-
-#: builtins.c:1916
+"Afișează stiva de directoare.\n"
+" \n"
+" Afișează lista directoarelor memorate în prezent. Directoarele\n"
+" sunt adăugate la această listă cu comanda «pushd» și eliminate\n"
+" cu comanda «popd».\n"
+" \n"
+" Opțiuni:\n"
+" -c\tcurăță stiva de directoare ștergând toate elementele\n"
+" -l\tnu afișează versiuni de directoare cu prefix „~†în raport \n"
+" \t\tcu directorul dumneavoastră «acasă»\n"
+" -p\tafișează stiva de directoare cu o intrare pe linie\n"
+" -v\tafișează stiva de directoare cu o intrare pe linie, prefixată\n"
+" \t\tcu poziția sa în stivă\n"
+" \n"
+" Argumente:\n"
+" +N\tAfișează a N-a intrare numărând din stânga listei afișate\n"
+" \t\tde «dirs» atunci când este invocată fără opțiuni, începând\n"
+" \t\tcu zero.\n"
+" \n"
+" -N\tAfișează a N-a intrare numărând din dreapta listei afișate\n"
+" \t\tde «dirs» atunci când este invocată fără opțiuni, începând\n"
+" \t\tcu zero.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n"
+" nevalidă sau apare o eroare."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help shopt», din «bash»;
+# «bash -c "help shopt», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4179,8 +6014,32 @@ msgid ""
" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
" given or OPTNAME is disabled."
msgstr ""
-
-#: builtins.c:1937
+"Activează sau dezactivează opțiunile de shell.\n"
+" \n"
+" Schimbă configurarea fiecărei opțiuni de shell NUME_OPȚIUNE. Fără\n"
+" niciun argument de opțiune, listează fiecare NUME_OPȚIUNE furnizat, \n"
+" sau toate opțiunile de shell dacă nu sunt date NUME_OPȚIUNE, cu o\n"
+" indicație dacă fiecare este sau nu definită.\n"
+" \n"
+" Opțiuni:\n"
+" -o\trestricționează NUME_OPȚIUNE la cele definite pentru a fi\n"
+" \tutilizate cu «set -o»\n"
+" -p\tafișează fiecare opțiune de shell cu o indicație a stării acesteia\n"
+" -q\tsuprimă ieșirea\n"
+" -s\tactivează (definește) fiecare NUME_OPȚIUNE\n"
+" -u\tdezactivează (șterge) fiecare NUME_OPȚIUNE\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes dacă NUME_OPȚIUNE este activată; eșuează dacă\n"
+" este dată o opțiune nevalidă sau NUME_OPȚIUNE este dezactivată."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help printf», din «bash»;
+# «bash -c "help printf», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4188,45 +6047,76 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
+" FORMAT is a character string which contains three types of objects: plain\n"
+" characters, which are simply copied to standard output; character escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
+" format specifications, each of which causes printing of the next successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in "
-"printf(1),\n"
+" In addition to the standard format specifications described in printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a "
-"format\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as "
-"appropriate,\n"
+" specifications behave as if a zero value or null string, as appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
+" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
-
-#: builtins.c:1971
+"Formatează și imprimă ARGUMENTELE sub controlul FORMATului.\n"
+" \n"
+" Opțiuni:\n"
+" -v var\tasignează ieșirea variabilei shell VAR, în loc să o\n"
+" \t\tafișeze la ieșirea standard\n"
+" \n"
+" FORMAT este un șir de caractere care conține trei tipuri de obiecte: \n"
+" caractere simple, care sunt pur și simplu copiate la ieșirea standard; \n"
+" secvențe de eludare de caractere, care sunt convertite și copiate la \n"
+" ieșirea standard; și specificații de format, fiecare dintre acestea \n"
+" determinând imprimarea următorului argument succesiv.\n"
+" \n"
+" În plus față de specificațiile de format standard descrise în printf(1),\n"
+" «printf» interpretează:\n"
+" \n"
+" %b\texpandează secvențele de eludare de bară inversată,\n"
+" \tîn argumentul corespunzător\n"
+" %q\tcitează argumentul într-un mod care poate fi reutilizat\n"
+" \tca intrare shell\n"
+" %Q\tprecum %q, dar aplică orice precizie argumentului necitat\n"
+" \t\tînainte de al cita\n"
+" %(fmt)T\tafișează șirul dată-oră rezultat din utilizarea FMT,\n"
+" \tca șir de format pentru strftime(3)\n"
+" \n"
+" Formatul este reutilizat după cum este necesar pentru a consuma toate\n"
+" argumentele. Dacă există mai puține argumente decât necesită formatul,\n"
+" specificațiile de format suplimentare se comportă ca și cum ar fi fost\n"
+" furnizată o valoare zero sau un șir nul, după caz.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau apare o eroare de scriere sau de atribuire."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help complete», din «bash»;
+# «bash -c "help complete», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
+" For each NAME, specify how arguments are to be completed. If no options\n"
+" are supplied, existing completion specifications are printed in a way that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -4241,38 +6131,79 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
-"supplied,\n"
-" the -D option takes precedence over -E, and both take precedence over -"
-"I.\n"
+" uppercase-letter options are listed above. If multiple options are supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -I.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-
-#: builtins.c:2001
+"Specifică modul în care argumentele vor fi completate de Readline.\n"
+" \n"
+" Pentru fiecare NUME, specifică cum vor fi completate argumentele. Dacă\n"
+" nu sunt furnizate opțiuni, specificațiile de completare existente sunt\n"
+" imprimate într-un mod care să permită reutilizarea lor ca intrare\n"
+" \n"
+" Opțiuni:\n"
+" -p\tafișează specificațiile de completare existente într-un format\n"
+" \t\treutilizabil\n"
+" -r\telimină o specificație de completare pentru fiecare NUME sau,\n"
+" \t\tdacă nu sunt furnizate NUME, toate specificațiile de completare\n"
+" -D\taplicați completările și acțiunile ca implicite pentru comenzi\n"
+" \t\tfără nicio completare specifică definită\n"
+" -E\taplică completările și acțiunile pentru comenzile „goale†--\n"
+" \t\tcând se încearcă completarea într-o linie goală\n"
+" -I\taplică completările și acțiunile la cuvântul inițial (de obicei\n"
+" \t\tcomanda).\n"
+" \n"
+" Când se încearcă completarea, acțiunile sunt aplicate în ordinea în care\n"
+" opțiunile cu litere mari sunt listate mai sus. Dacă sunt furnizate mai multe\n"
+" opțiuni, opțiunea „-D†are prioritate față de „-E†și ambele au prioritate\n"
+" față de opÈ›iunea „-Iâ€.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n"
+" nevalidă sau apare o eroare."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help compgen», din «bash»;
+# «bash -c "help compgen», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
+" completions. If the optional WORD argument is supplied, matches against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
+"Afișează posibilele completări în funcție de opțiuni.\n"
+" \n"
+" Aceasta este destinată să fie utilizată dintr-o funcție shell care generează\n"
+" posibile completări. Dacă este furnizat argumentul opțional CUVÂNT, se\n"
+" generează potriviri cu CUVÂNT.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este furnizată o opțiune\n"
+" nevalidă sau apare o eroare."
-#: builtins.c:2016
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help compopt», din «bash»;
+# «bash -c "help compopt», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, print\n"
+" the completion options for each NAME or the current completion specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -4294,27 +6225,55 @@ msgid ""
" Returns success unless an invalid option is supplied or NAME does not\n"
" have a completion specification defined."
msgstr ""
-
-#: builtins.c:2047
+"Modifică sau afișează opțiunile de completare.\n"
+" \n"
+" Modifică opțiunile de completare pentru fiecare NUME sau, dacă nu sunt \n"
+" furnizate NUME, completarea aflată în curs de executare. Dacă nu sunt \n"
+" date OPȚIUNI, afișează opțiunile de completare pentru fiecare NUME sau \n"
+" specificația de completare curentă.\n"
+" \n"
+" Opțiuni:\n"
+" \t-o opțiune\n"
+" \t\tStabilește opțiunea de completare OPȚIUNE pentru fiecare NUME\n"
+" \t-D\tSchimbă opÈ›iunile pentru completarea comenzii „impliciteâ€.\n"
+" \t-E\tSchimbă opÈ›iunile pentru completarea comenzii „goaleâ€.\n"
+" \t-I\tSchimbă opțiunile de completare a cuvântului inițial\n"
+" \n"
+" Utilizarea lui „+o†în loc de „-o†dezactivează opțiunea specificată.\n"
+" \n"
+" Argumente:\n"
+" \n"
+" Fiecare NUME se referă la o comandă pentru care o specificație de completare\n"
+" trebuie să fi fost definită anterior folosind comanda internă «complete». \n"
+" Dacă nu sunt furnizate NUME, «compopt» trebuie să fie apelată de o funcție \n"
+" care generează completări în acest moment și opțiunile pentru acest \n"
+" generator de completare care se execută acum, sunt modificate.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este furnizată o opțiune \n"
+" nevalidă sau NUME nu are o specificație de completare definită."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help mapfile», din «bash»;
+# «bash -c "help mapfile», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
+" Read lines from the standard input into the indexed array variable ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard "
-"input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -4327,2421 +6286,65 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
-
-#: builtins.c:2083
+"Citește linii de la intrarea standard într-o variabilă matrice indexată.\n"
+" \n"
+" Citește linii de la intrarea standard în variabila matrice indexată MATRICE,\n"
+" sau din descriptorul de fiÈ™ier „FD†dacă este furnizată opÈ›iunea „-uâ€.\n"
+" Variabila MAPFILE este MATRICEA implicită.\n"
+" \n"
+" Opțiuni:\n"
+" -d delim Utilizează DELIM pentru a termina liniile, în loc de linie nouă\n"
+" -n număr Copiază cel mult NUMĂRul de rânduri. Dacă NUMĂR este 0,\n"
+" toate liniile sunt copiate\n"
+" -O origin Începe alocarea către MATRICE la indexul ORIGIN. Indicele\n"
+" implicit este 0\n"
+" -s count Renunță la primele COUNT rânduri citite\n"
+" -t Elimină un DELIM final din fiecare linie citită (implicit,\n"
+" linie nouă)\n"
+" -u fd Citește linii din descriptorul de fișier „FD†în loc de la\n"
+" intrarea standard\n"
+" -C apelare\n"
+" Evaluează APELARE de fiecare dată când sunt citite linii CANTITATE\n"
+" -c cantitate\n"
+" Specifică numărul de linii citite între fiecare apel către APELARE\n"
+" \n"
+" Argumente:\n"
+" MATRICE\tNume variabilă matrice de utilizat pentru datele fișierului\n"
+" \n"
+" Dacă „-C†este furnizată fără „-câ€, cantitatea implicită este 5000. Când se\n"
+" evaluează APELARE, i se furnizează indexul următorului element din matrice\n"
+" care urmează să fie atribuit și linia care urmează să fie atribuită\n"
+" acelui element ca argumente suplimentare.\n"
+" \n"
+" Dacă nu este furnizat cu o origine explicită, «mapfile» va șterge MATRICE\n"
+" înainte de a-o utiliza pentru asignare.\n"
+" \n"
+" Starea de ieșire:\n"
+" Returnează succes, cu excepția cazului în care este dată o opțiune nevalidă\n"
+" sau MATRICE este protejată la scriere sau nu este o matrice indexată."
+
+# R-GC, scrie:
+# acest mesaj, poate să fie vizualizat, rulînd
+# comanda:
+# «help readarray», din «bash»;
+# «bash -c "help array», din «bash», sau
+# dintr-un shell, diferit de «bash».
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for `mapfile'."
msgstr ""
+"Citește linii dintr-un fișier într-o variabilă de tip matrice.\n"
+" \n"
+" Un sinonim pentru «mapfile»."
-#~ msgid ""
-#~ "Returns the context of the current subroutine call.\n"
-#~ " \n"
-#~ " Without EXPR, returns "
-#~ msgstr ""
-#~ "Returnează contextul apelului subrutină curent.\n"
-#~ " \n"
-#~ " Fără EXPR, returnează "
-
-#~ msgid "Unknown Signal #"
-#~ msgstr "Semnal Necunoscut #"
-
-#~ msgid "Missing `}'"
-#~ msgstr "`}' lipsă"
-
-#~ msgid "brace_expand> "
-#~ msgstr "brace_expand> "
-
-#~ msgid "Attempt to free unknown command type `%d'.\n"
-#~ msgstr "Încercare de eliberare(free) tip comandă necunoscută `%d'.\n"
-
-#~ msgid "Report this to %s\n"
-#~ msgstr "Raportaţi asta la %s\n"
-
-#~ msgid "Stopping myself..."
-#~ msgstr "Mă opresc..."
-
-#~ msgid "Tell %s to fix this someday.\n"
-#~ msgstr "Spuneţi lui %s să repare asta într-o bun zi.\n"
-
-#~ msgid "execute_command: bad command type `%d'"
-#~ msgstr "execute_command: tip de comandă greşită `%d'"
-
-#~ msgid "real\t"
-#~ msgstr "real\t"
-
-#~ msgid "user\t"
-#~ msgstr "user\t"
-
-#~ msgid "sys\t"
-#~ msgstr "sis\t"
-
-#~ msgid ""
-#~ "real\t0m0.00s\n"
-#~ "user\t0m0.00s\n"
-#~ "sys\t0m0.00s\n"
-#~ msgstr ""
-#~ "real\t0m0.00s\n"
-#~ "user\t0m0.00s\n"
-#~ "sis\t0m0.00s\n"
-
-#~ msgid "cannot duplicate fd %d to fd 1: %s"
-#~ msgstr "nu se poate duplica fd %d în fd 1: %s"
-
-#~ msgid "%s: output redirection restricted"
-#~ msgstr "%s redirectare spre output limitată"
-
-#~ msgid "Out of memory!"
-#~ msgstr "Memorie plină!"
-
-#~ msgid "You have already added item `%s'\n"
-#~ msgstr "Aţi adăugat deja elementul `%s'\n"
-
-#~ msgid "You have entered %d (%d) items. The distribution is:\n"
-#~ msgstr "Aţi introdus %d (%d) elemente. Distribuţia este:\n"
-
-#~ msgid "slot %3d: "
-#~ msgstr "slot %3d: "
-
-#~ msgid "<unknown>"
-#~ msgstr "<necunoscut>"
-
-#~ msgid "%s: bg background job?"
-#~ msgstr "%s: bg job din fundal?"
-
-#~ msgid ""
-#~ "Redirection instruction from yyparse () '%d' is\n"
-#~ "out of range in make_redirection ()."
-#~ msgstr ""
-#~ "Redirectare instrucţiune din yyparse () '%d' is\n"
-#~ "în afara intervalului în make_redirection ()."
-
-#~ msgid "clean_simple_command () got a command with type %d."
-#~ msgstr "clean_simple_command () a primit o comandă de tipul %d."
-
-#~ msgid "got errno %d while waiting for %d"
-#~ msgstr "s-a primit errno %d în aşteptarea lui %d"
-
-#~ msgid "syntax error near unexpected token `%c'"
-#~ msgstr "eroare de sintaxă neaşteptată lângă `%c'"
-
-#~ msgid "print_command: bad command type `%d'"
-#~ msgstr "print_command: tip comandă greşit `%d'"
-
-#~ msgid "cprintf: bad `%%' argument (%c)"
-#~ msgstr "cprintf: parametru `%%' invalid (%c)"
-
-#~ msgid "option `%s' requires an argument"
-#~ msgstr "opţiunea `%s' necesită un parametru"
-
-#~ msgid "%s: unrecognized option"
-#~ msgstr "%s: opţiune necunoscută"
-
-#~ msgid "`-c' requires an argument"
-#~ msgstr "`-c' necesită un parametru"
-
-#~ msgid "%s: cannot execute directories"
-#~ msgstr "%s: directoarele nu se pot executa"
-
-#~ msgid "Bad code in sig.c: sigprocmask"
-#~ msgstr "Cod invalid în sig.c: sigprocmask"
-
-#~ msgid "can't make pipes for process substitution: %s"
-#~ msgstr "nu pot face legături (pipes) pentru substituţia procesului: %s"
-
-#~ msgid "reading"
-#~ msgstr "în citire"
-
-#~ msgid "writing"
-#~ msgstr "în scriere"
-
-#~ msgid "process substitution"
-#~ msgstr "substituire de proces"
-
-#~ msgid "command substitution"
-#~ msgstr "substituire de comenzi"
-
-#~ msgid "Can't reopen pipe to command substitution (fd %d): %s"
-#~ msgstr ""
-#~ "Nu se poate redeschide legătura (pipe) către substituţia de comenzi (fd "
-#~ "%d): %s"
-
-#~ msgid "$%c: unbound variable"
-#~ msgstr "$%c: variabilă fără limită"
-
-#~ msgid "%s: bad arithmetic substitution"
-#~ msgstr "%s: substituţie aritmetică greşită"
-
-#~ msgid "-%s: binary operator expected"
-#~ msgstr "-%s: se aşteaptă operator binar"
-
-#~ msgid "%s[%s: bad subscript"
-#~ msgstr "%s[%s: subsctipţie invalidă"
-
-#~ msgid "[%s: bad subscript"
-#~ msgstr "[%s: subscripţie invalidă"
-
-#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: nu pot realoca %lu octeţi (%lu octeţi alocaţi)"
-
-#~ msgid "digits occur in two different argv-elements.\n"
-#~ msgstr "se regăsesc digiţi în două elemente argv diferite.\n"
-
-#~ msgid "option %c\n"
-#~ msgstr "opţiunea %c\n"
-
-#~ msgid "option a\n"
-#~ msgstr "opţiunea a\n"
-
-#~ msgid "option b\n"
-#~ msgstr "opţiunea b\n"
-
-#~ msgid "option c with value `%s'\n"
-#~ msgstr "opţiunea c cu valoarea '%s'\n"
-
-#~ msgid "?? sh_getopt returned character code 0%o ??\n"
-#~ msgstr "?? sh_getopt a returnat codul de caracter 0%o ??\n"
-
-#~ msgid "non-option ARGV-elements: "
-#~ msgstr "elemente ARGV fără opţiuni: "
-
-#~ msgid "%s: Unknown flag %s.\n"
-#~ msgstr "%s: Marcaj (flag) necunoscut %s.\n"
-
-#~ msgid "Unknown directive `%s'"
-#~ msgstr "Directivă necunoscută '%s'"
-
-#~ msgid "%s must be inside of a $BUILTIN block"
-#~ msgstr "%s trebuie sa fie înăuntrul unui bloc $BUILTIN"
-
-#~ msgid "%s found before $END"
-#~ msgstr "s-a găsit %s înainte de $END"
-
-#~ msgid "%s already has a function (%s)"
-#~ msgstr "%s avea deja o funcţie (%s)"
-
-#~ msgid "%s already had a docname (%s)"
-#~ msgstr "%s avea deja un docname (%s)"
-
-#~ msgid "%s already has short documentation (%s)"
-#~ msgstr "%s are deja documentaţie scurtă (%s)"
-
-#~ msgid "%s already has a %s definition"
-#~ msgstr "%s are deja o definiţie %s"
-
-#~ msgid "mkbuiltins: Out of virtual memory!\n"
-#~ msgstr "mkbuiltins: Memorie virtuală plină!\n"
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "read [-r] [-p prompt] [-a array] [-e] [name ...]"
-#~ msgstr "read [-r] [-p prompt] [-a interval] [-e] [nume ...]"
-
-#~ msgid "times"
-#~ msgstr "ori"
-
-#~ msgid "%[DIGITS | WORD] [&]"
-#~ msgstr "%[DIGIŢI | CUVÂNT] [&]"
-
-#~ msgid "variables - Some variable names and meanings"
-#~ msgstr "variabile - Câteva nume de variabile şi ce înseamnă"
-
-#~ msgid "`alias' with no arguments or with the -p option prints the list"
-#~ msgstr "`alias' fără parametri sau cu opţiunea -p printează lista"
-
-#~ msgid "of aliases in the form alias NAME=VALUE on standard output."
-#~ msgstr "aliasurilor în forma alias NUME=VALOARE la ieşirea standard"
-
-#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given."
-#~ msgstr ""
-#~ "În caz contrar, aliasul este definit pentru fiecare NUME a cărui VALOARE "
-#~ "este dată."
-
-#~ msgid "A trailing space in VALUE causes the next word to be checked for"
-#~ msgstr ""
-#~ "Un spaţiu la sfârşit în VALOARE va face ca următorul cuvânt sa fie "
-#~ "interogat de"
-
-#~ msgid "alias substitution when the alias is expanded. Alias returns"
-#~ msgstr "substituţii de alias când aliasul este extins. Aliasul returnează"
-
-#~ msgid "true unless a NAME is given for which no alias has been defined."
-#~ msgstr ""
-#~ "adevărat în afară de cazul în care NUME nu este dat şi pentru care nu a "
-#~ "fost definit nici un alias."
-
-#~ msgid ""
-#~ "Remove NAMEs from the list of defined aliases. If the -a option is given,"
-#~ msgstr ""
-#~ "Elimină NUME din lista de aliasuri definite. Dacă este dată opţiunea -a,"
-
-#~ msgid "then remove all alias definitions."
-#~ msgstr "atunci şterge toate definiţiile aliasurilor."
-
-#~ msgid "Bind a key sequence to a Readline function, or to a macro. The"
-#~ msgstr ""
-#~ "Leagă (bind) o secvenţă de taste de o funcţie Readline, sau de un macro. "
-
-#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be"
-#~ msgstr ""
-#~ "Sintaxa este echivalentă cu cea întâlnită în ~/.inputrc, dar trebuie"
-
-#~ msgid ""
-#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'."
-#~ msgstr ""
-#~ "trimisă parametru singular: bind '\"\\C-x\\C-r\": re-read-init-file'."
-
-#~ msgid "Arguments we accept:"
-#~ msgstr "Parametri acceptaţi:"
-
-#~ msgid ""
-#~ " -m keymap Use `keymap' as the keymap for the duration of this"
-#~ msgstr ""
-#~ " -m keymap FoloseÅŸte `keymap' ca ÅŸi mapare de taste pentru "
-#~ "durata"
-
-#~ msgid " command. Acceptable keymap names are emacs,"
-#~ msgstr ""
-#~ " acestei comenzi. Nume acceptate de keymaps sunt "
-#~ "emacs,"
-
-#~ msgid ""
-#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
-#~ msgstr ""
-#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
-
-#~ msgid " vi-command, and vi-insert."
-#~ msgstr " vi-command, ÅŸi vi-insert."
-
-#~ msgid " -l List names of functions."
-#~ msgstr " -l Listează numele funcţiilor."
-
-#~ msgid " -P List function names and bindings."
-#~ msgstr ""
-#~ " -P Listează numele funcţiilor şi legăturile (bindings)."
-
-#~ msgid ""
-#~ " -p List functions and bindings in a form that can be"
-#~ msgstr ""
-#~ " -p Listează funcţiile şi legăturile (bindings) într-o "
-#~ "formă care"
-
-#~ msgid " reused as input."
-#~ msgstr " poate fi refolosită ca intrare(input)."
-
-#~ msgid " -r keyseq Remove the binding for KEYSEQ."
-#~ msgstr " -r keyseq Elimină legăturile(bindings) pentru KEYSEQ."
-
-#~ msgid " -f filename Read key bindings from FILENAME."
-#~ msgstr ""
-#~ " -f nume_fişier Citeşte legăturile (bindings) din NUME_FIŞIER"
-
-#~ msgid ""
-#~ " -q function-name Query about which keys invoke the named function."
-#~ msgstr " -q nume_funcţie Verifică tastele care invocă funcţia numită."
-
-#~ msgid " -V List variable names and values"
-#~ msgstr " -V Listează numele variabilelor şi valorile"
-
-#~ msgid ""
-#~ " -v List variable names and values in a form that can"
-#~ msgstr ""
-#~ " -v Listează numele variabilelor şi valorile într-o "
-#~ "formă care poate"
-
-#~ msgid " be reused as input."
-#~ msgstr " fi reutilizată ca date de intrare."
-
-#~ msgid ""
-#~ " -S List key sequences that invoke macros and their "
-#~ "values"
-#~ msgstr ""
-#~ " -S Listează secvenţele de taste care invocă macrourile "
-#~ "ÅŸi valorile lor"
-
-#~ msgid ""
-#~ " -s List key sequences that invoke macros and their "
-#~ "values in"
-#~ msgstr ""
-#~ " -s Listează secvenţele de taste care invocă macrourile "
-#~ "şi valorile lorîntr-o"
-
-#~ msgid " a form that can be reused as input."
-#~ msgstr ""
-#~ " formă care poate fi reutilizată ca date de intrare."
-
-#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,"
-#~ msgstr ""
-#~ "IeÅŸire dintr-un ciclu FOR, WHILE sau UNTIL. Daca N este specificat,"
-
-#~ msgid "break N levels."
-#~ msgstr "întrerupe N nivele"
-
-#~ msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop."
-#~ msgstr ""
-#~ "Continuă urmatoarea iteraţie din ciclul închis FOR, WHILE sau UNTIL."
-
-#~ msgid "If N is specified, resume at the N-th enclosing loop."
-#~ msgstr "Dacă N este specificat, continuă al N-ulea ciclu închis."
-
-#~ msgid "Run a shell builtin. This is useful when you wish to rename a"
-#~ msgstr ""
-#~ "Rulează un shell intern. Aceasta este folositoare când doriţi sa "
-#~ "redenumiţi "
-
-#~ msgid "shell builtin to be a function, but need the functionality of the"
-#~ msgstr "un shell intern drept funcţie, dar aveţi nevoie de funcţionalitatea"
-
-#~ msgid "builtin within the function itself."
-#~ msgstr "funcţiei interne de asemenea."
-
-#~ msgid "Change the current directory to DIR. The variable $HOME is the"
-#~ msgstr "Schimbă directorul curent cu DIR. Variabila $HOME este"
-
-#~ msgid "default DIR. The variable $CDPATH defines the search path for"
-#~ msgstr "DIR implicit. Variabila $CDPATH defineşte calea de căutare pentru"
-
-#~ msgid "the directory containing DIR. Alternative directory names in CDPATH"
-#~ msgstr ""
-#~ "directorul care conţine DIR. Numele de directoare alternative în CDPATH"
-
-#~ msgid "are separated by a colon (:). A null directory name is the same as"
-#~ msgstr ""
-#~ "sunt separate de două puncte (:). Un nume de director nul reprezintă "
-#~ "referire la"
-
-#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/),"
-#~ msgstr "directorul curent, i.e. `.'. Dacă DIR începe cu un slash (/),"
-
-#~ msgid "then $CDPATH is not used. If the directory is not found, and the"
-#~ msgstr "atunci $CDPATH nu este folosită. Dacă directorul nu este găsit, şi"
-
-#~ msgid "shell option `cdable_vars' is set, then try the word as a variable"
-#~ msgstr ""
-#~ "opţiunea de shell `cdable_vars' este setată, atunci cuvântul este un nume"
-
-#~ msgid "name. If that variable has a value, then cd to the value of that"
-#~ msgstr ""
-#~ "de variabilă. Dacă variabila are o valoare, se va face cd pe valoarea "
-#~ "acelei"
-
-#~ msgid ""
-#~ "variable. The -P option says to use the physical directory structure"
-#~ msgstr ""
-#~ "variabile. Opţiunea -P trimite la folosirea structurii fizice de "
-#~ "directoare"
-
-#~ msgid ""
-#~ "instead of following symbolic links; the -L option forces symbolic links"
-#~ msgstr ""
-#~ "în loc de urmarea legăturilor simbolice; opţiunea -L forţează urmarea"
-
-#~ msgid "to be followed."
-#~ msgstr "legăturilor simbolice."
-
-#~ msgid "Print the current working directory. With the -P option, pwd prints"
-#~ msgstr "Afişează directorul de lucru curent. Cu opţiunea -P, pwd afişează"
-
-#~ msgid "the physical directory, without any symbolic links; the -L option"
-#~ msgstr "directoarele simbolice, fără nici o legătură simbolică; opţiunea -L"
-
-#~ msgid "makes pwd follow symbolic links."
-#~ msgstr "face ca pwd să urmeze legăturile simbolice."
-
-#~ msgid ""
-#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell"
-#~ msgstr ""
-#~ "Rulează COMANDA cu PARAMETRI ignorând funcţiile shellului. Dacă aveţi"
-
-#~ msgid "function called `ls', and you wish to call the command `ls', you can"
-#~ msgstr ""
-#~ "o funcţie a shellului care se cheamă `ls', şi doriţi sa numiţi comanda "
-#~ "`ls', puteţi"
-
-#~ msgid ""
-#~ "say \"command ls\". If the -p option is given, a default value is used"
-#~ msgstr ""
-#~ "spune \"command ls\". Daca este dată opţiunea -p este folosită o valoare "
-#~ "implicită"
-
-#~ msgid ""
-#~ "for PATH that is guaranteed to find all of the standard utilities. If"
-#~ msgstr ""
-#~ "pentru CALE care e garantată să găsească toate utilitarele standard. Dacă"
-
-#~ msgid ""
-#~ "the -V or -v option is given, a string is printed describing COMMAND."
-#~ msgstr ""
-#~ "sunt date opţiunile -V sau -v, este tipărit un şir care descrie COMANDA."
-
-#~ msgid "The -V option produces a more verbose description."
-#~ msgstr "Opţiunea -V produce o descriere mult mai detaliată."
-
-#~ msgid "Declare variables and/or give them attributes. If no NAMEs are"
-#~ msgstr ""
-#~ "Declară variabile şi/sau le dă atribute. Dacă nu e dat nici un NUME,"
-
-#~ msgid "given, then display the values of variables instead. The -p option"
-#~ msgstr "va afişa în loc valorile variabilelor. Opţiunea -p"
-
-#~ msgid "will display the attributes and values of each NAME."
-#~ msgstr "va afişa atributele şi valorile fiecărui NUME."
-
-#~ msgid "The flags are:"
-#~ msgstr "Marcajele(flags) sunt:"
-
-#~ msgid " -a\tto make NAMEs arrays (if supported)"
-#~ msgstr " -a\tpentru a crea intervale de NUME (dacă este suportat)"
-
-#~ msgid " -f\tto select from among function names only"
-#~ msgstr " -f\tpentru a selecta doar prin numele funcţiilor"
-
-#~ msgid " -F\tto display function names without definitions"
-#~ msgstr " -F\tpentru a afişa numele funcţiilor fără definiţii"
-
-#~ msgid " -r\tto make NAMEs readonly"
-#~ msgstr " -r\tpentru a face NUME doar în citire (readonly)"
-
-#~ msgid " -x\tto make NAMEs export"
-#~ msgstr " -x\tpentru a exporta NUME"
-
-#~ msgid " -i\tto make NAMEs have the `integer' attribute set"
-#~ msgstr " -i\tpentru ca NUME să aibe setat atributul de `integer'"
-
-#~ msgid "Variables with the integer attribute have arithmetic evaluation (see"
-#~ msgstr "Variabilele cu atributul integer au evaluarea aritmetică (vezi"
-
-#~ msgid "`let') done when the variable is assigned to."
-#~ msgstr "`let') efectuată când îi este atribuită variabila."
-
-#~ msgid "When displaying values of variables, -f displays a function's name"
-#~ msgstr "La afişarea valorilor variabilelor, -f afişează numele funcţiei"
-
-#~ msgid "and definition. The -F option restricts the display to function"
-#~ msgstr "şi definiţia. Opţiunea -F restrânge afişarea doar la"
-
-#~ msgid "name only."
-#~ msgstr "numele funcţiei."
-
-#~ msgid ""
-#~ "Using `+' instead of `-' turns off the given attribute instead. When"
-#~ msgstr "Folosirea `+' în locul `-' dezactivează atributul dat. Când"
-
-#~ msgid "used in a function, makes NAMEs local, as with the `local' command."
-#~ msgstr ""
-#~ "este folosit într-o funcţie, se consideră NUME locale, ca şi în comanda "
-#~ "`local'."
-
-#~ msgid "Obsolete. See `declare'."
-#~ msgstr "ÃŽnvechit. Vezi `declare'."
-
-#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL"
-#~ msgstr ""
-#~ "Creează o variabilă locală denumită NUME, şi îi atribuie VALOARE. LOCAL"
-
-#~ msgid "have a visible scope restricted to that function and its children."
-#~ msgstr ""
-#~ "să aibă un domeniu vizibil restrâns la acea funcţie şi copilul (children) "
-#~ "ei."
-
-#~ msgid "Output the ARGs. If -n is specified, the trailing newline is"
-#~ msgstr ""
-#~ "Afişează (output) ARGumenetele. Dacă -n este specificat,sfârşitul de "
-#~ "linie este"
-
-#~ msgid "suppressed. If the -e option is given, interpretation of the"
-#~ msgstr "suprimat. Dacă este dată opţiunea -e, interpretarea"
-
-#~ msgid "following backslash-escaped characters is turned on:"
-#~ msgstr ""
-#~ "următorului caracterelor speciale (backslash-escaped) este activată:"
-
-#~ msgid "\t\\a\talert (bell)"
-#~ msgstr "\t\\a\talertă (clopoţel (bell))"
-
-#~ msgid "\t\\b\tbackspace"
-#~ msgstr "\t\\b\tbackspace"
-
-#~ msgid "\t\\c\tsuppress trailing newline"
-#~ msgstr "\t\\c\tsuprimă sfârşitul de linie"
-
-#~ msgid "\t\\E\tescape character"
-#~ msgstr "\t\\E\tcaracterul escape"
-
-#~ msgid "\t\\f\tform feed"
-#~ msgstr "\t\\f\ttrecere la început de linie (form feed)"
-
-#~ msgid "\t\\n\tnew line"
-#~ msgstr "\t\\n\tlinie nouă"
-
-#~ msgid "\t\\r\tcarriage return"
-#~ msgstr "\t\\r\tretur de car (carriage return)"
-
-#~ msgid "\t\\t\thorizontal tab"
-#~ msgstr "\t\\t\ttab orizontal"
-
-#~ msgid "\t\\v\tvertical tab"
-#~ msgstr "\t\\v\ttab vertical"
-
-#~ msgid "\t\\\\\tbackslash"
-#~ msgstr "\t\\\\\tbackslash"
-
-#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)."
-#~ msgstr "\t\\num\tcaracterul al cărui cod ASCII este NUM (octal)."
-
-#~ msgid ""
-#~ "You can explicitly turn off the interpretation of the above characters"
-#~ msgstr "Puteţi dezactiva explicit interpretarea caracterelor de mai sus"
-
-#~ msgid "with the -E option."
-#~ msgstr "cu ajutorul opţiunii -E."
-
-#~ msgid ""
-#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed."
-#~ msgstr ""
-#~ "Afişează (output) ARGumentele. Dacă este specificat -n, sfârşitul de "
-#~ "linie este suprimat."
-
-#~ msgid "Enable and disable builtin shell commands. This allows"
-#~ msgstr ""
-#~ "Activează şi dezactivează comenzile interne ale shell-ului. Aceasta vă"
-
-#~ msgid "you to use a disk command which has the same name as a shell"
-#~ msgstr ""
-#~ "permite utilizarea unei comenzi disk care să aibă acelaşi nume ca şi cea "
-
-#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise"
-#~ msgstr ""
-#~ "internă a shell-ului. Dacă este folosit -n, NUME devine dezactivat; în "
-#~ "caz contrar"
-
-#~ msgid "NAMEs are enabled. For example, to use the `test' found on your"
-#~ msgstr ""
-#~ "NUME este activat. De exemplu, pentru a folosi funcţia `test; aflată în"
-
-#~ msgid "path instead of the shell builtin version, type `enable -n test'."
-#~ msgstr ""
-#~ "calea(path) dumneavoastră în loc de versiunea internă, tastaţi `enable -n "
-#~ "test'."
-
-#~ msgid "On systems supporting dynamic loading, the -f option may be used"
-#~ msgstr ""
-#~ "Pe sistemele care suportă încărcarea dinamică, opţiunea -f poate fi "
-#~ "folosită"
-
-#~ msgid "to load new builtins from the shared object FILENAME. The -d"
-#~ msgstr ""
-#~ "pentru a încărca noile elemente (builtins) din obiectul distribuit "
-#~ "(shared object) NUME_FIŞIER. Opţiunea -d"
-
-#~ msgid "option will delete a builtin previously loaded with -f. If no"
-#~ msgstr "va şterge un element (builtin) deja încărcat cu -f. Dacă nu"
-
-#~ msgid "non-option names are given, or the -p option is supplied, a list"
-#~ msgstr ""
-#~ "este dat nici un nume non-opţiune, sau este prezentă opţiunea -p, o listă"
-
-#~ msgid "of builtins is printed. The -a option means to print every builtin"
-#~ msgstr ""
-#~ "de elemente(builtins) este tipărită. Opţiunea -a înseamnă tipărirea "
-#~ "fiecărui "
-
-#~ msgid "with an indication of whether or not it is enabled. The -s option"
-#~ msgstr ""
-#~ "element(builtin) cu o indicaţie dacă este sau nu activ. Opţiunea -s"
-
-#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n"
-#~ msgstr ""
-#~ "restricţionează output-ul la elementele(builtins) `speciale' Posix 2. "
-#~ "Opţiunea"
-
-#~ msgid "option displays a list of all disabled builtins."
-#~ msgstr "-n afişează o listă a tuturor elementelor(builtins) inactive."
-
-#~ msgid ""
-#~ "Read ARGs as input to the shell and execute the resulting command(s)."
-#~ msgstr ""
-#~ "Citeşte ARGumente ca input al shell-ului şi execută comanda(comenzile) "
-#~ "rezultată(e)."
-
-#~ msgid "Getopts is used by shell procedures to parse positional parameters."
-#~ msgstr ""
-#~ "Getopts este folosit de procedurile de shell pentru a analiza(parse) "
-#~ "parametrii poziţionali."
-
-#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter"
-#~ msgstr ""
-#~ "OPTSTRING conţine literele optiunilor care vor fi recunoscute; dacă o "
-#~ "literă"
-
-#~ msgid "is followed by a colon, the option is expected to have an argument,"
-#~ msgstr "e urmată de două puncte, opţiunea va trebui să aibă un parametru,"
-
-#~ msgid "which should be separated from it by white space."
-#~ msgstr "care va fi separat de aceasta printr-un spaţiu."
-
-#~ msgid "Each time it is invoked, getopts will place the next option in the"
-#~ msgstr ""
-#~ "De fiecare dată când este invocat, getopts va pune următoarea opţiune în"
-
-#~ msgid "shell variable $name, initializing name if it does not exist, and"
-#~ msgstr "variabile de shell $name, iniţializând name dacă nu există, şi"
-
-#~ msgid "the index of the next argument to be processed into the shell"
-#~ msgstr "indexul următorilor parametri care vor fi procesaţi în variabila"
-
-#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or"
-#~ msgstr ""
-#~ "de shell OPTIND. OPTIND este iniţializată cu 1 de fiecare dată când "
-#~ "shellul sau"
-
-#~ msgid "a shell script is invoked. When an option requires an argument,"
-#~ msgstr ""
-#~ "un script al shellului este invocat. Când opţiunea necesită un parametru,"
-
-#~ msgid "getopts places that argument into the shell variable OPTARG."
-#~ msgstr "getopts plasează acest parametru în variabila de shell OPTARG."
-
-#~ msgid "getopts reports errors in one of two ways. If the first character"
-#~ msgstr "getopts raportează erori în două feluri. Dacă primul caracter"
-
-#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In"
-#~ msgstr ""
-#~ "al OPTSTRING este 'două puncte', getopts va folosi raportarea "
-#~ "silenţioasă. În"
-
-#~ msgid "this mode, no error messages are printed. If an illegal option is"
-#~ msgstr ""
-#~ "acest mod, nici un mesaj de eroare nu este tipărit. Dacă o opţiune "
-#~ "ilegală este"
-
-#~ msgid "seen, getopts places the option character found into OPTARG. If a"
-#~ msgstr "întâlnită, getopts plasează caracterul opţiunii în OPTARG. Dacă un"
-
-#~ msgid "required argument is not found, getopts places a ':' into NAME and"
-#~ msgstr "parametru necesar nu este întâlnit, getopts pune ':' la NUME şi"
-
-#~ msgid "sets OPTARG to the option character found. If getopts is not in"
-#~ msgstr ""
-#~ "setează OPTARG la caracterul întâlnit al opţiunii. Dacă getopts nu este "
-#~ "în"
-
-#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into"
-#~ msgstr ""
-#~ "modul silenţios, şi se întâlneşte o opţiune ilegală, getopts pune '?' în"
-
-#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'"
-#~ msgstr ""
-#~ "NUME şi desetează OPTARG. Dacă o opţiune necesară nu este întâlnită, un "
-#~ "'?'"
-
-#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is"
-#~ msgstr ""
-#~ "va fi pus în NUME, OPTARG va fi desetat, şi un mesaj de diagnosticare va "
-#~ "fi"
-
-#~ msgid "printed."
-#~ msgstr "afiÅŸat."
-
-#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the"
-#~ msgstr "Dacă variabila de shell OPTERR are valoarea 0, getopts dezactivează"
-
-#~ msgid "printing of error messages, even if the first character of"
-#~ msgstr "afiÅŸarea mesajelor de eroare, chiar daca primul caracter al"
-
-#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default."
-#~ msgstr "OPTSTRING nu este 'două puncte'. OPTERR are implicit valoarea 1."
-
-#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if"
-#~ msgstr ""
-#~ "Getopts analizează(parses) normal parametrii poziţionali ($0 - $9), dar "
-#~ "dacă"
-
-#~ msgid "more arguments are given, they are parsed instead."
-#~ msgstr "sunt daţi mai mulţi parametri, aceştia sunt analizaţi în loc."
-
-#~ msgid "Exec FILE, replacing this shell with the specified program."
-#~ msgstr "Exec FIŞIER, înlocuind acest shell cu un program specificat."
-
-#~ msgid "If FILE is not specified, the redirections take effect in this"
-#~ msgstr "Dacă FIŞIER nu este specificat, redirectările au efect în acest"
-
-#~ msgid "shell. If the first argument is `-l', then place a dash in the"
-#~ msgstr ""
-#~ "shell. Dacă primul parametru este `-l', atunci se va plasa o liniuţă în"
-
-#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option"
-#~ msgstr ""
-#~ "al zero-ulea arg pasat FIŞIERului, cum face login-ul. Dacă opţiunea `-c'"
-
-#~ msgid "is supplied, FILE is executed with a null environment. The `-a'"
-#~ msgstr "este furnizată, FIŞIER este executat cu un mediu null. Opţiunea"
-
-#~ msgid "option means to make set argv[0] of the executed process to NAME."
-#~ msgstr "'-a' înseamnă setarea argv[0] a procesului executat la NUME."
-
-#~ msgid "If the file cannot be executed and the shell is not interactive,"
-#~ msgstr "Dacă fişierul nu poate fi executat şi shell-ul nu este interactiv,"
-
-#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\""
-#~ msgstr "atunci shell-ul iese, dacă variabila \"no_exit_on_failed_exec\""
-
-#~ msgid "is set."
-#~ msgstr "nu este setată."
-
-#~ msgid "is that of the last command executed."
-#~ msgstr "este aceea a ultimei comenzi executate."
-
-#~ msgid ""
-#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
-#~ msgstr ""
-#~ "PRIMUL şi ULTIMUL pot fi numere care specifică intervalul, sau PRIMUL "
-#~ "poate fi"
-
-#~ msgid "string, which means the most recent command beginning with that"
-#~ msgstr ""
-#~ "un şir care reprezintă cea mai recentă comandă care începea cu acest"
-
-#~ msgid "string."
-#~ msgstr "ÅŸir."
-
-#~ msgid ""
-#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,"
-#~ msgstr ""
-#~ " -e ENUME selectează editorul de folosit. implicit este FCEDIT, apoi "
-#~ "EDITOR,"
-
-#~ msgid ""
-#~ " then the editor which corresponds to the current readline editing"
-#~ msgstr ""
-#~ " apoi editorul care corespunde cu modul de editare al "
-#~ "liniei(readline)"
-
-#~ msgid " mode, then vi."
-#~ msgstr " curente, ÅŸi apoi vi."
-
-#~ msgid " -l means list lines instead of editing."
-#~ msgstr " -l reprezintă afişarea liniilor în locul editării acestora."
-
-#~ msgid " -n means no line numbers listed."
-#~ msgstr " -n înseamnă că nu vor fi afişate numerele liniilor."
-
-#~ msgid ""
-#~ " -r means reverse the order of the lines (making it newest listed "
-#~ "first)."
-#~ msgstr ""
-#~ " -r reprezintă inversarea ordinii liniilor (cele mai noi fiind listate "
-#~ "primele)."
-
-#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is"
-#~ msgstr "Cu `fc -s [pat=rep ...] [comandă]' format, comanda este"
-
-#~ msgid "re-executed after the substitution OLD=NEW is performed."
-#~ msgstr "reexecutată după ce s-a produs substituţia VECHI=NOU."
-
-#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'"
-#~ msgstr "Un alias folositor este r='fc -s', aşa că tastând `r cc'"
-
-#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes"
-#~ msgstr ""
-#~ "se rulează ultima comandă care începe cu `cc' şi tastând `r' se reexecută"
-
-#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If"
-#~ msgstr ""
-#~ "Aduce JOB_SPEC în prim plan(foreground), ?şi îl face jobul curent. Dacă"
-
-#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is"
-#~ msgstr ""
-#~ "JOB_SPEC nu este prezent, este folosită noţiunea shell-ului despre jobul"
-
-#~ msgid "used."
-#~ msgstr "curent."
-
-#~ msgid "Place JOB_SPEC in the background, as if it had been started with"
-#~ msgstr "Pune JOB_SPEC în fundal(background), ca şi cum ar fi fost pornit cu"
-
-#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current"
-#~ msgstr ""
-#~ "`&'. Dacă JOB_SPEC nu este prezent, va fi folosită noţiunea shell-ului "
-#~ "despre"
-
-#~ msgid "job is used."
-#~ msgstr "jobul curent."
-
-#~ msgid "For each NAME, the full pathname of the command is determined and"
-#~ msgstr "Pentru fiecare NUME, calea întreagă a comenzii este determinată şi"
-
-#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the"
-#~ msgstr ""
-#~ "reţinută. Daca este furnizată şi opţiunea -p, CALE este folosită ca şi"
-
-#~ msgid "full pathname of NAME, and no path search is performed. The -r"
-#~ msgstr ""
-#~ "cale de căutare întreagă a NUMElui, şi nu se mai face căutare în calea "
-#~ "curentă. "
-
-#~ msgid "option causes the shell to forget all remembered locations. If no"
-#~ msgstr ""
-#~ "Opţiunea -r face ca shell-ul să uite toate locaţiile reţinute. Dacă nu"
-
-#~ msgid ""
-#~ "arguments are given, information about remembered commands is displayed."
-#~ msgstr ""
-#~ "este furnizat nici un parametru sunt afişate informaţii despre comenzile "
-#~ "reţinute."
-
-#~ msgid "Display helpful information about builtin commands. If PATTERN is"
-#~ msgstr ""
-#~ "Se afişează informaţii folositoare despre comenzile interne. Dacă TIPAR "
-#~ "este"
-
-#~ msgid "specified, gives detailed help on all commands matching PATTERN,"
-#~ msgstr ""
-#~ "specificat, se dă ajutor detaliat pentru toate comenzile potrivite "
-#~ "TIPARului,"
-
-#~ msgid "otherwise a list of the builtins is printed."
-#~ msgstr "în caz contrar se va tipări o listă a comenzilor interne."
-
-#~ msgid "Display the history list with line numbers. Lines listed with"
-#~ msgstr "Afişează istoricul cu numerele liniilor. Liniile listate cu"
-
-#~ msgid "with a `*' have been modified. Argument of N says to list only"
-#~ msgstr "un `*' au fost modificate. Parametrul N va aduce afiÅŸarea doar "
-
-#~ msgid "the last N lines. The -c option causes the history list to be"
-#~ msgstr "a ultimelor N linii. Opţiunea -c face ca lista istoricului să fie"
-
-#~ msgid ""
-#~ "cleared by deleting all of the entries. The `-w' option writes out the"
-#~ msgstr "ştearsă prin ştergerea tuturor intrărilor. Opţiunea `-w' scrie"
-
-#~ msgid ""
-#~ "current history to the history file; `-r' means to read the file and"
-#~ msgstr ""
-#~ "istoricul curent în fişierul de istoric; `-r' înseamnă citirea "
-#~ "fiÅŸierului ÅŸi"
-
-#~ msgid "append the contents to the history list instead. `-a' means"
-#~ msgstr "adăugare a conţinutului listei istoricului în loc. `-a' înseamnă"
-
-#~ msgid "to append history lines from this session to the history file."
-#~ msgstr ""
-#~ "adăugare a liniilor istoricului din această sesiune la fişierul de "
-#~ "istoric."
-
-#~ msgid "Argument `-n' means to read all history lines not already read"
-#~ msgstr ""
-#~ "Parametrul `-n' înseamnă citirea tuturor liniilor istoricului care nu "
-#~ "sunt deja citite"
-
-#~ msgid "from the history file and append them to the history list. If"
-#~ msgstr ""
-#~ "din fişierul de istoric şi adăugarea lor la lista istoricului. Dacă"
-
-#~ msgid "FILENAME is given, then that is used as the history file else"
-#~ msgstr ""
-#~ "este dat NUME_FIŞIER, acesta va fi utilizat ca fişier de istoric, în caz "
-#~ "contrar"
-
-#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history."
-#~ msgstr ""
-#~ "dacă $HISTFILE are valoare, aceasta este utilizată, altfel ~/."
-#~ "bash_history."
-
-#~ msgid "If the -s option is supplied, the non-option ARGs are appended to"
-#~ msgstr ""
-#~ "Dacă este furnizată opţiunea -s ARGumentele non-opţiuni sunt adăugate la"
-
-#~ msgid "the history list as a single entry. The -p option means to perform"
-#~ msgstr "lista istoricului ca intrări singure. Opţiunea -p înseamnă"
-
-#~ msgid ""
-#~ "history expansion on each ARG and display the result, without storing"
-#~ msgstr ""
-#~ "expandarea istoricului la fiecare ARGument şi afişarea rezultatului, fără "
-#~ "a stoca"
-
-#~ msgid "anything in the history list."
-#~ msgstr "nimic în lista istoricului."
-
-#~ msgid "Lists the active jobs. The -l option lists process id's in addition"
-#~ msgstr ""
-#~ "Listează joburile active. Opţiunea -l listează id-urile proceselor în "
-#~ "plus faţă de"
-
-#~ msgid "to the normal information; the -p option lists process id's only."
-#~ msgstr ""
-#~ "informaţiile normale; optiunea -p listează doar id-urile proceselor."
-
-#~ msgid ""
-#~ "If -n is given, only processes that have changed status since the last"
-#~ msgstr ""
-#~ "Dacă este dat -n,sunt afişate doar procesele care şi-au schimbat starea"
-
-#~ msgid ""
-#~ "notification are printed. JOBSPEC restricts output to that job. The"
-#~ msgstr ""
-#~ "de la ultima notificare. JOBSPEC restricţionează output-ul spre acel "
-#~ "job. "
-
-#~ msgid "-r and -s options restrict output to running and stopped jobs only,"
-#~ msgstr ""
-#~ "Opţiunile -r şi -s restricţionează output-ul doar spre joburile care "
-#~ "rulează şi respectiv,"
-
-#~ msgid "respectively. Without options, the status of all active jobs is"
-#~ msgstr "care sunt stopate. Fără opţiuni, este afişată starea joburilor"
-
-#~ msgid ""
-#~ "printed. If -x is given, COMMAND is run after all job specifications"
-#~ msgstr ""
-#~ "active. Dacă este furnizat -x, COMANDĂ este rulată după ce toate "
-#~ "specificaţiile"
-
-#~ msgid ""
-#~ "that appear in ARGS have been replaced with the process ID of that job's"
-#~ msgstr ""
-#~ "joburilor care aparîn ARGS au fost înlocuite cu ID-urile proceselor a"
-
-#~ msgid "process group leader."
-#~ msgstr "liderului de grup al proceselor acelui job(process group-leader)."
-
-#~ msgid "Removes each JOBSPEC argument from the table of active jobs."
-#~ msgstr "Åžterge fiecare parametru JOBSPEC din tabela de joburi active."
-
-#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If"
-#~ msgstr "Trimite proceselor numite de PID (sau JOB) semnalul SIGSPEC. Dacă"
-
-#~ msgid ""
-#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'"
-#~ msgstr "SIGSPEC nu este prezent, atunci se asumă SIGTERM. Parametrul `-l'"
-
-#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to"
-#~ msgstr ""
-#~ "listează numele semnalelor; dacă urmează parametri după `-l' se asumă că"
-
-#~ msgid "be signal numbers for which names should be listed. Kill is a shell"
-#~ msgstr ""
-#~ "sunt numere de semnale pentru care numele ar trebui listate. Kill este "
-#~ "comandă"
-
-#~ msgid "builtin for two reasons: it allows job IDs to be used instead of"
-#~ msgstr ""
-#~ "internă a sehll-ului din două motive: permite utilizarea ID-urilor de "
-#~ "joburi în locul"
-
-#~ msgid "process IDs, and, if you have reached the limit on processes that"
-#~ msgstr "ID-urilor de procese, ÅŸi, daca s-a ajuns la limita de procese care "
-
-#~ msgid ""
-#~ "you can create, you don't have to start a process to kill another one."
-#~ msgstr ""
-#~ "se pot crea, nu mai e nevoie să se pornească un proces pentru a omorî "
-#~ "altul."
-
-#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation"
-#~ msgstr ""
-#~ "Fiecare ARGument este o expresie aritmetică ce va fi evaluată. Evaluarea"
-
-#~ msgid "is done in long integers with no check for overflow, though division"
-#~ msgstr ""
-#~ "se face în întregi lungi (long integers) fără verificări de overflow, "
-#~ "totuşi împărţirea"
-
-#~ msgid "by 0 is trapped and flagged as an error. The following list of"
-#~ msgstr "la 0 este reţinută şi marcată ca eroare. Următoarea listă de"
-
-#~ msgid "operators is grouped into levels of equal-precedence operators."
-#~ msgstr "operatori este grupată în nivele de operatori 'equal-precedence'."
-
-#~ msgid "The levels are listed in order of decreasing precedence."
-#~ msgstr "Nivelele sunt listate în ordinea inversă a întâietăţii."
-
-#~ msgid "\t-, +\t\tunary minus, plus"
-#~ msgstr "\t-, +\t\tplus, minus unar"
-
-#~ msgid "\t!, ~\t\tlogical and bitwise negation"
-#~ msgstr "\t!, ~\t\tnegare logică"
-
-#~ msgid "\t*, /, %\t\tmultiplication, division, remainder"
-#~ msgstr "\t*, /, %\t\tînmulţire, împărţire, rest"
-
-#~ msgid "\t+, -\t\taddition, subtraction"
-#~ msgstr "\t+, -\t\tadăugare, scădere"
-
-#~ msgid "\t<<, >>\t\tleft and right bitwise shifts"
-#~ msgstr "\t<<, >>\t\toperaţii pe un bit la stânga şi la dreapta"
-
-#~ msgid "\t<=, >=, <, >\tcomparison"
-#~ msgstr "\t<=, >=, <, >\tcomparare"
-
-#~ msgid "\t==, !=\t\tequality, inequality"
-#~ msgstr "\t==, !=\t\tegalitate, inegalitate"
-
-#~ msgid "\t&\t\tbitwise AND"
-#~ msgstr "\t&\t\tÅžI pe un bit"
-
-#~ msgid "\t^\t\tbitwise XOR"
-#~ msgstr "\t^\t\tSAU exclusiv(XOR) pe un bit"
-
-#~ msgid "\t|\t\tbitwise OR"
-#~ msgstr "\t|\t\tSAU pe un bit"
-
-#~ msgid "\t&&\t\tlogical AND"
-#~ msgstr "\t&&\t\tÅžI logic"
-
-#~ msgid "\t||\t\tlogical OR"
-#~ msgstr "\t||\t\tSAU logic"
-
-#~ msgid "\texpr ? expr : expr"
-#~ msgstr "\texpr ? expr : expr"
-
-#~ msgid "\t\t\tconditional expression"
-#~ msgstr "\t\t\texpresie condiţională"
-
-#~ msgid "\t=, *=, /=, %=,"
-#~ msgstr "\t=, *=, /=, %=,"
-
-#~ msgid "\t+=, -=, <<=, >>=,"
-#~ msgstr "\t+=, -=, <<=, >>=,"
-
-#~ msgid "\t&=, ^=, |=\tassignment"
-#~ msgstr "\t&=, ^=, |=\tatribuire"
-
-#~ msgid "is replaced by its value (coerced to a long integer) within"
-#~ msgstr "este înlocuit de valoarea sa (trunchiată la un întreg lung) într-o"
-
-#~ msgid "an expression. The variable need not have its integer attribute"
-#~ msgstr "expresie. Variabila nu trebuie să aibă atributul său întreg"
-
-#~ msgid "turned on to be used in an expression."
-#~ msgstr "activat pentru a fi folosită într-o expresie."
-
-#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in"
-#~ msgstr "Operatorii sunt evaluaţi în ordinea întâietăţii. Subexpresiile din"
-
-#~ msgid "parentheses are evaluated first and may override the precedence"
-#~ msgstr "paranteze sunt evaluate primele ÅŸi pot suprascrie regulile de"
-
-#~ msgid "rules above."
-#~ msgstr "întâietate de mai sus."
-
-#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned"
-#~ msgstr ""
-#~ "Dacă ultimul ARGument este evaluat la 0 let returnează 1; 0 este returnat"
-
-#~ msgid "otherwise."
-#~ msgstr "în caz contrar."
-
-#~ msgid "One line is read from the standard input, and the first word is"
-#~ msgstr ""
-#~ "Linia este citită de la intrarea(input) standard, şi primul cuvânt este"
-
-#~ msgid ""
-#~ "assigned to the first NAME, the second word to the second NAME, and so"
-#~ msgstr ""
-#~ "atribuit primului NUME, al doilea cuvânt celui de-al doilea NUME, şi aşa"
-
-#~ msgid ""
-#~ "on, with leftover words assigned to the last NAME. Only the characters"
-#~ msgstr ""
-#~ "mai departe, cu cele rămase atribuite ultimelor NUME. Doar caracterele"
-
-#~ msgid "found in $IFS are recognized as word delimiters. The return code is"
-#~ msgstr ""
-#~ "găsite în $IFS sunt recunoscute ca delimitatoare de cuvinte. Codul "
-#~ "returnat este"
-
-#~ msgid ""
-#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the"
-#~ msgstr ""
-#~ "zero, cu excepţia cazului în care este întâlnit sfârşit de fişier. Dacă "
-#~ "nici un NUME"
-
-#~ msgid ""
-#~ "line read is stored in the REPLY variable. If the -r option is given,"
-#~ msgstr ""
-#~ "nu este furnizat, linia citită este stocată în variabila RĂSPUNS. Dacă e "
-#~ "dată "
-
-#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If"
-#~ msgstr ""
-#~ "opţiunea -r, aceasta înseamnă intrare `brută' şi caractere speciale "
-#~ "dezactivate."
-
-#~ msgid "the `-p' option is supplied, the string supplied as an argument is"
-#~ msgstr "Dacă este dată opţiunea `-p', şirul furnizat ca argument este"
-
-#~ msgid ""
-#~ "output without a trailing newline before attempting to read. If -a is"
-#~ msgstr "trimis la output cu linie nouă înainte de citire. Dacă -a este"
-
-#~ msgid ""
-#~ "supplied, the words read are assigned to sequential indices of ARRAY,"
-#~ msgstr ""
-#~ "furnizată, cuvintele citite sunt atribuite indicilor secvenţiali de "
-#~ "INTERVAL,"
-
-#~ msgid "starting at zero. If -e is supplied and the shell is interactive,"
-#~ msgstr ""
-#~ "începând de la zero. Dacă -e este furnizat şi shell-ul este interactiv,"
-
-#~ msgid "readline is used to obtain the line."
-#~ msgstr "se va citi linia pentru obţinerea acesteia."
-
-#~ msgid ""
-#~ "Causes a function to exit with the return value specified by N. If N"
-#~ msgstr ""
-#~ "Cauzează terminarea unei funcţii cu valoarea specificată de N. Dacă N"
-
-#~ msgid "is omitted, the return status is that of the last command."
-#~ msgstr "este omis, starea returnată va fi aceea a ultimei comenzi."
-
-#~ msgid " -a Mark variables which are modified or created for export."
-#~ msgstr ""
-#~ " -a Marchează variabilele de modificat sau create pentru export."
-
-#~ msgid " -b Notify of job termination immediately."
-#~ msgstr " -b Notificare de terminare de job imediată."
-
-#~ msgid " -e Exit immediately if a command exits with a non-zero status."
-#~ msgstr ""
-#~ " -e Iese imediat dacă există o comandă cu stare diferită de zero."
-
-#~ msgid " -f Disable file name generation (globbing)."
-#~ msgstr " -f Inhibă generarea de nume de fişiere (globalizare)."
-
-#~ msgid " -h Remember the location of commands as they are looked up."
-#~ msgstr " -h Reţine locaţiile comenzilor pe măsura verificării lor."
-
-#~ msgid ""
-#~ " -i Force the shell to be an \"interactive\" one. Interactive shells"
-#~ msgstr ""
-#~ " -i Forţează shell-ul să fie unul \"interactiv\". Shell-urile "
-#~ "interactive"
-
-#~ msgid " always read `~/.bashrc' on startup."
-#~ msgstr " citesc întotdeauna `~/.bashrc' la rulare."
-
-#~ msgid " -k All assignment arguments are placed in the environment for a"
-#~ msgstr " -k Toţi parametrii atribuirii sunt plasaţi în mediu pentru o"
-
-#~ msgid " command, not just those that precede the command name."
-#~ msgstr " comandă, nu doar cele care preced numele comenzii."
-
-#~ msgid " -m Job control is enabled."
-#~ msgstr " -m Controlul job-urilor este activat."
-
-#~ msgid " -n Read commands but do not execute them."
-#~ msgstr " -n Citeşte comenzile, dar nu le execută."
-
-#~ msgid " -o option-name"
-#~ msgstr " -o nume-opţiune"
-
-#~ msgid " Set the variable corresponding to option-name:"
-#~ msgstr " Setează variabila corespunzătoare numelui opţiunii:"
-
-#~ msgid " allexport same as -a"
-#~ msgstr " allexport la fel ca -a"
-
-#~ msgid " braceexpand same as -B"
-#~ msgstr " braceexpand la fel ca -B"
-
-#~ msgid " emacs use an emacs-style line editing interface"
-#~ msgstr ""
-#~ " emacs foloseşte o interfaţă de editare de linii stil "
-#~ "emacs"
-
-#~ msgid " errexit same as -e"
-#~ msgstr " errexit la fel ca -e"
-
-#~ msgid " hashall same as -h"
-#~ msgstr " hashall la fel ca -h"
-
-#~ msgid " histexpand same as -H"
-#~ msgstr " histexpand la fel ca -H"
-
-#~ msgid " ignoreeof the shell will not exit upon reading EOF"
-#~ msgstr " ignoreeof shellul nu va ieşi după citirea EOF"
-
-#~ msgid " interactive-comments"
-#~ msgstr " interactive-comments"
-
-#~ msgid ""
-#~ " allow comments to appear in interactive commands"
-#~ msgstr ""
-#~ " permite comentariilor să apară în comenzi "
-#~ "interactive."
-
-#~ msgid " keyword same as -k"
-#~ msgstr " keyword la fel ca -k"
-
-#~ msgid " monitor same as -m"
-#~ msgstr " monitor sla fel ca -m"
-
-#~ msgid " noclobber same as -C"
-#~ msgstr " noclobber la fel ca -C"
-
-#~ msgid " noexec same as -n"
-#~ msgstr " noexec la fel ca -n"
-
-#~ msgid " noglob same as -f"
-#~ msgstr " noglob la fel ca -f"
-
-#~ msgid " notify save as -b"
-#~ msgstr " notify la fel ca -b"
-
-#~ msgid " nounset same as -u"
-#~ msgstr " nounset la fel ca -u"
-
-#~ msgid " onecmd same as -t"
-#~ msgstr " onecmd la fel ca -t"
-
-#~ msgid " physical same as -P"
-#~ msgstr " physical la fel ca -P"
-
-#~ msgid ""
-#~ " posix change the behavior of bash where the default"
-#~ msgstr ""
-#~ " posix schimbă comportamentul bash în care implicit"
-
-#~ msgid ""
-#~ " operation differs from the 1003.2 standard to"
-#~ msgstr ""
-#~ " operaţiile diferă de standardul 1003.2 pentru"
-
-#~ msgid " match the standard"
-#~ msgstr " a se potrivi standardului"
-
-#~ msgid " privileged same as -p"
-#~ msgstr " privileged la fel ca -p"
-
-#~ msgid " verbose same as -v"
-#~ msgstr " verbose la fel ca -v"
-
-#~ msgid " vi use a vi-style line editing interface"
-#~ msgstr ""
-#~ " vi foloseşte o interfaţă de editare de linii stil vi"
-
-#~ msgid " xtrace same as -x"
-#~ msgstr " xtrace la fel ca -x"
-
-#~ msgid ""
-#~ " -p Turned on whenever the real and effective user ids do not match."
-#~ msgstr ""
-#~ " -p Activat de fiecare dată când id-urile de user real şi efectiv nu "
-#~ "se potrivesc."
-
-#~ msgid " Disables processing of the $ENV file and importing of shell"
-#~ msgstr " Inhibă procesarea fişierului $ENV şi importarea funcţiilor"
-
-#~ msgid ""
-#~ " functions. Turning this option off causes the effective uid and"
-#~ msgstr ""
-#~ " shell-ului. Dezactivarea acestei opţiuni face ca uid-ul şi gid-ul"
-
-#~ msgid " gid to be set to the real uid and gid."
-#~ msgstr " efectiv să fie setate drept uid-ul şi gid-ul real."
-
-#~ msgid " -t Exit after reading and executing one command."
-#~ msgstr " -t Iese după citirea şi executarea unei comenzi."
-
-#~ msgid " -u Treat unset variables as an error when substituting."
-#~ msgstr " -u Tratează variabilele nesetate drept erori în substituţie."
-
-#~ msgid " -v Print shell input lines as they are read."
-#~ msgstr ""
-#~ " -v Tipăreşte liniile de intrare(input) ale shell-ului pe măsură ce "
-#~ "sunt citite."
-
-#~ msgid " -x Print commands and their arguments as they are executed."
-#~ msgstr ""
-#~ " -x Tipăreşte comenzile şi parametrii acestora pe măsura executării."
-
-#~ msgid " -B the shell will perform brace expansion"
-#~ msgstr " -B shell-ul va executa expansiune de legături(brace)"
-
-#~ msgid " -H Enable ! style history substitution. This flag is on"
-#~ msgstr ""
-#~ " -H Activează substituţia istoricului stil ! . Acest marcaj(flag) "
-#~ "este activat"
-
-#~ msgid " by default."
-#~ msgstr " în mod implicit."
-
-#~ msgid " -C If set, disallow existing regular files to be overwritten"
-#~ msgstr ""
-#~ " -C Dacă este setat, nu va permite suprascrierea fişierelor existente"
-
-#~ msgid " by redirection of output."
-#~ msgstr " prin redirectarea output-ului."
-
-#~ msgid " -P If set, do not follow symbolic links when executing commands"
-#~ msgstr ""
-#~ " -P Dacă este setat, nu va urma legăturile simbolice în executarea "
-#~ "comenzilor"
-
-#~ msgid " such as cd which change the current directory."
-#~ msgstr " precum cd care schimbă directorul curent."
-
-#~ msgid "Using + rather than - causes these flags to be turned off. The"
-#~ msgstr ""
-#~ "Folosind + în locul lui - provoacă dezactivarea acestor marcaje(flags)."
-
-#~ msgid "flags can also be used upon invocation of the shell. The current"
-#~ msgstr ""
-#~ " Marcajele pot fi folosite de asemenea pentru invocarea shell-ului. "
-#~ "Setul"
-
-#~ msgid ""
-#~ "set of flags may be found in $-. The remaining n ARGs are positional"
-#~ msgstr ""
-#~ "curent de marcaje(flags) poate fi găsit în $-. ARGumentele n rămase sunt"
-
-#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no"
-#~ msgstr ""
-#~ "parametri poziţionali şi sunt atribuiţi, în ordine, lui $1, $2, .. $n. "
-#~ "Dacă nu"
-
-#~ msgid "ARGs are given, all shell variables are printed."
-#~ msgstr ""
-#~ "este dat nici un ARGument, sunt tipărite toate variabilele shell-ului."
-
-#~ msgid "For each NAME, remove the corresponding variable or function. Given"
-#~ msgstr ""
-#~ "Pentru fiecare NUME, şterge variabila sau funcţia corespunzătoare. Dacă "
-#~ "se"
-
-#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag,"
-#~ msgstr ""
-#~ "dă `-v', desetarea(unset) va acţiona numai pe variabile. Dacă se dă `-f',"
-
-#~ msgid "unset will only act on functions. With neither flag, unset first"
-#~ msgstr ""
-#~ "desetarea(unset) va acţiona numai pe funcţii. Fără nici un marcaj(flag), "
-
-#~ msgid "tries to unset a variable, and if that fails, then tries to unset a"
-#~ msgstr ""
-#~ "desetarea(unset) va încerca întâi pe variabile, şi dacă eşueazăm va "
-#~ "încerca"
-
-#~ msgid ""
-#~ "function. Some variables (such as PATH and IFS) cannot be unset; also"
-#~ msgstr ""
-#~ "pe o funcţie. Anumite variabile ( precum PATH şi IFS) nu pot fi "
-#~ "desetate(unset);"
-
-#~ msgid "see readonly."
-#~ msgstr "de asemenea, vedeţi readonly."
-
-#~ msgid "NAMEs are marked for automatic export to the environment of"
-#~ msgstr "NUMEle sunt marcate pentru exportul automat către mediul"
-
-#~ msgid "subsequently executed commands. If the -f option is given,"
-#~ msgstr "comenzilor executate ulterior. Dacă este dată opţiunea -f,"
-
-#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'"
-#~ msgstr ""
-#~ "NUMEle se referă la funcţii. Dacă nu este dat nici un NUME, sau este dat "
-#~ "`-p'`,"
-
-#~ msgid "is given, a list of all names that are exported in this shell is"
-#~ msgstr ""
-#~ "va fi tipărită o listă a tuturor numelor care sunt exportate în acest"
-
-#~ msgid "printed. An argument of `-n' says to remove the export property"
-#~ msgstr "shell. Parametrul `-n' va elimina proprietatea de export "
-
-#~ msgid "from subsequent NAMEs. An argument of `--' disables further option"
-#~ msgstr ""
-#~ "din NUMEle ulterioare. Parametrul `--' dezactivează procesarea opţiunilor"
-
-#~ msgid "processing."
-#~ msgstr "viitoare."
-
-#~ msgid ""
-#~ "The given NAMEs are marked readonly and the values of these NAMEs may"
-#~ msgstr "NUMEle date sunt marcate readonly ÅŸi valorile acestor NUME nu poate"
-
-#~ msgid "not be changed by subsequent assignment. If the -f option is given,"
-#~ msgstr "fi schimbat de atribuiri ulterioare. Dacă este dată opţiunea -f,"
-
-#~ msgid "then functions corresponding to the NAMEs are so marked. If no"
-#~ msgstr "atunci funcţiile corespunzătoare NUMElor sunt marcate. Dacă nu"
-
-#~ msgid ""
-#~ "arguments are given, or if `-p' is given, a list of all readonly names"
-#~ msgstr ""
-#~ "sunt furnizaţidaţ paramet, sau este dat parametrul `-p'` o listă de nume "
-#~ "readonlyri "
-
-#~ msgid ""
-#~ "is printed. An argument of `-n' says to remove the readonly property"
-#~ msgstr ""
-#~ "va fi tipărită. Parametrul `-n' va elimina proprietatea de readonly"
-
-#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as"
-#~ msgstr ""
-#~ "pentru NUMEle ulterioare. Opţiunea `-a' reprezintă tratarea fiecărui "
-#~ "NUME ca"
-
-#~ msgid "an array variable. An argument of `--' disables further option"
-#~ msgstr "o variabilă interval. Parametrul `--' dezactivează alte opţiuni"
-
-#~ msgid ""
-#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is"
-#~ msgstr ""
-#~ "Parametrii poziţionali de la $N+1 ... sunt redenumiţi în $1 ... Dacă N "
-#~ "nu este"
-
-#~ msgid "not given, it is assumed to be 1."
-#~ msgstr "furnizat, se presupune că e 1."
-
-#~ msgid "Read and execute commands from FILENAME and return. The pathnames"
-#~ msgstr "Citeşte şi execută comenzi din NUME_FIŞIER şi returnare. Căile"
-
-#~ msgid "in $PATH are used to find the directory containing FILENAME."
-#~ msgstr ""
-#~ "din $PATH sunt folosite pentru a găsi directorul care conţine NUME_FIŞIER."
-
-#~ msgid "Suspend the execution of this shell until it receives a SIGCONT"
-#~ msgstr ""
-#~ "Suspendă execuţia acestui shell până se va primi un semnal de SIGCONT."
-
-#~ msgid "signal. The `-f' if specified says not to complain about this"
-#~ msgstr " Dacă este specificat `-f' va elimina avertismentele despre acest "
-
-#~ msgid "being a login shell if it is; just suspend anyway."
-#~ msgstr "login shell; va suspenda oricum."
-
-#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on"
-#~ msgstr "Iese cu o stare de 0 (adevăr) sau 1 (falsitate) depinzând de"
-
-#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary"
-#~ msgstr "evaluarea EXPR. Expresiile pot fi unare sau binare. Expresiile"
-
-#~ msgid "expressions are often used to examine the status of a file. There"
-#~ msgstr ""
-#~ "unare sunt des folosite pentru a examina starea unui fişier. Mai există"
-
-#~ msgid "are string operators as well, and numeric comparison operators."
-#~ msgstr "operatori de şir de asemenea, şi operator de comparare numerică."
-
-#~ msgid "File operators:"
-#~ msgstr "Operatori de fiÅŸier:"
-
-#~ msgid " -b FILE True if file is block special."
-#~ msgstr " -b FIŞIER Adevărat dacă fişierul este bloc special."
-
-#~ msgid " -c FILE True if file is character special."
-#~ msgstr " -c FIŞIER Adevărat dacă fişierul este caracter special."
-
-#~ msgid " -d FILE True if file is a directory."
-#~ msgstr " -b FIŞIER Adevărat dacă fişierul este director."
-
-#~ msgid " -e FILE True if file exists."
-#~ msgstr " -e FIŞIER Adevărat dacă fişierul există."
-
-#~ msgid " -f FILE True if file exists and is a regular file."
-#~ msgstr ""
-#~ " -b FIŞIER Adevărat dacă fişierul există şi este fişier "
-#~ "obiÅŸnuit (regular)."
-
-#~ msgid " -g FILE True if file is set-group-id."
-#~ msgstr ""
-#~ " -g FIŞIER Adevărat dacă fişierul are setat id-ul de grup."
-
-#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"."
-#~ msgstr ""
-#~ " -h FIŞIER Adevărat dacă fişierul este legătură simbolică. "
-#~ "Folosiţi \"-L\"."
-
-#~ msgid " -L FILE True if file is a symbolic link."
-#~ msgstr ""
-#~ " -L FIŞIER Adevărat dacă fişierul este legătură simbolică."
-
-#~ msgid " -k FILE True if file has its \"sticky\" bit set."
-#~ msgstr ""
-#~ " -k FIŞIER Adevărat dacă fişierul are setat \"sticky\" bit."
-
-#~ msgid " -p FILE True if file is a named pipe."
-#~ msgstr ""
-#~ " -p FIŞIER Adevărat dacă fişierul este o legătură(pipe) numită."
-
-#~ msgid " -r FILE True if file is readable by you."
-#~ msgstr " -r FIŞIER Adevărat dacă fişierul poate fi citit de tine."
-
-#~ msgid " -s FILE True if file exists and is not empty."
-#~ msgstr " -s FIŞIER Adevărat dacă fişierul există şi nu este vid."
-
-#~ msgid " -S FILE True if file is a socket."
-#~ msgstr " -S FIŞIER Adevărat dacă fişierul este un socket."
-
-#~ msgid " -t FD True if FD is opened on a terminal."
-#~ msgstr " -t FD Adevărat dacă FD este deschis într-un terminal."
-
-#~ msgid " -u FILE True if the file is set-user-id."
-#~ msgstr " -u FIŞIER Adevărat dacă fişierul are setat user id-ul."
-
-#~ msgid " -w FILE True if the file is writable by you."
-#~ msgstr " -w FIŞIER Adevărat dacă fişierul poate fi scris de tine."
-
-#~ msgid " -x FILE True if the file is executable by you."
-#~ msgstr ""
-#~ " -x FIŞIER Adevărat dacă fişierul poate fi executat de către "
-#~ "tine."
-
-#~ msgid " -O FILE True if the file is effectively owned by you."
-#~ msgstr ""
-#~ " -O FIŞIER Adevărat dacă fişierul este efectiv propriu(owned) "
-#~ "Å£ie."
-
-#~ msgid ""
-#~ " -G FILE True if the file is effectively owned by your group."
-#~ msgstr ""
-#~ " -O FIŞIER Adevărat dacă fişierul este efectiv propriu(owned) "
-#~ "grupului tău."
-
-#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to"
-#~ msgstr ""
-#~ " FIŞIER1 -nt FIŞIER2 Adevărat dacă fişier1 este mai nou decât (potrivit "
-
-#~ msgid " modification date) file2."
-#~ msgstr " datei modificării) fişier2."
-
-#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2."
-#~ msgstr ""
-#~ " FIŞIER1 -ot FIŞIER2 Adevărat dacă fişier1 este mai vechi decât fişier2."
-
-#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2."
-#~ msgstr ""
-#~ " FIŞIER1 -ef FIŞIER2 Adevărat dacă fişier1 este hard link către fişier2."
-
-#~ msgid "String operators:"
-#~ msgstr "Operatori de ÅŸiruri:"
-
-#~ msgid " -z STRING True if string is empty."
-#~ msgstr " -z ŞIR Adevărat dacă şirul este vid."
-
-#~ msgid " -n STRING"
-#~ msgstr " -n ÅžIR"
-
-#~ msgid " STRING True if string is not empty."
-#~ msgstr " ŞIR Adevărat dacă şirul nu este vid."
-
-#~ msgid " STRING1 = STRING2"
-#~ msgstr " ÅžIR1 = ÅžIR2"
-
-#~ msgid " True if the strings are equal."
-#~ msgstr " Adevărat dacă şirurile sunt egale."
-
-#~ msgid " STRING1 != STRING2"
-#~ msgstr " ÅžIR1 != ÅžIR2"
-
-#~ msgid " True if the strings are not equal."
-#~ msgstr " Adevărat dacă şirurile nu sunt egale."
-
-#~ msgid " STRING1 < STRING2"
-#~ msgstr " ÅžIR1 < ÅžIR2"
-
-#~ msgid ""
-#~ " True if STRING1 sorts before STRING2 lexicographically"
-#~ msgstr ""
-#~ " Adevărat dacă ŞIR1 se ordonează lexical înaintea lui "
-#~ "ÅžIR2"
-
-#~ msgid " STRING1 > STRING2"
-#~ msgstr " ÅžIR1 > ÅžIR2"
-
-#~ msgid ""
-#~ " True if STRING1 sorts after STRING2 lexicographically"
-#~ msgstr ""
-#~ " Adevărat dacă ŞIR1 se ordonează lexical după ŞIR2"
-
-#~ msgid "Other operators:"
-#~ msgstr "Alţi operatori:"
-
-#~ msgid " ! EXPR True if expr is false."
-#~ msgstr " ! EXPR Adevărat dacă expr e falsă."
-
-#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true."
-#~ msgstr " EXPR1 -a EXPR2 Adevărat dacă şi expr1 ŞI expr2 sunt adevărate."
-
-#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true."
-#~ msgstr ""
-#~ " EXPR1 -a EXPR2 Adevărat dacă una din expr1 sau expr2 e adevărată."
-
-#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,"
-#~ msgstr " arg1 OP arg2 Teste aritmetice. OP este unul din -eq, -ne,"
-
-#~ msgid " -lt, -le, -gt, or -ge."
-#~ msgstr " -lt, -le, -gt, or -ge."
-
-#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
-#~ msgstr "Operatorii aritmetici binari returnează adevărat(true) dacă ARG1 "
-
-#~ msgid ""
-#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
-#~ msgstr ""
-#~ "este egal cu, nu este egal cu,mai mic, mai mic sau egal, mai mare, mai "
-#~ "mare sau egal"
-
-#~ msgid "than ARG2."
-#~ msgstr "decât ARG2."
-
-#~ msgid "This is a synonym for the \"test\" builtin, but the last"
-#~ msgstr "Acesta este un sinonim pentru comanda internă \"test\", dar ultimul"
-
-#~ msgid "argument must be a literal `]', to match the opening `['."
-#~ msgstr "argument trebuie să fie un `]' literal, pentru a închide un `['."
-
-#~ msgid "Print the accumulated user and system times for processes run from"
-#~ msgstr ""
-#~ "Afişează timpurile acumulate de user şi sistem pentru procesele rulate din"
-
-#~ msgid "the shell."
-#~ msgstr "shell."
-
-#~ msgid "The command ARG is to be read and executed when the shell receives"
-#~ msgstr ""
-#~ "ARGumentele comenzii vor fi citite şi executate când shell-ul primeşte"
-
-#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are"
-#~ msgstr ""
-#~ "semnal(e). SIGNAL_SPEC. Dacă ARGumentul este absent toate semnalele"
-
-#~ msgid "reset to their original values. If ARG is the null string each"
-#~ msgstr ""
-#~ "specifice sunt resetate la valorile lor originale. Dacă ARGumentul este "
-#~ "un ÅŸir vid"
-
-#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
-#~ msgstr ""
-#~ "fiecare SIGNAL_SPEC este ignorat de shell şi de comanda invocată de "
-#~ "acesta."
-
-#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
-#~ msgstr ""
-#~ "Dacă SIGNAL_SPEC este EXIT (0) ARGumentele comenzii sunt executate la "
-
-#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every"
-#~ msgstr ""
-#~ "ieşirea din shell. Dacă SIGNAL_SPEC este DEBUG, ARGument este executat"
-
-#~ msgid "command. If ARG is `-p' then the trap commands associated with"
-#~ msgstr ""
-#~ "după fiecare comandă. Dacă ARGument este `-' atunci vor fi afişate "
-#~ "comenzile"
-
-#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if"
-#~ msgstr "trap asociate cu fiecare SIGNAL_SPEC. Dacă nu sunt furnizaţi "
-
-#~ msgid "only `-p' is given, trap prints the list of commands associated with"
-#~ msgstr ""
-#~ "parametri sau este dat doar `-p', trap afişează lista de comenzi asociate "
-#~ "cu "
-
-#~ msgid ""
-#~ "each signal number. SIGNAL_SPEC is either a signal name in <signal.h>"
-#~ msgstr ""
-#~ "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 "
-
-#~ msgid "corresponding numbers. Note that a signal can be sent to the shell"
-#~ msgstr ""
-#~ "numerele corespunzătoare. Notaţi că un semnal poate fi trimis shell-ului"
-
-#~ msgid "with \"kill -signal $$\"."
-#~ msgstr "cu \"kill -signal $$\"."
-
-#~ msgid "For each NAME, indicate how it would be interpreted if used as a"
-#~ msgstr ""
-#~ "Pentru fiecare NUME, indică în ce mod va fi interpretat dacă este "
-#~ "utilizat ca"
-
-#~ msgid "If the -t option is used, returns a single word which is one of"
-#~ msgstr ""
-#~ "Dacă este folosită opţiunea -t, returnează un singur cuvânt care este "
-#~ "unul din"
-
-#~ msgid ""
-#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
-#~ msgstr ""
-#~ "`alias', `keyword', `function', `builtin', `file' or `', dacă NUME este un"
-
-#~ msgid ""
-#~ "alias, shell reserved word, shell function, shell builtin, disk file,"
-#~ msgstr ""
-#~ "alias, cuvânt rezervat de shell, funcţie de shell, comandă internă, "
-#~ "fiÅŸier de pe disk,"
-
-#~ msgid "or unfound, respectively."
-#~ msgstr "sau negăsit, respectiv."
-
-#~ msgid "If the -p flag is used, either returns the name of the disk file"
-#~ msgstr ""
-#~ "Dacă este utilizat marcajul(flag) -p se returnează fie numele fişierului "
-#~ "de disk"
-
-#~ msgid "that would be executed, or nothing if -t would not return `file'."
-#~ msgstr ""
-#~ "care urmează să fie executat, sau nimic dacă -t nu va returna `fişier'."
-
-#~ msgid "If the -a flag is used, displays all of the places that contain an"
-#~ msgstr "Dacă este folosit -a, se vor afişa toate locurile care conţin"
-
-#~ msgid ""
-#~ "executable named `file'. This includes aliases and functions, if and"
-#~ msgstr ""
-#~ "un executabil numit `fişier'. Aceasta include aliasuri şi funcţii, şi "
-#~ "numai"
-
-#~ msgid "only if the -p flag is not also used."
-#~ msgstr "marcajul(flag) -p nu este folosit de asemenea."
-
-#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t,"
-#~ msgstr "Type acceptă -all, -path şi -type în loc de -a, -p şi -t,"
-
-#~ msgid "respectively."
-#~ msgstr "respectiv"
-
-#~ msgid "Ulimit provides control over the resources available to processes"
-#~ msgstr "Ulimit oferă control al resurselor disponibile pentru procesele"
-
-#~ msgid "started by the shell, on systems that allow such control. If an"
-#~ msgstr ""
-#~ "rulate de shell, în sisteme care permit acest tip de control. Dacă este"
-
-#~ msgid "option is given, it is interpreted as follows:"
-#~ msgstr "dată o opţiune, este interpretată precum urmează:"
-
-#~ msgid " -S\tuse the `soft' resource limit"
-#~ msgstr " -S\tfoloseÅŸte limita `soft' a resursei"
-
-#~ msgid " -H\tuse the `hard' resource limit"
-#~ msgstr " -H\tfoloseÅŸte limita `hard' a resursei"
-
-#~ msgid " -a\tall current limits are reported"
-#~ msgstr " -a\tsunt raportate toate limitele curente"
-
-#~ msgid " -c\tthe maximum size of core files created"
-#~ msgstr " -c\tmărimea maximă de fişiere core creată"
-
-#~ msgid " -d\tthe maximum size of a process's data segment"
-#~ msgstr " -d\ttmărimea maximă a unui segment de date al procesului"
-
-#~ msgid " -m\tthe maximum resident set size"
-#~ msgstr " -m\tmărimea maximă de rezidenţă"
-
-#~ msgid " -s\tthe maximum stack size"
-#~ msgstr " -s\tmărimea maximă a stivei(stack)"
-
-#~ msgid " -t\tthe maximum amount of cpu time in seconds"
-#~ msgstr " -t\tsuma maximă a timpului cpu în secunde"
-
-#~ msgid " -f\tthe maximum size of files created by the shell"
-#~ msgstr " -f\ttmărimea maximă a fişierelor create de shell"
-
-#~ msgid " -p\tthe pipe buffer size"
-#~ msgstr " -p\tmărimea tamponului de legătură (pipe buffer)"
-
-#~ msgid " -n\tthe maximum number of open file descriptors"
-#~ msgstr " -n\tnumărul maxim de fişiere deschise"
-
-#~ msgid " -u\tthe maximum number of user processes"
-#~ msgstr " -u\tnumărul maxim de procese utilizator"
-
-#~ msgid " -v\tthe size of virtual memory"
-#~ msgstr " -v\tmărimea memoriei virtuale"
-
-#~ msgid "If LIMIT is given, it is the new value of the specified resource."
-#~ msgstr "Dacă este dată LIMITĂ, va fi noua valoare a resursei specificate."
-
-#~ msgid "Otherwise, the current value of the specified resource is printed."
-#~ msgstr ""
-#~ "În caz contrar, este tipărită valoarea curentă a resursei specificate."
-
-#~ msgid "If no option is given, then -f is assumed. Values are in 1k"
-#~ msgstr ""
-#~ "Dacă nu este dată nici o opţiune se presupune -f. Valorile sunt exprimate"
-
-#~ msgid "increments, except for -t, which is in seconds, -p, which is in"
-#~ msgstr ""
-#~ "în incrementări de 1k, exceptând -t, care este în secunde, -p, care este "
-#~ "în"
-
-#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of"
-#~ msgstr "incrementări de 512 octeţi, şi -u, care este un număr nescalat de"
-
-#~ msgid "processes."
-#~ msgstr "procese."
-
-#~ msgid ""
-#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if"
-#~ msgstr ""
-#~ "Masca de crearecreation mask) a fişierului utilizatorului e setată la "
-#~ "MOD. Dacă"
-
-#~ msgid ""
-#~ "`-S' is supplied, the current value of the mask is printed. The `-S'"
-#~ msgstr ""
-#~ "MOD este omis sau este dat `-S', este tipărită valoarea curentă a "
-#~ "măştii. Opţiunea"
-
-#~ msgid ""
-#~ "option makes the output symbolic; otherwise an octal number is output."
-#~ msgstr ""
-#~ "`-S' returnează output simbolic; în caz contrar outputul este un număr "
-#~ "octal."
-
-#~ msgid "If MODE begins with a digit, it is interpreted as an octal number,"
-#~ msgstr "Dacă MOD începe cu un digit, este interpretat ca număr octal,"
-
-#~ msgid ""
-#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)."
-#~ msgstr "în caz contrar este un şir mod simbolic premis de chmod(1)."
-
-#~ msgid ""
-#~ "Wait for the specified process and report its termination status. If"
-#~ msgstr ""
-#~ "Aşteaptă după procesul specificat şi raportează starea de terminare. Dacă"
-
-#~ msgid "N is not given, all currently active child processes are waited for,"
-#~ msgstr ""
-#~ "N nu este dat,se aşteaptă după toate procesele copil(child) curente,"
-
-#~ msgid "and the return code is zero. N may be a process ID or a job"
-#~ msgstr ""
-#~ "ÅŸi codul returnat este zero. N poate fi un ID de proces sau o "
-#~ "specificaţie"
-
-#~ msgid "specification; if a job spec is given, all processes in the job's"
-#~ msgstr "de job; Dacă este dată o specificaţie de job,se aşteaptă după"
-
-#~ msgid "pipeline are waited for."
-#~ msgstr " toate procesele din legătură(pipeline)."
-
-#~ msgid "and the return code is zero. N is a process ID; if it is not given,"
-#~ msgstr ""
-#~ "şi codul returnat este zero. N este un ID de proces; dacă nu este dat,"
-
-#~ msgid "all child processes of the shell are waited for."
-#~ msgstr "se va aştepta după doate procesele copil(child) din shell."
-
-#~ msgid "The `for' loop executes a sequence of commands for each member in a"
-#~ msgstr ""
-#~ "Ciclul `for' execută o secvenţă de comenzi pentru fiecare membru dintr-o"
-
-#~ msgid ""
-#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is"
-#~ msgstr ""
-#~ "listă de elemente. Dacă `in CUVINTE...;' nu este prezent, atunci `in \"$@"
-#~ "\"'"
-
-#~ msgid ""
-#~ "assumed. For each element in WORDS, NAME is set to that element, and"
-#~ msgstr ""
-#~ "este presupus. Pentru fiecare element din CUVINTE, NUME este setat ca "
-#~ "acel"
-
-#~ msgid "the COMMANDS are executed."
-#~ msgstr "element ÅŸi COMENZI sunt executate."
-
-#~ msgid "The WORDS are expanded, generating a list of words. The"
-#~ msgstr "CUVINTEle sunt expandate, generând o listă de cuvinte. Setul de"
-
-#~ msgid "set of expanded words is printed on the standard error, each"
-#~ msgstr ""
-#~ "de cuvinte expandate este tipărit la dispozitivul de eroare standard, "
-#~ "fiecare"
-
-#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'"
-#~ msgstr ""
-#~ "fiind precedat de un număr. Dacă `in CUVINTE' nu este prezent, `in \"$@"
-#~ "\"'"
-
-#~ msgid "is assumed. The PS3 prompt is then displayed and a line read"
-#~ msgstr ""
-#~ "este presupus. Promptul PS3 este apoi afişat şi o linie va fi citită de"
-
-#~ msgid "from the standard input. If the line consists of the number"
-#~ msgstr ""
-#~ "la intrare(input) standard. Dacă linia e alcătuită dintr-unul din "
-#~ "numerele"
-
-#~ msgid "corresponding to one of the displayed words, then NAME is set"
-#~ msgstr "corespunzătoare unuia din cuvintele afişate, atunci NUME este setat"
-
-#~ msgid "to that word. If the line is empty, WORDS and the prompt are"
-#~ msgstr ""
-#~ "drept cuvântul respectiv. Dacă linia este vidă, CUVINTEle şi promptul "
-#~ "sunt"
-
-#~ msgid "redisplayed. If EOF is read, the command completes. Any other"
-#~ msgstr ""
-#~ "reafişate. Dacă se citeşte EOF, comanda ajunge la sfârşit. Orice altă"
-
-#~ msgid "value read causes NAME to be set to null. The line read is saved"
-#~ msgstr ""
-#~ "valoare citită va face ca NUMEle setat să fie setat null. Linia citită "
-#~ "este salvată"
-
-#~ msgid "in the variable REPLY. COMMANDS are executed after each selection"
-#~ msgstr ""
-#~ "în variabila RĂSPUNS. COMENZIle sunt executate după fiecare selecţie"
-
-#~ msgid "until a break or return command is executed."
-#~ msgstr "până când se execută o comandă break sau return."
-
-#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The"
-#~ msgstr ""
-#~ "Execută selectiv COMENZI bazându-se pe potrivirea CUVÂNTului în TIPAR."
-
-#~ msgid "`|' is used to separate multiple patterns."
-#~ msgstr " `|' este folosit pentru a separa mai multe tipare."
-
-#~ msgid ""
-#~ "The if COMMANDS are executed. If the exit status is zero, then the then"
-#~ msgstr ""
-#~ "COMENZIle if sunt executate. Dacă starea de ieşire este zero, atunc"
-
-#~ msgid ""
-#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed"
-#~ msgstr ""
-#~ "COMENZIle then sunt executate. ÃŽn caz contrar, fiecare din COMENZIle "
-#~ "elif sunt executate"
-
-#~ msgid ""
-#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS"
-#~ msgstr ""
-#~ "pe rând, şi dacă starea de ieşire este zero, atunci COMENZIle then "
-#~ "corespunzătoare"
-
-#~ msgid ""
-#~ "are executed and the if command completes. Otherwise, the else COMMANDS"
-#~ msgstr ""
-#~ "sunt executate şi comanda if se termină. În caz contrar, COMENZIle else"
-
-#~ msgid ""
-#~ "are executed, if present. The exit status is the exit status of the last"
-#~ msgstr ""
-#~ "sunt executate, în cazul în care sunt prezente. Starea de ieşire este "
-#~ "starea de ieÅŸire"
-
-#~ msgid "command executed, or zero if no condition tested true."
-#~ msgstr ""
-#~ "a ultimei comenzi executate, sau zero dacă nici o condiţie nu s-a dovedit "
-#~ "adevărată."
-
-#~ msgid "Expand and execute COMMANDS as long as the final command in the"
-#~ msgstr "Expandează şi execută COMENZI atâta timp cât comanda finală din"
-
-#~ msgid "`while' COMMANDS has an exit status of zero."
-#~ msgstr "COMENZIle `while' au o stare de ieÅŸire de zero."
-
-#~ msgid "`until' COMMANDS has an exit status which is not zero."
-#~ msgstr "COMENZIle `until' au o stare de ieşire diferită de zero."
-
-#~ msgid "Create a simple command invoked by NAME which runs COMMANDS."
-#~ msgstr "Crează o comandă simplă invocată de NUME care rulează COMENZI."
-
-#~ msgid "Arguments on the command line along with NAME are passed to the"
-#~ msgstr "Parametrii din linia de comandă împreună cu NUMEle sunt pasaţi"
-
-#~ msgid "function as $0 .. $n."
-#~ msgstr "funcţiei drept $0 .. $n."
-
-#~ msgid "Run a set of commands in a group. This is one way to redirect an"
-#~ msgstr ""
-#~ "Rulează un set de comenzi dintr-un grup. Aceasta este o cale de a "
-#~ "redirecta un"
-
-#~ msgid "entire set of commands."
-#~ msgstr "întreg set de comenzi."
-
-#~ msgid "This is similar to the `fg' command. Resume a stopped or background"
-#~ msgstr ""
-#~ "Aceasta este similară comenzii `fg'. Continuă(resume) un job stopat sau "
-#~ "din"
-
-#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify"
-#~ msgstr ""
-#~ "fundal(background). Dacă se specifică DIGIŢI, atunci este folosit acel "
-#~ "job. Dacă"
-
-#~ msgid ""
-#~ "WORD, then the job whose name begins with WORD is used. Following the"
-#~ msgstr ""
-#~ "se specifică CUVÂNT, atunci e folosit jobul al cărui nume începe cu "
-#~ "CUVÂNT."
-
-#~ msgid "job specification with a `&' places the job in the background."
-#~ msgstr ""
-#~ "Specificând jobului un `&' după, va plasa jobul în fundal(background)."
-
-#~ msgid "BASH_VERSION The version numbers of this Bash."
-#~ msgstr "BASH_VERSION Numărul de versiune a acestui Bash."
-
-#~ msgid "CDPATH A colon separated list of directories to search"
-#~ msgstr ""
-#~ "CDPATH O listă de directoare separată prin două-puncte pentru a "
-#~ "se"
-
-#~ msgid "\t\twhen the argument to `cd' is not found in the current"
-#~ msgstr ""
-#~ "\t\tcăuta atunci când parametrii specificaţi comenzii `cd' nu sunt găsiţi "
-#~ "în"
-
-#~ msgid "\t\tdirectory."
-#~ msgstr "\t\tdirectorul curent."
-
-#~ msgid ""
-#~ "HISTFILE The name of the file where your command history is stored."
-#~ msgstr ""
-#~ "HISTFILE Numele fiÅŸierului unde istoricul comenzilor voastre este "
-#~ "stocat."
-
-#~ msgid "HISTFILESIZE The maximum number of lines this file can contain."
-#~ msgstr ""
-#~ "HISTFILESIZE Numărul maxim de linii pe care acest fişier poate să le "
-#~ "conţină."
-
-#~ msgid "HISTSIZE The maximum number of history lines that a running"
-#~ msgstr ""
-#~ "HISTSIZE Numărul maxim de linii de istoric care pot fi accesate"
-
-#~ msgid "\t\tshell can access."
-#~ msgstr "\t\tde un shell activ."
-
-#~ msgid "HOME The complete pathname to your login directory."
-#~ msgstr "HOME Calea completă către directorul vostru de login."
-
-#~ msgid ""
-#~ "HOSTTYPE The type of CPU this version of Bash is running under."
-#~ msgstr ""
-#~ "HOSTTYPE Tipul de CPU pe care rulează această versiune de Bash."
-
-#~ msgid ""
-#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF"
-#~ msgstr ""
-#~ "IGNOREEOF Controlează acţiunea shell-ului la întâlnirea unui "
-#~ "caracter"
-
-#~ msgid "\t\tcharacter as the sole input. If set, then the value"
-#~ msgstr ""
-#~ "\t\tEOF ca singură intrare(input). Dacă este setat, atunci valoarea"
-
-#~ msgid "\t\tof it is the number of EOF characters that can be seen"
-#~ msgstr "\t\tacestuia este numărul de caractere EOF care pot fi întâlnite"
-
-#~ msgid "\t\tin a row on an empty line before the shell will exit"
-#~ msgstr "\t\tpe rând într-o linie vidă înainte de ieşirea shell-ului."
-
-#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input."
-#~ msgstr ""
-#~ "\t\t(implicit 10). Când este desetat(unset), EOF semnifică sfârşitul "
-#~ "intrării(input)."
-
-#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
-#~ msgstr ""
-#~ "MAILCHECK\tCât de des, în secunde, Bash-ul să verifice dacă există mail "
-#~ "nou."
-
-#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
-#~ msgstr ""
-#~ "MAILPATH\tO listă de fişiere separate prin două-puncte pe care Bash o "
-#~ "verifică"
-
-#~ msgid "\t\tfor new mail."
-#~ msgstr "\t\tpentru mail nou."
-
-#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on."
-#~ msgstr ""
-#~ "OSTYPE\t\tVersiunea de Unix pe care această versiune de Bash rulează."
-
-#~ msgid "PATH A colon-separated list of directories to search when"
-#~ msgstr ""
-#~ "PATH O listă de directoare separată prin două-puncte care se va"
-
-#~ msgid "\t\tlooking for commands."
-#~ msgstr "\t\tindexa în căutarea comenzilor."
-
-#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each"
-#~ msgstr ""
-#~ "PROMPT_COMMAND O comandă care va fi executată înainte de tipărirea "
-#~ "fiecărui"
-
-#~ msgid "\t\tprimary prompt."
-#~ msgstr "\t\tprompt primar."
-
-#~ msgid "PS1 The primary prompt string."
-#~ msgstr "PS1 Åžirul promptului primar."
-
-#~ msgid "PS2 The secondary prompt string."
-#~ msgstr "PS2 Åžirul promptului secundar."
-
-#~ msgid "TERM The name of the current terminal type."
-#~ msgstr "TERM Numele tipului de terminal curent."
-
-#~ msgid "auto_resume Non-null means a command word appearing on a line by"
-#~ msgstr ""
-#~ "auto_resume Dacă nu e vid rezultă că un cuvânt comandă ce apare pe o "
-#~ "linie"
-
-#~ msgid "\t\titself is first looked for in the list of currently"
-#~ msgstr "\t\tsingur este prima dată căutat în lista "
-
-#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded."
-#~ msgstr ""
-#~ "\t\tjoburilor.curente stopate. Dacă este găsit acolo, acel job este adus "
-#~ "în prim-plan(foreground)."
-
-#~ msgid "\t\tA value of `exact' means that the command word must"
-#~ msgstr "\t\tO valoare de `exact' înseamnă că acel cuvânt comandă trebuie"
-
-#~ msgid "\t\texactly match a command in the list of stopped jobs. A"
-#~ msgstr ""
-#~ "\t\tsă se potrivească perfect unei comenzi din lista de joburi stopate. O"
-
-#~ msgid "\t\tvalue of `substring' means that the command word must"
-#~ msgstr "\t\tvaloare de `substring' înseamnă că acel cuvânt comandă trebuie"
-
-#~ msgid "\t\tmatch a substring of the job. Any other value means that"
-#~ msgstr ""
-#~ "\t\tsă se potrivească unui subşir al jobului. Orice altă valoare "
-#~ "înseamnă că"
-
-#~ msgid "\t\tthe command must be a prefix of a stopped job."
-#~ msgstr "\t\tacea comandă trebuie să fie prefixul unui job stopat."
-
-#~ msgid "command_oriented_history"
-#~ msgstr "command_oriented_history"
-
-#~ msgid ""
-#~ " Non-null means to save multiple-line commands together on"
-#~ msgstr ""
-#~ " Nevid reprezintă salvarea mai multor linii de comandă "
-#~ "împreună într-o"
-
-#~ msgid " a single history line."
-#~ msgstr " singură linie de istoric."
-
-#~ msgid "histchars Characters controlling history expansion and quick"
-#~ msgstr ""
-#~ "histchars Caractere care controlează expansiunea istoricului şi"
-
-#~ msgid "\t\tsubstitution. The first character is the history"
-#~ msgstr ""
-#~ "\t\tsubstituţii rapide. Primul caracter este caracterul de substituţie al"
-
-#~ msgid "\t\tsubstitution character, usually `!'. The second is"
-#~ msgstr "\t\tistoricului, de obicei `!'. Al doilea este"
-
-#~ msgid "\t\tthe `quick substitution' character, usually `^'. The"
-#~ msgstr "\t\tcaracterul de `quick substitution', de obicei `^'. Al treilea"
-
-#~ msgid "\t\tthird is the `history comment' character, usually `#'."
-#~ msgstr "\t\teste caracterul de `history comment', de obicei `#'."
-
-#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter"
-#~ msgstr ""
-#~ "HISTCONTROL\tSetează o valoare de `ignorespace', care înseamnă să nu"
-
-#~ msgid "\t\tlines which begin with a space or tab on the history"
-#~ msgstr "\t\tintroduci în lista de istoric linii care încep cu un"
-
-#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't"
-#~ msgstr ""
-#~ "\t\tspaţiu sau un tab. Setează o valoare de `ignoredups', care înseamnă"
-
-#~ msgid "\t\tenter lines which match the last entered line. Set to"
-#~ msgstr ""
-#~ "\t\ta nu se introduce linii care sunt asemănătoare ultimei linii "
-#~ "introduse."
-
-#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset,"
-#~ msgstr ""
-#~ "\t\tSetează o valaore de `ignoreboth' însemnând combinarea celor două "
-#~ "opţiuni."
-
-#~ msgid "\t\tor set to any other value than those above means to save"
-#~ msgstr ""
-#~ "\t\t Desetat(unset) sau setat la orice altă valoare decât acelea de mai "
-#~ "sus"
-
-#~ msgid "\t\tall lines on the history list."
-#~ msgstr "\t\taînseamnă salvarea tuturor liniilor în lista istoricului."
-
-#~ msgid "Adds a directory to the top of the directory stack, or rotates"
-#~ msgstr ""
-#~ "Adaugă un director în partea superioară a stivei de directoare, sau "
-#~ "roteÅŸte"
-
-#~ msgid "the stack, making the new top of the stack the current working"
-#~ msgstr "stiva, făcând noul element superior al listei directorul curent"
-
-#~ msgid "directory. With no arguments, exchanges the top two directories."
-#~ msgstr ""
-#~ "de lucru. Fără parametri, interchimbă cele două directoare superioare."
-
-#~ msgid "+N\tRotates the stack so that the Nth directory (counting"
-#~ msgstr "+N\tRoteşte stiva astfel încât al N-ulea director (numărând"
-
-#~ msgid "\tfrom the left of the list shown by `dirs') is at the top."
-#~ msgstr "\tde la stânga listei afişată de `dirs') va fi în vârf(top)."
-
-#~ msgid "-N\tRotates the stack so that the Nth directory (counting"
-#~ msgstr "-N\tRoteşte stiva astfel încât al N-ulea director (numărând"
-
-#~ msgid "\tfrom the right) is at the top."
-#~ msgstr "\tde la dreapta) va fi în vârf."
-
-#~ msgid "-n\tsuppress the normal change of directory when adding directories"
-#~ msgstr ""
-#~ "-n\tinhibă schimbarea normală de directoare la adăugarea directoarelor"
-
-#~ msgid "\tto the stack, so only the stack is manipulated."
-#~ msgstr "\tîn stivă, astfel încât doar stiva să fie manipulată."
-
-#~ msgid "dir\tadds DIR to the directory stack at the top, making it the"
-#~ msgstr "dir\tadaugă DIR în vârful stivei de directoare, făcându-l"
-
-#~ msgid "You can see the directory stack with the `dirs' command."
-#~ msgstr "Puteţi vedea stiva de directoare cu ajutorul comenzii `dirs'."
-
-#~ msgid "Removes entries from the directory stack. With no arguments,"
-#~ msgstr "Şterge intrările din stiva de directoare. Fără parametri, "
-
-#~ msgid "removes the top directory from the stack, and cd's to the new"
-#~ msgstr "şterge directorul superior din stivă, şi face cd la noul"
-
-#~ msgid "+N\tremoves the Nth entry counting from the left of the list"
-#~ msgstr "+N\tşterge al N-ulea element numărând din stânga listei"
-
-#~ msgid "\tshown by `dirs', starting with zero. For example: `popd +0'"
-#~ msgstr "\tafişate de `dirs', începând cu zero. De exemplu: `popd +0'"
-
-#~ msgid "\tremoves the first directory, `popd +1' the second."
-#~ msgstr "\tÅŸterge primul director, `popd +1' al doilea."
-
-#~ msgid "-N\tremoves the Nth entry counting from the right of the list"
-#~ msgstr "-N\tşterge al N-ulea element numărând din dreapta listei"
-
-#~ msgid "\tshown by `dirs', starting with zero. For example: `popd -0'"
-#~ msgstr "\tafişate de `dirs', începând cu zero. De exemplu: `popd -0'"
-
-#~ msgid "\tremoves the last directory, `popd -1' the next to last."
-#~ msgstr "\tÅŸterge ultimul director, `popd -1' penultimul."
-
-#~ msgid ""
-#~ "-n\tsuppress the normal change of directory when removing directories"
-#~ msgstr ""
-#~ "-n\tinhibă schimbarea normală de directoare când se şterg diurectoare"
-
-#~ msgid "\tfrom the stack, so only the stack is manipulated."
-#~ msgstr "\tdin stivă, astfel încât numai stiva să fie manipulată."
-
-#~ msgid "Display the list of currently remembered directories. Directories"
-#~ msgstr "Afişează lista curentă de directoare reţinute. Directoarele"
-
-#~ msgid "find their way onto the list with the `pushd' command; you can get"
-#~ msgstr ""
-#~ "îşi gasesc locul în listă cu ajutorul comenzii `pushd'; puteţi merge"
-
-#~ msgid "back up through the list with the `popd' command."
-#~ msgstr "prin listă cu ajutorul comenzii `popd'."
-
-#~ msgid ""
-#~ "The -l flag specifies that `dirs' should not print shorthand versions"
-#~ msgstr ""
-#~ "Parametrul(flag) -l specifică faptul că `dirs' nu ar trebui să "
-#~ "tipărească "
-
-#~ msgid ""
-#~ "of directories which are relative to your home directory. This means"
-#~ msgstr ""
-#~ "versiuni prescurtate ale directoarelor care au legătură(relative) cu home-"
-#~ "directory-ul."
-
-#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag"
-#~ msgstr ""
-#~ " Aceasta înseamnă că `~/bin' poate fi afişat ca `/homes/bfox/bin' "
-#~ "Parametrul"
-
-#~ msgid "causes `dirs' to print the directory stack with one entry per line,"
-#~ msgstr ""
-#~ "-v face ca `dirs' să afişeze stiva de directoare doar câte o intrare pe "
-#~ "linie,"
-
-#~ msgid ""
-#~ "prepending the directory name with its position in the stack. The -p"
-#~ msgstr "prefixând numele directorului cu poziţia în stivă. Parametrul -p"
-
-#~ msgid "flag does the same thing, but the stack position is not prepended."
-#~ msgstr "face acelaşi lucru, dar poziţia în stivă nu este prefix."
-
-#~ msgid ""
-#~ "The -c flag clears the directory stack by deleting all of the elements."
-#~ msgstr ""
-#~ "Parametrul(flag) -c ÅŸterge stiva de directoare prin ÅŸtergerea tuturor "
-#~ "elementelor."
-
-#~ msgid ""
-#~ "+N\tdisplays the Nth entry counting from the left of the list shown by"
-#~ msgstr "+N\tafişează a N-a intrare numărând de la stânga listei afişate de"
-
-#~ msgid "\tdirs when invoked without options, starting with zero."
-#~ msgstr "\tdirs atunci când e invocată fără opţiuni, începând cu zero."
-
-#~ msgid ""
-#~ "-N\tdisplays the Nth entry counting from the right of the list shown by"
-#~ msgstr "-N\tafişează a N-a intrare numărând de la dreapta listei afişate de"
-
-#~ msgid "Toggle the values of variables controlling optional behavior."
-#~ msgstr ""
-#~ "Schimbă(toggle) valorile variabilelor, controlând comportamentul opţional."
-
-#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
-#~ msgstr ""
-#~ "Parametrul -s înseamnă activarea(setarea) fiecărei NUME_OPT; parametrul -u"
-
-#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit"
-#~ msgstr "desetează(unset) fiecare NUME_OPT. Parametrul -q inhibă output-ul;"
-
-#~ msgid "status indicates whether each OPTNAME is set or unset. The -o"
-#~ msgstr ""
-#~ "starea de ieşire indică dacă fiecare NUME_OPT este setat sau desetat."
-
-#~ msgid "option restricts the OPTNAMEs to those defined for use with"
-#~ msgstr ""
-#~ " Parametrul -o restricţionează NUME_OPT la acelea definite pentru a fi "
-
-#~ msgid "`set -o'. With no options, or with the -p option, a list of all"
-#~ msgstr ""
-#~ "folosite cu `set -o'. Fără nici o opţiune, sau cu opţiunea -p, este "
-#~ "afişată"
-
-#~ msgid "settable options is displayed, with an indication of whether or"
-#~ msgstr ""
-#~ "o listă a tuturor opţiunilor setabile, ceea ce indică dacă fiecare este"
-
-#~ msgid "not each is set."
-#~ msgstr "setată sau nu."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: cheie de matrice asociativă nevalidă"
diff --git a/po/ru.gmo b/po/ru.gmo
index e1f1613e..ec59728a 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 56e477b7..4cf2cbc5 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 5.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2021-02-17 11:04+0200\n"
"Last-Translator: Pavlo Marianov <acid@jack.kiev.ua>\n"
"Language-Team: Russian <gnu@d07.ru>\n"
@@ -17,64 +17,61 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 2.2.1\n"
#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "неправильный Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: удалÑетÑÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: не удаётÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ Ð² аÑÑоциативный маÑÑив"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: недопуÑтимый ключ аÑÑоциативного маÑÑива"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить значение нечиÑловому индекÑу"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
-msgstr "%s: %s: необходимо иÑпользовать Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸ назначении аÑÑоциативному маÑÑиву"
+msgstr ""
+"%s: %s: необходимо иÑпользовать Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸ назначении аÑÑоциативному маÑÑиву"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: не удаётÑÑ Ñоздать файл: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ раÑкладку Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: первый непробельный Ñимвол не ÑвлÑетÑÑ Â«\"»"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "нет закрывающего «%c» в %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: отÑутÑтвует разделитель-двоеточие"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "«%s»: не удаётÑÑ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ привÑзку в keymap команды"
@@ -94,7 +91,7 @@ msgstr "раÑширение Ñкобки: не удалоÑÑŒ выделить
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "раÑширение Ñкобки: не удалоÑÑŒ выделить памÑÑ‚ÑŒ Ð´Ð»Ñ Â«%s»"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "«%s»: недопуÑтимый пÑевдоним"
@@ -167,7 +164,7 @@ msgstr ""
msgid "HOME not set"
msgstr "Ðе задана Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ HOME"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "Ñлишком много аргументов"
@@ -194,7 +191,7 @@ msgstr "предупреждение: "
msgid "%s: usage: "
msgstr "%s: иÑпользование: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚"
@@ -209,7 +206,7 @@ msgstr "%s: требуетÑÑ Ñ‡Ð¸Ñловой аргумент"
msgid "%s: not found"
msgstr "%s: не найден"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: недопуÑтимый параметр"
@@ -219,7 +216,7 @@ msgstr "%s: недопуÑтимый параметр"
msgid "%s: invalid option name"
msgstr "%s: недопуÑтимое название параметра"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "«%s»: Ñто недопуÑтимый идентификатор"
@@ -232,7 +229,7 @@ msgstr "недопуÑтимое воÑьмеричное чиÑло"
msgid "invalid hex number"
msgstr "недопуÑтимое шеÑтнадцатеричное чиÑло"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "недопуÑтимое чиÑло"
@@ -246,88 +243,93 @@ msgstr "%s: недопуÑтимое указание Ñигнала"
msgid "`%s': not a pid or valid job spec"
msgstr "«%s»: Ñто не идентификатор процеÑÑа и не допуÑтимый указатель заданиÑ"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s за пределами диапазона"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "аргумент"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s за пределами диапазона"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: нет такого заданиÑ"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: нет ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñми"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "нет ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñми"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: ограниченный режим"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "ограниченный режим"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: Ñто не не вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° bash"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "ошибка запиÑи: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "ошибка Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² терминала: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² терминала: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: ошибка Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ каталога: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: неоднозначный указатель заданиÑ"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "Ñправка отÑутÑтвует в Ñтой верÑии"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ: %s доÑтупен только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ"
@@ -337,108 +339,108 @@ msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ"
msgid "%s: invalid action name"
msgstr "%s: недопуÑтимое название дейÑтвиÑ"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: нет Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "предупреждение: параметр -F может работать не так, как ожидаетÑÑ"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "предупреждение: параметр -C может работать не так, как ожидаетÑÑ"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ðµ выполнÑет функцию завершениÑ"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "можно иÑпользовать только внутри функции"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "«-f» Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: значение функции можно только Ñчитать"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: ÑÑÑ‹Ð»Ð¾Ñ‡Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ может быть маÑÑивом"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: переменные nameref, ÑÑылающиеÑÑ Ñами на ÑебÑ, не допуÑкаютÑÑ"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: ÐºÑ€ÑƒÐ³Ð¾Ð²Ð°Ñ ÑÑылка на имÑ"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "«%s»: недопуÑтимое название переменной Ð´Ð»Ñ ÑÑылки на имÑ"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "«-f» Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: значение функции можно только Ñчитать"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: приÑвоение ÑоÑтавного маÑÑива в кавычках уÑтарело"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: переменные маÑÑива Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶Ð¸Ñ‚ÑŒ таким образом"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: не удаётÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ аÑÑоциативный маÑÑив в индекÑированный"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: приÑвоение ÑоÑтавного маÑÑива в кавычках уÑтарело"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "динамичеÑÐºÐ°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° недоÑтупна"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ общий объект %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ %s в общем объекте %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: динамичеÑки вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° уже загружена"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "загрузка функции %s завершилаÑÑŒ ошибкой (%d): не загружена"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: не загружаетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑки"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: не удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: Ñто каталог"
@@ -453,7 +455,7 @@ msgstr "%s: Ñто не обычный файл"
msgid "%s: file is too large"
msgstr "%s: файл Ñлишком велик"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить бинарный файл"
@@ -546,15 +548,18 @@ msgstr ""
#: builtins/help.def:185
#, c-format
-msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr "нет разделов Ñправки, ÑоответÑтвующих «%s». Попробуйте ввеÑти «help help» или «man -k %s» или «info %s»."
+msgid ""
+"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr ""
+"нет разделов Ñправки, ÑоответÑтвующих «%s». Попробуйте ввеÑти «help help» "
+"или «man -k %s» или «info %s»."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -565,29 +570,32 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
-"Показанные ниже команды определены внутри командного процеÑÑора. Чтобы вывеÑти полный ÑпиÑок, введите «help».\n"
+"Показанные ниже команды определены внутри командного процеÑÑора. Чтобы "
+"вывеÑти полный ÑпиÑок, введите «help».\n"
"Чтобы вывеÑти Ñправку по функции «name», введите «help name».\n"
"Чтобы вывеÑти Ñправку по командному процеÑÑору, введите «info bash».\n"
-"Чтобы вывеÑти Ñправку по командам, которые отÑутÑтвуют в Ñтом ÑпиÑке, введите «man -k» или «info».\n"
+"Чтобы вывеÑти Ñправку по командам, которые отÑутÑтвуют в Ñтом ÑпиÑке, "
+"введите «man -k» или «info».\n"
"\n"
-"Звёздочка (*) Ñ€Ñдом Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ команды означает, что Ñта команда отключена.\n"
+"Звёздочка (*) Ñ€Ñдом Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ команды означает, что Ñта команда "
+"отключена.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать больше одного параметра -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "положение журнала команд"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¼ÐµÑ‚ÐºÐ° времени"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: не удалоÑÑŒ раÑширить журнал команд"
@@ -610,78 +618,78 @@ msgstr "%s: аргументами должны быть идентификатÐ
msgid "Unknown error"
msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "ожидаетÑÑ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: Ñто не индекÑированный маÑÑив"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: недопуÑтимое указание деÑкриптора файла"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: invalid недопуÑтимый деÑкриптор файла: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: недопуÑтимое чиÑло Ñтрок"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: недопуÑтимое начало маÑÑива"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: недопуÑтимый квант обратного вызова"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "пуÑтое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ маÑÑива"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "требуетÑÑ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° переменных маÑÑива"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "«%s»: отÑутÑтвует Ñимвол форматированиÑ"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: недопуÑтимое указание формата времени"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: недопуÑтимый Ñимвол форматированиÑ"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "предупреждение: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "ошибка анализа формата: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "отÑутÑтвует шеÑÑ‚Ð½Ð°Ð´Ñ†Ð°Ñ‚ÐµÑ€Ð¸Ñ‡Ð½Ð°Ñ Ñ†Ð¸Ñ„Ñ€Ð° Ð´Ð»Ñ \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "отÑутÑтвует цифра Юникода Ð´Ð»Ñ \\%c"
@@ -722,10 +730,12 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown "
+"by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown "
+"by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
"Выводит ÑпиÑок запомненных на данный момент каталогов. Каталоги\n"
@@ -773,7 +783,8 @@ msgid ""
msgstr ""
"ДобавлÑет каталог в начало Ñтека каталогов или выполнÑет\n"
" ротацию Ñтека, Ð¿Ð¾Ð¼ÐµÑ‰Ð°Ñ Ð² начало Ñтека текущий рабочий\n"
-" каталог. ЕÑли аргументы не указаны, менÑет меÑтами два первых каталога.\n"
+" каталог. ЕÑли аргументы не указаны, менÑет меÑтами два первых "
+"каталога.\n"
" \n"
" Параметры:\n"
" -n\tпредотвращает обычное изменение каталога при добавлении\n"
@@ -831,12 +842,12 @@ msgstr ""
" \n"
" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: недопуÑтимое указание тайм-аута"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "ошибка чтениÑ: %d: %s"
@@ -849,7 +860,7 @@ msgstr "возврат можно выполнить только из функÑ
msgid "cannot simultaneously unset a function and a variable"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ ÑброÑить функцию и переменную"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: Ñто не Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¼Ð°ÑÑива"
@@ -868,11 +879,11 @@ msgstr "%s: не удаётÑÑ ÑкÑпортировать"
msgid "shift count"
msgstr "Ñчётчик Ñмещений"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ задать и ÑброÑить параметры командного процеÑÑора"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: недопуÑтимое название параметра командного процеÑÑора"
@@ -939,16 +950,16 @@ msgstr "%s: недопуÑтимый аргумент ограничениÑ"
msgid "`%c': bad command"
msgstr "«%c»: недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: не удаётÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ ограничение: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "ограничение"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ ограничение: %s"
@@ -967,7 +978,7 @@ msgstr "«%c»: недопуÑтимый оператор Ñимвольного
msgid "`%c': invalid symbolic mode character"
msgstr "«%c»: недопуÑтимый знак Ñимвольного режима"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " Ñтрока "
@@ -987,96 +998,108 @@ msgstr "Прерывание..."
msgid "INFORM: "
msgstr "ИÐФО: "
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "предупреждение: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° команды"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "неверный тип команды"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "неверный Ñоединитель"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "ошибка перехода"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: не заданы границы переменной"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aпревышено Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°: auto-logout\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "не удаётÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ Ñтандартный ввод из /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c»: недопуÑтимый Ñимвол форматированиÑ"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] вÑÑ‘ ещё ÑущеÑтвует"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "ошибка конвейера"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: доÑтигнут макÑимальный уровень вложенноÑти eval (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: доÑтигнут макÑимальный уровень вложенноÑти source (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: доÑтигнут макÑимальный уровень вложенноÑти функций (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s: ограниченный режим: в названиÑÑ… команд Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать коÑую черту «/»"
+msgstr ""
+"%s: ограниченный режим: в названиÑÑ… команд Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать коÑую черту "
+"«/»"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: команда не найдена"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить бинарный файл"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: неверный интерпретатор"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить бинарный файл: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "«%s»: Ñто ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "не удаётÑÑ Ñкопировать файловый деÑкриптор %d в %d"
@@ -1089,68 +1112,69 @@ msgstr "Ñлишком много вложенных выражений"
msgid "recursion stack underflow"
msgstr "отрицательное переполнение Ñтека вложенных выражений"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в выражении"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "значение можно приÑвоить только переменной"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в назначении переменной"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "деление на 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "ошибка: недопуÑтимый маркер приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "в уÑловном выражении должен быть Ñимвол «:»"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "ÑкÑпонента меньше нулÑ"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "поÑле предварительного инкремента или декремента ожидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ "
+msgstr ""
+"поÑле предварительного инкремента или декремента ожидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ "
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "отÑутÑтвует Ñимвол «)»"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ожидаетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "ошибка ÑинтакÑиÑа: недопуÑтимый математичеÑкий оператор"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (неверный маркер «%s»)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "недопуÑтимое математичеÑкое оÑнование"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð½Ñтанта"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "Ñлишком большое значение Ð´Ð»Ñ Ð¾ÑнованиÑ"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: ошибка выражениÑ\n"
@@ -1159,7 +1183,7 @@ msgstr "%s: ошибка выражениÑ\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: нет доÑтупа к родительÑким каталогам"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "не удаётÑÑ ÑброÑить режим nodelay Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð³Ð¾ деÑкриптора %d"
@@ -1167,7 +1191,9 @@ msgstr "не удаётÑÑ ÑброÑить режим nodelay Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð
#: input.c:266
#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ новый деÑкриптор Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных bash из файлового деÑкриптора %d"
+msgstr ""
+"не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ новый деÑкриптор Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных bash из файлового "
+"деÑкриптора %d"
#: input.c:274
#, c-format
@@ -1178,167 +1204,171 @@ msgstr "save_bash_input: у нового файлового деÑкриптор
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "идентификатор дочернего процеÑÑа %d принадлежит запущенному заданию %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "удаление оÑтановленного Ð·Ð°Ð´Ð°Ð½Ð¸Ñ %d Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ процеÑÑа %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr "add_process: процеÑÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ %5ld (%s) помечен как вÑÑ‘ ещё активный"
+msgstr ""
+"add_process: процеÑÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ %5ld (%s) помечен как вÑÑ‘ ещё активный"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: нет процеÑÑа Ñ Ñ‚Ð°ÐºÐ¸Ð¼ идентификатором"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Сигнал %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Завершён"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "ОÑтановлен"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "ОÑтановлен (%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Запущен"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Завершён (%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Выход %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "СоÑтоÑние неизвеÑтно"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(образ памÑти Ñброшен на диÑк) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (рабочий каталог: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "дочерний setpgid (%ld к %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
-msgstr "wait: процеÑÑ %ld не ÑвлÑетÑÑ Ð´Ð¾Ñ‡ÐµÑ€Ð½Ð¸Ð¼ процеÑÑом Ñтого командного процеÑÑора"
+msgstr ""
+"wait: процеÑÑ %ld не ÑвлÑетÑÑ Ð´Ð¾Ñ‡ÐµÑ€Ð½Ð¸Ð¼ процеÑÑом Ñтого командного процеÑÑора"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: нет запиÑей процеÑÑа %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: задание %d оÑтановлено"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: нет текущих заданий"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: выполнение Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ð¾"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: задание %d уже выполнÑетÑÑ Ð² фоновом режиме"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr "waitchld: включаетÑÑ WNOHANG, чтобы предотвратить поÑвление неопределённого блока"
+msgstr ""
+"waitchld: включаетÑÑ WNOHANG, чтобы предотвратить поÑвление неопределённого "
+"блока"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: Ñтрока %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (образ памÑти Ñброшен на диÑк)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(рабочий каталог: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: ошибка вызова getpgrp "
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÑÑ‚ÑŒ заданиÑми в фоновом режиме"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: диÑциплина Ñтроки"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "не удаётÑÑ Ð·Ð°Ð´Ð°Ñ‚ÑŒ группу процеÑÑа терминала (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "Ñтот командный процеÑÑор не может управлÑÑ‚ÑŒ заданиÑми"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: ошибка утверждениÑ: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1347,47 +1377,51 @@ msgstr ""
"\\r\n"
"malloc: %s:%d: утверждение не удалоÑÑŒ\\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "неизвеÑтно"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: блок в ÑпиÑке Ñвободных затёрт"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ уже оÑвобождённого блока"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ невыделенного блока"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
-msgstr "free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами диапазона"
+msgstr ""
+"free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами "
+"диапазона"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: обнаружено отрицательное переполнение; magic8 повреждён"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: размеры начального и конечного блока отличаютÑÑ"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ невыделенного блока"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr "realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами диапазона"
+msgstr ""
+"realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами "
+"диапазона"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: обнаружено отрицательное переполнение; magic8 повреждён"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: размеры начального и конечного блока отличаютÑÑ"
@@ -1429,22 +1463,22 @@ msgstr "%s: недопуÑтимое указание Ñетевого пути"
msgid "network operations not supported"
msgstr "Ñетевые операции не поддерживаютÑÑ"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s): %s"
@@ -1462,136 +1496,142 @@ msgstr "Ð”Ð»Ñ Ð²Ð°Ñ ÐµÑÑ‚ÑŒ почта в $_"
msgid "The mail in %s has been read\n"
msgstr "Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² %s были прочитаны\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: требуетÑÑ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкое выражение"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ожидаетÑÑ Â«;»"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: «((%s))»"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: недопуÑтимый тип инÑтрукции %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "блок here-document в Ñтроке %d разделён знаком конца файла (ожидалÑÑ Â«%s»)"
+msgstr ""
+"блок here-document в Ñтроке %d разделён знаком конца файла (ожидалÑÑ Â«%s»)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr "make_redirection: инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Â«%d» вышла за пределы диапазона"
+msgstr ""
+"make_redirection: инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Â«%d» вышла за пределы диапазона"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
-msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
-msgstr "shell_getc: shell_input_line_size (%zu) превыÑил SIZE_MAX (%lu): Ñтрока обрезана"
+msgid ""
+"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
+"truncated"
+msgstr ""
+"shell_getc: shell_input_line_size (%zu) превыÑил SIZE_MAX (%lu): Ñтрока "
+"обрезана"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "доÑтигнуто макÑимальное чиÑло переменных here-document"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «%c»"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «]]»"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в уÑловном выражении: неожиданный маркер «%s»"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в уÑловном выражении"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "неожиданный маркер «%s», ожидалÑÑ Â«)»"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "ожидаетÑÑ Ñимвол «)»"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "неожиданный аргумент «%s» Ð´Ð»Ñ ÑƒÑловного унарного оператора"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "неожиданный аргумент Ð´Ð»Ñ ÑƒÑловного унарного оператора"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "неожиданный маркер «%s», ожидаетÑÑ ÑƒÑловный бинарный оператор"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "ожидаетÑÑ ÑƒÑловный бинарный оператор"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "неожиданный аргумент «%s» Ð´Ð»Ñ ÑƒÑловного бинарного оператора"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "неожиданный аргумент Ð´Ð»Ñ ÑƒÑловного бинарного оператора"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "неожиданный маркер «%c» в уÑловной команде"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "неожиданный маркер «%s» в уÑловной команде"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "неожиданный маркер %d в уÑловной команде"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ñдом Ñ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¼ маркером «%s»"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ñдом Ñ Â«%s»"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неожиданный конец файла"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Ð”Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° из командного процеÑÑора иÑпользуйте «%s».\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «)»"
@@ -1629,94 +1669,94 @@ msgstr "xtrace_set: пуÑтой указатель на файл"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: недопуÑтимый Ñимвол форматированиÑ"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "файловый деÑкриптор за пределами диапазона"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: неоднозначное перенаправление"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: не удаётÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñать ÑущеÑтвующий файл"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ограниченный режим: не удаётÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ вывод"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "не удаётÑÑ Ñоздать временный файл Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÐ° here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить файловый деÑкриптор переменной"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port не поддерживаетÑÑ Ð±ÐµÐ· Ñети"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "ошибка перенаправлениÑ: не удаётÑÑ Ñоздать копию файлового деÑкриптора"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "не удалоÑÑŒ найти /tmp; Ñоздайте Ñтот каталог"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp должен быть допуÑтимым названием каталога"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "режим печати игнорируетÑÑ Ð² интерактивных командных процеÑÑорах"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: недопуÑтимый параметр"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "не удаётÑÑ ÑƒÑтановить UID %d: Ñффективный UID %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "не удаётÑÑ ÑƒÑтановить GID %d: Ñффективный GID %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить отладчик: режим отладки отключён"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Ñто каталог"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Ðе удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ название"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, верÑÐ¸Ñ %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1725,317 +1765,329 @@ msgstr ""
"ИÑпользование:\t%s [длинные параметры GNU] [параметры] ...\n"
"\t\t%s [длинные параметры GNU] [параметры] файл_Ñкрипта ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Длинные параметры GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Параметры командного процеÑÑора:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr "\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуÑке)\n"
+msgstr ""
+"\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуÑке)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s или -o параметр\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr "Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о параметрах командного процеÑÑора введите «%s -c \"help set\"».\n"
+msgstr ""
+"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о параметрах командного процеÑÑора "
+"введите «%s -c \"help set\"».\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr "Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о вÑтроенных командах введите «%s -c help».\n"
+msgstr ""
+"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о вÑтроенных командах введите «%s -c "
+"help».\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Ð”Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ñообщений об ошибках иÑпользуйте команду «bashbug».\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "ДомашнÑÑ Ñтраница bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr "ÐžÐ±Ñ‰Ð°Ñ Ñправка по иÑпользованию программ GNU: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"ÐžÐ±Ñ‰Ð°Ñ Ñправка по иÑпользованию программ GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Фиктивный Ñигнал"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Отбой"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Прерывание"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Выход"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑтрукциÑ"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "ТраÑÑа/ловушка BPT"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "ИÑключение при обработке чиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Убит"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Ошибка шины"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Ошибка Ñегментации"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Ðеверный ÑиÑтемный вызов"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Конвейер не работает"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Сигнал чаÑов"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Прерван"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Срочное Ñобытие ввода/вывода"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "ОÑтановлен (Ñигналом)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Продолжение"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Смерть или оÑтановка дочернего процеÑÑа"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "ОÑтановлен (ввод Ñ tty)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "ОÑтановлен (вывод на tty)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "Готов к вводу/выводу"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Ограничение ЦП"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Ограничение величины файла"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Сигнал чаÑов (виртуальный)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Сигнал чаÑов (профиль)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Окно изменено"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "ЗапиÑÑŒ блокирована"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Сигнал Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Сигнал Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Ожидание входных данных HFT"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "неизбежна ошибка питаниÑ"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "неизбежно падение ÑиÑтемы"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "процеÑÑ Ð¿ÐµÑ€ÐµÐ½Ð¾ÑитÑÑ Ð½Ð° другой ЦП"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "УÑтановлен режим монитора HFT"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "Выход из режима монитора HFT"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "ПоÑледовательноÑÑ‚ÑŒ звуков HFT завершена"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Информационный запроÑ"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "ÐеизвеÑтный номер Ñигнала %d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка: нет закрывающей «%s» в %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить ÑпиÑок Ñлементу маÑÑива"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "не удаётÑÑ Ñоздать конвейер Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки процеÑÑа"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "не удаётÑÑ Ñоздать дочерний процеÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ именованный конвейер %s Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ именованный конвейер %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "не удаётÑÑ Ñкопировать именованный конвейер %s в файловый деÑкриптор %d"
+msgstr ""
+"не удаётÑÑ Ñкопировать именованный конвейер %s в файловый деÑкриптор %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "подÑтановка команды: во входных данных проигнорирован нулевой байт"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "не удаётÑÑ Ñоздать конвейер Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команды"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "не удаётÑÑ Ñоздать дочерний процеÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команды"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "command_substitute: не удаётÑÑ Ñкопировать конвейер в файловый деÑкриптор 1"
+msgstr ""
+"command_substitute: не удаётÑÑ Ñкопировать конвейер в файловый деÑкриптор 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: недопуÑтимое название переменной Ð´Ð»Ñ ÑÑылки на имÑ"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: недопуÑтимое непрÑмое раÑкрытие"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: недопуÑтимое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: параметр не задан"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: параметр не задан или пуÑтой"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: заданное подÑтрокой выражение меньше нулÑ"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¿Ð¾Ð´Ñтановка"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: такое приÑвоение невозможно"
-#: subst.c:9814
-msgid "future versions of the shell will force evaluation as an arithmetic substitution"
-msgstr "в будущих верÑиÑÑ… командный процеÑÑор оценка будет выполнÑÑ‚ÑŒÑÑ ÐºÐ°Ðº математичеÑÐºÐ°Ñ Ð¿Ð¾Ð´Ñтановка"
+#: subst.c:10111
+msgid ""
+"future versions of the shell will force evaluation as an arithmetic "
+"substitution"
+msgstr ""
+"в будущих верÑиÑÑ… командный процеÑÑор оценка будет выполнÑÑ‚ÑŒÑÑ ÐºÐ°Ðº "
+"математичеÑÐºÐ°Ñ Ð¿Ð¾Ð´Ñтановка"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка: нет закрывающей «`» в %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "нет Ñовпадений: %s"
@@ -2058,21 +2110,21 @@ msgstr "ожидаетÑÑ Ñимвол «)»"
msgid "`)' expected, found %s"
msgstr "ожидаетÑÑ Ñимвол «)», обнаружено %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: ожидаетÑÑ Ð±Ð¸Ð½Ð°Ñ€Ð½Ñ‹Ð¹ оператор"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: ожидаетÑÑ ÑƒÐ½Ð°Ñ€Ð½Ñ‹Ð¹ оператор"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "отÑутÑтвует Ñимвол «]»"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неожиданный «%s»"
@@ -2081,103 +2133,121 @@ msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неожиданный «%s»
msgid "invalid signal number"
msgstr "недопуÑтимый номер Ñигнала"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "обработка ловушек: доÑтигнут макÑимальный уровень вложенноÑти обработки ловушек (%d)"
+msgstr ""
+"обработка ловушек: доÑтигнут макÑимальный уровень вложенноÑти обработки "
+"ловушек (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: неверное значение в trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
-msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr "run_pending_traps: обработчик Ñигнала — SIG_DFL; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ° %d (%s) Ñамому Ñебе"
+msgid ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr ""
+"run_pending_traps: обработчик Ñигнала — SIG_DFL; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ° %d (%s) "
+"Ñамому Ñебе"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: неверный Ñигнал %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "ошибка импорта Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ð´Ð»Ñ Â«%s»"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "Ñлишком выÑокий уровень командного процеÑÑора (%d); ÑбраÑываетÑÑ Ð´Ð¾ 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: в текущей облаÑти отÑутÑтвует контекÑÑ‚ функции"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: переменной не может быть приÑвоено значение"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: целое чиÑле приÑваиваетÑÑ ÑÑылке на имÑ"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: в текущей облаÑти отÑутÑтвует контекÑÑ‚ функции"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s имеет пуÑтую exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "недопуÑтимый Ñимвол %d в exportstr Ð´Ð»Ñ %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "отÑутÑтвует «=» в exportstr Ð´Ð»Ñ %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
-msgstr "pop_var_context: заголовок shell_variables не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñ‚ÐµÐºÑтом функции"
+msgstr ""
+"pop_var_context: заголовок shell_variables не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñ‚ÐµÐºÑтом функции"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: отÑутÑтвует контекÑÑ‚ global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr "pop_scope: заголовок shell_variables не ÑвлÑетÑÑ Ð¾Ð±Ð»Ð°Ñтью временного окружениÑ"
+msgstr ""
+"pop_scope: заголовок shell_variables не ÑвлÑетÑÑ Ð¾Ð±Ð»Ð°Ñтью временного "
+"окружениÑ"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ как ФÐЙЛ"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: недопуÑтимое значение Ð´Ð»Ñ Ð´ÐµÑкриптора файла траÑÑировки"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: значение ÑовмеÑтимоÑти за пределами диапазона"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "© Free Software Foundation, Inc, 2020."
#: version.c:47 version2.c:47
-msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
-msgstr "Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ GPLv3+: GNU GPL верÑии 3 или более поздней <http://gnu.org/licenses/gpl.html>\n"
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+msgstr ""
+"Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ GPLv3+: GNU GPL верÑии 3 или более поздней <http://gnu.org/licenses/"
+"gpl.html>\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2186,7 +2256,9 @@ msgstr "GNU bash, верÑÐ¸Ñ %s (%s)\n"
#: version.c:91 version2.c:91
msgid "This is free software; you are free to change and redistribute it."
-msgstr "Это Ñвободное программное обеÑпечение. Ð’Ñ‹ можете изменÑÑ‚ÑŒ и раÑпроÑтранÑÑ‚ÑŒ его."
+msgstr ""
+"Это Ñвободное программное обеÑпечение. Ð’Ñ‹ можете изменÑÑ‚ÑŒ и раÑпроÑтранÑÑ‚ÑŒ "
+"его."
#: version.c:92 version2.c:92
msgid "There is NO WARRANTY, to the extent permitted by law."
@@ -2221,8 +2293,13 @@ msgid "unalias [-a] name [name ...]"
msgstr "unalias [-a] Ð¸Ð¼Ñ [Ð¸Ð¼Ñ ...]"
#: builtins.c:53
-msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr "bind [-lpvsPSVX] [-m раÑкладка] [-f файл] [-q имÑ] [-u name] [-r поÑлед_клавиш] [-x поÑлед_клавиш:команда_shell] [поÑлед_клавиш:фнкц_readline или команда_readline]"
+msgid ""
+"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
+"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr ""
+"bind [-lpvsPSVX] [-m раÑкладка] [-f файл] [-q имÑ] [-u name] [-r "
+"поÑлед_клавиш] [-x поÑлед_клавиш:команда_shell] [поÑлед_клавиш:фнкц_readline "
+"или команда_readline]"
#: builtins.c:56
msgid "break [n]"
@@ -2253,11 +2330,17 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] команда [аргумент ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgiIlnrtux] [-p] [имÑ[=значение] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgiIlnrtux] [-p] имÑ[=значение] ..."
#: builtins.c:82
@@ -2298,7 +2381,9 @@ msgstr "logout [n]"
#: builtins.c:105
msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr "fc [-e редактор] [-lnr] [перваÑ] [поÑледнÑÑ] или fc -s [шаблон=замена] [команда]"
+msgstr ""
+"fc [-e редактор] [-lnr] [перваÑ] [поÑледнÑÑ] или fc -s [шаблон=замена] "
+"[команда]"
#: builtins.c:109
msgid "fg [job_spec]"
@@ -2317,8 +2402,12 @@ msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [шаблон ...]"
#: builtins.c:123
-msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
-msgstr "history [-c] [-d Ñмещение] [n] или history -anrw [файл] или history -ps аргумент [аргумент...]"
+msgid ""
+"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
+"[arg...]"
+msgstr ""
+"history [-c] [-d Ñмещение] [n] или history -anrw [файл] или history -ps "
+"аргумент [аргумент...]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2329,23 +2418,32 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
msgstr "disown [-h] [-ar] [задание ... | pid ...]"
#: builtins.c:134
-msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
-msgstr "kill [-s назв_Ñигнала | -n номер_Ñигнала | -назв_Ñигнала] ид_процеÑÑа | назв_заданиÑ] ... или kill -l [назв_Ñигнала]"
+msgid ""
+"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
+"[sigspec]"
+msgstr ""
+"kill [-s назв_Ñигнала | -n номер_Ñигнала | -назв_Ñигнала] ид_процеÑÑа | "
+"назв_заданиÑ] ... или kill -l [назв_Ñигнала]"
#: builtins.c:136
msgid "let arg [arg ...]"
msgstr "let аргумент [аргумент ...]"
#: builtins.c:138
-msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
-msgstr "read [-ers] [-a маÑÑив] [-d разделитель] [-i текÑÑ‚] [-n чиÑло_Ñимволов] [-N чиÑло_Ñимволов] [-p приглашение] [-t тайм-аут] [-u fd] [Ð¸Ð¼Ñ ...]"
+msgid ""
+"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
+"prompt] [-t timeout] [-u fd] [name ...]"
+msgstr ""
+"read [-ers] [-a маÑÑив] [-d разделитель] [-i текÑÑ‚] [-n чиÑло_Ñимволов] [-N "
+"чиÑло_Ñимволов] [-p приглашение] [-t тайм-аут] [-u fd] [Ð¸Ð¼Ñ ...]"
#: builtins.c:140
msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o параметр] [--] [аргумент ...]"
#: builtins.c:144
@@ -2393,7 +2491,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] Ð¸Ð¼Ñ [Ð¸Ð¼Ñ ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничение]"
#: builtins.c:174
@@ -2429,15 +2528,21 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
msgstr "case СЛОВО in [ШÐБЛОР[| ШÐБЛОÐ]...) КОМÐÐДЫ ;;]... esac"
#: builtins.c:194
-msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
-msgstr "if КОМÐÐДЫ; then КОМÐÐДЫ; [ elif КОМÐÐДЫ; then КОМÐÐДЫ; ]... [ else КОМÐÐДЫ; ] fi"
+msgid ""
+"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
+"COMMANDS; ] fi"
+msgstr ""
+"if КОМÐÐДЫ; then КОМÐÐДЫ; [ elif КОМÐÐДЫ; then КОМÐÐДЫ; ]... [ else "
+"КОМÐÐДЫ; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while КОМÐÐДЫ; do КОМÐÐДЫ; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until КОМÐÐДЫ; do КОМÐÐДЫ; done"
#: builtins.c:200
@@ -2466,7 +2571,8 @@ msgstr "[[ выражение ]]"
#: builtins.c:212
msgid "variables - Names and meanings of some shell variables"
-msgstr "переменные — имена и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… переменных командного процеÑÑора"
+msgstr ""
+"переменные — имена и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… переменных командного процеÑÑора"
#: builtins.c:215
msgid "pushd [-n] [+N | -N | dir]"
@@ -2489,24 +2595,43 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v переменнаÑ] формат [аргументы]"
#: builtins.c:231
-msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
-msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o параметр] [-A дейÑтвие] [-G глоб_шаблон] [-W ÑпиÑок_Ñлов] [-F функциÑ] [-C команда] [-X фильтр_шабл] [-P префикÑ] [-S ÑуффикÑ] [Ð¸Ð¼Ñ ...]"
+msgid ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"suffix] [name ...]"
+msgstr ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o параметр] [-A дейÑтвие] [-G "
+"глоб_шаблон] [-W ÑпиÑок_Ñлов] [-F функциÑ] [-C команда] [-X фильтр_шабл] [-P "
+"префикÑ] [-S ÑуффикÑ] [Ð¸Ð¼Ñ ...]"
#: builtins.c:235
-msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr "compgen [-abcdefgjksuv] [-o параметр] [-A дейÑтвие] [-G глоб_шабл] [-W ÑпиÑок_Ñлов] [-F функциÑ] [-C команда] [-X фильтр_шабл] [-P префикÑ] [-S ÑуффикÑ] [Ñлово]"
+msgid ""
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr ""
+"compgen [-abcdefgjksuv] [-o параметр] [-A дейÑтвие] [-G глоб_шабл] [-W "
+"ÑпиÑок_Ñлов] [-F функциÑ] [-C команда] [-X фильтр_шабл] [-P префикÑ] [-S "
+"ÑуффикÑ] [Ñлово]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
msgstr "compopt [-o|+o параметр] [-DEI] [Ð¸Ð¼Ñ ...]"
#: builtins.c:242
-msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
-msgstr "mapfile [-d разделитель] [-n чиÑло] [-O начало] [-s чиÑло] [-t] [-u fd] [-C callback] [-c quantum] [маÑÑив]"
+msgid ""
+"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"mapfile [-d разделитель] [-n чиÑло] [-O начало] [-s чиÑло] [-t] [-u fd] [-C "
+"callback] [-c quantum] [маÑÑив]"
#: builtins.c:244
-msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
-msgstr "readarray [-d разделитель] [-n чиÑло] [-O начало] [-s чиÑло] [-t] [-u fd] [-C callback] [-c quantum] [маÑÑив]"
+msgid ""
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"readarray [-d разделитель] [-n чиÑло] [-O начало] [-s чиÑло] [-t] [-u fd] [-"
+"C callback] [-c quantum] [маÑÑив]"
#: builtins.c:256
msgid ""
@@ -2523,7 +2648,8 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has been\n"
+" alias returns true unless a NAME is supplied for which no alias has "
+"been\n"
" defined."
msgstr ""
"Определение или отображение пÑевдонимов.\n"
@@ -2561,40 +2687,6 @@ msgstr ""
#: builtins.c:291
#, fuzzy
-#| msgid ""
-#| "Set Readline key bindings and variables.\n"
-#| " \n"
-#| " Bind a key sequence to a Readline function or a macro, or set a\n"
-#| " Readline variable. The non-option argument syntax is equivalent to\n"
-#| " that found in ~/.inputrc, but must be passed as a single argument:\n"
-#| " e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-#| " \n"
-#| " Options:\n"
-#| " -m keymap Use KEYMAP as the keymap for the duration of this\n"
-#| " command. Acceptable keymap names are emacs,\n"
-#| " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
-#| " vi-command, and vi-insert.\n"
-#| " -l List names of functions.\n"
-#| " -P List function names and bindings.\n"
-#| " -p List functions and bindings in a form that can be\n"
-#| " reused as input.\n"
-#| " -S List key sequences that invoke macros and their values\n"
-#| " -s List key sequences that invoke macros and their values\n"
-#| " in a form that can be reused as input.\n"
-#| " -V List variable names and values\n"
-#| " -v List variable names and values in a form that can\n"
-#| " be reused as input.\n"
-#| " -q function-name Query about which keys invoke the named function.\n"
-#| " -u function-name Unbind all keys which are bound to the named function.\n"
-#| " -r keyseq Remove the binding for KEYSEQ.\n"
-#| " -f filename Read key bindings from FILENAME.\n"
-#| " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-#| " \t\t\t\tKEYSEQ is entered.\n"
-#| " -X\t\t List key sequences bound with -x and associated commands\n"
-#| " in a form that can be reused as input.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " bind returns 0 unless an unrecognized option is given or an error occurs."
msgid ""
"Set Readline key bindings and variables.\n"
" \n"
@@ -2606,25 +2698,30 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
+"move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their values\n"
-" -s List key sequences that invoke macros and their values\n"
+" -S List key sequences that invoke macros and their "
+"values\n"
+" -s List key sequences that invoke macros and their "
+"values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named function.\n"
+" -u function-name Unbind all keys which are bound to the named "
+"function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated commands\n"
+" -X List key sequences bound with -x and associated "
+"commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
@@ -2633,14 +2730,18 @@ msgstr ""
"Определение привÑзок клавиш и переменных readline.\n"
" \n"
" ПривÑзывает поÑледовательноÑÑ‚ÑŒ клавиш функции readline или макроÑу\n"
-" или задаёт переменную readline. СинтакÑÐ¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð² без параметров аналогичен\n"
-" ÑинтакÑиÑу файла ~/.inputrc, но вÑÑ‘ должно передаватьÑÑ Ð² одном аргументе,\n"
+" или задаёт переменную readline. СинтакÑÐ¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð² без параметров "
+"аналогичен\n"
+" ÑинтакÑиÑу файла ~/.inputrc, но вÑÑ‘ должно передаватьÑÑ Ð² одном "
+"аргументе,\n"
" например bind '\"\\C-x\\C-r\": перечитать-init-файл'.\n"
" \n"
" Параметры:\n"
-" -m раÑкладка иÑпользовать указанную раÑкладку во Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ\n"
+" -m раÑкладка иÑпользовать указанную раÑкладку во Ð²Ñ€ÐµÐ¼Ñ "
+"выполнениÑ\n"
" данной команды. ДопуÑтимые раÑкладки: emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
+"move,\n"
" vi-command и vi-insert.\n"
" -l вывеÑти Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹\n"
" -P вывеÑти Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ и их привÑзки\n"
@@ -2655,16 +2756,19 @@ msgstr ""
" -v вывеÑти имена переменных и их значениÑ\n"
" в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n"
" -q имÑ_функции\t вывеÑти клавиши, вызывающие указанную функцию\n"
-" -u имÑ_функции отвÑзать вÑе клавиши, привÑзанные к указанной функции\n"
+" -u имÑ_функции отвÑзать вÑе клавиши, привÑзанные к указанной "
+"функции\n"
" -r поÑл-клавиш удалить привÑзку Ð´Ð»Ñ Ð¿Ð¾ÑледовательноÑти клавиш\n"
" -f файл прочитать привÑзки из файла\n"
" -x поÑл-клавиш:кмнд-shell выполнить команду bash, еÑли введена\n"
" \t\t\t\tпоÑледовательноÑÑ‚ÑŒ клавиш\n"
-" -X\t\t вывеÑти поÑледовательноÑти клавиш, привÑзанные Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -x, и ÑвÑзанные команды\n"
+" -X\t\t вывеÑти поÑледовательноÑти клавиш, привÑзанные Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -"
+"x, и ÑвÑзанные команды\n"
" в формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n"
" \n"
" СоÑтоÑние выхода:\n"
-" bind возвращает 0, еÑли был указан допуÑтимый параметр или не возникла ошибка."
+" bind возвращает 0, еÑли был указан допуÑтимый параметр или не возникла "
+"ошибка."
#: builtins.c:330
msgid ""
@@ -2678,7 +2782,8 @@ msgid ""
msgstr ""
"Прерывание цикла for, while или until.\n"
" \n"
-" Прерывает цикл for, while или until. ЕÑли указано N, прерывает N вложенных\n"
+" Прерывает цикл for, while или until. ЕÑли указано N, прерывает N "
+"вложенных\n"
" циклов.\n"
" \n"
" СоÑтоÑние выхода:\n"
@@ -2704,22 +2809,13 @@ msgstr ""
#: builtins.c:354
#, fuzzy
-#| msgid ""
-#| "Execute shell builtins.\n"
-#| " \n"
-#| " Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
-#| " lookup. This is useful when you wish to reimplement a shell builtin\n"
-#| " as a shell function, but need to execute the builtin within the function.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-#| " not a shell builtin.."
msgid ""
"Execute shell builtins.\n"
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the function.\n"
+" as a shell function, but need to execute the builtin within the "
+"function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2728,11 +2824,14 @@ msgstr ""
"Выполнение вÑтроенных команд.\n"
" \n"
" ВыполнÑет вÑтроенную команду bash Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸\n"
-" без поиÑка команды. Это полезно, еÑли нужно переопределить вÑтроенную команду\n"
-" как функцию командного процеÑÑора, в Ñтой функции нужно выполнить вÑтроенную команду.\n"
+" без поиÑка команды. Это полезно, еÑли нужно переопределить вÑтроенную "
+"команду\n"
+" как функцию командного процеÑÑора, в Ñтой функции нужно выполнить "
+"вÑтроенную команду.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает ÑоÑтоÑние выхода вÑтроенной команды или ложь, еÑли ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° bash\n"
+" Возвращает ÑоÑтоÑние выхода вÑтроенной команды или ложь, еÑли ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ "
+"команда bash\n"
" не ÑвлÑетÑÑ Ð²Ñтроенной."
#: builtins.c:369
@@ -2752,7 +2851,8 @@ msgid ""
msgstr ""
"Возвращает контекÑÑ‚ вызова текущей подпрограммы.\n"
" \n"
-" ЕÑли выражение не указано, возвращает «$line $filename». ЕÑли выражение указано, возвращает\n"
+" ЕÑли выражение не указано, возвращает «$line $filename». ЕÑли выражение "
+"указано, возвращает\n"
" «$line $subroutine $filename». Эти дополнительные данные можно\n"
" иÑпользовать Ð´Ð»Ñ Ñ‚Ñ€Ð°ÑÑировки Ñтека.\n"
" \n"
@@ -2760,57 +2860,31 @@ msgstr ""
" Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° к текущему кадру. Первый кадр имеет номер 0.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает 0, еÑли командный процеÑÑор не выполнÑет функцию, или выражение\n"
+" Возвращает 0, еÑли командный процеÑÑор не выполнÑет функцию, или "
+"выражение\n"
" ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым."
#: builtins.c:387
#, fuzzy
-#| msgid ""
-#| "Change the shell working directory.\n"
-#| " \n"
-#| " Change the current directory to DIR. The default DIR is the value of the\n"
-#| " HOME shell variable.\n"
-#| " \n"
-#| " The variable CDPATH defines the search path for the directory containing\n"
-#| " DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
-#| " A null directory name is the same as the current directory. If DIR begins\n"
-#| " with a slash (/), then CDPATH is not used.\n"
-#| " \n"
-#| " If the directory is not found, and the shell option `cdable_vars' is set,\n"
-#| " the word is assumed to be a variable name. If that variable has a value,\n"
-#| " its value is used for DIR.\n"
-#| " \n"
-#| " Options:\n"
-#| " -L\tforce symbolic links to be followed: resolve symbolic links in\n"
-#| " \tDIR after processing instances of `..'\n"
-#| " -P\tuse the physical directory structure without following symbolic\n"
-#| " \tlinks: resolve symbolic links in DIR before processing instances\n"
-#| " \tof `..'\n"
-#| " -e\tif the -P option is supplied, and the current working directory\n"
-#| " \tcannot be determined successfully, exit with a non-zero status\n"
-#| " -@ on systems that support it, present a file with extended attributes\n"
-#| " as a directory containing the file attributes\n"
-#| " \n"
-#| " The default is to follow symbolic links, as if `-L' were specified.\n"
-#| " `..' is processed by removing the immediately previous pathname component\n"
-#| " back to a slash or the beginning of DIR.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
-#| " -P is used; non-zero otherwise."
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of the\n"
+" Change the current directory to DIR. The default DIR is the value of "
+"the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
-" A null directory name is the same as the current directory. If DIR begins\n"
+" The variable CDPATH defines the search path for the directory "
+"containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon "
+"(:).\n"
+" A null directory name is the same as the current directory. If DIR "
+"begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is set,\n"
-" the word is assumed to be a variable name. If that variable has a value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is "
+"set,\n"
+" the word is assumed to be a variable name. If that variable has a "
+"value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2826,25 +2900,31 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname component\n"
+" `..' is processed by removing the immediately previous pathname "
+"component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully "
+"when\n"
" -P is used; non-zero otherwise."
msgstr ""
"Смена рабочего каталога командного процеÑÑора.\n"
" \n"
-" ИзменÑет текущий каталог на указанный каталог. Каталог по умолчанию хранитÑÑ Ð²\n"
+" ИзменÑет текущий каталог на указанный каталог. Каталог по умолчанию "
+"хранитÑÑ Ð²\n"
" переменной $HOME командного процеÑÑора.\n"
" \n"
" ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH определÑет путь поиÑка каталога, Ñодержащего\n"
-" указанный каталог. Ðльтернативные каталоги в $CDPATH разделÑÑŽÑ‚ÑÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸ÐµÐ¼ (:).\n"
-" ПуÑтое название каталога ÑоответÑтвует текущему каталогу. ЕÑли каталог начинаетÑÑ\n"
+" указанный каталог. Ðльтернативные каталоги в $CDPATH разделÑÑŽÑ‚ÑÑ "
+"двоеточием (:).\n"
+" ПуÑтое название каталога ÑоответÑтвует текущему каталогу. ЕÑли каталог "
+"начинаетÑÑ\n"
" Ñ ÐºÐ¾Ñой черты (/), Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH не иÑпользуетÑÑ.\n"
" \n"
" ЕÑли каталог не найден и задан параметр «cdable_vars»,\n"
-" Ñлово ÑчитаетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ переменной. ЕÑли Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ñодержит значение,\n"
+" Ñлово ÑчитаетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ переменной. ЕÑли Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ñодержит "
+"значение,\n"
" оно иÑпользуетÑÑ Ð´Ð»Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°.\n"
" \n"
" Параметры:\n"
@@ -2855,32 +2935,24 @@ msgstr ""
" \tобработки «..»\n"
" -e\tеÑли указан параметр -P, и не удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ текущий\n"
" \tрабочий каталог, команда завершаетÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием\n"
-" -@ на ÑиÑтемах, которые Ñто поддерживают, предÑтавлÑет файл Ñ Ñ€Ð°Ñширенными\n"
+" -@ на ÑиÑтемах, которые Ñто поддерживают, предÑтавлÑет файл Ñ "
+"раÑширенными\n"
" атрибутами как каталог, Ñодержащий атрибуты файла\n"
" \n"
-" По умолчанию выполнÑетÑÑ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ по Ñимвольным ÑÑылкам (как при указании параметра «-L»).\n"
-" «..» обрабатываетÑÑ Ð¿ÑƒÑ‚Ñ‘Ð¼ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ компонента пути до коÑой черты\n"
+" По умолчанию выполнÑетÑÑ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ по Ñимвольным ÑÑылкам (как при указании "
+"параметра «-L»).\n"
+" «..» обрабатываетÑÑ Ð¿ÑƒÑ‚Ñ‘Ð¼ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ компонента пути до коÑой "
+"черты\n"
" или из начала каталога.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает 0, еÑли каталог был изменён, и еÑли $PWD был уÑпешно уÑтановлен\n"
-" при иÑпользовании параметра -P. Ð’ противном Ñлучае возвращаетÑÑ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ ÑоÑтоÑние."
+" Возвращает 0, еÑли каталог был изменён, и еÑли $PWD был уÑпешно "
+"уÑтановлен\n"
+" при иÑпользовании параметра -P. Ð’ противном Ñлучае возвращаетÑÑ "
+"ненулевое ÑоÑтоÑние."
#: builtins.c:425
#, fuzzy
-#| msgid ""
-#| "Print the name of the current working directory.\n"
-#| " \n"
-#| " Options:\n"
-#| " -L\tprint the value of $PWD if it names the current working\n"
-#| " \tdirectory\n"
-#| " -P\tprint the physical directory, without any symbolic links\n"
-#| " \n"
-#| " By default, `pwd' behaves as if `-L' were specified.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns 0 unless an invalid option is given or the current directory\n"
-#| " cannot be read."
msgid ""
"Print the name of the current working directory.\n"
" \n"
@@ -2950,26 +3022,12 @@ msgstr ""
#: builtins.c:471
#, fuzzy
-#| msgid ""
-#| "Execute a simple command or display information about commands.\n"
-#| " \n"
-#| " Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-#| " information about the specified COMMANDs. Can be used to invoke commands\n"
-#| " on disk when a function with the same name exists.\n"
-#| " \n"
-#| " Options:\n"
-#| " -p\tuse a default value for PATH that is guaranteed to find all of\n"
-#| " \tthe standard utilities\n"
-#| " -v\tprint a description of COMMAND similar to the `type' builtin\n"
-#| " -V\tprint a more verbose description of each COMMAND\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns exit status of COMMAND, or failure if COMMAND is not found."
msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke commands\n"
+" information about the specified COMMANDs. Can be used to invoke "
+"commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -2983,12 +3041,15 @@ msgid ""
msgstr ""
"Выполнение проÑтой команды или вывод информации о командах.\n"
" \n"
-" ВыполнÑет команду Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ без поиÑка функции командного процеÑÑора\n"
-" или выводит информацию об указанных командах. Можно иÑпользовать Ð´Ð»Ñ Ð²Ñ‹Ð·Ð¾Ð²Ð° команд\n"
+" ВыполнÑет команду Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ без поиÑка функции командного "
+"процеÑÑора\n"
+" или выводит информацию об указанных командах. Можно иÑпользовать Ð´Ð»Ñ "
+"вызова команд\n"
" Ñ Ð´Ð¸Ñка, когда Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует.\n"
" \n"
" Параметры:\n"
-" -p\tиÑпользовать значение по умолчанию Ð´Ð»Ñ $PATH, чтобы гарантированно\n"
+" -p\tиÑпользовать значение по умолчанию Ð´Ð»Ñ $PATH, чтобы "
+"гарантированно\n"
" \tнайти вÑе Ñтандартные команды\n"
" -v\tвывеÑти опиÑание команды аналогично вÑтроенной команде «type»\n"
" -V\tвывеÑти более подробное опиÑание каждой команды\n"
@@ -2998,42 +3059,6 @@ msgstr ""
#: builtins.c:490
#, fuzzy
-#| msgid ""
-#| "Set variable values and attributes.\n"
-#| " \n"
-#| " Declare variables and give them attributes. If no NAMEs are given,\n"
-#| " display the attributes and values of all variables.\n"
-#| " \n"
-#| " Options:\n"
-#| " -f\trestrict action or display to function names and definitions\n"
-#| " -F\trestrict display to function names only (plus line number and\n"
-#| " \tsource file when debugging)\n"
-#| " -g\tcreate global variables when used in a shell function; otherwise\n"
-#| " \tignored\n"
-#| " -p\tdisplay the attributes and value of each NAME\n"
-#| " \n"
-#| " Options which set attributes:\n"
-#| " -a\tto make NAMEs indexed arrays (if supported)\n"
-#| " -A\tto make NAMEs associative arrays (if supported)\n"
-#| " -i\tto make NAMEs have the `integer' attribute\n"
-#| " -l\tto convert NAMEs to lower case on assignment\n"
-#| " -n\tmake NAME a reference to the variable named by its value\n"
-#| " -r\tto make NAMEs readonly\n"
-#| " -t\tto make NAMEs have the `trace' attribute\n"
-#| " -u\tto convert NAMEs to upper case on assignment\n"
-#| " -x\tto make NAMEs export\n"
-#| " \n"
-#| " Using `+' instead of `-' turns off the given attribute.\n"
-#| " \n"
-#| " Variables with the integer attribute have arithmetic evaluation (see\n"
-#| " the `let' command) performed when the variable is assigned a value.\n"
-#| " \n"
-#| " When used in a function, `declare' makes NAMEs local, as with the `local'\n"
-#| " command. The `-g' option suppresses this behavior.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or a variable\n"
-#| " assignment error occurs."
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3066,7 +3091,8 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the "
+"`local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -3075,14 +3101,16 @@ msgid ""
msgstr ""
"Указание значений переменных и атрибутов.\n"
" \n"
-" ОбъÑвление переменных и назначение им атрибутов. ЕÑли имена не указаны,\n"
+" ОбъÑвление переменных и назначение им атрибутов. ЕÑли имена не "
+"указаны,\n"
" выводит атрибуты и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñех переменных.\n"
" \n"
" Параметры:\n"
" -f\tограничить дейÑтвие или вывеÑти имена функций и их определениÑ\n"
" -F\tвывеÑти только имена функций (а также номер Ñтроки\n"
" \tв иÑходном файле при отладке)\n"
-" -g\tÑоздать глобальные переменные при иÑпользовании в функции командного процеÑÑора; в противном Ñлучае\n"
+" -g\tÑоздать глобальные переменные при иÑпользовании в функции "
+"командного процеÑÑора; в противном Ñлучае\n"
" \tигнорируетÑÑ\n"
" -p\tвывеÑти атрибуты и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени\n"
" \n"
@@ -3091,7 +3119,8 @@ msgstr ""
" -A\tÑделать имена аÑÑоциативными маÑÑивами (еÑли поддерживаетÑÑ)\n"
" -i\tназначить именам атрибут «integer»\n"
" -l\tперевеÑти имена в нижний региÑÑ‚Ñ€ при назначении\n"
-" -n\tÑделать Ð¸Ð¼Ñ ÑÑылкой на переменную Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, ÑоответÑтвующим её значению\n"
+" -n\tÑделать Ð¸Ð¼Ñ ÑÑылкой на переменную Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, ÑоответÑтвующим её "
+"значению\n"
" -r\tотключить запиÑÑŒ в имена\n"
" -t\tназначить именам атрибут «trace»\n"
" -l\tперевеÑти имена в верхний региÑÑ‚Ñ€ при назначении\n"
@@ -3100,9 +3129,11 @@ msgstr ""
" Знак «+» вмеÑто «-» отключает указанный атрибут.\n"
" \n"
" Переменные Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð¼ «integer» Ñодержат математичеÑкое выражение (Ñм.\n"
-" команду «let»), которое раÑÑчитываетÑÑ Ð¿Ñ€Ð¸ назначении Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹.\n"
+" команду «let»), которое раÑÑчитываетÑÑ Ð¿Ñ€Ð¸ назначении Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ "
+"переменной.\n"
" \n"
-" При иÑпользовании в функции «declare» делает имена локальными как при иÑпользовании\n"
+" При иÑпользовании в функции «declare» делает имена локальными как при "
+"иÑпользовании\n"
" данной команды. Параметр «-g» отключает Ñто поведение.\n"
" \n"
" СоÑтоÑние выхода:\n"
@@ -3111,10 +3142,6 @@ msgstr ""
#: builtins.c:532
#, fuzzy
-#| msgid ""
-#| "Set variable values and attributes.\n"
-#| " \n"
-#| " Obsolete. See `help declare'."
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3140,52 +3167,26 @@ msgid ""
msgstr ""
"Определение локальных переменных.\n"
" \n"
-" Создаёт локальную переменную Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем и приÑваивает ей указанное значение. Параметром может быть\n"
+" Создаёт локальную переменную Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем и приÑваивает ей "
+"указанное значение. Параметром может быть\n"
" любой параметр, принимаемый командой «declare».\n"
" \n"
-" Локальные переменные можно иÑпользовать только внутри функции. Они видны\n"
+" Локальные переменные можно иÑпользовать только внутри функции. Они "
+"видны\n"
" только той функции, в которой они определены, и её дочерним функциÑм.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр, не возникла\n"
-" ошибка приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ или командный процеÑÑор не выполнÑет функцию."
+" ошибка приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ или командный процеÑÑор не выполнÑет "
+"функцию."
#: builtins.c:557
#, fuzzy
-#| msgid ""
-#| "Write arguments to the standard output.\n"
-#| " \n"
-#| " Display the ARGs, separated by a single space character and followed by a\n"
-#| " newline, on the standard output.\n"
-#| " \n"
-#| " Options:\n"
-#| " -n\tdo not append a newline\n"
-#| " -e\tenable interpretation of the following backslash escapes\n"
-#| " -E\texplicitly suppress interpretation of backslash escapes\n"
-#| " \n"
-#| " `echo' interprets the following backslash-escaped characters:\n"
-#| " \\a\talert (bell)\n"
-#| " \\b\tbackspace\n"
-#| " \\c\tsuppress further output\n"
-#| " \\e\tescape character\n"
-#| " \\E\tescape character\n"
-#| " \\f\tform feed\n"
-#| " \\n\tnew line\n"
-#| " \\r\tcarriage return\n"
-#| " \\t\thorizontal tab\n"
-#| " \\v\tvertical tab\n"
-#| " \\\\\tbackslash\n"
-#| " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n"
-#| " \t0 to 3 octal digits\n"
-#| " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
-#| " \tcan be one or two hex digits\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless a write error occurs."
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by a\n"
+" Display the ARGs, separated by a single space character and followed by "
+"a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -3209,9 +3210,11 @@ msgid ""
" \t\t0 to 3 octal digits\n"
" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
" \t\tcan be one or two hex digits\n"
-" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
" \t\tHHHH can be one to four hex digits.\n"
-" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
" \n"
" Exit Status:\n"
@@ -3219,15 +3222,19 @@ msgid ""
msgstr ""
"Вывод аргументов на Ñтандартный вывод.\n"
" \n"
-" Выводит аргументы, разделённые пробелом, добавлÑÑ Ð² конце Ñимвол новой Ñтроки,\n"
+" Выводит аргументы, разделённые пробелом, добавлÑÑ Ð² конце Ñимвол новой "
+"Ñтроки,\n"
" на Ñтандартный вывод.\n"
" \n"
" Параметры:\n"
" -n\tне добавлÑÑ‚ÑŒ Ñимвол новой Ñтроки\n"
-" -e\tвключить интерпретацию Ñимволов, Ñкранированных обратной коÑой чертой\n"
-" -E\tÑвно отключить интерпретацию Ñимволов, Ñкранированных обратной коÑой чертой\n"
+" -e\tвключить интерпретацию Ñимволов, Ñкранированных обратной коÑой "
+"чертой\n"
+" -E\tÑвно отключить интерпретацию Ñимволов, Ñкранированных обратной "
+"коÑой чертой\n"
" \n"
-" echo интерпретирует Ñледующие Ñимволы, Ñкранированные обратной коÑой чертой:\n"
+" echo интерпретирует Ñледующие Ñимволы, Ñкранированные обратной коÑой "
+"чертой:\n"
" \\a\tоповещение (звуковой Ñигнал)\n"
" \\b\tbackspace\n"
" \\c\tотключение дальнейшего вывода\n"
@@ -3239,9 +3246,11 @@ msgstr ""
" \\t\tÐ³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ\n"
" \\v\tÐ²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ñ‚Ð°Ð±ÑƒÐ»ÑциÑ\n"
" \\\\\tÐ¾Ð±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÐºÐ¾ÑÐ°Ñ Ñ‡ÐµÑ€Ñ‚Ð°\n"
-" \\0nnn\tÑимвол Ñ ASCII-кодом NNN (воÑьмеричным) NNN может быть длиной\n"
+" \\0nnn\tÑимвол Ñ ASCII-кодом NNN (воÑьмеричным) NNN может быть "
+"длиной\n"
" \tот 0 до 3 воÑьмеричных цифр\n"
-" \\xHH\tвоÑьмиразрÑдный Ñимвол, значение которого — HH (шеÑтнадцатеричное) HH\n"
+" \\xHH\tвоÑьмиразрÑдный Ñимвол, значение которого — HH "
+"(шеÑтнадцатеричное) HH\n"
" \tможет быть одной или Ð´Ð²ÑƒÐ¼Ñ ÑˆÐµÑтнадцатеричными цифрами\n"
" \n"
" СоÑтоÑние выхода:\n"
@@ -3261,7 +3270,8 @@ msgid ""
msgstr ""
"Вывод аргументов на Ñтандартный вывод.\n"
" \n"
-" Выводит аргументы на Ñтандартный вывод, добавлÑÑ Ð² конце Ñимвол новой Ñтроки.\n"
+" Выводит аргументы на Ñтандартный вывод, добавлÑÑ Ð² конце Ñимвол новой "
+"Ñтроки.\n"
" \n"
" Параметры:\n"
" -n\tне добавлÑÑ‚ÑŒ Ñимвол новой Ñтроки\n"
@@ -3297,13 +3307,16 @@ msgid ""
msgstr ""
"Включение и отключение вÑтроенных команд командного процеÑÑора.\n"
" \n"
-" Включает и отключает команды, вÑтроенные в командный процеÑÑор. Отключение позволит\n"
-" выполнить команду Ñ Ð´Ð¸Ñка, название которой Ñовпадает Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ вÑтроенной команды,\n"
+" Включает и отключает команды, вÑтроенные в командный процеÑÑор. "
+"Отключение позволит\n"
+" выполнить команду Ñ Ð´Ð¸Ñка, название которой Ñовпадает Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ "
+"вÑтроенной команды,\n"
" без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ пути к ней.\n"
" \n"
" Параметры:\n"
" -a\tпоказать ÑпиÑок вÑтроенных команд и их ÑоÑтоÑние\n"
-" -n\tотключить вÑе указанные имена или вывеÑти ÑпиÑок отключённых команд\n"
+" -n\tотключить вÑе указанные имена или вывеÑти ÑпиÑок отключённых "
+"команд\n"
" -p\tпоказать ÑпиÑок вÑтроенных команд\n"
" -s\tпоказать только Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð²Ñтроенных команд «special» Posix\n"
" \n"
@@ -3317,13 +3330,15 @@ msgstr ""
" а не вÑтроенную в командный процеÑÑор, введите «enable -n test».\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли указанное Ð¸Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ð²Ñтроенной командой или не произошла ошибка."
+" Возвращает уÑпех, еÑли указанное Ð¸Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ð²Ñтроенной командой или "
+"не произошла ошибка."
#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the shell,\n"
+" Combine ARGs into a single string, use the result as input to the "
+"shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -3339,44 +3354,6 @@ msgstr ""
#: builtins.c:652
#, fuzzy
-#| msgid ""
-#| "Parse option arguments.\n"
-#| " \n"
-#| " Getopts is used by shell procedures to parse positional parameters\n"
-#| " as options.\n"
-#| " \n"
-#| " OPTSTRING contains the option letters to be recognized; if a letter\n"
-#| " is followed by a colon, the option is expected to have an argument,\n"
-#| " which should be separated from it by white space.\n"
-#| " \n"
-#| " Each time it is invoked, getopts will place the next option in the\n"
-#| " shell variable $name, initializing name if it does not exist, and\n"
-#| " the index of the next argument to be processed into the shell\n"
-#| " variable OPTIND. OPTIND is initialized to 1 each time the shell or\n"
-#| " a shell script is invoked. When an option requires an argument,\n"
-#| " getopts places that argument into the shell variable OPTARG.\n"
-#| " \n"
-#| " getopts reports errors in one of two ways. If the first character\n"
-#| " of OPTSTRING is a colon, getopts uses silent error reporting. In\n"
-#| " this mode, no error messages are printed. If an invalid option is\n"
-#| " seen, getopts places the option character found into OPTARG. If a\n"
-#| " required argument is not found, getopts places a ':' into NAME and\n"
-#| " sets OPTARG to the option character found. If getopts is not in\n"
-#| " silent mode, and an invalid option is seen, getopts places '?' into\n"
-#| " NAME and unsets OPTARG. If a required argument is not found, a '?'\n"
-#| " is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-#| " printed.\n"
-#| " \n"
-#| " If the shell variable OPTERR has the value 0, getopts disables the\n"
-#| " printing of error messages, even if the first character of\n"
-#| " OPTSTRING is not a colon. OPTERR has the value 1 by default.\n"
-#| " \n"
-#| " Getopts normally parses the positional parameters ($0 - $9), but if\n"
-#| " more arguments are given, they are parsed instead.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success if an option is found; fails if the end of options is\n"
-#| " encountered or an error occurs."
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3421,11 +3398,13 @@ msgstr ""
" getopts иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°Ð¼Ð¸ командного процеÑÑора Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°\n"
" позиционных параметров.\n"
" \n"
-" «Ñтрока_параметров» Ñодержит буквы раÑпознаваемых параметров. ЕÑли поÑле\n"
+" «Ñтрока_параметров» Ñодержит буквы раÑпознаваемых параметров. ЕÑли "
+"поÑле\n"
" буквы идёт двоеточие, ÑчитаетÑÑ, что у параметра еÑÑ‚ÑŒ аргумент,\n"
" который должен быть отделён пробелом.\n"
" \n"
-" При каждом Ñвоём вызове getopts помеÑтит Ñледующий параметр в переменную\n"
+" При каждом Ñвоём вызове getopts помеÑтит Ñледующий параметр в "
+"переменную\n"
" $имÑ, проинициализировав Ñто имÑ, еÑли оно не ÑущеÑтвует,\n"
" и проиндекÑирует Ñледующий обрабатываемый аргумент в переменной\n"
" $OPTIND. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $OPTIND инициализируетÑÑ Ð¿Ñ€Ð¸ каждом вызове\n"
@@ -3433,51 +3412,40 @@ msgstr ""
" getopts помещает Ñтот аргумент в переменную $OPTARG.\n"
" \n"
" getopts Ñообщает об ошибках Ð´Ð²ÑƒÐ¼Ñ ÑпоÑобами. ЕÑли первый Ñимвол\n"
-" в «Ñтроке_параметров» ÑвлÑетÑÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸ÐµÐ¼, getopts включает режим молчаниÑ. Ð’ Ñтом\n"
+" в «Ñтроке_параметров» ÑвлÑетÑÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸ÐµÐ¼, getopts включает режим "
+"молчаниÑ. Ð’ Ñтом\n"
" режиме ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках не выводÑÑ‚ÑÑ. ЕÑли указан неверный\n"
" параметр, getopts помещает Ñимвол параметра в переменную $OPTARG. ЕÑли\n"
" обÑзательный аргумент не найден, getopts помещает «:» в «имÑ»\n"
-" и задаёт Ð´Ð»Ñ $OPTARG Ñимвол найденного параметра. ЕÑли getopts не в режиме\n"
+" и задаёт Ð´Ð»Ñ $OPTARG Ñимвол найденного параметра. ЕÑли getopts не в "
+"режиме\n"
" молчаниÑ, и был указан неверный параметр, getopts помещает «?»\n"
-" в ÐÐЗВÐÐИЕ и удалÑет переменную OPTARG. ЕÑли обÑзательный аргумент не найден, в ÐÐЗВÐÐИЕ\n"
+" в ÐÐЗВÐÐИЕ и удалÑет переменную OPTARG. ЕÑли обÑзательный аргумент не "
+"найден, в ÐÐЗВÐÐИЕ\n"
" помещаетÑÑ Â«?», Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTARG удалÑетÑÑ Ð¸ выводитÑÑ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑтичеÑкое\n"
" Ñообщение.\n"
" \n"
" ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTERR имеет значение 0, getopts отключает\n"
" вывод Ñообщений об ошибках, даже еÑли первый Ñимвол переменной\n"
-" OPTSTRING не ÑвлÑетÑÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸ÐµÐ¼. По умолчанию Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTERR имеет значение 1.\n"
+" OPTSTRING не ÑвлÑетÑÑ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸ÐµÐ¼. По умолчанию Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OPTERR имеет "
+"значение 1.\n"
" \n"
" Getopts обычно анализирует позиционные параметры ($0–$9), но еÑли\n"
" задано больше аргументов, анализируютÑÑ Ð¿Ð¾Ñледние.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли найден параметр. Возвращает ошибку, еÑли доÑтигнут\n"
+" Возвращает уÑпех, еÑли найден параметр. Возвращает ошибку, еÑли "
+"доÑтигнут\n"
" конец параметров или возникла ошибка."
#: builtins.c:694
#, fuzzy
-#| msgid ""
-#| "Replace the shell with the given command.\n"
-#| " \n"
-#| " Execute COMMAND, replacing this shell with the specified program.\n"
-#| " ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
-#| " any redirections take effect in the current shell.\n"
-#| " \n"
-#| " Options:\n"
-#| " -a name\tpass NAME as the zeroth argument to COMMAND\n"
-#| " -c\t\texecute COMMAND with an empty environment\n"
-#| " -l\t\tplace a dash in the zeroth argument to COMMAND\n"
-#| " \n"
-#| " If the command cannot be executed, a non-interactive shell exits, unless\n"
-#| " the shell option `execfail' is set.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless COMMAND is not found or a redirection error occurs."
msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
+"specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3485,16 +3453,20 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, unless\n"
+" If the command cannot be executed, a non-interactive shell exits, "
+"unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error occurs."
+" Returns success unless COMMAND is not found or a redirection error "
+"occurs."
msgstr ""
"Замена командного процеÑÑора указанной командой.\n"
" \n"
-" ВыполнÑет команду, заменÑÑ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ командный процеÑÑор указанной программой.\n"
-" Указанные аргументы ÑтановÑÑ‚ÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹. ЕÑли команда не указана,\n"
+" ВыполнÑет команду, заменÑÑ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ командный процеÑÑор указанной "
+"программой.\n"
+" Указанные аргументы ÑтановÑÑ‚ÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹. ЕÑли команда не "
+"указана,\n"
" вÑе Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ выполнÑÑ‚ÑŒÑÑ Ð² текущем командном процеÑÑоре.\n"
" \n"
" Параметры:\n"
@@ -3506,7 +3478,8 @@ msgstr ""
" закроетÑÑ (еÑли только на задан «execfail»).\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли команда не была найдена или не возникла ошибка перенаправлениÑ."
+" Возвращает уÑпех, еÑли команда не была найдена или не возникла ошибка "
+"перенаправлениÑ."
#: builtins.c:715
msgid ""
@@ -3524,7 +3497,8 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not executed\n"
+" Exits a login shell with exit status N. Returns an error if not "
+"executed\n"
" in a login shell."
msgstr ""
"Выход из командного процеÑÑора login.\n"
@@ -3536,13 +3510,15 @@ msgstr ""
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history list.\n"
+" fc is used to list or edit and re-execute commands from the history "
+"list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
+"EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3556,12 +3532,15 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error occurs."
+" Returns success or status of executed command; non-zero if an error "
+"occurs."
msgstr ""
"Отображение или выполнение команд из журнала.\n"
" \n"
-" fc выводит ÑпиÑок команд из журнала или позволÑет изменить и повторно выполнить их.\n"
-" Ðргументы «перваÑ» и «поÑледнÑÑ» могут быть чиÑлами, определÑющими диапазон.\n"
+" fc выводит ÑпиÑок команд из журнала или позволÑет изменить и повторно "
+"выполнить их.\n"
+" Ðргументы «перваÑ» и «поÑледнÑÑ» могут быть чиÑлами, определÑющими "
+"диапазон.\n"
" Ðргумент «перваÑ» также может быть Ñтрокой, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚\n"
" поÑледнюю команду, начинающуюÑÑ Ñ Ñтой Ñтроки.\n"
" \n"
@@ -3576,11 +3555,13 @@ msgstr ""
" выполнÑетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ поÑле замены ÑтараÑ=новаÑ.\n"
" \n"
" Полезный пÑевдоним Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹Â â€” r='fc -s'. Так еÑли ввеÑти «r cc»,\n"
-" будет выполнена поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, начинающаÑÑÑ Ñ Â«cc», а еÑли ввеÑти «r»,\n"
+" будет выполнена поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, начинающаÑÑÑ Ñ Â«cc», а еÑли ввеÑти "
+"«r»,\n"
" будет выполнена поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех или ÑоÑтоÑние выполненной команды. Ð’ Ñлучае ошибки возвращает ненулевое ÑоÑтоÑние."
+" Возвращает уÑпех или ÑоÑтоÑние выполненной команды. Ð’ Ñлучае ошибки "
+"возвращает ненулевое ÑоÑтоÑние."
#: builtins.c:764
msgid ""
@@ -3600,14 +3581,17 @@ msgstr ""
" текущее задание.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает ÑоÑтоÑние команды, переведённой в интерактивный режим, или ошибку, еÑли возникла ошибка."
+" Возвращает ÑоÑтоÑние команды, переведённой в интерактивный режим, или "
+"ошибку, еÑли возникла ошибка."
#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if "
+"they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's "
+"notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
@@ -3620,35 +3604,17 @@ msgstr ""
" текущего заданиÑ.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла ошибка."
+" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла "
+"ошибка."
#: builtins.c:793
#, fuzzy
-#| msgid ""
-#| "Remember or display program locations.\n"
-#| " \n"
-#| " Determine and remember the full pathname of each command NAME. If\n"
-#| " no arguments are given, information about remembered commands is displayed.\n"
-#| " \n"
-#| " Options:\n"
-#| " -d\t\tforget the remembered location of each NAME\n"
-#| " -l\t\tdisplay in a format that may be reused as input\n"
-#| " -p pathname\tuse PATHNAME as the full pathname of NAME\n"
-#| " -r\t\tforget all remembered locations\n"
-#| " -t\t\tprint the remembered location of each NAME, preceding\n"
-#| " \t\teach location with the corresponding NAME if multiple\n"
-#| " \t\tNAMEs are given\n"
-#| " Arguments:\n"
-#| " NAME\t\tEach NAME is searched for in $PATH and added to the list\n"
-#| " \t\tof remembered commands.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless NAME is not found or an invalid option is given."
msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is displayed.\n"
+" no arguments are given, information about remembered commands is "
+"displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3683,28 +3649,11 @@ msgstr ""
" \t\tзапомненных команд.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли команда была найдена или был указан допуÑтимый параметр."
+" Возвращает уÑпех, еÑли команда была найдена или был указан допуÑтимый "
+"параметр."
#: builtins.c:818
#, fuzzy
-#| msgid ""
-#| "Display information about builtin commands.\n"
-#| " \n"
-#| " Displays brief summaries of builtin commands. If PATTERN is\n"
-#| " specified, gives detailed help on all commands matching PATTERN,\n"
-#| " otherwise the list of help topics is printed.\n"
-#| " \n"
-#| " Options:\n"
-#| " -d\toutput short description for each topic\n"
-#| " -m\tdisplay usage in pseudo-manpage format\n"
-#| " -s\toutput only a short usage synopsis for each topic matching\n"
-#| " \tPATTERN\n"
-#| " \n"
-#| " Arguments:\n"
-#| " PATTERN\tPattern specifiying a help topic\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless PATTERN is not found or an invalid option is given."
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3722,12 +3671,14 @@ msgid ""
" PATTERN\tPattern specifying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is given."
+" Returns success unless PATTERN is not found or an invalid option is "
+"given."
msgstr ""
"Вывод информации о вÑтроенных командах.\n"
" \n"
" Показывает краткую Ñправку о вÑтроенных командах. ЕÑли указан\n"
-" шаблон, выводит подробную Ñправку по вÑем командам, удовлетворÑющим шаблону.\n"
+" шаблон, выводит подробную Ñправку по вÑем командам, удовлетворÑющим "
+"шаблону.\n"
" Ð’ противном Ñлучае выводитÑÑ ÑпиÑок разделов Ñправки.\n"
" \n"
" Параметры:\n"
@@ -3740,40 +3691,11 @@ msgstr ""
" ШÐБЛОÐ\tшаблон, определÑющий раздел Ñправки\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был найден шаблон или был указан допуÑтимый параметр."
+" Возвращает уÑпех, еÑли был найден шаблон или был указан допуÑтимый "
+"параметр."
#: builtins.c:842
#, fuzzy
-#| msgid ""
-#| "Display or manipulate the history list.\n"
-#| " \n"
-#| " Display the history list with line numbers, prefixing each modified\n"
-#| " entry with a `*'. An argument of N lists only the last N entries.\n"
-#| " \n"
-#| " Options:\n"
-#| " -c\tclear the history list by deleting all of the entries\n"
-#| " -d offset\tdelete the history entry at offset OFFSET.\n"
-#| " \n"
-#| " -a\tappend history lines from this session to the history file\n"
-#| " -n\tread all history lines not already read from the history file\n"
-#| " -r\tread the history file and append the contents to the history\n"
-#| " \tlist\n"
-#| " -w\twrite the current history to the history file\n"
-#| " \tand append them to the history list\n"
-#| " \n"
-#| " -p\tperform history expansion on each ARG and display the result\n"
-#| " \twithout storing it in the history list\n"
-#| " -s\tappend the ARGs to the history list as a single entry\n"
-#| " \n"
-#| " If FILENAME is given, it is used as the history file. Otherwise,\n"
-#| " if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
-#| " \n"
-#| " If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
-#| " as a format string for strftime(3) to print the time stamp associated\n"
-#| " with each displayed history entry. No time stamps are printed otherwise.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is given or an error occurs."
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3801,7 +3723,8 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed otherwise.\n"
+" with each displayed history entry. No time stamps are printed "
+"otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3809,14 +3732,16 @@ msgstr ""
"Отображение или изменение журнала команд.\n"
" \n"
" Выводит журнал команд Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñтрок и звёздочками (*) перед вÑеми\n"
-" изменёнными запиÑÑми. С аргументом N показываютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ поÑледние N запиÑей.\n"
+" изменёнными запиÑÑми. С аргументом N показываютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ поÑледние N "
+"запиÑей.\n"
" \n"
" Параметры:\n"
" -c\tочиÑтить журнал, удалив из него вÑе запиÑи\n"
" -d Ñмещение\tудалить запиÑÑŒ журнала по указанному Ñмещению\n"
" \n"
" -a\tдобавить журнал текущего ÑеанÑа в файл журнала\n"
-" -n\tпрочитать вÑе запиÑи, которые ещё не были прочитаны из файла журнала\n"
+" -n\tпрочитать вÑе запиÑи, которые ещё не были прочитаны из файла "
+"журнала\n"
" -r\tпрочитать файл журнала и добавить его Ñодержимое\n"
" \tв журнал\n"
" -w\tзапиÑать текущий журнал в файл журнала\n"
@@ -3827,38 +3752,21 @@ msgstr ""
" -s\tдобавить аргументы в журнал как одну запиÑÑŒ\n"
" \n"
" ЕÑли указан файл, он иÑпользуетÑÑ ÐºÐ°Ðº файл журнала. Ð’ противном Ñлучае\n"
-" еÑли $HISTFILE Ñодержит значение, иÑпользуетÑÑ Ñтот файл, иначе — файл ~/.bash_history.\n"
+" еÑли $HISTFILE Ñодержит значение, иÑпользуетÑÑ Ñтот файл, иначе — файл "
+"~/.bash_history.\n"
" \n"
-" ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $HISTTIMEFORMAT задана и не ÑвлÑетÑÑ Ð¿ÑƒÑтой, её значение\n"
+" ЕÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $HISTTIMEFORMAT задана и не ÑвлÑетÑÑ Ð¿ÑƒÑтой, её "
+"значение\n"
" иÑпользуетÑÑ ÐºÐ°Ðº Ñтрока Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ strftime(3) Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° метки\n"
-" времени Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ показанной запиÑи журнала. Ð’ противном Ñлучае метки времени не будут показаны.\n"
+" времени Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ показанной запиÑи журнала. Ð’ противном Ñлучае метки "
+"времени не будут показаны.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла ошибка."
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
+"ошибка."
#: builtins.c:879
#, fuzzy
-#| msgid ""
-#| "Display status of jobs.\n"
-#| " \n"
-#| " Lists the active jobs. JOBSPEC restricts output to that job.\n"
-#| " Without options, the status of all active jobs is displayed.\n"
-#| " \n"
-#| " Options:\n"
-#| " -l\tlists process IDs in addition to the normal information\n"
-#| " -n\tlist only processes that have changed status since the last\n"
-#| " \tnotification\n"
-#| " -p\tlists process IDs only\n"
-#| " -r\trestrict output to running jobs\n"
-#| " -s\trestrict output to stopped jobs\n"
-#| " \n"
-#| " If -x is supplied, COMMAND is run after all job specifications that\n"
-#| " appear in ARGS have been replaced with the process ID of that job's\n"
-#| " process group leader.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is given or an error occurs.\n"
-#| " If -x is used, returns the exit status of COMMAND."
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3883,11 +3791,14 @@ msgid ""
msgstr ""
"Отображение ÑоÑтоÑÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹.\n"
" \n"
-" Выводит ÑпиÑок активных заданий. ЕÑли указан номер заданиÑ, выводитÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñто задание.\n"
-" ЕÑли не указать параметры, будет показано ÑоÑтоÑние вÑех активных заданий.\n"
+" Выводит ÑпиÑок активных заданий. ЕÑли указан номер заданиÑ, выводитÑÑ "
+"только Ñто задание.\n"
+" ЕÑли не указать параметры, будет показано ÑоÑтоÑние вÑех активных "
+"заданий.\n"
" \n"
" Параметры:\n"
-" -l\tпоказать идентификаторы процеÑÑов в дополнение к обычной информации\n"
+" -l\tпоказать идентификаторы процеÑÑов в дополнение к обычной "
+"информации\n"
" -n\tпоказать только те процеÑÑÑ‹, у которых изменилоÑÑŒ ÑоÑтоÑние\n"
" \tÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° поÑле поÑледнего уведомлениÑ\n"
" -p\tпоказать только идентификаторы процеÑÑов\n"
@@ -3899,25 +3810,12 @@ msgstr ""
" лидера группы процеÑÑов заданиÑ.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла ошибка.\n"
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
+"ошибка.\n"
" ЕÑли указан параметр -x, возвращает ÑоÑтоÑние выхода команды."
#: builtins.c:906
#, fuzzy
-#| msgid ""
-#| "Remove jobs from current shell.\n"
-#| " \n"
-#| " Removes each JOBSPEC argument from the table of active jobs. Without\n"
-#| " any JOBSPECs, the shell uses its notion of the current job.\n"
-#| " \n"
-#| " Options:\n"
-#| " -a\tremove all jobs if JOBSPEC is not supplied\n"
-#| " -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n"
-#| " \tshell receives a SIGHUP\n"
-#| " -r\tremove only running jobs\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option or JOBSPEC is given."
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3949,25 +3847,6 @@ msgstr ""
#: builtins.c:925
#, fuzzy
-#| msgid ""
-#| "Send a signal to a job.\n"
-#| " \n"
-#| " Send the processes identified by PID or JOBSPEC the signal named by\n"
-#| " SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n"
-#| " SIGTERM is assumed.\n"
-#| " \n"
-#| " Options:\n"
-#| " -s sig\tSIG is a signal name\n"
-#| " -n sig\tSIG is a signal number\n"
-#| " -l\tlist the signal names; if arguments follow `-l' they are\n"
-#| " \tassumed to be signal numbers for which names should be listed\n"
-#| " \n"
-#| " Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
-#| " instead of process IDs, and allows processes to be killed if the limit\n"
-#| " on processes that you can create is reached.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is given or an error occurs."
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3998,15 +3877,19 @@ msgstr ""
" Параметры:\n"
" -s Ñигнал\tназвание Ñигнала\n"
" -n Ñигнал\tномер Ñигнала\n"
-" -l\t\tпоказывает Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов; еÑли поÑле аргументов указано «-l»,\n"
-" \tони ÑчитаютÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñигналов, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… необходимо показать названиÑ\n"
+" -l\t\tпоказывает Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов; еÑли поÑле аргументов указано «-"
+"l»,\n"
+" \tони ÑчитаютÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñигналов, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… необходимо показать "
+"названиÑ\n"
" \n"
-" kill — Ñто вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, Ð¿Ñ€ÐµÐ´Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ð°Ñ Ð´Ð»Ñ Ð´Ð²ÑƒÑ… задач: иÑпользовать\n"
+" kill — Ñто вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, Ð¿Ñ€ÐµÐ´Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ð°Ñ Ð´Ð»Ñ Ð´Ð²ÑƒÑ… задач: "
+"иÑпользовать\n"
" номера заданий вмеÑто номеров процеÑÑов и убивать процеÑÑÑ‹\n"
" при доÑтижении предельного чиÑла процеÑÑов.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла ошибка."
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
+"ошибка."
#: builtins.c:949
msgid ""
@@ -4015,7 +3898,8 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are listed\n"
+" grouped into levels of equal-precedence operators. The levels are "
+"listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -4053,9 +3937,11 @@ msgid ""
msgstr ""
"РаÑчёт математичеÑких выражений.\n"
" \n"
-" ВыполнÑет раÑчёт вÑех аргументов в математичеÑком выражении. РаÑчёт выполнÑетÑÑ\n"
+" ВыполнÑет раÑчёт вÑех аргументов в математичеÑком выражении. РаÑчёт "
+"выполнÑетÑÑ\n"
" Ð´Ð»Ñ Ñ†ÐµÐ»Ñ‹Ñ… чиÑел фикÑированной ширины Ñ Ð±ÐµÐ· проверки на переполнение.\n"
-" Однако деление на 0 перехватываетÑÑ Ð¸ выдаётÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Указанные ниже операторы объединены\n"
+" Однако деление на 0 перехватываетÑÑ Ð¸ выдаётÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°. Указанные ниже "
+"операторы объединены\n"
" в группы Ñ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼ приоритетом. Группы перечиÑлены\n"
" в порÑдке ÑƒÐ¼ÐµÐ½ÑŒÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚Ð°.\n"
" \n"
@@ -4080,8 +3966,10 @@ msgstr ""
" \t+=, -=, <<=, >>=,\n"
" \t&=, ^=, |=\tприÑвоение\n"
" \n"
-" в качеÑтве операндов можно иÑпользовать переменные командного процеÑÑора. Ðазвание переменной\n"
-" заменÑетÑÑ ÐµÑ‘ значением (приводитÑÑ Ðº целому чиÑлу фикÑированной ширины)\n"
+" в качеÑтве операндов можно иÑпользовать переменные командного "
+"процеÑÑора. Ðазвание переменной\n"
+" заменÑетÑÑ ÐµÑ‘ значением (приводитÑÑ Ðº целому чиÑлу фикÑированной "
+"ширины)\n"
" в выражении. У переменной не должен быть включён атрибут integer,\n"
" чтобы её можно было иÑпользовать в выражении.\n"
" \n"
@@ -4090,62 +3978,27 @@ msgstr ""
" выше правила ÑтаршинÑтва.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" ЕÑли поÑледний ÐРГУМЕÐТ имеет значение 0, let возвращает 1. Ð’ противном Ñлучае let возвращает 0."
+" ЕÑли поÑледний ÐРГУМЕÐТ имеет значение 0, let возвращает 1. Ð’ противном "
+"Ñлучае let возвращает 0."
#: builtins.c:994
#, fuzzy
-#| msgid ""
-#| "Read a line from the standard input and split it into fields.\n"
-#| " \n"
-#| " Reads a single line from the standard input, or from file descriptor FD\n"
-#| " if the -u option is supplied. The line is split into fields as with word\n"
-#| " splitting, and the first word is assigned to the first NAME, the second\n"
-#| " word to the second NAME, and so on, with any leftover words assigned to\n"
-#| " the last NAME. Only the characters found in $IFS are recognized as word\n"
-#| " delimiters.\n"
-#| " \n"
-#| " If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
-#| " \n"
-#| " Options:\n"
-#| " -a array\tassign the words read to sequential indices of the array\n"
-#| " \t\tvariable ARRAY, starting at zero\n"
-#| " -d delim\tcontinue until the first character of DELIM is read, rather\n"
-#| " \t\tthan newline\n"
-#| " -e\t\tuse Readline to obtain the line in an interactive shell\n"
-#| " -i text\tUse TEXT as the initial text for Readline\n"
-#| " -n nchars\treturn after reading NCHARS characters rather than waiting\n"
-#| " \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n"
-#| " \t\tcharacters are read before the delimiter\n"
-#| " -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
-#| " \t\tEOF is encountered or read times out, ignoring any delimiter\n"
-#| " -p prompt\toutput the string PROMPT without a trailing newline before\n"
-#| " \t\tattempting to read\n"
-#| " -r\t\tdo not allow backslashes to escape any characters\n"
-#| " -s\t\tdo not echo input coming from a terminal\n"
-#| " -t timeout\ttime out and return failure if a complete line of input is\n"
-#| " \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n"
-#| " \t\tvariable is the default timeout. TIMEOUT may be a\n"
-#| " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n"
-#| " \t\twithout trying to read any data, returning success only if\n"
-#| " \t\tinput is available on the specified file descriptor. The\n"
-#| " \t\texit status is greater than 128 if the timeout is exceeded\n"
-#| " -u fd\t\tread from file descriptor FD instead of the standard input\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " The return code is zero, unless end-of-file is encountered, read times out\n"
-#| " (in which case it's greater than 128), a variable assignment error occurs,\n"
-#| " or an invalid file descriptor is supplied as the argument to -u."
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with word\n"
+" if the -u option is supplied. The line is split into fields as with "
+"word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" the last NAME. Only the characters found in $IFS are recognized as "
+"word\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY "
+"variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -4157,7 +4010,8 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, "
+"unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -4175,52 +4029,68 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times out\n"
-" (in which case it's greater than 128), a variable assignment error occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times "
+"out\n"
+" (in which case it's greater than 128), a variable assignment error "
+"occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"Чтение Ñтроки Ñо Ñтандартного ввода и разделение её на полÑ.\n"
" \n"
" Читает одну Ñтроку Ñо Ñтандартного ввода или из файлового деÑкриптора,\n"
" еÑли указан параметр -u. Строка разделÑетÑÑ Ð½Ð° Ð¿Ð¾Ð»Ñ Ð¿Ð¾ Ñловам.\n"
-" Первое Ñлово приÑваиваетÑÑ Ð¿ÐµÑ€Ð²Ð¾Ð¼Ñƒ указанному имени, второе Ñлово — второму\n"
+" Первое Ñлово приÑваиваетÑÑ Ð¿ÐµÑ€Ð²Ð¾Ð¼Ñƒ указанному имени, второе Ñлово — "
+"второму\n"
" имени и так далее.\n"
-" ОÑтавшиеÑÑ Ñлова приÑваиваютÑÑ Ð¿Ð¾Ñледнему указанному имени. Ð’ качеÑтве разделителей Ñлов иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñимволы\n"
+" ОÑтавшиеÑÑ Ñлова приÑваиваютÑÑ Ð¿Ð¾Ñледнему указанному имени. Ð’ качеÑтве "
+"разделителей Ñлов иÑпользуютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñимволы\n"
" из переменной $IFS.\n"
" \n"
-" ЕÑли имена не указаны, Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока ÑохранÑетÑÑ Ð² переменной $REPLY.\n"
+" ЕÑли имена не указаны, Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока ÑохранÑетÑÑ Ð² переменной "
+"$REPLY.\n"
" \n"
" Параметры:\n"
" -a маÑÑив\tпоÑледовательно приÑвоить прочитанные Ñлова указателÑм\n"
" \t\tмаÑÑива, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ\n"
" -d разделитель\tпродолжить до первого разделителÑ,\n"
" \t\tа не до Ñимвола новой Ñтроки\n"
-" -e\t\tÑ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ readline получить Ñтроку в интерактивном командном процеÑÑоре\n"
+" -e\t\tÑ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ readline получить Ñтроку в интерактивном командном "
+"процеÑÑоре\n"
" -i текÑÑ‚\t\tиÑпользовать текÑÑ‚ в качеÑтве иÑходного Ð´Ð»Ñ readline\n"
-" -n чиÑло_знаков\tвыполнить возврат поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñла знаков, а не ждать\n"
-" \t\tÑимвола новой Ñтроки; учитывать разделитель, еÑли до него было прочитано\n"
+" -n чиÑло_знаков\tвыполнить возврат поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñла знаков, а не "
+"ждать\n"
+" \t\tÑимвола новой Ñтроки; учитывать разделитель, еÑли до него было "
+"прочитано\n"
" \t\tменьше указанного чиÑла знаков\n"
-" -N чиÑло_знаков\tвыполнить возврат только поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ чиÑла знаков,\n"
-" \t\tеÑли только не был получен конец Ñтроки или не иÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ð²Ñе разделители\n"
+" -N чиÑло_знаков\tвыполнить возврат только поÑле Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ "
+"чиÑла знаков,\n"
+" \t\tеÑли только не был получен конец Ñтроки или не иÑтекло Ð²Ñ€ÐµÐ¼Ñ "
+"ожиданиÑ, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ð²Ñе разделители\n"
" -p приглашение\tпоказать приглашение без Ñимвола новой Ñтроки в конце\n"
" \t\tперед тем как читать\n"
" -r\t\tне выполнÑÑ‚ÑŒ Ñкранирование Ñимволами коÑой черты\n"
" -s\t\tне показывать данные, полученные из терминала\n"
-" -t тайм-аут\tпрекратить ожидание и вывеÑти ошибку, еÑли Ð¿Ð¾Ð»Ð½Ð°Ñ Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ\n"
-" \t\tÑтрока не была прочитана за указанное чиÑло Ñекунд Ð’ переменной $TMOUT хранитÑÑ\n"
+" -t тайм-аут\tпрекратить ожидание и вывеÑти ошибку, еÑли Ð¿Ð¾Ð»Ð½Ð°Ñ "
+"входнаÑ\n"
+" \t\tÑтрока не была прочитана за указанное чиÑло Ñекунд Ð’ переменной "
+"$TMOUT хранитÑÑ\n"
" \t\tзначение тайм-аута по умолчанию. Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\n"
-" \t\tможет быть дробным чиÑлом. ЕÑли тайм-аут равен 0, read немедленно выполнÑет возврат,\n"
+" \t\tможет быть дробным чиÑлом. ЕÑли тайм-аут равен 0, read немедленно "
+"выполнÑет возврат,\n"
" \t\tне пытаÑÑÑŒ прочитать никакие данные. УÑпех возвращаетÑÑ,\n"
-" \t\tтолько еÑли входные данные доÑтупны по указанному файловому деÑкриптору. \n"
+" \t\tтолько еÑли входные данные доÑтупны по указанному файловому "
+"деÑкриптору. \n"
" \t\tСоÑтоÑние выхода больше 128, еÑли Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð±Ñ‹Ð»Ð¾ превышено.\n"
" -u fd\t\tчитать из файлового деÑкриптора, а не Ñо Ñтандартного входа\n"
" \n"
" СоÑтоÑние выхода:\n"
-" СоÑтоÑние выхода будет нулевым, еÑли не был вÑтречен конец файла, не иÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\n"
-" (в Ñтом Ñлучае ÑоÑтоÑние выхода будет больше 128), не возникла ошибка приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹\n"
+" СоÑтоÑние выхода будет нулевым, еÑли не был вÑтречен конец файла, не "
+"иÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\n"
+" (в Ñтом Ñлучае ÑоÑтоÑние выхода будет больше 128), не возникла ошибка "
+"приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹\n"
" или не был указан недопуÑтимый файловый деÑкриптор как аргумент Ð´Ð»Ñ -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4238,91 +4108,11 @@ msgstr ""
" поÑледней команды, выполненной в функции или Ñкрипте.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает N или ошибку, еÑли командный процеÑÑор не выполнÑет функцию или Ñкрипт."
+" Возвращает N или ошибку, еÑли командный процеÑÑор не выполнÑет функцию "
+"или Ñкрипт."
-#: builtins.c:1054
+#: builtins.c:1055
#, fuzzy
-#| msgid ""
-#| "Set or unset values of shell options and positional parameters.\n"
-#| " \n"
-#| " Change the value of shell attributes and positional parameters, or\n"
-#| " display the names and values of shell variables.\n"
-#| " \n"
-#| " Options:\n"
-#| " -a Mark variables which are modified or created for export.\n"
-#| " -b Notify of job termination immediately.\n"
-#| " -e Exit immediately if a command exits with a non-zero status.\n"
-#| " -f Disable file name generation (globbing).\n"
-#| " -h Remember the location of commands as they are looked up.\n"
-#| " -k All assignment arguments are placed in the environment for a\n"
-#| " command, not just those that precede the command name.\n"
-#| " -m Job control is enabled.\n"
-#| " -n Read commands but do not execute them.\n"
-#| " -o option-name\n"
-#| " Set the variable corresponding to option-name:\n"
-#| " allexport same as -a\n"
-#| " braceexpand same as -B\n"
-#| " emacs use an emacs-style line editing interface\n"
-#| " errexit same as -e\n"
-#| " errtrace same as -E\n"
-#| " functrace same as -T\n"
-#| " hashall same as -h\n"
-#| " histexpand same as -H\n"
-#| " history enable command history\n"
-#| " ignoreeof the shell will not exit upon reading EOF\n"
-#| " interactive-comments\n"
-#| " allow comments to appear in interactive commands\n"
-#| " keyword same as -k\n"
-#| " monitor same as -m\n"
-#| " noclobber same as -C\n"
-#| " noexec same as -n\n"
-#| " noglob same as -f\n"
-#| " nolog currently accepted but ignored\n"
-#| " notify same as -b\n"
-#| " nounset same as -u\n"
-#| " onecmd same as -t\n"
-#| " physical same as -P\n"
-#| " pipefail the return value of a pipeline is the status of\n"
-#| " the last command to exit with a non-zero status,\n"
-#| " or zero if no command exited with a non-zero status\n"
-#| " posix change the behavior of bash where the default\n"
-#| " operation differs from the Posix standard to\n"
-#| " match the standard\n"
-#| " privileged same as -p\n"
-#| " verbose same as -v\n"
-#| " vi use a vi-style line editing interface\n"
-#| " xtrace same as -x\n"
-#| " -p Turned on whenever the real and effective user ids do not match.\n"
-#| " Disables processing of the $ENV file and importing of shell\n"
-#| " functions. Turning this option off causes the effective uid and\n"
-#| " gid to be set to the real uid and gid.\n"
-#| " -t Exit after reading and executing one command.\n"
-#| " -u Treat unset variables as an error when substituting.\n"
-#| " -v Print shell input lines as they are read.\n"
-#| " -x Print commands and their arguments as they are executed.\n"
-#| " -B the shell will perform brace expansion\n"
-#| " -C If set, disallow existing regular files to be overwritten\n"
-#| " by redirection of output.\n"
-#| " -E If set, the ERR trap is inherited by shell functions.\n"
-#| " -H Enable ! style history substitution. This flag is on\n"
-#| " by default when the shell is interactive.\n"
-#| " -P If set, do not resolve symbolic links when executing commands\n"
-#| " such as cd which change the current directory.\n"
-#| " -T If set, the DEBUG trap is inherited by shell functions.\n"
-#| " -- Assign any remaining arguments to the positional parameters.\n"
-#| " If there are no remaining arguments, the positional parameters\n"
-#| " are unset.\n"
-#| " - Assign any remaining arguments to the positional parameters.\n"
-#| " The -x and -v options are turned off.\n"
-#| " \n"
-#| " Using + rather than - causes these flags to be turned off. The\n"
-#| " flags can also be used upon invocation of the shell. The current\n"
-#| " set of flags may be found in $-. The remaining n ARGs are positional\n"
-#| " parameters and are assigned, in order, to $1, $2, .. $n. If no\n"
-#| " ARGs are given, all shell variables are printed.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is given."
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4365,7 +4155,8 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero status\n"
+" or zero if no command exited with a non-zero "
+"status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -4389,7 +4180,8 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell "
+"functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -4405,15 +4197,19 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
msgstr ""
-"ПриÑвоение или удаление значений параметров командного процеÑÑора и позиционных параметров.\n"
+"ПриÑвоение или удаление значений параметров командного процеÑÑора и "
+"позиционных параметров.\n"
" \n"
-" ИзменÑет значение атрибутов командного процеÑÑора и позиционных параметров или\n"
+" ИзменÑет значение атрибутов командного процеÑÑора и позиционных "
+"параметров или\n"
" выводит Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… командного процеÑÑора.\n"
" \n"
" Параметры:\n"
-" -a пометить переменные, которые были изменены или Ñозданы Ð´Ð»Ñ ÑкÑпорта\n"
+" -a пометить переменные, которые были изменены или Ñозданы Ð´Ð»Ñ "
+"ÑкÑпорта\n"
" -b немедленно уведомить о завершении заданиÑ\n"
-" -e немедленно выйти, еÑли команда выполнÑет выход Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием\n"
+" -e немедленно выйти, еÑли команда выполнÑет выход Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ "
+"ÑоÑтоÑнием\n"
" -f отключить генерацию имён файлов (подÑтановка)\n"
" -h запомнить раÑположение команд, как они выглÑдели ранее\n"
" -k помеÑтить в окружение Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ вÑе аргументы приÑвоениÑ,\n"
@@ -4424,16 +4220,19 @@ msgstr ""
" Задаёт переменную, ÑоответÑтвующую названию параметра:\n"
" allexport Ñквивалент -a\n"
" braceexpand Ñквивалент -B\n"
-" emacs иÑпользовать Ñтиль emacs Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок\n"
+" emacs иÑпользовать Ñтиль emacs Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ "
+"Ñтрок\n"
" errexit Ñквивалент -e\n"
" errtrace Ñквивалент -E\n"
" functrace Ñквивалент -T\n"
" hashall Ñквивалент -h\n"
" histexpand Ñквивалент -H\n"
" history включить журнал команд\n"
-" ignoreeof не закрывать командный процеÑÑор поÑле Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ†Ð° файла\n"
+" ignoreeof не закрывать командный процеÑÑор поÑле Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ "
+"конца файла\n"
" interactive-comments\n"
-" разрешить показ комментариев в интерактивных командах\n"
+" разрешить показ комментариев в интерактивных "
+"командах\n"
" keyword Ñквивалент -k\n"
" monitor Ñквивалент -m\n"
" noclobber Ñквивалент -C\n"
@@ -4444,17 +4243,22 @@ msgstr ""
" nounset Ñквивалент -u\n"
" onecmd Ñквивалент -t\n"
" physical Ñквивалент -P\n"
-" pipefail возвращаемое значение конвейера ÑвлÑетÑÑ ÑоÑтоÑнием\n"
-" поÑледней команды, завершившейÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием,\n"
-" или нулём, еÑли не было команды, завершившейÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÑоÑтоÑнием\n"
+" pipefail возвращаемое значение конвейера ÑвлÑетÑÑ "
+"ÑоÑтоÑнием\n"
+" поÑледней команды, завершившейÑÑ Ñ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ "
+"ÑоÑтоÑнием,\n"
+" или нулём, еÑли не было команды, завершившейÑÑ Ñ "
+"ненулевым ÑоÑтоÑнием\n"
" posix изменить поведение bash там, где операции\n"
-" по умолчанию отличаютÑÑ Ð¾Ñ‚ Ñтандарта Posix, чтобы\n"
+" по умолчанию отличаютÑÑ Ð¾Ñ‚ Ñтандарта Posix, "
+"чтобы\n"
" ÑоответÑтвовать Ñтому Ñтандарту\n"
" privileged Ñквивалент -p\n"
" verbose Ñквивалент -v\n"
" vi иÑпользовать Ñтиль vi Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок\n"
" xtrace Ñквивалент -x\n"
-" -p Включён, когда реальный и Ñффективный идентификаторы Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ Ñовпадают.\n"
+" -p Включён, когда реальный и Ñффективный идентификаторы Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ "
+"не Ñовпадают.\n"
" Отключает обработку файла $ENV и импорт функций командного\n"
" процеÑÑора. ЕÑли отключить Ñтот параметр, Ñффективные UID и GID\n"
" будут назначены реальным UID и GID.\n"
@@ -4465,12 +4269,16 @@ msgstr ""
" -B Командный процеÑÑор развернёт Ñкобки.\n"
" -C ЕÑли задано, запретить перезапиÑÑŒ ÑущеÑтвующих обычных файлов\n"
" вÑледÑтвие Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð°.\n"
-" -E ЕÑли задано, ловушка ERR наÑледуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñми командного процеÑÑора.\n"
-" -H Включить замену журнала Ñ Ð¸Ñпользованием !. По умолчанию Ñтот флаг\n"
+" -E ЕÑли задано, ловушка ERR наÑледуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñми командного "
+"процеÑÑора.\n"
+" -H Включить замену журнала Ñ Ð¸Ñпользованием !. По умолчанию Ñтот "
+"флаг\n"
" уÑтановлен, еÑли командный процеÑÑор интерактивный.\n"
-" -P ЕÑли задано, не разрешать Ñимвольные ÑÑылки при выполнении команд,\n"
+" -P ЕÑли задано, не разрешать Ñимвольные ÑÑылки при выполнении "
+"команд,\n"
" таких как cd, которые изменÑÑŽÑ‚ текущий каталог.\n"
-" -T ЕÑли задано, ловушка DEBUG наÑледуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñми командного процеÑÑора.\n"
+" -T ЕÑли задано, ловушка DEBUG наÑледуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñми командного "
+"процеÑÑора.\n"
" -- Ðазначить вÑе оÑтавшиеÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ позиционным параметрам.\n"
" ЕÑли аргументов не оÑталоÑÑŒ, позиционные параметры\n"
" удалÑÑŽÑ‚ÑÑ.\n"
@@ -4478,34 +4286,18 @@ msgstr ""
" Параметры -x и -v выключены.\n"
" \n"
" ЕÑли вмеÑто - указать +, флаги будут выключены. \n"
-" Флаги также можно иÑпользовать до вызова командного процеÑÑора. Текущий\n"
-" набор флагов можно проÑмотреть в $-. ОÑтавшиеÑÑ n аргументов ÑвлÑÑŽÑ‚ÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¼Ð¸\n"
+" Флаги также можно иÑпользовать до вызова командного процеÑÑора. "
+"Текущий\n"
+" набор флагов можно проÑмотреть в $-. ОÑтавшиеÑÑ n аргументов ÑвлÑÑŽÑ‚ÑÑ "
+"позиционными\n"
" параметрами и назначаютÑÑ Ð² порÑдке $1, $2, .. $n. ЕÑли\n"
" аргументы не указаны, выводÑÑ‚ÑÑ Ð²Ñе переменные командного процеÑÑора.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр."
-#: builtins.c:1139
+#: builtins.c:1140
#, fuzzy
-#| msgid ""
-#| "Unset values and attributes of shell variables and functions.\n"
-#| " \n"
-#| " For each NAME, remove the corresponding variable or function.\n"
-#| " \n"
-#| " Options:\n"
-#| " -f\ttreat each NAME as a shell function\n"
-#| " -v\ttreat each NAME as a shell variable\n"
-#| " -n\ttreat each NAME as a name reference and unset the variable itself\n"
-#| " \trather than the variable it references\n"
-#| " \n"
-#| " Without options, unset first tries to unset a variable, and if that fails,\n"
-#| " tries to unset a function.\n"
-#| " \n"
-#| " Some variables cannot be unset; also see `readonly'.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is given or a NAME is read-only."
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4517,7 +4309,8 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that fails,\n"
+" Without options, unset first tries to unset a variable, and if that "
+"fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -4532,23 +4325,27 @@ msgstr ""
" Параметры:\n"
" -f\tÑчитать каждое указанное Ð¸Ð¼Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ командного процеÑÑора\n"
" -v\tÑчитать каждое указанное Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ командного процеÑÑора\n"
-" -n\tÑчитать каждое указанное Ð¸Ð¼Ñ ÑÑылкой на название и удалить Ñаму переменную,\n"
+" -n\tÑчитать каждое указанное Ð¸Ð¼Ñ ÑÑылкой на название и удалить Ñаму "
+"переменную,\n"
" \tа не переменную, на которую указывает ÑÑылка\n"
" \n"
-" ЕÑли параметры не указаны, unset Ñначала пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ переменную. ЕÑли Ñто не удаётÑÑ,\n"
+" ЕÑли параметры не указаны, unset Ñначала пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ переменную. "
+"ЕÑли Ñто не удаётÑÑ,\n"
" пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ функцию.\n"
" \n"
" Ðекоторые переменные Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ. См. также «readonly».\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или указанное Ð¸Ð¼Ñ Ð´Ð¾Ñтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи."
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или указанное Ð¸Ð¼Ñ "
+"доÑтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before "
+"exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -4563,7 +4360,8 @@ msgstr ""
"УÑтановка атрибута ÑкÑпорта Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… командного процеÑÑора.\n"
" \n"
" Помечает вÑе имена Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого ÑкÑпорта в Ñреду длÑ\n"
-" поÑледующих выполнÑемых команд. ЕÑли указано значение, оно приÑваиваетÑÑ Ð¿ÐµÑ€ÐµÐ´ ÑкÑпортом.\n"
+" поÑледующих выполнÑемых команд. ЕÑли указано значение, оно "
+"приÑваиваетÑÑ Ð¿ÐµÑ€ÐµÐ´ ÑкÑпортом.\n"
" \n"
" Параметры:\n"
" -f\tиÑпользовать функции командного процеÑÑора\n"
@@ -4575,26 +4373,8 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или имÑ."
-#: builtins.c:1180
+#: builtins.c:1181
#, fuzzy
-#| msgid ""
-#| "Mark shell variables as unchangeable.\n"
-#| " \n"
-#| " Mark each NAME as read-only; the values of these NAMEs may not be\n"
-#| " changed by subsequent assignment. If VALUE is supplied, assign VALUE\n"
-#| " before marking as read-only.\n"
-#| " \n"
-#| " Options:\n"
-#| " -a\trefer to indexed array variables\n"
-#| " -A\trefer to associative array variables\n"
-#| " -f\trefer to shell functions\n"
-#| " -p\tdisplay a list of all readonly variables or functions, depending on\n"
-#| " whether or not the -f option is given\n"
-#| " \n"
-#| " An argument of `--' disables further option processing.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is given or NAME is invalid."
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4617,14 +4397,16 @@ msgstr ""
"Запрет Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ… командного процеÑÑора.\n"
" \n"
" Делает каждое Ð¸Ð¼Ñ Ð´Ð¾Ñтупным только чтениÑ. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтих имён нельзÑ\n"
-" будет изменить в будущем. ЕÑли указано значение, приÑваивает Ñто значение\n"
+" будет изменить в будущем. ЕÑли указано значение, приÑваивает Ñто "
+"значение\n"
" перед тем, как Ñделать его доÑтупным только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ.\n"
" \n"
" Параметры:\n"
" -a\tÑÑылатьÑÑ Ð½Ð° переменные индекÑированного маÑÑива\n"
" -A\tÑÑылатьÑÑ Ð½Ð° переменные аÑÑоциативного маÑÑива\n"
" -f\tиÑпользовать функции командного процеÑÑора\n"
-" -p\tвывеÑти ÑпиÑок вÑех переменных или функций, доÑтупных только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ,\n"
+" -p\tвывеÑти ÑпиÑок вÑех переменных или функций, доÑтупных только Ð´Ð»Ñ "
+"чтениÑ,\n"
" в завиÑимоÑти от того, указан ли параметр -f\n"
" \n"
" Ðргумент «--» отключает дальнейшую обработку параметров.\n"
@@ -4632,7 +4414,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или имÑ."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4650,7 +4432,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли N положительный или меньше $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4665,16 +4447,18 @@ msgid ""
msgstr ""
"Выполнение команд из файла в текущем командном процеÑÑоре.\n"
" \n"
-" Читает и выполнÑет команды из указанного файла в текущем командном процеÑÑоре. \n"
+" Читает и выполнÑет команды из указанного файла в текущем командном "
+"процеÑÑоре. \n"
" Файла ищетÑÑ Ð² каталогах, указанных в переменной $PATH.\n"
" ЕÑли указаны аргументы, они ÑтановÑÑ‚ÑÑ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¼Ð¸ параметрами\n"
" при выполнении файла.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает ÑоÑтоÑние поÑледней выполненной команды из файла. Возвращает ошибку,\n"
+" Возвращает ÑоÑтоÑние поÑледней выполненной команды из файла. Возвращает "
+"ошибку,\n"
" еÑли файл не удаётÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4689,94 +4473,21 @@ msgid ""
msgstr ""
"ПриоÑтановка работы командного процеÑÑора.\n"
" \n"
-" ПриоÑтанавливает работу текущего командного процеÑÑора до Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñигнала SIGCONT.\n"
-" Работу командных процеÑÑоров login можно приоÑтановить только в принудительном режиме.\n"
+" ПриоÑтанавливает работу текущего командного процеÑÑора до Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ "
+"Ñигнала SIGCONT.\n"
+" Работу командных процеÑÑоров login можно приоÑтановить только в "
+"принудительном режиме.\n"
" \n"
" Параметры:\n"
-" -f\tпринудительно приоÑтановить работу, даже еÑли командный процеÑÑор — login\n"
+" -f\tпринудительно приоÑтановить работу, даже еÑли командный "
+"процеÑÑор — login\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла ошибка."
+" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла "
+"ошибка."
-#: builtins.c:1261
+#: builtins.c:1262
#, fuzzy
-#| msgid ""
-#| "Evaluate conditional expression.\n"
-#| " \n"
-#| " Exits with a status of 0 (true) or 1 (false) depending on\n"
-#| " the evaluation of EXPR. Expressions may be unary or binary. Unary\n"
-#| " expressions are often used to examine the status of a file. There\n"
-#| " are string operators and numeric comparison operators as well.\n"
-#| " \n"
-#| " The behavior of test depends on the number of arguments. Read the\n"
-#| " bash manual page for the complete specification.\n"
-#| " \n"
-#| " File operators:\n"
-#| " \n"
-#| " -a FILE True if file exists.\n"
-#| " -b FILE True if file is block special.\n"
-#| " -c FILE True if file is character special.\n"
-#| " -d FILE True if file is a directory.\n"
-#| " -e FILE True if file exists.\n"
-#| " -f FILE True if file exists and is a regular file.\n"
-#| " -g FILE True if file is set-group-id.\n"
-#| " -h FILE True if file is a symbolic link.\n"
-#| " -L FILE True if file is a symbolic link.\n"
-#| " -k FILE True if file has its `sticky' bit set.\n"
-#| " -p FILE True if file is a named pipe.\n"
-#| " -r FILE True if file is readable by you.\n"
-#| " -s FILE True if file exists and is not empty.\n"
-#| " -S FILE True if file is a socket.\n"
-#| " -t FD True if FD is opened on a terminal.\n"
-#| " -u FILE True if the file is set-user-id.\n"
-#| " -w FILE True if the file is writable by you.\n"
-#| " -x FILE True if the file is executable by you.\n"
-#| " -O FILE True if the file is effectively owned by you.\n"
-#| " -G FILE True if the file is effectively owned by your group.\n"
-#| " -N FILE True if the file has been modified since it was last read.\n"
-#| " \n"
-#| " FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
-#| " modification date).\n"
-#| " \n"
-#| " FILE1 -ot FILE2 True if file1 is older than file2.\n"
-#| " \n"
-#| " FILE1 -ef FILE2 True if file1 is a hard link to file2.\n"
-#| " \n"
-#| " String operators:\n"
-#| " \n"
-#| " -z STRING True if string is empty.\n"
-#| " \n"
-#| " -n STRING\n"
-#| " STRING True if string is not empty.\n"
-#| " \n"
-#| " STRING1 = STRING2\n"
-#| " True if the strings are equal.\n"
-#| " STRING1 != STRING2\n"
-#| " True if the strings are not equal.\n"
-#| " STRING1 < STRING2\n"
-#| " True if STRING1 sorts before STRING2 lexicographically.\n"
-#| " STRING1 > STRING2\n"
-#| " True if STRING1 sorts after STRING2 lexicographically.\n"
-#| " \n"
-#| " Other operators:\n"
-#| " \n"
-#| " -o OPTION True if the shell option OPTION is enabled.\n"
-#| " -v VAR\t True if the shell variable VAR is set\n"
-#| " -R VAR\t True if the shell variable VAR is set and is a name reference.\n"
-#| " ! EXPR True if expr is false.\n"
-#| " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-#| " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-#| " \n"
-#| " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n"
-#| " -lt, -le, -gt, or -ge.\n"
-#| " \n"
-#| " Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-#| " less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-#| " than ARG2.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
-#| " false or an invalid argument is given."
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4810,7 +4521,8 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last read.\n"
+" -N FILE True if the file has been modified since it was last "
+"read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4831,7 +4543,8 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 lexicographically.\n"
+" True if STRING1 sorts before STRING2 "
+"lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4859,7 +4572,8 @@ msgstr ""
"РаÑчёт уÑловного выражениÑ.\n"
" \n"
" Возвращает ÑоÑтоÑние 0 (иÑтина) или 1 (ложь) поÑле\n"
-" раÑчёта выражениÑ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть унарными или бинарными. Унарные\n"
+" раÑчёта выражениÑ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть унарными или бинарными. "
+"Унарные\n"
" Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ‡Ð°Ñто иÑпользуютÑÑ Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°. Также\n"
" доÑтупны Ñтоковые операторы и операторы ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ‡Ð¸Ñел.\n"
" \n"
@@ -4873,7 +4587,8 @@ msgstr ""
" -c ФÐЙЛ ИÑтина, еÑли файл предÑтавлÑет Ñимвольное уÑтройÑтво.\n"
" -d ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼.\n"
" -e ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует.\n"
-" -f ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом.\n"
+" -f ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ "
+"файлом.\n"
" -g ФÐЙЛ ИÑтина, еÑли Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° уÑтановлен бит SGID.\n"
" -h ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ñимвольной ÑÑылкой.\n"
" -L ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ñимвольной ÑÑылкой.\n"
@@ -4882,12 +4597,15 @@ msgstr ""
" -r ФÐЙЛ ИÑтина, еÑли вы можете прочитать файл.\n"
" -s ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и не ÑвлÑетÑÑ Ð¿ÑƒÑтым.\n"
" -S ФÐЙЛ ИÑтина, еÑли файл ÑвлÑетÑÑ Ñокетом.\n"
-" -t ФД ИÑтина, еÑли файловый деÑкриптор ФД открыт в терминале.\n"
+" -t ФД ИÑтина, еÑли файловый деÑкриптор ФД открыт в "
+"терминале.\n"
" -u ФÐЙЛ ИÑтина, еÑли Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° уÑтановлен бит SUID.\n"
" -w ФÐЙЛ ИÑтина, еÑли вы можете выполнить запиÑÑŒ в файл.\n"
" -x ФÐЙЛ ИÑтина, еÑли вы можете выполнить файл.\n"
-" -O ФÐЙЛ ИÑтина, еÑли вы ÑвлÑетеÑÑŒ Ñффективным владельцем файла.\n"
-" -G ФÐЙЛ ИÑтина, еÑли ваша группа ÑвлÑетÑÑ Ñффективным владельцем файла.\n"
+" -O ФÐЙЛ ИÑтина, еÑли вы ÑвлÑетеÑÑŒ Ñффективным владельцем "
+"файла.\n"
+" -G ФÐЙЛ ИÑтина, еÑли ваша группа ÑвлÑетÑÑ Ñффективным "
+"владельцем файла.\n"
" -N ФÐЙЛ ИÑтина, еÑли файл был изменён поÑле поÑледнего чтениÑ.\n"
" \n"
" ФÐЙЛ1 -nt ФÐЙЛ2 ИÑтина, еÑли файл1 новее файла2 (ÑоглаÑно\n"
@@ -4895,7 +4613,8 @@ msgstr ""
" \n"
" ФÐЙЛ1 -ot ФÐЙЛ2 ИÑтина, еÑли файл1 Ñтарее файла2.\n"
" \n"
-" ФÐЙЛ1 -ef ФÐЙЛ2 ИÑтина, еÑли файл1 ÑвлÑетÑÑ Ð¶Ñ‘Ñткой ÑÑылкой на файл2.\n"
+" ФÐЙЛ1 -ef ФÐЙЛ2 ИÑтина, еÑли файл1 ÑвлÑетÑÑ Ð¶Ñ‘Ñткой ÑÑылкой на "
+"файл2.\n"
" \n"
" Строковые операторы:\n"
" \n"
@@ -4909,31 +4628,38 @@ msgstr ""
" СТРОКÐ1 != СТРОКÐ2\n"
" ИÑтина, еÑли Ñтроки не Ñовпадают.\n"
" СТРОКÐ1 < СТРОКÐ2\n"
-" ИÑтина, еÑли СТРОКÐ1 ÑортируетÑÑ Ð´Ð¾ СТРОКИ2 лекÑикографичеÑки.\n"
+" ИÑтина, еÑли СТРОКÐ1 ÑортируетÑÑ Ð´Ð¾ СТРОКИ2 "
+"лекÑикографичеÑки.\n"
" СТРОКÐ1 > СТРОКÐ2\n"
-" ИÑтина, еÑли СТРОКÐ1 ÑортируетÑÑ Ð¿Ð¾Ñле СТРОКИ2 лекÑикографичеÑки.\n"
+" ИÑтина, еÑли СТРОКÐ1 ÑортируетÑÑ Ð¿Ð¾Ñле СТРОКИ2 "
+"лекÑикографичеÑки.\n"
" \n"
" ОÑтальные операторы:\n"
" \n"
" -o ПÐРÐМЕТР ИÑтина, еÑли параметр командного процеÑÑора включён.\n"
" -v ПЕР\t ИÑтина, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора задана\n"
-" -R ПЕР\t ИÑтина, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора задана и ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ ÑÑылкой.\n"
+" -R ПЕР\t ИÑтина, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора задана и "
+"ÑвлÑетÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ ÑÑылкой.\n"
" ! ВЫРÐЖ ИÑтина, еÑли выражение возвращает ложь.\n"
" ВЫРÐЖ1 -a ВЫРÐЖ2 ИÑтина, еÑли оба Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÑŽÑ‚ иÑтину.\n"
-" ВЫРÐЖ1 -o ВЫРÐЖ2 ИÑтина, еÑли Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений возвращает иÑтину.\n"
+" ВЫРÐЖ1 -o ВЫРÐЖ2 ИÑтина, еÑли Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений возвращает "
+"иÑтину.\n"
" \n"
-" арг1 ОП арг2 МатематичеÑкие проверки. ОП может быть одним из Ñледующих: -eq, -ne,\n"
+" арг1 ОП арг2 МатематичеÑкие проверки. ОП может быть одним из "
+"Ñледующих: -eq, -ne,\n"
" -lt, -le, -gt или -ge.\n"
" \n"
-" МатематичеÑкие бинарные операторы возвращают иÑтину, еÑли ÐРГУМЕÐТ1 равен, не равен,\n"
+" МатематичеÑкие бинарные операторы возвращают иÑтину, еÑли ÐРГУМЕÐТ1 "
+"равен, не равен,\n"
" меньше, меньше или равен либо больше или равен\n"
" ÐРГУМЕÐТУ2.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли выражение иÑтинно, или ошибку, еÑли выражение ложно\n"
+" Возвращает уÑпех, еÑли выражение иÑтинно, или ошибку, еÑли выражение "
+"ложно\n"
" или указан недопуÑтимый аргумент."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4945,11 +4671,12 @@ msgstr ""
" Это Ñиноним вÑтроенной команды test, но поÑледним аргументом должна\n"
" быть Ñкобка «]», ÑоответÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰ÐµÐ¹ «[»."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of its\n"
+" Prints the accumulated user and system times for the shell and all of "
+"its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4957,17 +4684,19 @@ msgid ""
msgstr ""
"Отображение времени процеÑÑа.\n"
" \n"
-" Показывает объединённые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ ÑиÑтемы Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾\n"
+" Показывает объединённые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ ÑиÑтемы Ð´Ð»Ñ "
+"командного\n"
" процеÑÑора и вÑех его дочерних процеÑÑов.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Ð’Ñегда возвращает уÑпех."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives signals\n"
+" Defines and activates handlers to be run when the shell receives "
+"signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4976,26 +4705,34 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
-" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
+"If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
+"If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
+"a\n"
+" script run by the . or source builtins finishes executing. A "
+"SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause "
+"the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands associated\n"
+" If no arguments are supplied, trap prints the list of commands "
+"associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\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."
+" Returns success unless a SIGSPEC is invalid or an invalid option is "
+"given."
msgstr ""
"Захват Ñигналов и других Ñобытий.\n"
" \n"
@@ -5003,16 +4740,22 @@ msgstr ""
" командный процеÑÑор получает Ñигналы или при других уÑловиÑÑ….\n"
" \n"
" Ðргумент — Ñто команда, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑчитываетÑÑ Ð¸ выполнÑетÑÑ, когда\n"
-" командный процеÑÑор получает указанные Ñигнал(Ñ‹). ЕÑли аргумент отÑутÑтвует (и указан один Ñигнал)\n"
+" командный процеÑÑор получает указанные Ñигнал(Ñ‹). ЕÑли аргумент "
+"отÑутÑтвует (и указан один Ñигнал)\n"
" или указано «-», Ð´Ð»Ñ Ð²Ñех указанных Ñигналов воÑÑтанавливаютÑÑ\n"
-" иÑходные значениÑ. ЕÑли аргумент — пуÑÑ‚Ð°Ñ Ñтрока, вÑе указанные Ñигналы игнорируютÑÑ\n"
+" иÑходные значениÑ. ЕÑли аргумент — пуÑÑ‚Ð°Ñ Ñтрока, вÑе указанные Ñигналы "
+"игнорируютÑÑ\n"
" командным процеÑÑором и вызываемыми им командами.\n"
" \n"
-" ЕÑли Ñигнал — EXIT (0), аргумент выполнÑетÑÑ Ð¿Ñ€Ð¸ выходе из командного процеÑÑора. ЕÑли\n"
-" Ñигнал — DEBUG, аргумент выполнÑетÑÑ Ð¿ÐµÑ€ÐµÐ´ каждой проÑтой командой. ЕÑли\n"
+" ЕÑли Ñигнал — EXIT (0), аргумент выполнÑетÑÑ Ð¿Ñ€Ð¸ выходе из командного "
+"процеÑÑора. ЕÑли\n"
+" Ñигнал — DEBUG, аргумент выполнÑетÑÑ Ð¿ÐµÑ€ÐµÐ´ каждой проÑтой командой. "
+"ЕÑли\n"
" Ñигнал — RETURN, аргумент выполнÑетÑÑ ÐºÐ°Ð¶Ð´Ñ‹Ð¹ раз, когда функциÑ\n"
-" или Ñкрипт выполнÑетÑÑ Ð² . или иÑходные вÑтроенные команды завершают Ñвою работу. Сигнал\n"
-" ERR означает выполнение аргумента каждый раз, когда ошибка команды приведёт\n"
+" или Ñкрипт выполнÑетÑÑ Ð² . или иÑходные вÑтроенные команды завершают "
+"Ñвою работу. Сигнал\n"
+" ERR означает выполнение аргумента каждый раз, когда ошибка команды "
+"приведёт\n"
" к выходу из командного процеÑÑора, когда включён параметр -e.\n"
" \n"
" ЕÑли аргументы не указаны, trap выводит ÑпиÑок команд, ÑвÑзанных\n"
@@ -5022,41 +4765,18 @@ msgstr ""
" -l\tпоказать Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов и их номера\n"
" -p\tпоказать команды trap, ÑвÑзанные Ñ ÐºÐ°Ð¶Ð´Ñ‹Ð¼ Ñигналом\n"
" \n"
-" Идентификатор Ñигнала — Ñто название Ñигнала в <signal.h> или номер Ñигнала.\n"
-" ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов не завиÑÑÑ‚ от региÑтра, а Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ SIG не ÑвлÑетÑÑ Ð¾Ð±Ñзательным. \n"
-" Сигнал можно отправить в командный процеÑÑор командой «kill -signal $$».\n"
+" Идентификатор Ñигнала — Ñто название Ñигнала в <signal.h> или номер "
+"Ñигнала.\n"
+" ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов не завиÑÑÑ‚ от региÑтра, а Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ SIG не ÑвлÑетÑÑ "
+"обÑзательным. \n"
+" Сигнал можно отправить в командный процеÑÑор командой «kill -signal $"
+"$».\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый Ñигнал или параметр."
-#: builtins.c:1400
+#: builtins.c:1401
#, fuzzy
-#| msgid ""
-#| "Display information about command type.\n"
-#| " \n"
-#| " For each NAME, indicate how it would be interpreted if used as a\n"
-#| " command name.\n"
-#| " \n"
-#| " Options:\n"
-#| " -a\tdisplay all locations containing an executable named NAME;\n"
-#| " \tincludes aliases, builtins, and functions, if and only if\n"
-#| " \tthe `-p' option is not also used\n"
-#| " -f\tsuppress shell function lookup\n"
-#| " -P\tforce a PATH search for each NAME, even if it is an alias,\n"
-#| " \tbuiltin, or function, and returns the name of the disk file\n"
-#| " \tthat would be executed\n"
-#| " -p\treturns either the name of the disk file that would be executed,\n"
-#| " \tor nothing if `type -t NAME' would not return `file'.\n"
-#| " -t\toutput a single word which is one of `alias', `keyword',\n"
-#| " \t`function', `builtin', `file' or `', if NAME is an alias, shell\n"
-#| " \treserved word, shell function, shell builtin, disk file, or not\n"
-#| " \tfound, respectively\n"
-#| " \n"
-#| " Arguments:\n"
-#| " NAME\tCommand name to be interpreted.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success if all of the NAMEs are found; fails if any are not found."
msgid ""
"Display information about command type.\n"
" \n"
@@ -5082,25 +4802,30 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not found."
+" Returns success if all of the NAMEs are found; fails if any are not "
+"found."
msgstr ""
"Вывод информации о типе команды.\n"
" \n"
-" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ указанного имени показывает, как оно будет интерпретировано при\n"
+" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ указанного имени показывает, как оно будет интерпретировано "
+"при\n"
" иÑпользовании в качеÑтве Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹.\n"
" \n"
" Параметры:\n"
-" -a\tпоказать вÑе меÑтоположениÑ, где еÑÑ‚ÑŒ иÑполнÑемый файл Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем,\n"
+" -a\tпоказать вÑе меÑтоположениÑ, где еÑÑ‚ÑŒ иÑполнÑемый файл Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ "
+"именем,\n"
" \tÐ²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¿Ñевдонимы, вÑтроенные команды и функции, а также при уÑловии\n"
" \tчто не иÑпользуетÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ «-p»\n"
" -f\tне иÑкать функции командного процеÑÑора\n"
-" -P\tпринудительно иÑкать в $PATH вÑе указанные имена, даже еÑли Ñто пÑевдоним,\n"
+" -P\tпринудительно иÑкать в $PATH вÑе указанные имена, даже еÑли Ñто "
+"пÑевдоним,\n"
" \tвÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° или функциÑ, и возвращать название файла на диÑке,\n"
" \tкоторый будет запущен\n"
" -p\tвозвращает название файла на диÑке, который будет запущен,\n"
" \tили ничего, еÑли «type -t имÑ» не возвращает «file».\n"
" -t\tвывеÑти одно из Ñлов «alias», «keyword»,\n"
-" \t«function», «builtin», «file» или «», еÑли указанное Ð¸Ð¼Ñ ÑвлÑетÑÑ, ÑоответÑтвенно,\n"
+" \t«function», «builtin», «file» или «», еÑли указанное Ð¸Ð¼Ñ ÑвлÑетÑÑ, "
+"ÑоответÑтвенно,\n"
" \tпÑевдонимом, зарезервированным Ñловом, функцией, вÑтроенной командой\n"
" \tкомандного процеÑÑора, файлом на диÑке или Ð¸Ð¼Ñ Ð½Ðµ было найдено\n"
" \n"
@@ -5108,57 +4833,16 @@ msgstr ""
" ИМЯ\tназвание интерпретируемой команды\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли вÑе указанные имена были найдены, или ошибку в противном Ñлучае."
+" Возвращает уÑпех, еÑли вÑе указанные имена были найдены, или ошибку в "
+"противном Ñлучае."
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
-#| msgid ""
-#| "Modify shell resource limits.\n"
-#| " \n"
-#| " Provides control over the resources available to the shell and processes\n"
-#| " it creates, on systems that allow such control.\n"
-#| " \n"
-#| " Options:\n"
-#| " -S\tuse the `soft' resource limit\n"
-#| " -H\tuse the `hard' resource limit\n"
-#| " -a\tall current limits are reported\n"
-#| " -b\tthe socket buffer size\n"
-#| " -c\tthe maximum size of core files created\n"
-#| " -d\tthe maximum size of a process's data segment\n"
-#| " -e\tthe maximum scheduling priority (`nice')\n"
-#| " -f\tthe maximum size of files written by the shell and its children\n"
-#| " -i\tthe maximum number of pending signals\n"
-#| " -l\tthe maximum size a process may lock into memory\n"
-#| " -m\tthe maximum resident set size\n"
-#| " -n\tthe maximum number of open file descriptors\n"
-#| " -p\tthe pipe buffer size\n"
-#| " -q\tthe maximum number of bytes in POSIX message queues\n"
-#| " -r\tthe maximum real-time scheduling priority\n"
-#| " -s\tthe maximum stack size\n"
-#| " -t\tthe maximum amount of cpu time in seconds\n"
-#| " -u\tthe maximum number of user processes\n"
-#| " -v\tthe size of virtual memory\n"
-#| " -x\tthe maximum number of file locks\n"
-#| " -T the maximum number of threads\n"
-#| " \n"
-#| " Not all options are available on all platforms.\n"
-#| " \n"
-#| " If LIMIT is given, it is the new value of the specified resource; the\n"
-#| " special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
-#| " current soft limit, the current hard limit, and no limit, respectively.\n"
-#| " Otherwise, the current value of the specified resource is printed. If\n"
-#| " no option is given, then -f is assumed.\n"
-#| " \n"
-#| " Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-#| " -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-#| " number of processes.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or an error occurs."
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and processes\n"
+" Provides control over the resources available to the shell and "
+"processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -5204,7 +4888,8 @@ msgid ""
msgstr ""
"Изменение ограничений реÑурÑов командного процеÑÑора.\n"
" \n"
-" ПозволÑет контролировать реÑурÑÑ‹, доÑтупные командному процеÑÑору и Ñоздаваемым\n"
+" ПозволÑет контролировать реÑурÑÑ‹, доÑтупные командному процеÑÑору и "
+"Ñоздаваемым\n"
" им процеÑÑам, в ÑиÑтемах, где возможен такой контроль.\n"
" \n"
" Параметры:\n"
@@ -5215,7 +4900,8 @@ msgstr ""
" -c\tмакÑимальный размер Ñоздаваемых core-файлов\n"
" -d\tмакÑимальный размер Ñегмента данных процеÑÑа\n"
" -e\tмакÑимальный приоритет Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ («nice»)\n"
-" -f\tмакÑимальный размер файлов, запиÑываемых командным процеÑÑором и его дочерними процеÑÑами\n"
+" -f\tмакÑимальный размер файлов, запиÑываемых командным процеÑÑором и "
+"его дочерними процеÑÑами\n"
" -i\tмакÑимальное чиÑло ожидающих Ñигналов\n"
" -l\tмакÑимальный объём, который процеÑÑ Ð¼Ð¾Ð¶ÐµÑ‚ заблокировать в памÑти\n"
" -m\tмакÑимальный объём резидентной памÑти\n"
@@ -5232,20 +4918,24 @@ msgstr ""
" \n"
" Ðе вÑе параметры доÑтупны на вÑех платформах.\n"
" \n"
-" ЕÑли указано ограничение, оно ÑвлÑетÑÑ Ð½Ð¾Ð²Ñ‹Ð¼ значением Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ реÑурÑа.\n"
+" ЕÑли указано ограничение, оно ÑвлÑетÑÑ Ð½Ð¾Ð²Ñ‹Ð¼ значением Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ "
+"реÑурÑа.\n"
" Специальные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Â«soft», «hard» и «unlimited» означают,\n"
-" ÑоответÑтвенно, текущее мÑгкое ограничение, текущее жёÑткое ограничение и отÑутÑтвие ограничениÑ.\n"
+" ÑоответÑтвенно, текущее мÑгкое ограничение, текущее жёÑткое ограничение "
+"и отÑутÑтвие ограничениÑ.\n"
" Ð’ противном Ñлучае выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение указанного реÑурÑа. ЕÑли\n"
" параметр не указан, подразумеваетÑÑ Ð¸Ñпользование параметра -f.\n"
" \n"
-" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑŽÑ‚ÑÑ Ñ ÑˆÐ°Ð³Ð¾Ð¼ 1024 байт, кроме параметра -t Ñ ÑˆÐ°Ð³Ð¾Ð¼ в Ñекундах,\n"
+" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°ÑŽÑ‚ÑÑ Ñ ÑˆÐ°Ð³Ð¾Ð¼ 1024 байт, кроме параметра -t Ñ ÑˆÐ°Ð³Ð¾Ð¼ в "
+"Ñекундах,\n"
" параметра -p Ñ ÑˆÐ°Ð³Ð¾Ð¼ 512 байт и параметра -u, предÑтавлÑющего\n"
" количеÑтво процеÑÑов.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла ошибка."
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
+"ошибка."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -5264,52 +4954,46 @@ msgid ""
msgstr ""
"Отображение или указание маÑки режима Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð².\n"
" \n"
-" Задаёт маÑку РЕЖИМ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñоздаваемых пользователем. ЕÑли РЕЖИМ не указан,\n"
+" Задаёт маÑку РЕЖИМ Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð², Ñоздаваемых пользователем. ЕÑли РЕЖИМ не "
+"указан,\n"
" выводит текущее значение маÑки.\n"
" \n"
-" ЕÑли РЕЖИМ начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹, он интерпретируетÑÑ ÐºÐ°Ðº воÑьмеричное чиÑло.\n"
-" Ð’ противном Ñлучае он ÑчитаетÑÑ Ñимвольной Ñтрокой как Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ chmod(1).\n"
+" ЕÑли РЕЖИМ начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹, он интерпретируетÑÑ ÐºÐ°Ðº воÑьмеричное "
+"чиÑло.\n"
+" Ð’ противном Ñлучае он ÑчитаетÑÑ Ñимвольной Ñтрокой как Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ "
+"chmod(1).\n"
" \n"
" Параметры:\n"
-" -p\tеÑли РЕЖИМ не указан, вывеÑти маÑку, пригодную Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n"
-" -S\tвывеÑти маÑку в Ñимвольном виде, в противном Ñлучае выводитÑÑ Ð²Ð¾Ñьмеричное чиÑло\n"
+" -p\tеÑли РЕЖИМ не указан, вывеÑти маÑку, пригодную Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ "
+"иÑпользованиÑ\n"
+" -S\tвывеÑти маÑку в Ñимвольном виде, в противном Ñлучае выводитÑÑ "
+"воÑьмеричное чиÑло\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый РЕЖИМ или параметр."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
-#| msgid ""
-#| "Wait for job completion and return exit status.\n"
-#| " \n"
-#| " Waits for each process identified by an ID, which may be a process ID or a\n"
-#| " job specification, and reports its termination status. If ID is not\n"
-#| " given, waits for all currently active child processes, and the return\n"
-#| " status is zero. If ID is a a job specification, waits for all processes\n"
-#| " in that job's pipeline.\n"
-#| " \n"
-#| " If the -n option is supplied, waits for the next job to terminate and\n"
-#| " returns its exit status.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-#| " option is given."
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or a\n"
+" Waits for each process identified by an ID, which may be a process ID or "
+"a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for a single job from the list of IDs,\n"
-" or, if no IDs are supplied, for the next job to complete and returns its\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
" exit status.\n"
" \n"
" If the -p option is supplied, the process or job identifier of the job\n"
" for which the exit status is returned is assigned to the variable VAR\n"
-" named by the option argument. The variable will be unset initially, before\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
@@ -5323,9 +5007,11 @@ msgstr ""
"Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¸ возврат ÑоÑтоÑÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð°.\n"
" \n"
" Ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех процеÑÑов, заданных идентификаторами\n"
-" (идентификатор процеÑÑа или номер заданиÑ), и возвращает их ÑоÑтоÑние выхода. ЕÑли идентификатор\n"
+" (идентификатор процеÑÑа или номер заданиÑ), и возвращает их ÑоÑтоÑние "
+"выхода. ЕÑли идентификатор\n"
" не указан, ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех активных дочерних процеÑÑов\n"
-" и возвращает нулевое ÑоÑтоÑние выхода. ЕÑли идентификатор не ÑвлÑетÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ заданиÑ, ожидает завершениÑ\n"
+" и возвращает нулевое ÑоÑтоÑние выхода. ЕÑли идентификатор не ÑвлÑетÑÑ "
+"номером заданиÑ, ожидает завершениÑ\n"
" вÑех процеÑÑов в конвейере данного заданиÑ.\n"
" \n"
" ЕÑли указан параметр -n, ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñледующего заданиÑ\n"
@@ -5335,29 +5021,33 @@ msgstr ""
" Возвращает ÑоÑтоÑние поÑледнего идентификатора. Возвращает ошибку, еÑли\n"
" указан недопуÑтимый идентификатор или параметр."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination status.\n"
+" Waits for each process specified by a PID and reports its termination "
+"status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an "
+"invalid\n"
" option is given."
msgstr ""
"Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа и возврат ÑоÑтоÑÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð°.\n"
" \n"
-" Ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех процеÑÑов, заданных идентификаторами (PID), и возвращает их ÑоÑтоÑние выхода.\n"
+" Ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех процеÑÑов, заданных идентификаторами (PID), и "
+"возвращает их ÑоÑтоÑние выхода.\n"
" ЕÑли идентификатор процеÑÑа не указан, ожидает Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñех активных\n"
-" дочерних процеÑÑов и возвращает нулевое ÑоÑтоÑние выхода. PID должен быть идентификатором процеÑÑа.\n"
+" дочерних процеÑÑов и возвращает нулевое ÑоÑтоÑние выхода. PID должен "
+"быть идентификатором процеÑÑа.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледнего идентификатора. Возвращает ошибку, еÑли\n"
" указан недопуÑтимый идентификатор или параметр."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -5373,13 +5063,14 @@ msgstr ""
" \n"
" Цикл «for» выполнÑет поÑледовательноÑÑ‚ÑŒ команд Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñлемента\n"
" ÑпиÑка. ЕÑли операнд «in СЛОВР...;» отÑутÑтвует, подразумеваетÑÑ\n"
-" операнд «in \"$@\"». Каждому Ñлементу в ÑпиÑке СЛОВРприÑваиваетÑÑ Ð˜ÐœÐ¯ и Ð´Ð»Ñ Ð½ÐµÐ³Ð¾\n"
+" операнд «in \"$@\"». Каждому Ñлементу в ÑпиÑке СЛОВРприÑваиваетÑÑ Ð˜ÐœÐ¯ "
+"и Ð´Ð»Ñ Ð½ÐµÐ³Ð¾\n"
" выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5403,13 +5094,14 @@ msgstr ""
" \t\tКОМÐÐДЫ\n"
" \t\t(( ВЫРÐЖ3 ))\n"
" \tdone\n"
-" ВЫРÐЖ1, ВЫРÐЖ2 и ВЫРÐЖ3 — Ñто математичеÑкие выражениÑ. ЕÑли любое из выражений\n"
+" ВЫРÐЖ1, ВЫРÐЖ2 и ВЫРÐЖ3 — Ñто математичеÑкие выражениÑ. ЕÑли любое из "
+"выражений\n"
" не указано, ÑчитаетÑÑ, что оно возвращает 1.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5432,20 +5124,26 @@ msgstr ""
" \n"
" СЛОВРразворачиваютÑÑ, Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€ÑƒÑ ÑпиÑок Ñлов. \n"
" Ðабор развёрнутых Ñлов выводитÑÑ Ð² поток ошибок Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸\n"
-" в начале Ñтрок. ЕÑли операнд «in СЛОВР...;» отÑутÑтвует, подразумеваетÑÑ\n"
-" операнд «in \"$@\"». Затем выводитÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ $PS3 и Ñо Ñтандартного ввода\n"
+" в начале Ñтрок. ЕÑли операнд «in СЛОВР...;» отÑутÑтвует, "
+"подразумеваетÑÑ\n"
+" операнд «in \"$@\"». Затем выводитÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ $PS3 и Ñо Ñтандартного "
+"ввода\n"
" ÑчитываетÑÑ Ñтрока. ЕÑли Ñтрока ÑоÑтоит из номера,\n"
" ÑоответÑтвующего одному из показанных Ñлов, Ñтому Ñлову\n"
-" приÑваиваетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ðµ имÑ. ЕÑли Ñтрока пуÑтаÑ, будут повторно показаны указанные Ñлова\n"
-" и приглашение. ЕÑли прочитан Ñимвол конца файла, команда завершает Ñвою работу. ЕÑли прочитаны\n"
-" любые другие значениÑ, указанному имени приÑваиваетÑÑ Ð¿ÑƒÑтое значение. ÐŸÑ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока\n"
-" ÑохранÑетÑÑ Ð² переменную $REPLY. Команды выполнÑÑŽÑ‚ÑÑ Ð¿Ð¾Ñле каждой выборки,\n"
+" приÑваиваетÑÑ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ðµ имÑ. ЕÑли Ñтрока пуÑтаÑ, будут повторно "
+"показаны указанные Ñлова\n"
+" и приглашение. ЕÑли прочитан Ñимвол конца файла, команда завершает Ñвою "
+"работу. ЕÑли прочитаны\n"
+" любые другие значениÑ, указанному имени приÑваиваетÑÑ Ð¿ÑƒÑтое значение. "
+"ÐŸÑ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока\n"
+" ÑохранÑетÑÑ Ð² переменную $REPLY. Команды выполнÑÑŽÑ‚ÑÑ Ð¿Ð¾Ñле каждой "
+"выборки,\n"
" пока не будет выполнена команда прерываниÑ.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5462,18 +5160,20 @@ msgid ""
msgstr ""
"Вывод времени, потраченного на выполнение конвейера.\n"
" \n"
-" ВыполнÑет конвейер и выводит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ времени, пользовательÑкого времени\n"
+" ВыполнÑет конвейер и выводит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ времени, "
+"пользовательÑкого времени\n"
" и ÑиÑтемного времени ЦП, потраченного на Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ð²ÐµÐ¹ÐµÑ€Ð°.\n"
" \n"
" Параметры:\n"
" -p\tпоказать Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ в формате Posix\n"
" \n"
-" Ð”Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ переменной $TIMEFORMAT.\n"
+" Ð”Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ñ… данных иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ переменной "
+"$TIMEFORMAT.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращаемое ÑоÑтоÑние ÑоответÑтвует ÑоÑтоÑнию выхода конвейера."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5491,16 +5191,21 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then "
+"the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
+"is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of the\n"
-" entire construct is the exit status of the last command executed, or zero\n"
+" `then COMMANDS' list is executed and the if command completes. "
+"Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of "
+"the\n"
+" entire construct is the exit status of the last command executed, or "
+"zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -5508,23 +5213,30 @@ msgid ""
msgstr ""
"Выполнение команд в завиÑимоÑти от уÑловий.\n"
" \n"
-" Сначала выполнÑетÑÑ ÑпиÑок «if КОМÐÐДЫ». ЕÑли ÑоÑтоÑние выхода нулевое,\n"
-" выполнÑетÑÑ ÑпиÑок «then КОМÐÐДЫ». Ð’ противном Ñлучае выполнÑетÑÑ Ð¿Ð¾ очереди\n"
+" Сначала выполнÑетÑÑ ÑпиÑок «if КОМÐÐДЫ». ЕÑли ÑоÑтоÑние выхода "
+"нулевое,\n"
+" выполнÑетÑÑ ÑпиÑок «then КОМÐÐДЫ». Ð’ противном Ñлучае выполнÑетÑÑ Ð¿Ð¾ "
+"очереди\n"
" вÑе ÑпиÑки «elif КОМÐÐДЫ», и еÑли их ÑоÑтоÑние выхода будет нулевым,\n"
-" выполнитÑÑ ÑпиÑок «then КОМÐÐДЫ», и команда if завершитÑÑ. Ð’ противном Ñлучае\n"
-" выполнитÑÑ ÑпиÑок «else КОМÐÐДЫ», еÑли он указан. СоÑтоÑние выхода вÑей\n"
-" конÑтрукции ÑоответÑтвует ÑоÑтоÑнию выхода поÑледней выполненной команды или будет нулевым,\n"
+" выполнитÑÑ ÑпиÑок «then КОМÐÐДЫ», и команда if завершитÑÑ. Ð’ противном "
+"Ñлучае\n"
+" выполнитÑÑ ÑпиÑок «else КОМÐÐДЫ», еÑли он указан. СоÑтоÑние выхода "
+"вÑей\n"
+" конÑтрукции ÑоответÑтвует ÑоÑтоÑнию выхода поÑледней выполненной команды "
+"или будет нулевым,\n"
" еÑли ни одна проверка уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ возвратила иÑтину.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5537,12 +5249,14 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5555,18 +5269,8 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1671
+#: builtins.c:1672
#, fuzzy
-#| msgid ""
-#| "Create a coprocess named NAME.\n"
-#| " \n"
-#| " Execute COMMAND asynchronously, with the standard output and standard\n"
-#| " input of the command connected via a pipe to file descriptors assigned\n"
-#| " to indices 0 and 1 of an array variable NAME in the executing shell.\n"
-#| " The default NAME is \"COPROC\".\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns the exit status of COMMAND."
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5581,19 +5285,22 @@ msgstr ""
"Создание дополнительного процеÑÑа Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем.\n"
" \n"
" ВыполнÑет команду аÑинхронно, когда Ñтандартный вывод и Ñтандартный\n"
-" вход команды подключены через конвейер к деÑкрипторам файлов, которые назначены\n"
-" указателÑм 0 и 1 маÑÑива переменных ИМЯ в активном командном процеÑÑоре.\n"
+" вход команды подключены через конвейер к деÑкрипторам файлов, которые "
+"назначены\n"
+" указателÑм 0 и 1 маÑÑива переменных ИМЯ в активном командном "
+"процеÑÑоре.\n"
" Ð˜Ð¼Ñ Ð¿Ð¾ умолчанию — «COPROC».\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние выхода команды."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is "
+"invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -5602,15 +5309,17 @@ msgid ""
msgstr ""
"Определение функции командного процеÑÑора.\n"
" \n"
-" Создаёт функцию командного процеÑÑора Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем. При запуÑке в качеÑтве проÑтой команды\n"
-" ИМЯ выполнÑет КОМÐÐДЫ в контекÑте вызывающего их командного процеÑÑора. При вызове ИМЕÐИ\n"
+" Создаёт функцию командного процеÑÑора Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем. При запуÑке в "
+"качеÑтве проÑтой команды\n"
+" ИМЯ выполнÑет КОМÐÐДЫ в контекÑте вызывающего их командного процеÑÑора. "
+"При вызове ИМЕÐИ\n"
" аргументы передаютÑÑ Ð² функцию как $1...$n, а Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÑ‚\n"
" название $FUNCNAME.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð˜ÐœÐ¯ доÑтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5622,13 +5331,14 @@ msgid ""
msgstr ""
"Группировка команд.\n"
" \n"
-" ВыполнÑет набор команд, объединённых в группу. Это единÑтвенный ÑпоÑоб перенаправлениÑ\n"
+" ВыполнÑет набор команд, объединённых в группу. Это единÑтвенный ÑпоÑоб "
+"перенаправлениÑ\n"
" вÑего набора команд.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5644,24 +5354,18 @@ msgstr ""
"Возобновление работы Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð² интерактивном режиме.\n"
" \n"
" Ðналогично аргументу JOB_SPEC Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «fg». ВозобновлÑет\n"
-" работу оÑтановленного или фонового заданиÑ. Через JOB_SPEC можно задать название\n"
-" или номер заданиÑ. ЕÑли поÑле номера Ð·Ð°Ð´Ð°Ð½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ «&», задание будет переведено\n"
+" работу оÑтановленного или фонового заданиÑ. Через JOB_SPEC можно задать "
+"название\n"
+" или номер заданиÑ. ЕÑли поÑле номера Ð·Ð°Ð´Ð°Ð½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÑŒ «&», задание будет "
+"переведено\n"
" в фоновый режим, как еÑли бы идентификатор Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð±Ñ‹Ð» указан как\n"
" аргумент Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «bg».\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние возобновлённого заданиÑ."
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
-#| msgid ""
-#| "Evaluate arithmetic expression.\n"
-#| " \n"
-#| " The EXPRESSION is evaluated according to the rules for arithmetic\n"
-#| " evaluation. Equivalent to \"let EXPRESSION\".\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5679,13 +5383,16 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает 1, еÑли выражение равно 0, в противном Ñлучае возвращает 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries used\n"
-" by the `test' builtin, and may be combined using the following operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the "
+"conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries "
+"used\n"
+" by the `test' builtin, and may be combined using the following "
+"operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -5706,16 +5413,22 @@ msgstr ""
"Выполнение уÑловной команды.\n"
" \n"
" Возвращает ÑоÑтоÑние 0 или 1 в завиÑимоÑти от результата раÑчёта\n"
-" уÑловного выражениÑ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑоÑтавлÑÑŽÑ‚ÑÑ Ð¸Ð· тех же примитивов, которые иÑпользуютÑÑ\n"
-" во вÑтроенной команде «test». Их можно объединить Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñледующих операторов:\n"
+" уÑловного выражениÑ. Ð’Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑоÑтавлÑÑŽÑ‚ÑÑ Ð¸Ð· тех же примитивов, "
+"которые иÑпользуютÑÑ\n"
+" во вÑтроенной команде «test». Их можно объединить Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñледующих "
+"операторов:\n"
" \n"
" ( выражение )\tВозвращает значение выражениÑ\n"
-" ! выражение\tВозвращает иÑтину, еÑли выражение ложно, в противном Ñлучае возвращает ложь\n"
-" ВЫРÐЖ1 && ВЫРÐЖ2\tВозвращает иÑтину, еÑли оба Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ñтинны, в противном Ñлучае возвращает ложь\n"
-" ВЫРÐЖ1 || ВЫРÐЖ2\tВозвращает иÑтину, еÑли Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений иÑтинно, в противном Ñлучае возвращает ложь\n"
+" ! выражение\tВозвращает иÑтину, еÑли выражение ложно, в противном "
+"Ñлучае возвращает ложь\n"
+" ВЫРÐЖ1 && ВЫРÐЖ2\tВозвращает иÑтину, еÑли оба Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ñтинны, в "
+"противном Ñлучае возвращает ложь\n"
+" ВЫРÐЖ1 || ВЫРÐЖ2\tВозвращает иÑтину, еÑли Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одно из выражений "
+"иÑтинно, в противном Ñлучае возвращает ложь\n"
" \n"
" ЕÑли иÑпользуютÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ñ‹ «==» и «!=», Ñтрока Ñправа от\n"
-" оператора иÑпользуетÑÑ ÐºÐ°Ðº шаблон, и выполнÑетÑÑ ÑопоÑтавление по шаблону.\n"
+" оператора иÑпользуетÑÑ ÐºÐ°Ðº шаблон, и выполнÑетÑÑ ÑопоÑтавление по "
+"шаблону.\n"
" ЕÑли иÑпользуетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ «=~», Ñтрока Ñправа от оператора\n"
" оцениваетÑÑ ÐºÐ°Ðº регулÑрное выражение.\n"
" \n"
@@ -5725,7 +5438,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" 0 или 1 в завиÑимоÑти от Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5783,7 +5496,8 @@ msgstr ""
" BASH_VERSION\tÐомер верÑии bash.\n"
" CDPATH\t\tСпиÑок каталогов, разделённых двоеточиÑми, Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка\n"
" \t\tв них каталогов, указанных как аргументы Ð´Ð»Ñ Â«cd».\n"
-" GLOBIGNORE\tСпиÑок шаблонов, разделённых двоеточиÑми и опиÑывающих имена файлов,\n"
+" GLOBIGNORE\tСпиÑок шаблонов, разделённых двоеточиÑми и опиÑывающих имена "
+"файлов,\n"
" \t\tкоторые будут игнорироватьÑÑ Ð¿Ñ€Ð¸ развёртывании пути.\n"
" HISTFILE\t\tÐ˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°, в котором хранитÑÑ Ð¶ÑƒÑ€Ð½Ð°Ð» команд.\n"
" HISTFILESIZE\tЧиÑло Ñтрок в файле журнала.\n"
@@ -5792,11 +5506,15 @@ msgstr ""
" HOME\t\tПолный путь к вашему домашнему каталогу.\n"
" HOSTNAME\t\tÐ˜Ð¼Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑиÑтемы.\n"
" HOSTTYPE\t\tТип процеÑÑора, на котором работает Ð´Ð°Ð½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ bash.\n"
-" IGNOREEOF\tУправлÑет дейÑтвием командного процеÑÑора при получении Ñимвола\n"
-" \t\tÑимвола конца файла в качеÑтве единÑтвенных входных данных. ЕÑли задано, тогда значение\n"
+" IGNOREEOF\tУправлÑет дейÑтвием командного процеÑÑора при получении "
+"Ñимвола\n"
+" \t\tÑимвола конца файла в качеÑтве единÑтвенных входных данных. ЕÑли "
+"задано, тогда значение\n"
" \t\tÑвлÑетÑÑ Ñ‡Ð¸Ñлом Ñимволов EOF, которые могут быть\n"
-" \t\tпрочитаны подрÑд в пуÑтой Ñтроке, поÑле чего командный процеÑÑор будет закрыт\n"
-" \t\t(по умолчанию — 10). ЕÑли не задано, EOF означает конец входных данных.\n"
+" \t\tпрочитаны подрÑд в пуÑтой Ñтроке, поÑле чего командный процеÑÑор "
+"будет закрыт\n"
+" \t\t(по умолчанию — 10). ЕÑли не задано, EOF означает конец входных "
+"данных.\n"
" MACHTYPE\t\tСтрока Ñ Ð¾Ð¿Ð¸Ñанием текущей ÑиÑтемы, в которой запущен bash.\n"
" MAILCHECK\tКак чаÑто (в Ñекундах) bash проверÑет наличие новой почты.\n"
" MAILPATH\t\tСпиÑок имён файлов, разделённых двоеточиÑми, в которых bash\n"
@@ -5809,13 +5527,15 @@ msgstr ""
" PS1\t\tОÑÐ½Ð¾Ð²Ð½Ð°Ñ Ñтрока приглашениÑ.\n"
" PS2\t\tÐ”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ñтрока приглашениÑ.\n"
" PWD\t\tПолный путь до текущего каталога.\n"
-" SHELLOPTS\tСпиÑок включённых параметров командного процеÑÑора, разделённых двоеточиÑми.\n"
+" SHELLOPTS\tСпиÑок включённых параметров командного процеÑÑора, "
+"разделённых двоеточиÑми.\n"
" TERM\t\tÐазвание текущего типа терминала.\n"
" TIMEFORMAT\tФормат вывода данных о времени, показываемых\n"
" \t\tкомандой time.\n"
" auto_resume\tÐепуÑтое значение означает Ñлово в Ñтроке запуÑка команды,\n"
" \t\tкоторое Ñначала ищетÑÑ Ð² ÑпиÑке\n"
-" \t\tоÑтановленных заданий. ЕÑли команда найдена, задание переводитÑÑ Ð² интерактивный режим.\n"
+" \t\tоÑтановленных заданий. ЕÑли команда найдена, задание переводитÑÑ Ð² "
+"интерактивный режим.\n"
" \t\tЗначение «exact» означает, что Ñлово команды должно\n"
" \t\tточно Ñовпадать Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ в ÑпиÑке оÑтановленных заданий. \n"
" \t\tЗначение «substring» означает, что Ñлово команды\n"
@@ -5826,39 +5546,12 @@ msgstr ""
" \t\tподÑтановку журнала. Обычно Ñто «!». Второй Ñимвол\n"
" \t\tозначает «быÑтрую подÑтановку». Обычно Ñто «^». \n"
" \t\tТретий Ñимвол означает примечание журнала. Обычно Ñто «#».\n"
-" HISTIGNORE\tСпиÑок шаблонов, разделённых двоеточиÑми и опиÑывающих команды,\n"
+" HISTIGNORE\tСпиÑок шаблонов, разделённых двоеточиÑми и опиÑывающих "
+"команды,\n"
" \t\tкоторые должны быть Ñохранены в журнале.\n"
-#: builtins.c:1821
+#: builtins.c:1822
#, fuzzy
-#| msgid ""
-#| "Add directories to stack.\n"
-#| " \n"
-#| " Adds a directory to the top of the directory stack, or rotates\n"
-#| " the stack, making the new top of the stack the current working\n"
-#| " directory. With no arguments, exchanges the top two directories.\n"
-#| " \n"
-#| " Options:\n"
-#| " -n\tSuppresses the normal change of directory when adding\n"
-#| " \tdirectories to the stack, so only the stack is manipulated.\n"
-#| " \n"
-#| " Arguments:\n"
-#| " +N\tRotates the stack so that the Nth directory (counting\n"
-#| " \tfrom the left of the list shown by `dirs', starting with\n"
-#| " \tzero) is at the top.\n"
-#| " \n"
-#| " -N\tRotates the stack so that the Nth directory (counting\n"
-#| " \tfrom the right of the list shown by `dirs', starting with\n"
-#| " \tzero) is at the top.\n"
-#| " \n"
-#| " dir\tAdds DIR to the directory stack at the top, making it the\n"
-#| " \tnew current working directory.\n"
-#| " \n"
-#| " The `dirs' builtin displays the directory stack.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid argument is supplied or the directory\n"
-#| " change fails."
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5892,7 +5585,8 @@ msgstr ""
" \n"
" ДобавлÑет каталог в начало Ñтека каталогов или выполнÑет\n"
" ротацию Ñтека, Ð¿Ð¾Ð¼ÐµÑ‰Ð°Ñ Ð² начало Ñтека текущий рабочий\n"
-" каталог. ЕÑли аргументы не указаны, менÑет меÑтами два первых каталога.\n"
+" каталог. ЕÑли аргументы не указаны, менÑет меÑтами два первых "
+"каталога.\n"
" \n"
" Параметры:\n"
" -n\tпредотвращает обычное изменение каталога при добавлении\n"
@@ -5916,32 +5610,8 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или удалоÑÑŒ\n"
" перейти в каталог."
-#: builtins.c:1855
+#: builtins.c:1856
#, fuzzy
-#| msgid ""
-#| "Remove directories from stack.\n"
-#| " \n"
-#| " Removes entries from the directory stack. With no arguments, removes\n"
-#| " the top directory from the stack, and changes to the new top directory.\n"
-#| " \n"
-#| " Options:\n"
-#| " -n\tSuppresses the normal change of directory when removing\n"
-#| " \tdirectories from the stack, so only the stack is manipulated.\n"
-#| " \n"
-#| " Arguments:\n"
-#| " +N\tRemoves the Nth entry counting from the left of the list\n"
-#| " \tshown by `dirs', starting with zero. For example: `popd +0'\n"
-#| " \tremoves the first directory, `popd +1' the second.\n"
-#| " \n"
-#| " -N\tRemoves the Nth entry counting from the right of the list\n"
-#| " \tshown by `dirs', starting with zero. For example: `popd -0'\n"
-#| " \tremoves the last directory, `popd -1' the next to last.\n"
-#| " \n"
-#| " The `dirs' builtin displays the directory stack.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid argument is supplied or the directory\n"
-#| " change fails."
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5991,32 +5661,8 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или удалоÑÑŒ\n"
" перейти в каталог."
-#: builtins.c:1885
+#: builtins.c:1886
#, fuzzy
-#| msgid ""
-#| "Display directory stack.\n"
-#| " \n"
-#| " Display the list of currently remembered directories. Directories\n"
-#| " find their way onto the list with the `pushd' command; you can get\n"
-#| " back up through the list with the `popd' command.\n"
-#| " \n"
-#| " Options:\n"
-#| " -c\tclear the directory stack by deleting all of the elements\n"
-#| " -l\tdo not print tilde-prefixed versions of directories relative\n"
-#| " \tto your home directory\n"
-#| " -p\tprint the directory stack with one entry per line\n"
-#| " -v\tprint the directory stack with one entry per line prefixed\n"
-#| " \twith its position in the stack\n"
-#| " \n"
-#| " Arguments:\n"
-#| " +N\tDisplays the Nth entry counting from the left of the list shown by\n"
-#| " \tdirs when invoked without options, starting with zero.\n"
-#| " \n"
-#| " -N\tDisplays the Nth entry counting from the right of the list shown by\n"
-#| " \tdirs when invoked without options, starting with zero.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or an error occurs."
msgid ""
"Display directory stack.\n"
" \n"
@@ -6066,27 +5712,11 @@ msgstr ""
" \tпоказанного при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла ошибка."
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
+"ошибка."
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
-#| msgid ""
-#| "Set and unset shell options.\n"
-#| " \n"
-#| " Change the setting of each shell option OPTNAME. Without any option\n"
-#| " arguments, list all shell options with an indication of whether or not each\n"
-#| " is set.\n"
-#| " \n"
-#| " Options:\n"
-#| " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
-#| " -p\tprint each shell option with an indication of its status\n"
-#| " -q\tsuppress output\n"
-#| " -s\tenable (set) each OPTNAME\n"
-#| " -u\tdisable (unset) each OPTNAME\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success if OPTNAME is enabled; fails if an invalid option is\n"
-#| " given or OPTNAME is disabled."
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -6107,8 +5737,10 @@ msgid ""
msgstr ""
"УÑтановка и удаление параметров командного процеÑÑора.\n"
" \n"
-" ИзменÑет наÑтройки указанных параметров командного процеÑÑора. ЕÑли не указать\n"
-" аргумент Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼, выводит вÑе параметры командного процеÑÑора, показываÑ\n"
+" ИзменÑет наÑтройки указанных параметров командного процеÑÑора. ЕÑли не "
+"указать\n"
+" аргумент Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼, выводит вÑе параметры командного процеÑÑора, "
+"показываÑ\n"
" какой из них уÑтановлен, а какой нет.\n"
" \n"
" Параметры:\n"
@@ -6122,37 +5754,8 @@ msgstr ""
" Возвращает уÑпех, еÑли указанный параметр включён. Возвращает ошибку,\n"
" еÑли был указан недопуÑтимый параметр или параметр отключён."
-#: builtins.c:1937
+#: builtins.c:1938
#, fuzzy
-#| msgid ""
-#| "Formats and prints ARGUMENTS under control of the FORMAT.\n"
-#| " \n"
-#| " Options:\n"
-#| " -v var\tassign the output to shell variable VAR rather than\n"
-#| " \t\tdisplay it on the standard output\n"
-#| " \n"
-#| " FORMAT is a character string which contains three types of objects: plain\n"
-#| " characters, which are simply copied to standard output; character escape\n"
-#| " sequences, which are converted and copied to the standard output; and\n"
-#| " format specifications, each of which causes printing of the next successive\n"
-#| " argument.\n"
-#| " \n"
-#| " In addition to the standard format specifications described in printf(1),\n"
-#| " printf interprets:\n"
-#| " \n"
-#| " %b\texpand backslash escape sequences in the corresponding argument\n"
-#| " %q\tquote the argument in a way that can be reused as shell input\n"
-#| " %(fmt)T output the date-time string resulting from using FMT as a format\n"
-#| " string for strftime(3)\n"
-#| " \n"
-#| " The format is re-used as necessary to consume all of the arguments. If\n"
-#| " there are fewer arguments than the format requires, extra format\n"
-#| " specifications behave as if a zero value or null string, as appropriate,\n"
-#| " had been supplied.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is given or a write or assignment\n"
-#| " error occurs."
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -6160,27 +5763,36 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: plain\n"
-" characters, which are simply copied to standard output; character escape\n"
+" FORMAT is a character string which contains three types of objects: "
+"plain\n"
+" characters, which are simply copied to standard output; character "
+"escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next successive\n"
+" format specifications, each of which causes printing of the next "
+"successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in printf(1),\n"
+" In addition to the standard format specifications described in "
+"printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a "
+"format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as appropriate,\n"
+" specifications behave as if a zero value or null string, as "
+"appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or assignment\n"
+" Returns success unless an invalid option is given or a write or "
+"assignment\n"
" error occurs."
msgstr ""
"Форматирует и выводит аргументы ÑоглаÑно указанному формату.\n"
@@ -6191,56 +5803,43 @@ msgstr ""
" \n"
" ФОРМÐТ — Ñто ÑÐ¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð°Ñ Ñтрока, ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð°Ñ Ñ‚Ñ€Ð¸ типа объектов: проÑтые\n"
" Ñимволы, которые копируютÑÑ Ð½Ð° Ñтандартный вывод, Ñкранирующие\n"
-" поÑледовательноÑти, которые преобразовываютÑÑ Ð¸ копируютÑÑ Ð½Ð° Ñтандартный\n"
+" поÑледовательноÑти, которые преобразовываютÑÑ Ð¸ копируютÑÑ Ð½Ð° "
+"Ñтандартный\n"
" вывод, и Ñпецификации, которые активируют вывод Ñледующего уÑпешного\n"
" аргумента.\n"
" \n"
-" Ð’ дополнение к Ñтандартным ÑпецификациÑм формата, опиÑанным в printf(1),\n"
+" Ð’ дополнение к Ñтандартным ÑпецификациÑм формата, опиÑанным в "
+"printf(1),\n"
" printf интерпретирует:\n"
" \n"
-" %b\tразвёртывание Ñкранирующих поÑледовательноÑтей Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ коÑой чертой в ÑоответÑтвующий аргумент;\n"
-" %q\tзаключение аргумента в кавычки, чтобы его можно было повторно иÑпользовать в качеÑтве входных данных Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора;\n"
-" %(fmt)T вывод Ñтроки дата-времÑ, полученной поÑле иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ FMT в качеÑтве\n"
+" %b\tразвёртывание Ñкранирующих поÑледовательноÑтей Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ коÑой "
+"чертой в ÑоответÑтвующий аргумент;\n"
+" %q\tзаключение аргумента в кавычки, чтобы его можно было повторно "
+"иÑпользовать в качеÑтве входных данных Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ процеÑÑора;\n"
+" %(fmt)T вывод Ñтроки дата-времÑ, полученной поÑле иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ FMT в "
+"качеÑтве\n"
" Ñтроки Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ strftime(3)\n"
" \n"
-" ЕÑли необходимо задейÑтвовать вÑе аргументы, формат иÑпользуетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾. ЕÑли\n"
+" ЕÑли необходимо задейÑтвовать вÑе аргументы, формат иÑпользуетÑÑ "
+"повторно. ЕÑли\n"
" аргументов меньше, чем требуетÑÑ Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ, дополнительные\n"
" Ñпецификации Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð¿Ñ€ÐµÑ‚Ð¸Ñ€ÑƒÑŽÑ‚ÑÑ ÐºÐ°Ðº Ñодержащие нулевое\n"
" или пуÑтое значение.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла ошибка\n"
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
+"ошибка\n"
" запиÑи или приÑвоениÑ."
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
-#| msgid ""
-#| "Specify how arguments are to be completed by Readline.\n"
-#| " \n"
-#| " For each NAME, specify how arguments are to be completed. If no options\n"
-#| " are supplied, existing completion specifications are printed in a way that\n"
-#| " allows them to be reused as input.\n"
-#| " \n"
-#| " Options:\n"
-#| " -p\tprint existing completion specifications in a reusable format\n"
-#| " -r\tremove a completion specification for each NAME, or, if no\n"
-#| " \tNAMEs are supplied, all completion specifications\n"
-#| " -D\tapply the completions and actions as the default for commands\n"
-#| " \twithout any specific completion defined\n"
-#| " -E\tapply the completions and actions to \"empty\" commands --\n"
-#| " \tcompletion attempted on a blank line\n"
-#| " \n"
-#| " When completion is attempted, the actions are applied in the order the\n"
-#| " uppercase-letter options are listed above. The -D option takes\n"
-#| " precedence over -E.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or an error occurs."
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no options\n"
-" are supplied, existing completion specifications are printed in a way that\n"
+" For each NAME, specify how arguments are to be completed. If no "
+"options\n"
+" are supplied, existing completion specifications are printed in a way "
+"that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -6255,20 +5854,24 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are supplied,\n"
-" the -D option takes precedence over -E, and both take precedence over -I.\n"
+" uppercase-letter options are listed above. If multiple options are "
+"supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
"Определение количеÑтва аргументов, завершаемых функцией readline.\n"
" \n"
-" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени нужно указать количеÑтво завершаемых аргументов. ЕÑли параметры\n"
+" Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени нужно указать количеÑтво завершаемых аргументов. ЕÑли "
+"параметры\n"
" не указаны, выводÑÑ‚ÑÑ ÑущеÑтвующие Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ\n"
" Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ.\n"
" \n"
" Параметры:\n"
-" -p\tвывеÑти ÑущеÑтвующие Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð² формате Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ иÑпользованиÑ\n"
+" -p\tвывеÑти ÑущеÑтвующие Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð² формате Ð´Ð»Ñ "
+"повторного иÑпользованиÑ\n"
" -r\tудалить Ñпецификации Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или,\n"
" \tеÑли имена не указаны, вÑе Ñпецификации\n"
" -D\tприменить Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¸ дейÑÑ‚Ð²Ð¸Ñ ÐºÐ°Ðº Ñтандартные Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´,\n"
@@ -6281,14 +5884,16 @@ msgstr ""
" выÑокий приоритет, чем -E.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла ошибка."
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
+"ошибка."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches against\n"
+" completions. If the optional WORD argument is supplied, matches "
+"against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -6297,45 +5902,25 @@ msgstr ""
"Вывод возможных завершений в завиÑимоÑти от параметров.\n"
" \n"
" compgen предназначен Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² функциÑÑ… bash, генерирующих\n"
-" возможные завершениÑ. ЕÑли указан необÑзательный аргумент Ñлово, выполнÑет\n"
+" возможные завершениÑ. ЕÑли указан необÑзательный аргумент Ñлово, "
+"выполнÑет\n"
" ÑопоÑтавление Ñо Ñгенерированным Ñловом.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла ошибка."
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
+"ошибка."
-#: builtins.c:2016
+#: builtins.c:2019
#, fuzzy
-#| msgid ""
-#| "Modify or display completion options.\n"
-#| " \n"
-#| " Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
-#| " the completion currently being executed. If no OPTIONs are given, print\n"
-#| " the completion options for each NAME or the current completion specification.\n"
-#| " \n"
-#| " Options:\n"
-#| " \t-o option\tSet completion option OPTION for each NAME\n"
-#| " \t-D\t\tChange options for the \"default\" command completion\n"
-#| " \t-E\t\tChange options for the \"empty\" command completion\n"
-#| " \n"
-#| " Using `+o' instead of `-o' turns off the specified option.\n"
-#| " \n"
-#| " Arguments:\n"
-#| " \n"
-#| " Each NAME refers to a command for which a completion specification must\n"
-#| " have previously been defined using the `complete' builtin. If no NAMEs\n"
-#| " are supplied, compopt must be called by a function currently generating\n"
-#| " completions, and the options for that currently-executing completion\n"
-#| " generator are modified.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or NAME does not\n"
-#| " have a completion specification defined."
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, print\n"
-" the completion options for each NAME or the current completion specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are "
+"supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, "
+"print\n"
+" the completion options for each NAME or the current completion "
+"specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -6360,8 +5945,10 @@ msgstr ""
"Изменение или вывод параметров завершениÑ.\n"
" \n"
" ИзменÑет параметры Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или, еÑли имена\n"
-" не указаны, Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ завершениÑ. ЕÑли параметры не указаны, выводит\n"
-" параметры Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или текущую Ñпецификацию завершениÑ.\n"
+" не указаны, Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ завершениÑ. ЕÑли параметры не указаны, "
+"выводит\n"
+" параметры Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени или текущую Ñпецификацию "
+"завершениÑ.\n"
" \n"
" Параметры:\n"
" \t-o параметр\tзадать параметр Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ имени\n"
@@ -6373,8 +5960,10 @@ msgstr ""
" Ðргументы:\n"
" \n"
" Каждое Ð¸Ð¼Ñ ÑÑылаетÑÑ Ð½Ð° команду, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ уже должна быть определена\n"
-" ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вÑтроенной команды «complete». ЕÑли имена\n"
-" не указаны, функциÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€ÑƒÐµÑ‚ завершениÑ, должна вызвать\n"
+" ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вÑтроенной команды «complete». ЕÑли "
+"имена\n"
+" не указаны, функциÑ, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑÐµÐ¹Ñ‡Ð°Ñ Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€ÑƒÐµÑ‚ завершениÑ, должна "
+"вызвать\n"
" compopt, и должны изменитьÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾\n"
" генератора завершениÑ.\n"
" \n"
@@ -6382,52 +5971,27 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸\n"
" определена ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ."
-#: builtins.c:2047
+#: builtins.c:2050
#, fuzzy
-#| msgid ""
-#| "Read lines from the standard input into an indexed array variable.\n"
-#| " \n"
-#| " Read lines from the standard input into the indexed array variable ARRAY, or\n"
-#| " from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
-#| " is the default ARRAY.\n"
-#| " \n"
-#| " Options:\n"
-#| " -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied.\n"
-#| " -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0.\n"
-#| " -s count \tDiscard the first COUNT lines read.\n"
-#| " -t\t\tRemove a trailing newline from each line read.\n"
-#| " -u fd\t\tRead lines from file descriptor FD instead of the standard input.\n"
-#| " -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-#| " -c quantum\tSpecify the number of lines read between each call to CALLBACK.\n"
-#| " \n"
-#| " Arguments:\n"
-#| " ARRAY\t\tArray variable name to use for file data.\n"
-#| " \n"
-#| " If -C is supplied without -c, the default quantum is 5000. When\n"
-#| " CALLBACK is evaluated, it is supplied the index of the next array\n"
-#| " element to be assigned and the line to be assigned to that element\n"
-#| " as additional arguments.\n"
-#| " \n"
-#| " If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
-#| " assigning to it.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is given or ARRAY is readonly or\n"
-#| " not an indexed array."
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
+" Read lines from the standard input into the indexed array variable "
+"ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable "
+"MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
+"copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
+"index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard "
+"input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -6440,25 +6004,32 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY "
+"before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly "
+"or\n"
" not an indexed array."
msgstr ""
"Чтение Ñтрок Ñо Ñтандартного ввода в переменную индекÑированного маÑÑива.\n"
" \n"
-" Читает Ñтроки Ñо Ñтандартного ввода в переменную указанного индекÑированного маÑÑива\n"
-" или из указанного файлового деÑкриптора, еÑли указан параметр -u. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $MAPFILE\n"
+" Читает Ñтроки Ñо Ñтандартного ввода в переменную указанного "
+"индекÑированного маÑÑива\n"
+" или из указанного файлового деÑкриптора, еÑли указан параметр -u. "
+"ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $MAPFILE\n"
" ÑвлÑетÑÑ Ð¼Ð°ÑÑивом по умолчанию.\n"
" \n"
" Параметры:\n"
-" -n чиÑло\tкопировать указанное чиÑло Ñтрок ЕÑли чиÑло равно 0, копируютÑÑ Ð²Ñе Ñтроки.\n"
-" -O начало\tначать приÑвоение маÑÑиву, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ ÐŸÐ¾ умолчанию указатель равен 0.\n"
+" -n чиÑло\tкопировать указанное чиÑло Ñтрок ЕÑли чиÑло равно 0, "
+"копируютÑÑ Ð²Ñе Ñтроки.\n"
+" -O начало\tначать приÑвоение маÑÑиву, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ "
+"По умолчанию указатель равен 0.\n"
" -s чиÑло \tотброÑить указанное чиÑло первых Ñтрок\n"
" -t\t\tудалить завершающие переводы Ñтроки изо вÑех прочитанных Ñтрок\n"
-" -u fd\t\tчитать Ñтроки из файлового деÑкриптора, а не Ñо Ñтандартного входа\n"
+" -u fd\t\tчитать Ñтроки из файлового деÑкриптора, а не Ñо Ñтандартного "
+"входа\n"
" -C callback\tоценивать callback при чтении каждой Ñтроки quantum\n"
" -c quantum\tчиÑло Ñтрок, читаемых от каждого вызова до callback\n"
" \n"
@@ -6466,7 +6037,8 @@ msgstr ""
" ÐœÐССИВ\t\tназвание переменной маÑÑива, иÑпользуемой Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… файла.\n"
" \n"
" ЕÑли параметр -C указан без -c, quantum по умолчанию равен 5000. Когда\n"
-" оцениваетÑÑ callback, он предоÑтавлÑет указатель на Ñледующий приÑваиваемый\n"
+" оцениваетÑÑ callback, он предоÑтавлÑет указатель на Ñледующий "
+"приÑваиваемый\n"
" Ñлемента маÑÑива и на Ñтроку, приÑваиваемую Ñтому Ñлементу,\n"
" в качеÑтве дополнительных аргументов.\n"
" \n"
@@ -6474,10 +6046,11 @@ msgstr ""
" операции приÑвоениÑ.\n"
" \n"
" СоÑтоÑние выхода:\n"
-" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или маÑÑив доÑтупен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи\n"
+" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или маÑÑив "
+"доÑтупен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи\n"
" и ÑвлÑетÑÑ Ð¸Ð½Ð´ÐµÐºÑированным."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -6487,6 +6060,10 @@ msgstr ""
" \n"
" Синоним команды «mapfile»."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: недопуÑтимый ключ аÑÑоциативного маÑÑива"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
@@ -6524,7 +6101,8 @@ msgstr ""
#~ msgstr "brace_expand> "
#~ msgid "Attempt to free unknown command type `%d'.\n"
-#~ msgstr "Попытка оÑвободить памÑÑ‚ÑŒ Ñтруктуры команды неизвеÑтного типа `%d'.\n"
+#~ msgstr ""
+#~ "Попытка оÑвободить памÑÑ‚ÑŒ Ñтруктуры команды неизвеÑтного типа `%d'.\n"
#~ msgid "Report this to %s\n"
#~ msgstr "Сообщите об Ñтом по адреÑу %s\n"
@@ -6633,7 +6211,9 @@ msgstr ""
#~ msgstr "подÑтановка команд"
#~ msgid "Can't reopen pipe to command substitution (fd %d): %s"
-#~ msgstr "Ðевозможно вновь открыть канал Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команд (файловый декÑриптор %d): %s"
+#~ msgstr ""
+#~ "Ðевозможно вновь открыть канал Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команд (файловый "
+#~ "декÑриптор %d): %s"
#~ msgid "$%c: unbound variable"
#~ msgstr "$%c: не заданы границы"
@@ -6651,7 +6231,8 @@ msgstr ""
#~ msgstr "[%s: неверный индекÑ"
#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xmalloc: невозможно заново выделить %lu байтов (выделено %lu байтов)"
+#~ msgstr ""
+#~ "xmalloc: невозможно заново выделить %lu байтов (выделено %lu байтов)"
#~ msgid "digits occur in two different argv-elements.\n"
#~ msgstr "цифры вÑтречаютÑÑ Ð² двух разных Ñлементах argv.\n"
@@ -6720,40 +6301,50 @@ msgstr ""
#~ msgstr "Ñлучае, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ определÑетÑÑ Ð¿Ñевдокоманда Ñо ЗÐÐЧЕÐИЕМ."
#~ msgid "A trailing space in VALUE causes the next word to be checked for"
-#~ msgstr "ЕÑли на конце ЗÐÐЧЕÐИЯ еÑÑ‚ÑŒ пробелы, при разворачивании пÑевдокоманды"
+#~ msgstr ""
+#~ "ЕÑли на конце ЗÐÐЧЕÐИЯ еÑÑ‚ÑŒ пробелы, при разворачивании пÑевдокоманды"
#~ msgid "alias substitution when the alias is expanded. Alias returns"
#~ msgstr "Ñледующее Ñлово проверÑетÑÑ Ð½Ð° подÑтановку пÑевдокоманд. Alias"
#~ msgid "true unless a NAME is given for which no alias has been defined."
-#~ msgstr "возвращает true, еÑли только не задано ИМЯ, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ нет пÑевдокоманд."
+#~ msgstr ""
+#~ "возвращает true, еÑли только не задано ИМЯ, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ нет пÑевдокоманд."
-#~ msgid "Remove NAMEs from the list of defined aliases. If the -a option is given,"
-#~ msgstr "УдалÑет ИМЕÐРиз ÑпиÑка определённых пÑевдокоманд. ЕÑли задан параметр -a,"
+#~ msgid ""
+#~ "Remove NAMEs from the list of defined aliases. If the -a option is given,"
+#~ msgstr ""
+#~ "УдалÑет ИМЕÐРиз ÑпиÑка определённых пÑевдокоманд. ЕÑли задан параметр -a,"
#~ msgid "then remove all alias definitions."
#~ msgstr "удалÑет вÑе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ñевдокоманд."
#~ msgid "Bind a key sequence to a Readline function, or to a macro. The"
-#~ msgstr "СвÑзывает поÑледовательноÑÑ‚ÑŒ клавиш Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ Readline или Ñ Ð¼Ð°ÐºÑ€Ð¾Ñом."
+#~ msgstr ""
+#~ "СвÑзывает поÑледовательноÑÑ‚ÑŒ клавиш Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ Readline или Ñ Ð¼Ð°ÐºÑ€Ð¾Ñом."
#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be"
#~ msgstr "СинтакÑÐ¸Ñ Ñ‚Ð¾Ñ‚ же, что и в ~/.inputrc, но должен передаватьÑÑ"
-#~ msgid "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'."
+#~ msgid ""
+#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'."
#~ msgstr "одним аргументом: bind '\"\\C-x\\C-r\": re-read-init-file'."
#~ msgid "Arguments we accept:"
#~ msgstr "Принимаемые аргументы:"
-#~ msgid " -m keymap Use `keymap' as the keymap for the duration of this"
-#~ msgstr " -m раÑкладка ИÑпользовать во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ программы указанную"
+#~ msgid ""
+#~ " -m keymap Use `keymap' as the keymap for the duration of this"
+#~ msgstr ""
+#~ " -m раÑкладка ИÑпользовать во Ð²Ñ€ÐµÐ¼Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ программы указанную"
#~ msgid " command. Acceptable keymap names are emacs,"
#~ msgstr " раÑкладку. ДопуÑтимые имена раÑкладок: emacs,"
-#~ msgid " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
-#~ msgstr " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
+#~ msgid ""
+#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
+#~ msgstr ""
+#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
#~ msgid " vi-command, and vi-insert."
#~ msgstr " vi-command и vi-insert."
@@ -6764,7 +6355,8 @@ msgstr ""
#~ msgid " -P List function names and bindings."
#~ msgstr " -P ВывеÑти ÑпиÑок имён функций и ÑвÑзей."
-#~ msgid " -p List functions and bindings in a form that can be"
+#~ msgid ""
+#~ " -p List functions and bindings in a form that can be"
#~ msgstr " -p ВывеÑти ÑпиÑок имён функций и ÑвÑзей в виде,"
#~ msgid " reused as input."
@@ -6776,26 +6368,40 @@ msgstr ""
#~ msgid " -f filename Read key bindings from FILENAME."
#~ msgstr " -f имÑ_файла ПрочеÑÑ‚ÑŒ ÑвÑзи из файла."
-#~ msgid " -q function-name Query about which keys invoke the named function."
-#~ msgstr " -q имÑ_функции ЗапроÑ, какие клавиши вызовут указанную функцию."
+#~ msgid ""
+#~ " -q function-name Query about which keys invoke the named function."
+#~ msgstr ""
+#~ " -q имÑ_функции ЗапроÑ, какие клавиши вызовут указанную функцию."
#~ msgid " -V List variable names and values"
#~ msgstr " -V ВывеÑти ÑпиÑок имён и значений переменных."
-#~ msgid " -v List variable names and values in a form that can"
-#~ msgstr " -v ВывеÑти ÑпиÑок имён и значений переменных в виде,"
+#~ msgid ""
+#~ " -v List variable names and values in a form that can"
+#~ msgstr ""
+#~ " -v ВывеÑти ÑпиÑок имён и значений переменных в виде,"
#~ msgid " be reused as input."
#~ msgstr " который можно иÑпользовать на входе"
-#~ msgid " -S List key sequences that invoke macros and their values"
-#~ msgstr " -S ВывеÑти ÑпиÑок поÑледовательноÑтей клавиш, вызывающих макроÑÑ‹ и их значений."
+#~ msgid ""
+#~ " -S List key sequences that invoke macros and their "
+#~ "values"
+#~ msgstr ""
+#~ " -S ВывеÑти ÑпиÑок поÑледовательноÑтей клавиш, "
+#~ "вызывающих макроÑÑ‹ и их значений."
-#~ msgid " -s List key sequences that invoke macros and their values in"
-#~ msgstr " -s ВывеÑти ÑпиÑок поÑледовательноÑтей клавиш, вызывающих макроÑÑ‹"
+#~ msgid ""
+#~ " -s List key sequences that invoke macros and their "
+#~ "values in"
+#~ msgstr ""
+#~ " -s ВывеÑти ÑпиÑок поÑледовательноÑтей клавиш, вызывающих "
+#~ "макроÑÑ‹"
#~ msgid " a form that can be reused as input."
-#~ msgstr " и их значений в виде, который можно иÑпользовать на входе"
+#~ msgstr ""
+#~ " и их значений в виде, который можно иÑпользовать на "
+#~ "входе"
#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,"
#~ msgstr "Выйти из цикла FOR, WHILE или UNTIL. ЕÑли указано N,"
@@ -6822,64 +6428,89 @@ msgstr ""
#~ msgstr "Изменить текущий каталог на заданный. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $HOME Ñодержит"
#~ msgid "default DIR. The variable $CDPATH defines the search path for"
-#~ msgstr "каталог по умолчанию. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH определÑет путь, в котором"
+#~ msgstr ""
+#~ "каталог по умолчанию. ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ $CDPATH определÑет путь, в котором"
#~ msgid "the directory containing DIR. Alternative directory names in CDPATH"
-#~ msgstr "ищетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³, Ñодержащий КÐТÐЛОГ. Ðльтернативные каталоги в CDPATH"
+#~ msgstr ""
+#~ "ищетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³, Ñодержащий КÐТÐЛОГ. Ðльтернативные каталоги в CDPATH"
#~ msgid "are separated by a colon (:). A null directory name is the same as"
-#~ msgstr "разделÑÑŽÑ‚ÑÑ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ñ Ð·Ð°Ð¿Ñтой (:). ПуÑтое Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° -- то же Ñамое,"
+#~ msgstr ""
+#~ "разделÑÑŽÑ‚ÑÑ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ñ Ð·Ð°Ð¿Ñтой (:). ПуÑтое Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° -- то же Ñамое,"
#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/),"
-#~ msgstr "что текущий каталог, Ñ‚.е. `.'. ЕÑли КÐТÐЛОГ начинаетÑÑ Ñ Ð´Ñ€Ð¾Ð±Ð¸ (/),"
+#~ msgstr ""
+#~ "что текущий каталог, Ñ‚.е. `.'. ЕÑли КÐТÐЛОГ начинаетÑÑ Ñ Ð´Ñ€Ð¾Ð±Ð¸ (/),"
#~ msgid "then $CDPATH is not used. If the directory is not found, and the"
-#~ msgstr "$CDPATh не иÑпользуетÑÑ. ЕÑли каталог не найден, и уÑтановлен параметр"
+#~ msgstr ""
+#~ "$CDPATh не иÑпользуетÑÑ. ЕÑли каталог не найден, и уÑтановлен параметр"
#~ msgid "shell option `cdable_vars' is set, then try the word as a variable"
-#~ msgstr "оболочки `cdable_vars', делаетÑÑ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° интерпретировать Ñто Ñлово как имÑ"
+#~ msgstr ""
+#~ "оболочки `cdable_vars', делаетÑÑ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° интерпретировать Ñто Ñлово как "
+#~ "имÑ"
#~ msgid "name. If that variable has a value, then cd to the value of that"
-#~ msgstr "переменной. ЕÑли Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ значение, каталог менÑетÑÑ Ð½Ð° Ñто"
+#~ msgstr ""
+#~ "переменной. ЕÑли Ñта Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸Ð¼ÐµÐµÑ‚ значение, каталог менÑетÑÑ Ð½Ð° Ñто"
-#~ msgid "variable. The -P option says to use the physical directory structure"
-#~ msgstr "значение. Параметр -P указывает иÑпользовать физичеÑкую Ñтруктуру каталогов,"
+#~ msgid ""
+#~ "variable. The -P option says to use the physical directory structure"
+#~ msgstr ""
+#~ "значение. Параметр -P указывает иÑпользовать физичеÑкую Ñтруктуру "
+#~ "каталогов,"
-#~ msgid "instead of following symbolic links; the -L option forces symbolic links"
-#~ msgstr "а не Ñледовать ÑимволчиеÑким ÑÑылкам, параметр -L заÑтавлÑет Ñледовать"
+#~ msgid ""
+#~ "instead of following symbolic links; the -L option forces symbolic links"
+#~ msgstr ""
+#~ "а не Ñледовать ÑимволчиеÑким ÑÑылкам, параметр -L заÑтавлÑет Ñледовать"
#~ msgid "to be followed."
#~ msgstr "ÑимволичеÑким ÑÑылкам."
#~ msgid "Print the current working directory. With the -P option, pwd prints"
-#~ msgstr "ВывеÑти Ð¸Ð¼Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ рабочего каталога. С параметром -P pwd выводит"
+#~ msgstr ""
+#~ "ВывеÑти Ð¸Ð¼Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ рабочего каталога. С параметром -P pwd выводит"
#~ msgid "the physical directory, without any symbolic links; the -L option"
-#~ msgstr "физичеÑкий каталог, без ÑимволичеÑких ÑÑылок, параметр -L заÑтавлÑет"
+#~ msgstr ""
+#~ "физичеÑкий каталог, без ÑимволичеÑких ÑÑылок, параметр -L заÑтавлÑет"
#~ msgid "makes pwd follow symbolic links."
#~ msgstr "pwd Ñледовать ÑимволичеÑким ÑÑылкам."
-#~ msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell"
-#~ msgstr "ВыполнÑет КОМÐÐДУ Ñ ÐРГУМЕÐТÐМИ, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ оболочки. ЕÑли у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ"
+#~ msgid ""
+#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell"
+#~ msgstr ""
+#~ "ВыполнÑет КОМÐÐДУ Ñ ÐРГУМЕÐТÐМИ, Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ оболочки. ЕÑли у Ð²Ð°Ñ "
+#~ "еÑÑ‚ÑŒ"
#~ msgid "function called `ls', and you wish to call the command `ls', you can"
-#~ msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¸ `ls', а вы хотите вызвать команду `ls', можно иÑпользовать"
+#~ msgstr ""
+#~ "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¸ `ls', а вы хотите вызвать команду `ls', можно "
+#~ "иÑпользовать"
-#~ msgid "say \"command ls\". If the -p option is given, a default value is used"
-#~ msgstr "\"command ls\". ЕÑли задан параметр -p, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ $PATH"
+#~ msgid ""
+#~ "say \"command ls\". If the -p option is given, a default value is used"
+#~ msgstr ""
+#~ "\"command ls\". ЕÑли задан параметр -p, иÑпользуетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ $PATH"
-#~ msgid "for PATH that is guaranteed to find all of the standard utilities. If"
+#~ msgid ""
+#~ "for PATH that is guaranteed to find all of the standard utilities. If"
#~ msgstr "по умолчанию, что гарантирует отыÑкание Ñтандартных утилит. ЕÑли"
-#~ msgid "the -V or -v option is given, a string is printed describing COMMAND."
+#~ msgid ""
+#~ "the -V or -v option is given, a string is printed describing COMMAND."
#~ msgstr "задан параметр -V или -v, выводитÑÑ Ñтрока, опиÑÑ‹Ð²Ð°ÑŽÑ‰Ð°Ñ ÐšÐžÐœÐÐДУ."
#~ msgid "The -V option produces a more verbose description."
#~ msgstr "Параметр -V Ñоздаёт более подробное опиÑание."
#~ msgid "Declare variables and/or give them attributes. If no NAMEs are"
-#~ msgstr "ОбъÑвлÑет переменные и/или придаёт им атрибуты. ЕÑли не заданы ИМЕÐÐ,"
+#~ msgstr ""
+#~ "ОбъÑвлÑет переменные и/или придаёт им атрибуты. ЕÑли не заданы ИМЕÐÐ,"
#~ msgid "given, then display the values of variables instead. The -p option"
#~ msgstr "выводит вмеÑто Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ñ…. Параметр -p выведет"
@@ -6923,11 +6554,13 @@ msgstr ""
#~ msgid "name only."
#~ msgstr "функции."
-#~ msgid "Using `+' instead of `-' turns off the given attribute instead. When"
+#~ msgid ""
+#~ "Using `+' instead of `-' turns off the given attribute instead. When"
#~ msgstr "ИÑпользование `+' вмеÑто `-' выключает заданный атрибут. При"
#~ msgid "used in a function, makes NAMEs local, as with the `local' command."
-#~ msgstr "иÑпользовании в функции делает ИМЕÐа локальными, как команда `local'."
+#~ msgstr ""
+#~ "иÑпользовании в функции делает ИМЕÐа локальными, как команда `local'."
#~ msgid "Obsolete. See `declare'."
#~ msgstr "УÑтарела. См. `declare'."
@@ -6942,7 +6575,8 @@ msgstr ""
#~ msgstr "Выводит ÐРГУМЕÐТЫ. ЕÑли задано -n, подавлÑетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°ÑŽÑ‰Ð¸Ð¹ переход"
#~ msgid "suppressed. If the -e option is given, interpretation of the"
-#~ msgstr "на новую Ñтроку. ЕÑли задан параметр -e, интерпретируютÑÑ Ñледующие"
+#~ msgstr ""
+#~ "на новую Ñтроку. ЕÑли задан параметр -e, интерпретируютÑÑ Ñледующие"
#~ msgid "following backslash-escaped characters is turned on:"
#~ msgstr "Ñкранированные Ñимволы:"
@@ -6980,14 +6614,18 @@ msgstr ""
#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)."
#~ msgstr "\t\\чиÑло\tÑимвол, воÑьмеричный ASCII-код которого равен ЧИСЛУ"
-#~ msgid "You can explicitly turn off the interpretation of the above characters"
+#~ msgid ""
+#~ "You can explicitly turn off the interpretation of the above characters"
#~ msgstr "Ð’Ñ‹ можете Ñвно выключить интерпретацию вышеприведённых Ñимволов"
#~ msgid "with the -E option."
#~ msgstr "параметром -E."
-#~ msgid "Output the ARGs. If -n is specified, the trailing newline is suppressed."
-#~ msgstr "Выводит ÐРГУМЕÐТЫ. ЕÑли задано -n, подавлÑетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°ÑŽÑ‰Ð¸Ð¹ переход на новую Ñтроку."
+#~ msgid ""
+#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed."
+#~ msgstr ""
+#~ "Выводит ÐРГУМЕÐТЫ. ЕÑли задано -n, подавлÑетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°ÑŽÑ‰Ð¸Ð¹ переход на "
+#~ "новую Ñтроку."
#~ msgid "Enable and disable builtin shell commands. This allows"
#~ msgstr "Включает и блокирует вÑтроенные команды оболочки. Это позволÑет"
@@ -6996,10 +6634,12 @@ msgstr ""
#~ msgstr "иÑпользовать внешние команды Ñ Ñ‚ÐµÐ¼Ð¸ же именами, что команды"
#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise"
-#~ msgstr "оболочки. При иÑпользовании -n ИМЕÐРблокируютÑÑ, в противном Ñлучае"
+#~ msgstr ""
+#~ "оболочки. При иÑпользовании -n ИМЕÐРблокируютÑÑ, в противном Ñлучае"
#~ msgid "NAMEs are enabled. For example, to use the `test' found on your"
-#~ msgstr "включаютÑÑ. Ðапример, чтобы иÑпользовать файл `test', а не вÑтроенную"
+#~ msgstr ""
+#~ "включаютÑÑ. Ðапример, чтобы иÑпользовать файл `test', а не вÑтроенную"
#~ msgid "path instead of the shell builtin version, type `enable -n test'."
#~ msgstr "в оболочку верÑию, введите enable -n test'. Ðа ÑиÑтемах,"
@@ -7008,7 +6648,8 @@ msgstr ""
#~ msgstr "поддерживающих динамичеÑкую загрузку можно иÑпользовать параметр -f"
#~ msgid "to load new builtins from the shared object FILENAME. The -d"
-#~ msgstr "чтобы загрузить новые вÑтроенные команды из разделÑемого объекта ФÐЙЛ."
+#~ msgstr ""
+#~ "чтобы загрузить новые вÑтроенные команды из разделÑемого объекта ФÐЙЛ."
#~ msgid "option will delete a builtin previously loaded with -f. If no"
#~ msgstr "Параметр -d удалÑет команды, загруженные -f. ЕÑли имена, кроме"
@@ -7017,7 +6658,8 @@ msgstr ""
#~ msgstr "как в параметрах, не заданы, или еÑли задан параметр -p, выводитÑÑ"
#~ msgid "of builtins is printed. The -a option means to print every builtin"
-#~ msgstr "ÑпиÑок вÑтроенных команд. Параметр -a требует вывеÑти вÑе вÑтроенные"
+#~ msgstr ""
+#~ "ÑпиÑок вÑтроенных команд. Параметр -a требует вывеÑти вÑе вÑтроенные"
#~ msgid "with an indication of whether or not it is enabled. The -s option"
#~ msgstr "команды Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÐ¹, блокированы ли они. Параметр -s выводит"
@@ -7028,17 +6670,22 @@ msgstr ""
#~ msgid "option displays a list of all disabled builtins."
#~ msgstr "вÑех блокированных вÑтроенных команд."
-#~ msgid "Read ARGs as input to the shell and execute the resulting command(s)."
-#~ msgstr "Читает ÐРГУМЕÐТЫ как входной текÑÑ‚ оболочки и выполнÑет полученные команды."
+#~ msgid ""
+#~ "Read ARGs as input to the shell and execute the resulting command(s)."
+#~ msgstr ""
+#~ "Читает ÐРГУМЕÐТЫ как входной текÑÑ‚ оболочки и выполнÑет полученные "
+#~ "команды."
#~ msgid "Getopts is used by shell procedures to parse positional parameters."
-#~ msgstr "Getopts иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°Ð¼Ð¸ оболочки Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° параметров командной"
+#~ msgstr ""
+#~ "Getopts иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°Ð¼Ð¸ оболочки Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð° параметров командной"
#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter"
#~ msgstr "Ñтроки. СТРОКÐ_ПÐРÐМЕТРОВ Ñодержит буквы параметров, которые нужно"
#~ msgid "is followed by a colon, the option is expected to have an argument,"
-#~ msgstr "раÑпознать. ЕÑли за буквой Ñледует двоеточие, параметр должен иметь"
+#~ msgstr ""
+#~ "раÑпознать. ЕÑли за буквой Ñледует двоеточие, параметр должен иметь"
#~ msgid "which should be separated from it by white space."
#~ msgstr "аргумент, отделённый от него промежутком."
@@ -7053,7 +6700,8 @@ msgstr ""
#~ msgstr "Ñледующего аргумента в переменную оболочки OPTIND. OPTIND"
#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or"
-#~ msgstr "принимает значение 1 при каждом вызове оболочки или Ñкрипта оболочки."
+#~ msgstr ""
+#~ "принимает значение 1 при каждом вызове оболочки или Ñкрипта оболочки."
#~ msgid "a shell script is invoked. When an option requires an argument,"
#~ msgstr "ЕÑли параметр требует аргумента, getopts помещает Ñтот аргумент"
@@ -7062,16 +6710,19 @@ msgstr ""
#~ msgstr "в переменную оболочки OPTARG."
#~ msgid "getopts reports errors in one of two ways. If the first character"
-#~ msgstr "getopts Ñообщает об ошибках одним из двух ÑпоÑобов. ЕÑли первый Ñимвол"
+#~ msgstr ""
+#~ "getopts Ñообщает об ошибках одним из двух ÑпоÑобов. ЕÑли первый Ñимвол"
#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In"
-#~ msgstr "OPTSTRING -- двоеточие, getopts иÑпользует беÑшумный ÑпоÑоб. Ð’ Ñтом"
+#~ msgstr ""
+#~ "OPTSTRING -- двоеточие, getopts иÑпользует беÑшумный ÑпоÑоб. Ð’ Ñтом"
#~ msgid "this mode, no error messages are printed. If an illegal option is"
#~ msgstr "Ñлучае ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках не выводÑÑ‚ÑÑ. ЕÑли найден недопуÑтимый"
#~ msgid "seen, getopts places the option character found into OPTARG. If a"
-#~ msgstr "параметр, getopts помещает найденный Ñимвол в OPTARG. ЕÑли не найден"
+#~ msgstr ""
+#~ "параметр, getopts помещает найденный Ñимвол в OPTARG. ЕÑли не найден"
#~ msgid "required argument is not found, getopts places a ':' into NAME and"
#~ msgstr "требуемый аргумент, getopts помещает в ИМЯ ':', а в OPTARG --"
@@ -7128,7 +6779,8 @@ msgstr ""
#~ msgstr "ЕÑли файл не может быть запущен, а оболочка не интерактивна,"
#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\""
-#~ msgstr "производитÑÑ Ð²Ñ‹Ñ…Ð¾Ð´ из оболочки, еÑли только не уÑтановлена переменнаÑ"
+#~ msgstr ""
+#~ "производитÑÑ Ð²Ñ‹Ñ…Ð¾Ð´ из оболочки, еÑли только не уÑтановлена переменнаÑ"
#~ msgid "is set."
#~ msgstr "\"no_exit_on_failed_exec\""
@@ -7136,8 +6788,10 @@ msgstr ""
#~ msgid "is that of the last command executed."
#~ msgstr "Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ таким же, как у поÑледней выполненной команды."
-#~ msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
-#~ msgstr "ПЕРВÐЯ и ПОСЛЕДÐЯЯ могут быть чиÑлами, ограничивающими диапазон, или"
+#~ msgid ""
+#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
+#~ msgstr ""
+#~ "ПЕРВÐЯ и ПОСЛЕДÐЯЯ могут быть чиÑлами, ограничивающими диапазон, или"
#~ msgid "string, which means the most recent command beginning with that"
#~ msgstr "же ПЕРВÐЯ может быть Ñтрокой, означающей Ñамую недавнюю команду,"
@@ -7145,10 +6799,13 @@ msgstr ""
#~ msgid "string."
#~ msgstr "начинающуюÑÑ Ñ Ñтой Ñтроки."
-#~ msgid " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,"
-#~ msgstr " -e ИМЯ_РЕДÐКТОРРвыбирает иÑпользуемый редактор. По умолчанию FCEDIT,"
+#~ msgid ""
+#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,"
+#~ msgstr ""
+#~ " -e ИМЯ_РЕДÐКТОРРвыбирает иÑпользуемый редактор. По умолчанию FCEDIT,"
-#~ msgid " then the editor which corresponds to the current readline editing"
+#~ msgid ""
+#~ " then the editor which corresponds to the current readline editing"
#~ msgstr " затем EDITOR, затем редактор, ÑоответÑтвуюший текущему режиму"
#~ msgid " mode, then vi."
@@ -7160,11 +6817,14 @@ msgstr ""
#~ msgid " -n means no line numbers listed."
#~ msgstr " -n не выводить номера Ñтрок."
-#~ msgid " -r means reverse the order of the lines (making it newest listed first)."
+#~ msgid ""
+#~ " -r means reverse the order of the lines (making it newest listed "
+#~ "first)."
#~ msgstr " -r вывеÑти Ñтроки в обратном порÑдке (в начале Ñамые новые)."
#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is"
-#~ msgstr "Ð’ формате `fc -s [шаблон=замена] [команда] команда выполнÑетÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾"
+#~ msgstr ""
+#~ "Ð’ формате `fc -s [шаблон=замена] [команда] команда выполнÑетÑÑ Ð·Ð°Ð½Ð¾Ð²Ð¾"
#~ msgid "re-executed after the substitution OLD=NEW is performed."
#~ msgstr "поÑле того, как произведена подÑтановка."
@@ -7176,7 +6836,8 @@ msgstr ""
#~ msgstr "команду, начинающуюÑÑ Ñ `cc', а `r' заново выполнÑет поÑледнюю"
#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If"
-#~ msgstr "Возвращает задачу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером из фонового режима и делает её"
+#~ msgstr ""
+#~ "Возвращает задачу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером из фонового режима и делает её"
#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is"
#~ msgstr "текущей задачей. ЕÑли номер не задан, иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñтавление"
@@ -7185,10 +6846,12 @@ msgstr ""
#~ msgstr "оболочки о текущей задаче."
#~ msgid "Place JOB_SPEC in the background, as if it had been started with"
-#~ msgstr "Переводит задачу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером в фоновый режим, как еÑли бы она"
+#~ msgstr ""
+#~ "Переводит задачу Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ номером в фоновый режим, как еÑли бы она"
#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current"
-#~ msgstr "была запущена Ñ `&'. ЕÑли номер не задан, иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñтавление"
+#~ msgstr ""
+#~ "была запущена Ñ `&'. ЕÑли номер не задан, иÑпользуетÑÑ Ð¿Ñ€ÐµÐ´Ñтавление"
#~ msgid "job is used."
#~ msgstr "оболочки о текущей задаче."
@@ -7205,14 +6868,17 @@ msgstr ""
#~ msgid "option causes the shell to forget all remembered locations. If no"
#~ msgstr "ÑпиÑок положений в памÑти. ЕÑли аргументы не заданы, выводитÑÑ"
-#~ msgid "arguments are given, information about remembered commands is displayed."
+#~ msgid ""
+#~ "arguments are given, information about remembered commands is displayed."
#~ msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ запомненных командах."
#~ msgid "Display helpful information about builtin commands. If PATTERN is"
-#~ msgstr "ВывеÑти полезную информацию о вÑтроенных командах. ЕÑли задан ШÐБЛОÐ,"
+#~ msgstr ""
+#~ "ВывеÑти полезную информацию о вÑтроенных командах. ЕÑли задан ШÐБЛОÐ,"
#~ msgid "specified, gives detailed help on all commands matching PATTERN,"
-#~ msgstr "вывеÑти подробную Ñправку по вÑем командам, ÑоответÑтвующим ШÐБЛОÐУ,"
+#~ msgstr ""
+#~ "вывеÑти подробную Ñправку по вÑем командам, ÑоответÑтвующим ШÐБЛОÐУ,"
#~ msgid "otherwise a list of the builtins is printed."
#~ msgstr "в противном Ñлучае вывеÑти ÑпиÑок вÑтроенных команд."
@@ -7221,15 +6887,18 @@ msgstr ""
#~ msgstr "ВывеÑти иÑторию команд в виде ÑпиÑка Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ Ñтрок. Изменённые"
#~ msgid "with a `*' have been modified. Argument of N says to list only"
-#~ msgstr "Ñтроки помечаютÑÑ Ñимволом `*'. Ðргумент N указывает выводить только"
+#~ msgstr ""
+#~ "Ñтроки помечаютÑÑ Ñимволом `*'. Ðргумент N указывает выводить только"
#~ msgid "the last N lines. The -c option causes the history list to be"
#~ msgstr "поÑледние N Ñтрок. Параметр -c очищает иÑторию команд, удалÑÑ"
-#~ msgid "cleared by deleting all of the entries. The `-w' option writes out the"
+#~ msgid ""
+#~ "cleared by deleting all of the entries. The `-w' option writes out the"
#~ msgstr "вÑе Ñтроки. Параметр `-w' запиÑывает текущую иÑторию в указанный"
-#~ msgid "current history to the history file; `-r' means to read the file and"
+#~ msgid ""
+#~ "current history to the history file; `-r' means to read the file and"
#~ msgstr "файл; `-r' читает такой файл и дополнÑет его Ñодержимым иÑторию"
#~ msgid "append the contents to the history list instead. `-a' means"
@@ -7256,7 +6925,8 @@ msgstr ""
#~ msgid "the history list as a single entry. The -p option means to perform"
#~ msgstr "Параметр -p выполнÑет развёртывание каждого ÐРГУМЕÐТРи выводит"
-#~ msgid "history expansion on each ARG and display the result, without storing"
+#~ msgid ""
+#~ "history expansion on each ARG and display the result, without storing"
#~ msgstr "результат, не ÑохранÑÑ Ð½Ð¸Ñ‡ÐµÐ³Ð¾ в ÑпиÑке иÑтории команд."
#~ msgid "anything in the history list."
@@ -7268,41 +6938,53 @@ msgstr ""
#~ msgid "to the normal information; the -p option lists process id's only."
#~ msgstr "идентификаторы процеÑÑов: параметр -p выодит только идентификаторы."
-#~ msgid "If -n is given, only processes that have changed status since the last"
+#~ msgid ""
+#~ "If -n is given, only processes that have changed status since the last"
#~ msgstr "ЕÑли задано -n, выводÑÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ процеÑÑÑ‹, ÑÑ‚Ð°Ñ‚ÑƒÑ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… изменилÑÑ"
-#~ msgid "notification are printed. JOBSPEC restricts output to that job. The"
-#~ msgstr "Ñо времени поÑледнего уведомлениÑ. ЕÑли задан номер задачи, выводитÑÑ"
+#~ msgid ""
+#~ "notification are printed. JOBSPEC restricts output to that job. The"
+#~ msgstr ""
+#~ "Ñо времени поÑледнего уведомлениÑ. ЕÑли задан номер задачи, выводитÑÑ"
#~ msgid "-r and -s options restrict output to running and stopped jobs only,"
#~ msgstr "только она. Параметры -r и -s выводит только работающие или только"
#~ msgid "respectively. Without options, the status of all active jobs is"
-#~ msgstr "оÑтановленные задачи ÑоответÑтвенно. Без параметров выодитÑÑ ÑтатуÑ"
+#~ msgstr ""
+#~ "оÑтановленные задачи ÑоответÑтвенно. Без параметров выодитÑÑ ÑтатуÑ"
-#~ msgid "printed. If -x is given, COMMAND is run after all job specifications"
-#~ msgstr "вÑех активных задач. ЕÑли задано -x, в КОМÐÐДЕ вмеÑто вÑех ÐРГУМЕÐТОВ"
+#~ msgid ""
+#~ "printed. If -x is given, COMMAND is run after all job specifications"
+#~ msgstr ""
+#~ "вÑех активных задач. ЕÑли задано -x, в КОМÐÐДЕ вмеÑто вÑех ÐРГУМЕÐТОВ"
-#~ msgid "that appear in ARGS have been replaced with the process ID of that job's"
+#~ msgid ""
+#~ "that appear in ARGS have been replaced with the process ID of that job's"
#~ msgstr "(номеров задач) подÑтавлÑетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ лидера ÑоответÑтвующей"
#~ msgid "process group leader."
#~ msgstr "группы процеÑÑов, и КОМÐÐДРвыполнÑетÑÑ."
#~ msgid "Removes each JOBSPEC argument from the table of active jobs."
-#~ msgstr "УдалÑет вÑе задачи, заданные ÑпецификациÑми в аргументе, из таблицы задач."
+#~ msgstr ""
+#~ "УдалÑет вÑе задачи, заданные ÑпецификациÑми в аргументе, из таблицы задач."
#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If"
-#~ msgstr "ПоÑылает указанным процеÑÑам (заданным PID или Ñпецификацией) Ñигнал"
+#~ msgstr ""
+#~ "ПоÑылает указанным процеÑÑам (заданным PID или Ñпецификацией) Ñигнал"
-#~ msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'"
+#~ msgid ""
+#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'"
#~ msgstr "SIGSPEC. ЕÑли отÑутÑтвует SIGSPEC, поÑылаетÑÑ SIGTERM. Ðргументом"
#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to"
-#~ msgstr "параметра `-l' Ñлужит ÑпиÑок Ñигналов. ЕÑли он приÑутÑтвует, выводÑÑ‚ÑÑ"
+#~ msgstr ""
+#~ "параметра `-l' Ñлужит ÑпиÑок Ñигналов. ЕÑли он приÑутÑтвует, выводÑÑ‚ÑÑ"
#~ msgid "be signal numbers for which names should be listed. Kill is a shell"
-#~ msgstr "Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов Ñ Ñтими номерами. Kill ÑвлÑетÑÑ Ð²Ñтроенной командой"
+#~ msgstr ""
+#~ "Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов Ñ Ñтими номерами. Kill ÑвлÑетÑÑ Ð²Ñтроенной командой"
#~ msgid "builtin for two reasons: it allows job IDs to be used instead of"
#~ msgstr "оболочки по двум причинам: она позволÑет иÑпользовать номера задач,"
@@ -7310,14 +6992,16 @@ msgstr ""
#~ msgid "process IDs, and, if you have reached the limit on processes that"
#~ msgstr "а не процеÑÑов, и еÑли вы иÑчерпаете лимит Ñозданных процеÑÑов,"
-#~ msgid "you can create, you don't have to start a process to kill another one."
+#~ msgid ""
+#~ "you can create, you don't have to start a process to kill another one."
#~ msgstr "вы не Ñможете запуÑтить новый процеÑÑ, уничтожающий один из Ñтарых."
#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation"
#~ msgstr "Каждый аргумент раÑÑматриваетÑÑ ÐºÐ°Ðº арифметичеÑкое выражение."
#~ msgid "is done in long integers with no check for overflow, though division"
-#~ msgstr "ВычиÑление производитÑÑ Ð½Ð°Ð´ длинными целыми без ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ,"
+#~ msgstr ""
+#~ "ВычиÑление производитÑÑ Ð½Ð°Ð´ длинными целыми без ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ,"
#~ msgid "by 0 is trapped and flagged as an error. The following list of"
#~ msgstr "Ñ…Ð¾Ñ‚Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ðµ на ноль отÑлеживаетÑÑ Ð¸ ÑчитаетÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹. Операции в"
@@ -7406,47 +7090,61 @@ msgstr ""
#~ msgid "One line is read from the standard input, and the first word is"
#~ msgstr "Со Ñтандартного ввода ÑчитываетÑÑ Ð¾Ð´Ð½Ð° Ñтрока, первое её Ñлово"
-#~ msgid "assigned to the first NAME, the second word to the second NAME, and so"
+#~ msgid ""
+#~ "assigned to the first NAME, the second word to the second NAME, and so"
#~ msgstr "ÑтановитÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÐµÐ¼ первого ИМЕÐИ, второе -- второго ИМЕÐИ и Ñ‚.д."
-#~ msgid "on, with leftover words assigned to the last NAME. Only the characters"
-#~ msgstr "ПоÑледнему ИМЕÐИ приÑваиваетÑÑ Ð²ÐµÑÑŒ оÑтаток Ñтроки. РазделителÑми Ñлов"
+#~ msgid ""
+#~ "on, with leftover words assigned to the last NAME. Only the characters"
+#~ msgstr ""
+#~ "ПоÑледнему ИМЕÐИ приÑваиваетÑÑ Ð²ÐµÑÑŒ оÑтаток Ñтроки. РазделителÑми Ñлов"
#~ msgid "found in $IFS are recognized as word delimiters. The return code is"
#~ msgstr "ÑчитаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñимволы, входÑщие в $IFS. Код возврата равен нулю,"
-#~ msgid "zero, unless end-of-file is encountered. If no NAMEs are supplied, the"
+#~ msgid ""
+#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the"
#~ msgstr "за иÑключением ÑлучаÑ, еÑли вÑтретилÑÑ ÐºÐ¾Ð½ÐµÑ† файла. ЕÑли ИМЕÐРне"
-#~ msgid "line read is stored in the REPLY variable. If the -r option is given,"
-#~ msgstr "заданы, Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока помещаетÑÑ Ð² переменную REPLY. ЕÑли задан"
+#~ msgid ""
+#~ "line read is stored in the REPLY variable. If the -r option is given,"
+#~ msgstr ""
+#~ "заданы, Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ð°Ñ Ñтрока помещаетÑÑ Ð² переменную REPLY. ЕÑли задан"
#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If"
-#~ msgstr "параметр -r, Ñто означает `Ñырой' ввод, Ñ‚.е. Ñимвол \\ не Ñкранирует"
+#~ msgstr ""
+#~ "параметр -r, Ñто означает `Ñырой' ввод, Ñ‚.е. Ñимвол \\ не Ñкранирует"
#~ msgid "the `-p' option is supplied, the string supplied as an argument is"
-#~ msgstr "Ñимволы. ЕÑли задано `-p', перед чтением на вывод в качеÑтве аргумента"
+#~ msgstr ""
+#~ "Ñимволы. ЕÑли задано `-p', перед чтением на вывод в качеÑтве аргумента"
-#~ msgid "output without a trailing newline before attempting to read. If -a is"
-#~ msgstr "подаётÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ñтрока (без завершающего Ñимвола перевода Ñтроки)."
+#~ msgid ""
+#~ "output without a trailing newline before attempting to read. If -a is"
+#~ msgstr ""
+#~ "подаётÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ñтрока (без завершающего Ñимвола перевода Ñтроки)."
-#~ msgid "supplied, the words read are assigned to sequential indices of ARRAY,"
+#~ msgid ""
+#~ "supplied, the words read are assigned to sequential indices of ARRAY,"
#~ msgstr "ЕÑли задано -a, прочитанные Ñлова ÑтановÑÑ‚ÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñми Ñлементов"
#~ msgid "starting at zero. If -e is supplied and the shell is interactive,"
-#~ msgstr "ÐœÐССИВÐ, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð³Ð¾. ЕÑли задано -c и оболочка интерактивна,"
+#~ msgstr ""
+#~ "ÐœÐССИВÐ, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð³Ð¾. ЕÑли задано -c и оболочка интерактивна,"
#~ msgid "readline is used to obtain the line."
#~ msgstr "чтобы получить Ñтроку иÑпользуетÑÑ readline."
-#~ msgid "Causes a function to exit with the return value specified by N. If N"
+#~ msgid ""
+#~ "Causes a function to exit with the return value specified by N. If N"
#~ msgstr "ЗаÑтавлÑет функцию завершить работу Ñ ÐºÐ¾Ð´Ð¾Ð¼ возврата, заданным N."
#~ msgid "is omitted, the return status is that of the last command."
#~ msgstr "ЕÑли N опущено, им ÑтановитÑÑ ÐºÐ¾Ð´ возврата поÑледней команды."
#~ msgid " -a Mark variables which are modified or created for export."
-#~ msgstr " -a ЭкÑпортировать переменные, которые изменÑлиÑÑŒ или ÑоздавалиÑÑŒ."
+#~ msgstr ""
+#~ " -a ЭкÑпортировать переменные, которые изменÑлиÑÑŒ или ÑоздавалиÑÑŒ."
#~ msgid " -b Notify of job termination immediately."
#~ msgstr " -b Ðемедленно выводить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾ завершении задач."
@@ -7460,7 +7158,8 @@ msgstr ""
#~ msgid " -h Remember the location of commands as they are looked up."
#~ msgstr " -h Запоминать раÑположение обработанных команд."
-#~ msgid " -i Force the shell to be an \"interactive\" one. Interactive shells"
+#~ msgid ""
+#~ " -i Force the shell to be an \"interactive\" one. Interactive shells"
#~ msgstr " -i Сделать оболочку \"интерактивной\". Интерактивные оболочки"
#~ msgid " always read `~/.bashrc' on startup."
@@ -7491,7 +7190,8 @@ msgstr ""
#~ msgstr " braceexpand то же, что -B"
#~ msgid " emacs use an emacs-style line editing interface"
-#~ msgstr " emacs иÑпользовать Ñтиль Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок emacs"
+#~ msgstr ""
+#~ " emacs иÑпользовать Ñтиль Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтрок emacs"
#~ msgid " errexit same as -e"
#~ msgstr " errexit то же, что -e"
@@ -7508,8 +7208,10 @@ msgstr ""
#~ msgid " interactive-comments"
#~ msgstr " interactive-comments"
-#~ msgid " allow comments to appear in interactive commands"
-#~ msgstr " допуÑкает комментарии в интерактивных командах"
+#~ msgid ""
+#~ " allow comments to appear in interactive commands"
+#~ msgstr ""
+#~ " допуÑкает комментарии в интерактивных командах"
#~ msgid " keyword same as -k"
#~ msgstr " keyword то же, что -k"
@@ -7538,10 +7240,12 @@ msgstr ""
#~ msgid " physical same as -P"
#~ msgstr " physical то же, что -P"
-#~ msgid " posix change the behavior of bash where the default"
+#~ msgid ""
+#~ " posix change the behavior of bash where the default"
#~ msgstr " posix привеÑти поведение bash, по умолчанию не"
-#~ msgid " operation differs from the 1003.2 standard to"
+#~ msgid ""
+#~ " operation differs from the 1003.2 standard to"
#~ msgstr " ÑоответÑтвующее Ñтандарту 1003.2, в"
#~ msgid " match the standard"
@@ -7559,14 +7263,18 @@ msgstr ""
#~ msgid " xtrace same as -x"
#~ msgstr " xtrace то же, что -x"
-#~ msgid " -p Turned on whenever the real and effective user ids do not match."
-#~ msgstr " -p ЕÑли реальный и Ñффективный uid не Ñовпадают, включаетÑÑ Ð²Ñегда."
+#~ msgid ""
+#~ " -p Turned on whenever the real and effective user ids do not match."
+#~ msgstr ""
+#~ " -p ЕÑли реальный и Ñффективный uid не Ñовпадают, включаетÑÑ Ð²Ñегда."
#~ msgid " Disables processing of the $ENV file and importing of shell"
#~ msgstr " Отключает обработку файла $ENV и импорт функций оболочки."
-#~ msgid " functions. Turning this option off causes the effective uid and"
-#~ msgstr " При выключении Ñтого параметра Ñффективные uid и gid ÑтановÑÑ‚ÑÑ"
+#~ msgid ""
+#~ " functions. Turning this option off causes the effective uid and"
+#~ msgstr ""
+#~ " При выключении Ñтого параметра Ñффективные uid и gid ÑтановÑÑ‚ÑÑ"
#~ msgid " gid to be set to the real uid and gid."
#~ msgstr " равными реальным."
@@ -7575,7 +7283,8 @@ msgstr ""
#~ msgstr " -t Завершить работу поÑле Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ команды."
#~ msgid " -u Treat unset variables as an error when substituting."
-#~ msgstr " -u При подÑтановке Ñчитать не уÑтановленные переменные ошибками."
+#~ msgstr ""
+#~ " -u При подÑтановке Ñчитать не уÑтановленные переменные ошибками."
#~ msgid " -v Print shell input lines as they are read."
#~ msgstr " -v Выводить прочитанные Ñтроки входного текÑта оболочки."
@@ -7599,7 +7308,8 @@ msgstr ""
#~ msgstr " обычных файлов при перенаправлении вывода."
#~ msgid " -P If set, do not follow symbolic links when executing commands"
-#~ msgstr " -P Ðе Ñледовать ÑимволичеÑким ÑÑылкам при выполнении таких команд,"
+#~ msgstr ""
+#~ " -P Ðе Ñледовать ÑимволичеÑким ÑÑылкам при выполнении таких команд,"
#~ msgid " such as cd which change the current directory."
#~ msgstr " как cd, Ñ‚.е. изменÑющих текущий каталог."
@@ -7608,9 +7318,11 @@ msgstr ""
#~ msgstr "ИÑпользование + вмеÑто - отключает флаг. Эти флаги могут также"
#~ msgid "flags can also be used upon invocation of the shell. The current"
-#~ msgstr "иÑпользоватьÑÑ Ð¿Ñ€Ð¸ запуÑке оболочки. Текущий набор флагов ÑодержитÑÑ"
+#~ msgstr ""
+#~ "иÑпользоватьÑÑ Ð¿Ñ€Ð¸ запуÑке оболочки. Текущий набор флагов ÑодержитÑÑ"
-#~ msgid "set of flags may be found in $-. The remaining n ARGs are positional"
+#~ msgid ""
+#~ "set of flags may be found in $-. The remaining n ARGs are positional"
#~ msgstr "в $-. ОÑтальные n аргументов -- позиционные параметры, и им, по"
#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no"
@@ -7623,7 +7335,8 @@ msgstr ""
#~ msgstr "Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ИМЕÐИ удалÑет ÑоответÑтвующую переменную или функцию."
#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag,"
-#~ msgstr "ЕÑли задано -v, unset влиÑет только на переменные, еÑли -f -- только"
+#~ msgstr ""
+#~ "ЕÑли задано -v, unset влиÑет только на переменные, еÑли -f -- только"
#~ msgid "unset will only act on functions. With neither flag, unset first"
#~ msgstr "на функции. Без флагов unset в первую очередь пытаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ"
@@ -7631,7 +7344,8 @@ msgstr ""
#~ msgid "tries to unset a variable, and if that fails, then tries to unset a"
#~ msgstr "переменную, еÑли Ñто не удаётÑÑ -- функцию. Ðекоторые переменные"
-#~ msgid "function. Some variables (such as PATH and IFS) cannot be unset; also"
+#~ msgid ""
+#~ "function. Some variables (such as PATH and IFS) cannot be unset; also"
#~ msgstr "(такие как PATH и IFS) не могут быть удалены. См."
#~ msgid "see readonly."
@@ -7658,19 +7372,24 @@ msgstr ""
#~ msgid "processing."
#~ msgstr "параметров."
-#~ msgid "The given NAMEs are marked readonly and the values of these NAMEs may"
-#~ msgstr "Заданные ИМЕÐРпомечаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ, и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтих ИМÐРне"
+#~ msgid ""
+#~ "The given NAMEs are marked readonly and the values of these NAMEs may"
+#~ msgstr ""
+#~ "Заданные ИМЕÐРпомечаютÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ, и Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñтих ИМÐРне"
#~ msgid "not be changed by subsequent assignment. If the -f option is given,"
-#~ msgstr "могут изменÑÑ‚ÑŒÑÑ Ð² поÑледующих приÑваиваниÑÑ…. ЕÑли задан параметр -f,"
+#~ msgstr ""
+#~ "могут изменÑÑ‚ÑŒÑÑ Ð² поÑледующих приÑваиваниÑÑ…. ЕÑли задан параметр -f,"
#~ msgid "then functions corresponding to the NAMEs are so marked. If no"
#~ msgstr "так помечаютÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ ÑоответÑтвующими ИМЕÐÐМИ. ЕÑли аргументы"
-#~ msgid "arguments are given, or if `-p' is given, a list of all readonly names"
+#~ msgid ""
+#~ "arguments are given, or if `-p' is given, a list of all readonly names"
#~ msgstr "не заданы, или еÑли задано `-p', выводитÑÑ ÑпиÑок имён только длÑ"
-#~ msgid "is printed. An argument of `-n' says to remove the readonly property"
+#~ msgid ""
+#~ "is printed. An argument of `-n' says to remove the readonly property"
#~ msgstr "чтениÑ. Ðргумент `-n' указывает ÑнÑÑ‚ÑŒ ÑвойÑтво `только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ'"
#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as"
@@ -7679,8 +7398,10 @@ msgstr ""
#~ msgid "an array variable. An argument of `--' disables further option"
#~ msgstr "как маÑÑив. Ðргумент `--' прекращает дальнейшую обработку"
-#~ msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is"
-#~ msgstr "Позиционные параметры Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ $N+1 переобозначаютÑÑ ÐºÐ°Ðº $1,... ЕÑли"
+#~ msgid ""
+#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is"
+#~ msgstr ""
+#~ "Позиционные параметры Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ $N+1 переобозначаютÑÑ ÐºÐ°Ðº $1,... ЕÑли"
#~ msgid "not given, it is assumed to be 1."
#~ msgstr "N не задано, оно предполагаетÑÑ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ 1."
@@ -7719,7 +7440,8 @@ msgstr ""
#~ msgstr " -b ФÐЙЛ ИÑтина, еÑли файл -- Ñпециальный блочный файл."
#~ msgid " -c FILE True if file is character special."
-#~ msgstr " -c ФÐЙл ИÑтина, еÑли файл -- Ñпециальный Ñимвольный файл."
+#~ msgstr ""
+#~ " -c ФÐЙл ИÑтина, еÑли файл -- Ñпециальный Ñимвольный файл."
#~ msgid " -d FILE True if file is a directory."
#~ msgstr " -d ФÐЙЛ ИÑтина, еÑли файл -- каталог."
@@ -7728,19 +7450,23 @@ msgstr ""
#~ msgstr " -e ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует."
#~ msgid " -f FILE True if file exists and is a regular file."
-#~ msgstr " -f ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом."
+#~ msgstr ""
+#~ " -f ФÐЙЛ ИÑтина, еÑли файл ÑущеÑтвует и ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом."
#~ msgid " -g FILE True if file is set-group-id."
#~ msgstr " -g ФÐЙЛ ИÑтина, еÑли у файла уÑтановлен атрибут SGID."
#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"."
-#~ msgstr " -h ФÐЙЛ ИÑтина, еÑли файл -- ÑимволичеÑÐºÐ°Ñ ÑÑылка. ИÑпользуйте \"-L\"."
+#~ msgstr ""
+#~ " -h ФÐЙЛ ИÑтина, еÑли файл -- ÑимволичеÑÐºÐ°Ñ ÑÑылка. ИÑпользуйте "
+#~ "\"-L\"."
#~ msgid " -L FILE True if file is a symbolic link."
#~ msgstr " -L ФÐЙЛ ИÑтина, еÑли файл -- ÑимволичеÑÐºÐ°Ñ ÑÑылка."
#~ msgid " -k FILE True if file has its \"sticky\" bit set."
-#~ msgstr " -k ФÐЙЛ ИÑтина, еÑли у файла уÑтанолвен \"бит привÑзчивоÑти\"."
+#~ msgstr ""
+#~ " -k ФÐЙЛ ИÑтина, еÑли у файла уÑтанолвен \"бит привÑзчивоÑти\"."
#~ msgid " -p FILE True if file is a named pipe."
#~ msgstr " -p ФÐЙЛ ИÑтина, еÑли файл -- именованный канал."
@@ -7755,7 +7481,9 @@ msgstr ""
#~ msgstr " -S ФÐЙЛ ИÑтина, еÑли файл -- Ñокет."
#~ msgid " -t FD True if FD is opened on a terminal."
-#~ msgstr " -t FD ИÑтина, еÑли файл Ñ Ð´ÐµÑкриптором FD ÑвÑзан Ñ Ñ‚ÐµÑ€Ð¼Ð¸Ð½Ð°Ð»Ð¾Ð¼."
+#~ msgstr ""
+#~ " -t FD ИÑтина, еÑли файл Ñ Ð´ÐµÑкриптором FD ÑвÑзан Ñ "
+#~ "терминалом."
#~ msgid " -u FILE True if the file is set-user-id."
#~ msgstr " -u ФÐЙЛ ИÑтина, еÑли у файла уÑтановлен атрибут SUID."
@@ -7769,11 +7497,14 @@ msgstr ""
#~ msgid " -O FILE True if the file is effectively owned by you."
#~ msgstr " -O ФÐЙЛ ИÑтина, еÑли вы -- Ñффективный владелец файла."
-#~ msgid " -G FILE True if the file is effectively owned by your group."
-#~ msgstr " -G ФÐЙЛ ИÑтина, еÑли ваша группа -- ÑÑ„Ñ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° файла."
+#~ msgid ""
+#~ " -G FILE True if the file is effectively owned by your group."
+#~ msgstr ""
+#~ " -G ФÐЙЛ ИÑтина, еÑли ваша группа -- ÑÑ„Ñ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð° файла."
#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to"
-#~ msgstr " ФÐЙЛ1 -nt ФÐЙЛ2 ИÑтина, еÑли файл1 более новый (по дате поÑледнего"
+#~ msgstr ""
+#~ " ФÐЙЛ1 -nt ФÐЙЛ2 ИÑтина, еÑли файл1 более новый (по дате поÑледнего"
#~ msgid " modification date) file2."
#~ msgstr " изменениÑ), чем файл2."
@@ -7811,14 +7542,20 @@ msgstr ""
#~ msgid " STRING1 < STRING2"
#~ msgstr " СТРОКÐ1 < СТРОКÐ2"
-#~ msgid " True if STRING1 sorts before STRING2 lexicographically"
-#~ msgstr " ИÑтина, еÑли СТРОКÐ1 лекÑикографичеÑки Ñтоит раньше СТРОКИ2"
+#~ msgid ""
+#~ " True if STRING1 sorts before STRING2 lexicographically"
+#~ msgstr ""
+#~ " ИÑтина, еÑли СТРОКÐ1 лекÑикографичеÑки Ñтоит раньше "
+#~ "СТРОКИ2"
#~ msgid " STRING1 > STRING2"
#~ msgstr " СТРОКÐ1 > СТРОКÐ2"
-#~ msgid " True if STRING1 sorts after STRING2 lexicographically"
-#~ msgstr " ИÑтина, еÑли СТРОКÐ1 лекÑикографичеÑки Ñтоит позже СТРОКИ2"
+#~ msgid ""
+#~ " True if STRING1 sorts after STRING2 lexicographically"
+#~ msgstr ""
+#~ " ИÑтина, еÑли СТРОКÐ1 лекÑикографичеÑки Ñтоит позже "
+#~ "СТРОКИ2"
#~ msgid "Other operators:"
#~ msgstr "Прочие операции:"
@@ -7839,9 +7576,11 @@ msgstr ""
#~ msgstr " -lt, -le, -gt или -ge."
#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
-#~ msgstr "Бинарные арифметичеÑкие операции возвращают иÑтину, еÑли ÐРГ1 равен,"
+#~ msgstr ""
+#~ "Бинарные арифметичеÑкие операции возвращают иÑтину, еÑли ÐРГ1 равен,"
-#~ msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
+#~ msgid ""
+#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
#~ msgstr "не равен, меньше, меньше или равен, больше или больше или равен"
#~ msgid "than ARG2."
@@ -7860,22 +7599,27 @@ msgstr ""
#~ msgstr "запущенных из оболочки."
#~ msgid "The command ARG is to be read and executed when the shell receives"
-#~ msgstr "Команда ÐРГ должна быть прочитана и выполнена при получении оболочкой"
+#~ msgstr ""
+#~ "Команда ÐРГ должна быть прочитана и выполнена при получении оболочкой"
#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are"
-#~ msgstr "указанного(Ñ‹Ñ…) Ñигнала(ов). ЕÑли ÐРГ не задан, вÑе указанные Ñигналы"
+#~ msgstr ""
+#~ "указанного(Ñ‹Ñ…) Ñигнала(ов). ЕÑли ÐРГ не задан, вÑе указанные Ñигналы"
#~ msgid "reset to their original values. If ARG is the null string each"
-#~ msgstr "обрабатываютÑÑ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ°Ð¼Ð¸ по умолчанию. ЕÑли ÐРГ -- пуÑÑ‚Ð°Ñ Ñтрока,"
+#~ msgstr ""
+#~ "обрабатываютÑÑ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ°Ð¼Ð¸ по умолчанию. ЕÑли ÐРГ -- пуÑÑ‚Ð°Ñ Ñтрока,"
#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
-#~ msgstr "вÑе указанные Ñигналы будут игнорироватьÑÑ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¾Ð¹ и вызываемыми ей"
+#~ msgstr ""
+#~ "вÑе указанные Ñигналы будут игнорироватьÑÑ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ¾Ð¹ и вызываемыми ей"
#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
#~ msgstr "командами. ЕÑли задан Ñигнал EXIT (0), команда ÐРГ выполнÑетÑÑ Ð¿Ñ€Ð¸"
#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every"
-#~ msgstr "выходе из оболочки, еÑли DEBUG, ÐРГ выполнÑетÑÑ Ð¿Ñ€Ð¸ выполнении каждой"
+#~ msgstr ""
+#~ "выходе из оболочки, еÑли DEBUG, ÐРГ выполнÑетÑÑ Ð¿Ñ€Ð¸ выполнении каждой"
#~ msgid "command. If ARG is `-p' then the trap commands associated with"
#~ msgstr "команды. ЕÑли ÐРГ -- `-p', выводÑÑ‚ÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹, ÑвÑзанные Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸"
@@ -7886,10 +7630,12 @@ msgstr ""
#~ msgid "only `-p' is given, trap prints the list of commands associated with"
#~ msgstr "trap выводит ÑпиÑок команд, ÑвÑзанных Ñо вÑеми Ñигналами. Сигнал"
-#~ msgid "each signal number. SIGNAL_SPEC is either a signal name in <signal.h>"
+#~ msgid ""
+#~ "each signal number. SIGNAL_SPEC is either a signal name in <signal.h>"
#~ msgstr "задаётÑÑ Ð»Ð¸Ð±Ð¾ Ñвоим именем в <signal.h>, либо номером. `trap -l'"
-#~ msgid "or a signal number. `trap -l' prints a list of signal names and their"
+#~ msgid ""
+#~ "or a signal number. `trap -l' prints a list of signal names and their"
#~ msgstr "выводит ÑпиÑок имён Ñигналов и ÑоответÑтвующих им номеров."
#~ msgid "corresponding numbers. Note that a signal can be sent to the shell"
@@ -7904,26 +7650,33 @@ msgstr ""
#~ msgid "If the -t option is used, returns a single word which is one of"
#~ msgstr "ЕÑли задан параметр -t, возвращает Ñлово -- `alias', `keyword',"
-#~ msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
+#~ msgid ""
+#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
#~ msgstr "`function', `builtin', `file' или `' -- еÑли, ÑоответÑтвенно, ИМЯ"
-#~ msgid "alias, shell reserved word, shell function, shell builtin, disk file,"
+#~ msgid ""
+#~ "alias, shell reserved word, shell function, shell builtin, disk file,"
#~ msgstr "ÑвлÑетÑÑ Ð¿Ñевдокомандой, зарезервированным Ñловом, функцией, или"
#~ msgid "or unfound, respectively."
#~ msgstr "вÑтроенной командой оболочки, диÑковым файлом или не найдено."
#~ msgid "If the -p flag is used, either returns the name of the disk file"
-#~ msgstr "При иÑпользовании флага -p либо возвращаетÑÑ Ð¸Ð¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñемого диÑкового файла,"
+#~ msgstr ""
+#~ "При иÑпользовании флага -p либо возвращаетÑÑ Ð¸Ð¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñемого диÑкового "
+#~ "файла,"
#~ msgid "that would be executed, or nothing if -t would not return `file'."
#~ msgstr "либо ничего, еÑли -t вернуло бы значение, отличное от `file'"
#~ msgid "If the -a flag is used, displays all of the places that contain an"
-#~ msgstr "При иÑпользовании флага -a выводитÑÑ Ñ€Ð°Ñположение вÑех иÑполнÑемых файлов"
+#~ msgstr ""
+#~ "При иÑпользовании флага -a выводитÑÑ Ñ€Ð°Ñположение вÑех иÑполнÑемых файлов"
-#~ msgid "executable named `file'. This includes aliases and functions, if and"
-#~ msgstr "Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем. ЕÑли одновременно не иÑпользуетÑÑ Ñ„Ð»Ð°Ð³ -p и только"
+#~ msgid ""
+#~ "executable named `file'. This includes aliases and functions, if and"
+#~ msgstr ""
+#~ "Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем. ЕÑли одновременно не иÑпользуетÑÑ Ñ„Ð»Ð°Ð³ -p и только"
#~ msgid "only if the -p flag is not also used."
#~ msgstr "тогда, выводÑÑ‚ÑÑ Ñ‚Ð°ÐºÐ¶Ðµ пÑевдокоманды и функции."
@@ -7983,16 +7736,19 @@ msgstr ""
#~ msgstr " -v\tразмер виртуальной памÑти"
#~ msgid "If LIMIT is given, it is the new value of the specified resource."
-#~ msgstr "ЕÑли задано ОГРÐÐИЧЕÐИЕ, оно задёт новое значение Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ реÑурÑа."
+#~ msgstr ""
+#~ "ЕÑли задано ОГРÐÐИЧЕÐИЕ, оно задёт новое значение Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ реÑурÑа."
#~ msgid "Otherwise, the current value of the specified resource is printed."
-#~ msgstr "Ð’ противном Ñлучае выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ реÑурÑа."
+#~ msgstr ""
+#~ "Ð’ противном Ñлучае выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ реÑурÑа."
#~ msgid "If no option is given, then -f is assumed. Values are in 1k"
#~ msgstr "ЕÑли параметры не заданы, предполагаетÑÑ, что задано -f. ЗначениÑ"
#~ msgid "increments, except for -t, which is in seconds, -p, which is in"
-#~ msgstr "измерÑÑŽÑ‚ÑÑ Ð² КБ, кроме -t, измерÑемого в Ñекундах, -p, единица измерениÑ"
+#~ msgstr ""
+#~ "измерÑÑŽÑ‚ÑÑ Ð² КБ, кроме -t, измерÑемого в Ñекундах, -p, единица измерениÑ"
#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of"
#~ msgstr "которого -- 512 байтов, и -u, задающего безразмерное чиÑло"
@@ -8000,38 +7756,52 @@ msgstr ""
#~ msgid "processes."
#~ msgstr "процеÑÑов."
-#~ msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if"
-#~ msgstr "УÑтанавливает маÑку ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¼ файлов в РЕЖИМ. ЕÑли опущен"
+#~ msgid ""
+#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if"
+#~ msgstr ""
+#~ "УÑтанавливает маÑку ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¼ файлов в РЕЖИМ. ЕÑли опущен"
-#~ msgid "`-S' is supplied, the current value of the mask is printed. The `-S'"
-#~ msgstr "РЕЖИМ или задан параметр -S выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение маÑки. Параметр"
+#~ msgid ""
+#~ "`-S' is supplied, the current value of the mask is printed. The `-S'"
+#~ msgstr ""
+#~ "РЕЖИМ или задан параметр -S выводитÑÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐµ значение маÑки. Параметр"
-#~ msgid "option makes the output symbolic; otherwise an octal number is output."
+#~ msgid ""
+#~ "option makes the output symbolic; otherwise an octal number is output."
#~ msgstr "-S делает вывод ÑимволичеÑким, в противном Ñлучае иÑпользуетÑÑ"
#~ msgid "If MODE begins with a digit, it is interpreted as an octal number,"
-#~ msgstr "воÑьмеричое чиÑло. ЕÑли РЕЖИм начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹, он интерпретируетÑÑ"
+#~ msgstr ""
+#~ "воÑьмеричое чиÑло. ЕÑли РЕЖИм начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹, он интерпретируетÑÑ"
-#~ msgid "otherwise it is a symbolic mode string like that accepted by chmod(1)."
-#~ msgstr "как воÑьмеричное чиÑло, в противном Ñлучае как Ñтрока, Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÐµÐ¼Ð°Ñ chmod(1)."
+#~ msgid ""
+#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)."
+#~ msgstr ""
+#~ "как воÑьмеричное чиÑло, в противном Ñлучае как Ñтрока, Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÐµÐ¼Ð°Ñ "
+#~ "chmod(1)."
-#~ msgid "Wait for the specified process and report its termination status. If"
-#~ msgstr "Подождать Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ процеÑÑа и Ñообщить код завершениÑ. ЕÑли"
+#~ msgid ""
+#~ "Wait for the specified process and report its termination status. If"
+#~ msgstr ""
+#~ "Подождать Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ процеÑÑа и Ñообщить код завершениÑ. ЕÑли"
#~ msgid "N is not given, all currently active child processes are waited for,"
-#~ msgstr "N не задано, ожидаетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ работы вÑех активных дочерних процеÑÑов"
+#~ msgstr ""
+#~ "N не задано, ожидаетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ работы вÑех активных дочерних процеÑÑов"
#~ msgid "and the return code is zero. N may be a process ID or a job"
#~ msgstr "и код возврата равен 0. N может быть идентификатором процеÑÑа"
#~ msgid "specification; if a job spec is given, all processes in the job's"
-#~ msgstr "или Ñпецификацией задачи, еÑли задана ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸, ожидаетÑÑ"
+#~ msgstr ""
+#~ "или Ñпецификацией задачи, еÑли задана ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð´Ð°Ñ‡Ð¸, ожидаетÑÑ"
#~ msgid "pipeline are waited for."
#~ msgstr "завершение работы вÑех процеÑÑов конвейера задачи."
#~ msgid "and the return code is zero. N is a process ID; if it is not given,"
-#~ msgstr "и код возврата равен 0. N -- идентификатор процеÑÑа, еÑли он не задан,"
+#~ msgstr ""
+#~ "и код возврата равен 0. N -- идентификатор процеÑÑа, еÑли он не задан,"
#~ msgid "all child processes of the shell are waited for."
#~ msgstr "ожидаетÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ðµ работы вÑех дочерних процеÑÑов оболочки."
@@ -8039,10 +7809,13 @@ msgstr ""
#~ msgid "The `for' loop executes a sequence of commands for each member in a"
#~ msgstr "Цикл `for' выполнÑет поÑледовательноÑÑ‚ÑŒ команд Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ члена"
-#~ msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is"
-#~ msgstr "ÑпиÑка. ЕÑли отÑутÑтвует `in СЛОВР...;', предполагаетÑÑ, что задано"
+#~ msgid ""
+#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is"
+#~ msgstr ""
+#~ "ÑпиÑка. ЕÑли отÑутÑтвует `in СЛОВР...;', предполагаетÑÑ, что задано"
-#~ msgid "assumed. For each element in WORDS, NAME is set to that element, and"
+#~ msgid ""
+#~ "assumed. For each element in WORDS, NAME is set to that element, and"
#~ msgstr "`in \"$@\"'. Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ из СЛОВ ИМЕÐИ приÑваиваетÑÑ ÐµÐ³Ð¾ значение"
#~ msgid "the COMMANDS are executed."
@@ -8052,13 +7825,15 @@ msgstr ""
#~ msgstr "СЛОВРразворачиваютÑÑ Ð¸ образуют ÑпиÑок Ñлов. Полученный ÑпиÑок"
#~ msgid "set of expanded words is printed on the standard error, each"
-#~ msgstr "выводитÑÑ Ð½Ð° Ñтандартный поток ошибок, каждому припиÑываетÑÑ Ñпереди"
+#~ msgstr ""
+#~ "выводитÑÑ Ð½Ð° Ñтандартный поток ошибок, каждому припиÑываетÑÑ Ñпереди"
#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'"
#~ msgstr "чиÑло. ЕÑли `in СЛОВÐ' отÑутÑтвует, предполагаетÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼"
#~ msgid "is assumed. The PS3 prompt is then displayed and a line read"
-#~ msgstr "`in \"$@\"'. Затем выводитÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ PS3 и Ñо Ñтандартного ввода"
+#~ msgstr ""
+#~ "`in \"$@\"'. Затем выводитÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ PS3 и Ñо Ñтандартного ввода"
#~ msgid "from the standard input. If the line consists of the number"
#~ msgstr "ÑчитываетÑÑ Ñтрока. ЕÑли Ñтрока ÑоÑтоит из чиÑла, ÑоответÑтвующего"
@@ -8079,34 +7854,47 @@ msgstr ""
#~ msgstr "ÑохранÑетÑÑ Ð² переменной REPLY. ПоÑле каждого выбора выполнÑÑŽÑ‚ÑÑ"
#~ msgid "until a break or return command is executed."
-#~ msgstr "КОМÐÐДЫ до тех пор, пока не будет выполнена команда break или return."
+#~ msgstr ""
+#~ "КОМÐÐДЫ до тех пор, пока не будет выполнена команда break или return."
#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The"
-#~ msgstr "ВыполнÑет КОМÐÐДЫ в завиÑимоÑти от того, какому ШÐБЛОÐУ ÑоответÑтвует"
+#~ msgstr ""
+#~ "ВыполнÑет КОМÐÐДЫ в завиÑимоÑти от того, какому ШÐБЛОÐУ ÑоответÑтвует"
#~ msgid "`|' is used to separate multiple patterns."
-#~ msgstr "СЛОВО. Ð”Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑкольких допуÑтимых шаблонов иÑпользуетÑÑ `|'."
+#~ msgstr ""
+#~ "СЛОВО. Ð”Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑкольких допуÑтимых шаблонов иÑпользуетÑÑ `|'."
-#~ msgid "The if COMMANDS are executed. If the exit status is zero, then the then"
-#~ msgstr "ВыполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ, заданные в if. ЕÑли код возврата нулевой, выполнÑÑŽÑ‚ÑÑ"
+#~ msgid ""
+#~ "The if COMMANDS are executed. If the exit status is zero, then the then"
+#~ msgstr ""
+#~ "ВыполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ, заданные в if. ЕÑли код возврата нулевой, выполнÑÑŽÑ‚ÑÑ"
-#~ msgid "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed"
+#~ msgid ""
+#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed"
#~ msgstr "КОМÐÐДЫ then, иначе по очереди выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ elif, и еÑли код"
-#~ msgid "in turn, and if the exit status is zero, the corresponding then COMMANDS"
-#~ msgstr "возврата нулевой, выполнÑÑŽÑ‚ÑÑ ÑоответÑтвующие КОМÐÐДЫ then и выполнение"
+#~ msgid ""
+#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS"
+#~ msgstr ""
+#~ "возврата нулевой, выполнÑÑŽÑ‚ÑÑ ÑоответÑтвующие КОМÐÐДЫ then и выполнение"
-#~ msgid "are executed and the if command completes. Otherwise, the else COMMANDS"
-#~ msgstr "команды if завершаетÑÑ. Ð’ противном Ñлучае выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ else,"
+#~ msgid ""
+#~ "are executed and the if command completes. Otherwise, the else COMMANDS"
+#~ msgstr ""
+#~ "команды if завершаетÑÑ. Ð’ противном Ñлучае выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ else,"
-#~ msgid "are executed, if present. The exit status is the exit status of the last"
+#~ msgid ""
+#~ "are executed, if present. The exit status is the exit status of the last"
#~ msgstr "еÑли они приÑутÑтвуют. Код возврата равен коду возврата поÑледней"
#~ msgid "command executed, or zero if no condition tested true."
-#~ msgstr "выполненной команды, либо нулю, еÑли ни одно уÑловие не было иÑтинным."
+#~ msgstr ""
+#~ "выполненной команды, либо нулю, еÑли ни одно уÑловие не было иÑтинным."
#~ msgid "Expand and execute COMMANDS as long as the final command in the"
-#~ msgstr "Разворачивает и выполнÑет КОМÐÐДЫ до тех пор, пока поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°"
+#~ msgstr ""
+#~ "Разворачивает и выполнÑет КОМÐÐДЫ до тех пор, пока поÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°"
#~ msgid "`while' COMMANDS has an exit status of zero."
#~ msgstr "Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ `while' не завершит работу Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ кодом возврата."
@@ -8130,12 +7918,15 @@ msgstr ""
#~ msgstr "перенаправление Ð´Ð»Ñ Ñ†ÐµÐ»Ð¾Ð³Ð¾ набора команд."
#~ msgid "This is similar to the `fg' command. Resume a stopped or background"
-#~ msgstr "Похоже на команду `fg'. Продолжает выполнение оÑтановленной или фоновой"
+#~ msgstr ""
+#~ "Похоже на команду `fg'. Продолжает выполнение оÑтановленной или фоновой"
#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify"
-#~ msgstr "задачи. ЕÑли заданы ЦИФРЫ, иÑпользÑетÑÑ Ð·Ð°Ð´Ð°Ñ‡Ð° Ñ Ñтим номером, а еÑли"
+#~ msgstr ""
+#~ "задачи. ЕÑли заданы ЦИФРЫ, иÑпользÑетÑÑ Ð·Ð°Ð´Ð°Ñ‡Ð° Ñ Ñтим номером, а еÑли"
-#~ msgid "WORD, then the job whose name begins with WORD is used. Following the"
+#~ msgid ""
+#~ "WORD, then the job whose name begins with WORD is used. Following the"
#~ msgstr "СЛОВО -- задача, Ð¸Ð¼Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹ начинаетÑÑ Ñ Ñтого Ñлова. Завершение"
#~ msgid "job specification with a `&' places the job in the background."
@@ -8150,7 +7941,8 @@ msgstr ""
#~ msgid "\t\twhen the argument to `cd' is not found in the current"
#~ msgstr "\t\tаргумент команды `cd', еÑли он не найден в текущем"
-#~ msgid "HISTFILE The name of the file where your command history is stored."
+#~ msgid ""
+#~ "HISTFILE The name of the file where your command history is stored."
#~ msgstr "HISTFILE Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°, где ÑохранÑетÑÑ Ð¸ÑÑ‚Ð¾Ñ€Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´."
#~ msgid "HISTFILESIZE The maximum number of lines this file can contain."
@@ -8165,11 +7957,15 @@ msgstr ""
#~ msgid "HOME The complete pathname to your login directory."
#~ msgstr "HOME Полный путь к домашнему каталогу."
-#~ msgid "HOSTTYPE The type of CPU this version of Bash is running under."
-#~ msgstr "HOSTTYPE Тип процеÑÑора, на котором работает Ñта верÑÐ¸Ñ Bash."
+#~ msgid ""
+#~ "HOSTTYPE The type of CPU this version of Bash is running under."
+#~ msgstr ""
+#~ "HOSTTYPE Тип процеÑÑора, на котором работает Ñта верÑÐ¸Ñ Bash."
-#~ msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF"
-#~ msgstr "IGNOREEOF УправлÑет дейÑтвиÑми, Ñовершаемыми оболочкой при вводе"
+#~ msgid ""
+#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF"
+#~ msgstr ""
+#~ "IGNOREEOF УправлÑет дейÑтвиÑми, Ñовершаемыми оболочкой при вводе"
#~ msgid "\t\tcharacter as the sole input. If set, then the value"
#~ msgstr "\t\tÑимвола конца файла. ЕÑли уÑтановлена, её значение -- чиÑло"
@@ -8181,10 +7977,12 @@ msgstr ""
#~ msgstr "\t\tв пуÑтой Ñтроке, поÑле чего оболочка завершит работу"
#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input."
-#~ msgstr "\t\t(по умолчанию 10). ЕÑли не уÑтановлена, EOF обозначает конец ввода."
+#~ msgstr ""
+#~ "\t\t(по умолчанию 10). ЕÑли не уÑтановлена, EOF обозначает конец ввода."
#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
-#~ msgstr "MAILCHECK\tКак чаÑто, в Ñекундах, Bash проверÑет наличие новой почты."
+#~ msgstr ""
+#~ "MAILCHECK\tКак чаÑто, в Ñекундах, Bash проверÑет наличие новой почты."
#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
#~ msgstr "MAILPATH\tРазделённый запÑтыми ÑпиÑок имён файлов, где Bash"
@@ -8217,7 +8015,8 @@ msgstr ""
#~ msgstr "TERM Ð˜Ð¼Ñ Ñ‚Ð¸Ð¿Ð° текущего терминала."
#~ msgid "auto_resume Non-null means a command word appearing on a line by"
-#~ msgstr "auto_resume Ðенулевые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñлов команд, вÑтречающиеÑÑ Ð² Ñтроке"
+#~ msgstr ""
+#~ "auto_resume Ðенулевые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñлов команд, вÑтречающиеÑÑ Ð² Ñтроке"
#~ msgid "\t\titself is first looked for in the list of currently"
#~ msgstr "\t\tотдельно, Ñначала ищутÑÑ Ð² ÑпиÑке оÑтановленных"
@@ -8243,8 +8042,10 @@ msgstr ""
#~ msgid "command_oriented_history"
#~ msgstr "command_oriented_history"
-#~ msgid " Non-null means to save multiple-line commands together on"
-#~ msgstr " Ðенулевое значение означает, что многоÑтрочные команды"
+#~ msgid ""
+#~ " Non-null means to save multiple-line commands together on"
+#~ msgstr ""
+#~ " Ðенулевое значение означает, что многоÑтрочные команды"
#~ msgid " a single history line."
#~ msgstr " будут ÑохранÑÑ‚ÑŒÑÑ Ð² одной Ñтроке иÑтории."
@@ -8342,7 +8143,8 @@ msgstr ""
#~ msgid "\tremoves the last directory, `popd -1' the next to last."
#~ msgstr "\tудалÑет поÑледний каталог, `popd -1' -- предпоÑледний."
-#~ msgid "-n\tsuppress the normal change of directory when removing directories"
+#~ msgid ""
+#~ "-n\tsuppress the normal change of directory when removing directories"
#~ msgstr "-n\tподавлÑет обычную Ñмену каталога при удалении каталогов из"
#~ msgid "\tfrom the stack, so only the stack is manipulated."
@@ -8352,15 +8154,19 @@ msgstr ""
#~ msgstr "Выводит ÑпиÑок запомненных на данный момент каталогов. Каталоги"
#~ msgid "find their way onto the list with the `pushd' command; you can get"
-#~ msgstr "попадают в ÑпиÑок при иÑпользовании команды `pushd', вы можете забрать"
+#~ msgstr ""
+#~ "попадают в ÑпиÑок при иÑпользовании команды `pushd', вы можете забрать"
#~ msgid "back up through the list with the `popd' command."
#~ msgstr "их из ÑпиÑка командой `popd'."
-#~ msgid "The -l flag specifies that `dirs' should not print shorthand versions"
-#~ msgstr "Флаг -l указывает, что `dirs' не должна выводит Ñокращённые варианты"
+#~ msgid ""
+#~ "The -l flag specifies that `dirs' should not print shorthand versions"
+#~ msgstr ""
+#~ "Флаг -l указывает, что `dirs' не должна выводит Ñокращённые варианты"
-#~ msgid "of directories which are relative to your home directory. This means"
+#~ msgid ""
+#~ "of directories which are relative to your home directory. This means"
#~ msgstr "каталогов, заданных отноÑительно домашнего. Это означает, что"
#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag"
@@ -8369,22 +8175,27 @@ msgstr ""
#~ msgid "causes `dirs' to print the directory stack with one entry per line,"
#~ msgstr "заÑтавлÑет `dirs' выводить каталоги по одному в Ñтроке, предварÑÑ"
-#~ msgid "prepending the directory name with its position in the stack. The -p"
-#~ msgstr "Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° номером его позиции в Ñтеке. Флаг -p делает то же Ñамое,"
+#~ msgid ""
+#~ "prepending the directory name with its position in the stack. The -p"
+#~ msgstr ""
+#~ "Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° номером его позиции в Ñтеке. Флаг -p делает то же Ñамое,"
#~ msgid "flag does the same thing, but the stack position is not prepended."
#~ msgstr "но не добавлÑÑŽÑ‚ÑÑ Ð½Ð¾Ð¼ÐµÑ€Ð° позиций. Флаг -c очищает Ñтек каталогов,"
-#~ msgid "The -c flag clears the directory stack by deleting all of the elements."
+#~ msgid ""
+#~ "The -c flag clears the directory stack by deleting all of the elements."
#~ msgstr "удалÑÑ Ð²Ñе его Ñлементы."
-#~ msgid "+N\tdisplays the Nth entry counting from the left of the list shown by"
+#~ msgid ""
+#~ "+N\tdisplays the Nth entry counting from the left of the list shown by"
#~ msgstr "+N\tвыводит N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð»ÐµÐ²Ð¾Ð¹ Ñтороны ÑпиÑка, выводимого"
#~ msgid "\tdirs when invoked without options, starting with zero."
#~ msgstr "\tdirs при вызове без параметров, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð½ÑƒÐ»Ñ."
-#~ msgid "-N\tdisplays the Nth entry counting from the right of the list shown by"
+#~ msgid ""
+#~ "-N\tdisplays the Nth entry counting from the right of the list shown by"
#~ msgstr "-N\tвыводит N-й каталог, ÑÑ‡Ð¸Ñ‚Ð°Ñ Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ Ñтороны ÑпиÑка, выводимого"
#~ msgid "Toggle the values of variables controlling optional behavior."
diff --git a/po/sk.gmo b/po/sk.gmo
index c6c89c52..22b4af34 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index f0b750fd..663505de 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2011-03-16 21:22+0100\n"
"Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
@@ -22,58 +22,53 @@ msgstr ""
msgid "bad array subscript"
msgstr "chybný index poľa"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: nie je možné previesť indexované pole na asociatívne"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: neplatný kÄ¾ÃºÄ asociatívneho poľa"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: nie je možné priradiť nenumerickému indexu"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: pri priraÄovaní asociatívnemu poľu je potrebné použiÅ¥ index"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nie je možné vytvoriť: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: nie je možné nájsť klávesovú mapu pre príkaz"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "chýba zatvárajúca „%c“ v %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: chýba oddeľovaÄ dvojbodka"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "„%s“: nie je možné zrušiť väzbu (unbind)"
@@ -93,7 +88,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: neplatný názov aliasu"
@@ -168,7 +163,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME nebola nastavená"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "príliš veľa argumentov"
@@ -196,7 +191,7 @@ msgstr "upozornenie: "
msgid "%s: usage: "
msgstr "%s: použitie "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: voľba vyžaduje argument"
@@ -211,7 +206,7 @@ msgstr "%s: vyžaduje sa numerický argument"
msgid "%s: not found"
msgstr "%s: nenájdené"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: neplatná voľba"
@@ -221,7 +216,7 @@ msgstr "%s: neplatná voľba"
msgid "%s: invalid option name"
msgstr "%s: neplatný názov voľby"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: nie je platný identifikátor"
@@ -234,7 +229,7 @@ msgstr "neplatné osmiÄkové Äíslo"
msgid "invalid hex number"
msgstr "neplatné Å¡estnástkové Äíslo"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "neplatné Äíslo"
@@ -248,88 +243,93 @@ msgstr "%s: neplatné urÄenie signálu"
msgid "`%s': not a pid or valid job spec"
msgstr "„%s“: nie je pid ani platný špecifikátor úlohy"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: premenná len na Äítanie"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: nie je možné zrušiť"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s je mimo rozsahu"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s mimo rozsahu"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: taká úloha neexistuje"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: riadenie úloh nedostupné"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "riadenie úloh nedostupné"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: obmedzené"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "obmedzené"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: nie je vstavaný príkaz (builtin) shellu"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "chyba zapisovania: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "chyba pri nastavovaní atribútov terminálu: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "chyba pri zisťovaní atribútov terminálu: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: chyba pri zisťovaní aktuálneho adresára: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: nejednoznaÄné urÄenie úlohy"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: nie je možné zruÅ¡iÅ¥: len na Äítanie %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: nie je možné zrušiť"
@@ -339,108 +339,108 @@ msgstr "%s: nie je možné zrušiť"
msgid "%s: invalid action name"
msgstr "%s: neplatný názov akcie"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: chýba Å¡pecifikácia dokonÄovania"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "upozornenie: voľba -F nemusí fungovaÅ¥ tak ako oÄakávate"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "upozornenie: voľba -C nemusí fungovaÅ¥ tak ako oÄakávate"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "momentálne sa nevykonáva funkcia doplňovania"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "je možné použiť iba vo funkcii"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "nie je možné použiť „-f“ pre tvorbu funkcií"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funkcia iba na Äítanie"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%s“: neplatný názov aliasu"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "nie je možné použiť „-f“ pre tvorbu funkcií"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: funkcia iba na Äítanie"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: nie je možné takto robiť deštrukciu premenných polí"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: nie je možné previesť asociatívne pole na indexované"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynamické naÄítavanie nie je dostupné"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "nie je možné otvoriť zdieľaný objekt %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "nemožem nájsť %s v zdieľanom objekte %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: nie je dynamicky naÄítané"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nie je dynamicky naÄítané"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nie je možné zmazať: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: je adresár"
@@ -455,7 +455,7 @@ msgstr "%s: nie je obyÄajný súbor"
msgid "%s: file is too large"
msgstr "%s: súbor je príliš veľký"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: nie je možné vykonať binárny súbor"
@@ -552,12 +552,12 @@ msgstr ""
"pre „%s“ neboli nájdené zodpovedajúce témy pomocníka.\n"
"Skúste „help help“ alebo „man -k %s“ alebo „info %s“."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: nie je možné otvoriť: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -578,21 +578,21 @@ msgstr ""
"HviezdiÄka (*) vedľa názvu znamená, že príkaz je vypnutý.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "nie je možné použiť viac ako jednu z volieb -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "poloha histórie"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: neplatný názov voľby"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: rozšírenie histórie zlyhalo"
@@ -615,78 +615,78 @@ msgstr "%s: argumenty musia byť ID procesov alebo úloh"
msgid "Unknown error"
msgstr "Neznáma chyba"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "oÄakával sa výraz"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: nie je indexované pole"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: neplatná Å¡pecifikácia popisovaÄa súboru"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: neplatný popisovaÄ súboru: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: neplatný poÄet riadkov"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: neplatný zaÄiatok poľa"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: neplatné kvantum spätného volania"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "názov prázdnej premennej poľa"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "vyžaduje sa podpora premennej poľa"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: chýba formátovací znak"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: neplatná Å¡pecifikácia formátu Äasu"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: neplatný formátovací znak"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "upozornenie: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "chýba hexadecimálna Äíslica v \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "chýba Äíslica Unicode pre \\%c"
@@ -837,12 +837,12 @@ msgstr ""
" \n"
" Zásobník adresárov môžete zobraziť vstavaným príkazom „dirs“."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: neplatná špecifikácia expirácie (timeout)"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "chyba pri Äítaní: %d: %s"
@@ -857,7 +857,7 @@ msgstr ""
msgid "cannot simultaneously unset a function and a variable"
msgstr "nie je možné zároveň zrušiť funkciu a premennú"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: nie je premenná poľa"
@@ -876,11 +876,11 @@ msgstr "%s: nie je možné zrušiť"
msgid "shift count"
msgstr "posun o"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "nie je možné zároveň nastaviť aj zrušiť voľby shellu"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: neplatný názov voľby shellu"
@@ -947,16 +947,16 @@ msgstr "%s: neplatný argument limitu"
msgid "`%c': bad command"
msgstr "„%c“: chybný príkaz"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nie je možné zistiť limit: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "obmedzenie"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nie je možné zmeniť limit: %s"
@@ -975,7 +975,7 @@ msgstr "„%c“: neplatný operátor symbolického režimu"
msgid "`%c': invalid symbolic mode character"
msgstr "„%c“: neplatný znak symbolického režimu"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " riadok "
@@ -995,96 +995,106 @@ msgstr "Ruší sa..."
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "upozornenie: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "chyba neznámeho príkazu"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "chybný typ príkazu"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "chybný konektor"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "chybný skok"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: neviazaná premenná"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aÄas vyprÅ¡al pri Äakaní na vstup: automatické odhlásenie\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "nie je možné presmerovať štandardný vstup z /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "chyba rúry"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: obmedzené: nie jemožné uviesť „/“ v názvoch príkazov"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: príkaz nenájdený"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: nie je možné vykonať binárny súbor"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: chybný interpreter"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: nie je možné vykonať binárny súbor"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s je vstavaný príkaz (builtin) shellu\n"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nie je možné duplikovať fd %d na fd %d"
@@ -1097,70 +1107,70 @@ msgstr "bola prekroÄená úroveň rekurzie výrazu"
msgid "recursion stack underflow"
msgstr "podteÄenie zásobníka rekurzie"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "chyba syntaxe vo výraze"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "pokus o priradenie mimo premennej"
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "chyba syntaxe vo výraze"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "delenie nulou"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "chyba: chybný expassign token"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "pre podmienený výraz sa oÄakáva „:“"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "exponent menší ako 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "po pre-inkrementácii alebo pre-dekrementácii sa oÄakáva identifikátor"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "chýba „)“"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "chyba syntaxe: oÄakáva sa operand"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "chyba syntaxe: neplatný aritmetický operátor"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (chybný token je „%sâ€)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "neplatný aritmetický základ"
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: neplatný poÄet riadkov"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "hodnota je ako základ príliš veľká"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: chyba výrazu\n"
@@ -1169,7 +1179,7 @@ msgstr "%s: chyba výrazu\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: nie je možné pristupovaÅ¥ k rodiÄovským adresárom"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nie j emožné resetovať nodelay režim fd %d"
@@ -1188,168 +1198,168 @@ msgstr "save_bash_input: bufer už existuje pre nový fd %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp rúra"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "pid %d získaný pomocou fork sa vyskytuje v bežiacej úlohe %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) je stále oznaÄený ako živý"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: taký pid neexistuje"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signál %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Hotovo"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Zastavené"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Zastavené(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Beží"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Hotovo(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "UkonÄenie %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Neznámy stav"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(bol uložený výpis pamäte) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid detského procesu (%ld to %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld nie je dieťa tohto shellu"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Neexistuje záznam o procese %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: úloha %d je zastavená"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: taká úloha neexistuje"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: úloha skonÄila"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: úloha %d už je v pozadí"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: zapína sa WNOHANG aby sme sa vyhli neurÄitému blokovaniu"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: riadok %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (bol uložený výpis pamäte)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd teraz: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: funkcia getpgrp zlyhala"
-#: jobs.c:4447
+#: jobs.c:4434
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: riadkový systém"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: riadkový systém"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nie je možné nastaviť skupinu procesu terminálu (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "v tomto shelli nie je riadenie úloh"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: zlyhal predpoklad: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1358,49 +1368,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: zbabraný predpoklad\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "neznámy"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: blok na zozname voľných zaprataný"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: zavolaný s argumentom už uvoľneného bloku"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: zavolaný s argumentom nealokovaného bloku"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: bolo detekované podteÄenie; mh_nbytes mimo rozsahu"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: bolo detekované podteÄenie; mh_nbytes mimo rozsahu"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: veľkosti zaÄiatoÄného a koneÄného bloku (chunk) sa líšia"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: zavolaný s argumentom nealokovaného bloku"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: bolo detekované podteÄenie; mh_nbytes mimo rozsahu"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: bolo detekované podteÄenie; mh_nbytes mimo rozsahu"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: veľkosti zaÄiatoÄného a koneÄného bloku (chunk) sa líšia"
@@ -1442,22 +1452,22 @@ msgstr "%s: chybná špecifikácia sieťovej cesty"
msgid "network operations not supported"
msgstr "sieťové operácie nie sú podporované"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: nemožno zmeniť locale (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: nemožno zmeniť locale (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: nie je možné zmeniť locale (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: nie je možné zmeniť locale (%s): %s"
@@ -1475,139 +1485,139 @@ msgstr "Máte novú poštu v súbore $_"
msgid "The mail in %s has been read\n"
msgstr "PoÅ¡ta v súbore %s bola preÄítaná\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "chyba syntaxe: vyžaduje sa aritmetický výraz"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "chyba syntaxe: neoÄakávaná „;“"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "chyba syntaxe: „((%s))“"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: chybný typ inštrukcie %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
"here-document na riadku %d oddelený znakom konca riadku (oÄakávalo sa „%sâ€)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: inštrukcia presmerovania „%d“ mimo rozsahu"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "neoÄakávaný koniec súboru poÄas hľadania zodpovedajúceho „%c“"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "neoÄakávaný koniec súboru poÄas hľadania „]]“"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "chyba syntaxe v podmieneÄnom príkaze: neoÄakávaný token „%s“"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "chyba syntaxe v podmieneÄnom príkaze"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "neoÄakávaný token „%s“, oÄakávalo sa `)'"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "oÄakávalo sa `)'"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "neoÄakávaný argument „%s“ podmieneÄného unárneho operátora"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "neoÄakávaný argument podmieneÄného unárneho operátora"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "neoÄakávaný token „%s“, oÄakáva sa podmieneÄný binárny operátor"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "oÄakáva sa podmieneÄný binárny operátor"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "neoÄakávaný argument „%s“ v podmieneÄnom binárnom operátore"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "neoÄakávaný argument v podmieneÄnom binárnom operátore"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "neoÄakávaný token „%c“ v podmieneÄnom príkaze"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "neoÄakávaný token „%s“ v podmieneÄnom príkaze"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "neoÄakávaný token %d v podmieneÄnom príkaze"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "chyba syntaxe neÄaleko neoÄakávaného tokenu „%s“"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "chyba syntaxe neÄaleko „%s“"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "chyba syntaxe: neoÄakávaný koniec súboru"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "chyba syntaxe"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Na opustenie shellu použite „%s“.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "neoÄakávaný koniec súboru poÄas hľadania zodpovedajúceho „)“"
@@ -1645,94 +1655,94 @@ msgstr "xtrace_set: ukazovateľ súboru je NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c“: neplatný formátovací znak"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "popisovaÄ súboru mimo rozsahu"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: nejednoznaÄné presmerovanie"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: nie je možné prepísať existujúci súbor"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ombedzené: nie je možné presmerovať výstup"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "nie je možné vytvoriť odkladací súbor pre here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: nie je možné priradiÅ¥ popisovaÄ súboru premennej"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "chyba presmerovania: nie je možné duplikovať fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "nenašiel sa /tmp, vytvorte ho prosím!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp musí byť platný názov adresára"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: neplatná voľba"
-#: shell.c:1319
+#: shell.c:1343
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "nie j emožné resetovať nodelay režim fd %d"
-#: shell.c:1330
+#: shell.c:1354
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "nie j emožné resetovať nodelay režim fd %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: je adresár"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Nemám meno!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, verzia %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1741,313 +1751,313 @@ msgstr ""
"Použitie:\t%s [GNU dlhá voľba] [voľba] ...\n"
"\t%s [GNU dlhá voľba] [voľba] súbor-skriptu ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU dlhé voľby:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Voľby shellu:\n"
-#: shell.c:2043
+#: shell.c:2069
#, fuzzy
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD alebo -c príkaz alebo -O krátka_voľba\t\t(iba vyvolanie)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s alebo -o voľba\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Napísaním „%s -c \"help set\"“ získate viac informácií o voľbách shellu.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Napísaním „%s -c help“ získate viac informácií o vstavaných príkazoch "
"(builtins) shellu.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: neplatná operácia"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Neplatný signál"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Zavesenie"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Prerušenie"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "UkonÄenie"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Neplatná inštrukcia"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "inštrukcia ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "inštrukcia EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Výnimka pri operácii s plávajúcou desatinnou Äiarkou"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Zabitý"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "chyba zbernice"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Chyba segmentácie"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Chybné systémové volanie"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Prerušená rúra"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Budík"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "UkonÄené"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Naliehavý stav V/V"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Zastavené (signál)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "PokraÄovaÅ¥"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Zastavenie alebo zabitie detského procesu"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Zastavené (vstup z tty)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Zastavené (výstup na tty)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "V/V pripravený"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "obmedzenie CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "obmedzenie súborov"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Budík (virtuálny)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Budík (profil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Okno sa zmenilo"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Zámok záznamu"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Používateľský signál 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Používateľský signál 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Äaká sa na vstupné údaje HFT"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "nastane výpadok napájania"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "nastane havária systému"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "presunúť proces na iný CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "chyba programovania"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "udelený režim monitoru HFT"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "stiahnutý režim monitoru HFT"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "dokonÄila sa zvuková sekvencia HFT"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Žiadosť o informácie"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Neznámy signál #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "chybná substitúcia: chýba „%s“ v %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: nie je možné priradiť zoznam položke poľa"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "nie je možné vytvoriť rúru pre substitúciu procesov"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "nie je možné vytvoriť potomka pre substitúciu procesov"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na Äítanie"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "nie je možné otvoriť pomenovanú rúru %s na zápis"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "nie je možné duplikovať pomenovanú rúru %s ako fd %d"
-#: subst.c:6213
+#: subst.c:6370
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`â€"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "nie je možné vytvoriť rúru pre substitúciu príkazov"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "nie je možné vytvoriť potomka pre substitúciu príkazov"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: nie je možné duplikovať rúru ako fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, fuzzy, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: neplatný poÄet riadkov"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "„%s“: neplatný názov aliasu"
-#: subst.c:7256
+#: subst.c:7478
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter je null alebo nenastavený"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter je null alebo nenastavený"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: výraz podreťazca < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: chybná substitúcia"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: nie je možné vykonať priradenie takýmto spôsobom"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2055,12 +2065,12 @@ msgstr ""
"budúce verzie shellu budú vynucovať vyhodnocovanie ako aritmetickú "
"substitúciu"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`â€"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "bez zhody: %s"
@@ -2083,21 +2093,21 @@ msgstr "oÄakávala sa „)“"
msgid "`)' expected, found %s"
msgstr "oÄakávala sa „)“, bolo nájdené %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: oÄakával sa binárny operátor"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: oÄakával sa unárny operátor"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "chýba „]“"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "chyba syntaxe: neoÄakávaná „;“"
@@ -2106,101 +2116,106 @@ msgstr "chyba syntaxe: neoÄakávaná „;“"
msgid "invalid signal number"
msgstr "neplatné Äíslo signálu"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: chybná hodnota v trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
"run_pending_traps: obsluha signálu je SIG_DFL, znovu posielam %d (%s) sebe"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: chybný signál %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "chyba pri importe definície funkcie „%s“"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "úroveň shellu (%d) je príliš vysoká, nastavujem späť na 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: v aktuálnom rozsahu sa nenachádza kontext funkcie"
-#: variables.c:2693
+#: variables.c:2661
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: nie je možné priradiÅ¥ popisovaÄ súboru premennej"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: v aktuálnom rozsahu sa nenachádza kontext funkcie"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s má null exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "neplatný znak %d v exportstr %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "žiadne „=“ v exportstr %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: hlaviÄka shell_variables nie je kontext funkcie"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: chýba kontext global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: hlaviÄka shell_variables nie je doÄasný rozsah prostredia"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nemožno otvoriť ako SÚBOR"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru"
-#: variables.c:6437
+#: variables.c:6450
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s je mimo rozsahu"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
@@ -2297,12 +2312,16 @@ msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgilrtux] [-p] [názov[=hodnota] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..."
#: builtins.c:82
@@ -2406,7 +2425,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o názov_voľby] [arg ...]"
#: builtins.c:144
@@ -2456,7 +2476,7 @@ msgstr "type [-afptP] názov [názov ...]"
#: builtins.c:171
#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHacdefilmnpqrstuvx] [obmedzenie]"
#: builtins.c:174
@@ -2502,11 +2522,13 @@ msgstr ""
"PRÃKAZY; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while PRÃKAZY; do PRÃKAZY; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until PRÃKAZY; do PRÃKAZY; done"
#: builtins.c:200
@@ -3891,7 +3913,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3974,7 +3998,7 @@ msgstr ""
" Vráti 0 ak sa nenarazí pri Äítaní nakoniec súboru, nevyprší Äas na\n"
" Äítanie a ako argument -u nebol je zadaný neplatný popisovaÄ."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3995,7 +4019,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti N alebo zlyhá ak shell nevykonáva funkciu Äi skript."
-#: builtins.c:1054
+#: builtins.c:1055
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4167,7 +4191,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba."
-#: builtins.c:1139
+#: builtins.c:1140
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4207,7 +4231,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je NÃZOV iba na Äítanie a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4242,7 +4266,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je NÃZOV neplatný a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1180
+#: builtins.c:1181
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4282,7 +4306,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je NÃZOV neplatný a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4300,7 +4324,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak sa nestalo, že je N záporné alebo väÄÅ¡ie ako $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4324,7 +4348,7 @@ msgstr ""
" Vráti návratovú hodnotu posledného príkazu v SÚBORe; zlyhá ak nie je\n"
" možné SÚBOR naÄítaÅ¥."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4348,7 +4372,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak sa nestalo, že je vypnuté riadenie úloh a nevyskytla sa chyba."
-#: builtins.c:1261
+#: builtins.c:1262
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4510,7 +4534,7 @@ msgstr ""
" Vráti 0 ak VÃR vyhodnotí ako pravdivý; zlyhá ako sa VÃR vyhodnotí\n"
" ako nepravdivý alebo je zadaný neplatný argument."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4522,7 +4546,7 @@ msgstr ""
" Toto je synonymum vsatavanej funkcie „test“, ale posledný\n"
" argument musí byť literál „]“, ktorý uzatvára otvárajúcu „[“."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4541,7 +4565,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vždy vráti 0."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4621,7 +4645,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je SIGSPEC neplatný a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1400
+#: builtins.c:1401
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4677,7 +4701,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak boli nájdené vÅ¡etky NÃZVY; zlyhá ak nie."
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4768,7 +4792,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4802,7 +4826,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je REŽIM neplatný a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4846,7 +4870,7 @@ msgstr ""
" Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná\n"
" neplatná voľba."
-#: builtins.c:1533
+#: builtins.c:1534
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4872,7 +4896,7 @@ msgstr ""
" Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná neplatná\n"
" voľba."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4894,7 +4918,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4924,7 +4948,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4959,7 +4983,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4987,7 +5011,7 @@ msgstr ""
" Návratová hodnota:\n"
" Návratová hodnota je návratová hodnota RÚRY."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5005,7 +5029,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5042,12 +5066,14 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5060,12 +5086,14 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5078,7 +5106,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1671
+#: builtins.c:1672
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5101,7 +5129,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu PRÃKAZu."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5126,7 +5154,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak sa nestalo, že je NÃZOV iba na Äítanie."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5144,7 +5172,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5168,7 +5196,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu obnovenej úlohy."
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
@@ -5187,7 +5215,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 1 ak sa VÃRAZ vyhodnotí na 0; inak vráti 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5235,7 +5263,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 alebo 1 v závislosti na hodnote VÃRAZu."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5339,7 +5367,7 @@ msgstr ""
" HISTIGNORE\tBodkoÄiarkami oddelený zoznam vzoriek, ktoré\n"
" \t\tsa používajú na rozhodovanie, Äi sa príkaz uloží do histórie.\n"
-#: builtins.c:1821
+#: builtins.c:1822
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5396,7 +5424,7 @@ msgstr ""
" Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n"
" chyba pri zmene adresára."
-#: builtins.c:1855
+#: builtins.c:1856
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5447,7 +5475,7 @@ msgstr ""
" Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n"
" chyba pri zmene adresára."
-#: builtins.c:1885
+#: builtins.c:1886
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5499,7 +5527,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa chyba."
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5537,7 +5565,7 @@ msgstr ""
" Vráti 0 ak je OPTNAME zapnuté; zlyhá ak bola zadaná\n"
" neplatná voľba alebo OPTNAME je vypnuté."
-#: builtins.c:1937
+#: builtins.c:1938
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5561,6 +5589,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5602,7 +5632,7 @@ msgstr ""
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba pri\n"
" zápise Äi priradení."
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5655,7 +5685,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5675,7 +5705,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
-#: builtins.c:2016
+#: builtins.c:2019
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5733,7 +5763,7 @@ msgstr ""
" Vráti 0 ak nebola zadaná neplatná voľba a NÃZOV nemá definovanú\n"
" špecifikáciu dopĺňania."
-#: builtins.c:2047
+#: builtins.c:2050
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5808,7 +5838,7 @@ msgstr ""
" Vráti 0 ak nebola zadaná neplatná voľba a POLE nie je len na Äítanie a\n"
" nie je to indexované pole."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5818,6 +5848,10 @@ msgstr ""
" \n"
" Synonymum k „mapfile“."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: neplatný kÄ¾ÃºÄ asociatívneho poľa"
+
#, fuzzy
#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
diff --git a/po/sl.gmo b/po/sl.gmo
index db02245a..2615432b 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index d1ad4135..107fcea6 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2013-03-09 20:21+0100\n"
"Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
@@ -25,58 +25,53 @@ msgstr ""
msgid "bad array subscript"
msgstr "slab podpis polja"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: ni mogoÄe pretvoriti zabeleženega polja v povezano polje"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: neveljaven kljuÄ povezanega polja"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: ni mogoÄe dodeliti v ne-Å¡tevilÄno kazalo"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: treba je uporabiti podpis pri dodeljevanju povezanega polja"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: ni mogoÄe ustvariti: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: ni mogoÄe najti tipkovne razvrstitve za ukaz"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: prvi znak brez presledka ni `\"'"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "brez zakljuÄka `%c' v %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: manjka loÄilnik dvopiÄja"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "`%s': ni mogoÄe odvezati"
@@ -96,7 +91,7 @@ msgstr ""
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': neveljaven vzdevek"
@@ -172,7 +167,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME ni nastavljen"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "preveÄ argumentov"
@@ -200,7 +195,7 @@ msgstr "opozorilo: "
msgid "%s: usage: "
msgstr "%s: uporaba: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: možnost zahteva argument"
@@ -215,7 +210,7 @@ msgstr "%s: zahtevan je Å¡tevni argument"
msgid "%s: not found"
msgstr "%s: ni mogoÄe najti"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: neveljavna možnost"
@@ -225,7 +220,7 @@ msgstr "%s: neveljavna možnost"
msgid "%s: invalid option name"
msgstr "%s: neveljavno ime možnosti"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': neveljavno doloÄilo"
@@ -238,7 +233,7 @@ msgstr "neveljavno osmiško število"
msgid "invalid hex number"
msgstr "neveljavno šestnajstiško število"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "neveljavno Å¡tevilo"
@@ -252,88 +247,93 @@ msgstr "%s: neveljavno doloÄilo signala"
msgid "`%s': not a pid or valid job spec"
msgstr "`%s': ni doloÄilo opravila ali neveljavno doloÄilo posla"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: spremenljivka le za branje"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: ni mogoÄe ponastaviti"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s izven dosega"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s izven dosega"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: ni takšnega posla"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: ni nadzora posla"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "ni nadzora posla"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: omejeno"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "omejeno"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: ni vgrajena lupina"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "napaka med pisanjem: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "napaka med nastavljanjem atributov terminala: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "napaka med pridobivanjem atributov terminala: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: napaka med pridobivanjem trenutne mape: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: dvoumno doloÄilo posla"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr ""
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: ni mogoÄe ponastaviti: samo za branje %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: ni mogoÄe ponastaviti"
@@ -343,108 +343,108 @@ msgstr "%s: ni mogoÄe ponastaviti"
msgid "%s: invalid action name"
msgstr "%s: neveljavno ime dejanja"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ni doloÄila dopolnjevanja"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "Opozorilo: možnost -F morda ne bo delovala po priÄakovanjih"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "Opozorilo: možnost -C morda ne bo delovala po priÄakovanjih"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "trenutno se ne izvaja funkcija dopolnjevanja"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "se lahko uporabi samo v funkciji"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "ni mogoÄe uporabiti `-f' za ustvarjanje funkcij"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: funkcija samo za branje"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': neveljaven vzdevek"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "ni mogoÄe uporabiti `-f' za ustvarjanje funkcij"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: funkcija samo za branje"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr ""
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: na ta naÄin ni mogoÄe uniÄiti spremenljivk polja"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: ni mogoÄe pretvoriti povezanega polja v zabeleženo polje"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr ""
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dinamiÄno nalaganje ni na voljo"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "ni mogoÄe odpreti predmeta v souporabi %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "ni mogoÄe najti %s v predmetu v souporabi %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: ni dinamiÄno naloženo"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: ni dinamiÄno naloženo"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: ni mogoÄe izbrisati: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: je mapa"
@@ -459,7 +459,7 @@ msgstr "%s: ni obiÄajna datoteka"
msgid "%s: file is too large"
msgstr "%s: datoteka je prevelika"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: ni mogoÄe izvesti binarne datoteke"
@@ -557,12 +557,12 @@ msgstr ""
"nobena tema pomoÄi se ne ujema s `%s'. Poskusite `help help' ali `man -k "
"%s' ali `info %s'."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: ni mogoÄe odpreti: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -583,21 +583,21 @@ msgstr ""
"Zvezdica (*) poleg imena pomeni, da je ukaz onemogoÄen.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "ni mogoÄe uporabiti veÄ kot eno od -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "položaj zgodovine"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: neveljavno ime možnosti"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: razširitev zgodovine je spodletela"
@@ -620,78 +620,78 @@ msgstr "%s: argumenti morajo biti doloÄila opravila ali posla"
msgid "Unknown error"
msgstr "Neznana napaka"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "izraz je bil priÄakovan"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: ni zabeleženo polje"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: neveljavno doloÄilo opisnika datoteke"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: neveljaven opisnik datoteke: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: neveljavno Å¡tetje vrstic"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: neveljaven izvor polja"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: neveljaven del povratnega klica"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "prazno ime spremenljivke polja"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "potrebna podpora spremenljivke polja"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': manjka znak oblike"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': neveljavno doloÄilo vrste Äasa"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': neveljaven znak oblike"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "opozorilo: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "manjka šestnajstiška števka za \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "manjka Å¡tevka s podporo unicode za \\%c"
@@ -842,12 +842,12 @@ msgstr ""
" \n"
" Ukaz lupine `dirs' prikaže sklad map."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: neveljavno doloÄilo Äasovne omejitve"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "napaka med branjem: %d: %s"
@@ -860,7 +860,7 @@ msgstr "`return' lahko vrne samo iz funkcije ali skripte z izvorno kodo"
msgid "cannot simultaneously unset a function and a variable"
msgstr "ni mogoÄe ponastaviti funkcije in spremenljivke hkrati"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ni spremenljivka polja"
@@ -879,11 +879,11 @@ msgstr "%s: ni mogoÄe ponastaviti"
msgid "shift count"
msgstr "Å¡tetje premika"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "ni mogoÄe nastaviti in ponastaviti možnosti lupine hkrati"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: neveljavno ime možnosti lupine"
@@ -950,16 +950,16 @@ msgstr "%s: neveljaven argument omejitve"
msgid "`%c': bad command"
msgstr "`%c': slab ukaz"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: ni mogoÄe dobiti omejitve: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "omejitev"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: ni mogoÄe spremeniti omejitve: %s"
@@ -978,7 +978,7 @@ msgstr "`%c': neveljaven operator simbolnega naÄina"
msgid "`%c': invalid symbolic mode character"
msgstr "`%c': neveljaven znak simbolnega naÄina"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " vrstica "
@@ -998,96 +998,106 @@ msgstr "Prekinjanje ..."
msgid "INFORM: "
msgstr ""
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "opozorilo: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "neznana napaka ukaza"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "slaba vrsta ukaza"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "slab povezovalnik"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "slab skok"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: nedoloÄena spremenljivka"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\apotekla je Äasovna omejitev med Äakanjem na vnos: samodejna odjava\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "ni mogoÄe preusmeriti obiÄajnega vnosa iz /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': neveljaven znak oblike"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "napaka cevi"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: omejeno: ni mogoÄe doloÄiti `/' v imenih ukaza"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: ukaza ni mogoÄe najti"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: ni mogoÄe izvesti binarne datoteke"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: slab tolmaÄ"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: ni mogoÄe izvesti binarne datoteke"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s je vgrajena lupina\n"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "ni mogoÄe podvajati fd %d v fd %d"
@@ -1100,70 +1110,70 @@ msgstr "stopnja rekurzivnosti izraza presežena"
msgid "recursion stack underflow"
msgstr "prekoraÄitev spodnje meje sklada rekurzivnosti"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "skladenjska napaka v izrazu"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "poskus dodelitve ne-spremenljivki"
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "skladenjska napaka v izrazu"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "delitev z 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "hroÅ¡Ä: slab žeton expassign"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "`:' priÄakovano za pogojni izraz"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "eksponent je manjši kot 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "po predhodnem veÄanju ali manjÅ¡anju je priÄakovano doloÄilo"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "manjka `)'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "skladenjska napaka: priÄakovan operand"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "skladenjska napaka: neveljaven aritmetiÄni operand"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (žeton napake je \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "neveljavna aritmetiÄna zbirka"
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: neveljavno Å¡tetje vrstic"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "vrednost je prevelika za zbirko"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: napaka izraza\n"
@@ -1172,7 +1182,7 @@ msgstr "%s: napaka izraza\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: ni mogoÄe dostopati do nadrejenih map"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d"
@@ -1191,168 +1201,168 @@ msgstr "save_bash_input: medpomnilnik že obstaja za nov fd %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: cev pgrp"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "razvejen id opravila %d se pojavi v izvajajoÄem se poslu %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "brisanje ustavljenega posla %d s skupino opravila %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: id opravila %5ld (%s) je oznaÄen kot Å¡e živ"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ni takÅ¡nega doloÄila opravila"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "KonÄano"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Zaustavljeno"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Zaustavljeno(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Se izvaja"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "KonÄano(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "KonÄaj %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Neznano stanje"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(izpis jedra) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "podrejeno opravilo setpgid (%ld v %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: opravilo z id %ld ni podrejeno opravilo te lupine"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: ni zapisov o opravilu %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: posel %d je zaustavljen"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: ni takšnega posla"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: posel je uniÄen"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: posel %d se že izvaja v ozadju"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: vklop WNOHANG za prepreÄitev nedoloÄenosti bloka"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: vrstica %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (izpis jedra)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd zdaj: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp je spodletel"
-#: jobs.c:4447
+#: jobs.c:4434
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: vrstiÄna disciplina"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: vrstiÄna disciplina"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "ni mogoÄe nastaviti skupine opravil terminala (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "brez nadzora posla v tej lupini"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: spodletela trditev: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1361,51 +1371,51 @@ msgstr ""
"\r\n"
"malloc: %s:%d: trditev je bila slabo izpeljana\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "neznano"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: vsebina bloka na prostem seznamu je bila prepisana"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: poklican z že sproÅ¡Äenim argumentom bloka"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: klic z nedodeljenim argumentom bloka"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr ""
"free: velikosti zaÄetnih in konÄnih podatkovnih kosov \"chunk\" se "
"razlikujejo"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: klic z nedodeljenim argumentom bloka"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr ""
"realloc: velikosti zaÄetnih in konÄnih podatkovnih kosov \"chunk\" se "
@@ -1449,22 +1459,22 @@ msgstr "%s: slabo doloÄilo omrežne poti"
msgid "network operations not supported"
msgstr "omrežno opravilo ni podprto"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: ni mogoÄe spremeniti jezikovne oznake (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: ni mogoÄe spremeniti jezikovne oznake (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: ni mogoÄe spremeniti jezikovne oznake (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: ni mogoÄe spremeniti jezikovne oznake (%s): %s"
@@ -1482,138 +1492,138 @@ msgstr "Imate novo pošto v $_"
msgid "The mail in %s has been read\n"
msgstr "Pošta v %s je bila prebrana\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "skladenjska napaka: potreben je aritmetiÄni izraz"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "skladenjska napaka: `;' nepriÄakovano"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "skladenjska napaka: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: slaba vrsta navodila %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "here-document v vrstici %d razmejen z end-of-file (želeno `%s')"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: navodilo preusmeritve `%d' je izven dosega"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `%c'"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `]]'"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "skladenjska napaka v pogojnem izrazu: nepriÄakovan žeton `%s'"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "skladenjska napaka v pogojnem izrazu"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "nepriÄakovan žeton `%s', priÄakovan je bil `)'"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "priÄakovan `)'"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "nepriÄakovan argument `%s' do pogojnega enoslovnega operatorja"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "nepriÄakovan argument do pogojnega enoslovnega operatorja"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "nepriÄakovan žeton `%s', priÄakovan je binarni pogojni operator"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "priÄakovan je binarni pogojni operator"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "nepriÄakovan argument `%s' do pogojnega binarnega operatorja"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "nepriÄakovan argument do pogojnega binarnega operatorja"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "nepriÄakovan žeton `%c' v pogojnem ukazu"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "nepriÄakovan žeton `%s' v pogojnem ukazu"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "nepriÄakovan žeton %d v pogojnem ukazu"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "skladenjska napaka blizu nepriÄakovanega žetona `%s'"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "skladenjska napaka blizu `%s'"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "skladenjska napaka: nepriÄakovan konec datoteke"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "skladenjska napaka"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Uporabite \"%s\", Äe želite zapustiti lupino.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `)'"
@@ -1651,94 +1661,94 @@ msgstr "xtrace_set: prazen kazalec datoteke NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': neveljaven znak oblike"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "opisnik datoteke je izven dosega"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: dvoumna preusmeritev"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: ni mogoÄe prepisati obstojeÄe datoteke"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: omejitev: ni mogoÄe preusmeriti izhoda"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "ni mogoÄe ustvariti zaÄasne datoteke za here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: ni mogoÄe dodeliti fd spremenljivki"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port ni podprt brez omrežja"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "napaka preusmeritve: ni mogoÄe podvajati fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "ni mogoÄe najti /tmp, ustvarite ga!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp mora biti veljavno ime mape"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: neveljavna možnost"
-#: shell.c:1319
+#: shell.c:1343
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d"
-#: shell.c:1330
+#: shell.c:1354
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: je mapa"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Ni imena!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, razliÄica %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1747,322 +1757,322 @@ msgstr ""
"Uporaba:\t%s [dolga možnost GNU] [možnost] ...\n"
"\t%s [dolga možnost GNU] [možnost] skriptni dokument ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Dolge možnosti GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Možnosti lupine:\n"
-#: shell.c:2043
+#: shell.c:2069
#, fuzzy
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD ali ukaz -c ali -O shopt_option\t\t(samo sklicevanje)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ali možnost -o\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "VpiÅ¡ite `%s -c \"help set\"' za veÄ podrobnosti o možnostih lupine.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "VpiÅ¡ite `%s -c help' za veÄ podrobnosti o možnostih ukazov lupine.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Uporabite ukaz `bashbug' za poroÄanje hroÅ¡Äev.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: neveljavno opravilo"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Lažen signal"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Odloži"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Prekini"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "KonÄaj"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Neveljaven ukaz"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ukaz ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "ukaz EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Izjema s plavajoÄo vejico"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "UniÄen"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Napaka vodila"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Napaka segmentacije"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Slab sistemski klic"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Prekinjena cev"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Budilka"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "ZakljuÄen"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Nujen pogoj IO"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Ustavljen (signal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Nadaljuj"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Podrejeno opravilo je uniÄeno ali zaustavljeno"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Ustavljen (vhod TTY)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Ustavljen (izhod TTY)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O je pripravljen"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "omejitev CPE"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "omejitev datoteke"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Budilka (navidezna)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Budilka (profil)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Okno se je spremenilo"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Zaklep zapisa"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Signal uporabnika 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Signal uporabnika 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "vnos podatkov HFT je na Äakanju"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "izpad elektriÄnega toka je neizbežen"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "sesutje sistema je neizbežno"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "preseli opravilo na drug CPE"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "napaka programiranja"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "naÄin nadzora HFT je odobren"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "naÄin nadzora HFT je umaknjen"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "zaporedje zvoka HFT je konÄano"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "zahteva po podatkih"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Neznan signal #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "slaba zamenjava: ni zakljuÄka `%s' v %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: ni mogoÄe dodeliti seznama Älanu polja"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "ni mogoÄe ustvariti cevi za zamenjavo opravila"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "ni mogoÄe ustvariti podrejenega opravila za zamenjavo opravila"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "ni mogoÄe odpreti imenovane cevi %s za branje"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "ni mogoÄe odpreti imenovane cevi %s za pisanje"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "ni mogoÄe podvajati imenovane cevi %s kot fd %d"
-#: subst.c:6213
+#: subst.c:6370
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "slaba zamenjava: ni zakljuÄka \"`\" v %s"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "ni mogoÄe ustvariti cevi za zamenjavo ukaza"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "ni mogoÄe ustvariti podrejenega opravila za zamenjavo ukaza"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: ni mogoÄe podvajati cevi kot fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, fuzzy, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: neveljavno Å¡tetje vrstic"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "`%s': neveljaven vzdevek"
-#: subst.c:7256
+#: subst.c:7478
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter je prazen ali pa ni doloÄen"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter je prazen ali pa ni doloÄen"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: izraz podniza < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: slaba zamenjava"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ni mogoÄe dodeliti na tak naÄin"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
"prihodnje razliÄice lupine bodo prisilile ocenitev kot aritmetiÄno zamenjavo"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "slaba zamenjava: ni zakljuÄka \"`\" v %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "ni ujemanja: %s"
@@ -2085,21 +2095,21 @@ msgstr "priÄakovan je `)'"
msgid "`)' expected, found %s"
msgstr "priÄakovan je `)', najden je %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: priÄakuje se binarni operator"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: priÄakuje se enosnoven operator"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "manjka `]'"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "skladenjska napaka: `;' nepriÄakovano"
@@ -2108,101 +2118,106 @@ msgstr "skladenjska napaka: `;' nepriÄakovano"
msgid "invalid signal number"
msgstr "neveljavna Å¡tevka signala"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: slaba vrednost v trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
"run_pending_traps: roÄnik signala je SIG_DFL, ponovno poÅ¡iljanje %d (%s) sebi"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: slab signal %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "napaka med uvozom doloÄila funkcije `%s'"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "raven lupine (%d) je previsoka, ponastavljanje na 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: v trenutnem dosegu ni vsebine funkcije"
-#: variables.c:2693
+#: variables.c:2661
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: ni mogoÄe dodeliti fd spremenljivki"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: v trenutnem dosegu ni vsebine funkcije"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s ima prazen exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "neveljaven znak %d v exportstr za %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "ni `=' v exportstr za %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: glava shell_variables ni vsebina funkcije"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: ni vsebine global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: glava shell_variables ni trenuten obseg okolja"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: ni mogoÄe odpreti kot DATOTEKO"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek"
-#: variables.c:6437
+#: variables.c:6450
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s izven dosega"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
@@ -2297,12 +2312,16 @@ msgstr "ukaz [-pVv] ukaz [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgilrtux] [-p] [ime[=vrednost] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgilrtux] [-p] ime[=vrednost] ..."
#: builtins.c:82
@@ -2407,7 +2426,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o ime_možnosti] [--] [arg ...]"
#: builtins.c:144
@@ -2457,7 +2477,7 @@ msgstr "type [-afptP] ime [ime ...]"
#: builtins.c:171
#, fuzzy
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHacdefilmnpqrstuvx] [meja]"
#: builtins.c:174
@@ -2502,11 +2522,13 @@ msgstr ""
"if UKAZI; then UKAZI; [ elif UKAZI; then UKAZI; ]... [ else UKAZI; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while UKAZI; do UKAZI; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until UKAZI; do UKAZI; done"
#: builtins.c:200
@@ -3893,7 +3915,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3974,7 +3998,7 @@ msgstr ""
" omejitev prekoraÄena ali Äe je dan neveljaven opisnik datotek kot\n"
" argument v -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3994,7 +4018,7 @@ msgstr ""
" Stanje konÄanja\n"
" Vrne N ali neuspeÅ¡no, Äe lupina ne izvede funkcije ali skripta."
-#: builtins.c:1054
+#: builtins.c:1055
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4167,7 +4191,7 @@ msgstr ""
" Stanje konÄanja\n"
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost."
-#: builtins.c:1139
+#: builtins.c:1140
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4206,7 +4230,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je IME samo\n"
" za branje."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4240,7 +4264,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je\n"
" neveljavno IME."
-#: builtins.c:1180
+#: builtins.c:1181
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4280,7 +4304,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je\n"
" neveljavno IME."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4298,7 +4322,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe je N negativen ali veÄji kot $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4322,7 +4346,7 @@ msgstr ""
" Vrne stanje zadnjega izvršenega ukaza v IMENU_DATOTEKE; vrne\n"
" neuspeÅ¡no, Äe IMENA_DATOTEKE ni mogoÄe brati."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4348,7 +4372,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe nadzor posla ni omogoÄen ali Äe pride do\n"
" napake."
-#: builtins.c:1261
+#: builtins.c:1262
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4510,7 +4534,7 @@ msgstr ""
" Vrne uspeÅ¡no, Äe IZRAZ ovrednoti prav, neuspeÅ¡no vrne, Äe IZRAZ \n"
" ovrednoti napak ali Äe je dan neveljaven argument."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4522,7 +4546,7 @@ msgstr ""
" To je sopomenka za vgrajeno lupino \"test\", toda zadnji argument\n"
" mora biti dobesedni `]' za ujemanje z uklepajem `['."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4541,7 +4565,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vedno uspešno."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4621,7 +4645,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je SIGSPEC neveljaven ali je dana neveljavna "
"možnost."
-#: builtins.c:1400
+#: builtins.c:1401
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4679,7 +4703,7 @@ msgstr ""
" Vrne uspeÅ¡no, Äe so vsa IMENA najdena; vrne neuspeÅ¡no, Äe katero\n"
" ni najdeno."
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4772,7 +4796,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do\n"
" napake."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4806,7 +4830,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je NAÄŒIN neveljaven ali Äe je dana neveljavna\n"
" možnost."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4851,7 +4875,7 @@ msgstr ""
" Vrne stanje ID-ja; vrne neuspeÅ¡no, Äe je ID neveljaven ali Äe je dana\n"
" neveljavna možnost."
-#: builtins.c:1533
+#: builtins.c:1534
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4876,7 +4900,7 @@ msgstr ""
" Vrne stanje ID-ja; neuspeÅ¡no, Äe je ID neveljaven ali Äe je dana\n"
" neveljavna možnost."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4899,7 +4923,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4930,7 +4954,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4967,7 +4991,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4996,7 +5020,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Stanje konÄanja je stanje konÄanja CEVOVODA."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5014,7 +5038,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5048,12 +5072,14 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5066,12 +5092,14 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5084,7 +5112,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1671
+#: builtins.c:1672
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5107,7 +5135,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje konÄanja UKAZA."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5131,7 +5159,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe je IME samo za branje."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5149,7 +5177,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5173,7 +5201,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje obnovljenega posla."
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
@@ -5192,7 +5220,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne 1, Äe je IZRAZ enakovreden; sicer vrne 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5246,7 +5274,7 @@ msgstr ""
" Stanje konÄanja:\n"
" 0 ali 1, odvisno od vrednosti IZRAZA."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5350,7 +5378,7 @@ msgstr ""
" HISTIGNORE\tZ dvopiÄjem loÄen seznam vzorcev, ki so uporabljeni \n"
" \t\tza odloÄanje, kateri ukazi naj se shranijo na seznam zgodovine.\n"
-#: builtins.c:1821
+#: builtins.c:1822
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5407,7 +5435,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložen neveljaven argument ali Äe\n"
" sprememba mape spodleti."
-#: builtins.c:1855
+#: builtins.c:1856
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5458,7 +5486,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložen neveljaven argument ali Äe\n"
" sprememba mape spodleti."
-#: builtins.c:1885
+#: builtins.c:1886
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5510,7 +5538,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do napake."
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5547,7 +5575,7 @@ msgstr ""
" Vrne uspeÅ¡no, Äe je IME_MOŽNOSTI omogoÄeno; neuspeÅ¡no, Äe je\n"
" dana neveljavna možnost ali Äe je IME_MOŽNOSTI onemogoÄeno."
-#: builtins.c:1937
+#: builtins.c:1938
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5571,6 +5599,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5613,7 +5643,7 @@ msgstr ""
"napake\n"
" branja ali dodelitve."
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5669,7 +5699,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali Äe pride\n"
" do napake."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5691,7 +5721,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali Äe pride\n"
" do napake."
-#: builtins.c:2016
+#: builtins.c:2019
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5749,7 +5779,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali pa IME\n"
" nima doloÄenega doloÄila dopolnjevanja."
-#: builtins.c:2047
+#: builtins.c:2050
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5827,7 +5857,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost oz. je POLJE samo\n"
" za branje ali pa ni zabeleženo polje."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5837,6 +5867,10 @@ msgstr ""
" \n"
" Je sopomenka za `mapfile'."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: neveljaven kljuÄ povezanega polja"
+
#, fuzzy
#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc."
diff --git a/po/sr.gmo b/po/sr.gmo
index d7b5b9fe..609b0183 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 166d85ce..63cabb30 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -4,13 +4,14 @@
# Marko Uskokovic <uskokovic@etf.bg.ac.yu>, 2007, 2008.
# Serbian linux distribution cp6Linux
# Copyright © 2007 Marko Uskokovic
-# МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 2014—2020.
+# МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 2014—2022.
+#
msgid ""
msgstr ""
-"Project-Id-Version: bash-5.1\n"
+"Project-Id-Version: bash-5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-09 10:27+0200\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-08-22 00:19+0200\n"
"Last-Translator: МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language: sr\n"
@@ -24,57 +25,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "лоша подÑкрипта низа"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: уклањам атрибут упуте назива"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: не могу да претворим попиÑани низ у придружив"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: неиÑправан кључ придруживог низа"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: не могу да доделим у не-бројевни попиÑ"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: мора кориÑтити Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ додељивања придруживог низа"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: не могу да направим: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "баш_изврши_јуникÑ_наредбу: не могу да нађем мапу кључа за наредбу"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: први не-празан знак није \""
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "нема затварајућег „%c“ у %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: недоÑтаје раздвојник двотачке"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "„%s“: не могу да развежем у мапи таÑтера наредбе"
@@ -94,7 +90,7 @@ msgstr "ширење заграде: ниÑам уÑпео да доделим Ð
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "ширење заграде: ниÑам уÑпео да доделим меморију за „%s“"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: неиÑправан назив алијаÑа"
@@ -165,7 +161,7 @@ msgstr ""
msgid "HOME not set"
msgstr "„HOME“ није подешено"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "превише аргумената"
@@ -192,7 +188,7 @@ msgstr "упозорење:"
msgid "%s: usage: "
msgstr "%s: употреба:"
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: опција захтева аргумент"
@@ -207,7 +203,7 @@ msgstr "%s: потребан је бројевни аргумент"
msgid "%s: not found"
msgstr "%s: не поÑтоји"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: неиÑправна опција"
@@ -217,7 +213,7 @@ msgstr "%s: неиÑправна опција"
msgid "%s: invalid option name"
msgstr "%s: неиÑправан назив опције"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: није иÑправан одредник"
@@ -230,7 +226,7 @@ msgstr "неиÑправан октални број"
msgid "invalid hex number"
msgstr "неиÑправан хекÑадецимални број"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "неиÑправан број"
@@ -244,88 +240,93 @@ msgstr "%s: неиÑправна одредба Ñигнала"
msgid "`%s': not a pid or valid job spec"
msgstr "„%s“: није пиб или иÑправна одредба поÑла"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: променљива Ñамо за читање"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: не могу да доделим"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: „%s“ је ван опÑега"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "аргумент"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "„%s“ је ван опÑега"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: нема таквог поÑла"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: нема управљања поÑлом"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "нема управљања поÑлом"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: ограничено"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "ограничено"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: није уграђеноÑÑ‚ шкољке"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "грешка пиÑања: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "грешка подешавања оÑобина терминала: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "грешка добављања оÑобина терминала: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: грешка довлачења текућег директоријума: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: нејаÑна одредба поÑла"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "помоћ није доÑтупна у овом издању"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: не могу да раÑподеÑим: „%s“ је Ñамо за читање"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: не могу да раÑподеÑим"
@@ -335,108 +336,108 @@ msgstr "%s: не могу да раÑподеÑим"
msgid "%s: invalid action name"
msgstr "%s: неиÑправан назив радње"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: нема одредбе довршавања"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "упозорење: опција „-F“ можда неће радити како Ñте очекивали"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "упозорење: опција „-C“ можда неће радити како Ñте очекивали"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "тренутно не обавља функцију довршавања"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "може бити коришћено једино у функцији"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "не можете кориÑтити „-f“ да направите функције"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: функција Ñамо за читање"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: променљива упуте не може бити низ"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: Ñамоупућивање променљиве упуте назива није дозвољено"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: кружна упута назива"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "%s: неиÑправан назив променљиве за упуту назива"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "не можете кориÑтити „-f“ да направите функције"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: функција Ñамо за читање"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: додела низа цитираног Ñпоја је заÑтарела"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: не могу да уништим променљиве низа на овај начин"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: не могу да претворим придруживи низ у попиÑани"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: додела низа цитираног Ñпоја је заÑтарела"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "променљиво учитавање није доÑтупно"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "не могу да отворим дељени предмет „%s“: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "не могу да нађем „%s“ у дељеном предмету „%s“: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: динамичка уградња је већ учитана"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "функција учитавања за „%s“ није уÑпела (%d): није учитано"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: није динамички учитано"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: не могу да обришем: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: је директоријум"
@@ -451,7 +452,7 @@ msgstr "%s: није обична датотека"
msgid "%s: file is too large"
msgstr "%s: датотека је превелика"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: не могу да извршим бинарну датотеку"
@@ -547,12 +548,12 @@ msgstr ""
msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr "нема тема помоћи које одговарају „%s“. Покушајте „help help“ или „man -k %s“ или „info %s“."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: не могу да отворим: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -571,21 +572,21 @@ msgstr ""
"Звездица (*) поред назива значи да је наредба иÑкључена.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "не могу кориÑтити више од једног „-anrw“"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "положај иÑторијата"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: неиÑправна ознака времена"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: није уÑпело ширење иÑторијата"
@@ -608,78 +609,78 @@ msgstr "%s: аргументи морају бити процеÑи или ИБ-
msgid "Unknown error"
msgstr "Ðепозната грешка"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "очекиван је израз"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: није попиÑани низ"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: неиÑправна одредба опиÑника датотеке"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: неиÑправан опиÑник датотеке: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: неиÑправан број реда"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: неиÑправно порекло низа"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: неиÑправна количина опозива"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "празан назив променљиве низа"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "потребна је подршка променљиве низа"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: недоÑтаје знак запиÑа"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: неиÑправна одредба запиÑа времена"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: неиÑправан знак запиÑа"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "упозорење: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "проблем обраде запиÑа: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "недоÑтаје хекÑадецимална цифра за \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "недоÑтаје цифра уникода за \\%c"
@@ -829,12 +830,12 @@ msgstr ""
" \n"
" Уграђено „dirs“ приказује Ñпремник директоријума."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: неиÑправна одредба временÑког иÑтека"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "грешка читања: %d: %s"
@@ -847,7 +848,7 @@ msgstr "могу једино да „иÑпишем“ из функције и
msgid "cannot simultaneously unset a function and a variable"
msgstr "не могу иÑтовремено да раÑподеÑим функцију и променљиву"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: није променљива низа"
@@ -866,11 +867,11 @@ msgstr "%s: не могу да извезем"
msgid "shift count"
msgstr "број помака"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "не могу иÑтовремено да подеÑим и да раÑподеÑим опције шкољке"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: неиÑправан назив опције шкољке"
@@ -937,16 +938,16 @@ msgstr "%s: неиÑправан аргумент ограничења"
msgid "`%c': bad command"
msgstr "„%c“: лоша наредба"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: не могу да добавим ограничење: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "ограничење"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: не могу да изменим ограничење: %s"
@@ -965,7 +966,7 @@ msgstr "„%c“: неиÑправан оператер Ñимболичког Ñ
msgid "`%c': invalid symbolic mode character"
msgstr "„%c“: неиÑправан знак Ñимболичког режима"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " ред "
@@ -985,96 +986,106 @@ msgstr "Прекидам..."
msgid "INFORM: "
msgstr "ПОДÐЦИ: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "упозорење ПРОЧИШЋÐÐ’ÐЊÐ:"
+
+#: error.c:488
msgid "unknown command error"
msgstr "непозната грешка наредбе"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "лоша врÑта наредбе"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "лош Ñпајач"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "лош Ñкок"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: неÑвезана променљива"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aиÑтекло је време чекајући на улаз: Ñам Ñе одјављујем\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "не могу да преуÑмерим Ñтандардни улаз из „/dev/null:“: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "ЗÐПИСВРЕМЕÐÐ: „%c“: неиÑправан знак запиÑа"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "изврши_копроц: ÐºÐ¾Ð¿Ñ€Ð¾Ñ†ÐµÑ [%d:%s] још увек поÑтоји"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "грешка Ñпојке"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: премашен је највећи ниво угнежђивања извора (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: премашен је највећи ниво угнежђивања функције (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ограничено: не могу да наведем / у називима наредби"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: нема такве наредбе"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: не могу да извршим: ниÑам нашао потребну датотеку"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: лош тумач"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: не могу да извршим бинарну датотеку: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s“: јеÑте поÑебна уграђеноÑÑ‚"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "не могу да удвоÑтручим „fd %d“ у „fd %d“"
@@ -1087,68 +1098,68 @@ msgstr "премашен је ниво дубачења израза"
msgid "recursion stack underflow"
msgstr "недоток Ñпремника дубачења"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "Ñадржајна грешка у изразу"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "покушано је додељивање у не-променљиву"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "Ñадржајна грешка у додели променљиве"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "дељење 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "грешка: лош Ñимбол доделе израза"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "„:“ је очекивано за уÑловни израз"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "изложилац је мањи од 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "одредник је очекиван након пре-увећања или пре-умањења"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "недоÑтаје )"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "Ñадржајна грешка: очекиван је операнд"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "Ñадржајна грешка: неиÑправан аритметички оператор"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (Ñимбол грешке је „%s“)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "неиÑправна аритметичка оÑнова"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "неиÑправна конÑтанта целог броја"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "вредноÑÑ‚ је превише велика за оÑнову"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: грешка израза\n"
@@ -1157,7 +1168,7 @@ msgstr "%s: грешка израза\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: не могу да приÑтупим родитељÑком директоријуму"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "не могу да поништим режим без-кашњења за фд „%d“"
@@ -1176,167 +1187,167 @@ msgstr "save_bash_input: већ поÑтоји међумеморија за нÐ
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: „pgrp“ Ñпојка"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "иÑцепљени пиб „%d“ Ñе јавља у покренутом поÑлу „%d“"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "бришем зауÑтављени поÑао „%d“ Ñа групом процеÑа %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: пиб %5ld (%s) је означен да је још жив"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: нема таквог пиб-а"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Сигнал %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Урађен"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "ЗауÑтављен"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "ЗауÑтављен(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Покренут"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Урађен(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Изађи из „%d“"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Ðепознато Ñтање"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(језгрени избачај)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "Ñетпгиб порода (%ld у %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: пиб %ld није пород ове шкољке"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ðема запиÑа о процеÑу %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: поÑао „%d“ је зауÑтављен"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: нема текућих поÑлова"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: поÑао је завршио"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: поÑао „%dд је већ у позадини"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: укључујем „WNOHANG“ да избегнем неодређени блок"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: ред %d:"
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (језгрени избачај)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(„wd“ Ñада: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: није уÑпело „getpgrp“"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: нема контроле поÑла у позадини"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: диÑциплина реда"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "не могу да подеÑим групу процеÑа терминала (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "нема управљања поÑлом у овој шкољци"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: тврдња није уÑпела: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1345,47 +1356,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: тврдња је лоше изведена\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "непознато"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: блок на Ñлободном ÑпиÑку је препиÑан"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: позвана Ñа већ оÑлобођеним аргументом блока"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: позвана Ñа недодељеним аргументом блока"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: откривена је недовољноÑÑ‚ тока; „magic8“ је оштећено"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: почетна и крајња величина дела Ñе разликују"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: позвана Ñа недодељеним аргументом блока"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: откривена је недовољноÑÑ‚ тока; „magic8“ је оштећено"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: почетна и крајња величина дела Ñе разликују"
@@ -1427,22 +1438,22 @@ msgstr "%s: лоша одредба путање мреже"
msgid "network operations not supported"
msgstr "радње мреже ниÑу подржане"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: не могу да изменим језик (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: не могу да изменим језик (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: не могу да изменим језик (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: не могу да изменим језик (%s): %s"
@@ -1460,136 +1471,136 @@ msgstr "Имате нову пошту у $_"
msgid "The mail in %s has been read\n"
msgstr "Пошта у „%s“ је прочитана\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "Ñадржајна грешка: потребан је аритметички израз"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "Ñадржајна грешка: није очекивано „;“"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "Ñадржајна грешка: „((%s))“"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: лоша врÑта упутÑтва „%d“"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "овде-документ у %d. реду је ограничен крајем-датотеке (тражи Ñе „%s“)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: упутÑво преуÑмерења „%d“ је ван опÑега"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc: величина_реда_улаза_шкољке (%zu) је премашила ÐÐЈВЕЋУ_ВЕЛИЧИÐУ (%lu): ред је Ñкраћен"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "премашен је највећи број „овде-документ“"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "неочекивани крај датотеке приликом тражења поклапања „%c“"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "неочекивани крај датотеке приликом тражења „]]“"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "Ñадржајна грешка у уÑловном изразу: неочекивани Ñимбол „%s“"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "Ñадржајна грешка у уÑловном изразу"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "неочекивани Ñимбол „%s“, очекивана је )"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "очекивана је )"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "неочекивани аргумент „%s“ уÑловном једночланом оператору"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "неочекивани аргумент уÑловном једночланом оператору"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "неочекивани Ñимбол „%s“, очекиван је уÑловни двочлани оператор"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "очекиван је уÑловни двочлани оператор"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "неочекивани аргумент „%s“ уÑловном двочланом оператору"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "неочекивани аргумент уÑловном двочланом оператору"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "неочекивани Ñимбол „%c“ у уÑловној наредби"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "неочекивани Ñимбол „%s“ у уÑловној наредби"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "неочекивани Ñимбол „%d“ у уÑловној наредби"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "Ñадржајна грешка близу неочекиваног Ñимбола „%s“"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "Ñадржајна грешка близу „%s“"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "Ñадржајна грешка: неочекивани крај датотеке"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "Ñадржајна грешка"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "КориÑтите „%s“ да напуÑтите шкољку.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "неочекивани крај датотеке приликом тражења поклапајуће )"
@@ -1627,94 +1638,94 @@ msgstr "xtrace_set: ÐИШТÐÐ’ÐРуказивач датотеке"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c“: неиÑправан знак запиÑа"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "опиÑник датотеке је ван опÑега"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: нејаÑно преуÑмерење"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: не могу да препишем поÑтојећу датотеку"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ограничено: не могу да преуÑмерим излаз"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "не могу да направим привремену датотеку за документ-овде: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: не могу да доделим фд променљивој"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "„/dev/(tcp|udp)/домаћин/прикључник“ није подржано без умрежавања"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "грешка преуÑмерења: не могу да удвоÑтручим фд"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "не могу да нађем „/tmp“, направите га!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "„/tmp“ мора бити иÑправан назив директоријума"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "режим уредног иÑпиÑа је занемарен у међудејÑтвеним шкољкама"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: неиÑправна опција"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "не могу да подеÑим јиб на %d: Ñтварни јиб %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "не могу да подеÑим гиб на %d: Ñтварни гиб %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "не могу да покренем прочишћавача; режим прочишћавања је иÑкључен"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: је директоријум"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Ðемам назив!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "Гну баш, издање %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1723,317 +1734,317 @@ msgstr ""
"Употреба:\t%s [Гнуова дуга опција] [опција] ...\n"
" \t%s [Гнуова дуга опција] [опција] датотека-ÑпиÑа ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Гнуове дуге опције:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Опције шкољке:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t„-ilrsD“ или наредба „-c“ или -O шопц_опција\t\t(призивање Ñамо)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t„-%s“ или опција „-o“\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Укуцајте „%s -c \"help set\"“ за више података о опцијама шкољке.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Укуцајте „%s -c help“ за више података о уграђеним наредбама шкољке.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "КориÑтите наредбу „bashbug“ да извеÑтите о грешкама.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Матична Ñтраница баша: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Општа помоћ коришћења Гну Ñофтвера: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: неиÑправна операција"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Ðетачан Ñигнал"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "ОбуÑтави"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Прекини"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Изађи"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "ÐеиÑправна инÑтрукција"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Прати/ухвати БПТ"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ИнÑтрукција „ABORT“"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "ИнÑтрукција „EMT“"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Изузетак покретног зареза"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Убијен"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Грешка Ñабирнице"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "ÐеуÑпех Ñегментације"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Лош ÑиÑтемÑки позив"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Сломљена Ñпојка"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Ðларм"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Окончано"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Хитан УИ уÑлов"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "ЗауÑтављен (Ñигнал)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "ÐаÑтави"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Пород је преминуо или зауÑтављен"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "ЗауÑтављен (улаз конзоле)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "ЗауÑтављен (излаз конзоле)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "Спреман на У/И"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Ограничење процеÑора"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Ограничење датотеке"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Ðларм (виртуелни)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Ðларм (профил)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Промењени прозор"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Закључавање Ñнимка"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "КориÑнички Ñигнал 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "КориÑнички Ñигнал 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Улазни ХФТ подаци на чекању"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "неизбежан пад напајања"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "неизбежан пад ÑиÑтема"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "пребацује Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° други процеÑор"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "грешка програмирања"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "ОÑигуран је режим ХФТ праћења"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "Понови је иÑпраћен режим ХФТ праћења"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "Ðиз ХФТ звука је завршен"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Захтев за подацима"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Ðепознат Ñигнал #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "лоша замена: нема затварајуће „%s“ у „%s“"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: не могу да доделим ÑпиÑак члану низа"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "не могу да начиним Ñпојку за замену процеÑа"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "не могу да начиним пород за замену процеÑа"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "не могу да отворим именовану Ñпојку „%s“ за читање"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "не могу да отворим именовану Ñпојку „%s“ за пиÑање"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "не могу да удвоÑтручим именовану Ñпојку „%s“ као фд %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "замена наредбе: занемарих ништавни бајт у улазу"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "не могу да начиним Ñпојку за замену наредбе"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "не могу да начиним пород за замену наредбе"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: не могу да удвоÑтручим Ñпојку као фд 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: неиÑправан назив променљиве за упуту назива"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: неиÑправно поÑредно ширење"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: неиÑправан назив променљиве"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: параметар није подешен"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: параметар је ништаван или није подешен"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: израз подниÑке < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: лоша замена"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: не могу дадоделим на овај начин"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "будућа издања шкољке ће приморати процену као аритметичку замену"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "лоша замена: нема затварајућег „`“ у „%s“"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "нема поклапања: %s"
@@ -2056,21 +2067,21 @@ msgstr "очекивана је )"
msgid "`)' expected, found %s"
msgstr "очекивана је ), а пронађена %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: очекиван је двочлани оператор"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: очекиван је једночлани оператор"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "недоÑтаје ]"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "Ñадржајна грешка: није очекивано „%s“"
@@ -2079,99 +2090,104 @@ msgstr "Ñадржајна грешка: није очекивано „%s“"
msgid "invalid signal number"
msgstr "неиÑправан Ñигнални број"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "руковалац изузетком: премашен је највећи ниво руковаоца изузецима (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: лоша вредноÑÑ‚ у „trap_list[%d]“: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: руковалац Ñигналом је „SIG_DFL“, поново шаљем %d (%s) мени Ñамом"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: лош Ñигнал %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "грешка увоза одреднице функције за „%s“"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "ниво шкољке (%d) је превиÑок, поново поÑтављам на 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: нема Ñадржаја функције на текућем доÑегу"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: вредноÑти не може бити додељена вредноÑÑ‚"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: не могу да наÑледим вредноÑÑ‚ из неÑаглаÑне врÑте"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: додељујем цео број упути назива"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variable: нема Ñадржаја функције на текућем доÑегу"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s има ништавну ниÑку извоза"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "неиÑправан знак %d у ниÑци извоза за „%s“"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "нема = у ниÑци извоза за „%s“"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: глава променљивих шкољке није ÑадржајноÑÑ‚ функције"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: нема Ñадржаја општих променљивих"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: глава променљивих шкољке није привремени доÑег окружења"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: не могу да отворим као ДÐТОТЕКУ"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: неиÑправна вредноÑÑ‚ за опиÑник праћења датотеке"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: вреднÑот ÑаглаÑноÑти је ван опÑега"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "ÐуторÑка права © 2020 Задужбина Ñлободног Ñофтвера, Доо."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "ÐуторÑка права © 2022. Фондација Ñлободног Ñофтвера, Доо."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2251,12 +2267,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [арг ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [назив[=вредноÑÑ‚] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [назив[=вредноÑÑ‚] ...] или declare -p [-aAfFilnrtux] [назив ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] назив[=вредноÑÑ‚] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] [-p] назив[=вредноÑÑ‚] ... или typeset -p [-aAfFilnrtux] [назив ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2343,8 +2359,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o назив-опције] [--] [арг ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o назив-опције] [--] [-] [арг ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2391,8 +2407,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] назив [назив ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [ограничење]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [ограничење]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2431,12 +2447,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if ÐÐРЕДБЕ; then ÐÐРЕДБЕ; [ elif ÐÐРЕДБЕ; then ÐÐРЕДБЕ; ]... [ else ÐÐРЕДБЕ; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while ÐÐРЕДБЕ; do ÐÐРЕДБЕ; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while ÐÐРЕДБЕ; do ÐÐРЕДБЕ-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until ÐÐРЕДБЕ; do ÐÐРЕДБЕ; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until ÐÐРЕДБЕ; do ÐÐРЕДБЕ-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3729,7 +3745,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3771,7 +3788,8 @@ msgstr ""
" ако је доÑтављена опција „-u“. Ред је подељен на поља као при дељењу\n"
" речи, а прва реч Ñе додељује првом ÐÐЗИВУ, друга реч другом ÐÐЗИВУ,\n"
" и тако редом, Ñа Ñваком наредном речју додељеном поÑледњем ÐÐЗИВУ.\n"
-" Само знаци пронађени у „$IFS“ Ñе признају за граничнике речи.\n"
+" Само знаци пронађени у „$IFS“ Ñе признају за граничнике речи. По оÑнови,\n"
+" знак контра коÑе црте мења значење знакова граничника и новог реда.\n"
" \n"
" Ðко ниÑу доÑтављени ÐÐЗИВИ, читани ред је Ñмештен у променљивој ОДГОВОР.\n"
" \n"
@@ -3805,7 +3823,7 @@ msgstr ""
" читања (у том Ñлучају је већи од 128), ако не дође до грешке доделе променљиве,\n"
" или ако Ñе не доÑтави неиÑправан опиÑник датотеке као аргумент опције „-u“."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3825,7 +3843,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје N, или неуÑпех ако шкољка не извршава функцију или ÑпиÑ."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3988,7 +4006,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако није дата неиÑправна опција."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4026,7 +4044,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је ÐÐЗИВ Ñамо за читање."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4058,7 +4076,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако је дата неиÑправна опција или је ÐÐЗИВ неиÑправан."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4096,7 +4114,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је ÐÐЗИВ неиÑправан."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4114,7 +4132,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Резултати Ñу уÑпешни оÑим ако N није негативно иливеће од $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4138,7 +4156,7 @@ msgstr ""
" Даје Ñтање поÑледње извршене наредбе у ДÐТОТЕЦИ; не уÑпева\n"
" ако назив ДÐТОТЕКЕ не може бити прочитан."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4162,7 +4180,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако није укључено управљање поÑлом или ако не дође до грешке."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4313,7 +4331,7 @@ msgstr ""
" Даје позитиван резултат ако Ñе ИЗРÐЗ процени на тачно; неуÑпех ако Ñе ИЗРÐЗ процени\n"
" на нетачно или ако је дат неиÑправан аргумент."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4325,7 +4343,7 @@ msgstr ""
" Ово је Ñиноним за уграђеноÑÑ‚ „test“, али поÑледњи аргумент мора\n"
" бити доÑловна ], да поклопи отворену [."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4343,7 +4361,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Увек уÑпешно."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4409,7 +4427,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим за неиÑправну ОДРЕДБÐ_СИГÐÐЛРили за неиÑправну опцију."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4463,7 +4481,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат ако Ñу пронађени Ñви ÐÐЗИВИ; неуÑпех ако ниједан није пронађен."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4557,7 +4575,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако не дође до грешке."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4589,7 +4607,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако је РЕЖИМ неиÑправан или ако је дата неиÑправна опција."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4640,7 +4658,7 @@ msgstr ""
" дата неиÑправна опција, или ако је доÑтављено „-n“ а шкољка нема „unwaited-for“\n"
" пород."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4662,7 +4680,7 @@ msgstr ""
" ИÑпиÑује Ñтање поÑледњег ПИБ-а; неуÑпех ако је ПИБ неиÑправан или ако је дата\n"
" неиÑправна опција."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4684,7 +4702,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4714,7 +4732,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4750,7 +4768,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4779,7 +4797,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Стање резултата јеÑте Ñтање резултата СПОЈÐОГРЕДÐ."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4797,7 +4815,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4824,43 +4842,43 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Извршава наредбе након што Ñе проба уÑпешно обави.\n"
" \n"
-" Шири и извршава ÐÐРЕДБЕ након што завршна наредба у „while“ ÐÐРЕДБÐÐœÐ\n"
+" Шири и извршава ÐÐРЕДБЕ-2 након што завршна наредба у ÐÐРЕДБÐÐœÐ\n"
" има излазно Ñтање нуле.\n"
" \n"
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"Извршава наредбе након што Ñе проба уÑпешно обави.\n"
+"Извршава наредбе Ñве док проба не буде неуÑпела.\n"
" \n"
-" Шири и извршава ÐÐРЕДБЕ након што завршна наредба у „until“ ÐÐРЕДБÐÐœÐ\n"
+" Шири и извршава ÐÐРЕДБЕ-2 након што завршна наредба у ÐÐРЕДБÐÐœÐ\n"
" има излазно Ñтање које није нула.\n"
" \n"
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4882,7 +4900,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Ðаредба копроцеÑа даје излазно Ñтање 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4904,7 +4922,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако је ÐÐЗИВ Ñамо за читање."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4922,7 +4940,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4945,7 +4963,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје Ñтање наÑтављеног поÑла."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4963,7 +4981,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје 1 ако Ñе ИЗРÐЗ процени на 0; у Ñупротном даје 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5009,7 +5027,7 @@ msgstr ""
" Излазно Ñтање:\n"
" 0 или 1 у завиÑноÑти од вредноÑÑ‚ ИЗРÐЗÐ."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5112,7 +5130,7 @@ msgstr ""
" ЗÐÐЕМÐРИИСТОРИЈÐТ СпиÑак шаблона раздвојен двотачком коришћених за одлучивање\n"
" о наредбама које требају бити Ñачуване на ÑпиÑку иÑторијата.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5168,7 +5186,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није доÑтављен неиÑправан аргумент или замена\n"
" директоријума не уÑпе."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5218,7 +5236,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није доÑтављен неиÑправан аргумент или измена\n"
" директоријума не уÑпе."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5270,7 +5288,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако не дође до грешке."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5306,7 +5324,7 @@ msgstr ""
" Даје позитиван резултат ако је ÐÐЗИВ_ОПЦИЈЕ укључен; неуÑпех ако је дата\n"
" неиÑправна опција или ако је ÐÐЗИВ_ОПЦИЈЕ иÑкључен."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5325,6 +5343,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5353,6 +5373,8 @@ msgstr ""
" \n"
" %b\tшири низове прекида контра коÑе црте у одговарајући аргумент\n"
" %q\tцитира аргумент на начин како би био коришћен као улаз шкољке\n"
+" %Q\tкао %q, али примењује Ñваку тачноÑÑ‚ на нецитирани аргумент пре\n"
+" \t\tцитирања\n"
" %(fmt)T иÑпиÑује ниÑку датум-време резултирајући коришћењем ФМТ-а као\n"
" ниÑке запиÑа за „strftime(3)“\n"
" \n"
@@ -5364,7 +5386,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не\n"
" дође до грешке пиÑања или доделе."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5412,7 +5434,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако не дође до грешке."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5431,7 +5453,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако не дође до грешке."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5484,7 +5506,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ÐÐЗИВ\n"
" нема одређену одредбу довршавања."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5549,7 +5571,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је ÐИЗ Ñамо\n"
" за читање или није индекÑирани низ."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5559,6 +5581,9 @@ msgstr ""
" \n"
" Синоним за „mapfile“."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: неиÑправан кључ придруживог низа"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/sv.gmo b/po/sv.gmo
index 9f406df3..804ca8fe 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index f76bd168..7a12ea0b 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,16 +1,16 @@
# Swedish translation of bash
-# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020 Free Software Foundation, Inc.
+# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2022 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
#
-# Göran Uddeborg <goeran@uddeborg.se>, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020.
+# Göran Uddeborg <goeran@uddeborg.se>, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2022.
#
-# $Revision: 1.30 $
+# $Revision: 1.31 $
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.1\n"
+"Project-Id-Version: bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-09 21:35+0100\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-17 22:31+0200\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -24,57 +24,52 @@ msgstr ""
msgid "bad array subscript"
msgstr "felaktigt vektorindex"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: tar bort attributet namnreferens"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: det går inte att konvertera en indexerad vektor till associativ"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: ogiltig nyckel till associativ vektor"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: det går inte att tilldela till ickenumeriska index"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: måste använda index vid tilldelning av associativ vektor"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: det går inte att skapa: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: det går inte att hitta en tangentbindning för kommandot"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: första ickeblanka tecknet är inte '\"'"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "ingen avslutande â€%c†i %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: kolonseparator saknas"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "â€%sâ€: det gÃ¥r inte att avbinda i kommandotangentbindning"
@@ -82,7 +77,7 @@ msgstr "â€%sâ€: det gÃ¥r inte att avbinda i kommandotangentbindning"
#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
-msgstr "klammerexpansion: kan inte allokera minne för %s"
+msgstr "klammerexpansion: det går inte att allokera minne för %s"
#: braces.c:406
#, c-format
@@ -94,7 +89,7 @@ msgstr "klammerexpansion: misslyckades att allokera minne för %u element"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "klammerexpansion: misslyckades att allokera minne för â€%sâ€"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "â€%sâ€: ogiltigt aliasnamn"
@@ -165,7 +160,7 @@ msgstr ""
msgid "HOME not set"
msgstr "HOME är inte satt"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "för många argument"
@@ -192,7 +187,7 @@ msgstr "varning: "
msgid "%s: usage: "
msgstr "%s: användning: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: flaggan kräver ett argument"
@@ -207,7 +202,7 @@ msgstr "%s: numeriskt argument krävs"
msgid "%s: not found"
msgstr "%s: finns inte"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: ogiltig flagga"
@@ -217,7 +212,7 @@ msgstr "%s: ogiltig flagga"
msgid "%s: invalid option name"
msgstr "%s: ogiltigt flaggnamn"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "â€%sâ€: inte en giltig identifierare"
@@ -230,7 +225,7 @@ msgstr "ogiltigt oktalt tal"
msgid "invalid hex number"
msgstr "ogiltigt hexadecimalt tal"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "ogiltigt tal"
@@ -244,88 +239,93 @@ msgstr "%s: ogiltig signalspecifikation"
msgid "`%s': not a pid or valid job spec"
msgstr "â€%sâ€: inte en pid eller giltig jobbspecifikation"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: endast läsbar variabel"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: det går inte att tilldela"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s utanför giltigt intervall"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "argument"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s utanför giltigt intervall"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: inget sådant jobb"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: ingen jobbstyrning"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "ingen jobbstyrning"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: begränsat"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "begränsat"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: inte inbyggt i skalet"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "skrivfel: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "fel när terminalattribut ställdes in: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "fel när terminalattribut hämtades: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: fel när aktuell katalog hämtades: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: tvetydig jobbspecifikation"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "hjälp är inte tillgängligt i denna version"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: det går inte att ta bort tilldelning: endast läsbar %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: det går inte att ta bort tilldelning"
@@ -335,108 +335,108 @@ msgstr "%s: det går inte att ta bort tilldelning"
msgid "%s: invalid action name"
msgstr "%s: ogiltigt åtgärdsnamn"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ingen kompletteringsspecifikation"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "varning: flaggan -F fungerar kanske inte som du väntar dig"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "varning: flaggan -C fungerar kanske inte som du väntar dig"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "kör inte en kompletteringsfunktion"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "kan endast användas i en funktion"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "det gÃ¥r inte att använda â€-f†för att göra funktioner"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: endast läsbar funktion"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: en referensvariabel kan inte vara en vektor"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: att en namnreferensvariabel självrefererar är inte tillåtet"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: cirkulär namnreferens"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "â€%sâ€: ogiltigt variabelnamn för referens"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "det gÃ¥r inte att använda â€-f†för att göra funktioner"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: endast läsbar funktion"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: det går inte att förstöra vektorvariabler på detta sätt"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: det går inte att konvertera en associativ vektor till indexerad"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "dynamisk laddning är inte tillgängligt"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "det går inte att öppna delat objekt %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
-msgstr "kan inte hitta %s i det delade objektet %s: %s"
+msgstr "det går inte att hitta %s i det delade objektet %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: den dynamiska inbyggda är redan inläst"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "inläsningsfunktionen för %s returnerar misslyckande (%d): inte inläst"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: inte dynamiskt laddad"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: kan inte ta bort: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: är en katalog"
@@ -451,7 +451,7 @@ msgstr "%s: inte en normal fil"
msgid "%s: file is too large"
msgstr "%s: filen är för stor"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: det går inte att köra binär fil"
@@ -546,12 +546,12 @@ msgstr ""
msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr "inget hjälpämne matchar â€%sâ€. Prova â€help help†eller â€man -k %s†eller â€info %sâ€."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: det går inte att öppna: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -571,21 +571,21 @@ msgstr ""
"En stjärna (*) bredvid ett namn betyder att det kommandot är avstängt.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "det går inte att använda mer än en av -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "historieposition"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: ogiltig tidsstämpel"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: historieexpansionen misslyckades"
@@ -608,78 +608,78 @@ msgstr "%s: argument måste vara processer eller jobb-id:n"
msgid "Unknown error"
msgstr "Okänt fel"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "uttryck förväntades"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: inte en indexerad vektor"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: ogiltig filbeskrivarspecifikation"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: ogiltig filbeskrivare: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: ogiltigt radantal"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: ogiltig vektorstart"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: ogiltigt kvantum för återanrop"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "tomt vektorvariabelnamn"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "stöd för vektorvariabler krävs"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "â€%sâ€: formateringstecken saknas"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "â€%câ€: ogiltig specifikation av tidsformat"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "â€%câ€: ogiltigt formateringstecken"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "varning: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "formattolkningsproblem: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "hexadecimal siffra saknas för \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "unicode-siffra saknas för \\%c"
@@ -829,12 +829,12 @@ msgstr ""
" \n"
" Den inbyggda â€dirs†visar katalogstacken."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: ogiltig tidsgränsspecifikation"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "läsfel: %d: %s"
@@ -847,7 +847,7 @@ msgstr "det gÃ¥r bara att göra â€return†frÃ¥n en funktion eller källinläs
msgid "cannot simultaneously unset a function and a variable"
msgstr "det går inte att samtidigt ta bort en funktion och en variabel"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: inte en vektorvariabel"
@@ -866,11 +866,11 @@ msgstr "%s: det går inte att exportera"
msgid "shift count"
msgstr "skiftantal"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "det går inte att sätta och ta bort skalflaggor samtidigt"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ogiltigt skalflaggsnamn"
@@ -937,16 +937,16 @@ msgstr "%s: ogiltigt gränsargument"
msgid "`%c': bad command"
msgstr "â€%câ€: felaktigt kommando"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: kan inte avgöra gränsen: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "gräns"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: kan inte ändra gränsen: %s"
@@ -965,7 +965,7 @@ msgstr "â€%câ€: ogiltig operator för symboliskt läge"
msgid "`%c': invalid symbolic mode character"
msgstr "â€%câ€: ogiltigt tecken för symboliskt läge"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " rad "
@@ -985,96 +985,106 @@ msgstr "Avbryter..."
msgid "INFORM: "
msgstr "INFORMATION: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "FELSÖKNINGS-varning: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "okänt kommandofel"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "felaktig kommandotyp"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "felaktig anslutning"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "felaktigt hopp"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: obunden variabel"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atiden gick ut i väntan på indata: automatisk utloggning\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "det går inte att omdirigera standard in från /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: â€%câ€: ogiltigt formateringstecken"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] finns fortfarande"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "rörfel"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: maximal nästning av eval överskriden (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximal nästning av source överskriden (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximal nästning av funktioner överskriden (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: begränsat: det gÃ¥r inte att ange â€/†i kommandonamn"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: kommandot finns inte"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: det går inte att köra: en nödvändig fil finns inte"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: felaktig tolk"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: det går inte att köra binär fil: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "â€%sâ€: är en speciell inbyggd"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "det går inte att duplicera fb %d till fb %d"
@@ -1087,68 +1097,68 @@ msgstr "rekursionsnivå i uttryck överskriden"
msgid "recursion stack underflow"
msgstr "underspill i rekursionsstacken"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "syntaxfel i uttrycket"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "försök att tilldela till en icke-variabel"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "syntaxfel i variabeltilldelning"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "division med 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "fel: felaktig expassign-symbol"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "â€:†förväntades i villkorligt uttryck"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "exponenten är mindre än 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "â€)†saknas"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "syntaxfel: en operand förväntades"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaxfel: ogiltig aritmetisk operator"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (felsymbol är â€%sâ€)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "ogiltig aritmetisk bas"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "felaktig heltalskonstant"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "värdet är för stort för basen"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: uttrycksfel\n"
@@ -1157,7 +1167,7 @@ msgstr "%s: uttrycksfel\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: det går inte att komma åt föräldrakatalogen"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "det går inte att återställa fördröjningsfritt läge för fb %d"
@@ -1176,167 +1186,167 @@ msgstr "save_bash_input: buffert finns redan för ny fb %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp rör"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "avgrenad pid %d finns i körande jobb %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "tar bort stoppat jobb %d med processgrupp %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) markerad som fortfarande vid liv"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ingen sådan pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Klart"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Stoppad"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Stoppad(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Kör"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Klart(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Avslut %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Okänd status"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(minnesutskrift skapad) "
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (ak: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "barns setpgid (%ld till %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld är inte ett barn till detta skal"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ingen uppgift om process %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: jobb %d är stoppat"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: inga aktuella jobb"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: jobbet har avslutat"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: jobb %d är redan i bakgrunden"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: slår på WNOHANG för att undvika oändlig blockering"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: rad %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (minnesutskrift skapad)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(ak nu: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp misslyckades"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: ingen jobbstyrning i bakgrunden"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: linjedisciplin"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "det går inte att sätta terminalprocessgrupp (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "ingen jobbstyrning i detta skal"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: försäkran misslyckades: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1345,47 +1355,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: försäkran gick fel\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "okänd"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: block på frilista överskrivet"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: anropad med redan frigjort block som argument"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: anropad med oallokerat block som argument"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: underspill upptäckt: magic8 är trasig"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: start- och slutstyckesstorlekar skiljer"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: anropat med oallokerat block som argument"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: underspill upptäckt: magic8 är trasig"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: start- och slutstyckesstorlekar skiljer"
@@ -1427,22 +1437,22 @@ msgstr "%s: felaktig specifikation av nätverkssökväg"
msgid "network operations not supported"
msgstr "nätverksoperationer stöds inte"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: det går inte att ändra lokal (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: det går inte att ändra lokal (%s): %s"
@@ -1460,136 +1470,136 @@ msgstr "Du har ny post i $_"
msgid "The mail in %s has been read\n"
msgstr "Posten i %s har lästs\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "syntaxfel: aritmetiskt uttryck krävs"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "syntaxfel: oväntat â€;â€"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "syntaxfel: â€((%s))â€"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: felaktig instruktionstyp %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "här-dokument pÃ¥ rad %d avgränsas av filslut (ville ha â€%sâ€)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: omdirigeringsinstruktion â€%d†utanför giltigt intervall"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc: shell_input_line_size (%zu) överstiger SIZE_MAX (%lu): raden avhuggen"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "maximalt antal av här-dokument överskridet"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "oväntat filslut vid sökning efter matchande â€%câ€"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "oväntat filslut vid sökning efter â€]]â€"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntaxfel i villkorligt uttryck: oväntad symbol â€%sâ€"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "syntaxfel i villkorligt uttryck"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "oväntad symbol â€%sâ€, â€)†förväntades"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "â€)†förväntades"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "oväntat argument â€%s†till villkorlig unär operator"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "oväntat argument till villkorlig unär operator"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "oväntad symbol â€%sâ€, villkorlig binär operator förväntades"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "villkorlig binär operator förväntades"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "oväntat argument â€%s†till villkorlig binär operator"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "oväntat argument till villkorlig binär operator"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "oväntad symbol â€%c†i villkorligt kommando"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "oväntad symbol â€%s†i villkorligt kommando"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "oväntad symbol %d i villkorligt kommando"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntaxfel nära den oväntade symbolen â€%sâ€"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "syntaxfel nära â€%sâ€"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "syntaxfel: oväntat filslut"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "syntaxfel"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Använd â€%s†för att lämna skalet.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "oväntat filslut när matchande â€)†söktes"
@@ -1627,94 +1637,94 @@ msgstr "xtrace_set: NULL-filpekare"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: â€%câ€: ogiltigt formateringstecken"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "filbeskrivare utanför giltigt intervall"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: tvetydig omdirigering"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: det går inte att skriva över en existerande fil"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: begränsat: det går inte att omdirigera utdata"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "det går inte att skapa temporärfil för här-dokument: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: det går inte att tilldela fb till variabel"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "omdirigeringsfel: det går inte att duplicera fb"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "hittade inte /tmp, var god skapa!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp måste vara ett giltigt katalognamn"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "läget för snygg utskrift ignoreras i interaktiva skal"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: ogiltig flagga"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "det går sätta uid till %d: effektiv uid %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "det går inte att sätta gid till %d: effektiv gid %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "kan inte starta felsökaren, felsökningsläge avaktiverat"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: är en katalog"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Jag har inget namn!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1723,319 +1733,319 @@ msgstr ""
"Användning:\t%s [GNU lång flagga] [flagga] ...\n"
"\t\t%s [GNU lång flagga] [flagga] skriptfil ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU långa flaggor:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Skalflaggor:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD eller -c kommando eller -O shopt_flagga\t\t(bara uppstart)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s eller -o flagga\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Skriv â€%s -c 'help set'†för mer information om skalflaggor.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Skriv â€%s -c help†för mer information om inbyggda skalkommandon.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
"Använd kommandot â€bashbug†för att rapportera fel.\n"
"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
-#: shell.c:2072
+#: shell.c:2098
#, 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:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: ogiltig operation"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Felaktig signal"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Avringd"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Avbruten"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Lämnad"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Otillåten instruktion"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Brytpunkt/spårningsfälla"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ABORT-instruktion"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Emulatorfälla"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Flyttalsfel"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Dödad"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Bussfel"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Segmenteringsfel"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Felaktigt systemanrop"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Brutet rör"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Alarmklocka"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Avslutat"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Viktigt I/O-tillstånd"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Stoppad (signal)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Ã…terupptagen"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Barn dött eller stoppat"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Stoppad (terminalläsning)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Stoppad (terminalskrivning)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O möjligt"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU-gräns"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Filgräns"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Alarm (virtuell tid)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Alarm (profilering)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Ändrat fönster"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Postlås"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Användarsignal 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Användarsignal 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT-indata väntar"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "strömavbrott omedelbart förestående"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "systemkrasch omedelbart förestående"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "migrera process till en annan CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "programmeringsfel"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "HFT-övervakningsläge givet"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "HFT-övervakare borttagen"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "HFT-ljudsekvens har avslutat"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Informationsbegäran"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Okänd signal nr %d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "felaktig substitution: ingen avslutande â€%s†i %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: det går inte att tilldela listor till vektormedlemmar"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "det går inte att skapa rör för processubstitution"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "det går inte att skapa barn för processubstitution"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "det går inte att öppna namngivet rör %s för läsning"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "det går inte att öppna namngivet rör %s för skrivning"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "det går inte att duplicera namngivet rör %s som fb %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "kommandoersättning: ignorerade nollbyte i indata"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "det går inte att skapa rör för kommandosubstitution"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "det går inte att skapa barn för kommandosubstitution"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: det går inte att duplicera rör som fb 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: ogiltigt variabelnamn för referens"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: felaktig indirekt expansion"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: felaktigt variabelnamn"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parametern är inte satt"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametern tom eller inte satt"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: delstränguttryck < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: felaktig substitution"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: det går inte att tilldela på detta sätt"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "framtida versioner av skalet kommer att framtvinga evaluering som en aritmetisk substitution"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "felaktig ersättning: ingen avslutande â€`†i %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "ingen matchning: %s"
@@ -2058,21 +2068,21 @@ msgstr "â€)†förväntades"
msgid "`)' expected, found %s"
msgstr "â€)†förväntades, fann %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: binär operator förväntades"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: unär operator förväntades"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "â€]†saknas"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "syntaxfel: oväntat â€%sâ€"
@@ -2081,99 +2091,104 @@ msgstr "syntaxfel: oväntat â€%sâ€"
msgid "invalid signal number"
msgstr "ogiltigt signalnummer"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "fällhanterare: maximal nivå av fällhanterare överskriden (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: felaktigt värde i trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: signalhanterare är SIG_DFL, skickar om %d (%s) till mig själv"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: felaktig signal %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "fel vid import av funktionsdefinition för â€%sâ€"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "skalnivå (%d) för hög, återställer till 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variabeln får inte tilldelas ett värde"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: det går inte att ärva ett värde från en inkompatibel typ"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: tilldelar ett heltal till en namnreferens"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s har tom exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "ogiltigt tecken %d i exportstr för %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "inget â€=†i exportstr för %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: huvudet på shell_variables är inte en funktionskontext"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: ingen kontext global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: huvudet på shell_variables är inte en temporär omgivningsräckvidd"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: går inte att öppna som FILE"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: ogiltigt värde för spårningsfilbeskrivare"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: kompatibilitetsvärde utanför giltigt intervall"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright © 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright © 2022 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2253,12 +2268,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] kommando [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [namn[=värde] …]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [namn[=värde] …] eller declare -p [-aAfFilnrtux] [namn …]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] namn[=värde] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] namn[=värde] … eller typeset -p [-aAfFilnrtux] [namn …]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2345,8 +2360,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o flaggnamn] [--] [arg ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o flaggnamn] [--] [-] [arg …]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2393,8 +2408,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] namn [namn ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [gräns]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [gräns]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2433,12 +2448,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if KOMMANDON; then KOMMANDON; [ elif KOMMANDON; then KOMMANDON; ]... [ else KOMMANDON; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while KOMMANDON; do KOMMANDON; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while KOMMANDON; do KOMMANDON-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until KOMMANDON; do KOMMANDON; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until KOMMANDON; do KOMMANDON-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3748,7 +3763,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3790,7 +3806,9 @@ msgstr ""
" flaggan -u ges. Raden delas upp i fält som vid orduppdelning, och första\n"
" ordet tilldelas det första NAMNet, andra ordet till det andra NAMNet, och\n"
" så vidare, med eventuella återstående ord tilldelade till det sista\n"
-" NAMNet. Endast tecknen som finns i $IFS används som ordavgränsare.\n"
+" NAMNet. Endast tecknen som finns i $IFS används som ordavgränsare. Som\n"
+" standard skyddar tecknet omvänt snedstreck avgränsningstecken och\n"
+" nyrad.\n"
" \n"
" Om inga NAMN anges, lagras den inlästa raden i variabeln REPLY.\n"
" \n"
@@ -3825,7 +3843,7 @@ msgstr ""
" (då den är större än 128), ett fel vid variabeltilldelning inträffar eller\n"
" en ogiltig filbeskrivare ges som argument till -u."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3846,7 +3864,7 @@ msgstr ""
" Returnerar N, eller misslyckande om skalet inte kör en funktion eller\n"
" skript."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4012,7 +4030,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga ges."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4051,7 +4069,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller NAMN endast är\n"
" läsbart."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4083,7 +4101,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4121,7 +4139,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4139,7 +4157,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte N är negativt eller större än $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4162,7 +4180,7 @@ msgstr ""
" Returnerar status på det sista kommandot som körs i FILNAMN, misslyckas\n"
" om FILNAMN inte kan läsas."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4187,7 +4205,7 @@ msgstr ""
" Returnerar framgång om inte jobbstyrning inte är aktiverat eller ett fel\n"
" inträffar."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4344,7 +4362,7 @@ msgstr ""
" Returnerar framgång om UTTR beräknas till sant. Misslyckas ifall UTTR\n"
" beräknas till falskt eller ett ogiltigt argument ges."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4356,7 +4374,7 @@ msgstr ""
" Detta är en synonym till det inbyggda â€testâ€, men det sista argumentet\n"
" mÃ¥ste vara en bokstavlig â€]â€, för att matcha den inledande â€[â€."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4374,7 +4392,7 @@ msgstr ""
" Slutstatus:\n"
" Lyckas alltid."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4441,7 +4459,7 @@ msgstr ""
" Returnerar framgång om inte en SIGSPEC är ogiltig eller en ogiltig flagga\n"
" ges."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4495,7 +4513,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om alla NAMNen finns, misslyckas om något inte finns."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4590,7 +4608,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga anges eller ett fel inträffar."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4624,7 +4642,7 @@ msgstr ""
" Returnerar framgång om inte RÄTTIGHETER är ogiltig eller en ogiltig flagga\n"
" ges."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4674,7 +4692,7 @@ msgstr ""
" Returnerar status på den sista ID, misslyckas ifall ID är ogiltig\n"
" eller en ogiltig flagga ges."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4696,7 +4714,7 @@ msgstr ""
" Returnerar status på den sista PID, misslyckas ifall PID är ogiltig\n"
" eller en ogiltig flagga ges."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4718,7 +4736,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar status för det sist exekverade kommandot."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4748,7 +4766,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4783,7 +4801,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4812,7 +4830,7 @@ msgstr ""
" Slutstatus:\n"
" Returstatusen är returstatusen från RÖR."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4830,7 +4848,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4858,43 +4876,43 @@ msgstr ""
" Slutstatus:\n"
" Returnerar status från det sist exekverade kommandot."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Exekvera kommandon så länge ett test lyckas.\n"
" \n"
-" Expandera och exekvera KOMMANDON så länge det sista kommandot i\n"
-" â€whileâ€-KOMMANDONa har en slutstatus pÃ¥ noll.\n"
+" Expandera och exekvera KOMMANDON-2 så länge det sista kommandot i\n"
+" KOMMANDON har en slutstatus på noll.\n"
" \n"
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Exekvera kommandon så länge ett test inte lyckas.\n"
" \n"
-" Expandera och exekvera KOMMANDON så länge det sista kommandot i\n"
-" â€untilâ€-KOMMANDONa har en slutstatus som inte är noll.\n"
+" Expandera och exekvera KOMMANDON-2 så länge det sista kommandot i\n"
+" KOMMANDON har en slutstatus som inte är noll.\n"
" \n"
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4916,7 +4934,7 @@ msgstr ""
" Slutstatus:\n"
" Kommandot coproc returnerar slutstatusen 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4938,7 +4956,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte NAMN endast är läsbart."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4956,7 +4974,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4980,7 +4998,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen på det återupptagna jobbet."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -4998,7 +5016,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar 1 om UTTRYCK beräknas till 0, returnerar 0 annars."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5045,7 +5063,7 @@ msgstr ""
" Slutstatus:\n"
" 0 eller 1 beroende på värdet av UTTRYCK."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5150,7 +5168,7 @@ msgstr ""
" HISTIGNORE\tEn kolonseparerad lista av mönster som används för att\n"
" \t\tbestämma vilka kommandon som skall sparas i historielistan.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5208,7 +5226,7 @@ msgstr ""
" Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n"
" katalog misslyckas."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5258,7 +5276,7 @@ msgstr ""
" Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n"
" katalog misslyckas."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5310,7 +5328,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga ges eller ett fel inträffar."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5346,7 +5364,7 @@ msgstr ""
" Returnerar framgång om FLGNAMN är aktiverat, misslyckas om en ogiltig\n"
" flagga ges eller FLGNAMN är avaktiverat."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5365,6 +5383,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5394,6 +5414,8 @@ msgstr ""
" %b\texpandera bakstrecksstyrsekvenser i motsvarande argument\n"
" %q\tcitera argumentet på ett sätt som kan återanvändas som\n"
" \t\tindata till ett skal\n"
+" %Q\tsom %q, men tillämpa eventuell precision på det ociterade\n"
+" \t\tciterande\n"
" %(fmt)T skriv ut datum-/tidsträngen som blir resultatet av att\n"
" använda FMT som en formatsträng till strftime(3)\n"
" \n"
@@ -5406,7 +5428,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller ett skriv-\n"
" eller tilldelningsfel inträffar."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5455,7 +5477,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga ges eller ett fel inträffar."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5475,7 +5497,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga ges eller ett fel inträffar."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5530,7 +5552,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller NAMN inte har\n"
" någon kompletteringsspecifikation definierad."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5596,7 +5618,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller VEKTOR är\n"
" oföränderlig eller inte en indexerad vektor."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
diff --git a/po/tr.gmo b/po/tr.gmo
index 49558623..ecd482e3 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index cb0e0cb1..f0a7e842 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -4,14 +4,16 @@
#
# Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2006.
# Volkan Gezer <vlkngzr@gmail.com>, 2013, 2014, 2017.
+# Emir SARI <emir_sari@icloud.com>, 2022
+#
msgid ""
msgstr ""
-"Project-Id-Version: bash 4.4\n"
+"Project-Id-Version: bash-5.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2017-05-05 11:49+0100\n"
-"Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n"
-"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"PO-Revision-Date: 2022-04-11 23:00+0300\n"
+"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
+"Language-Team: Turkish <gnome-turk@gnome.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -22,23 +24,23 @@ msgstr ""
#: arrayfunc.c:66
msgid "bad array subscript"
-msgstr "hatalı dizi indisi"
+msgstr "hatalı dizilim indisi"
#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
-msgstr "%s: removing nameref niteliği kaldırılıyor"
+msgstr "%s: nameref özniteliği kaldırılıyor"
#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
-msgstr "%s: indisli dizi, ilişkisel diziye dönüştürülemez"
+msgstr "%s: indisli dizilim, ilişkisel dizilime dönüştürülemez"
#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
-msgstr "%s: geçersiz ilişkisel dizi anahtarı"
+msgstr "%s: geçersiz ilişkisel dizilim anahtarı"
#: arrayfunc.c:702
#, c-format
@@ -48,7 +50,7 @@ msgstr "%s: sayısal olmayan indise atama yapılamaz"
#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
-msgstr "%s: %s: ilişkisel bir dizi ataması yapılırken indis kullanılmalıdır"
+msgstr "%s: %s: ilişkisel bir dizilim ataması yapılırken indis kullanılmalıdır"
#: bashhist.c:452
#, c-format
@@ -72,12 +74,12 @@ msgstr "%2$s içinde kapatan `%1$c' yok"
#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
-msgstr "%s: ikinokta imi eksik"
+msgstr "%s: iki nokta imi eksik"
#: bashline.c:4555
-#, fuzzy, c-format
+#, c-format
msgid "`%s': cannot unbind in command keymap"
-msgstr "`%s': kısayol değiştirilemiyor"
+msgstr "`%s': komut düğme eşleminde bağıntı kaldırılamıyor"
#: braces.c:327
#, c-format
@@ -85,9 +87,9 @@ msgid "brace expansion: cannot allocate memory for %s"
msgstr "destek genişletme: %s için bellek ayrılamıyor"
#: braces.c:406
-#, fuzzy, c-format
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "destek genişletme: %d öge için bellek ayrılamıyor"
+msgstr "destek genişletme: %u öge için bellek ayrılamıyor"
#: braces.c:451
#, c-format
@@ -97,7 +99,7 @@ msgstr "destek genişletme: `%s' için bellek ayrılamıyor"
#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
-msgstr "`%s': geçersiz takma isim"
+msgstr "`%s': geçersiz takma ad"
#: builtins/bind.def:122 builtins/bind.def:125
msgid "line editing not enabled"
@@ -106,7 +108,7 @@ msgstr "satır düzenleme etkin değil"
#: builtins/bind.def:212
#, c-format
msgid "`%s': invalid keymap name"
-msgstr "`%s': kısayol ismi geçersiz"
+msgstr "`%s': düğme eşlem adı geçersiz"
#: builtins/bind.def:252
#, c-format
@@ -116,7 +118,7 @@ msgstr "%s: okunamıyor: %s"
#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
-msgstr "`%s': iÅŸlev ismi bilinmiyor"
+msgstr "`%s': işlev adı bilinmiyor"
#: builtins/bind.def:336
#, c-format
@@ -139,10 +141,9 @@ msgstr "döngü sayısı"
#: builtins/break.def:139
msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "sadece bir `for', `while' veya `until' döngüsünde anlamlı"
+msgstr "yalnızca bir `for', `while' veya `until' döngüsünde anlamlı"
#: builtins/caller.def:136
-#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
@@ -153,19 +154,14 @@ msgid ""
" The value of EXPR indicates how many call frames to go back before the\n"
" current one; the top frame is frame 0."
msgstr ""
-"Geçerli alt yordam çağrısının bağlamını döndürür.\n"
+"Geçerli altrutin çağrısının bağlamını döndürür.\n"
" \n"
-" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile "
-"kullanıldığında\n"
-" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi "
-"saÄŸlamak\n"
-" için kullanılabilir.\n"
+" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile \"$satır\n"
+" $altrutin $dosyaadı\" döndürür; bu ek bilgi bir yığın izlemesi sağlamak\n"
+" için kullanılabilir.\n"
" \n"
-" İFADE değeri, geçerli çerçeveden önce kaç tane çerçeve çağrılacağını\n"
-" belirtir. Üst çerçeve 0. çerçevedir. \n"
-" Çıkış Durumu:\n"
-" İFADE geçersiz olmadığı ve bir kabuk işlevi çalıştırmadığı durumda 0 "
-"döndürür."
+" İFADE'nin değeri, geçerli çağrı biriminden önce kaç tane geri gidilmesi\n"
+" gerektiğini belirtir; en üst çerçeve, 0. çerçevedir."
#: builtins/cd.def:327
msgid "HOME not set"
@@ -173,7 +169,7 @@ msgstr "HOME atanmamış"
#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
-msgstr "çok fazla argüman"
+msgstr "pek fazla argüman"
#: builtins/cd.def:342
msgid "null directory"
@@ -186,7 +182,7 @@ msgstr "OLDPWD boÅŸ"
#: builtins/common.c:96
#, c-format
msgid "line %d: "
-msgstr "satır %d: "
+msgstr "%d. satır: "
#: builtins/common.c:134 error.c:264
#, c-format
@@ -201,17 +197,17 @@ msgstr "%s: kullanım: "
#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
-msgstr "%s: seçenek bir argüman gerektirir"
+msgstr "%s: seçenek bir argüman gerektiriyor"
#: builtins/common.c:200
#, c-format
msgid "%s: numeric argument required"
-msgstr "%s: sayısal argüman gerekli"
+msgstr "%s: sayısal argüman gerekiyor"
#: builtins/common.c:207
#, c-format
msgid "%s: not found"
-msgstr "%s:yok"
+msgstr "%s: yok"
#: builtins/common.c:216 shell.c:857
#, c-format
@@ -221,12 +217,12 @@ msgstr "%s: seçenek geçersiz"
#: builtins/common.c:223
#, c-format
msgid "%s: invalid option name"
-msgstr "%s: seçenek ismi geçersiz"
+msgstr "%s: seçenek adı geçersiz"
#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
-msgstr "`%s': geçerli bir belirteç değil"
+msgstr "`%s': geçerli bir tanımlayıcı değil"
#: builtins/common.c:240
msgid "invalid octal number"
@@ -253,12 +249,12 @@ msgstr "`%s': geçerli bir iş belirtimi veya süreç numarası değil"
#: builtins/common.c:266 error.c:510
#, c-format
msgid "%s: readonly variable"
-msgstr "%s: salt okunur deÄŸiÅŸken"
+msgstr "%s: saltokunur deÄŸiÅŸken"
#: builtins/common.c:274
#, c-format
msgid "%s: %s out of range"
-msgstr "%s: %s aralık dışı"
+msgstr "%s: %s erim dışı"
#: builtins/common.c:274 builtins/common.c:276
msgid "argument"
@@ -267,7 +263,7 @@ msgstr "argüman"
#: builtins/common.c:276
#, c-format
msgid "%s out of range"
-msgstr "%s aralık dışı"
+msgstr "%s erim dışı"
#: builtins/common.c:284
#, c-format
@@ -305,12 +301,12 @@ msgstr "yazma hatası: %s"
#: builtins/common.c:331
#, c-format
msgid "error setting terminal attributes: %s"
-msgstr "uçbirim nitelikleri ayarlanırken hata: %s"
+msgstr "uçbirim öznitelikleri ayarlanırken hata: %s"
#: builtins/common.c:333
#, c-format
msgid "error getting terminal attributes: %s"
-msgstr "uçbirim nitelikleri alınırken hata: %s"
+msgstr "uçbirim öznitelikleri alınırken hata: %s"
#: builtins/common.c:635
#, c-format
@@ -329,7 +325,7 @@ msgstr "bu sürümde yardım kullanılamıyor"
#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
#, c-format
msgid "%s: cannot unset: readonly %s"
-msgstr "%s:unset yapılamaz: %s salt okunur"
+msgstr "%s: unset yapılamaz: %s saltokunur"
#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
#, c-format
@@ -361,28 +357,28 @@ msgstr "şuan tamamlama işlevi çalıştırılmıyor"
#: builtins/declare.def:134
msgid "can only be used in a function"
-msgstr "sadece bir işlevde kullanılabilir"
+msgstr "yalnızca bir işlevde kullanılabilir"
#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
-msgstr "%s: referans deÄŸeri bir dizi olamaz"
+msgstr "%s: baÅŸvuru deÄŸeri bir dizilim olamaz"
#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
-msgstr "%s: nameref değişkeninin kendine yaptığı referanslara izin verilmiyor"
+msgstr "%s: nameref değişkeninin kendine yaptığı başvurulara izin verilmiyor"
#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
-msgstr "%s: çembersel isim referansı"
+msgstr "%s: çembersel ad başvurusu"
#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
-msgstr "`%s': dosya izleme tanımlayıcısı için geçersiz değer"
+msgstr "%s: ad başvuarusu için geçersiz değişken adı"
#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
@@ -391,7 +387,7 @@ msgstr "işlev yapmak için `-f' kullanılamaz"
#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
-msgstr "%s: salt okunur iÅŸlev"
+msgstr "%s: saltokunur iÅŸlev"
#: builtins/declare.def:824
#, c-format
@@ -406,11 +402,11 @@ msgstr "%s: dizi deÄŸiÅŸkenleri bu yolla iptal edilemez"
#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
-msgstr "%s: ilişkisel dizi, indisli diziye dönüştürülemez"
+msgstr "%s: ilişkisel dizilim, indisli dizilime dönüştürülemez"
#: builtins/enable.def:143 builtins/enable.def:151
msgid "dynamic loading not available"
-msgstr "özdevimli yükleme mümkün değil"
+msgstr "devingen yükleme olanaklı değil"
#: builtins/enable.def:343
#, c-format
@@ -423,19 +419,19 @@ msgid "cannot find %s in shared object %s: %s"
msgstr "%2$s paylaşımlı nesnesinde %1$s bulunamıyor: %3$s"
#: builtins/enable.def:388
-#, fuzzy, c-format
+#, c-format
msgid "%s: dynamic builtin already loaded"
-msgstr "%s: özdevimli olarak yüklenmemiş"
+msgstr "%s: devinen yerleşiği halihazırda yüklenmiş"
#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
-msgstr "%s için yükleme ifadesi hata döndürdü (%d): yüklenmedi"
+msgstr "%s için yükleme işlevi hata döndürdü (%d): yüklenmedi"
#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
-msgstr "%s: özdevimli olarak yüklenmemiş"
+msgstr "%s: devingen olarak yüklenmemiş"
#: builtins/enable.def:543
#, c-format
@@ -502,7 +498,7 @@ msgstr "%s: geçici dosya açılamıyor: %s"
#: builtins/fg_bg.def:152 builtins/jobs.def:284
msgid "current"
-msgstr "ÅŸimdiki"
+msgstr "geçerli"
#: builtins/fg_bg.def:161
#, c-format
@@ -512,21 +508,21 @@ msgstr "%d. iş, iş denetimsiz başlamış"
#: builtins/getopt.c:110
#, c-format
msgid "%s: illegal option -- %c\n"
-msgstr "%s: kuraldışı seçenek -- %c\n"
+msgstr "%s: kural dışı seçenek -- %c\n"
#: builtins/getopt.c:111
#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: seçenek bir argüman gerektirir -- %c\n"
+msgstr "%s: seçenek bir argüman gerektiriyor -- %c\n"
#: builtins/hash.def:91
msgid "hashing disabled"
-msgstr "çitleme iptal edildi"
+msgstr "saÄŸlama iptal edildi"
#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
-msgstr "%s: çitleme tablosu boş\n"
+msgstr "%s: saÄŸlama tablosu boÅŸ\n"
#: builtins/hash.def:267
#, c-format
@@ -544,14 +540,13 @@ msgid ""
"'\n"
"\n"
msgstr ""
+"'\n"
+"\n"
#: builtins/help.def:185
#, c-format
-msgid ""
-"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-"`%s' ile ilgili bir yardım metni yok. `help help' veya `man -k %s' ya da "
-"`info %s'.yazmayı deneyebilirsiniz."
+msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr "`%s' ile ilgili yardım konusu yok. `help help', `man -k %s', `info %s' yazmayı deneyin."
#: builtins/help.def:224
#, c-format
@@ -570,12 +565,12 @@ msgid ""
"\n"
msgstr ""
"Bu kabuk komutları dahili olarak tanımlı. Listeyi görmek için `help'yazın.\n"
-"`AD' gibi bir işlev hakkında bilgi almak için `help AD' yazınız.\n"
-"Kabuk hakkında genel bir bilgi edinmek için `info bash'yazınız.\n"
-"Bu listede olmayan komutlar hakkında bilgi bulmak isterseniz,\n"
-"`man -k' veya `info' yazın.\n"
+"`AD' gibi bir işlev hakkında bilgi almak için `help AD' yazın. Kabuk hakkında\n"
+"genel bir bilgi edinmek için `info bash' yazın.\n"
+"Bu listede olmayan\n"
+"komutlar hakkında bilgi bulmak isterseniz `man -k' veya `info' yazın.\n"
"\n"
-"Bir ismin yanında bir yıldız imi (*) varsa komut iptal edilmiş demektir.\n"
+"Bir adın yanında bir yıldız imi (*) varsa komut iptal edilmiş demektir.\n"
"\n"
#: builtins/history.def:155
@@ -632,7 +627,7 @@ msgstr "%s: dosya tanıtıcı belirtimi geçersiz"
#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
-msgstr "%d: dosya tanıtıcı geçersiz: %s"
+msgstr "%d: dosya açıklayıcısı geçersiz: %s"
#: builtins/mapfile.def:288 builtins/mapfile.def:326
#, c-format
@@ -642,7 +637,7 @@ msgstr "%s: geçersiz satır sayısı"
#: builtins/mapfile.def:299
#, c-format
msgid "%s: invalid array origin"
-msgstr "%s: geçersiz dizi kökeni"
+msgstr "%s: geçersiz dizilim kökeni"
#: builtins/mapfile.def:316
#, c-format
@@ -651,7 +646,7 @@ msgstr "%s: geçersiz geri çağırım niceliği"
#: builtins/mapfile.def:349
msgid "empty array variable name"
-msgstr "boş bir dizi değişken adı"
+msgstr "boş bir dizilim değişken adı"
#: builtins/mapfile.def:370
msgid "array variable support required"
@@ -680,7 +675,7 @@ msgstr "uyarı: %s: %s"
#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
-msgstr "biçim ayıklama sorunu: %s"
+msgstr "biçim ayrıştırma sorunu: %s"
#: builtins/printf.def:885
msgid "missing hex digit for \\x"
@@ -689,7 +684,7 @@ msgstr "\\x için onaltılık rakam eksik"
#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
-msgstr "evrensel kod rakamı eksik \\%c"
+msgstr "\\%c için unicode rakamı eksik"
#: builtins/pushd.def:199
msgid "no other directory"
@@ -727,12 +722,10 @@ msgid ""
" \twith its position in the stack\n"
" \n"
" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown by\n"
" \tdirs when invoked without options, starting with zero.\n"
" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
+" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
"Geçerli hatırlanan dizinlerin listesini görüntüler. Dizinler\n"
@@ -778,26 +771,26 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma\n"
-" dizini yığıtın tepesine gelecek şekilde yığıtı döndürür. Hiç\n"
+"Dizin yığınının en üstüne bir dizin ekler veya geçerli çalışma\n"
+" dizini yığının tepesine gelecek şekilde yığını döndürür. Hiç\n"
" argüman verilmemişse en üstteki iki dizini yer değiştirir.\n"
" \n"
" Seçenekler\n"
-" -n\tYığıta dizin eklenirken dizinin normal değişimini yoksayar\n"
-" \tböylece sadece yığıt değiştirilir.\n"
+" -n\tYığına dizin eklenirken dizinin normal değişimini yok sayar\n"
+" \tböylece yalnızca yığın değiştirilir.\n"
" Argümanlar:\n"
" +N\t(`dirs' tarafından gösterilen listenin solundan saymaya\n"
" \tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n"
-" \tyığıtı döndürür.\n"
+" \tyığını döndürür.\n"
" \n"
" -N\t(`dirs' tarafından gösterilen listenin sağından saymaya\n"
" \tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n"
-" \tyığıtı döndürür.\n"
+" \tyığını döndürür.\n"
" \n"
-" dizin\tDiZiNi yeni çalışma dizini yaparak dizin yığıtının\n"
+" dizin\tDiZiNi yeni çalışma dizini yaparak dizin yığınının\n"
" \ttepesine ekler.\n"
" \n"
-" Dizin yığıtını `dirs' komutuyla görebilirsiniz."
+" Dizin yığınını `dirs' komutuyla görebilirsiniz."
#: builtins/pushd.def:748
msgid ""
@@ -819,13 +812,13 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"Dizin yığıtından girdileri siler. Hiç argüman verilmemişse,\n"
-" yığıtın en üstündeki dizini yığıttan kaldırır ve yığıtın\n"
+"Dizin yığınından girdileri siler. Hiç argüman verilmemişse\n"
+" yığının en üstündeki dizini yığından kaldırır ve yığının\n"
" tepesinde kalan dizine geçer.\n"
" \n"
" Seçenekler:\n"
-" -n\tdizinleri yığıttan silerken normal dizin değişikliğini\n"
-" \tengeller, böylece sadece yığıt değiştirilmiş olur. \n"
+" -n\tdizinleri yığından silerken normal dizin değişikliğini\n"
+" \tengeller, böylece yalnızca yığın değiştirilmiş olur. \n"
" \n"
" Argümanlar:\n"
" +N\t`dirs' tarafından gösterilen listenin solundan saymaya\n"
@@ -835,7 +828,7 @@ msgstr ""
" \tsıfırla başlandığında N'inci girdiyi siler. Örneğin,\n"
" \t`popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n"
" \n"
-" Dizin yığıtını `dirs' komutuyla görebilirsiniz."
+" Dizin yığınını `dirs' komutuyla görebilirsiniz."
#: builtins/read.def:280
#, c-format
@@ -849,7 +842,7 @@ msgstr "okuma hatası: %d: %s"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
-msgstr "sadece bir işlev veya betikten kaynaklı olarak `return' yapılabilir"
+msgstr "yalnızca bir işlev veya betikten kaynaklı olarak `return' yapılabilir"
#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
@@ -881,11 +874,11 @@ msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez"
#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
-msgstr "%s: kabuk seçenek ismi geçersiz"
+msgstr "%s: kabuk seçenek adı geçersiz"
#: builtins/source.def:128
msgid "filename argument required"
-msgstr "dosya ismi argüman gerekir"
+msgstr "dosya adı argüman gerekir"
#: builtins/source.def:154
#, c-format
@@ -991,7 +984,7 @@ msgstr "Çıkılıyor..."
#: error.c:287
#, c-format
msgid "INFORM: "
-msgstr "BÄ°LGÄ°LENDÄ°R:"
+msgstr "BÄ°LGÄ°LENDÄ°R: "
#: error.c:462
msgid "unknown command error"
@@ -1050,7 +1043,7 @@ msgstr "%s: azami kaynak yuvalama sınırı aşıldı (%d)"
#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)"
+msgstr "%s: azami işlev yuvalama sınırı aşıldı (%d)"
#: execute_cmd.c:5467
#, c-format
@@ -1093,20 +1086,19 @@ msgstr "ifade özyineleme düzeyi aşıldı"
#: expr.c:291
msgid "recursion stack underflow"
-msgstr "özyineleme yığıtı alttan taştı"
+msgstr "özyineleme yığını alttan taştı"
#: expr.c:477
msgid "syntax error in expression"
-msgstr "ifadede sözdizimi hatası"
+msgstr "ifadede sözdizim hatası"
#: expr.c:521
msgid "attempted assignment to non-variable"
msgstr "değişken olmayana atama yapmaya çalışıldı"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "ifadede sözdizimi hatası"
+msgstr "değişken atamada sözdizim hatası"
#: expr.c:544 expr.c:911
msgid "division by 0"
@@ -1134,11 +1126,11 @@ msgstr "eksik `)'"
#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
-msgstr "sözdizimi hatası: terim umuluyordu"
+msgstr "sözdizim hatası: terim umuluyordu"
#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
-msgstr "sözdizimi hatası: geçersiz aritmetik işleci"
+msgstr "sözdizim hatası: geçersiz aritmetik işleci"
#: expr.c:1513
#, c-format
@@ -1150,9 +1142,8 @@ msgid "invalid arithmetic base"
msgstr "geçersiz sayı tabanı"
#: expr.c:1582
-#, fuzzy
msgid "invalid integer constant"
-msgstr "%s: geçersiz satır sayısı"
+msgstr "geçersiz tamsayı sabiti"
#: expr.c:1598
msgid "value too great for base"
@@ -1175,8 +1166,7 @@ msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor"
#: input.c:266
#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr ""
-"fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor"
+msgstr "fd %d tanıtıcısındaki bash girdisi için yeni dosya tanıtıcısı ayrılamıyor"
#: input.c:274
#, c-format
@@ -1256,7 +1246,7 @@ msgstr "Bilinmeyen durum"
#: jobs.c:2001
#, c-format
msgid "(core dumped) "
-msgstr "(çekirdek döküldü)"
+msgstr "(çekirdek döküldü) "
#: jobs.c:2020
#, c-format
@@ -1284,9 +1274,9 @@ msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: iÅŸ %d durdu"
#: jobs.c:3564
-#, fuzzy, c-format
+#, c-format
msgid "%s: no current jobs"
-msgstr "%s: böyle bir iş yok"
+msgstr "%s: geçerli iş yok"
#: jobs.c:3571
#, c-format
@@ -1322,9 +1312,8 @@ msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp başarısız"
#: jobs.c:4447
-#, fuzzy
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: satır düzeni"
+msgstr "initialize_job_control: arka planda iÅŸ denetimi yok"
#: jobs.c:4463
msgid "initialize_job_control: line discipline"
@@ -1378,9 +1367,8 @@ msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında"
#: lib/malloc/malloc.c:1001
-#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
-msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında"
+msgstr "free: alttan taşma saptandı; magic8 hasarlı"
#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
@@ -1395,9 +1383,8 @@ msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında"
#: lib/malloc/malloc.c:1141
-#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
-msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında"
+msgstr "realloc: alttan taşma saptandı; magic8 hasarlı"
#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
@@ -1476,16 +1463,16 @@ msgstr "%s'deki posta okundu\n"
#: make_cmd.c:317
msgid "syntax error: arithmetic expression required"
-msgstr "sözdizimi hatası: aritmetik ifadesi gerekli"
+msgstr "sözdizim hatası: aritmetik ifadesi gerekli"
#: make_cmd.c:319
msgid "syntax error: `;' unexpected"
-msgstr "sözdizimi hatası: `;' beklenmiyordu"
+msgstr "sözdizim hatası: `;' beklenmiyordu"
#: make_cmd.c:320
#, c-format
msgid "syntax error: `((%s))'"
-msgstr "sözdizimi hatası: `((%s))'"
+msgstr "sözdizim hatası: `((%s))'"
#: make_cmd.c:572
#, c-format
@@ -1504,12 +1491,8 @@ msgstr "make_redirection: yönlendirme yönergesi `%d' aralık dışında"
#: parse.y:2393
#, c-format
-msgid ""
-"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
-"truncated"
-msgstr ""
-"shell_getc: shell_input_line_size (%zu) SIZE_MAX değerini aşıyor (%lu): "
-"satır kırpıldı"
+msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
+msgstr "shell_getc: shell_input_line_size (%zu) SIZE_MAX değerini aşıyor (%lu): satır kırpıldı"
#: parse.y:2826
msgid "maximum here-document count exceeded"
@@ -1527,16 +1510,16 @@ msgstr "`]]' aranırken beklenmedik dosya sonu"
#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "koşullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'"
+msgstr "koşullu ifadede sözdizim hatası: beklenmedik jeton `%s'"
#: parse.y:4705
msgid "syntax error in conditional expression"
-msgstr "koşullu ifadede sözdizimi hatası"
+msgstr "koşullu ifadede sözdizim hatası"
#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
-msgstr "beklenmedik dizgecik `%s', `)' umuluyordu"
+msgstr "beklenmedik jeton `%s', `)' umuluyordu"
#: parse.y:4787
msgid "expected `)'"
@@ -1554,7 +1537,7 @@ msgstr "koşullu tek terimli işlece beklenmedik argüman"
#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "beklenmedik dizgecik `%s', koşullu iki terimli işleç umuluyordu"
+msgstr "beklenmedik jeton `%s', koşullu iki terimli işleç umuluyordu"
#: parse.y:4869
msgid "conditional binary operator expected"
@@ -1572,35 +1555,35 @@ msgstr "koşullu iki terimli işlece beklenmedik argüman"
#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
-msgstr "koÅŸullu komutta beklenmeyen dizgecik `%c'"
+msgstr "koÅŸullu komutta beklenmeyen jeton `%c'"
#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
-msgstr "koÅŸullu komutta beklenmeyen dizgecik `%s'"
+msgstr "koÅŸullu komutta beklenmeyen jeton `%s'"
#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
-msgstr "koÅŸullu komutta beklenmeyen dizgecik %d"
+msgstr "koÅŸullu komutta beklenmeyen jeton %d"
#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
-msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası"
+msgstr "beklenmeyen jeton `%s' yakınında sözdizim hatası"
#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
-msgstr "`%s' yakınında sözdizimi hatası"
+msgstr "`%s' yakınında sözdizim hatası"
#: parse.y:6365
msgid "syntax error: unexpected end of file"
-msgstr "sözdizimi hatası: beklenmeyen dosya sonu"
+msgstr "sözdizim hatası: beklenmeyen dosya sonu"
#: parse.y:6365
msgid "syntax error"
-msgstr "sözdizimi hatası"
+msgstr "sözdizim hatası"
#: parse.y:6428
#, c-format
@@ -1725,7 +1708,7 @@ msgstr "%s: Bir dizin"
#: shell.c:1881
msgid "I have no name!"
-msgstr "Hiç ismim yok!"
+msgstr "Adsızım ben!"
#: shell.c:2035
#, c-format
@@ -1751,25 +1734,22 @@ msgstr "Kabuk seçenekleri:\n"
#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneği\t\t(sadece çağrı için)\n"
+msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneği\t\t(yalnızca çağrı için)\n"
#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
-msgstr "\t-%s ya da -o seçeneği\n"
+msgstr "\t-%s veya -o seçeneği\n"
#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-"Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' "
-"yazın.\n"
+msgstr "Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' yazın.\n"
#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-"Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n"
+msgstr "Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n"
#: shell.c:2070
#, c-format
@@ -1786,8 +1766,7 @@ msgstr "bash ana sayfası: <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 yazılımı kullanımı hakkında genel yardım: <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:757
#, c-format
@@ -1980,21 +1959,21 @@ msgstr "süreç ikamesi için alt süreç yapılamıyor"
#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
-msgstr "isimli boru %s okumak için açılamıyor"
+msgstr "adlı boru %s okumak için açılamıyor"
#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
-msgstr "isimli boru %s yazmak için açılamıyor"
+msgstr "adlı boru %s yazmak için açılamıyor"
#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "isimli boru %s fd %d olarak yinelenemiyor"
+msgstr "adlı boru %s fd %d olarak yinelenemiyor"
#: subst.c:6213
msgid "command substitution: ignored null byte in input"
-msgstr "komut ikamesi: girdideki null bayt yoksayıldı"
+msgstr "komut ikamesi: girdideki null bayt yok sayıldı"
#: subst.c:6353
msgid "cannot make pipe for command substitution"
@@ -2024,19 +2003,19 @@ msgid "%s: invalid variable name"
msgstr "%s: geçersiz değişken adı"
#: subst.c:7256
-#, fuzzy, c-format
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: parametre boş ya da değer atanmamış"
+msgstr "%s: parametre ayarlanmamış"
#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
-msgstr "%s: parametre boş ya da değer atanmamış"
+msgstr "%s: parametre boş veya değer atanmamış"
#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
-msgstr "%s: altdizge ifadesi < 0"
+msgstr "%s: altdizi ifadesi < 0"
#: subst.c:9281 subst.c:9302
#, c-format
@@ -2049,12 +2028,8 @@ msgid "$%s: cannot assign in this way"
msgstr "$%s: bu yolla atama yapılmaz"
#: subst.c:9814
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-"kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye "
-"zorlayacak"
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
+msgstr "kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye zorlayacak"
#: subst.c:10367
#, c-format
@@ -2099,18 +2074,18 @@ msgid "missing `]'"
msgstr "eksik `]'"
#: test.c:899
-#, fuzzy, c-format
+#, c-format
msgid "syntax error: `%s' unexpected"
-msgstr "sözdizimi hatası: `;' beklenmiyordu"
+msgstr "sözdizim hatası: '%s' beklenmiyordu"
#: trap.c:220
msgid "invalid signal number"
msgstr "geçersiz sinyal numarası"
#: trap.c:325
-#, fuzzy, c-format
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)"
+msgstr "tuzak işleyicisi: en yüksek tuzak işleyicisi düzeyi aşıldı (%d)"
#: trap.c:414
#, c-format
@@ -2119,10 +2094,8 @@ msgstr "run_pending_traps:trap_list[%d] içinde hatalı değer: %p"
#: trap.c:418
#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-"run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek"
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr "run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek"
#: trap.c:487
#, c-format
@@ -2151,7 +2124,7 @@ msgstr "%s: değişkene değer atanmamış olabilir"
#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
-msgstr "%s: isim referansına tamsayı ataması"
+msgstr "%s: ad başvurusuna tamsayı ataması"
#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
@@ -2182,8 +2155,7 @@ msgstr "pop_var_context: genel değişkenler bağlamı yok"
#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
-"pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil"
+msgstr "pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil"
#: variables.c:6387
#, c-format
@@ -2201,17 +2173,12 @@ msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: uyumlulukdeğeri aralık dışı"
#: version.c:46 version2.c:46
-#, fuzzy
msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş."
+msgstr "Telif hakkı (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"Lisans GPLv3+: GNU GPL sürüm 3 veya sonrası <http://gnu.org/licenses/gpl."
-"html>\n"
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "Lisans GPLv3+: GNU GPL sürüm 3 veya sonrası <http://gnu.org/licenses/gpl.html>\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2248,20 +2215,15 @@ msgstr "%s: %s:%d: %lu bayt ayrılamıyor"
#: builtins.c:45
msgid "alias [-p] [name[=value] ... ]"
-msgstr "alias [-p] [isim[=deÄŸer] ... ]"
+msgstr "alias [-p] [ad[=deÄŸer] ... ]"
#: builtins.c:49
msgid "unalias [-a] name [name ...]"
-msgstr "unalias [-a] isim [isim ...]"
+msgstr "unalias [-a] ad [ad ...]"
#: builtins.c:53
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpvsPVSX] [-m anahtar eşleniği] [-f dosyaadı] [-q isim] [-u isim] [-r "
-"anahtar sırası] [-x keyseq:kabuk-komutu] [keyseq:satırokuma-işlevi veya "
-"satırokuma-komutu]"
+msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr "bind [-lpvsPVSX] [-m anahtar eşleniği] [-f dosyaadı] [-q ad] [-u ad] [-r anahtar sırası] [-x keyseq:kabuk-komutu] [keyseq:satırokuma-işlevi veya satırokuma-komutu]"
#: builtins.c:56
msgid "break [n]"
@@ -2292,18 +2254,16 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
-#, fuzzy
msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilnrtux] [-p] [isim[=deÄŸer] ...]"
+msgstr "declare [-aAfFgiIlnrtux] [-p] [ad[=deÄŸer] ...]"
#: builtins.c:80
-#, fuzzy
msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilnrtux] [-p] isim[=deÄŸer] ..."
+msgstr "typeset [-aAfFgiIlnrtux] [-p] ad[=deÄŸer] ..."
#: builtins.c:82
msgid "local [option] name[=value] ..."
-msgstr "local [seçenek] isim[=değer] ..."
+msgstr "local [seçenek] ad[=değer] ..."
#: builtins.c:85
msgid "echo [-neE] [arg ...]"
@@ -2315,21 +2275,19 @@ msgstr "echo [-n] [arg ...]"
#: builtins.c:92
msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr "enable [-a] [-dnps] [-f dosyaadı] [isim ...]"
+msgstr "enable [-a] [-dnps] [-f dosyaadı] [ad ...]"
#: builtins.c:94
msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-#, fuzzy
msgid "getopts optstring name [arg ...]"
-msgstr "getopts optstring isim [arg]"
+msgstr "getopts seçenekdizisi ad [arg ...]"
#: builtins.c:98
-#, fuzzy
msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
-msgstr "exec [-cl] [-a isim] [komut [argümanlar ...]] [yönlendirme ...]"
+msgstr "exec [-cl] [-a ad] [komut [argüman ...]] [y. yönlendirme ...]"
#: builtins.c:100
msgid "exit [n]"
@@ -2353,19 +2311,15 @@ msgstr "bg [görev_tan ...]"
#: builtins.c:116
msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr "hash [-lr] [-p yoladı] [-dt] [isim ...]"
+msgstr "hash [-lr] [-p yoladı] [-dt] [ad ...]"
#: builtins.c:119
msgid "help [-dms] [pattern ...]"
msgstr "help [-dms] [desen ...]"
#: builtins.c:123
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [-d başlangıç] [n] veya history -anrw [dosyaadı] veya history -"
-"ps arg [arg...]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
+msgstr "history [-c] [-d başlangıç] [n] veya history -anrw [dosyaadı] veya history -ps arg [arg...]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2376,24 +2330,16 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
msgstr "disown [-h] [-ar] [görevtan ... | pid ...]"
#: builtins.c:134
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-"kill [-s sinspec | -n signum | -sigspec] pid | görevtan ... veya kill -l "
-"[sigspec]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
+msgstr "kill [-s sinspec | -n signum | -sigspec] pid | görevtan ... veya kill -l [sigspec]"
#: builtins.c:136
msgid "let arg [arg ...]"
msgstr "let arg [arg ...]"
#: builtins.c:138
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a dizi] [-d sonlandırıcı] [-i metin] [-n nkarakter] [-N "
-"nkarakter] [-p istem] [-t zamanaşımı] [-u fd] [isim ...]"
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgstr "read [-ers] [-a dizi] [-d sonlandırıcı] [-i metin] [-n nkarakter] [-N nkarakter] [-p istem] [-t zamanaşımı] [-u fd] [ad ...]"
#: builtins.c:140
msgid "return [n]"
@@ -2405,15 +2351,15 @@ msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
-msgstr "unset [-f] [-v] [-n] [isim ...]"
+msgstr "unset [-f] [-v] [-n] [ad ...]"
#: builtins.c:146
msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr "export [-fn] [isim[=deÄŸer] ...] veya export -p"
+msgstr "export [-fn] [ad[=deÄŸer] ...] veya export -p"
#: builtins.c:148
msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr "readonly [-aAf] [isim[=deÄŸer] ...] veya readonly -p"
+msgstr "readonly [-aAf] [ad[=deÄŸer] ...] veya readonly -p"
#: builtins.c:150
msgid "shift [n]"
@@ -2445,7 +2391,7 @@ msgstr "trap [-lp] [[arg] sinyal_tan ...]"
#: builtins.c:168
msgid "type [-afptP] name [name ...]"
-msgstr "type [-afptP] isim [isim ...]"
+msgstr "type [-afptP] ad [ad ...]"
#: builtins.c:171
msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
@@ -2456,9 +2402,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [kip]"
#: builtins.c:177
-#, fuzzy
msgid "wait [-fn] [-p var] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgstr "wait [-fn] [-p deÄŸiÅŸken] [kimlik ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2466,7 +2411,7 @@ msgstr "wait [pid ...]"
#: builtins.c:184
msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr "for Ä°SÄ°M [in KELÄ°MELER ... ] ; do KOMUTLAR; done"
+msgstr "for AD [in SÖZCÜKLER ... ] ; do KOMUTLAR; done"
#: builtins.c:186
msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
@@ -2474,7 +2419,7 @@ msgstr "for (( ifade1; ifade2; ifade3 )); do KOMUTLAR; done"
#: builtins.c:188
msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr "select Ä°SÄ°M [in KELÄ°MELER ... ;] do KOMUTLAR; done"
+msgstr "select AD [in SÖZCÜKLER ... ;] do KOMUTLAR; done"
#: builtins.c:190
msgid "time [-p] pipeline"
@@ -2482,15 +2427,11 @@ msgstr "time [-p] zamantüneli"
#: builtins.c:192
msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr "case KELÄ°ME in [DESEN [| DESEN]...) KOMUTLAR ;;]... esac"
+msgstr "case SÖZCÜK in [DİZGİ [| DİZGİ]...) KOMUTLAR ;;]... esac"
#: builtins.c:194
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if KOMUTLAR; then KOMUTLAR; [ elif KOMUTLAR; then KOMUTLAR; ]... [ else "
-"KOMUTLAR; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if KOMUTLAR; then KOMUTLAR; [ elif KOMUTLAR; then KOMUTLAR; ]... [ else KOMUTLAR; ] fi"
#: builtins.c:196
msgid "while COMMANDS; do COMMANDS; done"
@@ -2502,11 +2443,11 @@ msgstr "until KOMUTLAR; do KOMUTLAR; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
-msgstr "coproc [isim] command [yönlendirmeler]"
+msgstr "coproc [ad] command [yönlendirmeler]"
#: builtins.c:202
msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr "function isim { KOMUTLAR ; } veya isim () { KOMUTLAR ; }"
+msgstr "function ad { KOMUTLAR ; } veya ad () { KOMUTLAR ; }"
#: builtins.c:204
msgid "{ COMMANDS ; }"
@@ -2526,7 +2467,7 @@ msgstr "[[ ifade ]]"
#: builtins.c:212
msgid "variables - Names and meanings of some shell variables"
-msgstr "variables - Bazı kabuk değişkenlerinin isim ve anlamları"
+msgstr "variables - Bazı kabuk değişkenlerinin ad ve anlamları"
#: builtins.c:215
msgid "pushd [-n] [+N | -N | dir]"
@@ -2549,47 +2490,24 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] biçim [argümanlar]"
#: builtins.c:231
-#, fuzzy
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o seçenek] [-A işlem] [-G genelyol] [-"
-"W kelimelistesi] [-F işlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] "
-"[isim ...]"
+msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
+msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o seçenek] [-A eylem] [-G global kısım] [-W sözcük listesi] [-F işlev] [-C komut] [-X süzgeç] [-P önek] [-S sonek] [ad ...]"
#: builtins.c:235
-#, fuzzy
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
-"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o seçenek] [-A işlem] [-G genelyol] [-W "
-"kelimelistesi] [-F işlev] [-C komut] [-X süzgeçyolu] [-P önek] [-S sonek] "
-"[kelime]"
+msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr "compgen [-abcdefgjksuv] [-o seçenek] [-A eylem] [-G global kısım] [-W sözcük listesi] [-F işlev] [-C komut] [-X süzgeç] [-P önek] [-S sonek] [sözcük]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o seçenek] [-DE] [isim ...]"
+msgstr "compopt [-o|+o seçenek] [-DEI] [ad ...]"
#: builtins.c:242
-msgid ""
-"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-"mapfile [-d sonlandrc] [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C "
-"geriçağırım] [-c parçacık] [dizi]"
+msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "mapfile [-d sonlandrc] [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c parçacık] [dizi]"
#: builtins.c:244
-#, fuzzy
-msgid ""
-"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
-msgstr ""
-"readarray [-n say] [-O kaynak] [-s say] [-t] [-u fd] [-C geriçağırım] [-c "
-"parçacık] [dizi]"
+msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "readarray [-d sınırlandırıcı] [-n sayım] [-O köken] [-s sayım] [-t] [-u fd] [-C geri çağırma] [-c kuantum] [dizilim]"
#: builtins.c:256
msgid ""
@@ -2606,25 +2524,23 @@ msgid ""
" -p\tprint all defined aliases in a reusable format\n"
" \n"
" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
+" alias returns true unless a NAME is supplied for which no alias has been\n"
" defined."
msgstr ""
"Rumuz tanımla veya görüntüle.\n"
" \n"
-" `alias' argümansız kullanıldığında standart çıktıda kullanılabilecek "
-"tüm\n"
-" rumuzları `alias İSİM=DEĞER' biçiminde listeler.\n"
+" `alias' argümansız kullanıldığında standart çıktıda kullanılabilecek tüm\n"
+" rumuzları `alias AD=DEĞER' biçiminde listeler.\n"
" \n"
-" Diğer durumda DEĞERi verilmiş her İSİM için bir rumuz tanımlanır.\n"
-" DEÄžERdeki boÅŸluk, rumuz geniÅŸletildiÄŸinde sonraki kelimenin rumuz\n"
+" Diğer durumda DEĞERi verilmiş her AD için bir rumuz tanımlanır.\n"
+" DEĞERdeki boşluk, rumuz genişletildiğinde sonraki sözcüğün rumuz\n"
" ikamesi için denetlenmesine sebep olur.\n"
" \n"
" Seçenekler:\n"
-" -p\tTüm rumuzları tekrar kullanılabilir biçimde listele\n"
+" -p\tTüm rumuzları yeniden kullanılabilir biçimde listele\n"
" \n"
" Çıkış Durumu:\n"
-" Hiçbir şeyin rumuzu olmayan bir İSİM verilmedikçe alias doğru döndürür."
+" Hiçbir şeyin rumuzu olmayan bir AD verilmedikçe alias doğru döndürür."
#: builtins.c:278
msgid ""
@@ -2640,7 +2556,7 @@ msgstr ""
" Seçenekler:\n"
" -a\ttüm rumuz tanımlamalarını kaldır\n"
" \n"
-" İSİM mevcut olmayan bir rumuz olmadığı takdirde doğru\n"
+" AD mevcut olmayan bir rumuz olmadığı takdirde doğru\n"
" döndür."
#: builtins.c:291
@@ -2655,74 +2571,64 @@ msgid ""
" Options:\n"
" -m keymap Use KEYMAP as the keymap for the duration of this\n"
" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
" vi-command, and vi-insert.\n"
" -l List names of functions.\n"
" -P List function names and bindings.\n"
" -p List functions and bindings in a form that can be\n"
" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
+" -S List key sequences that invoke macros and their values\n"
+" -s List key sequences that invoke macros and their values\n"
" in a form that can be reused as input.\n"
" -V List variable names and values\n"
" -v List variable names and values in a form that can\n"
" be reused as input.\n"
" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
+" -u function-name Unbind all keys which are bound to the named function.\n"
" -r keyseq Remove the binding for KEYSEQ.\n"
" -f filename Read key bindings from FILENAME.\n"
" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
" \t\t\t\tKEYSEQ is entered.\n"
-" -X List key sequences bound with -x and associated "
-"commands\n"
+" -X List key sequences bound with -x and associated commands\n"
" in a form that can be reused as input.\n"
" \n"
" Exit Status:\n"
" bind returns 0 unless an unrecognized option is given or an error occurs."
msgstr ""
-"Readline tuş atamalarını ve değişkenlerini ayarla.\n"
+"Readline düğme atamalarını ve değişkenlerini ayarla.\n"
" \n"
-" Bir tuÅŸ dizilimini bir Readline iÅŸlevine veya makrosuna baÄŸlar ya da\n"
+" Bir düğme dizilimini bir Readline işlevine veya makrosuna bağlar veya\n"
" bir Readline değişkeni atar. Seçeneksiz argüman sözdizimi ~/.initrc\n"
" içinde bulunana eşdeğerdir, ama tek bir argüman olarak aktarılması\n"
" gerekir: bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
" \n"
" Seçenekler:\n"
-" -m TUŞDİZİSİ Bu komut süresince kısayol olarak TUŞDİZİSİ\n"
-" kullanılır. Olası kısayol isimleri: emacs,\n"
+" -m DÜĞMEEŞLEM Bu komut süresince kısayol olarak DÜĞMEEŞLEM\n"
+" kullanılır. Olası kısayol adları: emacs,\n"
" emacs-standard, emacs-meta, emacs-ctlx, vi,\n"
" vi-move, vi-command ve vi-insert.\n"
-" -l Ä°ÅŸlev isimlerini listeler.\n"
-" -P İşlev isimlerini ve kısayolları listeler.\n"
-" -p İşlev isimlerini ve kısayolları, girdi olarak\n"
+" -l İşlev adlarını listeler.\n"
+" -P İşlev adlarını ve kısayolları listeler.\n"
+" -p İşlev adlarını ve kısayolları, girdi olarak\n"
" kullanılabilir biçimde listeler.\n"
-" -S Makroları çağıran tuş dizilerini ve değerlerini\n"
+" -S Makroları çağıran düğme dizilerini ve değerlerini\n"
" listeler\n"
-" -s Makroları çağıran tuş dizilerini ve değerlerini\n"
-" girdi olarak kullanılabilir biçimde listeler. "
-"-V DeÄŸiÅŸken isimlerini ve deÄŸerlerini listeler.\n"
-" -v DeÄŸiÅŸken isimlerini ve deÄŸerlerini girdi olarak\n"
+" -s Makroları çağıran düğme dizilerini ve değerlerini\n"
+" girdi olarak kullanılabilir biçimde listeler.\n"
+" -V Değişken adlarını ve değerlerini listeler.\n"
+" -v Değişken adlarını ve değerlerini girdi olarak\n"
" kullanılabilir biçimde listeler.\n"
-" -q İŞLEV İsmi belirtilen İŞLEVi çağıran tuşlar hakkında "
-"sorgu.\n"
-" -u İŞLEV İsmi belirtilen İŞLEVi çağıran tüm tuş "
-"kısayollarını\n"
+" -q İŞLEV Adı belirtilen İŞLEVi çağıran düğmeler hakkında sorgu.\n"
+" -u İŞLEV Adı belirtilen İŞLEVi çağıran tüm düğme kısayollarını\n"
" kaldırır.\n"
-" -r TUŞDİZİSİ TUŞDİZİSİ için mevcut kısayolları kaldırır.\n"
-" -x TUÅžDÄ°ZÄ°SÄ°:KABUK-KOMUTU\tTUÅžDÄ°ZÄ°SÄ°nin her giriliÅŸinde KABUK-"
-"KOMUTUnun\n"
+" -r DÜĞMEDİZİSİ DÜĞMEDİZİSİ için mevcut kısayolları kaldırır.\n"
+" -x DÜĞMEDİZİSİ:KABUK-KOMUTU\tDÜĞMEDİZİSİnin her girilişinde KABUK-KOMUTUnun\n"
" \t\t\t\tçalıştırılmasını sağlar.\n"
-" -X Tuş dizilerini -x ve ilişkili komutlarını tekrar "
-"bir girdi olarak kullanılabilecek\n"
-" biçimde listeler.\n"
+" -X Düğme dizilerini -x ve ilişkili komutlarını yeniden\n"
+" bir girdi olarak kullanılabilecek biçimde listeler.\n"
" \n"
" Çıkış Durumu:\n"
-" tanınmayan bir seçenek girilmediği veya bir hata oluşmadığı durumda 0 "
-"döndürür."
+" tanınmayan bir seçenek girilmediği veya bir hata oluşmadığı durumda 0 döndürür."
#: builtins.c:330
msgid ""
@@ -2736,8 +2642,7 @@ msgid ""
msgstr ""
"for, while veya until döngülerinden çık.\n"
" \n"
-" Bir FOR, WHILE veya UNTIL döngüsünden çık. Eğer N belirtilmişse, N "
-"iliÅŸkili\n"
+" Bir FOR, WHILE veya UNTIL döngüsünden çık. Eğer N belirtilmişse N ilişkili\n"
" döngüden çık.\n"
" \n"
" Çıkış Durumu:\n"
@@ -2756,20 +2661,29 @@ msgstr ""
"for, while veya until döngülerine devam et.\n"
" \n"
" İlişkili FOR, WHILE veya UNTIL döngüsünün sonraki adımına devam eder.\n"
-" N tanımlanmışsa, N'inci ilişkili döngüye devam eder.\n"
+" N tanımlanmışsa N'inci ilişkili döngüye devam eder.\n"
" \n"
" Çıkış Durumu:\n"
" N, 1 veya daha büyük olmadığında çıkış durumu 0'dır."
#: builtins.c:354
#, fuzzy
+#| msgid ""
+#| "Execute shell builtins.\n"
+#| " \n"
+#| " Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
+#| " lookup. This is useful when you wish to reimplement a shell builtin\n"
+#| " as a shell function, but need to execute the builtin within the function.\n"
+#| " \n"
+#| " Exit Status:\n"
+#| " Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
+#| " not a shell builtin.."
msgid ""
"Execute shell builtins.\n"
" \n"
" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
+" as a shell function, but need to execute the builtin within the function.\n"
" \n"
" Exit Status:\n"
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2778,14 +2692,11 @@ msgstr ""
"Kabuk dahillerini çalıştır.\n"
" \n"
" Komut araması yapmadan KABUK-DAHİLİ, ARGÜMANLAR argümanları ile\n"
-" çalıştır. Bu, bir KABUK-DAHİLİ, bir kabuk işlevi olarak tekrar uygulamak "
-"isteyip\n"
-" işlev içerisinde dahili olanı da çalıştırmanız gerektiğinizde "
-"kullanışlıdır.\n"
+" çalıştır. Bu, bir KABUK-DAHİLİ, bir kabuk işlevi olarak yeniden uygulamak isteyip\n"
+" işlev içerisinde dahili olanı da çalıştırmanız gerektiğinizde kullanışlıdır.\n"
" \n"
" Çıkış Durumu:\n"
-" KABUK-DAHİLİnin çıkış durumunu veya eğer KABUK-DAHİLİ değilse false "
-"döndürür."
+" KABUK-DAHİLİnin çıkış durumunu veya eğer KABUK-DAHİLİ değilse false döndürür."
#: builtins.c:369
msgid ""
@@ -2804,38 +2715,29 @@ msgid ""
msgstr ""
"Geçerli alt yordam çağrısının bağlamını döndürür.\n"
" \n"
-" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile "
-"kullanıldığında\n"
-" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi "
-"saÄŸlamak\n"
+" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile kullanıldığında\n"
+" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi sağlamak\n"
" için kullanılabilir.\n"
" \n"
" İFADE değeri, geçerli çerçeveden önce kaç tane çerçeve çağrılacağını\n"
" belirtir. Üst çerçeve 0. çerçevedir. \n"
" Çıkış Durumu:\n"
-" İFADE geçersiz olmadığı ve bir kabuk işlevi çalıştırmadığı durumda 0 "
-"döndürür."
+" İFADE geçersiz olmadığı ve bir kabuk işlevi çalıştırmadığı durumda 0 döndürür."
#: builtins.c:387
msgid ""
"Change the shell working directory.\n"
" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
+" Change the current directory to DIR. The default DIR is the value of the\n"
" HOME shell variable.\n"
" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
+" The variable CDPATH defines the search path for the directory containing\n"
+" DIR. Alternative directory names in CDPATH are separated by a colon (:).\n"
+" A null directory name is the same as the current directory. If DIR begins\n"
" with a slash (/), then CDPATH is not used.\n"
" \n"
-" If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
+" If the directory is not found, and the shell option `cdable_vars' is set,\n"
+" the word is assumed to be a variable name. If that variable has a value,\n"
" its value is used for DIR.\n"
" \n"
" Options:\n"
@@ -2851,53 +2753,40 @@ msgid ""
" \t\tattributes as a directory containing the file attributes\n"
" \n"
" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname "
-"component\n"
+" `..' is processed by removing the immediately previous pathname component\n"
" back to a slash or the beginning of DIR.\n"
" \n"
" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
+" Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
" -P is used; non-zero otherwise."
msgstr ""
"Kabuk çalışma dizinini değiştir.\n"
" \n"
-" Geçerli dizini DİZİN olarak değiştir. Öntanımlı dizin kabuk değişkeninin "
-"EV\n"
+" Geçerli dizini DİZİN olarak değiştir. Öntanımlı dizin kabuk değişkeninin EV\n"
" dizini deÄŸeridir.\n"
" \n"
-" CDPATH değişkeni, DİZİN içeren dizinler için arama yolunu tanımlar. "
-"CDPATH\n"
-" için alternatif dizin isimleri iki nokta (:) ile ayrılır.\n"
-" Boş dizin adı, geçerli dizinle aynıdır. Eğer DİZİN bölü (/) ile "
-"başlıyorsa, CDPATH\n"
+" CDPATH değişkeni, DİZİN içeren dizinler için arama yolunu tanımlar. CDPATH\n"
+" için alternatif dizin adları iki nokta (:) ile ayrılır.\n"
+" Boş dizin adı, geçerli dizinle aynıdır. Eğer DİZİN bölü (/) ile başlıyorsa CDPATH\n"
" kullanılmaz.\n"
" \n"
-" Eğer dizin bulunamazsa ve kabuk seçeneği `cdable_vars' ayarlanmışsa, "
-"kelime\n"
-" bir değişken adı olarak varsayılır. Eğer değişken bir değere sahipse, "
-"deÄŸeri DÄ°ZÄ°N\n"
+" Eğer dizin bulunamazsa ve kabuk seçeneği `cdable_vars' ayarlanmışsa sözcük\n"
+" bir değişken adı olarak varsayılır. Eğer değişken bir değere sahipse değeri DİZİN\n"
" için kullanılır\n"
" \n"
" Seçenekler:\n"
-" -L\tsembolik bağlantıların takip edilmesini zorla: '..' "
-"örneklerinin\n"
+" -L\tsembolik bağlantıların takip edilmesini zorla: '..' örneklerinin\n"
" \t\tişlenmesinden sonra DİZİN içindeki sembolik bağlantıları çöz\n"
-" -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan: '..' "
-"örneklerinin\n"
+" -P\tsembolik bağlantıları takip etmeden fiziksel dizini kullan: '..' örneklerinin\n"
" \t\tişlenmesinden önce DİZİN içindeki sembolik bağlantıları çöz\n"
-" -e\teğer -P seçeneği belirtilmişse ve geçerli çalışma dizini "
-"başarılı şekilde\n"
-" \tbelirlenemiyorsa, sıfır olmayan bir durumla çık\n"
-" -@\tdestekleyen sistemlerde, dosya niteliklerini içeren bir dizin "
-"olarak uzatılmış\n"
+" -e\teğer -P seçeneği belirtilmişse ve geçerli çalışma dizini başarılı şekilde\n"
+" \tbelirlenemiyorsa sıfır olmayan bir durumla çık\n"
+" -@\tdestekleyen sistemlerde, dosya niteliklerini içeren bir dizin olarak uzatılmış\n"
" niteliklere sahip bir dosya sun \n"
-" Öntanımlı olan `-L' tanımlanmış gibi sembolik bağlantıları takip "
-"etmektir.\n"
+" Öntanımlı olan `-L' tanımlanmış gibi sembolik bağlantıları takip etmektir.\n"
" \n"
" Çıkış Durumu:\n"
-" Eğer dizin değişmişse ve -P kullanıldığında $PWD başarılı ayarlanırsa 0; "
-"diÄŸer durumda\n"
+" Eğer dizin değişmişse ve -P kullanıldığında $PWD başarılı ayarlanırsa 0; diğer durumda\n"
" sıfır olmayan bir değer döndürür."
#: builtins.c:425
@@ -2915,11 +2804,10 @@ msgid ""
" Returns 0 unless an invalid option is given or the current directory\n"
" cannot be read."
msgstr ""
-"Geçerli çalışma dizininin ismini yazdır.\n"
+"Geçerli çalışma dizininin adını yazdır.\n"
" \n"
" Seçenekler:\n"
-" -L\teğer geçerli çalışma dizinini isimlendirmişse $PWD değerini "
-"yazdır\n"
+" -L\teğer geçerli çalışma dizinini adlandırmışsa $PWD değerini yazdır\n"
" -P\thiçbir sembolik bağlantı kullanmadan fiziksel dizini yazdır\n"
" \n"
" Öntanımlı olarak `pwd', `-L' tanımlanmış şekilde davranır.\n"
@@ -2972,8 +2860,7 @@ msgid ""
"Execute a simple command or display information about commands.\n"
" \n"
" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
+" information about the specified COMMANDs. Can be used to invoke commands\n"
" on disk when a function with the same name exists.\n"
" \n"
" Options:\n"
@@ -2987,15 +2874,12 @@ msgid ""
msgstr ""
"Basit bir komut çalıştır veya komutlar hakkında bilgi görüntüle.\n"
" \n"
-" KOMUTU ARGümanları ile kabuk işlevi aramasını ihmal ederek çalıştırır "
-"veya\n"
-" belirtilen KOMUTlar hakkında bilgi görüntüler. Aynı isimde bir işlev "
-"varsa\n"
+" KOMUTU ARGümanları ile kabuk işlevi aramasını ihmal ederek çalıştırır veya\n"
+" belirtilen KOMUTLAR hakkında bilgi görüntüler. Aynı adda bir işlev varsa\n"
" diskte komutları çalıştırmak için kullanılabilir.\n"
" \n"
" Seçenekler:\n"
-" -p YOL için, tüm standart yardımcıları bulabilmek için bir "
-"öntanımlı değer\n"
+" -p YOL için, tüm standart yardımcıları bulabilmek için bir öntanımlı değer\n"
" \tkullan\n"
" -v `type' dahilisine benzer bir KOMUT açıklaması göster\n"
" -V her KOMUTun fazla açıklamasını göster\n"
@@ -3005,6 +2889,42 @@ msgstr ""
#: builtins.c:490
#, fuzzy
+#| msgid ""
+#| "Set variable values and attributes.\n"
+#| " \n"
+#| " Declare variables and give them attributes. If no NAMEs are given,\n"
+#| " display the attributes and values of all variables.\n"
+#| " \n"
+#| " Options:\n"
+#| " -f\trestrict action or display to function names and definitions\n"
+#| " -F\trestrict display to function names only (plus line number and\n"
+#| " \t\tsource file when debugging)\n"
+#| " -g\tcreate global variables when used in a shell function; otherwise\n"
+#| " \t\tignored\n"
+#| " -p\tdisplay the attributes and value of each NAME\n"
+#| " \n"
+#| " Options which set attributes:\n"
+#| " -a\tto make NAMEs indexed arrays (if supported)\n"
+#| " -A\tto make NAMEs associative arrays (if supported)\n"
+#| " -i\tto make NAMEs have the `integer' attribute\n"
+#| " -l\tto convert NAMEs to lower case on assignment\n"
+#| " -n\tmake NAME a reference to the variable named by its value\n"
+#| " -r\tto make NAMEs readonly\n"
+#| " -t\tto make NAMEs have the `trace' attribute\n"
+#| " -u\tto convert NAMEs to upper case on assignment\n"
+#| " -x\tto make NAMEs export\n"
+#| " \n"
+#| " Using `+' instead of `-' turns off the given attribute.\n"
+#| " \n"
+#| " Variables with the integer attribute have arithmetic evaluation (see\n"
+#| " the `let' command) performed when the variable is assigned a value.\n"
+#| " \n"
+#| " When used in a function, `declare' makes NAMEs local, as with the `local'\n"
+#| " command. The `-g' option suppresses this behavior.\n"
+#| " \n"
+#| " Exit Status:\n"
+#| " Returns success unless an invalid option is supplied or a variable\n"
+#| " assignment error occurs."
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3037,8 +2957,7 @@ msgid ""
" Variables with the integer attribute have arithmetic evaluation (see\n"
" the `let' command) performed when the variable is assigned a value.\n"
" \n"
-" When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+" When used in a function, `declare' makes NAMEs local, as with the `local'\n"
" command. The `-g' option suppresses this behavior.\n"
" \n"
" Exit Status:\n"
@@ -3047,43 +2966,37 @@ msgid ""
msgstr ""
"DeÄŸiÅŸken deÄŸer ve niteliklerini ayarla.\n"
" \n"
-" Değişkenleri ayarla ve nitelik ver. Eğer İSİM verilmemişse, tüm "
-"değişkenlerin, niteliklerini ve değerlerini görüntüle.\n"
+" Değişkenleri ayarla ve nitelik ver. Eğer AD verilmemişse tüm değişkenlerin, niteliklerini ve değerlerini görüntüle.\n"
" \n"
" Seçenekler:\n"
-" -f\teylemi veya işlev ismi ile tanımları gösterimini kısıtla\n"
-" -F\tsadece işlev isim gösterimlerini kısıtla (ek olarak satır sayısı "
-"ve hata ayıklarken\n"
+" -f\teylemi veya işlev adı ile tanımları gösterimini kısıtla\n"
+" -F\tyalnızca işlev ad gösterimlerini kısıtla (ek olarak satır sayısı ve hata ayıklarken\n"
" \t\tkaynak dosyayı)\n"
-" -g\tbir kabuk fonksiyonunda kullanıldığında evrensel değişken "
-"oluÅŸtur,\n"
-" \t\taksi takdirde yoksayılır\n"
-" -p\ther İSİMin değeri ve niteliklerini görüntüle\n"
+" -g\tbir kabuk işlevinde kullanıldığında evrensel değişken oluştur,\n"
+" \t\taksi takdirde yok sayılır\n"
+" -p\ther AD'ın değeri ve niteliklerini görüntüle\n"
" \n"
" Nitelik ayarlayan seçenekler:\n"
-" -a\tİSİMleri indisli diziler yapmak için (destekleniyorsa)\n"
-" -A\tİSİMleri ilişkisel dizi yapmak için (destekleniyorsa)\n"
-" -i\tİSİMleri `integer' niteliği sahibi yapmak için\n"
-" -l\tİSİMleri atamada küçük harfe dönüştürmek için\n"
-" -n\tÄ°SÄ°Mi deÄŸeriyle isimlendirilmiÅŸ bir deÄŸiÅŸkene referans yapmak "
-"için\n"
-" -r\tİSİMleri salt okunur yapmak için\n"
-" -t\tİSİMlerin `trace' niteliği sahibi yapmak için\n"
-" -u\tİSİMleri atamada büyük harfe dönüştürmek için\n"
-" -x\tİSİMleri dışarı çıkarabilir yapmak için\n"
+" -a\tAD'ları indisli diziler yapmak için (destekleniyorsa)\n"
+" -A\tAD'ları ilişkisel dizi yapmak için (destekleniyorsa)\n"
+" -i\tAD'ları `integer' niteliği sahibi yapmak için\n"
+" -l\tAD'ları atamada küçük harfe dönüştürmek için\n"
+" -n\tAD'ı değeriyle ad bir değişkene referans yapmak için\n"
+" -r\tAD'ları saltokunur yapmak için\n"
+" -t\tAD'ların `trace' niteliği sahibi yapmak için\n"
+" -u\tAD'ları atamada büyük harfe dönüştürmek için\n"
+" -x\tAD'ları dışarı çıkarabilir yapmak için\n"
" \n"
" `-' yerine `+' kullanmak belirtilen niteliği kapatır.\n"
" \n"
-" Tamsayı niteliğine sahip değişkenler, bir değere atandıklarında "
-"aritmetik değerlendirmeye tabi tutulurlar (`let' komutuna bakın).\n"
+" Tamsayı niteliğine sahip değişkenler, bir değere atandıklarında aritmetik değerlendirmeye tabi tutulurlar (`let' komutuna bakın).\n"
" \n"
-" Bir fonksiyonda kullanıldığında, `declare' İSİMleri, `local' komutu\n"
+" Bir işlevde kullanıldığında, `declare' AD'ları, `local' komutu\n"
"gibi yerel\n"
" yapar. `-g' seçeneği bu davranışı iptal eder.\n"
" \n"
" Çıkış Durumu:\n"
-" Geçersiz bir değer sağlanmadığı veya değişken atama hatası olmadığı "
-"sürece\n"
+" Geçersiz bir değer sağlanmadığı veya değişken atama hatası olmadığı sürece\n"
" başarılı döner."
#: builtins.c:532
@@ -3092,7 +3005,7 @@ msgid ""
" \n"
" A synonym for `declare'. See `help declare'."
msgstr ""
-"DeÄŸiÅŸken isim ve niteliklerini ayarla.\n"
+"DeÄŸiÅŸken ad ve niteliklerini ayarla.\n"
" \n"
" `declare' ile eş anlamlıdır. Bkz. `help declare'."
@@ -3112,25 +3025,52 @@ msgid ""
msgstr ""
"Yerel değişkenleri tanımla.\n"
" \n"
-" İSİM adıyla bir yerel değişken oluştur ve DEĞER ata. SEÇENEK `declare'\n"
+" AD adıyla bir yerel değişken oluştur ve DEĞER ata. SEÇENEK `declare'\n"
" tarafından kabul edilen herhangi bir seçenek olabilir.\n"
" \n"
-" Yerel değişkenler sadece bir işlev içerisinde kullanılabilirler ve "
-"tanımlandıkları\n"
+" Yerel değişkenler yalnızca bir işlev içerisinde kullanılabilirler ve tanımlandıkları\n"
" işleve ve alt işlevlerine görünebilirler.\n"
" \n"
" Çıkış Durumu:\n"
-" Geçersiz bir seçenek verilmediğinde, bir değişken hatası oluşmadığında "
-"veya\n"
+" Geçersiz bir seçenek verilmediğinde, bir değişken hatası oluşmadığında veya\n"
" kabuk bir işlev çalıştırmıyorsa başarılı döner."
#: builtins.c:557
#, fuzzy
+#| msgid ""
+#| "Write arguments to the standard output.\n"
+#| " \n"
+#| " Display the ARGs, separated by a single space character and followed by a\n"
+#| " newline, on the standard output.\n"
+#| " \n"
+#| " Options:\n"
+#| " -n\tdo not append a newline\n"
+#| " -e\tenable interpretation of the following backslash escapes\n"
+#| " -E\texplicitly suppress interpretation of backslash escapes\n"
+#| " \n"
+#| " `echo' interprets the following backslash-escaped characters:\n"
+#| " \\a\talert (bell)\n"
+#| " \\b\tbackspace\n"
+#| " \\c\tsuppress further output\n"
+#| " \\e\tescape character\n"
+#| " \\E\tescape character\n"
+#| " \\f\tform feed\n"
+#| " \\n\tnew line\n"
+#| " \\r\tcarriage return\n"
+#| " \\t\thorizontal tab\n"
+#| " \\v\tvertical tab\n"
+#| " \\\\\tbackslash\n"
+#| " \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n"
+#| " \t\t0 to 3 octal digits\n"
+#| " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
+#| " \t\tcan be one or two hex digits\n"
+#| " \n"
+#| " Exit Status:\n"
+#| " Returns success unless a write error occurs."
msgid ""
"Write arguments to the standard output.\n"
" \n"
-" Display the ARGs, separated by a single space character and followed by "
-"a\n"
+" Display the ARGs, separated by a single space character and followed by a\n"
" newline, on the standard output.\n"
" \n"
" Options:\n"
@@ -3154,11 +3094,9 @@ msgid ""
" \t\t0 to 3 octal digits\n"
" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
" \t\tcan be one or two hex digits\n"
-" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
-"HHHH.\n"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n"
" \t\tHHHH can be one to four hex digits.\n"
-" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
-"value\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n"
" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
" \n"
" Exit Status:\n"
@@ -3186,8 +3124,7 @@ msgstr ""
" \\t\tyatay sekme\n"
" \\v\tdikey sekme\n"
" \\\\\tters bölü\n"
-" \\0nnn\tASCII kodu NNN (sekizlik) olan karakter. NNN 0-3 arası "
-"sekizli\n"
+" \\0nnn\tASCII kodu NNN (sekizlik) olan karakter. NNN 0-3 arası sekizli\n"
" \t\trakamlardan oluÅŸabilir.\n"
" \\xHH\tdeğeri HH (onaltılık) olan sekiz bit karakter. HH bir veya iki\n"
" \t\tonaltılık rakam olabilir\n"
@@ -3245,35 +3182,32 @@ msgid ""
msgstr ""
"Kabuk yerleşiklerini etkinleştir/devre dışı bırak.\n"
" \n"
-" Dahili kabuk komutlarını etkinleştirir ve devre dışı bırakır. Devre "
-"dışı\n"
-" bırakmak bir kabuk yerleşiği ile aynı isme sahip bir disk komutunu tam\n"
+" Dahili kabuk komutlarını etkinleştirir ve devre dışı bırakır. Devre dışı\n"
+" bırakmak bir kabuk yerleşiği ile aynı ada sahip bir disk komutunu tam\n"
" bir yol adı kullanmadan çalıştırmanızı sağlar. \n"
" Seçenekler:\n"
-" -a\ttüm yerleşikler listesini etkin olup olmadıkları bilgisi ile "
-"yazdır\n"
-" -n\ther İSİMi devre dışı bırak veya devre dışı olanları listele\n"
-" -p\tyerleşik listesini tekrar kullanılabilir biçimde yazdır\n"
-" -s\tsadece Posix `özel' yerleşiklerinin isimlerini yazdır\n"
+" -a\ttüm yerleşikler listesini etkin olup olmadıkları bilgisi ile yazdır\n"
+" -n\ther AD'ı devre dışı bırak veya devre dışı olanları listele\n"
+" -p\tyerleşik listesini yeniden kullanılabilir biçimde yazdır\n"
+" -s\tyalnızca Posix `özel' yerleşiklerinin adlarını yazdır\n"
" \n"
" Hareketli yüklemeyi denetleyen seçenekler:\n"
-" -f\tİSİM yerleşiğini paylaşılan DOSYAADI nesnesinden yükle\n"
+" -f\tAD yerleşiğini paylaşılan DOSYAADI nesnesinden yükle\n"
" -d\t-f ile yüklenmiş bir yerleşiği kaldır\n"
" \n"
-" Seçenek olmazsa her İSİM etkinleştirilir.\n"
+" Seçenek olmazsa her AD etkinleştirilir.\n"
" \n"
" Kabuk yerleşiği sürümü yerine $PATH içerisinde bulunan `test' kullanmak\n"
" için `enable -n test' yazın.\n"
" \n"
" Çıktı Durumu:\n"
-" İSİM bir kabuk yerleşiği değilse ve hata oluşmazsa başarılı döner."
+" AD bir kabuk yerleşiği değilse ve hata oluşmazsa başarılı döner."
#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+" Combine ARGs into a single string, use the result as input to the shell,\n"
" and execute the resulting commands.\n"
" \n"
" Exit Status:\n"
@@ -3281,8 +3215,7 @@ msgid ""
msgstr ""
"Argümanları kabuk komutu olarak çalıştır.\n"
" \n"
-" ARGümanları tek bir dizgeye birleştir, sonucu kabuğa girdi olarak "
-"kullan,\n"
+" ARGümanları tek bir diziye birleştir, sonucu kabuğa girdi olarak kullan,\n"
" ve sonuçlanan komutları çalıştır.\n"
" \n"
" Çıkış Durumu:\n"
@@ -3290,6 +3223,44 @@ msgstr ""
#: builtins.c:652
#, fuzzy
+#| msgid ""
+#| "Parse option arguments.\n"
+#| " \n"
+#| " Getopts is used by shell procedures to parse positional parameters\n"
+#| " as options.\n"
+#| " \n"
+#| " OPTSTRING contains the option letters to be recognized; if a letter\n"
+#| " is followed by a colon, the option is expected to have an argument,\n"
+#| " which should be separated from it by white space.\n"
+#| " \n"
+#| " Each time it is invoked, getopts will place the next option in the\n"
+#| " shell variable $name, initializing name if it does not exist, and\n"
+#| " the index of the next argument to be processed into the shell\n"
+#| " variable OPTIND. OPTIND is initialized to 1 each time the shell or\n"
+#| " a shell script is invoked. When an option requires an argument,\n"
+#| " getopts places that argument into the shell variable OPTARG.\n"
+#| " \n"
+#| " getopts reports errors in one of two ways. If the first character\n"
+#| " of OPTSTRING is a colon, getopts uses silent error reporting. In\n"
+#| " this mode, no error messages are printed. If an invalid option is\n"
+#| " seen, getopts places the option character found into OPTARG. If a\n"
+#| " required argument is not found, getopts places a ':' into NAME and\n"
+#| " sets OPTARG to the option character found. If getopts is not in\n"
+#| " silent mode, and an invalid option is seen, getopts places '?' into\n"
+#| " NAME and unsets OPTARG. If a required argument is not found, a '?'\n"
+#| " is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
+#| " printed.\n"
+#| " \n"
+#| " If the shell variable OPTERR has the value 0, getopts disables the\n"
+#| " printing of error messages, even if the first character of\n"
+#| " OPTSTRING is not a colon. OPTERR has the value 1 by default.\n"
+#| " \n"
+#| " Getopts normally parses the positional parameters ($0 - $9), but if\n"
+#| " more arguments are given, they are parsed instead.\n"
+#| " \n"
+#| " Exit Status:\n"
+#| " Returns success if an option is found; fails if the end of options is\n"
+#| " encountered or an error occurs."
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3331,59 +3302,39 @@ msgid ""
msgstr ""
"Seçenek argümanlarını ayıklar.\n"
" \n"
-" Getopts kabuk betikleri tarafından konumsal parametreleri "
-"çözümlemekte\n"
+" Getopts kabuk betikleri tarafından konumsal parametreleri çözümlemekte\n"
" kullanılır.\n"
" \n"
-" SÇNDİZGESİ tanınan seçenek karakterlerini içerir; bir karakterden "
-"sonra\n"
-" bir ikinokta imi (:) geliyorsa seçeneğin ondan bir boşlukla ayrılmış "
-"bir\n"
+" SÇNSİ tanınan seçenek karakterlerini içerir; bir karakterden sonra\n"
+" bir ikinokta imi (:) geliyorsa seçeneğin ondan bir boşlukla ayrılmış bir\n"
" argümana sahip olacağı umulur.\n"
" \n"
-" Her çağrılışında getopts işlenecek sonraki argümanın indisini "
-"OPTIND\n"
-" kabuk deÄŸiÅŸkenine ve AD deÄŸiÅŸkenini de mevcut deÄŸilse "
-"ilklendirerek\n"
-" sonraki seçeneği $AD kabuk değişkenine yerleştirir. OPTIND kabuğun ya "
-"da\n"
-" bir kabuk betiğinin her çağrılışında 1 ile ilklendirilir. Bir "
-"seçenek\n"
-" bir argüman gerektirdiğinde getopts argümanı OPTARG "
-"deÄŸiÅŸkenine\n"
+" Her çağrılışında getopts işlenecek sonraki argümanın indisini OPTIND\n"
+" kabuk deÄŸiÅŸkenine ve AD deÄŸiÅŸkenini de mevcut deÄŸilse ilklendirerek\n"
+" sonraki seçeneği $AD kabuk değişkenine yerleştirir. OPTIND kabuğun veya\n"
+" bir kabuk betiğinin her çağrılışında 1 ile ilklendirilir. Bir seçenek\n"
+" bir argüman gerektirdiğinde getopts argümanı OPTARG değişkenine\n"
" yerleÅŸtirir.\n"
" \n"
-" getopts hataları iki yolla raporlayabilir. Eğer SÇNDİZGESİnin "
-"ilk\n"
-" karakteri bir ':' ise sessiz hata raporlaması kullanılır. Bu "
-"kipte\n"
-" hiçbir hata iletisi basılmaz. Bir geçersiz seçenek saptanırsa "
-"getopt\n"
-" OPTARG'a bulunan seçenek karakterini yerleştirir. Bir gerekli "
-"argüman\n"
-" verilmemiÅŸse, getopts AD'a bir ':' yerleÅŸtirir. Getopts sessiz "
-"kipte\n"
-" değilse ve geçersiz bir seçenek görüldüğünde, getopts ? karakterini "
-"AD'a\n"
-" yerleştirir ve OPTARG değişkenini kaldırır. Eğer bir gerekli "
-"argüman\n"
-" bulunamazsa ve getopts sessiz kipte deÄŸilse AD'a ? "
-"karakteri\n"
+" getopts hataları iki yolla raporlayabilir. Eğer SÇNSİnin ilk\n"
+" karakteri bir ':' ise sessiz hata raporlaması kullanılır. Bu kipte\n"
+" hiçbir hata iletisi basılmaz. Bir geçersiz seçenek saptanırsa getopt\n"
+" OPTARG'a bulunan seçenek karakterini yerleştirir. Bir gerekli argüman\n"
+" verilmemiÅŸse getopts AD'a bir ':' yerleÅŸtirir. Getopts sessiz kipte\n"
+" değilse ve geçersiz bir seçenek görüldüğünde, getopts ? karakterini AD'a\n"
+" yerleştirir ve OPTARG değişkenini kaldırır. Eğer bir gerekli argüman\n"
+" bulunamazsa ve getopts sessiz kipte deÄŸilse AD'a ? karakteri\n"
" yerleştirilir, OPTARG kaldırılır ve bir tanı iletisi basılır.\n"
" \n"
-" OPTERR değişkeninin değeri 0 ise SÇNDİZGESİnin ilk karakteri bir "
-"':'\n"
-" olmasa bile hata iletileri gösterilmez. OPTERR değişkeninin "
-"öntanımlı\n"
+" OPTERR değişkeninin değeri 0 ise SÇNSİnin ilk karakteri bir ':'\n"
+" olmasa bile hata iletileri gösterilmez. OPTERR değişkeninin öntanımlı\n"
" deÄŸeri 1'dir.\n"
" \n"
-" Getopts normalde konumsal parametreleri ($0 - $9) çözümlese de "
-"baÅŸka\n"
+" Getopts normalde konumsal parametreleri ($0 - $9) çözümlese de başka\n"
" argümanlar verilmişse bunları çözümler.\n"
" \n"
" Çıktı Durumu:\n"
-" Bir seçenek bulunduğunda başarılı, seçenek sonuna gelindiğinde veya "
-"bir hata oluştuğunda başarısız döner.\n"
+" Bir seçenek bulunduğunda başarılı, seçenek sonuna gelindiğinde veya bir hata oluştuğunda başarısız döner.\n"
" encountered or an error occurs."
#: builtins.c:694
@@ -3391,8 +3342,7 @@ msgid ""
"Replace the shell with the given command.\n"
" \n"
" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n"
" any redirections take effect in the current shell.\n"
" \n"
" Options:\n"
@@ -3400,27 +3350,24 @@ msgid ""
" -c\texecute COMMAND with an empty environment\n"
" -l\tplace a dash in the zeroth argument to COMMAND\n"
" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+" If the command cannot be executed, a non-interactive shell exits, unless\n"
" the shell option `execfail' is set.\n"
" \n"
" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+" Returns success unless COMMAND is not found or a redirection error occurs."
msgstr ""
"KabuÄŸu verilen komutla deÄŸiÅŸtir.\n"
" \n"
" KOMUTU, belirtilen program ile değiştirerek çalıştır.\n"
-" ARGÜMANLAR, KOMUTUN argümanları olur. Eğer KOMUT belirtilmemişse, tüm\n"
+" ARGÜMANLAR, KOMUTUN argümanları olur. Eğer KOMUT belirtilmemişse tüm\n"
" yönlendirmeler geçerli kabukta uygulanır.\n"
" \n"
" Seçenekler:\n"
-" -a isim\tİSMİ, KOMUTun sıfırıncı argümanına ata\n"
+" -a ad\tAD'ı, KOMUT'un sıfırıncı argümanına ata\n"
" -c\tKOMUTu boş bir ortamla çalıştır\n"
" -l\tKOMUTun sıfırıncı argümanına bir çizgi koy\n"
" \n"
-" Eğer komut çalıştırılamıyorsa, `execfail' ayarlanmadığı sürece "
-"etkileÅŸimsiz kabuk\n"
+" Eğer komut çalıştırılamıyorsa `execfail' ayarlanmadığı sürece etkileşimsiz kabuk\n"
" çıkış yapar.\n"
" \n"
" Çıkış Durumu:\n"
@@ -3442,8 +3389,7 @@ msgstr ""
msgid ""
"Exit a login shell.\n"
" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
+" Exits a login shell with exit status N. Returns an error if not executed\n"
" in a login shell."
msgstr ""
"Oturum kabuğundan çık.\n"
@@ -3455,15 +3401,13 @@ msgstr ""
msgid ""
"Display or execute commands from the history list.\n"
" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+" fc is used to list or edit and re-execute commands from the history list.\n"
" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
" string, which means the most recent command beginning with that\n"
" string.\n"
" \n"
" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
+" -e ENAME\tselect which editor to use. Default is FCEDIT, then EDITOR,\n"
" \t\tthen vi\n"
" -l \tlist lines instead of editing\n"
" -n\tomit line numbers when listing\n"
@@ -3477,18 +3421,14 @@ msgid ""
" the last command.\n"
" \n"
" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
+" Returns success or status of executed command; non-zero if an error occurs."
msgstr ""
"Geçmiş listesindeki komutları görüntüle veya çalıştır\n"
" \n"
-" fc, komut geçmişi listesindeki komutları listelemek, düzenlemek "
-"ve\n"
-" yeniden çalıştırmak için kullanılır. İLK ve SON olarak numara "
-"vererek\n"
-" bir aralık belirtilebileceği gibi İLK bir dizge de olabilir, bu "
-"takdirde\n"
-" bu dizge ile başlayan en son komut anlamına gelir.\n"
+" fc, komut geçmişi listesindeki komutları listelemek, düzenlemek ve\n"
+" yeniden çalıştırmak için kullanılır. İLK ve SON olarak numara vererek\n"
+" bir aralık belirtilebileceği gibi İLK bir dizi de olabilir, bu takdirde\n"
+" bu dizi ile başlayan en son komut anlamına gelir.\n"
" \n"
" Seçenekler:\n"
" -e DÜZENLEYİCİ ile hangi düzenleyicinin kullanılacağı belirtilir.\n"
@@ -3505,8 +3445,7 @@ msgstr ""
" r' yazarak en son komut çalıştırılabilir.\n"
" \n"
" Çıktı Durumu:\n"
-" Başarılı veya çalıştırılan komut durumu döndürülür; hata oluştuğunda "
-"sıfır harici değer döner."
+" Başarılı veya çalıştırılan komut durumu döndürülür; hata oluştuğunda sıfır harici değer döner."
#: builtins.c:764
msgid ""
@@ -3532,31 +3471,26 @@ msgstr ""
msgid ""
"Move jobs to the background.\n"
" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's "
-"notion\n"
+" Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's notion\n"
" of the current job is used.\n"
" \n"
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-"İşi arkaplana taşı.\n"
+"İşi arka plana taşı.\n"
" \n"
" `&' ile başlatılmışçasına İŞ_BELİRTİMİni artalana yerleştirir.\n"
-" Ä°Åž_BELÄ°RTÄ°MÄ° verilmemiÅŸse, iÅŸ belirtimi olarak o an ki iÅŸ "
-"kullanılır. \n"
+" İŞ_BELİRTİMİ verilmemişse iş belirtimi olarak o an ki iş kullanılır. \n"
" Çıktı Durumu:\n"
-" İş kontrolü etkin olmadığı veya bir hata oluşmadığı sürece başarılı "
-"döner."
+" İş denetimi etkin olmadığı veya bir hata oluşmadığı sürece başarılı döner."
#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
+" no arguments are given, information about remembered commands is displayed.\n"
" \n"
" Options:\n"
" -d\tforget the remembered location of each NAME\n"
@@ -3576,6 +3510,24 @@ msgstr ""
#: builtins.c:818
#, fuzzy
+#| msgid ""
+#| "Display information about builtin commands.\n"
+#| " \n"
+#| " Displays brief summaries of builtin commands. If PATTERN is\n"
+#| " specified, gives detailed help on all commands matching PATTERN,\n"
+#| " otherwise the list of help topics is printed.\n"
+#| " \n"
+#| " Options:\n"
+#| " -d\toutput short description for each topic\n"
+#| " -m\tdisplay usage in pseudo-manpage format\n"
+#| " -s\toutput only a short usage synopsis for each topic matching\n"
+#| " \t\tPATTERN\n"
+#| " \n"
+#| " Arguments:\n"
+#| " PATTERN\tPattern specifiying a help topic\n"
+#| " \n"
+#| " Exit Status:\n"
+#| " Returns success unless PATTERN is not found or an invalid option is given."
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3593,30 +3545,58 @@ msgid ""
" PATTERN\tPattern specifying a help topic\n"
" \n"
" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
+" Returns success unless PATTERN is not found or an invalid option is given."
msgstr ""
"Dahili komutlar hakkında bilgi görüntüle.\n"
" \n"
-" Dahili komutların özetlerini görüntüler. Eğer DESEN belirtilmişse,\n"
-" DESEN ile eşleşen tüm komutlar hakkında ayrıntılı bilgi verir, aksi\n"
+" Dahili komutların özetlerini görüntüler. Eğer DİZGİ belirtilmişse\n"
+" DİZGİ ile eşleşen tüm komutlar hakkında ayrıntılı bilgi verir, aksi\n"
" halde, yardım konuları yazdırılır.\n"
" \n"
" Seçenekler:\n"
" -d\ther konu için kısa açıklama yazdır\n"
" -m\tkullanımı pseudo-man sayfası biçiminde yazdır\n"
-" -s\tsadece DESEN ile eşleşen konular için kısa kullanım\n"
+" -s\tyalnızca DİZGİ ile eşleşen konular için kısa kullanım\n"
" \t\tbilgisi yazdır\n"
" \n"
" Argümanlar:\n"
-" DESEN\tBir yardım konusunu belirten desen\n"
+" DİZGİ\tBir yardım konusunu belirten desen\n"
" \n"
" Çıktı Durumu:\n"
-" DESEN bulunmadığı veya geçersiz bir seçenek verilmediğinde başarılı "
-"döner."
+" DİZGİ bulunmadığı veya geçersiz bir seçenek verilmediğinde başarılı döner."
#: builtins.c:842
#, fuzzy
+#| msgid ""
+#| "Display or manipulate the history list.\n"
+#| " \n"
+#| " Display the history list with line numbers, prefixing each modified\n"
+#| " entry with a `*'. An argument of N lists only the last N entries.\n"
+#| " \n"
+#| " Options:\n"
+#| " -c\tclear the history list by deleting all of the entries\n"
+#| " -d offset\tdelete the history entry at position OFFSET.\n"
+#| " \n"
+#| " -a\tappend history lines from this session to the history file\n"
+#| " -n\tread all history lines not already read from the history file\n"
+#| " \t\tand append them to the history list\n"
+#| " -r\tread the history file and append the contents to the history\n"
+#| " \t\tlist\n"
+#| " -w\twrite the current history to the history file\n"
+#| " \n"
+#| " -p\tperform history expansion on each ARG and display the result\n"
+#| " \t\twithout storing it in the history list\n"
+#| " -s\tappend the ARGs to the history list as a single entry\n"
+#| " \n"
+#| " If FILENAME is given, it is used as the history file. Otherwise,\n"
+#| " if HISTFILE has a value, that is used, else ~/.bash_history.\n"
+#| " \n"
+#| " If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
+#| " as a format string for strftime(3) to print the time stamp associated\n"
+#| " with each displayed history entry. No time stamps are printed otherwise.\n"
+#| " \n"
+#| " Exit Status:\n"
+#| " Returns success unless an invalid option is given or an error occurs."
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3644,8 +3624,7 @@ msgid ""
" \n"
" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
+" with each displayed history entry. No time stamps are printed otherwise.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
@@ -3654,7 +3633,7 @@ msgstr ""
" \n"
" Seçeneksiz kullanıldığında komut geçmişi listesini satır numaraları ile\n"
" gösterir. Değişiklik yapılmış satırlarda numaralardan önce bir `*'\n"
-" vardır. Argüman olarak N belirtildiğinde sadece son N satır listelenir.\n"
+" vardır. Argüman olarak N belirtildiğinde yalnızca son N satır listelenir.\n"
" \n"
" Seçenekler:\n"
" -c\tkomut geçmişi listesini tüm girdilerini silerek temizler.\n"
@@ -3671,16 +3650,15 @@ msgstr ""
" \tdepolamadan görüntüle\n"
" -s\tARGümanları geçmiş listesine tek bir girdi olarak ekle\n"
" \n"
-" DOSYAÄ°SMÄ° verilmezse, HISTFILE deÄŸiÅŸkenindeki deÄŸer, o da yoksa\n"
+" DOSYAÄ°SMÄ° verilmezse HISTFILE deÄŸiÅŸkenindeki deÄŸer, o da yoksa\n"
" ~/.bash_history dosyası kullanılır.\n"
" \n"
" HISTTIMEFORMAT kabuk değişkeni tanımlanmış ve anlamlı bir değere\n"
-" sahipse, değeri, gösterilen her geçmiş girdisi ile ilişkili zaman\n"
+" sahipse değeri, gösterilen her geçmiş girdisi ile ilişkili zaman\n"
" damgasını basacak olan strftime(3) işlevine biçim girdisi olur; aksi\n"
" takdirde hiç zaman damgası basılmaz. \n"
" Çıktı Durumu:\n"
-" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
-"başarılı döner."
+" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner."
#: builtins.c:879
msgid ""
@@ -3711,22 +3689,20 @@ msgstr ""
" Seçenekler olmadan, tüm etkin görev durumları görüntülenir.\n"
" \n"
" Seçenekler:\n"
-" -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) "
-"listele\n"
-" -n\tile sadece kullanıcının durumları hakkında aldığı son uyarıdan\n"
+" -l\tile normal bilgilere ek olarak süreç kimliklerini de (PID) listele\n"
+" -n\tile yalnızca kullanıcının durumları hakkında aldığı son uyarıdan\n"
" \t\tberi durumları değişen işler hakkında bilgi gösterir.\n"
-" -p\tile işlerin sadece süreç kimliklerini listeler\n"
-" -r\tile sadece çalışmakta olan,\n"
-" -s\tile ise sadece durmuÅŸ olan iÅŸler listelenir.\n"
+" -p\tile işlerin yalnızca süreç kimliklerini listeler\n"
+" -r\tile yalnızca çalışmakta olan,\n"
+" -s\tile ise yalnızca durmuş olan işler listelenir.\n"
" \n"
-" -x seçeneği verilmişse, ARGümanlar ile belirtilen tüm iş belirtimleri,\n"
+" -x seçeneği verilmişse ARGümanlar ile belirtilen tüm iş belirtimleri,\n"
" işlerin süreç grup liderinin süreç grup kimliğine yerleştirilip KOMUT\n"
" çalıştırılır.\n"
" \n"
" Çıktı Durumu:\n"
-" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
-"başarılı döner.\n"
-" -x kullanılmışsa, KOMUTun çıkış durumu döndürülür."
+" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner.\n"
+" -x kullanılmışsa KOMUTun çıkış durumu döndürülür."
#: builtins.c:906
msgid ""
@@ -3746,16 +3722,14 @@ msgid ""
msgstr ""
"Görevleri geçerli kabuktan kaldır.\n"
" \n"
-" Her İŞTANIMı argümanını etkin görevler tablosundan kaldırır. İŞTANIMı "
-"olmadan,\n"
+" Her İŞTANIMı argümanını etkin görevler tablosundan kaldırır. İŞTANIMı olmadan,\n"
" kabuk geçerli görev kavramını kullanır.\n"
" \n"
" Seçenekler:\n"
" -a\tİŞTANIMı belirtilmemişse tüm görevleri kaldır\n"
-" -h\ther İŞTANIMını işaretle, böylece kabul bir SIGHUP aldığında göreve "
-"SIGHUP\n"
+" -h\ther İŞTANIMını işaretle, böylece kabul bir SIGHUP aldığında göreve SIGHUP\n"
" \t\tgönderme\n"
-" -r\tsadece çalışan görevleri kaldırremove \n"
+" -r\tyalnızca çalışan görevleri kaldırremove \n"
" \n"
" Çıkış Durumu:\n"
" Geçersiz bir seçenek veya İŞTANIMı girilmedikçe başarılı döner."
@@ -3791,21 +3765,17 @@ msgstr ""
" Seçenekler:\n"
" -s sig\tSÄ°NYAL bir sinyal\n"
" -n sig\tSİNYAL bir sinyal numarası\n"
-" -l\t-l seçeneği ile sinyal isimleri listelenir.\n"
+" -l\t-l seçeneği ile sinyal adları listelenir.\n"
" \t\tArgümanlı -l seçeneğinde argümanların listelenecek\n"
-" sinyal isimlerinin numaraları olduğu varsayılır. \n"
+" sinyal adlarının numaraları olduğu varsayılır. \n"
" -L\t, -l anahtarının eş anlamlısıdır\n"
-" Kill iki sebepten dolayı bir kabuk yerleşiğidir: süreç kimlikleri yerine "
-"iÅŸ\n"
-" kimliklerinin kullanımını mümkün kılar ve eğer oluşturabileceğiniz "
-"süreç\n"
-" sayısı sınırını aşarsanız başka bir süreci öldürecek bir süreci "
-"baÅŸlatmak\n"
+" Kill iki sebepten dolayı bir kabuk yerleşiğidir: süreç kimlikleri yerine iş\n"
+" kimliklerinin kullanımını mümkün kılar ve eğer oluşturabileceğiniz süreç\n"
+" sayısı sınırını aşarsanız başka bir süreci öldürecek bir süreci başlatmak\n"
" zorunda kalmazsınız.\n"
" \n"
" Çıktı Durumu:\n"
-" Geçersiz bir seçenek belirtilmediği veya bir hata oluşmadığında başarılı "
-"döner."
+" Geçersiz bir seçenek belirtilmediği veya bir hata oluşmadığında başarılı döner."
#: builtins.c:949
msgid ""
@@ -3814,8 +3784,7 @@ msgid ""
" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
" fixed-width integers with no check for overflow, though division by 0\n"
" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
+" grouped into levels of equal-precedence operators. The levels are listed\n"
" in order of decreasing precedence.\n"
" \n"
" \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3882,8 +3851,8 @@ msgstr ""
" \t&=, ^=, |=\tatamalar\n"
" \n"
" Kabuk değişkenleri terim olarak kullanılabilir. İfade içinde değişken\n"
-" ismi değeriyle değiştirilir (sabit genişlikli tamsayıya zorlanır).\n"
-" Bir kabuk değişkeni ifade içinde kullanılırken tamsayı niteliğinin\n"
+" adı değeriyle değiştirilir (sabit genişlikli tamsayıya zorlanır).\n"
+" Bir kabuk değişkeni ifade içinde kullanılırken tamsayı niteliğinin\n"
" etkinleÅŸtirilmesini gerektirmez.\n"
" \n"
" İşleçler öncelik sırasına göre değerlendirilir. Parantez içine alınmış\n"
@@ -3898,16 +3867,13 @@ msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
+" if the -u option is supplied. The line is split into fields as with word\n"
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
+" the last NAME. Only the characters found in $IFS are recognized as word\n"
" delimiters.\n"
" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
" Options:\n"
" -a array\tassign the words read to sequential indices of the array\n"
@@ -3919,8 +3885,7 @@ msgid ""
" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
" \t\tfor a newline, but honor a delimiter if fewer than\n"
" \t\tNCHARS characters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
" \t\tEOF is encountered or read times out, ignoring any\n"
" \t\tdelimiter\n"
" -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -3938,10 +3903,8 @@ msgid ""
" -u fd\tread from file descriptor FD instead of the standard input\n"
" \n"
" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-" (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
+" The return code is zero, unless end-of-file is encountered, read times out\n"
+" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
@@ -3956,14 +3919,14 @@ msgid ""
" Exit Status:\n"
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-"Bir kabuk fonksiyonundan dön.\n"
+"Bir kabuk işlevinden dön.\n"
" \n"
-" Bir fonksiyon veya kaynak betiğinin N ile belirtilen dönüş değeri ile\n"
-" çıkmasına neden olur. N girilmezse, dönüş durumu fonksiyon veya\n"
+" Bir işlev veya kaynak betiğinin N ile belirtilen dönüş değeri ile\n"
+" çıkmasına neden olur. N girilmezse dönüş durumu işlev veya\n"
" betikte çalıştırılmış en son komutun dönüş durumudur.\n"
" \n"
" Çıkış Durumu:\n"
-" N veya kabul bir fonksiyon ya da betik çalıştırmıyorsa başarısız döner."
+" N veya kabul bir işlev veya betik çalıştırmıyorsa başarısız döner."
#: builtins.c:1054
msgid ""
@@ -4008,8 +3971,7 @@ msgid ""
" physical same as -P\n"
" pipefail the return value of a pipeline is the status of\n"
" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
+" or zero if no command exited with a non-zero status\n"
" posix change the behavior of bash where the default\n"
" operation differs from the Posix standard to\n"
" match the standard\n"
@@ -4033,8 +3995,7 @@ msgid ""
" by default when the shell is interactive.\n"
" -P If set, do not resolve symbolic links when executing commands\n"
" such as cd which change the current directory.\n"
-" -T If set, the DEBUG and RETURN traps are inherited by shell "
-"functions.\n"
+" -T If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
" -- Assign any remaining arguments to the positional parameters.\n"
" If there are no remaining arguments, the positional parameters\n"
" are unset.\n"
@@ -4053,24 +4014,21 @@ msgstr ""
"Kabuk seçenekleri ve konumsal parametrelerin değerlerini ata veya kaldır\n"
" \n"
" Kabuk nitelikleri veya konumsal parametre deÄŸerlerini deÄŸiÅŸtir veya\n"
-" kabuk değişkenlerinin isim ve değerlerini görüntüle.\n"
+" kabuk değişkenlerinin ad ve değerlerini görüntüle.\n"
" \n"
" Seçenekler:\n"
" -a Müteakip komutların ortamına aktarılmak üzere değiştirilen veya\n"
" oluÅŸturulan iÅŸlev ve deÄŸiÅŸkenleri imler.\n"
-" -b Sonlandırılan artalan işlerin durumunun anında raporlanmasını "
-"saÄŸlar.\n"
-" -e Bir komut sıfırdan farklı bir çıkış durumu ile çıkarsa anında "
-"çıkar.\n"
-" -f Dosya ismi üretimini (globbing) iptal eder.\n"
-" -h Çalıştırmak için aranan komutları bulur ve yerlerini hatırlar "
-"(hash).\n"
-" -k Atama deyimleri şeklindeki tüm argümanları komut isminden önce\n"
+" -b Sonlandırılan artalan işlerin durumunun anında raporlanmasını sağlar.\n"
+" -e Bir komut sıfırdan farklı bir çıkış durumu ile çıkarsa anında çıkar.\n"
+" -f Dosya adı üretimini (globbing) iptal eder.\n"
+" -h Çalıştırmak için aranan komutları bulur ve yerlerini hatırlar (hash).\n"
+" -k Atama deyimleri şeklindeki tüm argümanları komut adından önce\n"
" belirtmek yerine ortama yerleÅŸtirir.\n"
" -m Ä°ÅŸ denetimi etkinleÅŸtirilir.\n"
" -n Komutları okur ama onları çalıştırmaz.\n"
-" -o seçenek-ismi\n"
-" seçenek-ismi olarak aşağıdakilerden biri verildiğinde karşılığı\n"
+" -o seçenek-adı\n"
+" seçenek-adı olarak aşağıdakilerden biri verildiğinde karşılığı\n"
" olan seçenekler kullanılmış olur:\n"
" allexport -a ile aynı\n"
" braceexpand -B ile aynı\n"
@@ -4090,36 +4048,28 @@ msgstr ""
" noclobber -C ile aynı\n"
" noexec -n ile aynı\n"
" noglob -f ile aynı\n"
-" nolog o an kabul edilir ama yoksayılır\n"
+" nolog o an kabul edilir ama yok sayılır\n"
" notify -b ile aynı\n"
" nounset -u ile aynı\n"
" onecmd -t ile aynı\n"
" physical -P ile aynı\n"
-" pipefail bir boruhattının dönüş değeri ya sıfırdan farklı "
-"bir\n"
-" durumla çıkan son (en sağdaki) komutun değeridir "
-"ya\n"
-" da boruhattındaki tüm komutlar başarılıysa "
-"sıfırdır\n"
-" posix Standart uyumu için POSIX 1003.2 "
-"standardındakinden\n"
-" farklı öntanımlı işlemde Bash davranışını "
-"deÄŸiÅŸtirir\n"
+" pipefail bir boru hattının dönüş değeri ya sıfırdan farklı bir\n"
+" durumla çıkan son (en sağdaki) komutun değeridir ya\n"
+" da boru hattındaki tüm komutlar başarılıysa sıfırdır\n"
+" posix Standart uyumu için POSIX 1003.2 standardındakinden\n"
+" farklı öntanımlı işlemde Bash davranışını değiştirir\n"
" privileged -p ile aynı\n"
" verbose -v ile aynı\n"
" vi vi tarzı bir satır düzenleme arayüzü kullanılır\n"
" xtrace -x ile aynı\n"
-" -p Ayrıcalıklı kipi etkinleştirir. Bu kipte, $BASH_ENV ve $ENV "
-"dosyaları\n"
+" -p Ayrıcalıklı kipi etkinleştirir. Bu kipte, $BASH_ENV ve $ENV dosyaları\n"
" işlenmez, kabuk işlevleri ortamdan miras alınmaz. Kabuk, gerçek\n"
" kullanıcı (grup) kimliği ile aynı olmayan etkin kullanıcı (grup)\n"
" kimliği ile başlatılmışsa ve -p seçeneği verilmemişse, bu eylemler\n"
" alınır ve etkin kullanıcı (grup) kimliği, gerçek kullanıcı (grup)\n"
" kimliğine ayarlanır. Başlatırken -p seçeneği verilmişse, etkin\n"
-" kullanıcı (grup) kimliği sıfırlanmaz. Bu seçeneğin kapatılması "
-"etkin\n"
-" kullanıcı ve grup kimliklerinin gerçek kullanıcı ve grup "
-"kimliklerine\n"
+" kullanıcı (grup) kimliği sıfırlanmaz. Bu seçeneğin kapatılması etkin\n"
+" kullanıcı ve grup kimliklerinin gerçek kullanıcı ve grup kimliklerine\n"
" ayarlanmasına sebep olur.\n"
" -t Tek bir komutu okuyup çalıştırdıktan sonra çıkar..\n"
" -u Parametre yorumlaması uygulanırken bir hata sonucu değişkenlerin\n"
@@ -4137,7 +4087,7 @@ msgstr ""
" -T Etkinse DEBUG ve RETURN üstündeki tuzaklar kabuk işlevlerince\n"
" miras alınır.\n"
" -- Geri kalan argümanları konumsal parametrelere ata. Eğer kalan\n"
-" argüman yoksa, konumsal parametrelerin ataması kaldırılır.\n"
+" argüman yoksa konumsal parametrelerin ataması kaldırılır.\n"
" - Seçeneklerin sonunu belirtir. Kalan tüm argümanlar konumsal\n"
" parametrelere ayarlanır. -x ve -v seçenekleri kapatılır.\n"
"\n"
@@ -4162,8 +4112,7 @@ msgid ""
" -n\ttreat each NAME as a name reference and unset the variable itself\n"
" \t\trather than the variable it references\n"
" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
+" Without options, unset first tries to unset a variable, and if that fails,\n"
" tries to unset a function.\n"
" \n"
" Some variables cannot be unset; also see `readonly'.\n"
@@ -4177,8 +4126,7 @@ msgid ""
"Set export attribute for shell variables.\n"
" \n"
" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+" executed commands. If VALUE is supplied, assign VALUE before exporting.\n"
" \n"
" Options:\n"
" -f\trefer to shell functions\n"
@@ -4240,9 +4188,8 @@ msgstr ""
" \n"
" DOSYAİSMİndeki komutlar okunur ve çalıştırılır. DOSYAİSMİ içermiyorsa\n"
" DOSYAİSMİnin yerini bulmak için $PATH değişkeni kullanılır. Bash POSIX\n"
-" kipinde değilse ve $PATH içinde DOSYAİSMİ yoksa bulunulan dizine "
-"bakılır.\n"
-" Verilmiş ARGÜMANlar varsa, DOSYAİSMİ çalıştırılırken bunlar konumsal\n"
+" kipinde değilse ve $PATH içinde DOSYAİSMİ yoksa bulunulan dizine bakılır.\n"
+" Verilmiş ARGÜMANlar varsa DOSYAİSMİ çalıştırılırken bunlar konumsal\n"
" parametreler haline gelir. Aksi takdirde, konumsal parametreler\n"
" deÄŸiÅŸtirilmez.\n"
" \n"
@@ -4298,8 +4245,7 @@ msgid ""
" -x FILE True if the file is executable by you.\n"
" -O FILE True if the file is effectively owned by you.\n"
" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
+" -N FILE True if the file has been modified since it was last read.\n"
" \n"
" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
" modification date).\n"
@@ -4320,8 +4266,7 @@ msgid ""
" STRING1 != STRING2\n"
" True if the strings are not equal.\n"
" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+" True if STRING1 sorts before STRING2 lexicographically.\n"
" STRING1 > STRING2\n"
" True if STRING1 sorts after STRING2 lexicographically.\n"
" \n"
@@ -4348,10 +4293,10 @@ msgid ""
msgstr ""
"KoÅŸullu ifade deÄŸerlendir.\n"
" \n"
-" İFADEnin değerlendirilmesine bağlı olarak 0 (doğru) veya 1 (yanlış)\n"
-" durumu ile çıkar. İfadeler tek terimli ya da iki terimli olabilir.\n"
-" Tek terimli ifadeler çoğunlukla bir dosyanın durumunu saptamakta\n"
-" kullanılır. Dizge işleçleri ve sayısal karşılaştırma işleçleri de\n"
+" İFADE'nin değerlendirilmesine bağlı olarak 0 (doğru) veya 1 (yanlış)\n"
+" durumu ile çıkar. İfadeler tek terimli veya iki terimli olabilir.\n"
+" Tek terimli ifadeler çoğunlukla bir dosyanın durumunu saptamakta\n"
+" kullanılır. Dizi işleçleri ve sayısal karşılaştırma işleçleri de\n"
" vardır.\n"
" \n"
" Dosya işleçleri:\n"
@@ -4366,7 +4311,7 @@ msgstr ""
" -h DOSYA DOSYA varsa ve bir sembolik baÄŸ ise doÄŸrudur.\n"
" -L DOSYA DOSYA varsa ve bir sembolik baÄŸ ise doÄŸrudur.\n"
" -k DOSYA DOSYA dosya varsa ve yapışkan biti 1 ise doğrudur.\n"
-" -p DOSYA DOSYA varsa ve bir isimli boru (FIFO) ise doÄŸrudur.\n"
+" -p DOSYA DOSYA varsa ve bir adlı boru (FIFO) ise doğrudur.\n"
" -r DOSYA DOSYA varsa ve okuyabiliyorsanız doğrudur.\n"
" -s DOSYA DOSYA varsa ve uzunluğu sıfırdan büyükse doğrudur.\n"
" -S DOSYA DOSYA varsa ve bir soketse doÄŸrudur.\n"
@@ -4379,51 +4324,47 @@ msgstr ""
" -N DOSYA DOSYA varsa ve son okunduÄŸundan beri deÄŸiÅŸtirilmiÅŸse\n"
" doÄŸrudur.\n"
" \n"
-" DOSYA1 -nt DOSYA2 dosya1, dosya2'den değişiklik tarihine göre\n"
-" daha yeni ise ya da dosya1 mevcutken dosya2 yoksa\n"
-" doÄŸrudur.\n"
+" DOSYA1 -nt DOSYA2 dosya1, dosya2'den değişiklik tarihine göre\n"
+" daha yeni ise veya dosya1 mevcutken dosya2 yoksa\n"
+" doÄŸrudur.\n"
" \n"
-" DOSYA1 -ot DOSYA2 dosya1, dosya2 den daha eski ise ya da dosya2\n"
-" mevcutken dosya1 yoksa doÄŸrudur.\n"
+" DOSYA1 -ot DOSYA2 dosya1, dosya2 den daha eski ise veya dosya2\n"
+" mevcutken dosya1 yoksa doÄŸrudur.\n"
" \n"
-" DOSYA1 -ef DOSYA2 dosya1 ile dosya2 aynı aygıt ve aynı dosya "
-"düğümünü\n"
-" gösteriyorsa (ona sabit bağ ise) doğrudur.\n"
+" DOSYA1 -ef DOSYA2 dosya1 ile dosya2 aynı aygıt ve aynı dosya düğümünü\n"
+" gösteriyorsa (ona sabit bağ ise) doğrudur.\n"
" \n"
-" Dizge işleçleri:\n"
+" Dizi işleçleri:\n"
" \n"
-" -z DİZGE dizge uzunluğu sıfırsa doğrudur.\n"
+" -z dizi uzunluğu sıfırsa doğrudur.\n"
" \n"
-" -n DÄ°ZGE\n"
-" DİZGE dizge uzunluğu sıfırdan farklıysa doğrudur.\n"
+" -n \n"
+" dizi uzunluğu sıfırdan farklıysa doğrudur.\n"
" \n"
-" DİZGE1 = DİZGE2 dizgeler aynıysa doğrudur.\n"
-" DİZGE1 != DİZGE2 dizgeler aynı değilse doğrudur.\n"
-" DİZGE1 < DİZGE2 dizge1 yerele göre sıralamada dizge2'den\n"
+" 1 = DİZİ2 diziler aynıysa doğrudur.\n"
+" 1 != DİZİ2 diziler aynı değilse doğrudur.\n"
+" 1 < DİZİ2 dizi1 yerele göre sıralamada dizi2'den\n"
" önceyse doğrudur.\n"
-" DİZGE1 > DİZGE2 dizge1 yerele göre sıralamada dizge2'den\n"
+" 1 > DİZİ2 dizi1 yerele göre sıralamada dizi2'den\n"
" sonraysa doÄŸrudur.\n"
" \n"
" Diğer işleçler:\n"
" \n"
" -o SEÇENEK Kabuk seçeneği SEÇENEK etkinse doğrudur.\n"
" -v DEĞŞ Kabuk DEĞŞ ayarlanmış ise true.\n"
-" -R DEĞŞ Kabuk DEĞŞ ayarlanmış ve bir isim referansı ise true\n"
+" -R DEĞŞ Kabuk DEĞŞ ayarlanmış ve bir ad referansı ise true\n"
" ! İFADE İFADE yanlışsa doğrudur.\n"
" Ä°FADE1 -a Ä°FADE2 Ä°FADE1 ve Ä°FADE2 her ikisi de doÄŸruysa doÄŸrudur.\n"
" Ä°FADE1 -o Ä°FADE2 Ä°FADE1 veya Ä°FADE2 doÄŸruysa doÄŸrudur.\n"
" \n"
-" arg1 İM arg2 Aritmetik sınamalar. İM bunlardan biri "
-"olmalıdır:\n"
+" arg1 İM arg2 Aritmetik sınamalar. İM bunlardan biri olmalıdır:\n"
" -eq, -ne, -lt, -le, -gt veya -ge.\n"
" \n"
-" Bir aritmetik ifadede ARG1 ve ARG2 arasında, aranan eşitlik, "
-"eÅŸitsizlik,\n"
+" Bir aritmetik ifadede ARG1 ve ARG2 arasında, aranan eşitlik, eşitsizlik,\n"
" küçüklük, büyüklük, küçüklük veya eşitlik, büyüklük veya eşitlik varsa\n"
" ifadenin sonucu doÄŸrudur. \n"
" Çıktı Durumu:\n"
-" Eğer İFADE true olursa başarılı, İFADE false ile sonuçlanırsa veya "
-"geçersiz\n"
+" Eğer İFADE true olursa başarılı, İFADE false ile sonuçlanırsa veya geçersiz\n"
" argümanda başarısız döner."
#: builtins.c:1343
@@ -4442,8 +4383,7 @@ msgstr ""
msgid ""
"Display process times.\n"
" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
+" Prints the accumulated user and system times for the shell and all of its\n"
" child processes.\n"
" \n"
" Exit Status:\n"
@@ -4462,8 +4402,7 @@ msgstr ""
msgid ""
"Trap signals and other events.\n"
" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
+" Defines and activates handlers to be run when the shell receives signals\n"
" or other conditions.\n"
" \n"
" ARG is a command to be read and executed when the shell receives the\n"
@@ -4472,49 +4411,41 @@ msgid ""
" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
" shell and by the commands it invokes.\n"
" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
+" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. If\n"
+" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. If\n"
+" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+" script run by the . or source builtins finishes executing. A SIGNAL_SPEC\n"
+" of ERR means to execute ARG each time a command's failure would cause the\n"
" shell to exit when the -e option is enabled.\n"
" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+" If no arguments are supplied, trap prints the list of commands associated\n"
" with each signal.\n"
" \n"
" Options:\n"
" -l\tprint a list of signal names and their corresponding numbers\n"
" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\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."
+" Returns success unless a SIGSPEC is invalid or an invalid option is given."
msgstr ""
"\rtrap [-lp] [ARG SÄ°NYAL ...]\n"
" ARGüman içindeki komutlar, kabuk SİNYAL sinyalini aldığında okunur ve\n"
-" çalıştırılır. ARGüman verilmezse (ve tek bir SİNYAL varsa) ya da `-'\n"
-" verilirse, belirtilen tüm sinyallere kabuk başlatıldığındaki değerleri\n"
-" yerleştirilir. ARGüman bir boş dizge ise her SİNYAL sinyali kabuk ve\n"
-" onu çağıran komutlar tarafından yoksayılır. Eğer SİNYAL 0 ya da EXIT\n"
+" çalıştırılır. ARGüman verilmezse (ve tek bir SİNYAL varsa) veya `-'\n"
+" verilirse belirtilen tüm sinyallere kabuk başlatıldığındaki değerleri\n"
+" yerleştirilir. ARGüman bir boş dizi ise her SİNYAL sinyali kabuk ve\n"
+" onu çağıran komutlar tarafından yok sayılır. Eğer SİNYAL 0 veya EXIT\n"
" ise ARGüman kabuk çıkarken çalıştırılır. Eğer SİNYAL olarak DEBUG\n"
-" verilmişse, ARGüman komutu her basit komuttan önce çalıştırılır. -p\n"
+" verilmişse ARGüman komutu her basit komuttan önce çalıştırılır. -p\n"
" seçeneği verilmişse trap, her SİNYAL ile ilişkili trap komutlarını\n"
-" gösterir. Hiç ARGüman verilmemişse veya sadece -p verilmişse, trap\n"
+" gösterir. Hiç ARGüman verilmemişse veya yalnızca -p verilmişse trap\n"
" her SİNYAL ile ilişkili komutların listesini basar. Her SİNYAL ya\n"
-" <signal.h> dosyasındaki bir sinyal ismi ya da bir sinyal numarası\n"
-" olarak verilmelidir. Sinyal isimleri harf büyüklüğüne duyarsızdır ve\n"
-" SIG öneki isteğe bağlıdır. -l seçeneği kabuğun sinyal isimlerini\n"
+" <signal.h> dosyasındaki bir sinyal adı veya bir sinyal numarası\n"
+" olarak verilmelidir. Sinyal adları harf büyüklüğüne duyarsızdır ve\n"
+" SIG öneki isteğe bağlıdır. -l seçeneği kabuğun sinyal adlarını\n"
" numaraları ile birlikte listelemesini sağlar. Kabuğa bir sinyal\n"
" göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz."
@@ -4544,17 +4475,60 @@ msgid ""
" NAME\tCommand name to be interpreted.\n"
" \n"
" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
+" Returns success if all of the NAMEs are found; fails if any are not found."
msgstr ""
#: builtins.c:1431
#, fuzzy
+#| msgid ""
+#| "Modify shell resource limits.\n"
+#| " \n"
+#| " Provides control over the resources available to the shell and processes\n"
+#| " it creates, on systems that allow such control.\n"
+#| " \n"
+#| " Options:\n"
+#| " -S\tuse the `soft' resource limit\n"
+#| " -H\tuse the `hard' resource limit\n"
+#| " -a\tall current limits are reported\n"
+#| " -b\tthe socket buffer size\n"
+#| " -c\tthe maximum size of core files created\n"
+#| " -d\tthe maximum size of a process's data segment\n"
+#| " -e\tthe maximum scheduling priority (`nice')\n"
+#| " -f\tthe maximum size of files written by the shell and its children\n"
+#| " -i\tthe maximum number of pending signals\n"
+#| " -k\tthe maximum number of kqueues allocated for this process\n"
+#| " -l\tthe maximum size a process may lock into memory\n"
+#| " -m\tthe maximum resident set size\n"
+#| " -n\tthe maximum number of open file descriptors\n"
+#| " -p\tthe pipe buffer size\n"
+#| " -q\tthe maximum number of bytes in POSIX message queues\n"
+#| " -r\tthe maximum real-time scheduling priority\n"
+#| " -s\tthe maximum stack size\n"
+#| " -t\tthe maximum amount of cpu time in seconds\n"
+#| " -u\tthe maximum number of user processes\n"
+#| " -v\tthe size of virtual memory\n"
+#| " -x\tthe maximum number of file locks\n"
+#| " -P\tthe maximum number of pseudoterminals\n"
+#| " -T\tthe maximum number of threads\n"
+#| " \n"
+#| " Not all options are available on all platforms.\n"
+#| " \n"
+#| " If LIMIT is given, it is the new value of the specified resource; the\n"
+#| " special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
+#| " current soft limit, the current hard limit, and no limit, respectively.\n"
+#| " Otherwise, the current value of the specified resource is printed. If\n"
+#| " no option is given, then -f is assumed.\n"
+#| " \n"
+#| " Values are in 1024-byte increments, except for -t, which is in seconds,\n"
+#| " -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
+#| " number of processes.\n"
+#| " \n"
+#| " Exit Status:\n"
+#| " Returns success unless an invalid option is supplied or an error occurs."
msgid ""
"Modify shell resource limits.\n"
" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
+" Provides control over the resources available to the shell and processes\n"
" it creates, on systems that allow such control.\n"
" \n"
" Options:\n"
@@ -4619,7 +4593,7 @@ msgstr ""
" -p\tİletişim tüneli tamponunun boyu\n"
" -q\tPOSIX ileti kuyruklarındaki azami bayt miktarı\n"
" -r\tAzami anında çalıştırma zamanlaması önceliği\n"
-" -s\tYığıtın azami boyu\n"
+" -s\tYığının azami boyu\n"
" -t\tİşlemci zamanının saniye cinsinden azami miktarı\n"
" -u\tTek bir kullanıcının kullanabileceği azami süreç sayısı\n"
" -v\tBir sürecin kullanabileceği sanal belleğin azami miktarı\n"
@@ -4628,7 +4602,7 @@ msgstr ""
" \n"
" Tüm seçenekler tüm platformlarda kullanılabilir olmayabilir.\n"
" \n"
-" SINIR verilmişse, belirtilen özkaynağın yeni değeridir; özel sınır\n"
+" SINIR verilmişse belirtilen özkaynağın yeni değeridir; özel sınır\n"
" değerleri mevcut donanımsal sınır için `hard', mevcut yazılımsal sınır\n"
" için `soft' ve sınırsız için `unlimited''dir. Aksi takdirde, belirtilen\n"
" özkaynak için mevcut değer gösterilir. Hiç seçenek verilmezse -f\n"
@@ -4638,8 +4612,7 @@ msgstr ""
" için 512 baytlık blok sayısı olarak, -n ve -u için birimsiz, kalan\n"
" seçenekler için 1024 baytlık blok sayısı olarak belirtilmelidir. \n"
" Çıktı Durumu:\n"
-" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
-"başarılı döner."
+" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner."
#: builtins.c:1482
msgid ""
@@ -4661,26 +4634,37 @@ msgstr ""
#: builtins.c:1502
#, fuzzy
+#| msgid ""
+#| "Wait for job completion and return exit status.\n"
+#| " \n"
+#| " Waits for each process identified by an ID, which may be a process ID or a\n"
+#| " job specification, and reports its termination status. If ID is not\n"
+#| " given, waits for all currently active child processes, and the return\n"
+#| " status is zero. If ID is a a job specification, waits for all processes\n"
+#| " in that job's pipeline.\n"
+#| " \n"
+#| " If the -n option is supplied, waits for the next job to terminate and\n"
+#| " returns its exit status.\n"
+#| " \n"
+#| " Exit Status:\n"
+#| " Returns the status of the last ID; fails if ID is invalid or an invalid\n"
+#| " option is given."
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
-" Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
+" Waits for each process identified by an ID, which may be a process ID or a\n"
" job specification, and reports its termination status. If ID is not\n"
" given, waits for all currently active child processes, and the return\n"
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for a single job from the list of "
-"IDs,\n"
-" or, if no IDs are supplied, for the next job to complete and returns "
-"its\n"
+" If the -n option is supplied, waits for a single job from the list of IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns its\n"
" exit status.\n"
" \n"
" If the -p option is supplied, the process or job identifier of the job\n"
" for which the exit status is returned is assigned to the variable VAR\n"
-" named by the option argument. The variable will be unset initially, "
-"before\n"
+" named by the option argument. The variable will be unset initially, before\n"
" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
@@ -4693,45 +4677,36 @@ msgid ""
msgstr ""
"Sürecin tamamlanmasını bekle ve çıkış durumunu döndür.\n"
" \n"
-" Belirtilen süreci bekler ve sonlandırma durumunu raporlar. Eğer ID "
-"verilmemiÅŸse\n"
-" geçerli tüm alt süreçler beklenir ve dönüş kodu sıfırdır. Eğer ID bir "
-"görev tanımıysa\n"
+" Belirtilen süreci bekler ve sonlandırma durumunu raporlar. Eğer ID verilmemişse\n"
+" geçerli tüm alt süreçler beklenir ve dönüş kodu sıfırdır. Eğer ID bir görev tanımıysa\n"
" görevin iletişim tünelindeki tüm süreçler beklenir.\n"
" \n"
-" -n seçeneği verilirse, sonraki görevin sonlanması beklenir ve çıkış "
-"durumunı döndürür.\n"
+" -n seçeneği verilirse sonraki görevin sonlanması beklenir ve çıkış durumunı döndürür.\n"
" \n"
" Çıkış Durumu:\n"
-" Kimlik durumunu döndürür, kimlik geçersizse veya geçersiz bir seçenek "
-"verilmiÅŸse\n"
+" Kimlik durumunu döndürür, kimlik geçersizse veya geçersiz bir seçenek verilmişse\n"
" başarısız olur."
#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
-" Waits for each process specified by a PID and reports its termination "
-"status.\n"
+" Waits for each process specified by a PID and reports its termination status.\n"
" If PID is not given, waits for all currently active child processes,\n"
" and the return status is zero. PID must be a process ID.\n"
" \n"
" Exit Status:\n"
-" Returns the status of the last PID; fails if PID is invalid or an "
-"invalid\n"
+" Returns the status of the last PID; fails if PID is invalid or an invalid\n"
" option is given."
msgstr ""
"Sürecin tamamlanmasını bekle ve çıkış durumunu döndür.\n"
" \n"
-" PID tarafından belirtilen her süreci bekler ve sonlandırma durumunu "
-"raporlar.\n"
-" Eğer PID verilmemişse geçerli tüm alt süreçler beklenir ve dönüş kodu "
-"sıfırdır.\n"
+" PID tarafından belirtilen her süreci bekler ve sonlandırma durumunu raporlar.\n"
+" Eğer PID verilmemişse geçerli tüm alt süreçler beklenir ve dönüş kodu sıfırdır.\n"
" PID bir süreç kimliği olmalıdır.\n"
" \n"
" Çıkış Durumu:\n"
-" Son PID'nin durumunu döndürür, PID geçersizse veya geçersiz bir seçenek "
-"verilmiÅŸse\n"
+" Son PID'nin durumunu döndürür, PID geçersizse veya geçersiz bir seçenek verilmişse\n"
" başarısız olur."
#: builtins.c:1548
@@ -4748,12 +4723,9 @@ msgid ""
msgstr ""
"Bir listedeki her üye için komut çalıştır.\n"
" \n"
-" `for' döngüsü bir öge listesindeki her üye için komut sırasını "
-"çalıştırır.\n"
-" Eğer `in KELİMELER ...;' belirtilmemişse `in \"$@\"' varsayılır. "
-"KELÄ°MELER\n"
-" içerisindeki her eleman için, İSİM bu elemana atanır ve KOMUTLAR "
-"çalıştırılır.\n"
+" `for' döngüsü bir öge listesindeki her üye için komut sırasını çalıştırır.\n"
+" Eğer `in SÖZCÜKLER ...;' belirtilmemişse `in \"$@\"' varsayılır. SÖZCÜKLER\n"
+" içerisindeki her eleman için, AD bu elemana atanır ve KOMUTLAR çalıştırılır.\n"
" \n"
" Çıkış Durumu:\n"
" Son çalıştırılan komutun durumunu döndürür."
@@ -4782,8 +4754,7 @@ msgstr ""
" \t\tKOMUTLAR\n"
" \t\t(( Ä°FADE3 ))\n"
" \tdone\n"
-" Ä°FADE1, Ä°FADE2 ve Ä°FADE3 aritmetik ifadelerdir. EÄŸer ifadelerden biri "
-"yoksa\n"
+" Ä°FADE1, Ä°FADE2 ve Ä°FADE3 aritmetik ifadelerdir. EÄŸer ifadelerden biri yoksa\n"
" 1'e değerlendirilmiş şekilde davranır.\n"
" \n"
" Çıkış Durumu:\n"
@@ -4808,24 +4779,16 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"Listeden kelimeleri seç ve komutları çalıştır.\n"
-" \n"
-" `SÖZ ...;' listesi yorumlanarak öğe listesi üretilir. Öğe "
-"listesindeki\n"
-" her öğenin başına bir numara eklenerek standart hataya çıktılanır. "
-"EÄŸer\n"
-" `in SÖZ ... ;' parçası verilmezse, in \"$@\"' verilmiş gibi konuma "
-"bağlı\n"
-" parametreler basılır ve standart girdide PS3 istemi ile girdi "
-"beklenir.\n"
-" Listede belirtilen numaralardan biri girdi olarak verilirse, o "
-"konuma\n"
-" bağlı SÖZcük ile AD eşleştirilir. Girdi satırı boş verilirse, "
-"dosyasonu\n"
-" okununcaya kadar komut istemi tekrarlanır. Listede belirtilenler "
-"dışında\n"
-" verilen her değer için AD null ile eşleştirilir. Okunan satır "
-"$REPLY\n"
+"Listeden sözcükleri seç ve komutları çalıştır.\n"
+" \n"
+" `SÖZ ...;' listesi yorumlanarak öğe listesi üretilir. Öğe listesindeki\n"
+" her öğenin başına bir numara eklenerek standart hataya çıktılanır. Eğer\n"
+" `in SÖZ ... ;' parçası verilmezse in \"$@\"' verilmiş gibi konuma bağlı\n"
+" parametreler basılır ve standart girdide PS3 istemi ile girdi beklenir.\n"
+" Listede belirtilen numaralardan biri girdi olarak verilirse o konuma\n"
+" bağlı SÖZcük ile AD eşleştirilir. Girdi satırı boş verilirse dosyasonu\n"
+" okununcaya kadar komut istemi yinelenir. Listede belirtilenler dışında\n"
+" verilen her değer için AD null ile eşleştirilir. Okunan satır $REPLY\n"
" değişkeninde tutulur. Her seçimden sonra bir break komutu ile\n"
" sonlandırılıncaya kadar komutlar çalıştırılır.\n"
" \n"
@@ -4849,8 +4812,7 @@ msgid ""
msgstr ""
"Veriyolu çalıştırması tarafından harcanan zamanı bildir.\n"
" \n"
-" VERİYOLUnu çalıştır ve sonlandığında kullanıcı işlemci zamanı ile "
-"sistem\n"
+" VERİYOLUnu çalıştır ve sonlandığında kullanıcı işlemci zamanı ile sistem\n"
" işlemci zamanını içeren gerçek zamanın bir özetini yazdır.\n"
" \n"
" Seçenekler:\n"
@@ -4883,17 +4845,12 @@ msgstr ""
msgid ""
"Execute commands based on conditional.\n"
" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then "
-"the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
-"is\n"
+" The `if COMMANDS' list is executed. If its exit status is zero, then the\n"
+" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list is\n"
" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. "
-"Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
+" `then COMMANDS' list is executed and the if command completes. Otherwise,\n"
+" the `else COMMANDS' list is executed, if present. The exit status of the\n"
+" entire construct is the exit status of the last command executed, or zero\n"
" if no condition tested true.\n"
" \n"
" Exit Status:\n"
@@ -4901,11 +4858,11 @@ msgid ""
msgstr ""
"Komutları şartlara göre çalıştırır.\n"
" \n"
-" `if KOMUTlar;' listesi çalıştırılır; çıkış durumu sıfırsa\n"
-" `then KOMUTlar;' listesi çalıştırılır, değilse `elif KOMUTlar;'\n"
-" listesi çalıştırılır; bunun çıkış durumu sıfırsa `then KOMUTlar;'\n"
+" `if KOMUTLAR;' listesi çalıştırılır; çıkış durumu sıfırsa\n"
+" `then KOMUTLAR;' listesi çalıştırılır, değilse `elif KOMUTLAR;'\n"
+" listesi çalıştırılır; bunun çıkış durumu sıfırsa `then KOMUTLAR;'\n"
" listesi çalıştırılır ve if komutu tamamlanır, değilse varsa\n"
-" `else KOMUTlar;' listesi çalıştırılır ve if komutu tamamlanır.\n"
+" `else KOMUTLAR;' listesi çalıştırılır ve if komutu tamamlanır.\n"
" Oluşumun tamamının dönüş durumu çalıştırılmış olan son komutun\n"
" çıkış durumudur. Bir komut çalıştırılmamışsa ve hiçbir koşul\n"
" doğru sonuç vermemişse sıfır döner. Çıkış Durumu:\n"
@@ -4941,8 +4898,8 @@ msgid ""
msgstr ""
"Bir sınama başarısız oluncaya kadar komutları çalıştır.\n"
" \n"
-" `until KOMUTlar; listesinin çıkış durumu sıfırdan farklı olduğu sürece\n"
-" `do KOMUTlar;' listesi çalıştırılır.\n"
+" `until KOMUTLAR; listesinin çıkış durumu sıfırdan farklı olduğu sürece\n"
+" `do KOMUTLAR;' listesi çalıştırılır.\n"
" \n"
" Çıktı Durumu:\n"
" Son çalıştırılan komutun durumunu döndürür."
@@ -4965,8 +4922,7 @@ msgid ""
"Define shell function.\n"
" \n"
" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
+" NAME runs COMMANDs in the calling shell's context. When NAME is invoked,\n"
" the arguments are passed to the function as $1...$n, and the function's\n"
" name is in $FUNCNAME.\n"
" \n"
@@ -4986,7 +4942,7 @@ msgid ""
msgstr ""
"Komutları bir birim olarak grupla.\n"
" \n"
-" KOMUTlar bir grup olarak çalıştırılır. Bu, bir komut kümesini bir\n"
+" KOMUTLAR bir grup olarak çalıştırılır. Bu, bir komut kümesini bir\n"
" yönlendirmede kullanmanın tek yoludur.\n"
" \n"
" Çıktı Durumu:\n"
@@ -5009,7 +4965,7 @@ msgstr ""
" \n"
" `fg' komutunu İŞ_BELİRTİMİ argümanı ile kullanmaya eşdeğerdir.\n"
" Durmuş veya artalandaki bir işin önalanda sürdürülmesini sağlar.\n"
-" İŞ_BELİRTİMİ bir iş ismi veya iş numarası olarak belirtilebilir.\n"
+" İŞ_BELİRTİMİ bir iş adı veya iş numarası olarak belirtilebilir.\n"
" İŞ_BELİRTİMİ'nden sonra bir & gelmesi işin `bg' komutununa argüman\n"
" olarak kullanılmış gibi artalana yerleştirilmesine sebep olur.\n"
" \n"
@@ -5018,6 +4974,14 @@ msgstr ""
#: builtins.c:1726
#, fuzzy
+#| msgid ""
+#| "Evaluate arithmetic expression.\n"
+#| " \n"
+#| " The EXPRESSION is evaluated according to the rules for arithmetic\n"
+#| " evaluation. Equivalent to \"let EXPRESSION\".\n"
+#| " \n"
+#| " Exit Status:\n"
+#| " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5039,12 +5003,9 @@ msgstr ""
msgid ""
"Execute conditional command.\n"
" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the `test' builtin, and may be combined using the following "
-"operators:\n"
+" Returns a status of 0 or 1 depending on the evaluation of the conditional\n"
+" expression EXPRESSION. Expressions are composed of the same primaries used\n"
+" by the `test' builtin, and may be combined using the following operators:\n"
" \n"
" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
@@ -5064,25 +5025,23 @@ msgid ""
msgstr ""
"Koşullu komut çalıştır.\n"
" \n"
-" Koşullu İFADEnin değerine bağlı olarak 0 ya da 1 durumu ile döner.\n"
-" İfadeler test yerleşiği tarafından kullanılan aynı ilkelerle "
-"oluÅŸturulur\n"
+" Koşullu İFADE'nin değerine bağlı olarak 0 veya 1 durumu ile döner.\n"
+" İfadeler test yerleşiği tarafından kullanılan aynı ilkelerle oluşturulur\n"
" ve aşağıdaki işleçler kullanılarak biraraya getirilebilirler:\n"
"\n"
-" ( İFADE ) İFADEnin değeri döner\n"
+" ( İFADE ) İFADE'nin değeri döner\n"
" ! İFADE İFADE yanlışsa doğru, doğruysa yanlıştır.\n"
" Ä°FADE1 && Ä°FADE2 Ä°FADE1 ve Ä°FADE2 her ikisi de doÄŸruysa doÄŸrudur\n"
" Ä°FADE1 || Ä°FADE2 Ä°FADE1 veya Ä°FADE2 doÄŸruysa doÄŸrudur\n"
"\n"
-" `==' ve `!=' işleçleri kullanıldığında, işlecin sağındaki dizge bir "
-"kalıp\n"
+" `==' ve `!=' işleçleri kullanıldığında, işlecin sağındaki dizi bir kalıp\n"
" olarak ele alınır ve kalıp eşleştirmesi uygulanır. `=~' kullanıldığında\n"
-" işlecin sağındaki dizge düzenli ifade olarak eşleştirilir. \n"
-" İFADE1, ifadenin değeri için tek başına yeterli ise && ve || İFADE2'yi\n"
-" çalıştırmaz.\n"
-" \n"
-" Çıkış Durumu:\n"
-" İFADE değerine göre 0 veya 1."
+" işlecin sağındaki dizi düzenli ifade olarak eşleştirilir.\n"
+" İFADE1, ifadenin değeri için tek başına yeterli ise && ve || İFADE2'yi\n"
+" çalıştırmaz.\n"
+" \n"
+" Çıkış Durumu:\n"
+" İFADE değerine göre 0 veya 1."
#: builtins.c:1764
msgid ""
@@ -5142,44 +5101,44 @@ msgstr ""
" BASH_VERSION\tBu Bash'in sürüm bilgisi.\n"
" CDPATH\t`cd'ye argüman olarak verilecek dizinlerin aranacağı\n"
" \t\tdizinlerin iki nokta imi ayraçlı listesi.\n"
-" GLOBIGNORE\tDosyayolu yorumlaması tarafından yoksayılacak dosya\n"
-" \t\tisimlerini belirten kalıpların ikinokta imi ayraçlı\n"
+" GLOBIGNORE\tDosyayolu yorumlaması tarafından yok sayılacak dosya\n"
+" \t\tadlarını belirten kalıpların ikinokta imi ayraçlı\n"
" \t\tlistesi.\n"
-" HISTFILE\tKomut geçmişinizin saklanacağı dosyanın ismi.\n"
+" HISTFILE\tKomut geçmişinizin saklanacağı dosyanın adı.\n"
" HISTFILESIZE\tBu dosyanın içerebileceği azami satır sayısı.\n"
" HISTSIZE\tÇalışan bir kabuğun erişebileceği geçmiş satırlarının\n"
" \t\tazami sayısı.\n"
" HOME\tKullanıcının ev dizininin tam yolu.\n"
-" HOSTNAME\tMakinenizin aÄŸdaki konak ismi.\n"
+" HOSTNAME\tMakinenizin ağdaki konak adı.\n"
" HOSTTYPE\tBash'in bu sürümünün altında çalıştığı işlemcinin türü\n"
" IGNOREEOF\tTek girdi olarak EOF karakteri alındığında kabuğun\n"
-" \t\teylemini kontrol eder. Atandığında değeri, kabuk\n"
+" \t\teylemini denetler. Atandığında değeri, kabuk\n"
" \t\tçıkmadan önce bir girdi satırındaki ilk karakter\n"
" \t\tolarak okunabilen ardışık EOF karakterlerinin sayısını\n"
-" \t\tgösterir (öntanımlı 10). Eğer değişken mevcut değilse,\n"
+" \t\tgösterir (öntanımlı 10). Eğer değişken mevcut değilse\n"
" \t\tEOF girdi sonunu belirtir.\n"
-" MACHTYPE\tBash'in üzerinde çalıştığı sistemi açıklayan dizge.\n"
+" MACHTYPE\tBash'in üzerinde çalıştığı sistemi açıklayan dizi.\n"
" MAILCHECK\tBash'in yeni postaya kaç saniyede bir bakacağı.\n"
" MAILPATH\tBash'in yeni posta var mı diye bakacağı dosya\n"
-" \t\tisimlerinin ikinokta imi ayraçlı listesi.\n"
+" \t\tad ikinokta imi ayraçlı listesi.\n"
" OSTYPE\tBash'in üzerinde çalıştığı çekirdeğin türü.\n"
" PATH\tKomutları ararken bakılacak dizinlerin ikinokta imi\n"
" \t\tayraçlı listesi.\n"
" PROMPT_COMMAND\tBirincil komut istemi ($PS1) basılmadan önce\n"
" \t\tçalıştırılacak komut\n"
-" PS1\tBirincil komut istemi dizgesi.\n"
-" PS2\tÄ°kincil komut istemi dizgesi.\n"
+" PS1\tBirincil komut istemi dizisi.\n"
+" PS2\tÄ°kincil komut istemi dizisi.\n"
" PWD\tÇalışma dizininizin tam yolu.\n"
" SHELLOPTS\tEtkin kabuk seçeneklerinin ikinokta imi ayraçlı listesi\n"
-" TERM\tGeçerli uçbirim türünün ismi.\n"
+" TERM\tGeçerli uçbirim türünün adı.\n"
" TIMEFORMAT\ttime anahtar sözcüğü ile başlayan zamanlama bilgisinin\n"
-" \t\tnasıl belirtileceğini gösteren biçim dizgesi.\n"
-" auto_resume\tDeğerin boş olmaması durmuş işin isminin onu\n"
+" \t\tnasıl belirtileceğini gösteren biçim dizisi.\n"
+" auto_resume\tDeğerin boş olmaması durmuş işin adının onu\n"
" \t\tbaşlatmakta kullanılan komut satırı olduğudur ve\n"
" \t\toradaysa iş önalana alınır. `exact' değeri, komut\n"
" \t\tsözcüğünün durmuş işler listesindeki komutla tam\n"
" \t\tolarak eşleşmesi gerektiği anlamına gelir. `substring'\n"
-" \t\tdeğeri, komut sözcüğünün işin bir altdizgesi ile\n"
+" \t\tdeğeri, komut sözcüğünün işin bir altdizisi ile\n"
" \t\teşleşmesi gerektiğini belirtir. Bunlar dışında bir\n"
" \t\tdeğer komutun durmuş bir işe önek olması gerektiği\n"
" \t\tanlamına gelir.\n"
@@ -5189,7 +5148,7 @@ msgstr ""
" \t\tyorumlama karakteridir ve normalde ! iÅŸaretidir.\n"
" \t\tİkinci karakter, bir satırdaki ilk karakter olduğunda\n"
" \t\t`hızlı ikame'yi imleyen karakterdir ve normalde ^\n"
-" \t\timidir. İstemlik olan üçüncü karakter ise, bir\n"
+" \t\timidir. İstemlik olan üçüncü karakter ise bir\n"
" \t\tsözcüğün ilk karakteri olarak bulunduğunda satırın\n"
" \t\tkalanının açıklama olmasını sağlayan karakterdir ve\n"
" \t\tnormalde # imidir.\n"
@@ -5229,27 +5188,27 @@ msgid ""
msgstr ""
"Dizinleri yığına ekle.\n"
" \n"
-" Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma\n"
-" dizini yığıtın tepesine gelecek şekilde yığıtı döndürür. Hiç\n"
+" Dizin yığınının en üstüne bir dizin ekler veya geçerli çalışma\n"
+" dizini yığının tepesine gelecek şekilde yığını döndürür. Hiç\n"
" argüman verilmemişse en üstteki iki dizini yer değiştirir.\n"
" \n"
" Seçenekler:\n"
-" -n\tdizinleri yığıta eklerken normal dizin değişikliğini engeller,\n"
-" \t\tböylece sadece yığıt değiştirilmiş olur.\n"
+" -n\tdizinleri yığına eklerken normal dizin değişikliğini engeller,\n"
+" \t\tböylece yalnızca yığın değiştirilmiş olur.\n"
" \n"
" Argümanlar:\n"
" +N\t(`dirs' tarafından gösterilen listenin solundan saymaya\n"
" \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n"
-" \t\tyığıtı döndürür.\n"
+" \t\tyığını döndürür.\n"
" \n"
" -N\t(`dirs' tarafından gösterilen listenin sağından saymaya\n"
" \t\tsıfırla başlandığında) N'inci dizin tepeye gelecek şekilde\n"
-" \t\tyığıtı döndürür.\n"
+" \t\tyığını döndürür.\n"
" \n"
-" dizin\tDİZİNi yeni çalışma dizini yaparak dizin yığıtının\n"
+" dizin\tDİZİNi yeni çalışma dizini yaparak dizin yığınının\n"
" \t\ttepesine ekler.\n"
" \n"
-" Dizin yığıtını `dirs' komutuyla görebilirsiniz.\n"
+" Dizin yığınını `dirs' komutuyla görebilirsiniz.\n"
" \n"
" Çıkış Durumu:\n"
" Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n"
@@ -5281,15 +5240,15 @@ msgid ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
msgstr ""
-"Dizin yığıtından girdileri sil.\n"
+"Dizin yığınından girdileri sil.\n"
" \n"
-" Dizin yığıtından girdileri siler. Hiç argüman verilmemişse,\n"
-" yığıtın en üstündeki dizini yığıttan kaldırır ve yığıtın\n"
+" Dizin yığınından girdileri siler. Hiç argüman verilmemişse\n"
+" yığının en üstündeki dizini yığından kaldırır ve yığının\n"
" tepesinde kalan dizine geçer. \n"
" \n"
" Seçenekler:\n"
-" -n\tdizinleri yığıttan silerken normal dizin değişikliğini\n"
-" \t\tengeller, böylece sadece yığıt değiştirilmiş olur. \n"
+" -n\tdizinleri yığından silerken normal dizin değişikliğini\n"
+" \t\tengeller, böylece yalnızca yığın değiştirilmiş olur. \n"
" \n"
" Argümanlar:\n"
" +N\t\t`dirs' tarafından gösterilen listenin solundan saymaya\n"
@@ -5300,7 +5259,7 @@ msgstr ""
" \t\tsıfırla başlandığında N'inci girdiyi siler. Örneğin,\n"
" \t\t`popd -0' son dizini `popd -1' sonuncudan öncekini siler. \n"
" \n"
-" Dizin yığıtını `dirs' komutuyla görebilirsiniz. \n"
+" Dizin yığınını `dirs' komutuyla görebilirsiniz.\n"
" Çıkış Durumu:\n"
" Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n"
" olmadıkça başarılı döner."
@@ -5333,18 +5292,18 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-"Dizin yığıtını görüntüle.\n"
+"Dizin yığınını görüntüle.\n"
" \n"
" O an anımsanan dizinleri listeler. Dizinler listeye `pushd'\n"
" komutuyla eklenir; listeden tek tek geri almak içinse `popd'\n"
" komutu kullanılır.\n"
" \n"
" Seçenekler:\n"
-" -c\ttüm girdileri silerek dizin yığıtını boşaltır.\n"
+" -c\ttüm girdileri silerek dizin yığınını boşaltır.\n"
" -l\t`dirs'in dizinleri ev dizininize göreli kısayollar\n"
" \t\tolarak göstermemesine yol açar.\n"
-" -p\tyığıttaki konumu göstermemesi dışında aynı çıktıyı verir.\n"
-" -v\t`dirs'in dizin yığıtını dizin adının önüne yığıt konumunu\n"
+" -p\tyığıntaki konumu göstermemesi dışında aynı çıktıyı verir.\n"
+" -v\t`dirs'in dizin yığınını dizin adının önüne yığın konumunu\n"
" \t\tekleyerek her satırda bir girdi göstermesini sağlar.\n"
" \n"
" Argümanlar:\n"
@@ -5356,8 +5315,7 @@ msgstr ""
" \t\tsıfırla başlayarak sayılan N'inci girdiyi gösterir.\n"
" \n"
" Çıkış Durumu:\n"
-" Geçersiz seçenek belirtilmediği veya bir hata oluşmadığı sürece başarılı "
-"döner."
+" Geçersiz seçenek belirtilmediği veya bir hata oluşmadığı sürece başarılı döner."
#: builtins.c:1916
msgid ""
@@ -5387,80 +5345,63 @@ msgid ""
" -v var\tassign the output to shell variable VAR rather than\n"
" \t\tdisplay it on the standard output\n"
" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
+" FORMAT is a character string which contains three types of objects: plain\n"
+" characters, which are simply copied to standard output; character escape\n"
" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
+" format specifications, each of which causes printing of the next successive\n"
" argument.\n"
" \n"
-" In addition to the standard format specifications described in "
-"printf(1),\n"
+" In addition to the standard format specifications described in printf(1),\n"
" printf interprets:\n"
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T\toutput the date-time string resulting from using FMT as a "
-"format\n"
+" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
" The format is re-used as necessary to consume all of the arguments. If\n"
" there are fewer arguments than the format requires, extra format\n"
-" specifications behave as if a zero value or null string, as "
-"appropriate,\n"
+" specifications behave as if a zero value or null string, as appropriate,\n"
" had been supplied.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
+" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
-"BİÇİMin denetimi altında ARGümanları standart çıktıya biçimleyerek "
-"yazar\n"
+"BİÇİM'in denetimi altında ARGÜMAN'ları biçimleyerek yazdırır\n"
" \n"
" Seçenekler:\n"
" -v değişken\tseçeneği çıktının standart çıktıya\n"
-" \t\tbasılması yerine DEĞİŞKENe atanmasını sağlar.\n"
+" \t\t\tbasılması yerine DEĞİŞKEN'e atanmasını sağlar.\n"
" \n"
-" BİÇİM üç tür nesne içeren bir dizgedir: salt karakterler\n"
-" basitçe standart çıktıya kopyalanır, öncelenmiş karakterler\n"
-" dönüştürülüp standart çıktıya kopyalanır ve biçim belirtimleri;\n"
-" belirtimlerin her biri sırayla karşı düşen ARGümanların basılmasını\n"
-" saÄŸlar.\n"
+" BİÇİM, üç tür nesne içeren bir dizidir: Salt karakterler basitçe\n"
+" standart çıktıya kopyalanır, öncelenmiş karakterler dönüştürülüp\n"
+" standart çıktıya kopyalanır ve biçim belirtimleri; belirtimlerin\n"
+" her biri sırayla karşı düşen argümanların basılmasını sağlar.\n"
" \n"
-" Standart printf(1) biçimlerine ek olarak, printf aşağıdakileri de "
-"yorumlar:\n"
+" Standart printf(1) biçimlerine ek olarak, printf şunları da yorumlar:\n"
" \n"
-" %b\ttersbölü öncelemeli karakterlerin karşı düşen ARGümanda "
-"yorumlanmasını sağlar\n"
-" %q\tARGümanın kabuk girdisi olarak kullanılabilecek biçimde "
-"kullanılabilmesi\n"
+" %b\ttersbölü öncelemeli karakterlerin karşı düşen argümanda yorumlar\n"
+" %q\tagrgümanın kabuk girdisi olarak kullanılabilecek biçimde biçimler\n"
" \t\tiçin alıntılar.\n"
-" %(fmt)T\tstrftime(3) için bir biçim dizgesi olarak FMT tarafından "
-"kullanılmak üzere\n"
-" \t\ttarih zaman dizgesi çıktısısı verir\n"
+" %(fmt)T\tstrftime(3) için bir biçim dizisi olarak FMT tarafından\n"
+" \t\tkullanılmak üzere tarih zaman dizisi çıktısısı verir\n"
" \n"
-" Biçim argümanların tümünün kullanılabilmesi için gerektiğinde yeniden "
-"kullanılır.\n"
-" Biçimin gerektirdiğinden daha az argüman varsa, ek biçim tanımlamaları "
-"uygun olduÄŸu\n"
-" şekilde sıfır değeri veya BOŞ (null) dizge değeri olarak davranırlar.\n"
+" Biçim argümanların tümünün kullanılabilmesi için gerektiğinde yeniden\n"
+" kullanılır. Biçimin gerektirdiğinden daha az argüman varsa ek biçim\n"
+" tanımlamaları uygun olduğu şekilde sıfır değeri veya BOŞ (null) dizi\n"
+" değeri olarak davranırlar.\n"
" \n"
" Çıkış Durumu:\n"
-" Geçersiz bir seçenek belirtilmediği veya yazılmadığı takdirde ya da bir "
-"atama\n"
-" hatası oluşmadığı sürece başarılı döner."
+" Geçersiz bir seçenek belirtilmediği veya yazılmadığı takdirde veya bir\n"
+" atama hatası oluşmadığı sürece başarılı döner."
#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
+" For each NAME, specify how arguments are to be completed. If no options\n"
+" are supplied, existing completion specifications are printed in a way that\n"
" allows them to be reused as input.\n"
" \n"
" Options:\n"
@@ -5475,10 +5416,8 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
-"supplied,\n"
-" the -D option takes precedence over -E, and both take precedence over -"
-"I.\n"
+" uppercase-letter options are listed above. If multiple options are supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -I.\n"
" \n"
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
@@ -5489,8 +5428,7 @@ msgid ""
"Display possible completions depending on the options.\n"
" \n"
" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
+" completions. If the optional WORD argument is supplied, matches against\n"
" WORD are generated.\n"
" \n"
" Exit Status:\n"
@@ -5500,22 +5438,18 @@ msgstr ""
" \n"
" Olası tamamlamaları üretmek üzere bir kabuk işlevinin içinde kullanmak\n"
" amacıyla tasarlanmıştır. İsteğe bağlı SÖZCÜK argümanı sağlandığı\n"
-" takdirde eşleşmelerden sadece SÖZCÜK ile eşleşenler üretilir.\n"
+" takdirde eşleşmelerden yalnızca SÖZCÜK ile eşleşenler üretilir.\n"
" \n"
" Çıktı Durumu:\n"
-" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
-"başarılı döner."
+" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde başarılı döner."
#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
+" Modify the completion options for each NAME, or, if no NAMEs are supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, print\n"
+" the completion options for each NAME or the current completion specification.\n"
" \n"
" Options:\n"
" \t-o option\tSet completion option OPTION for each NAME\n"
@@ -5542,22 +5476,17 @@ msgstr ""
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
+" Read lines from the standard input into the indexed array variable ARRAY, or\n"
+" from file descriptor FD if the -u option is supplied. The variable MAPFILE\n"
" is the default ARRAY.\n"
" \n"
" Options:\n"
" -d delim\tUse DELIM to terminate lines, instead of newline\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0\n"
+" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are copied\n"
+" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default index is 0\n"
" -s count\tDiscard the first COUNT lines read\n"
" -t\tRemove a trailing DELIM from each line read (default newline)\n"
-" -u fd\tRead lines from file descriptor FD instead of the standard "
-"input\n"
+" -u fd\tRead lines from file descriptor FD instead of the standard input\n"
" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
" -c quantum\tSpecify the number of lines read between each call to\n"
" \t\t\tCALLBACK\n"
@@ -5570,13 +5499,11 @@ msgid ""
" element to be assigned and the line to be assigned to that element\n"
" as additional arguments.\n"
" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+" If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
" assigning to it.\n"
" \n"
" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
@@ -5589,837 +5516,3 @@ msgstr ""
"Bir dosyadaki satırları bir dizi değişkenine oku.\n"
" \n"
" `mapfile' ile eşanlamlıdır."
-
-#, fuzzy
-#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
-#~ msgstr "Telif Hakkı (C) 2016 Özgür Yazılım Vakfı A.Ş."
-
-#~ msgid ""
-#~ "Returns the context of the current subroutine call.\n"
-#~ " \n"
-#~ " Without EXPR, returns "
-#~ msgstr ""
-#~ "Geçerli altyordam çağrısının bağlamı döndürür.\n"
-#~ " \n"
-#~ " İFADE olmadan, şu döner "
-
-#~ msgid "add_process: process %5ld (%s) in the_pipeline"
-#~ msgstr "add_process: %5ld (%s) süreci iletişim_tünelinde"
-
-#~ msgid "Unknown Signal #"
-#~ msgstr "Bilinmeyen Sinyal #"
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
-
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Telif Hakkı (C) 2009 Free Software Foundation, Inc.\n"
-
-#~ msgid ""
-#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-#~ msgstr ""
-#~ "Lisans GPLv2+: GNU GPL sürüm 2 veya sonrası <http://gnu.org/licenses/gpl."
-#~ "html>\n"
-
-#~ msgid " "
-#~ msgstr " "
-
-#~ msgid "Without EXPR, returns returns \"$line $filename\". With EXPR,"
-#~ msgstr "İFADE olmaksızın \"$line $filename\" döner. İFADE ile ise"
-
-#~ msgid "returns \"$line $subroutine $filename\"; this extra information"
-#~ msgstr "\"$line $subroutine $filename\" döner; bu ek bilgi"
-
-#~ msgid "can be used used to provide a stack trace."
-#~ msgstr "bir yığıt izini sürmek için kullanılabilir."
-
-#~ msgid ""
-#~ "The value of EXPR indicates how many call frames to go back before the"
-#~ msgstr ""
-#~ "İFADE değeri şu ankinden önce kaç çağrı çerçevesinin geri döneceğini"
-
-#~ msgid "current one; the top frame is frame 0."
-#~ msgstr "belirtir; tepe çerçeve 0. çerçevedir."
-
-#~ msgid "%s: invalid number"
-#~ msgstr "%s: sayı geçersiz"
-
-#~ msgid "Shell commands matching keywords `"
-#~ msgstr "Bu anahtar sözcüklere uygun kabuk komutları: `"
-
-#~ msgid "Display the list of currently remembered directories. Directories"
-#~ msgstr ""
-#~ "\rdirs [-clpv] [+N] [-N]\n"
-#~ " O an anımsanan dizinleri listeler. Dizinler listeye"
-
-#~ msgid "find their way onto the list with the `pushd' command; you can get"
-#~ msgstr "`pushd' komutuyla eklenir; listeden tek tek geri almak içinse"
-
-#~ msgid "back up through the list with the `popd' command."
-#~ msgstr "`popd' komutu kullanılır."
-
-#~ msgid ""
-#~ "The -l flag specifies that `dirs' should not print shorthand versions"
-#~ msgstr "-l seçeneği `dirs'in dizinleri ev dizininize göreli kısayollar"
-
-#~ msgid ""
-#~ "of directories which are relative to your home directory. This means"
-#~ msgstr ""
-#~ "olarak göstermemesine yol açar. Yani `~/bin' yerine `/homes/bfox/bin'"
-
-#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag"
-#~ msgstr "gibi bir gösterimle karşılaşabilirsiniz. -v seçeneği `dirs'in"
-
-#~ msgid "causes `dirs' to print the directory stack with one entry per line,"
-#~ msgstr "dizin yığıtını dizin adının önüne yığıt konumunu ekleyerek her"
-
-#~ msgid ""
-#~ "prepending the directory name with its position in the stack. The -p"
-#~ msgstr "satırda bir girdi göstermesini sağlar. -p seçeneği yığıttaki"
-
-#~ msgid "flag does the same thing, but the stack position is not prepended."
-#~ msgstr "konumu göstermemesi dışında aynı çıktıyı verir."
-
-#~ msgid ""
-#~ "The -c flag clears the directory stack by deleting all of the elements."
-#~ msgstr "-c seçeneği tüm girdileri silerek dizin yığıtını boşaltır."
-
-#~ msgid ""
-#~ "+N displays the Nth entry counting from the left of the list shown by"
-#~ msgstr "+N dirs seçeneksiz çağrıldığında gösterdiği listenin solundan"
-
-#~ msgid " dirs when invoked without options, starting with zero."
-#~ msgstr " sıfırla başlayarak sayılan N'inci girdiyi gösterir."
-
-#~ msgid ""
-#~ "-N displays the Nth entry counting from the right of the list shown by"
-#~ msgstr "-N dirs seçeneksiz çağrıldığında gösterdiği listenin sağından"
-
-#~ msgid "Adds a directory to the top of the directory stack, or rotates"
-#~ msgstr "Dizin yığıtının en üstüne bir dizin ekler, ya da geçerli çalışma"
-
-#~ msgid "the stack, making the new top of the stack the current working"
-#~ msgstr "dizini yığıtın tepesine gelecek şekilde yığıtı döndürür."
-
-#~ msgid "directory. With no arguments, exchanges the top two directories."
-#~ msgstr "Hiç argüman verilmemişse en üstteki iki dizini yer değiştirir."
-
-#~ msgid "+N Rotates the stack so that the Nth directory (counting"
-#~ msgstr "+N (`dirs' tarafından gösterilen listenin solundan saymaya"
-
-#~ msgid " from the left of the list shown by `dirs', starting with"
-#~ msgstr " sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde"
-
-#~ msgid " zero) is at the top."
-#~ msgstr " yığıtı döndürür."
-
-#~ msgid "-N Rotates the stack so that the Nth directory (counting"
-#~ msgstr "-N (`dirs' tarafından gösterilen listenin sağından saymaya"
-
-#~ msgid " from the right of the list shown by `dirs', starting with"
-#~ msgstr " sıfırla başlandığında) N'inci dizin tepeye gelecek şekilde"
-
-#~ msgid "-n suppress the normal change of directory when adding directories"
-#~ msgstr "+n dizinleri yığıta eklerken normal dizin değişikliğini engeller,"
-
-#~ msgid " to the stack, so only the stack is manipulated."
-#~ msgstr " böylece sadece yığıt değiştirilmiş olur."
-
-#~ msgid "dir adds DIR to the directory stack at the top, making it the"
-#~ msgstr "dir DİZİNi yeni çalışma dizini yaparak dizin yığıtının"
-
-#~ msgid " new current working directory."
-#~ msgstr " tepesine ekler."
-
-#~ msgid "You can see the directory stack with the `dirs' command."
-#~ msgstr "Dizin yığıtını `dirs' komutuyla görebilirsiniz."
-
-#~ msgid "Removes entries from the directory stack. With no arguments,"
-#~ msgstr "Dizin yığıtından girdileri siler. Hiç argüman verilmemişse,"
-
-#~ msgid "removes the top directory from the stack, and cd's to the new"
-#~ msgstr "yığıtın en üstündeki dizini yığıttan kaldırır ve"
-
-#~ msgid "+N removes the Nth entry counting from the left of the list"
-#~ msgstr "+N `dirs' tarafından gösterilen listenin solundan saymaya"
-
-#~ msgid " shown by `dirs', starting with zero. For example: `popd +0'"
-#~ msgstr " sıfırla başlandığında N'inci girdiyi siler. Örneğin,"
-
-#~ msgid " removes the first directory, `popd +1' the second."
-#~ msgstr " `popd +0' ilk dizini `popd +1' ikincisini siler."
-
-#~ msgid "-N removes the Nth entry counting from the right of the list"
-#~ msgstr "-N `dirs' tarafından gösterilen listenin sağından saymaya"
-
-#~ msgid " shown by `dirs', starting with zero. For example: `popd -0'"
-#~ msgstr " sıfırla başlandığında N'inci girdiyi siler. Örneğin,"
-
-#~ msgid " removes the last directory, `popd -1' the next to last."
-#~ msgstr " `popd -0' son dizini `popd -1' sonuncudan öncekini siler."
-
-#~ msgid ""
-#~ "-n suppress the normal change of directory when removing directories"
-#~ msgstr ""
-#~ "-n dizinleri yığıttan silerken normal dizin değişikliğini engeller,"
-
-#~ msgid " from the stack, so only the stack is manipulated."
-#~ msgstr " böylece sadece yığıt değiştirilmiş olur."
-
-#~ msgid "allocated"
-#~ msgstr "ayrılmış"
-
-#~ msgid "freed"
-#~ msgstr "serbest bırakılmış"
-
-#~ msgid "requesting resize"
-#~ msgstr "yeniden boyutlandırma isteniyor"
-
-#~ msgid "just resized"
-#~ msgstr "yeniden boyutlandırıldı"
-
-#~ msgid "bug: unknown operation"
-#~ msgstr "yazılım hatası: unknown operation"
-
-#~ msgid "malloc: watch alert: %p %s "
-#~ msgstr "malloc: yakalama alarmı: %p %s "
-
-#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)"
-
-#~ msgid "xrealloc: cannot allocate %lu bytes"
-#~ msgstr "xrealloc: %lu bayt yeniden ayrılamıyor"
-
-#~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: %s:%d: %lu bayt yeniden ayrılamıyor (%lu bayt ayrıldı)"
-
-#~ msgid ""
-#~ "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,\n"
-#~ " break N levels."
-#~ msgstr ""
-#~ "\rbreak [N]\n"
-#~ " FOR, WHILE veya UNTIL döngülerinden çıkılmasını sağlar. N "
-#~ "verilmiÅŸse,\n"
-#~ " dışa doğru N. döngüden çıkılır. N >= 1 olmalıdır."
-
-#~ msgid ""
-#~ "Run a shell builtin. This is useful when you wish to rename a\n"
-#~ " shell builtin to be a function, but need the functionality of the\n"
-#~ " builtin within the function itself."
-#~ msgstr ""
-#~ "\rbuiltin [kabuk-yerleşiği [argümanlar]]\n"
-#~ " Bir kabuk yerleşiğini çalıştırır. Bu bir kabuk işlevinin bir "
-#~ "kabul\n"
-#~ " yerleşiği ile aynı isimde atanması durumunda faydalıdır, fakat "
-#~ "iÅŸlevin\n"
-#~ " içinde yerleşiğin işlevselliğinin sağlanması gerekir."
-
-#~ msgid ""
-#~ "Print the current working directory. With the -P option, pwd prints\n"
-#~ " the physical directory, without any symbolic links; the -L option\n"
-#~ " makes pwd follow symbolic links."
-#~ msgstr ""
-#~ "\rpwd [-LP]\n"
-#~ " Geçerli çalışma dizinini basar. -P seçeneği ile sembolik bağlar\n"
-#~ " olmaksızın fiziksel dizini basar; -L seçeneği ile sembolik bağları "
-#~ "izler."
-
-#~ msgid "Return a successful result."
-#~ msgstr ""
-#~ "\rtrue\n"
-#~ " Başarılı bir sonuç döndürür."
-
-#~ msgid ""
-#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell\n"
-#~ " function called `ls', and you wish to call the command `ls', you can\n"
-#~ " say \"command ls\". If the -p option is given, a default value is "
-#~ "used\n"
-#~ " for PATH that is guaranteed to find all of the standard utilities. "
-#~ "If\n"
-#~ " the -V or -v option is given, a string is printed describing "
-#~ "COMMAND.\n"
-#~ " The -V option produces a more verbose description."
-#~ msgstr ""
-#~ "\rcommand [-pVv] KOMUT [ARGümanlar ...]\n"
-#~ " KOMUT komutunu KOMUT isimli kabuk iÅŸlevini yoksayarak "
-#~ "ARGümanlarla\n"
-#~ " çalıştırır. Örneğin, `ls' isimli bir kabuk işlevi varsa ve siz "
-#~ "`ls'\n"
-#~ " komutunu çalıştırmak istiyorsanız \"command ls\" "
-#~ "diyebilirsiniz.\n"
-#~ " -p seçeneği verilmişse, tüm standart uygulamaların bulunmasını "
-#~ "garanti\n"
-#~ " eden PATH için bir öntanımlı değer kullanılır. -V ya da -v "
-#~ "seçeneği\n"
-#~ " verilmişse, KOMUTu açıklayan bir dizge basılır. -V seçeneği "
-#~ "daha\n"
-#~ " ayrıntılı açıklama üretilmesini sağlar. "
-
-#~ msgid ""
-#~ "Declare variables and/or give them attributes. If no NAMEs are\n"
-#~ " given, then display the values of variables instead. The -p option\n"
-#~ " will display the attributes and values of each NAME.\n"
-#~ " \n"
-#~ " The flags are:\n"
-#~ " \n"
-#~ " -a\tto make NAMEs arrays (if supported)\n"
-#~ " -f\tto select from among function names only\n"
-#~ " -F\tto display function names (and line number and source file name "
-#~ "if\n"
-#~ " \tdebugging) without definitions\n"
-#~ " -i\tto make NAMEs have the `integer' attribute\n"
-#~ " -r\tto make NAMEs readonly\n"
-#~ " -t\tto make NAMEs have the `trace' attribute\n"
-#~ " -x\tto make NAMEs export\n"
-#~ " \n"
-#~ " Variables with the integer attribute have arithmetic evaluation (see\n"
-#~ " `let') done when the variable is assigned to.\n"
-#~ " \n"
-#~ " When displaying values of variables, -f displays a function's name\n"
-#~ " and definition. The -F option restricts the display to function\n"
-#~ " name only.\n"
-#~ " \n"
-#~ " Using `+' instead of `-' turns off the given attribute instead. "
-#~ "When\n"
-#~ " used in a function, makes NAMEs local, as with the `local' command."
-#~ msgstr ""
-#~ "\rdeclare [-afFirtx] [-p] [Ä°SÄ°M[=DEÄžER] ...]\n"
-#~ " Değişkenlerin özellikleri ile bildirilmesini sağlar. Hiçbir İSİM\n"
-#~ " verilmezse değişkenleri ve değerlerini listeler. -p seçeneği ile her\n"
-#~ " İSİM için değerler ve özellikleri gösterecektir.\n"
-#~ "\n"
-#~ " Seçenekler:\n"
-#~ "\n"
-#~ " -a Her Ä°SÄ°M bir dizi deÄŸiÅŸkenidir(destekleniyorsa)\n"
-#~ " -f Sadece işlev isimleri kullanılır.\n"
-#~ " -F Tanımları olmaksızın sadece işlev isimleri (ve hata "
-#~ "ayıklaması\n"
-#~ " yapılıyorsa kaynak dosya isimleri ve satır sayıları) "
-#~ "gösterilir\n"
-#~ " -i Her İSİMe `integer' özniteliği verir.\n"
-#~ " -r Ä°SÄ°Mleri salt-okunur yapar.\n"
-#~ " -t Her İSİMe `trace' özniteliği verir.\n"
-#~ " -x İSİMleri ihraç edilebilir yapar\n"
-#~ "\n"
-#~ " Tamsayı öznitelikli değişkenlere bir DEĞER atandığında aritmetik\n"
-#~ " değerlendirme uygulanır (bkz, `let').\n"
-#~ "\n"
-#~ " Değişken değerleri gösterilirken, -f bir işlevin ismini ve "
-#~ "tanımını\n"
-#~ " gösterir. -F seçeneği ile sadece işlev isminin gösterilmesini "
-#~ "saÄŸlar.\n"
-#~ "\n"
-#~ " `-' yerine `+' kullanarak belirtilen öznitelik kapatılabilir.\n"
-#~ " Bir işlevde kullanıldığında declare her İSİMi `local' komutu "
-#~ "kullanılmış\n"
-#~ " gibi yerel yapar."
-
-#~ msgid "Obsolete. See `declare'."
-#~ msgstr ""
-#~ "\rtypeset [-afFirtx] [-p] Ä°SÄ°M[=DEÄžER] ...\n"
-#~ " Geçersiz (eski). `declare'ye bakın."
-
-#~ msgid ""
-#~ "Create a local variable called NAME, and give it VALUE. LOCAL\n"
-#~ " can only be used within a function; it makes the variable NAME\n"
-#~ " have a visible scope restricted to that function and its children."
-#~ msgstr ""
-#~ "\rlocal [seçenek] İSİM[=DEĞER] ...\n"
-#~ " Ä°SÄ°M isimli bir yerel deÄŸiÅŸken oluÅŸturulup, ona DEÄžER atar.\n"
-#~ " local sadece bir işlev içinde kullanılabilir; İSİM değişkeninin\n"
-#~ " sadece işlev ve çocuklarının etki alanında görünür olmasını sağlar."
-
-#~ msgid ""
-#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed."
-#~ msgstr ""
-#~ "\recho [-neE] [ARG ...]\n"
-#~ " ARGümanlarını çıktılar. -n belirtilmişse, satırsonu bastırılır."
-
-#~ msgid ""
-#~ "Enable and disable builtin shell commands. This allows\n"
-#~ " you to use a disk command which has the same name as a shell\n"
-#~ " builtin without specifying a full pathname. If -n is used, the\n"
-#~ " NAMEs become disabled; otherwise NAMEs are enabled. For example,\n"
-#~ " to use the `test' found in $PATH instead of the shell builtin\n"
-#~ " version, type `enable -n test'. On systems supporting dynamic\n"
-#~ " loading, the -f option may be used to load new builtins from the\n"
-#~ " shared object FILENAME. The -d option will delete a builtin\n"
-#~ " previously loaded with -f. If no non-option names are given, or\n"
-#~ " the -p option is supplied, a list of builtins is printed. The\n"
-#~ " -a option means to print every builtin with an indication of whether\n"
-#~ " or not it is enabled. The -s option restricts the output to the "
-#~ "POSIX.2\n"
-#~ " `special' builtins. The -n option displays a list of all disabled "
-#~ "builtins."
-#~ msgstr ""
-#~ "\renable [-n] [-p] [-f DOSYAÄ°SMÄ°] [-ads] [Ä°SÄ°M ...]\n"
-#~ " Yerleşik kabuk komutlarını etkinleştirir ve kaldırır. Bir "
-#~ "kabuk\n"
-#~ " yerleşiği ile aynı isme sahip bir disk komutunun tam dosya "
-#~ "yolu\n"
-#~ " belirtmeksizin kullanılabilmesini mümkün kılar. -n "
-#~ "seçeneği\n"
-#~ " kullanılmışsa İSİMler kullanımdan kaldırılır; aksi takdirde "
-#~ "Ä°SÄ°Mler\n"
-#~ " etkin kılınır. Örneğin `test' yerleşiği yerine `test' "
-#~ "uygulamasının\n"
-#~ " yerleşik komut olarak kullanılmasını sağlamak için `enable -n "
-#~ "test'\n"
-#~ " yazmalısınız. Dinamik yüklemenin desteklendiği sistemlerde, -"
-#~ "f\n"
-#~ " seçeneği ile yeni bir İSİM yerleşik komutunun DOSYAİSMİ ile "
-#~ "belirtilen\n"
-#~ " paylaşımlı nesneden yüklenmesi sağlanır. -d seçeneği -f ile "
-#~ "yüklenen\n"
-#~ " yerleşiği silmek için kullanılır. Hiç seçenek verilmezse ya da -"
-#~ "p\n"
-#~ " seçeneği verilirse kabuk yerleşiklerinin bir listesi gösterilir. -"
-#~ "a\n"
-#~ " seçeneği ile her yerleşik etkin olup olmadığı belirtilerek "
-#~ "listelenir.\n"
-#~ " -s seçeneği ile sadece POSIX'e özel yerleşikleri içerir. -n "
-#~ "seçeneği\n"
-#~ " bir İSİM belirtilmeksizin kullanılırsa kullanımdan "
-#~ "kaldırılmış\n"
-#~ " yerleÅŸikleri listeler."
-
-#~ msgid ""
-#~ "Read ARGs as input to the shell and execute the resulting command(s)."
-#~ msgstr ""
-#~ "\reval [ARG ...]\n"
-#~ " Kabuğa girilmiş biçimleriyle ARG'ları okur ve sonuçlanan komutları "
-#~ "çalıştır."
-
-#~ msgid ""
-#~ "Exec FILE, replacing this shell with the specified program.\n"
-#~ " If FILE is not specified, the redirections take effect in this\n"
-#~ " shell. If the first argument is `-l', then place a dash in the\n"
-#~ " zeroth arg passed to FILE, as login does. If the `-c' option\n"
-#~ " is supplied, FILE is executed with a null environment. The `-a'\n"
-#~ " option means to make set argv[0] of the executed process to NAME.\n"
-#~ " If the file cannot be executed and the shell is not interactive,\n"
-#~ " then the shell exits, unless the shell option `execfail' is set."
-#~ msgstr ""
-#~ "\rexec [-cl] [-a AD] DOSYA [YÖNLENDİRMELER]]\n"
-#~ " DOSYA'yı yeni bir süreç oluşturmadan kabukla değiştirip çalıştırır.\n"
-#~ " Eğer DOSYA belirtilmemişse, kabukta YÖNLENDİRMELER etkili olur.\n"
-#~ " Eğer ilk argüman -l ise, login'in yaptığı gibi DOSYAya aktarılan\n"
-#~ " sıfırıncı argümana bir tire yerleştirilir. -c seçeneği verilmişse,\n"
-#~ " DOSYA boş bir ortamda çalıştırılır. -a seçeneği verilirse kabuk,\n"
-#~ " DOSYAya ADı 0. argüman (argv[0]) olarak aktarır. Eğer DOSYA\n"
-#~ " çalıştırılamazsa ve kabuk etkileşimli değilse, `execfail' kabuk\n"
-#~ " değişkeni etkin olmadıkça kabuk çıkar."
-
-#~ msgid "Logout of a login shell."
-#~ msgstr ""
-#~ "\rlogout\n"
-#~ " Oturum kabuğundan çıkıp oturumu kapatır."
-
-#~ msgid ""
-#~ "For each NAME, the full pathname of the command is determined and\n"
-#~ " remembered. If the -p option is supplied, PATHNAME is used as the\n"
-#~ " full pathname of NAME, and no path search is performed. The -r\n"
-#~ " option causes the shell to forget all remembered locations. The -d\n"
-#~ " option causes the shell to forget the remembered location of each "
-#~ "NAME.\n"
-#~ " If the -t option is supplied the full pathname to which each NAME\n"
-#~ " corresponds is printed. If multiple NAME arguments are supplied "
-#~ "with\n"
-#~ " -t, the NAME is printed before the hashed full pathname. The -l "
-#~ "option\n"
-#~ " causes output to be displayed in a format that may be reused as "
-#~ "input.\n"
-#~ " If no arguments are given, information about remembered commands is "
-#~ "displayed."
-#~ msgstr ""
-#~ "\rhash [-lr] [-p DOSYAYOLU] [-dt] [AD]\n"
-#~ " AD argümanları olarak belirtilen komutların tam dosya yollarını\n"
-#~ " hatırlar, böylece müteakip çağrılarda aranmalarına gerek kalmaz.\n"
-#~ " Komutlar $PATH içinde listelenmiş dizinler aranarak bulunur. -p\n"
-#~ " seçeneği dosya yolu aramalarını engeller ve ADın konumu olarak\n"
-#~ " DOSYAYOLU kullanılır. -r seçeneği hatırlanan tüm konumları kabuğun\n"
-#~ " unutmasına sebep olur. -d seçeneği her AD için hatırlanan konumun\n"
-#~ " kabuk tarafından unutulmasına sebep olur. -t seçeneği verildiğinde\n"
-#~ " her ADa karşılık gelen dosya konumları basılır. -t seçeneği ile çok\n"
-#~ " sayıda AD verilirse, AD hatırlanan tam dosya yolundan önce basılır.\n"
-#~ " -l seçeneği çıktının girdi olarak tekrar kullanılmasını sağlayacak\n"
-#~ " biçimde basılmasını sağlar. Hiç argüman belirtilmezse ya da sadece\n"
-#~ " -l seçeneği belirtilirse hatırlanan komutlar hakkında bilgi basılır."
-
-#~ msgid ""
-#~ "Display helpful information about builtin commands. If PATTERN is\n"
-#~ " specified, gives detailed help on all commands matching PATTERN,\n"
-#~ " otherwise a list of the builtins is printed. The -s option\n"
-#~ " restricts the output for each builtin command matching PATTERN to\n"
-#~ " a short usage synopsis."
-#~ msgstr ""
-#~ "\rhelp [-s] [KALIP]\n"
-#~ " Yerleşik komutlar hakkında yardım bilgisi gösterir. KALIP "
-#~ "belirtilmiÅŸse,\n"
-#~ " help KALIP ile eşleşen tüm komutlar için yardım bilgisi gösterir, "
-#~ "aksi\n"
-#~ " takdirde yerleşikler listelenir. -s seçeneği ile yardım bilgisi "
-#~ "yerine\n"
-#~ " komutun kullanımını gösteren sözdizimini basar."
-
-#~ msgid ""
-#~ "By default, removes each JOBSPEC argument from the table of active jobs.\n"
-#~ " If the -h option is given, the job is not removed from the table, but "
-#~ "is\n"
-#~ " marked so that SIGHUP is not sent to the job if the shell receives a\n"
-#~ " SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove "
-#~ "all\n"
-#~ " jobs from the job table; the -r option means to remove only running "
-#~ "jobs."
-#~ msgstr ""
-#~ "\rdisown [-h] [-ar] [Ä°Åž_BELÄ°RTÄ°MÄ° ...]\n"
-#~ " Seçeneksiz kullanımda her İŞ_BELİRTİMİ etkin işler tablosundan\n"
-#~ " kaldırılır. -h seçeneği ile iş tablodan kaldırılmaz ama imlenir\n"
-#~ " böylece kabuk bir SIGHUP alırsa bunu işe göndermez. İŞ_BELİRTİMİ\n"
-#~ " verilmeden -a seçeneğinin kullanılması durumunda iş tablosundaki\n"
-#~ " tüm işler kaldırılır. İŞ_BELİRTİMİ verilmeden -r seçeneğinin\n"
-#~ " kullanılması durumunda ise sadece çalışmakta olan işler kaldırılır."
-
-#~ msgid ""
-#~ "One line is read from the standard input, or from file descriptor FD if "
-#~ "the\n"
-#~ " -u option is supplied, and the first word is assigned to the first "
-#~ "NAME,\n"
-#~ " the second word to the second NAME, and so on, with leftover words "
-#~ "assigned\n"
-#~ " to the last NAME. Only the characters found in $IFS are recognized "
-#~ "as word\n"
-#~ " delimiters. If no NAMEs are supplied, the line read is stored in the "
-#~ "REPLY\n"
-#~ " variable. If the -r option is given, this signifies `raw' input, "
-#~ "and\n"
-#~ " backslash escaping is disabled. The -d option causes read to "
-#~ "continue\n"
-#~ " until the first character of DELIM is read, rather than newline. If "
-#~ "the -p\n"
-#~ " option is supplied, the string PROMPT is output without a trailing "
-#~ "newline\n"
-#~ " before attempting to read. If -a is supplied, the words read are "
-#~ "assigned\n"
-#~ " to sequential indices of ARRAY, starting at zero. If -e is supplied "
-#~ "and\n"
-#~ " the shell is interactive, readline is used to obtain the line. If -n "
-#~ "is\n"
-#~ " supplied with a non-zero NCHARS argument, read returns after NCHARS\n"
-#~ " characters have been read. The -s option causes input coming from a\n"
-#~ " terminal to not be echoed.\n"
-#~ " \n"
-#~ " The -t option causes read to time out and return failure if a "
-#~ "complete line\n"
-#~ " of input is not read within TIMEOUT seconds. If the TMOUT variable "
-#~ "is set,\n"
-#~ " its value is the default timeout. The return code is zero, unless "
-#~ "end-of-file\n"
-#~ " is encountered, read times out, or an invalid file descriptor is "
-#~ "supplied as\n"
-#~ " the argument to -u."
-#~ msgstr ""
-#~ "\rread [-ers] [-u DSYTNT] [-t ZMAÅžM] [-p Ä°STEM] [-a DÄ°ZÄ°]\n"
-#~ " [-n KRKSAY] [-d AYRAÇ] [İSİM ...]\n"
-#~ " Standart girdiden ya da -u seçeneği ile sağlanan DoSYaTaNıTıcıdan "
-#~ "tek\n"
-#~ " satır okur ve ilk sözcük ilk İSİMe, ikinci sözcük ikinci İSİMe ve "
-#~ "böyle\n"
-#~ " giderek, aradaki sözcükler ve ayraçlar son İSİMe kadar atanır. "
-#~ "Satırı\n"
-#~ " sözcüklere ayırmakta sadece $IFS değişkeninin değerindeki "
-#~ "karakterler\n"
-#~ " kullanılır. Tersbölü satırın devam ettirilmesi için ve kendinden "
-#~ "sonra\n"
-#~ " gelen özel karakterlerin yorumlanması için kullanılabilir. Hiç "
-#~ "isim\n"
-#~ " verilmemişse, satırın tamamı okunur ve REPLY değişkenine atanır. -"
-#~ "r\n"
-#~ " verildiğinde tersbölü bir önceleme karakteri olarak ele "
-#~ "alınmaz,\n"
-#~ " dolayısıyla tersbölü-satırsonu çifti satırın alt satırda devam "
-#~ "edeceÄŸini\n"
-#~ " belirtmekte kullanılamaz. -d ile satırın satırsonu karakterine "
-#~ "kadar\n"
-#~ " değil AYRAÇ karakterine kadar okunması sağlanır. -p ile "
-#~ "girdi\n"
-#~ " beklendiğini belirtecek İSTEM dizgesi satırsonu karakteri "
-#~ "olmaksızın\n"
-#~ " görüntülenir. İstem sadece girdi bir uçbirimden gelecekse "
-#~ "gösterilir.\n"
-#~ " -a ile sözcükler sırayla DİZİ dizisinin elemanlarına atanır; dizinin "
-#~ "ilk\n"
-#~ " elemanının indisi 0'dır; atama yapılmadan önce DİZİ dizisinin "
-#~ "tüm\n"
-#~ " elemanları silinir; diğer İSİM argümanları yoksayılır. -e ile "
-#~ "kabuk\n"
-#~ " etkileşimliyse, satırı sağlamak için readline kullanılır. -n "
-#~ "ile\n"
-#~ " satırın okunması KRKSAYıncı karakterde sona erer; satırın kalanı "
-#~ "yok\n"
-#~ " sayılır. -s ile sessiz kipe girilir, girdi bir uçbirimden "
-#~ "geliyorsa\n"
-#~ " karakterler yansılanmaz. -t ile satır ZMAŞM saniye sonra "
-#~ "hala\n"
-#~ " sonlandırılmamışsa read zamanaşımına düşer ve hata döner. "
-#~ "$TMOUT\n"
-#~ " değişkeni bir değerle atanmışsa değeri öntanımlı zamanaşımı "
-#~ "deÄŸeri\n"
-#~ " olarak ele alınır. Bu seçenek, girdi bir uçbirim ya da "
-#~ "boruhattından\n"
-#~ " okunmuyorsa etkisizdir. Dosyasonu karakteri (Ctrl-D) "
-#~ "saptanmadıkça,\n"
-#~ " okuma zamanaşımına düşmedikçe ya da -u seçeneği ile sağlanan\n"
-#~ " DoSYaTaNıTıcı geçersiz olmadıkça dönüş durumu sıfırdır."
-
-#~ msgid ""
-#~ "Causes a function to exit with the return value specified by N. If N\n"
-#~ " is omitted, the return status is that of the last command."
-#~ msgstr ""
-#~ "\rreturn [N]\n"
-#~ " Bir işlevin N değeri ile dönerek çıkmasına sebep olur. N verilmezse\n"
-#~ " son komutun dönüş durumu döner."
-
-#~ msgid ""
-#~ "For each NAME, remove the corresponding variable or function. Given\n"
-#~ " the `-v', unset will only act on variables. Given the `-f' flag,\n"
-#~ " unset will only act on functions. With neither flag, unset first\n"
-#~ " tries to unset a variable, and if that fails, then tries to unset a\n"
-#~ " function. Some variables cannot be unset; also see readonly."
-#~ msgstr ""
-#~ "\runset [-f] [-v] [AD ...]\n"
-#~ " ADı belirtilen her işlev ya da değişken kaldırılır. -v verilmişse,\n"
-#~ " işlem sadece kabuk değişkenlerine uygulanır. -f verilmişse, işlem\n"
-#~ " sadece kabuk işlevlerine uygulanır ve işlev tanımı kaldırılır.\n"
-#~ " Hiçbir seçenek verilmemişse, unset önce bir değişkeni kaldırmayı\n"
-#~ " dener, başarısız olursa bir işlevi kaldırmayı dener. Salt-okunur\n"
-#~ " değişkenler ve işlevler kaldırılamaz."
-
-#~ msgid ""
-#~ "NAMEs are marked for automatic export to the environment of\n"
-#~ " subsequently executed commands. If the -f option is given,\n"
-#~ " the NAMEs refer to functions. If no NAMEs are given, or if `-p'\n"
-#~ " is given, a list of all names that are exported in this shell is\n"
-#~ " printed. An argument of `-n' says to remove the export property\n"
-#~ " from subsequent NAMEs. An argument of `--' disables further option\n"
-#~ " processing."
-#~ msgstr ""
-#~ "\rexport [-nf] [Ä°SÄ°M[=DEÄžER] ...]\n"
-#~ "export -p\n"
-#~ " Ortamdaki çocuk sürece aktarılacak her İSİM'i imler. -f "
-#~ "verilmiÅŸse\n"
-#~ " Ä°SÄ°M'ler kabuk iÅŸlevleridir, aksi takdirde kabuk "
-#~ "deÄŸiÅŸkenleridir.\n"
-#~ " -n seçeneği verilirse aktarılacak İSİM'ler artık imlenmez. "
-#~ "Ä°SÄ°M\n"
-#~ " verilmemişse veya -p seçeneği verilmişse aktarılan İSİM'lerin "
-#~ "listesi\n"
-#~ " gösterilir. -p seçeneği çıktının girdi olarak tekrar "
-#~ "kullanılabilir\n"
-#~ " biçimde gösterilmesini sağlar. Bir değişken isminden sonra "
-#~ "=DEÄžER\n"
-#~ " geliyorsa değer değişkenin değeri yapılır. `--' ile seçenek "
-#~ "iÅŸlemleri\n"
-#~ " kapatılır."
-
-#~ msgid ""
-#~ "The given NAMEs are marked readonly and the values of these NAMEs may\n"
-#~ " not be changed by subsequent assignment. If the -f option is given,\n"
-#~ " then functions corresponding to the NAMEs are so marked. If no\n"
-#~ " arguments are given, or if `-p' is given, a list of all readonly "
-#~ "names\n"
-#~ " is printed. The `-a' option means to treat each NAME as\n"
-#~ " an array variable. An argument of `--' disables further option\n"
-#~ " processing."
-#~ msgstr ""
-#~ "\rreadonly [-af] [Ä°SÄ°M[=DEÄžER] ...]\n"
-#~ "readonly -p\n"
-#~ " Her Ä°SÄ°M'i salt-okunur olarak imler. Bu Ä°SÄ°M'lerin deÄŸerleri\n"
-#~ " müteakip çağrılarda değiştirilemez. -f seçeneği verilirse, her\n"
-#~ " İSİM bir kabuk işlevi olarak imlenir. -a seçeneği verilirse, her\n"
-#~ " isim bir dizi değişkeni olarak ele alınır. Hiç argüman verilmezse\n"
-#~ " veya -p seçeneği verilirse salt-okunur isimlerin hepsi basılır. Bir\n"
-#~ " deÄŸiÅŸken isminden sonra bir =DEÄžER geliyorsa DEÄžER deÄŸiÅŸkenin deÄŸeri\n"
-#~ " yapılır. `--' ile seçenek işlemleri kapatılır."
-
-#~ msgid ""
-#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is\n"
-#~ " not given, it is assumed to be 1."
-#~ msgstr ""
-#~ "\rshift [N]\n"
-#~ " $N+1 ... konumsal parametreleri $1 ... olarak ele alınır.\n"
-#~ " N verilmezse 1 kabul edilir."
-
-#~ msgid ""
-#~ "Suspend the execution of this shell until it receives a SIGCONT\n"
-#~ " signal. The `-f' if specified says not to complain about this\n"
-#~ " being a login shell if it is; just suspend anyway."
-#~ msgstr ""
-#~ "\rsuspend [-f]\n"
-#~ " Bu kabuğun çalışmasını bir SIGCONT sinyali alana kadar askıya alır.\n"
-#~ " -f seçeneği kullanıldığında kabuk bir giriş kabuğu olsa bile askıya "
-#~ "alınır."
-
-#~ msgid ""
-#~ "Print the accumulated user and system times for processes run from\n"
-#~ " the shell."
-#~ msgstr ""
-#~ "\rtimes\n"
-#~ " Kabukta çalışan süreçlerden toplanan kullanıcı ve sistem zamanlarını "
-#~ "basar."
-
-#~ msgid ""
-#~ "For each NAME, indicate how it would be interpreted if used as a\n"
-#~ " command name.\n"
-#~ " \n"
-#~ " If the -t option is used, `type' outputs a single word which is one "
-#~ "of\n"
-#~ " `alias', `keyword', `function', `builtin', `file' or `', if NAME is "
-#~ "an\n"
-#~ " alias, shell reserved word, shell function, shell builtin, disk "
-#~ "file,\n"
-#~ " or unfound, respectively.\n"
-#~ " \n"
-#~ " If the -p flag is used, `type' either returns the name of the disk\n"
-#~ " file that would be executed, or nothing if `type -t NAME' would not\n"
-#~ " return `file'.\n"
-#~ " \n"
-#~ " If the -a flag is used, `type' displays all of the places that "
-#~ "contain\n"
-#~ " an executable named `file'. This includes aliases, builtins, and\n"
-#~ " functions, if and only if the -p flag is not also used.\n"
-#~ " \n"
-#~ " The -f flag suppresses shell function lookup.\n"
-#~ " \n"
-#~ " The -P flag forces a PATH search for each NAME, even if it is an "
-#~ "alias,\n"
-#~ " builtin, or function, and returns the name of the disk file that "
-#~ "would\n"
-#~ " be executed."
-#~ msgstr ""
-#~ "\rtype [-afptP] AD [AD ...]\n"
-#~ " Her ADın bir komut ismi olarak kullanılırsa nasıl yorumlanması\n"
-#~ " gerektiÄŸini belirtir.\n"
-#~ "\n"
-#~ " -t seçeneği verildiğinde, AD bir takma ad ise `alias', bir işlev ise\n"
-#~ " `function', bir yerleşik komut ise `builtin', bir disk dosyası ise \n"
-#~ " `file' veya bir anahtar sözcük ise `keyword' sözcüğünü basar.\n"
-#~ "\n"
-#~ " -p seçeneği verildiğinde, AD, `type -t AD' çıktısı file sonucunu\n"
-#~ " vermiyorsa hiçbir şey dönmez, aksi takdirde çalıştırılacak disk\n"
-#~ " dosyasının ismi basılır.\n"
-#~ "\n"
-#~ " -a seçeneği verildiğinde, isim çalıştırılabilir dosyasının\n"
-#~ " bulunabileceği yerleri basar. Bu, sadece ve sadece -p seçeneği\n"
-#~ " kullanılmamışsa takma adları, yerleşik komutları ve işlevleri\n"
-#~ " de içerir.\n"
-#~ "\n"
-#~ " -f seçeneği belirtilmişse type kabuk işlevlerini bulmaya çalışmaz.\n"
-#~ "\n"
-#~ " -P seçeneği her ADiçin, bir takma ad, yerleşik komut veya işlev "
-#~ "olmasa\n"
-#~ " bile bir yol araması yapılmasını için zorlar ve çalıştırılabilir "
-#~ "disk\n"
-#~ " dosyası ismi ile döner."
-
-#~ msgid ""
-#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if\n"
-#~ " `-S' is supplied, the current value of the mask is printed. The `-"
-#~ "S'\n"
-#~ " option makes the output symbolic; otherwise an octal number is "
-#~ "output.\n"
-#~ " If `-p' is supplied, and MODE is omitted, the output is in a form\n"
-#~ " that may be used as input. If MODE begins with a digit, it is\n"
-#~ " interpreted as an octal number, otherwise it is a symbolic mode "
-#~ "string\n"
-#~ " like that accepted by chmod(1)."
-#~ msgstr ""
-#~ "\rumask [-p] [-S] [KÄ°P]\n"
-#~ " Kabuk sürecinin dosya oluşturma maskesini KİP olarak ayarlar.\n"
-#~ " -S seçeneği bir KİP olmaksızın verilirse, maske sembolik kipte\n"
-#~ " gösterilir. -S seçeneği çıktının sembolik olmasını sağlar, yoksa\n"
-#~ " sekizlik değer basılır. -p seçeneği bir KİP olmaksızın verilirse,\n"
-#~ " maske, kabuğa girdi olarak verilebilecek biçemde gösterilir. KİP\n"
-#~ " bir rakam ile başlıyorsa sekizlik bir sayı olarak yorumlanır;\n"
-#~ " rakamla başlamıyorsa, chmod(1) komutundaki gibi bir sembolik kip\n"
-#~ " maskesi olarak yorumlanır. Eğer KİP verilmezse, maskenin mevcut\n"
-#~ " değeri gösterilir."
-
-#~ msgid ""
-#~ "Wait for the specified process and report its termination status. If\n"
-#~ " N is not given, all currently active child processes are waited for,\n"
-#~ " and the return code is zero. N is a process ID; if it is not given,\n"
-#~ " all child processes of the shell are waited for."
-#~ msgstr ""
-#~ "\rwait [N]\n"
-#~ " Belirtilen süreci bekler ve sonlandırma durumunu raporlar. N\n"
-#~ " verilmezse, o an etkin olan tüm süreçler için beklenir ve sıfır\n"
-#~ " durumu ile dönülür. N bir süreç kimliğidir; verilmezse kabuğun\n"
-#~ " tüm alt süreçleri için beklenir."
-
-#~ msgid ""
-#~ "Create a simple command invoked by NAME which runs COMMANDS.\n"
-#~ " Arguments on the command line along with NAME are passed to the\n"
-#~ " function as $0 .. $n."
-#~ msgstr ""
-#~ "\rfunction AD { KOMUTlar ; }\n"
-#~ "\tveya\n"
-#~ "AD () { KOMUTlar ; }\n"
-#~ " ADıyla çağrılarak KOMUTları çalıştıran basit bir komut oluşturur.\n"
-#~ " AD ile birlikte verilen komut satırı argümanları işleve $0 .. $N\n"
-#~ " olarak aktarılır."
-
-#~ msgid ""
-#~ "Toggle the values of variables controlling optional behavior.\n"
-#~ " The -s flag means to enable (set) each OPTNAME; the -u flag\n"
-#~ " unsets each OPTNAME. The -q flag suppresses output; the exit\n"
-#~ " status indicates whether each OPTNAME is set or unset. The -o\n"
-#~ " option restricts the OPTNAMEs to those defined for use with\n"
-#~ " `set -o'. With no options, or with the -p option, a list of all\n"
-#~ " settable options is displayed, with an indication of whether or\n"
-#~ " not each is set."
-#~ msgstr ""
-#~ "\rshopt [-pqsu] [-o UZUN-SEÇENEK] SÇNKADI [SÇNKADI...]\n"
-#~ " İsteğe bağlı kabuk davranışlarını kontrol eden değişken değerlerini "
-#~ "açıp\n"
-#~ " kapar. -s ile belirtilen her SÇNKADInı etkinleştirir. -u ile "
-#~ "belirtilen\n"
-#~ " her SÇNKADInı iptal eder. -q ile normal çıktıyı engeller; dönüş "
-#~ "durumu\n"
-#~ " SÇNKADInın etkin olup olmadığını gösterir. -o ile set yerleşiğinin "
-#~ "-o\n"
-#~ " seçeneğinde kullanılabilecek SÇNKADI değerlerini sınırlar. Seçeneksiz "
-#~ "ya\n"
-#~ " da -p seçeneği ile tüm atanabilir seçenekleri etkin olup "
-#~ "olmadıklarını\n"
-#~ " belirterek listeler."
-
-#~ msgid ""
-#~ "For each NAME, specify how arguments are to be completed.\n"
-#~ " If the -p option is supplied, or if no options are supplied, "
-#~ "existing\n"
-#~ " completion specifications are printed in a way that allows them to "
-#~ "be\n"
-#~ " reused as input. The -r option removes a completion specification "
-#~ "for\n"
-#~ " each NAME, or, if no NAMEs are supplied, all completion "
-#~ "specifications."
-#~ msgstr ""
-#~ "\rcomplete [-abcdefgjksuv] [-pr] [-o SEÇENEK] [-A EYLEM] [-G KALIP]\n"
-#~ " [-W SÖZLİST] [-P ÖNEK] [-S SONEK] [-X SÜZGEÇ] [-F İŞLEV]\n"
-#~ " [-C KOMUT] [AD ...]\n"
-#~ " Her AD için argümanların nasıl tamamlanmaları gerektiği belirtilir.\n"
-#~ " -p seçeneği verilirse veya hiç seçenek verilmezse, mevcut tamamlama\n"
-#~ " belirtimleri girdi olarak yeniden kullanılabilir şekilde basılır.\n"
-#~ " -r seçeneği her AD için tamamlama belirtimini kaldırır,\n"
-#~ " hiç AD belirtilmezse tümü kaldırılır."
diff --git a/po/uk.gmo b/po/uk.gmo
index e7db7cc7..eda38aff 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 318d7cd4..0c3568d0 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -4,13 +4,13 @@
#
# Myhailo Danylenko <isbear@ukrpost.net>, 2009.
# Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2010.
-# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020.
+# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2022.
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.1\n"
+"Project-Id-Version: bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-07 21:17+0200\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-17 19:34+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -19,64 +19,59 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Lokalize 20.11.70\n"
+"X-Generator: Lokalize 20.12.0\n"
#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "неправильний Ñ–Ð½Ð´ÐµÐºÑ Ð¼Ð°Ñиву"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: вилучаємо атрибут nameref"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: неможливо перетворити індекÑований маÑив на аÑоціативний"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: неправильний ключ аÑоціативного маÑиву"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÑ‡Ð¸Ñлових елементів неможливе"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: при означенні аÑоціативних маÑивів Ñлід вказувати ключ"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: не вдалоÑÑ Ñтворити: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідне Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: перший непробільний Ñимвол не Ñ” «\"»"
# c-format
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "нема заключної «%c» у %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: пропущено двокрапку-роздільник"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "«%s»: не вдалоÑÑ Ð·Ð½Ñти Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ мапі ключів команди"
@@ -96,7 +91,7 @@ msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ об
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ об’єм пам’ÑÑ‚Ñ– Ð´Ð»Ñ Â«%s»"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "«%s»: некоректна назва замінника"
@@ -167,7 +162,7 @@ msgstr ""
msgid "HOME not set"
msgstr "змінну HOME не вÑтановлено"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "забагато аргументів"
@@ -194,7 +189,7 @@ msgstr "попередженнÑ: "
msgid "%s: usage: "
msgstr "%s: викориÑтовуйте: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: параметр потребує аргументу"
@@ -209,7 +204,7 @@ msgstr "%s: потрібен чиÑловий аргумент"
msgid "%s: not found"
msgstr "%s: не знайдено"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: неправильний параметр"
@@ -219,7 +214,7 @@ msgstr "%s: неправильний параметр"
msgid "%s: invalid option name"
msgstr "%s: некоректна назва параметра"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "«%s»: неправильний ідентифікатор"
@@ -232,7 +227,7 @@ msgstr "неправильне віÑімкове чиÑло"
msgid "invalid hex number"
msgstr "неправильне шіÑтнадцÑткове чиÑло"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "неправильне чиÑло"
@@ -246,88 +241,93 @@ msgstr "%s: Ñигнал вказано з помилками"
msgid "`%s': not a pid or valid job spec"
msgstr "«%s»: не Ñ” ідентифікатором процеÑу чи завданнÑ"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: змінна призначена лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: не вдалоÑÑ Ð²Ñтановити значеннÑ"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s виходить за вÑтановлені межі"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "аргумент"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s виходить за вÑтановлені межі"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: нема такого завданнÑ"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми не ввімкнене"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми не ввімкнене"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: заборонено обмеженнÑми"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "заборонено обмеженнÑми"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: не є вбудованою командою оболонки"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "помилка запиÑу: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "помилка вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² термінала: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² термінала: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ каталогу: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ неоднозначно"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "у цій верÑÑ–Ñ— не можна ÑкориÑтатиÑÑ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¾ÑŽ"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸: %s лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸"
@@ -337,108 +337,108 @@ msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸"
msgid "%s: invalid action name"
msgstr "%s: неправильна назва дії"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: не вказано ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "попередженнÑ: можливо параметр -F працює не так, Ñк ви очікуєте"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "попередженнÑ: можливо параметр -C працює не так, Ñк ви очікуєте"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "наразі Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ñдку не виконуєтьÑÑ"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "може викориÑтовуватиÑÑ Ð»Ð¸ÑˆÐµ уÑередині функції"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "`-f' не викориÑтовуєтьÑÑ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: незмінна функціÑ"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: еталонна змінна не може бути маÑивом"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: не можна викориÑтовувати циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñƒ змінній поÑиланнÑ"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "«%s»: некоректна назва змінної Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "`-f' не викориÑтовуєтьÑÑ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: незмінна функціÑ"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Ð´Ð»Ñ Ñкладеного маÑиву у лапках вважаєтьÑÑ Ð·Ð°Ñтарілим"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: неможливо знищити маÑив таким чином"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: неможливо перетворити аÑоціативний маÑив на індекÑований"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Ð´Ð»Ñ Ñкладеного маÑиву у лапках вважаєтьÑÑ Ð·Ð°Ñтарілим"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "динамічне Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупне"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ колективний об’єкт %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ %s у колективному об’єкті %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: динамічне Ð²Ð±ÑƒÐ´Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¶Ðµ завантажено"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "функцією Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s повернуто Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ помилки (%d): не завантажено"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: завантажений не динамічно"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: не вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: це каталог"
@@ -453,7 +453,7 @@ msgstr "%s: не є звичайним файлом"
msgid "%s: file is too large"
msgstr "%s: файл завеликий"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ бінарний файл"
@@ -549,12 +549,12 @@ msgstr ""
msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr "«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k %s' або `info %s'."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -574,21 +574,21 @@ msgstr ""
"Зірочка (*) порÑд з назвою команди означає, що команда заборонена.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "-anrw можуть зуÑтрічатиÑÑ Ð»Ð¸ÑˆÐµ один раз"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ Ñƒ журналу команд"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: некоректна чаÑова позначка"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: невдалий пошук по журналу команд"
@@ -611,78 +611,78 @@ msgstr "%s: аргументи мають бути ідентифікатораÐ
msgid "Unknown error"
msgstr "Ðевідома помилка"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "очікувавÑÑ Ð²Ð¸Ñ€Ð°Ð·"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: не Ñ” індекÑованим маÑивом"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: неправильно вказаний деÑкриптор файла"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: неправильний деÑкриптор файла: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: неправильна кількіÑÑ‚ÑŒ Ñ€Ñдків"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: неправильний початковий індекÑ"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: неправильний крок виклику функції"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° змінної-маÑиву"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "змінні-маÑиви не підтримуютьÑÑ"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "«%s»: пропущено Ñимвол у шаблоні"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: помилкове Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ чаÑу"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: помилковий Ñимвол у шаблоні"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "попередженнÑ: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "проблема з обробкою форматуваннÑ: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "пропущено шіÑтнадцÑткову цифру у \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "пропущено цифру Unicode у \\%c"
@@ -833,12 +833,12 @@ msgstr ""
" \n"
" Вбудована команда `dirs' показує Ñтек каталогів."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: некоректне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу очікуваннÑ"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "помилка читаннÑ: %d: %s"
@@ -851,7 +851,7 @@ msgstr "`return' працює лише у функції чи Ñкрипті, з
msgid "cannot simultaneously unset a function and a variable"
msgstr "не можна одночаÑно знищити Ñ– функцію Ñ– змінну"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: не Ñ” маÑивом"
@@ -870,11 +870,11 @@ msgstr "%s: не вдалоÑÑ ÐµÐºÑпортувати"
msgid "shift count"
msgstr "кількіÑÑ‚ÑŒ зÑувів"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "не можна одночаÑно вÑтановлювати й ÑкаÑовувати параметри оболонки"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: неправильна назва параметра оболонки"
@@ -943,16 +943,16 @@ msgstr "%s: помилковий аргумент обмеженнÑ"
msgid "`%c': bad command"
msgstr "«%c»: неправильна команда"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ обмеженнÑ: %s"
@@ -971,7 +971,7 @@ msgstr "«%c»: помилковий оператор у Ñимвольному
msgid "`%c': invalid symbolic mode character"
msgstr "«%c»: помилковий Ñимвол у Ñимвольному режимі"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " Ñ€Ñдок "
@@ -991,96 +991,106 @@ msgstr "ПрипиненнÑ..."
msgid "INFORM: "
msgstr "ІÐФОРМÐЦІЯ: "
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "ДіагноÑтичне попередженнÑ: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "невідома помилка команди"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "неправильний тип команди"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "неправильний з’єднувальний оператор"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "неправильний перехід"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: неозначена змінна"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aÑ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð²Ð¾Ð´Ñƒ вичерпано: автоматичний вихід\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑпрÑмувати /dev/null на Ñтандартний ввід: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c»: помилковий Ñимвол шаблону"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] вÑе ще Ñ–Ñнує"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "помилка каналу"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: перевищено макÑимальний рівень вкладеноÑÑ‚Ñ– eval (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: перевищено макÑимальний рівень вкладеноÑÑ‚Ñ– джерела (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: перевищено макÑимальний рівень вкладеноÑÑ‚Ñ– функцій (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: обмеженнÑ: не можна вказувати `/' у назві команди"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: команду не знайдено"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸: не знайдено потрібного файла"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: неправильний інтерпретатор"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ бінарний файл: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "%s Ñ” Ñпеціальною вбудованою командою оболонки"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "не вдалоÑÑ Ñтворити копію файлового деÑкриптору %d у %d"
@@ -1093,68 +1103,68 @@ msgstr "рівень Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð°Ð·Ñ–Ð² перевищено"
msgid "recursion stack underflow"
msgstr "неÑтача Ñтеку рекурÑÑ–Ñ—"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "ÑинтакÑична помилка у виразі"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "Ñпроба Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ-змінної"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "ÑинтакÑична помилка при Ñпробі надати змінній значеннÑ"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð½Ð° 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "вада: неправильна лекÑема у виразі"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "очікувалаÑÑ `:' умовного виразу"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "екÑпонента менша за 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "пре-інкремент чи пре-декремент потребують ідентифікатор"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "відÑÑƒÑ‚Ð½Ñ `)'"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "ÑинтакÑична помилка: очікувавÑÑ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "ÑинтакÑична помилка: помилковий арифметичний оператор"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (позначка помилки \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "некоректна арифметична оÑнова"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "некоректна ціла Ñтала"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "завелике Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ñнови"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: помилка у виразі\n"
@@ -1163,7 +1173,7 @@ msgstr "%s: помилка у виразі\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ доÑтуп до каталогів вищого рівнÑ"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ²Ñтановити режим без затримки файлового деÑкриптору %d"
@@ -1182,167 +1192,167 @@ msgstr "save_bash_input: Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ файлового деÑкрипт
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "ідентифікатор відгалуженого процеÑу %d знайдено у поточному завданні %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ð¾Ð³Ð¾ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d, що має групу процеÑів %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: ідентифікатор процеÑу %5ld (%s) вказує на його працездатніÑÑ‚ÑŒ"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ідентифікатор процеÑу не Ñ–Ñнує"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Сигнал %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Завершено"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Зупинено"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Зупинено(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Працює"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Зроблено(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Вихід %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Ðевідомий Ñтан"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(збережено знімок оперативної пам’ÑÑ‚Ñ–)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (РД: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "зміна групи дочірнього процеÑу (%ld на %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: Ð¿Ñ€Ð¾Ñ†ÐµÑ %ld не Ñ” відгалуженим від цієї оболонки"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ðема запиÑу Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d зупинене"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s: немає поточних завдань"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð¾ÑÑ"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d вже працює в фоні"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: увімкнути WNOHANG, щоб уникнути неÑкінченного блокуваннÑ"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: Ñ€Ñдок %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (збережено знімок оперативної пам’ÑÑ‚Ñ–)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(тепер РД: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: помилка getpgrp"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: немає ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми у тлі"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: алгоритм реалізації Ñ€Ñдків"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "не вдалоÑÑ Ð²Ñтановити групу процеÑу Ð´Ð»Ñ Ñ‚ÐµÑ€Ð¼Ñ–Ð½Ð°Ð»Ð° (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "Ñ†Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ° не може керувати завданнÑми"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: умова не виконуєтьÑÑ: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1351,47 +1361,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: потрібна умова не виконуєтьÑÑ\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "невідомий"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: зайнÑтий блок у ÑпиÑку вільних"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: аргумент є вже звільненим блоком"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: блок ще не виділено"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ рамки"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: виÑвлено перехід за нижню границю блоку; magic8 пошкоджено"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: розмір у запиÑах на початку та в кінці блоку відрізнÑєтьÑÑ"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: блок ще не виділено"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ рамки"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: виÑвлено перехід за нижню границю блоку; magic8 пошкоджено"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: розмір у запиÑах на початку та в кінці блоку відрізнÑєтьÑÑ"
@@ -1433,22 +1443,22 @@ msgstr "%s: неправильно вказаний мережевий шлÑÑ…"
msgid "network operations not supported"
msgstr "мережеві операції не підтримуютьÑÑ"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s): %s"
@@ -1466,136 +1476,136 @@ msgstr "Ðова пошта у $_"
msgid "The mail in %s has been read\n"
msgstr "Пошту у %s прочитано\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "ÑинтакÑична помилка: потрібен арифметичний вираз"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "ÑинтакÑична помилка: неочікувана `;'"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "ÑинтакÑична помилка: `((%s))'"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: неправильний тип інÑтрукції %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "here-document з Ñ€Ñдка %d закінчено кінцем файла (очікувалоÑÑ Â«%s»)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: інÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð¿ÐµÑ€ÐµÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ `%d' поза межами"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc: shell_input_line_size (%zu) перевищує Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ SIZE_MAX (%lu): Ñ€Ñдок обрізано"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "перевищено макÑимальну можливу кількіÑÑ‚ÑŒ here-document"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "файл ÑкінчивÑÑ Ñ€Ð°Ð½Ñ–ÑˆÐµ, ніж було знайдено відповідний «%c»"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "файл ÑкінчивÑÑ Ñ€Ð°Ð½Ñ–ÑˆÐµ, ніж було знайдено `]]'"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "ÑинтакÑична помилка в умовному виразі: неочікувана лекÑема «%s»"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "ÑинтакÑична помилка в умовному виразі"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "неочікувана лекÑема «%s», очікувалаÑÑ `)'"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "очікувалаÑÑ `)'"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "неочікуваний аргумент унарного умовного оператора «%s»"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "неочікуваний аргумент унарного умовного оператора"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "неочікувана лекÑема «%s», очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ умовний оператор"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ умовний оператор"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "неочікуваний аргумент бінарного умовного оператора «%s»"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "неочікуваний аргумент бінарного умовного оператора"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "неочікувана лекÑема «%c» в умовній команді"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "неочікувана лекÑема «%s» в умовній команді"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "неочікувана лекÑема %d в умовній команді"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "ÑинтакÑична помилка коло неочікуваної лекÑеми «%s»"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "ÑинтакÑична помилка коло «%s»"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "ÑинтакÑична помилка: раптово ÑкінчивÑÑ Ñ„Ð°Ð¹Ð»"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "ÑинтакÑична помилка"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "ВикориÑтовуйте \"%s\", щоб вийти з оболонки.\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "файл ÑкінчивÑÑ, перш ніж було знайдено відповідну `)'"
@@ -1633,94 +1643,94 @@ msgstr "xtrace_set: нульовий вказівник на файл"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "деÑкриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: неправильний Ñимвол шаблону"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "деÑкриптор файла поза можливими межами"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: неоднозначне переÑпрÑмуваннÑ"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: заборонено перезапиÑувати наÑвні файли"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: обмеженнÑ: переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ заборонене"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "не вдалоÑÑ Ñтворити тимчаÑовий файл Ð´Ð»Ñ here-document: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: не вдалоÑÑ Ð½Ð°Ð´Ð°Ñ‚Ð¸ змінній Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port не підтримуєтьÑÑ"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "помилка переÑпрÑмуваннÑ: не вдалоÑÑ Ñтворити копію деÑкриптора файла"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ /tmp, будь лаÑка Ñтворіть його!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp має бути чинною назвою каталогу"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "режим форматованого Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… у інтерактивних оболонках буде проігноровано"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: помилковий параметр"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "не вдалоÑÑ Ð²Ñтановити uid %d: ефективним Ñ” uid %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "не вдалоÑÑ Ð²Ñтановити gid %d: ефективним Ñ” gid %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "не вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити заÑіб діагноÑтики: режим діагноÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: це каталог"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "У мене нема назви!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, верÑÑ–Ñ %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1729,317 +1739,317 @@ msgstr ""
"ВикориÑтовуйте:\t%s [довгий параметр GNU] [параметр] ...\n"
"\t%s [довгий параметр GNU] [параметр] файл_Ñценарію ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Довгі параметри GNU:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Параметри оболонки:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD чи -c команда чи -O параметр_shopt\t\t(тільки на початку)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s чи -o параметр\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Введіть `%s -c \"help set\"', щоб отримати більше інформації про параметри оболонки.\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Введіть `%s -c help', щоб отримати більше інформації про вбудовані команди оболонки.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Щоб повідомити про помилку в програмі, викориÑтовуйте команду `bashbug'.\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: некоректна операціÑ"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "ÐенаÑвний Ñигнал"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "ЗавиÑаннÑ"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "ПерериваннÑ"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Вихід"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Помилкова інÑтрукціÑ"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Точка зупину trace/trap"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "ІнÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ ABORT"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "ІнÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Помилка обчиÑлень з рухомою комою"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Вбитий"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Помилка шини"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Помилка адреÑуваннÑ"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Помилковий ÑиÑтемний виклик"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "Зламаний канал"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Таймер"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Припинено"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Ðевідкладні події Ð’/Ð’"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Зупинено (Ñигнал)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "ПродовженнÑ"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Зупинка чи Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð½Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Зупинено (ввід з термінала)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Зупинено (вивід на термінал)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "В/В готовий"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ файла"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Таймер (віртуальний)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Таймер (профілюваннÑ)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Зміна вікна"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Сигнал кориÑтувача 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Сигнал кориÑтувача 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Вхідні дані HFT очікують"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "наближаєтьÑÑ Ð²Ñ‚Ñ€Ð°Ñ‚Ð° живленнÑ"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "наближаєтьÑÑ Ð°Ð²Ð°Ñ€Ñ–Ð¹Ð½Ð° ÑитуаціÑ"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "перенеÑÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу на інший CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "помилка програмуваннÑ"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "Режим монітору HFT надано"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "Режим монітору HFT відкликано"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "Завершено звукову поÑлідовніÑÑ‚ÑŒ HFT"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "Інформаційний запит"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Ðевідомий Ñигнал â„–%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "неправильна заміна: немає заключної «%s» у %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: неможливо означити елемент маÑиву ÑпиÑком"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "не вдалоÑÑ Ñтворити канал Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "не вдалоÑÑ Ñтворити дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ іменований канал %s Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ іменований канал %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ іменований канал %s Ñк fd %d"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "заміна команди: проігноровано порожній байт у вхідних даних"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "не вдалоÑÑ Ñтворити канал Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "не вдалоÑÑ Ñтворити дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: не вдалоÑÑ Ñтворити копію каналу із файловим деÑкриптором 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: некоректна назва змінної Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: некоректне непрÑме розгортаннÑ"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: некоректна назва змінної"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s: параметр не вÑтановлено"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: параметр нульової довжини чи не вказаний"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: підрÑдок коротший за 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: неправильна заміна"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: не можна призначити таким чином"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "у наÑтупних верÑÑ–ÑÑ… оболонки буде виконуватиÑÑ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð¼Ñ–Ð½Ð¸ арифметичних виразів"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "неправильна заміна: немає заключної \"`\" у %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "нема відповідника: %s"
@@ -2062,21 +2072,21 @@ msgstr "очікувалаÑÑ `)'"
msgid "`)' expected, found %s"
msgstr "очікувалаÑÑ `)', отримано %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ оператор"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: очікувавÑÑ ÑƒÐ½Ð°Ñ€Ð½Ð¸Ð¹ оператор"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "відÑÑƒÑ‚Ð½Ñ `]'"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "ÑинтакÑична помилка: неочікуване `%s'"
@@ -2085,99 +2095,104 @@ msgstr "ÑинтакÑична помилка: неочікуване `%s'"
msgid "invalid signal number"
msgstr "неправильний номер Ñигналу"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "обробник паÑток: доÑÑгнуто макÑимального Ñ€Ñ–Ð²Ð½Ñ Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° паÑток (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: неправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps: обробник Ñигналу Ñ” SIG_DFL, %d (%s) повторно надÑилаєтьÑÑ Ñобі"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: неправильний Ñигнал %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "помилка Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— «%s»"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "рівень оболонки (%d) занадто виÑокий, перевÑтановлено у 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: немає контекÑту функції у поточній облаÑÑ‚Ñ–"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: змінною не може бути значеннÑ, Ñке приймають інші змінні"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: неможливо уÑпадкувати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÑуміÑного типу"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: приÑÐ²Ð¾Ñ”Ð½Ð½Ñ Ñ†Ñ–Ð»Ð¾Ð³Ð¾ чиÑла поÑиланню з назвою"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: немає контекÑту функції у поточній облаÑÑ‚Ñ–"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s має нульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ñдка екÑпортуваннÑ"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "Помилковий Ñимвол %d у Ñ€Ñдку екÑпорту Ð´Ð»Ñ %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "немає `=' у Ñ€Ñдку екÑпорту Ð´Ð»Ñ %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: перший елемент shell_variables не Ñ” контекÑтом функції"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: немає контекÑту global_variables"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: перший елемент shell_variables не Ñ” тимчаÑовим оточеннÑм виконаннÑ"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ ФÐЙЛ"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла траÑуваннÑ"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑуміÑноÑÑ‚Ñ– не належить припуÑтимому діапазону значень"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "© Free Software Foundation, Inc., 2020"
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "© Free Software Foundation, Inc., 2022"
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2257,12 +2272,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] команда [аргумент ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [назва[=значеннÑ] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [назва[=значеннÑ] ...] або declare -p [-aAfFilnrtux] [назва ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] назва[=значеннÑ] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] назва[=значеннÑ] ... або typeset -p [-aAfFilnrtux] [назва ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2349,8 +2364,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o назва-параметра] [--] [аргумент ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o назва-параметра] [--] [-] [аргумент ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2397,8 +2412,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] назва [назва ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [обмеженнÑ]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [обмеженнÑ]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2437,12 +2452,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if КОМÐÐДИ; then КОМÐÐДИ; [ elif КОМÐÐДИ; then КОМÐÐДИ; ]... [ else КОМÐÐДИ; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while КОМÐÐДИ; do КОМÐÐДИ; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while КОМÐÐДИ; do КОМÐÐДИ-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until КОМÐÐДИ; do КОМÐÐДИ; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until КОМÐÐДИ; do КОМÐÐДИ-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -3764,7 +3779,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3807,6 +3823,8 @@ msgstr ""
" призначуєтьÑÑ Ð¿ÐµÑ€ÑˆÑ–Ð¹ ÐÐЗВІ, друге Ñлово — другій ÐÐЗВІ тощо, Ñкщо\n"
" залишатьÑÑ Ð½ÐµÐ¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ñ– Ñлова, Ñ—Ñ… буде призначено оÑтанній ÐÐЗВІ. Як\n"
" роздільники полів розпізнаютьÑÑ Ñимволи, вказані у змінній $IFS.\n"
+" Типово, Ñимвол зворотної похилої риÑки екранує Ñимволи роздільника\n"
+" та розриву Ñ€Ñдка.\n"
" \n"
" Якщо ÐÐЗВ не вказано, Ñ€Ñдок цілком буде збережено у змінній REPLY.\n"
" \n"
@@ -3841,7 +3859,7 @@ msgstr ""
" Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ (значеннÑ, більше за 128), Ñкщо ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під чаÑ\n"
" вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—, або Ñкщо із -u вказано неправильний файловий деÑкриптор."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3861,7 +3879,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає N, або помилку, Ñкщо викликана не у функції чи Ñценарії."
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4028,7 +4046,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4066,7 +4084,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи ÐÐЗВÐ\n"
" доÑтупна лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4098,7 +4116,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та ÐÐЗВИ."
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4136,7 +4154,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та ÐÐЗВИ."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4154,7 +4172,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо N менше за нуль чи більше за $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4177,7 +4195,7 @@ msgstr ""
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої команди, виконаної у ФÐЙЛІ, або\n"
" помилку, Ñкщо ФÐЙЛ не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4202,7 +4220,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо не ввімкнене ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми чи\n"
" Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4358,7 +4376,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ВИРÐЗ Ñ–Ñтинний; невдало, Ñкщо вказано\n"
" помилковий аргумент чи ВИРÐЗ хибний."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4370,7 +4388,7 @@ msgstr ""
" Це Ñинонім до вбудованої команди \"test\", але на відміну від неї оÑтаннім\n"
" аргументом має бути `]'."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4388,7 +4406,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завжди уÑпішна."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4451,7 +4469,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри та СИГÐÐЛИ."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4501,7 +4519,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо буде знайдено уÑÑ– ÐÐЗВИ; невдало, Ñкщо\n"
" хоч одне з них не вдаÑÑ‚ÑŒÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸."
-#: builtins.c:1431
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4597,7 +4615,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи\n"
" трапилаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4630,7 +4648,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильну ÐœÐСКУ та параметри."
-#: builtins.c:1502
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4683,7 +4701,7 @@ msgstr ""
" неправильні параметри чи ІДЕÐТИФІКÐТОР або Ñкщо вказано -n Ñ– оболонка не\n"
" має неочікуваних дочірніх процеÑів."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4706,7 +4724,7 @@ msgstr ""
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу з оÑтаннім вказаним ідентифікатором.\n"
" Повертає код помилки, Ñкщо вказано неправильний ІДЕÐТИФІКÐТОР чи параметр."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4727,7 +4745,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4757,7 +4775,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4792,7 +4810,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4820,7 +4838,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð›ÐÐЦЮЖКÐ-КОМÐÐД."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4838,7 +4856,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4865,44 +4883,44 @@ msgstr ""
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди або нуль,\n"
" Ñкщо жодна з перевірених умов не була Ñ–Ñтинною."
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Циклічно виконує команди поки виконуєтьÑÑ ÑƒÐ¼Ð¾Ð²Ð°.\n"
" \n"
-" Виконуватиме КОМÐÐДИ, поки оÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° з КОМÐÐД у `while'\n"
+" Виконуватиме КОМÐÐДИ-2, поки оÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° з КОМÐÐД\n"
" не завершитьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾.\n"
" \n"
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"Виконує команди доки умову не буде виконано.\n"
" \n"
-" Виконуватиме КОМÐÐДИ, поки оÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° з КОМÐÐД у `until'\n"
+" Виконуватиме КОМÐÐДИ-2, поки оÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° з КОМÐÐД\n"
" не завершитьÑÑ ÑƒÑпішно.\n"
" \n"
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
# WTF? How can it return exit code of _asynchronous_ process...
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4924,7 +4942,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда coproc повертає Ñтан виходу 0."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4946,7 +4964,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВРє незмінною."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4964,7 +4982,7 @@ msgstr ""
" Код завершеннÑ:\n"
" КонÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ” код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4987,7 +5005,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð¾Ð³Ð¾ завданнÑ."
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5005,7 +5023,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо результат обчиÑÐ»ÐµÐ½Ð½Ñ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5051,7 +5069,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ВИРÐЗ Ñ–Ñтинний."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5153,7 +5171,7 @@ msgstr ""
" HISTIGNORE\tРозділений двокрапкою ÑпиÑок шаблонів, що викориÑтовуютьÑÑ\n"
" \t\tпри визначенні, чи зберігати команду у ÑпиÑку журналу.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5211,7 +5229,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказаний неправильний аргумент чи\n"
" Ñкщо не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ поточну каталог."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5262,7 +5280,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано помилковий аргумент чи Ñкщо\n"
" не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ поточний каталог."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5314,7 +5332,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи Ñкщо\n"
" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5350,7 +5368,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ПÐРÐМЕТР ввімкнено; невдало, Ñкщо\n"
" вказано неправильні параметри чи ПÐРÐМЕТР вимкнено."
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5369,6 +5387,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5400,18 +5420,21 @@ msgstr ""
" \t\tзворотної похилої риÑки) у відповідному аргументі.\n"
" %q\tВзÑти аргумент в лапки так, щоб його можна було викориÑтати Ñк\n"
" \t\tввід оболонки\n"
+" %Q\tподібна до %q, але буде заÑтоÑовано довільну точніÑÑ‚ÑŒ до аргументу\n"
+" \t\tбез лапок до заÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð°Ð¿Ð¾Ðº\n"
" %(формат)T – вивеÑти Ñ€Ñдок дати Ñ– чаÑу з викориÑтаннÑм ФОРМÐТУ\n"
" Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… strftime(3)\n"
" \n"
" Визначене Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ Ñ‚Ð°Ðº, щоб було оброблено уÑÑ– аргументи.\n"
" Якщо аргументів виÑвитьÑÑ Ð¼ÐµÐ½ÑˆÐµ за кількіÑÑ‚ÑŒ визначених форматів, Ð´Ð»Ñ Ð·Ð°Ð¹Ð²Ð¸Ñ…\n"
-" Ñпецифікаторів форматів буде викориÑтано нульові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ порожні Ñ€Ñдки, залежно від типу форматуваннÑ.\n"
+" Ñпецифікаторів форматів буде викориÑтано нульові Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ порожні Ñ€Ñдки,\n"
+" залежно від типу форматуваннÑ.\n"
" \n"
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾ лише Ñкщо вказано неправильний параметр або\n"
" Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° запиÑу чи приÑвоєннÑ."
-#: builtins.c:1971
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5463,7 +5486,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та не\n"
" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5484,7 +5507,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри Ñ– не\n"
" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5539,7 +5562,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та\n"
" вказівки завершень Ð´Ð»Ñ ÐÐЗВ Ñ–Ñнують."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5610,7 +5633,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾ лише Ñкщо вказано неправильний параметр або\n"
" Ñкщо ÐœÐСИВ Ñ” незмінним."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5620,6 +5643,9 @@ msgstr ""
" \n"
" Синонім до `mapfile'."
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: неправильний ключ аÑоціативного маÑиву"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/po/vi.gmo b/po/vi.gmo
index 256ec8ee..f97a37d6 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 583c7050..aa9ad4b8 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.4-beta1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
"PO-Revision-Date: 2015-10-18 07:47+0700\n"
"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -26,58 +26,53 @@ msgstr ""
msgid "bad array subscript"
msgstr "sai chỉ số mảng"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: không thể chuyển đổi mảng kiểu chỉ số sang mảng kết hợp"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: khóa mảng liên kết không hợp lệ"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: không thể gán cho chỉ số không thuộc kiểu số"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: phải sử dụng chỉ số phụ khi gán mảng kết hợp"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: không thể tạo: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: không tìm thấy ánh xạ phím (keymap) cho câu lệnh"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: ký tá»± khác khoảng trắng đầu tiên không phải là “\"â€"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "thiếu dấu đóng “%c†trong %s"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: thiếu dấu hai chấm phân cách"
-#: bashline.c:4555
+#: bashline.c:4733
#, fuzzy, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "“%sâ€: không thể tháo"
@@ -97,7 +92,7 @@ msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “%
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "khai triển ngoặc ôm: gặp lá»—i khi phân bổ bá»™ nhá»› cho “%sâ€"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "“%sâ€: tên bí danh không hợp lệ"
@@ -172,7 +167,7 @@ msgstr ""
msgid "HOME not set"
msgstr "ChÆ°a đặt biến môi trÆ°á»ng HOME"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "quá nhiá»u đối số"
@@ -200,7 +195,7 @@ msgstr "cảnh báo: "
msgid "%s: usage: "
msgstr "%s: cách dùng: "
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: tùy chá»n cần má»™t đối số"
@@ -215,7 +210,7 @@ msgstr "%s: cần đối số thuộc kiểu số"
msgid "%s: not found"
msgstr "%s: không tìm thấy"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s: tùy chá»n không hợp lệ"
@@ -225,7 +220,7 @@ msgstr "%s: tùy chá»n không hợp lệ"
msgid "%s: invalid option name"
msgstr "%s: tên tùy chá»n không hợp lệ"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "“%sâ€: không phải là định danh hợp lệ"
@@ -238,7 +233,7 @@ msgstr "số bát phân không hợp lệ"
msgid "invalid hex number"
msgstr "số thập lục không hợp lệ"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "số không hợp lệ"
@@ -252,88 +247,93 @@ msgstr "%s: sai đặc tả tín hiệu"
msgid "`%s': not a pid or valid job spec"
msgstr "“%sâ€: không phải má»™t pid hoặc đặc tả công việc hợp lệ"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s: biến chỉ Ä‘á»c"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, fuzzy, c-format
+msgid "%s: cannot assign"
+msgstr "%s: không thể hủy đặt"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s: %s nằm ngoài phạm vi"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "đối số"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s nằm ngoài phạm vi"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s: không có công việc như vậy"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s: không có Ä‘iá»u khiển công việc"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "không có Ä‘iá»u khiển công việc"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s: bị hạn chế"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "bị hạn chế"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s: không phải là lệnh tích hợp trong hệ vá»"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "lá»—i ghi: %s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "lỗi đặt các thuộc tính thiết bị cuối: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "lỗi lấy các thuộc tính thiết bị cuối: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: lá»—i lấy thÆ° mục hiện thá»i: %s: %s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: đặc tả công việc chưa rõ ràng"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "trợ giúp không sẵn có ở phiên bản này"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: không thể hủy đặt: %s chỉ Ä‘á»c"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: không thể hủy đặt"
@@ -343,108 +343,108 @@ msgstr "%s: không thể hủy đặt"
msgid "%s: invalid action name"
msgstr "%s: tên hành động không hợp lệ"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s: không có đặc tả tự hoàn thiện"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "cảnh báo: tùy chá»n “-F†có thể không hoạt Ä‘á»™ng nhÆ° mong đợi"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "cảnh báo: tùy chá»n “-C†có thể không hoạt Ä‘á»™ng nhÆ° bạn mong đợi"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
msgstr "hiện thá»i không thá»±c thi chức năng tá»± hoàn thiện"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "chỉ có thể dùng trong một hàm"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "không thể dùng “-f†để tạo hàm"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: hàm chỉ Ä‘á»c"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: biến tham chiếu không thể là một mảng"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: biến nameref tự tham chiếu là không được phép"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: tên tham chiếu quẩn tròn"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "không thể dùng “-f†để tạo hàm"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: hàm chỉ Ä‘á»c"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: không thể hủy biến mảng bằng cách này"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: không thể chuyển đổi mảng kết hợp sang mảng chỉ số"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "không có chức năng nạp động"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "không thể mở đối tượng dùng chung %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "không tìm thấy %s trong đối tượng dùng chung %s: %s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, fuzzy, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s không được tải động"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "tải hàm cho %s trả vá» lá»—i nghiêm trá»ng (%d): nên không được tải"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s không được tải động"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: không thể xóa: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: là thư mục"
@@ -459,7 +459,7 @@ msgstr "%s: không phải là tập tin thÆ°á»ng"
msgid "%s: file is too large"
msgstr "%s: tập tin quá lớn"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: không thể thực hiện tập tin nhị phân"
@@ -554,12 +554,12 @@ msgstr ""
"không có trợ giúp cho “%sâ€. Hãy chạy lệnh “help help†hoặc “man -k %s†hay "
"“info %sâ€."
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: không thể mở: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -579,21 +579,21 @@ msgstr ""
"Dấu sao (*) bên cạnh tên nghĩa là lệnh bị tắt.\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "chỉ có thể dùng má»™t của những tùy chá»n -anrw"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "vị trí lịch sử"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: đối số không hợp lệ"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: gặp lỗi khi khai triển lịch sử"
@@ -616,78 +616,78 @@ msgstr "%s: đối số phải là ID tiến trình hoặc công việc"
msgid "Unknown error"
msgstr "Lỗi không rõ"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "cần biểu thức"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: không phải là mảng chỉ số"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: đặc tả bộ mô tả tập tin không hợp lệ"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: bộ mô tả tập tin không hợp lệ: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: sai số lượng dòng"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: gốc mảng không hợp lệ"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: lượng gá»i ngược không hợp lệ"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "tên biến mảng vẫn trống"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "cần hỗ trợ biến mảng"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "“%sâ€: thiếu ký tá»± định dạng"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "“%câ€: đặc tả định dạng thá»i gian không đúng"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "“%câ€: ký tá»± định dạng không hợp lệ"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "cảnh báo: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "vấn đỠphân tích cú pháp định dạng: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "thiếu chữ số thập lục phân cho \\x"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "thiếu chữ số unicode cho \\%c"
@@ -835,12 +835,12 @@ msgstr ""
"\n"
" Lệnh “dirs†hiển thị ngăn xếp thư mục."
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: sai đặc tả thá»i gian chá» tối Ä‘a"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "lá»—i Ä‘á»c: %d: %s"
@@ -853,7 +853,7 @@ msgstr "chỉ có thể “return†từ một hàm hoặc văn lệnh được
msgid "cannot simultaneously unset a function and a variable"
msgstr "không thể hủy đặt đồng thá»i má»™t hàm VÀ má»™t biến"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: không phải biến mảng"
@@ -872,11 +872,11 @@ msgstr "%s: không thể xuất"
msgid "shift count"
msgstr "số lượng dịch"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "không thể đồng thá»i đặt và hủy đặt các tùy chá»n hệ vá»"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: tên tùy chá»n hệ vá» không hợp lệ"
@@ -943,16 +943,16 @@ msgstr "%s: đối số giới hạn không hợp lệ"
msgid "`%c': bad command"
msgstr "“%câ€: câu lệnh sai"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: không thể lấy giới hạn: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "giới hạn"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: không thể sửa đổi giới hạn: %s"
@@ -971,7 +971,7 @@ msgstr "“%câ€: toán tá»­ chế Ä‘á»™ ký hiệu không hợp lệ"
msgid "`%c': invalid symbolic mode character"
msgstr "“%câ€: ký tá»± chế Ä‘á»™ ký hiệu không hợp lệ"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " dòng "
@@ -991,96 +991,106 @@ msgstr "Hủy bá»â€¦"
msgid "INFORM: "
msgstr "THBÃO:"
-#: error.c:462
+#: error.c:310
+#, fuzzy, c-format
+msgid "DEBUG warning: "
+msgstr "cảnh báo: "
+
+#: error.c:488
msgid "unknown command error"
msgstr "lỗi lệnh không rõ"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "kiểu lệnh sai"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "bộ kết nối sai"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "nhảy sai"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: biến chưa liên kết"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aquá thá»i hạn đợi dữ liệu nhập: tá»± Ä‘á»™ng đăng xuất\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "không thể chuyển hướng đầu vào chuẩn từ /dev/null: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "ÄỊNH DẠNG THỜI GIAN: “%câ€: ký tá»± định dạng không hợp lệ"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "lỗi ống dẫn"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: vượt quá mức độ nguồn lồng nhau tối đa (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: vượt quá mức độ các hàm lồng nhau tối đa (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: bị hạn chế: không thể dùng “/†trong tên lệnh"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s: không tìm thấy lệnh"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, fuzzy, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: không thể thực hiện tập tin nhị phân"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: bộ thông dịch sai"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: không thể thực hiện tập tin nhị phân: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "“%sâ€: là lệnh tích hợp đặc biệt"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "không thể nhân đôi fd %d thành fd %d"
@@ -1093,70 +1103,70 @@ msgstr "vượt quá ngưỡng đệ quy của biểu thức"
msgid "recursion stack underflow"
msgstr "tràn ngược ngăn xếp đệ quy"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "lỗi cú pháp trong biểu thức"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "thử gán cho thứ không phải biến"
-#: expr.c:530
+#: expr.c:531
#, fuzzy
msgid "syntax error in variable assignment"
msgstr "lỗi cú pháp trong biểu thức"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "chia cho không"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "lỗi: “token expassign†sai"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "cần “:†cho biểu thức Ä‘iá»u kiện"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "số mũ nhỠhơn 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "cần định danh sau tăng/giảm dần trước"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "thiếu “)â€"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "lỗi cú pháp: cần toán hạng"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "lá»—i cú pháp: toán tá»­ số há»c không hợp lệ"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (thẻ bài lỗi là \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "cÆ¡ số (toán há»c) không hợp lệ"
-#: expr.c:1582
+#: expr.c:1587
#, fuzzy
msgid "invalid integer constant"
msgstr "%s: sai số lượng dòng"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "cơ số có giá trị quá lớn"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: lỗi biểu thức\n"
@@ -1165,7 +1175,7 @@ msgstr "%s: lỗi biểu thức\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: không thể truy cập thư mục cấp trên"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "không thể đặt lại chế độ “nodelay†cho fd %d"
@@ -1185,169 +1195,169 @@ msgstr "save_bash_input: đã có bộ đệm cho fd mới %d"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "pid được tánh nhánh %d có vẻ đang chạy trong công việc %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "đang xóa công việc bị dừng chạy %d với nhóm tiến trình %ld"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) được đánh dấu vẫn hoạt động"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: không có pid như vậy"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "Tín hiệu %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "Xong"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "Bị dừng"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "Bị dừng(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "Äang chạy"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "Xong(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "Thoát %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "Không rõ trạng thái"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(xuất ra core)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid tiến trình con (%ld thành %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld không phải là tiến trình con của hệ vỠnày"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Không có mục ghi vỠtiến trình %ld"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: công việc %d bị dừng chạy"
-#: jobs.c:3564
+#: jobs.c:3551
#, fuzzy, c-format
msgid "%s: no current jobs"
msgstr "%s: không có công việc như vậy"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: công việc bị chấm dứt"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: công việc %d đã Ä‘ang chạy ná»n"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: đang bật WNOHANG để tránh bị chặn vô hạn"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: dòng %d: "
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (xuất ra core)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd ngay: %s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp bị lỗi"
-#: jobs.c:4447
+#: jobs.c:4434
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: kỷ luật dòng"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: kỷ luật dòng"
# Nghĩa chữ : dừng dịch
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "không thể đặt nhóm tiến trình cuối cùng (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "không có Ä‘iá»u khiển công việc trong hệ vá» này"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: khẳng định gặp lỗi: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1356,51 +1366,51 @@ msgstr ""
"\r\n"
"malloc: %s:%d: khẳng định bị sai\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "không rõ"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr ""
"malloc (cấp phát bộ nhớ): khối bộ nhớ dành riêng trên danh sách các khối còn "
"trống bị ghi vào"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: đã được gá»i vá»›i đối số khối đã được giải phóng"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: đã được gá»i vá»›i đối số khối chÆ°a cấp phát"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: phát hiện sự tràn ngược; mh_nbytes ở ngoại phạm vi"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
#, fuzzy
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: phát hiện sự tràn ngược; mh_nbytes ở ngoại phạm vi"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: kích cỡ đoạn đầu và cuối không trùng"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: đã được gá»i vá»›i đối số khối chÆ°a cấp phát"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: phát hiện sự tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
#, fuzzy
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: phát hiện sự tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: kích cỡ đoạn đầu và cuối không trùng"
@@ -1442,22 +1452,22 @@ msgstr "%s: đặc tả Ä‘Æ°á»ng dẫn mạng sai"
msgid "network operations not supported"
msgstr "không hỗ trợ thao tác mạng"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: không thể chuyển đổi miá»n địa phÆ°Æ¡ng (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: không thể chuyển đổi miá»n địa phÆ°Æ¡ng (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: không thể chuyển đổi miá»n địa phÆ°Æ¡ng (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: không thể chuyển đổi miá»n địa phÆ°Æ¡ng (%s): %s"
@@ -1475,138 +1485,138 @@ msgstr "Bạn có thư mới trong $_"
msgid "The mail in %s has been read\n"
msgstr "Äã Ä‘á»c thÆ° trong %s\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "lá»—i cú pháp: cần biểu thức số há»c"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "lá»—i cú pháp: gặp dấu chấm phẩy “;†bất thÆ°á»ng"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "lá»—i cú pháp: “((%s))â€"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document: kiểu chỉ lệnh sai %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "tài liệu này ở dòng %d định giá»›i bằng kết thúc tập tin (muốn “%sâ€)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: chỉ dẫn chuyển hướng “%d†nằm ngoài phạm vi"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "vượt quá số lượng tài-liệu-đây tối đa"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "gặp kết thúc tập tin bất thÆ°á»ng trong khi tìm “%c†tÆ°Æ¡ng ứng"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "gặp kết thúc tập tin bất thÆ°á»ng trong khi tìm “]]â€"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "gặp lá»—i cú pháp trong biểu thức Ä‘iá»u kiện: thẻ bài bất thÆ°á»ng “%sâ€"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "gặp lá»—i cú pháp trong biểu thức Ä‘iá»u kiện"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "gặp thẻ bài bất thÆ°á»ng “%sâ€, cần “)â€"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "cần “)â€"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "đối số bất thÆ°á»ng “%s†cho toán tá»­ má»™t ngôi Ä‘iá»u kiện"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "đối số bất thÆ°á»ng cho toán tá»­ má»™t ngôi Ä‘iá»u kiện"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "thẻ bài bất thÆ°á»ng “%sâ€, cần toán tá»­ hai ngôi Ä‘iá»u kiện"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "cần toán tá»­ hai ngôi Ä‘iá»u kiện"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "đối số bất thÆ°á»ng “%s†cho toán tá»­ hai ngôi Ä‘iá»u kiện"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "đối số bất thÆ°á»ng cho toán tá»­ hai ngôi Ä‘iá»u kiện"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "gặp thẻ bài bất thÆ°á»ng “%c†trong câu lệnh Ä‘iá»u kiện"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "gặp thẻ bài bất thÆ°á»ng “%s†trong câu lệnh Ä‘iá»u kiện"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "gặp thẻ bài bất thÆ°á»ng “%d†trong câu lệnh Ä‘iá»u kiện"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "có lá»—i cú pháp ở gần thẻ bài bất thÆ°á»ng “%sâ€"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "lá»—i cú pháp ở gần “%sâ€"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "lá»—i cú pháp: kết thúc tập tin bất thÆ°á»ng"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "lỗi cú pháp"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Dùng \"%s\" để rá»i hệ vá».\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "gặp kết thúc tập tin bất thÆ°á»ng trong khi tìm “)†tÆ°Æ¡ng ứng"
@@ -1645,94 +1655,94 @@ msgstr "xtrace_set: con trỠtập tin NULL"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: “%câ€: ký tá»± định dạng không hợp lệ"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "bộ mô tả tập tin ở ngoại phạm vi"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: chuyển hướng chưa rõ ràng"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: không thể ghi đè lên tập tin đã có"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: bị hạn chế: không thể chuyển hướng kết xuất"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "không thể tạo tập tin tạm thá»i cho tài liệu này: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: không thể gán fd vào biến"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port không được hỗ trợ nếu không có mạng"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "lỗi chuyển hướng: không thể nhân đôi fd"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "không tìm thấy /tmp, hãy tạo mới!"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "“/tmp†phải là tên thư mục hợp lệ"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: tùy chá»n không hợp lệ"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "không thể đặt uid thành %d: uid chịu tác động %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "không thể đặt gid thành %d: gid chịu tác động %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Là một thư mục"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "Không có tên!"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, phiên bản %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1741,324 +1751,324 @@ msgstr ""
"Cách dùng:\t%s [tùy chá»n GNU dài] [tùy chá»n] …\n"
"\t\t%s [tùy chá»n GNU dài] [tùy chá»n] tập-tin-văn-lệnh …\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "Tùy chá»n dài:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Tùy chá»n:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD hoặc -c lệnh hay -O tùy-chá»n-ngắn\t\t(chỉ gá»i)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s hoặc -o tùy-chá»n\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Gõ “%s -c \"help set\"†để xem thông tin vá» các tùy chá»n hệ vá».\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Gõ “%s -c help†để xem thông tin vỠcác lệnh hệ vỠtích hợp.\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
"Dùng lệnh “bashbug†để thông báo lỗi.\n"
"Báo cáo các lỗi dịch cho: <http://translationproject.org/team/vi.html>.\n"
-#: shell.c:2072
+#: shell.c:2098
#, 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:2073
+#: shell.c:2099
#, 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:757
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: thao tác không hợp lệ"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "Tín hiệu giả"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "Treo"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "Ngắt"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "Thoát"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "Câu lệnh không được phép"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "Theo vết/đặt bẫy BPT"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "Câu lệnh HỦY BỎ"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "Câu lệnh EMT"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "Lỗi dấu chấm động"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "Bị giết"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "Lá»—i bus"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "Lỗi phân đoạn"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "Lá»—i lệnh gá»i hệ thống"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "á»ng dẫn há»ng"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "Äồng hồ báo thức"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "Bị chấm dứt"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "Äiá»u kiện IO gấp"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "Bị dừng (tín hiệu)"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "Tiếp tục"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "Tiến trình con đã giết hoặc dừng"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "Bị dừng (tty nhập)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "Bị dừng (tty xuất)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O sẵn sàng"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "Giới hạn CPU"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "Giới hạn tập tin"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "Báo động (ảo)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "Báo động (hồ sơ)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "Cửa sổ bị thay đổi"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "Khóa bản ghi"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "Tín hiệu ngÆ°á»i dùng 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "Tín hiệu ngÆ°á»i dùng 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "Dữ liệu nhập HFT bị hoãn"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "sắp bị mất điện đột ngột"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "hệ thống sắp sụp đổ"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "chuyển tiến trình sang CPU khác"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "lỗi lập trình"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "Có chế độ màn hình HFT"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "Không có chế độ màn hình HFT"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "Äã hoàn thành chuá»—i âm thanh HFT"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "yêu cầu thông tin"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "Tín hiệu lạ #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "sai chỉ số phụ: không có đóng “%s†trong %s"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: không thể gán danh sách cho bộ phận của mảng"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "không thể tạo ống dẫn để thay thế tiến trình"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "không thể tạo tiến trình con để thay thế tiến trình"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "không thể mở ống dẫn đặt tên %s để Ä‘á»c"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "không thể mở ống dẫn có tên %s để ghi"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "không thể nhân đôi ống dẫn đặt tên %s thành fd %d"
-#: subst.c:6213
+#: subst.c:6370
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "sai thay thế: không có \"“\" đóng trong %s"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "không thể tạo ống dẫn để thay thế lệnh"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "không thể tạo tiến trình con để thay thế lệnh"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: không thể nhân đôi ống dẫn thành fd 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: triển khai gián tiếp không hợp lệ"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "“%sâ€: tên biến không hợp lệ"
-#: subst.c:7256
+#: subst.c:7478
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: tham số null hoặc chưa được đặt"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: tham số null hoặc chưa được đặt"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: biểu thức chuỗi con < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: thay thế sai"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: không thể gán bằng cách này"
-#: subst.c:9814
+#: subst.c:10111
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
"phiên bản hệ vá» má»›i sẽ ép buá»™c Æ°á»›c lượng dÆ°á»›i dạng má»™t hàm thay thế số há»c"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "sai thay thế: không có \"“\" đóng trong %s"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "không khớp: %s"
@@ -2081,21 +2091,21 @@ msgstr "cần “)â€"
msgid "`)' expected, found %s"
msgstr "cần “)†nhưng lại nhận được %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: cần toán tử hai ngôi"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: cần toán tử một ngôi"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "thiếu “]â€"
-#: test.c:899
+#: test.c:914
#, fuzzy, c-format
msgid "syntax error: `%s' unexpected"
msgstr "lá»—i cú pháp: gặp dấu chấm phẩy “;†bất thÆ°á»ng"
@@ -2104,17 +2114,17 @@ msgstr "lá»—i cú pháp: gặp dấu chấm phẩy “;†bất thÆ°á»ng"
msgid "invalid signal number"
msgstr "số thứ tự tín hiệu không hợp lệ"
-#: trap.c:325
+#: trap.c:323
#, fuzzy, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: giá trị sai trong danh sách trap_list[%d]: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2122,89 +2132,94 @@ msgstr ""
"run_pending_traps: bộ xử lý tín hiệu là SIG_DFL, đang gửi lại %d (%s) cho "
"chính mình"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: tín hiệu sai %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "gặp lá»—i khi nhập vào định nghÄ©a hàm cho “%sâ€"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "cấp hệ vỠ(%d) quá cao nên đặt lại thành 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: không có ngữ cảnh hàm ở phạm vi hiện thá»i"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: không thể gán giá trị cho biến"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr ""
+
+#: variables.c:3459
#, fuzzy, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: không có ngữ cảnh hàm ở phạm vi hiện thá»i"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s có exportstr null"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "sai ký tự %d trong exportstr cho %s"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "không có “=†trong exportstr cho %s"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
"pop_var_context: đầu của shell_variables (các biến hệ vá») không phải là ngữ "
"cảnh hàm"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr ""
"pop_var_context: không có ngữ cảnh global_variables (các biến toàn cục)"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: đầu của shell_variables (các biến hệ vá») không phải là phạm vi "
"môi trÆ°á»ng tạm thá»i"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: không thể mở như là TẬP-TIN"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: sai đặt giá trị cho bộ mô tả tập tin vết"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: giá trị so sánh nằm ngoài phạm vi"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
msgstr "Tác quyá»n (C) năm 2014 của Tổ chức Quỹ Phần má»m Tá»± do, Inc."
#: version.c:47 version2.c:47
@@ -2294,12 +2309,16 @@ msgstr "command [-pVv] LỆNH [Ä.SỠ…]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgid ""
+"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [TÊN[=GIÃ-TRỊ] …]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgid ""
+"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
+"[name ...]"
msgstr "typeset [-aAfFgilnrtux] [-p] TÊN[=GIÃ-TRỊ] …"
#: builtins.c:82
@@ -2402,7 +2421,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+#, fuzzy
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
msgstr "set [-abefhkmnptuvxBCHP] [-o TÊN-TÙY-CHỌN] [--] [Äá»I-SỠ…]"
#: builtins.c:144
@@ -2450,7 +2470,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] TÊN [TÊN …]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+#, fuzzy
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [GIỚI-HẠN]"
#: builtins.c:174
@@ -2495,11 +2516,13 @@ msgstr ""
"[ else CÃC;CÂU;LỆNH; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "while COMMANDS; do COMMANDS-2; done"
msgstr "while CÃC;CÂU;LỆNH; do CÃC;CÂU;LỆNH; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
+#, fuzzy
+msgid "until COMMANDS; do COMMANDS-2; done"
msgstr "until CÃC;CÂU;LỆNH; do CÃC;CÂU;LỆNH; done"
#: builtins.c:200
@@ -3861,7 +3884,9 @@ msgid ""
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as "
"word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter "
+"characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY "
"variable.\n"
@@ -3944,7 +3969,7 @@ msgstr ""
" Mã trả lại là số không, nếu không gặp kết thúc tập tin, hay chỠquá\n"
" lâu, hoặc Ä‘Æ°a ra bá»™ mô tả tập tin sai làm đối số cho “-uâ€."
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3965,7 +3990,7 @@ msgstr ""
" Trả lại N, hoặc bị lỗi nếu hệ vỠkhông đang chạy một hàm hay văn\n"
" lệnh."
-#: builtins.c:1054
+#: builtins.c:1055
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4138,7 +4163,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công trừ phi gặp tùy chá»n sai."
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4177,7 +4202,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay TÊN chỉ-Ä‘á»c."
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4210,7 +4235,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n hay TÊN sai,"
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4248,7 +4273,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay TÊN không hợp lệ."
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4266,7 +4291,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công trừ khi N âm hay lớn hơn $#."
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4289,7 +4314,7 @@ msgstr ""
" Trả lại trạng thái của câu lệnh cuối cùng được thực thi trong\n"
" TẬP-TIN; không thành công nếu không thể Ä‘á»c TẬP-TIN."
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4314,7 +4339,7 @@ msgstr ""
" Trả lại thành công trừ khi chức năng Ä‘iá»u khiển công việc không\n"
" được bật hoặc gặp lỗi."
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4473,7 +4498,7 @@ msgstr ""
" Trả lại thành công nếu BTHỨC định giá là Äúng; không thành công\n"
" nếu BTHỨC định giá thành Sai hay đối số được chỉ ra sai."
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4485,7 +4510,7 @@ msgstr ""
" Lệnh này cùng chức năng lệnh tích hợp \"test\", nhưng đối số cuối\n"
" cùng phải là ký tự “]†để khớp với “[†ở đầu."
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4504,7 +4529,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Lúc nào cũng thành công."
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4581,7 +4606,7 @@ msgstr ""
" Trả lại thành công trừ phi Ä‘Æ°a ra ÄTTH sai hay tùy chá»n\n"
" sai."
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4638,7 +4663,7 @@ msgstr ""
" Trả lại thành công nếu tìm thấy tất cả các TÊN; bị lỗi nếu không tìm "
"thấy."
-#: builtins.c:1431
+#: builtins.c:1432
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4732,7 +4757,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay có lá»—i phát sinh."
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4765,7 +4790,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không có CHẾ_ÄỘ sai hay tùy chá»n sai."
-#: builtins.c:1502
+#: builtins.c:1503
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4813,7 +4838,7 @@ msgstr ""
" Trả vỠtrạng thái của ID cuối; không thành công nếu ID sai hoặc đưa\n"
" ra tùy chá»n sai."
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4837,7 +4862,7 @@ msgstr ""
" Trả lại trạng thái của PID; không thành công nếu PID sai, hoặc nếu\n"
" Ä‘Æ°a ra tùy chá»n sai."
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4860,7 +4885,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái của câu lệnh cuối cùng được chạy."
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4890,7 +4915,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái của câu lệnh cuối cùng được chạy."
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4924,7 +4949,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái của câu lệnh cuối cùng được chạy."
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4953,7 +4978,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trạng thái trả vá» là trạng thái trả vá» của á»NG-DẪN."
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4971,7 +4996,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái của câu lệnh cuối cùng được chạy."
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5006,12 +5031,14 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái của câu lệnh cuối cùng được chạy."
-#: builtins.c:1647
+#: builtins.c:1648
+#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5025,12 +5052,14 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái của câu lệnh cuối cùng được chạy."
-#: builtins.c:1659
+#: builtins.c:1660
+#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
+"has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
@@ -5044,7 +5073,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái của câu lệnh cuối cùng được chạy."
-#: builtins.c:1671
+#: builtins.c:1672
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5066,7 +5095,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái thoát của câu LỆNH."
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5089,7 +5118,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu TÊN không phải chỉ Ä‘á»c."
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5107,7 +5136,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái của câu lệnh cuối cùng được chạy."
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5130,7 +5159,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại trạng thái của công việc đã tiếp tục lại."
-#: builtins.c:1726
+#: builtins.c:1727
#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
@@ -5149,7 +5178,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại 1 nếu BTHỨC tính là 0; không thì trả lại 0."
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5198,7 +5227,7 @@ msgstr ""
" Trạng thái thoát:\n"
" 0 hay 1 phụ thuộc vào giá trị của BTHỨC."
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5302,7 +5331,7 @@ msgstr ""
" HISTIGNORE\tDanh sách mẫu cách bằng dấu hai chấm dùng để quyết định\n"
" \tnhững câu lệnh nào nên được lưu vào danh sách lịch sử.\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5356,7 +5385,7 @@ msgstr ""
" Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n"
" chuyển đổi thư mục."
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5404,7 +5433,7 @@ msgstr ""
" Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n"
" chuyển đổi thư mục."
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5457,7 +5486,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả vá» thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i."
-#: builtins.c:1916
+#: builtins.c:1917
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5494,7 +5523,8 @@ msgstr ""
" Trả lại thành công nếu TÊN_TÙY_CHỌN được bật; không thành công nếu\n"
" Ä‘Æ°a ra tùy chá»n sai hay TÊN_TÙY_CHỌN bị tắt."
-#: builtins.c:1937
+#: builtins.c:1938
+#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5517,6 +5547,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a "
"format\n"
" \t string for strftime(3)\n"
@@ -5560,7 +5592,7 @@ msgstr ""
" Trả lại thành công trừ phi Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i khi ghi\n"
" hay gán."
-#: builtins.c:1971
+#: builtins.c:1974
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5612,7 +5644,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i."
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5633,7 +5665,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay gặp lá»—i."
-#: builtins.c:2016
+#: builtins.c:2019
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5692,7 +5724,7 @@ msgstr ""
" Trả lại thành công trừ phi Ä‘Æ°a ra tùy chá»n sai, hoặc TÊN có má»™t\n"
" đặc tả tự hoàn thiện được xác định."
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5765,7 +5797,7 @@ msgstr ""
" Trả lại thành công trừ phi Ä‘Æ°a ra tùy chá»n sai và MẢNG không phải\n"
" chỉ Ä‘á»c hay không là má»™t mảng chỉ số."
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5775,6 +5807,10 @@ msgstr ""
" \n"
" Giống vá»›i “mapfileâ€."
+#, c-format
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: khóa mảng liên kết không hợp lệ"
+
#, fuzzy
#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
#~ msgstr "Tác quyá»n (C) năm 2015 của Tổ chức Quỹ Phần má»m Tá»± do, Inc."
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 6d2dc9f9..e3171aef 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 4477a812..1869a358 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,107 +9,89 @@
# liushuyu <liushuyu011@gmail.com>, 2016.
# Mingye Wang <arthur200126@gmail.com>, 2015, 2016.
# Boyuan Yang <073plan@gmail.com>, 2018, 2019, 2020.
+# Wenbin Lv <wenbin816@gmail.com>, 2021, 2022.
#
-# KNOWN DEFECTS (easy fixes, tedious work; sorted by priority):
-# 0. Translation coverage when upstream sends new strings.
+# 本翻译目å‰é‡‡ç”¨çš„æ ¼å¼çº¦å®šï¼Œå’Œå…¶ä»–注æ„事项:
#
-# 1. Argument lists in `help` are translated, but the `help blah` text still
-# refers to the original name like WORDS.
-#
-# These long helps should be changed to follow their `help` synopsis. Use
-# <å‚æ•°> to refer to `å‚æ•°' in the one-line synopsis.
-#
-# 2. Passive voice. When used inappropriately, they sound even worse in
-# Chinese than in English. In fact huge amounts of `被' is what you use to
-# spot translated text. (You don't always need `被' for passive voice
-# either.)
-#
-# 3. Typography.
-# a. Capitalization. English convensions mangle command names in help text
-# if it's the first word of the sentense (e.g. `Getopts blah blah...').
-# Do yourself a favor and change the names back into lowercase.
-# b. Quotes. Chinese has no `typewriter quote' convension, and standard
-# “curly quotes†should be used.
-# c. Colons. We don't use `: ` in Chinese; use `:`. Sometimes `:` is seen
-# w/o a space (worse).
-# d. Other stuff like parentheses and whitespace. Alignment can be quite
-# important for Feeling Good(TM).
+# 1. 冒å·ï¼šå†’å·å·¦è¾¹æœ€è¿‘的分å¥å«æœ‰ä¸­æ–‡å­—符时,使用中文冒å·ï¼Œå¦åˆ™ä½¿ç”¨è‹±æ–‡å†’å·ã€‚
+# 2. 引å·ï¼šæ°¸è¿œä½¿ç”¨ " ",除éžè¢«å¼•ç”¨çš„字符是 " 或 ',此时ä¿ç•™åŽŸæ–‡ï¼ˆä¸€èˆ¬æ˜¯ ` ')。
+# 3. 括å·ï¼šæ‹¬å·å†…å«æœ‰ä¸­æ–‡å­—符时,使用中文括å·ï¼Œå¦åˆ™ä½¿ç”¨è‹±æ–‡æ‹¬å·ã€‚
+# 4. 命令帮助中,å•è¡Œç”¨æ³•é‡Œçš„å¯æ›¿æ¢è¯è¯­ï¼ˆå¦‚“å称â€ï¼‰åœ¨å®Œæ•´å¸®åŠ©ä¸­åº”å†™æˆ <å称>,
+# 尖括å·ä¸¤è¾¹æŒ‰ç…§è‹±æ–‡æ‹¬å·çš„原则加空格。
+# 5. 注æ„统一术语,ä¸ç¡®å®šçš„术语先æœç´¢æ­¤æ–‡ä»¶çœ‹çœ‹ã€‚新术语强烈推è“术语在线â€ç½‘站。
+# 6. ç»å¸¸æŸ¥çœ‹ä¸Šä¸‹æ–‡ï¼ˆæºä»£ç ï¼‰å¯¹ç¿»è¯‘的正确率很有帮助。
#
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.1\n"
+"Project-Id-Version: bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-07 22:28-0500\n"
-"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-06-18 14:25+0800\n"
+"Last-Translator: Wenbin Lv <wenbin816@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"
-"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.4.2\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.1\n"
#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "数组下标ä¸æ­£ç¡®"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
-msgstr "%s:正在移除å称引用属性"
+msgstr "%s: 正在移除å称引用属性"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
-msgstr "%s:无法将索引数组转化为关è”数组"
+msgstr "%s: 无法将索引数组转æ¢ä¸ºå…³è”数组"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s:无效的关è”数组键"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
-msgstr "%s:无法为éžæ•°å­—的索引赋值"
+msgstr "%s: 无法为éžæ•°å€¼çš„索引赋值"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
-msgstr "%s:%s:为关è”数组赋值时必须使用下标"
+msgstr "%s: %s: 为关è”数组赋值时必须使用下标"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
-msgstr "%s:无法创建: %s"
+msgstr "%s: 无法创建:%s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr "bash_execute_unix_command: 无法为命令找到键映射"
+msgstr "bash_execute_unix_command: 无法找到命令的键映射"
-#: bashline.c:4459
+# 为了å¯è¯»æ€§ï¼Œä¸æ”¹åŠ¨å¤–层引å·
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s:第一个éžç©ºå­—符ä¸æ˜¯â€œ\"â€"
+msgstr "%s: 第一个éžç©ºç™½å­—符ä¸æ˜¯ `\"'"
-#: bashline.c:4488
+# %c == ' 或 ",为了å¯è¯»æ€§ï¼Œä¸æ”¹åŠ¨å¤–层引å·
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
-msgstr "%2$s 中没有闭åˆçš„“%1$câ€"
+msgstr "%2$s ä¸­æ²¡æœ‰å³ `%1$c'"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
-msgstr "%s:缺少冒å·åˆ†éš”符"
+msgstr "%s: 缺少冒å·åˆ†éš”符"
-#: bashline.c:4555
-#, fuzzy, c-format
-#| msgid "`%s': cannot unbind"
+#: bashline.c:4733
+#, c-format
msgid "`%s': cannot unbind in command keymap"
-msgstr "“%sâ€: 无法解除绑定"
+msgstr "\"%s\": 无法解除绑定命令键映射"
#: braces.c:327
#, c-format
@@ -124,12 +106,12 @@ msgstr "大括å·å±•å¼€ï¼šä¸º %u 个元素分é…内存失败"
#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr "大括å·å±•å¼€ï¼šä¸ºâ€œ%sâ€åˆ†é…内存失败"
+msgstr "大括å·å±•å¼€ï¼šä¸º \"%s\"分é…内存失败"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
-msgstr "“%sâ€: 无效的别å"
+msgstr "\"%s\": 无效的别å"
#: builtins/bind.def:122 builtins/bind.def:125
msgid "line editing not enabled"
@@ -138,17 +120,17 @@ msgstr "未å¯ç”¨è¡Œç¼–辑"
#: builtins/bind.def:212
#, c-format
msgid "`%s': invalid keymap name"
-msgstr "“%sâ€: 无效的键映射å"
+msgstr "\"%s\": 无效的键映射å"
#: builtins/bind.def:252
#, c-format
msgid "%s: cannot read: %s"
-msgstr "%s:无法读å–: %s"
+msgstr "%s: 无法读å–:%s"
#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
-msgstr "“%sâ€: 未知函数å"
+msgstr "\"%s\": 未知的函数å"
#: builtins/bind.def:336
#, c-format
@@ -159,12 +141,12 @@ msgstr "%s 未与任何键绑定。\n"
#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
-msgstr "%s å¯ä»¥è¢«è°ƒç”¨ï¼Œé€šè¿‡ "
+msgstr "%s 已被绑定到 "
#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
-msgstr "“%sâ€: 无法解除绑定"
+msgstr "\"%s\": 无法解除绑定"
#: builtins/break.def:77 builtins/break.def:119
msgid "loop count"
@@ -172,23 +154,9 @@ msgstr "循环计数"
#: builtins/break.def:139
msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "仅在 `for', `while', 或者`until' 循环中有æ„义"
+msgstr "仅在 \"for\"ã€\"while\" 或者 \"until\" 循环中有æ„义"
#: builtins/caller.def:136
-#, fuzzy
-#| msgid ""
-#| "Return the context of the current subroutine call.\n"
-#| " \n"
-#| " Without EXPR, returns \"$line $filename\". With EXPR, returns\n"
-#| " \"$line $subroutine $filename\"; this extra information can be used to\n"
-#| " provide a stack trace.\n"
-#| " \n"
-#| " The value of EXPR indicates how many call frames to go back before the\n"
-#| " current one; the top frame is frame 0.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns 0 unless the shell is not executing a shell function or EXPR\n"
-#| " is invalid."
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
@@ -199,30 +167,25 @@ msgid ""
" The value of EXPR indicates how many call frames to go back before the\n"
" current one; the top frame is frame 0."
msgstr ""
-"返回当å‰å­è°ƒç”¨çš„上下文。\n"
-" \n"
-" ä¸å¸¦æœ‰ EXPR 时,返回 \"$line $filename\"。带有 EXPR 时,返回\n"
-" \"$line $subroutine $filename\";这个é¢å¤–çš„ä¿¡æ¯å¯ä»¥è¢«ç”¨äºŽæä¾›\n"
-" 栈追踪。\n"
+"返回当å‰å­ä¾‹ç¨‹è°ƒç”¨çš„上下文。\n"
" \n"
-" EXPR 的值 显示了到当å‰è°ƒç”¨å¸§éœ€è¦å›žåŽ»å¤šå°‘个调用帧;顶部帧\n"
-" 是第 0 帧。\n"
+" ä¸å¸¦æœ‰ <表达å¼> 时,返回 \"$line $filename\"。带有 <表达å¼> 时,\n"
+" 返回 \"$line $subroutine $filename\";这个é¢å¤–çš„ä¿¡æ¯å¯ä»¥ç”¨æ¥æä¾›\n"
+" 栈跟踪 (stack trace)。\n"
" \n"
-" 退出状æ€ï¼š\n"
-" é™¤éž shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ª shell 函数或者 EXPR 无效,å¦åˆ™è¿”回结\n"
-" 果为0。"
+" <表达å¼> 的值表示从当å‰è°ƒç”¨å¸§éœ€è¦å›žåŽ»å¤šå°‘个调用帧;栈顶帧是第 0 帧。"
#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME 未设定"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "å‚数太多"
#: builtins/cd.def:342
msgid "null directory"
-msgstr "空目录"
+msgstr "空值目录"
#: builtins/cd.def:353
msgid "OLDPWD not set"
@@ -241,37 +204,37 @@ msgstr "警告:"
#: builtins/common.c:148
#, c-format
msgid "%s: usage: "
-msgstr "%s:用法:"
+msgstr "%s: 用法:"
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
-msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•°"
+msgstr "%s: 选项需è¦ä¸€ä¸ªå‚æ•°"
#: builtins/common.c:200
#, c-format
msgid "%s: numeric argument required"
-msgstr "%s:需è¦æ•°å­—å‚æ•°"
+msgstr "%s: 需è¦æ•°å€¼å‚æ•°"
#: builtins/common.c:207
#, c-format
msgid "%s: not found"
-msgstr "%s:未找到"
+msgstr "%s: 未找到"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
-msgstr "%s:无效选项"
+msgstr "%s: 无效的选项"
#: builtins/common.c:223
#, c-format
msgid "%s: invalid option name"
-msgstr "%s:无效的选项å"
+msgstr "%s: 无效的选项å"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
-msgstr "“%sâ€: ä¸æ˜¯æœ‰æ•ˆçš„标识符"
+msgstr "\"%s\": ä¸æ˜¯æœ‰æ•ˆçš„标识符"
#: builtins/common.c:240
msgid "invalid octal number"
@@ -281,237 +244,241 @@ msgstr "无效的八进制数"
msgid "invalid hex number"
msgstr "无效的å六进制数"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
-msgstr "无效数字"
+msgstr "无效的数字"
#: builtins/common.c:252
#, c-format
msgid "%s: invalid signal specification"
-msgstr "%s:无效的信å·å£°æ˜Ž"
+msgstr "%s: 无效的信å·è¯´æ˜Žç¬¦"
#: builtins/common.c:259
#, c-format
msgid "`%s': not a pid or valid job spec"
-msgstr "“%sâ€: ä¸æ˜¯æœ‰æ•ˆçš„进程å·æˆ–者任务声明"
+msgstr "\"%s\": ä¸æ˜¯ä¸€ä¸ª pid 或有效的任务说明符"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
-msgstr "%s:åªè¯»å˜é‡"
+msgstr "%s: åªè¯»å˜é‡"
+
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s: 无法赋值"
-#: builtins/common.c:274
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
-msgstr "%s:%s 越界"
+msgstr "%s: %s超出范围"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "å‚æ•°"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
-msgstr "%s 越界"
+msgstr "%s超出范围"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
-msgstr "%s:无此任务"
+msgstr "%s: 无此任务"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
-msgstr "%s:无任务控制"
+msgstr "%s: 无任务控制"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "无任务控制"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
-msgstr "%s:å—é™çš„"
+msgstr "%s: å—é™"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
-msgstr "å—é™çš„"
+msgstr "å—é™"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
-msgstr "%s:ä¸æ˜¯ shell 内建"
+msgstr "%s: ä¸æ˜¯ shell 内建"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
-msgstr "写错误: %s"
+msgstr "写入错误:%s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
-msgstr "设定终端属性时出错: %s"
+msgstr "设定终端属性时出错:%s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
-msgstr "获å–终端属性时出错: %s"
+msgstr "获å–终端属性时出错:%s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr "%s:获å–当å‰ç›®å½•æ—¶å‡ºé”™: %s:%s\n"
+msgstr "%s: 获å–当å‰ç›®å½•æ—¶å‡ºé”™ï¼š%s:%s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
-msgstr "%s:模糊的任务声明"
+msgstr "%s: 有歧义的任务说明符"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
-msgstr "此版本内帮助ä¸å¯ç”¨"
+msgstr "帮助在当å‰ç‰ˆæœ¬ä¸­ä¸å¯ç”¨"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
-msgstr "%s:无法å–消设定: åªè¯» %s"
+msgstr "%s: 无法å–消设定:åªè¯»%s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
-msgstr "%s:无法å–消设定"
+msgstr "%s: 无法å–消设定"
#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
-msgstr "%s:无效的动作å"
+msgstr "%s: 无效的动作å"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
-msgstr "%s:没有补全声明"
+msgstr "%s: 没有补全规约"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
-msgstr "警告: -F 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作"
+msgstr "警告:-F 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
-msgstr "警告: -C 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作"
+msgstr "警告:-C 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
-msgstr "当å‰æœªæ‰§è¡Œè¡¥å…¨åŠŸèƒ½"
+msgstr "当å‰æœªåœ¨æ‰§è¡Œè¡¥å…¨å‡½æ•°"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "åªèƒ½åœ¨å‡½æ•°ä¸­ä½¿ç”¨"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "无法用 \"-f\" 生æˆå‡½æ•°"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: åªè¯»å‡½æ•°"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
-msgstr "%s:引用å˜é‡ä¸èƒ½ä¸ºæ•°ç»„"
+msgstr "%s: 引用å˜é‡ä¸èƒ½ä¸ºæ•°ç»„"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
-msgstr "%s:ä¸å…许å称引用å˜é‡å¼•ç”¨è‡ªèº«"
+msgstr "%s: ä¸å…许å称引用å˜é‡å¼•ç”¨è‡ªèº«"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
-msgstr "%s:循环å˜é‡å引用"
+msgstr "%s: 循环的å称引用"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
-msgstr "“%sâ€: 无效的å称引用å˜é‡å"
-
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "无法用 `-f' 生æˆå‡½æ•°"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s:åªè¯»å‡½æ•°"
+msgstr "\"%s\": å称引用å˜é‡å¼•ç”¨çš„å˜é‡å无效"
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s:引å·å†…çš„å¤åˆæ•°ç»„赋值已被弃用"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
-msgstr "%s:无法以这ç§æ–¹å¼é”€æ¯æ•°ç»„å˜é‡"
+msgstr "%s: 无法以这ç§æ–¹å¼é”€æ¯æ•°ç»„å˜é‡"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
-msgstr "%s:无法将关è”数组转化为索引数组"
+msgstr "%s: 无法将关è”数组转æ¢ä¸ºç´¢å¼•æ•°ç»„"
+
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: 带引å·çš„å¤åˆæ•°ç»„赋值已被弃用"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "动æ€åŠ è½½ä¸å¯ç”¨"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
-msgstr "无法打开共享对象 %s:%s"
+msgstr "无法打开共享目标 %s:%s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
-msgstr "无法在共享对象 %2$s 中找到 %1$s: %3$s"
+msgstr "无法在共享目标 %2$s 中找到 %1$s:%3$s"
-#: builtins/enable.def:388
-#, fuzzy, c-format
-#| msgid "%s: not dynamically loaded"
+#: builtins/enable.def:422
+#, c-format
msgid "%s: dynamic builtin already loaded"
-msgstr "%s:未以动æ€æ–¹å¼åŠ è½½"
+msgstr "%s: 动æ€å†…建已ç»åŠ è½½"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
-msgstr "为 %s 载入函数失败 (%d): 未载入"
+msgstr "%s 的加载函数返回失败 (%d):未加载"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
-msgstr "%s:未以动æ€æ–¹å¼åŠ è½½"
+msgstr "%s: 未动æ€åŠ è½½"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
-msgstr "%s:无法删除: %s"
+msgstr "%s: 无法删除:%s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
-msgstr "%s:是一个目录"
+msgstr "%s: 是一个目录"
#: builtins/evalfile.c:144
#, c-format
msgid "%s: not a regular file"
-msgstr "%s:ä¸æ˜¯å¸¸è§„文件"
+msgstr "%s: ä¸æ˜¯æ™®é€šæ–‡ä»¶"
#: builtins/evalfile.c:153
#, c-format
msgid "%s: file is too large"
-msgstr "%s:文件太大"
+msgstr "%s: 文件太大"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
-msgstr "%s:无法执行二进制文件"
+msgstr "%s: 无法执行二进制文件"
#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
-msgstr "%s:无法执行: %s"
+msgstr "%s: 无法执行:%s"
#: builtins/exit.def:64
#, c-format
@@ -520,12 +487,12 @@ msgstr "注销\n"
#: builtins/exit.def:89
msgid "not login shell: use `exit'"
-msgstr "ä¸æ˜¯ç™»å½• shell: 使用 `exit'"
+msgstr "ä¸æ˜¯ç™»å½• shell:使用 \"exit\""
#: builtins/exit.def:121
#, c-format
msgid "There are stopped jobs.\n"
-msgstr "有åœæ­¢çš„任务。\n"
+msgstr "有已åœæ­¢çš„任务。\n"
#: builtins/exit.def:123
#, c-format
@@ -539,12 +506,12 @@ msgstr "未找到命令"
#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
#: builtins/fc.def:412
msgid "history specification"
-msgstr "历å²å£°æ˜Ž"
+msgstr "历å²è¯´æ˜Žç¬¦"
#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
-msgstr "%s:无法打开临时文件: %s"
+msgstr "%s: 无法打开临时文件:%s"
#: builtins/fg_bg.def:152 builtins/jobs.def:284
msgid "current"
@@ -558,12 +525,12 @@ msgstr "在ä¸å¸¦ä»»åŠ¡æŽ§åˆ¶çš„情况下å¯åŠ¨äº†ä»»åŠ¡ %d"
#: builtins/getopt.c:110
#, c-format
msgid "%s: illegal option -- %c\n"
-msgstr "%s:éžæ³•é€‰é¡¹ -- %c\n"
+msgstr "%s: éžæ³•çš„选项 -- %c\n"
#: builtins/getopt.c:111
#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•° -- %c\n"
+msgstr "%s: 选项需è¦ä¸€ä¸ªå‚æ•° -- %c\n"
#: builtins/hash.def:91
msgid "hashing disabled"
@@ -572,7 +539,7 @@ msgstr "å·²ç¦ç”¨å“ˆå¸Œ"
#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
-msgstr "%s:哈希表为空\n"
+msgstr "%s: 哈希表为空\n"
#: builtins/hash.def:267
#, c-format
@@ -582,25 +549,27 @@ msgstr "命中\t命令\n"
#: builtins/help.def:133
msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Shell 命令匹é…关键字“"
+msgstr[0] "匹é…关键字 \""
#: builtins/help.def:135
msgid ""
"'\n"
"\n"
msgstr ""
+"\" 的 shell 命令\n"
+"\n"
#: builtins/help.def:185
#, c-format
msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr "没有与“%sâ€åŒ¹é…的帮助主题。å°è¯•ä½¿ç”¨â€œhelp helpâ€ã€â€œman -k %sâ€æˆ–“info %sâ€ã€‚"
+msgstr "没有与 \"%s\" 匹é…的帮助主题。å°è¯•ä½¿ç”¨ \"help help\" 或 \"man -k %s\" 或 \"info %s\"。"
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
-msgstr "%s:无法打开: %s"
+msgstr "%s: 无法打开:%s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -611,123 +580,123 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
-"这些 shell 命令是内部定义的。请输入 `help' 以获å–一个列表。\n"
-"输入 `help å称' 以得到有关函数`å称'的更多信æ¯ã€‚\n"
-"使用 `info bash' æ¥èŽ·å¾—关于 shell 的更多一般性信æ¯ã€‚\n"
-"使用 `man -k' 或 `info' æ¥èŽ·å–ä¸åœ¨åˆ—表中的命令的更多信æ¯ã€‚\n"
+"这些 shell 命令是内部定义的。输入 \"help\" 以获å–本列表。\n"
+"输入 \"help å称\" 以得到有关函数 \"å称\" 的更多信æ¯ã€‚\n"
+"使用 \"info bash\" æ¥èŽ·å¾—关于 shell 的更多一般性信æ¯ã€‚\n"
+"使用 \"man -k\" 或 \"info\" æ¥èŽ·å–ä¸åœ¨æœ¬åˆ—表中的命令的更多信æ¯ã€‚\n"
"\n"
-"å称æ—边的星å·(*)表示该命令被ç¦ç”¨ã€‚\n"
+"å称æ—è¾¹çš„æ˜Ÿå· (*) 表示该命令被ç¦ç”¨ã€‚\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "最多åªèƒ½ä½¿ç”¨ -anrw 选项中的一个"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "历å²ä½ç½®"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
-msgstr "%s:无效时间戳"
+msgstr "%s: 无效的时间戳"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
-msgstr "%s:历å²æ‰©å±•å¤±è´¥"
+msgstr "%s: 历å²å±•å¼€å¤±è´¥"
#: builtins/inlib.def:71
#, c-format
msgid "%s: inlib failed"
-msgstr "%s:inlib 失败"
+msgstr "%s: inlib 失败"
#: builtins/jobs.def:109
msgid "no other options allowed with `-x'"
-msgstr "其他选项ä¸èƒ½ä¸Ž `-x' åŒæ—¶ä½¿ç”¨"
+msgstr "其他选项ä¸èƒ½ä¸Ž \"-x\" åŒæ—¶ä½¿ç”¨"
#: builtins/kill.def:211
#, c-format
msgid "%s: arguments must be process or job IDs"
-msgstr "%s:å‚数必须是进程或任务 ID"
+msgstr "%s: å‚数必须是进程或任务 ID"
#: builtins/kill.def:274
msgid "Unknown error"
msgstr "未知错误"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "需è¦è¡¨è¾¾å¼"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
-msgstr "%s:ä¸æ˜¯ä¸€ä¸ªç´¢å¼•æ•°ç»„"
+msgstr "%s: ä¸æ˜¯ä¸€ä¸ªç´¢å¼•æ•°ç»„"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
-msgstr "%s:无效的文件æ述符声明"
+msgstr "%s: 指定的文件æ述符无效"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
-msgstr "%d: 无效的文件æ述符: %s"
+msgstr "%d: 无效的文件æ述符:%s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
-msgstr "%s:无效的行数"
+msgstr "%s: 无效的行数"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
-msgstr "%s:无效的数组基数"
+msgstr "%s: 无效的数组起始"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
-msgstr "%s:无效的回调é‡å­"
+msgstr "%s: 无效的回调间隔"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
-msgstr "空数组å˜é‡å"
+msgstr "空的数组å˜é‡å"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "需è¦æ•°ç»„å˜é‡æ”¯æŒ"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
-msgstr "“%sâ€: 缺少格å¼å­—符"
+msgstr "\"%s\": 缺少格å¼å­—符"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
-msgstr "“%câ€ï¼šæ— æ•ˆçš„时间格å¼å£°æ˜Ž"
+msgstr "\"%c\": 指定的时间格å¼æ— æ•ˆ"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
-msgstr "“%câ€ï¼šæ— æ•ˆæ ¼å¼å­—符"
+msgstr "\"%c\": 无效的格å¼å­—符"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
-msgstr "警告: %s:%s"
+msgstr "警告:%s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
-msgstr "æ ¼å¼è§£æžé—®é¢˜: %s"
+msgstr "æ ¼å¼è§£æžå‡ºçŽ°é—®é¢˜ï¼š%s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
-msgstr "使用了 \\x 但缺少å六进制ä½"
+msgstr "使用了 \\x 但缺少å六进制数"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "使用了 \\%c 但缺少 unicode 数"
@@ -739,7 +708,7 @@ msgstr "无其他目录"
#: builtins/pushd.def:360
#, c-format
msgid "%s: invalid argument"
-msgstr "%s:无效å‚æ•°"
+msgstr "%s: 无效的å‚æ•°"
#: builtins/pushd.def:480
msgid "<no current directory>"
@@ -774,24 +743,22 @@ msgid ""
" -N\tDisplays the Nth entry counting from the right of the list shown by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
-"显示当å‰è®°ä½çš„目录列表。 目录\n"
-" 通过 `pushd' 命令加入这个列表;您å¯ä»¥\n"
-" 使用 `popd' 命令对列表进行é历。\n"
-" \n"
-" 选项:\n"
-" -c\t删除所有元素以清除目录栈\n"
-" -l\tä¸æ‰“å°ä¸Žå®¶ç›®å½•ç›¸å…³çš„以波浪å·\n"
-" \t为å‰ç¼€çš„目录\n"
+"显示当å‰è®°ä½çš„目录列表。 使用 \"pushd\" 命令将目录加入这个列表;\n"
+" 使用 \"popd\" 命令é€ä¸ªå›žåˆ°ä¹‹å‰åŠ å…¥åˆ—表的目录。\n"
+" \n"
+" 选项:\n"
+" -c\t删除所有元素以清空目录栈\n"
+" -l\t打å°ç›®å½•æ—¶ï¼Œä¸è¡¨ç¤ºä¸ºä»¥æ³¢æµªå· (~) 为å‰ç¼€çš„,\n"
+" \t相对于您的主目录的路径\n"
" -p\tæ¯è¡Œä¸€ä¸ªæ¡ç›®æ‰“å°ç›®å½•æ ˆ\n"
-" -v\t以栈ä½ç½®ä¸ºå‰ç¼€ï¼Œæ¯è¡Œä¸€ä¸ªæ¡ç›®\n"
-" \t打å°ç›®å½•æ ˆ\n"
+" -v\tæ¯è¡Œä¸€ä¸ªæ¡ç›®æ‰“å°ç›®å½•æ ˆï¼Œå‰é¢åŠ ä¸Šåœ¨æ ˆä¸­çš„ä½ç½®\n"
" \n"
-" å‚æ•°:\n"
-" +N\t以 dirs ä¸å¸¦é€‰é¡¹è¾“出的顺åºæ˜¾ç¤ºåˆ—表从左起第N个æ¡ç›®ï¼Œ\n"
-" \t从 0 开始。\n"
+" å‚数:\n"
+" +N\t显示 dirs ä¸å¸¦é€‰é¡¹å¯åŠ¨æ—¶æ˜¾ç¤ºçš„目录列表中左起第 N 个目录,\n"
+" \t从零开始。\n"
" \n"
-" -N\t以 dirs ä¸å¸¦é€‰é¡¹è¾“出的顺åºæ˜¾ç¤ºåˆ—表从å³èµ·ç¬¬N个项目,\n"
-"\t从 0 开始。"
+" -N\t显示 dirs ä¸å¸¦é€‰é¡¹å¯åŠ¨æ—¶æ˜¾ç¤ºçš„目录列表中å³èµ·ç¬¬ N 个目录,\n"
+" \t从零开始。"
#: builtins/pushd.def:723
msgid ""
@@ -817,27 +784,23 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"在目录栈顶部加入一个目录,或者论询\n"
-" 目录栈,是当å‰å·¥ä½œç›®å½•æˆä¸ºæ–°çš„栈顶\n"
-" ä¸å¸¦å‚数时,交æ¢æ ˆé¡¶çš„两个目录。\n"
+"将目录添加到目录栈顶,或者轮转栈直到当å‰å·¥ä½œç›®å½•æˆä¸º\n"
+" 新的栈顶。ä¸å¸¦å‚数时,交æ¢æ ˆé¡¶çš„两个目录。\n"
" \n"
" 选项:\n"
-" -n\t抑制增加栈中目录时通常的改å˜ç›®å½•çš„æ“作,\n"
-" \t从而åªè¿›è¡Œæ ˆæ“作。\n"
+" -n\t阻止添加目录至栈时通常的改å˜ç›®å½•æ“作,从而仅对栈\n"
+" \t进行æ“作。\n"
" \n"
" å‚数:\n"
-" +N\t轮转栈使得第N个目录(`dirs' 的\n"
-" \t输出列表中左起,从0开始)\n"
-" \tå‡è‡³æ ˆé¡¶ã€‚\n"
+" +N\t轮转栈,使得第 N 个目录(\"dirs\" 显示的列表中左起,\n"
+" \t从零开始)移动到栈顶。\n"
" \n"
-" -N\t轮转栈使得第N个目录(`dirs' 的\n"
-" \t输出列表中å³èµ·ï¼Œä»Ž0开始)\n"
-" \tå‡è‡³æ ˆé¡¶\n"
+" -N\t轮转栈,使得第 N 个目录(\"dirs\" 显示的列表中å³èµ·ï¼Œ\n"
+" \t从零开始)移动到栈顶。\n"
" \n"
-" dir\t添加目录至栈顶,并\n"
-" \t使其æˆä¸ºæ–°çš„当å‰å·¥ä½œç›®å½•ã€‚\n"
+" 目录\tå°† <目录> 添加到栈顶,使其æˆä¸ºå½“å‰å·¥ä½œç›®å½•ã€‚\n"
" \n"
-" `dirs' 内建命令显示目录栈."
+" \"dirs\" 内建å¯ä»¥æ˜¾ç¤ºç›®å½•æ ˆã€‚"
#: builtins/pushd.def:748
msgid ""
@@ -859,69 +822,65 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"从目录栈中删除æ¡ç›®ã€‚ä¸å¸¦å‚数时,删除\n"
-" 栈顶目录并改å˜è‡³æ–°çš„栈顶目录。\n"
+"从目录栈中删除æ¡ç›®ã€‚ä¸å¸¦å‚数时,删除栈顶目录,并改å˜ç›®å½•è‡³æ–°çš„栈顶目录。\n"
" \n"
" 选项:\n"
-" -n\t抑制从栈中删除目录时通常的改å˜ç›®å½•æ“作,\n"
-" \t从而åªè¿›è¡Œæ ˆæ“作。\n"
+" -n\t阻止从栈中删除目录时通常的改å˜ç›®å½•æ“作,从而仅对栈进行æ“作。\n"
" \n"
" å‚数:\n"
-" +N\t从 `dirs' 输出的列表中,\n"
-" \t删除左起第N个æ¡ç›®ï¼Œè®¡æ•°ä»Ž0开始。例如:`popd +0'\n"
-" \t删除第一个目录,`popd +1' 删除第二个。\n"
+" +N\t删除第 N 个目录(\"dirs\" 显示的列表中左起,从零开始)。\n"
+" \t例如:\"popd +0\" 删除第一个目录,\"popd +1\" 删除第二个。\n"
" \n"
-" -N\t从 `dirs' 输出的列表中,\n"
-" \t删除å³èµ·ç¬¬N个æ¡ç›®ï¼Œè®¡æ•°ä»Ž0开始,例如:`popd -0'\n"
-" \t删除最åŽä¸€ä¸ªæ¡ç›®ï¼Œ`popd -1' 删除倒数第二个。\n"
+" -N\t删除第 N 个目录(\"dirs\" 显示的列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹ï¼‰ã€‚\n"
+" \t例如:\"popd -0\" 删除最åŽä¸€ä¸ªç›®å½•ï¼Œ\"popd -1\" 删除倒数第二个。\n"
" \n"
-" `dirs' 内建å˜é‡æ˜¾ç¤ºç›®å½•æ ˆã€‚"
+" \"dirs\" 内建å¯ä»¥æ˜¾ç¤ºç›®å½•æ ˆã€‚"
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
-msgstr "%s:无效的超时声明"
+msgstr "%s: 指定的超时时间无效"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
-msgstr "读错误: %d: %s"
+msgstr "读å–错误:%d: %s"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
-msgstr "åªèƒ½ä»Žå‡½æ•°æˆ–者æºè„šæœ¬è¿”回(`return')"
+msgstr "åªèƒ½åœ¨å‡½æ•°æˆ–者被 source 的脚本中使用 \"return\""
#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "无法åŒæ—¶å–消设定一个函数和一个å˜é‡"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
-msgstr "%s:ä¸æ˜¯æ•°ç»„å˜é‡"
+msgstr "%s: ä¸æ˜¯æ•°ç»„å˜é‡"
#: builtins/setattr.def:189
#, c-format
msgid "%s: not a function"
-msgstr "%s:ä¸æ˜¯å‡½æ•°"
+msgstr "%s: ä¸æ˜¯å‡½æ•°"
#: builtins/setattr.def:194
#, c-format
msgid "%s: cannot export"
-msgstr "%s:无法导出"
+msgstr "%s: 无法导出"
#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
-msgstr "ä½ç§»è®¡æ•°"
+msgstr "移ä½æ¬¡æ•°"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "无法åŒæ—¶è®¾å®šå’Œå–消设定 shell 选项"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
-msgstr "%s:无效的 shell 选项å"
+msgstr "%s: 无效的 shell 选项å"
#: builtins/source.def:128
msgid "filename argument required"
@@ -930,7 +889,7 @@ msgstr "需è¦æ–‡ä»¶åå‚æ•°"
#: builtins/source.def:154
#, c-format
msgid "%s: file not found"
-msgstr "%s:文件未找到"
+msgstr "%s: 未找到文件"
#: builtins/suspend.def:102
msgid "cannot suspend"
@@ -943,7 +902,7 @@ msgstr "无法挂起一个登录 shell"
#: builtins/type.def:235
#, c-format
msgid "%s is aliased to `%s'\n"
-msgstr "%s 是“%sâ€çš„别å\n"
+msgstr "%s 是 \"%s\" 的别å\n"
#: builtins/type.def:256
#, c-format
@@ -978,26 +937,26 @@ msgstr "%s 已被录入哈希表 (%s)\n"
#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
-msgstr "%s:无效的 limit å‚æ•°"
+msgstr "%s: 无效的é™åˆ¶å‚æ•°"
#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
-msgstr "“%câ€ï¼šå‘½ä»¤é”™è¯¯"
+msgstr "\"%c\": 错误的命令"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
-msgstr "%sï¼šæ— æ³•èŽ·å– limit 值: %s"
+msgstr "%s: 无法获å–é™åˆ¶ï¼š%s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
-msgstr "limit"
+msgstr "é™åˆ¶"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
-msgstr "%s:无法修改 limit 值: %s"
+msgstr "%s: 无法修改é™åˆ¶ï¼š%s"
#: builtins/umask.def:115
msgid "octal number"
@@ -1006,494 +965,504 @@ msgstr "八进制数"
#: builtins/umask.def:232
#, c-format
msgid "`%c': invalid symbolic mode operator"
-msgstr "“%câ€ï¼šæ— æ•ˆçš„符å·çŠ¶æ€è¿ç®—符"
+msgstr "\"%c\": 无效的符å·æ¨¡å¼è¿ç®—符"
#: builtins/umask.def:287
#, c-format
msgid "`%c': invalid symbolic mode character"
-msgstr "“%câ€ï¼šæ— æ•ˆçš„符å·çŠ¶æ€å­—符"
+msgstr "\"%c\": 无效的符å·æ¨¡å¼å­—符"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
-msgstr "行"
+msgstr " 行 "
#: error.c:164
#, c-format
msgid "last command: %s\n"
-msgstr "上一个命令: %s\n"
+msgstr "上一个命令:%s\n"
#: error.c:172
#, c-format
msgid "Aborting..."
-msgstr "中止..."
+msgstr "正在中止..."
#. TRANSLATORS: this is a prefix for informational messages.
#: error.c:287
#, c-format
msgid "INFORM: "
-msgstr "报告:"
+msgstr "ä¿¡æ¯ï¼š"
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "调试警告:"
+
+#: error.c:488
msgid "unknown command error"
msgstr "未知的命令错误"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "错误的命令类型"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "错误的æ¡ä»¶è¿žæŽ¥ç¬¦"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "错误的跳转"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
-msgstr "%s:未绑定的å˜é‡"
+msgstr "%s: 未绑定的å˜é‡"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "\a 等待输入超时:自动注销\n"
+msgstr "\a等待输入超时:自动注销\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
-msgstr "无法从 /dev/null é‡å®šå‘标准输入: %s"
+msgstr "无法从 /dev/null é‡å®šå‘标准输入:%s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr "时间格å¼: `%c': 无效的格å¼å­—符"
+msgstr "时间格å¼ï¼š\"%c\": 无效的格å¼å­—符"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: 副进程 [%d:%s] ä»ç„¶å­˜åœ¨"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "管é“错误"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: 超出最大 eval 嵌套层数 (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s:超出最大 source 嵌套层数 (%d)"
+msgstr "%s: 超出最大 source 嵌套层数 (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr "%s:超出最大函数嵌套层数 (%d)"
+msgstr "%s: 超出最大函数嵌套层数 (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s:å—é™çš„: 无法在命令å中使用 `/'"
+msgstr "%s: å—é™ï¼šæ— æ³•åœ¨å‘½ä»¤å中使用 \"/\""
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
-msgstr "%s:未找到命令"
+msgstr "%s: 未找到命令"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
-msgstr "%s:%s"
+msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s: 无法执行:找ä¸åˆ°éœ€è¦çš„文件"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
-msgstr "%s:%s:解释器错误"
+msgstr "%s: %s: 错误的解释器"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
-msgstr "%s:无法执行二进制文件: %s"
+msgstr "%s: 无法执行二进制文件:%s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
-msgstr "“%sâ€: 特殊内建"
+msgstr "\"%s\": 是特殊内建"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "无法å¤åˆ¶æ–‡ä»¶æ述符 %d 到文件æ述符 %d"
#: expr.c:263
msgid "expression recursion level exceeded"
-msgstr "表达å¼é€’归层次越界"
+msgstr "超出表达å¼é€’归层数上é™"
#: expr.c:291
msgid "recursion stack underflow"
msgstr "递归栈下溢"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "表达å¼ä¸­æœ‰è¯­æ³•é”™è¯¯"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "å°è¯•ç»™éžå˜é‡èµ‹å€¼"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "å˜é‡èµ‹å€¼ä¸­æœ‰è¯­æ³•é”™è¯¯"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "除以 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
-msgstr "错误:表达å¼èµ‹å€¼ç¬¦å·é”™è¯¯"
+msgstr "bug: 错误的表达å¼èµ‹å€¼è®°å·"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
-msgstr "æ¡ä»¶è¡¨è¾¾å¼éœ€è¦ `:'"
+msgstr "æ¡ä»¶è¡¨è¾¾å¼éœ€è¦ \":\""
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "指数å°äºŽ 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "预增符或预å‡ç¬¦åŽåº”跟有标识符"
+msgstr "å‰ç¼€è‡ªå¢žæˆ–å‰ç¼€è‡ªå‡è¿ç®—符之åŽéœ€è¦æ ‡è¯†ç¬¦"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
-msgstr "缺少“)â€"
+msgstr "缺少 \")\""
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
-msgstr "语法错误: 需è¦æ“作数"
+msgstr "语法错误:需è¦æ“作数"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
-msgstr "语法错误: 无效的算术è¿ç®—符"
+msgstr "语法错误:无效的算术è¿ç®—符"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s%s%s:%s (错误符å·æ˜¯ \"%s\")"
+msgstr "%s%s%s: %s(错误记å·æ˜¯ \"%s\")"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
-msgstr "无效的算术进制"
+msgstr "无效的算术底数"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "无效的整数常数"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
-msgstr "数值太大ä¸å¯ä¸ºç®—术进制的基"
+msgstr "值对于底数而言过大"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
-msgstr "%s:表达å¼é”™è¯¯\n"
+msgstr "%s: 表达å¼é”™è¯¯\n"
#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: 无法访问父目录"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
-msgstr "无法为文件æ述符 %d é‡ç½®nodelay模å¼"
+msgstr "无法为文件æ述符 %d é‡ç½® nodelay 模å¼"
#: input.c:266
#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "无法从文件æ述符 %d 为 bash 的输入获å–一个新的文件æ述符"
+msgstr "无法从文件æ述符 %d 为 bash 的输入分é…一个新的文件æ述符"
#: input.c:274
#, c-format
msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "save_bash_input: å·²ç»å­˜åœ¨æ–°çš„文件æ述符 %d 的缓冲区"
+msgstr "save_bash_input: 新的文件æ述符 %d 的缓冲区已存在"
#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: 进程组管é“"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
-msgstr "å‰åˆ† (fork) å‡ºçš„çš„è¿›ç¨‹å· %d 出现在è¿è¡Œä¸­çš„任务 %d 中"
+msgstr "进程å¤åˆ¶ (fork) 产生的 pid %d 出现在è¿è¡Œä¸­çš„任务 %d 中"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "删除进程组 %2$ld 中已åœæ­¢çš„任务 %1$d"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr "add_process: è¿›ç¨‹å· %5ld(%s) 标注为ä»æ´»ç€"
+msgstr "add_process: pid %5ld (%s) 标记为ä»å­˜æ´»"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
-msgstr "describe_pid: %ld: 无此进程å·"
+msgstr "describe_pid: %ld: æ— æ­¤ pid"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "ä¿¡å· %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "已完æˆ"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "å·²åœæ­¢"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "å·²åœæ­¢(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "è¿è¡Œä¸­"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "已完æˆ(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "退出 %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "未知状æ€"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(核心已转储)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
-msgstr " (工作目录: %s)"
+msgstr " (工作目录:%s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
-msgstr "å­è¿›ç¨‹ setpgid (%ld 到 %ld)"
+msgstr "å­è¿›ç¨‹ setpgid(%ld 到 %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
-msgstr "wait: è¿›ç¨‹å· %ld ä¸æ˜¯å½“å‰ shell çš„å­è¿›ç¨‹"
+msgstr "wait: pid %ld ä¸æ˜¯å½“å‰ shell çš„å­è¿›ç¨‹"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
-msgstr "wiat_for: 没有进程 %ld 的记录"
+msgstr "wait_for: 没有进程 %ld 的记录"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: 任务 %d å·²åœæ­¢"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
-msgstr "%s:无当å‰ä»»åŠ¡"
+msgstr "%s: 无当å‰ä»»åŠ¡"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
-msgstr "%s:任务已ç»ç»ˆæ­¢"
+msgstr "%s: 任务已ç»ç»ˆæ­¢"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
-msgstr "%s:任务 %d 已在åŽå°"
+msgstr "%s: 任务 %d 已在åŽå°"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: 打开 WNOHANG 以é¿å…æ— é™é˜»å¡ž"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
-msgstr "%s:行 %d: "
+msgstr "%s: 第 %d 行:"
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr "(核心已转储)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
-msgstr "(当å‰å·¥ä½œç›®å½•ï¼š%s)\n"
+msgstr "(当å‰å·¥ä½œç›®å½•ï¼š%s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp 失败"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: åŽå°æ— ä»»åŠ¡æŽ§åˆ¶"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: 行规则"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
-msgstr "无法设定终端进程组(%d)"
+msgstr "无法设定终端进程组 (%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "此 shell 中无任务控制"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
-msgstr "malloc: 断言失败: %s\n"
+msgstr "malloc: 断言失败:%s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
"\r\n"
-"malloc: %s:%d:断言已修补\r\n"
+"malloc: %s:%d: 断言已æžç ¸\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "未知"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
-msgstr "malloc: 空闲链表中的å—æŸå"
+msgstr "malloc: 空闲列表中的å—æŸå"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
-msgstr "free:调用时用了已ç»é‡Šæ”¾çš„å—作为å‚æ•°"
+msgstr "free: 调用时用了已ç»é‡Šæ”¾çš„å—作为å‚æ•°"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: 调用时用了未分é…çš„å—作为å‚æ•°"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
-msgstr "free: 检测到下溢;mh_nbytes 越界"
+msgstr "free: 检测到下溢;mh_nbytes 超出范围"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: 检测到下溢;magic8 æŸå"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
-msgstr "free: 其实和末尾å—大å°ä¸ä¸€è‡´"
+msgstr "free: 起始和末尾组å—大å°ä¸ä¸€è‡´"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
-msgstr "realloc:调用时用了未分é…çš„å—作为å‚æ•°"
+msgstr "realloc: 调用时用了未分é…çš„å—作为å‚æ•°"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr "realloc: 检测到下溢;mh_nbytes 越界"
+msgstr "realloc: 检测到下溢;mh_nbytes 超出范围"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: 检测到下溢;magic8 æŸå"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
-msgstr "realloc: 其实和末尾å—大å°ä¸ä¸€è‡´"
+msgstr "realloc: 起始和末尾组å—大å°ä¸ä¸€è‡´"
#: lib/malloc/table.c:191
#, c-format
msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr "register_alloc: 分é…表已ç»å……满了 FIND_ALLOC?\n"
+msgstr "register_alloc: 使用 FIND_ALLOC 时分é…表已满?\n"
#: lib/malloc/table.c:200
#, c-format
msgid "register_alloc: %p already in table as allocated?\n"
-msgstr "register_alloc: %p 在表中显示为已分é…?\n"
+msgstr "register_alloc: %p 已在表中显示为已分é…?\n"
#: lib/malloc/table.c:253
#, c-format
msgid "register_free: %p already in table as free?\n"
-msgstr "register_free: %p 在表中显示为已释放?\n"
+msgstr "register_free: %p 已在表中显示为未分é…?\n"
#: lib/sh/fmtulong.c:102
msgid "invalid base"
-msgstr "无效的基"
+msgstr "无效的底数"
#: lib/sh/netopen.c:168
#, c-format
msgid "%s: host unknown"
-msgstr "%s:未知主机"
+msgstr "%s: 未知的主机"
#: lib/sh/netopen.c:175
#, c-format
msgid "%s: invalid service"
-msgstr "%s:无效的æœåŠ¡"
+msgstr "%s: 无效的æœåŠ¡"
#: lib/sh/netopen.c:306
#, c-format
msgid "%s: bad network path specification"
-msgstr "%s:错误的网络路径声明"
+msgstr "%s: 指定的网络路径无效"
#: lib/sh/netopen.c:347
msgid "network operations not supported"
msgstr "ä¸æ”¯æŒç½‘络æ“作"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr "setlocale:LC_ALL:无法改å˜åŒºåŸŸé€‰é¡¹ (%s)"
+msgstr "setlocale: LC_ALL: 无法改å˜åŒºåŸŸè®¾ç½® (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr "setlocale:LC_ALL:无法改å˜åŒºåŸŸé€‰é¡¹ (%s):%s"
+msgstr "setlocale: LC_ALL: 无法改å˜åŒºåŸŸè®¾ç½® (%s):%s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
-msgstr "setlocale:%s:无法改å˜åŒºåŸŸé€‰é¡¹ (%s)"
+msgstr "setlocale: %s: 无法改å˜åŒºåŸŸè®¾ç½® (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr "setlocale:%s:无法改å˜åŒºåŸŸé€‰é¡¹ (%s):%s"
+msgstr "setlocale: %s: 无法改å˜åŒºåŸŸè®¾ç½® (%s):%s"
#: mailcheck.c:439
msgid "You have mail in $_"
@@ -1508,158 +1477,159 @@ msgstr "您在 $_ 中有新邮件"
msgid "The mail in %s has been read\n"
msgstr "%s 中的邮件已被读过\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "语法错误:需è¦ç®—术表达å¼"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
-msgstr "è¯­æ³•é”™è¯¯ï¼šéœ€è¦ `;'"
+msgstr "语法错误:未预期的 \";\""
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
-msgstr "语法错误:`((%s))'"
+msgstr "语法错误:\"((%s))\""
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
-msgstr "make_here_document:错误的指令类型 %d"
+msgstr "make_here_document: 错误的指令类型 %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "ç«‹å³æ–‡æ¡£åœ¨ç¬¬ %d 行被文件结æŸç¬¦åˆ†éš” (需è¦â€œ%sâ€)"
+msgstr "ç«‹å³æ–‡æ¡£åœ¨ç¬¬ %d 行被文件结æŸç¬¦åˆ†éš”ï¼ˆéœ€è¦ \"%s\")"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr "make_redirection:é‡å®šå‘指令“%dâ€è¶Šç•Œ"
+msgstr "make_redirection: é‡å®šå‘指令 \"%d\" 超出范围"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
-msgstr "shell_getc:shell_input_line_size (%zu) 超过 SIZE_MAX (%lu):行被截断"
+msgstr "shell_getc: shell_input_line_size (%zu) 超过 SIZE_MAX (%lu):行已被截断"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
-msgstr "超出最大立å³æ–‡æ¡£æ•°é‡"
+msgstr "超出最大立å³æ–‡æ¡£è®¡æ•°"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+# %c å¯èƒ½ä¸ºå¼•å·
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
-msgstr "寻找匹é…的“%câ€æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦"
+msgstr "寻找匹é…çš„ `%c' æ—¶é‡åˆ°äº†æœªé¢„期的 EOF"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
-msgstr "寻找“]]â€æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦"
+msgstr "寻找 \"]]\" æ—¶é‡åˆ°äº†æœªé¢„期的 EOF"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æœ‰è¯­æ³•é”™è¯¯ï¼šæœªé¢„期的符å·â€œ%sâ€"
+msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æœ‰è¯­æ³•é”™è¯¯ï¼šæœªé¢„æœŸçš„è®°å· \"%s\""
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æœ‰è¯­æ³•é”™è¯¯"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
-msgstr "未预期的符å·â€œ%s†,需è¦â€œ)â€"
+msgstr "æœªé¢„æœŸçš„è®°å· \"%s\"ï¼Œéœ€è¦ \")\""
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
-msgstr "需è¦â€œ)â€"
+msgstr "éœ€è¦ \")\""
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
-msgstr "一元æ¡ä»¶è¿ç®—符使用了未预期的å‚数“%sâ€"
+msgstr "一元æ¡ä»¶è¿ç®—符使用了未预期的å‚æ•° \"%s\""
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "一元æ¡ä»¶è¿ç®—符使用了未预期的å‚æ•°"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "未预期的符å·â€œ%sâ€ï¼Œéœ€è¦äºŒå…ƒæ¡ä»¶è¿ç®—符"
+msgstr "æœªé¢„æœŸçš„è®°å· \"%s\",需è¦äºŒå…ƒæ¡ä»¶è¿ç®—符"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "需è¦äºŒå…ƒæ¡ä»¶è¿ç®—符"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "二元æ¡ä»¶è¿ç®—符使用了未预期的å‚数“%sâ€"
+msgstr "二元æ¡ä»¶è¿ç®—符使用了未预期的å‚æ•° \"%s\""
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "二元æ¡ä»¶è¿ç®—符使用了未预期的å‚æ•°"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
-msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„期的符å·â€œ%câ€"
+msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„æœŸçš„è®°å· \"%c\""
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
-msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„期的符å·â€œ%sâ€"
+msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„æœŸçš„è®°å· \"%s\""
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
-msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„æœŸçš„ç¬¦å· %d"
+msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„æœŸçš„è®°å· %d"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
-msgstr "未预期的符å·â€œ%sâ€é™„近有语法错误"
+msgstr "æœªé¢„æœŸçš„è®°å· \"%s\" 附近有语法错误"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
-msgstr "“%sâ€é™„近有语法错误"
+msgstr "\"%s\" 附近有语法错误"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
-msgstr "语法错误: 未预期的文件结尾"
+msgstr "语法错误:未预期的文件结æŸç¬¦"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "语法错误"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "使用 \"%s\" 退出 shell 。\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
-msgstr "寻找匹é…的“)â€æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦"
+msgstr "寻找匹é…çš„ \")\" æ—¶é‡åˆ°äº†æœªé¢„期的 EOF"
#: pcomplete.c:1132
#, c-format
msgid "completion: function `%s' not found"
-msgstr "补全:未找到函数 “%sâ€"
+msgstr "补全:未找到函数 \"%s\""
#: pcomplete.c:1722
#, c-format
msgid "programmable_completion: %s: possible retry loop"
-msgstr "programmable_completion: %s:疑似é‡è¯•å¾ªçŽ¯"
+msgstr "programmable_completion: %s: å¯èƒ½çš„é‡è¯•å¾ªçŽ¯"
#: pcomplib.c:182
#, c-format
msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr "progcomp_insert: %s:空的补全声明"
+msgstr "progcomp_insert: %s: COMPSPEC 为 NULL"
#: print_cmd.c:302
#, c-format
msgid "print_command: bad connector `%d'"
-msgstr "print_command: 错误的æ¡ä»¶è¿žæŽ¥ç¬¦ `%d'"
+msgstr "print_command: 错误的æ¡ä»¶è¿žæŽ¥ç¬¦ \"%d\""
#: print_cmd.c:375
#, c-format
@@ -1668,102 +1638,102 @@ msgstr "xtrace_set: %d: 无效的文件æ述符"
#: print_cmd.c:380
msgid "xtrace_set: NULL file pointer"
-msgstr "xtrace_set: 空的文件指针"
+msgstr "xtrace_set: 文件指针为 NULL"
#: print_cmd.c:384
#, c-format
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
-msgstr "cprintf: `%c': 无效的格å¼å­—符"
+msgstr "cprintf: \"%c\": 无效的格å¼å­—符"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "文件æ述符超出范围"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
-msgstr "%s:模糊的é‡å®šå‘"
+msgstr "%s: 有歧义的é‡å®šå‘"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
-msgstr "%s:无法覆盖已存在的文件"
+msgstr "%s: 无法覆盖已存在的文件"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
-msgstr "%s:å—é™çš„: 无法é‡å®šå‘输出"
+msgstr "%s: å—é™ï¼šæ— æ³•é‡å®šå‘输出"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
-msgstr "无法为立å³æ–‡æ¡£åˆ›å»ºä¸´æ—¶æ–‡ä»¶: %s"
+msgstr "无法为立å³æ–‡æ¡£åˆ›å»ºä¸´æ—¶æ–‡ä»¶ï¼š%s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
-msgstr "%s:无法将文件æ述符赋值给å˜é‡"
+msgstr "%s: 无法将文件æ述符赋值给å˜é‡"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "没有网络时ä¸æ”¯æŒ /dev/(tcp|udp)/host/port"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
-msgstr "é‡å®šå‘错误: 无法å¤åˆ¶æ–‡ä»¶æ述符"
+msgstr "é‡å®šå‘错误:无法å¤åˆ¶æ–‡ä»¶æ述符"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
-msgstr "无法找到 /tmp ,请创建ï¼"
+msgstr "无法找到 /tmp,请创建ï¼"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp 必须为有效的目录å"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "åœ¨äº¤äº’å¼ shell 中将忽略美化输出模å¼"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: 无效的选项"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
-msgstr "无法将 uid 设为 %d: 有效 uid %d"
+msgstr "无法将 uid 设为 %d:有效 uid %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
-msgstr "无法将 gid 设为 %d: 有效 gid %d"
+msgstr "无法将 gid 设为 %d:有效 gid %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "无法å¯åŠ¨è°ƒè¯•å™¨ï¼›è°ƒè¯•æ¨¡å¼å·²ç¦ç”¨"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
-msgstr "%s:是一个目录"
+msgstr "%s: 是一个目录"
# 这个是查看用户的 /etc/passwd ä¿¡æ¯å¾—到的å字。既然是用户的å字,就å«åšæ— åæ°å§ã€‚(有点想写“红领巾â€æ¥ç€ã€‚)
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "æ— åæ°ï¼"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash,版本 %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1772,324 +1742,324 @@ msgstr ""
"用法:\t%s [GNU 长选项] [选项] ...\n"
"\t%s [GNU 长选项] [选项] 脚本文件 ...\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
-msgstr "GNU 长选项:\n"
+msgstr "GNU 长选项:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
-msgstr "Shell 选项:\n"
+msgstr "Shell 选项:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr "\t-irsD 或 -c <命令> 或 -O <shopt 选项>\t\t(仅适åˆè°ƒç”¨)\n"
+msgstr "\t-ilrsD 或 -c <命令> 或 -O <shopt 选项>\t\t(仅适åˆè°ƒç”¨ï¼‰\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s 或 -o <选项>\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信æ¯\n"
+msgstr "请输入 `%s -c \"help set\"' 以获得关于 shell 选项的更多信æ¯ã€‚\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信æ¯.\n"
+msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信æ¯ã€‚\n"
# 写如何报告程åºé”™è¯¯çš„地方应该æ到如何报告翻译问题。
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
-"请使用“bashbugâ€å‘½ä»¤æ¥æŠ¥å‘Šç¨‹åºé”™è¯¯ã€‚\n"
+"请使用 \"bashbug\" 命令æ¥æŠ¥å‘Šç¨‹åºé”™è¯¯ã€‚\n"
"请将翻译错误报告到 <i18n-zh@googlegroups.com>。\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr "bash 首页:<http://www.gnu.org/software/bash>\n"
+msgstr "bash 主页:<http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: 无效的æ“作"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "伪信å·"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "挂断"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "中断"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "退出"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
-msgstr "éžæ³•çš„指令"
+msgstr "éžæ³•æŒ‡ä»¤"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
-msgstr "断点追踪/陷阱"
+msgstr "断点跟踪或陷阱"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
-msgstr "放弃指令"
+msgstr "中止指令"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
-msgstr "模拟器陷阱指令"
+msgstr "EMT 指令"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
-msgstr "浮点数异常"
+msgstr "浮点异常"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "å·²æ€æ­»"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "总线错误"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "段错误"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "错误的系统调用"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
-msgstr "管é“破裂"
+msgstr "断开的管é“"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "闹钟"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "已终止"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "紧急 I/O 状况"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
-msgstr "å·²åœæ­¢(ä¿¡å·)"
+msgstr "å·²åœæ­¢ï¼ˆä¿¡å·ï¼‰"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "继续"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
-msgstr "å­è¿›ç¨‹å·²æ­»æˆ–者åœæ­¢"
+msgstr "å­è¿›ç¨‹å·²æ­»æˆ–å·²åœæ­¢"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
-msgstr "å·²åœæ­¢(tty 输入)"
+msgstr "å·²åœæ­¢ï¼ˆtty 输入)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
-msgstr "å·²åœæ­¢(tty 输出)"
+msgstr "å·²åœæ­¢ï¼ˆtty 输出)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O 就绪"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU é™åˆ¶"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "文件é™åˆ¶"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
-msgstr "报警(虚拟)"
+msgstr "闹钟(虚拟)"
# Personally I treat this as something coming from alarm() by a profiler.
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
-msgstr "报警(分æž)"
+msgstr "闹钟(性能分æžï¼‰"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "窗å£å·²æ”¹å˜"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "记录é”"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
-msgstr "用户信å·1"
+msgstr "ç”¨æˆ·ä¿¡å· 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
-msgstr "用户信å·2"
+msgstr "ç”¨æˆ·ä¿¡å· 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
-msgstr "HFT 待输入数æ®"
+msgstr "HFT 输入数æ®å¾…处ç†"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "å³å°†åœç”µ"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "系统å³å°†å´©æºƒ"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "è¿ç§»è¿›ç¨‹è‡³å¦ä¸€ä¸ª CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "编程错误"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "已授予 HFT 监视模å¼"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "已撤销 HFT 监视模å¼"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "å·²å®Œæˆ HFT 声音åºåˆ—"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "ä¿¡æ¯è¯·æ±‚"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "æœªçŸ¥ä¿¡å· #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
-msgstr "错误的替æ¢: 在 %2$s 中没有闭åˆçš„ `%1$s'"
+msgstr "错误的替æ¢ï¼šåœ¨ %2$s ä¸­æ²¡æœ‰å³ `%1$s'"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
-msgstr "%s:无法将链表赋值给数组æˆå‘˜"
+msgstr "%s: 无法将列表赋值给数组æˆå‘˜"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "无法为进程替æ¢åˆ›å»ºç®¡é“"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "无法为进程替æ¢åˆ›å»ºå­è¿›ç¨‹"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
-msgstr "无法打开命åç®¡é“ %s 以读å–"
+msgstr "无法打开命åç®¡é“ %s 进行读å–"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "无法打开命åç®¡é“ %s 进行写入"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "无法将命åç®¡é“ %s 作为文件æ述符 %d å¤åˆ¶"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "命令替æ¢ï¼šå¿½ç•¥è¾“入中的 null 字节"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "无法为命令替æ¢åˆ›å»ºç®¡é“"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "无法为命令替æ¢åˆ›å»ºå­è¿›ç¨‹"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: 无法将管é“å¤åˆ¶ä¸ºæ–‡ä»¶æ述符 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
-msgstr "%s:无效的引用å˜é‡å"
+msgstr "%s: å称引用å˜é‡å¼•ç”¨çš„å˜é‡å无效"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
-msgstr "%s:无效的间接展开"
+msgstr "%s: 无效的间接展开"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
-msgstr "%s:无效的å˜é‡å"
+msgstr "%s: 无效的å˜é‡å"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
-msgstr "%s:å‚数未设置"
+msgstr "%s: å‚数未设置"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
-msgstr "%s:å‚数为空或未设置"
+msgstr "%s: å‚数为空或未设置"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
-msgstr "%s:å­ä¸²è¡¨è¾¾å¼ < 0"
+msgstr "%s: å­ä¸²è¡¨è¾¾å¼ < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
-msgstr "%s:错误的替æ¢"
+msgstr "%s: 错误的替æ¢"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
-msgstr "$%s:无法这样赋值"
+msgstr "$%s: 无法这样赋值"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
-msgstr "未æ¥ç‰ˆæœ¬çš„ shell 会强制估值为算术替æ¢"
+msgstr "未æ¥ç‰ˆæœ¬çš„ shell 会强制求值为算术替æ¢"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
-msgstr "错误的替æ¢: 在 %s 中没有闭åˆçš„ \"`\""
+msgstr "错误的替æ¢ï¼šåœ¨ %s ä¸­æ²¡æœ‰å³ \"`\""
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
-msgstr "无匹é…: %s"
+msgstr "无匹é…:%s"
#: test.c:147
msgid "argument expected"
@@ -2098,137 +2068,142 @@ msgstr "需è¦å‚æ•°"
#: test.c:156
#, c-format
msgid "%s: integer expression expected"
-msgstr "%s:需è¦æ•´æ•°è¡¨è¾¾å¼"
+msgstr "%s: 需è¦æ•´æ•°è¡¨è¾¾å¼"
#: test.c:265
msgid "`)' expected"
-msgstr "需è¦â€œ)â€"
+msgstr "éœ€è¦ \")\""
#: test.c:267
#, c-format
msgid "`)' expected, found %s"
-msgstr "需è¦â€œ)â€ï¼Œå´æ‰¾åˆ° %s"
+msgstr "éœ€è¦ \")\",å´æ‰¾åˆ° %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
-msgstr "%s:需è¦äºŒå…ƒè¡¨è¾¾å¼"
+msgstr "%s: 需è¦äºŒå…ƒè¿ç®—符"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
-msgstr "%s:需è¦ä¸€å…ƒè¡¨è¾¾å¼"
+msgstr "%s: 需è¦ä¸€å…ƒè¿ç®—符"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
-msgstr "缺少 `]'"
+msgstr "缺少 \"]\""
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
-msgstr "è¯­æ³•é”™è¯¯ï¼šéœ€è¦ `%s'"
+msgstr "语法错误:未预期的 \"%s\""
#: trap.c:220
msgid "invalid signal number"
-msgstr "无效的信å·æ•°"
+msgstr "无效的信å·ç¼–å·"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "trap handler: 超出最大的 trap handler 层次 (%d)"
+msgstr "trap handler: 超出最大的 trap handler 层数 (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p"
+msgstr "run_pending_traps: 错误的 trap_list[%d] 值:%p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr "run_pending_traps: ä¿¡å·å¤„ç†å™¨æ˜¯ SIG_DFL,é‡æ–°å‘é€ %d (%s) 给自己"
+msgstr "run_pending_traps: ä¿¡å·å¤„ç†ç¨‹åºæ˜¯ SIG_DFL,é‡æ–°å‘é€ %d (%s) 给自己"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: é”™è¯¯çš„ä¿¡å· %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
-msgstr "“%sâ€å‡½æ•°å®šä¹‰å¯¼å…¥é”™è¯¯"
+msgstr "导入 \"%s\" 的函数定义时出错"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
-msgstr "shell 层次 (%d) 太高,é‡ç½®ä¸º 1"
+msgstr "shell 层数 (%d) 太高,é‡ç½®ä¸º 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: 当å‰ä½œç”¨åŸŸä¸­æ²¡æœ‰å‡½æ•°ä¸Šä¸‹æ–‡"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
-msgstr "%s:å˜é‡ä¸å¯èµ‹å€¼"
+msgstr "%s: å˜é‡ä¸å¯èµ‹å€¼"
+
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s: 无法从ä¸å…¼å®¹çš„类型继承值"
-#: variables.c:3475
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
-msgstr "%s:将整数赋值给å称引用"
+msgstr "%s: 将整数赋值给å称引用"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: 当å‰ä½œç”¨åŸŸä¸­æ²¡æœ‰å‡½æ•°ä¸Šä¸‹æ–‡"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s 的 exportstr 为空"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "%2$s 的 exportstr 中有无效的字符 %1$d"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
-msgstr "%s çš„ exportstr 中没有“=â€"
+msgstr "%s 的 exportstr 中没有 \"=\""
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: shell_variables 的头部ä¸æ˜¯å‡½æ•°ä¸Šä¸‹æ–‡"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: 没有 global_variables 上下文"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: shell_variables 的头部ä¸æ˜¯ä¸´æ—¶çŽ¯å¢ƒä½œç”¨åŸŸ"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
-msgstr "%s:%s:无法作为文件打开"
+msgstr "%s: %s: 无法作为 FILE 打开"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
-msgstr "%s:%s:追踪文件æ述符的值无效"
+msgstr "%s: %s: 跟踪文件æ述符的值无效"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
-msgstr "%s:%s:兼容版本数值越界"
+msgstr "%s: %s: 兼容性的值超出范围"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "版æƒæ‰€æœ‰ (C) 2020 自由软件基金会"
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 自由软件基金会"
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
-msgstr "许å¯è¯ GPLv3+: GNU GPL 许å¯è¯ç¬¬ä¸‰ç‰ˆæˆ–者更新版本 <http://gnu.org/licenses/gpl.html>\n"
+msgstr "许å¯è¯ GPLv3+:GNU GPL 许å¯è¯ç¬¬ä¸‰ç‰ˆæˆ–者更新版本 <http://gnu.org/licenses/gpl.html>\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2246,22 +2221,22 @@ msgstr "在法律许å¯çš„情况下特此明示,本软件ä¸æ供任何担ä¿
#: xmalloc.c:93
#, c-format
msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%sï¼šæ— æ³•åˆ†é… %lu 字节 (å·²åˆ†é… %lu 字节)"
+msgstr "%s: æ— æ³•åˆ†é… %lu å­—èŠ‚ï¼ˆå·²åˆ†é… %lu 字节)"
#: xmalloc.c:95
#, c-format
msgid "%s: cannot allocate %lu bytes"
-msgstr "%sï¼šæ— æ³•åˆ†é… %lu 字节"
+msgstr "%s: æ— æ³•åˆ†é… %lu 字节"
#: xmalloc.c:165
#, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s:%s:%dï¼šæ— æ³•åˆ†é… %lu 字节 (å·²åˆ†é… %lu 字节)"
+msgstr "%s: %s:%d: æ— æ³•åˆ†é… %lu å­—èŠ‚ï¼ˆå·²åˆ†é… %lu 字节)"
#: xmalloc.c:167
#, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "%s:%s:%dï¼šæ— æ³•åˆ†é… %lu 字节"
+msgstr "%s: %s:%d: æ— æ³•åˆ†é… %lu 字节"
#: builtins.c:45
msgid "alias [-p] [name[=value] ... ]"
@@ -2285,7 +2260,7 @@ msgstr "continue [n]"
#: builtins.c:60
msgid "builtin [shell-builtin [arg ...]]"
-msgstr "builtin [shell 内建 [å‚æ•° ...]]"
+msgstr "builtin [shell-内建 [å‚æ•° ...]]"
#: builtins.c:63
msgid "caller [expr]"
@@ -2304,16 +2279,16 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] 命令 [å‚æ•° ...]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [å称[=值] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [å称[=值] ...] 或 declare -p [-aAfFilnrtux] [å称 ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] å称[=值] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] å称[=值] ... 或 typeset -p [-aAfFilnrtux] [å称 ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
-msgstr "local [option] å称[=值] ..."
+msgstr "local [选项] å称[=值] ..."
#: builtins.c:85
msgid "echo [-neE] [arg ...]"
@@ -2349,15 +2324,15 @@ msgstr "logout [n]"
#: builtins.c:105
msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr "fc [-e 编辑器å] [-lnr] [起始] [终结] 或 fc -s [模å¼=替æ¢ä¸²] [命令]"
+msgstr "fc [-e 编辑器å] [-lnr] [起始] [终止] 或 fc -s [模å¼=替æ¢ä¸²] [命令]"
#: builtins.c:109
msgid "fg [job_spec]"
-msgstr "fg [任务声明]"
+msgstr "fg [任务说明符]"
#: builtins.c:113
msgid "bg [job_spec ...]"
-msgstr "bg [任务声明 ...]"
+msgstr "bg [任务说明符 ...]"
#: builtins.c:116
msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
@@ -2373,15 +2348,15 @@ msgstr "history [-c] [-d å移é‡] [n] 或 history -anrw [文件å] 或 histor
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [任务声明 ...] 或 jobs -x 命令 [å‚æ•°]"
+msgstr "jobs [-lnprs] [任务说明符 ...] 或 jobs -x 命令 [å‚æ•°]"
#: builtins.c:131
msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
-msgstr "disown [-h] [-ar] [任务声明 ... | pid ...]"
+msgstr "disown [-h] [-ar] [任务说明符 ... | pid ...]"
#: builtins.c:134
msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
-msgstr "kill [-s ä¿¡å·å£°æ˜Ž | -n ä¿¡å·ç¼–å· | -ä¿¡å·å£°æ˜Ž] è¿›ç¨‹å· | 任务声明 ... 或 kill -l [ä¿¡å·å£°æ˜Ž]"
+msgstr "kill [-s ä¿¡å·è¯´æ˜Žç¬¦ | -n ä¿¡å·ç¼–å· | -ä¿¡å·è¯´æ˜Žç¬¦] pid | 任务说明符 ... 或 kill -l [ä¿¡å·è¯´æ˜Žç¬¦]"
#: builtins.c:136
msgid "let arg [arg ...]"
@@ -2389,15 +2364,15 @@ msgstr "let å‚æ•° [å‚æ•° ...]"
#: builtins.c:138
msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
-msgstr "read [-ers] [-a 数组] [-d 分隔符] [-i 缓冲区文字] [-n 读å–字符数] [-N 读å–字符数] [-p æ示符] [-t 超时] [-u 文件æ述符] [å称 ...]"
+msgstr "read [-ers] [-a 数组] [-d 分隔符] [-i 文本] [-n 字符数] [-N 字符数] [-p æ示符] [-t 超时] [-u fd] [å称 ...]"
#: builtins.c:140
msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [--abefhkmnptuvxBCHP] [-o 选项å] [--] [å‚æ•° ...]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o 选项å] [--] [-] [å‚æ•° ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2437,15 +2412,15 @@ msgstr "[ å‚æ•°... ]"
#: builtins.c:166
msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr "trap [-lp] [[å‚æ•°] ä¿¡å·å£°æ˜Ž ...]"
+msgstr "trap [-lp] [[å‚æ•°] ä¿¡å·è¯´æ˜Žç¬¦ ...]"
#: builtins.c:168
msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] å称 [å称 ...]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [é™åˆ¶]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [é™åˆ¶]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2453,11 +2428,11 @@ msgstr "umask [-p] [-S] [模å¼]"
#: builtins.c:177
msgid "wait [-fn] [-p var] [id ...]"
-msgstr "wait [-fn] [-p å˜é‡] [ç¼–å· ...]"
+msgstr "wait [-fn] [-p å˜é‡] [id ...]"
#: builtins.c:181
msgid "wait [pid ...]"
-msgstr "wait [è¿›ç¨‹å· ...]"
+msgstr "wait [pid ...]"
#: builtins.c:184
msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
@@ -2469,27 +2444,27 @@ msgstr "for (( 表达å¼1; 表达å¼2; 表达å¼3 )); do 命令; done"
#: builtins.c:188
msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr "select NAME [in è¯è¯­ ... ;] do 命令; done"
+msgstr "select å称 [in è¯è¯­ ... ;] do 命令; done"
#: builtins.c:190
msgid "time [-p] pipeline"
-msgstr "time [-p] 管é“"
+msgstr "time [-p] æµæ°´çº¿"
#: builtins.c:192
msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr "case è¯ in [æ¨¡å¼ [| 模å¼]...) 命令 ;;]... esac"
+msgstr "case è¯è¯­ in [æ¨¡å¼ [| 模å¼]...) 命令 ;;]... esac"
#: builtins.c:194
msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
msgstr "if 命令; then 命令; [ elif 命令; then 命令; ]... [ else 命令; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while 命令; do 命令; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while 命令; do 命令-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until 命令; do 命令; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until 命令; do 命令-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -2505,7 +2480,7 @@ msgstr "{ 命令 ; }"
#: builtins.c:206
msgid "job_spec [&]"
-msgstr "job_spec [&]"
+msgstr "任务说明符 [&]"
#: builtins.c:208
msgid "(( expression ))"
@@ -2540,16 +2515,12 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] æ ¼å¼ [å‚æ•°]"
#: builtins.c:231
-#, fuzzy
-#| msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
-msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o 选项] [-A 动作] [-G 全局模å¼] [-W è¯è¯­åˆ—表] [-F 函数] [-C 命令] [-X 过滤模å¼] [-P å‰ç¼€] [-S åŽç¼€] [å称 ...]"
+msgstr "complete [-abcdefgjksuv] [-pr] [-DEI] [-o 选项] [-A 动作] [-G 全局模å¼] [-W è¯è¯­åˆ—表] [-F 函数] [-C 命令] [-X 过滤模å¼] [-P å‰ç¼€] [-S åŽç¼€] [å称 ...]"
#: builtins.c:235
-#, fuzzy
-#| msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr "compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模å¼] [-W è¯è¯­åˆ—表] [-F 函数] [-C 命令] [-X 过滤模å¼] [-P å‰ç¼€] [-S åŽç¼€] [è¯è¯­]"
+msgstr "compgen [-abcdefgjksuv] [-o 选项] [-A 动作] [-G 全局模å¼] [-W è¯è¯­åˆ—表] [-F 函数] [-C 命令] [-X 过滤模å¼] [-P å‰ç¼€] [-S åŽç¼€] [è¯è¯­]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
@@ -2557,11 +2528,11 @@ msgstr "compopt [-o|+o 选项] [-DEI] [å称 ...]"
#: builtins.c:242
msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
-msgstr "mapfile [-d 分隔符] [-n 计数] [-O 起始åºå·] [-s 计数] [-t] [-u fd] [-C 回调] [-c é‡å­] [数组]"
+msgstr "mapfile [-d 分隔符] [-n 计数] [-O 起始] [-s 计数] [-t] [-u fd] [-C 回调] [-c 间隔] [数组]"
#: builtins.c:244
msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
-msgstr "readarray [-d 定界符] [-n 计数] [-O 起始åºå·] [-s 计数] [-t] [-u fd] [-C 回调] [-c é‡å­] [数组]"
+msgstr "readarray [-d 分隔符] [-n 计数] [-O 起始] [-s 计数] [-t] [-u fd] [-C 回调] [-c 间隔] [数组]"
#: builtins.c:256
msgid ""
@@ -2583,18 +2554,18 @@ msgid ""
msgstr ""
"定义或显示别å。\n"
" \n"
-" ä¸å¸¦å‚数时,`alias' 以å¯é‡ç”¨çš„æ ¼å¼\n"
-" `alias å称=值'在标准输出设备上打å°åˆ«å列表。\n"
+" ä¸å¸¦å‚数时,\"alias\" 以å¯é‡ç”¨çš„æ ¼å¼ \"alias å称=值\" 将别å列表\n"
+" 打å°åˆ°æ ‡å‡†è¾“出。\n"
" \n"
-" å¦åˆ™ï¼Œå¯¹äºŽæ¯ä¸ªç»™å®šå€¼çš„å称定义一个别å。\n"
-" 值末尾的空格会使下一个è¯è¢«æ£€æµ‹ä½œä¸ºåˆ«å替æ¢å±•å¼€ã€‚\n"
+" å¦åˆ™ï¼Œå¯¹äºŽæ¯ä¸€ä¸ªç»™å‡ºäº† <值> çš„ <å称> 定义一个别å。如果 <值> çš„\n"
+" 末尾是空格,那么在展开该别ååŽï¼Œè¿˜ä¼šç»§ç»­æ£€æŸ¥ä¸‹ä¸€ä¸ªè¯æ˜¯å¦å¯ä»¥\n"
+" 进行别å替æ¢ã€‚\n"
" \n"
" 选项:\n"
-" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°æ‰€æœ‰çš„已定义的别å\n"
+" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°æ‰€æœ‰å·²å®šä¹‰çš„别å\n"
" \n"
" 退出状æ€ï¼š\n"
-" 除éžä¸€ä¸ªæ²¡æœ‰å®šä¹‰çš„å字被作为å‚æ•°æ供,å¦åˆ™ alias \n"
-" 返回值为真。"
+" alias 返回真,除éžæ供了一个尚未定义别åçš„ <å称>。"
#: builtins.c:278
msgid ""
@@ -2605,12 +2576,12 @@ msgid ""
" \n"
" Return success unless a NAME is not an existing alias."
msgstr ""
-"从别å定义列表中删除æ¯ä¸€ä¸ªâ€œåå­—â€ã€‚\n"
+"从已定义的别å列表中删除æ¯ä¸€ä¸ª <å称>。\n"
" \n"
" 选项:\n"
" -a\t删除所有的别å定义\n"
" \n"
-" 返回æˆåŠŸï¼Œé™¤éžâ€œåå­—â€ä¸æ˜¯ä¸€ä¸ªå·²å­˜åœ¨çš„别å。"
+" 返回æˆåŠŸï¼Œé™¤éž <å称> ä¸æ˜¯ä¸€ä¸ªå·²å­˜åœ¨çš„别å。"
#: builtins.c:291
msgid ""
@@ -2651,30 +2622,31 @@ msgstr ""
"设定 Readline 键绑定和å˜é‡ã€‚\n"
" \n"
" 绑定一个键åºåˆ—到一个 Readline 函数或者å®ï¼Œæˆ–者设定一个\n"
-" Readline å˜é‡ã€‚éžé€‰é¡¹å‚数的语法和 ~/.inputrc 文件中的等\n"
-" åŒï¼Œä½†æ˜¯å¿…须作为一个å‚数被传递,\n"
-" 例如,bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
+" Readline å˜é‡ã€‚éžé€‰é¡¹å‚数的语法和 ~/.inputrc 文件的语法相åŒï¼Œ\n"
+" 但是必须以å•ä¸€å‚æ•°çš„å½¢å¼ä¼ é€’ç»™ bind,\n"
+" 例如,bind '\"\\C-x\\C-r\": re-read-init-file'。\n"
" \n"
" 选项:\n"
-" -m 键映射 在此命令执行过程中使用指定的键映射。\n"
-" å¯è¢«æŽ¥å—的键映射å字有 emacsã€emacs-standardã€emacs-metaã€\n"
-" emacs-ctlxã€viã€vi-moveã€vi-commandã€å’Œ vi-insert。\n"
-" -l 列出函数å称。\n"
-" -P 列出函数å称和绑定。\n"
-" -p 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出函数å称和绑定。\n"
-" -S 列出å¯ä»¥å¯åŠ¨å®çš„é”®åºåˆ—以åŠå®ƒä»¬çš„值\n"
-" -s 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å¯ä»¥å¯åŠ¨å®çš„键以åŠå®ƒä»¬çš„值。\n"
-" -V 列出å˜é‡åæˆå’Œå®ƒä»¬çš„值\n"
-" -v 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å˜é‡çš„å称和它们的值\n"
-" -q 函数å 查询指定的函数å¯ä»¥ç”±å“ªäº›é”®å¯åŠ¨ã€‚\n"
-" -u 函数å å绑定所有绑定至指定函数的键。\n"
-" -r é”®åºåˆ— å–消指定键åºåˆ—的绑定。\n"
-" -f 文件å 从指定文件中读å–键绑定。\n"
-" -x é”®åºåˆ—:shell命令\t当指定的键åºåˆ—被输入时,执行指定的 shell 命令。\n"
-" -X 以å¯è¢«é‡ç”¨çš„å½¢å¼åˆ—出用 -x 绑定的键åºåˆ—和命令。\n"
+" -m 键映射 在此命令执行过程中使用指定的 <键映射>。å¯è¢«æŽ¥å—çš„\n"
+" 键映射å称有 emacsã€emacs-standardã€emacs-metaã€\n"
+" emacs-ctlxã€viã€vi-moveã€vi-command å’Œ vi-insert。\n"
+" -l 列出函数å称。\n"
+" -P 列出函数å称和绑定。\n"
+" -p 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出函数å称和绑定。\n"
+" -S 列出å¯ä»¥å¯åŠ¨å®çš„é”®åºåˆ—以åŠå®ƒä»¬çš„值。\n"
+" -s 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å¯ä»¥å¯åŠ¨å®çš„é”®åºåˆ—\n"
+" 以åŠå®ƒä»¬çš„值。\n"
+" -V 列出å˜é‡å称以åŠå®ƒä»¬çš„值。\n"
+" -v 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出å˜é‡å称以åŠå®ƒä»¬çš„值。\n"
+" -q 函数å 查询指定的函数å¯ä»¥ç”±å“ªäº›é”®å¯åŠ¨ã€‚\n"
+" -u 函数å 解除绑定所有绑定至指定函数的键。\n"
+" -r é”®åºåˆ— å–消 <é”®åºåˆ—> 的绑定。\n"
+" -f 文件å 从 <文件å> 中读å–键绑定。\n"
+" -x é”®åºåˆ—:shell-命令\t当 <é”®åºåˆ—> 被输入时,执行 <shell-命令>。\n"
+" -X 以å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼åˆ—出用 -x 绑定的键åºåˆ—和命令。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 除éžä½¿ç”¨äº†æ— æ³•è¾¨è®¤çš„选项或者错误å‘生,å¦åˆ™è¿”回0."
+" bind 返回 0,除éžä½¿ç”¨äº†æ— æ³•è¯†åˆ«çš„选项,或者有错误å‘生。"
#: builtins.c:330
msgid ""
@@ -2686,13 +2658,13 @@ msgid ""
" Exit Status:\n"
" The exit status is 0 unless N is not greater than or equal to 1."
msgstr ""
-"退出 forã€while 或 until 循环\n"
+"退出 forã€while 或 until 循环。\n"
" \n"
-" 退出一个 FORã€WHILE 或 UNTIL 循环。如果指定了N,则跳出Né‡\n"
-" 循环\n"
+" 退出一个 FORã€WHILE 或 UNTIL 循环。如果指定了 N,则跳出\n"
+" 从里往外数共 N é‡å¾ªçŽ¯ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 退出状æ€ä¸º0é™¤éž N ä¸å¤§äºŽæˆ–等于 1。"
+" 退出状æ€ä¸º 0ï¼Œé™¤éž N ä¸å¤§äºŽç­‰äºŽ 1。"
#: builtins.c:342
msgid ""
@@ -2706,11 +2678,11 @@ msgid ""
msgstr ""
"继续 forã€while 或 until 循环。\n"
" \n"
-" ç»§ç»­å½“å‰ FORã€WHILE 或 UNTIL 循环的下一步。\n"
-" 如果指定了 N, 则继续当å‰çš„第 N é‡å¾ªçŽ¯ã€‚\n"
+" ç»§ç»­è¿›è¡Œå½“å‰ FORã€WHILE 或 UNTIL 循环的下一次迭代。\n"
+" 如果指定了 N, 则继续进行从里往外数第 N é‡å¾ªçŽ¯çš„下一次迭代。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 退出状æ€ä¸º 0 é™¤éž N ä¸å¤§äºŽæˆ–等于1。"
+" 退出状æ€ä¸º 0ï¼Œé™¤éž N ä¸å¤§äºŽç­‰äºŽ 1。"
#: builtins.c:354
msgid ""
@@ -2726,13 +2698,13 @@ msgid ""
msgstr ""
"执行 shell 内建。\n"
" \n"
-" 带å‚æ•° ARGs 执行 SHELL-BUILTIN 内建,并且ä¸åšå‘½ä»¤æŸ¥è¯¢\n"
-" 在希望以 shell 函数的形å¼æ¥é‡æ–°å®žçŽ° shell 内建,\n"
-" 并且希望在函数之内执行该 shell 内建的情况下有用处。\n"
+" 带 <å‚æ•°> 执行 <shell-内建>,并且跳过命令查找æµç¨‹ã€‚在希望以 shell 函数\n"
+" çš„å½¢å¼é‡æ–°å®žçŽ° shell 内建,并且希望在该函数中执行该 shell 内建的情况下\n"
+" 很有用。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 以 SHELL-BUILTIN 内建的退出状æ€ä¸ºå‡†ï¼Œæˆ–者如果 SHELL-BUILTIN ä¸æ˜¯ä¸€ä¸ª\n"
-" shell 内建时为å‡ã€‚"
+" 返回 <shell-内建> 的退出状æ€ï¼Œæˆ–者如果 <shell-内建> ä¸æ˜¯ä¸€ä¸ª shell 内建\n"
+" 时返回å‡ã€‚"
#: builtins.c:369
msgid ""
@@ -2749,18 +2721,16 @@ msgid ""
" Returns 0 unless the shell is not executing a shell function or EXPR\n"
" is invalid."
msgstr ""
-"返回当å‰å­è°ƒç”¨çš„上下文。\n"
+"返回当å‰å­ä¾‹ç¨‹è°ƒç”¨çš„上下文。\n"
" \n"
-" ä¸å¸¦æœ‰ EXPR 时,返回 \"$line $filename\"。带有 EXPR 时,返回\n"
-" \"$line $subroutine $filename\";这个é¢å¤–çš„ä¿¡æ¯å¯ä»¥è¢«ç”¨äºŽæä¾›\n"
-" 栈追踪。\n"
+" ä¸å¸¦æœ‰ <表达å¼> 时,返回 \"$line $filename\"。带有 <表达å¼> 时,\n"
+" 返回 \"$line $subroutine $filename\";这个é¢å¤–çš„ä¿¡æ¯å¯ä»¥ç”¨æ¥æä¾›\n"
+" 栈跟踪 (stack trace)。\n"
" \n"
-" EXPR 的值 显示了到当å‰è°ƒç”¨å¸§éœ€è¦å›žåŽ»å¤šå°‘个调用帧;顶部帧\n"
-" 是第 0 帧。\n"
+" <表达å¼> 的值表示从当å‰è°ƒç”¨å¸§éœ€è¦å›žåŽ»å¤šå°‘个调用帧;栈顶帧是第 0 帧。\n"
" \n"
" 退出状æ€ï¼š\n"
-" é™¤éž shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ª shell 函数或者 EXPR 无效,å¦åˆ™è¿”回结\n"
-" 果为0。"
+" 返回 0ï¼Œé™¤éž shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ª shell 函数,或者 <表达å¼> 无效。"
#: builtins.c:387
msgid ""
@@ -2800,27 +2770,29 @@ msgid ""
msgstr ""
"æ”¹å˜ shell 工作目录。\n"
" \n"
-" 改å˜å½“å‰ç›®å½•è‡³ DIR 目录。默认的 DIR 目录是 shell å˜é‡ HOME\n"
-" 的值。\n"
+" 改å˜å½“å‰ç›®å½•è‡³ <目录>。默认的 <目录> 是 shell å˜é‡ HOME 的值。\n"
" \n"
-" å˜é‡ CDPATH 定义了å«æœ‰ DIR 的目录的æœç´¢è·¯å¾„,其中ä¸åŒçš„目录åç§°ç”±å†’å· (:)分隔。\n"
-" 一个空的目录å称表示当å‰ç›®å½•ã€‚如果è¦åˆ‡æ¢åˆ°çš„ DIR ç”±æ–œæ  (/) 开头,则 CDPATH\n"
-" ä¸ä¼šç”¨ä¸Šå˜é‡ã€‚\n"
+" å˜é‡ CDPATH 定义了æœç´¢å«æœ‰ <目录> 的目录的æœç´¢è·¯å¾„。CDPATH 中é¢å¤–çš„\n"
+" 目录åç§°ä»¥å†’å· (:) 隔开。空的 CDPATH 表示当å‰ç›®å½•ã€‚如果 <目录> 以\n"
+" æ–œæ  (/) 开头,则ä¸ä¼šä½¿ç”¨ CDPATH。\n"
" \n"
-" 如果路径找ä¸åˆ°ï¼Œå¹¶ä¸” shell 选项 `cdable_vars' 被设定,则å‚æ•°è¯è¢«å‡å®šä¸ºä¸€ä¸ª\n"
-" å˜é‡å。如果该å˜é‡æœ‰å€¼ï¼Œåˆ™å®ƒçš„值被当作 DIR 目录。\n"
+" 如果找ä¸åˆ°ç›®å½•ï¼Œå¹¶ä¸” shell 选项 \"cdable_vars\" 被设定,则å‡å®šå‚数是一个\n"
+" å˜é‡å。如果该å˜é‡æœ‰å€¼ï¼Œåˆ™å®ƒçš„值被当作 <目录>。\n"
" \n"
" 选项:\n"
-" -L\t强制跟éšç¬¦å·é“¾æŽ¥: åœ¨å¤„ç† `..' 之åŽè§£æž DIR 中的符å·é“¾æŽ¥ã€‚\n"
-" -P\t使用物ç†ç›®å½•ç»“构而ä¸è·Ÿéšç¬¦å·é“¾æŽ¥: åœ¨å¤„ç† `..' 之å‰è§£æž DIR 中的符å·é“¾æŽ¥ã€‚\n"
-" -e\t如果使用了 -P å‚数,但ä¸èƒ½æˆåŠŸç¡®å®šå½“å‰å·¥ä½œç›®å½•æ—¶ï¼Œè¿”回éžé›¶çš„返回值。\n"
-" -@\t在支æŒæ‹“展属性的系统上,将一个有这些属性的文件当作有文件属性的目录。\n"
+" -L\t强制跟éšç¬¦å·é“¾æŽ¥: åœ¨å¤„ç† \"..\" 之åŽè§£æž <目录> 中的符å·é“¾æŽ¥\n"
+" -P\t使用物ç†ç›®å½•ç»“构而ä¸è·Ÿéšç¬¦å·é“¾æŽ¥: åœ¨å¤„ç† \"..\" 之å‰\n"
+" \t\tè§£æž <目录> 中的符å·é“¾æŽ¥\n"
+" -e\t如果使用了 -P 选项,但无法æˆåŠŸç¡®å®šå½“å‰å·¥ä½œç›®å½•æ—¶ï¼Œä»¥éžé›¶çŠ¶æ€é€€å‡º\n"
+" -@\t在支æŒæ‰©å±•å±žæ€§çš„系统上,将一个具有扩展属性的文件当作\n"
+" \t\tå«æœ‰æ–‡ä»¶å±žæ€§çš„目录。\n"
" \n"
-" 默认情况下跟éšç¬¦å·é“¾æŽ¥ï¼Œå¦‚åŒæŒ‡å®š `-L'。\n"
-" `..' 使用移除å‘å‰ç›¸é‚»ç›®å½•åæˆå‘˜ç›´åˆ° DIR 开始或一个斜æ çš„æ–¹å¼å¤„ç†ã€‚\n"
+" 默认情况下,跟éšç¬¦å·é“¾æŽ¥ï¼Œæ­£å¦‚指定了 \"-L\" 一样。\n"
+" \"..\" 的处ç†æ–¹å¼æ˜¯ï¼Œç§»é™¤è·¯å¾„å中的上一个组æˆéƒ¨åˆ†ï¼Œä»¥ <目录> 的开头\n"
+" 或者斜æ ä¸ºç•Œé™ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 如果目录改å˜ï¼Œæˆ–在使用 -P 选项时 $PWD 修改æˆåŠŸæ—¶è¿”回 0,å¦åˆ™éžé›¶ã€‚"
+" 如果目录改å˜ï¼Œæˆ–在使用 -P 选项时 $PWD 修改æˆåŠŸï¼Œåˆ™è¿”回 0ï¼›å¦åˆ™è¿”回éžé›¶ã€‚"
#: builtins.c:425
msgid ""
@@ -2841,12 +2813,12 @@ msgstr ""
" \n"
" 选项:\n"
" -L\tæ‰“å° $PWD å˜é‡çš„值,如果它包å«äº†å½“å‰çš„工作目录\n"
-" -P\t打å°å½“å‰çš„物ç†è·¯å¾„,ä¸å¸¦æœ‰ä»»ä½•çš„符å·é“¾æŽ¥\n"
+" -P\t打å°å½“å‰çš„物ç†ç›®å½•ï¼Œè€Œä¸åŒ…å«ä»»ä½•çš„符å·é“¾æŽ¥\n"
" \n"
-" 默认情况下,`pwd' 的行为和带 `-L' 选项一致\n"
+" 默认情况下,\"pwd\" 的行为和给定了 \"-L\" 时一致。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 除éžä½¿ç”¨äº†æ— æ•ˆé€‰é¡¹æˆ–者当å‰ç›®å½•ä¸å¯è¯»ï¼Œå¦åˆ™è¿”回状æ€ä¸º0。"
+" 返回 0,除éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者无法读å–当å‰ç›®å½•ã€‚"
#: builtins.c:442
msgid ""
@@ -2871,7 +2843,7 @@ msgid ""
" Exit Status:\n"
" Always succeeds."
msgstr ""
-"返回一个æˆåŠŸç»“果。\n"
+"返回一个æˆåŠŸçš„结果。\n"
" \n"
" 退出状æ€ï¼š\n"
" 总是æˆåŠŸã€‚"
@@ -2907,56 +2879,18 @@ msgid ""
msgstr ""
"执行一个简å•å‘½ä»¤æˆ–者显示命令的相关信æ¯ã€‚\n"
" \n"
-" 带 ARGS å‚æ•°è¿è¡Œ COMMAND 命令且抑制 shell 函数查询,或显示\n"
-" 指定的 COMMAND 命令的信æ¯ã€‚å¯ä»¥åœ¨å­˜åœ¨ç›¸åŒå称的函数定义的\n"
-" 情况下用于å¯åŠ¨ç£ç›˜ä¸Šçš„命令。\n"
+" 带 <å‚æ•°> è¿è¡Œ <命令> 且阻止 shell 函数查找æµç¨‹ï¼Œæˆ–显示指定的 <命令>\n"
+" çš„ä¿¡æ¯ã€‚å¯ä»¥åœ¨å·²å­˜åœ¨åŒå函数的情况下用于å¯åŠ¨ç£ç›˜ä¸Šçš„命令。\n"
" \n"
" 选项:\n"
-" -p\t使用 PATH å˜é‡çš„一个默认值以确ä¿æ‰€æœ‰çš„标准工具都能被找到。\n"
-" -v\tæ‰“å° COMMAND 命令的æ述,和 `type' 内建相似\n"
-" -V\t打å°æ¯ä¸ª COMMAND 命令的详细æè¿°\n"
+" -p 使用 PATH å˜é‡çš„一个默认值,以确ä¿æ‰€æœ‰çš„标准工具都能被找到\n"
+" -v æ‰“å° <命令> çš„æ述,和 \"type\" 内建相似\n"
+" -V 打å°æ¯ä¸ª <命令> 的更详细的æè¿°\n"
" \n"
-" 退出状æ€\n"
-" 返回 COMMAND 命令的返回状æ€ï¼Œæˆ–者当找ä¸åˆ° COMMAND 命令时失败。"
+" 退出状æ€ï¼š\n"
+" 返回 <命令> 的退出状æ€ï¼Œæˆ–者当找ä¸åˆ° <命令> 时则返回失败。"
#: builtins.c:490
-#, fuzzy
-#| msgid ""
-#| "Set variable values and attributes.\n"
-#| " \n"
-#| " Declare variables and give them attributes. If no NAMEs are given,\n"
-#| " display the attributes and values of all variables.\n"
-#| " \n"
-#| " Options:\n"
-#| " -f\trestrict action or display to function names and definitions\n"
-#| " -F\trestrict display to function names only (plus line number and\n"
-#| " \t\tsource file when debugging)\n"
-#| " -g\tcreate global variables when used in a shell function; otherwise\n"
-#| " \t\tignored\n"
-#| " -p\tdisplay the attributes and value of each NAME\n"
-#| " \n"
-#| " Options which set attributes:\n"
-#| " -a\tto make NAMEs indexed arrays (if supported)\n"
-#| " -A\tto make NAMEs associative arrays (if supported)\n"
-#| " -i\tto make NAMEs have the `integer' attribute\n"
-#| " -l\tto convert the value of each NAME to lower case on assignment\n"
-#| " -n\tmake NAME a reference to the variable named by its value\n"
-#| " -r\tto make NAMEs readonly\n"
-#| " -t\tto make NAMEs have the `trace' attribute\n"
-#| " -u\tto convert the value of each NAME to upper case on assignment\n"
-#| " -x\tto make NAMEs export\n"
-#| " \n"
-#| " Using `+' instead of `-' turns off the given attribute.\n"
-#| " \n"
-#| " Variables with the integer attribute have arithmetic evaluation (see\n"
-#| " the `let' command) performed when the variable is assigned a value.\n"
-#| " \n"
-#| " When used in a function, `declare' makes NAMEs local, as with the `local'\n"
-#| " command. The `-g' option suppresses this behavior.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or a variable\n"
-#| " assignment error occurs."
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2996,38 +2930,38 @@ msgid ""
" Returns success unless an invalid option is supplied or a variable\n"
" assignment error occurs."
msgstr ""
-"设定å˜é‡å€¼å’Œå±žæ€§ã€‚\n"
+"设定å˜é‡çš„值和属性。\n"
" \n"
-" 声明å˜é‡å¹¶ä¸”赋予它们属性。如果没有给定å称,\n"
+" 声明å˜é‡å¹¶ä¸”赋予它们属性。如果没有给定 <å称>,\n"
" 则显示所有å˜é‡çš„属性和值。\n"
" \n"
" 选项:\n"
-" -f\té™åˆ¶åŠ¨ä½œæˆ–显示为仅函数å称和定义\n"
-" -F\té™åˆ¶ä»…显示函数å称 (以åŠè°ƒè¯•æ—¶æ˜¾ç¤ºè¡Œå·å’Œæºæ–‡ä»¶å)\n"
-" -g\t当用于 shell 函数内时创建全局å˜é‡; å¦åˆ™å¿½ç•¥\n"
-" -p\t显示æ¯ä¸ª NAME å˜é‡çš„属性和值\n"
+" -f\té™åˆ¶ä»…æ“作或显示函数的å称和定义\n"
+" -F\té™åˆ¶ä»…显示函数å称(以åŠè°ƒè¯•æ—¶æ˜¾ç¤ºè¡Œå·å’Œæºæ–‡ä»¶å)\n"
+" -g\t在 shell 函数内部使用时创建全局å˜é‡ï¼›å¦åˆ™å¿½ç•¥\n"
+" -I\t当创建局部å˜é‡æ—¶ï¼Œç»§æ‰¿ä¸Šä¸€ä¸ªä½œç”¨åŸŸçš„åŒåå˜é‡çš„属性和值\n"
+" -p\t显示æ¯ä¸ª <å称> 的属性和值\n"
" \n"
" 设定属性的选项:\n"
-" -a\t使 NAME æˆä¸ºä¸‹æ ‡æ•°ç»„ (如果支æŒ)\n"
-" -A\t使 NAME æˆä¸ºå…³è”数组 (如果支æŒ)\n"
-" -i\t使 NAME 带有 `integer' (整数)属性\n"
-" -l\tå°† NAME 在赋值时转为å°å†™\n"
-" -n\t使 NAME æˆä¸ºæŒ‡å‘一个以其值为å称的å˜é‡çš„引用\n"
-" -r\tå°† NAME å˜ä¸ºåªè¯»\n"
-" -t\t使 NAME 带有 `trace' (追踪)属性\n"
-" -u\tå°†æ¯ä¸ª NAME 在赋值时转为大写\n"
-" -x\t将 NAME 导出\n"
+" -a\t使 <å称> æˆä¸ºç´¢å¼•æ•°ç»„(如果支æŒï¼‰\n"
+" -A\t使 <å称> æˆä¸ºå…³è”数组(如果支æŒï¼‰\n"
+" -i\t使 <å称> 带有 \"æ•´æ•°\" (integer) 属性\n"
+" -l\tå°† <å称> 的值在赋值时转æ¢ä¸ºå°å†™\n"
+" -n\t使 <å称> æˆä¸ºä¸€ä¸ªå¯¹ä»¥å®ƒçš„值为å称的å˜é‡çš„引用\n"
+" -r\tå°† <å称> å˜ä¸ºåªè¯»\n"
+" -t\t使 <å称> 带有 \"跟踪\" (trace) 属性\n"
+" -u\t使 <å称> 的值在赋值时转æ¢ä¸ºå¤§å†™\n"
+" -x\tå°† <å称> 导出\n"
" \n"
-" 用 `+' 代替 `-' 会关闭指定选项。\n"
+" 用 \"+\" 代替 \"-\" 会关闭指定的属性。\n"
" \n"
-" 带有整数属性的å˜é‡åœ¨èµ‹å€¼æ—¶å°†ä½¿ç”¨ç®—术估值(è§\n"
-" `let' 命令)\n"
+" 带有 \"æ•´æ•°\" 属性的å˜é‡è¢«èµ‹å€¼æ—¶å°†ä½¿ç”¨ç®—æœ¯æ±‚å€¼ï¼ˆè§ \"let\" 命令)。\n"
" \n"
-" 在函数中使用时,`declare' 使 NAME æˆä¸ºæœ¬åœ°å˜é‡ï¼Œå’Œ `local'\n"
-" 命令一致。`-g' 选项抑制此行为。\n"
+" 在函数中使用时,\"declare\" 使 <å称> æˆä¸ºå±€éƒ¨å˜é‡ï¼Œå’Œ \"local\"\n"
+" 命令一致。\"-g\" 选项阻止此行为。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžæ供了无效选项或者å‘生å˜é‡èµ‹å€¼é”™è¯¯ã€‚"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者å‘生å˜é‡èµ‹å€¼é”™è¯¯ã€‚"
#: builtins.c:532
msgid ""
@@ -3035,9 +2969,9 @@ msgid ""
" \n"
" A synonym for `declare'. See `help declare'."
msgstr ""
-"设置å˜é‡çš„值和属性。\n"
+"设定å˜é‡çš„值和属性。\n"
" \n"
-" `declare' 的等价形å¼ã€‚å‚è§ `help declare'。"
+" åŒ \"declare\"。å‚è§ \"help declare\"。"
#: builtins.c:540
msgid ""
@@ -3053,17 +2987,18 @@ msgid ""
" Returns success unless an invalid option is supplied, a variable\n"
" assignment error occurs, or the shell is not executing a function."
msgstr ""
-"定义本地å˜é‡ã€‚\n"
+"定义局部å˜é‡ã€‚\n"
" \n"
-" 创建一个以 NAME 为å称的å˜é‡ï¼Œå¹¶ä¸”å°† VALUE 赋值给它。\n"
-" OPTION 选项å¯ä»¥æ˜¯ä»»ä½•èƒ½è¢« `declare' 接å—的选项。\n"
+" 创建一个å为 <å称> çš„å˜é‡ï¼Œå¹¶ä¸”å°† <值> 赋给它。<选项> å¯ä»¥æ˜¯ä»»ä½•\n"
+" 能被 \"declare\" 接å—的选项。\n"
" \n"
-" 本地å˜é‡åªèƒ½åœ¨å‡½æ•°å†…部被使用,它们åªèƒ½åœ¨å®šä¹‰å®ƒä»¬çš„函数内\n"
-" 部以åŠå­å‡½æ•°ä¸­å¯è§ã€‚\n"
+" 局部å˜é‡åªèƒ½åœ¨å‡½æ•°å†…部使用,它们åªå¯¹å®šä¹‰å®ƒä»¬çš„函数åŠå…¶å­å‡½æ•°å¯è§ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项ã€å‘生了赋值错误或者 shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ªå‡½æ•°ã€‚"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项ã€å‘生了赋值错误,或者 shell ä¸åœ¨\n"
+" 执行一个函数。"
+# 此字符串å¯ä»¥å¾ˆå¥½åœ°æµ‹è¯•å„个 po 编辑器对转义字符的支æŒæ˜¯å¦æœ‰ bug(手动斜眼)。poedit(至少在 <=3.0.1 版本中)对 \a 的处ç†å­˜åœ¨ bug,如果你修改了这æ¡ç¿»è¯‘,请用纯文本编辑器检查一下 msgstr 里的 \a å‰é¢æ˜¯å¦æ˜¯ä¸¤ä¸ªåæ–œæ ã€‚就算你用的ä¸æ˜¯ poedit,也最好检查一下所有的转义字符,看看是ä¸æ˜¯å’Œ msgid 里的一致,如ä¸ä¸€è‡´è¯·ä¿®æ”¹ã€‚
#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
@@ -3102,33 +3037,34 @@ msgid ""
msgstr ""
"å°†å‚数写到标准输出。\n"
" \n"
-" 在标准输出上,显示用空格分割的 ARG å‚æ•°åŽè·Ÿä¸€ä¸ªæ¢è¡Œã€‚\n"
+" 在标准输出上显示 <å‚æ•°>,以空格隔开,åŽé¢è·Ÿä¸€ä¸ªæ¢è¡Œã€‚\n"
" \n"
" 选项:\n"
" -n\tä¸è¦è¿½åŠ æ¢è¡Œ\n"
-" -e\tå¯ç”¨ä¸‹åˆ—åæ–œæ è½¬ä¹‰çš„解释\n"
-" -E\t显å¼åœ°æŠ‘制对于åæ–œæ è½¬ä¹‰çš„解释\n"
+" -e\tå¯ç”¨å¯¹ä¸‹åˆ—åæ–œæ è½¬ä¹‰å­—符的解释\n"
+" -E\t显å¼åœ°é˜»æ­¢å¯¹åæ–œæ è½¬ä¹‰å­—符的解释\n"
" \n"
-" `echo' 对下列åæ–œæ å­—符进行转义:\n"
-" \a\t警告(å“铃)\n"
+" \"echo\" 对下列åæ–œæ è½¬ä¹‰å­—符进行解释:\n"
+" \\a\t警报(å“铃)\n"
" \\b\t退格\n"
-" \\c\t抑制更多的输出\n"
+" \\c\t阻止åŽç»­çš„输出\n"
" \\e\t转义字符\n"
-" \\f\tæ¢é¡µå­—符\n"
+" \\E\t转义字符\n"
+" \\f\tæ¢é¡µ\n"
" \\n\tæ¢è¡Œ\n"
" \\r\t回车\n"
-" \\t\t横å‘制表符\n"
-" \\v\t纵å‘制表符\n"
+" \\t\t水平制表符\n"
+" \\v\t垂直制表符\n"
" \\\\\tåæ–œæ \n"
-" \\0nnn\t以 NNN(八进制)为 ASCII ç çš„字符。NNN å¯ä»¥æ˜¯ 0 到 3 个八进制ä½\n"
-" \\xHH\t以 HH(å六进制)为值的八比特字符。HH å¯ä»¥æ˜¯ä¸€ä¸ªæˆ–两个å六进制ä½\n"
-" \\uHHHH\t以 HHHH(å六进制)为值的 Unicode 字符。HHHH å¯ä»¥æ˜¯ä¸€ä¸ªåˆ°\n"
-" \t\t四个å六进制ä½ã€‚\n"
-" \\UHHHHHHHH 以 HHHHHHHH(å六进制)为值的 Unicode 字符。\n"
-" \t\tHHHHHHHH å¯ä»¥æ˜¯ä¸€åˆ°å…«ä¸ªå六进制ä½ã€‚\n"
+" \\0nnn\tASCII ç ä¸º NNN(八进制)的字符。NNN å¯ä»¥æ˜¯ 0 至 3 ä½çš„八进制数。\n"
+" \\xHH\t值为 HH(å六进制)的 8 ä½å­—符。HH å¯ä»¥æ˜¯ä¸€è‡³ä¸¤ä½çš„å六进制数。\n"
+" \\uHHHH\t值为 HHHH(å六进制)的 Unicode 字符。HHHH å¯ä»¥æ˜¯ä¸€è‡³å››ä½çš„\n"
+" \t\tå六进制数。\n"
+" \\UHHHHHHHH 值为 HHHHHHHH(å六进制)的 Unicode 字符。\n"
+" \t\tHHHHHHHH å¯ä»¥æ˜¯ä¸€è‡³å…«ä½çš„å六进制数。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸé™¤éžæœ‰å†™é”™è¯¯å‘生。"
+" 返回æˆåŠŸï¼Œé™¤éžæœ‰å†™å…¥é”™è¯¯å‘生。"
#: builtins.c:597
msgid ""
@@ -3142,15 +3078,15 @@ msgid ""
" Exit Status:\n"
" Returns success unless a write error occurs."
msgstr ""
-"写å‚数至标准输出设备。\n"
+"å°†å‚数写到标准输出。\n"
" \n"
-" 在标准输出设备上显示 ARGs å‚数和一个æ¢è¡Œã€‚\n"
+" 在标准输出上显示 <å‚æ•°>,åŽé¢è·Ÿä¸€ä¸ªæ¢è¡Œã€‚\n"
" \n"
" 选项:\n"
-" -n\tä¸é™„加æ¢è¡Œ\n"
+" -n\tä¸è¦è¿½åŠ æ¢è¡Œ\n"
" \n"
" 退出状æ€ï¼š\n"
-" 除éžå†™é”™è¯¯å‘生,å¦åˆ™è¿”回æˆåŠŸã€‚"
+" 返回æˆåŠŸï¼Œé™¤éžæœ‰å†™å…¥é”™è¯¯å‘生。"
#: builtins.c:612
msgid ""
@@ -3180,27 +3116,26 @@ msgid ""
msgstr ""
"å¯ç”¨å’Œç¦ç”¨ shell 内建。\n"
" \n"
-" å¯ç”¨å’Œç¦ç”¨ shell 的内建命令。ç¦ç”¨ä½¿æ‚¨èƒ½å¤Ÿæ‰§è¡Œä¸€ä¸ªå’Œå†…建\n"
+" å¯ç”¨å’Œç¦ç”¨ shell 的内建命令。ç¦ç”¨å‘½ä»¤ä½¿æ‚¨èƒ½å¤Ÿæ‰§è¡Œå’Œå†…建\n"
" 命令åŒåçš„ç£ç›˜ä¸Šçš„命令,而无须使用完整的路径å。\n"
" \n"
-" \n"
" 选项:\n"
-" -a\t打å°ä¸€ä¸ªå†…建的列表,并显示其中æ¯ä¸€ä¸ªæ˜¯å¦å¯ç”¨\n"
-" -n\tç¦ç”¨æ¯ä¸€ä¸ª NAME 内建或者显示一个被ç¦ç”¨çš„内建的列表\n"
-" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°ä¸€ä¸ªå†…建的列表\n"
-" -s\t仅打å°Posix `special' 内建的å称\n"
+" -a\t打å°å†…建列表,并显示其中æ¯ä¸€ä¸ªæ˜¯å¦å¯ç”¨\n"
+" -n\tç¦ç”¨æ¯ä¸€ä¸ª <å称> 或者显示被ç¦ç”¨çš„内建的列表\n"
+" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°å†…建列表\n"
+" -s\tä»…æ‰“å° Posix \"特殊\" 内建的å称\n"
" \n"
" 控制动æ€åŠ è½½çš„选项:\n"
-" -f\t从共享对象 FILENAME 文件中加载 NAME 内建\n"
+" -f\t从共享对象 <文件å> 中加载 <å称> 内建\n"
" -d\t删除以 -f 选项加载的内建\n"
" \n"
-" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œæ¯ä¸€ä¸ª NAME 内建都被å¯ç”¨ã€‚\n"
+" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œå¯ç”¨æ¯ä¸€ä¸ª <å称>。\n"
" \n"
-" 如果è¦ä½¿ç”¨ $PATH 中找到的 `test' 而ä¸æ˜¯ shell 内建的版本,\n"
-" 输入 `enable -n test'。\n"
+" è¦ä½¿ç”¨ $PATH 中找到的 \"test\" 而ä¸æ˜¯ shell 内建的版本,\n"
+" 请输入 \"enable -n test\"。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éž NAME ä¸æ˜¯ä¸€ä¸ª shell 内建或者有错误å‘生。"
+" 返回æˆåŠŸï¼Œé™¤éž <å称> ä¸æ˜¯ä¸€ä¸ª shell 内建,或者有错误å‘生。"
#: builtins.c:640
msgid ""
@@ -3214,52 +3149,12 @@ msgid ""
msgstr ""
"å°†å‚数作为 shell 命令执行。\n"
" \n"
-" å°† ARGs åˆæˆä¸€ä¸ªå­—符串,用结果作为 shell 的输入,\n"
-" 并且执行得到的命令。\n"
+" å°† <å‚æ•°> 组åˆæˆä¸€ä¸ªå­—符串,用结果作为 shell 的输入,并执行得到的命令。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 以命令的状æ€é€€å‡ºï¼Œæˆ–者在命令为空的情况下返回æˆåŠŸã€‚"
+" 返回命令的退出状æ€ï¼Œæˆ–者在命令为空的情况下返回æˆåŠŸã€‚"
#: builtins.c:652
-#, fuzzy
-#| msgid ""
-#| "Parse option arguments.\n"
-#| " \n"
-#| " Getopts is used by shell procedures to parse positional parameters\n"
-#| " as options.\n"
-#| " \n"
-#| " OPTSTRING contains the option letters to be recognized; if a letter\n"
-#| " is followed by a colon, the option is expected to have an argument,\n"
-#| " which should be separated from it by white space.\n"
-#| " \n"
-#| " Each time it is invoked, getopts will place the next option in the\n"
-#| " shell variable $name, initializing name if it does not exist, and\n"
-#| " the index of the next argument to be processed into the shell\n"
-#| " variable OPTIND. OPTIND is initialized to 1 each time the shell or\n"
-#| " a shell script is invoked. When an option requires an argument,\n"
-#| " getopts places that argument into the shell variable OPTARG.\n"
-#| " \n"
-#| " getopts reports errors in one of two ways. If the first character\n"
-#| " of OPTSTRING is a colon, getopts uses silent error reporting. In\n"
-#| " this mode, no error messages are printed. If an invalid option is\n"
-#| " seen, getopts places the option character found into OPTARG. If a\n"
-#| " required argument is not found, getopts places a ':' into NAME and\n"
-#| " sets OPTARG to the option character found. If getopts is not in\n"
-#| " silent mode, and an invalid option is seen, getopts places '?' into\n"
-#| " NAME and unsets OPTARG. If a required argument is not found, a '?'\n"
-#| " is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-#| " printed.\n"
-#| " \n"
-#| " If the shell variable OPTERR has the value 0, getopts disables the\n"
-#| " printing of error messages, even if the first character of\n"
-#| " OPTSTRING is not a colon. OPTERR has the value 1 by default.\n"
-#| " \n"
-#| " Getopts normally parses the positional parameters ($0 - $9), but if\n"
-#| " more arguments are given, they are parsed instead.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success if an option is found; fails if the end of options is\n"
-#| " encountered or an error occurs."
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3301,41 +3196,37 @@ msgid ""
msgstr ""
"解æžé€‰é¡¹å‚数。\n"
" \n"
-" getopts 被 shell 过程用于解æžå¯å®šä½çš„å‚数作为选项。\n"
+" getopts å¯åœ¨ shell 过程中使用,将ä½ç½®å‚数解æžä¸ºé€‰é¡¹ã€‚\n"
" \n"
" \n"
-" OPTSTRING 字符串包å«å¾…识别的选项字æ¯ï¼›å¦‚果一个字æ¯åŽé¢è·Ÿ\n"
-" ç€åˆ†å·ï¼Œåˆ™è¯¥é€‰é¡¹éœ€è¦ä¸€ä¸ªå‚数,而该å‚数应用空格与选项分开。\n"
+" <选项字符串> 包å«å¾…识别的选项字æ¯ï¼›å¦‚果一个字æ¯åŽé¢è·Ÿç€ä¸€ä¸ªå†’å·ï¼Œ\n"
+" 则该选项需è¦ä¸€ä¸ªå‚数,å‚数与选项之间应当用空格隔开。\n"
" \n"
" \n"
-" æ¯æ¬¡å¯åŠ¨æ—¶ï¼Œgetopts 会将下一个选项放到 shell å˜é‡ $name\n"
-" 中,如果 name å˜é‡ä¸å­˜åœ¨åˆ™å…ˆå°†å…¶åˆå§‹åŒ–,而下一个待处\n"
-" ç†çš„å‚æ•°åºå·æ”¾å…¥ shell å˜é‡ OPTIND 中。OPTIND å˜é‡åœ¨æ¯\n"
-" 次 shell 或者 shell 脚本å¯åŠ¨æ—¶éƒ½è¢«åˆå§‹åŒ–为1。当一个选项è¦\n"
-" 求有一个å‚数时,getopts å°†å‚数放入 shell å˜é‡ OPTARG\n"
-" 中。\n"
+" æ¯æ¬¡è¢«è°ƒç”¨æ—¶ï¼Œgetopts 会将下一个选项放到 shell å˜é‡ $<å称> 中,\n"
+" 如果 <å称> å˜é‡ä¸å­˜åœ¨åˆ™å…ˆå°†å…¶åˆå§‹åŒ–,并将下一个待处ç†çš„å‚æ•°çš„åºå·\n"
+" 放入 shell å˜é‡ OPTIND 中。OPTIND å˜é‡åœ¨æ¯æ¬¡ shell 或者 shell 脚本\n"
+" å¯åŠ¨æ—¶éƒ½è¢«åˆå§‹åŒ–为 1。当一个选项è¦æ±‚有一个å‚数时,getopts 将该å‚æ•°\n"
+" 放入 shell å˜é‡ OPTARG 中。\n"
" \n"
-" getopts 有两ç§æŠ¥å‘Šé”™è¯¯çš„方法。如果 OPTSTRING å˜é‡çš„第\n"
-" 一个字符是冒å·ï¼Œgetopts 使用沉默错误报告。在这ç§æ¨¡å¼\n"
-" 下,ä¸ä¼šæ‰“å°é”™è¯¯æ¶ˆæ¯ã€‚如果看到了一个无效的选项,\n"
-" getopts 将找到的选项字符放至 OPTARG å˜é‡ä¸­ã€‚如果一个必\n"
-" 须的选项没有找到,getopts 放一个 ':' 到 NAME å˜é‡ä¸­å¹¶ä¸”设\n"
-" ç½® OPTARG å˜é‡ä¸ºæ‰¾åˆ°çš„选项字符。如果 getopts ä¸åœ¨æ²‰é»˜æ¨¡\n"
-" å¼ä¸­ï¼Œå¹¶ä¸”é‡åˆ°äº†ä¸€ä¸ªæ— æ•ˆçš„选项,getopts 放置一个 '?' 到 NAME \n"
-" å˜é‡ä¸­å¹¶ä¸”å–消设定 OPTARGå˜é‡ã€‚如果必须的选项没有找到,\n"
-" 一个'?'会被放入 NAMEå˜é‡ä¸­ï¼ŒOPTARG 将被å–消设定,并且会\n"
-" 打å°ä¸€ä¸ªè¯Šæ–­ä¿¡æ¯ã€‚\n"
+" getopts 有两ç§æŠ¥å‘Šé”™è¯¯çš„方法。如果 <选项字符串> 的第一个字符是\n"
+" 冒å·ï¼Œgetopts 使用沉默错误报告。在此模å¼ä¸‹ï¼Œä¸ä¼šæ‰“å°é”™è¯¯æ¶ˆæ¯ã€‚\n"
+" 如果é‡åˆ°äº†ä¸€ä¸ªæ— æ•ˆçš„选项,getopts 将找到的选项字符放入 OPTARG\n"
+" å˜é‡ä¸­ã€‚如果没有找到必需的å‚数,getopts 放置一个 \":\" 到 <å称>\n"
+" å˜é‡ä¸­ï¼Œå¹¶ä¸”å°† OPTARG å˜é‡è®¾ç½®ä¸ºæ‰¾åˆ°çš„选项字符。如果 getopts ä¸å¤„于\n"
+" 沉默模å¼ï¼Œå¹¶ä¸”é‡åˆ°äº†ä¸€ä¸ªæ— æ•ˆçš„选项,getopts 放置 \"?\" 到 <å称> å˜é‡\n"
+" 中并且å–消设定 OPTARG å˜é‡ã€‚如果没有找到必需的å‚数,一个 \"?\" 会被\n"
+" 放入 <å称> å˜é‡ä¸­ï¼ŒOPTARG 将被å–消设定,并且会打å°ä¸€ä¸ªè¯Šæ–­ä¿¡æ¯ã€‚\n"
" \n"
-" 如果 shell å˜é‡ OPTERR 的值为0,getopts ç¦ç”¨\n"
-" 错误信æ¯çš„打å°ï¼Œå³ä½¿ OPTSTRING å˜é‡çš„第一个字符ä¸æ˜¯ä¸€\n"
-" 个冒å·ã€‚OPTERR 的默认值为1.\n"
+" 如果 shell å˜é‡ OPTERR 的值为 0,getopts 会ç¦ç”¨é”™è¯¯ä¿¡æ¯çš„打å°ï¼Œ\n"
+" å³ä½¿ <选项字符串> 的第一个字符ä¸æ˜¯å†’å·ã€‚OPTERR 的默认值为 1。\n"
" \n"
-" getopts 通常解æžå¯å®šä½çš„å‚æ•°($0 - $9),ä¸è¿‡å¦‚æžœæ供了\n"
-" 更多的å‚数,它们å而会被解æžã€‚\n"
+" getopts 通常解æžä½ç½®å‚数,ä¸è¿‡å¦‚果在 <å‚æ•°> 中æ供了å‚数,则转而\n"
+" 解æžå®ƒä»¬ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 如果一个选项被找到则返回æˆåŠŸï¼›å¦‚æžœé‡åˆ°äº†é€‰é¡¹çš„结尾或者\n"
-" 有错误å‘生则返回失败。"
+" 如果找到了一个选项,则返回æˆåŠŸï¼›å¦‚æžœé‡åˆ°äº†é€‰é¡¹çš„末尾或者有错误å‘生,\n"
+" 则返回失败。"
#: builtins.c:694
msgid ""
@@ -3358,20 +3249,19 @@ msgid ""
msgstr ""
"ä½¿ç”¨æŒ‡å®šå‘½ä»¤æ›¿æ¢ shell。\n"
" \n"
-" 执行 COMMAND 命令,以指定的程åºæ›¿æ¢è¿™ä¸ª shell。\n"
-" ARGUMENTS å‚æ•°æˆä¸º COMMAND命令的å‚数。如果\n"
-" 没有指定COMMAND 命令,则任何的é‡å®šå‘åœ¨å½“å‰ shell 中生效。\n"
+" 执行 <命令>,以指定的程åºæ›¿æ¢è¿™ä¸ª shell。以 <å‚æ•°> 作为 <命令> çš„å‚数。\n"
+" 如果没有指定 <命令>,则任何的 <é‡å®šå‘> éƒ½åœ¨å½“å‰ shell 中生效。\n"
" \n"
" 选项:\n"
-" -a å称\t作为第0个å‚数传递给 COMMAND 命令\n"
-" -c\t\t在一个空环境中执行 COMMAND 命令\n"
-" -l\t\t在COMMAND 命令的第0个å‚数中加一个短线\n"
+" -a å称\tå°† <å称> 作为第 0 个å‚数传递给 <命令>\n"
+" -c\t在一个空的环境中执行 <命令>\n"
+" -l\t在 <命令> 的第 0 个å‚数中放置一个短横线 (-)\n"
" \n"
-" 如果命令ä¸èƒ½è¢«æ‰§è¡Œï¼Œåˆ™é€€å‡ºä¸€ä¸ªéžäº¤äº’å¼çš„ shell,除éž\n"
-" shell 选项`execfail' å·²ç»è®¾å®šã€‚\n"
+" 如果无法执行命令,则退出一个éžäº¤äº’å¼çš„ shell,除éžè®¾å®šäº† shell 选项\n"
+" \"execfail\"。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸé™¤éž COMMAND 命令没有找到或者出现一个é‡å®šå‘错误。"
+" 返回æˆåŠŸï¼Œé™¤éžæœªæ‰¾åˆ° <命令>,或者出现一个 <é‡å®šå‘> 错误。"
#: builtins.c:715
msgid ""
@@ -3380,10 +3270,10 @@ msgid ""
" Exits the shell with a status of N. If N is omitted, the exit status\n"
" is that of the last command executed."
msgstr ""
-"退出shell。\n"
+"退出 shell。\n"
" \n"
-" ä»¥çŠ¶æ€ N 退出 shell。 如果 N 被çœç•¥ï¼Œåˆ™é€€å‡ºçŠ¶æ€\n"
-" 为最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的退出状æ€ã€‚"
+" 退出 shell,退出状æ€ä¸º N。如果 N 被çœç•¥ï¼Œåˆ™é€€å‡ºçŠ¶æ€ä¸ºæœ€åŽä¸€ä¸ªæ‰§è¡Œçš„\n"
+" 命令的退出状æ€ã€‚"
#: builtins.c:724
msgid ""
@@ -3392,10 +3282,10 @@ msgid ""
" Exits a login shell with exit status N. Returns an error if not executed\n"
" in a login shell."
msgstr ""
-"退出一个登录 shell.\n"
+"退出一个登录 shell。\n"
" \n"
-" ä»¥çŠ¶æ€ N 退出一个登录 shell。如果ä¸åœ¨ç™»å½• shell 中执行,则\n"
-" 返回一个错误。"
+" 退出一个登录 shell,退出状æ€ä¸º N。如果ä¸åœ¨ç™»å½• shell 中执行,\n"
+" 则返回一个错误。"
#: builtins.c:734
msgid ""
@@ -3425,27 +3315,25 @@ msgid ""
msgstr ""
"从历å²åˆ—表中显示或者执行命令。\n"
" \n"
-" fc 被用于从历å²åˆ—表中列出或者é‡æ–°ç¼–辑并执行命令。\n"
-" FIRST å’Œ LAST å˜é‡å¯ä»¥æ˜¯æ•°å­—用于指定范围,或者 FIRST å¯ä»¥æ˜¯\n"
-" 字符串,æ„味ç€ä»¥è¿™ä¸ªå­—符串打头的最近的一个命令。\n"
-" \n"
+" fc å¯ç”¨äºŽä»ŽåŽ†å²åˆ—表中列出命令,或者编辑并é‡æ–°æ‰§è¡Œå‘½ä»¤ã€‚\n"
+" <起始> å’Œ <终止> å¯ä»¥æ˜¯ç”¨æ¥æŒ‡å®šèŒƒå›´çš„数字,或者 <起始> å¯ä»¥æ˜¯\n"
+" 字符串,表示以这个字符串打头的最近的一个命令。\n"
" \n"
" 选项:\n"
-" -e ENAME\t选择使用哪个编辑器。默认的是 FCEDIT, 然åŽæ˜¯ EDITOR,\n"
-" \t\t然åŽæ˜¯ vi\n"
-" -l \t列出行而ä¸ç¼–辑\n"
-" -n\t列举时çœç•¥è¡Œå·\n"
-" -r\tå转行的顺åº(最新行在å‰)\n"
+" -e 编辑器å\t选择使用哪个编辑器。默认使用 FCEDIT,然åŽ\n"
+" \t\t\t是 EDITOR,然åŽæ˜¯ vi\n"
+" -l\t\t列出行而ä¸ç¼–辑\n"
+" -n\t\t列举时çœç•¥è¡Œå·\n"
+" -r\t\tå转行的顺åºï¼ˆæ–°çš„在å‰ï¼‰\n"
" \n"
-" 用 `fc -s [模å¼=æ›¿æ¢ ...] [命令]' çš„æ ¼å¼ï¼ŒCOMMAND 命令会在 OLD=NEW\n"
-" 替æ¢ä¹‹åŽè¢«é‡æ–°æ‰§è¡Œã€‚\n"
-" \n"
-" r='fc -s' 是一个有用的别å,这样的è¯è¾“å…¥ `r cc'会执行最åŽä¸€ä¸ªä»¥ `cc'\n"
-" 开头的命令,输入 `r'会é‡æ–°æ‰§è¡Œæœ€åŽä¸€ä¸ªå‘½ä»¤ã€‚\n"
+" 使用 \"fc -s [模å¼=替æ¢ä¸² ...] [命令]\" çš„æ ¼å¼ï¼Œ<命令> 会在完æˆ\n"
+" <模å¼>=<替æ¢ä¸²> 的替æ¢ä¹‹åŽè¢«é‡æ–°æ‰§è¡Œã€‚\n"
" \n"
+" r='fc -s' 是一个有用的别å,这样的è¯è¾“å…¥ \"r cc\" 会执行最åŽä¸€ä¸ªä»¥ \"cc\"\n"
+" 开头的命令,输入 \"r\" 会é‡æ–°æ‰§è¡Œæœ€åŽä¸€ä¸ªå‘½ä»¤ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œæˆ–者执行的命令的状æ€ï¼›å¦‚果错误å‘生则返回éžé›¶ã€‚"
+" 返回æˆåŠŸï¼Œæˆ–者执行的命令的状æ€ï¼›å¦‚果有错误å‘生,则返回éžé›¶ã€‚"
#: builtins.c:764
msgid ""
@@ -3460,12 +3348,11 @@ msgid ""
msgstr ""
"将任务移至å‰å°ã€‚\n"
" \n"
-" 将以 JOB_SPEC 标识的任务放至å‰å°ï¼Œä½¿å…¶æˆä¸º\n"
-" 当å‰ä»»åŠ¡ã€‚如果 JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 观念中的当å‰ä»»åŠ¡ \n"
-" 将被使用。\n"
+" 将以 <任务说明符> 指定的任务放至å‰å°ï¼Œä½¿å…¶æˆä¸ºå½“å‰ä»»åŠ¡ã€‚\n"
+" 如果没有给出 <任务说明符>,shell 观念中的当å‰ä»»åŠ¡å°†ä¼šè¢«ä½¿ç”¨ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 放至å‰å°çš„命令状æ€ï¼Œæˆ–者当错误å‘生时为失败。"
+" 放至å‰å°çš„命令的状æ€ï¼Œæˆ–者当错误å‘生时则返回失败。"
#: builtins.c:779
msgid ""
@@ -3478,14 +3365,13 @@ msgid ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-"移动任务至åŽå°ã€‚\n"
+"将任务移至åŽå°ã€‚\n"
" \n"
-" å°† JOB_SPEC 标识的任务放至åŽå°ï¼Œå°±åƒå®ƒä»¬\n"
-" 是带 `&' å¯åŠ¨çš„一样。如果 JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 观念中的\n"
-" 当å‰ä»»åŠ¡å°†ä¼šè¢«ä½¿ç”¨ã€‚\n"
+" 将以 <任务说明符> 指定的任务放至åŽå°ï¼Œå°±åƒå®ƒä»¬æ˜¯å¸¦ \"&\" å¯åŠ¨çš„一样。\n"
+" 如果没有给出 <任务说明符>,shell 观念中的当å‰ä»»åŠ¡å°†ä¼šè¢«ä½¿ç”¨ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸé™¤éžä»»åŠ¡ç®¡ç†æ²¡æœ‰å¯ç”¨æˆ–者错误å‘生。"
+" 返回æˆåŠŸï¼Œé™¤éžä»»åŠ¡æŽ§åˆ¶æ²¡æœ‰å¯ç”¨ï¼Œæˆ–者有错误å‘生。"
#: builtins.c:793
msgid ""
@@ -3511,23 +3397,23 @@ msgid ""
msgstr ""
"è®°ä½æˆ–显示程åºä½ç½®ã€‚\n"
" \n"
-" 确定并记ä½æ¯ä¸€ä¸ªç»™å®š NAME å称的命令的完整路径。\n"
+" 确定并记ä½æ¯ä¸ªå‘½ä»¤ <å称> 的完整路径å。\n"
" 如果ä¸æä¾›å‚数,则显示已ç»è®°ä½çš„命令的信æ¯ã€‚\n"
" \n"
" 选项:\n"
-" -d\t\t忘记æ¯ä¸€ä¸ªå·²ç»è®°ä½çš„ NAME çš„ä½ç½®\n"
-" -l\t\t以å¯ä½œä¸ºè¾“å…¥é‡ç”¨çš„æ ¼å¼æ˜¾ç¤º\n"
-" -p pathname\t使用 pathname 路径作为 NAME 命令的全路径\n"
-" -r\t\t忘记所有记ä½çš„ä½ç½®\n"
-" -t\t\t打å°è®°ä½çš„æ¯ä¸€ä¸ª NAME å称的ä½ç½®ï¼Œå¦‚果指定了多个\n"
-" \t\tNAME å称,则æ¯ä¸ªä½ç½®å‰é¢ä¼šåŠ ä¸Šç›¸åº”çš„ NAME å称\n"
-" \t\t\n"
+" -d\t忘记æ¯ä¸€ä¸ª <å称> çš„å·²ç»è®°ä½çš„ä½ç½®\n"
+" -l\t以å¯é‡æ–°ç”¨ä½œè¾“入的格å¼æ˜¾ç¤º\n"
+" -p 路径å\t使用 <路径å> 作为 <命令> 的完整路径å\n"
+" -r\t忘记所有已ç»è®°ä½çš„ä½ç½®\n"
+" -t\t打å°æ¯ä¸€ä¸ª <å称> çš„å·²ç»è®°ä½çš„ä½ç½®ï¼Œå¦‚果指定了多个\n"
+" \t\t<å称>,则在æ¯ä¸ªä½ç½®å‰é¢åŠ ä¸Šå¯¹åº”çš„ <å称>\n"
+" \n"
" å‚数:\n"
-" NAME\t\tæ¯ä¸ª NAME å称会在 $PATH 路径å˜é‡ä¸­è¢«æœç´¢ï¼Œå¹¶ä¸”添加到记ä½çš„命令\n"
-" 列表中。\n"
+" å称\t会在 $PATH 中æœç´¢æ¯ä¸ª <å称>,并且添加到已ç»è®°ä½çš„命令\n"
+" \t\t列表中。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éž NAME 命令没有找到或者使用了无效的选项。"
+" 返回æˆåŠŸï¼Œé™¤éžæ²¡æœ‰æ‰¾åˆ° <å称>,或者使用了无效的选项。"
#: builtins.c:818
msgid ""
@@ -3551,21 +3437,19 @@ msgid ""
msgstr ""
"显示内建命令的相关信æ¯ã€‚\n"
" \n"
-" 显示内建命令的简略信æ¯ã€‚如果指定了 PATTERN 模å¼ï¼Œ\n"
-" ç»™å‡ºæ‰€æœ‰åŒ¹é… PATTERN 模å¼çš„命令的详细帮助,å¦åˆ™æ‰“\n"
-" å°ä¸€ä¸ªå¸®åŠ©ä¸»é¢˜åˆ—表\n"
+" 显示内建命令的简略信æ¯ã€‚如果指定了 <模å¼>ï¼Œç»™å‡ºæ‰€æœ‰åŒ¹é… <模å¼>\n"
+" 的命令的详细帮助,å¦åˆ™æ‰“å°å¸®åŠ©ä¸»é¢˜åˆ—表。\n"
" \n"
" 选项:\n"
" -d\t输出æ¯ä¸ªä¸»é¢˜çš„简短æè¿°\n"
-" -m\t以伪 man 手册的格å¼æ˜¾ç¤ºä½¿ç”¨æ–¹æ³•\n"
-" -s\t为æ¯ä¸€ä¸ªåŒ¹é… PATTERN 模å¼çš„主题仅显示一个用法\n"
-" \t简介\n"
+" -m\t以伪 man 手册的格å¼æ˜¾ç¤ºç”¨æ³•\n"
+" -s\t仅对æ¯ä¸€ä¸ªåŒ¹é… <模å¼> 的主题输出简短的用法æè¦\n"
" \n"
" å‚数:\n"
-" PATTERN\t指定帮助主题的模å¼\n"
+" 模å¼\t用æ¥ç¡®å®šå¸®åŠ©ä¸»é¢˜çš„模å¼\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžæœªæ‰¾åˆ° PATTERN 模å¼æ²¡æœ‰æ‰¾åˆ°æˆ–者使用了无效选项。"
+" 返回æˆåŠŸï¼Œé™¤éžæ²¡æœ‰æ‰¾åˆ° <模å¼>,或者使用了无效的选项。"
#: builtins.c:842
msgid ""
@@ -3602,32 +3486,30 @@ msgid ""
msgstr ""
"显示或æ“纵历å²åˆ—表。\n"
" \n"
-" 带行å·æ˜¾ç¤ºåŽ†å²åˆ—表,将æ¯ä¸ªè¢«ä¿®æ”¹çš„æ¡ç›®åŠ ä¸Š `*' å‰ç¼€ã€‚\n"
+" 带行å·æ˜¾ç¤ºåŽ†å²åˆ—表,将æ¯ä¸ªè¢«ä¿®æ”¹çš„æ¡ç›®åŠ ä¸Š \"*\" å‰ç¼€ã€‚\n"
" å‚æ•° N 会仅列出最åŽçš„ N 个æ¡ç›®ã€‚\n"
" \n"
" 选项:\n"
-" -c\t删除所有æ¡ç›®ä»Žè€Œæ¸…空历å²åˆ—表。\n"
-" -d å移é‡\t从指定ä½ç½®åˆ é™¤åŽ†å²åˆ—表。负å移é‡å°†ä»ŽåŽ†å²æ¡ç›®æœ«å°¾\n"
-" \t\t开始计数\n"
+" -c\t删除所有æ¡ç›®ä»Žè€Œæ¸…空历å²åˆ—表\n"
+" -d å移é‡\t删除ä½äºŽ <å移é‡> 的历å²æ¡ç›®ã€‚è´Ÿçš„ <å移é‡> 表示从\n"
+" \t\t历å²åˆ—表末尾开始倒数\n"
" \n"
-" -a\t将当å‰ä¼šè¯çš„历å²è¡Œè¿½åŠ åˆ°åŽ†å²æ–‡ä»¶ä¸­\n"
-" -n\t从历å²æ–‡ä»¶ä¸­è¯»å–所有未被读å–çš„è¡Œ\n"
-" \t\t并且将它们附加到历å²åˆ—表\n"
+" -a\t将当å‰ä¼šè¯çš„历å²è¿½åŠ åˆ°åŽ†å²æ–‡ä»¶ä¸­\n"
+" -n\t从历å²æ–‡ä»¶ä¸­è¯»å–所有未被读å–的行,并且将它们追加到历å²åˆ—表\n"
" -r\t读å–历å²æ–‡ä»¶å¹¶å°†å†…容追加到历å²åˆ—表中\n"
" -w\t将当å‰åŽ†å²å†™å…¥åˆ°åŽ†å²æ–‡ä»¶ä¸­\n"
" \n"
-" -p\t对æ¯ä¸€ä¸ª ARG å‚数展开历å²å¹¶æ˜¾ç¤ºç»“果,而ä¸å­˜å‚¨åˆ°åŽ†å²åˆ—表中\n"
-" -s\t以å•æ¡è®°å½•è¿½åŠ  ARG 到历å²åˆ—表中\n"
+" -p\t对æ¯ä¸€ä¸ª <å‚æ•°> 执行历å²å±•å¼€å¹¶æ˜¾ç¤ºç»“果,而ä¸å­˜å‚¨åˆ°åŽ†å²åˆ—表中\n"
+" -s\tå°† <å‚æ•°> 作为å•ä¸€æ¡ç›®è¿½åŠ åˆ°åŽ†å²åˆ—表中\n"
" \n"
-" 如果给定了 FILENAME 文件å,则它将被作为历å²æ–‡ä»¶ã€‚å¦åˆ™\n"
-" 如果 $HISTFILE å˜é‡æœ‰å€¼çš„è¯ä½¿ç”¨ä¹‹ï¼Œä¸ç„¶ä½¿ç”¨ ~/.bash_history 文件。\n"
+" 如果给定了 <文件å>,则将其用作历å²æ–‡ä»¶ã€‚å¦åˆ™ï¼Œå¦‚æžœ HISTFILE å˜é‡\n"
+" 有值的è¯ï¼Œåˆ™ä½¿ç”¨å®ƒï¼Œå¦åˆ™ä½¿ç”¨ ~/.bash_history 文件。\n"
" \n"
-" 如果 $HISTTIMEFORMAT å˜é‡è¢«è®¾å®šå¹¶ä¸”ä¸ä¸ºç©ºï¼Œå®ƒçš„值会被用于\n"
-" strftime(3) çš„æ ¼å¼å­—符串æ¥æ‰“å°ä¸Žæ¯ä¸€ä¸ªæ˜¾ç¤ºçš„历å²æ¡ç›®æƒ³å…³è”çš„\n"
-" 时间戳,å¦åˆ™ä¸æ‰“å°æ—¶é—´æˆ³ã€‚\n"
+" 如果 HISTTIMEFORMAT å˜é‡è¢«è®¾å®šå¹¶ä¸”ä¸ä¸ºç©ºï¼Œå®ƒçš„值会被用作 strftime(3)\n"
+" çš„æ ¼å¼å­—符串,以打å°æ¯ä¸ªæ˜¾ç¤ºçš„历å²æ¡ç›®çš„时间戳。å¦åˆ™ï¼Œä¸æ‰“å°æ—¶é—´æˆ³ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者å‘生错误。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者有错误å‘生。"
#: builtins.c:879
msgid ""
@@ -3654,22 +3536,22 @@ msgid ""
msgstr ""
"显示任务状æ€ã€‚\n"
" \n"
-" 列出活动的任务。JOBSPEC é™åˆ¶ä»…输出指定的任务。\n"
-" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œæ‰€æœ‰æ´»åŠ¨ä»»åŠ¡çš„状æ€éƒ½ä¼šæ˜¾ç¤ºã€‚\n"
+" 列出活动的任务。<任务说明符> é™åˆ¶ä»…输出指定的任务。\n"
+" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œæ˜¾ç¤ºæ‰€æœ‰æ´»åŠ¨ä»»åŠ¡çš„状æ€ã€‚\n"
" \n"
" 选项:\n"
-" -l\t在正常信æ¯åŸºç¡€ä¸Šåˆ—出进程å·\n"
-" -n\t仅列出上次通告之åŽæ”¹å˜äº†çŠ¶æ€çš„进程\n"
-" -p\t仅列出进程å·\n"
+" -l\t在正常信æ¯çš„基础上列出进程 ID\n"
+" -n\t仅列出上次通知之åŽæ”¹å˜äº†çŠ¶æ€çš„进程\n"
+" -p\t仅列出进程 ID\n"
" -r\té™åˆ¶ä»…输出è¿è¡Œä¸­çš„任务\n"
-" -s\té™åˆ¶ä»…输出åœæ­¢çš„任务\n"
+" -s\té™åˆ¶ä»…输出已åœæ­¢çš„任务\n"
" \n"
-" 如果使用了 -x 选项,ARG å‚数中的所有任务声明会被替æ¢ä¸ºè¯¥ä»»åŠ¡\n"
-" 的进程组头领的进程å·ï¼Œç„¶åŽæ‰§è¡Œ COMMAND 命令。\n"
+" 如果使用了 -x 选项,<å‚æ•°> 中的所有任务说明符会被替æ¢ä¸ºè¯¥ä»»åŠ¡\n"
+" 的进程组头领的进程 ID,然åŽç”¨æ›¿æ¢åŽçš„å‚数执行 <命令>。\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者有错误å‘生。\n"
-" 如果使用 -x 选项,则返回 COMMAND 命令的退出状æ€ã€‚"
+" 如果使用了 -x 选项,则返回 <命令> 的退出状æ€ã€‚"
#: builtins.c:906
msgid ""
@@ -3689,17 +3571,17 @@ msgid ""
msgstr ""
"ä»Žå½“å‰ shell 中删除任务。\n"
" \n"
-" 从活动任务表中删除æ¯ä¸€ä¸ª JOBSPEC å‚数。ä¸å¸¦ä»»ä½•\n"
-" JOBSPEC å‚数时,shell 使用观念中的当å‰ä»»åŠ¡ã€‚\n"
+" 从活动任务列表中删除æ¯ä¸€ä¸ª <任务说明符> å‚数。ä¸å¸¦ä»»ä½• <任务说明符>\n"
+" 时,shell 使用它的观念中的当å‰ä»»åŠ¡ã€‚\n"
" \n"
" 选项:\n"
-" -a\t如果ä¸æä¾› JOBSPEC å‚数,则删除所有任务\n"
-" -h\t标识æ¯ä¸ª JOBSPEC 任务,从而当 shell 接收到 SIGHUP\n"
+" -a\t如果ä¸æä¾› <任务说明符>,则删除所有任务\n"
+" -h\t标记æ¯ä¸ª <任务说明符> 对应的任务,从而当 shell 接收到 SIGHUP\n"
" \t\tä¿¡å·æ—¶ä¸å‘é€ SIGHUP 给指定任务\n"
" -r\t仅删除è¿è¡Œä¸­çš„任务\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 JOBSPEC 声明。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 <任务说明符>。"
#: builtins.c:925
msgid ""
@@ -3725,21 +3607,22 @@ msgid ""
msgstr ""
"å‘一个任务å‘é€ä¸€ä¸ªä¿¡å·ã€‚\n"
" \n"
-" å‘以 PID 进程å·æˆ–者 JOBSPEC 任务声明指定的进程å‘é€ä¸€ä¸ªä»¥\n"
-" SIGSPEC ä¿¡å·å£°æ˜Žæˆ– SIGNUM ä¿¡å·ç¼–å·å‘½åçš„ä¿¡å·ã€‚如果没有指定\n"
-" SIGSPEC 或 SIGNUM,那么å‡å®šå‘é€ SIGTERM ä¿¡å·ã€‚\n"
+" å‘以 <PID> 或者 <任务说明符> 指定的进程å‘é€ä¸€ä¸ªä»¥ <ä¿¡å·è¯´æ˜Žç¬¦> 或\n"
+" <ä¿¡å·ç¼–å·> 指定的信å·ã€‚如果没有指定 <ä¿¡å·è¯´æ˜Žç¬¦> å’Œ <ä¿¡å·ç¼–å·>,\n"
+" 那么å‡å®šå‘é€ SIGTERM ä¿¡å·ã€‚\n"
" \n"
" 选项:\n"
-" -s sig\tSIG 是信å·å称\n"
-" -n sig\tSIG 是信å·ç¼–å·\n"
-" -l\t列出信å·å称;如果å‚æ•°åŽè·Ÿ `-l'则被å‡è®¾ä¸ºä¿¡å·ç¼–å·ï¼Œ\n"
-" \t\t而相应的信å·å称会被列出\n"
+" -s ä¿¡å·\t<ä¿¡å·> 是信å·å称\n"
+" -n ä¿¡å·\t<ä¿¡å·> 是信å·ç¼–å·\n"
+" -l\t列出所有信å·å称;如果 \"-l\" åŽæœ‰å‚数,则å‡å®šå®ƒä»¬æ˜¯ä¿¡å·ç¼–å·ï¼Œ\n"
+" \t\t并列出对应的信å·å称\n"
+" -L\tåŒ -l\n"
" \n"
-" Kill æˆä¸º shell 内建有两个ç†ç”±ï¼šå®ƒå…许使用任务编å·è€Œä¸æ˜¯è¿›ç¨‹å·ï¼Œ\n"
-" 并且在å¯ä»¥åˆ›å»ºçš„进程数上é™è¾¾åˆ°æ˜¯å…许进程被æ€æ­»ã€‚\n"
+" kill æˆä¸º shell 内建有两个ç†ç”±ï¼šå®ƒå…许使用任务 ID 代替进程 ID,\n"
+" 并且在您å¯ä»¥åˆ›å»ºçš„进程数达到上é™æ—¶ä»å¯ä»¥æ€æ­»è¿›ç¨‹ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者有错误å‘生。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者有错误å‘生。"
#: builtins.c:949
msgid ""
@@ -3784,22 +3667,20 @@ msgid ""
" Exit Status:\n"
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-"估值算术表达å¼ã€‚\n"
-" \n"
-" å°†æ¯ä¸ª ARG å‚赛作为算术表达å¼æ¥ä¼°å€¼ã€‚估值的计算以定宽的整\n"
-" 数完æˆï¼Œä¸å¸¦æº¢å‡ºæ£€æµ‹ï¼Œä¸è¿‡é™¤ 0 是被置陷阱的并且会报一个错\n"
-" 误。下列æ“作符被按照相åŒçš„算术优先级组åˆã€‚列表的顺åºæŒ‰ç…§\n"
-" 优先级从高至低。\n"
+"对算术表达å¼è¿›è¡Œæ±‚值。\n"
" \n"
+" å°†æ¯ä¸ª <å‚æ•°> 作为算术表达å¼è¿›è¡Œæ±‚值。求值在固定宽度的整数中完æˆï¼Œ\n"
+" 没有溢出检测,ä¸è¿‡é™¤ä»¥ 0 的异常会被æ•èŽ·ï¼Œå¹¶ä¸”会报一个错误。下é¢çš„è¿ç®—符\n"
+" 列表中,åŒä¸€è¡Œçš„è¿ç®—符的优先级相等。列表按照优先级从高到低进行排åºã€‚\n"
" \n"
-" \tid++, id--\tå˜é‡åŽç½®åŠ ï¼ŒåŽç½®å‡\n"
-" \t++id, --id\tå˜é‡å‰ç½®åŠ ï¼Œå‰ç½®å‡\n"
-" \t-, +\t\t一元å‡æ³•ï¼Œä¸€å…ƒåŠ æ³•\n"
-" \t!, ~\t\t逻辑和ä½å–å\n"
+" \tid++, id--\tå˜é‡çš„åŽç¼€è‡ªå¢žã€åŽç¼€è‡ªå‡\n"
+" \t++id, --id\tå˜é‡çš„å‰ç¼€è‡ªå¢žã€å‰ç¼€è‡ªå‡\n"
+" \t-, +\t\t一元负å·ã€æ­£å·\n"
+" \t!, ~\t\t逻辑和按ä½å–å\n"
" \t**\t\t指数\n"
-" \t*, /, %\t\t乘法,除法,å–余数\n"
-" \t+, -\t\t增加,å‡å°‘\n"
-" \t<<, >>\t\tå‘左和å‘å³æŒ‰ä½ç§»ä½\n"
+" \t*, /, %\t\t乘法ã€é™¤æ³•ã€å–余数\n"
+" \t+, -\t\t加法ã€å‡æ³•\n"
+" \t<<, >>\t\t按ä½å·¦ç§»ã€æŒ‰ä½å³ç§»\n"
" \t<=, >=, <, >\t比较\n"
" \t==, !=\t\t等于,ä¸ç­‰äºŽ\n"
" \t&\t\t按ä½ä¸Ž\n"
@@ -3808,18 +3689,19 @@ msgstr ""
" \t&&\t\t逻辑与\n"
" \t||\t\t逻辑或\n"
" \texpr ? expr : expr\n"
-" \t\t\tæ¡ä»¶æ“作符\n"
+" \t\t\tæ¡ä»¶è¿ç®—符\n"
" \t=, *=, /=, %=,\n"
" \t+=, -=, <<=, >>=,\n"
" \t&=, ^=, |=\t赋值\n"
" \n"
-" Shell å˜é‡å…许作为æ“作数。表达å¼ä¸­çš„å˜é‡çš„å称会被å–代以值\n"
-" (强制转æ¢ä¸ºå®šå®½çš„æ•´æ•°)。表达å¼ä¸­çš„å˜é‡ä¸éœ€è¦æ‰“开整数属性。\n"
+" shell å˜é‡å…许作为æ“作数。å˜é‡çš„å称会被它的值替代(强制转æ¢ä¸ºå›ºå®š\n"
+" 宽度的整数)。å˜é‡ä¸éœ€è¦æ‰“å¼€ \"æ•´æ•°\" 属性就å¯ä»¥åœ¨è¡¨è¾¾å¼ä¸­ä½¿ç”¨ã€‚\n"
" \n"
-" æ“作符按照优先级进行估值。括å·ä¸­çš„å­è¡¨è¾¾å¼å°†è¢«å…ˆä¼°å€¼ï¼Œå¹¶å¯å–代上述表达å¼è§„则。\n"
+" è¿ç®—符按照优先级顺åºè¿›è¡Œæ±‚值。括å·ä¸­çš„å­è¡¨è¾¾å¼å°†æœ€å…ˆæ±‚值,\n"
+" 并å¯ä»¥è¦†ç›–上述优先级规则。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 如果最åŽä¸€ä¸ª ARG å‚数估值为 0,则 let 返回 1ï¼› å¦åˆ™ let 返回 0。"
+" 如果最åŽä¸€ä¸ª <å‚æ•°> 求值结果为 0,则 let 返回 1ï¼› å¦åˆ™ let 返回 0。"
#: builtins.c:994
msgid ""
@@ -3830,7 +3712,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3866,40 +3749,41 @@ msgid ""
" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-"从标准输入读å–一行并将其分为ä¸åŒçš„域。\n"
+"从标准输入读å–一行,并将其分割为ä¸åŒçš„字段。\n"
" \n"
-" 从标准输入读å–å•ç‹¬çš„一行,或者如果使用了 -u 选项,从文件æ述符 FD 中读å–。\n"
-" 该行被分割æˆåŸŸï¼Œå¦‚åŒè¯è¯­åˆ†å‰²ä¸€æ ·ï¼Œå¹¶ä¸”第一个è¯è¢«èµ‹å€¼ç»™ç¬¬ä¸€ä¸ª NAME å˜é‡ï¼Œç¬¬äºŒ\n"
-" 个è¯è¢«èµ‹å€¼ç»™ç¬¬äºŒä¸ª NAME å˜é‡ï¼Œå¦‚此继续,直到剩下所有的è¯è¢«èµ‹å€¼ç»™æœ€åŽä¸€ä¸ª NAME\n"
-" å˜é‡ã€‚åªæœ‰ $IFS å˜é‡ä¸­çš„字符被认作是è¯è¯­åˆ†éš”符。\n"
+" 从标准输入读å–å•ç‹¬çš„一行,或者如果使用了 -u 选项,从文件æ述符 <FD> 中\n"
+" 读å–。该行会被分割æˆå­—段,如åŒåˆ†å‰²è¯è¯­ä¸€æ ·ï¼Œå¹¶ä¸”第一个è¯è¢«èµ‹å€¼ç»™ç¬¬ä¸€ä¸ª\n"
+" <å称>,第二个è¯è¢«èµ‹å€¼ç»™ç¬¬äºŒä¸ª <å称>,以此类推,剩下所有的è¯è¢«èµ‹å€¼ç»™\n"
+" 最åŽä¸€ä¸ª <å称>。åªæœ‰ $IFS 中的字符会被视为è¯è¯­åˆ†éš”符。默认情况下,\n"
+" åæ–œæ å­—符å¯ä»¥è½¬ä¹‰åˆ†éš”符和æ¢è¡Œç¬¦ã€‚\n"
" \n"
-" 如果没有æä¾› NAME å˜é‡ï¼Œåˆ™è¯»å–的行被存放在 REPLY å˜é‡ä¸­ã€‚\n"
+" 如果没有æä¾› <å称>,则读å–的行被存放在 REPLY å˜é‡ä¸­ã€‚\n"
" \n"
" 选项:\n"
-" -a array\tå°†è¯è¯­èµ‹å€¼ç»™ ARRAY 数组å˜é‡çš„åºåˆ—下标æˆå‘˜ï¼Œä»Žé›¶å¼€å§‹\n"
-" -d delim\tæŒç»­è¯»å–直到读入 DELIM å˜é‡ä¸­çš„第一个字符,而ä¸æ˜¯æ¢è¡Œç¬¦\n"
+" -a 数组\tå°†è¯è¯­æŒ‰é¡ºåºèµ‹å€¼ç»™ <数组> å˜é‡çš„å„个æˆå‘˜ï¼Œç´¢å¼•ä»Žé›¶å¼€å§‹\n"
+" -d 分隔符\t继续读å–,直到é‡åˆ° <分隔符> 的第一个字符,而ä¸æ˜¯æ¢è¡Œç¬¦\n"
" -e\t使用 Readline 获å–è¡Œ\n"
-" -i text\t使用 TEXT 文本作为 Readline çš„åˆå§‹æ–‡å­—\n"
-" -n nchars\tè¯»å– nchars 个字符之åŽè¿”回,而ä¸æ˜¯ç­‰åˆ°è¯»å–æ¢è¡Œç¬¦ã€‚\n"
-" \t\t但是分隔符ä»ç„¶æœ‰æ•ˆï¼Œå¦‚æžœé‡åˆ°åˆ†éš”符之å‰è¯»å–了ä¸è¶³ nchars 个字符。\n"
-" -N nchars\t在准确读å–了 nchars 个字符之åŽè¿”回,除éžé‡åˆ°æ–‡ä»¶ç»“æŸç¬¦æˆ–者读超时,\n"
-" \t\t任何的分隔符都被忽略\n"
-" -p prompt\t在å°è¯•è¯»å–之å‰è¾“出 PROMPT æ示符并且ä¸å¸¦\n"
-" \t\tæ¢è¡Œç¬¦\n"
+" -i 文本\t使用 <文本> 作为 Readline çš„åˆå§‹æ–‡å­—\n"
+" -n 字符数\tè¯»å– <字符数> 个字符之åŽè¿”回,而ä¸æ˜¯ç­‰åˆ°è¯»å–æ¢è¡Œç¬¦ã€‚\n"
+" \t\t但是如果读å–了ä¸åˆ° <字符数> 个字符就é‡åˆ°äº†åˆ†éš”符,\n"
+" \t\t则分隔符ä»ç„¶ç”Ÿæ•ˆ\n"
+" -N 字符数\t仅在æ°å¥½è¯»å–了 <字符数> 个字符之åŽè¿”回,除éžé‡åˆ° EOF\n"
+" \t\t或者读å–超时。忽略所有的分隔符\n"
+" -p æ示符\t在å°è¯•è¿›è¡Œè¯»å–之å‰å…ˆè¾“出 <æ示符>(ä¸åŠ æ¢è¡Œï¼‰\n"
" -r\tä¸å…许åæ–œæ è½¬ä¹‰ä»»ä½•å­—符\n"
-" -s\tä¸å›žæ˜¾ç»ˆç«¯çš„任何输入\n"
-" -t timeout\t如果在 TIMEOUT 秒内没有读å–一个完整的行则超时并且返回失败。\n"
-" \t\tTMOUT å˜é‡çš„值是默认的超时时间。TIMEOUT å¯ä»¥æ˜¯å°æ•°ã€‚\n"
-" \t\t如果 TIMEOUT 是 0,那么仅当在指定的文件æ述符上输入有效的时候,\n"
-" \t\tread æ‰è¿”回æˆåŠŸï¼›å¦åˆ™å®ƒå°†ç«‹åˆ»è¿”回而ä¸å°è¯•è¯»å–任何数æ®ã€‚\n"
-" \t\t如果超过了超时时间,则返回状æ€ç å¤§äºŽ 128\n"
-" -u fd\t从文件æ述符 FD 中读å–,而ä¸æ˜¯æ ‡å‡†è¾“å…¥\n"
+" -s\tä¸å›žæ˜¾æ¥è‡ªç»ˆç«¯çš„输入\n"
+" -t 超时\t如果在 <超时> 秒内没有读å–一个完整的行则超时并且返回失败。\n"
+" \t\t默认的超时时间是 TMOUT å˜é‡çš„值。<超时> å¯ä»¥æ˜¯å°æ•°ã€‚\n"
+" \t\t如果 <超时> 是 0,read 会立å³è¿”回而ä¸å°è¯•è¯»å–任何数æ®ï¼Œ\n"
+" \t\t且仅当å¯ä»¥ä»ŽæŒ‡å®šçš„文件æ述符获å–输入时,æ‰è¿”回æˆåŠŸã€‚\n"
+" \t\t如果超过了超时时间,则退出状æ€å¤§äºŽ 128\n"
+" -u fd\t从文件æ述符 <FD> 中读å–,而ä¸æ˜¯æ ‡å‡†è¾“å…¥\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回ç ä¸ºé›¶ï¼Œé™¤éžé‡åˆ°äº†æ–‡ä»¶ç»“æŸç¬¦ã€è¯»è¶…时(且返回ç ä¸å¤§äºŽ128)ã€\n"
-" 出现了å˜é‡èµ‹å€¼é”™è¯¯æˆ–者无效的文件æ述符作为å‚数传递给了 -u 选项。"
+" 返回ç ä¸ºé›¶ï¼Œé™¤éžé‡åˆ°äº†æ–‡ä»¶ç»“æŸç¬¦ã€è¯»å–超时(此时返回ç å¤§äºŽ 128)ã€\n"
+" å‘生了å˜é‡èµ‹å€¼é”™è¯¯ï¼Œæˆ–者 -u 选项的å‚数中的文件æ述符无效。"
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3912,14 +3796,13 @@ msgid ""
msgstr ""
"从一个 shell 函数返回。\n"
" \n"
-" 使一个函数或者被引用的脚本以指定的返回值 N 退出。\n"
-" 如果 N 被çœç•¥ï¼Œåˆ™è¿”回状æ€å°±æ˜¯\n"
-" 函数或脚本中的最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚\n"
+" 使一个函数或者被 source 的脚本退出,返回值为 N。如果 N 被\n"
+" çœç•¥ï¼Œåˆ™è¿”回状æ€ä¸ºå‡½æ•°æˆ–脚本中最åŽä¸€ä¸ªè¢«æ‰§è¡Œçš„命令的返回状æ€ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回 N,或者如果 shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ªå‡½æ•°æˆ–引用脚本时,失败。"
+" 返回 N,或者如果 shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ªå‡½æ•°æˆ–脚本时,返回失败。"
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4004,83 +3887,76 @@ msgid ""
msgstr ""
"设定或å–消设定 shell 选项和ä½ç½®å‚数的值。\n"
" \n"
-" æ”¹å˜ shell 选项和ä½ç½®å‚数的值,或者显示 shell å˜é‡çš„\n"
-" å称和值。\n"
+" æ”¹å˜ shell 属性和ä½ç½®å‚数的值,或者显示 shell å˜é‡çš„å称和值。\n"
" \n"
" 选项:\n"
-" -a 标记修改的或者创建的å˜é‡ä¸ºå¯¼å‡ºã€‚\n"
-" -b ç«‹å³é€šå‘Šä»»åŠ¡ç»ˆç»“。\n"
+" -a 标记修改的或者创建的å˜é‡ä¸ºå¯¼å‡ºå˜é‡ã€‚\n"
+" -b 在任务终止时立å³è¿›è¡Œé€šçŸ¥ã€‚\n"
" -e 如果一个命令以éžé›¶çŠ¶æ€é€€å‡ºï¼Œåˆ™ç«‹å³é€€å‡ºã€‚\n"
-" -f ç¦ç”¨æ–‡ä»¶å生æˆ(模å¼åŒ¹é…)。\n"
-" -h 当查询命令时记ä½å®ƒä»¬çš„ä½ç½®\n"
-" -k 所有的赋值å‚数被放在命令的环境中,而ä¸ä»…仅是\n"
-" 命令å称之å‰çš„å‚数。\n"
+" -f ç¦ç”¨æ–‡ä»¶å生æˆï¼ˆé€šé…符匹é…)。\n"
+" -h 查找命令时记ä½å®ƒä»¬çš„ä½ç½®ã€‚\n"
+" -k 所有的赋值å‚数都会进入命令的环境,而ä¸ä»…仅是命令å称\n"
+" 之å‰çš„å‚数。\n"
" -m å¯ç”¨ä»»åŠ¡æŽ§åˆ¶ã€‚\n"
-" -n 读å–命令但ä¸æ‰§è¡Œ\n"
+" -n 读å–命令但ä¸æ‰§è¡Œã€‚\n"
" -o 选项å\n"
-" 设定与选项å对应的å˜é‡ï¼š\n"
+" 设定与 <选项å> 对应的å˜é‡ï¼š\n"
" allexport 与 -a 相åŒ\n"
" braceexpand 与 -B 相åŒ\n"
-" emacs 使用 emacs 风格的行编辑界é¢\n"
+" emacs 使用 emacs 风格的行编辑界é¢\n"
" errexit 与 -e 相åŒ\n"
" errtrace 与 -E 相åŒ\n"
" functrace 与 -T 相åŒ\n"
" hashall 与 -h 相åŒ\n"
" histexpand 与 -H 相åŒ\n"
" history å¯ç”¨å‘½ä»¤åŽ†å²\n"
-" ignoreeof shell 读å–文件结æŸç¬¦æ—¶ä¸ä¼šé€€å‡º\n"
+" ignoreeof shell 读å–到 EOF æ—¶ä¸ä¼šé€€å‡º\n"
" interactive-comments\n"
-" å…许在交互å¼å‘½ä»¤ä¸­æ˜¾ç¤ºæ³¨é‡Š\n"
+" å…许交互å¼å‘½ä»¤ä¸­å‡ºçŽ°æ³¨é‡Š\n"
" keyword 与 -k 相åŒ\n"
" monitor 与 -m 相åŒ\n"
" noclobber 与 -C 相åŒ\n"
" noexec 与 -n 相åŒ\n"
" noglob 与 -f 相åŒ\n"
-" nolog ç›®å‰å¯æŽ¥å—但是被忽略\n"
+" nolog ç›®å‰å¯æŽ¥å—,但会被忽略\n"
" notify 与 -b 相åŒ\n"
" nounset 与 -u 相åŒ\n"
" onecmd 与 -t 相åŒ\n"
" physical 与 -P 相åŒ\n"
-" pipefail 管é“的返回值是最åŽä¸€ä¸ªéžé›¶è¿”回值的命令的返回结果,\n"
-" 或者当所有命令都返回零是也为零。\n"
-" posix 改å˜é»˜è®¤æ—¶å’Œ Posix 标准ä¸åŒçš„ bash 行为\n"
-" 以匹é…标准\n"
+" pipefail æµæ°´çº¿çš„返回值是最åŽä¸€ä¸ªä»¥éžé›¶çŠ¶æ€é€€å‡ºçš„命令的退出\n"
+" 状æ€ï¼Œæˆ–者如果没有命令以éžé›¶çŠ¶æ€é€€å‡ºï¼Œåˆ™è¿”回零。\n"
+" posix æ”¹å˜ bash 中默认æ“作和 Posix 标准ä¸åŒçš„行为,\n"
+" 以符åˆæ ‡å‡†\n"
" privileged 与 -p 相åŒ\n"
" verbose 与 -v 相åŒ\n"
" vi 使用 vi 风格的行编辑界é¢\n"
" xtrace 与 -x 相åŒ\n"
-" -p 无论何时当真实的有效的用户身份ä¸åŒ¹é…时打开。\n"
-" ç¦ç”¨å¯¹ $ENV 文件的处ç†ä»¥åŠå¯¼å…¥ shell 函数。\n"
-" 关闭此选项会导致有效的用户编å·å’Œç»„ç¼–å·è®¾å®š\n"
-" 为真实的用户编å·å’Œç»„ç¼–å·\n"
+" -p åªè¦çœŸå®žç”¨æˆ· ID 和有效用户 ID ä¸åŒ¹é…时就会被打开。\n"
+" ç¦ç”¨å¯¹ $ENV 文件的处ç†ä»¥åŠ shell 函数的导入。关闭此选项\n"
+" 会导致有效 uid 和 gid 被设定为真实 uid 和 gid。\n"
" -t 读å–并执行一个命令之åŽé€€å‡ºã€‚\n"
-" -u 替æ¢æ—¶å°†ä¸ºè®¾å®šçš„å˜é‡å½“作错误对待。\n"
-" -v è¯»å– shell 输入行时将它们打å°ã€‚\n"
-" -x 执行命令时打å°å®ƒä»¬ä»¥åŠå‚数。\n"
-" -B shell 将执行花括å·æ‰©å±•ã€‚\n"
-" -C 设定之åŽç¦æ­¢ä»¥é‡å®šå‘输出的方å¼è¦†ç›–常\n"
-" 规文件。\n"
-" -E è®¾å®šä¹‹åŽ ERR 陷阱会被 shell 函数继承。\n"
-" -H å¯ç”¨ ! 风格的历å²æ›¿æ¢ã€‚当 shell 是交互å¼çš„\n"
-" 时候这个标识ä½é»˜è®¤æ‰“开。\n"
-" -P 设定之åŽç±»ä¼¼ cd 的会改å˜å½“å‰ç›®å½•çš„命令ä¸\n"
-" 追踪符å·é“¾æŽ¥ã€‚\n"
-" -T è®¾å®šä¹‹åŽ DEBUG 陷阱会被 shell 函数继承。\n"
-" -- 任何剩余的å‚数会被赋值给ä½ç½®å‚数。如果没\n"
-" 有剩余的å‚数,ä½ç½®å‚æ•°ä¸ä¼šè¢«è®¾ç½®ã€‚\n"
-" - 任何剩余的å‚数会被赋值给ä½ç½®å‚数。\n"
-" -x 和 -v 选项已关闭。\n"
-" \n"
-" 使用 + 而ä¸æ˜¯ - 会使标志ä½è¢«å…³é—­ã€‚标志ä½ä¹Ÿå¯ä»¥åœ¨\n"
-" shell 被å¯åŠ¨æ—¶ä½¿ç”¨ã€‚当å‰çš„标志ä½è®¾å®šå¯ä»¥åœ¨ $- å˜\n"
-" é‡ä¸­æ‰¾åˆ°ã€‚剩余的 ARG å‚数是ä½ç½®å‚数并且是按照\n"
-" $1, $2, .. $n 的顺åºè¢«èµ‹å€¼çš„。如果没有给定 ARG\n"
-" å‚数,则打å°æ‰€æœ‰çš„ shell å˜é‡ã€‚\n"
+" -u 替æ¢æ—¶å°†æœªè®¾å®šçš„å˜é‡è§†ä¸ºé”™è¯¯ã€‚\n"
+" -v è¯»å– shell 输入行时将其打å°ã€‚\n"
+" -x 执行命令时打å°å‘½ä»¤åŠå…¶å‚数。\n"
+" -B shell 会执行大括å·å±•å¼€ã€‚\n"
+" -C 设定之åŽï¼Œç¦æ­¢ä»¥é‡å®šå‘输出的方å¼è¦†ç›–普通文件。\n"
+" -E 设定之åŽï¼ŒERR 陷阱会被 shell 函数继承。\n"
+" -H å¯ç”¨ ! 风格的历å²æ›¿æ¢ã€‚当 shell 是交互å¼çš„时候这个标志默认打开。\n"
+" -P 设定之åŽï¼Œå½“执行会改å˜å½“å‰ç›®å½•çš„命令,例如 cd 时,ä¸è§£æžç¬¦å·é“¾æŽ¥ã€‚\n"
+" -T 设定之åŽï¼ŒDEBUG å’Œ RETURN 陷阱会被 shell 函数继承。\n"
+" -- 将所有剩余的å‚数赋值给ä½ç½®å‚数。\n"
+" 如果没有剩余的å‚数,则å–消设定ä½ç½®å‚数。\n"
+" - 将所有剩余的å‚数赋值给ä½ç½®å‚数。\n"
+" 关闭 -x 和 -v 选项。\n"
+" \n"
+" 使用 + 而ä¸æ˜¯ - 会关闭标志。标志也å¯ä»¥åœ¨ shell 被å¯åŠ¨æ—¶ä½¿ç”¨ã€‚当å‰å·²è®¾å®šçš„\n"
+" 标志å¯ä»¥åœ¨ $- å˜é‡ä¸­æ‰¾åˆ°ã€‚剩余的 n 个 <å‚æ•°> 是ä½ç½®å‚数,并且会被按顺åº\n"
+" 赋值给 $1, $2, .. $n。如果没有给定 <å‚æ•°>,则打å°æ‰€æœ‰çš„ shell å˜é‡ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„å‚数。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„å‚数。"
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4102,21 +3978,23 @@ msgid ""
msgstr ""
"å–消设定 shell å˜é‡å’Œå‡½æ•°çš„值和属性。\n"
" \n"
-" 对æ¯ä¸€ä¸ª NAME å称,删除对应的å˜é‡æˆ–函数。\n"
+" 对于æ¯ä¸€ä¸ª <å称>,删除对应的å˜é‡æˆ–函数。\n"
" \n"
" 选项:\n"
-" -f\tå°†æ¯ä¸ª NAME 视为函数\n"
-" -v\tå°†æ¯ä¸ª NAME 视为å˜é‡\n"
-" -n\tå°†æ¯ä¸ª NAME 视为å称引用,åªå–消其本身而éžå…¶æŒ‡å‘çš„å˜é‡\n"
+" -f\tå°†æ¯ä¸ª <å称> 视为 shell 函数\n"
+" -v\tå°†æ¯ä¸ª <å称> 视为 shell å˜é‡\n"
+" -n\tå°†æ¯ä¸ª <å称> 视为å称引用,并å–消设定该å˜é‡æœ¬èº«ï¼Œè€Œä¸æ˜¯\n"
+" \t\t其引用的å˜é‡\n"
" \n"
-" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œunset 首先å°è¯•å–消设定一个å˜é‡ï¼Œå¦‚果失败,å†å°è¯•å–消设定一个函数。\n"
+" ä¸å¸¦é€‰é¡¹æ—¶ï¼Œunset 首先å°è¯•å–消设定一个å˜é‡ï¼Œå¦‚果失败,å†å°è¯•å–消设定\n"
+" 一个函数。\n"
" \n"
-" æŸäº›å˜é‡ä¸å¯ä»¥è¢«å–消设定;å‚è§ `readonly'。\n"
+" æŸäº›å˜é‡ä¸å¯ä»¥è¢«å–消设定;å‚è§ \"readonly\"。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称为åªè¯»ã€‚"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 <å称> 为åªè¯»ã€‚"
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4133,22 +4011,22 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-"为 shell å˜é‡è®¾å®šå¯¼å‡ºå±žæ€§ã€‚\n"
+"为 shell å˜é‡è®¾å®š \"导出\" 属性。\n"
" \n"
-" 标记æ¯ä¸ª NAME å称为自动导出到åŽç»­å‘½ä»¤æ‰§è¡Œçš„环境。如果æ供了 VALUE\n"
-" 则导出å‰å°† VALUE 作为赋值。\n"
+" 标记æ¯ä¸ª <å称>,将其自动导出到åŽç»­æ‰§è¡Œçš„命令的环境。\n"
+" 如果æ供了 <值>,则导出å‰å°†å…¶èµ‹å€¼ä¸º <值>。\n"
" \n"
" 选项:\n"
-" -f\t指 shell 函数\n"
-" -n\t删除æ¯ä¸ª NAME å称的导出属性\n"
+" -f\t所指代的是 shell 函数\n"
+" -n\t删除æ¯ä¸ª <å称> çš„ \"导出\" 属性\n"
" -p\t显示所有导出的å˜é‡å’Œå‡½æ•°çš„列表\n"
" \n"
-" `--' çš„å‚æ•°ç¦ç”¨è¿›ä¸€æ­¥çš„选项处ç†ã€‚\n"
+" å‚æ•° \"--\" ç¦ç”¨åŽç»­çš„选项处ç†ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 <å称> 无效。"
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4170,21 +4048,21 @@ msgid ""
msgstr ""
"标记 shell å˜é‡ä¸ºä¸å¯æ”¹å˜ã€‚\n"
" \n"
-" 标记æ¯ä¸€ä¸ª NAME å称为åªè¯»ï¼›è¿™äº› NAME å˜é‡çš„值将ä¸å¯ä»¥è¢«åŽç»­çš„赋值\n"
-" æ“作所改å˜ã€‚如果æ供了 VALUE,则在标记为åªè¯»ä¹‹å‰å°† VALUE 值赋给å˜é‡ã€‚\n"
+" 标记æ¯ä¸€ä¸ª <å称> 为åªè¯»ï¼›è¿™äº› <å称> 的值将ä¸å¯ä»¥è¢«åŽç»­çš„赋值æ“作\n"
+" 所改å˜ã€‚如果æ供了 <值>,则在标记为åªè¯»ä¹‹å‰å°† <值> 赋给å˜é‡ã€‚\n"
" \n"
" 选项:\n"
-" -a\t指下标数组å˜é‡\n"
-" -A\t指关è”数组标é‡\n"
-" -f\t指 shell 函数\n"
-" -p\t显示åªè¯»å˜é‡æˆ–函数列表,å–决于是å¦æ供了 -f 选项\n"
+" -a\t所指代的是索引数组å˜é‡\n"
+" -A\t所指代的是关è”数组å˜é‡\n"
+" -f\t所指代的是 shell 函数\n"
+" -p\t显示所有åªè¯»å˜é‡æˆ–者函数的列表,å–决于是å¦æ供了 -f 选项\n"
" \n"
-" `--' çš„å‚æ•°ç¦ç”¨è¿›ä¸€æ­¥çš„选项处ç†ã€‚\n"
+" å‚æ•° \"--\" ç¦ç”¨åŽç»­çš„选项处ç†ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 <å称> 无效。"
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4196,13 +4074,13 @@ msgid ""
msgstr ""
"移ä½ä½ç½®å‚数。\n"
" \n"
-" é‡å‘½åä½ç½®å‚æ•° $N+1ã€$N+2 ... 到 $1ã€$2 ... 如果没有给定 N,\n"
-" 则å‡è®¾ä¸º1.\n"
+" å°†ä½ç½®å‚æ•° $N+1,$N+2 ... é‡å‘½å为 $1,$2 ...。如果没有给定 N,\n"
+" 则å‡å®š N 为 1。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éž N 为负或者大于 $#。"
+" 返回æˆåŠŸï¼Œé™¤éž N 为负数或者大于 $#。"
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4217,14 +4095,15 @@ msgid ""
msgstr ""
"åœ¨å½“å‰ shell 中执行一个文件中的命令。\n"
" \n"
-" åœ¨å½“å‰ shell 中读å–并执行 FILENAME 文件中的命令。$PATH å˜é‡ä¸­çš„\n"
-" æ¡ç›®è¢«ç”¨äºŽå¯»æ‰¾åŒ…å« FILENAME 文件的目录。如果æ供了任何的 ARGUMENTS\n"
-" å‚数,则它们将æˆä¸º FILENAME 文件执行时的ä½ç½®å‚数。\n"
+" åœ¨å½“å‰ shell 中读å–并执行 <文件å> 中的命令。将使用 $PATH å˜é‡ä¸­çš„\n"
+" æ¡ç›®å¯»æ‰¾åŒ…å« <文件å> 的目录。如果æ供了 <å‚æ•°>,则它们将æˆä¸º\n"
+" <文件å> 执行时的ä½ç½®å‚数。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回 FILENAME 文件中最åŽä¸€ä¸ªå‘½ä»¤çš„状æ€ï¼›å¦‚æžœ FILENAME 文件ä¸å¯è¯»åˆ™å¤±è´¥ã€‚"
+" 返回 <文件å> 中最åŽä¸€ä¸ªè¢«æ‰§è¡Œçš„命令的状æ€ï¼›å¦‚æžœæ— æ³•è¯»å– <文件å>,\n"
+" 则返回失败。"
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4237,18 +4116,18 @@ msgid ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-"挂起 shell 执行。\n"
+"挂起 shell 的执行。\n"
" \n"
-" 挂起 shell 的执行直到收到 SIGCONT ä¿¡å·ã€‚\n"
+" 挂起此 shell 的执行,直到它收到 SIGCONT ä¿¡å·ã€‚\n"
" 登录 shell ä¸å¯ä»¥è¢«æŒ‚起,除éžå¼ºåˆ¶æ‰§è¡Œã€‚\n"
" \n"
" 选项:\n"
-" -f\t强制挂起,å³ä½¿æ˜¯ç™»å½• shell。\n"
+" -f\t强制挂起,å³ä½¿æ­¤ shell 是登录 shell。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžæ²¡æœ‰å¯ç”¨ä»»åŠ¡æŽ§åˆ¶æˆ–者有错误å‘生。"
+" 返回æˆåŠŸï¼Œé™¤éžæ²¡æœ‰å¯ç”¨ä»»åŠ¡æŽ§åˆ¶ï¼Œæˆ–者有错误å‘生。"
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4328,91 +4207,95 @@ msgid ""
" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
" false or an invalid argument is given."
msgstr ""
-"对æ¡ä»¶è¡¨è¾¾å¼è¿›è¡Œä¼°å€¼ã€‚\n"
-" \n"
-" æ ¹æ® EXPR 表达å¼çš„ä¼°å€¼ä»¥çŠ¶æ€ 0 (真) 或 1 (伪) 退出。\n"
-" 表达å¼å¯ä»¥æ˜¯ä¸€å…ƒæˆ–者二元的。一元表达å¼é€šå¸¸ç”¨äºŽæ£€æµ‹\n"
-" 文件状æ€ã€‚åŒæ—¶è¿˜æœ‰å­—符串æ“作符和数字比较æ“作符。\n"
-" \n"
-" 文件æ“作符:\n"
-" \n"
-" -a 文件 如果文件存在则为真。\n"
-" -b 文件 如果文件为å—特殊文件则为真。\n"
-" -c 文件 如果文件为字符特殊文件则为真。\n"
-" -d 文件 如果文件为目录则为真。\n"
-" -e 文件 如果文件存在则为真。\n"
-" -f 文件 如果文件存在且为常规文件则为真。\n"
-" -g 文件 如果文件的组属性设置打开则为真。\n"
-" -h 文件 如果文件为符å·é“¾æŽ¥åˆ™ä¸ºçœŸã€‚\n"
-" -L 文件 如果文件为符å·é“¾æŽ¥åˆ™ä¸ºçœŸã€‚\n"
-" -k 文件 如果文件的粘滞 (sticky) ä½è®¾å®šåˆ™ä¸ºçœŸã€‚\n"
-" -p 文件 如果文件为命å管é“则为真。\n"
-" -r 文件 如果文件对于您是å¯è¯»çš„则为真。\n"
-" -s 文件 如果文件存在且ä¸ä¸ºç©ºåˆ™ä¸ºçœŸã€‚\n"
-" -S 文件 如果文件是套接字则为真。\n"
-" -t 文件æ述符 如果文件æ述符在一个终端上打开则为真。\n"
-" -u 文件 如果文件的用户数行设置打开则为真。\n"
-" -w 文件 如果文件对您是å¯å†™çš„则为真\n"
-" -x 文件 如果文件对您是å¯æ‰§è¡Œçš„则为真。\n"
-" -O 文件 如果文件是被您所有的则为真。\n"
-" -G 文件 如果文件被您的组所有则为真。\n"
-" -N 文件 如果文件上次被读å–之åŽä¿®æ”¹è¿‡åˆ™ä¸ºçœŸã€‚\n"
-" \n"
-" FILE1 -nt FILE2 如果 file1 文件新于 file2 文件则为真(æ ¹æ®\n"
-" 修改日期)。\n"
-" \n"
-" FILE1 -ot FILE2 如果 file1 文件旧于 file2 文件则为真。\n"
-" \n"
-" FILE1 -ef FILE2 如果 file1 文件是 file2 文件的硬链接则为真。\n"
-" \n"
-" 字符串æ“作符\n"
-" \n"
-" -z 字符串 如果字符串为空则为真。\n"
+"对æ¡ä»¶è¡¨è¾¾å¼è¿›è¡Œæ±‚值。\n"
" \n"
-" -n 字符串\n"
-" 字符串 如果字符串ä¸ä¸ºç©ºåˆ™ä¸ºçœŸã€‚\n"
+" æ ¹æ® <表达å¼> çš„æ±‚å€¼ç»“æžœï¼Œä»¥çŠ¶æ€ 0(真)或 1(å‡ï¼‰é€€å‡ºã€‚\n"
+" 表达å¼å¯ä»¥æ˜¯ä¸€å…ƒçš„或者二元的。一元表达å¼é€šå¸¸ç”¨äºŽæ£€æµ‹æ–‡ä»¶çŠ¶æ€ã€‚\n"
+" åŒæ—¶è¿˜æœ‰å­—符串è¿ç®—符和数值比较è¿ç®—符。\n"
" \n"
-" STRING1 = STRING2\n"
-" 如果 string1 å’Œ string2 字符串相åŒåˆ™ä¸ºçœŸã€‚\n"
-" STRING1 != STRING2\n"
-" 如果 string1 å’Œ string2 字符串ä¸ç›¸åŒåˆ™ä¸ºçœŸã€‚\n"
-" STRING1 < STRING2\n"
-" å¦‚æžœæŒ‰å­—å…¸æŽ’åº string1 在 string2 串之å‰åˆ™ä¸ºçœŸã€‚\n"
-" STRING1 > STRING2\n"
-" å¦‚æžœæŒ‰å­—å…¸æŽ’åº string1 在 string2 串之å‰åˆ™ä¸ºçœŸã€‚\n"
+" test 的行为å–决于å‚æ•°çš„æ•°é‡ã€‚请阅读 bash 手册页以获å–完整的\n"
+" 说明文档。\n"
+" \n"
+" 文件è¿ç®—符:\n"
+" \n"
+" -a 文件 如果 <文件> 存在则为真。\n"
+" -b 文件 如果 <文件> 为å—特殊文件则为真。\n"
+" -c 文件 如果 <文件> 为字符特殊文件则为真。\n"
+" -d 文件 如果 <文件> 为目录则为真。\n"
+" -e 文件 如果 <文件> 存在则为真。\n"
+" -f 文件 如果 <文件> 存在且为普通文件则为真。\n"
+" -g 文件 如果 <文件> 设置了 setgid ä½åˆ™ä¸ºçœŸã€‚\n"
+" -h 文件 如果 <文件> 为符å·é“¾æŽ¥åˆ™ä¸ºçœŸã€‚\n"
+" -L 文件 如果 <文件> 为符å·é“¾æŽ¥åˆ™ä¸ºçœŸã€‚\n"
+" -k 文件 如果 <文件> è®¾ç½®äº†ç²˜æ»žä½ (sticky bit) 则为真。\n"
+" -p 文件 如果 <文件> 为命å管é“则为真。\n"
+" -r 文件 如果 <文件> 对您是å¯è¯»çš„则为真。\n"
+" -s 文件 如果 <文件> 存在且ä¸ä¸ºç©ºåˆ™ä¸ºçœŸã€‚\n"
+" -S 文件 如果 <文件> 是套接字则为真。\n"
+" -t FD 如果文件æ述符 <FD> 已在一个终端上打开则为真。\n"
+" -u 文件 如果 <文件> 设置了 setuid ä½åˆ™ä¸ºçœŸã€‚\n"
+" -w 文件 如果 <文件> 对您是å¯å†™çš„则为真。\n"
+" -x 文件 如果 <文件> 对您是å¯æ‰§è¡Œçš„则为真。\n"
+" -O 文件 如果 <文件> 是被您(有效 uid)所有的则为真。\n"
+" -G 文件 如果 <文件> 是被您的组(有效 gid)所有的则为真。\n"
+" -N 文件 如果 <文件> 上次读å–之åŽè¢«ä¿®æ”¹è¿‡åˆ™ä¸ºçœŸã€‚\n"
+" \n"
+" 文件1 -nt 文件2 如果 <文件1> 新于 <文件2> 则为真(根æ®ä¿®æ”¹æ—¥æœŸ)。\n"
" \n"
-" 其他æ“作符:\n"
+" 文件1 -ot 文件2 如果 <文件1> 旧于 <文件2> 则为真。\n"
" \n"
-" -o 选项 如果指定 shell 选项å¯ç”¨åˆ™ä¸ºçœŸã€‚\n"
-" -v VAR 如果指定 Shell å˜é‡ VAR 已赋值则为真。\n"
-" -R VAR 如果指定 Shell å˜é‡ VAR 已赋值且为å称引用则为真。\n"
-" ! EXPR å¦‚æžœè¡¨è¾¾å¼ expr 为å‡åˆ™ä¸ºçœŸã€‚\n"
-" EXPR1 -a EXPR2 如果 expr1 和 expr2 都为真则为真。\n"
-" EXPR1 -o EXPR2 如果 expr1 和 expr2 有一个为真则为真。\n"
+" 文件1 -ef 文件2 如果 <文件1> 是到 <文件2> 的硬链接则为真。\n"
" \n"
-" arg1 OP arg2 算术测试。OPæ“作符å¯ä»¥æ˜¯ -eqã€-neã€\n"
-" -ltã€-leã€-gtã€æˆ– -ge 中的一个。\n"
+" 字符串è¿ç®—符:\n"
" \n"
-" 二元算术æ“作返回真,如果 ARG1 å‚数等于ã€ä¸ç­‰äºŽã€\n"
-" å°äºŽã€å°äºŽç­‰äºŽã€å¤§äºŽã€æˆ–者大于等于 ARG2 å‚数。\n"
+" -z 字符串 如果 <字符串> 为空则为真。\n"
+" \n"
+" -n 字符串\n"
+" 字符串 如果 <字符串> ä¸ä¸ºç©ºåˆ™ä¸ºçœŸã€‚\n"
+" \n"
+" 字符串1 = 字符串2\n"
+" 如果两个字符串相等则为真。\n"
+" 字符串1 != 字符串2\n"
+" 如果两个字符串ä¸ç›¸ç­‰åˆ™ä¸ºçœŸã€‚\n"
+" 字符串1 < 字符串2\n"
+" å¦‚æžœæŒ‰å­—å…¸åº <字符串1> 在 <字符串2> 之å‰åˆ™ä¸ºçœŸã€‚\n"
+" 字符串1 > 字符串2\n"
+" å¦‚æžœæŒ‰å­—å…¸åº <字符串1> 在 <字符串2> 之åŽåˆ™ä¸ºçœŸã€‚\n"
+" \n"
+" 其他è¿ç®—符:\n"
+" \n"
+" -o 选项 如果指定的 shell 选项 <选项> å¯ç”¨åˆ™ä¸ºçœŸã€‚\n"
+" -v å˜é‡ 如果指定的 shell å˜é‡ <å˜é‡> 已设定则为真。\n"
+" -R å˜é‡ 如果指定的 shell å˜é‡ <å˜é‡> 已设定且为å称引用则为真。\n"
+" ! è¡¨è¾¾å¼ å¦‚æžœ <表达å¼> 为å‡åˆ™ä¸ºçœŸã€‚\n"
+" 表达å¼1 -a 表达å¼2\n"
+" 如果 <表达å¼1> å’Œ <表达å¼2> 都为真则为真。\n"
+" 表达å¼1 -o 表达å¼2\n"
+" 如果 <表达å¼1> å’Œ <表达å¼2> 中任何一个为真则为真。\n"
+" \n"
+" å‚æ•°1 è¿ç®—符 å‚æ•°2\n"
+" 算术测试。<è¿ç®—符> å¯ä»¥æ˜¯ -eqã€-neã€\n"
+" -ltã€-leã€-gt 或 -ge 中的一个。\n"
+" \n"
+" 二元算术è¿ç®—符返回真,如果 <å‚æ•°1> 等于ã€ä¸ç­‰äºŽã€å°äºŽã€å°äºŽç­‰äºŽã€\n"
+" 大于,或者大于等于 <å‚æ•°2>。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 如果 EXPR 表达å¼ä¼°å€¼ä¸ºçœŸåˆ™è¿”回æˆåŠŸï¼›å¦‚æžœ EXPR 表达å¼ä¼°å€¼\n"
-" 为å‡æˆ–者使用了无效的å‚数则返回失败。"
+" 如果 <表达å¼> 求值结果为真则返回æˆåŠŸï¼›å¦‚æžœ <表达å¼> 求值结果为å‡ï¼Œ\n"
+" 或者使用了无效的å‚数,则返回失败。"
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
" This is a synonym for the \"test\" builtin, but the last argument must\n"
" be a literal `]', to match the opening `['."
msgstr ""
-"估值æ¡ä»¶è¡¨è¾¾å¼ã€‚\n"
+"对æ¡ä»¶è¡¨è¾¾å¼è¿›è¡Œæ±‚值。\n"
" \n"
-" 是内建命令 \"test\" çš„åŒä¹‰è¯ï¼Œä½†æ˜¯æœ€åŽä¸€ä¸ªå‚数必须是\n"
-" 字符 `]',以匹é…起始的 `['。"
+" åŒ \"test\" 内建,但是最åŽä¸€ä¸ªå‚数必须是字符 \"]\",以匹é…起始的 \"[\"。"
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4422,17 +4305,16 @@ msgid ""
" Exit Status:\n"
" Always succeeds."
msgstr ""
-"显示进程时间\n"
+"显示进程时间。\n"
" \n"
-" æ‰“å° shell åŠå…¶æ‰€æœ‰å­è¿›ç¨‹çš„累计用户空间和\n"
-" 系统空间执行时间。\n"
+" 打å°æ­¤ shell åŠå…¶æ‰€æœ‰å­è¿›ç¨‹çš„累计用户和系统时间。\n"
" \n"
-" 退出状æ€\n"
+" 退出状æ€ï¼š\n"
" 总是æˆåŠŸã€‚"
# EXIT and DEBUG should be as-is. Use before you translate, please.
# The -signal is only an example; Read carefully.
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4466,34 +4348,36 @@ msgid ""
" Exit Status:\n"
" Returns success unless a SIGSPEC is invalid or an invalid option is given."
msgstr ""
-"对信å·å’Œå…¶ä»–事件设陷阱。\n"
+"为信å·å’Œå…¶ä»–事件设置陷阱。\n"
" \n"
-" 定义一个处ç†å™¨ï¼Œåœ¨ shell 接收到信å·å’Œå…¶ä»–æ¡ä»¶ä¸‹æ‰§è¡Œã€‚\n"
+" 定义并激活当 shell 接收到信å·æˆ–满足其他æ¡ä»¶æ—¶æ‰§è¡Œçš„处ç†ç¨‹åºã€‚\n"
" \n"
-" ARG å‚数是当 shell 接收到 SIGNAL_SPEC ä¿¡å·æ—¶è¯»å–和执行的命令。\n"
-" 如果没有指定 ARG å‚æ•° (并且åªç»™å‡ºä¸€ä¸ª SIGNAL_SPEC ä¿¡å·) 或者\n"
-" ARG å‚数为\n"
-" `-',æ¯ä¸€ä¸ªæŒ‡å®šçš„å‚数会被é‡ç½®ä¸ºåŽŸå§‹å€¼ã€‚如果 ARG å‚数是一个空串,则æ¯ä¸€ä¸ª\n"
-" SIGNAL_SPEC ä¿¡å·ä¼šè¢« shell 和它å¯åŠ¨çš„命令忽略。\n"
+" <å‚æ•°> 是当 shell 接收到 <ä¿¡å·è¯´æ˜Žç¬¦> 时读å–和执行的命令。如果\n"
+" 没有指定 <å‚æ•°>(并且åªç»™å‡ºä¸€ä¸ª <ä¿¡å·è¯´æ˜Žç¬¦>)或者 <å‚æ•°> 为 \"-\",\n"
+" 则æ¯ä¸€ä¸ªæŒ‡å®šçš„ä¿¡å·ä¼šè¢«é‡ç½®ä¸ºåŽŸå§‹å€¼ã€‚如果 <å‚æ•°> 是空字符串,则æ¯ä¸€ä¸ª\n"
+" <ä¿¡å·è¯´æ˜Žç¬¦> 会被 shell 和它å¯åŠ¨çš„命令忽略。\n"
" \n"
-" 如果一个 SIGNAL_SPEC ä¿¡å·æ˜¯ EXIT (0) ,则 ARG 命令会在 shell 退出时被\n"
-" 执行。如果一个 SIGNAL_SPEC ä¿¡å·æ˜¯ DEBUG,则 ARG命令会在æ¯ä¸€ä¸ªç®€å•å‘½\n"
-" 令之å‰æ‰§è¡Œã€‚\n"
+" 如果一个 <ä¿¡å·è¯´æ˜Žç¬¦> 是 EXIT (0),则 <å‚æ•°> 会在 shell 退出时被执行。\n"
+" 如果一个 <ä¿¡å·è¯´æ˜Žç¬¦> 是 DEBUG,则 <å‚æ•°> 会在æ¯ä¸€ä¸ªç®€å•å‘½ä»¤ä¹‹å‰æ‰§è¡Œã€‚\n"
+" 如果一个 <ä¿¡å·è¯´æ˜Žç¬¦> 是 RETURN,则 <å‚æ•°> 会在æ¯ä¸€ä¸ª shell 函数或者\n"
+" 通过 . 或 source 内建执行的脚本执行结æŸæ—¶è¢«æ‰§è¡Œã€‚如果一个 <ä¿¡å·è¯´æ˜Žç¬¦>\n"
+" 是 ERR,则 <å‚æ•°> 会在命令返回失败,并且å‡å¦‚å¯ç”¨äº† -e 选项,本次失败就\n"
+" 会导致 shell 退出的情况下被执行。\n"
" \n"
-" 如果ä¸æä¾›å‚数,trap 打å°åˆ—表显示æ¯ä¸€ä¸ªä¸Žæ¯ä¸€ä¸ªä¿¡å·ç›¸å…³è”的命令。\n"
+" 如果ä¸æä¾›å‚数,trap 打å°ä¸Žæ¯ä¸€ä¸ªä¿¡å·ç›¸å…³è”的命令列表。\n"
" \n"
" 选项:\n"
-" -l\t打å°ä¸€ä¸ªä¿¡å·å称和它们对应的编å·çš„列表\n"
-" -p\t打å°ä¸Žæ¯ä¸ª SIGNAL_SPEC ä¿¡å·ç›¸å…³è”的陷阱命令\n"
+" -l\t打å°ä¿¡å·å称以åŠå’Œå®ƒä»¬å¯¹åº”çš„ç¼–å·çš„列表\n"
+" -p\t打å°ä¸Žæ¯ä¸ª <ä¿¡å·è¯´æ˜Žç¬¦> 相关è”的陷阱命令\n"
" \n"
-" æ¯ä¸€ä¸ª SIGNAL_SPEC ä¿¡å·å¯ä»¥æ˜¯ <signal.h> 中的信å·å称或者信å·ç¼–å·ã€‚\n"
-" ä¿¡å·å称大å°å†™æ•æ„Ÿä¸”å¯ä»¥ä½¿ç”¨ SIG å‰ç¼€ã€‚ä¿¡å·å¯ç”¨ \"kill -ä¿¡å· $$\"\n"
-" å‘é€ç»™ shell。\n"
+" æ¯ä¸€ä¸ª <ä¿¡å·è¯´æ˜Žç¬¦> å¯ä»¥æ˜¯ <signal.h> 中的信å·å称或者信å·ç¼–å·ã€‚ä¿¡å·å称\n"
+" 是大å°å†™æ•æ„Ÿçš„,并且 SIG å‰ç¼€æ˜¯å¯é€‰çš„。å¯ä»¥ä½¿ç”¨ \"kill -ä¿¡å· $$\" ç»™ shell\n"
+" å‘é€ä¿¡å·ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 SIGSPEC。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„ <ä¿¡å·è¯´æ˜Žç¬¦>,或者无效的选项。"
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4521,76 +4405,29 @@ msgid ""
" Exit Status:\n"
" Returns success if all of the NAMEs are found; fails if any are not found."
msgstr ""
-"显示命令类型的信æ¯ã€‚\n"
+"显示关于命令类型的信æ¯ã€‚\n"
" \n"
-" 对于æ¯ä¸€ä¸ª NAME å称,指示如果作为命令它将如何被解释。\n"
+" 对于æ¯ä¸€ä¸ª <å称>,指出如果作为命令å使用时,它将如何被解释。\n"
" \n"
" 选项:\n"
-" -a\t显示所有包å«å称为 NAME çš„å¯æ‰§è¡Œæ–‡ä»¶çš„ä½ç½®ï¼›\n"
-" \t\t包括别åã€å†…建和函数。仅当 `-p' 选项没有使用时\n"
-" -f\t抑制 shell 函数查询\n"
-" -P\t为æ¯ä¸ª NAME å称惊醒 PATH 路径æœç´¢ï¼Œå³ä½¿å®ƒæ˜¯åˆ«åã€\n"
-" \t\t内建或函数,并且返回将被执行的ç£ç›˜ä¸Šæ–‡ä»¶çš„å称。\n"
-" -p\t返回将被执行的ç£ç›˜ä¸Šæ–‡ä»¶çš„å称,或者当 `type -t NAME'\n"
-" \tä¸è¿”回 `file' 时,ä¸è¿”回任何值。\n"
-" -t\t返回下列è¯ä¸­çš„任何一个 `alias'ã€`keyword'ã€\n"
-" \t`function'ã€`builtin'ã€`file' 或者 `',相应地如果 NAME 是\n"
-" \t一个别åã€shell ä¿ç•™å­—ã€shell 函数ã€shell 内建ã€\n"
-" \tç£ç›˜æ–‡ä»¶æˆ–没有找到。\n"
+" -a\t当且仅当没有åŒæ—¶ä½¿ç”¨ \"-p\" 选项时,显示所有包å«å为 <å称>\n"
+" \t\tçš„å¯æ‰§è¡Œæ–‡ä»¶çš„ä½ç½®ï¼›åŒ…括别åã€å†…建和函数\n"
+" -f\t阻止 shell 函数查找æµç¨‹\n"
+" -P\t强制对æ¯ä¸ª <å称> æœç´¢ PATH,å³ä½¿å®ƒæ˜¯åˆ«åã€å†…建或函数,\n"
+" \t\t并且返回将被执行的ç£ç›˜ä¸Šçš„文件的å称\n"
+" -p\t返回将被执行的ç£ç›˜ä¸Šçš„文件的å称,或者当 \"type -t å称\"\n"
+" \t\tä¸è¿”回 \"file\" 时,ä¸è¿”回任何值\n"
+" -t\t返回下列å•è¯ä¸­çš„一个:\"alias\"ã€\"keyword\"ã€\"function\"ã€\n"
+" \t\t\"builtin\"ã€\"file\" 或者 \"\",分别表示 <å称> 是一个别åã€\n"
+" \t\tshell ä¿ç•™å­—ã€shell 函数ã€shell 内建ã€ç£ç›˜æ–‡ä»¶æˆ–者未找到\n"
" \n"
" å‚数:\n"
-" NAME\tå°†è¦è§£æžçš„命令。\n"
+" å称\t需è¦è§£é‡Šçš„命令。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 如果所有的 NAME 命令都找到则返回æˆåŠŸï¼›ä»»ä½•ä¸€ä¸ªæ‰¾ä¸åˆ°åˆ™å¤±è´¥ã€‚"
-
-#: builtins.c:1431
-#, fuzzy
-#| msgid ""
-#| "Modify shell resource limits.\n"
-#| " \n"
-#| " Provides control over the resources available to the shell and processes\n"
-#| " it creates, on systems that allow such control.\n"
-#| " \n"
-#| " Options:\n"
-#| " -S\tuse the `soft' resource limit\n"
-#| " -H\tuse the `hard' resource limit\n"
-#| " -a\tall current limits are reported\n"
-#| " -b\tthe socket buffer size\n"
-#| " -c\tthe maximum size of core files created\n"
-#| " -d\tthe maximum size of a process's data segment\n"
-#| " -e\tthe maximum scheduling priority (`nice')\n"
-#| " -f\tthe maximum size of files written by the shell and its children\n"
-#| " -i\tthe maximum number of pending signals\n"
-#| " -k\tthe maximum number of kqueues allocated for this process\n"
-#| " -l\tthe maximum size a process may lock into memory\n"
-#| " -m\tthe maximum resident set size\n"
-#| " -n\tthe maximum number of open file descriptors\n"
-#| " -p\tthe pipe buffer size\n"
-#| " -q\tthe maximum number of bytes in POSIX message queues\n"
-#| " -r\tthe maximum real-time scheduling priority\n"
-#| " -s\tthe maximum stack size\n"
-#| " -t\tthe maximum amount of cpu time in seconds\n"
-#| " -u\tthe maximum number of user processes\n"
-#| " -v\tthe size of virtual memory\n"
-#| " -x\tthe maximum number of file locks\n"
-#| " -P\tthe maximum number of pseudoterminals\n"
-#| " -T\tthe maximum number of threads\n"
-#| " \n"
-#| " Not all options are available on all platforms.\n"
-#| " \n"
-#| " If LIMIT is given, it is the new value of the specified resource; the\n"
-#| " special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
-#| " current soft limit, the current hard limit, and no limit, respectively.\n"
-#| " Otherwise, the current value of the specified resource is printed. If\n"
-#| " no option is given, then -f is assumed.\n"
-#| " \n"
-#| " Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-#| " -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-#| " number of processes.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or an error occurs."
+" 如果所有的 <å称> 都被找到则返回æˆåŠŸï¼›ä»»ä½•ä¸€ä¸ªæœªæ‰¾åˆ°åˆ™å¤±è´¥ã€‚"
+
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4640,47 +4477,49 @@ msgid ""
msgstr ""
"修改 shell 资æºé™åˆ¶ã€‚\n"
" \n"
-" 在å…许此类控制的系统上,æ供对于 shell åŠå…¶åˆ›å»ºçš„进程所å¯ç”¨çš„\n"
-" 资æºçš„控制。\n"
+" 在å…许此类控制的系统上,æ供对于 shell åŠå…¶åˆ›å»ºçš„进程å¯ä½¿ç”¨çš„资æºçš„\n"
+" 控制。\n"
" \n"
" 选项:\n"
-" -S\t使用软 (`soft') 资æºé™åˆ¶\n"
-" -H\t使用硬 (`hard') 资æºé™åˆ¶\n"
-" -a\t所有当å‰é™åˆ¶éƒ½è¢«æŠ¥å‘Š\n"
-" -b\t套接字缓存尺寸\n"
-" -c\t创建的核文件的最大尺寸\n"
-" -d\t一个进程的数æ®åŒºçš„最大尺寸\n"
-" -e\t最高的调度优先级 (`nice')\n"
-" -f\t有 shell åŠå…¶å­è¿›ç¨‹å¯ä»¥å†™çš„最大文件尺寸\n"
-" -i\t最多的å¯ä»¥æŒ‚èµ·çš„ä¿¡å·æ•°\n"
+" -S\t使用 \"软\" (soft) 资æºé™åˆ¶\n"
+" -H\t使用 \"硬\" (hard) 资æºé™åˆ¶\n"
+" -a\t报告当å‰çš„所有é™åˆ¶\n"
+" -b\t套接字缓冲区大å°\n"
+" -c\t创建的核心文件的最大大å°\n"
+" -d\t一个进程的数æ®æ®µçš„最大大å°\n"
+" -e\t调度优先级 (nice) 的最大值\n"
+" -f\tshell åŠå…¶å­è¿›ç¨‹å¯ä»¥å†™çš„最大文件大å°\n"
+" -i\tå¯ä»¥æŒ‚起的最大信å·æ•°é‡\n"
" -k\t分é…给此进程的最大 kqueue æ•°é‡\n"
-" -l\t一个进程å¯ä»¥é”定的最大内存尺寸\n"
-" -m\t最大的内存进驻尺寸\n"
-" -n\t最多的打开的文件æ述符个数\n"
-" -p\t管é“缓冲区尺寸\n"
-" -q\tPOSIX ä¿¡æ¯é˜Ÿåˆ—的最大字节数\n"
+" -l\t一个进程å¯ä»¥é”定的最大内存大å°\n"
+" -m\t驻留集的最大大å°\n"
+" -n\t打开的文件æ述符的最大个数\n"
+" -p\t管é“缓冲区大å°\n"
+" -q\tPOSIX 消æ¯é˜Ÿåˆ—的最大字节数\n"
" -r\t实时调度的最大优先级\n"
-" -s\t最大栈尺寸\n"
-" -t\t最大的CPU时间,以秒为å•ä½\n"
+" -s\t最大栈大å°\n"
+" -t\t最大的 CPU 时间,以秒为å•ä½\n"
" -u\t最大用户进程数\n"
-" -v\t虚拟内存尺寸\n"
-" -x\t最大的文件é”æ•°é‡\n"
-" -P\t最大伪终端数é‡\n"
+" -v\t虚拟内存大å°\n"
+" -x\t文件é”的最大数é‡\n"
+" -P\t伪终端的最大数é‡\n"
+" -R\t实时进程阻塞å‰å¯è¿è¡Œçš„最大时间\n"
" -T\t最大线程数é‡\n"
" \n"
-" 并éžæ‰€æœ‰é€‰é¡¹åœ¨æ‰€æœ‰ç³»ç»Ÿä¸Šå¯ç”¨ã€‚\n"
+" 并éžæ‰€æœ‰é€‰é¡¹éƒ½åœ¨æ‰€æœ‰ç³»ç»Ÿä¸Šå¯ç”¨ã€‚\n"
" \n"
-" 如果æ供了 LIMIT å˜é‡ï¼Œåˆ™å®ƒä¸ºæŒ‡å®šèµ„æºçš„新的值;特别的 LIMIT 值为\n"
-" `soft'ã€`hard'å’Œ`unlimited',分别表示当å‰çš„软é™åˆ¶ï¼Œç¡¬é™åˆ¶å’Œæ— é™åˆ¶ã€‚\n"
-" å¦åˆ™æ‰“å°æŒ‡å®šèµ„æºçš„当å‰é™åˆ¶å€¼ï¼Œä¸å¸¦é€‰é¡¹åˆ™å‡å®šä¸º -f\n"
+" 如果æ供了 <é™åˆ¶>,则它将æˆä¸ºæŒ‡å®šçš„资æºçš„新的值;特殊的 <é™åˆ¶> 值为\n"
+" \"soft\"ã€\"hard\" å’Œ \"unlimited\",分别表示当å‰çš„软é™åˆ¶ã€å½“å‰çš„硬é™åˆ¶ï¼Œ\n"
+" 以åŠæ— é™åˆ¶ã€‚å¦åˆ™ï¼Œæ‰“å°æŒ‡å®šèµ„æºçš„当å‰é™åˆ¶å€¼ã€‚如果未æ供选项,则å‡å®š\n"
+" 为 -f。\n"
" \n"
-" å–值都是 1024 字节为å•ä½ï¼Œé™¤äº† -t 以秒为å•ä½ï¼Œ-p 以 512 字节递增,\n"
-" -u 为无范围的进程数é‡ã€‚\n"
+" é™åˆ¶å€¼çš„å•ä½éƒ½æ˜¯ 1024 字节,除了 -t å•ä½æ˜¯ç§’,-p å•ä½æ˜¯ 512 字节,\n"
+" -u 为未ç»ç¼©æ”¾çš„进程数é‡ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者错误å‘生。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者有错误å‘生。"
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4699,39 +4538,19 @@ msgid ""
msgstr ""
"显示或设定文件模å¼æŽ©ç ã€‚\n"
" \n"
-" 设定用户文件创建掩ç ä¸º MODE 模å¼ã€‚如果çœç•¥äº† MODE,则\n"
-" 打å°å½“å‰æŽ©ç çš„值。\n"
+" 设定用户文件创建掩ç ä¸º <模å¼>。如果çœç•¥ <模å¼>,则打å°å½“å‰æŽ©ç çš„值。\n"
" \n"
-" 如果 MODE 模å¼ä»¥æ•°å­—开头,则被当作八进制数解æžï¼›å¦åˆ™æ˜¯ä¸€ä¸ª\n"
-" chmod(1) å¯æŽ¥æ”¶çš„符å·æ¨¡å¼ä¸²ã€‚\n"
+" 如果 <模å¼> 以数字开头,则按照八进制数进行解释;å¦åˆ™è§†ä¸ºä¸€ä¸ª\n"
+" chmod(1) å¯æŽ¥å—的符å·æ¨¡å¼ä¸²ã€‚\n"
" \n"
" 选项:\n"
-" -p\t如果çœç•¥ MODE 模å¼ï¼Œä»¥å¯é‡ç”¨ä¸ºè¾“入的格å¼è¾“å…¥\n"
+" -p\t如果çœç•¥ <模å¼>,以å¯é‡ç”¨ä½œè¾“入的格å¼è¾“出\n"
" -S\t以符å·å½¢å¼è¾“出,å¦åˆ™ä»¥å…«è¿›åˆ¶æ•°æ ¼å¼è¾“出\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„ MODE 模å¼æˆ–者选项。"
-
-#: builtins.c:1502
-#, fuzzy
-#| msgid ""
-#| "Wait for job completion and return exit status.\n"
-#| " \n"
-#| " Waits for each process identified by an ID, which may be a process ID or a\n"
-#| " job specification, and reports its termination status. If ID is not\n"
-#| " given, waits for all currently active child processes, and the return\n"
-#| " status is zero. If ID is a job specification, waits for all processes\n"
-#| " in that job's pipeline.\n"
-#| " \n"
-#| " If the -n option is supplied, waits for the next job to terminate and\n"
-#| " returns its exit status.\n"
-#| " \n"
-#| " If the -f option is supplied, and job control is enabled, waits for the\n"
-#| " specified ID to terminate, instead of waiting for it to change status.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-#| " option is given."
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„ <模å¼> 或者选项。"
+
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4760,19 +4579,26 @@ msgid ""
msgstr ""
"等待任务完æˆå¹¶è¿”回退出状æ€ã€‚\n"
" \n"
-" 等待以 ID ç¼–å·è¯†åˆ«çš„进程,其中 ID å¯ä»¥æ˜¯è¿›ç¨‹ç¼–å·æˆ–者任务声明,\n"
-" 并报告它的终止状æ€ã€‚如果 ID 没有给出,则等待所有的当å‰æ´»è·ƒå­\n"
-" 进程,并且返回状æ€ä¸ºé›¶ã€‚如果 ID 是任务声明,等待任务管é“中的\n"
-" 所有进程。\n"
+" 等待以 <ID> 指定的进程,其中 <ID> å¯ä»¥æ˜¯è¿›ç¨‹ ID 或者任务说明符,\n"
+" 并报告它的终止状æ€ã€‚如果没有指定 <ID> ,则等待当å‰æ´»è·ƒçš„所有å­\n"
+" 进程,并且返回状æ€ä¸ºé›¶ã€‚如果 <ID> 是任务说明符,则等待该任务的\n"
+" æµæ°´çº¿ä¸­çš„所有进程。\n"
" \n"
-" 若给定了 -n 选项,等待下一个任务完æˆå¹¶è¿”回其状æ€ã€‚\n"
+" 若给定了 -n 选项,从 <ID> 列表中等待å•ä¸ªä»»åŠ¡å®Œæˆï¼Œæˆ–者,\n"
+" 如果没有æä¾› <ID>,等待下一个任务完æˆå¹¶è¿”回其退出状æ€ã€‚\n"
+" \n"
+" 若给定了 -p 选项, 被返回退出状æ€çš„任务的进程 ID 或任务 ID 将被赋值\n"
+" 给选项的å‚数指定的 <å˜é‡>。该å˜é‡ä¼šé¦–先被å–消设定,然åŽæ‰ä¼šè¿›è¡Œèµ‹å€¼ã€‚\n"
+" 该选项åªæœ‰å’Œ -n 选项åŒæ—¶ä½¿ç”¨æ—¶æ‰æœ‰ç”¨ã€‚\n"
+" \n"
+" 若给定了 -f 选项,且å¯ç”¨äº†ä»»åŠ¡æŽ§åˆ¶ï¼Œåˆ™ç­‰å¾…指定的 <ID> 终止,\n"
+" 而ä¸æ˜¯ç­‰å¾…它改å˜çŠ¶æ€ã€‚\n"
" \n"
-" 若给定了 -f 选项,且已å¯ç”¨äº†ä»»åŠ¡æŽ§åˆ¶ï¼Œåˆ™ç­‰å¾…指定的 ID 终止\n"
-" 而éžç­‰å¾…它改å˜çŠ¶æ€ã€‚\n"
" 退出状æ€ï¼š\n"
-" 返回最åŽä¸€ä¸ª ID 进程的状æ€ï¼›å¦‚果使用了无效的 ID 或者选项则失败。"
+" 返回最åŽä¸€ä¸ª <ID> 的状æ€ï¼›å¦‚果使用了无效的 <ID> ,或者使用了无效的\n"
+" 选项,或者给定了 -n 选项但 shell 没有尚未等待的å­è¿›ç¨‹ï¼Œåˆ™å¤±è´¥ã€‚"
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4786,13 +4612,13 @@ msgid ""
msgstr ""
"等待进程完æˆå¹¶ä¸”返回退出状æ€ã€‚\n"
" \n"
-" 等待指定进程并报告它的终止状æ€ã€‚如果没有æä¾› PID,则当å‰æ‰€æœ‰çš„活跃\n"
-" å­è¿›ç¨‹éƒ½ä¼šè¢«ç­‰å¾…,并且返回ç ä¸ºé›¶ã€‚PID 必须为进程å·ã€‚\n"
+" 等待以 <PID> 指定的进程并报告它的终止状æ€ã€‚如果没有æä¾› <PID>,则等待当å‰\n"
+" 所有活跃的å­è¿›ç¨‹ï¼Œå¹¶ä¸”返回ç ä¸ºé›¶ã€‚<PID> 必须为进程 ID。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回进程 ID 的状æ€ï¼›å¦‚æžœ PID 是无效的进程å·æˆ–者指定了无效的选项则失败。"
+" 返回最åŽä¸€ä¸ª <PID> 的状æ€ï¼›å¦‚æžœ <PID> 无效,或者使用了无效的选项,则失败。"
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4806,14 +4632,14 @@ msgid ""
msgstr ""
"为列表中的æ¯ä¸ªæˆå‘˜æ‰§è¡Œå‘½ä»¤ã€‚\n"
" \n"
-" “forâ€å¾ªçŽ¯ä¸ºåˆ—表中的æ¯ä¸ªæˆå‘˜æ‰§è¡Œä¸€ç³»åˆ—的命令。如果没有\n"
-" “in <è¯è¯­> ...;â€åˆ™å‡å®šä½¿ç”¨â€œin \"$@\"â€ã€‚对于 <è¯è¯­> 中的æ¯\n"
-" 个元素,<å称> å˜é‡è¢«è®¾å®šä¸ºè¯¥å…ƒç´ åŽæ‰§è¡Œ <命令>。\n"
+" \"for\" 循环为列表中的æ¯ä¸ªæˆå‘˜æ‰§è¡Œä¸€ç³»åˆ—的命令。\n"
+" 如果没有 \"in è¯è¯­ ...;\" ,则å‡å®šä½¿ç”¨ `in \"$@\"'。对于 <è¯è¯­> 中的\n"
+" æ¯ä¸ªå…ƒç´ ï¼Œ<å称> 被设定为该元素,然åŽæ‰§è¡Œ <命令>。\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回最åŽæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4832,18 +4658,18 @@ msgstr ""
"算术 for 循环。\n"
" \n"
" 等价于\n"
-" \t(( EXP1 ))\n"
-" \twhile (( EXP2 )); do\n"
-" \t\t命令们\n"
-" \t\t(( EXP3 ))\n"
+" \t(( 表达å¼1 ))\n"
+" \twhile (( 表达å¼2 )); do\n"
+" \t\t命令\n"
+" \t\t(( 表达å¼3 ))\n"
" \tdone\n"
-" EXP1ã€EXP2 å’Œ EXP3 都是算术表达å¼ã€‚如果çœç•¥ä»»ä½•è¡¨è¾¾å¼ï¼Œ\n"
-" 则等åŒäºŽä½¿ç”¨äº†ä¼°å€¼ä¸º1的表达å¼ã€‚\n"
+" <表达å¼1>ã€<表达å¼2> å’Œ <表达å¼3> 都是算术表达å¼ã€‚如果çœç•¥ä»»ä½•è¡¨è¾¾å¼ï¼Œ\n"
+" 则等价于使用了求值结果为 1 的表达å¼ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回最åŽæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4864,19 +4690,19 @@ msgid ""
msgstr ""
"从列表中选å–è¯å¹¶ä¸”执行命令。\n"
" \n"
-" <è¯è¯­...> 被展开,生æˆä¸€ä¸ªè¯çš„列表。展开的è¯é›†åˆè¢«æ‰“å°\n"
-" 在标准错误输出设备上,æ¯ä¸ªä»¥ä¸€ä¸ªæ•°å­—åšå‰ç¼€ã€‚如果没有 `in WORDS'\n"
-" 则å‡å®šä½¿ç”¨`in \"$@\"'。PS3æ示符会被显示并且从标准输入读入一行\n"
-" 如果该行由被显示的è¯å¯¹åº”的数字组æˆï¼Œåˆ™ NAME å˜é‡è¢«è®¾å®šä¸ºç›¸åº”\n"
-" çš„è¯ã€‚如果行为空,则 WORDS å˜é‡å’Œæ示符被é‡æ–°æ˜¾ç¤ºã€‚如果读å–了\n"
-" 文件结æŸç¬¦ï¼Œåˆ™å‘½ä»¤å®Œæˆã€‚读入任何其他的值会导致 NAME å˜é‡è¢«è®¾å®š\n"
-" 为空。读入的行被存放在å˜é‡ REPLY 中。COMMANDS 命令在æ¯æ¬¡é€‰æ‹©\n"
-" 之åŽæ‰§è¡Œç›´åˆ°æ‰§è¡Œä¸€ä¸ª break 命令。\n"
+" <è¯è¯­> 被展开,生æˆä¸€ä¸ªè¯è¯­åˆ—表。展开åŽçš„è¯è¯­é›†åˆè¢«æ‰“å°åˆ°\n"
+" 标准错误,æ¯ä¸ªè¯è¯­å‰é¢æ‰“å°ä¸€ä¸ªæ•°å­—。如果没有 \"in è¯è¯­\" ,则å‡å®š\n"
+" 使用 `in \"$@\"'。然åŽï¼Œä¼šæ˜¾ç¤ºä¸€ä¸ª PS3 æ示符,并且从标准输入读å–\n"
+" 一行。如果该行是所显示的è¯ä¹‹ä¸€æ‰€å¯¹åº”的数字,则 <å称> 被设定为\n"
+" 相应的è¯ã€‚如果该行为空,则会é‡æ–°æ˜¾ç¤º <è¯è¯­> å’Œæ示符。如果读到了\n"
+" EOF,则命令完æˆã€‚读入任何其他的值会导致 <å称> å˜é‡è¢«è®¾å®šä¸ºç©ºã€‚\n"
+" 读入的行被存放在å˜é‡ REPLY 中。<命令> 会在æ¯æ¬¡é€‰æ‹©ä¹‹åŽè¢«æ‰§è¡Œï¼Œ\n"
+" 直到执行到 break 命令。\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4891,20 +4717,20 @@ msgid ""
" Exit Status:\n"
" The return status is the return status of PIPELINE."
msgstr ""
-"报告管é“执行的消耗时间。\n"
+"报告æµæ°´çº¿æ‰§è¡Œæ¶ˆè€—的时间。\n"
" \n"
-" 执行 PIPELINE å¹¶ä¸”æ‰“å° PIPELINE 终结时实际时间ã€ç”¨æˆ· CPU 时间和系统\n"
-" CPU 时间的总结。\n"
+" 执行 <æµæ°´çº¿> å¹¶ä¸”æ‰“å° <æµæ°´çº¿> 终止时消耗的真实时间ã€ç”¨æˆ· CPU 时间\n"
+" 和系统 CPU 时间的总结。\n"
" \n"
" 选项:\n"
-" -p\t用å¯è¿ç§»çš„ POSIX æ ¼å¼æ‰“å°ç”¨æ—¶æ€»ç»“。\n"
+" -p\t用å¯ç§»æ¤çš„ POSIX æ ¼å¼æ‰“å°ç”¨æ—¶æ€»ç»“。\n"
" \n"
-" TIMEFORMAT å˜é‡çš„值被作为输出格å¼ã€‚\n"
+" 使用 TIMEFORMAT å˜é‡çš„值作为输出格å¼ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回状æ€å³PIPELINE 的返回状æ€ã€‚"
+" 返回状æ€æ˜¯ <æµæ°´çº¿> 的返回状æ€ã€‚"
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4916,13 +4742,13 @@ msgid ""
msgstr ""
"基于模å¼åŒ¹é…æ¥æ‰§è¡Œå‘½ä»¤ã€‚\n"
" \n"
-" 基于 PATTERN 模å¼åŒ¹é…çš„è¯ WORD,有选择的执行 COMMANDS 命令。\n"
-" `|' 用于分隔多个模å¼ã€‚\n"
+" æ ¹æ®å’Œ <è¯è¯­> 匹é…çš„ <模å¼> ,选择性地执行 <命令>。\n"
+" \"|\" 用于分隔多个模å¼ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4939,52 +4765,50 @@ msgid ""
msgstr ""
"æ ¹æ®æ¡ä»¶æ‰§è¡Œå‘½ä»¤ã€‚\n"
" \n"
-" `if COMMANDS'列表被执行。如果退出状æ€ä¸ºé›¶ï¼Œåˆ™æ‰§è¡Œ`then COMMANDS' \n"
-" 列表。å¦åˆ™æŒ‰é¡ºåºæ‰§è¡Œæ¯ä¸ª `elif COMMANDS'列表,并且如果它的退出状æ€ä¸º\n"
-" 零,则执行对应的 `then COMMANDS' 列表并且 if 命令终止。å¦åˆ™å¦‚果存在的\n"
-" 情况下,执行 `else COMMANDS'列表。整个结构的退出状æ€æ˜¯æœ€åŽä¸€ä¸ªæ‰§è¡Œ\n"
-" 的命令的状æ€ï¼Œæˆ–者如果没有æ¡ä»¶æµ‹è¯•ä¸ºçœŸçš„è¯ï¼Œä¸ºé›¶ã€‚\n"
+" 执行 \"if 命令\" 列表。如果退出状æ€ä¸ºé›¶ï¼Œåˆ™æ‰§è¡Œ \"then 命令\" 列表。\n"
+" å¦åˆ™æŒ‰é¡ºåºæ‰§è¡Œæ¯ä¸ª \"elif 命令\" 列表,如果æŸä¸€ä¸ªçš„退出状æ€ä¸ºé›¶ï¼Œåˆ™æ‰§è¡Œ\n"
+" 对应的 \"then 命令\" åˆ—è¡¨ï¼Œç„¶åŽ if 命令完æˆã€‚å¦åˆ™ï¼Œæ‰§è¡Œ \"else 命令\"\n"
+" 列表(如果有的è¯ï¼‰ã€‚整个结构的退出状æ€æ˜¯æœ€åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ï¼Œ\n"
+" 或者如果没有一个æ¡ä»¶çš„测试结果为真,则退出状æ€ä¸ºé›¶ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"åªè¦æµ‹è¯•æˆåŠŸå³æ‰§è¡Œå‘½ä»¤ã€‚\n"
+"åªè¦æµ‹è¯•ä»ç„¶æˆåŠŸï¼Œå°±æ‰§è¡Œå‘½ä»¤ã€‚\n"
" \n"
-" åªè¦åœ¨ `while' COMMANDS 中的最终命令返回结果为0,则\n"
-" 展开并执行 COMMANDS 命令。\n"
+" åªè¦ <命令> 中的最åŽä¸€ä¸ªå‘½ä»¤çš„退出状æ€ä»ç„¶ä¸º 0,就展开并执行 <命令-2>。\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"当测试ä¸åŒè¿‡æ—¶æ‰§è¡Œå‘½ä»¤ã€‚\n"
+"åªè¦æµ‹è¯•ä»ç„¶ä¸æˆåŠŸï¼Œå°±æ‰§è¡Œå‘½ä»¤ã€‚\n"
" \n"
-" `until' COMMANDS 命令的最终命令返回状æ€ä¸ä¸º 0 时,\n"
-" 展开并执行 COMMANDS 命令。\n"
+" åªè¦ <命令> 中的最åŽä¸€ä¸ªå‘½ä»¤çš„退出状æ€ä»ç„¶ä¸ä¸º 0,就展开并执行 <命令-2>。\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4996,17 +4820,17 @@ msgid ""
" Exit Status:\n"
" The coproc command returns an exit status of 0."
msgstr ""
-"创建一个以 NAME 为å的副进程。\n"
+"创建一个å为 <å称> 的副进程。\n"
" \n"
-" 异步执行 COMMANDS 命令,在执行 shell 中的数组å˜é‡ NAME\n"
-" çš„ 0 å·å’Œ 1 å·å…ƒç´ ä½œä¸ºæ–‡ä»¶æ述符,以一个管é“连接命令\n"
-" 分别作为命令的标准输出和输入设备。\n"
-" 默认的 NAME 是 \"COPROC\"。\n"
+" 异步执行 <命令>,并将命令的标准输出和标准输入通过管é“连接到执行该命令\n"
+" çš„ shell 的文件æ述符,å†å°†ä¸¤ä¸ªæ–‡ä»¶æ述符分别赋值给数组å˜é‡ <å称> çš„\n"
+" 索引为 0 和 1 的元素。\n"
+" 默认的 <å称> 是 \"COPROC\"。\n"
" \n"
" 退出状æ€ï¼š\n"
-" å‰¯è¿›ç¨‹ä¼šè¿”å›žé€€å‡ºçŠ¶æ€ 0。"
+" coproc å‘½ä»¤è¿”å›žé€€å‡ºçŠ¶æ€ 0。"
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -5020,15 +4844,14 @@ msgid ""
msgstr ""
"定义 shell 函数。\n"
" \n"
-" 创建一个以 NAME 为åçš„ shell 函数。当作为一个简å•çš„命令å¯ç”¨æ—¶ï¼Œ\n"
-" NAME 函数执行调用 shell 的上下文中的 COMMANDs 命令。当 NAME\n"
-" 被å¯ç”¨æ—¶ï¼Œå‚数作为 $1...$n 被传递给函数,函数的å字储存在å˜é‡\n"
-" $FUNCNAME 中。\n"
+" 创建一个å为 <å称> çš„ shell 函数。当作为一个简å•å‘½ä»¤è¢«è°ƒç”¨æ—¶ï¼Œ\n"
+" <å称> 在调用它的 shell 的上下文中执行 <命令>。当 <å称> 被调用时,\n"
+" 传递给函数的å‚数储存在 $1...$n 中,函数å储存在 $FUNCNAME 中。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸé™¤éž NAME 为åªè¯»ã€‚"
+" 返回æˆåŠŸï¼Œé™¤éž <å称> 为åªè¯»ã€‚"
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5040,13 +4863,12 @@ msgid ""
msgstr ""
"将命令组åˆä¸ºä¸€ä¸ªå•å…ƒã€‚\n"
" \n"
-" è¿è¡Œç»„中的命令集åˆã€‚这是对整个命令集åˆ\n"
-" åšé‡å®šå‘的方法之一。\n"
+" è¿è¡Œä¸€ä¸ªç»„中的命令集åˆã€‚这是对整个命令集åˆè¿›è¡Œé‡å®šå‘的方法之一。\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5059,27 +4881,17 @@ msgid ""
" Exit Status:\n"
" Returns the status of the resumed job."
msgstr ""
-"在å‰å°ç»§ç»­ä»»åŠ¡\n"
+"在å‰å°ç»§ç»­ä»»åŠ¡ã€‚\n"
" \n"
-" 对于 JOB_SPEC å‚æ•°æ¥è¯´å’Œ `fg' 命令等åŒã€‚继续一个\n"
-" åœæ­¢çš„或者åŽå°ä»»åŠ¡ã€‚JOB_SPEC å¯ä»¥æŒ‡å®šä¸€ä¸ªä»»åŠ¡\n"
-" å字或任务å·ã€‚在 JOB_SPEC åŽåŠ ä¸Šä¸€ä¸ª `&' 将会把\n"
-" 任务放至åŽå°ï¼Œå°±åƒä»»åŠ¡å£°æ˜Žè¢«ä½œä¸º `bg' 命令的å‚æ•°\n"
+" ç­‰ä»·äºŽå‘ \"fg\" 命令传递 <任务说明符> å‚数。继续一个已åœæ­¢çš„任务或\n"
+" åŽå°ä»»åŠ¡ã€‚<任务说明符> å¯ä»¥æ˜¯ä»»åŠ¡å称或任务编å·ã€‚在 <任务说明符>\n"
+" åŽåŠ ä¸Šä¸€ä¸ª \"&\" 会把任务放至åŽå°ï¼Œå°±åƒè¯¥ä»»åŠ¡è¯´æ˜Žç¬¦è¢«ä½œä¸º \"bg\" çš„å‚æ•°\n"
" 执行一样。\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回被继续的任务的状æ€ã€‚"
-#: builtins.c:1726
-#, fuzzy
-#| msgid ""
-#| "Evaluate arithmetic expression.\n"
-#| " \n"
-#| " The EXPRESSION is evaluated according to the rules for arithmetic\n"
-#| " evaluation. Equivalent to \"let EXPRESSION\".\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5089,15 +4901,14 @@ msgid ""
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-"估值算术表达å¼ã€‚\n"
+"对算术表达å¼è¿›è¡Œæ±‚值。\n"
" \n"
-" 表达å¼æŒ‰ç…§ç®—术法则进行估值。\n"
-" 等价于 \"let 表达å¼\".\n"
+" 对 <表达å¼> 按照算术求值的规则进行求值。等价于 \"let <表达å¼>\"。\n"
" \n"
-" 退出状æ€\n"
-" 如果表达å¼ä¼°å€¼ä¸º0则返回 1ï¼›å¦åˆ™è¿”回0。"
+" 退出状æ€ï¼š\n"
+" 如果 <表达å¼> 求值结果为 0,则返回 1ï¼›å¦åˆ™è¿”回 0。"
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5123,25 +4934,26 @@ msgid ""
msgstr ""
"执行æ¡ä»¶å‘½ä»¤ã€‚\n"
" \n"
-" æ ¹æ®æ¡ä»¶è¡¨è¾¾å¼ EXPRESSION 的估值返回状æ€0或1。表达å¼æŒ‰ç…§\n"
-" `test' 内建的相åŒæ¡ä»¶ç»„æˆï¼Œæˆ–者å¯ä»¥æœ‰ä¸‹åˆ—æ“作符连接而æˆï¼š\n"
+" æ ¹æ®æ¡ä»¶è¡¨è¾¾å¼ <表达å¼> çš„æ±‚å€¼ç»“æžœè¿”å›žçŠ¶æ€ 0 或 1。表达å¼çš„基本元素\n"
+" 与 \"test\" 内建相åŒï¼Œä¸”å¯ä»¥é€šè¿‡ä¸‹åˆ—è¿ç®—符进行组åˆï¼š\n"
" \n"
-" ( EXPRESSION )\t返回 EXPRESSION 表达å¼çš„值\n"
-" ! EXPRESSION\t\t如果 EXPRESSION表达å¼ä¸ºå‡åˆ™ä¸ºçœŸï¼Œå¦åˆ™ä¸ºå‡\n"
-" EXPR1 && EXPR2\t如果 EXPR1 å’Œ EXPR2 表达å¼å‡ä¸ºçœŸåˆ™ä¸ºçœŸï¼Œå¦åˆ™ä¸ºå‡\n"
-" EXPR1 || EXPR2\t如果 EXPR1 å’Œ EXPR2 表达å¼ä¸­æœ‰ä¸€ä¸ªä¸ºçœŸåˆ™ä¸ºçœŸï¼Œå¦åˆ™ä¸ºå‡\n"
+" ( è¡¨è¾¾å¼ )\t\t返回 <表达å¼> 的值\n"
+" ! 表达å¼\t\t\t如果 <表达å¼> 为å‡åˆ™ä¸ºçœŸï¼Œå¦åˆ™ä¸ºå‡\n"
+" 表达å¼1 && 表达å¼2\t如果 <表达å¼1> å’Œ <表达å¼2> å‡ä¸ºçœŸåˆ™ä¸ºçœŸï¼Œ\n"
+" \t\t\t\tå¦åˆ™ä¸ºå‡\n"
+" 表达å¼1 || 表达å¼2\t如果 <表达å¼1> å’Œ <表达å¼2> 中任何一个为真\n"
+" \t\t\t\t则为真,å¦åˆ™ä¸ºå‡\n"
" \n"
-" 当使用 `==' å’Œ `!=' æ“作符时,æ“作符å³è¾¹çš„字符串被用作模å¼å¹¶ä¸”执行一个\n"
-" 匹é…。当使用 `=~' æ“作符时,æ“作符å³è¾¹çš„字符串被当作正则表达å¼æ¥è¿›è¡Œ\n"
-" 匹é…。\n"
+" 当使用 \"==\" å’Œ \"!=\" è¿ç®—符时,è¿ç®—符å³è¾¹çš„字符串被视为模å¼ï¼Œè¿›è¡Œæ¨¡å¼åŒ¹é…。\n"
+" 当使用 \"=~\" è¿ç®—符时,è¿ç®—符å³è¾¹çš„字符串被视为正则表达å¼æ¥è¿›è¡ŒåŒ¹é…。\n"
" \n"
-" æ“作符 && å’Œ || å°†ä¸å¯¹ EXPR2 表达å¼è¿›è¡Œä¼°å€¼ï¼Œå¦‚æžœ EXPR1 表达å¼è¶³å¤Ÿç¡®å®š\n"
-" 整个表达å¼çš„值。\n"
+" 如果 <表达å¼1> 足够确定整个表达å¼çš„值,è¿ç®—符 && å’Œ || å°†ä¸ä¼šå¯¹\n"
+" <表达å¼2> 进行求值。\n"
" \n"
" 退出状æ€ï¼š\n"
-" æ ¹æ® EXPRESSION 的值为0或1。"
+" æ ¹æ® <表达å¼> 的值返回 0 或 1。"
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5194,49 +5006,45 @@ msgid ""
" HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-"常用 shell å˜é‡å称和使用。\n"
+"常用 shell å˜é‡å称和用法。\n"
" \n"
" BASH_VERSION\tå½“å‰ Bash 的版本信æ¯ã€‚\n"
-" CDPATH\t用于 `cd' 命令å‚æ•°æœç´¢çš„分å·åˆ†éš”的目录列表\n"
-" GLOBIGNORE\t路径扩展时忽略的文件å匹é…模å¼åˆ—表,\n"
-" \t\t以分å·åˆ†éš”。\n"
-" HISTFILE\t您的命令历å²å­˜æ”¾çš„文件å称。\n"
+" CDPATH\t用于æœç´¢ \"cd\" çš„å‚数中的目录的,以冒å·åˆ†éš”的目录列表\n"
+" GLOBIGNORE\t路径å展开时è¦å¿½ç•¥çš„文件å的模å¼åˆ—表,以冒å·åˆ†éš”。\n"
+" HISTFILE\t存储您的命令历å²çš„文件å称。\n"
" HISTFILESIZE\t历å²æ–‡ä»¶æœ€å¤šå¯ä»¥ä¿å­˜çš„行数。\n"
" HISTSIZE\t一个è¿è¡Œçš„ shell 最多å¯ä»¥è®¿é—®çš„历å²å‘½ä»¤è¡Œæ•°ã€‚\n"
-" HOME\t您的登录目录的完整路径。\n"
+" HOME\t您的登录目录的完整路径å。\n"
" HOSTNAME\t当å‰ä¸»æœºçš„主机å。\n"
-" HOSTTYPE\t当å‰ç‰ˆæœ¬çš„ BASH 在其之上è¿è¡Œçš„ CPU 类型。\n"
-" IGNOREEOF\t控制 shell 收到文件结æŸç¬¦ä½œä¸ºå•ä¸€è¾“å…¥åŽçš„\n"
-" \t\t动作。如果设定这个å˜é‡ï¼Œåˆ™å®ƒçš„值是 shell 退出之å‰åœ¨\n"
-" \t\t一个空行上å¯ä»¥è¿žç»­çœ‹åˆ°çš„文件结æŸç¬¦æ•°é‡(默认为10)。\n"
-" \t\t未设定时,文件结æŸç¬¦æ ‡å¿—ç€è¾“入的结æŸã€‚\n"
+" HOSTTYPE\tè¿è¡Œå½“å‰ç‰ˆæœ¬ BASH çš„ CPU 的类型。\n"
+" IGNOREEOF\t控制 shell 收到 EOF 作为唯一输入字符åŽçš„动作。如果\n"
+" \t\t该å˜é‡è¢«è®¾å®šï¼Œåˆ™å®ƒçš„值是 shell 退出之å‰åœ¨ä¸€ä¸ªç©ºè¡Œä¸Š\n"
+" \t\tå¯ä»¥è¿žç»­è¯»å–到的 EOF æ•°é‡ï¼ˆé»˜è®¤ä¸º 10)。如果未设定,\n"
+" \t\tEOF 标志ç€è¾“入的结æŸã€‚\n"
" MACHTYPE\tæ述当å‰è¿è¡Œ Bash 的系统的字符串。\n"
-" MAILCHECK\tBash 检测新邮件的频率,以秒为å•ä½ã€‚\n"
-" MAILPATH\tBash 从中检测新邮件的文件列表,以分å·åˆ†éš”。\n"
-" OSTYPE\tè¿è¡Œ Bash çš„ Unix 版本。\n"
-" PATH\t当寻找命令时æœç´¢çš„目录列表,以冒å·åˆ†éš”。\n"
-" PROMPT_COMMAND\t打å°æ¯ä¸€ä¸ªä¸»æ示符之å‰æ‰§è¡Œçš„命\n"
-" \t\t令。\n"
+" MAILCHECK\tBash 检查新邮件的频率,以秒为å•ä½ã€‚\n"
+" MAILPATH\tBash 从中检查新邮件的文件列表,以冒å·åˆ†éš”。\n"
+" OSTYPE\tè¿è¡Œå½“å‰ç‰ˆæœ¬ Bash çš„ Unix 版本。\n"
+" PATH\t寻找命令时æœç´¢çš„目录列表,以冒å·åˆ†éš”。\n"
+" PROMPT_COMMAND\tæ¯æ¬¡æ‰“å°ä¸»æ示符之å‰æ‰§è¡Œçš„命令。\n"
" PS1\t\t主æ示符字符串。\n"
-" PS2\t\t从æ示符字符串。\n"
-" PWD\t\t当å‰ç›®å½•çš„完整路径。\n"
+" PS2\t\t次æ示符字符串。\n"
+" PWD\t\t当å‰ç›®å½•çš„完整路径å。\n"
" SHELLOPTS\tå·²å¯ç”¨çš„ shell 选项列表,以冒å·åˆ†éš”。\n"
" TERM\t当å‰ç»ˆç«¯ç±»åž‹çš„å称。\n"
-" TIMEFORMAT\t以关键则 `time' 显示的时间统计信æ¯çš„输出\n"
-" \t\tæ ¼å¼ã€‚\n"
-" auto_resume\téžç©ºæ—¶ï¼Œä¸€ä¸ªå•ç‹¬çš„命令è¯ä¼šé¦–先被在当å‰\n"
-" \t\tåœæ­¢çš„任务列表中æœç´¢ã€‚如果找到则该任务被置于å‰å°ã€‚\n"
-" \t\t如果值为 `exact' 则æ„味ç€å‘½ä»¤è¯å¿…须精确匹é…åœæ­¢ä»»åŠ¡\n"
-" \t\t列表中的命令。如果值为 `substring' 则æ„味ç€å‘½ä»¤è¯å¿…\n"
-" \t\t须匹é…任务的一个å­å­—符串。任何其他的值æ„味ç€å‘½ä»¤è¯\n"
-" \t\t必须是åœæ­¢ä»»åŠ¡çš„一个å‰ç¼€ã€‚\n"
+" TIMEFORMAT\tä¿ç•™å­— \"time\" 显示的时间统计信æ¯çš„输出格å¼ã€‚\n"
+" auto_resume\téžç©ºæ—¶ï¼Œä¸€ä¸ªå•ç‹¬çš„命令è¯ä¼šé¦–先被在当å‰å·²åœæ­¢çš„\n"
+" \t\t任务列表中æœç´¢ã€‚如果找到,则该任务被置于å‰å°ã€‚\n"
+" \t\t如果值为 \"exact\" 则æ„味ç€å‘½ä»¤è¯å¿…须精确匹é…å·²åœæ­¢çš„\n"
+" \t\t任务列表中的命令。如果值为 \"substring\" 则æ„味ç€å‘½ä»¤è¯\n"
+" \t\t必须匹é…任务的一个å­å­—符串。任何其他的值æ„味ç€å‘½ä»¤è¯\n"
+" \t\t必须是已åœæ­¢çš„任务的一个å‰ç¼€ã€‚\n"
" histchars\t控制历å²å±•å¼€å’Œå¿«é€Ÿæ›¿æ¢çš„字符。第一个字符是\n"
-" \t\t历å²æ›¿æ¢å­—符,通常是 `!'。第二个字符是快速替æ¢å­—符,\n"
-" \t\t通常是 `^'。第三个是历å²æ³¨é‡Šå­—符,通常是 `#'。\n"
-" HISTIGNORE\t用于决定哪些命令被存入历å²æ–‡ä»¶çš„模å¼\n"
-" \t\t列表,以冒å·åˆ†éš”。\n"
+" \t\t历å²æ›¿æ¢å­—符,通常是 \"!\"。第二个字符是快速替æ¢å­—符,\n"
+" \t\t通常是 \"^\"。第三个字符是历å²æ³¨é‡Šå­—符,通常是 \"#\"。\n"
+" HISTIGNORE\t用于决定哪些命令被存入历å²æ–‡ä»¶çš„模å¼åˆ—表,以冒å·åˆ†éš”。\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5268,28 +5076,28 @@ msgid ""
msgstr ""
"将目录添加到栈中。\n"
" \n"
-" 将目录添加到目录栈顶,或ç€æ—‹è½¬æ ˆç›´åˆ°å½“å‰å·¥ä½œç›®å½•æˆä¸º\n"
+" 将目录添加到目录栈顶,或者轮转栈直到当å‰å·¥ä½œç›®å½•æˆä¸º\n"
" 新的栈顶。ä¸å¸¦å‚数时,交æ¢æ ˆé¡¶çš„两个目录。\n"
" \n"
" 选项:\n"
-" -n\t抑制添加目录至栈时通常的改å˜ç›®å½•æ“作,从而仅对栈\n"
-" \t进行æ“作。\n"
+" -n\t阻止添加目录至栈时通常的改å˜ç›®å½•æ“作,从而仅对栈\n"
+" \t\t进行æ“作。\n"
" \n"
" å‚数:\n"
-" +N\t旋转栈从而第 N 个目录 (`dirs' 显示的列表中左起,从零开始)\n"
-" \t将移动到栈顶。\n"
+" +N\t轮转栈,使得第 N 个目录(\"dirs\" 显示的列表中左起,\n"
+" \t\t从零开始)移动到栈顶。\n"
" \n"
-" -N\t旋转栈从而第 N 个目录 (`dirs' 显示的列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹)\n"
-" \t将移动到栈顶。\n"
+" -N\t轮转栈,使得第 N 个目录(\"dirs\" 显示的列表中å³èµ·ï¼Œ\n"
+" \t\t从零开始)移动到栈顶。\n"
" \n"
-" dir\tå°† DIR 目录添加到栈顶,并且使其æˆä¸ºå½“å‰å·¥ä½œç›®å½•ã€‚\n"
+" 目录\tå°† <目录> 添加到栈顶,使其æˆä¸ºå½“å‰å·¥ä½œç›®å½•ã€‚\n"
" \n"
-" `dirs' 内建显示目录栈。\n"
+" \"dirs\" 内建å¯ä»¥æ˜¾ç¤ºç›®å½•æ ˆã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„å‚数或者目录转æ¢å¤±è´¥ã€‚"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„å‚数,或者改å˜ç›®å½•å¤±è´¥ã€‚"
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5317,26 +5125,24 @@ msgid ""
msgstr ""
"从栈中删除目录。\n"
" \n"
-" 从目录栈中删除æ¡ç›®ã€‚ä¸å¸¦å‚数时,删除栈顶目录,并改å˜è‡³æ–°çš„æ ˆ\n"
-" 顶目录。\n"
+" 从目录栈中删除æ¡ç›®ã€‚ä¸å¸¦å‚数时,删除栈顶目录,并改å˜ç›®å½•è‡³æ–°çš„栈顶目录。\n"
" \n"
" 选项:\n"
-" -n\t抑制从栈中删除目录时通常的目录å˜æ¢æ“作,从而仅对栈\n"
-" \t进行æ“作。\n"
+" -n\t阻止从栈中删除目录时通常的改å˜ç›®å½•æ“作,从而仅对栈进行æ“作。\n"
" \n"
" å‚数:\n"
-" +N\t删除第 N 个目录 (`dirs' 显示的目录列表中左起,从零开始)。\n"
-" \t例如:`popd +0' 删除第一个目录,`popd +1' 删除第二个。\n"
+" +N\t删除第 N 个目录(\"dirs\" 显示的列表中左起,从零开始)。\n"
+" \t\t例如:\"popd +0\" 删除第一个目录,\"popd +1\" 删除第二个。\n"
" \n"
-" -N\t删除第 N 个目录 (`dirs' 显示的目录列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹)。\n"
-" \t例如:`popd -0' 删除最åŽä¸€ä¸ªç›®å½•ï¼Œï¼Œ`popd -1' 删除倒数第二个。\n"
+" -N\t删除第 N 个目录(\"dirs\" 显示的列表中å³èµ·ï¼Œä»Žé›¶å¼€å§‹ï¼‰ã€‚\n"
+" \t\t例如:\"popd -0\" 删除最åŽä¸€ä¸ªç›®å½•ï¼Œ\"popd -1\" 删除倒数第二个。\n"
" \n"
-" `dirs' 内建显示目录栈。\n"
+" \"dirs\" 内建å¯ä»¥æ˜¾ç¤ºç›®å½•æ ˆã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„å‚数或者目录å˜æ¢å¤±è´¥ã€‚"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„å‚数,或者改å˜ç›®å½•å¤±è´¥ã€‚"
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5366,26 +5172,27 @@ msgid ""
msgstr ""
"显示目录栈。\n"
" \n"
-" 显示当å‰è®°ä½çš„目录列表。通过 `pushd' 命令å¯ä»¥å°†ç›®å½•å­˜å…¥åˆ—表\n"
-" 中;`popd' 命令å¯ç”¨äºŽé历弹出列表。\n"
+" 显示当å‰è®°ä½çš„目录列表。 使用 \"pushd\" 命令将目录加入这个列表;\n"
+" 使用 \"popd\" 命令é€ä¸ªå›žåˆ°ä¹‹å‰åŠ å…¥åˆ—表的目录。\n"
" \n"
" 选项:\n"
" -c\t删除所有元素以清空目录栈\n"
-" -l\tä¸æ‰“å°ä¸Žä¸»ç›®å½•ç›¸å…³çš„波浪å·å‰ç¼€çš„目录\n"
+" -l\t打å°ç›®å½•æ—¶ï¼Œä¸è¡¨ç¤ºä¸ºä»¥æ³¢æµªå· (~) 为å‰ç¼€çš„,\n"
+" \t\t相对于您的主目录的路径\n"
" -p\tæ¯è¡Œä¸€ä¸ªæ¡ç›®æ‰“å°ç›®å½•æ ˆ\n"
-" -v\tæ¯è¡Œä¸€ä¸ªæ¡ç›®ï¼Œä»¥æ ˆä¸­ä½ç½®ä¸ºå‰ç¼€æ‰“å°ç›®å½•æ ˆ\n"
+" -v\tæ¯è¡Œä¸€ä¸ªæ¡ç›®æ‰“å°ç›®å½•æ ˆï¼Œå‰é¢åŠ ä¸Šåœ¨æ ˆä¸­çš„ä½ç½®\n"
" \n"
" å‚数:\n"
-" +N\t显示 dirs ä¸å¸¦é€‰é¡¹å¯åŠ¨æ—¶æ˜¾ç¤ºçš„目录列表左起中第\n"
-" \tN 个目录,从零开始。\n"
+" +N\t显示 dirs ä¸å¸¦é€‰é¡¹å¯åŠ¨æ—¶æ˜¾ç¤ºçš„目录列表中左起第 N 个目录,\n"
+" \t\t从零开始。\n"
" \n"
-" -N\t显示 dirs ä¸å¸¦é€‰é¡¹å¯åŠ¨æ—¶æ˜¾ç¤ºçš„目录列表å³èµ·ä¸­ç¬¬\n"
-" \tN 个目录,从零开始。\n"
+" -N\t显示 dirs ä¸å¸¦é€‰é¡¹å¯åŠ¨æ—¶æ˜¾ç¤ºçš„目录列表中å³èµ·ç¬¬ N 个目录,\n"
+" \t\t从零开始。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者å‘生错误。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者有错误å‘生。"
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5406,22 +5213,22 @@ msgid ""
msgstr ""
"设定和å–消设定 shell 选项。\n"
" \n"
-" 改å˜æ¯ä¸ª shell 选项 OPTNAME 的设定。ä¸å¸¦å‚数时,\n"
-" 列出æ¯ä¸ªæ供的 OPTNAME,å¦åˆ™åˆ—出所有 shell 选项;\n"
-" åŒæ—¶æ ‡æ³¨æ¯ä¸€ä¸ªé€‰é¡¹æ˜¯å¦è¢«è®¾å®šã€‚\n"
+" 改å˜æ¯ä¸ª shell 选项 <选项å> 的设定。ä¸å¸¦é€‰é¡¹æ—¶ï¼Œåˆ—出æ¯ä¸ªæ供的\n"
+" <选项å>,或者如果没有æä¾› <选项å> 时,列出所有 shell 选项,åŒæ—¶\n"
+" 标注æ¯ä¸€ä¸ªé€‰é¡¹æ˜¯å¦è¢«è®¾å®šã€‚\n"
" \n"
" 选项:\n"
-" -o\té™åˆ¶ OPTNAME 为定义用于`set -o' 的选项\n"
+" -o\té™åˆ¶ <选项å>,åªä½¿ç”¨å¯è¢« \"set -o\" 设置的选项\n"
" -p\t打å°æ¯ä¸ª shell 选项并标注它的状æ€ã€‚\n"
-" -q\t抑制输出\n"
-" -s\tå¯ç”¨(设定)æ¯ä¸ª OPTNAME 选项\n"
-" -u\tç¦ç”¨(å–消设定)æ¯ä¸ª OPTNAME 选项\n"
+" -q\t阻止输出\n"
+" -s\tå¯ç”¨ï¼ˆè®¾å®šï¼‰æ¯ä¸ª <选项å>\n"
+" -u\tç¦ç”¨ï¼ˆå–消设定)æ¯ä¸ª <选项å>\n"
" \n"
" 退出状æ€ï¼š\n"
-" 如果 OPTNAME 选项被å¯ç”¨åˆ™è¿”回æˆåŠŸï¼›å¦‚果是\n"
-" 无效的选项或 OPTNAME 被ç¦ç”¨åˆ™å¤±è´¥ã€‚"
+" 如果 <选项å> 被å¯ç”¨åˆ™è¿”回æˆåŠŸï¼›å¦‚果使用了无效的选项,或者 <选项å>\n"
+" 被ç¦ç”¨ï¼Œåˆ™è¿”回失败。"
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5440,6 +5247,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5452,49 +5261,31 @@ msgid ""
" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
-"在 FORMAT 的控制下格å¼åŒ–å¹¶æ‰“å° ARGUMENTS å‚数。\n"
+"在 <æ ¼å¼> 的控制下格å¼åŒ–å¹¶æ‰“å° <å‚æ•°>。\n"
" \n"
" 选项:\n"
-" -v var\t将输出赋值给 shell å˜é‡ VAR 而ä¸æ˜¾ç¤ºåœ¨æ ‡å‡†è¾“出上\n"
+" -v å˜é‡\t将输出赋值给 shell å˜é‡ <å˜é‡>,而ä¸æ˜¯å°†å®ƒæ˜¾ç¤ºåœ¨\n"
+" \t\t标准输出上\n"
+" \n"
+" FORMAT 是包å«ä¸‰ç§ç±»åž‹çš„对象的字符串:普通字符,会被简å•åœ°å¤åˆ¶åˆ°æ ‡å‡†è¾“出;\n"
+" 字符转义åºåˆ—,会在转义之åŽå¤åˆ¶åˆ°æ ‡å‡†è¾“出;格å¼è¯´æ˜Žç¬¦ï¼Œæ¯ä¸ªéƒ½ä¼šè®© shell 打å°\n"
+" 下一个多余的å‚数。\n"
" \n"
-" FORMAT 是包å«ä¸‰ç§å¯¹è±¡çš„字符串:简å•åœ°è¢«æ‹·è´åˆ°æ ‡å‡†è¾“出的普通字符;\n"
-" 被å˜æ¢ä¹‹åŽæ‹·è´åˆ°æ ‡å‡†è¾“入的转义字符;以åŠæ¯ä¸ªéƒ½ä¼šå½±å“到下个å‚数的打å°çš„æ ¼å¼åŒ–声明。\n"
+" 除了 printf(1) 中æ述的标准格å¼è¯´æ˜Žç¬¦ä»¥å¤–,printf 还å¯è§£æžï¼š\n"
" \n"
-" 在 printf(1) 中æ述的标准控制声明之外,printf 解æžï¼š\n"
+" %b\t展开对应å‚数中的åæ–œæ è½¬ä¹‰åºåˆ—\n"
+" %q\t以å¯ä»¥é‡æ–°ç”¨ä½œ shell 输入的格å¼ç»™å‚数加上引å·\n"
+" %Q\t类似 %q,但是精度è¦æ±‚会在加引å·ä¹‹å‰å¯¹å°šæœªåŠ å¼•å·çš„å‚数生效\n"
+" %(æ ¼å¼)T\tå°† <æ ¼å¼> 作为 strftime(3) çš„æ ¼å¼å­—符串,并输出产生的\n"
+" \t 日期-时间字符串\n"
" \n"
-" %b\t扩展对应å‚数中的åæ–œæ è½¬ä¹‰åºåˆ—\n"
-" %q\t以å¯ä½œä¸º shell 输入的格å¼å¼•ç”¨å‚æ•°\n"
-" %(fmt)T\t以 FMT 为供给 strftime(3) çš„æ ¼å¼è¾“出日期时间字符串\n"
+" 有必è¦æ—¶ï¼Œä¼šé‡æ–°ä½¿ç”¨æ ¼å¼ä¸²ä»¥æ¶ˆè€—所有å‚数。如果å‚æ•°çš„æ•°é‡å°‘于格å¼ä¸²è¦æ±‚\n"
+" çš„æ•°é‡ï¼Œåˆ™è§†ä¸ºå°†é›¶å€¼æˆ–空字符串(视情况而定)æ供给了多余的格å¼è¯´æ˜Žç¬¦ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者写或赋值错误å‘生。"
-
-#: builtins.c:1971
-#, fuzzy
-#| msgid ""
-#| "Specify how arguments are to be completed by Readline.\n"
-#| " \n"
-#| " For each NAME, specify how arguments are to be completed. If no options\n"
-#| " are supplied, existing completion specifications are printed in a way that\n"
-#| " allows them to be reused as input.\n"
-#| " \n"
-#| " Options:\n"
-#| " -p\tprint existing completion specifications in a reusable format\n"
-#| " -r\tremove a completion specification for each NAME, or, if no\n"
-#| " \t\tNAMEs are supplied, all completion specifications\n"
-#| " -D\tapply the completions and actions as the default for commands\n"
-#| " \t\twithout any specific completion defined\n"
-#| " -E\tapply the completions and actions to \"empty\" commands --\n"
-#| " \t\tcompletion attempted on a blank line\n"
-#| " -I\tapply the completions and actions to the initial (usually the\n"
-#| " \t\tcommand) word\n"
-#| " \n"
-#| " When completion is attempted, the actions are applied in the order the\n"
-#| " uppercase-letter options are listed above. If multiple options are supplied,\n"
-#| " the -D option takes precedence over -E, and both take precedence over -I.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or an error occurs."
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者å‘生了写入或赋值错误。"
+
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5522,25 +5313,24 @@ msgid ""
msgstr ""
"指定 Readline 如何补全å‚数。\n"
" \n"
-" 声明对于æ¯ä¸€ä¸ª NAME å称如何补全å‚数。如果ä¸å¸¦é€‰é¡¹ï¼Œ\n"
-" 现有的补全声明会以å¯ä»¥é‡ç”¨ä¸ºè¾“入的格å¼æ‰“å°å‡ºæ¥ã€‚\n"
+" 指定对于æ¯ä¸€ä¸ª <å称> 如何补全å‚数。如果ä¸å¸¦é€‰é¡¹ï¼ŒçŽ°æœ‰çš„补全规约会以\n"
+" å¯ä»¥é‡æ–°ç”¨ä½œè¾“入的格å¼æ‰“å°å‡ºæ¥ã€‚\n"
" \n"
" 选项:\n"
-" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°çŽ°æœ‰çš„补全声明。\n"
-" -r\t对于æ¯ä¸ª NAME å称删除补全声明,或者如果没有æä¾› NAME\n"
-" \tå称,删除所有的补全声明。\n"
-" -D\t对于没有补全声明定义的命令,设定默认的补全动作\n"
-" -E\t对于 \"empty\" 命令设定补全动作,—— 对于空行的补全。\n"
-" -I\t将补全和动作应用在首å•è¯ï¼ˆé€šå¸¸æ˜¯æ‰€ç»™å‘½ä»¤ï¼‰ä¸Š\n"
+" -p\t以å¯é‡ç”¨çš„æ ¼å¼æ‰“å°çŽ°æœ‰çš„补全规约\n"
+" -r\t对æ¯ä¸€ä¸ª <å称> 删除补全规约,或者,如果没有æä¾› <å称> ,\n"
+" \t\t删除所有的补全规约\n"
+" -D\t设定默认的补全和动作,给没有定义补全规约的命令使用\n"
+" -E\t对于 \"空\" (empty) 命令设定补全动作 -- 对于空行的补全\n"
+" -I\t将补全和动作应用在首个å•è¯ï¼ˆé€šå¸¸æ˜¯æ‰€ç»™å‘½ä»¤ï¼‰ä¸Š\n"
" \n"
-" å°è¯•è¡¥å…¨æ—¶ï¼ŒæŒ‰ç…§ä¸Šè¿°å¤§å†™å­—æ¯é€‰é¡¹çš„顺åºè¿›è¡ŒåŠ¨ä½œã€‚\n"
-" 如果给出了多个选项,-D 选项优先级高于 -E 选项,且\n"
-" 这两个选项优先级å‡é«˜äºŽ -I。\n"
+" å°è¯•è¡¥å…¨æ—¶ï¼ŒæŒ‰ç…§ä¸Šè¿°å¤§å†™å­—æ¯é€‰é¡¹çš„顺åºè¿›è¡ŒåŠ¨ä½œã€‚如果给出了多个选项,\n"
+" -D 选项优先级高于 -E 选项,且这两个选项优先级å‡é«˜äºŽ -I。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者错误å‘生。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者有错误å‘生。"
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5553,14 +5343,13 @@ msgid ""
msgstr ""
"ä¾æ®é€‰é¡¹æ˜¾ç¤ºå¯èƒ½çš„补全。\n"
" \n"
-" æ„图在能产生å¯èƒ½çš„补全的 shell 函数内部使用。\n"
-" 如果æ供了å¯é€‰çš„ WORD å‚数,则产生按照 WORD\n"
-" 进行的匹é…。\n"
+" 设计æ„图是在用æ¥ç”Ÿæˆå¯èƒ½çš„补全的 shell 函数的内部使用。\n"
+" 如果æ供了å¯é€‰çš„ <è¯è¯­> å‚数,则ä¾æ® <è¯è¯­> 产生匹é…。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 除éžä½¿ç”¨äº†æ— æ•ˆé€‰é¡¹æˆ–者错误å‘生,å¦åˆ™è¿”回æˆåŠŸã€‚"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者有错误å‘生。"
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5590,27 +5379,27 @@ msgid ""
msgstr ""
"修改或显示补全选项。\n"
" \n"
-" 修改æ¯ä¸ª NAME å称的补全选项,或如果没有æä¾› NAME å称,执行当å‰çš„补全。\n"
-" 如果ä¸å¸¦é€‰é¡¹ï¼Œæ‰“å°æ¯ä¸ª NAME å称的补全选项或当å‰çš„补全声明。\n"
+" 修改æ¯ä¸ª <å称> 的补全选项,或者如果没有æä¾› <å称>,修改正在执行的补全的\n"
+" 选项。如果没有æä¾› <选项>,打å°æ¯ä¸ª <å称> 的补全选项或者当å‰çš„补全规约。\n"
" \n"
" 选项:\n"
-" \t-o option\t为æ¯ä¸ª NAME å称设定补全选项 option\n"
-" \t-D\t\t为 \"default\" 命令补全改å˜é€‰é¡¹\n"
-" \t-E\t\t为 \"empty\" 命令补全改å˜é€‰é¡¹\n"
-" \t-I\t\t为首å•è¯çš„补全改å˜é€‰é¡¹\n"
+" \t-o 选项\t\t为æ¯ä¸ª <å称> 设定补全选项 <选项>\n"
+" \t-D\t\t修改 \"默认\" (default) 命令的补全选项\n"
+" \t-E\t\t修改 \"空\" (empty) 命令的补全选项\n"
+" \t-I\t\t修改首个å•è¯çš„补全选项\n"
" \n"
-" 使用 `+o' 而ä¸æ˜¯ `-o' å¯ä»¥å…³é—­æŒ‡å®šçš„选项。\n"
+" 使用 \"+o\" 代替 \"-o\" å¯ä»¥å…³é—­æŒ‡å®šçš„选项。\n"
" \n"
" å‚数:\n"
" \n"
-" æ¯ä¸ª NAME å称都对应一个之å‰ä»¥é€šè¿‡ `complete' 内建定义了的补全声明的\n"
-" 命令。如果ä¸æä¾› NAME å称,当å‰ç”Ÿæˆè¡¥å…¨çš„函数必须调用 compopt,\n"
-" 并且当å‰æ‰§è¡Œçš„补全生æˆå™¨é€‰é¡¹ä¼šè¢«ä¿®æ”¹ã€‚\n"
+" æ¯ä¸ª <å称> 都对应一个之å‰å·²é€šè¿‡ \"complete\" 内建定义了补全规约的命令。\n"
+" 如果没有æä¾› <å称>,compopt 必须由当å‰æ­£åœ¨ç”Ÿæˆè¡¥å…¨çš„函数进行调用,\n"
+" 并且当å‰æ­£åœ¨æ‰§è¡Œçš„补全生æˆå™¨çš„选项会被修改。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称没有定义补全声明。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 <å称> 没有定义补全规约。"
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5644,33 +5433,34 @@ msgid ""
" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
-"从标准输入读å–行到下标数组å˜é‡ä¸­ã€‚\n"
+"从标准输入读å–行到索引数组å˜é‡ä¸­ã€‚\n"
" \n"
-" 从标准输入读å–行到下标数组å˜é‡ ARRAY 中,或者如果使用了 -u 选项,\n"
-" 从文件æ述符 FD 中读å–。MAPFILE å˜é‡æ˜¯é»˜è®¤çš„ ARRAY å˜é‡ã€‚\n"
+" 从标准输入读å–行到索引数组å˜é‡ <数组> 中,或者如果使用了 -u 选项,\n"
+" 从文件æ述符 <FD> 中读å–。默认的 <数组> 是 MAPFILE å˜é‡ã€‚\n"
" \n"
" 选项:\n"
-" -d delim\t使用 DELIM 而éžæ¢è¡Œç¬¦æ–­è¡Œ\n"
-" -n count\tæœ€å¤šæ‹·è´ COUNT 行,如果 COUNT 为 0,则拷è´æ‰€æœ‰è¡Œã€‚\n"
-" -O origin\t从下标 ORIGIN 开始 赋值给 ARRAY å˜é‡ã€‚默认下标是0.\n"
-" -s count \t丢弃最先读å–çš„ COUNT 行。\n"
-" -t\t\t从读å–çš„æ¯è¡Œæœ«å°¾åˆ é™¤ä¸€ä¸ªæ¢è¡Œç¬¦ã€‚\n"
-" -u fd\t\t从文件æ述符 FD 中读å–行而ä¸æ˜¯æ ‡å‡†è¾“入。\n"
-" -C callback\tæ¯ QUANTUM 次读行之åŽå¯¹ CALLBACK 回调进行估值。\n"
-" -c quantum\t定义æ¯æ¬¡è°ƒç”¨ CALLBACK 回调之间读å–的行数。\n"
+" -d 分隔符\t使用 <分隔符> 而éžæ¢è¡Œç¬¦æ ‡å¿—一行的结æŸ\n"
+" -n 计数\t最多å¤åˆ¶ <计数> 行。如果 <计数> 为 0,则å¤åˆ¶æ‰€æœ‰è¡Œ\n"
+" -O 起始\t从索引 <起始> 开始赋值给 <数组> å˜é‡ã€‚默认索引是 0\n"
+" -s 计数\t丢弃最åˆè¯»å–çš„ <计数> è¡Œ\n"
+" -t\t从读å–çš„æ¯è¡Œæœ«å°¾åˆ é™¤ä¸€ä¸ª <分隔符>(默认为æ¢è¡Œç¬¦ï¼‰\n"
+" -u fd\t从文件æ述符 <FD> 中读å–行,而ä¸æ˜¯æ ‡å‡†è¾“å…¥\n"
+" -C 回调\tæ¯è¯»å– <é—´éš”> 行之åŽå¯¹ <回调> 进行求值\n"
+" -c é—´éš”\t指定æ¯æ¬¡è°ƒç”¨ <回调> 之å‰è¯»å–的行数\n"
" \n"
" å‚数:\n"
-" ARRAY\t\t存储数æ®ä½¿ç”¨çš„数组å˜é‡\n"
+" 数组\t存储文件数æ®ä½¿ç”¨çš„数组å˜é‡å\n"
" \n"
-" 如果使用了 -C 而没有 -c,默认的é‡å­æ˜¯5000。当对 CALLBACK 估值时,\n"
-" 下一个将被赋值的数组元素的下标作为é¢å¤–å‚数被传递。\n"
+" 如果使用了 -C 而没有 -c,默认的间隔是 5000。当对 <回调> 进行求值时,\n"
+" 下一个将被赋值的数组元素的索引以åŠå°†è¢«èµ‹ç»™é‚£ä¸ªå…ƒç´ çš„行会作为é¢å¤–å‚æ•°\n"
+" 被传递给它。\n"
" \n"
-" 如果没有显å¼æŒ‡å®šèµ·å§‹ä¸‹æ ‡ï¼Œmapfile 将在赋值å‰æ¸…空 ARRAY å˜é‡ã€‚\n"
+" 如果没有显å¼æŒ‡å®šèµ·å§‹ç´¢å¼•ï¼Œmapfile 会在赋值å‰æ¸…空 <数组>。\n"
" \n"
" 退出状æ€ï¼š\n"
-" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 ARRAY å˜é‡åªè¯»æˆ–ä¸æ˜¯ä¸‹æ ‡æ•°ç»„。"
+" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 <数组> 为åªè¯»æˆ–ä¸æ˜¯ç´¢å¼•æ•°ç»„。"
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5678,7 +5468,10 @@ msgid ""
msgstr ""
"从一个文件中读å–行到数组å˜é‡ä¸­ã€‚\n"
" \n"
-" 一个 `mapfile'çš„åŒä¹‰è¯ã€‚"
+" åŒ \"mapfile\"。"
+
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: 无效的关è”数组键"
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo
index 75d5bc10..9dd7546f 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 665d53e0..91724f83 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -5,78 +5,73 @@
# Zi-You Dai <ioppooster@gmail.com>, 2008.
# Mingye Wang (Arthur2e5) <arthur200126@hotmail.com>, 2015.
# Wei-Lun Chao <bluebat@member.fsf.org>, 2015.
-# Yi-Jyun Pan <pan93412@gmail.com>, 2018, 2019, 2020.
+# Yi-Jyun Pan <pan93412@gmail.com>, 2018, 2019, 2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.1\n"
+"Project-Id-Version: bash 5.2-rc1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2020-12-08 06:39+0800\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2022-07-28 01:08+0800\n"
"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\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"
-"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.4.2\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.1.1\n"
#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "陣列下標ä¸æ­£ç¢º"
-#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
-#: variables.c:3133
+#: arrayfunc.c:471 builtins/declare.def:709 variables.c:2242 variables.c:2268
+#: variables.c:3101
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s:正在移除 nameref 屬性"
-#: arrayfunc.c:446 builtins/declare.def:851
+#: arrayfunc.c:496 builtins/declare.def:868
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: 無法將索引陣列轉化為關è¯é™£åˆ—"
-#: arrayfunc.c:700
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: 無效的關è¯é™£åˆ—éµå€¼"
-
-#: arrayfunc.c:702
+#: arrayfunc.c:777
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: 無法指派為éžæ•¸å­—的索引"
-#: arrayfunc.c:747
+#: arrayfunc.c:822
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: 指派為關è¯é™£åˆ—時必須使用下標"
-#: bashhist.c:452
+#: bashhist.c:455
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: 無法建立: %s"
-#: bashline.c:4310
+#: bashline.c:4479
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: 無法為指令找到按éµæ˜ å°„"
-#: bashline.c:4459
+#: bashline.c:4637
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: 第一個éžç©ºå­—å…ƒä¸æ˜¯ã€Œ\"ã€"
-#: bashline.c:4488
+#: bashline.c:4666
#, c-format
msgid "no closing `%c' in %s"
msgstr "%2$s 中沒有閉åˆçš„「%1$cã€"
-#: bashline.c:4519
+#: bashline.c:4697
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: 缺少冒號分隔符"
-#: bashline.c:4555
+#: bashline.c:4733
#, c-format
msgid "`%s': cannot unbind in command keymap"
msgstr "「%sã€: 無法在命令按éµæ˜ å°„中解除ç¶å®š"
@@ -96,7 +91,7 @@ msgstr "大括號展開:為 %u 個元素分é…記憶體失敗"
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "大括號展開:為「%sã€åˆ†é…記憶體失敗"
-#: builtins/alias.def:131 variables.c:1844
+#: builtins/alias.def:131 variables.c:1817
#, c-format
msgid "`%s': invalid alias name"
msgstr "「%sã€: 無效的別å"
@@ -144,7 +139,6 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "僅在「forã€ï¼Œã€Œwhileã€ï¼Œ 或者「untilã€è¿´åœˆä¸­æœ‰æ„義"
#: builtins/caller.def:136
-#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
@@ -158,21 +152,17 @@ msgstr ""
"回傳目å‰å­å‘¼å«çš„語境。\n"
" \n"
" ä¸å¸¶æœ‰ EXPR 時,回傳「$line $filenameã€ã€‚帶有 EXPR 時,回傳\n"
-" 「$line $subroutine $filenameã€ï¼›é€™å€‹é¡å¤–的資訊å¯ä»¥è¢«ç”¨æ–¼æä¾›\n"
-" 堆疊追蹤。\n"
+" 「$line $subroutine $filenameã€ï¼›æ供堆疊追蹤時å¯ä»¥ç”¨åˆ°é€™å€‹\n"
+" 延伸資訊。\n"
" \n"
" EXPR 的值顯示了到目å‰å‘¼å«æ¡†æ ¼éœ€è¦å›žåŽ»å¤šå°‘個呼å«æ¡†æ ¼ï¼›é ‚部框格\n"
-" 是第 0 框格。\n"
-" \n"
-" çµæŸç‹€æ…‹ï¼š\n"
-" é™¤éž shell ä¸åœ¨åŸ·è¡Œä¸€å€‹ shell 函數或者 EXPR 無效,å¦å‰‡å›žå‚³çµ\n"
-" 果為 0。"
+" 是第 0 框格。"
#: builtins/cd.def:327
msgid "HOME not set"
msgstr "未設定 HOME"
-#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
msgid "too many arguments"
msgstr "太多åƒæ•¸"
@@ -199,7 +189,7 @@ msgstr "警告:"
msgid "%s: usage: "
msgstr "%s:用法:"
-#: builtins/common.c:193 shell.c:516 shell.c:844
+#: builtins/common.c:193 shell.c:524 shell.c:866
#, c-format
msgid "%s: option requires an argument"
msgstr "%s:é¸é …需è¦ä¸€å€‹åƒæ•¸"
@@ -214,7 +204,7 @@ msgstr "%s:需è¦æ•¸å­—åƒæ•¸"
msgid "%s: not found"
msgstr "%s:沒有找到"
-#: builtins/common.c:216 shell.c:857
+#: builtins/common.c:216 shell.c:879
#, c-format
msgid "%s: invalid option"
msgstr "%s:無效é¸é …"
@@ -224,7 +214,7 @@ msgstr "%s:無效é¸é …"
msgid "%s: invalid option name"
msgstr "%s:無效é¸é …å稱"
-#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#: builtins/common.c:230 execute_cmd.c:2402 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "「%sã€ï¼šä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„識別符"
@@ -237,7 +227,7 @@ msgstr "無效的八進ä½æ•¸å­—"
msgid "invalid hex number"
msgstr "無效的å六進ä½æ•¸å­—"
-#: builtins/common.c:244 expr.c:1569
+#: builtins/common.c:244 expr.c:1574
msgid "invalid number"
msgstr "無效數字"
@@ -251,88 +241,93 @@ msgstr "%s:無效的訊號è¦æ ¼"
msgid "`%s': not a pid or valid job spec"
msgstr "「%sã€ï¼šä¸æ˜¯ä¸€å€‹ pid 或有效的工作è¦æ ¼"
-#: builtins/common.c:266 error.c:510
+#: builtins/common.c:266 error.c:536
#, c-format
msgid "%s: readonly variable"
msgstr "%s:唯讀的變數"
-#: builtins/common.c:274
+#: builtins/common.c:273
+#, c-format
+msgid "%s: cannot assign"
+msgstr "%s:無法指定"
+
+#: builtins/common.c:281
#, c-format
msgid "%s: %s out of range"
msgstr "%s:%s 超出範åœ"
-#: builtins/common.c:274 builtins/common.c:276
+#: builtins/common.c:281 builtins/common.c:283
msgid "argument"
msgstr "åƒæ•¸"
-#: builtins/common.c:276
+#: builtins/common.c:283
#, c-format
msgid "%s out of range"
msgstr "%s 超出範åœ"
-#: builtins/common.c:284
+#: builtins/common.c:291
#, c-format
msgid "%s: no such job"
msgstr "%s:沒有此類工作"
-#: builtins/common.c:292
+#: builtins/common.c:299
#, c-format
msgid "%s: no job control"
msgstr "%s:沒有工作控制"
-#: builtins/common.c:294
+#: builtins/common.c:301
msgid "no job control"
msgstr "沒有工作控制"
-#: builtins/common.c:304
+#: builtins/common.c:311
#, c-format
msgid "%s: restricted"
msgstr "%s:å—é™çš„"
-#: builtins/common.c:306
+#: builtins/common.c:313
msgid "restricted"
msgstr "å—é™çš„"
-#: builtins/common.c:314
+#: builtins/common.c:321
#, c-format
msgid "%s: not a shell builtin"
msgstr "%s:ä¸æ˜¯ä¸€å€‹å…§å»º shell"
-#: builtins/common.c:323
+#: builtins/common.c:330
#, c-format
msgid "write error: %s"
msgstr "寫入時發生錯誤:%s"
-#: builtins/common.c:331
+#: builtins/common.c:338
#, c-format
msgid "error setting terminal attributes: %s"
msgstr "設定終端屬性時發生錯誤: %s"
-#: builtins/common.c:333
+#: builtins/common.c:340
#, c-format
msgid "error getting terminal attributes: %s"
msgstr "å–得終端屬性時發生錯誤: %s"
-#: builtins/common.c:635
+#: builtins/common.c:642
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s:檢索目å‰ç›®éŒ„時發生錯誤:%s:%s\n"
-#: builtins/common.c:701 builtins/common.c:703
+#: builtins/common.c:708 builtins/common.c:710
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s:模稜兩å¯çš„工作è¦æ ¼"
-#: builtins/common.c:964
+#: builtins/common.c:971
msgid "help not available in this version"
msgstr "這個版本沒有å¯ç”¨çš„說明"
-#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#: builtins/common.c:1038 builtins/set.def:953 variables.c:3825
#, c-format
msgid "%s: cannot unset: readonly %s"
msgstr "%s: 無法å–消設定: 唯讀 %s"
-#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
#, c-format
msgid "%s: cannot unset"
msgstr "%s: 無法å–消設定"
@@ -342,108 +337,108 @@ msgstr "%s: 無法å–消設定"
msgid "%s: invalid action name"
msgstr "%s:無效的功能å稱"
-#: builtins/complete.def:486 builtins/complete.def:634
-#: builtins/complete.def:865
+#: builtins/complete.def:486 builtins/complete.def:642
+#: builtins/complete.def:873
#, c-format
msgid "%s: no completion specification"
msgstr "%s:沒有完æˆçš„è¦æ ¼"
-#: builtins/complete.def:688
+#: builtins/complete.def:696
msgid "warning: -F option may not work as you expect"
msgstr "警告:-F é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ"
-#: builtins/complete.def:690
+#: builtins/complete.def:698
msgid "warning: -C option may not work as you expect"
msgstr "警告:-C é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ"
-#: builtins/complete.def:838
+#: builtins/complete.def:846
msgid "not currently executing completion function"
-msgstr "ç›®å‰æœªåŸ·è¡Œè£œå®ŒåŠŸèƒ½"
+msgstr "ç›®å‰æœªåŸ·è¡Œè‡ªå‹•å®ŒæˆåŠŸèƒ½"
-#: builtins/declare.def:134
+#: builtins/declare.def:137
msgid "can only be used in a function"
msgstr "åªèƒ½ç”¨åœ¨å‡½æ•¸ä¸­"
-#: builtins/declare.def:363 builtins/declare.def:756
+#: builtins/declare.def:437
+msgid "cannot use `-f' to make functions"
+msgstr "無法用「-fã€ç”¢ç”Ÿå‡½æ•¸"
+
+#: builtins/declare.def:464 execute_cmd.c:6132
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s:唯讀函數"
+
+#: builtins/declare.def:521 builtins/declare.def:804
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: 引用變數ä¸èƒ½ç‚ºé™£åˆ—"
-#: builtins/declare.def:374 variables.c:3385
+#: builtins/declare.def:532 variables.c:3359
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: ä¸å…許å稱引用變數引用自身"
-#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
-#: variables.c:3382
+#: builtins/declare.def:537 variables.c:2072 variables.c:3278 variables.c:3286
+#: variables.c:3356
#, c-format
msgid "%s: circular name reference"
msgstr "%s: 迴圈變數å引用"
-#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:541 builtins/declare.def:811 builtins/declare.def:820
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "「%sã€ï¼šç„¡æ•ˆçš„引用變數å"
-#: builtins/declare.def:514
-msgid "cannot use `-f' to make functions"
-msgstr "無法用「-fã€ç”¢ç”Ÿå‡½æ•¸"
-
-#: builtins/declare.def:526 execute_cmd.c:5986
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s:唯讀函數"
-
-#: builtins/declare.def:824
-#, c-format
-msgid "%s: quoted compound array assignment deprecated"
-msgstr "%s:ä¸å»ºè­°ä½¿ç”¨å¼•ç”¨çš„複åˆé™£åˆ—指定"
-
-#: builtins/declare.def:838
+#: builtins/declare.def:856
#, c-format
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: 無法以這種方å¼éŠ·æ¯€é™£åˆ—變數"
-#: builtins/declare.def:845 builtins/read.def:815
+#: builtins/declare.def:862 builtins/read.def:887
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: 無法將關è¯é™£åˆ—轉化為索引陣列"
-#: builtins/enable.def:143 builtins/enable.def:151
+#: builtins/declare.def:891
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s:ä¸å»ºè­°ä½¿ç”¨å¼•ç”¨çš„複åˆé™£åˆ—指定"
+
+#: builtins/enable.def:145 builtins/enable.def:153
msgid "dynamic loading not available"
msgstr "動態載入ä¸å¯ç”¨"
-#: builtins/enable.def:343
+#: builtins/enable.def:376
#, c-format
msgid "cannot open shared object %s: %s"
msgstr "無法開啟共享物件 %s: %s"
-#: builtins/enable.def:371
+#: builtins/enable.def:405
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "無法在共享物件 %2$s 中找到 %1$s: %3$s"
-#: builtins/enable.def:388
+#: builtins/enable.def:422
#, c-format
msgid "%s: dynamic builtin already loaded"
msgstr "%s: 已經載入動態內建指令"
-#: builtins/enable.def:392
+#: builtins/enable.def:426
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "為 %s 載入函å¼æ™‚回傳錯誤 (%d):尚未載入"
-#: builtins/enable.def:517
+#: builtins/enable.def:551
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: 未以動態方å¼è¼‰å…¥"
-#: builtins/enable.def:543
+#: builtins/enable.def:577
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: 無法刪除: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
#, c-format
msgid "%s: is a directory"
msgstr "%s: 是一個目錄"
@@ -458,7 +453,7 @@ msgstr "%s: ä¸æ˜¯ä¸€èˆ¬æª”案"
msgid "%s: file is too large"
msgstr "%s: 檔案太大"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1673
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: 無法執行二進ä½æª”案"
@@ -552,12 +547,12 @@ msgstr ""
msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr "沒有與「%sã€ç¬¦åˆçš„說明主題。嘗試「help helpã€æˆ–「man -k %sã€æˆ–「info %sã€ã€‚"
-#: builtins/help.def:224
+#: builtins/help.def:223
#, c-format
msgid "%s: cannot open: %s"
msgstr "%s: 無法開啟: %s"
-#: builtins/help.def:524
+#: builtins/help.def:523
#, c-format
msgid ""
"These shell commands are defined internally. Type `help' to see this list.\n"
@@ -576,21 +571,21 @@ msgstr ""
"å稱æ—邊的星號(*)表示該指令被åœç”¨ã€‚\n"
"\n"
-#: builtins/history.def:155
+#: builtins/history.def:159
msgid "cannot use more than one of -anrw"
msgstr "最多能使用 -anrw é¸é …之一"
-#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
-#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+#: builtins/history.def:192 builtins/history.def:204 builtins/history.def:215
+#: builtins/history.def:228 builtins/history.def:240 builtins/history.def:247
msgid "history position"
msgstr "æ­·å²è¨˜éŒ„ä½ç½®"
-#: builtins/history.def:340
+#: builtins/history.def:338
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s:無效時間戳"
-#: builtins/history.def:451
+#: builtins/history.def:449
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: æ­·å²è¨˜éŒ„擴充套件失敗"
@@ -613,78 +608,78 @@ msgstr "%s: åƒæ•¸å¿…須是行程或工作 ID"
msgid "Unknown error"
msgstr "未知錯誤"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
msgid "expression expected"
msgstr "需è¦è¡¨ç¤ºå¼"
-#: builtins/mapfile.def:178
+#: builtins/mapfile.def:180
#, c-format
msgid "%s: not an indexed array"
msgstr "%s: ä¸æ˜¯ä¸€å€‹ç´¢å¼•é™£åˆ—"
-#: builtins/mapfile.def:271 builtins/read.def:308
+#: builtins/mapfile.def:276 builtins/read.def:336
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: 無效的檔案æ述符è¦æ ¼"
-#: builtins/mapfile.def:279 builtins/read.def:315
+#: builtins/mapfile.def:284 builtins/read.def:343
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: 無效的檔案æ述符: %s"
-#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#: builtins/mapfile.def:293 builtins/mapfile.def:331
#, c-format
msgid "%s: invalid line count"
msgstr "%s: 無效的列數"
-#: builtins/mapfile.def:299
+#: builtins/mapfile.def:304
#, c-format
msgid "%s: invalid array origin"
msgstr "%s: 無效的陣列原點"
-#: builtins/mapfile.def:316
+#: builtins/mapfile.def:321
#, c-format
msgid "%s: invalid callback quantum"
msgstr "%s: 無效的回呼定é‡"
-#: builtins/mapfile.def:349
+#: builtins/mapfile.def:354
msgid "empty array variable name"
msgstr "空陣列變數å"
-#: builtins/mapfile.def:370
+#: builtins/mapfile.def:375
msgid "array variable support required"
msgstr "需è¦é™£åˆ—變數支æ´"
-#: builtins/printf.def:419
+#: builtins/printf.def:430
#, c-format
msgid "`%s': missing format character"
msgstr "「%sã€: 缺少格å¼å­—å…ƒ"
-#: builtins/printf.def:474
+#: builtins/printf.def:485
#, c-format
msgid "`%c': invalid time format specification"
msgstr "「%cã€: 無效的時間格å¼è¦æ ¼"
-#: builtins/printf.def:676
+#: builtins/printf.def:708
#, c-format
msgid "`%c': invalid format character"
msgstr "「%cã€: 無效格å¼å­—å…ƒ"
-#: builtins/printf.def:702
+#: builtins/printf.def:734
#, c-format
msgid "warning: %s: %s"
msgstr "警告: %s: %s"
-#: builtins/printf.def:788
+#: builtins/printf.def:822
#, c-format
msgid "format parsing problem: %s"
msgstr "æ ¼å¼è§£æžå•é¡Œ: %s"
-#: builtins/printf.def:885
+#: builtins/printf.def:919
msgid "missing hex digit for \\x"
msgstr "使用了 \\x 但缺少å六進ä½æ•¸å­—"
-#: builtins/printf.def:900
+#: builtins/printf.def:934
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "使用了 \\%c 但缺少è¬åœ‹ç¢¼æ•¸å­—"
@@ -834,12 +829,12 @@ msgstr ""
" \n"
" 「dirsã€å…§å»ºè®Šæ•¸é¡¯ç¤ºç›®éŒ„堆疊。"
-#: builtins/read.def:280
+#: builtins/read.def:308
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: 無效的逾時è¦æ ¼"
-#: builtins/read.def:755
+#: builtins/read.def:827
#, c-format
msgid "read error: %d: %s"
msgstr "讀å–錯誤: %d: %s"
@@ -852,7 +847,7 @@ msgstr "åªèƒ½å¾žå‡½æ•¸æˆ–者原始指令稿「returnã€"
msgid "cannot simultaneously unset a function and a variable"
msgstr "無法åŒæ™‚å–消設定一個函數和一個變數"
-#: builtins/set.def:966
+#: builtins/set.def:969
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ä¸æ˜¯é™£åˆ—變數"
@@ -871,11 +866,11 @@ msgstr "%s:無法匯出"
msgid "shift count"
msgstr "ä½ç§»è¨ˆæ•¸"
-#: builtins/shopt.def:310
+#: builtins/shopt.def:323
msgid "cannot set and unset shell options simultaneously"
msgstr "無法åŒæ™‚設定和å–消設定 shell é¸é …"
-#: builtins/shopt.def:428
+#: builtins/shopt.def:444
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: 無效的 shell é¸é …å稱"
@@ -915,12 +910,12 @@ msgstr "%s 是一個函數\n"
#: builtins/type.def:299
#, c-format
msgid "%s is a special shell builtin\n"
-msgstr "%s 是特別的 shell 內建物件\n"
+msgstr "%s 是特別的 shell 內建命令\n"
#: builtins/type.def:301
#, c-format
msgid "%s is a shell builtin\n"
-msgstr "%s 是 shell 內建物件\n"
+msgstr "%s 是 shell 內建命令\n"
#: builtins/type.def:323 builtins/type.def:408
#, c-format
@@ -942,16 +937,16 @@ msgstr "%s: 無效的 limit åƒæ•¸"
msgid "`%c': bad command"
msgstr "「%cã€ï¼šä¸ç•¶çš„指令"
-#: builtins/ulimit.def:455
+#: builtins/ulimit.def:464
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s:ä¸èƒ½å¾—到 limit: %s"
-#: builtins/ulimit.def:481
+#: builtins/ulimit.def:490
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s:ä¸èƒ½ä¿®æ”¹ limit: %s"
@@ -970,7 +965,7 @@ msgstr "「%cã€: 無效的符號狀態é‹ç®—å­"
msgid "`%c': invalid symbolic mode character"
msgstr "「%cã€: 無效的符號狀態字元"
-#: error.c:89 error.c:347 error.c:349 error.c:351
+#: error.c:89 error.c:373 error.c:375 error.c:377
msgid " line "
msgstr " 列 "
@@ -990,96 +985,106 @@ msgstr "中止…"
msgid "INFORM: "
msgstr "通知:"
-#: error.c:462
+#: error.c:310
+#, c-format
+msgid "DEBUG warning: "
+msgstr "除錯警告:"
+
+#: error.c:488
msgid "unknown command error"
msgstr "ä¸æ˜ŽæŒ‡ä»¤éŒ¯èª¤"
-#: error.c:463
+#: error.c:489
msgid "bad command type"
msgstr "ä¸ç•¶çš„指令類型"
-#: error.c:464
+#: error.c:490
msgid "bad connector"
msgstr "ä¸ç•¶çš„連接器"
-#: error.c:465
+#: error.c:491
msgid "bad jump"
msgstr "錯誤的跳轉"
-#: error.c:503
+#: error.c:529
#, c-format
msgid "%s: unbound variable"
msgstr "%s: 未ç¶å®šçš„變數"
-#: eval.c:242
+#: eval.c:243
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\a 等待輸入逾時:自動登出\n"
-#: execute_cmd.c:537
+#: execute_cmd.c:555
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "無法從 /dev/null é‡å®šå‘標準輸入: %s"
-#: execute_cmd.c:1297
+#: execute_cmd.c:1317
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "時間格å¼:「%cã€: 無效的格å¼å­—å…ƒ"
-#: execute_cmd.c:2362
+#: execute_cmd.c:2391
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc:coproc [%d:%s] ä»ç„¶å­˜åœ¨"
-#: execute_cmd.c:2486
+#: execute_cmd.c:2524
msgid "pipe error"
msgstr "管é“錯誤"
-#: execute_cmd.c:4793
+#: execute_cmd.c:4923
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval:超出最大 eval 巢狀層數 (%d)"
-#: execute_cmd.c:4805
+#: execute_cmd.c:4935
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: 超出最大來æºå·¢ç‹€å±¤æ•¸ (%d)"
-#: execute_cmd.c:4913
+#: execute_cmd.c:5043
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: 超出最大函數巢狀層數 (%d)"
-#: execute_cmd.c:5467
+#: execute_cmd.c:5598
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: å—é™çš„: 無法在指令å稱中使用「/ã€"
-#: execute_cmd.c:5574
+#: execute_cmd.c:5715
#, c-format
msgid "%s: command not found"
msgstr "%s:指令找ä¸åˆ°"
-#: execute_cmd.c:5816
+#: execute_cmd.c:5957
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5854
+#: execute_cmd.c:5975
+#, c-format
+msgid "%s: cannot execute: required file not found"
+msgstr "%s:無法執行:找ä¸åˆ°å¿…須檔案"
+
+#: execute_cmd.c:6000
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: ä¸ç•¶çš„直譯器"
-#: execute_cmd.c:5891
+#: execute_cmd.c:6037
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: 無法執行二進ä½æª”案: %s"
-#: execute_cmd.c:5977
+#: execute_cmd.c:6123
#, c-format
msgid "`%s': is a special builtin"
msgstr "「%sã€: 特殊內建"
-#: execute_cmd.c:6029
+#: execute_cmd.c:6175
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "無法複製檔案æ述符 %d 到檔案æ述符 %d"
@@ -1092,68 +1097,68 @@ msgstr "表示å¼éžè¿´å±¤æ¬¡è¶…出範åœ"
msgid "recursion stack underflow"
msgstr "éžè¿´å †ç–Šä¸‹é™æº¢ä½"
-#: expr.c:477
+#: expr.c:478
msgid "syntax error in expression"
msgstr "表示å¼èªžæ³•éŒ¯èª¤"
-#: expr.c:521
+#: expr.c:522
msgid "attempted assignment to non-variable"
msgstr "嘗試指派給éžè®Šæ•¸"
-#: expr.c:530
+#: expr.c:531
msgid "syntax error in variable assignment"
msgstr "變數定義語法錯誤"
-#: expr.c:544 expr.c:911
+#: expr.c:545 expr.c:912
msgid "division by 0"
msgstr "除 0"
-#: expr.c:592
+#: expr.c:593
msgid "bug: bad expassign token"
msgstr "錯誤:ä¸ç•¶çš„表示å¼å­—組"
-#: expr.c:646
+#: expr.c:647
msgid "`:' expected for conditional expression"
msgstr "æ¢ä»¶è¡¨ç¤ºå¼éœ€è¦ã€Œ:ã€"
-#: expr.c:972
+#: expr.c:973
msgid "exponent less than 0"
msgstr "指數å°æ–¼ 0"
-#: expr.c:1029
+#: expr.c:1030
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "é å¢žç¬¦æˆ–é æ¸›ç¬¦å¾Œæ‡‰è·Ÿæœ‰è­˜åˆ¥ç¬¦"
-#: expr.c:1056
+#: expr.c:1057
msgid "missing `)'"
msgstr "缺少「)ã€"
-#: expr.c:1107 expr.c:1487
+#: expr.c:1108 expr.c:1492
msgid "syntax error: operand expected"
msgstr "語法錯誤: 需è¦é‹ç®—å…ƒ"
-#: expr.c:1489
+#: expr.c:1494
msgid "syntax error: invalid arithmetic operator"
msgstr "語法錯誤: 無效的算術é‹ç®—å­"
-#: expr.c:1513
+#: expr.c:1518
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (錯誤字組是「%sã€)"
-#: expr.c:1573
+#: expr.c:1578
msgid "invalid arithmetic base"
msgstr "無效的算術進ä½"
-#: expr.c:1582
+#: expr.c:1587
msgid "invalid integer constant"
msgstr "無效的整數常數"
-#: expr.c:1598
+#: expr.c:1603
msgid "value too great for base"
msgstr "數值太大ä¸å¯ç‚ºç®—術進ä½çš„基底"
-#: expr.c:1647
+#: expr.c:1652
#, c-format
msgid "%s: expression error\n"
msgstr "%s: 表示å¼éŒ¯èª¤\n"
@@ -1162,7 +1167,7 @@ msgstr "%s: 表示å¼éŒ¯èª¤\n"
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: 無法存å–上層目錄"
-#: input.c:99 subst.c:6069
+#: input.c:99 subst.c:6208
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "無法為檔案æ述符 %d é‡è¨­ç„¡å»¶é²æ¨¡å¼"
@@ -1181,167 +1186,167 @@ msgstr "save_bash_input: 已經存在æ供給新 fd %d çš„ç·©è¡å€"
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: 行程群組管é“"
-#: jobs.c:906
+#: jobs.c:907
#, c-format
msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:959
+#: jobs.c:960
#, c-format
msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
-#: jobs.c:1283
+#: jobs.c:1279
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "產生的行程識別碼 %d 顯示為執行中的工作 %d"
-#: jobs.c:1402
+#: jobs.c:1397
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "刪除行程群組 %2$ld 中已åœæ­¢çš„工作 %1$d"
-#: jobs.c:1511
+#: jobs.c:1502
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: 行程識別碼 %5ld(%s) 標註為ä»æ´»è‘—"
-#: jobs.c:1850
+#: jobs.c:1839
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: 無此行程識別碼"
-#: jobs.c:1865
+#: jobs.c:1854
#, c-format
msgid "Signal %d"
msgstr "訊號 %d"
-#: jobs.c:1879 jobs.c:1905
+#: jobs.c:1868 jobs.c:1894
msgid "Done"
msgstr "已完æˆ"
-#: jobs.c:1884 siglist.c:122
+#: jobs.c:1873 siglist.c:123
msgid "Stopped"
msgstr "åœæ­¢"
-#: jobs.c:1888
+#: jobs.c:1877
#, c-format
msgid "Stopped(%s)"
msgstr "å·²åœæ­¢(%s)"
-#: jobs.c:1892
+#: jobs.c:1881
msgid "Running"
msgstr "執行中"
-#: jobs.c:1909
+#: jobs.c:1898
#, c-format
msgid "Done(%d)"
msgstr "已完æˆ(%d)"
-#: jobs.c:1911
+#: jobs.c:1900
#, c-format
msgid "Exit %d"
msgstr "çµæŸ %d"
-#: jobs.c:1914
+#: jobs.c:1903
msgid "Unknown status"
msgstr "ä¸æ˜Žç‹€æ…‹"
-#: jobs.c:2001
+#: jobs.c:1990
#, c-format
msgid "(core dumped) "
msgstr "(核心已傾å°)"
-#: jobs.c:2020
+#: jobs.c:2009
#, c-format
msgid " (wd: %s)"
msgstr " (工作目錄: %s)"
-#: jobs.c:2259
+#: jobs.c:2250
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "å­è¡Œç¨‹ setpgid (%ld 到 %ld)"
-#: jobs.c:2617 nojobs.c:664
+#: jobs.c:2608 nojobs.c:666
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: 行程識別碼 %ld ä¸æ˜¯ç›®å‰ shell çš„å­è¡Œç¨‹"
-#: jobs.c:2893
+#: jobs.c:2884
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wiat_for: 沒有行程 %ld 的紀錄"
-#: jobs.c:3236
+#: jobs.c:3223
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: 工作 %d å·²åœæ­¢"
-#: jobs.c:3564
+#: jobs.c:3551
#, c-format
msgid "%s: no current jobs"
msgstr "%s:目å‰æ²’有工作"
-#: jobs.c:3571
+#: jobs.c:3558
#, c-format
msgid "%s: job has terminated"
msgstr "%s: 工作已經終止"
-#: jobs.c:3580
+#: jobs.c:3567
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: 工作 %d 已在背景執行"
-#: jobs.c:3806
+#: jobs.c:3793
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: é–‹å•Ÿ WNOHANG 以é¿å…ç„¡é™é˜»å¡ž"
-#: jobs.c:4320
+#: jobs.c:4307
#, c-format
msgid "%s: line %d: "
msgstr "%s: 第 %d 列:"
-#: jobs.c:4334 nojobs.c:919
+#: jobs.c:4321 nojobs.c:921
#, c-format
msgid " (core dumped)"
msgstr " (核心已傾å°)"
-#: jobs.c:4346 jobs.c:4359
+#: jobs.c:4333 jobs.c:4346
#, c-format
msgid "(wd now: %s)\n"
msgstr "(ç›®å‰å·¥ä½œç›®éŒ„:%s)\n"
-#: jobs.c:4391
+#: jobs.c:4378
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp 失敗"
-#: jobs.c:4447
+#: jobs.c:4434
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control:背景中沒有工作控制"
-#: jobs.c:4463
+#: jobs.c:4450
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: 列è¦å¾‹"
-#: jobs.c:4473
+#: jobs.c:4460
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4494 jobs.c:4503
+#: jobs.c:4481 jobs.c:4490
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "無法設定終端行程群組(%d)"
-#: jobs.c:4508
+#: jobs.c:4495
msgid "no job control in this shell"
msgstr "此 shell 中無工作控制"
-#: lib/malloc/malloc.c:353
+#: lib/malloc/malloc.c:367
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: 主張失敗: %s\n"
-#: lib/malloc/malloc.c:369
+#: lib/malloc/malloc.c:383
#, c-format
msgid ""
"\r\n"
@@ -1350,47 +1355,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: 主張已修補\r\n"
-#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
msgid "unknown"
msgstr "ä¸æ˜Ž"
-#: lib/malloc/malloc.c:882
+#: lib/malloc/malloc.c:892
msgid "malloc: block on free list clobbered"
msgstr "malloc: 空閒串列中的å€å¡Šæ壞"
-#: lib/malloc/malloc.c:972
+#: lib/malloc/malloc.c:980
msgid "free: called with already freed block argument"
msgstr "free: 用已經釋放的å€å¡Šåšç‚ºå‘¼å«åƒæ•¸"
-#: lib/malloc/malloc.c:975
+#: lib/malloc/malloc.c:983
msgid "free: called with unallocated block argument"
msgstr "free: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«åƒæ•¸"
-#: lib/malloc/malloc.c:994
+#: lib/malloc/malloc.c:1001
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: 檢測到下é™æº¢ä½ï¼›mh_nbytes 超出範åœ"
-#: lib/malloc/malloc.c:1001
+#: lib/malloc/malloc.c:1007
msgid "free: underflow detected; magic8 corrupted"
msgstr "free: åµæ¸¬åˆ°ä¸‹é™æº¢ä½ï¼›magic8 æ壞"
-#: lib/malloc/malloc.c:1009
+#: lib/malloc/malloc.c:1014
msgid "free: start and end chunk sizes differ"
msgstr "free: 啟始和末尾å€å¡Šå¤§å°ä¸ä¸€è‡´"
-#: lib/malloc/malloc.c:1119
+#: lib/malloc/malloc.c:1176
msgid "realloc: called with unallocated block argument"
msgstr "realloc: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«åƒæ•¸"
-#: lib/malloc/malloc.c:1134
+#: lib/malloc/malloc.c:1191
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: 檢測到下é™æº¢ä½ï¼›mh_nbytes 超出範åœ"
-#: lib/malloc/malloc.c:1141
+#: lib/malloc/malloc.c:1197
msgid "realloc: underflow detected; magic8 corrupted"
msgstr "realloc: åµæ¸¬åˆ°ä¸‹é™æº¢ä½ï¼›magic8 æ壞"
-#: lib/malloc/malloc.c:1150
+#: lib/malloc/malloc.c:1205
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: 啟始和末尾å€å¡Šå¤§å°ä¸ä¸€è‡´"
@@ -1432,22 +1437,22 @@ msgstr "%s:ä¸ç•¶çš„網路路徑è¦æ ¼"
msgid "network operations not supported"
msgstr "ä¸æ”¯æ´ç¶²è·¯æ“作"
-#: locale.c:217
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: 無法變更語å€é¸é … (%s)"
-#: locale.c:219
+#: locale.c:221
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: 無法變更語å€é¸é … (%s): %s"
-#: locale.c:292
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: 無法變更語å€é¸é … (%s)"
-#: locale.c:294
+#: locale.c:296
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: 無法變更語å€é¸é … (%s): %s"
@@ -1465,143 +1470,143 @@ msgstr "您有新郵件在 $_"
msgid "The mail in %s has been read\n"
msgstr "郵件在 %s 已閱讀\n"
-#: make_cmd.c:317
+#: make_cmd.c:314
msgid "syntax error: arithmetic expression required"
msgstr "語法錯誤:需è¦ç®—å¼"
-#: make_cmd.c:319
+#: make_cmd.c:316
msgid "syntax error: `;' unexpected"
msgstr "語法錯誤:「;ã€æ„外"
-#: make_cmd.c:320
+#: make_cmd.c:317
#, c-format
msgid "syntax error: `((%s))'"
msgstr "語法錯誤:「((%s))ã€"
-#: make_cmd.c:572
+#: make_cmd.c:569
#, c-format
msgid "make_here_document: bad instruction type %d"
msgstr "make_here_document:ä¸ç•¶çš„指示類型 %d"
-#: make_cmd.c:657
+#: make_cmd.c:668
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr "ç«‹å³æª”案在第 %d 列被檔案çµæŸç¬¦åˆ†éš” (需è¦ã€Œ%sã€)"
-#: make_cmd.c:756
+#: make_cmd.c:769
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection:é‡æ–°å°Žå‘指示「%dã€è¶…出範åœ"
-#: parse.y:2393
+#: parse.y:2428
#, c-format
msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
msgstr "shell_getc: shell_input_line_size (%zu) è¶…éŽ SIZE_MAX (%lu):列被截斷"
-#: parse.y:2826
+#: parse.y:2921
msgid "maximum here-document count exceeded"
msgstr "超éŽæ­¤è™•æª”案上é™æœ€å¤§å€¼"
-#: parse.y:3581 parse.y:3957 parse.y:4556
+#: parse.y:3684 parse.y:4244 parse.y:6148
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "尋找符åˆçš„「%cã€æ™‚é‡åˆ°äº†æœªé æœŸçš„檔案çµæŸç¬¦"
-#: parse.y:4696
+#: parse.y:4452
msgid "unexpected EOF while looking for `]]'"
msgstr "尋找「]]ã€æ™‚é‡åˆ°äº†æœªé æœŸçš„檔案çµæŸç¬¦"
-#: parse.y:4701
+#: parse.y:4457
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "æ¢ä»¶è¡¨ç¤ºå¼ä¸­æœ‰èªžæ³•éŒ¯èª¤: 未é æœŸçš„字組「%sã€"
-#: parse.y:4705
+#: parse.y:4461
msgid "syntax error in conditional expression"
msgstr "語法錯誤,在有æ¢ä»¶çš„表示å¼"
-#: parse.y:4783
+#: parse.y:4539
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "未é æœŸçš„字組「%sã€ï¼Œéœ€è¦ã€Œ)ã€"
-#: parse.y:4787
+#: parse.y:4543
msgid "expected `)'"
msgstr "é æœŸã€Œ)ã€"
-#: parse.y:4815
+#: parse.y:4571
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸ã€Œ%sã€"
-#: parse.y:4819
+#: parse.y:4575
msgid "unexpected argument to conditional unary operator"
msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸"
-#: parse.y:4865
+#: parse.y:4621
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "未é æœŸçš„字組「%sã€ï¼Œéœ€è¦äºŒå…ƒæ¢ä»¶é‹ç®—å­"
-#: parse.y:4869
+#: parse.y:4625
msgid "conditional binary operator expected"
msgstr "需è¦äºŒå…ƒæ¢ä»¶é‹ç®—å­"
-#: parse.y:4891
+#: parse.y:4647
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸ã€Œ%sã€"
-#: parse.y:4895
+#: parse.y:4651
msgid "unexpected argument to conditional binary operator"
msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸"
-#: parse.y:4906
+#: parse.y:4662
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "æ¢ä»¶æŒ‡ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%cã€"
-#: parse.y:4909
+#: parse.y:4665
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "æ¢ä»¶æŒ‡ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%sã€"
-#: parse.y:4913
+#: parse.y:4669
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "æ¢ä»¶æŒ‡ä»¤ä¸­æœ‰æœªé æœŸçš„字組 %d"
-#: parse.y:6336
+#: parse.y:6118
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "未é æœŸçš„字組「%sã€é™„近有語法錯誤"
-#: parse.y:6355
+#: parse.y:6137
#, c-format
msgid "syntax error near `%s'"
msgstr "「%sã€é™„近有語法錯誤"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error: unexpected end of file"
msgstr "語法錯誤: 未é æœŸçš„檔案çµå°¾"
-#: parse.y:6365
+#: parse.y:6151
msgid "syntax error"
msgstr "語法錯誤"
-#: parse.y:6428
+#: parse.y:6216
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "使用「%sã€çµæŸ shell。\n"
-#: parse.y:6602
+#: parse.y:6394
msgid "unexpected EOF while looking for matching `)'"
msgstr "尋找符åˆçš„「)ã€æ™‚é‡åˆ°äº†æœªé æœŸçš„檔案çµæŸç¬¦"
#: pcomplete.c:1132
#, c-format
msgid "completion: function `%s' not found"
-msgstr "補完: 未找到函數「%sã€"
+msgstr "自動完æˆ: 未找到函數「%sã€"
#: pcomplete.c:1722
#, c-format
@@ -1611,7 +1616,7 @@ msgstr "programmable_completion:%s:å¯èƒ½é‡è©¦è¿´åœˆ"
#: pcomplib.c:182
#, c-format
msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr "progcomp_insert: %s: 空的補完è¦æ ¼"
+msgstr "progcomp_insert: %s: 空的自動完æˆè¦æ ¼"
#: print_cmd.c:302
#, c-format
@@ -1632,94 +1637,94 @@ msgstr "xtrace_set: 空的檔案指標"
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-#: print_cmd.c:1540
+#: print_cmd.c:1545
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf:「%cã€: 無效的格å¼å­—å…ƒ"
-#: redir.c:149 redir.c:197
+#: redir.c:150 redir.c:198
msgid "file descriptor out of range"
msgstr "檔案æ述符超出範åœ"
-#: redir.c:204
+#: redir.c:205
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: 模稜兩å¯çš„é‡å®šå‘"
-#: redir.c:208
+#: redir.c:209
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: 無法覆寫已存在的檔案"
-#: redir.c:213
+#: redir.c:214
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: å—é™çš„: 無法é‡å®šå‘輸出"
-#: redir.c:218
+#: redir.c:219
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "無法為立å³æª”案建立暫存檔案: %s"
-#: redir.c:222
+#: redir.c:223
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: 無法將檔案æ述符指派給變數"
-#: redir.c:649
+#: redir.c:650
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "沒有網路時ä¸æ”¯æ´ /dev/(tcp|udp)/host/port"
-#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+#: redir.c:945 redir.c:1065 redir.c:1130 redir.c:1303
msgid "redirection error: cannot duplicate fd"
msgstr "é‡å®šå‘錯誤: 無法複製檔案æ述符"
-#: shell.c:347
+#: shell.c:353
msgid "could not find /tmp, please create!"
msgstr "無法找到 /tmp,請建立"
-#: shell.c:351
+#: shell.c:357
msgid "/tmp must be a valid directory name"
msgstr "/tmp 必須為有效的目錄å稱"
-#: shell.c:804
+#: shell.c:826
msgid "pretty-printing mode ignored in interactive shells"
msgstr "å·²åœ¨äº’å‹•å¼ shell 中忽略美化輸出模å¼"
-#: shell.c:948
+#: shell.c:972
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c:無效é¸é …"
-#: shell.c:1319
+#: shell.c:1343
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "無法設定 UID 至 %d:有效的 UID %d"
-#: shell.c:1330
+#: shell.c:1354
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "無法設定 GID 至 %d:有效的 GID %d"
-#: shell.c:1518
+#: shell.c:1544
msgid "cannot start debugger; debugging mode disabled"
msgstr "無法開啟åµéŒ¯å™¨ï¼›åµéŒ¯æ¨¡å¼å·²åœç”¨"
-#: shell.c:1632
+#: shell.c:1658
#, c-format
msgid "%s: Is a directory"
msgstr "%s: 是一個目錄"
-#: shell.c:1881
+#: shell.c:1907
msgid "I have no name!"
msgstr "我沒有åå­—ï¼"
-#: shell.c:2035
+#: shell.c:2061
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash,版本 %s-(%s)\n"
-#: shell.c:2036
+#: shell.c:2062
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1728,317 +1733,317 @@ msgstr ""
"用法:\t%s [GNU é•·é¸é …] [é¸é …] …\n"
"\t%s [GNU é•·é¸é …] [é¸é …] 指令稿檔案 …\n"
-#: shell.c:2038
+#: shell.c:2064
msgid "GNU long options:\n"
msgstr "GNU é•·é¸é …:\n"
-#: shell.c:2042
+#: shell.c:2068
msgid "Shell options:\n"
msgstr "Shell é¸é …:\n"
-#: shell.c:2043
+#: shell.c:2069
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD 或 -c <指令> 或 -O <shopt é¸é …>\t\t(僅é©åˆå‘¼å«)\n"
-#: shell.c:2062
+#: shell.c:2088
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s or -o é¸é …\n"
-#: shell.c:2068
+#: shell.c:2094
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "輸入「%s -c \"help set\"ã€æ›´å¤šé—œæ–¼ shell é¸é …的訊æ¯ã€‚\n"
-#: shell.c:2069
+#: shell.c:2095
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "輸入「%s -c helpã€æ›´å¤šé—œæ–¼å…§å»º shell 指令的訊æ¯ã€‚\n"
-#: shell.c:2070
+#: shell.c:2096
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "使用「bashbugã€æŒ‡ä»¤é€šå ±ç¨‹å¼éŒ¯èª¤ã€‚\n"
-#: shell.c:2072
+#: shell.c:2098
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash 官網:<http://www.gnu.org/software/bash>\n"
-#: shell.c:2073
+#: shell.c:2099
#, 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
+#: sig.c:765
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask:%d:無效æ“作"
-#: siglist.c:47
+#: siglist.c:48
msgid "Bogus signal"
msgstr "å½è¨Šè™Ÿ"
-#: siglist.c:50
+#: siglist.c:51
msgid "Hangup"
msgstr "掛斷"
-#: siglist.c:54
+#: siglist.c:55
msgid "Interrupt"
msgstr "中止"
-#: siglist.c:58
+#: siglist.c:59
msgid "Quit"
msgstr "çµæŸ"
-#: siglist.c:62
+#: siglist.c:63
msgid "Illegal instruction"
msgstr "無效指令"
-#: siglist.c:66
+#: siglist.c:67
msgid "BPT trace/trap"
msgstr "斷點追蹤/陷阱"
-#: siglist.c:74
+#: siglist.c:75
msgid "ABORT instruction"
msgstr "放棄指令"
-#: siglist.c:78
+#: siglist.c:79
msgid "EMT instruction"
msgstr "模擬器陷阱指令"
-#: siglist.c:82
+#: siglist.c:83
msgid "Floating point exception"
msgstr "期望浮點數"
-#: siglist.c:86
+#: siglist.c:87
msgid "Killed"
msgstr "強制çµæŸ"
-#: siglist.c:90
+#: siglist.c:91
msgid "Bus error"
msgstr "匯æµæŽ’錯誤"
-#: siglist.c:94
+#: siglist.c:95
msgid "Segmentation fault"
msgstr "程å¼è¨˜æ†¶é«”å€æ®µéŒ¯èª¤"
-#: siglist.c:98
+#: siglist.c:99
msgid "Bad system call"
msgstr "無效系統呼å«"
-#: siglist.c:102
+#: siglist.c:103
msgid "Broken pipe"
msgstr "管線æ壞"
-#: siglist.c:106
+#: siglist.c:107
msgid "Alarm clock"
msgstr "鬧é˜"
-#: siglist.c:110
+#: siglist.c:111
msgid "Terminated"
msgstr "終止"
-#: siglist.c:114
+#: siglist.c:115
msgid "Urgent IO condition"
msgstr "緊急 I/O ç‹€æ³"
-#: siglist.c:118
+#: siglist.c:119
msgid "Stopped (signal)"
msgstr "åœæ­¢ï¼ˆä¿¡è™Ÿï¼‰"
-#: siglist.c:126
+#: siglist.c:127
msgid "Continue"
msgstr "繼續"
-#: siglist.c:134
+#: siglist.c:135
msgid "Child death or stop"
msgstr "å­è¡Œç¨‹å·²æ­»æˆ–者åœæ­¢"
-#: siglist.c:138
+#: siglist.c:139
msgid "Stopped (tty input)"
msgstr "åœæ­¢ï¼ˆtty 輸入)"
-#: siglist.c:142
+#: siglist.c:143
msgid "Stopped (tty output)"
msgstr "åœæ­¢ï¼ˆtty 輸出)"
-#: siglist.c:146
+#: siglist.c:147
msgid "I/O ready"
msgstr "I/O 就緒"
-#: siglist.c:150
+#: siglist.c:151
msgid "CPU limit"
msgstr "CPU é™åˆ¶"
-#: siglist.c:154
+#: siglist.c:155
msgid "File limit"
msgstr "檔案é™åˆ¶"
-#: siglist.c:158
+#: siglist.c:159
msgid "Alarm (virtual)"
msgstr "警報(虛擬)"
-#: siglist.c:162
+#: siglist.c:163
msgid "Alarm (profile)"
msgstr "警報(å´å¯«)"
-#: siglist.c:166
+#: siglist.c:167
msgid "Window changed"
msgstr "已變更視窗"
-#: siglist.c:170
+#: siglist.c:171
msgid "Record lock"
msgstr "記錄鎖"
-#: siglist.c:174
+#: siglist.c:175
msgid "User signal 1"
msgstr "使用者訊號 1"
-#: siglist.c:178
+#: siglist.c:179
msgid "User signal 2"
msgstr "使用者訊號 2"
-#: siglist.c:182
+#: siglist.c:183
msgid "HFT input data pending"
msgstr "HFT 待輸入資料"
-#: siglist.c:186
+#: siglist.c:187
msgid "power failure imminent"
msgstr "å³å°‡åœæ­¢é›»æº"
-#: siglist.c:190
+#: siglist.c:191
msgid "system crash imminent"
msgstr "系統å³å°‡å´©æ½°"
-#: siglist.c:194
+#: siglist.c:195
msgid "migrate process to another CPU"
msgstr "é·ç§»è¡Œç¨‹è‡³å¦ä¸€å€‹ CPU"
-#: siglist.c:198
+#: siglist.c:199
msgid "programming error"
msgstr "程å¼è¨­è¨ˆéŒ¯èª¤"
-#: siglist.c:202
+#: siglist.c:203
msgid "HFT monitor mode granted"
msgstr "已授予 HFT 監視模å¼"
-#: siglist.c:206
+#: siglist.c:207
msgid "HFT monitor mode retracted"
msgstr "已復原 HFT 監視模å¼"
-#: siglist.c:210
+#: siglist.c:211
msgid "HFT sound sequence has completed"
msgstr "å·²å®Œæˆ HFT è²éŸ³åºåˆ—"
-#: siglist.c:214
+#: siglist.c:215
msgid "Information request"
msgstr "資訊請求"
-#: siglist.c:222 siglist.c:224
+#: siglist.c:223 siglist.c:225
#, c-format
msgid "Unknown Signal #%d"
msgstr "ä¸æ˜Žè¨Šè™Ÿ #%d"
-#: subst.c:1476 subst.c:1666
+#: subst.c:1480 subst.c:1670
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "錯誤的å–代: 在 %2$s 中沒有閉åˆçš„「%1$sã€"
-#: subst.c:3281
+#: subst.c:3307
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: 無法將串列指派給陣列æˆå“¡"
-#: subst.c:5910 subst.c:5926
+#: subst.c:6048 subst.c:6064
msgid "cannot make pipe for process substitution"
msgstr "無法為行程å–代建立管é“"
-#: subst.c:5985
+#: subst.c:6124
msgid "cannot make child for process substitution"
msgstr "無法為行程å–代建立å­è¡Œç¨‹"
-#: subst.c:6059
+#: subst.c:6198
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "無法開啟命åç®¡é“ %s 進 readline-"
-#: subst.c:6061
+#: subst.c:6200
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "無法開啟命åç®¡é“ %s 進行寫入"
-#: subst.c:6084
+#: subst.c:6223
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "無法將命åç®¡é“ %s åšç‚ºæª”案æ述符 %d 複製"
-#: subst.c:6213
+#: subst.c:6370
msgid "command substitution: ignored null byte in input"
msgstr "指令å–代:在輸入中忽略了空ä½å…ƒçµ„"
-#: subst.c:6353
+#: subst.c:6533
msgid "cannot make pipe for command substitution"
msgstr "無法為指令å–代建立管é“"
-#: subst.c:6397
+#: subst.c:6580
msgid "cannot make child for command substitution"
msgstr "無法為指令å–代建立å­è¡Œç¨‹"
-#: subst.c:6423
+#: subst.c:6613
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: 無法將管é“複製為檔案æ述符 1"
-#: subst.c:6883 subst.c:9952
+#: subst.c:7082 subst.c:10252
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: 無效的引用變數å"
-#: subst.c:6979 subst.c:6997 subst.c:7169
+#: subst.c:7178 subst.c:7196 subst.c:7369
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: 無效的間接擴充"
-#: subst.c:7013 subst.c:7177
+#: subst.c:7212 subst.c:7377
#, c-format
msgid "%s: invalid variable name"
msgstr "%s:無效的變數å稱"
-#: subst.c:7256
+#: subst.c:7478
#, c-format
msgid "%s: parameter not set"
msgstr "%s:åƒæ•¸æœªè¨­å®š"
-#: subst.c:7258
+#: subst.c:7480
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: åƒæ•¸ç‚ºç©ºæˆ–未設定"
-#: subst.c:7503 subst.c:7518
+#: subst.c:7727 subst.c:7742
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: å­ä¸²è¡¨ç¤ºå¼ < 0"
-#: subst.c:9281 subst.c:9302
+#: subst.c:9560 subst.c:9587
#, c-format
msgid "%s: bad substitution"
msgstr "%s: 錯誤的å–代"
-#: subst.c:9390
+#: subst.c:9678
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: 無法如此指派"
-#: subst.c:9814
+#: subst.c:10111
msgid "future versions of the shell will force evaluation as an arithmetic substitution"
msgstr "未來版本的 shell 會強制以算術å–代求值"
-#: subst.c:10367
+#: subst.c:10795
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "錯誤的å–代: 在 %s 中沒有閉åˆçš„「`ã€"
-#: subst.c:11434
+#: subst.c:11874
#, c-format
msgid "no match: %s"
msgstr "無符åˆ: %s"
@@ -2061,21 +2066,21 @@ msgstr "需è¦ã€Œ)ã€"
msgid "`)' expected, found %s"
msgstr "需è¦ã€Œ)ã€ï¼Œå¾—到 %s"
-#: test.c:466 test.c:799
+#: test.c:469 test.c:814
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: 需è¦äºŒå…ƒè¡¨ç¤ºå¼"
-#: test.c:756 test.c:759
+#: test.c:771 test.c:774
#, c-format
msgid "%s: unary operator expected"
msgstr "%s: 需è¦ä¸€å…ƒè¡¨ç¤ºå¼"
-#: test.c:881
+#: test.c:896
msgid "missing `]'"
msgstr "缺少「]ã€"
-#: test.c:899
+#: test.c:914
#, c-format
msgid "syntax error: `%s' unexpected"
msgstr "語法錯誤:éžé æœŸçš„「%sã€"
@@ -2084,99 +2089,104 @@ msgstr "語法錯誤:éžé æœŸçš„「%sã€"
msgid "invalid signal number"
msgstr "無效訊號數字"
-#: trap.c:325
+#: trap.c:323
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "æ•æ‰è™•ç†å‡½å¼ï¼šé”到最大æ•æ‰è™•ç†å‡½å¼ç­‰ç´š (%d)"
-#: trap.c:414
+#: trap.c:412
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: trap_list[%d] 中的錯誤值: %p"
-#: trap.c:418
+#: trap.c:416
#, c-format
msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr "run_pending_traps:訊號處ç†æ˜¯ SIG_DFL,resending %d (%s) to myself"
-#: trap.c:487
+#: trap.c:509
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler:ä¸ç•¶çš„訊號 %d"
-#: variables.c:421
+#: variables.c:424
#, c-format
msgid "error importing function definition for `%s'"
msgstr "錯誤,輸入的函數定義為「%sã€"
-#: variables.c:833
+#: variables.c:838
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "shell 層次 (%d) 太高,é‡è¨­ç‚º 1"
-#: variables.c:2674
+#: variables.c:2642
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ç›®å‰ä½œç”¨åŸŸä¸­æ²’有函數語境"
-#: variables.c:2693
+#: variables.c:2661
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: 變數ä¸å¯æŒ‡æ´¾å€¼"
-#: variables.c:3475
+#: variables.c:2818 variables.c:2874
+#, c-format
+msgid "%s: cannot inherit value from incompatible type"
+msgstr "%s:無法從ä¸ç›¸å®¹çš„類型繼承數值"
+
+#: variables.c:3459
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s:指定數字至å稱åƒè€ƒ"
-#: variables.c:4404
+#: variables.c:4390
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ç›®å‰ä½œç”¨åŸŸä¸­æ²’有函數語境"
-#: variables.c:4771
+#: variables.c:4757
#, c-format
msgid "%s has null exportstr"
msgstr "%s 有空的 exportstr"
-#: variables.c:4776 variables.c:4785
+#: variables.c:4762 variables.c:4771
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "%2$s 的 exportstr 中有無效的字元 %1$d"
-#: variables.c:4791
+#: variables.c:4777
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "%s çš„ exportstr 中沒有「=ã€"
-#: variables.c:5331
+#: variables.c:5317
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: shell_variables çš„å‰ç«¯ä¸æ˜¯å‡½æ•¸èªžå¢ƒ"
-#: variables.c:5344
+#: variables.c:5330
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: 沒有 global_variables 語境"
-#: variables.c:5424
+#: variables.c:5410
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: shell_variables çš„å‰ç«¯ä¸æ˜¯è‡¨æ™‚環境作用域"
-#: variables.c:6387
+#: variables.c:6400
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: 無法åšç‚ºæª”案開啟"
-#: variables.c:6392
+#: variables.c:6405
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: 追蹤檔案æ述符的值無效"
-#: variables.c:6437
+#: variables.c:6450
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: 相容版本數值超出範åœ"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "著作權所有 (C) 2020 自由軟體基金會"
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "著作權所有 (C) 2022 自由軟體基金會"
#: version.c:47 version2.c:47
msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
@@ -2237,7 +2247,7 @@ msgstr "continue [n]"
#: builtins.c:60
msgid "builtin [shell-builtin [arg ...]]"
-msgstr "builtin [shell 內建物件 [åƒæ•¸ …]]"
+msgstr "builtin [shell 內建命令 [åƒæ•¸ …]]"
#: builtins.c:63
msgid "caller [expr]"
@@ -2256,12 +2266,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] 指令 [åƒæ•¸ …]"
#: builtins.c:78
-msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [å稱[=值] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [name[=value] ...] 或 declare -p [-aAfFilnrtux] [name ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgiIlnrtux] [-p] å稱[=值] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] name[=value] ... 或 typeset -p [-aAfFilnrtux] [name ...]"
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2348,8 +2358,8 @@ msgid "return [n]"
msgstr "return [n]"
#: builtins.c:142
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [--abefhkmnptuvxBCHP] [-o é¸é …å] [--] [åƒæ•¸ …]"
+msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2396,8 +2406,8 @@ msgid "type [-afptP] name [name ...]"
msgstr "type [-afptP] å稱 [å稱 …]"
#: builtins.c:171
-msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
#: builtins.c:174
msgid "umask [-p] [-S] [mode]"
@@ -2436,12 +2446,12 @@ msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else C
msgstr "if 指令 ; then 指令 ; [ elif 指令 ; then 指令 ; ]… [ else 指令 ; ] fi"
#: builtins.c:196
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while 指令 ; do 指令 ; done"
+msgid "while COMMANDS; do COMMANDS-2; done"
+msgstr "while COMMANDS; do COMMANDS-2; done"
#: builtins.c:198
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until 指令 ; do 指令 ; done"
+msgid "until COMMANDS; do COMMANDS-2; done"
+msgstr "until COMMANDS; do COMMANDS-2; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
@@ -2673,14 +2683,14 @@ msgid ""
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
" not a shell builtin."
msgstr ""
-"執行 shell 內建物件。\n"
+"執行 shell 內建命令。\n"
" \n"
-" 帶 <åƒæ•¸> 執行 <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
@@ -2869,43 +2879,6 @@ msgstr ""
" 回傳 COMMAND 指令的回傳狀態,或者當找ä¸åˆ° COMMAND 指令時失敗。"
#: builtins.c:490
-#, fuzzy
-#| msgid ""
-#| "Set variable values and attributes.\n"
-#| " \n"
-#| " Declare variables and give them attributes. If no NAMEs are given,\n"
-#| " display the attributes and values of all variables.\n"
-#| " \n"
-#| " Options:\n"
-#| " -f\trestrict action or display to function names and definitions\n"
-#| " -F\trestrict display to function names only (plus line number and\n"
-#| " \t\tsource file when debugging)\n"
-#| " -g\tcreate global variables when used in a shell function; otherwise\n"
-#| " \t\tignored\n"
-#| " -p\tdisplay the attributes and value of each NAME\n"
-#| " \n"
-#| " Options which set attributes:\n"
-#| " -a\tto make NAMEs indexed arrays (if supported)\n"
-#| " -A\tto make NAMEs associative arrays (if supported)\n"
-#| " -i\tto make NAMEs have the `integer' attribute\n"
-#| " -l\tto convert the value of each NAME to lower case on assignment\n"
-#| " -n\tmake NAME a reference to the variable named by its value\n"
-#| " -r\tto make NAMEs readonly\n"
-#| " -t\tto make NAMEs have the `trace' attribute\n"
-#| " -u\tto convert the value of each NAME to upper case on assignment\n"
-#| " -x\tto make NAMEs export\n"
-#| " \n"
-#| " Using `+' instead of `-' turns off the given attribute.\n"
-#| " \n"
-#| " Variables with the integer attribute have arithmetic evaluation (see\n"
-#| " the `let' command) performed when the variable is assigned a value.\n"
-#| " \n"
-#| " When used in a function, `declare' makes NAMEs local, as with the `local'\n"
-#| " command. The `-g' option suppresses this behavior.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or a variable\n"
-#| " assignment error occurs."
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2947,19 +2920,21 @@ msgid ""
msgstr ""
"設定變數值和屬性。\n"
" \n"
-" è¦ç¯„變數並且賦予它們屬性。如果沒用指定å稱,\n"
-" 則顯示所有變數的屬性和值。\n"
+" 宣告變數並賦予其屬性。若未指定 <å稱>,\n"
+" 則顯示所有變數的屬性和數值。\n"
" \n"
" é¸é …:\n"
" -f\té™åˆ¶å‹•ä½œæˆ–顯示為åªæœ‰å‡½æ•¸å稱和定義\n"
-" -F\té™åˆ¶åƒ…顯示函數å稱 (以åŠåˆ—號和原始檔åæ–¼åµéŒ¯æ™‚)\n"
-" -g\t當用於 shell 函數內時建立全域變數 ; å¦å‰‡å¿½ç•¥\n"
+" -F\té™åˆ¶åƒ…顯示函數å稱(åµéŒ¯æ™‚å¦åŒ…å«åˆ—號和原始檔å)\n"
+" -g\t用於 shell 函數時建立全域變數 ; å¦å‰‡å¿½ç•¥\n"
+" -I\t如果建立的是本地變數,則繼承上個作用域中,\n"
+" \t\tåŒå變數的屬性åŠæ•¸å€¼ã€‚\n"
" -p\t顯示æ¯å€‹ <å稱> 變數的屬性和值\n"
" \n"
" 設定屬性的é¸é …:\n"
" -a\t使 <å稱> æˆç‚ºç´¢å¼•é™£åˆ— (如果支æ´)\n"
" -A\t使 <å稱> æˆç‚ºé—œè¯é™£åˆ— (如果支æ´)\n"
-" -i\t使 <å稱> 帶有「integerã€(整數)屬性\n"
+" -i\t使 <å稱> 帶有「integerã€ï¼ˆæ•´æ•¸ï¼‰å±¬æ€§\n"
" -l\tå°‡æ¯å€‹ <å稱> 的值在指派時轉為å°å¯«\n"
" -n\t使 <å稱> æˆç‚ºæŒ‡å‘一個以其值為å稱的變數引用\n"
" -r\tå°‡ <å稱> 變為唯讀\n"
@@ -2967,16 +2942,15 @@ msgstr ""
" -u\tå°‡æ¯å€‹ <å稱> 的值在指派時轉為大寫\n"
" -x\tå°‡ <å稱> 匯出\n"
" \n"
-" 用「+ã€ä»£æ›¿ã€Œ-ã€æœƒé—œé–‰æŒ‡å®šé¸é …。\n"
+" 用「+ã€ä»£æ›¿ã€Œ-ã€æœƒé—œé–‰æŒ‡å®šå±¬æ€§ã€‚\n"
" \n"
-" 帶有整數屬性的變數在指派時將使用算術求值(見\n"
-" 「letã€æŒ‡ä»¤)\n"
+" 帶有整數屬性的變數,會在指派時執行算術求值(見「letã€æŒ‡ä»¤ï¼‰\n"
" \n"
" 在函數中使用時,「declareã€ä½¿ <å稱> æˆç‚ºæœ¬æ©Ÿè®Šæ•¸ï¼Œå’Œã€Œlocalã€\n"
-" 指令一致。「-gã€é¸é …壓制這個行為\n"
+" 指令一致。「-gã€é¸é …會壓制本行為\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
-" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者發生錯誤。"
+" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …,或者發生錯誤。"
#: builtins.c:532
msgid ""
@@ -3127,7 +3101,7 @@ msgid ""
" Exit Status:\n"
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-"啟用和åœç”¨ shell 內建物件。\n"
+"啟用和åœç”¨ shell 內建命令。\n"
" \n"
" 啟用和åœç”¨ shell 的內建指令。åœç”¨ä½¿æ‚¨èƒ½å¤ åŸ·è¡Œä¸€å€‹å’Œå…§å»º\n"
" 指令åŒåç£ç¢Ÿä¸Šçš„指令,而無須使用完整的路徑å。\n"
@@ -3145,11 +3119,11 @@ msgstr ""
" \n"
" ä¸å¸¶é¸é …時,æ¯ä¸€å€‹ <å稱> 內建都被啟用。\n"
" \n"
-" 如果è¦ä½¿ç”¨ $PATH 中找到的「testã€è€Œä¸æ˜¯ shell 內建物件的版本,\n"
+" 如果è¦ä½¿ç”¨ $PATH 中找到的「testã€è€Œä¸æ˜¯ shell 內建命令的版本,\n"
" 輸入「enable -n testã€ã€‚\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
-" 回傳æˆåŠŸï¼Œé™¤éž <å稱> ä¸æ˜¯ä¸€å€‹ shell 內建物件或者有錯誤發生。"
+" 回傳æˆåŠŸï¼Œé™¤éž <å稱> ä¸æ˜¯ä¸€å€‹ shell 內建命令或者有錯誤發生。"
#: builtins.c:640
msgid ""
@@ -3170,45 +3144,6 @@ msgstr ""
" 以指令的狀態çµæŸï¼Œæˆ–者在指令為空的情æ³ä¸‹å›žå‚³æˆåŠŸã€‚"
#: builtins.c:652
-#, fuzzy
-#| msgid ""
-#| "Parse option arguments.\n"
-#| " \n"
-#| " Getopts is used by shell procedures to parse positional parameters\n"
-#| " as options.\n"
-#| " \n"
-#| " OPTSTRING contains the option letters to be recognized; if a letter\n"
-#| " is followed by a colon, the option is expected to have an argument,\n"
-#| " which should be separated from it by white space.\n"
-#| " \n"
-#| " Each time it is invoked, getopts will place the next option in the\n"
-#| " shell variable $name, initializing name if it does not exist, and\n"
-#| " the index of the next argument to be processed into the shell\n"
-#| " variable OPTIND. OPTIND is initialized to 1 each time the shell or\n"
-#| " a shell script is invoked. When an option requires an argument,\n"
-#| " getopts places that argument into the shell variable OPTARG.\n"
-#| " \n"
-#| " getopts reports errors in one of two ways. If the first character\n"
-#| " of OPTSTRING is a colon, getopts uses silent error reporting. In\n"
-#| " this mode, no error messages are printed. If an invalid option is\n"
-#| " seen, getopts places the option character found into OPTARG. If a\n"
-#| " required argument is not found, getopts places a ':' into NAME and\n"
-#| " sets OPTARG to the option character found. If getopts is not in\n"
-#| " silent mode, and an invalid option is seen, getopts places '?' into\n"
-#| " NAME and unsets OPTARG. If a required argument is not found, a '?'\n"
-#| " is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-#| " printed.\n"
-#| " \n"
-#| " If the shell variable OPTERR has the value 0, getopts disables the\n"
-#| " printing of error messages, even if the first character of\n"
-#| " OPTSTRING is not a colon. OPTERR has the value 1 by default.\n"
-#| " \n"
-#| " Getopts normally parses the positional parameters ($0 - $9), but if\n"
-#| " more arguments are given, they are parsed instead.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success if an option is found; fails if the end of options is\n"
-#| " encountered or an error occurs."
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3250,14 +3185,12 @@ msgid ""
msgstr ""
"解æžé¸é …åƒæ•¸ã€‚\n"
" \n"
-" Getopts 被 shell éŽç¨‹ç”¨æ–¼è§£æžå¯å®šä½çš„åƒæ•¸åšç‚ºé¸é …。\n"
-" \n"
-" \n"
-" <é¸é …字串> 字串包å«å¾…識別的é¸é …å­—æ¯ï¼›å¦‚果一個字æ¯å¾Œé¢è·Ÿ\n"
-" 著分號,則該é¸é …需è¦ä¸€å€‹åƒæ•¸ï¼Œè€Œè©²åƒæ•¸æ‡‰ç”¨ç©ºæ ¼èˆ‡é¸é …分開。\n"
+" Getopts 被 shell éŽç¨‹ç”¨ä¾†å°‡å¯å®šä½çš„åƒæ•¸è§£æžç‚ºé¸é …。\n"
" \n"
+" <é¸é …字串> 字串包å«å¾…識別的é¸é …å­—æ¯ã€‚如果一個字æ¯å¾Œé¢è·Ÿ\n"
+" 著分號,則該é¸é …需è¦ä¸€å€‹åƒæ•¸ï¼Œé€™å€‹åƒæ•¸æ‡‰åˆ©ç”¨ç©ºæ ¼èˆ‡é¸é …分開。\n"
" \n"
-" æ¯æ¬¡å•Ÿå‹•æ™‚,getopts 會將下一個é¸é …放到 shell 變數 $name\n"
+" æ¯æ¬¡å‘¼å«æ™‚,getopts 會將下一個é¸é …放到 shell 變數 $name\n"
" 中,如果 name 變數ä¸å­˜åœ¨å‰‡å…ˆå°‡å…¶åˆå§‹åŒ–,而下一個待處\n"
" ç†çš„åƒæ•¸åºè™Ÿæ”¾å…¥ shell 變數 OPTIND 中。OPTIND 變數在æ¯\n"
" 次 shell 或者 shell 指令稿啟動時都被åˆå§‹åŒ–為 1。當一個é¸é …è¦\n"
@@ -3265,26 +3198,24 @@ msgstr ""
" 中。\n"
" \n"
" getopts 有兩種通報錯誤的方法。如果 <é¸é …字串> 變數的第\n"
-" 一個字元是冒號,getopts 使用沉默錯誤通報。在這種模å¼\n"
-" 下,ä¸æœƒå°ç™¼ç”ŸéŒ¯èª¤èª¤è¨Šæ¯ã€‚如果看到了一個無效的é¸é …,\n"
-" getopts 將找到的é¸é …字元放至 OPTARG 變數中。如果一個必\n"
-" 須的é¸é …沒有找到,getopts 放一個「:ã€åˆ° <å稱> 變數中並且設\n"
-" ç½® OPTARG 變數為找到的é¸é …字元。如果 getopts ä¸åœ¨æ²‰é»˜æ¨¡\n"
-" å¼ä¸­ï¼Œä¸¦ä¸”é‡åˆ°äº†ä¸€å€‹ç„¡æ•ˆçš„é¸é …,getopts 放置一個「?ã€åˆ° <å稱> \n"
-" 變數中並且å–消設定 OPTARG 變數。如果必須的é¸é …沒有找到,\n"
-" 一個「?ã€æœƒè¢«æ”¾å…¥ <å稱> 變數中,OPTARG 將被å–消設定,並且會\n"
-" å°å‡ºä¸€å€‹è¨ºæ–·è³‡è¨Šã€‚\n"
-" \n"
-" 如果 shell 變數 OPTERR 的值為 0,getopts åœç”¨\n"
-" 錯誤資訊的å°å‡ºï¼Œå³ä½¿ <é¸é …字串> 變數的第一個字元ä¸æ˜¯ä¸€\n"
-" 個冒號。OPTERR çš„é è¨­å€¼ç‚º 1。\n"
-" \n"
-" Getopts 通常解æžå¯å®šä½çš„åƒæ•¸($0 - $9),ä¸éŽå¦‚æžœæ供了\n"
-" 更多的åƒæ•¸ï¼Œå®ƒå€‘å而會被解æžã€‚\n"
+" 一個字元是冒號,getopts 進入éœé»˜éŒ¯èª¤å›žå ±æ¨¡å¼ã€‚在這種模å¼\n"
+" 下,ä¸æœƒè¼¸å‡ºéŒ¯èª¤è¨Šæ¯ã€‚若看到了無效é¸é …,getopts 將找到的\n"
+" é¸é …字元放至 OPTARG 變數中。如果找ä¸åˆ°å¿…è¦å¼•æ•¸ï¼Œgetopts\n"
+" 會放一個「:ã€åˆ° <å稱> 變數,並將 OPTARG 設為找到的é¸é …å­—å…ƒ\n"
+" 。如果 getopts ä¸åœ¨éœé»˜æ¨¡å¼ä¸­ï¼Œä¸¦ä¸”é‡åˆ°äº†ä¸€å€‹ç„¡æ•ˆçš„é¸é …,\n"
+" getopts 會放置一個「?ã€åˆ° <å稱> 變數,並å–消設定 OPTARG。\n"
+" 如果找ä¸åˆ°å¿…è¦å¼•æ•¸ï¼Œå‰‡æœƒåœ¨ NAME 放置「?ã€ã€å–消設定 OPTARG,\n"
+" 並且會輸出診斷資訊。\n"
+" \n"
+" 如果 shell 變數 OPTERR 的值為 0,getopts åœæ­¢è¼¸å‡ºéŒ¯èª¤è¨Šæ¯ï¼Œ\n"
+" å³ä½¿ <é¸é …字串> 變數的第一個字元ä¸æ˜¯å†’號。OPTERR çš„é è¨­å€¼ç‚º 1。\n"
+" \n"
+" Getopts 通常解æžå¯å®šä½çš„åƒæ•¸ï¼ˆ$0 - $9),ä¸éŽå¦‚æžœæ供了\n"
+" 更多的åƒæ•¸ï¼Œæœƒæ”¹è§£æžé€™äº›å¼•æ•¸ã€‚\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
-" 如果一個é¸é …被找到則回傳æˆåŠŸï¼›å¦‚æžœé‡åˆ°äº†é¸é …çš„çµå°¾æˆ–者\n"
-" 有錯誤發生則回傳失敗。"
+" 找到é¸é …則回傳æˆåŠŸï¼›å¦‚æžœé¸é …ææ—©çµæŸï¼Œæˆ–者有錯誤發生,\n"
+" 則回傳失敗。"
#: builtins.c:694
msgid ""
@@ -3683,7 +3614,7 @@ msgstr ""
" -l\t列出訊號å稱;如果åƒæ•¸å¾Œè·Ÿã€Œ-lã€å‰‡è¢«å‡è¨­ç‚ºè¨Šè™Ÿç·¨è™Ÿï¼Œ\n"
" \t而相應的訊號å稱會被列出\n"
" \n"
-" Kill æˆç‚º shell 內建物件有兩個ç†ç”±ï¼šå®ƒå…許使用工作編號而ä¸æ˜¯è¡Œç¨‹è­˜åˆ¥ç¢¼ï¼Œ\n"
+" Kill æˆç‚º shell 內建命令有兩個ç†ç”±ï¼šå®ƒå…許使用工作編號而ä¸æ˜¯è¡Œç¨‹è­˜åˆ¥ç¢¼ï¼Œ\n"
" 並且在å¯ä»¥å»ºç«‹çš„行程數上é™é”到時å…許行程被ç é™¤ã€‚\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
@@ -3778,7 +3709,8 @@ msgid ""
" splitting, and the first word is assigned to the first NAME, the second\n"
" word to the second NAME, and so on, with any leftover words assigned to\n"
" the last NAME. Only the characters found in $IFS are recognized as word\n"
-" delimiters.\n"
+" delimiters. By default, the backslash character escapes delimiter characters\n"
+" and newline.\n"
" \n"
" If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
" \n"
@@ -3814,23 +3746,23 @@ msgid ""
" (in which case it's greater than 128), a variable assignment error occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-"從標準輸入讀å–一列並將其分為ä¸åŒçš„å€åŸŸã€‚\n"
+"從標準輸入讀å–一列,並將其分為ä¸åŒçš„å€åŸŸã€‚\n"
" \n"
-" 從標準輸入讀å–å–®ç¨çš„一列,或者如果使用了 -u é¸é …,從檔案æ述符 FD 中讀å–。\n"
-" 該列被分割æˆå€åŸŸï¼Œå¦‚åŒå­—詞分割一樣,並且第一個字詞被指派給第一個 <å稱> 變數,第二\n"
-" 個字詞被指派給第二個 <å稱> 變數,如此繼續,直到剩下所有的字詞被指派給最後一個 <å稱>\n"
-" 變數。åªæœ‰ $IFS 變數中的字元被èªåšæ˜¯å­—詞分隔符。\n"
+" 從標準輸入讀å–å–®ç¨çš„一列,或者如果使用了 -u é¸é …,從檔案æè¿°å…ƒ FD 中讀å–。\n"
+" 該列會分割æˆå€åŸŸï¼Œå¦‚åŒå­—詞分割一樣,並且第一個字詞被指派給第一個 NAME 變數,第二\n"
+" 個字詞被指派給第二個 NAME 變數,如此繼續,直到剩下所有的字詞被指派給最後一個 <å稱>\n"
+" 變數。åªæœ‰ $IFS 變數中的字元被èªåšæ˜¯å­—詞分隔符。é è¨­æƒ…æ³ä¸‹ï¼Œå斜線字元會跳脫分割字元和æ›è¡Œã€‚\n"
" \n"
-" 如果沒有æä¾› <å稱> 變數,則讀å–的列被存放在 REPLY 變數中。\n"
+" 如果沒有æä¾› NAME 變數,則讀å–的列會存放在 REPLY 變數中。\n"
" \n"
" é¸é …:\n"
" -a array\t將字詞指派給 ARRAY 陣列變數的åºåˆ—索引æˆå“¡ï¼Œå¾žé›¶é–‹å§‹ã€‚\n"
" -d delim\tæŒçºŒè®€å–直到讀入 DELIM 變數中的第一個字元,而ä¸æ˜¯æ›åˆ—符\n"
" -e\t使用 Readline å–得列\n"
" -i text\t使用 TEXT 文字åšç‚º Readline çš„åˆå§‹æ–‡å­—\n"
-" -n nchars\tè®€å– nchars 個字元之後回傳,而ä¸æ˜¯ç­‰åˆ°è®€å–æ›åˆ—符。\n"
-" \t\t但是分隔符ä»ç„¶æœ‰æ•ˆï¼Œå¦‚æžœé‡åˆ°åˆ†éš”符之å‰è®€å–了ä¸è¶³ nchars 個字元。\n"
-" -N nchars\t在準確讀å–了 nchars 個字元之後回傳,除éžé‡åˆ°æª”案çµæŸç¬¦æˆ–者讀å–逾時,\n"
+" -n nchars\tè®€å– NCHARS 個字元之後回傳,而ä¸æ˜¯ç­‰åˆ°è®€å–æ›åˆ—符。\n"
+" \t\t但如果é‡åˆ°åˆ†éš”符之å‰è®€å–了ä¸è¶³ NCHARS 個字元,分隔符ä»ç„¶æœ‰æ•ˆã€‚\n"
+" -N nchars\t在準確讀å–了 NCHARS 個字元之後回傳,除éžé‡åˆ°æª”案çµæŸç¬¦æˆ–者讀å–逾時,\n"
" \t\t任何的分隔符都被忽略\n"
" -p prompt\t在嘗試讀å–之å‰è¼¸å‡º PROMPT æ示符並且ä¸å¸¶\n"
" \t\tæ›åˆ—符\n"
@@ -3838,16 +3770,16 @@ msgstr ""
" -s\tä¸é¡¯ç¤ºçµ‚端的任何輸入\n"
" -t timeout\t如果在 TIMEOUT 秒內沒有讀å–一個完整的列則逾時並且回傳失敗。\n"
" \t\tTMOUT 變數的值是é è¨­é€¾æ™‚時間。\n"
-" \t\tTIMEOUT å¯ä»¥æ˜¯å°æ•¸ã€‚如果 TIMEOUT 是 0,那麼僅當在指定的檔案æ述符上\n"
-" \t\t輸入有效的時候,read æ‰å›žå‚³æˆåŠŸã€‚\n"
+" \t\tTIMEOUT å¯ä»¥æ˜¯å°æ•¸ã€‚如果 TIMEOUT 是 0,則立å³å›žå‚³è€Œä¸å˜—試\n"
+" \t\t讀å–任何資料,如果指定的檔案æ述符有輸入,則回傳æˆåŠŸ\n"
" \t\t如果超éŽäº†é€¾æ™‚時間,則回傳狀態碼大於 128\n"
" -u fd\t從檔案æ述符 FD 中讀å–,而ä¸æ˜¯æ¨™æº–輸入\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
-" 回傳碼為零,除éžé‡åˆ°äº†æª”案çµæŸç¬¦ï¼Œè®€å–逾時,或者無效的文\n"
-" 件æ述符åšç‚ºåƒæ•¸å‚³éžçµ¦äº† -u é¸é …。"
+" 回傳碼為 0,除éžé‡åˆ°äº†æª”案çµæŸç¬¦ã€è®€å–逾時,或將無效的檔案\n"
+" æ述符,作為åƒæ•¸å‚³å‘ -u é¸é …。"
-#: builtins.c:1041
+#: builtins.c:1042
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3867,7 +3799,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳 N,或者如果 shell ä¸åœ¨åŸ·è¡Œä¸€å€‹å‡½æ•¸æˆ–引用指令稿時,失敗。"
-#: builtins.c:1054
+#: builtins.c:1055
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4026,7 +3958,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸ã€‚"
-#: builtins.c:1139
+#: builtins.c:1140
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4062,7 +3994,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME å稱為唯讀。"
-#: builtins.c:1161
+#: builtins.c:1162
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4094,7 +4026,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱>。"
-#: builtins.c:1180
+#: builtins.c:1181
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4130,7 +4062,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱>。"
-#: builtins.c:1202
+#: builtins.c:1203
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4148,7 +4080,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éž N 為負或者大於 $#。"
-#: builtins.c:1214 builtins.c:1229
+#: builtins.c:1215 builtins.c:1230
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4170,7 +4102,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳 <檔å> 檔案中最後一個指令的狀態;如果 <檔å> 檔案ä¸å¯è®€å‰‡å¤±æ•—。"
-#: builtins.c:1245
+#: builtins.c:1246
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4194,7 +4126,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžæ²’有啟用工作控制或者有錯誤發生。"
-#: builtins.c:1261
+#: builtins.c:1262
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4346,7 +4278,7 @@ msgstr ""
" 如果 EXPR 表示å¼æ±‚值為真則回傳æˆåŠŸï¼›å¦‚æžœ EXPR 表示å¼æ±‚值\n"
" 為å‡æˆ–者使用了無效的åƒæ•¸å‰‡å›žå‚³å¤±æ•—。"
-#: builtins.c:1343
+#: builtins.c:1344
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4358,7 +4290,7 @@ msgstr ""
" 是內建指令「testã€çš„åŒç¾©è©žï¼Œä½†æ˜¯æœ€å¾Œä¸€å€‹åƒæ•¸å¿…須是\n"
" 字元「]ã€ï¼Œä»¥ç¬¦åˆèµ·å§‹çš„「[ã€ã€‚"
-#: builtins.c:1352
+#: builtins.c:1353
msgid ""
"Display process times.\n"
" \n"
@@ -4376,7 +4308,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 一律æˆåŠŸã€‚"
-#: builtins.c:1364
+#: builtins.c:1365
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4437,7 +4369,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 SIGSPEC。"
-#: builtins.c:1400
+#: builtins.c:1401
msgid ""
"Display information about command type.\n"
" \n"
@@ -4467,74 +4399,27 @@ msgid ""
msgstr ""
"顯示指令類型的資訊。\n"
" \n"
-" å°æ–¼æ¯ä¸€å€‹ <å稱>,指示如果åšç‚ºæŒ‡ä»¤å®ƒå°‡å¦‚何被解釋。\n"
+" å°æ–¼æ¯ä¸€å€‹ NAME,指示用作指令å稱時的解釋方å¼ã€‚\n"
" \n"
" é¸é …:\n"
-" -a\t顯示所有包å«å稱為 <å稱> çš„å¯åŸ·è¡Œæª”案的ä½ç½®ï¼›\n"
-" \t包括別åã€å…§å»ºå’Œå‡½æ•¸ã€‚僅當「-pã€é¸é …沒有使用時\n"
+" -a\t顯示所有包å«å為 NAME çš„å¯åŸ·è¡Œæª”案的ä½ç½®ã€‚\n"
+" \t包括別åã€å…§å»ºå’Œå‡½æ•¸ï¼ˆè‹¥ä¸”唯若 “-p†é¸é …未使用時)。\n"
" -f\t抑制 shell 函數查詢\n"
-" -P\t為æ¯å€‹ <å稱> 驚醒 PATH 路徑æœå°‹ï¼Œå³ä½¿å®ƒæ˜¯åˆ¥åã€\n"
-" \t內建或函數,並且回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱。\n"
-" -p\t回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱,或者當「type -t <å稱>ã€\n"
-" \tä¸å›žå‚³ã€Œfileã€æ™‚,ä¸å›žå‚³ä»»ä½•å€¼ã€‚\n"
-" -t\t回傳下列詞中的任何一個「aliasã€ã€ã€Œkeywordã€ã€\n"
-" \t「functionã€ã€ã€Œbuiltinã€ã€ã€Œfileã€æˆ–者「ã€ï¼Œå¦‚æžœ <å稱> 是相應的\n"
-" \t一個別åã€shell ä¿ç•™å­—ã€shell 函數ã€shell 內建物件ã€\n"
-" \tç£ç¢Ÿæª”案或沒有找到。\n"
+" -P\t為æ¯å€‹ NAME 強制進行 PATH 路徑æœå°‹ï¼Œå³ä½¿å®ƒæ˜¯åˆ¥åã€\n"
+" \t內建或函數,並回傳將被執行的ç£ç¢Ÿæª”案å稱。\n"
+" -p\t回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱,或者在 “type -t NAMEâ€\n"
+" \t回傳值ä¸æ˜¯ “file†時,ä¸å›žå‚³ä»»ä½•å€¼ã€‚\n"
+" -t\t回傳 “aliasâ€ã€â€œkeywordâ€ã€â€œfunctionâ€ã€â€œbuiltinâ€ã€â€œfileâ€\n"
+" \t或 “â€ï¼Œå°æ‡‰åˆ° NAME 是別åã€shell ä¿ç•™å­—ã€shell 函數ã€\n"
+" \t內建命令ã€ç£ç¢Ÿæª”案或找ä¸åˆ°æª”案。\n"
" \n"
-" åƒæ•¸ï¼š\n"
-" <å稱>\tå°‡è¦è§£æžçš„指令。\n"
+" 引數:\n"
+" NAME\tå°‡è¦è§£æžçš„指令。\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
-" 如果所有的 <å稱> 指令都找到則回傳æˆåŠŸï¼›ä»»ä½•æ‰¾ä¸åˆ°å‰‡å¤±æ•—。"
-
-#: builtins.c:1431
-#, fuzzy
-#| msgid ""
-#| "Modify shell resource limits.\n"
-#| " \n"
-#| " Provides control over the resources available to the shell and processes\n"
-#| " it creates, on systems that allow such control.\n"
-#| " \n"
-#| " Options:\n"
-#| " -S\tuse the `soft' resource limit\n"
-#| " -H\tuse the `hard' resource limit\n"
-#| " -a\tall current limits are reported\n"
-#| " -b\tthe socket buffer size\n"
-#| " -c\tthe maximum size of core files created\n"
-#| " -d\tthe maximum size of a process's data segment\n"
-#| " -e\tthe maximum scheduling priority (`nice')\n"
-#| " -f\tthe maximum size of files written by the shell and its children\n"
-#| " -i\tthe maximum number of pending signals\n"
-#| " -k\tthe maximum number of kqueues allocated for this process\n"
-#| " -l\tthe maximum size a process may lock into memory\n"
-#| " -m\tthe maximum resident set size\n"
-#| " -n\tthe maximum number of open file descriptors\n"
-#| " -p\tthe pipe buffer size\n"
-#| " -q\tthe maximum number of bytes in POSIX message queues\n"
-#| " -r\tthe maximum real-time scheduling priority\n"
-#| " -s\tthe maximum stack size\n"
-#| " -t\tthe maximum amount of cpu time in seconds\n"
-#| " -u\tthe maximum number of user processes\n"
-#| " -v\tthe size of virtual memory\n"
-#| " -x\tthe maximum number of file locks\n"
-#| " -P\tthe maximum number of pseudoterminals\n"
-#| " -T\tthe maximum number of threads\n"
-#| " \n"
-#| " Not all options are available on all platforms.\n"
-#| " \n"
-#| " If LIMIT is given, it is the new value of the specified resource; the\n"
-#| " special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
-#| " current soft limit, the current hard limit, and no limit, respectively.\n"
-#| " Otherwise, the current value of the specified resource is printed. If\n"
-#| " no option is given, then -f is assumed.\n"
-#| " \n"
-#| " Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-#| " -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-#| " number of processes.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or an error occurs."
+" 若找到所有的 NAME,則回傳æˆåŠŸï¼›æœ‰ä»»ä½•ä¸€å€‹æ²’找到,則回傳失敗。"
+
+#: builtins.c:1432
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4584,47 +4469,48 @@ msgid ""
msgstr ""
"修改 shell 資æºé™åˆ¶ã€‚\n"
" \n"
-" 在å…許此類控制的系統上,æä¾›å°æ–¼ shell åŠå…¶å»ºç«‹çš„行程所å¯ç”¨çš„\n"
-" 資æºçš„控制。\n"
+" 在å…許此類控制的系統上,æä¾›å° shell åŠå…¶å»ºç«‹çš„行程,\n"
+" å¯ç”¨è³‡æºçš„控制。\n"
" \n"
" é¸é …:\n"
-" -S\t使用軟 (「softã€) 資æºé™åˆ¶\n"
-" -H\t使用硬 (「hardã€) 資æºé™åˆ¶\n"
-" -a\t所有目å‰é™åˆ¶éƒ½è¢«é€šå ±\n"
-" -b\t通訊端快å–尺寸\n"
-" -c\t建立核心檔案的最大尺寸\n"
-" -d\t一個行程的資料å€æœ€å¤§å°ºå¯¸\n"
-" -e\tæœ€é«˜çš„æŽ’ç¨‹å„ªå…ˆé †åº (「niceã€)\n"
-" -f\t有 shell åŠå…¶å­è¡Œç¨‹å¯ä»¥å¯«å…¥çš„最大檔案尺寸\n"
-" -i\t最多å¯ä»¥æš«åœçš„訊號數\n"
-" -k\t為這個進程所分é…的最大 kqueues 數é‡\n"
-" -l\t一個行程å¯ä»¥éŽ–定的最大記憶體尺寸\n"
-" -m\t最大的記憶體進é§å°ºå¯¸\n"
-" -n\t最多開啟的檔案æ述符個數\n"
-" -p\t管é“ç·©è¡å€å°ºå¯¸\n"
-" -q\tPOSIX 資訊佇列的最大ä½å…ƒçµ„數\n"
+" -S\t使用彈性(「softã€ï¼‰è³‡æºé™åˆ¶\n"
+" -H\t使用固定(「hardã€ï¼‰è³‡æºé™åˆ¶\n"
+" -a\t回報目å‰çš„所有é™åˆ¶\n"
+" -b\t通訊端快å–大å°\n"
+" -c\t建立之核心檔案的最大大å°\n"
+" -d\t一個行程資料å€çš„最大大å°\n"
+" -e\t最高的排程優先順åºï¼ˆã€Œniceã€ï¼‰\n"
+" -f\tshell åŠå…¶å­è¡Œç¨‹å¯å¯«å…¥çš„最大檔案大å°\n"
+" -i\t最多å¯ä»¥æš«åœçš„信號數\n"
+" -k\t為本行程分é…之最大 kqueues 數é‡\n"
+" -l\t一個行程å¯èƒ½éŽ–定的最大記憶體尺寸\n"
+" -m\t最大的常é§è¨˜æ†¶é«”大å°\n"
+" -n\t最多å¯é–‹å•Ÿä¹‹æª”案æ述元個數\n"
+" -p\t管é“ç·©è¡å€å¤§å°\n"
+" -q\tPOSIX 訊æ¯ä½‡åˆ—的最大ä½å…ƒçµ„數\n"
" -r\tå³æ™‚排程的最大優先順åº\n"
" -s\t最大堆疊尺寸\n"
-" -P\tå½çµ‚端的最大數é‡\n"
-" -t\t最大的 CPU 時間,以秒為單ä½\n"
+" -t\t最多å¯ç”¨çš„ CPU 時間,以秒為單ä½\n"
" -u\t最大使用者行程數\n"
" -v\t虛擬記憶體尺寸\n"
" -x\t最大的檔案鎖數é‡\n"
+" -P\t最大å¯é–‹å•Ÿçš„å½çµ‚端數é‡\n"
+" -R\t一個å³æ™‚執行緒在堵塞å‰å¯åŸ·è¡Œçš„最長時間\n"
" -T\t最大執行緒數é‡\n"
" \n"
" 並éžæ‰€æœ‰é¸é …在所有系統上å¯ç”¨ã€‚\n"
" \n"
-" 如果æ供了 LIMIT 變數,則它為指定資æºçš„新值;特別的 LIMIT 值為\n"
-" 「softã€ã€ã€Œhardã€å’Œã€Œunlimitedã€ï¼Œåˆ†åˆ¥è¡¨ç¤ºç›®å‰çš„軟é™åˆ¶ï¼Œç¡¬é™åˆ¶å’Œç„¡é™åˆ¶ã€‚\n"
-" å¦å‰‡å°å‡ºæŒ‡å®šè³‡æºçš„ç›®å‰é™åˆ¶å€¼ï¼Œä¸å¸¶é¸é …則å‡å®šç‚º -f\n"
+" 如果有指定 LIMIT,則這個變數是指定資æºçš„新數值;特殊 LIMIT 數值\n"
+" 「softã€ã€ã€Œhardã€å’Œã€Œunlimitedã€ï¼Œåˆ†åˆ¥è¡¨ç¤ºç›®å‰çš„彈性é™åˆ¶ã€å›ºå®šé™åˆ¶å’Œ\n"
+" ç„¡é™åˆ¶ã€‚若未指定,則輸出指定資æºçš„ç›®å‰é™åˆ¶å€¼ï¼Œä¸å‚³å…¥é¸é …則å‡å®šç‚º -f\n"
" \n"
-" å–值都是 1024 ä½å…ƒçµ„為單ä½ï¼Œé™¤äº† -t 以秒為單ä½ï¼Œ-p 以 512 ä½å…ƒçµ„éžå¢žï¼Œ\n"
-" -u 為無尺度的行程數é‡ã€‚\n"
+" å–值都是 1024 ä½å…ƒçµ„為單ä½ï¼Œé™¤äº† -t 以秒為單ä½ã€-p 以 512 ä½å…ƒçµ„éžå¢žã€\n"
+" -u 為無單ä½çš„行程數é‡ã€‚\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者錯誤發生。"
-#: builtins.c:1482
+#: builtins.c:1483
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4656,26 +4542,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„ MODE 模å¼æˆ–者é¸é …。"
-#: builtins.c:1502
-#, fuzzy
-#| msgid ""
-#| "Wait for job completion and return exit status.\n"
-#| " \n"
-#| " Waits for each process identified by an ID, which may be a process ID or a\n"
-#| " job specification, and reports its termination status. If ID is not\n"
-#| " given, waits for all currently active child processes, and the return\n"
-#| " status is zero. If ID is a job specification, waits for all processes\n"
-#| " in that job's pipeline.\n"
-#| " \n"
-#| " If the -n option is supplied, waits for the next job to terminate and\n"
-#| " returns its exit status.\n"
-#| " \n"
-#| " If the -f option is supplied, and job control is enabled, waits for the\n"
-#| " specified ID to terminate, instead of waiting for it to change status.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-#| " option is given."
+#: builtins.c:1503
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4704,20 +4571,27 @@ msgid ""
msgstr ""
"等待工作完æˆä¸¦å›žå‚³çµæŸç‹€æ…‹ã€‚\n"
" \n"
-" 等待以 ID 編號識別的行程,其中 ID å¯ä»¥æ˜¯è¡Œç¨‹ç·¨è™Ÿæˆ–者工作è¦æ ¼ï¼Œ\n"
-" 並通報它的終止狀態。如果 ID 沒有給出,則等待所有的目å‰æ´»èºå­\n"
-" 行程,並且回傳狀態為零。如果 ID 是工作è¦æ ¼ï¼Œç­‰å¾…工作管é“中的\n"
+" 等待以 ID 編號識別的行程ï¼å…¶ä¸­ ID å¯ä»¥æ˜¯è¡Œç¨‹ç·¨è™Ÿæˆ–者工作è¦æ ¼â€”\n"
+" 並回報其終止狀態。若未指定 ID,則等待所有的目å‰æ´»èºå­è¡Œç¨‹ï¼Œ\n"
+" 並設定回傳狀態為 0。如果 ID 是工作è¦æ ¼ï¼Œå‰‡ç­‰å¾…工作管線中的\n"
" 所有行程。\n"
" \n"
-" 若指定了 -n é¸é …,等待下一個工作完æˆä¸¦å›žå‚³å…¶ç‹€æ…‹ã€‚\n"
+" 若指定了 -n é¸é …,則等待 ID 清單中的單一個工作;若未指定,則\n"
+" 等待下一個工作完æˆï¼Œä¸¦å›žå‚³å…¶çµæŸç‹€æ…‹ã€‚\n"
" \n"
-" 如果指定了 -f é¸é …且啟用工作管ç†ï¼Œå‰‡ç­‰å¾…指定 ID 終止,而éž\n"
-" 等到其變更狀態。\n"
+" 如果指定了 -p é¸é …,則會將é¸é …引數中命åçš„ VAR 變數,指定\n"
+" 為回傳çµæŸç‹€æ…‹ä¹‹å·¥ä½œçš„行程或工作識別å­ã€‚這個變數在指定å‰ï¼Œ\n"
+" 會先進行 unset。這個僅在指定 -n é¸é …時有幫助。\n"
+"\n"
+" 如果指定了 -f é¸é …且有啟用工作管ç†ï¼Œå‰‡ç­‰å¾…指定 ID 終止,\n"
+" 而éžç­‰å¾…其變更狀態。\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
-" 回傳最後一個 ID 行程的狀態;如果使用了無效的 ID 或者é¸é …則失敗。"
+" 回傳最後一個 ID 行程的狀態;如果 ID 或指定之é¸é …無效;\n"
+" 或有指定 -n,shell å»æ²’有è¦ä¸ç­‰å¾… (unwaited) çš„å­è¡Œç¨‹ï¼Œ\n"
+" 則回傳失敗。"
-#: builtins.c:1533
+#: builtins.c:1534
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4737,7 +4611,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳行程 ID 的狀態;如果 PID 是無效的行程識別碼或者指定了無效的é¸é …則失敗。"
-#: builtins.c:1548
+#: builtins.c:1549
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4758,7 +4632,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳最後執行指令的狀態。"
-#: builtins.c:1562
+#: builtins.c:1563
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4788,7 +4662,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳最後執行指令的狀態。"
-#: builtins.c:1580
+#: builtins.c:1581
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4821,7 +4695,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1601
+#: builtins.c:1602
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4849,7 +4723,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" å›žå‚³ç‹€æ…‹å³ PIPELINE 的回傳狀態。"
-#: builtins.c:1618
+#: builtins.c:1619
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4867,7 +4741,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1630
+#: builtins.c:1631
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4893,43 +4767,43 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1647
+#: builtins.c:1648
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status of zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"åªè¦æ¸¬è©¦æˆåŠŸå³åŸ·è¡ŒæŒ‡ä»¤ã€‚\n"
" \n"
-" åªè¦åœ¨ã€Œwhileã€<指令> 中的最終指令回傳çµæžœç‚º 0,則\n"
-" 展開並執行 <指令>。\n"
+" åªè¦ COMMANDS 中的最後一æ¢å‘½ä»¤å›žå‚³äº†çµæŸç‹€æ…‹ç¢¼ 0,\n"
+" 便會展開並執行 COMMANDS-2。\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1659
+#: builtins.c:1660
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
+" Expand and execute COMMANDS-2 as long as the final command in COMMANDS has\n"
+" an exit status which is not zero.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"當測試ä¸åŒéŽæ™‚執行指令。\n"
+"åªè¦æ¸¬è©¦ä¸æˆåŠŸå³åŸ·è¡ŒæŒ‡ä»¤ã€‚\n"
" \n"
-" 「untilã€<指令> 的最終指令回傳狀態ä¸ç‚º 0 時,\n"
-" 展開並執行 <指令>。\n"
+" åªè¦ COMMANDS 中的最後一æ¢å‘½ä»¤å›žå‚³äº†ä¸æ˜¯ 0 çš„çµæŸç‹€æ…‹ç¢¼ï¼Œ\n"
+" 便會展開並執行 COMMANDS-2。\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1671
+#: builtins.c:1672
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4951,7 +4825,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" coprc 指令回傳離開代碼 0。"
-#: builtins.c:1685
+#: builtins.c:1686
msgid ""
"Define shell function.\n"
" \n"
@@ -4973,7 +4847,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸé™¤éž <å稱> 為唯讀。"
-#: builtins.c:1699
+#: builtins.c:1700
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4991,7 +4865,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1711
+#: builtins.c:1712
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5015,7 +4889,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳被繼續的工作狀態。"
-#: builtins.c:1726
+#: builtins.c:1727
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
@@ -5033,7 +4907,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 如果表示å¼æ±‚值為 0 則回傳 1ï¼›å¦å‰‡å›žå‚³ 0。"
-#: builtins.c:1738
+#: builtins.c:1739
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5077,7 +4951,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 根據 EXPRESSION 的值為 0 或 1。"
-#: builtins.c:1764
+#: builtins.c:1765
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5172,7 +5046,7 @@ msgstr ""
" HISTIGNORE\t用於決定哪些指令被存入歷å²è¨˜éŒ„檔案的模å¼\n"
" \t\t列表,以冒號分隔。\n"
-#: builtins.c:1821
+#: builtins.c:1822
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5223,7 +5097,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸æˆ–者目錄變æ›å¤±æ•—。"
-#: builtins.c:1855
+#: builtins.c:1856
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5270,7 +5144,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸æˆ–者目錄變æ›å¤±æ•—。"
-#: builtins.c:1885
+#: builtins.c:1886
msgid ""
"Display directory stack.\n"
" \n"
@@ -5319,7 +5193,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生錯誤。"
-#: builtins.c:1916
+#: builtins.c:1917
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5355,7 +5229,7 @@ msgstr ""
" 如果 <é¸é …å稱> é¸é …被啟用則回傳æˆåŠŸï¼›å¦‚果是\n"
" 無效的é¸é …或 <é¸é …å稱> 被åœç”¨å‰‡å¤±æ•—。"
-#: builtins.c:1937
+#: builtins.c:1938
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5374,6 +5248,8 @@ msgid ""
" \n"
" %b\texpand backslash escape sequences in the corresponding argument\n"
" %q\tquote the argument in a way that can be reused as shell input\n"
+" %Q\tlike %q, but apply any precision to the unquoted argument before\n"
+" \t\tquoting\n"
" %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
" \t string for strftime(3)\n"
" \n"
@@ -5386,48 +5262,28 @@ msgid ""
" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
-"在 <æ ¼å¼> 的控制下格å¼åŒ–並å°å‡º <åƒæ•¸>。\n"
+"在 FORMAT 的控制下格å¼åŒ–並å°å‡º ARGUMENTS。\n"
" \n"
" é¸é …:\n"
-" -v var\t將輸出指派給 shell 變數 VAR 而ä¸é¡¯ç¤ºåœ¨æ¨™æº–輸出上\n"
+" -v var\t將輸出指派給 shell 變數 VAR 而éžé¡¯ç¤ºåœ¨æ¨™æº–輸出上\n"
+" \n"
+" FORMAT 是包å«ä¸‰ç¨®ç‰©ä»¶çš„字元:簡單複製到標準輸出的純字元;\n"
+" 變æ›å¾Œè¤‡è£½åˆ°æ¨™æº–輸入的跳脫字元;以åŠæ¯å€‹éƒ½æœƒå½±éŸ¿åˆ°ä¸‹å€‹å¼•æ•¸çš„æ ¼å¼åŒ–è¦æ ¼ã€‚\n"
" \n"
-" <æ ¼å¼> 是包å«ä¸‰ç¨®ç‰©ä»¶çš„字串:簡單地被複製到標準輸出的普通字元;\n"
-" 被變æ›ä¹‹å¾Œè¤‡è£½åˆ°æ¨™æº–輸入的逸出字元;以åŠæ¯å€‹éƒ½æœƒå½±éŸ¿åˆ°ä¸‹å€‹åƒæ•¸çš„å°å‡ºæ ¼å¼åŒ–è¦æ ¼ã€‚\n"
+" 除了 printf(1) 中æ述的標準格å¼åŒ–è¦æ ¼ï¼Œprintf 還會解æžï¼š\n"
" \n"
-" 在 printf(1) 中æ述的標準控制è¦æ ¼ä¹‹å¤–,printf 解æžï¼š\n"
+" %b\tå°æ‡‰å¼•æ•¸ä¸­çš„å斜線跳脫åºåˆ—\n"
+" %q\t以å¯åšç‚º shell 輸入的格å¼å°å¼•æ•¸åŠ ä¸Šå¼•è™Ÿ\n"
+" %Q\té¡žä¼¼ %q,但精度è¦æ±‚會在加引號之å‰ï¼Œå°æœªæ‹¬ä½çš„引數生效\n"
+" %(fmt)T\tå°‡ FMT 用來當作 strftime(3) çš„æ ¼å¼ï¼Œè¼¸å‡ºæ—¥æœŸèˆ‡æ™‚間字串\n"
+" \n"
+" å¿…è¦æ™‚會é‡ç”¨æ ¼å¼ä»¥æ¶ˆè€—掉所有引數。如果引數少於格å¼æ‰€éœ€ï¼Œå…¶ä»–çš„æ ¼å¼è¦ç¯„則會\n"
+" 視為 0 值或空字串(視情æ³è€Œå®šï¼‰å¥—用。\n"
" \n"
-" %b\t擴充套件å°æ‡‰åƒæ•¸ä¸­çš„å斜線逸出åºåˆ—\n"
-" %q\t以å¯åšç‚º shell 輸入的格å¼å¼•ç”¨åƒæ•¸\n"
-" %(fmt)T\t以 FMT 為æä¾› strftime(3) çš„æ ¼å¼è¼¸å‡ºæ—¥æœŸèˆ‡æ™‚間字串 \n"
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生寫入或指派錯誤。"
-#: builtins.c:1971
-#, fuzzy
-#| msgid ""
-#| "Specify how arguments are to be completed by Readline.\n"
-#| " \n"
-#| " For each NAME, specify how arguments are to be completed. If no options\n"
-#| " are supplied, existing completion specifications are printed in a way that\n"
-#| " allows them to be reused as input.\n"
-#| " \n"
-#| " Options:\n"
-#| " -p\tprint existing completion specifications in a reusable format\n"
-#| " -r\tremove a completion specification for each NAME, or, if no\n"
-#| " \t\tNAMEs are supplied, all completion specifications\n"
-#| " -D\tapply the completions and actions as the default for commands\n"
-#| " \t\twithout any specific completion defined\n"
-#| " -E\tapply the completions and actions to \"empty\" commands --\n"
-#| " \t\tcompletion attempted on a blank line\n"
-#| " -I\tapply the completions and actions to the initial (usually the\n"
-#| " \t\tcommand) word\n"
-#| " \n"
-#| " When completion is attempted, the actions are applied in the order the\n"
-#| " uppercase-letter options are listed above. If multiple options are supplied,\n"
-#| " the -D option takes precedence over -E, and both take precedence over -I.\n"
-#| " \n"
-#| " Exit Status:\n"
-#| " Returns success unless an invalid option is supplied or an error occurs."
+#: builtins.c:1974
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5453,26 +5309,26 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-"è¦ç¯„ readline 如何完æˆè®€å–åƒæ•¸ã€‚\n"
+"指定 readline 如何完æˆè®€å–引數。\n"
" \n"
-" è¦æ ¼å°æ–¼æ¯ä¸€å€‹<å稱>如何完æˆè®€å–åƒæ•¸ã€‚如果ä¸å¸¶é¸é …,\n"
-" ç¾æœ‰çš„補完è¦æ ¼æœƒä»¥å¯ä»¥é‡ç”¨ç‚ºè¼¸å…¥çš„æ ¼å¼å°å‡ºã€‚\n"
+" 指定æ¯ä¸€å€‹ <å稱> 如何完æˆè®€å–åƒæ•¸ã€‚如果ä¸æŒ‡å®šé¸é …,\n"
+" ç¾æœ‰çš„自動完æˆè¦æ ¼æœƒä»¥å¯ä»¥é‡æ–°ä½œç‚ºè¼¸å…¥ä½¿ç”¨çš„æ ¼å¼è¼¸å‡ºã€‚\n"
" \n"
" é¸é …:\n"
-" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºç¾æœ‰çš„補完è¦æ ¼ã€‚\n"
-" -r\tå°æ–¼æ¯å€‹<å稱>刪除補完è¦æ ¼ï¼Œæˆ–者如果沒有æä¾›<å稱>\n"
-" \tå稱,刪除所有的補完è¦æ ¼ã€‚\n"
-" -D\tå°æ–¼æ²’有補完è¦æ ¼å®šç¾©çš„指令,設定é è¨­çš„補完動作\n"
-" -E\tå°æ–¼ã€Œemptyã€æŒ‡ä»¤è¨­å®šè£œå®Œå‹•ä½œï¼Œâ€”— å°æ–¼ç©ºåˆ—的補完。\n"
-" -I\t套用補完和動作到首個 (通常是指令) 單詞\n"
-" \n"
-" 嘗試補完時,按照上述大寫字æ¯é¸é …çš„é †åºé€²è¡Œå‹•ä½œã€‚ 如果傳入了多個é¸é …,\n"
+" -p\t以å¯é‡ç”¨çš„æ ¼å¼è¼¸å‡ºç¾æœ‰çš„自動完æˆè¦æ ¼ã€‚\n"
+" -r\t移除æ¯å€‹ <å稱> 的自動完æˆè¦æ ¼ã€‚若未指定 <å稱>\n"
+" \t則移除所有自動完æˆè¦æ ¼ã€‚\n"
+" -D\tå°æ–¼æ²’有自動完æˆè¦æ ¼å®šç¾©çš„命令,設定é è¨­çš„自動完æˆå‹•ä½œ\n"
+" -E\tå°æ–¼ã€Œemptyã€æŒ‡ä»¤â€”—嘗試å°ç©ºç™½åˆ—進行自動完æˆâ€”—套用自動完æˆå’Œå‹•ä½œã€‚\n"
+" -I\t套用自動完æˆå’Œå‹•ä½œåˆ°é¦–個(通常是命令)單字\n"
+" \n"
+" 發起自動完æˆå˜—試時,將ä¾ä¸Šè¿°å¤§å¯«å­—æ¯é¸é …çš„é †åºé€²è¡Œå‹•ä½œã€‚若傳入了多個é¸é …,\n"
" -D é¸é …優先於 -E é¸é …,而兩者優先於 -I é¸é …。\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者錯誤發生。"
-#: builtins.c:2001
+#: builtins.c:2004
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5483,16 +5339,16 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-"ä¾æ“šé¸é …顯示å¯èƒ½çš„補完。\n"
+"ä¾æ“šé¸é …顯示å¯èƒ½çš„自動完æˆå»ºè­°ã€‚\n"
" \n"
-" æ„圖在能產生å¯èƒ½çš„補完 shell 函數內部使用。\n"
+" æ„圖在能產生å¯èƒ½çš„è‡ªå‹•å®Œæˆ shell 函數內部使用。\n"
" 如果æ供了å¯é¸çš„ WORD åƒæ•¸ï¼Œå‰‡ç”¢ç”ŸæŒ‰ç…§ WORD\n"
" 進行的符åˆã€‚\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
" 除éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者錯誤發生,å¦å‰‡å›žå‚³æˆåŠŸã€‚"
-#: builtins.c:2016
+#: builtins.c:2019
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5520,29 +5376,29 @@ msgid ""
" Returns success unless an invalid option is supplied or NAME does not\n"
" have a completion specification defined."
msgstr ""
-"修改或顯示補完é¸é …。\n"
+"修改或顯示自動完æˆé¸é …。\n"
" \n"
-" 修改æ¯å€‹ <å稱> 的補完é¸é …,或如果沒有æä¾› <å稱>,執行目å‰çš„補完。\n"
-" 如果ä¸å¸¶é¸é …,å°å‡ºæ¯å€‹ <å稱> 的補完é¸é …或目å‰çš„補完è¦æ ¼ã€‚\n"
+" 修改æ¯å€‹ <å稱> 的自動完æˆé¸é …,或如果沒有æä¾› <å稱>,執行目å‰çš„自動完æˆã€‚\n"
+" 如果ä¸å¸¶é¸é …,å°å‡ºæ¯å€‹ <å稱> 的自動完æˆé¸é …或目å‰çš„自動完æˆè¦æ ¼ã€‚\n"
" \n"
" é¸é …:\n"
-" \t-o option\t為æ¯å€‹ <å稱> 設定補完é¸é … option\n"
-" \t-D\t\t為「defaultã€æŒ‡ä»¤è£œå®Œè®Šæ›´é¸é …\n"
-" \t-E\t\t為「emptyã€æŒ‡ä»¤è£œå®Œè®Šæ›´é¸é …\n"
-" \t-I\t\t為首單詞上的補完變更é¸é …\n"
+" \t-o option\t為æ¯å€‹ <å稱> 設定自動完æˆé¸é … option\n"
+" \t-D\t\t為「defaultã€æŒ‡ä»¤è‡ªå‹•å®Œæˆè®Šæ›´é¸é …\n"
+" \t-E\t\t為「emptyã€æŒ‡ä»¤è‡ªå‹•å®Œæˆè®Šæ›´é¸é …\n"
+" \t-I\t\t為首單詞上的自動完æˆè®Šæ›´é¸é …\n"
" \n"
" 使用「+oã€è€Œä¸æ˜¯ã€Œ-oã€å¯ä»¥é—œé–‰æŒ‡å®šçš„é¸é …。\n"
" \n"
" åƒæ•¸ï¼š\n"
" \n"
-" æ¯å€‹ <å稱> 都å°æ‡‰ä¸€å€‹ä¹‹å‰ä»¥è—‰ç”±ã€Œcompleteã€å…§å»ºå®šç¾©äº†è£œå®Œè¦æ ¼çš„\n"
-" 指令。如果ä¸æä¾› <å稱>,目å‰ç”¢ç”Ÿè£œå®Œçš„å‡½æ•¸å¿…é ˆå‘¼å« compopt,\n"
-" 並且目å‰åŸ·è¡Œçš„補完產生器é¸é …會被修改。\n"
+" æ¯å€‹ <å稱> 都å°æ‡‰ä¸€å€‹ä¹‹å‰ä»¥è—‰ç”±ã€Œcompleteã€å…§å»ºå®šç¾©äº†è‡ªå‹•å®Œæˆè¦æ ¼çš„\n"
+" 指令。如果ä¸æä¾› <å稱>,目å‰ç”¢ç”Ÿè‡ªå‹•å®Œæˆçš„å‡½æ•¸å¿…é ˆå‘¼å« compopt,\n"
+" 並且目å‰åŸ·è¡Œçš„自動完æˆç”¢ç”Ÿå™¨é¸é …會被修改。\n"
" \n"
" çµæŸç‹€æ…‹ï¼š\n"
-" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱> 沒有定義補完è¦æ ¼ã€‚"
+" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱> 沒有定義自動完æˆè¦æ ¼ã€‚"
-#: builtins.c:2047
+#: builtins.c:2050
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5602,7 +5458,7 @@ msgstr ""
" çµæŸç‹€æ…‹ï¼š\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …,或者 ARRAY 變數唯讀或ä¸æ˜¯ç´¢å¼•é™£åˆ—。"
-#: builtins.c:2083
+#: builtins.c:2086
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5612,6 +5468,9 @@ msgstr ""
" \n"
" 一個「mapfileã€çš„åŒç¾©è©žã€‚"
+#~ msgid "%s: invalid associative array key"
+#~ msgstr "%s: 無效的關è¯é™£åˆ—éµå€¼"
+
#~ msgid ""
#~ "Returns the context of the current subroutine call.\n"
#~ " \n"
diff --git a/print_cmd.c b/print_cmd.c
index 3c8c2d8f..eef9bb6a 100644
--- a/print_cmd.c
+++ b/print_cmd.c
@@ -1,6 +1,6 @@
/* print_command -- A way to make readable commands from a command tree. */
-/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -129,6 +129,7 @@ static int inside_function_def;
static int skip_this_indent;
static int was_heredoc;
static int printing_connection;
+static int printing_comsub;
static REDIRECT *deferred_heredocs;
/* The depth of the group commands that we are currently printing. This
@@ -162,6 +163,21 @@ make_command_string (command)
return (the_printed_command);
}
+/* Print a command substitution after parsing it in parse_comsub to turn it
+ back into an external representation without turning newlines into `;'.
+ Placeholder for other changes, if any are necessary. */
+char *
+print_comsub (command)
+ COMMAND *command;
+{
+ char *ret;
+
+ printing_comsub++;
+ ret = make_command_string (command);
+ printing_comsub--;
+ return ret;
+}
+
/* The internal function. This is the real workhorse. */
static void
make_command_string_internal (command)
@@ -278,25 +294,35 @@ make_command_string_internal (command)
break;
case ';':
- if (deferred_heredocs == 0)
- {
- if (was_heredoc == 0)
- cprintf (";");
- else
- was_heredoc = 0;
- }
- else
- print_deferred_heredocs (inside_function_def ? "" : ";");
+ case '\n': /* special case this */
+ {
+ char c = command->value.Connection->connector;
- if (inside_function_def)
- cprintf ("\n");
- else
- {
- cprintf (" ");
- if (command->value.Connection->second)
- skip_this_indent++;
- }
- break;
+ s[0] = printing_comsub ? c : ';';
+ s[1] = '\0';
+
+ if (deferred_heredocs == 0)
+ {
+ if (was_heredoc == 0)
+ cprintf ("%s", s); /* inside_function_def? */
+ else
+ was_heredoc = 0;
+ }
+ else
+ /* print_deferred_heredocs special-cases `;' */
+ print_deferred_heredocs (inside_function_def ? "" : ";");
+
+ if (inside_function_def)
+ cprintf ("\n");
+ else
+ {
+ if (c == ';')
+ cprintf (" ");
+ if (command->value.Connection->second)
+ skip_this_indent++;
+ }
+ break;
+ }
default:
cprintf (_("print_command: bad connector `%d'"),
@@ -440,7 +466,10 @@ indirection_level_string ()
change_flag ('x', FLAG_ON);
if (ps4 == 0 || *ps4 == '\0')
- return (indirection_string);
+ {
+ FREE (ps4);
+ return (indirection_string);
+ }
#if defined (HANDLE_MULTIBYTE)
ps4_len = strnlen (ps4, MB_CUR_MAX);
@@ -956,11 +985,13 @@ void
print_simple_command (simple_command)
SIMPLE_COM *simple_command;
{
- command_print_word_list (simple_command->words, " ");
+ if (simple_command->words)
+ command_print_word_list (simple_command->words, " ");
if (simple_command->redirects)
{
- cprintf (" ");
+ if (simple_command->words)
+ cprintf (" ");
print_redirection_list (simple_command->redirects);
}
}
@@ -1050,6 +1081,9 @@ print_redirection_list (redirects)
else
hdtail = heredocs = newredir;
}
+#if 0
+ /* Remove this heuristic now that the command printing code doesn't
+ unconditionally put in the redirector file descriptor. */
else if (redirects->instruction == r_duplicating_output_word && (redirects->flags & REDIR_VARASSIGN) == 0 && redirects->redirector.dest == 1)
{
/* Temporarily translate it as the execution code does. */
@@ -1059,6 +1093,7 @@ print_redirection_list (redirects)
print_redirection (redirects);
redirects->instruction = r_duplicating_output_word;
}
+#endif
else
print_redirection (redirects);
@@ -1217,6 +1252,8 @@ print_redirection (redirect)
case r_duplicating_input_word:
if (redirect->rflags & REDIR_VARASSIGN)
cprintf ("{%s}<&%s", redir_word->word, redirectee->word);
+ else if (redirector == 0)
+ cprintf ("<&%s", redirectee->word);
else
cprintf ("%d<&%s", redirector, redirectee->word);
break;
@@ -1224,6 +1261,8 @@ print_redirection (redirect)
case r_duplicating_output_word:
if (redirect->rflags & REDIR_VARASSIGN)
cprintf ("{%s}>&%s", redir_word->word, redirectee->word);
+ else if (redirector == 1)
+ cprintf (">&%s", redirectee->word);
else
cprintf ("%d>&%s", redirector, redirectee->word);
break;
@@ -1280,6 +1319,7 @@ reset_locals ()
indentation = 0;
printing_connection = 0;
deferred_heredocs = 0;
+ printing_comsub = 0;
}
static void
@@ -1351,6 +1391,7 @@ named_function_string (name, command, flags)
old_amount = indentation_amount;
command_string_index = was_heredoc = 0;
deferred_heredocs = 0;
+ printing_comsub = 0;
if (name && *name)
{
diff --git a/quit.h b/quit.h
index db8a776b..0af1d121 100644
--- a/quit.h
+++ b/quit.h
@@ -1,6 +1,6 @@
/* quit.h -- How to handle SIGINT gracefully. */
-/* Copyright (C) 1993-2013 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -38,12 +38,6 @@ extern volatile sig_atomic_t terminating_signal;
if (interrupt_state) throw_to_top_level (); \
} while (0)
-#define CHECK_ALRM \
- do { \
- if (sigalrm_seen) \
- sh_longjmp (alrmbuf, 1); \
- } while (0)
-
#define SETINTERRUPT interrupt_state = 1
#define CLRINTERRUPT interrupt_state = 0
diff --git a/redir.c b/redir.c
index fa92b4d4..8369adcc 100644
--- a/redir.c
+++ b/redir.c
@@ -1,6 +1,6 @@
/* redir.c -- Functions to perform input and output redirection. */
-/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -88,6 +88,7 @@ extern int errno;
#define SHELL_FD_BASE 10
int expanding_redir;
+int varassign_redir_autoclose = 0;
extern REDIRECT *redirection_undo_list;
extern REDIRECT *exec_redirection_undo_list;
@@ -459,7 +460,10 @@ here_document_to_fd (redirectee, ri)
return fd;
}
-#if defined (HEREDOC_PIPESIZE)
+ if (shell_compatibility_level <= 50)
+ goto use_tempfile;
+
+#if HEREDOC_PIPESIZE
/* Try to use a pipe internal to this process if the document is shorter
than the system's pipe capacity (computed at build time). We want to
write the entire document without write blocking. */
@@ -467,6 +471,7 @@ here_document_to_fd (redirectee, ri)
{
if (pipe (herepipe) < 0)
{
+ /* XXX - goto use_tempfile; ? */
r = errno;
if (document != redirectee->word)
free (document);
@@ -808,8 +813,14 @@ do_redirection_internal (redirect, flags, fnp)
redirectee_word = redirection_expand (redirectee);
/* XXX - what to do with [N]<&$w- where w is unset or null? ksh93
- closes N. */
- if (redirectee_word == 0)
+ turns it into [N]<&- or [N]>&- and closes N. */
+ if ((ri == r_move_input_word || ri == r_move_output_word) && redirectee_word == 0)
+ {
+ sd = redirect->redirector;
+ rd.dest = 0;
+ new_redirect = make_redirection (sd, r_close_this, rd, 0);
+ }
+ else if (redirectee_word == 0)
return (AMBIGUOUS_REDIRECT);
else if (redirectee_word[0] == '-' && redirectee_word[1] == '\0')
{
@@ -939,10 +950,15 @@ do_redirection_internal (redirect, flags, fnp)
REDIRECTION_ERROR (redirector, r, fd);
}
- if ((flags & RX_UNDOABLE) && (redirect->rflags & REDIR_VARASSIGN) == 0)
+ if ((flags & RX_UNDOABLE) && ((redirect->rflags & REDIR_VARASSIGN) == 0 || varassign_redir_autoclose))
{
- /* Only setup to undo it if the thing to undo is active. */
- if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1))
+ /* Only setup to undo it if the thing to undo is active. We want
+ to autoclose if we are doing a varassign redirection and the
+ varredir_close shell option is set, and we can't test
+ redirector in this case since we just assigned it above. */
+ if (fd != redirector && (redirect->rflags & REDIR_VARASSIGN) && varassign_redir_autoclose)
+ r = add_undo_close_redirect (redirector);
+ else if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1))
r = add_undo_redirect (redirector, ri, -1);
else
r = add_undo_close_redirect (redirector);
@@ -1056,10 +1072,14 @@ do_redirection_internal (redirect, flags, fnp)
if (flags & RX_ACTIVE)
{
- if ((flags & RX_UNDOABLE) && (redirect->rflags & REDIR_VARASSIGN) == 0)
+ if ((flags & RX_UNDOABLE) && ((redirect->rflags & REDIR_VARASSIGN) == 0 || varassign_redir_autoclose))
{
- /* Only setup to undo it if the thing to undo is active. */
- if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1))
+ /* Only setup to undo it if the thing to undo is active.
+ Close if the right option is set and we are doing a
+ varassign redirection. */
+ if (fd != redirector && (redirect->rflags & REDIR_VARASSIGN) && varassign_redir_autoclose)
+ r = add_undo_close_redirect (redirector);
+ else if ((fd != redirector) && (fcntl (redirector, F_GETFD, 0) != -1))
r = add_undo_redirect (redirector, ri, -1);
else
r = add_undo_close_redirect (redirector);
@@ -1117,10 +1137,14 @@ do_redirection_internal (redirect, flags, fnp)
if ((flags & RX_ACTIVE) && (redir_fd != redirector))
{
- if ((flags & RX_UNDOABLE) && (redirect->rflags & REDIR_VARASSIGN) == 0)
+ if ((flags & RX_UNDOABLE) && ((redirect->rflags & REDIR_VARASSIGN) == 0 || varassign_redir_autoclose))
{
- /* Only setup to undo it if the thing to undo is active. */
- if (fcntl (redirector, F_GETFD, 0) != -1)
+ /* Only setup to undo it if the thing to undo is active.
+ Close if the right option is set and we are doing a
+ varassign redirection. */
+ if ((redirect->rflags & REDIR_VARASSIGN) && varassign_redir_autoclose)
+ r = add_undo_close_redirect (redirector);
+ else if (fcntl (redirector, F_GETFD, 0) != -1)
r = add_undo_redirect (redirector, ri, redir_fd);
else
r = add_undo_close_redirect (redirector);
@@ -1209,7 +1233,6 @@ do_redirection_internal (redirect, flags, fnp)
}
r = 0;
- /* XXX - only if REDIR_VARASSIGN not set? */
if (flags & RX_UNDOABLE)
{
if (fcntl (redirector, F_GETFD, 0) != -1)
@@ -1434,7 +1457,7 @@ redir_varassign (redir, fd)
SHELL_VAR *v;
w = redir->redirector.filename;
- v = bind_var_to_int (w->word, fd);
+ v = bind_var_to_int (w->word, fd, 0);
if (v == 0 || readonly_p (v) || noassign_p (v))
return BADVAR_REDIRECT;
@@ -1490,7 +1513,7 @@ redir_varvalue (redir)
/* get_variable_value handles references to array variables without
subscripts */
if (vr && (array_p (v) || assoc_p (v)))
- val = get_array_value (w, 0, (int *)NULL, (arrayind_t *)0);
+ val = get_array_value (w, 0, (array_eltstate_t *)NULL);
else
#endif
val = get_variable_value (v);
diff --git a/redir.h b/redir.h
index 64a3d266..340dc1c0 100644
--- a/redir.h
+++ b/redir.h
@@ -1,6 +1,6 @@
/* redir.h - functions from redir.c. */
-/* Copyright (C) 1997, 2001, 2005, 2008, 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2001, 2005, 2008, 2009-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -37,4 +37,7 @@ extern int do_redirections PARAMS((REDIRECT *, int));
extern char *redirection_expand PARAMS((WORD_DESC *));
extern int stdin_redirects PARAMS((REDIRECT *));
+/* in builtins/evalstring.c for now, could move later */
+extern int open_redir_file PARAMS((REDIRECT *, char **));
+
#endif /* _REDIR_H_ */
diff --git a/shell.c b/shell.c
index ce8087f7..ee9d445d 100644
--- a/shell.c
+++ b/shell.c
@@ -1,6 +1,6 @@
/* shell.c -- GNU's idea of the POSIX shell specification. */
-/* Copyright (C) 1987-2019 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -72,6 +72,8 @@ extern int get_tty_state PARAMS((void));
#if defined (USING_BASH_MALLOC) && defined (DEBUG) && !defined (DISABLE_MALLOC_WRAPPERS)
# include <malloc/shmalloc.h>
+#elif defined (MALLOC_DEBUG) && defined (USING_BASH_MALLOC)
+# include <malloc/shmalloc.h>
#endif
#if defined (HISTORY)
@@ -220,8 +222,10 @@ int no_line_editing = 0; /* non-zero -> don't do fancy line editing. */
#else
int no_line_editing = 1; /* can't have line editing without readline */
#endif
+#if defined (TRANSLATABLE_STRINGS)
int dump_translatable_strings; /* Dump strings in $"...", don't execute. */
int dump_po_strings; /* Dump strings in $"..." in po format */
+#endif
int wordexp_only = 0; /* Do word expansion only */
int protected_mode = 0; /* No command substitution with --wordexp */
@@ -246,8 +250,10 @@ static const struct {
#if defined (DEBUGGER)
{ "debugger", Int, &debugging_mode, (char **)0x0 },
#endif
+#if defined (TRANSLATABLE_STRINGS)
{ "dump-po-strings", Int, &dump_po_strings, (char **)0x0 },
{ "dump-strings", Int, &dump_translatable_strings, (char **)0x0 },
+#endif
{ "help", Int, &want_initial_help, (char **)0x0 },
{ "init-file", Charp, (int *)0x0, &bashrc_file },
{ "login", Int, &make_login_shell, (char **)0x0 },
@@ -496,11 +502,13 @@ main (argc, argv, env)
set_login_shell ("login_shell", login_shell != 0);
+#if defined (TRANSLATABLE_STRINGS)
if (dump_po_strings)
dump_translatable_strings = 1;
if (dump_translatable_strings)
read_but_dont_execute = 1;
+#endif
if (running_setuid && privileged_mode == 0)
disable_priv_mode ();
@@ -628,7 +636,7 @@ main (argc, argv, env)
code = setjmp_sigs (top_level);
if (code)
{
- if (code == EXITPROG || code == ERREXIT)
+ if (code == EXITPROG || code == ERREXIT || code == EXITBLTIN)
exit_shell (last_command_exit_value);
else
{
@@ -694,10 +702,24 @@ main (argc, argv, env)
/* The startup files are run with `set -e' temporarily disabled. */
if (locally_skip_execution == 0 && running_setuid == 0)
{
+ char *t;
+
old_errexit_flag = exit_immediately_on_error;
exit_immediately_on_error = 0;
+ /* Temporarily set $0 while running startup files, then restore it so
+ we get better error messages when trying to open script files. */
+ if (shell_script_filename)
+ {
+ t = dollar_vars[0];
+ dollar_vars[0] = exec_argv0 ? savestring (exec_argv0) : savestring (shell_script_filename);
+ }
run_startup_files ();
+ if (shell_script_filename)
+ {
+ free (dollar_vars[0]);
+ dollar_vars[0] = t;
+ }
exit_immediately_on_error += old_errexit_flag;
}
@@ -939,7 +961,9 @@ parse_shell_options (argv, arg_start, arg_end)
break;
case 'D':
+#if defined (TRANSLATABLE_STRINGS)
dump_translatable_strings = 1;
+#endif
break;
default:
@@ -1040,6 +1064,7 @@ subshell_exit (s)
/* Do trap[0] if defined. Allow it to override the exit status
passed to us. */
+ last_command_exit_value = s;
if (signal_is_trapped (0))
s = run_exit_trap ();
@@ -1103,6 +1128,7 @@ run_startup_files ()
#endif
int sourced_login, run_by_ssh;
+#if 1 /* TAG:bash-5.3 andrew.gregory.8@gmail.com 2/21/2022 */
/* get the rshd/sshd case out of the way first. */
if (interactive_shell == 0 && no_rc == 0 && login_shell == 0 &&
act_like_sh == 0 && command_execution_string)
@@ -1113,10 +1139,15 @@ run_startup_files ()
#else
run_by_ssh = 0;
#endif
+#endif
/* If we were run by sshd or we think we were run by rshd, execute
~/.bashrc if we are a top-level shell. */
+#if 1 /* TAG:bash-5.3 */
if ((run_by_ssh || isnetconn (fileno (stdin))) && shell_level < 2)
+#else
+ if (isnetconn (fileno (stdin) && shell_level < 2)
+#endif
{
#ifdef SYS_BASHRC
# if defined (__OPENNT)
@@ -1352,6 +1383,7 @@ run_wordexp (words)
return last_command_exit_value = 127;
case ERREXIT:
case EXITPROG:
+ case EXITBLTIN:
return last_command_exit_value;
case DISCARD:
return last_command_exit_value = 1;
@@ -1430,6 +1462,7 @@ run_one_command (command)
return last_command_exit_value = 127;
case ERREXIT:
case EXITPROG:
+ case EXITBLTIN:
return last_command_exit_value;
case DISCARD:
return last_command_exit_value = 1;
diff --git a/shell.h b/shell.h
index 8b41792f..6e44bca6 100644
--- a/shell.h
+++ b/shell.h
@@ -1,6 +1,6 @@
/* shell.h -- The data structures used by the shell */
-/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -85,6 +85,7 @@ extern int EOF_Reached;
#define MATCH_QUOTED 0x020
#define MATCH_ASSIGNRHS 0x040
#define MATCH_STARSUB 0x080
+#define MATCH_EXPREP 0x100 /* for pattern substitution, expand replacement */
/* Some needed external declarations. */
extern char **shell_environment;
@@ -165,18 +166,20 @@ extern struct user_info current_user;
/* Structure in which to save partial parsing state when doing things like
PROMPT_COMMAND and bash_execute_unix_command execution. */
-typedef struct _sh_parser_state_t {
-
+typedef struct _sh_parser_state_t
+{
/* parsing state */
int parser_state;
int *token_state;
char *token;
- int token_buffer_size;
+ size_t token_buffer_size;
+ int eof_token;
/* input line state -- line number saved elsewhere */
int input_line_terminator;
int eof_encountered;
+ int eol_lookahead;
#if defined (HANDLE_MULTIBYTE)
/* Nothing right now for multibyte state, but might want something later. */
@@ -204,11 +207,16 @@ typedef struct _sh_parser_state_t {
int need_here_doc;
int here_doc_first_line;
+ int esacs_needed;
+ int expecting_in;
+
/* structures affecting the parser */
+ void *pushed_strings;
REDIRECT *redir_stack[HEREDOC_MAX];
} sh_parser_state_t;
-typedef struct _sh_input_line_state_t {
+typedef struct _sh_input_line_state_t
+{
char *input_line;
size_t input_line_index;
size_t input_line_size;
@@ -220,6 +228,9 @@ typedef struct _sh_input_line_state_t {
} sh_input_line_state_t;
/* Let's try declaring these here. */
+extern void shell_ungets PARAMS((char *));
+extern void rewind_input_string PARAMS((void));
+
extern char *parser_remaining_input PARAMS((void));
extern sh_parser_state_t *save_parser_state PARAMS((sh_parser_state_t *));
diff --git a/sig.c b/sig.c
index e6537d26..840d5775 100644
--- a/sig.c
+++ b/sig.c
@@ -1,6 +1,6 @@
/* sig.c - interface for shell signal handlers and signal initialization. */
-/* Copyright (C) 1994-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/sig.h b/sig.h
index a564e3cd..0217be53 100644
--- a/sig.h
+++ b/sig.h
@@ -1,6 +1,6 @@
/* sig.h -- header file for signal handler definitions. */
-/* Copyright (C) 1994-2013 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -31,14 +31,10 @@
# define SIGABRT SIGIOT
#endif
-#define sighandler RETSIGTYPE
-typedef RETSIGTYPE SigHandler PARAMS((int));
+#define sighandler void
+typedef void SigHandler PARAMS((int));
-#if defined (VOID_SIGHANDLER)
-# define SIGRETURN(n) return
-#else
-# define SIGRETURN(n) return(n)
-#endif /* !VOID_SIGHANDLER */
+#define SIGRETURN(n) return
/* Here is a definition for set_signal_handler () which simply expands to
a call to signal () for non-Posix systems. The code for set_signal_handler
diff --git a/siglist.c b/siglist.c
index d8361dd7..ec706c90 100644
--- a/siglist.c
+++ b/siglist.c
@@ -1,6 +1,6 @@
/* siglist.c -- signal list for those machines that don't have one. */
-/* Copyright (C) 1989-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -23,6 +23,7 @@
#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_UNDER_SYS_SIGLIST) && !defined (HAVE_STRSIGNAL)
#include <stdio.h>
+#include "command.h"
#include "general.h"
#include <signal.h>
diff --git a/stringlib.c b/stringlib.c
index 745e5363..73304966 100644
--- a/stringlib.c
+++ b/stringlib.c
@@ -146,7 +146,8 @@ strsub (string, pat, rep, global)
char *string, *pat, *rep;
int global;
{
- int patlen, replen, templen, tempsize, repl, i;
+ size_t patlen, replen, templen, tempsize, i;
+ int repl;
char *temp, *r;
patlen = strlen (pat);
@@ -178,17 +179,22 @@ strsub (string, pat, rep, global)
}
/* Replace all instances of C in STRING with TEXT. TEXT may be empty or
- NULL. If DO_GLOB is non-zero, we quote the replacement text for
- globbing. Backslash may be used to quote C. */
+ NULL. If (FLAGS & 1) is non-zero, we quote the replacement text for
+ globbing. Backslash may be used to quote C. If (FLAGS & 2) we allow
+ backslash to escape backslash as well. */
char *
-strcreplace (string, c, text, do_glob)
+strcreplace (string, c, text, flags)
char *string;
int c;
const char *text;
- int do_glob;
+ int flags;
{
char *ret, *p, *r, *t;
- int len, rlen, ind, tlen;
+ size_t len, rlen, ind, tlen;
+ int do_glob, escape_backslash;
+
+ do_glob = flags & 1;
+ escape_backslash = flags & 2;
len = STRLEN (text);
rlen = len + strlen (string) + 2;
@@ -225,6 +231,8 @@ strcreplace (string, c, text, do_glob)
if (*p == '\\' && p[1] == c)
p++;
+ else if (escape_backslash && *p == '\\' && p[1] == '\\')
+ p++;
ind = r - ret;
RESIZE_MALLOCED_BUFFER (ret, ind, 2, rlen, rlen);
diff --git a/subst.c b/subst.c
index 2b76256c..d9feabca 100644
--- a/subst.c
+++ b/subst.c
@@ -4,7 +4,7 @@
/* ``Have a little faith, there's magic in the night. You ain't a
beauty, but, hey, you're alright.'' */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -45,6 +45,7 @@
#include "shell.h"
#include "parser.h"
+#include "redir.h"
#include "flags.h"
#include "jobs.h"
#include "execute_cmd.h"
@@ -186,9 +187,15 @@ int allow_null_glob_expansion;
/* Non-zero means to throw an error when globbing fails to match anything. */
int fail_glob_expansion;
+/* If non-zero, perform `&' substitution on the replacement string in the
+ pattern substitution word expansion. */
+int patsub_replacement = 1;
+
/* Extern functions and variables from different files. */
extern struct fd_bitmap *current_fds_to_close;
extern int wordexp_only;
+extern int singlequote_translations;
+extern int extended_quote;
#if defined (JOB_CONTROL) && defined (PROCESS_SUBSTITUTION)
extern PROCESS *last_procsub_child;
@@ -257,10 +264,11 @@ static int do_assignment_internal PARAMS((const WORD_DESC *, int));
static char *string_extract_verbatim PARAMS((char *, size_t, int *, char *, int));
static char *string_extract PARAMS((char *, int *, char *, int));
static char *string_extract_double_quoted PARAMS((char *, int *, int));
-static inline char *string_extract_single_quoted PARAMS((char *, int *));
+static inline char *string_extract_single_quoted PARAMS((char *, int *, int));
static inline int skip_single_quoted PARAMS((const char *, size_t, int, int));
static int skip_double_quoted PARAMS((char *, size_t, int, int));
static char *extract_delimited_string PARAMS((char *, int *, char *, char *, char *, int));
+static char *extract_heredoc_dolbrace_string PARAMS((char *, int *, int, int));
static char *extract_dollar_brace_string PARAMS((char *, int *, int, int));
static int skip_matched_pair PARAMS((const char *, int, int, int, int));
@@ -287,7 +295,7 @@ static char *parameter_list_remove_pattern PARAMS((int, char *, int, int));
#ifdef ARRAY_VARS
static char *array_remove_pattern PARAMS((SHELL_VAR *, char *, int, int, int));
#endif
-static char *parameter_brace_remove_pattern PARAMS((char *, char *, int, char *, int, int, int));
+static char *parameter_brace_remove_pattern PARAMS((char *, char *, array_eltstate_t *, char *, int, int, int));
static char *string_var_assignment PARAMS((SHELL_VAR *, char *));
#if defined (ARRAY_VARS)
@@ -300,11 +308,12 @@ static char *parameter_list_transform PARAMS((int, int, int));
#if defined ARRAY_VARS
static char *array_transform PARAMS((int, SHELL_VAR *, int, int));
#endif
-static char *parameter_brace_transform PARAMS((char *, char *, int, char *, int, int, int, int));
+static char *parameter_brace_transform PARAMS((char *, char *, array_eltstate_t *, char *, int, int, int, int));
static int valid_parameter_transform PARAMS((char *));
static char *process_substitute PARAMS((char *, int));
+static char *optimize_cat_file PARAMS((REDIRECT *, int, int, int *));
static char *read_comsub PARAMS((int, int, int, int *));
#ifdef ARRAY_VARS
@@ -315,7 +324,7 @@ static int valid_brace_expansion_word PARAMS((char *, int));
static int chk_atstar PARAMS((char *, int, int, int *, int *));
static int chk_arithsub PARAMS((const char *, int));
-static WORD_DESC *parameter_brace_expand_word PARAMS((char *, int, int, int, arrayind_t *));
+static WORD_DESC *parameter_brace_expand_word PARAMS((char *, int, int, int, array_eltstate_t *));
static char *parameter_brace_find_indir PARAMS((char *, int, int, int));
static WORD_DESC *parameter_brace_expand_indir PARAMS((char *, int, int, int, int *, int *));
static WORD_DESC *parameter_brace_expand_rhs PARAMS((char *, char *, int, int, int, int *, int *));
@@ -326,18 +335,19 @@ static intmax_t parameter_brace_expand_length PARAMS((char *));
static char *skiparith PARAMS((char *, int));
static int verify_substring_values PARAMS((SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *));
-static int get_var_and_type PARAMS((char *, char *, arrayind_t, int, int, SHELL_VAR **, char **));
+static int get_var_and_type PARAMS((char *, char *, array_eltstate_t *, int, int, SHELL_VAR **, char **));
static char *mb_substring PARAMS((char *, int, int));
-static char *parameter_brace_substring PARAMS((char *, char *, int, char *, int, int, int));
+static char *parameter_brace_substring PARAMS((char *, char *, array_eltstate_t *, char *, int, int, int));
static int shouldexp_replacement PARAMS((char *));
static char *pos_params_pat_subst PARAMS((char *, char *, char *, int));
-static char *parameter_brace_patsub PARAMS((char *, char *, int, char *, int, int, int));
+static char *expand_string_for_patsub PARAMS((char *, int));
+static char *parameter_brace_patsub PARAMS((char *, char *, array_eltstate_t *, char *, int, int, int));
static char *pos_params_casemod PARAMS((char *, char *, int, int));
-static char *parameter_brace_casemod PARAMS((char *, char *, int, int, char *, int, int, int));
+static char *parameter_brace_casemod PARAMS((char *, char *, array_eltstate_t *, int, char *, int, int, int));
static WORD_DESC *parameter_brace_expand PARAMS((char *, int *, int, int, int *, int *));
static WORD_DESC *param_expand PARAMS((char *, int *, int, int *, int *, int *, int *, int));
@@ -361,6 +371,8 @@ static WORD_LIST *expand_declaration_argument PARAMS((WORD_LIST *, WORD_LIST *))
static WORD_LIST *shell_expand_word_list PARAMS((WORD_LIST *, int));
static WORD_LIST *expand_word_list_internal PARAMS((WORD_LIST *, int));
+static int do_assignment_statements PARAMS((WORD_LIST *, char *, int));
+
/* **************************************************************** */
/* */
/* Utility Functions */
@@ -436,11 +448,6 @@ dump_word_flags (flags)
f &= ~W_EXPANDRHS;
fprintf (stderr, "W_EXPANDRHS%s", f ? "|" : "");
}
- if (f & W_ITILDE)
- {
- f &= ~W_ITILDE;
- fprintf (stderr, "W_ITILDE%s", f ? "|" : "");
- }
if (f & W_NOTILDE)
{
f &= ~W_NOTILDE;
@@ -461,10 +468,10 @@ dump_word_flags (flags)
f &= ~W_NOCOMSUB;
fprintf (stderr, "W_NOCOMSUB%s", f ? "|" : "");
}
- if (f & W_DOLLARSTAR)
+ if (f & W_ARRAYREF)
{
- f &= ~W_DOLLARSTAR;
- fprintf (stderr, "W_DOLLARSTAR%s", f ? "|" : "");
+ f &= ~W_ARRAYREF;
+ fprintf (stderr, "W_ARRAYREF%s", f ? "|" : "");
}
if (f & W_DOLLARAT)
{
@@ -733,16 +740,15 @@ unquoted_substring (substr, string)
INLINE char *
sub_append_string (source, target, indx, size)
char *source, *target;
- int *indx;
+ size_t *indx;
size_t *size;
{
if (source)
{
- int n;
- size_t srclen;
+ size_t n, srclen;
srclen = STRLEN (source);
- if (srclen >= (int)(*size - *indx))
+ if (srclen >= (*size - *indx))
{
n = srclen + *indx;
n = (n + DEFAULT_ARRAY_SIZE) - (n % DEFAULT_ARRAY_SIZE);
@@ -766,7 +772,7 @@ char *
sub_append_number (number, target, indx, size)
intmax_t number;
char *target;
- int *indx;
+ size_t *indx;
size_t *size;
{
char *temp;
@@ -1086,22 +1092,38 @@ skip_double_quoted (string, slen, sind, flags)
/* Extract the contents of STRING as if it is enclosed in single quotes.
SINDEX, when passed in, is the offset of the character immediately
following the opening single quote; on exit, SINDEX is left pointing after
- the closing single quote. */
+ the closing single quote. ALLOWESC allows the single quote to be quoted by
+ a backslash; it's not used yet. */
static inline char *
-string_extract_single_quoted (string, sindex)
+string_extract_single_quoted (string, sindex, allowesc)
char *string;
int *sindex;
+ int allowesc;
{
register int i;
size_t slen;
char *t;
+ int pass_next;
DECLARE_MBSTATE;
/* Don't need slen for ADVANCE_CHAR unless multibyte chars possible. */
slen = (MB_CUR_MAX > 1) ? strlen (string + *sindex) + *sindex : 0;
i = *sindex;
- while (string[i] && string[i] != '\'')
- ADVANCE_CHAR (string, slen, i);
+ pass_next = 0;
+ while (string[i])
+ {
+ if (pass_next)
+ {
+ pass_next = 0;
+ ADVANCE_CHAR (string, slen, i);
+ continue;
+ }
+ if (allowesc && string[i] == '\\')
+ pass_next++;
+ else if (string[i] == '\'')
+ break;
+ ADVANCE_CHAR (string, slen, i);
+ }
t = substring (string, *sindex, i);
@@ -1158,7 +1180,7 @@ string_extract_verbatim (string, slen, sindex, charlist, flags)
if ((flags & SX_NOCTLESC) && charlist[0] == '\'' && charlist[1] == '\0')
{
- temp = string_extract_single_quoted (string, sindex);
+ temp = string_extract_single_quoted (string, sindex, 0);
--*sindex; /* leave *sindex at separator character */
return temp;
}
@@ -1497,6 +1519,285 @@ extract_delimited_string (string, sindex, opener, alt_opener, closer, flags)
return (result);
}
+/* A simplified version of extract_dollar_brace_string that exists to handle
+ $'...' and $"..." quoting in here-documents, since the here-document read
+ path doesn't. It's separate because we don't want to mess with the fast
+ common path. We already know we're going to allocate and return a new
+ string and quoted == Q_HERE_DOCUMENT. We might be able to cut it down
+ some more, but extracting strings and adding them as we go adds complexity.
+ This needs to match the logic in parse.y:parse_matched_pair so we get
+ consistent behavior between here-documents and double-quoted strings. */
+static char *
+extract_heredoc_dolbrace_string (string, sindex, quoted, flags)
+ char *string;
+ int *sindex, quoted, flags;
+{
+ register int i, c;
+ size_t slen, tlen, result_index, result_size;
+ int pass_character, nesting_level, si, dolbrace_state;
+ char *result, *t, *send;
+ DECLARE_MBSTATE;
+
+ pass_character = 0;
+ nesting_level = 1;
+ slen = strlen (string + *sindex) + *sindex;
+ send = string + slen;
+
+ result_size = slen;
+ result_index = 0;
+ result = xmalloc (result_size + 1);
+
+ /* This function isn't called if this condition is not true initially. */
+ dolbrace_state = DOLBRACE_QUOTE;
+
+ i = *sindex;
+ while (c = string[i])
+ {
+ if (pass_character)
+ {
+ pass_character = 0;
+ RESIZE_MALLOCED_BUFFER (result, result_index, locale_mb_cur_max + 1, result_size, 64);
+ COPY_CHAR_I (result, result_index, string, send, i);
+ continue;
+ }
+
+ /* CTLESCs and backslashes quote the next character. */
+ if (c == CTLESC || c == '\\')
+ {
+ pass_character++;
+ RESIZE_MALLOCED_BUFFER (result, result_index, 2, result_size, 64);
+ result[result_index++] = c;
+ i++;
+ continue;
+ }
+
+ /* The entire reason we have this separate function right here. */
+ if (c == '$' && string[i+1] == '\'')
+ {
+ char *ttrans;
+ int ttranslen;
+
+ if ((posixly_correct || extended_quote == 0) && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2)
+ {
+ RESIZE_MALLOCED_BUFFER (result, result_index, 3, result_size, 64);
+ result[result_index++] = '$';
+ result[result_index++] = '\'';
+ i += 2;
+ continue;
+ }
+
+ si = i + 2;
+ t = string_extract_single_quoted (string, &si, 1); /* XXX */
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+ tlen = si - i - 2; /* -2 since si is one after the close quote */
+ ttrans = ansiexpand (t, 0, tlen, &ttranslen);
+ free (t);
+
+ /* needed to correctly quote any embedded single quotes. */
+ if (dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_QUOTE2)
+ {
+ t = sh_single_quote (ttrans);
+ tlen = strlen (t);
+ free (ttrans);
+ }
+ else if (extended_quote) /* dolbrace_state == DOLBRACE_PARAM */
+ {
+ /* This matches what parse.y:parse_matched_pair() does */
+ t = ttrans;
+ tlen = strlen (t);
+ }
+
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 1, result_size, 64);
+ strncpy (result + result_index, t, tlen);
+ result_index += tlen;
+ free (t);
+ i = si;
+ continue;
+ }
+
+#if defined (TRANSLATABLE_STRINGS)
+ if (c == '$' && string[i+1] == '"')
+ {
+ char *ttrans;
+ int ttranslen;
+
+ si = i + 2;
+ t = string_extract_double_quoted (string, &si, flags); /* XXX */
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+ tlen = si - i - 2; /* -2 since si is one after the close quote */
+ ttrans = locale_expand (t, 0, tlen, line_number, &ttranslen);
+ free (t);
+
+ t = singlequote_translations ? sh_single_quote (ttrans) : sh_mkdoublequoted (ttrans, ttranslen, 0);
+ tlen = strlen (t);
+ free (ttrans);
+
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 1, result_size, 64);
+ strncpy (result + result_index, t, tlen);
+ result_index += tlen;
+ free (t);
+ i = si;
+ continue;
+ }
+#endif /* TRANSLATABLE_STRINGS */
+
+ if (c == '$' && string[i+1] == LBRACE)
+ {
+ nesting_level++;
+ RESIZE_MALLOCED_BUFFER (result, result_index, 3, result_size, 64);
+ result[result_index++] = c;
+ result[result_index++] = string[i+1];
+ i += 2;
+ if (dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_QUOTE2 || dolbrace_state == DOLBRACE_WORD)
+ dolbrace_state = DOLBRACE_PARAM;
+ continue;
+ }
+
+ if (c == RBRACE)
+ {
+ nesting_level--;
+ if (nesting_level == 0)
+ break;
+ RESIZE_MALLOCED_BUFFER (result, result_index, 2, result_size, 64);
+ result[result_index++] = c;
+ i++;
+ continue;
+ }
+
+ /* Pass the contents of old-style command substitutions through
+ verbatim. */
+ if (c == '`')
+ {
+ si = i + 1;
+ t = string_extract (string, &si, "`", flags); /* already know (flags & SX_NOALLOC) == 0) */
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+ tlen = si - i - 1;
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 3, result_size, 64);
+ result[result_index++] = c;
+ strncpy (result + result_index, t, tlen);
+ result_index += tlen;
+ result[result_index++] = string[si];
+ free (t);
+ i = si + 1;
+ continue;
+ }
+
+ /* Pass the contents of new-style command substitutions and
+ arithmetic substitutions through verbatim. */
+ if (string[i] == '$' && string[i+1] == LPAREN)
+ {
+ si = i + 2;
+ t = extract_command_subst (string, &si, flags);
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+ tlen = si - i - 1;
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
+ result[result_index++] = c;
+ result[result_index++] = LPAREN;
+ strncpy (result + result_index, t, tlen);
+ result_index += tlen;
+ result[result_index++] = string[si];
+ free (t);
+ i = si + 1;
+ continue;
+ }
+
+#if defined (PROCESS_SUBSTITUTION)
+ /* Technically this should only work at the start of a word */
+ if ((string[i] == '<' || string[i] == '>') && string[i+1] == LPAREN)
+ {
+ si = i + 2;
+ t = extract_process_subst (string, (string[i] == '<' ? "<(" : ">)"), &si, flags);
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+ tlen = si - i - 1;
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 4, result_size, 64);
+ result[result_index++] = c;
+ result[result_index++] = LPAREN;
+ strncpy (result + result_index, t, tlen);
+ result_index += tlen;
+ result[result_index++] = string[si];
+ free (t);
+ i = si + 1;
+ continue;
+ }
+#endif
+
+ if (c == '\'' && posixly_correct && shell_compatibility_level > 42 && dolbrace_state != DOLBRACE_QUOTE)
+ {
+ COPY_CHAR_I (result, result_index, string, send, i);
+ continue;
+ }
+
+ /* Pass the contents of single and double-quoted strings through verbatim. */
+ if (c == '"' || c == '\'')
+ {
+ si = i + 1;
+ if (c == '"')
+ t = string_extract_double_quoted (string, &si, flags);
+ else
+ t = string_extract_single_quoted (string, &si, 0);
+ CHECK_STRING_OVERRUN (i, si, slen, c);
+
+ tlen = si - i - 2; /* -2 since si is one after the close quote */
+ RESIZE_MALLOCED_BUFFER (result, result_index, tlen + 3, result_size, 64);
+ result[result_index++] = c;
+ strncpy (result + result_index, t, tlen);
+ result_index += tlen;
+ result[result_index++] = string[si - 1];
+ free (t);
+ i = si;
+ continue;
+ }
+
+ /* copy this character, which was not special. */
+ COPY_CHAR_I (result, result_index, string, send, i);
+
+ /* This logic must agree with parse.y:parse_matched_pair, since they
+ share the same defines. */
+ if (dolbrace_state == DOLBRACE_PARAM && c == '%' && (i - *sindex) > 1)
+ dolbrace_state = DOLBRACE_QUOTE;
+ else if (dolbrace_state == DOLBRACE_PARAM && c == '#' && (i - *sindex) > 1)
+ dolbrace_state = DOLBRACE_QUOTE;
+ else if (dolbrace_state == DOLBRACE_PARAM && c == '/' && (i - *sindex) > 1)
+ dolbrace_state = DOLBRACE_QUOTE2; /* XXX */
+ else if (dolbrace_state == DOLBRACE_PARAM && c == '^' && (i - *sindex) > 1)
+ dolbrace_state = DOLBRACE_QUOTE;
+ else if (dolbrace_state == DOLBRACE_PARAM && c == ',' && (i - *sindex) > 1)
+ dolbrace_state = DOLBRACE_QUOTE;
+ /* This is intended to handle all of the [:]op expansions and the substring/
+ length/pattern removal/pattern substitution expansions. */
+ else if (dolbrace_state == DOLBRACE_PARAM && strchr ("#%^,~:-=?+/", c) != 0)
+ dolbrace_state = DOLBRACE_OP;
+ else if (dolbrace_state == DOLBRACE_OP && strchr ("#%^,~:-=?+/", c) == 0)
+ dolbrace_state = DOLBRACE_WORD;
+ }
+
+ if (c == 0 && nesting_level)
+ {
+ free (result);
+ if (no_longjmp_on_fatal_error == 0)
+ { /* { */
+ last_command_exit_value = EXECUTION_FAILURE;
+ report_error (_("bad substitution: no closing `%s' in %s"), "}", string);
+ exp_jump_to_top_level (DISCARD);
+ }
+ else
+ {
+ *sindex = i;
+ return ((char *)NULL);
+ }
+ }
+
+ *sindex = i;
+ result[result_index] = '\0';
+
+ return (result);
+}
+
/* Extract a parameter expansion expression within ${ and } from STRING.
Obey the Posix.2 rules for finding the ending `}': count braces while
skipping over enclosed quoted strings and command substitutions.
@@ -1516,10 +1817,6 @@ extract_dollar_brace_string (string, sindex, quoted, flags)
char *result, *t;
DECLARE_MBSTATE;
- pass_character = 0;
- nesting_level = 1;
- slen = strlen (string + *sindex) + *sindex;
-
/* The handling of dolbrace_state needs to agree with the code in parse.y:
parse_matched_pair(). The different initial value is to handle the
case where this function is called to parse the word in
@@ -1528,6 +1825,13 @@ extract_dollar_brace_string (string, sindex, quoted, flags)
if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && (flags & SX_POSIXEXP))
dolbrace_state = DOLBRACE_QUOTE;
+ if (quoted == Q_HERE_DOCUMENT && dolbrace_state == DOLBRACE_QUOTE && (flags & SX_NOALLOC) == 0)
+ return (extract_heredoc_dolbrace_string (string, sindex, quoted, flags));
+
+ pass_character = 0;
+ nesting_level = 1;
+ slen = strlen (string + *sindex) + *sindex;
+
i = *sindex;
while (c = string[i])
{
@@ -1550,6 +1854,8 @@ extract_dollar_brace_string (string, sindex, quoted, flags)
{
nesting_level++;
i += 2;
+ if (dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_WORD)
+ dolbrace_state = DOLBRACE_PARAM;
continue;
}
@@ -1737,12 +2043,14 @@ unquote_bang (string)
#define CQ_RETURN(x) do { no_longjmp_on_fatal_error = oldjmp; return (x); } while (0)
-/* This function assumes s[i] == open; returns with s[ret] == close; used to
- parse array subscripts. FLAGS & 1 means to not attempt to skip over
- matched pairs of quotes or backquotes, or skip word expansions; it is
- intended to be used after expansion has been performed and during final
- assignment parsing (see arrayfunc.c:assign_compound_array_list()) or
- during execution by a builtin which has already undergone word expansion. */
+/* When FLAGS & 2 == 0, this function assumes STRING[I] == OPEN; when
+ FLAGS & 2 != 0, it assumes STRING[I] points to one character past OPEN;
+ returns with STRING[RET] == close; used to parse array subscripts.
+ FLAGS & 1 means not to attempt to skip over matched pairs of quotes or
+ backquotes, or skip word expansions; it is intended to be used after
+ expansion has been performed and during final assignment parsing (see
+ arrayfunc.c:assign_compound_array_list()) or during execution by a builtin
+ which has already undergone word expansion. */
static int
skip_matched_pair (string, start, open, close, flags)
const char *string;
@@ -1757,7 +2065,10 @@ skip_matched_pair (string, start, open, close, flags)
oldjmp = no_longjmp_on_fatal_error;
no_longjmp_on_fatal_error = 1;
- i = start + 1; /* skip over leading bracket */
+ /* Move to the first character after a leading OPEN. If FLAGS&2, we assume
+ that START already points to that character. If not, we need to skip over
+ it here. */
+ i = (flags & 2) ? start : start + 1;
count = 1;
pass_next = backq = 0;
ss = (char *)string;
@@ -1810,7 +2121,7 @@ skip_matched_pair (string, start, open, close, flags)
: skip_double_quoted (ss, slen, ++i, 0);
/* no increment, the skip functions increment past the closing quote. */
}
- else if ((flags&1) == 0 && c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE))
+ else if ((flags & 1) == 0 && c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE))
{
si = i + 2;
if (string[si] == '\0')
@@ -1838,9 +2149,11 @@ skip_matched_pair (string, start, open, close, flags)
}
#if defined (ARRAY_VARS)
-/* Flags has 1 as a reserved value, since skip_matched_pair uses it for
+/* FLAGS has 1 as a reserved value, since skip_matched_pair uses it for
skipping over quoted strings and taking the first instance of the
- closing character. */
+ closing character. FLAGS & 2 means that STRING[START] points one
+ character past the open bracket; FLAGS & 2 == 0 means that STRING[START]
+ points to the open bracket. skip_matched_pair knows how to deal with this. */
int
skipsubscript (string, start, flags)
const char *string;
@@ -1964,7 +2277,7 @@ skip_to_delim (string, start, delims, flags)
CQ_RETURN(si);
if (string[i+1] == LPAREN)
- temp = extract_delimited_string (string, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND); /* ) */
+ temp = extract_delimited_string (string, &si, "$(", "(", ")", SX_NOALLOC|SX_COMMAND|completeflag); /* ) */
else
temp = extract_dollar_brace_string (string, &si, 0, SX_NOALLOC);
CHECK_STRING_OVERRUN (i, si, slen, c);
@@ -2176,6 +2489,21 @@ char_is_quoted (string, eindex)
oldjmp = no_longjmp_on_fatal_error;
no_longjmp_on_fatal_error = 1;
i = pass_next = 0;
+
+ /* If we have an open quoted string from a previous line, see if it's
+ closed before string[eindex], so we don't interpret that close quote
+ as starting a new quoted string. */
+ if (current_command_line_count > 0 && dstack.delimiter_depth > 0)
+ {
+ c = dstack.delimiters[dstack.delimiter_depth - 1];
+ if (c == '\'')
+ i = skip_single_quoted (string, slen, 0, 0);
+ else if (c == '"')
+ i = skip_double_quoted (string, slen, 0, SX_COMPLETE);
+ if (i > eindex)
+ CQ_RETURN (1);
+ }
+
while (i <= eindex)
{
c = string[i];
@@ -2275,7 +2603,7 @@ WORD_LIST *
split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp)
char *string;
int slen;
- char *delims;
+ const char *delims;
int sentinel, flags;
int *nwp, *cwp;
{
@@ -2292,7 +2620,7 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp)
return ((WORD_LIST *)NULL);
}
- d = (delims == 0) ? ifs_value : delims;
+ d = (delims == 0) ? ifs_value : (char *)delims;
ifs_split = delims == 0;
/* Make d2 the non-whitespace characters in delims */
@@ -3281,7 +3609,8 @@ do_assignment_internal (word, expand)
report_error (_("%s: cannot assign list to array member"), name);
ASSIGN_RETURN (0);
}
- entry = assign_array_element (name, value, aflags);
+ aflags |= ASS_ALLOWALLSUB; /* allow a[@]=value for existing associative arrays */
+ entry = assign_array_element (name, value, aflags, (array_eltstate_t *)0);
if (entry == 0)
ASSIGN_RETURN (0);
}
@@ -3576,6 +3905,104 @@ expand_assignment_string_to_string (string, quoted)
return (expand_string_to_string_internal (string, quoted, expand_string_assignment));
}
+/* Kind of like a combination of dequote_string and quote_string_for_globbing;
+ try to remove CTLESC quoting characters and convert CTLESC escaping a `&'
+ or a backslash into a backslash. The output of this function must eventually
+ be processed by strcreplace(). */
+static char *
+quote_string_for_repl (string, flags)
+ char *string;
+ int flags;
+{
+ size_t slen;
+ char *result, *t;
+ const char *s, *send;
+ DECLARE_MBSTATE;
+
+ slen = strlen (string);
+ send = string + slen;
+
+ result = (char *)xmalloc (slen * 2 + 1);
+
+ if (string[0] == CTLESC && string[1] == 0)
+ {
+ result[0] = CTLESC;
+ result[1] = '\0';
+ return (result);
+ }
+
+ /* This is awkward. We want to translate CTLESC-\ to \\ if we will
+ eventually send this string through strcreplace(), which we will do
+ only if shouldexp_replacement() determines that there is something
+ to replace. We can either make sure to escape backslashes here and
+ have shouldexp_replacement() signal that we should send the string to
+ strcreplace() if it sees an escaped backslash, or we can scan the
+ string before copying it and turn CTLESC-\ into \\ only if we encounter
+ a CTLESC-& or a &. This does the former and changes shouldexp_replacement().
+ If we double the backslashes here, we'll get doubled backslashes in any
+ result that doesn't get passed to strcreplace(). */
+
+ for (s = string, t = result; *s; )
+ {
+ /* This function's result has to be processed by strcreplace() */
+ if (*s == CTLESC && (s[1] == '&' || s[1] == '\\'))
+ {
+ *t++ = '\\';
+ s++;
+ *t++ = *s++;
+ continue;
+ }
+ /* Dequote it */
+ if (*s == CTLESC)
+ {
+ s++;
+ if (*s == '\0')
+ break;
+ }
+ COPY_CHAR_P (t, s, send);
+ }
+
+ *t = '\0';
+ return (result);
+}
+
+/* This does not perform word splitting on the WORD_LIST it returns and
+ it treats $* as if it were quoted. It dequotes the WORD_LIST, adds
+ backslash escapes before CTLESC-quoted backslash and `& if
+ patsub_replacement is enabled. */
+static char *
+expand_string_for_patsub (string, quoted)
+ char *string;
+ int quoted;
+{
+ WORD_LIST *value;
+ char *ret, *t;
+
+ if (string == 0 || *string == '\0')
+ return (char *)NULL;
+
+ value = expand_string_for_pat (string, quoted, (int *)0, (int *)0);
+
+ if (value && value->word)
+ {
+ remove_quoted_nulls (value->word->word); /* XXX */
+ value->word->flags &= ~W_HASQUOTEDNULL;
+ }
+
+ if (value)
+ {
+ t = (value->next) ? string_list (value) : value->word->word;
+ ret = quote_string_for_repl (t, quoted);
+ if (t != value->word->word)
+ free (t);
+ dispose_words (value);
+ }
+ else
+ ret = (char *)NULL;
+
+ return (ret);
+}
+
char *
expand_arith_string (string, quoted)
char *string;
@@ -3596,7 +4023,7 @@ expand_arith_string (string, quoted)
if (EXP_CHAR (string[i]))
break;
else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"')
- saw_quote = 1;
+ saw_quote = string[i];
ADVANCE_CHAR (string, slen, i);
}
@@ -3668,7 +4095,9 @@ remove_backslashes (string)
to the != or == operator, and should be treated as a pattern. In
this case, we quote the string specially for the globbing code. If
SPECIAL is 2, this is an rhs argument for the =~ operator, and should
- be quoted appropriately for regcomp/regexec. The caller is responsible
+ be quoted appropriately for regcomp/regexec. If SPECIAL is 3, this is
+ an array subscript and should be quoted after expansion so it's only
+ expanded once (Q_ARITH). The caller is responsible
for removing the backslashes if the unquoted word is needed later. In
any case, since we don't perform word splitting, we need to do quoted
null character removal. */
@@ -3686,7 +4115,8 @@ cond_expand_word (w, special)
expand_no_split_dollar_star = 1;
w->flags |= W_NOSPLIT2;
- l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
+ qflags = (special == 3) ? Q_ARITH : 0;
+ l = call_expand_word_internal (w, qflags, 0, (int *)0, (int *)0);
expand_no_split_dollar_star = 0;
if (l)
{
@@ -3697,6 +4127,13 @@ cond_expand_word (w, special)
dequote_list (l);
r = string_list (l);
}
+ else if (special == 3) /* arithmetic expression, Q_ARITH */
+ {
+ if (l->word)
+ word_list_remove_quoted_nulls (l); /* for now */
+ dequote_list (l);
+ r = string_list (l);
+ }
else
{
/* Need to figure out whether or not we should call dequote_escapes
@@ -3719,6 +4156,150 @@ cond_expand_word (w, special)
}
#endif
+/* Expand $'...' and $"..." in a string for code paths that don't do it. The
+ FLAGS argument is 1 if this function should treat CTLESC as a quote
+ character (e.g., for here-documents) or not (e.g., for shell_expand_line). */
+char *
+expand_string_dollar_quote (string, flags)
+ char *string;
+ int flags;
+{
+ size_t slen, retind, retsize;
+ int sindex, c, translen, peekc, news;
+ char *ret, *trans, *send, *t;
+ DECLARE_MBSTATE;
+
+ slen = strlen (string);
+ send = string + slen;
+ sindex = 0;
+
+ retsize = slen + 1;
+ ret = xmalloc (retsize);
+ retind = 0;
+
+ while (c = string[sindex])
+ {
+ switch (c)
+ {
+ default:
+ RESIZE_MALLOCED_BUFFER (ret, retind, locale_mb_cur_max + 1, retsize, 64);
+ COPY_CHAR_I (ret, retind, string, send, sindex);
+ break;
+
+ case '\\':
+ RESIZE_MALLOCED_BUFFER (ret, retind, locale_mb_cur_max + 2, retsize, 64);
+ ret[retind++] = string[sindex++];
+
+ if (string[sindex])
+ COPY_CHAR_I (ret, retind, string, send, sindex);
+ break;
+
+ case '\'':
+ case '"':
+ if (c == '\'')
+ news = skip_single_quoted (string, slen, ++sindex, SX_COMPLETE);
+ else
+ news = skip_double_quoted (string, slen, ++sindex, SX_COMPLETE);
+ translen = news - sindex - 1;
+ RESIZE_MALLOCED_BUFFER (ret, retind, translen + 3, retsize, 64);
+ ret[retind++] = c;
+ if (translen > 0)
+ {
+ strncpy (ret + retind, string + sindex, translen);
+ retind += translen;
+ }
+ if (news > sindex && string[news - 1] == c)
+ ret[retind++] = c;
+ sindex = news;
+ break;
+
+ case CTLESC:
+ RESIZE_MALLOCED_BUFFER (ret, retind, locale_mb_cur_max + 2, retsize, 64);
+ if (flags)
+ ret[retind++] = string[sindex++];
+ if (string[sindex])
+ COPY_CHAR_I (ret, retind, string, send, sindex);
+ break;
+
+ case '$':
+ peekc = string[++sindex];
+#if defined (TRANSLATABLE_STRINGS)
+ if (peekc != '\'' && peekc != '"')
+#else
+ if (peekc != '\'')
+#endif
+ {
+ RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 16);
+ ret[retind++] = c;
+ break;
+ }
+ if (string[sindex + 1] == '\0') /* don't bother */
+ {
+ RESIZE_MALLOCED_BUFFER (ret, retind, 3, retsize, 16);
+ ret[retind++] = c;
+ ret[retind++] = peekc;
+ sindex++;
+ break;
+ }
+ if (peekc == '\'')
+ {
+ /* SX_COMPLETE is the equivalent of ALLOWESC here */
+ /* We overload SX_COMPLETE below */
+ news = skip_single_quoted (string, slen, ++sindex, SX_COMPLETE);
+ /* Check for unclosed string and don't bother if so */
+ if (news > sindex && string[news] == '\0' && string[news-1] != peekc)
+ {
+ RESIZE_MALLOCED_BUFFER (ret, retind, 3, retsize, 16);
+ ret[retind++] = c;
+ ret[retind++] = peekc;
+ continue;
+ }
+ t = substring (string, sindex, news - 1);
+ trans = ansiexpand (t, 0, news-sindex-1, &translen);
+ free (t);
+ t = sh_single_quote (trans);
+ sindex = news;
+ }
+#if defined (TRANSLATABLE_STRINGS)
+ else
+ {
+ news = ++sindex;
+ t = string_extract_double_quoted (string, &news, SX_COMPLETE);
+ /* Check for unclosed string and don't bother if so */
+ if (news > sindex && string[news] == '\0' && string[news-1] != peekc)
+ {
+ RESIZE_MALLOCED_BUFFER (ret, retind, 3, retsize, 16);
+ ret[retind++] = c;
+ ret[retind++] = peekc;
+ free (t);
+ continue;
+ }
+ trans = locale_expand (t, 0, news-sindex, 0, &translen);
+ free (t);
+ if (singlequote_translations &&
+ ((news-sindex-1) != translen || STREQN (t, trans, translen) == 0))
+ t = sh_single_quote (trans);
+ else
+ t = sh_mkdoublequoted (trans, translen, 0);
+ sindex = news;
+ }
+#endif /* TRANSLATABLE_STRINGS */
+ free (trans);
+ trans = t;
+ translen = strlen (trans);
+
+ RESIZE_MALLOCED_BUFFER (ret, retind, translen + 1, retsize, 128);
+ strcpy (ret + retind, trans);
+ retind += translen;
+ FREE (trans);
+ break;
+ }
+ }
+
+ ret[retind] = 0;
+ return ret;
+}
+
/* Call expand_word_internal to expand W and handle error returns.
A convenience function for functions that don't want to handle
any errors or free any memory before aborting. */
@@ -3844,7 +4425,6 @@ expand_string_assignment (string, quoted)
return (value);
}
-
/* Expand one of the PS? prompt strings. This is a sort of combination of
expand_string_unsplit and expand_string_internal, but returns the
passed string when an error occurs. Might want to trap other calls
@@ -3953,9 +4533,10 @@ expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p)
#else
td.flags |= W_ASSIGNRHS|W_NOASSNTILDE; /* expand b in ${a=b} like assignment */
#endif
- td.word = string;
+ td.word = savestring (string);
tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p);
expand_no_split_dollar_star = old_nosplit;
+ free (td.word);
return (tresult);
}
@@ -3977,9 +4558,10 @@ expand_string_for_pat (string, quoted, dollar_at_p, expanded_p)
oexp = expand_no_split_dollar_star;
expand_no_split_dollar_star = 1;
td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */
- td.word = string;
+ td.word = savestring (string);
tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p);
expand_no_split_dollar_star = oexp;
+ free (td.word);
return (tresult);
}
@@ -4289,10 +4871,8 @@ dequote_string (string)
char *result, *send;
DECLARE_MBSTATE;
-#if defined (DEBUG)
if (string[0] == CTLESC && string[1] == 0)
- internal_inform ("dequote_string: string with bare CTLESC");
-#endif
+ internal_debug ("dequote_string: string with bare CTLESC");
slen = STRLEN (string);
@@ -5268,9 +5848,9 @@ array_remove_pattern (var, pattern, patspec, starsub, quoted)
#endif /* ARRAY_VARS */
static char *
-parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flags)
+parameter_brace_remove_pattern (varname, value, estatep, patstr, rtype, quoted, flags)
char *varname, *value;
- int ind;
+ array_eltstate_t *estatep;
char *patstr;
int rtype, quoted, flags;
{
@@ -5284,7 +5864,7 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag
oname = this_command_name;
this_command_name = varname;
- vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
+ vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val);
if (vtype == -1)
{
this_command_name = oname;
@@ -5497,7 +6077,11 @@ unlink_all_fifos ()
for (i = 0; i < nfifo; i++)
{
fifo_list[i].proc = (pid_t)-1;
+#if defined (O_NONBLOCK)
fd = open (fifo_list[i].file, O_RDWR|O_NONBLOCK);
+#else
+ fd = -1;
+#endif
unlink_fifo (i);
if (fd >= 0)
close (fd);
@@ -6116,10 +6700,8 @@ process_substitute (string, open_for_read_in_child)
remove_quoted_escapes (string);
-#if 0 /* TAG: bash-5.2 */
startup_state = 2; /* see if we can avoid a fork */
parse_and_execute_level = 0;
-#endif
/* Give process substitution a place to jump back to on failure,
so we don't go back up to main (). */
@@ -6135,7 +6717,7 @@ process_substitute (string, open_for_read_in_child)
if (result == ERREXIT)
rc = last_command_exit_value;
- else if (result == EXITPROG)
+ else if (result == EXITPROG || result == EXITBLTIN)
rc = last_command_exit_value;
else if (result)
rc = EXECUTION_FAILURE;
@@ -6166,14 +6748,35 @@ process_substitute (string, open_for_read_in_child)
/* */
/***********************************/
+#define COMSUB_PIPEBUF 4096
+
+static char *
+optimize_cat_file (r, quoted, flags, flagp)
+ REDIRECT *r;
+ int quoted, flags, *flagp;
+{
+ char *ret;
+ int fd;
+
+ fd = open_redir_file (r, (char **)0);
+ if (fd < 0)
+ return &expand_param_error;
+
+ ret = read_comsub (fd, quoted, flags, flagp);
+ close (fd);
+
+ return ret;
+}
+
static char *
read_comsub (fd, quoted, flags, rflag)
int fd, quoted, flags;
int *rflag;
{
- char *istring, buf[512], *bufp;
- int istring_index, c, tflag, skip_ctlesc, skip_ctlnul;
+ char *istring, buf[COMSUB_PIPEBUF], *bufp;
+ int c, tflag, skip_ctlesc, skip_ctlnul;
int mb_cur_max;
+ size_t istring_index;
size_t istring_size;
ssize_t bufn;
int nullbyte;
@@ -6316,15 +6919,38 @@ command_substitute (string, quoted, flags)
/* Don't fork () if there is no need to. In the case of no command to
run, just return NULL. */
-#if 1
for (s = string; s && *s && (shellblank (*s) || *s == '\n'); s++)
;
if (s == 0 || *s == 0)
return ((WORD_DESC *)NULL);
-#else
- if (!string || !*string || (string[0] == '\n' && !string[1]))
- return ((WORD_DESC *)NULL);
-#endif
+
+ if (*s == '<' && (s[1] != '<' && s[1] != '>' && s[1] != '&'))
+ {
+ COMMAND *cmd;
+
+ cmd = parse_string_to_command (string, 0); /* XXX - flags */
+ if (cmd && can_optimize_cat_file (cmd))
+ {
+ tflag = 0;
+ istring = optimize_cat_file (cmd->value.Simple->redirects, quoted, flags, &tflag);
+ if (istring == &expand_param_error)
+ {
+ last_command_exit_value = EXECUTION_FAILURE;
+ istring = 0;
+ }
+ else
+ last_command_exit_value = EXECUTION_SUCCESS; /* compat */
+ last_command_subst_pid = dollar_dollar_pid;
+
+ dispose_command (cmd);
+ ret = alloc_word_desc ();
+ ret->word = istring;
+ ret->flags = tflag;
+
+ return ret;
+ }
+ dispose_command (cmd);
+ }
if (wordexp_only && read_but_dont_execute)
{
@@ -6488,6 +7114,11 @@ command_substitute (string, quoted, flags)
remove_quoted_escapes (string);
+ /* We want to expand aliases on this pass if we are not in posix mode
+ for backwards compatibility. */
+ if (expand_aliases)
+ expand_aliases = posixly_correct == 0;
+
startup_state = 2; /* see if we can avoid a fork */
parse_and_execute_level = 0;
@@ -6505,7 +7136,7 @@ command_substitute (string, quoted, flags)
if (result == ERREXIT)
rc = last_command_exit_value;
- else if (result == EXITPROG)
+ else if (result == EXITPROG || result == EXITBLTIN)
rc = last_command_exit_value;
else if (result)
rc = EXECUTION_FAILURE;
@@ -6627,7 +7258,7 @@ array_length_reference (s)
if (assoc_p (var))
{
t[len - 1] = '\0';
- akey = expand_assignment_string_to_string (t, 0); /* [ */
+ akey = expand_subscript_string (t, 0); /* [ */
t[len - 1] = RBRACK;
if (akey == 0 || *akey == 0)
{
@@ -6746,24 +7377,31 @@ chk_atstar (name, quoted, pflags, quoted_dollar_atp, contains_dollar_at)
the shell, e.g., "@", "$", "*", etc. QUOTED, if non-zero, means that
NAME was found inside of a double-quoted expression. */
static WORD_DESC *
-parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp)
+parameter_brace_expand_word (name, var_is_special, quoted, pflags, estatep)
char *name;
int var_is_special, quoted, pflags;
- arrayind_t *indp;
+ array_eltstate_t *estatep;
{
WORD_DESC *ret;
char *temp, *tt;
intmax_t arg_index;
SHELL_VAR *var;
- int atype, rflags;
- arrayind_t ind;
+ int rflags;
+ array_eltstate_t es;
ret = 0;
temp = 0;
rflags = 0;
- if (indp)
- *indp = INTMAX_MIN;
+#if defined (ARRAY_VARS)
+ if (estatep)
+ es = *estatep; /* structure copy */
+ else
+ {
+ init_eltstate (&es);
+ es.ind = INTMAX_MIN;
+ }
+#endif
/* Handle multiple digit arguments, as in ${11}. */
if (legal_number (name, &arg_index))
@@ -6786,6 +7424,13 @@ parameter_brace_expand_word (name, var_is_special, quoted, pflags, indp)
ret = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL,
(int *)NULL, (int *)NULL, pflags);
+
+ /* Make sure we note that we saw a quoted null string and pass the flag back
+ to the caller in addition to the value. */
+ if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && STR_DOLLAR_AT_STAR (name) &&
+ ret && ret->word && QUOTED_NULL (ret->word))
+ ret->flags |= W_HASQUOTEDNULL;
+
free (tt);
}
#if defined (ARRAY_VARS)
@@ -6800,12 +7445,12 @@ expand_arrayref:
{
/* Only treat as double quoted if array variable */
if (var && (array_p (var) || assoc_p (var)))
- temp = array_value (name, quoted|Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind);
+ temp = array_value (name, quoted|Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &es);
else
- temp = array_value (name, quoted, 0, &atype, &ind);
+ temp = array_value (name, quoted, 0, &es);
}
else
- temp = array_value (name, quoted, 0, &atype, &ind);
+ temp = array_value (name, quoted, 0, &es);
}
/* Posix interp 888 */
else if (pflags & PF_NOSPLIT2)
@@ -6816,31 +7461,38 @@ expand_arrayref:
#else
if (tt[0] == '@' && tt[1] == RBRACK && var && quoted == 0 && ifs_is_set && ifs_is_null == 0 && ifs_firstc != ' ')
#endif
- temp = array_value (name, Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &atype, &ind);
+ temp = array_value (name, Q_DOUBLE_QUOTES, AV_ASSIGNRHS, &es);
else if (tt[0] == '@' && tt[1] == RBRACK)
- temp = array_value (name, quoted, 0, &atype, &ind);
+ temp = array_value (name, quoted, 0, &es);
else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null)
- temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind);
+ temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &es);
else if (tt[0] == '*' && tt[1] == RBRACK)
- temp = array_value (name, quoted, 0, &atype, &ind);
+ temp = array_value (name, quoted, 0, &es);
else
- temp = array_value (name, quoted, 0, &atype, &ind);
+ temp = array_value (name, quoted, 0, &es);
}
else if (tt[0] == '*' && tt[1] == RBRACK && expand_no_split_dollar_star && ifs_is_null)
- temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &atype, &ind);
+ temp = array_value (name, Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT, 0, &es);
else
- temp = array_value (name, quoted, 0, &atype, &ind);
- if (atype == 0 && temp)
+ temp = array_value (name, quoted, 0, &es);
+ if (es.subtype == 0 && temp)
{
temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
? quote_string (temp)
: quote_escapes (temp);
rflags |= W_ARRAYIND;
- if (indp)
- *indp = ind;
- }
- else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+ if (estatep)
+ *estatep = es; /* structure copy */
+ }
+ /* Note that array[*] and array[@] expanded to a quoted null string by
+ returning the W_HASQUOTEDNULL flag to the caller in addition to TEMP. */
+ else if (es.subtype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
rflags |= W_HASQUOTEDNULL;
+ else if (es.subtype == 2 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+ rflags |= W_HASQUOTEDNULL;
+
+ if (estatep == 0)
+ flush_eltstate (&es);
}
#endif
else if (var = find_variable (name))
@@ -7047,9 +7699,10 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll
{
WORD_DESC *w;
WORD_LIST *l, *tl;
- char *t, *t1, *temp, *vname;
- int l_hasdollat, sindex;
+ char *t, *t1, *temp, *vname, *newval;
+ int l_hasdollat, sindex, arrayref;
SHELL_VAR *v;
+ array_eltstate_t es;
/*itrace("parameter_brace_expand_rhs: %s:%s pflags = %d", name, value, pflags);*/
/* If the entire expression is between double quotes, we want to treat
@@ -7194,9 +7847,15 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll
}
}
+ arrayref = 0;
#if defined (ARRAY_VARS)
if (valid_array_reference (vname, 0))
- v = assign_array_element (vname, t1, 0);
+ {
+ init_eltstate (&es);
+ v = assign_array_element (vname, t1, ASS_ALLOWALLSUB, &es);
+ arrayref = 1;
+ newval = es.value;
+ }
else
#endif /* ARRAY_VARS */
v = bind_variable (vname, t1, 0);
@@ -7219,6 +7878,23 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll
stupidly_hack_special_variables (vname);
+ /* "In all cases, the final value of parameter shall be substituted." */
+ if (shell_compatibility_level > 51)
+ {
+ FREE (t1);
+#if defined (ARRAY_VARS)
+ if (arrayref)
+ {
+ t1 = newval;
+ flush_eltstate (&es);
+ }
+ else
+ t1 = get_variable_value (v);
+#else
+ t1 = value_cell (v);
+#endif
+ }
+
if (vname != name)
free (vname);
@@ -7228,12 +7904,11 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll
splitting, we want to quote the value we return appropriately, like
the other expansions this function handles. */
w->word = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (t1) : quote_escapes (t1);
- /* If we have something that's non-null, that's not a quoted null string,
+ /* If we have something that's non-null, but not a quoted null string,
and we're not going to be performing word splitting (we know we're not
because the operator is `='), we can forget we saw a quoted null. */
if (w->word && w->word[0] && QUOTED_NULL (w->word) == 0)
w->flags &= ~W_SAWQUOTEDNULL;
- free (t1);
/* If we convert a null string into a quoted null, make sure the caller
knows it. */
@@ -7427,7 +8102,7 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p)
{
char *t, *temp1, *temp2;
arrayind_t len;
- int expok;
+ int expok, eflag;
#if defined (ARRAY_VARS)
ARRAY *a;
HASH_TABLE *h;
@@ -7440,8 +8115,10 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p)
else
t = (char *)0;
- temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES);
- *e1p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */
+ temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES|Q_ARITH);
+ eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED;
+
+ *e1p = evalexp (temp1, eflag, &expok);
free (temp1);
if (expok == 0)
return (0);
@@ -7496,10 +8173,10 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p)
{
t++;
temp2 = savestring (t);
- temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
+ temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES|Q_ARITH);
free (temp2);
t[-1] = ':';
- *e2p = evalexp (temp1, 0, &expok); /* XXX - EXP_EXPANDED? */
+ *e2p = evalexp (temp1, eflag, &expok);
free (temp1);
if (expok == 0)
return (0);
@@ -7508,7 +8185,7 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p)
from end of positional parameters? */
#if 1
if ((vtype == VT_ARRAYVAR || vtype == VT_POSPARMS) && *e2p < 0)
-#else /* TAG: bash-5.2 */
+#else /* XXX - postponed; this isn't really a valuable feature */
if (vtype == VT_ARRAYVAR && *e2p < 0)
#endif
{
@@ -7548,15 +8225,15 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p)
by VARNAME (value of a variable or a reference to an array element).
QUOTED is the standard description of quoting state, using Q_* defines.
FLAGS is currently a set of flags to pass to array_value. If IND is
- non-null and not INTMAX_MIN, and FLAGS includes AV_USEIND, IND is
+ not INTMAX_MIN, and FLAGS includes AV_USEIND, IND is
passed to array_value so the array index is not computed again.
If this returns VT_VARIABLE, the caller assumes that CTLESC and CTLNUL
characters in the value are quoted with CTLESC and takes appropriate
steps. For convenience, *VALP is set to the dequoted VALUE. */
static int
-get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
+get_var_and_type (varname, value, estatep, quoted, flags, varp, valp)
char *varname, *value;
- arrayind_t ind;
+ array_eltstate_t *estatep;
int quoted, flags;
SHELL_VAR **varp;
char **valp;
@@ -7564,7 +8241,6 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
int vtype, want_indir;
char *temp, *vname;
SHELL_VAR *v;
- arrayind_t lind;
want_indir = *varname == '!' &&
(legal_variable_starter ((unsigned char)varname[1]) || DIGIT (varname[1])
@@ -7594,8 +8270,11 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
{
v = array_variable_part (vname, 0, &temp, (int *)0);
/* If we want to signal array_value to use an already-computed index,
- set LIND to that index */
- lind = (ind != INTMAX_MIN && (flags & AV_USEIND)) ? ind : 0;
+ the caller will set ESTATEP->IND to that index and pass AV_USEIND in
+ FLAGS. */
+ if (estatep && (flags & AV_USEIND) == 0)
+ estatep->ind = INTMAX_MIN;
+
if (v && invisible_p (v))
{
vtype = VT_ARRAYMEMBER;
@@ -7615,7 +8294,7 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
else
{
vtype = VT_ARRAYMEMBER;
- *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind);
+ *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, estatep);
}
*varp = v;
}
@@ -7632,7 +8311,7 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
{
vtype = VT_ARRAYMEMBER;
*varp = v;
- *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, (int *)NULL, &lind);
+ *valp = array_value (vname, Q_DOUBLE_QUOTES, flags, estatep);
}
}
else if ((v = find_variable (vname)) && (invisible_p (v) == 0) && (assoc_p (v) || array_p (v)))
@@ -7782,6 +8461,7 @@ string_transform (xc, v, s)
ret = string_var_assignment (v, s);
break;
case 'K':
+ case 'k':
ret = sh_quote_reusable (s, 0);
break;
/* Transformations that modify the variable's value */
@@ -7875,7 +8555,7 @@ array_transform (xc, var, starsub, quoted)
{
ARRAY *a;
HASH_TABLE *h;
- int itype;
+ int itype, qflags;
char *ret;
WORD_LIST *list;
SHELL_VAR *v;
@@ -7902,6 +8582,23 @@ array_transform (xc, var, starsub, quoted)
a = (v && array_p (v)) ? array_cell (v) : 0;
h = (v && assoc_p (v)) ? assoc_cell (v) : 0;
+ /* XXX - for now */
+ if (xc == 'k')
+ {
+ if (v == 0)
+ return ((char *)NULL);
+ list = array_p (v) ? array_to_kvpair_list (a) : assoc_to_kvpair_list (h);
+ qflags = quoted;
+ /* If we are expanding in a context where word splitting will not be
+ performed, treat as quoted. This changes how $* will be expanded. */
+ if (itype == '*' && expand_no_split_dollar_star && ifs_is_null)
+ qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */
+
+ ret = string_list_pos_params (itype, list, qflags, 0);
+ dispose_words (list);
+ return ret;
+ }
+
list = a ? array_to_word_list (a) : (h ? assoc_to_word_list (h) : 0);
if (list == 0)
return ((char *)NULL);
@@ -7925,11 +8622,12 @@ valid_parameter_transform (xform)
case 'a': /* expand to a string with just attributes */
case 'A': /* expand as an assignment statement with attributes */
case 'K': /* expand assoc array to list of key/value pairs */
+ case 'k': /* XXX - for now */
case 'E': /* expand like $'...' */
case 'P': /* expand like prompt string */
case 'Q': /* quote reusably */
case 'U': /* transform to uppercase */
- case 'u': /* tranform by capitalizing */
+ case 'u': /* transform by capitalizing */
case 'L': /* transform to lowercase */
return 1;
default:
@@ -7938,9 +8636,9 @@ valid_parameter_transform (xform)
}
static char *
-parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, flags)
+parameter_brace_transform (varname, value, estatep, xform, rtype, quoted, pflags, flags)
char *varname, *value;
- int ind;
+ array_eltstate_t *estatep;
char *xform;
int rtype, quoted, pflags, flags;
{
@@ -7955,21 +8653,19 @@ parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, fl
oname = this_command_name;
this_command_name = varname;
- vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
+ vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val);
if (vtype == -1)
{
this_command_name = oname;
return ((char *)NULL);
}
- if (valid_parameter_transform (xform) == 0)
+ if (xform[0] == 0 || valid_parameter_transform (xform) == 0)
{
this_command_name = oname;
-#if 0 /* TAG: bash-5.2 Martin Schulte <gnu@schrader-schulte.de> 10/2020 */
+ if (vtype == VT_VARIABLE)
+ FREE (val);
return (interactive_shell ? &expand_param_error : &expand_param_fatal);
-#else
- return &expand_param_error;
-#endif
}
starsub = vtype & VT_STARSUB;
@@ -8073,9 +8769,9 @@ mb_substring (string, s, e)
VARNAME. If VARNAME is an array variable, use the array elements. */
static char *
-parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags)
+parameter_brace_substring (varname, value, estatep, substr, quoted, pflags, flags)
char *varname, *value;
- int ind;
+ array_eltstate_t *estatep;
char *substr;
int quoted, pflags, flags;
{
@@ -8090,7 +8786,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags)
oname = this_command_name;
this_command_name = varname;
- vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
+ vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val);
if (vtype == -1)
{
this_command_name = oname;
@@ -8178,23 +8874,38 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags)
/* */
/****************************************************************/
-#ifdef INCLUDE_UNUSED
static int
shouldexp_replacement (s)
char *s;
{
- register char *p;
+ size_t slen;
+ int sindex, c;
+ DECLARE_MBSTATE;
- for (p = s; p && *p; p++)
+ sindex = 0;
+ slen = STRLEN (s);
+ while (c = s[sindex])
{
- if (*p == '\\')
- p++;
- else if (*p == '&')
+ if (c == '\\')
+ {
+ sindex++;
+ if (s[sindex] == 0)
+ return 0;
+ /* We want to remove this backslash because we treat it as special
+ in this context. THIS ASSUMES THE STRING IS PROCESSED BY
+ strcreplace() OR EQUIVALENT that handles removing backslashes
+ preceding the special character. */
+ if (s[sindex] == '&')
+ return 1;
+ if (s[sindex] == '\\')
+ return 1;
+ }
+ else if (c == '&')
return 1;
+ ADVANCE_CHAR (s, slen, sindex);
}
return 0;
}
-#endif
char *
pat_subst (string, pat, rep, mflags)
@@ -8210,12 +8921,7 @@ pat_subst (string, pat, rep, mflags)
return (savestring (""));
mtype = mflags & MATCH_TYPEMASK;
-
-#if 0 /* TAG: bash-5.2? */
- rxpand = (rep && *rep) ? shouldexp_replacement (rep) : 0;
-#else
- rxpand = 0;
-#endif
+ rxpand = mflags & MATCH_EXPREP;
/* Special cases:
* 1. A null pattern with mtype == MATCH_BEG means to prefix STRING
@@ -8224,37 +8930,34 @@ pat_subst (string, pat, rep, mflags)
* STRING and return the result.
* 3. A null STRING with a matching pattern means to append REP to
* STRING and return the result.
- * These don't understand or process `&' in the replacement string.
+ *
+ * These process `&' in the replacement string, like `sed' does when
+ * presented with a BRE of `^' or `$'.
*/
if ((pat == 0 || *pat == 0) && (mtype == MATCH_BEG || mtype == MATCH_END))
{
- replen = STRLEN (rep);
+ rstr = (mflags & MATCH_EXPREP) ? strcreplace (rep, '&', "", 2) : rep;
+ rslen = STRLEN (rstr);
l = STRLEN (string);
- ret = (char *)xmalloc (replen + l + 2);
- if (replen == 0)
+ ret = (char *)xmalloc (rslen + l + 2);
+ if (rslen == 0)
strcpy (ret, string);
else if (mtype == MATCH_BEG)
{
- strcpy (ret, rep);
- strcpy (ret + replen, string);
+ strcpy (ret, rstr);
+ strcpy (ret + rslen, string);
}
else
{
strcpy (ret, string);
- strcpy (ret + l, rep);
+ strcpy (ret + l, rstr);
}
+ if (rstr != rep)
+ free (rstr);
return (ret);
}
else if (*string == 0 && (match_pattern (string, pat, mtype, &s, &e) != 0))
- {
- replen = STRLEN (rep);
- ret = (char *)xmalloc (replen + 1);
- if (replen == 0)
- ret[0] = '\0';
- else
- strcpy (ret, rep);
- return (ret);
- }
+ return ((mflags & MATCH_EXPREP) ? strcreplace (rep, '&', "", 2) : savestring (rep));
ret = (char *)xmalloc (rsize = 64);
ret[0] = '\0';
@@ -8274,7 +8977,7 @@ pat_subst (string, pat, rep, mflags)
for (x = 0; x < mlen; x++)
mstr[x] = s[x];
mstr[mlen] = '\0';
- rstr = strcreplace (rep, '&', mstr, 0);
+ rstr = strcreplace (rep, '&', mstr, 2);
free (mstr);
rslen = strlen (rstr);
}
@@ -8332,7 +9035,8 @@ pat_subst (string, pat, rep, mflags)
/* Now copy the unmatched portion of the input string */
if (str && *str)
{
- RESIZE_MALLOCED_BUFFER (ret, rptr, STRLEN(str) + 1, rsize, 64);
+ l = send - str + 1;
+ RESIZE_MALLOCED_BUFFER (ret, rptr, l, rsize, 64);
strcpy (ret + rptr, str);
}
else
@@ -8385,9 +9089,9 @@ pos_params_pat_subst (string, pat, rep, mflags)
and the string to substitute. QUOTED is a flags word containing
the type of quoting currently in effect. */
static char *
-parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)
+parameter_brace_patsub (varname, value, estatep, patsub, quoted, pflags, flags)
char *varname, *value;
- int ind;
+ array_eltstate_t *estatep;
char *patsub;
int quoted, pflags, flags;
{
@@ -8401,7 +9105,7 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)
oname = this_command_name;
this_command_name = varname; /* error messages */
- vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
+ vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val);
if (vtype == -1)
{
this_command_name = oname;
@@ -8456,13 +9160,22 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)
the entire expansion is double-quoted because the parser and string
extraction functions treated quotes in the replacement string as
special. THIS IS NOT BACKWARDS COMPATIBLE WITH BASH-4.2. */
- if (shell_compatibility_level > 42)
+ if (shell_compatibility_level > 42 && patsub_replacement == 0)
rep = expand_string_if_necessary (rep, quoted & ~(Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT), expand_string_unsplit);
+ else if (shell_compatibility_level > 42 && patsub_replacement)
+ rep = expand_string_for_patsub (rep, quoted & ~(Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT));
/* This is the bash-4.2 code. */
else if ((mflags & MATCH_QUOTED) == 0)
rep = expand_string_if_necessary (rep, quoted, expand_string_unsplit);
else
rep = expand_string_to_string_internal (rep, quoted, expand_string_unsplit);
+
+ /* Check whether or not to replace `&' in the replacement string after
+ expanding it, since we want to treat backslashes quoting the `&'
+ consistently. */
+ if (patsub_replacement && rep && *rep && shouldexp_replacement (rep))
+ mflags |= MATCH_EXPREP;
+
}
/* ksh93 doesn't allow the match specifier to be a part of the expanded
@@ -8622,9 +9335,10 @@ pos_params_modcase (string, pat, modop, mflags)
to perform. QUOTED is a flags word containing the type of quoting
currently in effect. */
static char *
-parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, flags)
+parameter_brace_casemod (varname, value, estatep, modspec, patspec, quoted, pflags, flags)
char *varname, *value;
- int ind, modspec;
+ array_eltstate_t *estatep;
+ int modspec;
char *patspec;
int quoted, pflags, flags;
{
@@ -8638,7 +9352,7 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags,
oname = this_command_name;
this_command_name = varname;
- vtype = get_var_and_type (varname, value, ind, quoted, flags, &v, &val);
+ vtype = get_var_and_type (varname, value, estatep, quoted, flags, &v, &val);
if (vtype == -1)
{
this_command_name = oname;
@@ -8815,7 +9529,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
WORD_DESC *tdesc, *ret;
int t_index, sindex, c, tflag, modspec, local_pflags, all_element_arrayref;
intmax_t number;
- arrayind_t ind;
+ array_eltstate_t es;
temp = temp1 = value = (char *)NULL;
var_is_set = var_is_null = var_is_special = check_nullness = 0;
@@ -8862,7 +9576,10 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
ret = 0;
tflag = 0;
- ind = INTMAX_MIN;
+#if defined (ARRAY_VARS)
+ init_eltstate (&es);
+#endif
+ es.ind = INTMAX_MIN; /* XXX */
/* If the name really consists of a special variable, then make sure
that we have the entire name. We don't allow indirect references
@@ -9099,11 +9816,16 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
to return the index we're supposed to be using. */
if (tdesc && tdesc->flags)
tdesc->flags &= ~W_ARRAYIND;
+
+ /* If the indir expansion contains $@/$*, extend the special treatment
+ of the case of no positional parameters and `set -u' to it. */
+ if (contains_dollar_at && *contains_dollar_at)
+ all_element_arrayref = 1;
}
else
{
local_pflags |= PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS));
- tdesc = parameter_brace_expand_word (name, var_is_special, quoted, local_pflags, &ind);
+ tdesc = parameter_brace_expand_word (name, var_is_special, quoted, local_pflags, &es);
}
if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal)
@@ -9119,7 +9841,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
dispose_word_desc (tdesc);
}
else
- temp = (char *)0;
+ temp = (char *)0;
if (temp == &expand_param_error || temp == &expand_param_fatal)
{
@@ -9200,9 +9922,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
/* If this is a substring spec, process it and add the result. */
if (want_substring)
{
- temp1 = parameter_brace_substring (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
+ temp1 = parameter_brace_substring (name, temp, &es, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
FREE (value);
FREE (temp);
+#if defined (ARRAY_VARS)
+ flush_eltstate (&es);
+#endif
if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
{
@@ -9232,9 +9957,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
}
else if (want_patsub)
{
- temp1 = parameter_brace_patsub (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
+ temp1 = parameter_brace_patsub (name, temp, &es, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
FREE (value);
FREE (temp);
+#if defined (ARRAY_VARS)
+ flush_eltstate (&es);
+#endif
if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
{
@@ -9258,9 +9986,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
#if defined (CASEMOD_EXPANSIONS)
else if (want_casemod)
{
- temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
+ temp1 = parameter_brace_casemod (name, temp, &es, modspec, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
FREE (value);
FREE (temp);
+#if defined (ARRAY_VARS)
+ flush_eltstate (&es);
+#endif
if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
{
@@ -9294,6 +10025,9 @@ bad_substitution:
FREE (value);
FREE (temp);
free (name);
+#if defined (ARRAY_VARS)
+ flush_eltstate (&es);
+#endif
if (shell_compatibility_level <= 43)
return &expand_wdesc_error;
else
@@ -9303,9 +10037,12 @@ bad_substitution:
break;
case '@':
- temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
+ temp1 = parameter_brace_transform (name, temp, &es, value, c, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
free (temp);
free (value);
+#if defined (ARRAY_VARS)
+ flush_eltstate (&es);
+#endif
if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
{
@@ -9333,9 +10070,12 @@ bad_substitution:
FREE (value);
break;
}
- temp1 = parameter_brace_remove_pattern (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
+ temp1 = parameter_brace_remove_pattern (name, temp, &es, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
free (temp);
free (value);
+#if defined (ARRAY_VARS)
+ flush_eltstate (&es);
+#endif
ret = alloc_word_desc ();
ret->word = temp1;
@@ -9394,6 +10134,14 @@ bad_substitution:
}
else /* VAR not set or VAR is NULL. */
{
+ /* If we're freeing a quoted null here, we need to remember we saw
+ it so we can restore it later if needed, or the caller can note it.
+ The check against `+' doesn't really matter, since the other cases
+ don't use or return TFLAG, but it's good for clarity. */
+ if (c == '+' && temp && QUOTED_NULL (temp) &&
+ (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+ tflag |= W_HASQUOTEDNULL;
+
FREE (temp);
temp = (char *)NULL;
if (c == '=' && var_is_special)
@@ -9402,11 +10150,17 @@ bad_substitution:
report_error (_("$%s: cannot assign in this way"), name);
free (name);
free (value);
+#if defined (ARRAY_VARS)
+ flush_eltstate (&es);
+#endif
return &expand_wdesc_error;
}
else if (c == '?')
{
parameter_brace_expand_error (name, value, check_nullness);
+#if defined (ARRAY_VARS)
+ flush_eltstate (&es);
+#endif
return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
}
else if (c != '+')
@@ -9436,6 +10190,9 @@ bad_substitution:
break;
}
free (name);
+#if defined (ARRAY_VARS)
+ flush_eltstate (&es);
+#endif
if (ret == 0)
{
@@ -9458,7 +10215,7 @@ param_expand (string, sindex, quoted, expanded_something,
int *quoted_dollar_at_p, *had_quoted_null_p, pflags;
{
char *temp, *temp1, uerror[3], *savecmd;
- int zindex, t_index, expok;
+ int zindex, t_index, expok, eflag;
unsigned char c;
intmax_t number;
SHELL_VAR *var;
@@ -9836,7 +10593,9 @@ arithsub:
/* No error messages. */
savecmd = this_command_name;
this_command_name = (char *)NULL;
- number = evalexp (temp1, EXP_EXPANDED, &expok);
+
+ eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED;
+ number = evalexp (temp1, eflag, &expok);
this_command_name = savecmd;
free (temp);
free (temp1);
@@ -9949,7 +10708,8 @@ comsub:
#if defined (ARRAY_VARS)
if (temp && *temp && valid_array_reference (temp, 0))
{
- tdesc = parameter_brace_expand_word (temp, SPECIAL_VAR (temp, 0), quoted, pflags, (arrayind_t *)NULL);
+ chk_atstar (temp, quoted, pflags, quoted_dollar_at_p, contains_dollar_at);
+ tdesc = parameter_brace_expand_word (temp, SPECIAL_VAR (temp, 0), quoted, pflags, 0);
if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal)
return (tdesc);
ret = tdesc;
@@ -10004,6 +10764,116 @@ return0:
return ret;
}
+#if defined (ARRAY_VARS)
+/* Characters that need to be backslash-quoted after expanding array subscripts */
+static char abstab[256] = { '\1' };
+
+/* Run an array subscript through the appropriate word expansions. */
+char *
+expand_subscript_string (string, quoted)
+ char *string;
+ int quoted;
+{
+ WORD_DESC td;
+ WORD_LIST *tlist;
+ int oe;
+ char *ret;
+
+ if (string == 0 || *string == 0)
+ return (char *)NULL;
+
+ oe = expand_no_split_dollar_star;
+ ret = (char *)NULL;
+
+ td.flags = W_NOPROCSUB|W_NOTILDE|W_NOSPLIT2; /* XXX - W_NOCOMSUB? */
+ td.word = savestring (string); /* in case it's freed on error */
+
+ expand_no_split_dollar_star = 1;
+ tlist = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+ expand_no_split_dollar_star = oe;
+
+ if (tlist)
+ {
+ if (tlist->word)
+ {
+ remove_quoted_nulls (tlist->word->word);
+ tlist->word->flags &= ~W_HASQUOTEDNULL;
+ }
+ dequote_list (tlist);
+ ret = string_list (tlist);
+ dispose_words (tlist);
+ }
+
+ free (td.word);
+ return (ret);
+}
+
+/* Expand the subscript in STRING, which is an array reference. To ensure we
+ only expand it once, we quote the characters that would start another
+ expansion and the bracket characters that are special to array subscripts. */
+static char *
+expand_array_subscript (string, sindex, quoted, flags)
+ char *string;
+ int *sindex;
+ int quoted, flags;
+{
+ char *ret, *exp, *t;
+ size_t slen;
+ int si, ni;
+
+ si = *sindex;
+ slen = STRLEN (string);
+
+ if (abstab[0] == '\1')
+ {
+ /* These are basically the characters that start shell expansions plus
+ the characters that delimit subscripts. */
+ memset (abstab, '\0', sizeof (abstab));
+ abstab[LBRACK] = abstab[RBRACK] = 1;
+ abstab['$'] = abstab['`'] = abstab['~'] = 1;
+ abstab['\\'] = abstab['\''] = 1;
+ abstab['"'] = 1; /* XXX */
+ /* We don't quote `@' or `*' in the subscript at all. */
+ }
+
+ /* string[si] == LBRACK */
+ ni = skipsubscript (string, si, 0);
+ /* These checks mirror the ones in valid_array_reference. The check for
+ (ni - si) == 1 checks for empty subscripts. We don't check that the
+ subscript is a separate word if we're parsing an arithmetic expression. */
+ if (ni >= slen || string[ni] != RBRACK || (ni - si) == 1 ||
+ (string[ni+1] != '\0' && (quoted & Q_ARITH) == 0))
+ {
+ /* let's check and see what fails this check */
+ INTERNAL_DEBUG (("expand_array_subscript: bad subscript string: `%s'", string+si));
+ ret = (char *)xmalloc (2); /* badly-formed subscript */
+ ret[0] = string[si];
+ ret[1] = '\0';
+ *sindex = si + 1;
+ return ret;
+ }
+
+ /* STRING[ni] == RBRACK */
+ exp = substring (string, si+1, ni);
+ t = expand_subscript_string (exp, quoted & ~(Q_ARITH|Q_DOUBLE_QUOTES));
+ free (exp);
+ exp = sh_backslash_quote (t, abstab, 0);
+ free (t);
+
+ slen = STRLEN (exp);
+ ret = xmalloc (slen + 2 + 1);
+ ret[0] ='[';
+ strcpy (ret + 1, exp);
+ ret[slen + 1] = ']';
+ ret[slen + 2] = '\0';
+
+ free (exp);
+ *sindex = ni + 1;
+
+ return ret;
+}
+#endif
+
void
invalidate_cached_quoted_dollar_at ()
{
@@ -10054,7 +10924,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
size_t istring_size;
/* Index into ISTRING. */
- int istring_index;
+ size_t istring_index;
/* Temporary string storage. */
char *temp, *temp1;
@@ -10080,6 +10950,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
int had_quoted_null;
int has_quoted_ifs; /* did we add a quoted $IFS character here? */
int has_dollar_at, temp_has_dollar_at;
+ int internal_tilde;
int split_on_spaces;
int local_expanded;
int tflag;
@@ -10095,7 +10966,9 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
DECLARE_MBSTATE;
- /* OK, let's see if we can optimize a common idiom: "$@" */
+ /* OK, let's see if we can optimize a common idiom: "$@". This needs to make sure
+ that all of the flags callers care about (e.g., W_HASQUOTEDNULL) are set in
+ list->flags. */
if (STREQ (word->word, "\"$@\"") &&
(word->flags == (W_HASDOLLAR|W_QUOTED)) &&
dollar_vars[1]) /* XXX - check IFS here as well? */
@@ -10117,6 +10990,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
quoted_dollar_at = had_quoted_null = has_dollar_at = 0;
has_quoted_ifs = 0;
split_on_spaces = 0;
+ internal_tilde = 0; /* expanding =~ or :~ */
quoted_state = UNQUOTED;
string = word->word;
@@ -10181,7 +11055,7 @@ add_string:
{
/* XXX - technically this should only be expanded at the start
of a word */
- if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & (W_DQUOTE|W_NOPROCSUB)))
+ if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & W_NOPROCSUB))
{
sindex--; /* add_character: label increments sindex */
goto add_character;
@@ -10204,6 +11078,22 @@ add_string:
}
#endif /* PROCESS_SUBSTITUTION */
+#if defined (ARRAY_VARS)
+ case '[': /*]*/
+ if ((quoted & Q_ARITH) == 0 || shell_compatibility_level <= 51)
+ {
+ if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
+ goto add_ifs_character;
+ else
+ goto add_character;
+ }
+ else
+ {
+ temp = expand_array_subscript (string, &sindex, quoted, word->flags);
+ goto add_string;
+ }
+#endif
+
case '=':
/* Posix.2 section 3.6.1 says that tildes following `=' in words
which are not assignment statements are not expanded. If the
@@ -10232,7 +11122,7 @@ add_string:
assignoff == -1 && sindex > 0)
assignoff = sindex;
if (sindex == assignoff && string[sindex+1] == '~') /* XXX */
- word->flags |= W_ITILDE;
+ internal_tilde = 1;
if (word->flags & W_ASSIGNARG)
word->flags |= W_ASSIGNRHS; /* affects $@ */
@@ -10257,7 +11147,7 @@ add_string:
if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS)) &&
(posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
string[sindex+1] == '~')
- word->flags |= W_ITILDE;
+ internal_tilde = 1;
if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c))
goto add_ifs_character;
@@ -10270,11 +11160,11 @@ add_string:
assignment statement, we don't do tilde expansion. We don't
do tilde expansion if quoted or in an arithmetic context. */
- if ((word->flags & (W_NOTILDE|W_DQUOTE)) ||
- (sindex > 0 && ((word->flags & W_ITILDE) == 0)) ||
+ if ((word->flags & W_NOTILDE) ||
+ (sindex > 0 && (internal_tilde == 0)) ||
(quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
{
- word->flags &= ~W_ITILDE;
+ internal_tilde = 0;
if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
goto add_ifs_character;
else
@@ -10290,7 +11180,7 @@ add_string:
temp = bash_tilde_find_word (string + sindex, tflag, &t_index);
- word->flags &= ~W_ITILDE;
+ internal_tilde = 0;
if (temp && *temp && t_index > 0)
{
@@ -10365,7 +11255,7 @@ add_string:
{
t_index = sindex++;
- temp = string_extract (string, &sindex, "`", SX_REQMATCH);
+ temp = string_extract (string, &sindex, "`", (word->flags & W_COMPLETE) ? SX_COMPLETE : SX_REQMATCH);
/* The test of sindex against t_index is to allow bare instances of
` to pass through, for backwards compatibility. */
if (temp == &extract_string_error || temp == &extract_string_fatal)
@@ -10477,6 +11367,7 @@ add_twochars:
break;
case '"':
+ /* XXX - revisit this */
if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && ((quoted & Q_ARITH) == 0))
goto add_character;
@@ -10510,7 +11401,8 @@ add_twochars:
temp_has_dollar_at = 0; /* does this quoted (sub)string include $@? */
/* Need to get W_HASQUOTEDNULL flag through this function. */
- list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &temp_has_dollar_at, (int *)NULL);
+ /* XXX - preserve Q_ARITH here? */
+ list = expand_word_internal (tword, Q_DOUBLE_QUOTES|(quoted&Q_ARITH), 0, &temp_has_dollar_at, (int *)NULL);
has_dollar_at += temp_has_dollar_at;
if (list == &expand_word_error || list == &expand_word_fatal)
@@ -10665,7 +11557,7 @@ add_twochars:
goto add_character;
t_index = ++sindex;
- temp = string_extract_single_quoted (string, &sindex);
+ temp = string_extract_single_quoted (string, &sindex, 0);
/* If the entire STRING was surrounded by single quotes,
then the string is wholly quoted. */
@@ -10806,7 +11698,11 @@ finished_with_string:
if (*istring == '\0')
{
+#if 0
if (quoted_dollar_at == 0 && (had_quoted_null || quoted_state == PARTIALLY_QUOTED))
+#else
+ if (had_quoted_null || (quoted_dollar_at == 0 && quoted_state == PARTIALLY_QUOTED))
+#endif
{
istring[0] = CTLNUL;
istring[1] = '\0';
@@ -10843,6 +11739,8 @@ finished_with_string:
tword->flags |= W_NOGLOB; /* XXX */
if (word->flags & W_NOBRACE)
tword->flags |= W_NOBRACE; /* XXX */
+ if (word->flags & W_ARRAYREF)
+ tword->flags |= W_ARRAYREF;
if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
tword->flags |= W_QUOTED;
list = make_word_list (tword, (WORD_LIST *)NULL);
@@ -10951,6 +11849,8 @@ set_word_flags:
tword->flags |= W_NOGLOB;
if (word->flags & W_NOBRACE)
tword->flags |= W_NOBRACE;
+ if (word->flags & W_ARRAYREF)
+ tword->flags |= W_ARRAYREF;
list = make_word_list (tword, (WORD_LIST *)NULL);
}
}
@@ -11011,7 +11911,7 @@ string_quote_removal (string, quoted)
break;
}
tindex = sindex + 1;
- temp = string_extract_single_quoted (string, &tindex);
+ temp = string_extract_single_quoted (string, &tindex, 0);
if (temp)
{
strcpy (r, temp);
@@ -11191,6 +12091,12 @@ word_list_split (list)
w->word[0] = '\0';
tresult = make_word_list (w, (WORD_LIST *)NULL);
}
+#if defined (ARRAY_VARS)
+ /* pass W_ARRAYREF through for words that are not split and are
+ identical to the original word. */
+ if (tresult && tresult->next == 0 && t->next == 0 && (t->word->flags & W_ARRAYREF) && STREQ (t->word->word, tresult->word->word))
+ tresult->word->flags |= W_ARRAYREF;
+#endif
if (result == 0)
result = e = tresult;
else
@@ -11767,10 +12673,13 @@ expand_declaration_argument (tlist, wcmd)
memset (omap, '\0', sizeof (omap));
for (l = wcmd->next; l != tlist; l = l->next)
{
- if (l->word->word[0] != '-')
+ int optchar;
+
+ if (l->word->word[0] != '-' && l->word->word[0] != '+')
break; /* non-option argument */
if (l->word->word[0] == '-' && l->word->word[1] == '-' && l->word->word[2] == 0)
break; /* -- signals end of options */
+ optchar = l->word->word[0];
for (oind = 1; l->word->word[oind]; oind++)
switch (l->word->word[oind])
{
@@ -11782,7 +12691,7 @@ expand_declaration_argument (tlist, wcmd)
case 'c':
omap[l->word->word[oind]] = 1;
if (opti == 0)
- opts[opti++] = '-';
+ opts[opti++] = optchar;
break;
default:
break;
@@ -11937,6 +12846,87 @@ shell_expand_word_list (tlist, eflags)
return (new_list);
}
+/* Perform assignment statements optionally preceding a command name COMMAND.
+ If COMMAND == NULL, is_nullcmd usually == 1. Follow the POSIX rules for
+ variable assignment errors. */
+static int
+do_assignment_statements (varlist, command, is_nullcmd)
+ WORD_LIST *varlist;
+ char *command;
+ int is_nullcmd;
+{
+ WORD_LIST *temp_list;
+ char *savecmd;
+ sh_wassign_func_t *assign_func;
+ int is_special_builtin, is_builtin_or_func, tint;
+
+ /* If the remainder of the words expand to nothing, Posix.2 requires
+ that the variable and environment assignments affect the shell's
+ environment (do_word_assignment). */
+ assign_func = is_nullcmd ? do_word_assignment : assign_in_env;
+ tempenv_assign_error = 0;
+
+ is_builtin_or_func = command && (find_shell_builtin (command) || find_function (command));
+ /* Posix says that special builtins exit if a variable assignment error
+ occurs in an assignment preceding it. (XXX - this is old -- current Posix
+ says that any variable assignment error causes a non-interactive shell
+ to exit. See the STRICT_POSIX checks below. */
+ is_special_builtin = posixly_correct && command && find_special_builtin (command);
+
+ savecmd = this_command_name;
+ for (temp_list = varlist; temp_list; temp_list = temp_list->next)
+ {
+ this_command_name = (char *)NULL;
+ assigning_in_environment = is_nullcmd == 0;
+ tint = (*assign_func) (temp_list->word, is_builtin_or_func);
+ assigning_in_environment = 0;
+ this_command_name = savecmd;
+
+ /* Variable assignment errors in non-interactive shells running
+ in posix mode cause the shell to exit. */
+ if (tint == 0)
+ {
+ if (is_nullcmd) /* assignment statement */
+ {
+ last_command_exit_value = EXECUTION_FAILURE;
+#if defined (STRICT_POSIX)
+ if (posixly_correct && interactive_shell == 0)
+#else
+ if (posixly_correct && interactive_shell == 0 && executing_command_builtin == 0)
+#endif
+ exp_jump_to_top_level (FORCE_EOF);
+ else
+ exp_jump_to_top_level (DISCARD);
+ }
+ /* In posix mode, assignment errors in the temporary environment
+ cause a non-interactive shell executing a special builtin to
+ exit and a non-interactive shell to otherwise jump back to the
+ top level. This is what POSIX says to do for variable assignment
+ errors, and POSIX says errors in assigning to the temporary
+ environment are treated as variable assignment errors.
+ (XXX - this is not what current POSIX says - look at the
+ STRICT_POSIX defines. */
+ else if (posixly_correct)
+ {
+ last_command_exit_value = EXECUTION_FAILURE;
+#if defined (STRICT_POSIX)
+ exp_jump_to_top_level ((interactive_shell == 0) ? FORCE_EOF : DISCARD);
+#else
+ if (interactive_shell == 0 && is_special_builtin)
+ exp_jump_to_top_level (FORCE_EOF);
+ else if (interactive_shell == 0)
+ exp_jump_to_top_level (DISCARD); /* XXX - maybe change later */
+ else
+ exp_jump_to_top_level (DISCARD);
+#endif
+ }
+ else
+ tempenv_assign_error++;
+ }
+ }
+ return (tempenv_assign_error);
+}
+
/* The workhorse for expand_words () and expand_words_no_vars ().
First arg is LIST, a WORD_LIST of words.
Second arg EFLAGS is a flags word controlling which expansions are
@@ -11956,8 +12946,6 @@ expand_word_list_internal (list, eflags)
int eflags;
{
WORD_LIST *new_list, *temp_list;
- int tint;
- char *savecmd;
tempenv_assign_error = 0;
if (list == 0)
@@ -11970,30 +12958,11 @@ expand_word_list_internal (list, eflags)
if (new_list == 0)
{
if (subst_assign_varlist)
- {
- /* All the words were variable assignments, so they are placed
- into the shell's environment. */
- for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next)
- {
- savecmd = this_command_name;
- this_command_name = (char *)NULL; /* no arithmetic errors */
- tint = do_word_assignment (temp_list->word, 0);
- this_command_name = savecmd;
- /* Variable assignment errors in non-interactive shells
- running in Posix.2 mode cause the shell to exit, unless
- they are being run by the `command' builtin. */
- if (tint == 0)
- {
- last_command_exit_value = EXECUTION_FAILURE;
- if (interactive_shell == 0 && posixly_correct && executing_command_builtin == 0)
- exp_jump_to_top_level (FORCE_EOF);
- else
- exp_jump_to_top_level (DISCARD);
- }
- }
- dispose_words (subst_assign_varlist);
- subst_assign_varlist = (WORD_LIST *)NULL;
- }
+ do_assignment_statements (subst_assign_varlist, (char *)NULL, 1);
+
+ dispose_words (subst_assign_varlist);
+ subst_assign_varlist = (WORD_LIST *)NULL;
+
return ((WORD_LIST *)NULL);
}
}
@@ -12027,49 +12996,7 @@ expand_word_list_internal (list, eflags)
if ((eflags & WEXP_VARASSIGN) && subst_assign_varlist)
{
- sh_wassign_func_t *assign_func;
- int is_special_builtin, is_builtin_or_func;
-
- /* If the remainder of the words expand to nothing, Posix.2 requires
- that the variable and environment assignments affect the shell's
- environment. */
- assign_func = new_list ? assign_in_env : do_word_assignment;
- tempenv_assign_error = 0;
-
- is_builtin_or_func = (new_list && new_list->word && (find_shell_builtin (new_list->word->word) || find_function (new_list->word->word)));
- /* Posix says that special builtins exit if a variable assignment error
- occurs in an assignment preceding it. */
- is_special_builtin = (posixly_correct && new_list && new_list->word && find_special_builtin (new_list->word->word));
-
- for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next)
- {
- savecmd = this_command_name;
- this_command_name = (char *)NULL;
- assigning_in_environment = (assign_func == assign_in_env);
- tint = (*assign_func) (temp_list->word, is_builtin_or_func);
- assigning_in_environment = 0;
- this_command_name = savecmd;
- /* Variable assignment errors in non-interactive shells running
- in Posix.2 mode cause the shell to exit. */
- if (tint == 0)
- {
- if (assign_func == do_word_assignment)
- {
- last_command_exit_value = EXECUTION_FAILURE;
- if (interactive_shell == 0 && posixly_correct)
- exp_jump_to_top_level (FORCE_EOF);
- else
- exp_jump_to_top_level (DISCARD);
- }
- else if (interactive_shell == 0 && is_special_builtin)
- {
- last_command_exit_value = EXECUTION_FAILURE;
- exp_jump_to_top_level (FORCE_EOF);
- }
- else
- tempenv_assign_error++;
- }
- }
+ do_assignment_statements (subst_assign_varlist, (new_list && new_list->word) ? new_list->word->word : (char *)NULL, new_list == 0);
dispose_words (subst_assign_varlist);
subst_assign_varlist = (WORD_LIST *)NULL;
diff --git a/subst.h b/subst.h
index 13476515..28cc9203 100644
--- a/subst.h
+++ b/subst.h
@@ -1,6 +1,6 @@
/* subst.h -- Names of externally visible functions in subst.c. */
-/* Copyright (C) 1993-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -55,6 +55,8 @@
#define ASS_NOEVAL 0x0100 /* don't evaluate value as expression */
#define ASS_NOLONGJMP 0x0200 /* don't longjmp on fatal assignment error */
#define ASS_NOINVIS 0x0400 /* don't resolve local invisible variables */
+#define ASS_ALLOWALLSUB 0x0800 /* allow * and @ as associative array keys */
+#define ASS_ONEWORD 0x1000 /* don't check array subscripts, assume higher level has done that */
/* Flags for the string extraction functions. */
#define SX_NOALLOC 0x0001 /* just skip; don't return substring */
@@ -69,6 +71,7 @@
#define SX_WORD 0x0200 /* extracting word in ${param op word} */
#define SX_COMPLETE 0x0400 /* extracting word for completion */
#define SX_STRIPDQ 0x0800 /* strip double quotes when extracting double-quoted string */
+#define SX_NOERROR 0x1000 /* don't print parser error messages */
/* Remove backslashes which are quoting backquotes from STRING. Modifies
STRING, and returns a pointer to it. */
@@ -143,7 +146,7 @@ extern int do_word_assignment PARAMS((WORD_DESC *, int));
of space allocated to TARGET. SOURCE can be NULL, in which
case nothing happens. Gets rid of SOURCE by free ()ing it.
Returns TARGET in case the location has changed. */
-extern char *sub_append_string PARAMS((char *, char *, int *, size_t *));
+extern char *sub_append_string PARAMS((char *, char *, size_t *, size_t *));
/* Append the textual representation of NUMBER to TARGET.
INDEX and SIZE are as in SUB_APPEND_STRING. */
@@ -183,10 +186,14 @@ extern WORD_LIST *expand_string PARAMS((char *, int));
extern char *expand_string_to_string PARAMS((char *, int));
extern char *expand_string_unsplit_to_string PARAMS((char *, int));
extern char *expand_assignment_string_to_string PARAMS((char *, int));
+extern char *expand_subscript_string PARAMS((char *, int));
/* Expand an arithmetic expression string */
extern char *expand_arith_string PARAMS((char *, int));
+/* Expand $'...' and $"..." in a string for code paths that do not. */
+extern char *expand_string_dollar_quote PARAMS((char *, int));
+
/* De-quote quoted characters in STRING. */
extern char *dequote_string PARAMS((char *));
@@ -308,6 +315,7 @@ extern char *cond_expand_word PARAMS((WORD_DESC *, int));
#define SD_COMPLETE 0x100 /* skip_to_delim during completion */
#define SD_HISTEXP 0x200 /* skip_to_delim during history expansion */
#define SD_ARITHEXP 0x400 /* skip_to_delim during arithmetic expansion */
+#define SD_NOERROR 0x800 /* don't print error messages */
extern int skip_to_delim PARAMS((char *, int, char *, int));
@@ -318,7 +326,7 @@ extern int skip_to_histexp PARAMS((char *, int, char *, int));
#if defined (READLINE)
extern int char_is_quoted PARAMS((char *, int));
extern int unclosed_pair PARAMS((char *, int, char *));
-extern WORD_LIST *split_at_delims PARAMS((char *, int, char *, int, int, int *, int *));
+extern WORD_LIST *split_at_delims PARAMS((char *, int, const char *, int, int, int *, int *));
#endif
/* Variables used to keep track of the characters in IFS. */
diff --git a/support/Makefile.in b/support/Makefile.in
index 0289e0ac..f7de7ac2 100644
--- a/support/Makefile.in
+++ b/support/Makefile.in
@@ -9,7 +9,7 @@
#
# Currently only man2html is built
#
-# Copyright (C) 1998-2018 Free Software Foundation, Inc.
+# Copyright (C) 1998-2021 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -46,9 +46,11 @@ PROFILE_FLAGS = @PROFILE_FLAGS@
CFLAGS = @CFLAGS@
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
+BASE_CFLAGS_FOR_BUILD = @BASE_CFLAGS_FOR_BUILD@
CPPFLAGS = @CPPFLAGS@
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
LOCAL_CFLAGS = @LOCAL_CFLAGS@
+STYLE_CFLAGS = @STYLE_CFLAGS@
DEFS = @DEFS@
LOCAL_DEFS = @LOCAL_DEFS@
@@ -56,13 +58,13 @@ LIBS = @LIBS@
LIBS_FOR_BUILD = ${LIBS} # XXX
LOCAL_LDFLAGS = @LOCAL_LDFLAGS@
-LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS) $(CFLAGS)
+LDFLAGS = @LDFLAGS@ $(LOCAL_LDFLAGS)
LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ $(LOCAL_LDFLAGS) $(CFLAGS_FOR_BUILD)
INCLUDES = -I${BUILD_DIR} -I${topdir}
BASE_CCFLAGS = ${PROFILE_FLAGS} $(DEFS) $(LOCAL_DEFS) $(SYSTEM_FLAGS) \
- ${INCLUDES} $(LOCAL_CFLAGS)
+ ${INCLUDES} $(STYLE_CFLAGS) $(LOCAL_CFLAGS)
CCFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(CFLAGS)
CCFLAGS_FOR_BUILD = $(BASE_CCFLAGS) $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD)
@@ -77,7 +79,7 @@ OBJ1 = man2html.o
all: man2html$(EXEEXT)
man2html$(EXEEXT): $(OBJ1)
- $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) $(OBJ1) -o $@ ${LIBS_FOR_BUILD}
+ $(CC_FOR_BUILD) $(LDFLAGS_FOR_BUILD) $(OBJ1) -o $@ ${LIBS_FOR_BUILD}
clean:
$(RM) man2html$(EXEEXT) $(OBJ1)
diff --git a/support/bashbug.sh b/support/bashbug.sh
index 01e9f014..940f7065 100644
--- a/support/bashbug.sh
+++ b/support/bashbug.sh
@@ -7,7 +7,7 @@
# chet@cwru.edu and, optionally, to bash-testers@cwru.edu.
# Other versions send mail to bug-bash@gnu.org.
#
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/support/bashbug.sh.in b/support/bashbug.sh.in
index d4b48c90..77e14e56 100644
--- a/support/bashbug.sh.in
+++ b/support/bashbug.sh.in
@@ -4,10 +4,10 @@
#
# The bug address depends on the release status of the shell. Versions
# with status `devel', `alpha', `beta', or `rc' mail bug reports to
-# chet@cwru.edu and, optionally, to bash-testers@cwru.edu.
+# chet.ramey@case.edu and, optionally, to bash-testers@cwru.edu.
# Other versions send mail to bug-bash@gnu.org.
#
-# Copyright (C) 1996-2020 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -102,7 +102,7 @@ esac
BASHTESTERS="bash-testers@cwru.edu"
case "$RELSTATUS" in
-alpha*|beta*|devel*|rc*) BUGBASH=chet@cwru.edu ;;
+alpha*|beta*|devel*|rc*) BUGBASH=chet.ramey@case.edu ;;
*) BUGBASH=bug-bash@gnu.org ;;
esac
@@ -132,6 +132,10 @@ if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then
DEFEDITOR=emacs
elif [ -x /usr/bin/xemacs ]; then
DEFEDITOR=xemacs
+ elif [ -x /usr/bin/vim; then
+ DEFEDITOR=vim
+ elif [ -x /usr/bin/gvim; then
+ DEFEDITOR=gvim
elif [ -x /usr/bin/nano ]; then
DEFEDITOR=nano
elif [ -x /usr/contrib/bin/jove ]; then
diff --git a/support/bashversion.c b/support/bashversion.c
index 4f86b134..ad02d46e 100644
--- a/support/bashversion.c
+++ b/support/bashversion.c
@@ -1,6 +1,6 @@
/* bashversion.c -- Display bash version information. */
-/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/support/config.guess b/support/config.guess
index 0fc11edb..7f76b622 100755..100644
--- a/support/config.guess
+++ b/support/config.guess
@@ -1,12 +1,14 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2022 Free Software Foundation, Inc.
-timestamp='2020-11-07'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2022-01-09'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -27,12 +29,20 @@ timestamp='2020-11-07'
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
#
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
#
# Please send patches to <config-patches@gnu.org>.
-me=$(echo "$0" | sed -e 's,.*/,,')
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION]
@@ -50,7 +60,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2020 Free Software Foundation, Inc.
+Copyright 1992-2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -84,6 +94,9 @@ if test $# != 0; then
exit 1
fi
+# Just in case it came from the environment.
+GUESS=
+
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
@@ -102,8 +115,8 @@ set_cc_for_build() {
# prevent multiple calls if $tmp is already set
test "$tmp" && return 0
: "${TMPDIR=/tmp}"
- # shellcheck disable=SC2039
- { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
+ # shellcheck disable=SC2039,SC3028
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
@@ -112,7 +125,7 @@ set_cc_for_build() {
,,) echo "int x;" > "$dummy.c"
for driver in cc gcc c89 c99 ; do
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
- CC_FOR_BUILD="$driver"
+ CC_FOR_BUILD=$driver
break
fi
done
@@ -131,16 +144,14 @@ if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
-UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
-UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
-UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
-UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "$UNAME_SYSTEM" in
+case $UNAME_SYSTEM in
Linux|GNU|GNU/*)
- # If the system lacks a compiler, then just pick glibc.
- # We could probably try harder.
- LIBC=gnu
+ LIBC=unknown
set_cc_for_build
cat <<-EOF > "$dummy.c"
@@ -149,22 +160,37 @@ Linux|GNU|GNU/*)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
+ #elif defined(__GLIBC__)
+ LIBC=gnu
#else
#include <stdarg.h>
+ /* First heuristic to detect musl libc. */
#ifdef __DEFINED_va_list
LIBC=musl
- #else
- LIBC=gnu
#endif
#endif
EOF
- eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
+ cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ eval "$cc_set_libc"
+
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
+ fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -176,12 +202,11 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
#
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
- sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
- "/sbin/$sysctl" 2>/dev/null || \
- "/usr/sbin/$sysctl" 2>/dev/null || \
- echo unknown))
- case "$UNAME_MACHINE_ARCH" in
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ echo unknown)`
+ case $UNAME_MACHINE_ARCH in
aarch64eb) machine=aarch64_be-unknown ;;
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
@@ -189,15 +214,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
earmv*)
- arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
- endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
- machine="${arch}${endian}"-unknown
+ arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine=${arch}${endian}-unknown
;;
- *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+ *) machine=$UNAME_MACHINE_ARCH-unknown ;;
esac
# The Operating System including object format, if it has switched
# to ELF recently (or will in the future) and ABI.
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
earm*)
os=netbsdelf
;;
@@ -218,10 +243,10 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
;;
esac
# Determine ABI tags.
- case "$UNAME_MACHINE_ARCH" in
+ case $UNAME_MACHINE_ARCH in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
- abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
+ abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
;;
esac
# The OS release
@@ -229,76 +254,82 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# thus, need a distinct triplet. However, they do not need
# kernel version information, so it can be replaced with a
# suitable tag, in the style of linux-gnu.
- case "$UNAME_VERSION" in
+ case $UNAME_VERSION in
Debian*)
release='-gnu'
;;
*)
- release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
+ release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
- echo "$machine-${os}${release}${abi-}"
- exit ;;
+ GUESS=$machine-${os}${release}${abi-}
+ ;;
*:Bitrig:*:*)
- UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
- echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
- exit ;;
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+ ;;
*:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
- echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
- exit ;;
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+ ;;
+ *:SecBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+ ;;
*:LibertyBSD:*:*)
- UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
- echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
- exit ;;
+ UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+ ;;
*:MidnightBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+ ;;
*:ekkoBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+ ;;
*:SolidBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+ ;;
*:OS108:*:*)
- echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+ ;;
macppc:MirBSD:*:*)
- echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:MirBSD:*:*)
- echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+ ;;
*:Sortix:*:*)
- echo "$UNAME_MACHINE"-unknown-sortix
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sortix
+ ;;
*:Twizzler:*:*)
- echo "$UNAME_MACHINE"-unknown-twizzler
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-twizzler
+ ;;
*:Redox:*:*)
- echo "$UNAME_MACHINE"-unknown-redox
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-redox
+ ;;
mips:OSF1:*.*)
- echo mips-dec-osf1
- exit ;;
+ GUESS=mips-dec-osf1
+ ;;
alpha:OSF1:*:*)
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ trap '' 0
case $UNAME_RELEASE in
*4.0)
- UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
- UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
# OSF/1 and Tru64 systems produced since 1995. I hope that
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1)
- case "$ALPHA_CPU_TYPE" in
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case $ALPHA_CPU_TYPE in
"EV4 (21064)")
UNAME_MACHINE=alpha ;;
"EV4.5 (21064)")
@@ -335,68 +366,69 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
- # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
- exitcode=$?
- trap '' 0
- exit $exitcode ;;
+ OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+ ;;
Amiga*:UNIX_System_V:4.0:*)
- echo m68k-unknown-sysv4
- exit ;;
+ GUESS=m68k-unknown-sysv4
+ ;;
*:[Aa]miga[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-amigaos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-amigaos
+ ;;
*:[Mm]orph[Oo][Ss]:*:*)
- echo "$UNAME_MACHINE"-unknown-morphos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-morphos
+ ;;
*:OS/390:*:*)
- echo i370-ibm-openedition
- exit ;;
+ GUESS=i370-ibm-openedition
+ ;;
*:z/VM:*:*)
- echo s390-ibm-zvmoe
- exit ;;
+ GUESS=s390-ibm-zvmoe
+ ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
- exit ;;
+ GUESS=powerpc-ibm-os400
+ ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
- echo arm-acorn-riscix"$UNAME_RELEASE"
- exit ;;
+ GUESS=arm-acorn-riscix$UNAME_RELEASE
+ ;;
arm*:riscos:*:*|arm*:RISCOS:*:*)
- echo arm-unknown-riscos
- exit ;;
+ GUESS=arm-unknown-riscos
+ ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
- echo hppa1.1-hitachi-hiuxmpp
- exit ;;
+ GUESS=hppa1.1-hitachi-hiuxmpp
+ ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "$( (/bin/universe) 2>/dev/null)" = att ; then
- echo pyramid-pyramid-sysv3
- else
- echo pyramid-pyramid-bsd
- fi
- exit ;;
+ case `(/bin/universe) 2>/dev/null` in
+ att) GUESS=pyramid-pyramid-sysv3 ;;
+ *) GUESS=pyramid-pyramid-bsd ;;
+ esac
+ ;;
NILE*:*:*:dcosx)
- echo pyramid-pyramid-svr4
- exit ;;
+ GUESS=pyramid-pyramid-svr4
+ ;;
DRS?6000:unix:4.0:6*)
- echo sparc-icl-nx6
- exit ;;
+ GUESS=sparc-icl-nx6
+ ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case $(/usr/bin/uname -p) in
- sparc) echo sparc-icl-nx7; exit ;;
- esac ;;
+ case `/usr/bin/uname -p` in
+ sparc) GUESS=sparc-icl-nx7 ;;
+ esac
+ ;;
s390x:SunOS:*:*)
- echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+ ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-hal-solaris2$SUN_REL
+ ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris2$SUN_REL
+ ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-pc-auroraux$UNAME_RELEASE
+ ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
set_cc_for_build
SUN_ARCH=i386
@@ -405,47 +437,50 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# This test works for both compilers.
if test "$CC_FOR_BUILD" != no_compiler_found; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
SUN_ARCH=x86_64
fi
fi
- echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+ ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=sparc-sun-solaris3$SUN_REL
+ ;;
sun4*:SunOS:*:*)
- case "$(/usr/bin/arch -k)" in
+ case `/usr/bin/arch -k` in
Series*|S4*)
- UNAME_RELEASE=$(uname -v)
+ UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+ GUESS=sparc-sun-sunos$SUN_REL
+ ;;
sun3*:SunOS:*:*)
- echo m68k-sun-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
+ ;;
sun*:*:4.2BSD:*)
- UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
- case "$(/bin/arch)" in
+ case `/bin/arch` in
sun3)
- echo m68k-sun-sunos"$UNAME_RELEASE"
+ GUESS=m68k-sun-sunos$UNAME_RELEASE
;;
sun4)
- echo sparc-sun-sunos"$UNAME_RELEASE"
+ GUESS=sparc-sun-sunos$UNAME_RELEASE
;;
esac
- exit ;;
+ ;;
aushp:SunOS:*:*)
- echo sparc-auspex-sunos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-auspex-sunos$UNAME_RELEASE
+ ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
@@ -455,41 +490,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-atari-mint$UNAME_RELEASE
+ ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-milan-mint$UNAME_RELEASE
+ ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-hades-mint$UNAME_RELEASE
+ ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-mint$UNAME_RELEASE
+ ;;
m68k:machten:*:*)
- echo m68k-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-machten$UNAME_RELEASE
+ ;;
powerpc:machten:*:*)
- echo powerpc-apple-machten"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-machten$UNAME_RELEASE
+ ;;
RISC*:Mach:*:*)
- echo mips-dec-mach_bsd4.3
- exit ;;
+ GUESS=mips-dec-mach_bsd4.3
+ ;;
RISC*:ULTRIX:*:*)
- echo mips-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dec-ultrix$UNAME_RELEASE
+ ;;
VAX*:ULTRIX*:*:*)
- echo vax-dec-ultrix"$UNAME_RELEASE"
- exit ;;
+ GUESS=vax-dec-ultrix$UNAME_RELEASE
+ ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
- echo clipper-intergraph-clix"$UNAME_RELEASE"
- exit ;;
+ GUESS=clipper-intergraph-clix$UNAME_RELEASE
+ ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
@@ -514,78 +549,79 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
}
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
- dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
- SYSTEM_NAME=$("$dummy" "$dummyarg") &&
+ dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo mips-mips-riscos"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-mips-riscos$UNAME_RELEASE
+ ;;
Motorola:PowerMAX_OS:*:*)
- echo powerpc-motorola-powermax
- exit ;;
+ GUESS=powerpc-motorola-powermax
+ ;;
Motorola:*:4.3:PL8-*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
- echo powerpc-harris-powermax
- exit ;;
+ GUESS=powerpc-harris-powermax
+ ;;
Night_Hawk:Power_UNIX:*:*)
- echo powerpc-harris-powerunix
- exit ;;
+ GUESS=powerpc-harris-powerunix
+ ;;
m88k:CX/UX:7*:*)
- echo m88k-harris-cxux7
- exit ;;
+ GUESS=m88k-harris-cxux7
+ ;;
m88k:*:4*:R4*)
- echo m88k-motorola-sysv4
- exit ;;
+ GUESS=m88k-motorola-sysv4
+ ;;
m88k:*:3*:R3*)
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=$(/usr/bin/uname -p)
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
then
if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
test "$TARGET_BINARY_INTERFACE"x = x
then
- echo m88k-dg-dgux"$UNAME_RELEASE"
+ GUESS=m88k-dg-dgux$UNAME_RELEASE
else
- echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+ GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
fi
else
- echo i586-dg-dgux"$UNAME_RELEASE"
+ GUESS=i586-dg-dgux$UNAME_RELEASE
fi
- exit ;;
+ ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
- echo m88k-dolphin-sysv3
- exit ;;
+ GUESS=m88k-dolphin-sysv3
+ ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
- echo m88k-motorola-sysv3
- exit ;;
+ GUESS=m88k-motorola-sysv3
+ ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
- echo m88k-tektronix-sysv3
- exit ;;
+ GUESS=m88k-tektronix-sysv3
+ ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
- echo m68k-tektronix-bsd
- exit ;;
+ GUESS=m68k-tektronix-bsd
+ ;;
*:IRIX*:*:*)
- echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
- exit ;;
+ IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+ GUESS=mips-sgi-irix$IRIX_REL
+ ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
- echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX '
+ GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
- echo i386-ibm-aix
- exit ;;
+ GUESS=i386-ibm-aix
+ ;;
ia64:AIX:*:*)
if test -x /usr/bin/oslevel ; then
- IBM_REV=$(/usr/bin/oslevel)
+ IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
- echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+ ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
set_cc_for_build
@@ -600,68 +636,68 @@ EOF
exit(0);
}
EOF
- if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
then
- echo "$SYSTEM_NAME"
+ GUESS=$SYSTEM_NAME
else
- echo rs6000-ibm-aix3.2.5
+ GUESS=rs6000-ibm-aix3.2.5
fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
- echo rs6000-ibm-aix3.2.4
+ GUESS=rs6000-ibm-aix3.2.4
else
- echo rs6000-ibm-aix3.2
+ GUESS=rs6000-ibm-aix3.2
fi
- exit ;;
+ ;;
*:AIX:*:[4567])
- IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
if test -x /usr/bin/lslpp ; then
- IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
- awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
else
- IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+ IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
fi
- echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
- exit ;;
+ GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+ ;;
*:AIX:*:*)
- echo rs6000-ibm-aix
- exit ;;
+ GUESS=rs6000-ibm-aix
+ ;;
ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
- echo romp-ibm-bsd4.4
- exit ;;
+ GUESS=romp-ibm-bsd4.4
+ ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
- echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to
- exit ;; # report: romp-ibm BSD 4.3
+ GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to
+ ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
- echo rs6000-bull-bosx
- exit ;;
+ GUESS=rs6000-bull-bosx
+ ;;
DPX/2?00:B.O.S.:*:*)
- echo m68k-bull-sysv3
- exit ;;
+ GUESS=m68k-bull-sysv3
+ ;;
9000/[34]??:4.3bsd:1.*:*)
- echo m68k-hp-bsd
- exit ;;
+ GUESS=m68k-hp-bsd
+ ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
- echo m68k-hp-bsd4.4
- exit ;;
+ GUESS=m68k-hp-bsd4.4
+ ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
- case "$UNAME_MACHINE" in
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ case $UNAME_MACHINE in
9000/31?) HP_ARCH=m68000 ;;
9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
if test -x /usr/bin/getconf; then
- sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
- sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
- case "$sc_cpu_version" in
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case $sc_cpu_version in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "$sc_kernel_bits" in
+ case $sc_kernel_bits in
32) HP_ARCH=hppa2.0n ;;
64) HP_ARCH=hppa2.0w ;;
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
@@ -703,7 +739,7 @@ EOF
exit (0);
}
EOF
- (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
@@ -728,12 +764,12 @@ EOF
HP_ARCH=hppa64
fi
fi
- echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
- exit ;;
+ GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+ ;;
ia64:HP-UX:*:*)
- HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
- echo ia64-hp-hpux"$HPUX_REV"
- exit ;;
+ HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+ GUESS=ia64-hp-hpux$HPUX_REV
+ ;;
3050*:HI-UX:*:*)
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
@@ -761,38 +797,38 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
- echo unknown-hitachi-hiuxwe2
- exit ;;
+ GUESS=unknown-hitachi-hiuxwe2
+ ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
- echo hppa1.1-hp-bsd
- exit ;;
+ GUESS=hppa1.1-hp-bsd
+ ;;
9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit ;;
+ GUESS=hppa1.0-hp-bsd
+ ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit ;;
+ GUESS=hppa1.0-hp-mpeix
+ ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
- echo hppa1.1-hp-osf
- exit ;;
+ GUESS=hppa1.1-hp-osf
+ ;;
hp8??:OSF1:*:*)
- echo hppa1.0-hp-osf
- exit ;;
+ GUESS=hppa1.0-hp-osf
+ ;;
i*86:OSF1:*:*)
if test -x /usr/sbin/sysversion ; then
- echo "$UNAME_MACHINE"-unknown-osf1mk
+ GUESS=$UNAME_MACHINE-unknown-osf1mk
else
- echo "$UNAME_MACHINE"-unknown-osf1
+ GUESS=$UNAME_MACHINE-unknown-osf1
fi
- exit ;;
+ ;;
parisc*:Lites*:*:*)
- echo hppa1.1-hp-lites
- exit ;;
+ GUESS=hppa1.1-hp-lites
+ ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
- echo c1-convex-bsd
- exit ;;
+ GUESS=c1-convex-bsd
+ ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
@@ -800,17 +836,18 @@ EOF
fi
exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
- echo c34-convex-bsd
- exit ;;
+ GUESS=c34-convex-bsd
+ ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
- echo c38-convex-bsd
- exit ;;
+ GUESS=c38-convex-bsd
+ ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
- echo c4-convex-bsd
- exit ;;
+ GUESS=c4-convex-bsd
+ ;;
CRAY*Y-MP:*:*:*)
- echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=ymp-cray-unicos$CRAY_REL
+ ;;
CRAY*[A-Z]90:*:*:*)
echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
@@ -818,114 +855,129 @@ EOF
-e 's/\.[^.]*$/.X/'
exit ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=t90-cray-unicos$CRAY_REL
+ ;;
CRAY*T3E:*:*:*)
- echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=alphaev5-cray-unicosmk$CRAY_REL
+ ;;
CRAY*SV1:*:*:*)
- echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=sv1-cray-unicos$CRAY_REL
+ ;;
*:UNICOS/mp:*:*)
- echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
- exit ;;
+ CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+ GUESS=craynv-cray-unicosmp$CRAY_REL
+ ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
- FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
- FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
+ GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
- FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+ FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+ GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+ ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
- echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+ ;;
sparc*:BSD/OS:*:*)
- echo sparc-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+ ;;
*:BSD/OS:*:*)
- echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+ ;;
arm:FreeBSD:*:*)
- UNAME_PROCESSOR=$(uname -p)
+ UNAME_PROCESSOR=`uname -p`
set_cc_for_build
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
else
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
fi
- exit ;;
+ ;;
*:FreeBSD:*:*)
- UNAME_PROCESSOR=$(/usr/bin/uname -p)
- case "$UNAME_PROCESSOR" in
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case $UNAME_PROCESSOR in
amd64)
UNAME_PROCESSOR=x86_64 ;;
i386)
UNAME_PROCESSOR=i586 ;;
esac
- echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
- exit ;;
+ FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+ ;;
i*:CYGWIN*:*)
- echo "$UNAME_MACHINE"-pc-cygwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-cygwin
+ ;;
*:MINGW64*:*)
- echo "$UNAME_MACHINE"-pc-mingw64
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw64
+ ;;
*:MINGW*:*)
- echo "$UNAME_MACHINE"-pc-mingw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-mingw32
+ ;;
*:MSYS*:*)
- echo "$UNAME_MACHINE"-pc-msys
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msys
+ ;;
i*:PW*:*)
- echo "$UNAME_MACHINE"-pc-pw32
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-pw32
+ ;;
+ *:SerenityOS:*:*)
+ GUESS=$UNAME_MACHINE-pc-serenity
+ ;;
*:Interix*:*)
- case "$UNAME_MACHINE" in
+ case $UNAME_MACHINE in
x86)
- echo i586-pc-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=i586-pc-interix$UNAME_RELEASE
+ ;;
authenticamd | genuineintel | EM64T)
- echo x86_64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=x86_64-unknown-interix$UNAME_RELEASE
+ ;;
IA64)
- echo ia64-unknown-interix"$UNAME_RELEASE"
- exit ;;
+ GUESS=ia64-unknown-interix$UNAME_RELEASE
+ ;;
esac ;;
i*:UWIN*:*)
- echo "$UNAME_MACHINE"-pc-uwin
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-uwin
+ ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
- echo x86_64-pc-cygwin
- exit ;;
+ GUESS=x86_64-pc-cygwin
+ ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
- exit ;;
+ SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+ GUESS=powerpcle-unknown-solaris2$SUN_REL
+ ;;
*:GNU:*:*)
# the GNU system
- echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
- exit ;;
+ GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+ GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+ ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
- exit ;;
+ GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+ GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+ ;;
*:Minix:*:*)
- echo "$UNAME_MACHINE"-unknown-minix
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-minix
+ ;;
aarch64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
aarch64_be:Linux:*:*)
UNAME_MACHINE=aarch64_be
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
alpha:Linux:*:*)
- case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -936,60 +988,63 @@ EOF
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
- arc:Linux:*:* | arceb:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
arm*:Linux:*:*)
set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
else
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+ GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
fi
fi
- exit ;;
+ ;;
avr32*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
cris:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
crisv32:Linux:*:*)
- echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+ ;;
e2k:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
frv:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
hexagon:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:Linux:*:*)
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+ ;;
ia64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
k1om:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m32r*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
m68*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
mips:Linux:*:* | mips64:Linux:*:*)
set_cc_for_build
IS_GLIBC=0
@@ -1034,65 +1089,66 @@ EOF
#endif
#endif
EOF
- eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
+ cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+ eval "$cc_set_vars"
test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
openrisc*:Linux:*:*)
- echo or1k-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=or1k-unknown-linux-$LIBC
+ ;;
or32:Linux:*:* | or1k*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=sparc-unknown-linux-$LIBC
+ ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=hppa64-unknown-linux-$LIBC
+ ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
- case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
- PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
- PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
- *) echo hppa-unknown-linux-"$LIBC" ;;
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+ PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+ *) GUESS=hppa-unknown-linux-$LIBC ;;
esac
- exit ;;
+ ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64-unknown-linux-$LIBC
+ ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc-unknown-linux-$LIBC
+ ;;
ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpc64le-unknown-linux-$LIBC
+ ;;
ppcle:Linux:*:*)
- echo powerpcle-unknown-linux-"$LIBC"
- exit ;;
- riscv32:Linux:*:* | riscv64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=powerpcle-unknown-linux-$LIBC
+ ;;
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+ ;;
sh64*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sh*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
tile*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
vax:Linux:*:*)
- echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+ ;;
x86_64:Linux:*:*)
set_cc_for_build
LIBCABI=$LIBC
@@ -1101,71 +1157,71 @@ EOF
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_X32 >/dev/null
then
- LIBCABI="$LIBC"x32
+ LIBCABI=${LIBC}x32
fi
fi
- echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI
+ ;;
xtensa*:Linux:*:*)
- echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+ ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
- echo i386-sequent-sysv4
- exit ;;
+ GUESS=i386-sequent-sysv4
+ ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
# I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
- echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+ ;;
i*86:OS/2:*:*)
# If we were able to find `uname', then EMX Unix compatibility
# is probably installed.
- echo "$UNAME_MACHINE"-pc-os2-emx
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-os2-emx
+ ;;
i*86:XTS-300:*:STOP)
- echo "$UNAME_MACHINE"-unknown-stop
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-stop
+ ;;
i*86:atheos:*:*)
- echo "$UNAME_MACHINE"-unknown-atheos
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-atheos
+ ;;
i*86:syllable:*:*)
- echo "$UNAME_MACHINE"-pc-syllable
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-syllable
+ ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
- echo i386-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=i386-unknown-lynxos$UNAME_RELEASE
+ ;;
i*86:*DOS:*:*)
- echo "$UNAME_MACHINE"-pc-msdosdjgpp
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+ ;;
i*86:*:4.*:*)
- UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
+ UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
fi
- exit ;;
+ ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
- case $(/bin/uname -X | grep "^Machine") in
+ case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
- UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
- echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ GUESS=$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
@@ -1173,11 +1229,11 @@ EOF
&& UNAME_MACHINE=i686
(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
- echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+ GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
else
- echo "$UNAME_MACHINE"-pc-sysv32
+ GUESS=$UNAME_MACHINE-pc-sysv32
fi
- exit ;;
+ ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -1185,37 +1241,37 @@ EOF
# Note: whatever this is, it MUST be the same as what config.sub
# prints for the "djgpp" host, or else GDB configure will decide that
# this is a cross-build.
- echo i586-pc-msdosdjgpp
- exit ;;
+ GUESS=i586-pc-msdosdjgpp
+ ;;
Intel:Mach:3*:*)
- echo i386-pc-mach3
- exit ;;
+ GUESS=i386-pc-mach3
+ ;;
paragon:*:*:*)
- echo i860-intel-osf1
- exit ;;
+ GUESS=i860-intel-osf1
+ ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
- echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+ GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
- echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4
+ GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4
fi
- exit ;;
+ ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
- echo m68010-convergent-sysv
- exit ;;
+ GUESS=m68010-convergent-sysv
+ ;;
mc68k:UNIX:SYSTEM5:3.51m)
- echo m68k-convergent-sysv
- exit ;;
+ GUESS=m68k-convergent-sysv
+ ;;
M680?0:D-NIX:5.3:*)
- echo m68k-diab-dnix
- exit ;;
+ GUESS=m68k-diab-dnix
+ ;;
M68*:*:R3V[5678]*:*)
test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
- && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1226,7 +1282,7 @@ EOF
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
- && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1234,118 +1290,118 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
&& { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- echo m68k-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+ ;;
mc68030:UNIX_System_V:4.*:*)
- echo m68k-atari-sysv4
- exit ;;
+ GUESS=m68k-atari-sysv4
+ ;;
TSUNAMI:LynxOS:2.*:*)
- echo sparc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+ ;;
rs6000:LynxOS:2.*:*)
- echo rs6000-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+ ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
- echo powerpc-unknown-lynxos"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+ ;;
SM[BE]S:UNIX_SV:*:*)
- echo mips-dde-sysv"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-dde-sysv$UNAME_RELEASE
+ ;;
RM*:ReliantUNIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
RM*:SINIX-*:*:*)
- echo mips-sni-sysv4
- exit ;;
+ GUESS=mips-sni-sysv4
+ ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=$( (uname -p) 2>/dev/null)
- echo "$UNAME_MACHINE"-sni-sysv4
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ GUESS=$UNAME_MACHINE-sni-sysv4
else
- echo ns32k-sni-sysv
+ GUESS=ns32k-sni-sysv
fi
- exit ;;
+ ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ GUESS=i586-unisys-sysv4
+ ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
- echo hppa1.1-stratus-sysv4
- exit ;;
+ GUESS=hppa1.1-stratus-sysv4
+ ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
- echo i860-stratus-sysv4
- exit ;;
+ GUESS=i860-stratus-sysv4
+ ;;
i*86:VOS:*:*)
# From Paul.Green@stratus.com.
- echo "$UNAME_MACHINE"-stratus-vos
- exit ;;
+ GUESS=$UNAME_MACHINE-stratus-vos
+ ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
- echo hppa1.1-stratus-vos
- exit ;;
+ GUESS=hppa1.1-stratus-vos
+ ;;
mc68*:A/UX:*:*)
- echo m68k-apple-aux"$UNAME_RELEASE"
- exit ;;
+ GUESS=m68k-apple-aux$UNAME_RELEASE
+ ;;
news*:NEWS-OS:6*:*)
- echo mips-sony-newsos6
- exit ;;
+ GUESS=mips-sony-newsos6
+ ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if test -d /usr/nec; then
- echo mips-nec-sysv"$UNAME_RELEASE"
+ GUESS=mips-nec-sysv$UNAME_RELEASE
else
- echo mips-unknown-sysv"$UNAME_RELEASE"
+ GUESS=mips-unknown-sysv$UNAME_RELEASE
fi
- exit ;;
+ ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
- echo powerpc-be-beos
- exit ;;
+ GUESS=powerpc-be-beos
+ ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
- echo powerpc-apple-beos
- exit ;;
+ GUESS=powerpc-apple-beos
+ ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
- echo i586-pc-beos
- exit ;;
+ GUESS=i586-pc-beos
+ ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
+ GUESS=i586-pc-haiku
+ ;;
x86_64:Haiku:*:*)
- echo x86_64-unknown-haiku
- exit ;;
+ GUESS=x86_64-unknown-haiku
+ ;;
SX-4:SUPER-UX:*:*)
- echo sx4-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx4-nec-superux$UNAME_RELEASE
+ ;;
SX-5:SUPER-UX:*:*)
- echo sx5-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx5-nec-superux$UNAME_RELEASE
+ ;;
SX-6:SUPER-UX:*:*)
- echo sx6-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx6-nec-superux$UNAME_RELEASE
+ ;;
SX-7:SUPER-UX:*:*)
- echo sx7-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx7-nec-superux$UNAME_RELEASE
+ ;;
SX-8:SUPER-UX:*:*)
- echo sx8-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8-nec-superux$UNAME_RELEASE
+ ;;
SX-8R:SUPER-UX:*:*)
- echo sx8r-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sx8r-nec-superux$UNAME_RELEASE
+ ;;
SX-ACE:SUPER-UX:*:*)
- echo sxace-nec-superux"$UNAME_RELEASE"
- exit ;;
+ GUESS=sxace-nec-superux$UNAME_RELEASE
+ ;;
Power*:Rhapsody:*:*)
- echo powerpc-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+ ;;
*:Rhapsody:*:*)
- echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+ ;;
arm64:Darwin:*:*)
- echo aarch64-apple-darwin"$UNAME_RELEASE"
- exit ;;
+ GUESS=aarch64-apple-darwin$UNAME_RELEASE
+ ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=$(uname -p)
+ UNAME_PROCESSOR=`uname -p`
case $UNAME_PROCESSOR in
unknown) UNAME_PROCESSOR=powerpc ;;
esac
@@ -1379,109 +1435,119 @@ EOF
# uname -m returns i386 or x86_64
UNAME_PROCESSOR=$UNAME_MACHINE
fi
- echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+ ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=$(uname -p)
+ UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
fi
- echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+ ;;
*:QNX:*:4*)
- echo i386-pc-qnx
- exit ;;
+ GUESS=i386-pc-qnx
+ ;;
NEO-*:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=neo-tandem-nsk$UNAME_RELEASE
+ ;;
NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nse-tandem-nsk$UNAME_RELEASE
+ ;;
NSR-*:NONSTOP_KERNEL:*:*)
- echo nsr-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsr-tandem-nsk$UNAME_RELEASE
+ ;;
NSV-*:NONSTOP_KERNEL:*:*)
- echo nsv-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsv-tandem-nsk$UNAME_RELEASE
+ ;;
NSX-*:NONSTOP_KERNEL:*:*)
- echo nsx-tandem-nsk"$UNAME_RELEASE"
- exit ;;
+ GUESS=nsx-tandem-nsk$UNAME_RELEASE
+ ;;
*:NonStop-UX:*:*)
- echo mips-compaq-nonstopux
- exit ;;
+ GUESS=mips-compaq-nonstopux
+ ;;
BS2000:POSIX*:*:*)
- echo bs2000-siemens-sysv
- exit ;;
+ GUESS=bs2000-siemens-sysv
+ ;;
DS/*:UNIX_System_V:*:*)
- echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+ ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
- # shellcheck disable=SC2154
- if test "$cputype" = 386; then
+ if test "${cputype-}" = 386; then
UNAME_MACHINE=i386
- else
- UNAME_MACHINE="$cputype"
+ elif test "x${cputype-}" != x; then
+ UNAME_MACHINE=$cputype
fi
- echo "$UNAME_MACHINE"-unknown-plan9
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-plan9
+ ;;
*:TOPS-10:*:*)
- echo pdp10-unknown-tops10
- exit ;;
+ GUESS=pdp10-unknown-tops10
+ ;;
*:TENEX:*:*)
- echo pdp10-unknown-tenex
- exit ;;
+ GUESS=pdp10-unknown-tenex
+ ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
- echo pdp10-dec-tops20
- exit ;;
+ GUESS=pdp10-dec-tops20
+ ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
- echo pdp10-xkl-tops20
- exit ;;
+ GUESS=pdp10-xkl-tops20
+ ;;
*:TOPS-20:*:*)
- echo pdp10-unknown-tops20
- exit ;;
+ GUESS=pdp10-unknown-tops20
+ ;;
*:ITS:*:*)
- echo pdp10-unknown-its
- exit ;;
+ GUESS=pdp10-unknown-its
+ ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux"$UNAME_RELEASE"
- exit ;;
+ GUESS=mips-sei-seiux$UNAME_RELEASE
+ ;;
*:DragonFly:*:*)
- echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
- exit ;;
+ DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+ GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+ ;;
*:*VMS:*:*)
- UNAME_MACHINE=$( (uname -p) 2>/dev/null)
- case "$UNAME_MACHINE" in
- A*) echo alpha-dec-vms ; exit ;;
- I*) echo ia64-dec-vms ; exit ;;
- V*) echo vax-dec-vms ; exit ;;
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case $UNAME_MACHINE in
+ A*) GUESS=alpha-dec-vms ;;
+ I*) GUESS=ia64-dec-vms ;;
+ V*) GUESS=vax-dec-vms ;;
esac ;;
*:XENIX:*:SysV)
- echo i386-pc-xenix
- exit ;;
+ GUESS=i386-pc-xenix
+ ;;
i*86:skyos:*:*)
- echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
- exit ;;
+ SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+ GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+ ;;
i*86:rdos:*:*)
- echo "$UNAME_MACHINE"-pc-rdos
- exit ;;
- i*86:AROS:*:*)
- echo "$UNAME_MACHINE"-pc-aros
- exit ;;
+ GUESS=$UNAME_MACHINE-pc-rdos
+ ;;
+ i*86:Fiwix:*:*)
+ GUESS=$UNAME_MACHINE-pc-fiwix
+ ;;
+ *:AROS:*:*)
+ GUESS=$UNAME_MACHINE-unknown-aros
+ ;;
x86_64:VMkernel:*:*)
- echo "$UNAME_MACHINE"-unknown-esx
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-esx
+ ;;
amd64:Isilon\ OneFS:*:*)
- echo x86_64-unknown-onefs
- exit ;;
+ GUESS=x86_64-unknown-onefs
+ ;;
*:Unleashed:*:*)
- echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
- exit ;;
+ GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+ ;;
esac
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+ echo "$GUESS"
+ exit
+fi
+
# No uname command or uname output not recognized.
set_cc_for_build
cat > "$dummy.c" <<EOF
@@ -1521,7 +1587,7 @@ main ()
#define __ARCHITECTURE__ "m68k"
#endif
int version;
- version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
if (version < 4)
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
else
@@ -1613,7 +1679,7 @@ main ()
}
EOF
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
@@ -1621,7 +1687,7 @@ test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
echo "$0: unable to guess system type" >&2
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+case $UNAME_MACHINE:$UNAME_SYSTEM in
mips:Linux | mips64:Linux)
# If we got here on MIPS GNU/Linux, output extra information.
cat >&2 <<EOF
@@ -1638,14 +1704,16 @@ This script (version $timestamp), has failed to recognize the
operating system you are using. If your script is old, overwrite *all*
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
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
and
- https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
EOF
-year=$(echo $timestamp | sed 's,-.*,,')
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
# shellcheck disable=SC2003
-if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
cat >&2 <<EOF
If $0 has already been updated, send the following data and any
@@ -1654,20 +1722,20 @@ 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"
diff --git a/support/config.sub b/support/config.sub
index c874b7a9..9b62e37c 100755..100644
--- a/support/config.sub
+++ b/support/config.sub
@@ -1,12 +1,14 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2020 Free Software Foundation, Inc.
+# Copyright 1992-2021 Free Software Foundation, Inc.
-timestamp='2020-11-07'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2021-12-25'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -33,7 +35,7 @@ timestamp='2020-11-07'
# Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -50,7 +52,14 @@ timestamp='2020-11-07'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
-me=$(echo "$0" | sed -e 's,.*/,,')
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX. However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
@@ -67,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2020 Free Software Foundation, Inc.
+Copyright 1992-2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -112,9 +121,11 @@ esac
# Split fields of configuration type
# shellcheck disable=SC2162
+saved_IFS=$IFS
IFS="-" read field1 field2 field3 field4 <<EOF
$1
EOF
+IFS=$saved_IFS
# Separate into logical components for further validation
case $1 in
@@ -163,6 +174,10 @@ case $1 in
basic_machine=$field1
basic_os=$field2
;;
+ zephyr*)
+ basic_machine=$field1-unknown
+ basic_os=$field2
+ ;;
# Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
@@ -769,22 +784,22 @@ 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
basic_os=sysv32
;;
i*86v4*)
- cpu=$(echo "$1" | sed -e 's/86.*/86/')
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
basic_os=sysv4
;;
i*86v)
- cpu=$(echo "$1" | sed -e 's/86.*/86/')
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
basic_os=sysv
;;
i*86sol2)
- cpu=$(echo "$1" | sed -e 's/86.*/86/')
+ cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
basic_os=solaris2
;;
@@ -917,14 +932,16 @@ case $basic_machine in
;;
leon-*|leon[3-9]-*)
cpu=sparc
- vendor=$(echo "$basic_machine" | sed 's/-.*//')
+ vendor=`echo "$basic_machine" | sed 's/-.*//'`
;;
*-*)
# shellcheck disable=SC2162
+ saved_IFS=$IFS
IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
+ IFS=$saved_IFS
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
@@ -1003,6 +1020,11 @@ case $cpu-$vendor in
;;
# Here we normalize CPU types with a missing or matching vendor
+ armh-unknown | armh-alt)
+ cpu=armv7l
+ vendor=alt
+ basic_os=${basic_os:-linux-gnueabihf}
+ ;;
dpx20-unknown | dpx20-bull)
cpu=rs6000
vendor=bull
@@ -1084,7 +1106,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
@@ -1102,9 +1124,9 @@ 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-*)
+ arm64-* | aarch64le-*)
cpu=aarch64
;;
@@ -1165,7 +1187,7 @@ case $cpu-$vendor in
| alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \
| amdgcn \
- | arc | arceb \
+ | arc | arceb | arc32 | arc64 \
| arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \
| asmjs \
@@ -1185,6 +1207,7 @@ case $cpu-$vendor in
| k1om \
| le32 | le64 \
| lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
| m32c | m32r | m32rle \
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
@@ -1203,9 +1226,13 @@ case $cpu-$vendor in
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r3 | mipsisa32r3el \
+ | mipsisa32r5 | mipsisa32r5el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r3 | mipsisa64r3el \
+ | mipsisa64r5 | mipsisa64r5el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
@@ -1229,7 +1256,7 @@ case $cpu-$vendor in
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \
| pyramid \
- | riscv | riscv32 | riscv64 \
+ | riscv | riscv32 | riscv32be | riscv64 | riscv64be \
| rl78 | romp | rs6000 | rx \
| s390 | s390x \
| score \
@@ -1241,6 +1268,7 @@ case $cpu-$vendor in
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
| spu \
| tahoe \
+ | thumbv7* \
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
| tron \
| ubicom32 \
@@ -1281,35 +1309,37 @@ esac
if test x$basic_os != x
then
-# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# First recognize some ad-hoc cases, 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|')
+ os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
;;
os2-emx)
kernel=os2
- os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
+ os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
;;
nto-qnx*)
kernel=nto
- os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
+ os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
;;
*-*)
# shellcheck disable=SC2162
+ saved_IFS=$IFS
IFS="-" read kernel os <<EOF
$basic_os
EOF
+ IFS=$saved_IFS
;;
# Default OS when just kernel was specified
nto*)
kernel=nto
- os=$(echo $basic_os | sed -e 's|nto|qnx|')
+ os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
;;
linux*)
kernel=linux
- os=$(echo $basic_os | sed -e 's|linux|gnu|')
+ os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
;;
*)
kernel=
@@ -1330,7 +1360,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
@@ -1359,7 +1389,7 @@ case $os in
os=sco3.2v4
;;
sco3.2.[4-9]*)
- os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
+ os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
;;
sco*v* | scout)
# Don't match below
@@ -1389,7 +1419,7 @@ case $os in
os=lynxos
;;
mac[0-9]*)
- os=$(echo "$os" | sed -e 's|mac|macos|')
+ os=`echo "$os" | sed -e 's|mac|macos|'`
;;
opened*)
os=openedition
@@ -1398,10 +1428,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
@@ -1435,7 +1465,7 @@ case $os in
;;
# 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
@@ -1681,11 +1711,14 @@ 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*)
+ # Sometimes we do "kernel-libc", so those need to count as OSes.
+ musl* | newlib* | relibc* | uclibc*)
+ ;;
+ # Likewise for "kernel-abi"
+ eabi* | gnueabi*)
;;
- # Likewise for "kernel-libc"
- eabi | eabihf | gnueabi | gnueabihf)
+ # VxWorks passes extra cpu info in the 4th filed.
+ simlinux | simwindows | spe)
;;
# Now accept the basic system types.
# The portable systems comes first.
@@ -1702,12 +1735,12 @@ case $os in
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
| mirbsd* | netbsd* | dicos* | openedition* | ose* \
- | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+ | bitrig* | openbsd* | secbsd* | 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* \
+ | chorusrdb* | cegcc* | glidix* | serenity* \
| cygwin* | msys* | pe* | moss* | proelf* | rtems* \
| midipix* | mingw32* | mingw64* | mint* \
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
@@ -1720,7 +1753,8 @@ case $os in
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
- | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
+ | fiwix* )
;;
# This one is extra strict with allowed versions
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
@@ -1737,11 +1771,12 @@ 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* )
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
+ | linux-musl* | linux-relibc* | linux-uclibc* )
;;
uclinux-uclibc* )
;;
- -dietlibc* | -newlib* | -musl* | -uclibc* )
+ -dietlibc* | -newlib* | -musl* | -relibc* | -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
@@ -1749,6 +1784,8 @@ case $kernel-$os in
;;
kfreebsd*-gnu* | kopensolaris*-gnu*)
;;
+ vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+ ;;
nto-qnx*)
;;
os2-emx)
diff --git a/support/shobj-conf b/support/shobj-conf
index 5a3f9776..cd7634df 100755
--- a/support/shobj-conf
+++ b/support/shobj-conf
@@ -10,7 +10,7 @@
# Chet Ramey
# chet@po.cwru.edu
-# Copyright (C) 1996-2019 Free Software Foundation, Inc.
+# Copyright (C) 1996-2021 Free Software Foundation, Inc.
#
# This file is part of GNU Bash, the Bourne Again SHell.
#
@@ -123,7 +123,7 @@ sunos5*|solaris2*)
;;
# All versions of Linux (including Gentoo/FreeBSD) or the semi-mythical GNU Hurd.
-linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*|dragonfly*)
+linux*-*|gnu*-*|k*bsd*-gnu-*|midnightbsd*|freebsd*|dragonfly*)
SHOBJ_CFLAGS=-fPIC
SHOBJ_LD='${CC}'
SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
@@ -151,13 +151,13 @@ darwin*)
darwin[1-7].*)
SHOBJ_STATUS=unsupported
SHOBJ_LDFLAGS='-dynamic'
- SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
+ SHLIB_XLDFLAGS='-install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
;;
# Darwin 8 == Mac OS X 10.4; Mac OS X 10.N == Darwin N+4
*)
case "${host_os}" in
darwin[89]*|darwin1[012]*)
- SHOBJ_ARCHFLAGS='-arch_only `/usr/bin/arch`'
+ SHOBJ_ARCHFLAGS=
;;
*) # Mac OS X 10.9 (Mavericks) and later
SHOBJ_ARCHFLAGS=
@@ -241,8 +241,8 @@ osf*)
aix4.[2-9]*-*gcc*|aix[5-9].*-*gcc*) # lightly tested by jik@cisco.com
SHOBJ_CFLAGS=-fpic
- SHOBJ_LD='ld'
- SHOBJ_LDFLAGS='-bdynamic -bnoentry -bexpall'
+ SHOBJ_LD='${CC}'
+ SHOBJ_LDFLAGS='-Wl,-bdynamic -Wl,-bnoentry -Wl,-bexpall'
SHOBJ_XLDFLAGS='-G'
SHLIB_XLDFLAGS='-bM:SRE'
diff --git a/support/signames.c b/support/signames.c
index aba4842a..84864fd7 100644
--- a/support/signames.c
+++ b/support/signames.c
@@ -1,6 +1,6 @@
/* signames.c -- Create an array of signal names. */
-/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -84,9 +84,9 @@ initialize_signames ()
names first. This allows (for example) SIGABRT to overwrite SIGLOST. */
/* POSIX 1003.1b-1993 real time signals, but take care of incomplete
- implementations. Acoording to the standard, both, SIGRTMIN and
+ implementations. According to the standard, both SIGRTMIN and
SIGRTMAX must be defined, SIGRTMIN must be strictly less than
- SIGRTMAX, and the difference must be at least 7, that is, there
+ SIGRTMAX, and the difference must be at least 7; that is, there
must be at least eight distinct real time signals. */
/* The generated signal names are SIGRTMIN, SIGRTMIN+1, ...,
diff --git a/test.c b/test.c
index e2fd78b3..9997df14 100644
--- a/test.c
+++ b/test.c
@@ -2,7 +2,7 @@
/* Modified to run with the GNU shell Apr 25, 1988 by bfox. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -339,12 +339,15 @@ arithcomp (s, t, op, flags)
intmax_t l, r;
int expok;
- if (flags & TEST_ARITHEXP)
+ if (flags & TEST_ARITHEXP) /* conditional command */
{
- l = evalexp (s, EXP_EXPANDED, &expok);
+ int eflag;
+
+ eflag = (shell_compatibility_level > 51) ? 0 : EXP_EXPANDED;
+ l = evalexp (s, eflag, &expok);
if (expok == 0)
return (FALSE); /* should probably longjmp here */
- r = evalexp (t, EXP_EXPANDED, &expok);
+ r = evalexp (t, eflag, &expok);
if (expok == 0)
return (FALSE); /* ditto */
}
@@ -492,13 +495,13 @@ unary_operator ()
if (legal_number (argv[pos], &r))
{
advance (0);
- return (unary_test (op, argv[pos - 1]));
+ return (unary_test (op, argv[pos - 1], 0));
}
else
return (FALSE);
}
else
- return (unary_test (op, "1"));
+ return (unary_test (op, "1", 0));
}
/* All of the unary operators take an argument, so we first call
@@ -506,17 +509,19 @@ unary_operator ()
argument, and then advances pos right past it. This means that
pos - 1 is the location of the argument. */
unary_advance ();
- return (unary_test (op, argv[pos - 1]));
+ return (unary_test (op, argv[pos - 1], 0));
}
int
-unary_test (op, arg)
+unary_test (op, arg, flags)
char *op, *arg;
+ int flags;
{
intmax_t r;
struct stat stat_buf;
struct timespec mtime, atime;
SHELL_VAR *v;
+ int aflags;
switch (op[1])
{
@@ -624,17 +629,27 @@ unary_test (op, arg)
case 'v':
#if defined (ARRAY_VARS)
- if (valid_array_reference (arg, 0))
+ aflags = assoc_expand_once ? AV_NOEXPAND : 0;
+ if (valid_array_reference (arg, aflags))
{
char *t;
- int rtype, ret, flags;
+ int ret;
+ array_eltstate_t es;
/* Let's assume that this has already been expanded once. */
- flags = assoc_expand_once ? AV_NOEXPAND : 0;
- t = array_value (arg, 0, flags, &rtype, (arrayind_t *)0);
+ /* XXX - TAG:bash-5.2 fix with corresponding fix to execute_cmd.c:
+ execute_cond_node() that passes TEST_ARRAYEXP in FLAGS */
+
+ if (shell_compatibility_level > 51)
+ /* Allow associative arrays to use `test -v array[@]' to look for
+ a key named `@'. */
+ aflags |= AV_ATSTARKEYS; /* XXX */
+ init_eltstate (&es);
+ t = get_array_value (arg, aflags|AV_ALLOWALL, &es);
ret = t ? TRUE : FALSE;
- if (rtype > 0) /* subscript is * or @ */
+ if (es.subtype > 0) /* subscript is * or @ */
free (t);
+ flush_eltstate (&es);
return ret;
}
else if (legal_number (arg, &r)) /* -v n == is $n set? */
@@ -789,6 +804,7 @@ three_arguments ()
{
advance (1);
value = !two_arguments ();
+ pos = argc;
}
else if (argv[pos][0] == '(' && argv[pos+2][0] == ')')
{
diff --git a/test.h b/test.h
index ea3c33e9..ffd79e5e 100644
--- a/test.h
+++ b/test.h
@@ -1,6 +1,6 @@
/* test.h -- external interface to the conditional command code. */
-/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -27,11 +27,12 @@
#define TEST_PATMATCH 0x01
#define TEST_ARITHEXP 0x02
#define TEST_LOCALE 0x04
+#define TEST_ARRAYEXP 0x08 /* array subscript expansion */
extern int test_unop PARAMS((char *));
extern int test_binop PARAMS((char *));
-extern int unary_test PARAMS((char *, char *));
+extern int unary_test PARAMS((char *, char *, int));
extern int binary_test PARAMS((char *, char *, char *, int));
extern int test_command PARAMS((int, char **));
diff --git a/tests/alias.right b/tests/alias.right
index 9e33036b..76f32076 100644
--- a/tests/alias.right
+++ b/tests/alias.right
@@ -2,6 +2,7 @@ alias: 0
alias: 0
./alias.tests: line 38: qfoo: command not found
quux
+hi
bar
value
bar
@@ -40,3 +41,5 @@ baz
foo
bar
baz
+<áa>
+<aá>
diff --git a/tests/alias.tests b/tests/alias.tests
index 0280c16d..15eac5b1 100644
--- a/tests/alias.tests
+++ b/tests/alias.tests
@@ -49,8 +49,17 @@ foo bar
unalias foo bar baz
+# post bash-5.1 problems with compound array assignment during multiline
+# alias expansion
+alias foo='a=() b=""
+for i in 1; do echo hi; done'
+foo
+
+unalias foo
+
${THIS_SH} ./alias1.sub
${THIS_SH} ./alias2.sub
${THIS_SH} ./alias3.sub
${THIS_SH} ./alias4.sub
${THIS_SH} ./alias5.sub
+${THIS_SH} ./alias6.sub
diff --git a/tests/alias6.sub b/tests/alias6.sub
new file mode 100644
index 00000000..d2d7daf5
--- /dev/null
+++ b/tests/alias6.sub
@@ -0,0 +1,13 @@
+# make sure aliases that end in multibyte characters don't interfere with the
+# space sentinel alias expansion adds; problem through bash-5.1
+shopt -s expand_aliases
+
+LC_ALL=en_US.UTF-8
+
+alias a1='printf "<%s>\\n" áa'
+a1
+
+alias a2='printf "<%s>\\n" aá'
+a2
+
+unalias a1 a2
diff --git a/tests/arith.right b/tests/arith.right
index c74602e3..02687815 100644
--- a/tests/arith.right
+++ b/tests/arith.right
@@ -259,5 +259,5 @@ efg
42
42
42
-./arith.tests: line 327: 'foo' : syntax error: operand expected (error token is "'foo' ")
-./arith.tests: line 331: b[c]d: syntax error in expression (error token is "d")
+./arith.tests: line 330: 'foo' : syntax error: operand expected (error token is "'foo' ")
+./arith.tests: line 333: b[c]d: syntax error in expression (error token is "d")
diff --git a/tests/arith.tests b/tests/arith.tests
index 1a3501aa..e9ab5765 100644
--- a/tests/arith.tests
+++ b/tests/arith.tests
@@ -322,10 +322,12 @@ printf "%u\n" $n
echo $(( 16#$(printf "%x\n" $n) ))
echo $(( 16#$(printf "%X\n" $n) ))
+# allow reserved words after an arithmetic command just because
+if ((expr)) then ((expr)) fi
+
# these are errors
foo=1
echo $(( 'foo' ))
-
# causes longjmp botches through bash-2.05b
a[b[c]d]=e
diff --git a/tests/array-at-star b/tests/array-at-star
index 80f039d2..80f039d2 100755..100644
--- a/tests/array-at-star
+++ b/tests/array-at-star
diff --git a/tests/array.right b/tests/array.right
index 2d1c51db..62278852 100644
--- a/tests/array.right
+++ b/tests/array.right
@@ -67,6 +67,7 @@ declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="t
declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")
declare -ar c
declare -a d=([1]="test test")
+declare -a e=()
declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")
./array.tests: line 135: unset: ps1: not an array variable
./array.tests: line 139: declare: c: cannot destroy array variables in this way
@@ -84,6 +85,7 @@ declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="t
declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")
declare -ar c
declare -a d=([1]="test test")
+declare -a e=()
declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")
declare -a rv=([0]="this" [1]="is" [2]="a" [3]="test" [4]="of" [5]="read" [6]="using" [7]="arrays")
abde
@@ -381,6 +383,8 @@ strlen(4four) = 5
1 2 0 3
1 2 0 3
1 2 0 3
+declare -ai arr=([0]="2" [1]="4" [2]="6")
+declare -a arr=([0]="hello" [1]="world")
foo index 1: ok
foo index 2: ok
foo: implicit reference to element 0: ok
@@ -492,8 +496,8 @@ x b c
declare -a a=([1]="2" [2]="3" [3]="4")
abcd
unset
-./array21.sub: line 30: typeset: a: not found
-./array21.sub: line 33: typeset: A: not found
+declare -a a=()
+declare -A A=([four]="4" [two]="2" [three]="3" [one]="1" )
declare -a a=()
declare -A A=()
declare -a foo=([0]="1" [1]="(4 5 6)" [2]="3")
@@ -520,13 +524,11 @@ argv[1] = <y>
<X> <X> <X> <X>
./array23.sub: line 22: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
./array23.sub: line 23: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
-foo
-0
-foo
-foo
-foo
-6
-./array23.sub: line 34: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
+./array23.sub: line 24: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
+./array23.sub: line 26: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
+./array23.sub: line 30: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
+./array23.sub: line 33: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
+./array23.sub: line 34: $index: syntax error: operand expected (error token is "$index")
./array23.sub: line 35: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
0
0
@@ -743,23 +745,43 @@ argv[1] = <b>
argv[2] = <a>
argv[1] = <b+a>
7
-./array27.sub: line 24: a[]]=7 : syntax error: invalid arithmetic operator (error token is "]=7 ")
+7
declare -A A=([$'\t']="2" [" "]="2" )
-./array27.sub: line 36: ((: A[]]=2 : syntax error: invalid arithmetic operator (error token is "]=2 ")
-declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["@"]="2" )
-./array27.sub: line 45: A[]]: bad array subscript
+declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["]"]="2" ["@"]="2" )
+declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["]"]="2" ["@"]="2" )
+./array27.sub: line 52: read: `A[]]': not a valid identifier
declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
-./array27.sub: line 53: A[]]: bad array subscript
+./array27.sub: line 60: printf: `A[]]': not a valid identifier
declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
-./array27.sub: line 61: declare: `A[]]=X': not a valid identifier
+./array27.sub: line 68: declare: `A[]]=X': not a valid identifier
+declare -A A=(["*"]="X" ["@"]="X" )
+./array27.sub: line 76: declare: `A[]]=X': not a valid identifier
declare -A A=(["*"]="X" ["@"]="X" )
-./array27.sub: line 69: declare: `A[]]=X': not a valid identifier
-./array27.sub: line 69: A[*]: bad array subscript
-./array27.sub: line 69: A[@]: bad array subscript
-declare -A A
declare -a bug4=([0]="" [1]="5" [2]="" [3]="1" [4]="")
declare -a bug=([0]="" [1]="5" [2]="" [3]="1" [4]="")
declare -a bug2=([0]="")
declare -a bug3=([0]="" [1]="5" [2]="" [3]="1" [4]="")
declare -a not_bug=([0]="no" [1]="nulls")
declare -a workaround=([0]="")
+declare -a var=([0]=$'\001\001\001\001')
+declare -A v2=([$'\001']=$'ab\001c' )
+declare -a foo=([0]=$'\001\001\001\001')
+declare -A foo=([$'\001']=$'ab\001c' )
+declare -a foo=([0]=$'\001\001\001\001')
+declare -a foo=([0]=$'\001\001\001\001')
+declare -A foo=([v]=$'\001\001\001\001' )
+declare -A foo=([v]=$'\001\001\001\001' )
+declare -A foo=([$'\001']=$'ab\001c' )
+declare -A foo=([$'\001']=$'ab\001c' )
+foo
+declare -a a=([42]="foo")
+foo
+declare -a a=([42]="foo")
+7
+declare -ai a=([42]="7")
+42
+declare -ai a=([42]="42")
+FOO
+declare -Au A=([Darwin]="FOO" )
+FOO
+declare -Au A=(["@"]="FOO" )
diff --git a/tests/array.tests b/tests/array.tests
index ba8e2254..d0bb08b7 100644
--- a/tests/array.tests
+++ b/tests/array.tests
@@ -425,3 +425,5 @@ ${THIS_SH} ./array25.sub
${THIS_SH} ./array26.sub
${THIS_SH} ./array27.sub
${THIS_SH} ./array28.sub
+${THIS_SH} ./array29.sub
+${THIS_SH} ./array30.sub
diff --git a/tests/array15.sub b/tests/array15.sub
index 47796b95..12f5391e 100644
--- a/tests/array15.sub
+++ b/tests/array15.sub
@@ -35,3 +35,18 @@ func()
func
echo "${foo[@]}"
+
+unset foo
+
+# test options to declare that disable attributes that affect how values
+# are expanded
+#
+# we already handle options that set attributes specially, so we should
+# handle attributes that unset those attributes specially as well
+
+unset arr
+declare -i -a arr=(1+1 2+2 3+3)
+declare -p arr
+
+declare +i arr=(hello world)
+declare -p arr
diff --git a/tests/array27.sub b/tests/array27.sub
index 44ed444d..e2a1e708 100644
--- a/tests/array27.sub
+++ b/tests/array27.sub
@@ -40,6 +40,13 @@ declare -p A
unset A
declare -A A
+for k in ']' '*' '@' $'\t' ' '; do
+ A[$k]=2
+done
+declare -p A
+
+unset A
+declare -A A
for k in $'\t' ' ' ']' '*' '@'; do
read "A[$k]" <<< X
@@ -69,4 +76,3 @@ for k in ']' '*' '@'; do
declare "A[$k]=X"
done
declare -p A
-
diff --git a/tests/array29.sub b/tests/array29.sub
new file mode 100644
index 00000000..f73c2d1c
--- /dev/null
+++ b/tests/array29.sub
@@ -0,0 +1,86 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Issues with CTLESC characters in array subscripts and values. Bash-5.1 and
+# earlier didn't quote them correctly and therefore halved the number of
+# CTLESCs.
+
+declare -a var
+var=( $'\x01\x01\x01\x01' )
+declare -p var
+declare -A v2
+v2=( $'\x01' ab$'\x01'c )
+declare -p v2
+
+pv()
+{
+ local -a foo
+ foo=( "${var[@]}" )
+ declare -p foo
+}
+pv
+
+unset -f pv
+pv()
+{
+ local -A foo
+ eval foo=\( "${v2[@]@k}" \)
+ declare -p foo
+}
+pv
+
+# these are wrong through bash-5.1; there is a fix tagged for bash-5.2
+# when I uncomment that fix, these results will reflect it
+
+pv1()
+{
+ local -a foo=( "${var[@]}" )
+ declare -p foo
+}
+pv1
+
+pv2()
+{
+ local -a foo=( [0]="${var[@]}" )
+ declare -p foo
+}
+pv2
+
+pv3()
+{
+ local -A foo=( v "${var[@]}" )
+ declare -p foo
+}
+pv3
+
+pv4()
+{
+ local -A foo=( [v]="${var[@]}" )
+ declare -p foo
+}
+pv4
+
+unset -f pv3 pv4
+pv3()
+{
+ local -A foo=( $'\x01' "${v2[@]}" )
+ declare -p foo
+}
+pv3
+
+pv4()
+{
+ local -A foo=( [$'\x01']="${v2[@]}" )
+ declare -p foo
+}
+pv4
diff --git a/tests/array30.sub b/tests/array30.sub
new file mode 100644
index 00000000..14f97980
--- /dev/null
+++ b/tests/array30.sub
@@ -0,0 +1,46 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+declare -a a
+a=()
+
+echo ${a[42]=foo}
+declare -p a
+
+a=()
+echo ${a[$(echo 42)]=foo}
+declare -p a
+
+unset a
+
+declare -ai a
+a=()
+echo ${a[42]=4+3}
+declare -p a
+
+a=()
+echo ${a[$(echo 42)]=42}
+declare -p a
+
+unset a
+
+declare -A A
+declare -u A
+A=()
+echo ${A[$(echo Darwin)]=foo}
+
+declare -p A
+A=()
+
+echo ${A[@]:=foo}
+declare -p A
diff --git a/tests/assoc.right b/tests/assoc.right
index e9aa9172..9a1662c4 100644
--- a/tests/assoc.right
+++ b/tests/assoc.right
@@ -16,25 +16,24 @@ declare -A wheat=([two]="b" [three]="c" [one]="a" [zero]="0" )
declare -A chaff=(["hello world"]="flip" [one]="10" [zero]="5" )
./assoc.tests: line 51: waste: readonly variable
./assoc.tests: line 52: unset: waste: cannot unset: readonly variable
-./assoc.tests: line 53: chaff[*]: bad array subscript
-./assoc.tests: line 54: [*]=12: invalid associative array key
-declare -A chaff=(["hello world"]="flip" [one]="a" )
+declare -A chaff=(["*"]="12" ["hello world"]="flip" [one]="a" )
flip
argv[1] = <multiple>
argv[2] = <words>
+argv[3] = <12>
+argv[4] = <flip>
+argv[5] = <a>
+argv[1] = <multiple words>
+argv[2] = <12>
argv[3] = <flip>
argv[4] = <a>
-argv[1] = <multiple words>
-argv[2] = <flip>
-argv[3] = <a>
argv[1] = <multiple>
argv[2] = <words>
-argv[3] = <flip>
-argv[4] = <a>
-argv[1] = <multiple words flip a>
+argv[3] = <12>
+argv[4] = <flip>
+argv[5] = <a>
+argv[1] = <multiple words 12 flip a>
./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>
@@ -200,11 +199,7 @@ declare -A hash=([key]="value1 value2" )
declare -A b=([")"]="" ["\""]="" ["]"]="" ["\\"]="" ["\`"]="" )
declare -A b=(["]"]="" ["\`"]="" )
declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" )
-./assoc9.sub: line 36: unset: `dict[']': not a valid identifier
-./assoc9.sub: line 36: unset: `dict["]': not a valid identifier
-./assoc9.sub: line 36: unset: `dict[\]': not a valid identifier
-./assoc9.sub: line 36: unset: `dict[`]': not a valid identifier
-declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" )
+declare -A dict=()
declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" )
declare -A dict=()
4
@@ -223,6 +218,14 @@ declare -A a=(["80's"]="Depeche Mode" )
declare -A a=(["\$(date >&2)"]="5" )
declare -A myarray=([foo]="bleh" ["foo[bar"]="bleh" )
foo
+declare -A assoc=(["\$var"]="value" )
+declare -A assoc=(["\$var"]="value" )
+declare -A assoc=(["\$var"]="value" )
+declare -A assoc=()
+./assoc9.sub: line 154: typeset: `foo[foo]bar]=bax': not a valid identifier
+foo]bar
+bip
+declare -A foo=(["foo]bar"]="bip" )
./assoc10.sub: line 14: declare: a: cannot convert indexed to associative array
f: declare -a a
./assoc10.sub: line 17: declare: a: cannot convert associative to indexed array
@@ -250,11 +253,148 @@ declare -A dict=(["?"]="quest" ["*"]="star" ["'"]="squote" ["\$"]="dol" ["\""]="
dict=( "?" "quest" "*" "star" "'" "squote" "\$" "dol" "\"" "dquote" "\\" "bslash" "@" "at" "}" "rbrace" "{" "lbrace" "\`" "bquote" )
declare -A foo=([two]="" [one]="1" )
foo=( two "" one "1" )
-rparen dquote rbrace bs
-declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" )
-")" "rparen" "\"" "dquote" "]" "rbrace" "\\" "bs"
-declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" )
-declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" )
-declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" )
+rparen dquote rbracket bs
+declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbracket" ["\\"]="bs" )
+")" "rparen" "\"" "dquote" "]" "rbracket" "\\" "bs"
+declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbracket" ["\\"]="bs" )
+declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbracket" ["\\"]="bs" )
+declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbracket" ["\\"]="bs" )
declare -Arx foo=([two]="2" [three]="3" [one]="1" )
./assoc11.sub: line 90: foo: readonly variable
+declare -A v1=(["1 2"]="3" )
+declare -A v2=(["1 2"]="3" )
+declare -A v3=(["1 2"]="3" )
+declare -A v1=(["1 2"]="3 4 5" )
+declare -A v2=(["1 2"]="3 4 5" )
+declare -A v3=(["1 2"]="3 4 5" )
+declare -A v1=(["1 2"]="3 4 5" )
+declare -A v2=(["1 2"]="3 4 5" )
+declare -A v3=(["1 2"]="3 4 5" )
+declare -A v1=(["1 2"]="3 4 5" )
+declare -A v2=(["1 2"]="3 4 5" )
+declare -A v3=(["1 2"]="3 4 5" )
+declare -A v1=(["20 40 80"]="xtra" ["1 2"]="3 4 5" )
+declare -A v2=(["20 40 80"]="xtra" ["1 2"]="3 4 5" )
+declare -A v3=(["1 2"]="3 4 5" ["\$xtra"]="xtra" )
+declare -A v1=(["20 40 80"]="new xtra" ["1 2"]="3 4 5" )
+declare -A v2=(["20 40 80"]="new xtra" ["1 2"]="3 4 5" )
+declare -A v3=(["1 2"]="3 4 5" ["\$xtra"]="new xtra" )
+declare -A assoc=(["*"]="star" ["!"]="bang" ["@"]="at" )
+at
+star
+declare -A a=(["@"]="at" )
+./assoc13.sub: line 22: ia[@]: bad array subscript
+declare -a ia
+declare -A a=(["@"]="at2" )
+declare -A a=(["@"]=" string" )
+declare -A a=(["*"]="star2" ["@"]="at" )
+declare -A assoc=([hello]="world" ["key with spaces"]="value with spaces" [foo]="bar" [one]="1" )
+argv[1] = <world>
+argv[2] = <value with spaces>
+argv[3] = <bar>
+argv[4] = <1>
+argv[1] = <hello>
+argv[2] = <world>
+argv[3] = <key with spaces>
+argv[4] = <value with spaces>
+argv[5] = <foo>
+argv[6] = <bar>
+argv[7] = <one>
+argv[8] = <1>
+argv[1] = <world value with spaces bar 1>
+argv[1] = <hello world key with spaces value with spaces foo bar one 1>
+argv[1] = <hello>
+argv[2] = <world>
+argv[3] = <key with spaces>
+argv[4] = <value with spaces>
+argv[5] = <one>
+argv[6] = <1>
+argv[7] = <foo>
+argv[8] = <bar>
+argv[1] = <'hello'>
+argv[2] = <'world'>
+argv[3] = <'key with spaces'>
+argv[4] = <'value with spaces'>
+argv[5] = <'one'>
+argv[6] = <'1'>
+argv[7] = <'foo'>
+argv[8] = <'bar'>
+argv[1] = <'hello'>
+argv[2] = <'world'>
+argv[3] = <'key with spaces'>
+argv[4] = <'value with spaces'>
+argv[5] = <'one'>
+argv[6] = <'1'>
+argv[7] = <'foo'>
+argv[8] = <'bar'>
+declare -A clone=([hello]="world" ["key with spaces"]="value with spaces" [foo]="bar" [one]="1" )
+declare -A posparams=([hello]="world" ["key with spaces"]="value with spaces" [foo]="bar" [one]="1" )
+declare -A var=([$'\001']=$'\001\001\001\001' )
+declare -A v2=([$'\001']=$'\001\001\001\001' )
+argv[1] = <^A>
+argv[2] = <^A^A^A^A>
+declare -A foo=([$'\001']=$'\001\001\001\001' )
+declare -A var=([$'\001']=$'\001\001\001\001' )
+argv[1] = <^A>
+argv[2] = <^A^A^A^A>
+declare -A foo=([$'\001']=$'\001\001\001\001' )
+declare -A var=([$'\001']=$'\001\001\001\001' )
+argv[1] = <^A>
+argv[2] = <^A^A^A^A>
+declare -A foo=([$'\001']=$'\001\001\001\001' )
+declare -a var=([0]=$'\001\001\001\001')
+argv[1] = <$'\001\001\001\001'>
+declare -a foo=([0]=$'\001\001\001\001')
+declare -a var=([0]=$'\001\001\001\001')
+argv[1] = <$'\001\001\001\001'>
+declare -a foo=([0]=$'\001\001\001\001')
+declare -A var=([two]=$'ab\001cd' [one]=$'\001\001\001\001' )
+declare -A foo=([two]=$'ab\001cd' [one]=$'\001\001\001\001' )
+declare -A foo=([$'\001']=$'ab\001cd' )
+declare -A foo=([$'\001']=$'\001\001\001\001' )
+declare -A A=(["\$(echo Darwin ; echo stderr>&2)"]="darjeeling" [Darwin]="darjeeling" )
+stderr
+darjsharking
+darjsharking
+stderr
+darj
+darj
+stderr
+DARJEELING
+DARJEELING
+stderr
+'darjeeling'
+'darjeeling'
+stderr
+darjeel
+darjeel
+stderr
+10
+10
+stderr
+darjeeling
+darjeeling
+stderr
+set
+set
+stderr
+set
+set
+stderr
+42
+42
+declare -A A=(["]"]="rbracket" ["["]="lbracket" )
+declare -A A=()
+declare -A A=(["]"]="rbracket" ["["]="lbracket" )
+declare -A A=()
+declare -A A=(["]"]="rbracket" ["["]="lbracket" )
+declare -A A=()
+declare -A A=(["]"]="rbracket" ["["]="lbracket" )
+declare -A A=()
+declare -A A=(["]"]="rbracket" ["["]="lbracket" )
+declare -A A=()
+declare -A A=(["]"]="rbracket" ["["]="lbracket" )
+declare -A A=()
+declare -A A=(["]"]="rbracket" ["["]="lbracket" )
+declare -A A=()
+5: ok 1
diff --git a/tests/assoc.tests b/tests/assoc.tests
index 8d5c8927..c656536b 100644
--- a/tests/assoc.tests
+++ b/tests/assoc.tests
@@ -47,7 +47,7 @@ declare +i chaff
chaff[hello world]=flip
declare -p chaff
-# TEST - errors
+# TEST - no longer errors
waste[stuff]=other
unset waste
chaff[*]=12
@@ -244,3 +244,25 @@ ${THIS_SH} ./assoc10.sub
# test assigning associative arrays using compound key/value pair assignments
${THIS_SH} ./assoc11.sub
+
+# more kvpair associative array assignment tests
+${THIS_SH} ./assoc12.sub
+
+# assignment to @ and *
+${THIS_SH} ./assoc13.sub
+
+# tests of the @k transformation on associative arrays
+${THIS_SH} ./assoc14.sub
+
+# tests with subscripts and values containing 0x01 (some indexed array tests too)
+${THIS_SH} ./assoc15.sub
+
+# tests with subscripts being expanded more than one in ${xxx} word expansions
+${THIS_SH} ./assoc16.sub
+
+# tests with `[' and `]' subscripts and `unset'
+${THIS_SH} ./assoc17.sub
+
+# tests with `[' and `]' subscripts and printf/read/wait builtins
+${THIS_SH} ./assoc18.sub
+
diff --git a/tests/assoc11.sub b/tests/assoc11.sub
index 13111a52..9d9afae9 100644
--- a/tests/assoc11.sub
+++ b/tests/assoc11.sub
@@ -69,7 +69,7 @@ foo=(one 1 two)
declare -p foo
echo foo=\( ${foo[@]@K} \)
-typeset -A a=( [\\]=bs [\"]=dquote [\)]=rparen [\]]=rbrace )
+typeset -A a=( [\\]=bs [\"]=dquote [\)]=rparen [\]]=rbracket )
echo ${a[@]}
declare -p a
diff --git a/tests/assoc12.sub b/tests/assoc12.sub
new file mode 100644
index 00000000..359dc0b3
--- /dev/null
+++ b/tests/assoc12.sub
@@ -0,0 +1,74 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+foo='1 2'
+bar='3 4 5'
+xtra='20 40 80'
+
+declare -A v1=( $foo 3 )
+declare -p v1
+
+declare -A v2=( [$foo]=3 )
+declare -p v2
+
+declare -A v3
+v3=( $foo 3 )
+declare -p v3
+
+unset v1 v2 v3
+
+declare -A v1=( $foo $bar )
+declare -p v1
+
+declare -A v2=( [$foo]=$bar )
+declare -p v2
+
+declare -A v3
+v3=( $foo $bar )
+declare -p v3
+
+unset v1 v2 v3
+
+declare -A v1=( "$foo" $bar )
+declare -p v1
+
+declare -A v2=( ["$foo"]=$bar )
+declare -p v2
+
+declare -A v3
+v3=( "$foo" $bar )
+declare -p v3
+
+unset v1 v2 v3
+
+declare -A v1=( "$foo" "$bar" )
+declare -p v1
+
+declare -A v2=( ["$foo"]="$bar" )
+declare -p v2
+
+declare -A v3
+v3=( "$foo" "$bar" )
+declare -p v3
+
+v1+=( $xtra xtra )
+v2+=( "$xtra" xtra )
+v3+=( '$xtra' xtra )
+
+declare -p v1 v2 v3
+
+v1+=( [$xtra]='new xtra' )
+v2+=( ["$xtra"]='new xtra' )
+v3+=( ['$xtra']='new xtra' )
+
+declare -p v1 v2 v3
diff --git a/tests/assoc13.sub b/tests/assoc13.sub
new file mode 100644
index 00000000..7e669727
--- /dev/null
+++ b/tests/assoc13.sub
@@ -0,0 +1,44 @@
+# assignment to @ and *
+
+declare -A assoc
+key=@
+key2=*
+
+assoc[$key]=at
+assoc[$key2]=star
+assoc[!]=bang
+declare -p assoc
+
+echo ${assoc[$key]}
+echo ${assoc[$key2]}
+unset assoc
+
+declare -A a
+
+a[@]=at
+declare -p a
+
+declare -a ia
+ia[@]=garbage
+
+declare -p ia
+
+declare a[@]=at2
+declare -p a
+
+unset a ia
+
+declare -A a
+printf -v a[@] "%10s" string
+
+declare -p a
+unset a
+
+declare -A a
+declare a[$key2]=star
+declare a[@]=at
+declare a[*]=star2
+
+declare -p a
+unset a
+
diff --git a/tests/assoc14.sub b/tests/assoc14.sub
new file mode 100644
index 00000000..95df0492
--- /dev/null
+++ b/tests/assoc14.sub
@@ -0,0 +1,35 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+declare -A assoc=(hello world "key with spaces" "value with spaces" one 1 foo bar)
+declare -p assoc
+
+recho "${assoc[@]}"
+recho "${assoc[@]@k}"
+
+recho "${assoc[*]}"
+recho "${assoc[*]@k}"
+
+set -- hello world "key with spaces" "value with spaces" one 1 foo bar
+recho "${@}"
+recho "${@@K}"
+recho "${@@k}"
+
+declare -A clone
+eval clone=\( "${assoc[@]@K}" \)
+declare -p clone
+
+declare -A posparams
+eval posparams=\( "${@@K}" \)
+declare -p posparams
diff --git a/tests/assoc15.sub b/tests/assoc15.sub
new file mode 100644
index 00000000..c47b1535
--- /dev/null
+++ b/tests/assoc15.sub
@@ -0,0 +1,92 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# associative arrays first
+
+v=$'\x01'
+
+declare -A var foo v2
+var=( $'\x01' $'\x01\x01\x01\x01' )
+declare -p var
+v2=( $v $v$v$v$v )
+declare -p v2
+
+recho "${var[@]@k}"
+eval foo=\( "${var[@]@k}" \)
+declare -p foo
+
+var=(   )
+declare -p var
+
+recho "${var[@]@k}"
+eval foo=\( "${var[@]@k}" \)
+declare -p foo
+
+var=( []= )
+declare -p var
+
+recho "${var[@]@k}"
+eval foo=\( "${var[@]@k}" \)
+declare -p foo
+
+# now indexed arrays
+unset -v var foo
+
+declare -a var
+var=( [0]= )
+declare -p var
+
+declare -a foo
+recho "${var[@]@Q}"
+eval foo=\( "${var[@]@Q}" \)
+declare -p foo
+
+var=(  )
+declare -p var
+
+unset foo
+
+declare -a foo
+recho "${var[@]@Q}"
+eval foo=\( "${var[@]@Q}" \)
+declare -p foo
+
+# similar to array29.sub
+unset -v var foo v2
+
+declare -A var
+var=( one $'\x01\x01\x01\x01' two ab$'\001'cd )
+declare -p var
+
+pv()
+{
+ local -A foo
+ eval foo=\( "${var[@]@k}" \)
+ declare -p foo
+}
+pv
+
+pv1()
+{
+ local -A foo=( $'\x01' "${var[two]}" )
+ declare -p foo
+}
+pv1
+
+pv2()
+{
+ local -A foo=( [$'\x01']="${var[one]}" )
+ declare -p foo
+}
+pv2
diff --git a/tests/assoc16.sub b/tests/assoc16.sub
new file mode 100644
index 00000000..ae8296b3
--- /dev/null
+++ b/tests/assoc16.sub
@@ -0,0 +1,56 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# bash versions up to and including bash-5.1 expanded these subscripts more
+# than once
+
+declare -A A
+
+A["Darwin"]=darjeeling
+A['$(echo Darwin ; echo stderr>&2)']=darjeeling
+
+declare -p A
+
+echo ${A[$(echo Darwin ; echo stderr>&2)]//eel/shark}
+echo ${A['$(echo Darwin ; echo stderr>&2)']//eel/shark}
+
+echo ${A[$(echo Darwin ; echo stderr>&2)]:0:4}
+echo ${A['$(echo Darwin ; echo stderr>&2)']:0:4}
+
+echo ${A[$(echo Darwin ; echo stderr>&2)]^^}
+echo ${A['$(echo Darwin ; echo stderr>&2)']^^}
+
+echo ${A[$(echo Darwin ; echo stderr>&2)]@Q}
+echo ${A['$(echo Darwin ; echo stderr>&2)']@Q}
+
+echo ${A[$(echo Darwin ; echo stderr>&2)]%ing}
+echo ${A['$(echo Darwin ; echo stderr>&2)']%ing}
+
+echo ${#A[$(echo Darwin ; echo stderr>&2)]}
+echo ${#A['$(echo Darwin ; echo stderr>&2)']}
+
+echo ${A[$(echo Darwin ; echo stderr>&2)]:-value}
+echo ${A['$(echo Darwin ; echo stderr>&2)']:-value}
+
+echo ${A[$(echo Darwin ; echo stderr>&2)]:+set}
+echo ${A['$(echo Darwin ; echo stderr>&2)']:+set}
+
+echo ${A[$(echo Darwin ; echo stderr>&2)]:+set}
+echo ${A['$(echo Darwin ; echo stderr>&2)']:+set}
+
+darjeeling=7*6
+Darwin=7*4
+
+echo $(( ${A[$(echo Darwin ; echo stderr>&2)]} ))
+echo $(( ${A['$(echo Darwin ; echo stderr>&2)']} ))
diff --git a/tests/assoc17.sub b/tests/assoc17.sub
new file mode 100644
index 00000000..a98aaa15
--- /dev/null
+++ b/tests/assoc17.sub
@@ -0,0 +1,58 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# test behavior with `unset' and `[' and ']' subscripts
+
+declare -A A
+rkey=']'
+lkey='['
+
+A[$rkey]=rbracket
+A[$lkey]=lbracket
+declare -p A
+
+unset A[$rkey]
+unset A[$lkey]
+declare -p A
+
+A["$rkey"]=rbracket
+A["$lkey"]=lbracket
+declare -p A
+
+unset A["$rkey"]
+unset A["$lkey"]
+declare -p A
+
+A[\]]=rbracket
+A[\[]=lbracket
+declare -p A
+
+unset A[\]]
+unset A[\[]
+declare -p A
+
+A[']']=rbracket
+A['[']=lbracket
+declare -p A
+
+unset A[']']
+unset A['[']
+declare -p A
+
+A["]"]=rbracket
+A["["]=lbracket
+declare -p A
+
+unset A["]"]
+unset A["["]
+declare -p A
diff --git a/tests/assoc18.sub b/tests/assoc18.sub
new file mode 100644
index 00000000..05976093
--- /dev/null
+++ b/tests/assoc18.sub
@@ -0,0 +1,59 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# test behavior of builtins that can take array subscript arguments, make
+# sure they work in the presence of associative arrays and `problematic' keys
+# if assoc_expand_once is set
+#
+# affected builtins: printf, read, wait
+
+declare -A A
+rkey=']'
+lkey='['
+
+shopt -s assoc_expand_once
+
+printf -v A[$rkey] rbracket
+printf -v A[$lkey] lbracket
+declare -p A
+
+unset A[$rkey]
+unset A[$lkey]
+declare -p A
+
+unset A
+declare -A A
+
+read A[$rkey] <<<rbracket
+read A[$lkey] <<<lbracket
+declare -p A
+
+unset A[$rkey]
+unset A[$lkey]
+declare -p A
+
+unset A
+declare -A A
+
+{ sleep 1 ; exit 4; } &
+{ sleep 2 ; exit 5; } & bgpid1=$!
+{ sleep 4 ; exit 6; } &
+
+wait -p A[$rkey] -n %2 %3
+case "${A[$rkey]}" in
+$bgpid1) echo $?: ok 1;;
+*) echo bad 1;;
+esac
+
+exit 0
diff --git a/tests/assoc9.sub b/tests/assoc9.sub
index b8867187..f83ac6d5 100644
--- a/tests/assoc9.sub
+++ b/tests/assoc9.sub
@@ -128,3 +128,32 @@ aa[$key]=foo
echo "${aa[$key]}"
[[ -v aa[$key] ]] || echo bad assoc expansion
+
+shopt -u assoc_expand_once
+
+declare -A assoc
+
+var=x123
+assoc['$var']=value
+
+declare -p assoc
+
+unset "assoc[$var]"
+declare -p assoc
+
+unset 'assoc[$var]'
+declare -p assoc
+
+shopt -s assoc_expand_once
+unset 'assoc[$var]'
+declare -p assoc
+
+typeset -A foo
+
+foo["foo]bar"]=bip
+typeset foo["foo]bar"]=bax
+
+echo ${!foo[@]}
+echo ${foo[@]}
+
+declare -p foo
diff --git a/tests/builtins.right b/tests/builtins.right
index 832472f6..4f51d436 100644
--- a/tests/builtins.right
+++ b/tests/builtins.right
@@ -1,3 +1,4 @@
+1000
a
end-1
a
@@ -144,11 +145,11 @@ AVAR
foo
declare -x foo=""
declare -x FOO="\$\$"
-./builtins.tests: line 226: declare: FOO: not found
+./builtins.tests: line 228: declare: FOO: not found
declare -x FOO="\$\$"
ok
ok
-./builtins.tests: line 258: kill: 4096: invalid signal specification
+./builtins.tests: line 260: kill: 4096: invalid signal specification
1
a\n\n\nb
a
@@ -178,10 +179,16 @@ unset2
1
1
1
+0
+0
+assoc A unset
+array a
assoc A
array a
assoc B unset
array b unset
+assoc B unset
+array b unset
scalar 1
scalar 2
scalar 3 unset
@@ -271,4 +278,4 @@ type
+ command -p -- command -v type
type
+ set +x
-./builtins.tests: line 282: exit: status: numeric argument required
+./builtins.tests: line 284: exit: status: numeric argument required
diff --git a/tests/builtins.tests b/tests/builtins.tests
index 00ebc0fd..8eee43e6 100644
--- a/tests/builtins.tests
+++ b/tests/builtins.tests
@@ -15,7 +15,9 @@
set +p
set +o posix
-ulimit -c 0 2>/dev/null
+ulimit -S -c 0 2>/dev/null
+ulimit -c -S -- 1000 2>/dev/null
+ulimit -c 2>/dev/null
# check that break breaks loops
for i in a b c; do echo $i; break; echo bad-$i; done
diff --git a/tests/builtins5.sub b/tests/builtins5.sub
index d36e03a5..4fcf793d 100644
--- a/tests/builtins5.sub
+++ b/tests/builtins5.sub
@@ -36,15 +36,25 @@ echo ${#a[@]}
typeset -A B
typeset -a b
+echo ${#B[@]}
+echo ${#b[@]}
+
scalar1=foo
scalar2=
+# this now checks for A[@] treating @ as a valid key - post-bash-5.1
if [ -v A[@] ]; then echo assoc A; else echo assoc A unset; fi
if [ -v a[@] ]; then echo array a; else echo array a unset; fi
+if [ ${#A[@]} -gt 0 ]; then echo assoc A; else echo assoc A unset; fi
+if [ ${#a[@]} -gt 0 ]; then echo array a; else echo array a unset; fi
+
if [ -v B[@] ]; then echo assoc B; else echo assoc B unset; fi
if [ -v b[@] ]; then echo array b; else echo array b unset; fi
+if [ ${#B[@]} -gt 0 ]; then echo assoc B; else echo assoc B unset; fi
+if [ ${#b[@]} -gt 0 ]; then echo array b; else echo array b unset; fi
+
if [ -v scalar1[@] ]; then echo scalar 1; else echo scalar 1 unset; fi
if [ -v scalar2[@] ]; then echo scalar 2; else echo scalar 2 unset; fi
if [ -v scalar3[@] ]; then echo scalar 3; else echo scalar 3 unset; fi
@@ -71,4 +81,3 @@ echo scalar: ${#scalar3}
echo scalar: ${#scalar3[@]}
-
diff --git a/tests/case.right b/tests/case.right
index 557bcadf..d33c8c5a 100644
--- a/tests/case.right
+++ b/tests/case.right
@@ -14,6 +14,7 @@ no
no
no
ok
+esac
ok 1
ok 2
ok 3
diff --git a/tests/case.tests b/tests/case.tests
index 2ffcb906..7ad4c683 100644
--- a/tests/case.tests
+++ b/tests/case.tests
@@ -62,6 +62,10 @@ case abc in (["$empty"]|[!a-z]*) echo yes ;; (*) echo no ;; esac
case " " in ( [" "] ) echo ok;; ( * ) echo no;; esac
+# posix issue discovered after bash-5.1 was released
+case esac in (esac) echo esac;; esac
+case k in else|done|time|esac) for f in 1 2 3 ; do :; done esac
+
# tests of quote removal and pattern matching
${THIS_SH} ./case1.sub
${THIS_SH} ./case2.sub
diff --git a/tests/complete.right b/tests/complete.right
index 5bc89a05..c8bf1dc0 100644
--- a/tests/complete.right
+++ b/tests/complete.right
@@ -1,41 +1,49 @@
complete -f -X '!*.+(ps|PS)' gs
-complete -c nice
complete -e printenv
-complete -c gdb
complete -f -X '!*.texi*' texi2html
-complete -j -P '%' fg
complete -g groupmod
-complete -f -X '!*.dvi' dvips
-complete -f -X '!*.texi*' texi2dvi
complete -v -S '=' typeset
-complete -f .
complete -c nohup
complete -a unalias
complete -g groupdel
complete -A hostname telnet
-complete -v -S '=' declare
-complete -v -S '=' export
complete -v -S '=' local
complete -v -S '=' readonly
complete -o bashdefault -o filenames -o nospace -F _comp_cd cd
-complete -f -X '!*.dvi' xdvi
complete -c type
complete -f ln
complete -f -X '!*.+(gz|tgz)' gunzip
complete -f -X '!*.texi*' makeinfo
-complete -u su
complete -j -P '%' jobs
-complete -o dirnames -o filenames -o nospace -d popd
-complete -A signal trap
complete -o dirnames -o filenames -o nospace -d pushd
complete -f -X '!*.pdf' acroread
complete -v unset
complete -f -X '!*.+(ps|PS)' ghostview
-complete -j -W '$(ps -x | tail +2 | cut -c1-5)' -P '%' wait
complete -A hostname rsh
complete -c exec
-complete -f -X '!*.Z' zmore
complete -A signal kill
+complete -c eval
+complete -f chown
+complete -f gzip
+complete -W '"${GROUPS[@]}"' newgrp
+complete -A shopt shopt
+complete -A hostname ftp
+complete -A hostname rlogin
+complete -v getopts
+complete -c nice
+complete -c gdb
+complete -j -P '%' fg
+complete -f -X '!*.dvi' dvips
+complete -f -X '!*.texi*' texi2dvi
+complete -f .
+complete -v -S '=' declare
+complete -v -S '=' export
+complete -f -X '!*.dvi' xdvi
+complete -u su
+complete -o dirnames -o filenames -o nospace -d popd
+complete -A signal trap
+complete -j -W '$(ps -x | tail +2 | cut -c1-5)' -P '%' wait
+complete -f -X '!*.Z' zmore
complete -j -P '%' disown
complete -f -X '!*.+(ps|PS)' gs
complete -f -X '!*.+(ps|PS)' gv
@@ -45,19 +53,11 @@ complete -A stopped -P '%' bg
complete -f cat
complete -d mkdir
complete -A helptopic help
-complete -c eval
-complete -f chown
complete -v read
complete -c -k time
complete -f -X '!*.Z' zcat
-complete -f gzip
-complete -W '"${GROUPS[@]}"' newgrp
complete -f -X '!*.Z' uncompress
complete -d rmdir
-complete -A shopt shopt
-complete -A hostname ftp
complete -f more
-complete -A hostname rlogin
-complete -v getopts
complete -f -X '!*.+(gz|tgz)' gzcat
./complete.tests: line 123: complete: notthere: no completion specification
diff --git a/tests/comsub-eof.right b/tests/comsub-eof.right
index 42677985..cd5ab692 100644
--- a/tests/comsub-eof.right
+++ b/tests/comsub-eof.right
@@ -1,15 +1,17 @@
-./comsub-eof0.sub: line 1: unexpected EOF while looking for matching `)'
-./comsub-eof0.sub: line 5: syntax error: unexpected end of file
+./comsub-eof0.sub: line 5: warning: here-document at line 3 delimited by end-of-file (wanted `EOF')
+hi
hi
./comsub-eof2.sub: line 2: warning: here-document at line 1 delimited by end-of-file (wanted `EOF')
hi
-./comsub-eof3.sub: line 1: unexpected EOF while looking for matching `)'
-./comsub-eof3.sub: line 5: syntax error: unexpected end of file
-./comsub-eof4.sub: line 6: warning: here-document at line 4 delimited by end-of-file (wanted `EOF')
+./comsub-eof3.sub: line 4: warning: here-document at line 1 delimited by end-of-file (wanted `EOF')
+./comsub-eof3.sub: line 5: unexpected EOF while looking for matching `)'
+./comsub-eof4.sub: line 3: warning: here-document at line 1 delimited by end-of-file (wanted `EOF')
contents
-./comsub-eof5.sub: line 8: warning: here-document at line 6 delimited by end-of-file (wanted `)')
+./comsub-eof5.sub: line 4: warning: here-document at line 2 delimited by end-of-file (wanted `)')
+hi
+./comsub-eof5.sub: line 9: warning: here-document at line 7 delimited by end-of-file (wanted `EOF')
hi
-./comsub-eof5.sub: line 13: warning: here-document at line 11 delimited by end-of-file (wanted `EOF')
+./comsub-eof5.sub: line 15: warning: here-document at line 13 delimited by end-of-file (wanted `)')
hi
-./comsub-eof6.sub: line 1: unexpected EOF while looking for matching `)'
+./comsub-eof6.sub: command substitution: line 3: unexpected EOF while looking for matching `)'
diff --git a/tests/comsub-eof0.sub b/tests/comsub-eof0.sub
index 7b0775fb..7490faab 100644
--- a/tests/comsub-eof0.sub
+++ b/tests/comsub-eof0.sub
@@ -1,3 +1,5 @@
+# it's only the space before the paren that makes this an error
+# when I fix it, it will show up here
foo=$(cat <<EOF
hi
EOF )
diff --git a/tests/comsub-eof5.sub b/tests/comsub-eof5.sub
index 3da9107e..4bada675 100644
--- a/tests/comsub-eof5.sub
+++ b/tests/comsub-eof5.sub
@@ -7,3 +7,9 @@ echo $(
cat <<\EOF
hi
EOF)
+
+# this is currently an error; if I fix it it will show up here
+echo "$(
+cat <<\)
+hi
+))"
diff --git a/tests/comsub-posix.right b/tests/comsub-posix.right
index 9aebb848..037f0ed2 100644
--- a/tests/comsub-posix.right
+++ b/tests/comsub-posix.right
@@ -5,11 +5,14 @@ ab
abcd
abcd
+mnop
+qrst
sh_352.26ax
sh_352.26ay
sh_352.25a sh_352.25b
sh_352.27 ) ) )
abc
+def
here doc with )
)
bad' syntax
@@ -56,9 +59,8 @@ 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
+./comsub-posix1.sub: line 1: syntax error near unexpected token `)'
+./comsub-posix1.sub: line 1: `echo $( if x; then echo foo )'
swap32_posix is a function
swap32_posix ()
{
@@ -74,5 +76,25 @@ swap32_posix ()
));
done
}
+bash: -c: line 1: syntax error near unexpected token `done'
+bash: -c: line 1: `: $(case x in x) ;; x) done esac)'
+bash: -c: line 1: syntax error near unexpected token `done'
+bash: -c: line 1: `: $(case x in x) ;; x) done ;; esac)'
+bash: -c: line 1: syntax error near unexpected token `esac'
+bash: -c: line 1: `: $(case x in x) (esac) esac)'
+bash: -c: line 1: syntax error near unexpected token `in'
+bash: -c: line 1: `: $(case x in esac|in) foo;; esac)'
+bash: -c: line 1: syntax error near unexpected token `done'
+bash: -c: line 1: `: $(case x in x) ;; x) done)'
+case: -c: line 3: syntax error near unexpected token `esac'
+case: -c: line 3: `$( esac ; bar=foo ; echo "$bar")) echo bad 2;;'
+ok 2
+inside outside
+ok 3
+syntax-error: -c: line 2: syntax error near unexpected token `done'
+syntax-error: -c: line 2: `: $(case x in x) ;; x) done ;; esac)'
yes
+
+
+
ab cde
diff --git a/tests/comsub-posix.tests b/tests/comsub-posix.tests
index 4fe1dfaa..ab7cd295 100644
--- a/tests/comsub-posix.tests
+++ b/tests/comsub-posix.tests
@@ -28,6 +28,11 @@ echo $(
echo $()
echo ab$()cd
echo ab$( )cd
+echo mn$(
+)op
+echo qr$(
+
+ )st
echo $(case a in (a) echo sh_352.26ax; esac )
echo $(case a in (a) echo sh_352.26ay; esac)
@@ -42,6 +47,9 @@ echo $(
echo abc # a comment with )
)
+echo $(#a comment with )
+echo def)
+
echo $(
cat <<eof
here doc with )
@@ -226,11 +234,13 @@ echo $(
)
${THIS_SH} ./comsub-posix1.sub
-
${THIS_SH} ./comsub-posix2.sub
-
${THIS_SH} ./comsub-posix3.sub
+#${THIS_SH} ./comsub-posix4.sub
+${THIS_SH} ./comsub-posix5.sub
+${THIS_SH} ./comsub-posix6.sub
+
# produced a parse error through bash-4.0-beta2
: $(echo foo)"
"
@@ -247,6 +257,12 @@ unset x
: $(case a in a) echo ;; # comment
esac)
+: $(case a in
+ a)
+ echo
+ ;; # comment
+esac)
+
# fixed after bash-4.3 released
testing=$(
echo test | while read line; do
@@ -257,5 +273,14 @@ testing=$(
done
)
+# sanity check for empty comsubs
+echo $()
+echo $(
+)
+
+echo $(
+
+ )
+
# recommended to be parsed as a nested comsub instead of arithsub
echo $(( echo ab cde ) )
diff --git a/tests/comsub-posix1.sub b/tests/comsub-posix1.sub
index bbcc60fb..de6f473a 100644
--- a/tests/comsub-posix1.sub
+++ b/tests/comsub-posix1.sub
@@ -1,3 +1,3 @@
echo $( if x; then echo foo )
-echo after
+echo should not see this
diff --git a/tests/comsub-posix5.sub b/tests/comsub-posix5.sub
new file mode 100644
index 00000000..f10e773a
--- /dev/null
+++ b/tests/comsub-posix5.sub
@@ -0,0 +1,70 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# 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}
+
+# problems with recognzing `esac' after a right paren in a command substitution
+
+: $(case x in x) esac)
+: $(case x in x) ;; x) esac)
+# non-reserved word beginning with e
+: $(case x in x) ;; x) echo ;; esac)
+# reserved word beginning with e
+: $(case x in x) ;; x) eval esac ;; esac)
+
+: $(case x in x ) esac)
+: $(case x in x ) ;; x) esac)
+
+: $(case x in (x) esac)
+: $(case x in (x) ;; (x) esac)
+: $(case x in (x) ;; x) esac)
+: $(case x in (x) (echo a) esac)
+
+: $(case x in (x) (echo esac) esac)
+: $(case x in x) (echo esac) esac)
+
+# these errors should be caught sooner
+${THIS_SH} -c ': $(case x in x) ;; x) done esac)' bash
+${THIS_SH} -c ': $(case x in x) ;; x) done ;; esac)' bash
+${THIS_SH} -c ': $(case x in x) (esac) esac)' bash
+
+# these are not errors
+: $(case x in x) ;; x) eval done ;; esac)
+
+# these are just ridiculous
+: $(case x in (x) a() { echo a; } esac)
+: $(case x in (x) if :; then echo a; fi esac)
+: $(case x in (x) { echo a; } esac)
+: $(case x in (x) while false; do echo a; done esac)
+: $(case x in (x) case y in (y) echo a;; esac esac)
+: $(case x in (x) case y in (y) echo a;; esac ;; (y) foo ;; esac)
+
+: $(case x in x) a() { echo a; } esac)
+: $(case x in x) if :; then echo a; fi esac)
+: $(case x in x) { echo a; } esac)
+: $(case x in x) while false; do echo a; done esac)
+: $(case x in x) case y in (y) echo a;; esac esac)
+: $(case x in x) case y in (y) echo a;; esac ;; y) foo ;; esac)
+: $(case x in x) case y in y) echo a;; esac ;; y) foo ;; esac)
+
+: $(case ni in esac)
+: $(case in in esac)
+
+: $(case x in in|esac) foo;; esac)
+: $(case esac in (esac) echo esac;; esac)
+: $(case k in else|done|time|esac) for f in 1 2 3 ; do :; done esac)
+
+# this is an error
+${THIS_SH} -c ': $(case x in esac|in) foo;; esac)' bash
+
+${THIS_SH} -c ': $(case x in x) ;; x) done)' bash
diff --git a/tests/comsub-posix6.sub b/tests/comsub-posix6.sub
new file mode 100644
index 00000000..212ad204
--- /dev/null
+++ b/tests/comsub-posix6.sub
@@ -0,0 +1,43 @@
+: ${THIS_SH:=./bash}
+
+# comsub should not inherit PST_COMPASSIGN
+
+C=($(echo "${A[@]}" | \
+ (while read -d ' ' i; do
+ C=(${C/ ${i%% *} / })
+ done
+ echo ${C[@]})))
+
+# comsub should not inherit PST_CASEPAT
+
+${THIS_SH} -c '
+case foo in
+$( esac ; bar=foo ; echo "$bar")) echo bad 2;;
+*) echo ok 2;;
+esac
+
+echo we should not see this' case
+
+# comsub should not inherit PST_SUBSHELL
+
+${THIS_SH} -c '( case foo in
+ ( $(echo foo | cat )) echo ok 2;;
+ *) echo bad 2;;
+ esac
+
+ echo $( echo inside ) outside )' subshell
+
+# comsub should not inherit PST_REDIRLIST
+
+${THIS_SH} -c '
+{fd}</dev/null {fd2}<$(foo=/dev/null ; echo $foo) exec
+case $fd2 in
+[0-9]*) echo ok 3 ;;
+*) echo bad 3 ;;
+esac' redirlist
+
+# comsub should exit on syntax error while parsing
+${THIS_SH} -c '
+: $(case x in x) ;; x) done ;; esac)
+
+echo after syntax error' syntax-error
diff --git a/tests/comsub.right b/tests/comsub.right
index a329c832..eae8c3b2 100644
--- a/tests/comsub.right
+++ b/tests/comsub.right
@@ -19,6 +19,7 @@ argv[1] = <sed> argv[2] = <-e> argv[3] = <s/[^I:]//g>
argv[1] = <foo\^Jbar>
argv[1] = <foobar>
argv[1] = <foo\^Jbar>
+nested
#esac
a
ok 1
@@ -55,3 +56,24 @@ d \
g
d \
g
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+ok 7
+ok 9
+ok 8
+ok 8
+Mon Aug 29 20:03:02 EDT 2022
+post foo
+Mon Aug 29 20:03:02 EDT 2022
+post foo1
+Mon Aug 29 20:03:02 EDT 2022
+Mon Aug 29 20:03:02 EDT 2022 after
+7
+Mon Aug 29 20:03:02 EDT 2022
+hey after x
+./comsub6.sub: line 40: syntax error near unexpected token `)'
+./comsub6.sub: line 40: `math1)'
diff --git a/tests/comsub.tests b/tests/comsub.tests
index 47863024..698ce30b 100644
--- a/tests/comsub.tests
+++ b/tests/comsub.tests
@@ -69,7 +69,16 @@ comsub_foo_1()
echo $(while true; do case $HOME in /*) echo abs ;; esac; done)
}
+echo $(
+echo $(
+echo $(echo $( echo nested )
+)
+)
+)
+
${THIS_SH} ./comsub1.sub
${THIS_SH} ./comsub2.sub
${THIS_SH} ./comsub3.sub
${THIS_SH} ./comsub4.sub
+${THIS_SH} ./comsub5.sub
+${THIS_SH} ./comsub6.sub
diff --git a/tests/comsub5.sub b/tests/comsub5.sub
new file mode 100644
index 00000000..cc83374c
--- /dev/null
+++ b/tests/comsub5.sub
@@ -0,0 +1,51 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# this is a new feature: expanding aliases when initially parsing command
+# substitutions. required by posix, so enabled in posix mode. default mode
+# stays backwards compatible.
+
+shopt -s expand_aliases
+set -o posix
+
+alias switch=case
+
+switch foo in foo) echo ok 1;; esac
+
+echo $( switch foo in foo) echo ok 2;; esac )
+echo "$( switch foo in foo) echo ok 3;; esac )"
+
+echo $( switch foo in (foo) echo ok 4;; esac )
+echo "$( switch foo in (foo) echo ok 5;; esac )"
+
+alias nest='('
+
+echo $( nest echo ok 6 ) )
+echo "$( nest echo ok 7 ) )"
+
+alias short='echo ok 8 )'
+
+alias DO='{ '
+alias DONE='}'
+got=$(DO
+echo ok 9; DONE)
+echo "$got"
+
+echo $( short
+echo "$( short "
+
+# remember that short" won't work because you start a new quoting context
+# inside $( and the token (`short') won't be delimited by the ending double
+# quote, so there's no opportunity to perform the alias expansion that would
+# terminate the command substitution
diff --git a/tests/comsub6.sub b/tests/comsub6.sub
new file mode 100644
index 00000000..d2b02bf4
--- /dev/null
+++ b/tests/comsub6.sub
@@ -0,0 +1,40 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+DATE='Mon Aug 29 20:03:02 EDT 2022'
+shopt -s expand_aliases
+
+alias foo='echo $(echo $DATE)'
+alias foo1='echo $(echo $DATE) '
+
+foo
+echo post foo
+
+foo1
+echo post foo1
+
+alias comsub0='echo $(echo $DATE'
+comsub0)
+comsub0 ) after
+
+alias math0='echo $(( 4+3 )'
+math0)
+
+alias x='VAR=$(echo hey)'
+x
+foo
+
+echo $VAR after x
+
+alias math1='echo $( date )'
+math1)
diff --git a/tests/cond.right b/tests/cond.right
index 59a4a886..a72a1537 100644
--- a/tests/cond.right
+++ b/tests/cond.right
@@ -2,6 +2,10 @@ returns: 0
returns: 0
returns: 1
returns: 0
+1
+0
+1
+0
returns: 0
returns: 0
returns: 0
@@ -23,10 +27,12 @@ returns: 0
returns: 1
returns: 1
returns: 0
-./cond.tests: line 114: [[: 4+: syntax error: operand expected (error token is "+")
+./cond.tests: line 122: [[: 4+: syntax error: operand expected (error token is "+")
returns: 1
returns: 0
returns: 0
+returns: 0
+returns: 0
returns: 1
returns: 0
returns: 0
diff --git a/tests/cond.tests b/tests/cond.tests
index aa6a8104..c0747e98 100644
--- a/tests/cond.tests
+++ b/tests/cond.tests
@@ -33,6 +33,14 @@ echo returns: $?
[[ ! x || x ]]
echo returns: $?
+# ! toggles on and off rather than just setting an `invert result' flag
+# this differs from ksh93
+[[ ! 1 -eq 1 ]]; echo $?
+[[ ! ! 1 -eq 1 ]]; echo $?
+
+[[ ! ! ! 1 -eq 1 ]]; echo $?
+[[ ! ! ! ! 1 -eq 1 ]]; echo $?
+
# parenthesized terms didn't work right until post-2.04
[[ a ]]
echo returns: $?
@@ -122,6 +130,13 @@ A=7
[[ $IVAR -eq A ]]
echo returns: $?
+[[ "$IVAR" -eq "7" ]]
+echo returns: $?
+
+A=7
+[[ "$IVAR" -eq "A" ]]
+echo returns: $?
+
unset IVAR A
# more pattern matching tests
@@ -207,6 +222,9 @@ del=$'\177'
[[ "" == "$foo" ]] && echo ok 4
[[ "$del" == "${foo,,}" ]] || echo ok 5
+# allow reserved words after a conditional command just because
+if [[ str ]] then [[ str ]] fi
+
${THIS_SH} ./cond-regexp1.sub
${THIS_SH} ./cond-regexp2.sub
diff --git a/tests/cprint.right b/tests/cprint.right
index 20000724..269136dc 100644
--- a/tests/cprint.right
+++ b/tests/cprint.right
@@ -19,7 +19,7 @@ tf ()
i=$(( i + 1 ));
done;
[[ -r /dev/fd/0 && -w /dev/fd/1 ]] || echo oops > /dev/null;
- for name in $( echo 1 2 3 );
+ for name in $(echo 1 2 3);
do
test -r /dev/fd/$name;
done;
diff --git a/tests/dollar-at-star b/tests/dollar-at-star
index d4808989..721eea12 100755..100644
--- a/tests/dollar-at-star
+++ b/tests/dollar-at-star
@@ -1,3 +1,17 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
# first, let's start with the basics
recho "$@"
@@ -246,6 +260,11 @@ ${THIS_SH} ./dollar-at-star8.sub
# with different values for IFS
${THIS_SH} ./dollar-at-star9.sub
+# tests for expansions of "$*" and "$@" and their array equivalents when $1 == ''
+# and we're using the POSIX word expansions
+${THIS_SH} ./dollar-at-star10.sub
+${THIS_SH} ./dollar-at-star11.sub
+
# tests for special expansion of "$*" and "${array[*]}" when used with other
# expansions -- bugs through bash-2.05b
${THIS_SH} ./dollar-star1.sub
diff --git a/tests/dollar-at-star10.sub b/tests/dollar-at-star10.sub
new file mode 100644
index 00000000..6b52b015
--- /dev/null
+++ b/tests/dollar-at-star10.sub
@@ -0,0 +1,66 @@
+# checks for array variables and positional parameter expansions losing quoted
+# null string expansions -- problem through bash-5.1
+
+set -- ''
+myvar[0]=
+a="${myvar[*]}"
+
+recho "$*"
+recho "${*}"
+
+recho "${a}"
+recho "${myvar[*]}"
+
+recho "${a:+nonnull}"
+recho "${myvar[*]:+nonnull}"
+
+a="${myvar[@]}"
+
+recho "$@"
+recho "${@}"
+
+recho "${a}"
+recho "${myvar[@]}"
+
+recho "${a:+nonnull}"
+recho "${myvar[@]:+nonnull}"
+
+# check to make sure literal CTLNULs are handled correctly
+set -- $'\x7f'
+
+recho "$@"
+recho "${@}"
+recho "${@:+nonnull}"
+
+recho "$*"
+recho "${*}"
+recho "${*:+nonnull}"
+
+shift $#
+
+# these should echo nothing
+recho "${@}"
+recho "${@:+nonnull}"
+
+unset -v a
+
+# make sure that other null expansions result in null strings where appropriate
+set -- ''
+a[0]=
+
+recho "$*"$x
+recho "${*}"$x
+
+recho "$@"$x
+recho "${@}"$x
+
+recho "${a[*]}"$x
+recho "${a[@]}"$x
+
+
+recho "$@"$x
+recho "${@}"$x
+
+recho "${a[*]}"
+recho "${a[@]}"
+
diff --git a/tests/dollar-at-star11.sub b/tests/dollar-at-star11.sub
new file mode 100644
index 00000000..b7a6ec46
--- /dev/null
+++ b/tests/dollar-at-star11.sub
@@ -0,0 +1,80 @@
+a[0]='/'
+set -- /
+
+# these should all result in the empty (null) string
+
+recho "${a[0]%?}"
+recho "${a[*]%?}"
+recho "${a[@]%?}"
+
+recho "${*%?}"
+recho "${@%?}"
+
+recho "${a[0]#?}"
+recho "${a[*]#?}"
+recho "${a[@]#?}"
+
+recho "${*#?}"
+recho "${@#?}"
+
+recho "${a[0]/\//}"
+recho "${a[*]/\//}"
+recho "${a[@]/\//}"
+
+recho "${*/\//}"
+recho "${@/\//}"
+
+recho "${a[0]:1:1}"
+# these next four will all echo /
+
+# arrays are zero-based
+recho "${a[*]:0:1}"
+recho "${a[@]:0:1}"
+# but the positional parameters start at 1
+recho "${*:1:1}"
+recho "${@:1:1}"
+
+a[0]=''
+set -- ''
+
+# arrays are zero-based
+recho "${a[*]:0:1}"
+recho "${a[@]:0:1}"
+
+recho "${*:1:1}"
+recho "${@:1:1}"
+
+# these should all result in the empty (null) string, or quoted as such
+
+recho "${a[0]@Q}"
+recho "${a[*]@Q}"
+recho "${a[@]@Q}"
+
+recho "${*@Q}"
+recho "${@@Q}"
+
+recho "${a[0]@L}"
+recho "${a[*]@L}"
+recho "${a[@]@L}"
+
+recho "${*@L}"
+recho "${@@L}"
+
+# examples from the bug report
+unset -v a
+
+a[0]='/'
+for i in "${a[@]%/}"; do recho "$i"; done
+
+a[0]=''
+for i in "${a[@]}"; do recho "$i"; done
+
+a[0]='/'
+a[1]="//"
+for i in "${a[@]%/}"; do recho "$i"; done
+
+unset -v x y
+x=('/')
+y=("${x[@]%/}")
+
+echo "${#x[@]}:${#y[@]}"
diff --git a/tests/dollar.right b/tests/dollar.right
index 09910d7e..10c5cca1 100644
--- a/tests/dollar.right
+++ b/tests/dollar.right
@@ -399,6 +399,73 @@ argv[1] = <^?>
argv[1] = <^?>
argv[1] = <>
argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <nonnull>
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <nonnull>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = </>
+argv[1] = </>
+argv[1] = </>
+argv[1] = </>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <''>
+argv[1] = <''>
+argv[1] = <''>
+argv[1] = <''>
+argv[1] = <''>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = </>
+1:1
xa|xb|xc
xa|xb|xc
a|b|c
diff --git a/tests/dynvar.tests b/tests/dynvar.tests
index 5aefab64..ddf69ed1 100644
--- a/tests/dynvar.tests
+++ b/tests/dynvar.tests
@@ -50,15 +50,27 @@ unset before after
# EPOCHSECONDS
# not exact, but should work
-# could also use python -c 'import time; ts = int(time.time()); print(ts)'
-now1=$(perl -e 'print time')
+# date +%s should be portable enough now
+# then try gawk, perl, python in that order
+now1=$(date +%s 2>/dev/null) D=date
+[ -z "$now1" ] &&
+{
+ now1=$(gawk 'BEGIN { print systime(); }' 2>/dev/null) D=gawk
+ [ -z "$now1" ] && now1=$(perl -e 'print time' 2>/dev/null) D=perl
+ [ -z "$now1" ] && now1=$(python -c 'import time; ts = int(time.time()); print(ts)' 2>/dev/null) D=python
+}
now2=$EPOCHSECONDS
-case $now1 in
-$now2) echo EPOCHSECONDS ok ;;
-*) echo "current time via perl and EPOCHSECONDS possible mismatch|$now1|$now2" >&2 ;;
-esac
-unset now1 now2
+# use a window of +-1 second
+offset=1
+if [[ -z $now1 ]]; then
+ echo "cannot get current time using date/gawk/perl/python" >&2
+elif (( $now1 - $offset <= $now2 && $now2 <= $now1 + $offset )); then
+ echo EPOCHSECONDS ok
+else
+ echo "current time via $D and EPOCHSECONDS possible mismatch|$now1|$now2|offset=$offset" >&2
+fi
+unset now1 now2 D
LC_ALL=C # force decimal point to `.'
now1=$EPOCHREALTIME
diff --git a/tests/errors.right b/tests/errors.right
index be0c8959..0bd88efb 100644
--- a/tests/errors.right
+++ b/tests/errors.right
@@ -11,93 +11,95 @@ declare -fr func
unset: usage: unset [-f] [-v] [-n] [name ...]
./errors.tests: line 55: unset: func: cannot unset: readonly function
./errors.tests: line 58: declare: func: readonly function
-./errors.tests: line 62: unset: XPATH: cannot unset: readonly variable
-./errors.tests: line 68: unset: cannot simultaneously unset a function and a variable
-./errors.tests: line 71: declare: -z: invalid option
-declare: usage: declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]
-./errors.tests: line 73: declare: `-z': not a valid identifier
-./errors.tests: line 74: declare: `/bin/sh': not a valid identifier
-./errors.tests: line 78: declare: cannot use `-f' to make functions
-./errors.tests: line 81: exec: -i: invalid option
+./errors.tests: line 62: declare: -a: invalid option
+./errors.tests: line 63: declare: -i: invalid option
+./errors.tests: line 67: unset: XPATH: cannot unset: readonly variable
+./errors.tests: line 73: unset: cannot simultaneously unset a function and a variable
+./errors.tests: line 76: declare: -z: invalid option
+declare: usage: declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]
+./errors.tests: line 78: declare: `-z': not a valid identifier
+./errors.tests: line 79: declare: `/bin/sh': not a valid identifier
+./errors.tests: line 83: declare: cannot use `-f' to make functions
+./errors.tests: line 86: exec: -i: invalid option
exec: usage: exec [-cl] [-a name] [command [argument ...]] [redirection ...]
-./errors.tests: line 85: export: XPATH: not a function
-./errors.tests: line 88: break: only meaningful in a `for', `while', or `until' loop
-./errors.tests: line 89: continue: only meaningful in a `for', `while', or `until' loop
-./errors.tests: line 92: shift: label: numeric argument required
-./errors.tests: line 97: shift: too many arguments
-./errors.tests: line 103: let: expression expected
-./errors.tests: line 106: local: can only be used in a function
-./errors.tests: line 109: logout: not login shell: use `exit'
-./errors.tests: line 112: hash: notthere: not found
-./errors.tests: line 115: hash: -v: invalid option
+./errors.tests: line 90: export: XPATH: not a function
+./errors.tests: line 93: break: only meaningful in a `for', `while', or `until' loop
+./errors.tests: line 94: continue: only meaningful in a `for', `while', or `until' loop
+./errors.tests: line 97: shift: label: numeric argument required
+./errors.tests: line 102: shift: too many arguments
+./errors.tests: line 108: let: expression expected
+./errors.tests: line 111: local: can only be used in a function
+./errors.tests: line 114: logout: not login shell: use `exit'
+./errors.tests: line 117: hash: notthere: not found
+./errors.tests: line 120: hash: -v: invalid option
hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
-./errors.tests: line 119: hash: hashing disabled
-./errors.tests: line 122: export: `AA[4]': not a valid identifier
-./errors.tests: line 123: readonly: `AA[4]': not a valid identifier
-./errors.tests: line 126: unset: [-2]: bad array subscript
-./errors.tests: line 130: AA: readonly variable
-./errors.tests: line 134: AA: readonly variable
-./errors.tests: line 142: shift: 5: shift count out of range
-./errors.tests: line 143: shift: -2: shift count out of range
-./errors.tests: line 146: shopt: no_such_option: invalid shell option name
-./errors.tests: line 147: shopt: no_such_option: invalid shell option name
-./errors.tests: line 150: umask: 09: octal number out of range
-./errors.tests: line 151: umask: `:': invalid symbolic mode character
-./errors.tests: line 152: umask: `:': invalid symbolic mode operator
-./errors.tests: line 155: umask: -i: invalid option
+./errors.tests: line 124: hash: hashing disabled
+./errors.tests: line 127: export: `AA[4]': not a valid identifier
+./errors.tests: line 128: readonly: `AA[4]': not a valid identifier
+./errors.tests: line 131: unset: [-2]: bad array subscript
+./errors.tests: line 135: AA: readonly variable
+./errors.tests: line 139: AA: readonly variable
+./errors.tests: line 147: shift: 5: shift count out of range
+./errors.tests: line 148: shift: -2: shift count out of range
+./errors.tests: line 151: shopt: no_such_option: invalid shell option name
+./errors.tests: line 152: shopt: no_such_option: invalid shell option name
+./errors.tests: line 155: umask: 09: octal number out of range
+./errors.tests: line 156: umask: `:': invalid symbolic mode character
+./errors.tests: line 157: umask: `:': invalid symbolic mode operator
+./errors.tests: line 160: umask: -i: invalid option
umask: usage: umask [-p] [-S] [mode]
-./errors.tests: line 159: umask: `u': invalid symbolic mode character
-./errors.tests: line 168: VAR: readonly variable
-./errors.tests: line 171: declare: VAR: readonly variable
-./errors.tests: line 172: declare: VAR: readonly variable
-./errors.tests: line 174: declare: unset: not found
-./errors.tests: line 177: VAR: readonly variable
-./errors.tests: command substitution: line 181: syntax error near unexpected token `)'
-./errors.tests: command substitution: line 181: ` for z in 1 2 3; do )'
-./errors.tests: command substitution: line 182: syntax error near unexpected token `done'
-./errors.tests: command substitution: line 182: ` for z in 1 2 3; done )'
-./errors.tests: line 184: cd: HOME not set
-./errors.tests: line 185: cd: /tmp/xyz.bash: No such file or directory
-./errors.tests: line 187: cd: OLDPWD not set
-./errors.tests: line 188: cd: /bin/sh: Not a directory
-./errors.tests: line 190: cd: /tmp/cd-notthere: No such file or directory
-./errors.tests: line 193: .: filename argument required
+./errors.tests: line 164: umask: `u': invalid symbolic mode character
+./errors.tests: line 173: VAR: readonly variable
+./errors.tests: line 176: declare: VAR: readonly variable
+./errors.tests: line 177: declare: VAR: readonly variable
+./errors.tests: line 179: declare: unset: not found
+./errors.tests: line 182: VAR: readonly variable
+comsub: -c: line 1: syntax error near unexpected token `)'
+comsub: -c: line 1: `: $( for z in 1 2 3; do )'
+comsub: -c: line 1: syntax error near unexpected token `done'
+comsub: -c: line 1: `: $( for z in 1 2 3; done )'
+./errors.tests: line 189: cd: HOME not set
+./errors.tests: line 190: cd: /tmp/xyz.bash: No such file or directory
+./errors.tests: line 192: cd: OLDPWD not set
+./errors.tests: line 193: cd: /bin/sh: Not a directory
+./errors.tests: line 195: cd: /tmp/cd-notthere: No such file or directory
+./errors.tests: line 198: .: filename argument required
.: usage: . filename [arguments]
-./errors.tests: line 194: source: filename argument required
+./errors.tests: line 199: source: filename argument required
source: usage: source filename [arguments]
-./errors.tests: line 197: .: -i: invalid option
+./errors.tests: line 202: .: -i: invalid option
.: usage: . filename [arguments]
-./errors.tests: line 200: set: -q: invalid option
-set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
-./errors.tests: line 203: enable: sh: not a shell builtin
-./errors.tests: line 203: enable: bash: not a shell builtin
-./errors.tests: line 206: shopt: cannot set and unset shell options simultaneously
-./errors.tests: line 209: read: var: invalid timeout specification
-./errors.tests: line 212: read: `/bin/sh': not a valid identifier
-./errors.tests: line 215: VAR: readonly variable
-./errors.tests: line 218: readonly: -x: invalid option
+./errors.tests: line 205: set: -q: invalid option
+set: usage: set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]
+./errors.tests: line 208: enable: sh: not a shell builtin
+./errors.tests: line 208: enable: bash: not a shell builtin
+./errors.tests: line 211: shopt: cannot set and unset shell options simultaneously
+./errors.tests: line 214: read: var: invalid timeout specification
+./errors.tests: line 217: read: `/bin/sh': not a valid identifier
+./errors.tests: line 220: VAR: readonly variable
+./errors.tests: line 223: readonly: -x: invalid option
readonly: usage: readonly [-aAf] [name[=value] ...] or readonly -p
-./errors.tests: line 221: eval: -i: invalid option
+./errors.tests: line 226: eval: -i: invalid option
eval: usage: eval [arg ...]
-./errors.tests: line 222: command: -i: invalid option
+./errors.tests: line 227: command: -i: invalid option
command: usage: command [-pVv] command [arg ...]
-./errors.tests: line 225: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
-./errors.tests: line 226: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
-./errors.tests: line 229: trap: NOSIG: invalid signal specification
-./errors.tests: line 232: trap: -s: invalid option
+./errors.tests: line 230: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
+./errors.tests: line 231: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
+./errors.tests: line 234: trap: NOSIG: invalid signal specification
+./errors.tests: line 237: trap: -s: invalid option
trap: usage: trap [-lp] [[arg] signal_spec ...]
-./errors.tests: line 238: return: can only `return' from a function or sourced script
-./errors.tests: line 242: break: 0: loop count out of range
-./errors.tests: line 246: continue: 0: loop count out of range
-./errors.tests: line 251: builtin: bash: not a shell builtin
-./errors.tests: line 255: bg: no job control
-./errors.tests: line 256: fg: no job control
-./errors.tests: line 259: kill: -s: option requires an argument
-./errors.tests: line 261: kill: S: invalid signal specification
-./errors.tests: line 263: kill: `': not a pid or valid job spec
+./errors.tests: line 243: return: can only `return' from a function or sourced script
+./errors.tests: line 247: break: 0: loop count out of range
+./errors.tests: line 251: continue: 0: loop count out of range
+./errors.tests: line 256: builtin: bash: not a shell builtin
+./errors.tests: line 260: bg: no job control
+./errors.tests: line 261: fg: no job control
+./errors.tests: line 264: kill: -s: option requires an argument
+./errors.tests: line 266: kill: S: invalid signal specification
+./errors.tests: line 268: kill: `': not a pid or valid job spec
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
-./errors.tests: line 268: set: trackall: invalid option name
-./errors.tests: line 272: xx: readonly variable
+./errors.tests: line 273: set: trackall: invalid option name
+./errors.tests: line 277: xx: readonly variable
1
./errors1.sub: line 14: .: -i: invalid option
.: usage: . filename [arguments]
@@ -174,14 +176,14 @@ after non-special builtin: 0
./errors7.sub: line 25: x: readonly variable
after special builtin: 0
./errors7.sub: line 27: x: readonly variable
+./errors7.sub: line 29: x: readonly variable
./errors7.sub: line 21: x: readonly variable
-./errors7.sub: line 21: notthere: command not found
-after no such command: 127
+after no such command: 1
./errors7.sub: line 23: x: readonly variable
-echo builtin
-after non-special builtin: 0
+after non-special builtin: 1
./errors7.sub: line 25: x: readonly variable
./errors7.sub: line 27: x: readonly variable
+./errors7.sub: line 29: x: readonly variable
./errors8.sub: eval: line 7: syntax error: unexpected end of file
ok 1
./errors8.sub: line 8: v: readonly variable
@@ -194,7 +196,13 @@ ok 4
ok 5
./errors8.sub: line 14: set: notanoption: invalid option name
ok 6
+DEBUG
+./errors9.sub: line 6: [[: ++: syntax error: operand expected (error token is "+")
+DEBUG
+./errors9.sub: line 8: ((: -- : syntax error: operand expected (error token is "- ")
+DEBUG
+./errors9.sub: line 10: ((: -- : syntax error: operand expected (error token is "- ")
bash: line 1: return: can only `return' from a function or sourced script
after return
bash: line 1: return: can only `return' from a function or sourced script
-./errors.tests: line 299: `!!': not a valid identifier
+./errors.tests: line 305: `!!': not a valid identifier
diff --git a/tests/errors.tests b/tests/errors.tests
index 531b625b..0880bb55 100644
--- a/tests/errors.tests
+++ b/tests/errors.tests
@@ -57,6 +57,11 @@ unset -f func
declare -fr func
declare -f +r func
+# cannot use declare -f in combination with other attributes
+a() { echo a; }
+declare -f -a a
+declare -f -i b c
+
XPATH=$PATH
declare -r XPATH
unset -v XPATH
@@ -176,9 +181,9 @@ declare -p unset
# iteration variable in a for statement being readonly
for VAR in 1 2 3 ; do echo $VAR; done
-# parser errors
-: $( for z in 1 2 3; do )
-: $( for z in 1 2 3; done )
+# parser errors; caught early so we have to run them in subshells
+${THIS_SH} -c ': $( for z in 1 2 3; do )' comsub
+${THIS_SH} -c ': $( for z in 1 2 3; done )' comsub
# various `cd' errors
( unset HOME ; cd )
@@ -287,6 +292,7 @@ ${THIS_SH} ./errors7.sub
${THIS_SH} -o posix ./errors7.sub
${THIS_SH} ./errors8.sub
+${THIS_SH} ./errors9.sub
${THIS_SH} -c 'return ; echo after return' bash
${THIS_SH} -o posix -c 'return ; echo after return' bash
diff --git a/tests/errors7.sub b/tests/errors7.sub
index add8782a..544e3e4c 100644
--- a/tests/errors7.sub
+++ b/tests/errors7.sub
@@ -26,3 +26,5 @@ echo after non-special builtin: $?
echo after special builtin: $? )
( x=8 $nocmd
echo after assignment error: $? )
+( x=8
+echo after assignment statement error: $? )
diff --git a/tests/errors9.sub b/tests/errors9.sub
new file mode 100644
index 00000000..3a267046
--- /dev/null
+++ b/tests/errors9.sub
@@ -0,0 +1,14 @@
+trap 'echo DEBUG' DEBUG
+
+# make sure that the right command name appears in the error messages and
+# that the DEBUG trap doesn't overwrite it
+
+[[ ++ -gt 3 ]]
+
+(( -- ))
+
+for (( -- ; ++; -- ))
+do
+ echo bogus
+done
+
diff --git a/tests/exec.right b/tests/exec.right
index 0a249dda..ef02fbb4 100644
--- a/tests/exec.right
+++ b/tests/exec.right
@@ -20,8 +20,17 @@ after exec1.sub: one two three
126
0
this is bashenv
-./exec3.sub: line 3: /tmp/bash-notthere: No such file or directory
-127
+trap -- 'echo EXIT' EXIT
+trap -- '' SIGTERM
+trap -- 'echo USR1' SIGUSR1
+USR1
+./exec3.sub: line 27: /tmp/bash-notthere: No such file or directory
+./exec3.sub: after failed exec: 127
+trap -- 'echo EXIT' EXIT
+trap -- '' SIGTERM
+trap -- 'echo USR1' SIGUSR1
+USR1
+EXIT
./execscript: line 71: notthere: No such file or directory
127
./execscript: line 74: notthere: No such file or directory
@@ -133,3 +142,31 @@ w
x
y
z
+=====
+WORKS
+done
+WORKS
+a
+b
+c
+d
+a
+b
+c
+d
+e
+A
+B
+c
+d
+c
+d
+e
+x
+y
+z
+WORKS
+w
+x
+y
+z
diff --git a/tests/exec14.sub b/tests/exec14.sub
index 3402fb95..eddd33fa 100644
--- a/tests/exec14.sub
+++ b/tests/exec14.sub
@@ -45,3 +45,20 @@ $THIS_SH -c '$binecho c && $binecho d && echo e'
$THIS_SH -c 'trap "echo WORKS" EXIT ; $binecho x ; $binecho y ; $binecho z'
${THIS_SH} -c 'echo w ; { echo x ; $binecho y; }; $binecho z'
+
+echo =====
+
+( trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ )
+( trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ ; $binecho done )
+
+( echo a && { $binecho b && $binecho c ; } && echo d )
+( echo a && { $binecho b && $binecho c ; } && echo d ; $binecho e )
+
+( echo A && $binecho B )
+( $binecho c && echo d )
+
+( $binecho c && $binecho d && echo e )
+
+( trap "echo WORKS" EXIT ; $binecho x ; $binecho y ; $binecho z )
+
+( echo w ; { echo x ; $binecho y; }; $binecho z )
diff --git a/tests/exec3.sub b/tests/exec3.sub
index 4f2f8e21..81b53b72 100644
--- a/tests/exec3.sub
+++ b/tests/exec3.sub
@@ -1,6 +1,37 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# test the behavior of `execfail' not exiting an interactive shell
+# added tests for changes in 10/2021 for preserving the traps across a failed
+# exec
+
shopt -s execfail
+trap 'echo EXIT' EXIT
+trap 'echo USR1' USR1
+trap '' TERM
+trap
+
+kill -s USR1 $$ # should run the trap
+
exec /tmp/bash-notthere
+
# make sure we're still around
-echo $?
+echo $0: after failed exec: $?
+
+trap
+kill -s USR1 $$ # should run the trap
+kill -s TERM $$ # should still be ignored
+# this should run the exit trap
+exit 0
diff --git a/tests/exp.right b/tests/exp.right
index 4e88ca9b..60241a1d 100644
--- a/tests/exp.right
+++ b/tests/exp.right
@@ -227,15 +227,16 @@ argv[2] = <Y>
argv[1] = <XY^AY>
argv[1] = <x^Ay^?z>
argv[1] = <x^Ay^?z>
-declare -- var="xyz"
+declare -- var=$'x\001y\177z'
argv[1] = <declare>
argv[2] = <-->
-argv[3] = <var="x^Ay^?z">
+argv[3] = <var=$'x\001y\177z'>
+var=x\001y\177z$
declare -- var="x\001y\177z"$
argv[1] = <$'x\001y\177z'>
argv[1] = <x^Ay^?z>
var=$'x\001y\177z'
-./exp8.sub: line 29: xyz: syntax error: invalid arithmetic operator (error token is "z")
+./exp8.sub: line 30: xyz: syntax error: invalid arithmetic operator (error token is "z")
declare -a array=()
declare -a array=([0]=$'x\001y\177z')
argv[1] = <x^Ay^?z>
@@ -408,3 +409,11 @@ cdefg
abcdefg
abcde
abcdefg
+foo
+declare -- a="foo"
+7
+declare -i a="7"
+42
+declare -- a="42"
+FOO
+declare -u A="FOO"
diff --git a/tests/exp.tests b/tests/exp.tests
index 3e69db4f..61a39d3b 100644
--- a/tests/exp.tests
+++ b/tests/exp.tests
@@ -423,3 +423,4 @@ ${THIS_SH} ./exp9.sub
${THIS_SH} ./exp10.sub
${THIS_SH} ./exp11.sub
${THIS_SH} ./exp12.sub
+${THIS_SH} ./exp13.sub
diff --git a/tests/exp13.sub b/tests/exp13.sub
new file mode 100644
index 00000000..80e14635
--- /dev/null
+++ b/tests/exp13.sub
@@ -0,0 +1,34 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+unset a
+
+echo ${a:=foo}
+declare -p a
+
+unset a
+
+declare -i a
+echo ${a:=4+3}
+declare -p a
+
+unset a
+echo ${a:=42}
+declare -p a
+
+unset a
+declare -u A
+A=
+echo ${A:=foo}
+
+declare -p A
diff --git a/tests/exp8.sub b/tests/exp8.sub
index 4c2870ca..7dd5a286 100644
--- a/tests/exp8.sub
+++ b/tests/exp8.sub
@@ -19,7 +19,8 @@ recho $var
declare -p var
recho $(declare -p var)
-declare -p var | sed -n l
+echo "var=$var" | sed -n l
+echo "declare -- var=\"$var\"" | sed -n l
recho ${var@Q}
recho ${var@P}
diff --git a/tests/exportfunc.right b/tests/exportfunc.right
index ff7fc8d9..890bdfa4 100644
--- a/tests/exportfunc.right
+++ b/tests/exportfunc.right
@@ -4,7 +4,7 @@ exportfunc ok 2
./exportfunc.tests: eval: line 44: syntax error: unexpected end of file
./exportfunc.tests: line 43: cve7169-bad2: No such file or directory
./exportfunc1.sub: line 14: maximum here-document count exceeded
-./exportfunc.tests: line 64: HELLO_WORLD: No such file or directory
+./exportfunc.tests: line 72: HELLO_WORLD: No such file or directory
eval ok
./exportfunc3.sub: line 23: export: foo=bar: cannot export
status: 1
diff --git a/tests/exportfunc.tests b/tests/exportfunc.tests
index b2742d2c..d06b1a33 100644
--- a/tests/exportfunc.tests
+++ b/tests/exportfunc.tests
@@ -50,10 +50,18 @@ ${THIS_SH} ./exportfunc1.sub
${THIS_SH} ./exportfunc2.sub
# CVE-2014-6277
+A100=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+A1000=${A100}
+
+for (( i = 0; i < 999; i++ ))
+do
+ A1000+=${A100}
+done
env BASH_FUNC_foo%%="() { 000(){>0;}&000(){ 0;}<<0 0" ${THIS_SH} -c foo 2>/dev/null
-env BASH_FUNC_foo%%="() { 000(){>0;}&000(){ 0;}<<`perl -e '{print "A"x100000}'` 0" ${THIS_SH} -c foo 2>/dev/null
+env BASH_FUNC_foo%%="() { 000(){>0;}&000(){ 0;}<<${A1000} 0" ${THIS_SH} -c foo 2>/dev/null
${THIS_SH} -c "f(){ x(){ _;}; x(){ _;}<<a;}" 2>/dev/null
+unset A100 A1000
# CVE-2014-6278
diff --git a/tests/extglob.right b/tests/extglob.right
index 691f6879..2974ceca 100644
--- a/tests/extglob.right
+++ b/tests/extglob.right
@@ -92,16 +92,16 @@ a ab
a ab
a ab
a
-. ..
-. .. a.log
+*(.)
+a.log
*(foo)
*(foo|bar)
a.log
?(foo)
a.log
a.log
-. ..
-. ..
+*(foo).*
+*(foo|bar).*
a.log
a.log
.x .y .z
@@ -114,3 +114,71 @@ a b c
.x .y .z a b c
.x .y .z a b c
*
+.b a
+.b a
+a .b
+.b
+.b
+.b a
+.b a
+a .b
+.b
+.b
+dotglob: .a .foo bar
+@(.foo)
+.foo
+!(.foo)
+.a bar
+@(.foo|*)
+.a .foo bar
+!(.foo|*)
+!(.foo|*)
+@(*)
+.a .foo bar
+!(*)
+!(*)
+.*
+. .. .a .foo
+@(.*)
+. .. .a .foo
+!(.*)
+bar
+no dotglob: .a .foo bar
+@(.foo)
+.foo
+!(.foo)
+bar
+@(.foo|*)
+.foo bar
+!(.foo|*)
+!(.foo|*)
+!(bar).foo
+!(bar).foo
+*(bar).foo
+.foo
+?(bar).foo
+.foo
+.?
+.. .a
+@(.?)
+.. .a
+!(.?)
+bar
+dotglob: .a .foo bar
+@(?|.?)
+.. .a
+@(?|.*)
+. .. .a .foo
+? .*
+? . .. .a .foo
+*
+.a .foo bar
+no dotglob: .a .foo bar
+@(?|.?)
+.. .a
+@(?|.*)
+. .. .a .foo
+? .*
+? . .. .a .foo
+*
+bar
diff --git a/tests/extglob.tests b/tests/extglob.tests
index 4cb671a8..7a7cf91b 100644
--- a/tests/extglob.tests
+++ b/tests/extglob.tests
@@ -380,13 +380,11 @@ shopt -u globstar
builtin cd "$MYDIR"
${THIS_SH} ./extglob1.sub
-
${THIS_SH} ./extglob1a.sub
-
${THIS_SH} ./extglob3.sub
-
${THIS_SH} ./extglob4.sub
-
${THIS_SH} ./extglob5.sub
+${THIS_SH} ./extglob6.sub
+${THIS_SH} ./extglob7.sub
exit 0
diff --git a/tests/extglob2.sub b/tests/extglob2.sub
index f4a3b374..1088111f 100644
--- a/tests/extglob2.sub
+++ b/tests/extglob2.sub
@@ -2,6 +2,30 @@ LANG=en_US.UTF-8
shopt -s extglob
a="aaaäöü"
+a1=${a:3:3}
+
+[[ "${a}" == "${a1}" ]] || {
+ echo cond ok 1
+}
+
+case "${a//?aa}" in
+"${a1}") echo ok 1;;
+*) echo bad 1;;
+esac
+
+case "${a//\aaa}" in
+"${a1}") echo ok 2;;
+*) echo bad 2;;
+esac
+
+case "${a//aaa}" in
+"${a1}") echo ok 3;;
+*) echo bad 3;;
+esac
+
+case "${a//@(?aa)}" in
+"${a1}") echo ok 4;;
+*) echo bad 4;;
+esac
-echo "${a}" "${a//?aa}" "${a//\aaa}"
exit 0
diff --git a/tests/extglob6.sub b/tests/extglob6.sub
new file mode 100644
index 00000000..5e2aafbe
--- /dev/null
+++ b/tests/extglob6.sub
@@ -0,0 +1,43 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# issues with ? matching "." in certain special circumstances with dotglob set
+
+shopt -s dotglob extglob
+
+DIR=$TMPDIR/extglob-$$
+mkdir $DIR
+cd $DIR
+
+touch a .b
+
+LC_COLLATE=C # fix sort order
+
+echo @(?|.?)
+echo @(.?|?)
+echo ? .?
+
+echo .*
+echo \.*
+
+shopt -u dotglob
+
+echo @(?|.?)
+echo @(.?|?)
+echo ? .?
+
+echo .*
+echo \.*
+
+cd $OLDPWD
+rm -rf $DIR
diff --git a/tests/extglob7.sub b/tests/extglob7.sub
new file mode 100644
index 00000000..5fab9cda
--- /dev/null
+++ b/tests/extglob7.sub
@@ -0,0 +1,97 @@
+: ${TMPDIR:=/tmp}
+
+TESTDIR=$TMPDIR/glob-test-$$
+mkdir $TESTDIR || {
+ echo "$TESTDIR: cannot create" >&2
+ exit 1
+}
+cd $TESTDIR || {
+ echo "$TESTDIR: cannot cd" >&2
+ exit 1
+}
+
+LC_CTYPE=C LC_COLLATE=C
+shopt -s extglob dotglob
+shopt -u globskipdots # XXX - backwards compatibility
+touch .foo bar .a
+
+echo dotglob: .a .foo bar
+
+echo '@(.foo)'
+echo @(.foo)
+echo '!(.foo)'
+echo !(.foo)
+
+echo '@(.foo|*)'
+echo @(.foo|*)
+echo '!(.foo|*)'
+echo !(.foo|*)
+
+echo '@(*)'
+echo @(*)
+echo '!(*)'
+echo !(*)
+
+echo '.*'
+echo .*
+echo '@(.*)'
+echo @(.*)
+echo '!(.*)'
+echo !(.*)
+
+shopt -u dotglob
+
+echo no dotglob: .a .foo bar
+
+echo '@(.foo)'
+echo @(.foo)
+echo '!(.foo)'
+echo !(.foo)
+
+echo '@(.foo|*)'
+echo @(.foo|*)
+echo '!(.foo|*)'
+echo !(.foo|*)
+
+echo '!(bar).foo'
+echo !(bar).foo
+echo '*(bar).foo'
+echo *(bar).foo
+echo '?(bar).foo'
+echo ?(bar).foo
+
+echo '.?'
+echo .?
+echo '@(.?)'
+echo @(.?)
+echo '!(.?)'
+echo !(.?)
+
+shopt -s dotglob
+echo dotglob: .a .foo bar
+
+echo '@(?|.?)'
+echo @(?|.?)
+echo '@(?|.*)'
+echo @(?|.*)
+echo '? .*'
+echo ? .*
+echo '*'
+echo *
+
+shopt -u dotglob
+echo no dotglob: .a .foo bar
+
+echo '@(?|.?)'
+echo @(?|.?)
+echo '@(?|.*)'
+echo @(?|.*)
+echo '? .*'
+echo ? .*
+echo '*'
+echo *
+
+rm -f .a bar .foo
+
+cd $OLDPWD
+rm -rf $TESTDIR
diff --git a/tests/func.tests b/tests/func.tests
index fffe3d2b..e35ec2b8 100644
--- a/tests/func.tests
+++ b/tests/func.tests
@@ -11,6 +11,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+# since we look at functions below, remove all functions now
+funcs=$(compgen -A function)
+if [ -n "$funcs" ]; then
+ unset -f $funcs
+fi
+
a()
{
x=$((x - 1))
diff --git a/tests/getopts10.sub b/tests/getopts10.sub
index cc8acb0c..49b2bfe9 100644
--- a/tests/getopts10.sub
+++ b/tests/getopts10.sub
@@ -15,10 +15,10 @@ set -- -a bb
readonly OPTARG
getopts :x x
-echo OPTARG = $OPTARG x = $x
+echo OPTARG = $OPTARG x = "$x"
getopts x x
-echo ${OPTARG-unset} x = $x
+echo ${OPTARG-unset} x = "$x"
typeset -r RO=foo
typeset -n OPTARG=RO
diff --git a/tests/glob.right b/tests/glob.right
index 94966905..723ee7b4 100644
--- a/tests/glob.right
+++ b/tests/glob.right
@@ -121,6 +121,10 @@ a\*b
a\*b*
é/*
é/*
+a aa b bb
+.a .aa .b .bb a aa b bb
+.a .aa .b .bb
+. .. .a .aa .b .bb
argv[1] = <a>
argv[2] = <abc>
argv[3] = <abd>
@@ -135,7 +139,7 @@ argv[2] = <abc>
argv[3] = <abd>
argv[4] = <abe>
tmp/l1 tmp/l2 tmp/*4 tmp/l3
-./glob.tests: line 65: no match: tmp/*4
+./glob.tests: line 66: no match: tmp/*4
argv[1] = <bdir/>
argv[1] = <*>
argv[1] = <a*>
diff --git a/tests/glob.tests b/tests/glob.tests
index b35d7336..02d53026 100644
--- a/tests/glob.tests
+++ b/tests/glob.tests
@@ -30,6 +30,7 @@ ${THIS_SH} ./glob6.sub
${THIS_SH} ./glob7.sub
${THIS_SH} ./glob8.sub
${THIS_SH} ./glob9.sub
+${THIS_SH} ./glob10.sub
MYDIR=$PWD # save where we are
diff --git a/tests/glob10.sub b/tests/glob10.sub
new file mode 100644
index 00000000..7c14c0d2
--- /dev/null
+++ b/tests/glob10.sub
@@ -0,0 +1,32 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# test basic behavior of globskipdots
+TDIR=/tmp/dotglob-$$
+
+{ mkdir $TDIR && cd $TDIR; } || exit 1
+
+touch a b aa bb .a .b .aa .bb
+
+echo *
+shopt -s dotglob
+echo *
+
+shopt -s globskipdots
+echo .*
+shopt -u globskipdots
+echo .*
+
+cd $OLDPWD
+rm -rf $TDIR
diff --git a/tests/glob2.sub b/tests/glob2.sub
index cabc3502..09cb6d51 100644
--- a/tests/glob2.sub
+++ b/tests/glob2.sub
@@ -13,6 +13,14 @@
#
. ./test-glue-functions
+# this locale causes problems all over the place
+if locale -a | grep -i '^zh_HK\.big5hkscs' >/dev/null ; then
+ :
+else
+ echo "glob2.sub: warning: you do not have the zh_HK.big5hkscs locale installed;" >&2
+ echo "glob2.sub: warning: that will cause some of these tests to fail." >&2
+fi
+
var='ab\'
case $var in
diff --git a/tests/glob5.sub b/tests/glob5.sub
index 5735715d..a0dd623f 100644
--- a/tests/glob5.sub
+++ b/tests/glob5.sub
@@ -11,6 +11,8 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+[ $UID -eq 0 ] && { echo "glob5.sub: the test suite should not be run as root" >&2 ; }
+
ORIGD=$PWD
: ${TMPDIR:=/var/tmp}
diff --git a/tests/glob6.sub b/tests/glob6.sub
index f26ae4d6..88429838 100644
--- a/tests/glob6.sub
+++ b/tests/glob6.sub
@@ -12,6 +12,7 @@
# 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
+[ $UID -eq 0 ] && { echo "glob6.sub: the test suite should not be run as root" >&2 ; }
: ${TMPDIR:=/var/tmp}
diff --git a/tests/heredoc.right b/tests/heredoc.right
index f6e53bea..cc193f66 100644
--- a/tests/heredoc.right
+++ b/tests/heredoc.right
@@ -67,13 +67,13 @@ qux
bar
qux
abc def geh
-./heredoc3.sub: line 23: warning: here-document at line 21 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 20: warning: here-document at line 18 delimited by end-of-file (wanted `EOF')
= here is the text =
-./heredoc3.sub: line 29: warning: here-document at line 27 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 26: warning: here-document at line 24 delimited by end-of-file (wanted `EOF')
this paren ) is not a problem
-./heredoc3.sub: line 35: warning: here-document at line 33 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 32: warning: here-document at line 30 delimited by end-of-file (wanted `EOF')
these balanced parens ( ) are not a problem
-./heredoc3.sub: line 41: warning: here-document at line 39 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 38: warning: here-document at line 36 delimited by end-of-file (wanted `EOF')
quoted balanced parens \( ) are not a problem either
more text in a subshell
some more text in a different subshell
@@ -100,7 +100,34 @@ argv[2] = <threefour>
argv[1] = <two>
argv[2] = <threefi>
argv[3] = <ve>
+1: OK
+2: OK
+3: OK
+4: OK
+5: OK
+6: OK
+7: OK
+1: OK
+2: OK
+3: OK
+4: OK
+5: OK
+5: OK
+1: ${x#$'no\t'}
+2: O${x#$'no\t'O}
+3: ${x#n$'o\t'}
+4: ${x#'no '}
+5: ${x#$pat}
+6: ${y#$'not'}
+7: ${y#'not'}
+./heredoc7.sub: line 17: warning: command substitution: 1 unterminated here-document
+foo bar
+./heredoc7.sub: line 21: after: command not found
+./heredoc7.sub: line 29: warning: here-document at line 29 delimited by end-of-file (wanted `EOF')
+./heredoc7.sub: line 29: foobar: command not found
+./heredoc7.sub: line 30: EOF: command not found
+grep: *.c: No such file or directory
comsub here-string
-./heredoc.tests: line 149: warning: here-document at line 147 delimited by end-of-file (wanted `EOF')
+./heredoc.tests: line 156: warning: here-document at line 154 delimited by end-of-file (wanted `EOF')
hi
there
diff --git a/tests/heredoc.tests b/tests/heredoc.tests
index 430302f5..d10a7c10 100644
--- a/tests/heredoc.tests
+++ b/tests/heredoc.tests
@@ -137,6 +137,13 @@ ${THIS_SH} ./heredoc4.sub
# heredoc tests that use different size documents to test pipe implementation
${THIS_SH} ./heredoc5.sub
+# test $'...' and $"..." quoted strings in here-documents
+${THIS_SH} ./heredoc6.sub
+
+# interaction between here-documents and command substitutions
+${THIS_SH} ./heredoc7.sub
+
+
echo $(
cat <<< "comsub here-string"
)
diff --git a/tests/heredoc6.sub b/tests/heredoc6.sub
new file mode 100644
index 00000000..1d5fff09
--- /dev/null
+++ b/tests/heredoc6.sub
@@ -0,0 +1,50 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# test $'...' and $"..." strings in here documents (problem through bash-5.1)
+
+pat=$'no\t'
+x=$'no\tOK'
+y=notOK
+
+cat <<EOF
+1: ${x#$'no\t'}
+2: O${x#$'no\t'O}
+3: ${x#n$'o\t'}
+4: ${x#'no '}
+5: ${x#$pat}
+6: ${y#$'not'}
+7: ${y#'not'}
+EOF
+
+cat <<EOF
+1: ${x#$"no "}
+2: ${x#n$"o "}
+3: O${x#n$"o "O}
+4: ${x#"no "}
+5: ${y#$"not"}
+5: ${y#"not"}
+EOF
+
+# we don't perform dollar-quote expansion if the here-doc delimiter is quoted
+
+cat <<\EOF
+1: ${x#$'no\t'}
+2: O${x#$'no\t'O}
+3: ${x#n$'o\t'}
+4: ${x#'no '}
+5: ${x#$pat}
+6: ${y#$'not'}
+7: ${y#'not'}
+EOF
diff --git a/tests/heredoc7.sub b/tests/heredoc7.sub
new file mode 100644
index 00000000..4119df19
--- /dev/null
+++ b/tests/heredoc7.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/>.
+#
+
+# should characters outside a command substitution be interpreted as a delimiter
+# for a here-document started inside it?
+echo $(cat << EOF)
+foo
+bar
+EOF
+after
+
+# should characters inside a command substitution be interpreted as a delimiter
+# for a here-document started outside of it?
+
+cat <<EOF && grep $(
+ foobar
+EOF
+echo notthereanywhere) *.c
diff --git a/tests/herestr.tests b/tests/herestr.tests
index 6f4c74c2..c97fa4f2 100644
--- a/tests/herestr.tests
+++ b/tests/herestr.tests
@@ -11,6 +11,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+# since we look at functions below, remove all functions now
+funcs=$(compgen -A function)
+if [ -n "$funcs" ]; then
+ unset -f $funcs
+fi
+
# basics
read x <<<"alpha"
echo "$x"
diff --git a/tests/history.right b/tests/history.right
index 379de48b..5273de6b 100644
--- a/tests/history.right
+++ b/tests/history.right
@@ -140,9 +140,9 @@ three
one
two
three
-5.1
+5.2
echo ${BASH_VERSION%\.*}
-5.1
+5.2
echo ${BASH_VERSION%\.*}
a
b
@@ -264,3 +264,36 @@ out of range 3
12 echo out of range 3
out of range 4
13 fc -l 1 99
+1
+2
+3
+4
+5
+6
+ 3 echo 3
+ 4 echo 4
+ 5 echo 5
+ 6 echo 6
+ 3 echo 3
+ 4 echo 4
+ 5 echo 5
+6
+7
+ 4 echo 4
+ 5 echo 5
+ 6 echo 6
+ 7 echo 7
+ 4 echo 4
+ 5 echo 5
+ 6 echo 6
+7
+8
+ 5 echo 5
+ 6 echo 6
+9
+10
+ 5 echo 5
+ 6 echo 6
+ 7 echo 9
+ 8 echo 10
+ 5 echo 10
diff --git a/tests/history.tests b/tests/history.tests
index 53321f05..5826d130 100644
--- a/tests/history.tests
+++ b/tests/history.tests
@@ -130,3 +130,4 @@ ${THIS_SH} ./history2.sub
${THIS_SH} ./history3.sub
${THIS_SH} ./history4.sub
${THIS_SH} ./history5.sub
+${THIS_SH} ./history6.sub
diff --git a/tests/history6.sub b/tests/history6.sub
new file mode 100644
index 00000000..a21d8d38
--- /dev/null
+++ b/tests/history6.sub
@@ -0,0 +1,55 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+: ${TMPDIR:=/tmp}
+
+HISTFILE=${TMPDIR}/history-$$
+HISTSIZE=4
+HISTIGNORE="history*"
+
+set -o history
+
+history -c
+
+echo 1
+echo 2
+echo 3
+echo 4
+echo 5
+echo 6
+
+history
+
+history -d -1
+history
+
+echo 6
+echo 7
+
+history
+history -d -1
+history
+
+echo 7
+echo 8
+history -d -2--1
+history
+
+echo 9
+echo 10
+history
+history -d 5-7
+history
+
+unset HISTFILE
+exit 0
diff --git a/tests/intl.tests b/tests/intl.tests
index c3000fc7..c4ff02c3 100644
--- a/tests/intl.tests
+++ b/tests/intl.tests
@@ -62,7 +62,7 @@ ${THIS_SH} ./intl2.sub
# test splitting on characters instead of bytes
${THIS_SH} ./intl3.sub
-${THIS_SH} ./unicode1.sub 2>/dev/null
+${THIS_SH} ./unicode1.sub # 2>/dev/null
${THIS_SH} ./unicode2.sub
${THIS_SH} ./unicode3.sub 2>&1
diff --git a/tests/intl2.sub b/tests/intl2.sub
index 64961bcb..2f3236e6 100644
--- a/tests/intl2.sub
+++ b/tests/intl2.sub
@@ -1,5 +1,25 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# this locale causes problems all over the place
unset LC_ALL LC_NUMERIC
-export LANG=de_DE.UTF-8
+if locale -a | grep -i '^de_DE\.UTF.*8' >/dev/null ; then
+ export LANG=de_DE.UTF-8
+else
+ echo "intl2.sub: warning: you do not have the de_DE.UTF-8 locale installed;" >&2
+ echo "intl2.sub: that will cause some of these tests to fail." >&2
+fi
+
printf '%.4f\n' 1
LANG=C printf '%.4f\n' 1
diff --git a/tests/jobs.right b/tests/jobs.right
index 5d03b76b..0510e044 100644
--- a/tests/jobs.right
+++ b/tests/jobs.right
@@ -31,6 +31,8 @@ i killed it
./jobs5.sub: line 40: wait: %8: no such job
2: ok 2
2: ok 3
+127
+./jobs5.sub: line 71: declare: wpid: not found
child1 exit status 0
[1]+ Running sleep 20 &
./jobs7.sub: line 5: fg: no current jobs
diff --git a/tests/jobs4.sub b/tests/jobs4.sub
index 7ecd7123..9f1cd040 100644
--- a/tests/jobs4.sub
+++ b/tests/jobs4.sub
@@ -34,4 +34,6 @@ wait
# the sleep is intended to give the kill time to execute before the job
# exits
(sleep 1 ; cat ) &
+# suppress any message about terminated process
+exec 2>/dev/null
kill -1 %% && echo i killed it || echo could not kill it
diff --git a/tests/jobs5.sub b/tests/jobs5.sub
index e6ffb44e..e348f2e2 100644
--- a/tests/jobs5.sub
+++ b/tests/jobs5.sub
@@ -59,3 +59,13 @@ disown -a
unset bgpid1 bgpid2 bgpid3
unset wpid
+
+# now that we have no jobs, make sure that wait -n -p var leaves var unset
+jobs
+wait -n -p wpid
+echo $wpid $?
+
+# make sure wait -p var does something useful without the -n option
+jobs
+wait -p wpid
+declare -p wpid
diff --git a/tests/jobs7.sub b/tests/jobs7.sub
index 3e76db37..582365ff 100644
--- a/tests/jobs7.sub
+++ b/tests/jobs7.sub
@@ -3,4 +3,6 @@ set -m
sleep 20 &
echo $(jobs)
echo $(fg %% ; jobs)
+# suppress any message about sleep 20 being terminated
+exec 2>/dev/null
kill %1
diff --git a/tests/lastpipe.right b/tests/lastpipe.right
index cca5938d..84e1e2ea 100644
--- a/tests/lastpipe.right
+++ b/tests/lastpipe.right
@@ -18,3 +18,5 @@ A2
B1
B2
HI -- 42 -- 0 42
+x=x
+x=x
diff --git a/tests/lastpipe.tests b/tests/lastpipe.tests
index 775e81dd..f9d669dd 100644
--- a/tests/lastpipe.tests
+++ b/tests/lastpipe.tests
@@ -71,3 +71,4 @@ ${THIS_SH} ./lastpipe1.sub
echo lastpipe1.sub returns $?
${THIS_SH} ./lastpipe2.sub
+${THIS_SH} ./lastpipe3.sub
diff --git a/tests/lastpipe3.sub b/tests/lastpipe3.sub
new file mode 100644
index 00000000..b9222b8a
--- /dev/null
+++ b/tests/lastpipe3.sub
@@ -0,0 +1,11 @@
+# problem in bash-5.1 running lastpipe in subshell if fd 0 is closed
+
+shopt -s lastpipe
+exec 0<&-
+
+echo x | read x
+echo x=$x
+unset x
+
+echo x | cat | read x
+echo x=$x
diff --git a/tests/mapfile.right b/tests/mapfile.right
index 143d6ddc..4452232d 100644
--- a/tests/mapfile.right
+++ b/tests/mapfile.right
@@ -151,6 +151,7 @@ a
[27] aaa
[28] aaa
[29] aaa
+declare -a array=([0]="a" [1]="b" [2]="c" [3]=$'\n')
1 2 3 4 5
foo 0 1
diff --git a/tests/mapfile.tests b/tests/mapfile.tests
index 01f1f2e5..c2ea7d24 100644
--- a/tests/mapfile.tests
+++ b/tests/mapfile.tests
@@ -52,6 +52,11 @@ for (( i = 0 ; i < ${#E[@]} ; i++ )); do
echo "${E[${i}]}"
done
-${THIS_SH} ./mapfile1.sub
+unset -v s array
+s=$'a\xffb\xffc\xff'
+mapfile -t -d $'\xff' array <<<"$s"
+declare -p array
+unset -v s array
+${THIS_SH} ./mapfile1.sub
${THIS_SH} ./mapfile2.sub
diff --git a/tests/misc/run-r2.sh b/tests/misc/run-r2.sh
index 0321a1bd..0321a1bd 100755..100644
--- a/tests/misc/run-r2.sh
+++ b/tests/misc/run-r2.sh
diff --git a/tests/misc/sigint-1.sh b/tests/misc/sigint-1.sh
index 7b74c307..7b74c307 100755..100644
--- a/tests/misc/sigint-1.sh
+++ b/tests/misc/sigint-1.sh
diff --git a/tests/misc/sigint-2.sh b/tests/misc/sigint-2.sh
index 69eaf56a..69eaf56a 100755..100644
--- a/tests/misc/sigint-2.sh
+++ b/tests/misc/sigint-2.sh
diff --git a/tests/misc/sigint-3.sh b/tests/misc/sigint-3.sh
index 2627fe6c..2627fe6c 100755..100644
--- a/tests/misc/sigint-3.sh
+++ b/tests/misc/sigint-3.sh
diff --git a/tests/misc/sigint-4.sh b/tests/misc/sigint-4.sh
index 587dd265..587dd265 100755..100644
--- a/tests/misc/sigint-4.sh
+++ b/tests/misc/sigint-4.sh
diff --git a/tests/nameref.right b/tests/nameref.right
index 296105c9..83e9ee5b 100644
--- a/tests/nameref.right
+++ b/tests/nameref.right
@@ -348,6 +348,10 @@ declare -a v=([1]="1")
declare -a v=([0]="0" [1]="1")
declare -n n="v[1]"
declare -a v=([0]="0")
+./nameref15.sub: line 120: warning: xref: removing nameref attribute
+declare -a xref=([1]="one")
+./nameref15.sub: line 126: warning: xref: removing nameref attribute
+declare -a xref=([1]="one")
declare -n r1="y"
declare -n r2="x"
./nameref16.sub: line 25: typeset: x: not found
@@ -424,6 +428,23 @@ declare -a var=([123]="")
declare -n ref="var[123]"
./nameref18.sub: line 67: declare: var[123]: not found
declare -a var=([123]="X")
+argv[1] = <1>
+argv[2] = <2>
+argv[3] = <3>
+argv[1] = <1>
+argv[2] = <2>
+argv[3] = <3>
+argv[1] = <1>
+argv[2] = <2>
+argv[3] = <3>
+argv[1] = <1>
+argv[2] = <2>
+argv[3] = <3>
+argv[1] = <1>
+argv[2] = <2>
+argv[3] = <31>
+argv[4] = <2>
+argv[5] = <3>
declare -n foo="bar"
declare -- foo="bar"
./nameref19.sub: line 22: declare: bar: not found
@@ -440,6 +461,8 @@ declare -n foo="bar"
declare -- bar
declare -- foo="bar"
declare -- bar
+8
+declare -n ivar="foo"
declare -a v=([0]="Y")
r: <Y>
v: <Y>
@@ -483,3 +506,55 @@ declare -n ref="var"
declare -ai var=([1]="0")
declare -n ref="var"
declare -- var="1"
+a string with spaces
+many spaces
+declare -n foo="bar[0]"
+declare -a bar=([0]=" still more spaces")
+declare -n foo="bar[0]"
+declare -a bar=([0]="spaces still more spaces")
+./nameref22.sub: line 50: declare: array: reference variable cannot be an array
+./nameref22.sub: line 53: declare: array[128]: reference variable cannot be an array
+declare -a array=([0]="one" [1]="two" [2]="three")
+declare -- array="(one two three)"
+declare -a array=([0]="one" [1]="two" [2]="three")
+./nameref22.sub: line 69: declare: `(one two three)': invalid variable name for name reference
+./nameref22.sub: line 70: declare: array: reference variable cannot be an array
+declare -a array=([0]="zero")
+./nameref22.sub: line 74: declare: array: reference variable cannot be an array
+declare -a array=([0]="one" [1]="two" [2]="three")
+./nameref22.sub: line 79: declare: array: reference variable cannot be an array
+declare -a array
+declare -ai array=([0]="one")
+declare -a array=([0]="zero")
+declare -a array=([0]="one" [1]="two" [2]="three")
+declare -ai a=([0]="5")
+declare -ai a=([0]="6")
+declare -ai a=([0]="1")
+./nameref23.sub: line 15: declare: b: not found
+declare -ai a=([0]="1")
+declare -- b="1"
+declare -ai a=([0]="1")
+declare -- b="11"
+declare -ai a=([0]="1")
+declare -- b="110"
+./nameref23.sub: line 25: declare: `1': invalid variable name for name reference
+declare -ai a=([0]="1")
+./nameref23.sub: line 27: declare: b: not found
+declare -ai a=([0]="4")
+declare -in b="a[0]"
+declare -ai a=([0]="6")
+declare -in b="a[0]"
+foo
+foo bar
+declare -a a=([0]="" [1]="foo bar")
+declare -n b="a[1]"
+foo
+foo bar
+declare -a a=([0]="" [1]="foo bar")
+declare -n b="a[1]"
+12
+16
+declare -ai a=([0]="0" [1]="16")
+12
+16
+declare -ai a=([0]="0" [1]="16")
diff --git a/tests/nameref15.sub b/tests/nameref15.sub
index cce8fbd9..e9a09eeb 100644
--- a/tests/nameref15.sub
+++ b/tests/nameref15.sub
@@ -115,3 +115,13 @@ v=(0 1)
declare -n n=v[1]
unset n
declare -p n v
+
+declare -n xref
+declare -a xref[1]=one
+declare -p xref
+
+unset xref
+declare -n xref
+xref=array
+declare -a xref[1]=one
+declare -p xref
diff --git a/tests/nameref18.sub b/tests/nameref18.sub
index a29fe379..7a32877f 100644
--- a/tests/nameref18.sub
+++ b/tests/nameref18.sub
@@ -65,3 +65,19 @@ declare -p ref ${!ref} var
declare +t ref
ref=X
declare -p ref ${!ref} var
+
+unset -n ref
+unset var
+
+arr=(1 2 3)
+
+indir='arr[@]'
+declare -n ref='arr[@]'
+
+recho "${!indir}"
+recho ${!indir}
+
+recho "$ref"
+recho $ref
+
+recho "${!indir}$ref"
diff --git a/tests/nameref19.sub b/tests/nameref19.sub
index b00f68e5..d4b900e8 100644
--- a/tests/nameref19.sub
+++ b/tests/nameref19.sub
@@ -62,3 +62,12 @@ declare bar
declare -p foo bar
declare +n foo
declare -p foo bar
+
+# but when we add the nameref attribute, we remove other attributes
+
+declare -i ivar
+ivar=4+4
+echo $ivar
+
+declare -n ivar=foo
+declare -p ivar
diff --git a/tests/nameref22.sub b/tests/nameref22.sub
new file mode 100644
index 00000000..4e44fbb3
--- /dev/null
+++ b/tests/nameref22.sub
@@ -0,0 +1,97 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+declare -n foo=bar
+
+declare foo='a string with spaces'
+echo $foo
+
+unset foo
+declare foo+='many spaces'
+echo $foo
+
+unset foo # unsets bar
+unset -n foo
+
+declare -a bar
+declare -n foo='bar[0]'
+declare foo+=' still more spaces'
+
+declare -p foo bar
+unset -n foo
+unset bar
+
+declare -a bar
+declare -n foo='bar[0]'
+declare foo=spaces
+declare foo+=' still more spaces'
+
+declare -p foo bar
+
+unset -n foo
+unset bar
+
+ray=ray
+
+declare -a array
+array[0]=zero
+
+declare -n array
+unset array
+
+declare -n array[128]
+unset array
+
+declare -a array='(one two three)'
+declare -p array
+unset array
+
+declare array='(one two three)'
+declare -p array
+unset array
+
+declare -a ar$ray='(one two three)'
+declare -p ar$ray
+unset array
+
+declare -a array=(zero)
+declare -n array='(one two three)'
+declare -n array=three
+declare -p array
+unset array
+
+declare -n array=(one two three)
+declare -p array
+unset array
+
+declare -a array
+declare -n array=one
+declare -p array
+unset array
+
+array=one
+declare -i array[64];
+declare -p array
+unset array
+
+declare -a array=zero
+declare -p array
+unset array
+
+declare -a array
+declare array='(one two three)'
+declare -p array
+unset array
+
+
diff --git a/tests/nameref23.sub b/tests/nameref23.sub
new file mode 100644
index 00000000..358c381e
--- /dev/null
+++ b/tests/nameref23.sub
@@ -0,0 +1,82 @@
+declare -ai a
+a[0]=4
+declare -n b='a[0]'
+
+b+=1 ; declare -p a
+
+declare b+=1 ; declare -p a
+
+unset a b
+unset -n b
+
+######
+declare -ai a=(1)
+declare -in b="a[0]"
+declare -p a b
+
+b+=1 ; declare -p a b
+b+=1 ; declare -p a b
+b+=0 ; declare -p a b
+
+unset a b
+
+#####
+declare -ai a=(1)
+declare -n b="1"
+declare -p a
+declare -np b
+
+unset a ; unset -n b
+
+#####
+declare -ai a=('4');
+declare -n b='a[0]';
+declare -ni b; # this should maybe not be allowed, but it is for now
+declare -p a b
+
+b+=2;
+declare -p a b
+
+unset a ; unset -n b
+
+#####
+f()
+{
+ local -a a=('' 'foo');
+ local -n b=a[1];
+ echo $b;
+ b+=\ bar;
+ echo $b;
+ declare -p a b;
+}
+f
+
+declare -a a=('' 'foo');
+declare -n b=a[1];
+echo $b;
+b+=\ bar;
+echo $b;
+declare -p a b
+
+unset a ; unset -n b
+
+unset -f f
+f()
+{
+ local -ai a=(0 12);
+ local -n b=a[1];
+ echo $b;
+ b+=4;
+ echo $b;
+ declare -p a;
+}
+f
+
+declare -ai a=(0 12);
+declare -n b=a[1];
+echo $b;
+b+=4;
+echo $b;
+declare -p a
+
+unset a ; unset -n b
diff --git a/tests/new-exp.right b/tests/new-exp.right
index 752bba5c..e3dc40e1 100644
--- a/tests/new-exp.right
+++ b/tests/new-exp.right
@@ -617,7 +617,7 @@ c Sub = 0 2 4 8
<>
<>
<'ab '\''cd'\'' ef'>
-./new-exp10.sub: line 24: ${x@C}: bad substitution
+bash: line 1: ${x@C}: bad substitution
<'ab'> <'cd ef'> <''> <'gh'>
<'ab' 'cd ef' '' 'gh'>
<'ab'> <'cd> <ef'> <''> <'gh'>
@@ -625,7 +625,7 @@ c Sub = 0 2 4 8
<'ab cd'>
<'4'> <'ab cd'>
<>
-argv[1] = <host(2)[5.1]$ >
+argv[1] = <host(2)[5.2]$ >
<
>
<' \t\n'>
@@ -648,6 +648,7 @@ i
declare -i foo
A
declare -A foo
+./new-exp10.sub: line 118: ${V@}: bad substitution
abcxxxdef
abcådef
ḅć
@@ -703,11 +704,21 @@ aaa bbb
a bbb
aaa bb
'string'
+'string'
+'value with spaces'
'value with spaces'
'a b' 'c d' 'e f'
'a b' 'c d' 'e f'
0 "zero" 1 "one" 2 "two" 3 "three"
0 "zero z" 1 "one o" 2 "two t" 3 "three t"
+argv[1] = <0>
+argv[2] = <zero z>
+argv[3] = <1>
+argv[4] = <one o>
+argv[5] = <2>
+argv[6] = <two t>
+argv[7] = <3>
+argv[8] = <three t>
declare -a foo=()
ai
declare -ai foo
@@ -719,6 +730,65 @@ a
a
a
a
+/homes/chetdefg
+/homes/chetdefg
+~defg
+defg
+defg
+defg
+$'&' $'&' $'&' $'&' $'&' $'&' $'&'
+$'a' $'b' $'c' $'d' $'e' $'f' $'g'
+a b c d e f g
+a b c d e f g
+& & & & & & &
+& & & & & & &
+& & & & & & &
+\& \& \& \& \& \& \&
+a a a a a a a
+3 3 3 3 3 3 3
+abc defg
+abc defg
+& defg
+& defg
+& defg
+\& defg
+\abc defg
+abcdefg
+&defg
+\abcdefg
+\&defg
+\&defg
+\abcdefg
+\\&defg
+&defg
+&defg
+\&defg
+\&defg
+\\&defg
+letx&yee
+letx&yee
+letxssyee
+letxssyee
+letx\&yee
+letx\&yee
+letx&yee
+letx&yee
+let\&ee
+let\\ssee
+let\ssee
+let\ssee
+let\&ee
+let\&ee
+let&ee
+let&ee
+twoone
+&twoone
+onetwo
+one&two
+two
+&two
+otwone
+&twone
argv[1] = </>
argv[1] = </>
diff --git a/tests/new-exp.tests b/tests/new-exp.tests
index 079426cb..c542313f 100644
--- a/tests/new-exp.tests
+++ b/tests/new-exp.tests
@@ -631,6 +631,10 @@ ${THIS_SH} ./new-exp14.sub
# ongoing work with a/A parameter transformations and `nounset'
${THIS_SH} ./new-exp15.sub
+# pattern substitution with `&' (quoted and unquoted) in the replacement string
+${THIS_SH} ./new-exp16.sub
+
+
# problems with stray CTLNUL in bash-4.0-alpha
unset a
a=/a
diff --git a/tests/new-exp10.sub b/tests/new-exp10.sub
index bf9ebe7a..5b199d4f 100644
--- a/tests/new-exp10.sub
+++ b/tests/new-exp10.sub
@@ -21,7 +21,9 @@ printf "<%s>" "${x@A}" ; echo
x="ab 'cd' ef"
printf "<%s> " "${x@Q}" ; echo
-printf "<%s>" "${x@C}"
+# this needs to be run in a subshell because invalid transformation operators
+# are now treated as substitution errors, fatal in non-interactive shells
+${THIS_SH} -c 'x=abcdef ; printf "<%s>" "${x@C}"' bash
# if unquoted, normal word splitting happens
set -- ab 'cd ef' '' gh
@@ -111,3 +113,6 @@ declare -A foo
echo ${foo@a}
declare -p foo
+
+V=42
+echo ${V@} # error
diff --git a/tests/new-exp14.sub b/tests/new-exp14.sub
index b8bda8de..92f51ea1 100644
--- a/tests/new-exp14.sub
+++ b/tests/new-exp14.sub
@@ -1,4 +1,18 @@
-# test the other uses of the 'K' tranform operator
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# test the other uses of the 'K' transform operator and its sibling 'k'
# the associative array tests are performed separately, since that was the
# original motivation for this feature
foo=string
@@ -7,7 +21,9 @@ bar='value with spaces'
set -- 'a b' 'c d' 'e f'
echo ${foo@K}
+echo ${foo@k}
echo ${bar@K}
+echo ${bar@k}
echo ${@@K}
echo "${@@K}"
@@ -17,3 +33,4 @@ echo ${foo[@]@K}
foo=( 'zero z' 'one o' 'two t' 'three t' )
echo ${foo[@]@K}
+recho "${foo[@]@k}"
diff --git a/tests/new-exp16.sub b/tests/new-exp16.sub
new file mode 100644
index 00000000..2ed751d3
--- /dev/null
+++ b/tests/new-exp16.sub
@@ -0,0 +1,120 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+HOME=/homes/chet
+string=abcdefg
+set -- a b c
+
+shopt -u patsub_replacement
+
+# verify existing behavior
+echo ${string/abc/~}
+echo "${string/abc/~}"
+echo ${string/abc/"~"}
+
+echo ${string/abc/$notthere}
+echo "${string/abc/$notthere}"
+echo "${string/abc/"$notthere"}"
+
+echo ${string//?/\$\'&\' }
+
+shopt -s patsub_replacement
+
+echo ${string//?/\$\'&\' }
+
+echo ${string//?/& }
+echo "${string//?/& }"
+
+echo ${string//?/\& }
+echo "${string//?/\& }"
+echo ${string//?/"& "}
+echo ${string//?/"\& "}
+
+echo "${string//?/"a "}"
+echo "${string//?/"$# "}"
+
+echo ${string/abc/& }
+echo "${string/abc/& }"
+echo ${string/abc/"& "}
+
+echo ${string/abc/\& }
+echo "${string/abc/\& }"
+echo ${string/abc/"\& "}
+echo ${string/abc/\\& }
+
+rep='\\&'
+
+echo "${string/abc/&}"
+echo ${string/abc/\&}
+echo "${string/abc/\\&}"
+echo ${string/abc/"\\&"}
+echo "${string/abc/"\\&"}"
+echo ${string/abc/$rep}
+echo ${string/abc/"$rep"}
+
+shopt -u patsub_replacement
+
+echo "${string/abc/&}"
+echo ${string/abc/\&}
+echo "${string/abc/\\&}"
+echo "${string/abc/"\\&"}"
+echo ${string/abc/"$rep"}
+
+shopt -s patsub_replacement
+
+repl='x&y'
+r2='x\&y'
+var='letssee'
+
+pat=ss
+
+echo ${var//$pat/"$repl"}
+echo "${var//$pat/"$repl"}"
+echo ${var//$pat/$repl}
+echo "${var//$pat/$repl}"
+
+echo ${var//$pat/"$r2"}
+echo "${var//$pat/"$r2"}"
+echo ${var//$pat/$r2}
+echo "${var//$pat/$r2}"
+
+r2='\\&'
+r3='\&'
+
+echo ${var//$pat/\\\&}
+echo ${var//$pat/\\$r2}
+echo ${var//$pat/\\&}
+echo ${var//$pat/$r2}
+
+echo ${var//$pat/"\&"}
+echo ${var//$pat/"$r3"}
+echo ${var//$pat/"&"}
+echo ${var//$pat/$r3}
+
+# these cases provide the same functionality as sed when given a BRE like
+# `^' or `$', or when passed a null input line
+one=one
+null=
+
+echo ${one/#/&two}
+echo ${one/#/\&two}
+
+echo ${one/%/&two}
+echo ${one/%/\&two}
+
+echo ${null/#/&two}
+echo ${null/#/\&two}
+
+echo ${one/#?/&two}
+echo ${one/#?/\&two}
diff --git a/tests/nquote.right b/tests/nquote.right
index e3ae5558..31c35c3b 100644
--- a/tests/nquote.right
+++ b/tests/nquote.right
@@ -35,6 +35,10 @@ argv[1] = <hello, $world>
;foo
argv[1] = <^I>
argv[1] = <'A^IB'>
+argv[1] = <a^Ib^Ic>
+argv[1] = <$'a\tb\tc'>
+ AD
+E
hello' world
hello world!
hello' world!
@@ -62,3 +66,15 @@ argv[1] = <^?>
0000000 esc fs gs rs us del nl
0000007
\q
+foo
+./nquote4.sub: line 6: quux: command not found
+argv[1] = <a^A)b>
+argv[1] = <a^Ab>
+argv[1] = <^A>
+argv[1] = <\^A>
+0000000 a $ ' \ 0 1 ' b \n a 001 b \n
+0000015
+0000000 a $ ' \ 0 1 ' b \n a 001 b \n
+0000015
+0000000 A \n A \n
+0000004
diff --git a/tests/nquote.tests b/tests/nquote.tests
index 20d6415d..e4d1a56f 100644
--- a/tests/nquote.tests
+++ b/tests/nquote.tests
@@ -128,6 +128,15 @@ unset mytab
recho "${mytab:-$'\t'}"
recho "$( args $'A\tB' )"
+# tests for $'...' not being expanded when inside double quotes
+recho $'a\tb\tc'
+recho "$'a\tb\tc'"
+
+# tests for $'...' being expanded in command substitution, and when
+echo "$(echo $'\t\t\101\104\n\105')"
+
${THIS_SH} ./nquote1.sub
${THIS_SH} ./nquote2.sub
${THIS_SH} ./nquote3.sub
+${THIS_SH} ./nquote4.sub
+${THIS_SH} ./nquote5.sub
diff --git a/tests/nquote4.sub b/tests/nquote4.sub
new file mode 100644
index 00000000..0d4a4955
--- /dev/null
+++ b/tests/nquote4.sub
@@ -0,0 +1,6 @@
+# make sure aliases containing new-style single quotes are expanded correctly
+
+shopt -s expand_aliases
+alias foo=$'echo foo\n\nquux\n'
+
+foo
diff --git a/tests/nquote5.sub b/tests/nquote5.sub
new file mode 100644
index 00000000..97cbadc4
--- /dev/null
+++ b/tests/nquote5.sub
@@ -0,0 +1,36 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+. test-glue-functions
+
+recho $( echo a$'\01)'b )
+recho $( echo ab )
+recho $( echo \ )
+recho $( echo \\ )
+
+LC_CTYPE=C
+od -c <<EOF | _intl_normalize_spaces
+a$'\01'b
+ab
+EOF
+
+od -c <<EOF | _intl_normalize_spaces
+${none-a$'\01'b}
+${none-ab}
+EOF
+
+V=Aa$'\01'b
+od -c <<EOF | _intl_normalize_spaces
+${V%a$'\01'b}
+${V%ab}
+EOF
diff --git a/tests/posix2.right b/tests/posix2.right
index 40aea039..5d3f734a 100644
--- a/tests/posix2.right
+++ b/tests/posix2.right
@@ -1,6 +1,4 @@
Testing for POSIX.2 conformance
-./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'
+./posix2.tests: eval: line 199: syntax error near unexpected token `)'
+./posix2.tests: eval: line 199: `case esac in esac) ;; *) echo "case esac test 4";; esac'
All tests passed
diff --git a/tests/posix2.tests b/tests/posix2.tests
index 9b6c0932..0f5fce15 100644
--- a/tests/posix2.tests
+++ b/tests/posix2.tests
@@ -190,11 +190,13 @@ case esac in (foo|esac) ;; *) testfail "case esac test 1" ;; esac
newtest
case esac in foo|esac) ;; *) testfail "case esac test 2" ;; esac
-# these are supposed to be syntax errors
+# POSIX.2 grammar rule 4 problem through bash-5.1
newtest
-eval 'case esac in (esac) ;; *) echo "case esac test 3" ;; esac'
+eval 'case esac in (esac) ;; *) testfail "case esac test 3" ;; esac'
+
+# these are supposed to be syntax errors
newtest
-eval 'case esac in esac) ;; *) echo "case esac test 4";; esac'
+eval 'case esac in esac) ;; *) echo "case esac test 4";; esac' && testfail 'case esac test 4'
if [ $exitval = 0 ]; then
echo "All tests passed"
diff --git a/tests/posixexp.right b/tests/posixexp.right
index e6bdbf4b..7204b960 100644
--- a/tests/posixexp.right
+++ b/tests/posixexp.right
@@ -275,14 +275,34 @@ argv[2] = <b>
[ abc def ghi jkl / abc def ghi jkl ]
[ abc def ghi jkl ]
[ abc def ghi jkl / abc def ghi jkl / abc def ghi jkl ]
-5: notOK
+1: OK
+2: $'not'
+3: OK
+4: OK
+5: tOK
OK
OK
-5: $'not\ttoo\nbad'
+$'not'
+OK
+tOK
+6: $'not\ttoo\nbad'
+OKa ' b
+OKa ' b
+7: OK
+8: OKa ' b
+9: OKa " b
+10: OKa " b
+tOK
+tOK
+tOK
+tOK
+./posixexp7.sub: line 69: ${'x1'%'t'}: bad substitution
+./posixexp7.sub: line 70: ${'x1'%'t'}: bad substitution
+./posixexp7.sub: line 73: ${'x1'%'t'}: bad substitution
+./posixexp7.sub: line 74: ${'x1'%'t'}: bad substitution
"A"
A
argv[1] = <"A">
argv[1] = <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/posixexp7.sub b/tests/posixexp7.sub
index 2e230cf8..4e3fa007 100644
--- a/tests/posixexp7.sub
+++ b/tests/posixexp7.sub
@@ -1,13 +1,76 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
# test the effect of quotes on the WORD in the posix pattern removal operators
-# a here document does not behave the same as double quotes
+#
x=notOK
+x1=not
+
cat <<EOF
-5: ${x#$'not'}
+1: ${x#$'not'}
+2: $'not'
+3: ${x#"not"}
+4: ${x#'not'}
+5: ${x#${x1%'t'}}
EOF
echo "${x#'not'}"
echo "${x#$'not'}"
+echo "$'not'"
+echo "${x#"not"}"
+echo "${x#${x1%'t'}}"
+
+cat <<EOF
+6: $'not\ttoo\nbad'
+EOF
+
+x=OK$'a\t\'\tb'
+echo OK$'a\t\'\tb'
+echo "$x"
+
+cat <<EOF
+7: ${x%$'a\t\'\tb'}
+8: ${x#$'a\t\'\tb'}
+EOF
+
+x=OK'a " b'
+
+cat <<EOF
+9: ${x#'a " b'}
+10: ${x#$'a " b'}
+EOF
+
+x=notOK
+x1=not
+
+# extquote makes these work
+echo "${x#${$'x1'%$'t'}}"
+cat <<EOF
+${x#${$'x1'%$'t'}}
+EOF
+echo "${x#${$'x1'%'t'}}"
+cat <<EOF
+${x#${$'x1'%'t'}}
+EOF
+
+# syntax errors
+
+echo "${x#${'x1'%'t'}}"
+cat <<EOF
+${x#${'x1'%'t'}}
+EOF
+echo "${x#${'x1'%$'t'}}"
cat <<EOF
-5: $'not\ttoo\nbad'
+${x#${'x1'%$'t'}}
EOF
diff --git a/tests/precedence.tests b/tests/precedence.tests
index 111bd231..111bd231 100755..100644
--- a/tests/precedence.tests
+++ b/tests/precedence.tests
diff --git a/tests/printf1.sub b/tests/printf1.sub
index e4fb54b8..2cbbc6a6 100644
--- a/tests/printf1.sub
+++ b/tests/printf1.sub
@@ -24,7 +24,7 @@ printf "%s" "$vv"
printf -v vv "one\ctwo\n"
printf "%s" "$vv"
-# and unrecognized backslash escapes should have the backslash preserverd
+# and unrecognized backslash escapes should have the backslash preserved
printf -v vv "4\.2\n"
printf "%s" "$vv"
diff --git a/tests/printf2.sub b/tests/printf2.sub
index 45c48d4c..94a2bb10 100644
--- a/tests/printf2.sub
+++ b/tests/printf2.sub
@@ -1,6 +1,12 @@
unset LC_ALL LC_CTYPE
-export LANG=en_US.UTF-8
+export LANG=C
+case $(printf %d\\n \'A) in
+65) ;;
+*) echo "printf2.sub: character conversion failed" >&2 ;;
+esac
+
+export LANG=en_US.UTF-8
case $(printf %d\\n \'À) in
192) exit 0;;
*) echo "printf2.sub: multibyte character conversion failed" >&2 ; exit 2 ;;
diff --git a/tests/quotearray.right b/tests/quotearray.right
new file mode 100644
index 00000000..e6893659
--- /dev/null
+++ b/tests/quotearray.right
@@ -0,0 +1,152 @@
+declare -A assoc=(["x],b[\$(echo uname >&2)"]="1" )
+declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="1" )
+declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="2" )
+./quotearray.tests: line 31: ((: 'assoc[x\],b\[\$(echo uname >&2)]++' : syntax error: operand expected (error token is "'assoc[x\],b\[\$(echo uname >&2)]++' ")
+declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="2" )
+./quotearray.tests: line 34: ((: 'assoc[x\],b\[\$(echo uname >&2)]'++ : syntax error: operand expected (error token is "'assoc[x\],b\[\$(echo uname >&2)]'++ ")
+declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="2" )
+declare -A assoc=(["\$key"]="1" ["x],b[\$(echo uname >&2)"]="3" )
+4
+klmnopqrst
+klmnopqrst
+klmno
+klmnopqrst
+declare -A A=(["\$(echo %)"]="5" [%]="10" ["]"]="10" )
+declare -A A=(["~"]="42" )
+42
+declare -A A=(["~"]="43" )
+42
+declare -A A=(["~"]="43" ["~0"]="43" )
+12
+declare -a a=([0]="12" [1]="42")
+2
+2
+declare -Ai assoc=(["']"]="3" ["\$var"]="1" )
+105
+declare -A assoc=(["\` echo >&2 foo\`"]="42" ["\$( echo >&2 bar)"]="63" )
+./quotearray.tests: line 140: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)")
+./quotearray.tests: line 144: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)")
+1
+./quotearray.tests: line 147: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)")
+1
+./quotearray.tests: line 150: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)")
+1
+./quotearray.tests: line 153: x],b[$(echo uname >&2): syntax error: invalid arithmetic operator (error token is "],b[$(echo uname >&2)")
+1
+declare -A assoc
+0
+0
+1
+0
+0
+0
+declare -A assoc=(["\` echo >&2 foo\`"]="128" [0]="0" ["]"]="12" ["x],b[\$(echo uname >&2)"]="42" ["~"]="42" ["\$( echo 2>& date)"]="foo" )
+foo
+0
+0
+./quotearray1.sub: line 68: 0\],b\[1: syntax error: invalid arithmetic operator (error token is "\],b\[1")
+declare -a array
+0
+0
+0
+0
+1
+1
+declare -A aa=(["\$( echo 2>& date)"]="foo" )
+foo
+0
+1
+1
+./quotearray1.sub: line 113: test: aa[$(echo: binary operator expected
+2
+[[ -v assoc[a] ]]; $?=0
+[[ -v assoc["] ]]; $?=0
+declare -A assoc=(["\""]="123" [a]="123" )
+declare -A a=([1]="1" [0]="0" [" "]="11" )
+7
+7
+declare -A A=([$'\t']="2" [" "]="2" )
+declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["]"]="2" ["@"]="2" )
+./quotearray2.sub: line 54: read: `A[]]': not a valid identifier
+declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
+./quotearray2.sub: line 62: printf: `A[]]': not a valid identifier
+declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
+./quotearray2.sub: line 70: declare: `A[]]=X': not a valid identifier
+declare -A A=(["*"]="X" ["@"]="X" )
+./quotearray2.sub: line 78: declare: `A[]]=X': not a valid identifier
+declare -A A=(["*"]="X" ["@"]="X" )
+./quotearray2.sub: line 89: let: assoc[x],b[$(echo: bad array subscript (error token is "b[$(echo")
+declare -A assoc
+declare -A assoc=(["\$(echo foo)"]="1" )
+0
+declare -A assoc=(["\$var"]="value" )
+declare -A assoc=(["\$var"]="value" )
+declare -A assoc=(["\$var"]="value" )
+declare -A assoc=()
+declare -A a=(["\$(echo foo)"]="1" )
+declare -A a=()
+declare -A a=(["\$(echo foo)"]="1" )
+declare -A a=(["\$(echo foo)"]="1" )
+declare -A assoc=(["!"]="bang" )
+1
+1
+declare -A assoc=(["!"]="bang" ["@"]="at" )
+declare -A assoc=(["!"]="bang" )
+declare -a array=([0]="1" [1]="2" [2]="3")
+declare -a array=()
+./quotearray3.sub: line 98: declare: array: not found
+declare -A map=(["foo\$(uname >/dev/tty)bar"]="1" )
+1
+declare -A map=()
+$(DOESNOTEXIST)
+declare -A blah=()
+declare -A assoc=(["*"]="star" ["!"]="bang" ["@"]="at" )
+declare -A assoc=(["*"]="star" ["!"]="bang" )
+declare -A assoc=(["!"]="bang" )
+./quotearray4.sub: line 41: declare: assoc: not found
+declare -A assoc=(["*"]="star" ["!"]="bang" ["@"]="at" )
+declare -A assoc=(["*"]="star" ["!"]="bang" )
+declare -A assoc=(["!"]="bang" )
+declare -A assoc=(["*"]="star" ["!"]="bang" )
+declare -A assoc=(["!"]="bang" )
+star bang at
+star bang at
+0
+0
+0
+1
+1
+declare -A assoc=(["*"]="star" ["!"]="bang" ["@"]=" key" )
+===
+1
+1
+declare -a array=([0]="1" [1]="2" [2]="3")
+1 2 3
+1 2 3
+0
+0
+./quotearray4.sub: line 115: array[@]: bad array subscript
+declare -a array=([0]="1" [1]="2" [2]="3")
+./quotearray5.sub: line 27: unset: `a[$(echo': not a valid identifier
+./quotearray5.sub: line 27: unset: `foo)]': not a valid identifier
+declare -A a=()
+declare -A a=()
+declare -A a=()
+-----
+declare -A a=(["\$(echo foo)"]="1" )
+declare -A a=()
+declare -A a=()
+declare -A a=()
+-----
+declare -A a=()
+declare -A a=()
+declare -A a=()
+----------
+declare -A a=([.]="v1" )
+declare -A a=([.]="v1" )
+-----
+declare -A a=([.]="v1" )
+declare -A a=([.]="v1" )
+-----
+declare -A a=([.]="v1" )
+declare -A a=([.]="v1" )
diff --git a/tests/quotearray.tests b/tests/quotearray.tests
new file mode 100644
index 00000000..e1ed83b0
--- /dev/null
+++ b/tests/quotearray.tests
@@ -0,0 +1,164 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# a set of tests for associative arrays in arithmetic contexts
+
+declare -A assoc
+key='x],b[$(echo uname >&2)'
+
+(( assoc[$key]++ ))
+declare -p assoc
+
+(( assoc['$key']++ ))
+declare -p assoc
+
+(( assoc["$key"]++ ))
+declare -p assoc
+
+declare -A assoc
+
+(( 'assoc[$key]++' ))
+declare -p assoc
+
+(( 'assoc[$key]'++ ))
+declare -p assoc
+
+(( "assoc[$key]++" ))
+declare -p assoc
+
+unset assoc
+
+typeset -A a
+b="80's"
+
+((++a[$b]))
+
+((++a["$b"]))
+[[ $((++a[$b])) ]]
+[[ $((++a["$b"])) ]]
+
+echo ${a[$b]}
+unset a
+
+declare -A A
+
+string=abcdefghijklmnopqrstuvwxyz
+
+echo ${string:10:10}
+k1='%'
+k2='$(echo %)'
+
+A[%]=10
+A[']']=10
+A[$k2]=5
+
+k3=']'
+
+echo ${string:A[%]:A[$k1]}
+echo ${string:A[%]:A[$k2]}
+echo ${string:A[%]:A[$k3]}
+
+declare -p A
+
+unset A string key
+
+key='~'
+
+declare -A A
+A[$key]=42
+
+declare -p A
+
+echo $(( A[$key]++ ))
+declare -p A
+
+key='~0'
+A[$key]=42
+echo $(( A[$key]++ ))
+declare -p A
+
+declare -a a
+key='~-2'
+a[0]=12
+a[$key]=42
+echo $(( a[7<(4+2)] ))
+
+declare -p a
+
+unset A a key
+
+declare -A A
+declare -a a
+
+sString="devel packager's guide"
+i=2
+
+A["$sString"]=$i
+a[$i]=$sString
+
+echo "${A[${a[i]}]}"
+echo ${A["${a[i]}"]}
+
+unset A a
+
+#LANG=C
+unset var assoc
+var=\'\]
+declare -Ai assoc
+assoc[$var]=1
+assoc[$var]+=1
+((assoc['$var']++))
+((assoc[$var]++))
+typeset -p assoc
+
+unset assoc
+
+declare -A assoc
+key1='` echo >&2 foo`'
+key2='$( echo >&2 bar)'
+
+assoc[$key1]=42
+assoc[$key2]=63
+
+echo $(( assoc[$key1] + assoc[$key2] ))
+declare -p assoc
+unset assoc
+
+declare -a a
+key='x],b[$(echo uname >&2)'
+a[$key]=42
+
+expr='a[$key]'
+
+(( $expr ))
+echo $?
+
+echo $(( $expr ))
+echo $?
+
+echo $(( expr ))
+echo $?
+
+(( expr ))
+echo $?
+
+${THIS_SH} ./quotearray1.sub
+${THIS_SH} ./quotearray2.sub
+${THIS_SH} ./quotearray3.sub
+
+# behavior of builtins with array subscripts @ and *
+${THIS_SH} ./quotearray4.sub
+
+# behavior of unset with quoted and unquoted array arguments
+${THIS_SH} ./quotearray5.sub
diff --git a/tests/quotearray1.sub b/tests/quotearray1.sub
new file mode 100644
index 00000000..19741b1f
--- /dev/null
+++ b/tests/quotearray1.sub
@@ -0,0 +1,131 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# arithmetic operators for conditional commands and arithmetic commands
+
+declare -A assoc
+declare -a index
+
+key='x],b[$(echo uname >&2)'
+key1=']'
+key2='` echo >&2 foo`'
+key3='~'
+key4='7<(4+2)'
+key5='$( echo 2>& date)'
+key6='$(echo foo)'
+
+[[ -n assoc[$key] ]]
+declare -p assoc
+
+assoc[$key]=42
+assoc[$key1]=12
+assoc[$key2]=128
+assoc[$key3]=42
+assoc[0]=0
+
+[[ assoc[$key] -eq assoc[$key] ]]
+echo $?
+
+[[ assoc[$key] -gt assoc[$key1] ]]
+echo $?
+
+[[ assoc[$key2] -lt assoc[$key] ]]
+echo $?
+
+[[ assoc[$key] -eq assoc[$key3] ]]
+echo $?
+
+[[ index[7<(4+2)] -le assoc[0] ]]
+echo $?
+[[ index[$key4] -le assoc[0] ]]
+echo $?
+
+assoc[$key5]=foo
+declare -p assoc
+
+echo "${assoc[$key5]}"
+
+[[ -v assoc[$key5] ]]
+echo $?
+[[ -v assoc[$key] ]]
+echo $?
+
+unset assoc
+
+declare -a array
+index='0],b[1';
+((array[$index]++))
+
+declare -p array
+
+unset array
+
+declare -A assoc
+
+assoc[$key]=42
+assoc[$key4]=42
+
+[[ -v assoc[$key] ]]
+echo $?
+[[ -v assoc["$key"] ]]
+echo $?
+
+[[ -v assoc[$key4] ]]
+echo $?
+[[ -v assoc["$key4"] ]]
+echo $?
+
+[[ -v assoc['$key'] ]]
+echo $?
+[[ -v assoc['$key4'] ]]
+echo $?
+
+unset -v assoc
+
+declare -A aa
+aa[$key5]=foo
+
+declare -p aa
+echo "${aa[$key5]}"
+
+[[ -v aa[$key5] ]]
+echo $?
+
+[[ -v aa[$key] ]]
+echo $?
+
+aa[$key6]=42
+# this still performs expansion
+test -v aa["$key6"]
+echo $?
+# should be an error
+test -v aa[$key6]
+echo $?
+
+unset aa key
+
+declare -A assoc
+
+mytest ()
+{
+ assoc["$1"]=123
+ [[ -v assoc["$1"] ]]
+ printf '[[ -v assoc[%s] ]]; $?=%s\n' "$1" "$?"
+}
+
+mytest 'a'
+mytest '"'
+declare -p assoc
+unset -v assoc
+unset -f mytest
diff --git a/tests/quotearray2.sub b/tests/quotearray2.sub
new file mode 100644
index 00000000..056f8ca2
--- /dev/null
+++ b/tests/quotearray2.sub
@@ -0,0 +1,107 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# assoc_expand_once for builtins
+
+typeset -A a
+a[0]=0 a[1]=1
+
+let "a[\" \"]=11" ; typeset -p a ; a[0]=0
+
+unset a
+
+# tests for `problem' keys when using associative arrays and assoc_expand_once
+# deal with problems for now; this is a placeholder for if and when I fix them
+
+typeset -A a
+
+k='['
+echo $(( a[$k]=7 ))
+
+k=']'
+echo $(( a[$k]=7 ))
+
+unset a
+
+declare -A A
+
+for k in $'\t' ' '; do
+ (( A[$k]=2 ))
+done
+declare -p A
+
+for k in ']' '*' '@'; do
+ (( A[$k]=2 ))
+done
+
+declare -p A
+
+unset A
+declare -A A
+
+for k in $'\t' ' ' ']' '*' '@'; do
+ read "A[$k]" <<< X
+done
+declare -p A
+
+unset A
+declare -A A
+
+for k in $'\t' ' ' ']' '*' '@'; do
+ printf -v "A[$k]" "%s" X
+done
+declare -p A
+
+unset A
+declare -A A
+
+for k in ']' '*' '@'; do
+ declare A[$k]=X
+done
+declare -p A
+
+unset A
+declare -A A
+
+for k in ']' '*' '@'; do
+ declare "A[$k]=X"
+done
+declare -p A
+
+unset A
+
+# this isn't right yet, but changes will show up here
+shopt -s assoc_expand_once
+declare -A assoc
+key='x],b[$(echo uname >&2)'
+
+let assoc[$key]++
+declare -p assoc
+
+unset assoc
+
+typeset -A assoc
+at=@
+
+key='$(echo foo)'
+
+assoc[$key]=1
+declare -p assoc
+
+shopt -s assoc_expand_once
+test -v assoc["$key"] ; echo $?
+
+unset assoc
+shopt -u assoc_expand_once
+
diff --git a/tests/quotearray3.sub b/tests/quotearray3.sub
new file mode 100644
index 00000000..65f950d5
--- /dev/null
+++ b/tests/quotearray3.sub
@@ -0,0 +1,117 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# assoc_expand_once and unset builtin, which is treated specially
+
+declare -A assoc
+
+var=x123
+assoc['$var']=value
+declare -p assoc
+
+shopt -u assoc_expand_once
+unset "assoc[$var]"
+declare -p assoc
+
+unset 'assoc[$var]'
+declare -p assoc
+
+assoc['$var']=value
+shopt -s assoc_expand_once
+unset 'assoc[$var]'
+declare -p assoc
+
+unset assoc
+shopt -u assoc_expand_once
+
+declare -A a
+a['$(echo foo)']=1
+
+unset 'a[$(echo foo)]'
+declare -p a
+
+key='$(echo foo)'
+a[$key]=1
+
+unset 'a[$key]'
+declare -p a
+
+a[$key]=1
+unset "a[$key]"
+declare -p a
+
+a[$key]=1
+unset a[$key]
+declare -p a
+
+unset a
+
+typeset -A assoc
+key=@
+
+assoc[@]=at
+assoc[!]=bang
+
+# this should only unset the element with key `@'
+unset -v assoc[$key]
+typeset -p assoc
+
+# this should check for assoc[@] and return 1
+test -v assoc[$key]
+echo $?
+
+# this should too
+[[ -v assoc[$key] ]]
+echo $?
+
+unset assoc array
+
+declare -A assoc
+declare -a array
+
+assoc=([@]=at [!]=bang)
+declare -p assoc
+
+unset assoc[@]
+declare -p assoc
+
+array=(1 2 3)
+declare -p array
+
+# right now, this still unsets the entire array
+unset array[@]
+declare -p array
+
+BASH_COMPAT=51
+unset array[@]
+declare -p array
+
+declare -A map; key='foo$(uname >/dev/tty)bar'; map[$key]=1
+declare -p map
+echo ${map["$key"]}
+
+unset map["$key"]
+declare -p map
+unset map
+
+declare -A blah
+blah['$(DOESNOTEXIST)']=broken
+for i in "${!blah[@]}"; do echo "$i"; done
+
+for i in "${!blah[@]}"; do unset blah["$i"]; done
+declare -p blah
+unset blah
+
+
+
diff --git a/tests/quotearray4.sub b/tests/quotearray4.sub
new file mode 100644
index 00000000..964aac75
--- /dev/null
+++ b/tests/quotearray4.sub
@@ -0,0 +1,116 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# tests for builtins handling associative array keys `*' and `@', with some
+# indexed array tests as well (backwards compatible)
+
+# derived from test cases posted to bug-bash by myoga.murase@gmail.com
+
+declare -A assoc
+declare -a array
+
+assoc[@]=at
+assoc[*]=star
+assoc[!]=bang
+
+key=@
+
+iref='array[@]'
+aref='assoc[@]'
+
+declare -p assoc
+
+unset assoc[@]
+declare -p assoc
+
+unset assoc[*]
+declare -p assoc
+
+unset assoc
+declare -p assoc
+
+declare -A assoc
+assoc[@]=at
+assoc[*]=star
+assoc[!]=bang
+
+declare -p assoc
+
+unset assoc["$key"]
+declare -p assoc
+
+unset assoc["*"]
+declare -p assoc
+
+assoc[@]=at assoc[*]=star
+
+unset assoc['@']
+declare -p assoc
+
+unset assoc['*']
+
+declare -p assoc
+
+assoc[@]=at assoc[*]=star
+echo ${!aref}
+
+declare -n nref=$aref
+echo ${nref}
+unset -n nref
+
+# for associative arrays, test -v treats @ and * as keys
+
+test -v 'assoc[@]'
+echo $?
+test -v assoc[$key]
+echo $?
+[[ -v assoc[$key] ]]
+echo $?
+
+unset -v 'assoc[@]'
+
+test -v 'assoc[@]'
+echo $?
+[[ -v assoc[@] ]]
+echo $?
+
+assoc[@]=at
+
+printf -v assoc[@] "%10s" key
+declare -p assoc
+
+echo ===
+array=()
+test -v array[@]
+echo $?
+[[ -v array[@] ]]
+echo $?
+
+array=(1 2 3)
+declare -p array
+
+echo ${!iref}
+declare -n nref=$iref
+
+echo $nref
+unset -n nref
+
+# but for indexed arrays, test -v treats @ and * as standing for the entire array
+test -v 'array[@]'
+echo $?
+[[ -v array[@] ]]
+echo $?
+
+printf -v array[@] "%-10s" key
+declare -p array
diff --git a/tests/quotearray5.sub b/tests/quotearray5.sub
new file mode 100644
index 00000000..5366a999
--- /dev/null
+++ b/tests/quotearray5.sub
@@ -0,0 +1,124 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# a set of tests for unset to try to ensure that subscripts are only expanded
+# once. Derived from tests submitted by konsolebox@gmail.com
+
+declare -A a
+key='$(echo foo)'
+
+# Here the tokens are valid array references and pass that fact to unset
+# post-expansion
+
+# This solves the surprise expansion issues.
+
+a[$key]=1
+unset -v a[$key] # this performs normal word splitting
+unset -v a["$key"] # prevent word splitting
+declare -p a # Displays no element
+
+a['$key']=2
+unset -v a['$key']
+declare -p a # Displays no element
+
+a["foo"]=3
+unset -v a["foo"]
+declare -p a # Displays no element
+
+echo -----
+
+# Here the tokens are "strings". They expand and keep the
+# original behavior and allows existing scripts to not break.
+# It also allows nref or iref references to be transparently
+# referenced in it.
+
+# the quotes prevent the arguments from being recognized as valid array
+# references before word expansion. since unset doesn't know to treat
+# them specially, they're treated as in previous versions and expansion
+# is performed as part of evaluating the subscript
+
+a[$key]=1
+declare -p a
+unset 'a[$key]' # Transforms to a[$key] after expansion
+declare -p a # Displays no element
+
+a['$key']=2
+unset "a['\$key']" # Transforms to a['$key'] after expansion
+declare -p a # Displays no element
+
+a["foo"]=3
+unset 'a["foo"]' # Transforms to a["foo"] after expansion
+declare -p a # Displays no element
+
+echo -----
+
+# The update also keeps compatibility with already existing behavior of
+# unset when assoc_expand_once is enabled, but only for quoted tokens.
+
+a=()
+shopt -s assoc_expand_once
+
+a[$key]=1
+unset "a[$key]"
+declare -p a # Displays no element
+
+a['$key']=2
+unset "a[\$key]"
+declare -p a # Displays no element
+
+a["foo"]=3
+unset "a[foo]"
+declare -p a # Displays no element
+
+echo ----------
+
+# For unsetting '@' and all elements:
+
+key=@
+
+declare -A a=(@ v0 . v1)
+unset a[$key]
+declare -p a # Displays 'declare -A a=([.]="v1" )'
+
+declare -A a=(@ v0 . v1)
+unset a[@]
+declare -p a # same behavior
+
+echo -----
+
+# these are quoted strings and unset doesn't treat them specially
+
+unset a
+shopt -u assoc_expand_once
+
+declare -A a=(@ v0 . v1)
+unset 'a[$key]'
+declare -p a # Displays 'declare -A a=([.]="v1" )'
+
+declare -A a=(@ v0 . v1)
+unset 'a[@]'
+declare -p a # same behavior
+
+echo -----
+
+unset a
+shopt -s assoc_expand_once
+
+declare -A a=(@ v0 . v1)
+unset "a[$key]" # $key is expanded
+declare -p a # Displays 'declare -A a=([.]="v1" )'
+
+declare -A a=(@ v0 . v1)
+unset 'a[@]'
+declare -p a # same behavior
diff --git a/tests/read.right b/tests/read.right
index 11440837..e21fcb5f 100644
--- a/tests/read.right
+++ b/tests/read.right
@@ -30,19 +30,24 @@ argv[1] = <foo>
argv[1] = <foo>
argv[1] = < foo>
a = abcdefg
+xyz
a = xyz
a = -xyz 123-
a = abc
timeout 1: ok
-
+unset or null 1
timeout 2: ok
-
-./read2.sub: line 36: read: -3: invalid timeout specification
+unset or null 2
+timeout 3: ok
+unset or null 3
+./read2.sub: line 45: read: -3: invalid timeout specification
1
abcde
+abcde
./read3.sub: line 17: read: -1: invalid number
abc
+defg
ab
abc
#
@@ -64,3 +69,17 @@ FOO
0
0
1
+timeout 1: ok
+unset or null 1
+timeout 2: ok
+unset or null 2
+timeout 3: ok
+unset or null 3
+timeout 4: ok
+abcde
+abcde
+
+one
+two three four
+one
+two three four
diff --git a/tests/read.tests b/tests/read.tests
index 7384f05f..6132b6fe 100644
--- a/tests/read.tests
+++ b/tests/read.tests
@@ -109,3 +109,9 @@ ${THIS_SH} ./read5.sub
# test behavior of read -t 0
${THIS_SH} ./read6.sub
+
+# test behavior of readline timeouts
+${THIS_SH} ./read7.sub
+
+# test behavior of read -n and read -d on regular files
+${THIS_SH} ./read8.sub
diff --git a/tests/read1.sub b/tests/read1.sub
index b3b85157..cf003986 100644
--- a/tests/read1.sub
+++ b/tests/read1.sub
@@ -15,6 +15,7 @@ a=7
echo 'abcdefg|xyz' | {
read -d '|' a
echo a = "${a-unset}"
+ cat - # make sure we don't read too much
}
echo xyz 123 | {
diff --git a/tests/read2.sub b/tests/read2.sub
index 41698e46..d3530115 100644
--- a/tests/read2.sub
+++ b/tests/read2.sub
@@ -11,27 +11,36 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
+: ${TMPDIR:=/var/tmp}
+
a=4
-read -t 2 a < /dev/tty
+read -t 1 a < /dev/tty
estat=$?
if [ $estat -gt 128 ]; then
echo timeout 1: ok
else
echo $estat
fi
+echo ${a:-unset or null 1}
-echo $a
-
-sleep 5 | read -t 1 a
+read -t 0.000001 a < /dev/tty
estat=$?
if [ $estat -gt 128 ]; then
echo timeout 2: ok
else
echo $estat
fi
+echo ${a:-unset or null 2}
-echo $a
+sleep 1 | read -t 0.25 a
+estat=$?
+if [ $estat -gt 128 ]; then
+ echo timeout 3: ok
+else
+ echo $estat
+fi
+echo ${a:-unset or null 3}
read -t -3 a < /dev/tty
echo $?
@@ -40,6 +49,24 @@ echo $a
# the above should all time out
echo abcde | {
- read -t 2 a
+ read -t 0.5 a
echo $a
}
+
+read -t .0001 a <<<abcde
+echo $a
+
+# this is the original test that prompted the change to sh_timers
+cd $TMPDIR
+rm -f a.pipe
+mkfifo a.pipe
+exec 9<> a.pipe
+rm -f a.pipe
+
+for c in {0..2000}; do
+ (eval "echo {0..$c}" & read -u 9 -t 0.0001) >/dev/null
+ printf $'ok %d' "$c" >/dev/null
+done
+
+cd $OLDPWD
+rm -f $TMPDIR/a.pipe # paranoia
diff --git a/tests/read3.sub b/tests/read3.sub
index d413f7db..8a240401 100644
--- a/tests/read3.sub
+++ b/tests/read3.sub
@@ -20,6 +20,7 @@ read -n -1
echo abcdefg | {
read -n 3 xyz
echo $xyz
+ cat - # make sure we don't read too much
}
# fewer chars than specified
diff --git a/tests/read7.sub b/tests/read7.sub
new file mode 100644
index 00000000..553070f4
--- /dev/null
+++ b/tests/read7.sub
@@ -0,0 +1,66 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# test behavior of native readline timeouts
+
+# turn off bracketed paste to avoid spurious output
+bind 'set enable-bracketed-paste off' 2>/dev/null
+
+read -t 0.00001 -e var
+estat=$?
+if [ $estat -gt 128 ]; then
+ echo timeout 1: ok
+else
+ echo $estat
+fi
+echo ${var:-unset or null 1}
+
+read -e -t 0.1 var
+estat=$?
+if [ $estat -gt 128 ]; then
+ echo timeout 2: ok
+else
+ echo $estat
+fi
+echo ${var:-unset or null 2}
+
+read -e -t 1 var < /dev/tty
+estat=$?
+if [ $estat -gt 128 ]; then
+ echo timeout 3: ok
+else
+ echo $estat
+fi
+echo ${var:-unset or null 3}
+
+sleep 1 | read -t 0.25 -e a
+estat=$?
+if [ $estat -gt 128 ]; then
+ echo timeout 4: ok
+else
+ echo $estat
+fi
+
+# the above should all time out
+echo abcde | {
+ read -e -t 0.5 a
+ echo $a
+}
+
+read -e -t .0001 a <<<abcde
+echo $a
+
+set -o posix
+read -t 0.1 a </dev/tty
+echo $a
+
diff --git a/tests/read8.sub b/tests/read8.sub
new file mode 100644
index 00000000..d5b7af8d
--- /dev/null
+++ b/tests/read8.sub
@@ -0,0 +1,15 @@
+tmpf=$TMPDIR/tmp-$$
+printf "%s\n" "one two three four" > $tmpf
+
+# make sure we rewind the input properly when reading a specific number of
+# characters or using a non-standard delimiter from a regular file
+
+exec <$tmpf
+read -n 4 input && echo "$input"
+cat -
+
+exec <$tmpf
+read -d ' ' input && echo "$input"
+cat -
+
+rm -f $tmpf
diff --git a/tests/rsh.right b/tests/rsh.right
index a91974a5..5f64049b 100644
--- a/tests/rsh.right
+++ b/tests/rsh.right
@@ -13,7 +13,7 @@
./rsh.tests: line 37: /tmp/restricted: restricted: cannot redirect output
./rsh.tests: line 42: command: -p: restricted
./rsh.tests: line 44: set: +r: invalid option
-set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
+set: usage: set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]
./rsh.tests: line 45: set: restricted: invalid option name
./rsh.tests: line 47: exec: restricted
./rsh.tests: after exec
diff --git a/tests/run-all b/tests/run-all
index b8219b2d..1f749239 100644
--- a/tests/run-all
+++ b/tests/run-all
@@ -23,12 +23,12 @@ SUFFIX=`${THIS_SH} -c 'echo $(( $RANDOM + $BASHPID ))'`
BASH_TSTOUT=${TMPDIR}/bashtst-$SUFFIX # for now
export BASH_TSTOUT
-trap 'rm -f $BASH_TSTOUT' 0 1 2 3 15
+trap 'rm -f $BASH_TSTOUT ; exit' 1 2 3 15
+trap 'rm -f $BASH_TSTOUT' 0
PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests'
export PATH
-
# unset BASH_ENV only if it is set
[ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV
# can't reliably do it for SHELLOPTS; SHELLOPTS is readonly in bash
diff --git a/tests/run-execscript b/tests/run-execscript
index de786442..c3ed53e6 100644
--- a/tests/run-execscript
+++ b/tests/run-execscript
@@ -1,5 +1,22 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
echo "warning: the text of a system error message may vary between systems and" >&2
echo "warning: produce diff output." >&2
+echo "warning: UNIX versions number signals differently." >&2
+echo "warning: If output differing only in line numbers is produced, please" >&2
+echo "warning: do not consider this a test failure." >&2
echo "warning: if the text of the error messages concerning \`notthere' or" >&2
echo "warning: \`/tmp/bash-notthere' not being found or \`/' being a directory" >&2
echo "warning: produce diff output, please do not consider this a test failure" >&2
diff --git a/tests/run-intl b/tests/run-intl
index c31d1d0a..8234f280 100644
--- a/tests/run-intl
+++ b/tests/run-intl
@@ -1,8 +1,5 @@
# See whether or not we can use `diff -a'
( diff -a ./intl.right ./intl.right >/dev/null 2>&1 ) && AFLAG=-a
-echo "warning: some of these tests will fail if you do not have UTF-8" >&2
-echo "warning: locales installed on your system." >&2
-
${THIS_SH} ./intl.tests > ${BASH_TSTOUT}
diff $AFLAG ${BASH_TSTOUT} intl.right && rm -f ${BASH_TSTOUT}
diff --git a/tests/run-minimal b/tests/run-minimal
index ade30b15..0c3a2e5f 100644
--- a/tests/run-minimal
+++ b/tests/run-minimal
@@ -58,8 +58,8 @@ do
run-ifs-tests|run-input-test|run-invert|run-more-exp|run-nquote) echo $x ; sh $x ;;
run-ifs-posix|run-posix2|run-posixpat|run-posixpipe) echo $x ; sh $x ;;
run-precedence|run-quote|run-read|run-rhs-exp|run-strip|run-tilde) echo $x ; sh $x ;;
- run-dynvar) echo $x ; sh $x ;;
- ;;
+ run-dynvar|run-iquote) echo $x ; sh $x ;;
+ run-type|run-comsub-eof|run-comsub-posix) echo $x ; sh $x ;;
*) ;;
esac
rm -f "$BASH_TSTOUT"
diff --git a/tests/run-quotearray b/tests/run-quotearray
new file mode 100644
index 00000000..06e5e6eb
--- /dev/null
+++ b/tests/run-quotearray
@@ -0,0 +1,2 @@
+${THIS_SH} ./quotearray.tests >${BASH_TSTOUT} 2>&1
+diff ${BASH_TSTOUT} quotearray.right && rm -f ${BASH_TSTOUT}
diff --git a/tests/shopt.right b/tests/shopt.right
index 8cf46db6..d617c1d7 100644
--- a/tests/shopt.right
+++ b/tests/shopt.right
@@ -28,6 +28,7 @@ shopt -s extquote
shopt -u failglob
shopt -s force_fignore
shopt -s globasciiranges
+shopt -s globskipdots
shopt -u globstar
shopt -u gnu_errfmt
shopt -u histappend
@@ -46,13 +47,16 @@ shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nocasematch
+shopt -u noexpand_translation
shopt -u nullglob
+shopt -s patsub_replacement
shopt -s progcomp
shopt -u progcomp_alias
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath
+shopt -u varredir_close
shopt -u xpg_echo
--
shopt -u huponexit
@@ -66,8 +70,10 @@ shopt -s expand_aliases
shopt -s extquote
shopt -s force_fignore
shopt -s globasciiranges
+shopt -s globskipdots
shopt -s hostcomplete
shopt -s interactive_comments
+shopt -s patsub_replacement
shopt -s progcomp
shopt -s promptvars
shopt -s sourcepath
@@ -108,10 +114,12 @@ shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nocasematch
+shopt -u noexpand_translation
shopt -u nullglob
shopt -u progcomp_alias
shopt -u restricted_shell
shopt -u shift_verbose
+shopt -u varredir_close
shopt -u xpg_echo
--
autocd off
@@ -150,10 +158,12 @@ mailwarn off
no_empty_cmd_completion off
nocaseglob off
nocasematch off
+noexpand_translation off
nullglob off
progcomp_alias off
restricted_shell off
shift_verbose off
+varredir_close off
xpg_echo off
--
set +o allexport
@@ -294,5 +304,9 @@ xtrace off
--
./shopt.tests: line 106: shopt: xyz1: invalid shell option name
./shopt.tests: line 107: shopt: xyz1: invalid option name
+28c28
+< globskipdots off
+---
+> globskipdots on
expand_aliases on
expand_aliases on
diff --git a/tests/test.right b/tests/test.right
index 391edbbd..4be22f4b 100644
--- a/tests/test.right
+++ b/tests/test.right
@@ -220,6 +220,8 @@ t ! -z "$z"
0
t ! -n "$z"
1
+t ! ! "$z"
+0
t "$zero"
1
t ! "$zero"
@@ -272,7 +274,7 @@ b ( 1 = 2
2
./test.tests: line 26: test: too many arguments
2
-./test.tests: line 431: [: missing `]'
+./test.tests: line 434: [: missing `]'
2
./test.tests: line 26: test: (: unary operator expected
2
diff --git a/tests/test.tests b/tests/test.tests
index 03e2754a..df4b8509 100644
--- a/tests/test.tests
+++ b/tests/test.tests
@@ -358,6 +358,9 @@ t ! -z "$z"
echo 't ! -n "$z"'
t ! -n "$z"
+echo 't ! ! "$z"'
+t ! ! "$z"
+
zero=
echo 't "$zero"'
t "$zero"
diff --git a/tests/tilde.tests b/tests/tilde.tests
index 374f3e6d..20268a73 100644
--- a/tests/tilde.tests
+++ b/tests/tilde.tests
@@ -86,7 +86,9 @@ echo ~$USER
cd "$wdir"
+# this test is incomplete; should also test assignment statements (tilde3.sub)
+echo foo=bar:~
+set -o posix
echo foo=bar:~
-set -o posix; echo foo=bar:~
exit 0
diff --git a/tests/tilde2.right b/tests/tilde2.right
index fce04687..f383e3a3 100644
--- a/tests/tilde2.right
+++ b/tests/tilde2.right
@@ -22,3 +22,7 @@ HOME=~
/usr/$x/abc
HOME=/usr/$x/abc
/usr/$x/abc
+foo=/home/xyz:/home/xyz
+/home/xyz:/home/xyz
+foo=~:~
+/home/xyz:/home/xyz
diff --git a/tests/tilde2.tests b/tests/tilde2.tests
index cc5dba9f..d2415cb3 100644
--- a/tests/tilde2.tests
+++ b/tests/tilde2.tests
@@ -81,3 +81,5 @@ set +o posix
eval echo $h
eval $h
echo $HOME
+
+$THIS_SH ./tilde3.sub
diff --git a/tests/tilde3.sub b/tests/tilde3.sub
new file mode 100644
index 00000000..c35ea500
--- /dev/null
+++ b/tests/tilde3.sub
@@ -0,0 +1,26 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# regression test for tilde expansion following unquoted colons in posix mode
+
+HOME=/home/xyz
+
+echo foo=~:~
+foo=~:~
+printf "%s\n" $foo
+
+set -o posix
+
+echo foo=~:~
+foo=~:~
+printf "%s\n" $foo
diff --git a/tests/type.right b/tests/type.right
index f876715a..bbc228e8 100644
--- a/tests/type.right
+++ b/tests/type.right
@@ -54,12 +54,12 @@ f ()
foo is a function
foo ()
{
- echo $(<x1)
+ echo $(< x1)
}
bar is a function
bar ()
{
- echo $(<x1)
+ echo $(< x1)
}
foo is a function
foo ()
diff --git a/tests/unicode1.sub b/tests/unicode1.sub
index fc742855..713ab40f 100644
--- a/tests/unicode1.sub
+++ b/tests/unicode1.sub
@@ -109,7 +109,13 @@ fr_FR_ISO_8859_1=(
[0x00fb]=$'\373' [0x00fc]=$'\374' [0x00fd]=$'\375' [0x00fe]=$'\376'
)
-TestCodePage fr_FR.ISO8859-1 fr_FR_ISO_8859_1
+# this locale causes problems all over the place
+if locale -a | grep -i '^fr_FR\.ISO8859.*1$' >/dev/null ; then
+ TestCodePage fr_FR.ISO8859-1 fr_FR_ISO_8859_1
+else
+ echo "unicode1.sub: warning: you do not have the fr_FR.ISO8859-1 locale installed;" >&2
+ echo "unicode1.sub: that will cause some of these tests to be skipped." >&2
+fi
zh_TW_BIG5=(
[0x00f6]=$'\366' [0x00f7]=$'\367' [0x00f8]=$'\370' [0x00f9]=$'\371' [0x00fa]=$'\372'
@@ -309,8 +315,14 @@ jp_JP_SHIFT_JIS=(
[0xFF9E]=$'\xDE' # HALFWIDTH KATAKANA VOICED SOUND MARK
[0xFF9F]=$'\xDF' # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
)
+
#TestCodePage ja_JP.SHIFT_JIS jp_JP_SHIFT_JIS
-TestCodePage ja_JP.SJIS jp_JP_SHIFT_JIS
+if locale -a | grep -i '^ja_JP.SJIS' >/dev/null ; then
+ TestCodePage ja_JP.SJIS jp_JP_SHIFT_JIS
+else
+ echo "unicode1.sub: warning: you do not have the ja_JP.SJIS locale installed;" >&2
+ echo "unicode1.sub: that will cause some of these tests to be skipped." >&2
+fi
#for ((x=1;x<1000;x++)); do printf ' [0x%04x]=%-11q' "$x" "$(printf "$(printf '\\U%08x' $x)")" ; [ $(($x%5)) = 0 ] && echo; done
C_UTF_8=(
diff --git a/tests/varenv.right b/tests/varenv.right
index 358f5dc7..f6bd1b5b 100644
--- a/tests/varenv.right
+++ b/tests/varenv.right
@@ -168,10 +168,9 @@ after bar: var=global
./varenv13.sub: line 16: `var[0]': not a valid identifier
./varenv13.sub: line 16: `var[@]': not a valid identifier
./varenv13.sub: line 14: declare: var: not found
-./varenv13.sub: line 25: var[@]: bad array subscript
-declare -A var=([0]="X" )
+declare -A var=([0]="X" ["@"]="Y" )
help
-./varenv13.sub: line 34: `var[0]': not a valid identifier
+./varenv13.sub: line 35: `var[0]': not a valid identifier
1
declare -A var=([0]="X" )
declare -A var=([Y]="Y" )
@@ -265,6 +264,14 @@ ignoreeof off
ignoreeof on
10
match 1
+trap -- 'echo trap:$FUNCNAME' EXIT
+trap:f
+trap -- 'echo trap:$FUNCNAME' EXIT
+trap:f
+trap -- 'echo trap:$FUNCNAME' EXIT
+trap:f
+trap -- 'echo trap:$FUNCNAME' EXIT
+trap:f
a=z
a=b
a=z
diff --git a/tests/varenv.tests b/tests/varenv.tests
index b058ed4f..68c619ec 100644
--- a/tests/varenv.tests
+++ b/tests/varenv.tests
@@ -259,6 +259,7 @@ ${THIS_SH} ./varenv18.sub
${THIS_SH} ./varenv19.sub
${THIS_SH} ./varenv20.sub
${THIS_SH} ./varenv21.sub
+${THIS_SH} ./varenv22.sub
# make sure variable scoping is done right
tt() { typeset a=b;echo a=$a; };a=z;echo a=$a;tt;echo a=$a
diff --git a/tests/varenv13.sub b/tests/varenv13.sub
index 1f837ec7..1fa7d5b3 100644
--- a/tests/varenv13.sub
+++ b/tests/varenv13.sub
@@ -22,6 +22,7 @@ typeset -A var
f() { declare -p ${!var*}; }
+# this is no longer an error
var[0]=X var[@]=Y
f
diff --git a/tests/varenv22.sub b/tests/varenv22.sub
new file mode 100644
index 00000000..6d42bb57
--- /dev/null
+++ b/tests/varenv22.sub
@@ -0,0 +1,17 @@
+# test behavior of FUNCNAME in and out of parse_and_execute scenarios
+
+# in parse_and_execute
+${THIS_SH} -c 'trap "echo trap:\$FUNCNAME" EXIT ; trap ; f() { exit; } ; f' bash
+
+${THIS_SH} << \EOF
+eval "trap 'echo trap:\$FUNCNAME' EXIT ; trap; f() { exit; } ; f"
+EOF
+
+# not in parse_and_execute
+${THIS_SH} << \EOF
+trap 'echo trap:$FUNCNAME' EXIT ; trap; f() { exit; } ; f
+EOF
+
+# this has to be last
+trap 'echo trap:$FUNCNAME' EXIT ; trap; f() { exit; } ; f
+
diff --git a/tests/vredir.right b/tests/vredir.right
index b2c4cc9c..6465595b 100644
--- a/tests/vredir.right
+++ b/tests/vredir.right
@@ -98,3 +98,4 @@ swizzle ()
exec {stdin}<&${fd[0]}-;
exec {stdout}>&${fd[1]}-
}
+./vredir8.sub: line 12: $fd: Bad file descriptor
diff --git a/tests/vredir.tests b/tests/vredir.tests
index ea59eecd..bd4cb775 100644
--- a/tests/vredir.tests
+++ b/tests/vredir.tests
@@ -57,5 +57,6 @@ ${THIS_SH} ./vredir5.sub
${THIS_SH} ./vredir6.sub
${THIS_SH} ./vredir7.sub
+${THIS_SH} ./vredir8.sub
exit 0
diff --git a/tests/vredir8.sub b/tests/vredir8.sub
new file mode 100644
index 00000000..e87b45b3
--- /dev/null
+++ b/tests/vredir8.sub
@@ -0,0 +1,13 @@
+# test varredir_close
+
+: {fd}<>/dev/null
+
+echo redir 1 >&$fd
+exec {fd}>&-
+
+shopt -s varredir_close
+
+: {fd}<>/dev/tty
+
+echo redir 2 >&$fd
+exec {fd}>&-
diff --git a/trap.c b/trap.c
index 1b27fb3a..dd0245e6 100644
--- a/trap.c
+++ b/trap.c
@@ -1,7 +1,7 @@
/* trap.c -- Not the trap command, but useful functions for manipulating
those objects. The trap command is in builtins/trap.def. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -83,11 +83,11 @@ static void free_trap_string (int);
static void reset_signal (int);
static void restore_signal (int);
static void reset_or_restore_signal_handlers (sh_resetsig_func_t *);
+static void reinit_trap (int);
static void trap_if_untrapped (int, char *);
/* Variables used here but defined in other files. */
-extern procenv_t alrmbuf;
extern volatile int from_return_trap;
extern int waiting_for_child;
@@ -297,11 +297,13 @@ void
run_pending_traps ()
{
register int sig;
- int old_exit_value, x;
- int old_running;
+ int x;
+ volatile int old_exit_value, old_running;
WORD_LIST *save_subst_varlist;
HASH_TABLE *save_tempenv;
sh_parser_state_t pstate;
+ volatile int save_return_catch_flag, function_code;
+ procenv_t save_return_catch;
#if defined (ARRAY_VARS)
ARRAY *ps;
#endif
@@ -311,9 +313,7 @@ run_pending_traps ()
if (running_trap > 0)
{
-#if defined (DEBUG)
- internal_warning ("run_pending_traps: recursive invocation while running trap for signal %d", running_trap-1);
-#endif
+ internal_debug ("run_pending_traps: recursive invocation while running trap for signal %d", running_trap-1);
#if defined (SIGWINCH)
if (running_trap == SIGWINCH+1 && pending_traps[SIGWINCH])
return; /* no recursive SIGWINCH trap invocations */
@@ -343,9 +343,7 @@ run_pending_traps ()
while (pending_traps[sig]--) instead of the if statement. */
if (pending_traps[sig])
{
- if (running_trap == sig+1)
- /*continue*/;
-
+ /* XXX - set last_command_exit_value = trap_saved_exit_value here? */
running_trap = sig + 1;
if (sig == SIGINT)
@@ -421,7 +419,6 @@ run_pending_traps ()
}
else
{
- /* XXX - should we use save_parser_state/restore_parser_state? */
save_parser_state (&pstate);
save_subst_varlist = subst_assign_varlist;
subst_assign_varlist = 0;
@@ -434,7 +431,23 @@ run_pending_traps ()
/* XXX - set pending_traps[sig] = 0 here? */
pending_traps[sig] = 0;
evalnest++;
- evalstring (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
+
+ function_code = 0;
+ save_return_catch_flag = return_catch_flag;
+ if (return_catch_flag)
+ {
+ COPY_PROCENV (return_catch, save_return_catch);
+ function_code = setjmp_nosigs (return_catch);
+ }
+
+ if (function_code == 0)
+ x = parse_and_execute (savestring (trap_list[sig]), "trap", SEVAL_NONINT|SEVAL_NOHIST|SEVAL_RESETLINE);
+ else
+ {
+ parse_and_execute_cleanup (sig + 1); /* XXX - could use -1 */
+ x = return_catch_value;
+ }
+
evalnest--;
#if defined (JOB_CONTROL)
restore_pipeline (1);
@@ -443,6 +456,19 @@ run_pending_traps ()
subst_assign_varlist = save_subst_varlist;
restore_parser_state (&pstate);
temporary_env = save_tempenv;
+
+ if (save_return_catch_flag)
+ {
+ return_catch_flag = save_return_catch_flag;
+ return_catch_value = x;
+ COPY_PROCENV (save_return_catch, return_catch);
+ if (function_code)
+ {
+ running_trap = old_running; /* XXX */
+ /* caller will set last_command_exit_value */
+ sh_longjmp (return_catch, 1);
+ }
+ }
}
pending_traps[sig] = 0; /* XXX - move before evalstring? */
@@ -475,9 +501,7 @@ trap_handler (sig)
if ((sigmodes[sig] & SIG_TRAPPED) == 0)
{
-#if defined (DEBUG)
- internal_warning ("trap_handler: signal %d: signal not trapped", sig);
-#endif
+ internal_debug ("trap_handler: signal %d: signal not trapped", sig);
SIGRETURN (0);
}
@@ -570,7 +594,7 @@ any_signals_trapped ()
register int i;
for (i = 1; i < NSIG; i++)
- if (sigmodes[i] & SIG_TRAPPED)
+ if ((sigmodes[i] & SIG_TRAPPED) && (sigmodes[i] & SIG_IGNORED) == 0)
return i;
return -1;
}
@@ -587,7 +611,8 @@ clear_pending_traps ()
void
check_signals ()
{
- CHECK_ALRM; /* set by the read builtin */
+ /* Add any other shell timeouts here */
+ check_read_timeout (); /* set by the read builtin */
QUIT;
}
@@ -981,7 +1006,7 @@ run_exit_trap ()
}
else if (code == ERREXIT)
retval = last_command_exit_value;
- else if (code == EXITPROG)
+ else if (code == EXITPROG || code == EXITBLTIN)
retval = last_command_exit_value;
else if (function_code != 0)
retval = return_catch_value;
@@ -1365,6 +1390,77 @@ restore_original_signals ()
reset_or_restore_signal_handlers (restore_signal);
}
+/* Change the flags associated with signal SIG without changing the trap
+ string. The string is TRAP_LIST[SIG] if we need it. */
+static void
+reinit_trap (sig)
+ int sig;
+{
+ sigmodes[sig] |= SIG_TRAPPED;
+ if (trap_list[sig] == (char *)IGNORE_SIG)
+ sigmodes[sig] |= SIG_IGNORED;
+ else
+ sigmodes[sig] &= ~SIG_IGNORED;
+ if (sigmodes[sig] & SIG_INPROGRESS)
+ sigmodes[sig] |= SIG_CHANGED;
+}
+
+/* Undo the effects of reset_signal_handlers(), which unsets the traps but
+ leaves the trap strings in place. This understands how reset_signal_handlers
+ works. */
+void
+restore_traps ()
+{
+ char *trapstr;
+ int i;
+
+ /* Take care of the exit trap first. If TRAP_LIST[0] is non-null, the trap
+ has been set. */
+ trapstr = trap_list[EXIT_TRAP];
+ if (trapstr)
+ reinit_trap (EXIT_TRAP);
+
+ /* Then DEBUG, RETURN, and ERROR. TRAP_LIST[N] == 0 if these signals are
+ not trapped. This knows what reset_signal_handlers does for these traps */
+ trapstr = trap_list[DEBUG_TRAP];
+ if (trapstr && function_trace_mode == 0)
+ reinit_trap (DEBUG_TRAP);
+ trapstr = trap_list[RETURN_TRAP];
+ if (trapstr && function_trace_mode == 0)
+ reinit_trap (RETURN_TRAP);
+ trapstr = trap_list[ERROR_TRAP];
+ if (trapstr && error_trace_mode == 0)
+ reinit_trap (ERROR_TRAP);
+
+ /* And finally all the `real' signals. reset_signal_handlers just changes the
+ signal handler for these signals, leaving the trap value in place. We
+ intuit what to do based on that value. We assume that signals marked as
+ SIG_SPECIAL are reinitialized by initialize_signals (), so we don't
+ change the signal handler unless the signal is supposed to be ignored. */
+ for (i = 1; i < NSIG; i++)
+ {
+ trapstr = trap_list[i];
+ if (sigmodes[i] & SIG_SPECIAL)
+ {
+ if (trapstr && trapstr != (char *)DEFAULT_SIG)
+ reinit_trap (i);
+ if (trapstr == (char *)IGNORE_SIG && (sigmodes[i] & SIG_NO_TRAP) == 0)
+ set_signal_handler (i, SIG_IGN);
+ }
+ else if (trapstr == (char *)IGNORE_SIG)
+ {
+ reinit_trap (i);
+ if ((sigmodes[i] & SIG_NO_TRAP) == 0)
+ set_signal_handler (i, SIG_IGN);
+ }
+ else if (trapstr != (char *)DEFAULT_SIG)
+ /* set_signal duplicates the string argument before freeing it. */
+ set_signal (i, trapstr);
+
+ pending_traps[i] = 0; /* XXX */
+ }
+}
+
/* If a trap handler exists for signal SIG, then call it; otherwise just
return failure. Returns 1 if it called the trap handler. */
int
@@ -1455,7 +1551,7 @@ signal_in_progress (sig)
return (sigmodes[sig] & SIG_INPROGRESS);
}
-#if 0 /* TAG: bash-5.2 */
+#if 0 /* unused */
int
block_trapped_signals (maskp, omaskp)
sigset_t *maskp;
diff --git a/trap.h b/trap.h
index ef64a680..89402a1b 100644
--- a/trap.h
+++ b/trap.h
@@ -1,6 +1,6 @@
/* trap.h -- data structures used in the trap mechanism. */
-/* Copyright (C) 1993-2013 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -98,6 +98,7 @@ extern void run_return_trap PARAMS((void));
extern void free_trap_strings PARAMS((void));
extern void reset_signal_handlers PARAMS((void));
extern void restore_original_signals PARAMS((void));
+extern void restore_traps PARAMS((void));
extern void get_original_signal PARAMS((int));
extern void get_all_original_signals PARAMS((void));
diff --git a/unwind_prot.c b/unwind_prot.c
index 5703777f..ec82393d 100644
--- a/unwind_prot.c
+++ b/unwind_prot.c
@@ -3,7 +3,7 @@
/* I can't stand it anymore! Please can't we just write the
whole Unix system in lisp or something? */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2021 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -35,7 +35,7 @@
# include <unistd.h>
#endif
-#if STDC_HEADERS
+#if defined (HAVE_STDDEF_H)
# include <stddef.h>
#endif
@@ -48,6 +48,7 @@
#include "unwind_prot.h"
#include "sig.h"
#include "quit.h"
+#include "bashintl.h" /* for _() */
#include "error.h" /* for internal_warning */
#include "ocache.h"
@@ -282,7 +283,7 @@ unwind_frame_discard_internal (tag, ignore)
}
if (found == 0)
- internal_warning ("unwind_frame_discard: %s: frame not found", tag);
+ internal_warning (_("unwind_frame_discard: %s: frame not found"), tag);
}
/* Restore the value of a variable, based on the contents of SV.
@@ -328,7 +329,7 @@ unwind_frame_run_internal (tag, ignore)
uwpfree (elt);
}
if (tag && found == 0)
- internal_warning ("unwind_frame_run: %s: frame not found", tag);
+ internal_warning (_("unwind_frame_run: %s: frame not found"), tag);
}
static void
diff --git a/variables.c b/variables.c
index 73f157fb..1a0c2c45 100644
--- a/variables.c
+++ b/variables.c
@@ -1,6 +1,6 @@
/* variables.c -- Functions for hacking shell variables. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -90,6 +90,18 @@
#define BASHFUNC_SUFFIX "%%"
#define BASHFUNC_SUFFLEN 2 /* == strlen(BASHFUNC_SUFFIX) */
+#if ARRAY_EXPORT
+#define BASHARRAY_PREFIX "BASH_ARRAY_"
+#define BASHARRAY_PREFLEN 11
+#define BASHARRAY_SUFFIX "%%"
+#define BASHARRAY_SUFFLEN 2
+
+#define BASHASSOC_PREFIX "BASH_ASSOC_"
+#define BASHASSOC_PREFLEN 11
+#define BASHASSOC_SUFFIX "%%" /* needs to be the same as BASHARRAY_SUFFIX */
+#define BASHASSOC_SUFFLEN 2
+#endif
+
/* flags for find_variable_internal */
#define FV_FORCETEMPENV 0x01
@@ -199,6 +211,9 @@ static SHELL_VAR *init_dynamic_array_var PARAMS((char *, sh_var_value_func_t *,
static SHELL_VAR *init_dynamic_assoc_var PARAMS((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
#endif
+static inline SHELL_VAR *set_int_value (SHELL_VAR *, intmax_t, int);
+static inline SHELL_VAR *set_string_value (SHELL_VAR *, const char *, int);
+
static SHELL_VAR *assign_seconds PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
static SHELL_VAR *get_seconds PARAMS((SHELL_VAR *));
static SHELL_VAR *init_seconds_var PARAMS((void));
@@ -315,6 +330,8 @@ static void push_func_var PARAMS((PTR_T));
static void push_builtin_var PARAMS((PTR_T));
static void push_exported_var PARAMS((PTR_T));
+static void delete_local_contexts PARAMS((VAR_CONTEXT *));
+
/* This needs to be looked at again. */
static inline void push_posix_tempvar_internal PARAMS((SHELL_VAR *, int));
@@ -429,14 +446,54 @@ initialize_shell_variables (env, privmode)
#if defined (ARRAY_VARS)
# if ARRAY_EXPORT
/* Array variables may not yet be exported. */
- if (*string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')')
+ if (STREQN (BASHARRAY_PREFIX, name, BASHARRAY_PREFLEN) &&
+ STREQN (BASHARRAY_SUFFIX, name + char_index - BASHARRAY_SUFFLEN, BASHARRAY_SUFFLEN) &&
+ *string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')')
{
+ size_t namelen;
+ char *tname; /* desired imported array variable name */
+
+ namelen = char_index - BASHARRAY_PREFLEN - BASHARRAY_SUFFLEN;
+
+ tname = name + BASHARRAY_PREFLEN; /* start of variable name */
+ tname[namelen] = '\0'; /* now tname == varname */
+
string_length = 1;
temp_string = extract_array_assignment_list (string, &string_length);
- temp_var = assign_array_from_string (name, temp_string, 0);
+ temp_var = assign_array_from_string (tname, temp_string, 0);
+ FREE (temp_string);
+ if (temp_var)
+ {
+ VSETATTR (temp_var, (att_exported | att_imported));
+ array_needs_making = 1;
+ }
+ }
+ else if (STREQN (BASHASSOC_PREFIX, name, BASHASSOC_PREFLEN) &&
+ STREQN (BASHASSOC_SUFFIX, name + char_index - BASHASSOC_SUFFLEN, BASHASSOC_SUFFLEN) &&
+ *string == '(' && string[1] == '[' && string[strlen (string) - 1] == ')')
+ {
+ size_t namelen;
+ char *tname; /* desired imported assoc variable name */
+
+ namelen = char_index - BASHASSOC_PREFLEN - BASHASSOC_SUFFLEN;
+
+ tname = name + BASHASSOC_PREFLEN; /* start of variable name */
+ tname[namelen] = '\0'; /* now tname == varname */
+
+ /* need to make sure it exists as an associative array first */
+ temp_var = find_or_make_array_variable (tname, 2);
+ if (temp_var)
+ {
+ string_length = 1;
+ temp_string = extract_array_assignment_list (string, &string_length);
+ temp_var = assign_array_var_from_string (temp_var, temp_string, 0);
+ }
FREE (temp_string);
- VSETATTR (temp_var, (att_exported | att_imported));
- array_needs_making = 1;
+ if (temp_var)
+ {
+ VSETATTR (temp_var, (att_exported | att_imported));
+ array_needs_making = 1;
+ }
}
else
# endif /* ARRAY_EXPORT */
@@ -636,34 +693,11 @@ initialize_shell_variables (env, privmode)
rl_prefer_env_winsize = 1;
#endif /* READLINE && STRICT_POSIX */
- /*
- * 24 October 2001
- *
- * I'm tired of the arguing and bug reports. Bash now leaves SSH_CLIENT
- * and SSH2_CLIENT alone. I'm going to rely on the shell_level check in
- * isnetconn() to avoid running the startup files more often than wanted.
- * That will, of course, only work if the user's login shell is bash, so
- * I've made that behavior conditional on SSH_SOURCE_BASHRC being defined
- * in config-top.h.
- */
-#if 0
- temp_var = find_variable ("SSH_CLIENT");
- if (temp_var && imported_p (temp_var))
- {
- VUNSETATTR (temp_var, att_exported);
- array_needs_making = 1;
- }
- temp_var = find_variable ("SSH2_CLIENT");
- if (temp_var && imported_p (temp_var))
- {
- VUNSETATTR (temp_var, att_exported);
- array_needs_making = 1;
- }
-#endif
-
/* Get the user's real and effective user ids. */
uidset ();
+ temp_var = set_if_not ("BASH_LOADABLES_PATH", DEFAULT_LOADABLE_BUILTINS_PATH);
+
temp_var = find_variable ("BASH_XTRACEFD");
if (temp_var && imported_p (temp_var))
sv_xtracefd (temp_var->name);
@@ -1273,6 +1307,39 @@ init_dynamic_assoc_var (name, getfunc, setfunc, attrs)
}
#endif
+/* Set the string value of VAR to the string representation of VALUE.
+ Right now this takes an INTMAX_T because that's what itos needs. If
+ FLAGS&1, we force the integer attribute on. */
+static inline SHELL_VAR *
+set_int_value (SHELL_VAR *var, intmax_t value, int flags)
+{
+ char *p;
+
+ p = itos (value);
+ FREE (value_cell (var));
+ var_setvalue (var, p);
+ if (flags & 1)
+ VSETATTR (var, att_integer);
+ return (var);
+}
+
+static inline SHELL_VAR *
+set_string_value (SHELL_VAR *var, const char *value, int flags)
+{
+ char *p;
+
+ if (value && *value)
+ p = savestring (value);
+ else
+ {
+ p = (char *)xmalloc (1);
+ p[0] = '\0';
+ }
+ FREE (value_cell (var));
+ var_setvalue (var, p);
+ return (var);
+}
+
/* The value of $SECONDS. This is the number of seconds since shell
invocation, or, the number of seconds since the last assignment + the
value of the last assignment. */
@@ -1295,7 +1362,7 @@ assign_seconds (self, value, unused, key)
seconds_value_assigned = expok ? nval : 0;
gettimeofday (&shellstart, NULL);
shell_start_time = shellstart.tv_sec;
- return (self);
+ return (set_int_value (self, nval, integer_p (self) != 0));
}
static SHELL_VAR *
@@ -1303,18 +1370,11 @@ get_seconds (var)
SHELL_VAR *var;
{
time_t time_since_start;
- char *p;
struct timeval tv;
gettimeofday(&tv, NULL);
time_since_start = tv.tv_sec - shell_start_time;
- p = itos(seconds_value_assigned + time_since_start);
-
- FREE (value_cell (var));
-
- VSETATTR (var, att_integer);
- var_setvalue (var, p);
- return (var);
+ return (set_int_value (var, seconds_value_assigned + time_since_start, 1));
}
static SHELL_VAR *
@@ -1356,7 +1416,7 @@ assign_random (self, value, unused, key)
sbrand (seedval);
if (subshell_environment)
seeded_subshell = getpid ();
- return (self);
+ return (set_int_value (self, seedval, integer_p (self) != 0));
}
int
@@ -1384,16 +1444,9 @@ get_random (var)
SHELL_VAR *var;
{
int rv;
- char *p;
rv = get_random_number ();
- p = itos (rv);
-
- FREE (value_cell (var));
-
- VSETATTR (var, att_integer);
- var_setvalue (var, p);
- return (var);
+ return (set_int_value (var, rv, 1));
}
static SHELL_VAR *
@@ -1401,16 +1454,9 @@ get_urandom (var)
SHELL_VAR *var;
{
u_bits32_t rv;
- char *p;
rv = get_urandom32 ();
- p = itos (rv);
-
- FREE (value_cell (var));
-
- VSETATTR (var, att_integer);
- var_setvalue (var, p);
- return (var);
+ return (set_int_value (var, rv, 1));
}
static SHELL_VAR *
@@ -1425,7 +1471,7 @@ assign_lineno (var, value, unused, key)
if (value == 0 || *value == '\0' || legal_number (value, &new_value) == 0)
new_value = 0;
line_number = line_number_base = new_value;
- return var;
+ return (set_int_value (var, line_number, integer_p (var) != 0));
}
/* Function which returns the current line number. */
@@ -1433,14 +1479,10 @@ static SHELL_VAR *
get_lineno (var)
SHELL_VAR *var;
{
- char *p;
int ln;
ln = executing_line_number ();
- p = itos (ln);
- FREE (value_cell (var));
- var_setvalue (var, p);
- return (var);
+ return (set_int_value (var, ln, 0));
}
static SHELL_VAR *
@@ -1462,12 +1504,7 @@ static SHELL_VAR *
get_subshell (var)
SHELL_VAR *var;
{
- char *p;
-
- p = itos (subshell_level);
- FREE (value_cell (var));
- var_setvalue (var, p);
- return (var);
+ return (set_int_value (var, subshell_level, 0));
}
static SHELL_VAR *
@@ -1475,14 +1512,9 @@ get_epochseconds (var)
SHELL_VAR *var;
{
intmax_t now;
- char *p;
now = NOW;
- p = itos (now);
-
- FREE (value_cell (var));
- var_setvalue (var, p);
- return (var);
+ return (set_int_value (var, now, 0));
}
static SHELL_VAR *
@@ -1490,7 +1522,6 @@ get_epochrealtime (var)
SHELL_VAR *var;
{
char buf[32];
- char *p;
struct timeval tv;
gettimeofday (&tv, NULL);
@@ -1498,10 +1529,7 @@ get_epochrealtime (var)
locale_decpoint (),
(unsigned)tv.tv_usec);
- p = savestring (buf);
- FREE (value_cell (var));
- var_setvalue (var, p);
- return (var);
+ return (set_string_value (var, buf, 0));
}
static SHELL_VAR *
@@ -1509,27 +1537,16 @@ get_bashpid (var)
SHELL_VAR *var;
{
int pid;
- char *p;
pid = getpid ();
- p = itos (pid);
-
- FREE (value_cell (var));
- VSETATTR (var, att_integer); /* XXX - was also att_readonly */
- var_setvalue (var, p);
- return (var);
+ return (set_int_value (var, pid, 1));
}
static SHELL_VAR *
get_bash_argv0 (var)
SHELL_VAR *var;
{
- char *p;
-
- p = savestring (dollar_vars[0]);
- FREE (value_cell (var));
- var_setvalue (var, p);
- return var;
+ return (set_string_value (var, dollar_vars[0], 0));
}
static char *static_shell_name = 0;
@@ -1574,16 +1591,8 @@ get_bash_command (var)
{
char *p;
- if (the_printed_command_except_trap)
- p = savestring (the_printed_command_except_trap);
- else
- {
- p = (char *)xmalloc (1);
- p[0] = '\0';
- }
- FREE (value_cell (var));
- var_setvalue (var, p);
- return (var);
+ p = the_printed_command_except_trap ? the_printed_command_except_trap : "";
+ return (set_string_value (var, p, 0));
}
#if defined (HISTORY)
@@ -1591,7 +1600,6 @@ static SHELL_VAR *
get_histcmd (var)
SHELL_VAR *var;
{
- char *p;
int n;
/* Do the same adjustment here we do in parse.y:prompt_history_number,
@@ -1602,10 +1610,7 @@ get_histcmd (var)
already been saved to history and the history number incremented.
Right now we use EXECUTING as the determinant. */
n = history_number () - executing;
- p = itos (n);
- FREE (value_cell (var));
- var_setvalue (var, p);
- return (var);
+ return (set_int_value (var, n, 0));
}
#endif
@@ -1619,10 +1624,7 @@ get_comp_wordbreaks (var)
if (rl_completer_word_break_characters == 0 && bash_readline_initialized == 0)
enable_hostname_completion (perform_hostname_completion);
- FREE (value_cell (var));
- var_setvalue (var, savestring (rl_completer_word_break_characters));
-
- return (var);
+ return (set_string_value (var, rl_completer_word_break_characters, 0));
}
/* When this function returns, rl_completer_word_break_characters points to
@@ -1636,7 +1638,7 @@ assign_comp_wordbreaks (self, value, unused, key)
{
if (rl_completer_word_break_characters &&
rl_completer_word_break_characters != rl_basic_word_break_characters)
- free (rl_completer_word_break_characters);
+ free ((void *)rl_completer_word_break_characters);
rl_completer_word_break_characters = savestring (value);
return self;
@@ -1858,13 +1860,8 @@ get_funcname (self)
SHELL_VAR *self;
{
#if ! defined (ARRAY_VARS)
- char *t;
if (variable_context && this_shell_function)
- {
- FREE (value_cell (self));
- t = savestring (this_shell_function->name);
- var_setvalue (self, t);
- }
+ return (set_string_value (self, this_shell_function->name, 0));
#endif
return (self);
}
@@ -2375,7 +2372,7 @@ find_global_variable (name)
var = var_lookup (name, global_variables);
if (var && nameref_p (var))
- var = find_variable_nameref (var);
+ var = find_variable_nameref (var); /* XXX - find_global_variable_noref? */
if (var == 0)
return ((SHELL_VAR *)NULL);
@@ -2527,7 +2524,7 @@ get_variable_value (var)
/* Return the string value of a variable. Return NULL if the variable
doesn't exist. Don't cons a new string. This is a potential memory
leak if the variable is found in the temporary environment, but doesn't
- leak in practice. Since functions and variables have separate name
+ leak in practice. Since functions and variables have separate name
spaces, returns NULL if var_name is a shell function only. */
char *
get_string_value (var_name)
@@ -2847,7 +2844,7 @@ make_local_array_variable (name, flags)
scope and discard anything that's invalid. */
if (localvar_inherit && assoc_p (var))
{
- internal_warning ("%s: cannot inherit value from incompatible type", name);
+ internal_warning (_("%s: cannot inherit value from incompatible type"), name);
VUNSETATTR (var, att_assoc);
dispose_variable_value (var);
array = array_create ();
@@ -2903,7 +2900,7 @@ make_local_assoc_variable (name, flags)
scope and discard anything that's invalid. */
if (localvar_inherit && array_p (var))
{
- internal_warning ("%s: cannot inherit value from incompatible type", name);
+ internal_warning (_("%s: cannot inherit value from incompatible type"), name);
VUNSETATTR (var, att_array);
dispose_variable_value (var);
hash = assoc_create (ASSOC_HASH_BUCKETS);
@@ -3136,8 +3133,14 @@ bind_variable_internal (name, value, table, hflags, aflags)
VUNSETATTR (tentry, att_nameref);
}
free (tname);
- /* XXX - should it be aflags? */
- entry = assign_array_element (newval, make_variable_value (entry, value, aflags), aflags|ASS_NAMEREF);
+
+ /* entry == nameref variable; tentry == array variable;
+ newval == x[2]; value = bar
+ We don't need to call make_variable_value here, since
+ assign_array_element will eventually do it itself based on
+ newval and aflags. */
+
+ entry = assign_array_element (newval, value, aflags|ASS_NAMEREF, (array_eltstate_t *)0);
if (entry == 0)
return entry;
}
@@ -3294,7 +3297,7 @@ bind_variable (name, value, flags)
return (bind_variable_internal (nv->name, value, nvc->table, 0, flags));
#if defined (ARRAY_VARS)
else if (valid_array_reference (nameref_cell (nv), 0))
- return (assign_array_element (nameref_cell (nv), value, flags));
+ return (assign_array_element (nameref_cell (nv), value, flags, (array_eltstate_t *)0));
else
#endif
return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags));
@@ -3427,14 +3430,24 @@ bind_int_variable (lhs, rhs, flags)
int flags;
{
register SHELL_VAR *v;
- int isint, isarr, implicitarray;
+ int isint, isarr, implicitarray, vflags, avflags;
isint = isarr = implicitarray = 0;
#if defined (ARRAY_VARS)
- if (valid_array_reference (lhs, (flags & ASS_NOEXPAND) != 0))
+ /* Don't rely on VA_NOEXPAND being 1, set it explicitly */
+ vflags = (flags & ASS_NOEXPAND) ? VA_NOEXPAND : 0;
+ if (flags & ASS_ONEWORD)
+ vflags |= VA_ONEWORD;
+ if (valid_array_reference (lhs, vflags))
{
isarr = 1;
- v = array_variable_part (lhs, (flags & ASS_NOEXPAND) != 0, (char **)0, (int *)0);
+ avflags = 0;
+ /* Common code to translate between assignment and reference flags. */
+ if (flags & ASS_NOEXPAND)
+ avflags |= AV_NOEXPAND;
+ if (flags & ASS_ONEWORD)
+ avflags |= AV_ONEWORD;
+ v = array_variable_part (lhs, avflags, (char **)0, (int *)0);
}
else if (legal_identifier (lhs) == 0)
{
@@ -3457,7 +3470,7 @@ bind_int_variable (lhs, rhs, flags)
#if defined (ARRAY_VARS)
if (isarr)
- v = assign_array_element (lhs, rhs, flags);
+ v = assign_array_element (lhs, rhs, flags, (array_eltstate_t *)0);
else if (implicitarray)
v = bind_array_variable (lhs, 0, rhs, 0); /* XXX - check on flags */
else
@@ -3478,14 +3491,15 @@ bind_int_variable (lhs, rhs, flags)
}
SHELL_VAR *
-bind_var_to_int (var, val)
+bind_var_to_int (var, val, flags)
char *var;
intmax_t val;
+ int flags;
{
char ibuf[INT_STRLEN_BOUND (intmax_t) + 1], *p;
p = fmtulong (val, 10, ibuf, sizeof (ibuf), 0);
- return (bind_int_variable (var, p, 0));
+ return (bind_int_variable (var, p, flags));
}
/* Do a function binding to a variable. You pass the name and
@@ -3605,6 +3619,7 @@ assign_in_env (word, flags)
if (legal_identifier (name) == 0)
{
sh_invalidid (name);
+ free (name);
return (0);
}
@@ -3828,6 +3843,34 @@ unbind_variable_noref (name)
}
int
+unbind_global_variable (name)
+ const char *name;
+{
+ SHELL_VAR *v, *nv;
+ int r;
+
+ v = var_lookup (name, global_variables);
+ /* This starts at the current scope, just like find_global_variable; should we
+ use find_global_variable_nameref here? */
+ nv = (v && nameref_p (v)) ? find_variable_nameref (v) : (SHELL_VAR *)NULL;
+
+ r = nv ? makunbound (nv->name, shell_variables) : makunbound (name, global_variables);
+ return r;
+}
+
+int
+unbind_global_variable_noref (name)
+ const char *name;
+{
+ SHELL_VAR *v;
+
+ v = var_lookup (name, global_variables);
+ if (v)
+ return makunbound (name, global_variables);
+ return 0;
+}
+
+int
check_unbind_variable (name)
const char *name;
{
@@ -4708,16 +4751,22 @@ flush_temporary_env ()
/* **************************************************************** */
static inline char *
-mk_env_string (name, value, isfunc)
+mk_env_string (name, value, attributes)
const char *name, *value;
- int isfunc;
+ int attributes;
{
size_t name_len, value_len;
char *p, *q, *t;
+ int isfunc, isarray;
name_len = strlen (name);
value_len = STRLEN (value);
+ isfunc = attributes & att_function;
+#if defined (ARRAY_VARS) && defined (ARRAY_EXPORT)
+ isarray = attributes & (att_array|att_assoc);
+#endif
+
/* If we are exporting a shell function, construct the encoded function
name. */
if (isfunc && value)
@@ -4731,6 +4780,39 @@ mk_env_string (name, value, isfunc)
memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN);
q += BASHFUNC_SUFFLEN;
}
+#if defined (ARRAY_VARS) && defined (ARRAY_EXPORT)
+ else if (isarray && value)
+ {
+ if (attributes & att_assoc)
+ p = (char *)xmalloc (BASHASSOC_PREFLEN + name_len + BASHASSOC_SUFFLEN + value_len + 2);
+ else
+ p = (char *)xmalloc (BASHARRAY_PREFLEN + name_len + BASHARRAY_SUFFLEN + value_len + 2);
+ q = p;
+ if (attributes & att_assoc)
+ {
+ memcpy (q, BASHASSOC_PREFIX, BASHASSOC_PREFLEN);
+ q += BASHASSOC_PREFLEN;
+ }
+ else
+ {
+ memcpy (q, BASHARRAY_PREFIX, BASHARRAY_PREFLEN);
+ q += BASHARRAY_PREFLEN;
+ }
+ memcpy (q, name, name_len);
+ q += name_len;
+ /* These are actually the same currently */
+ if (attributes & att_assoc)
+ {
+ memcpy (q, BASHASSOC_SUFFIX, BASHASSOC_SUFFLEN);
+ q += BASHARRAY_SUFFLEN;
+ }
+ else
+ {
+ memcpy (q, BASHARRAY_SUFFIX, BASHARRAY_SUFFLEN);
+ q += BASHARRAY_SUFFLEN;
+ }
+ }
+#endif
else
{
p = (char *)xmalloc (2 + name_len + value_len);
@@ -4795,6 +4877,12 @@ valid_exportstr (v)
}
#endif
+#if defined (ARRAY_VARS)
+# define USE_EXPORTSTR (value == var->exportstr && array_p (var) == 0 && assoc_p (var) == 0)
+#else
+# define USE_EXPORTSTR (value == var->exportstr)
+#endif
+
static char **
make_env_array_from_var_list (vars)
SHELL_VAR **vars;
@@ -4805,8 +4893,6 @@ make_env_array_from_var_list (vars)
list = strvec_create ((1 + strvec_len ((char **)vars)));
-#define USE_EXPORTSTR (value == var->exportstr)
-
for (i = 0, list_index = 0; var = vars[i]; i++)
{
#if defined (__CYGWIN__)
@@ -4833,11 +4919,11 @@ make_env_array_from_var_list (vars)
continue; /* XXX array vars cannot yet be exported */
# endif /* ARRAY_EXPORT */
else if (assoc_p (var))
-# if 0
+# if ARRAY_EXPORT
value = assoc_to_assign (assoc_cell (var), 0);
# else
continue; /* XXX associative array vars cannot yet be exported */
-# endif
+# endif /* ARRAY_EXPORT */
#endif
else
value = value_cell (var);
@@ -4847,19 +4933,18 @@ make_env_array_from_var_list (vars)
/* Gee, I'd like to get away with not using savestring() if we're
using the cached exportstr... */
list[list_index] = USE_EXPORTSTR ? savestring (value)
- : mk_env_string (var->name, value, function_p (var));
+ : mk_env_string (var->name, value, var->attributes);
+
if (USE_EXPORTSTR == 0)
SAVE_EXPORTSTR (var, list[list_index]);
list_index++;
#undef USE_EXPORTSTR
-#if 0 /* not yet */
-#if defined (ARRAY_VARS)
+#if defined (ARRAY_VARS) && defined (ARRAY_EXPORT)
if (array_p (var) || assoc_p (var))
free (value);
#endif
-#endif
}
}
@@ -5344,10 +5429,8 @@ pop_var_context ()
internal_error (_("pop_var_context: no global_variables context"));
}
-/* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and
- all of the VAR_CONTEXTs except GLOBAL_VARIABLES. */
-void
-delete_all_contexts (vcxt)
+static void
+delete_local_contexts (vcxt)
VAR_CONTEXT *vcxt;
{
VAR_CONTEXT *v, *t;
@@ -5356,12 +5439,30 @@ delete_all_contexts (vcxt)
{
t = v->down;
dispose_var_context (v);
- }
+ }
+}
+/* Delete the HASH_TABLEs for all variable contexts beginning at VCXT, and
+ all of the VAR_CONTEXTs except GLOBAL_VARIABLES. */
+void
+delete_all_contexts (vcxt)
+ VAR_CONTEXT *vcxt;
+{
+ delete_local_contexts (vcxt);
delete_all_variables (global_variables->table);
shell_variables = global_variables;
}
+/* Reset the context so we are not executing in a shell function. Only call
+ this if you are getting ready to exit the shell. */
+void
+reset_local_contexts ()
+{
+ delete_local_contexts (shell_variables);
+ shell_variables = global_variables;
+ variable_context = 0;
+}
+
/* **************************************************************** */
/* */
/* Pushing and Popping temporary variable scopes */
@@ -5670,7 +5771,7 @@ pop_args ()
GET_ARRAY_FROM_VAR ("BASH_ARGV", bash_argv_v, bash_argv_a);
GET_ARRAY_FROM_VAR ("BASH_ARGC", bash_argc_v, bash_argc_a);
- ce = array_shift (bash_argc_a, 1, 0);
+ ce = array_unshift_element (bash_argc_a);
if (ce == 0 || legal_number (element_value (ce), &i) == 0)
i = 0;
@@ -6279,19 +6380,27 @@ set_pipestatus_array (ps, nproc)
/* Fast case */
if (array_num_elements (a) == nproc && nproc == 1)
{
+#ifndef ALT_ARRAY_IMPLEMENTATION
ae = element_forw (a->head);
- free (element_value (ae));
- set_element_value (ae, itos (ps[0]));
+#else
+ ae = a->elements[0];
+#endif
+ ARRAY_ELEMENT_REPLACE (ae, itos (ps[0]));
}
else if (array_num_elements (a) <= nproc)
{
/* modify in array_num_elements members in place, then add */
+#ifndef ALT_ARRAY_IMPLEMENTATION
ae = a->head;
+#endif
for (i = 0; i < array_num_elements (a); i++)
{
+#ifndef ALT_ARRAY_IMPLEMENTATION
ae = element_forw (ae);
- free (element_value (ae));
- set_element_value (ae, itos (ps[i]));
+#else
+ ae = a->elements[i];
+#endif
+ ARRAY_ELEMENT_REPLACE (ae, itos (ps[i]));
}
/* add any more */
for ( ; i < nproc; i++)
@@ -6302,13 +6411,32 @@ set_pipestatus_array (ps, nproc)
}
else
{
+#ifndef ALT_ARRAY_IMPLEMENTATION
/* deleting elements. it's faster to rebuild the array. */
array_flush (a);
- for (i = 0; ps[i] != -1; i++)
+ for (i = 0; i < nproc; i++)
{
t = inttostr (ps[i], tbuf, sizeof (tbuf));
array_insert (a, i, t);
}
+#else
+ /* deleting elements. replace the first NPROC, free the rest */
+ for (i = 0; i < nproc; i++)
+ {
+ ae = a->elements[i];
+ ARRAY_ELEMENT_REPLACE (ae, itos (ps[i]));
+ }
+ for ( ; i <= array_max_index (a); i++)
+ {
+ array_dispose_element (a->elements[i]);
+ a->elements[i] = (ARRAY_ELEMENT *)NULL;
+ }
+
+ /* bookkeeping usually taken care of by array_insert */
+ set_max_index (a, nproc - 1);
+ set_first_index (a, 0);
+ set_num_elements (a, nproc);
+#endif /* ALT_ARRAY_IMPLEMENTATION */
}
}
diff --git a/variables.h b/variables.h
index c73eb4e5..55f497de 100644
--- a/variables.h
+++ b/variables.h
@@ -1,6 +1,6 @@
/* variables.h -- data structures for shell variables. */
-/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -320,7 +320,7 @@ extern char *make_variable_value PARAMS((SHELL_VAR *, char *, int));
extern SHELL_VAR *bind_variable_value PARAMS((SHELL_VAR *, char *, int));
extern SHELL_VAR *bind_int_variable PARAMS((char *, char *, int));
-extern SHELL_VAR *bind_var_to_int PARAMS((char *, intmax_t));
+extern SHELL_VAR *bind_var_to_int PARAMS((char *, intmax_t, int));
extern int assign_in_env PARAMS((WORD_DESC *, int));
@@ -328,13 +328,17 @@ extern int unbind_variable PARAMS((const char *));
extern int check_unbind_variable PARAMS((const char *));
extern int unbind_nameref PARAMS((const char *));
extern int unbind_variable_noref PARAMS((const char *));
+extern int unbind_global_variable PARAMS((const char *));
+extern int unbind_global_variable_noref PARAMS((const char *));
extern int unbind_func PARAMS((const char *));
extern int unbind_function_def PARAMS((const char *));
extern int delete_var PARAMS((const char *, VAR_CONTEXT *));
extern int makunbound PARAMS((const char *, VAR_CONTEXT *));
extern int kill_local_variable PARAMS((const char *));
+
extern void delete_all_variables PARAMS((HASH_TABLE *));
extern void delete_all_contexts PARAMS((VAR_CONTEXT *));
+extern void reset_local_contexts PARAMS((void));
extern VAR_CONTEXT *new_var_context PARAMS((char *, int));
extern void dispose_var_context PARAMS((VAR_CONTEXT *));
diff --git a/version.c b/version.c
index 8c1568ae..94c85bd2 100644
--- a/version.c
+++ b/version.c
@@ -1,6 +1,6 @@
/* version.c -- distribution and version numbers. */
-/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2022 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -43,7 +43,7 @@ const char * const release_status = (char *)0;
#endif
const char * const sccs_version = SCCSVERSION;
-const char * const bash_copyright = N_("Copyright (C) 2020 Free Software Foundation, Inc.");
+const char * const bash_copyright = N_("Copyright (C) 2022 Free Software Foundation, Inc.");
const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n");
/* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */
diff --git a/y.tab.c b/y.tab.c
index 78b38250..32b4c7c1 100644
--- a/y.tab.c
+++ b/y.tab.c
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.6.4. */
+/* A Bison parser, made by GNU Bison 3.8.2. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -45,11 +45,11 @@
define necessary library symbols; they are noted "INFRINGES ON
USER NAME SPACE" below. */
-/* Identify Bison output. */
-#define YYBISON 1
+/* Identify Bison output, and Bison version. */
+#define YYBISON 30802
-/* Bison version. */
-#define YYBISON_VERSION "3.6.4"
+/* Bison version string. */
+#define YYBISON_VERSION "3.8.2"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -67,7 +67,7 @@
/* First part of user prologue. */
-#line 21 "/Users/chet/src/bash/src/parse.y"
+#line 21 "/usr/local/src/chet/src/bash/src/parse.y"
#include "config.h"
@@ -164,11 +164,24 @@ typedef void *alias_t;
# define MBTEST(x) ((x))
#endif
+#define EXTEND_SHELL_INPUT_LINE_PROPERTY() \
+do { \
+ if (shell_input_line_len + 2 > shell_input_line_propsize) \
+ { \
+ shell_input_line_propsize = shell_input_line_len + 2; \
+ shell_input_line_property = (char *)xrealloc (shell_input_line_property, \
+ shell_input_line_propsize); \
+ } \
+} while (0)
+
#if defined (EXTENDED_GLOB)
extern int extended_glob;
#endif
+#if defined (TRANSLATABLE_STRINGS)
extern int dump_translatable_strings, dump_po_strings;
+extern int singlequote_translations;
+#endif /* TRANSLATABLE_STRINGS */
#if !defined (errno)
extern int errno;
@@ -194,7 +207,6 @@ static int yy_readline_unget PARAMS((int));
static int yy_string_get PARAMS((void));
static int yy_string_unget PARAMS((int));
-static void rewind_input_string PARAMS((void));
static int yy_stream_get PARAMS((void));
static int yy_stream_unget PARAMS((int));
@@ -202,11 +214,9 @@ static int shell_getc PARAMS((int));
static void shell_ungetc PARAMS((int));
static void discard_until PARAMS((int));
-#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
static void push_string PARAMS((char *, int, alias_t *));
static void pop_string PARAMS((void));
static void free_string_list PARAMS((void));
-#endif
static char *read_a_line PARAMS((int));
@@ -250,7 +260,7 @@ static void print_offending_line PARAMS((void));
static void report_syntax_error PARAMS((char *));
static void handle_eof_input_unit PARAMS((void));
-static void prompt_again PARAMS((void));
+static void prompt_again PARAMS((int));
#if 0
static void reset_readline_prompt PARAMS((void));
#endif
@@ -374,7 +384,7 @@ static REDIRECTEE redir;
static FILE *yyoutstream;
static FILE *yyerrstream;
-#line 378 "y.tab.c"
+#line 388 "y.tab.c"
# ifndef YY_CAST
# ifdef __cplusplus
@@ -464,11 +474,13 @@ extern int yydebug;
LESS_GREATER = 301, /* LESS_GREATER */
GREATER_BAR = 302, /* GREATER_BAR */
BAR_AND = 303, /* BAR_AND */
- yacc_EOF = 304 /* yacc_EOF */
+ DOLPAREN = 304, /* DOLPAREN */
+ yacc_EOF = 305 /* yacc_EOF */
};
typedef enum yytokentype yytoken_kind_t;
#endif
/* Token kinds. */
+#define YYEMPTY -2
#define YYEOF 0
#define YYerror 256
#define YYUNDEF 257
@@ -518,13 +530,14 @@ extern int yydebug;
#define LESS_GREATER 301
#define GREATER_BAR 302
#define BAR_AND 303
-#define yacc_EOF 304
+#define DOLPAREN 304
+#define yacc_EOF 305
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 328 "/Users/chet/src/bash/src/parse.y"
+#line 338 "/usr/local/src/chet/src/bash/src/parse.y"
WORD_DESC *word; /* the word that we read. */
int number; /* the number that we read. */
@@ -534,7 +547,7 @@ union YYSTYPE
ELEMENT element;
PATTERN_LIST *pattern;
-#line 538 "y.tab.c"
+#line 551 "y.tab.c"
};
typedef union YYSTYPE YYSTYPE;
@@ -545,8 +558,10 @@ typedef union YYSTYPE YYSTYPE;
extern YYSTYPE yylval;
+
int yyparse (void);
+
#endif /* !YY_YY_Y_TAB_H_INCLUDED */
/* Symbol kind. */
enum yysymbol_kind_t
@@ -601,56 +616,57 @@ enum yysymbol_kind_t
YYSYMBOL_LESS_GREATER = 46, /* LESS_GREATER */
YYSYMBOL_GREATER_BAR = 47, /* GREATER_BAR */
YYSYMBOL_BAR_AND = 48, /* BAR_AND */
- YYSYMBOL_49_ = 49, /* '&' */
- YYSYMBOL_50_ = 50, /* ';' */
- YYSYMBOL_51_n_ = 51, /* '\n' */
- YYSYMBOL_yacc_EOF = 52, /* yacc_EOF */
- YYSYMBOL_53_ = 53, /* '|' */
- YYSYMBOL_54_ = 54, /* '>' */
- YYSYMBOL_55_ = 55, /* '<' */
- YYSYMBOL_56_ = 56, /* '-' */
- YYSYMBOL_57_ = 57, /* '{' */
- YYSYMBOL_58_ = 58, /* '}' */
- YYSYMBOL_59_ = 59, /* '(' */
- YYSYMBOL_60_ = 60, /* ')' */
- YYSYMBOL_YYACCEPT = 61, /* $accept */
- YYSYMBOL_inputunit = 62, /* inputunit */
- YYSYMBOL_word_list = 63, /* word_list */
- YYSYMBOL_redirection = 64, /* redirection */
- YYSYMBOL_simple_command_element = 65, /* simple_command_element */
- YYSYMBOL_redirection_list = 66, /* redirection_list */
- YYSYMBOL_simple_command = 67, /* simple_command */
- YYSYMBOL_command = 68, /* command */
- YYSYMBOL_shell_command = 69, /* shell_command */
- YYSYMBOL_for_command = 70, /* for_command */
- YYSYMBOL_arith_for_command = 71, /* arith_for_command */
- YYSYMBOL_select_command = 72, /* select_command */
- YYSYMBOL_case_command = 73, /* case_command */
- YYSYMBOL_function_def = 74, /* function_def */
- YYSYMBOL_function_body = 75, /* function_body */
- YYSYMBOL_subshell = 76, /* subshell */
- YYSYMBOL_coproc = 77, /* coproc */
- YYSYMBOL_if_command = 78, /* if_command */
- YYSYMBOL_group_command = 79, /* group_command */
- YYSYMBOL_arith_command = 80, /* arith_command */
- YYSYMBOL_cond_command = 81, /* cond_command */
- YYSYMBOL_elif_clause = 82, /* elif_clause */
- YYSYMBOL_case_clause = 83, /* case_clause */
- YYSYMBOL_pattern_list = 84, /* pattern_list */
- YYSYMBOL_case_clause_sequence = 85, /* case_clause_sequence */
- YYSYMBOL_pattern = 86, /* pattern */
- YYSYMBOL_list = 87, /* list */
- YYSYMBOL_compound_list = 88, /* compound_list */
- YYSYMBOL_list0 = 89, /* list0 */
- YYSYMBOL_list1 = 90, /* list1 */
- YYSYMBOL_simple_list_terminator = 91, /* simple_list_terminator */
- YYSYMBOL_list_terminator = 92, /* list_terminator */
- YYSYMBOL_newline_list = 93, /* newline_list */
- YYSYMBOL_simple_list = 94, /* simple_list */
- YYSYMBOL_simple_list1 = 95, /* simple_list1 */
- YYSYMBOL_pipeline_command = 96, /* pipeline_command */
- YYSYMBOL_pipeline = 97, /* pipeline */
- YYSYMBOL_timespec = 98 /* timespec */
+ YYSYMBOL_DOLPAREN = 49, /* DOLPAREN */
+ YYSYMBOL_50_ = 50, /* '&' */
+ YYSYMBOL_51_ = 51, /* ';' */
+ YYSYMBOL_52_n_ = 52, /* '\n' */
+ YYSYMBOL_yacc_EOF = 53, /* yacc_EOF */
+ YYSYMBOL_54_ = 54, /* '|' */
+ YYSYMBOL_55_ = 55, /* '>' */
+ YYSYMBOL_56_ = 56, /* '<' */
+ YYSYMBOL_57_ = 57, /* '-' */
+ YYSYMBOL_58_ = 58, /* '{' */
+ YYSYMBOL_59_ = 59, /* '}' */
+ YYSYMBOL_60_ = 60, /* '(' */
+ YYSYMBOL_61_ = 61, /* ')' */
+ YYSYMBOL_YYACCEPT = 62, /* $accept */
+ YYSYMBOL_inputunit = 63, /* inputunit */
+ YYSYMBOL_word_list = 64, /* word_list */
+ YYSYMBOL_redirection = 65, /* redirection */
+ YYSYMBOL_simple_command_element = 66, /* simple_command_element */
+ YYSYMBOL_redirection_list = 67, /* redirection_list */
+ YYSYMBOL_simple_command = 68, /* simple_command */
+ YYSYMBOL_command = 69, /* command */
+ YYSYMBOL_shell_command = 70, /* shell_command */
+ YYSYMBOL_for_command = 71, /* for_command */
+ YYSYMBOL_arith_for_command = 72, /* arith_for_command */
+ YYSYMBOL_select_command = 73, /* select_command */
+ YYSYMBOL_case_command = 74, /* case_command */
+ YYSYMBOL_function_def = 75, /* function_def */
+ YYSYMBOL_function_body = 76, /* function_body */
+ YYSYMBOL_subshell = 77, /* subshell */
+ YYSYMBOL_comsub = 78, /* comsub */
+ YYSYMBOL_coproc = 79, /* coproc */
+ YYSYMBOL_if_command = 80, /* if_command */
+ YYSYMBOL_group_command = 81, /* group_command */
+ YYSYMBOL_arith_command = 82, /* arith_command */
+ YYSYMBOL_cond_command = 83, /* cond_command */
+ YYSYMBOL_elif_clause = 84, /* elif_clause */
+ YYSYMBOL_case_clause = 85, /* case_clause */
+ YYSYMBOL_pattern_list = 86, /* pattern_list */
+ YYSYMBOL_case_clause_sequence = 87, /* case_clause_sequence */
+ YYSYMBOL_pattern = 88, /* pattern */
+ YYSYMBOL_compound_list = 89, /* compound_list */
+ YYSYMBOL_list0 = 90, /* list0 */
+ YYSYMBOL_list1 = 91, /* list1 */
+ YYSYMBOL_simple_list_terminator = 92, /* simple_list_terminator */
+ YYSYMBOL_list_terminator = 93, /* list_terminator */
+ YYSYMBOL_newline_list = 94, /* newline_list */
+ YYSYMBOL_simple_list = 95, /* simple_list */
+ YYSYMBOL_simple_list1 = 96, /* simple_list1 */
+ YYSYMBOL_pipeline_command = 97, /* pipeline_command */
+ YYSYMBOL_pipeline = 98, /* pipeline */
+ YYSYMBOL_timespec = 99 /* timespec */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -694,6 +710,18 @@ typedef int_least16_t yytype_int16;
typedef short yytype_int16;
#endif
+/* Work around bug in HP-UX 11.23, which defines these macros
+ incorrectly for preprocessor constants. This workaround can likely
+ be removed in 2023, as HPE has promised support for HP-UX 11.23
+ (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
+ <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
+#ifdef __hpux
+# undef UINT_LEAST8_MAX
+# undef UINT_LEAST16_MAX
+# define UINT_LEAST8_MAX 255
+# define UINT_LEAST16_MAX 65535
+#endif
+
#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
@@ -791,17 +819,23 @@ typedef int yy_state_fast_t;
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
#else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
#endif
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
+# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
+# else
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# endif
# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
#else
@@ -958,20 +992,21 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 118
+#define YYFINAL 121
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 661
+#define YYLAST 740
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 61
+#define YYNTOKENS 62
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 38
/* YYNRULES -- Number of rules. */
-#define YYNRULES 172
+#define YYNRULES 174
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 346
+#define YYNSTATES 349
-#define YYMAXUTOK 304
+/* YYMAXUTOK -- Last valid token kind. */
+#define YYMAXUTOK 305
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -986,18 +1021,18 @@ union yyalloc
static const yytype_int8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 51, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 52, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 49, 2,
- 59, 60, 2, 2, 2, 56, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 50,
- 55, 2, 54, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 50, 2,
+ 60, 61, 2, 2, 2, 57, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 51,
+ 56, 2, 55, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 57, 53, 58, 2, 2, 2, 2,
+ 2, 2, 2, 58, 54, 59, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1015,31 +1050,31 @@ static const yytype_int8 yytranslate[] =
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 52
+ 45, 46, 47, 48, 49, 53
};
#if YYDEBUG
- /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
+/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 381, 381, 392, 401, 416, 433, 443, 445, 449,
- 455, 461, 467, 473, 479, 485, 491, 497, 503, 509,
- 515, 521, 527, 533, 539, 546, 553, 560, 567, 574,
- 581, 587, 593, 599, 605, 611, 617, 623, 629, 635,
- 641, 647, 653, 659, 665, 671, 677, 683, 689, 695,
- 701, 707, 713, 721, 723, 725, 729, 733, 744, 746,
- 750, 752, 754, 770, 772, 776, 778, 780, 782, 784,
- 786, 788, 790, 792, 794, 796, 800, 805, 810, 815,
- 820, 825, 830, 835, 842, 848, 854, 860, 868, 873,
- 878, 883, 888, 893, 898, 903, 910, 915, 920, 927,
- 929, 931, 933, 937, 939, 970, 977, 982, 999, 1004,
- 1021, 1028, 1030, 1032, 1037, 1041, 1045, 1049, 1051, 1053,
- 1057, 1058, 1062, 1064, 1066, 1068, 1072, 1074, 1076, 1078,
- 1080, 1082, 1086, 1088, 1097, 1105, 1106, 1112, 1113, 1120,
- 1124, 1126, 1128, 1135, 1137, 1139, 1143, 1144, 1147, 1149,
- 1151, 1155, 1156, 1165, 1178, 1194, 1209, 1211, 1213, 1220,
- 1223, 1227, 1229, 1235, 1241, 1261, 1284, 1286, 1309, 1313,
- 1315, 1317, 1319
+ 0, 395, 395, 406, 414, 423, 438, 455, 465, 467,
+ 471, 477, 483, 489, 495, 501, 507, 513, 519, 525,
+ 531, 537, 543, 549, 555, 561, 568, 575, 582, 589,
+ 596, 603, 609, 615, 621, 627, 633, 639, 645, 651,
+ 657, 663, 669, 675, 681, 687, 693, 699, 705, 711,
+ 717, 723, 729, 735, 743, 745, 747, 751, 755, 766,
+ 768, 772, 774, 776, 792, 794, 798, 800, 802, 804,
+ 806, 808, 810, 812, 814, 816, 818, 822, 827, 832,
+ 837, 842, 847, 852, 857, 864, 870, 876, 882, 890,
+ 895, 900, 905, 910, 915, 920, 925, 932, 937, 942,
+ 949, 951, 953, 955, 959, 961, 992, 999, 1003, 1009,
+ 1014, 1031, 1036, 1053, 1060, 1062, 1064, 1069, 1073, 1077,
+ 1081, 1083, 1085, 1089, 1090, 1094, 1096, 1098, 1100, 1104,
+ 1106, 1108, 1110, 1112, 1114, 1118, 1120, 1129, 1135, 1141,
+ 1142, 1149, 1153, 1155, 1157, 1164, 1166, 1173, 1177, 1178,
+ 1181, 1183, 1185, 1189, 1190, 1199, 1214, 1232, 1249, 1251,
+ 1253, 1260, 1263, 1267, 1269, 1275, 1281, 1301, 1324, 1326,
+ 1349, 1353, 1355, 1357, 1359
};
#endif
@@ -1063,18 +1098,18 @@ static const char *const yytname[] =
"AND_AND", "OR_OR", "GREATER_GREATER", "LESS_LESS", "LESS_AND",
"LESS_LESS_LESS", "GREATER_AND", "SEMI_SEMI", "SEMI_AND",
"SEMI_SEMI_AND", "LESS_LESS_MINUS", "AND_GREATER", "AND_GREATER_GREATER",
- "LESS_GREATER", "GREATER_BAR", "BAR_AND", "'&'", "';'", "'\\n'",
- "yacc_EOF", "'|'", "'>'", "'<'", "'-'", "'{'", "'}'", "'('", "')'",
- "$accept", "inputunit", "word_list", "redirection",
+ "LESS_GREATER", "GREATER_BAR", "BAR_AND", "DOLPAREN", "'&'", "';'",
+ "'\\n'", "yacc_EOF", "'|'", "'>'", "'<'", "'-'", "'{'", "'}'", "'('",
+ "')'", "$accept", "inputunit", "word_list", "redirection",
"simple_command_element", "redirection_list", "simple_command",
"command", "shell_command", "for_command", "arith_for_command",
"select_command", "case_command", "function_def", "function_body",
- "subshell", "coproc", "if_command", "group_command", "arith_command",
- "cond_command", "elif_clause", "case_clause", "pattern_list",
- "case_clause_sequence", "pattern", "list", "compound_list", "list0",
- "list1", "simple_list_terminator", "list_terminator", "newline_list",
- "simple_list", "simple_list1", "pipeline_command", "pipeline",
- "timespec", YY_NULLPTR
+ "subshell", "comsub", "coproc", "if_command", "group_command",
+ "arith_command", "cond_command", "elif_clause", "case_clause",
+ "pattern_list", "case_clause_sequence", "pattern", "compound_list",
+ "list0", "list1", "simple_list_terminator", "list_terminator",
+ "newline_list", "simple_list", "simple_list1", "pipeline_command",
+ "pipeline", "timespec", YY_NULLPTR
};
static const char *
@@ -1084,22 +1119,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
- (internal) symbol number NUM (which must be that of a token). */
-static const yytype_int16 yytoknum[] =
-{
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 38,
- 59, 10, 304, 124, 62, 60, 45, 123, 125, 40,
- 41
-};
-#endif
-
-#define YYPACT_NINF (-204)
+#define YYPACT_NINF (-152)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -1109,337 +1129,353 @@ static const yytype_int16 yytoknum[] =
#define yytable_value_is_error(Yyn) \
0
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 313, 108, -204, -6, 8, 2, -204, -204, 10, 513,
- 17, 363, 153, -21, -204, 593, 606, -204, 14, 26,
- 113, 41, 127, 72, 85, 92, 95, 98, -204, -204,
- 100, 105, -204, -204, 65, -204, -204, 551, -204, 572,
- -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
- -204, 146, 140, -204, 67, 363, -204, -204, -204, 133,
- 413, -204, 93, 55, 104, 156, 161, 11, 45, 551,
- 572, 163, -204, -204, -204, -204, -204, 167, -204, 152,
- 208, 217, 129, 220, 150, 221, 223, 225, 233, 234,
- 238, 239, 158, 240, 162, 241, 243, 244, 252, 253,
- -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
- -204, -204, -204, -204, -204, -204, 194, 227, -204, -204,
- -204, -204, 572, -204, -204, -204, -204, -204, 463, 463,
- -204, -204, -204, -204, -204, -204, -204, -7, -204, 59,
- -204, 52, -204, -204, -204, -204, 62, -204, -204, -204,
- 235, 572, -204, 572, 572, -204, -204, -204, -204, -204,
- -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
- -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
- -204, -204, -204, -204, -204, -204, -204, -204, -204, 413,
- 413, 191, 191, 245, 245, 203, -204, -204, -204, -204,
- -204, -204, 37, -204, 176, -204, 270, 228, 76, 79,
- -204, 176, -204, 278, 282, 563, -204, 572, 572, 563,
- -204, -204, 67, 67, -204, -204, -204, 291, 413, 413,
- 413, 413, 413, 294, 175, -204, 28, -204, -204, 292,
- -204, 187, -204, 250, -204, -204, -204, -204, -204, -204,
- 295, 413, 187, -204, 251, -204, -204, -204, 563, -204,
- 304, 314, -204, -204, -204, 196, 196, 196, -204, -204,
- -204, -204, 179, 38, -204, -204, 296, -28, 302, 274,
- -204, -204, -204, 87, -204, 318, 276, 322, 280, -204,
- -7, -204, 111, -204, -204, -204, -204, -204, -204, -204,
- -204, 39, 319, -204, -204, -204, 114, -204, -204, -204,
- -204, -204, -204, 115, -204, -204, 226, -204, -204, -204,
- 413, -204, -204, 329, 288, -204, -204, 332, 297, -204,
- -204, -204, 413, 338, 303, -204, -204, 339, 305, -204,
- -204, -204, -204, -204, -204, -204
+ 328, 80, -152, -11, -1, 3, -152, -152, 15, 637,
+ -5, 433, 149, -28, -152, 187, 684, -152, 18, 28,
+ 130, 38, 139, 50, 52, 60, 65, 74, -152, -152,
+ -152, 89, 104, -152, -152, 97, -152, -152, 246, -152,
+ 670, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, 146, 211, -152, 1, 433, -152, -152,
+ 135, 484, -152, 59, 61, 90, 167, 171, 10, 71,
+ 246, 670, 144, -152, -152, -152, -152, -152, 165, -152,
+ 142, 179, 192, 140, 194, 160, 227, 245, 252, 253,
+ 260, 261, 262, 162, 269, 178, 270, 272, 273, 274,
+ 277, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, 168, 379, -152, -152, 173,
+ 244, -152, -152, -152, -152, 670, -152, -152, -152, -152,
+ -152, 535, 535, -152, -152, -152, -152, -152, -152, -152,
+ 205, -152, 14, -152, 36, -152, -152, -152, -152, 84,
+ -152, -152, -152, 249, 670, -152, 670, 670, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, -152, -152, -152, -152, -152, -152,
+ -152, -152, -152, -152, 484, 484, 203, 203, 586, 586,
+ 145, -152, -152, -152, -152, -152, -152, 0, -152, 119,
+ -152, 291, 248, 66, 88, -152, 119, -152, 296, 297,
+ 35, -152, 670, 670, 35, -152, -152, 1, 1, -152,
+ -152, -152, 306, 484, 484, 484, 484, 484, 305, 169,
+ -152, 7, -152, -152, 302, -152, 131, -152, 265, -152,
+ -152, -152, -152, -152, -152, 304, 131, -152, 266, -152,
+ -152, -152, 35, -152, 313, 317, -152, -152, -152, 225,
+ 225, 225, -152, -152, -152, -152, 206, 25, -152, -152,
+ 307, -42, 319, 276, -152, -152, -152, 95, -152, 322,
+ 283, 332, 284, -152, -152, 102, -152, -152, -152, -152,
+ -152, -152, -152, -152, 45, 323, -152, -152, -152, 106,
+ -152, -152, -152, -152, -152, -152, 109, -152, -152, 264,
+ -152, -152, -152, 484, -152, -152, 333, 293, -152, -152,
+ 338, 300, -152, -152, -152, 484, 345, 303, -152, -152,
+ 346, 309, -152, -152, -152, -152, -152, -152, -152
};
- /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
- Performed when YYTABLE does not specify something else to do. Zero
- means the default is an error. */
+/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE does not specify something else to do. Zero
+ means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 0, 0, 151, 0, 0, 0, 151, 151, 0, 0,
- 0, 0, 169, 53, 54, 0, 0, 115, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 6,
- 0, 0, 151, 151, 0, 55, 58, 60, 168, 61,
- 65, 75, 69, 66, 63, 71, 64, 70, 72, 73,
- 74, 0, 153, 160, 161, 0, 4, 5, 135, 0,
- 0, 151, 151, 0, 151, 0, 0, 0, 53, 110,
- 106, 0, 149, 148, 150, 165, 162, 170, 171, 0,
+ 0, 0, 153, 0, 0, 0, 153, 153, 0, 0,
+ 0, 0, 171, 54, 55, 0, 0, 118, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 153, 4,
+ 7, 0, 0, 153, 153, 0, 56, 59, 61, 170,
+ 62, 66, 76, 70, 67, 64, 72, 3, 65, 71,
+ 73, 74, 75, 0, 155, 162, 163, 0, 5, 6,
+ 0, 0, 153, 153, 0, 153, 0, 0, 0, 54,
+ 113, 109, 0, 151, 150, 152, 167, 164, 172, 173,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 15, 24, 39, 33, 48, 30, 42, 36, 45, 27,
- 51, 52, 21, 18, 9, 10, 0, 0, 1, 53,
- 59, 56, 62, 146, 147, 2, 151, 151, 154, 155,
- 151, 151, 164, 163, 151, 152, 134, 136, 145, 0,
- 151, 0, 151, 151, 151, 151, 0, 151, 151, 151,
- 151, 103, 101, 108, 107, 116, 172, 151, 17, 26,
- 41, 35, 50, 32, 44, 38, 47, 29, 23, 20,
- 13, 14, 16, 25, 40, 34, 49, 31, 43, 37,
- 46, 28, 22, 19, 11, 12, 114, 105, 57, 0,
- 0, 158, 159, 0, 0, 0, 151, 151, 151, 151,
- 151, 151, 0, 151, 0, 151, 0, 0, 0, 0,
- 151, 0, 151, 0, 0, 0, 151, 104, 109, 0,
- 156, 157, 167, 166, 151, 151, 111, 0, 0, 0,
- 138, 139, 137, 0, 120, 151, 0, 151, 151, 0,
- 7, 0, 151, 0, 86, 87, 151, 151, 151, 151,
- 0, 0, 0, 151, 0, 67, 68, 102, 0, 99,
- 0, 0, 113, 140, 141, 142, 143, 144, 98, 126,
- 128, 130, 121, 0, 96, 132, 0, 0, 0, 0,
- 76, 8, 151, 0, 77, 0, 0, 0, 0, 88,
- 0, 151, 0, 89, 100, 112, 151, 127, 129, 131,
- 97, 0, 0, 151, 78, 79, 0, 151, 151, 84,
- 85, 90, 91, 0, 151, 151, 117, 151, 133, 122,
- 123, 151, 151, 0, 0, 151, 151, 0, 0, 151,
- 119, 124, 125, 0, 0, 82, 83, 0, 0, 94,
- 95, 118, 80, 81, 92, 93
+ 0, 16, 25, 40, 34, 49, 31, 43, 37, 46,
+ 28, 52, 53, 22, 19, 0, 0, 10, 11, 0,
+ 0, 1, 54, 60, 57, 63, 148, 149, 2, 153,
+ 153, 156, 157, 153, 153, 166, 165, 153, 154, 137,
+ 138, 147, 0, 153, 0, 153, 153, 153, 153, 0,
+ 153, 153, 153, 153, 104, 102, 111, 110, 119, 174,
+ 153, 18, 27, 42, 36, 51, 33, 45, 39, 48,
+ 30, 24, 21, 14, 15, 17, 26, 41, 35, 50,
+ 32, 44, 38, 47, 29, 23, 20, 12, 13, 107,
+ 108, 117, 106, 58, 0, 0, 160, 161, 0, 0,
+ 0, 153, 153, 153, 153, 153, 153, 0, 153, 0,
+ 153, 0, 0, 0, 0, 153, 0, 153, 0, 0,
+ 0, 153, 105, 112, 0, 158, 159, 169, 168, 153,
+ 153, 114, 0, 0, 0, 140, 141, 139, 0, 123,
+ 153, 0, 153, 153, 0, 8, 0, 153, 0, 87,
+ 88, 153, 153, 153, 153, 0, 0, 153, 0, 68,
+ 69, 103, 0, 100, 0, 0, 116, 142, 143, 144,
+ 145, 146, 99, 129, 131, 133, 124, 0, 97, 135,
+ 0, 0, 0, 0, 77, 9, 153, 0, 78, 0,
+ 0, 0, 0, 89, 153, 0, 90, 101, 115, 153,
+ 130, 132, 134, 98, 0, 0, 153, 79, 80, 0,
+ 153, 153, 85, 86, 91, 92, 0, 153, 153, 120,
+ 153, 136, 125, 126, 153, 153, 0, 0, 153, 153,
+ 0, 0, 153, 122, 127, 128, 0, 0, 83, 84,
+ 0, 0, 95, 96, 121, 81, 82, 93, 94
};
- /* YYPGOTO[NTERM-NUM]. */
+/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -204, -204, 117, -37, -19, -67, 353, -204, -8, -204,
- -204, -204, -204, -204, -184, -204, -204, -204, -204, -204,
- -204, 53, -204, 142, -204, 102, -203, -2, -204, 283,
- -204, -47, -49, -204, -118, 6, 47, -204
+ -152, -152, 112, -29, -14, -64, 360, -152, -8, -152,
+ -152, -152, -152, -152, -151, -152, -152, -152, -152, -152,
+ -152, -152, 13, -152, 136, -152, 98, -2, -152, 30,
+ -152, -54, -26, -152, -123, 6, 78, -152
};
- /* YYDEFGOTO[NTERM-NUM]. */
+/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 34, 241, 35, 36, 122, 37, 38, 39, 40,
- 41, 42, 43, 44, 152, 45, 46, 47, 48, 49,
- 50, 227, 233, 234, 235, 277, 58, 117, 136, 137,
- 125, 75, 60, 51, 52, 138, 54, 55
+ 0, 35, 246, 36, 37, 125, 38, 39, 40, 41,
+ 42, 43, 44, 45, 155, 46, 47, 48, 49, 50,
+ 51, 52, 232, 238, 239, 240, 281, 120, 139, 140,
+ 128, 76, 61, 53, 54, 141, 56, 57
};
- /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule whose
- number is the opposite. If YYTABLE_NINF, syntax error. */
+/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule whose
+ number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 59, 70, 121, 154, 65, 66, 53, 250, 132, 254,
- 191, 192, 139, 141, 2, 146, 144, 76, 120, 3,
- 61, 4, 5, 6, 7, 302, 196, 197, 64, 10,
- 116, 257, 303, 121, 62, 259, 67, 274, 79, 63,
- 100, 17, 198, 199, 200, 287, 288, 300, 2, 71,
- 120, 237, 101, 3, 275, 4, 5, 6, 7, 151,
- 153, 133, 149, 10, 275, 118, 203, 105, 32, 142,
- 150, 220, 221, 204, 294, 17, 210, 189, 190, 135,
- 201, 193, 194, 211, 217, 188, 218, 276, 135, 135,
- 246, 202, 302, 248, 238, 208, 209, 276, 109, 317,
- 215, 307, 32, 135, 33, 72, 73, 74, 219, 205,
- 135, 110, 143, 135, 121, 130, 121, 188, 111, 212,
- 131, 112, 337, 338, 113, 314, 114, 135, 321, 325,
- 135, 115, 195, 247, 53, 53, 249, 134, 135, 102,
- 206, 207, 103, 140, 308, 213, 214, 228, 229, 230,
- 231, 232, 236, 106, 145, 160, 107, 242, 161, 56,
- 57, 251, 135, 251, 253, 135, 135, 258, 315, 104,
- 147, 322, 326, 126, 127, 148, 164, 77, 78, 165,
- 188, 188, 155, 108, 174, 162, 273, 175, 178, 128,
- 129, 179, 156, 283, 282, 53, 53, 123, 124, 251,
- 251, 239, 240, 243, 292, 291, 166, 151, 224, 225,
- 226, 151, 157, 281, 176, 269, 270, 271, 180, 297,
- 298, 299, 260, 261, 126, 127, 72, 73, 74, 196,
- 197, 329, 225, 306, 158, 278, 279, 72, 73, 74,
- 222, 223, 313, 159, 285, 286, 163, 167, 2, 168,
- 151, 169, 186, 3, 320, 4, 5, 6, 7, 170,
- 171, 8, 9, 10, 172, 173, 177, 181, 332, 182,
- 183, 13, 14, 15, 16, 17, 251, 251, 184, 185,
- 18, 19, 20, 21, 22, 244, 245, 187, 23, 24,
- 25, 26, 27, 255, 316, 216, 135, 256, 262, 30,
- 31, 319, 32, 268, 33, 323, 324, 280, 284, 293,
- 289, 295, 327, 328, 1, 331, 2, 304, 296, 333,
- 334, 3, 275, 4, 5, 6, 7, 341, 252, 8,
- 9, 10, 305, 309, 310, 11, 12, 311, 312, 13,
- 14, 15, 16, 17, 335, 318, 336, 339, 18, 19,
- 20, 21, 22, 342, 344, 340, 23, 24, 25, 26,
- 27, 343, 69, 345, 28, 29, 2, 30, 31, 330,
- 32, 3, 33, 4, 5, 6, 7, 272, 301, 8,
+ 60, 71, 116, 135, 66, 67, 55, 157, 196, 197,
+ 147, 124, 305, 2, 242, 62, 278, 77, 3, 306,
+ 4, 5, 6, 7, 123, 63, 115, 72, 10, 65,
+ 64, 119, 80, 279, 303, 206, 142, 144, 2, 149,
+ 17, 68, 124, 3, 101, 4, 5, 6, 7, 133,
+ 208, 279, 138, 10, 102, 134, 123, 209, 243, 138,
+ 154, 156, 152, 136, 106, 17, 138, 280, 33, 261,
+ 153, 225, 226, 263, 2, 145, 110, 138, 111, 3,
+ 251, 4, 5, 6, 7, 280, 112, 138, 138, 10,
+ 222, 113, 223, 33, 210, 34, 193, 121, 215, 305,
+ 114, 17, 253, 194, 195, 216, 320, 198, 199, 310,
+ 143, 297, 73, 74, 75, 117, 317, 207, 138, 146,
+ 324, 213, 214, 328, 252, 124, 220, 124, 193, 33,
+ 118, 34, 58, 59, 224, 200, 138, 55, 55, 137,
+ 138, 148, 217, 211, 212, 245, 254, 138, 218, 219,
+ 229, 230, 231, 311, 138, 247, 103, 285, 138, 104,
+ 318, 138, 257, 158, 325, 107, 163, 329, 108, 164,
+ 73, 74, 75, 78, 79, 233, 234, 235, 236, 237,
+ 241, 150, 73, 74, 75, 151, 167, 105, 177, 168,
+ 159, 178, 286, 193, 193, 262, 109, 165, 126, 127,
+ 55, 55, 294, 160, 181, 161, 244, 182, 248, 273,
+ 274, 275, 154, 255, 277, 258, 154, 169, 162, 179,
+ 166, 287, 81, 82, 83, 84, 85, 264, 265, 189,
+ 86, 295, 191, 87, 88, 183, 129, 130, 201, 202,
+ 282, 283, 89, 90, 129, 130, 300, 301, 302, 289,
+ 290, 291, 292, 170, 154, 203, 204, 205, 201, 202,
+ 309, 131, 132, 267, 268, 269, 270, 271, 316, 332,
+ 230, 171, 122, 14, 15, 16, 227, 228, 172, 173,
+ 323, 18, 19, 20, 21, 22, 174, 175, 176, 23,
+ 24, 25, 26, 27, 335, 180, 184, 319, 185, 186,
+ 187, 31, 32, 188, 322, 192, 249, 250, 326, 327,
+ 221, 259, 260, 266, 272, 330, 331, 284, 334, 293,
+ 298, 299, 336, 337, 288, 296, 340, 341, 256, 1,
+ 344, 2, 333, 279, 307, 308, 3, 312, 4, 5,
+ 6, 7, 313, 315, 8, 9, 10, 314, 338, 321,
+ 11, 12, 339, 342, 13, 14, 15, 16, 17, 343,
+ 345, 347, 346, 18, 19, 20, 21, 22, 348, 70,
+ 0, 23, 24, 25, 26, 27, 276, 28, 304, 0,
+ 29, 30, 2, 31, 32, 0, 33, 3, 34, 4,
+ 5, 6, 7, 0, 0, 8, 9, 10, 0, 0,
+ 0, 11, 12, 0, 0, 13, 14, 15, 16, 17,
+ 0, 0, 0, 0, 18, 19, 20, 21, 22, 0,
+ 0, 0, 23, 24, 25, 26, 27, 0, 0, 0,
+ 0, 138, 0, 0, 31, 32, 2, 33, 0, 34,
+ 190, 3, 0, 4, 5, 6, 7, 0, 0, 8,
9, 10, 0, 0, 0, 11, 12, 0, 0, 13,
14, 15, 16, 17, 0, 0, 0, 0, 18, 19,
20, 21, 22, 0, 0, 0, 23, 24, 25, 26,
- 27, 0, 0, 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
+ 27, 0, 0, 0, 73, 74, 75, 2, 31, 32,
+ 0, 33, 3, 34, 4, 5, 6, 7, 0, 0,
+ 8, 9, 10, 0, 0, 0, 11, 12, 0, 0,
+ 13, 14, 15, 16, 17, 0, 0, 0, 0, 18,
+ 19, 20, 21, 22, 0, 0, 0, 23, 24, 25,
+ 26, 27, 0, 0, 0, 0, 138, 0, 2, 31,
+ 32, 0, 33, 3, 34, 4, 5, 6, 7, 0,
+ 0, 8, 9, 10, 0, 0, 0, 11, 12, 0,
+ 0, 13, 14, 15, 16, 17, 0, 0, 0, 0,
+ 18, 19, 20, 21, 22, 0, 0, 0, 23, 24,
+ 25, 26, 27, 0, 0, 0, 0, 0, 0, 2,
+ 31, 32, 0, 33, 3, 34, 4, 5, 6, 7,
+ 0, 0, 8, 9, 10, 0, 0, 0, 0, 0,
+ 0, 0, 13, 14, 15, 16, 17, 0, 0, 0,
+ 0, 18, 19, 20, 21, 22, 0, 0, 0, 23,
+ 24, 25, 26, 27, 0, 0, 0, 0, 138, 0,
+ 2, 31, 32, 0, 33, 3, 34, 4, 5, 6,
+ 7, 0, 0, 0, 0, 10, 0, 0, 0, 0,
+ 0, 0, 0, 69, 14, 15, 16, 17, 0, 0,
+ 0, 0, 18, 19, 20, 21, 22, 0, 0, 0,
+ 23, 24, 25, 26, 27, 0, 0, 0, 0, 0,
+ 0, 0, 31, 32, 0, 33, 0, 34, 15, 16,
+ 0, 0, 0, 0, 0, 18, 19, 20, 21, 22,
+ 0, 0, 0, 23, 24, 25, 26, 27, 0, 91,
+ 92, 93, 94, 95, 0, 31, 32, 96, 0, 0,
+ 97, 98, 0, 0, 0, 0, 0, 0, 0, 99,
+ 100
};
static const yytype_int16 yycheck[] =
{
- 2, 9, 39, 70, 6, 7, 0, 210, 55, 212,
- 128, 129, 61, 62, 3, 64, 63, 11, 37, 8,
- 26, 10, 11, 12, 13, 53, 33, 34, 26, 18,
- 32, 215, 60, 70, 26, 219, 26, 9, 59, 31,
- 26, 30, 49, 50, 51, 248, 249, 9, 3, 32,
- 69, 14, 26, 8, 26, 10, 11, 12, 13, 67,
- 68, 55, 51, 18, 26, 0, 14, 26, 57, 14,
- 59, 189, 190, 21, 258, 30, 14, 126, 127, 51,
- 21, 130, 131, 21, 151, 122, 153, 59, 51, 51,
- 14, 140, 53, 14, 57, 144, 145, 59, 26, 60,
- 149, 14, 57, 51, 59, 50, 51, 52, 157, 57,
- 51, 26, 57, 51, 151, 48, 153, 154, 26, 57,
- 53, 26, 325, 326, 26, 14, 26, 51, 14, 14,
- 51, 26, 134, 57, 128, 129, 57, 4, 51, 26,
- 142, 143, 29, 50, 57, 147, 148, 196, 197, 198,
- 199, 200, 201, 26, 50, 26, 29, 204, 29, 51,
- 52, 210, 51, 212, 211, 51, 51, 216, 57, 56,
- 14, 57, 57, 33, 34, 14, 26, 24, 25, 29,
- 217, 218, 19, 56, 26, 56, 235, 29, 26, 49,
- 50, 29, 25, 242, 241, 189, 190, 51, 52, 248,
- 249, 203, 26, 205, 253, 252, 56, 215, 5, 6,
- 7, 219, 60, 26, 56, 40, 41, 42, 56, 40,
- 41, 42, 224, 225, 33, 34, 50, 51, 52, 33,
- 34, 5, 6, 282, 26, 237, 238, 50, 51, 52,
- 193, 194, 291, 26, 246, 247, 26, 26, 3, 26,
- 258, 26, 58, 8, 303, 10, 11, 12, 13, 26,
- 26, 16, 17, 18, 26, 26, 26, 26, 317, 26,
- 26, 26, 27, 28, 29, 30, 325, 326, 26, 26,
- 35, 36, 37, 38, 39, 15, 58, 60, 43, 44,
- 45, 46, 47, 15, 296, 60, 51, 15, 7, 54,
- 55, 303, 57, 9, 59, 307, 308, 15, 58, 58,
- 15, 7, 314, 315, 1, 317, 3, 15, 4, 321,
- 322, 8, 26, 10, 11, 12, 13, 329, 211, 16,
- 17, 18, 58, 15, 58, 22, 23, 15, 58, 26,
- 27, 28, 29, 30, 15, 26, 58, 15, 35, 36,
- 37, 38, 39, 15, 15, 58, 43, 44, 45, 46,
- 47, 58, 9, 58, 51, 52, 3, 54, 55, 316,
- 57, 8, 59, 10, 11, 12, 13, 235, 276, 16,
+ 2, 9, 28, 57, 6, 7, 0, 71, 131, 132,
+ 64, 40, 54, 3, 14, 26, 9, 11, 8, 61,
+ 10, 11, 12, 13, 38, 26, 28, 32, 18, 26,
+ 31, 33, 60, 26, 9, 21, 62, 63, 3, 65,
+ 30, 26, 71, 8, 26, 10, 11, 12, 13, 48,
+ 14, 26, 52, 18, 26, 54, 70, 21, 58, 52,
+ 68, 69, 52, 57, 26, 30, 52, 60, 58, 220,
+ 60, 194, 195, 224, 3, 14, 26, 52, 26, 8,
+ 14, 10, 11, 12, 13, 60, 26, 52, 52, 18,
+ 154, 26, 156, 58, 58, 60, 125, 0, 14, 54,
+ 26, 30, 14, 129, 130, 21, 61, 133, 134, 14,
+ 51, 262, 51, 52, 53, 26, 14, 143, 52, 58,
+ 14, 147, 148, 14, 58, 154, 152, 156, 157, 58,
+ 26, 60, 52, 53, 160, 137, 52, 131, 132, 4,
+ 52, 51, 58, 145, 146, 26, 58, 52, 150, 151,
+ 5, 6, 7, 58, 52, 209, 26, 26, 52, 29,
+ 58, 52, 216, 19, 58, 26, 26, 58, 29, 29,
+ 51, 52, 53, 24, 25, 201, 202, 203, 204, 205,
+ 206, 14, 51, 52, 53, 14, 26, 57, 26, 29,
+ 25, 29, 246, 222, 223, 221, 57, 57, 52, 53,
+ 194, 195, 256, 61, 26, 26, 208, 29, 210, 40,
+ 41, 42, 220, 215, 240, 217, 224, 57, 26, 57,
+ 26, 247, 35, 36, 37, 38, 39, 229, 230, 61,
+ 43, 257, 59, 46, 47, 57, 33, 34, 33, 34,
+ 242, 243, 55, 56, 33, 34, 40, 41, 42, 251,
+ 252, 253, 254, 26, 262, 50, 51, 52, 33, 34,
+ 286, 50, 51, 233, 234, 235, 236, 237, 294, 5,
+ 6, 26, 26, 27, 28, 29, 198, 199, 26, 26,
+ 306, 35, 36, 37, 38, 39, 26, 26, 26, 43,
+ 44, 45, 46, 47, 320, 26, 26, 299, 26, 26,
+ 26, 55, 56, 26, 306, 61, 15, 59, 310, 311,
+ 61, 15, 15, 7, 9, 317, 318, 15, 320, 15,
+ 7, 4, 324, 325, 59, 59, 328, 329, 216, 1,
+ 332, 3, 319, 26, 15, 59, 8, 15, 10, 11,
+ 12, 13, 59, 59, 16, 17, 18, 15, 15, 26,
+ 22, 23, 59, 15, 26, 27, 28, 29, 30, 59,
+ 15, 15, 59, 35, 36, 37, 38, 39, 59, 9,
+ -1, 43, 44, 45, 46, 47, 240, 49, 280, -1,
+ 52, 53, 3, 55, 56, -1, 58, 8, 60, 10,
+ 11, 12, 13, -1, -1, 16, 17, 18, -1, -1,
+ -1, 22, 23, -1, -1, 26, 27, 28, 29, 30,
+ -1, -1, -1, -1, 35, 36, 37, 38, 39, -1,
+ -1, -1, 43, 44, 45, 46, 47, -1, -1, -1,
+ -1, 52, -1, -1, 55, 56, 3, 58, -1, 60,
+ 61, 8, -1, 10, 11, 12, 13, -1, -1, 16,
17, 18, -1, -1, -1, 22, 23, -1, -1, 26,
27, 28, 29, 30, -1, -1, -1, -1, 35, 36,
37, 38, 39, -1, -1, -1, 43, 44, 45, 46,
- 47, -1, -1, 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
+ 47, -1, -1, -1, 51, 52, 53, 3, 55, 56,
+ -1, 58, 8, 60, 10, 11, 12, 13, -1, -1,
+ 16, 17, 18, -1, -1, -1, 22, 23, -1, -1,
+ 26, 27, 28, 29, 30, -1, -1, -1, -1, 35,
+ 36, 37, 38, 39, -1, -1, -1, 43, 44, 45,
+ 46, 47, -1, -1, -1, -1, 52, -1, 3, 55,
+ 56, -1, 58, 8, 60, 10, 11, 12, 13, -1,
+ -1, 16, 17, 18, -1, -1, -1, 22, 23, -1,
+ -1, 26, 27, 28, 29, 30, -1, -1, -1, -1,
+ 35, 36, 37, 38, 39, -1, -1, -1, 43, 44,
+ 45, 46, 47, -1, -1, -1, -1, -1, -1, 3,
+ 55, 56, -1, 58, 8, 60, 10, 11, 12, 13,
+ -1, -1, 16, 17, 18, -1, -1, -1, -1, -1,
+ -1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
+ -1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
+ 44, 45, 46, 47, -1, -1, -1, -1, 52, -1,
+ 3, 55, 56, -1, 58, 8, 60, 10, 11, 12,
+ 13, -1, -1, -1, -1, 18, -1, -1, -1, -1,
+ -1, -1, -1, 26, 27, 28, 29, 30, -1, -1,
+ -1, -1, 35, 36, 37, 38, 39, -1, -1, -1,
+ 43, 44, 45, 46, 47, -1, -1, -1, -1, -1,
+ -1, -1, 55, 56, -1, 58, -1, 60, 28, 29,
+ -1, -1, -1, -1, -1, 35, 36, 37, 38, 39,
+ -1, -1, -1, 43, 44, 45, 46, 47, -1, 35,
+ 36, 37, 38, 39, -1, 55, 56, 43, -1, -1,
+ 46, 47, -1, -1, -1, -1, -1, -1, -1, 55,
+ 56
};
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
+/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
+ state STATE-NUM. */
static const yytype_int8 yystos[] =
{
0, 1, 3, 8, 10, 11, 12, 13, 16, 17,
18, 22, 23, 26, 27, 28, 29, 30, 35, 36,
- 37, 38, 39, 43, 44, 45, 46, 47, 51, 52,
- 54, 55, 57, 59, 62, 64, 65, 67, 68, 69,
- 70, 71, 72, 73, 74, 76, 77, 78, 79, 80,
- 81, 94, 95, 96, 97, 98, 51, 52, 87, 88,
- 93, 26, 26, 31, 26, 88, 88, 26, 26, 67,
- 69, 32, 50, 51, 52, 92, 96, 24, 25, 59,
- 35, 36, 37, 38, 39, 43, 46, 47, 54, 55,
- 35, 36, 37, 38, 39, 43, 46, 47, 54, 55,
- 26, 26, 26, 29, 56, 26, 26, 29, 56, 26,
- 26, 26, 26, 26, 26, 26, 88, 88, 0, 26,
- 65, 64, 66, 51, 52, 91, 33, 34, 49, 50,
- 48, 53, 92, 96, 4, 51, 89, 90, 96, 93,
- 50, 93, 14, 57, 92, 50, 93, 14, 14, 51,
- 59, 69, 75, 69, 66, 19, 25, 60, 26, 26,
- 26, 29, 56, 26, 26, 29, 56, 26, 26, 26,
- 26, 26, 26, 26, 26, 29, 56, 26, 26, 29,
- 56, 26, 26, 26, 26, 26, 58, 60, 64, 93,
- 93, 95, 95, 93, 93, 88, 33, 34, 49, 50,
- 51, 21, 93, 14, 21, 57, 88, 88, 93, 93,
- 14, 21, 57, 88, 88, 93, 60, 66, 66, 93,
- 95, 95, 97, 97, 5, 6, 7, 82, 93, 93,
- 93, 93, 93, 83, 84, 85, 93, 14, 57, 88,
- 26, 63, 92, 88, 15, 58, 14, 57, 14, 57,
- 87, 93, 63, 92, 87, 15, 15, 75, 93, 75,
- 88, 88, 7, 90, 90, 90, 90, 90, 9, 40,
- 41, 42, 84, 93, 9, 26, 59, 86, 88, 88,
- 15, 26, 92, 93, 58, 88, 88, 87, 87, 15,
- 90, 92, 93, 58, 75, 7, 4, 40, 41, 42,
- 9, 86, 53, 60, 15, 58, 93, 14, 57, 15,
- 58, 15, 58, 93, 14, 57, 88, 60, 26, 88,
- 93, 14, 57, 88, 88, 14, 57, 88, 88, 5,
- 82, 88, 93, 88, 88, 15, 58, 87, 87, 15,
- 58, 88, 15, 58, 15, 58
+ 37, 38, 39, 43, 44, 45, 46, 47, 49, 52,
+ 53, 55, 56, 58, 60, 63, 65, 66, 68, 69,
+ 70, 71, 72, 73, 74, 75, 77, 78, 79, 80,
+ 81, 82, 83, 95, 96, 97, 98, 99, 52, 53,
+ 89, 94, 26, 26, 31, 26, 89, 89, 26, 26,
+ 68, 70, 32, 51, 52, 53, 93, 97, 24, 25,
+ 60, 35, 36, 37, 38, 39, 43, 46, 47, 55,
+ 56, 35, 36, 37, 38, 39, 43, 46, 47, 55,
+ 56, 26, 26, 26, 29, 57, 26, 26, 29, 57,
+ 26, 26, 26, 26, 26, 89, 94, 26, 26, 89,
+ 89, 0, 26, 66, 65, 67, 52, 53, 92, 33,
+ 34, 50, 51, 48, 54, 93, 97, 4, 52, 90,
+ 91, 97, 94, 51, 94, 14, 58, 93, 51, 94,
+ 14, 14, 52, 60, 70, 76, 70, 67, 19, 25,
+ 61, 26, 26, 26, 29, 57, 26, 26, 29, 57,
+ 26, 26, 26, 26, 26, 26, 26, 26, 29, 57,
+ 26, 26, 29, 57, 26, 26, 26, 26, 26, 61,
+ 61, 59, 61, 65, 94, 94, 96, 96, 94, 94,
+ 89, 33, 34, 50, 51, 52, 21, 94, 14, 21,
+ 58, 89, 89, 94, 94, 14, 21, 58, 89, 89,
+ 94, 61, 67, 67, 94, 96, 96, 98, 98, 5,
+ 6, 7, 84, 94, 94, 94, 94, 94, 85, 86,
+ 87, 94, 14, 58, 89, 26, 64, 93, 89, 15,
+ 59, 14, 58, 14, 58, 89, 64, 93, 89, 15,
+ 15, 76, 94, 76, 89, 89, 7, 91, 91, 91,
+ 91, 91, 9, 40, 41, 42, 86, 94, 9, 26,
+ 60, 88, 89, 89, 15, 26, 93, 94, 59, 89,
+ 89, 89, 89, 15, 93, 94, 59, 76, 7, 4,
+ 40, 41, 42, 9, 88, 54, 61, 15, 59, 94,
+ 14, 58, 15, 59, 15, 59, 94, 14, 58, 89,
+ 61, 26, 89, 94, 14, 58, 89, 89, 14, 58,
+ 89, 89, 5, 84, 89, 94, 89, 89, 15, 59,
+ 89, 89, 15, 59, 89, 15, 59, 15, 59
};
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
static const yytype_int8 yyr1[] =
{
- 0, 61, 62, 62, 62, 62, 62, 63, 63, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
- 64, 64, 64, 65, 65, 65, 66, 66, 67, 67,
- 68, 68, 68, 68, 68, 69, 69, 69, 69, 69,
- 69, 69, 69, 69, 69, 69, 70, 70, 70, 70,
- 70, 70, 70, 70, 71, 71, 71, 71, 72, 72,
- 72, 72, 72, 72, 72, 72, 73, 73, 73, 74,
- 74, 74, 74, 75, 75, 76, 77, 77, 77, 77,
- 77, 78, 78, 78, 79, 80, 81, 82, 82, 82,
- 83, 83, 84, 84, 84, 84, 85, 85, 85, 85,
- 85, 85, 86, 86, 87, 88, 88, 89, 89, 89,
- 90, 90, 90, 90, 90, 90, 91, 91, 92, 92,
- 92, 93, 93, 94, 94, 94, 95, 95, 95, 95,
- 95, 96, 96, 96, 96, 96, 97, 97, 97, 98,
- 98, 98, 98
+ 0, 62, 63, 63, 63, 63, 63, 63, 64, 64,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 66, 66, 66, 67, 67, 68,
+ 68, 69, 69, 69, 69, 69, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 71, 71, 71,
+ 71, 71, 71, 71, 71, 72, 72, 72, 72, 73,
+ 73, 73, 73, 73, 73, 73, 73, 74, 74, 74,
+ 75, 75, 75, 75, 76, 76, 77, 78, 78, 79,
+ 79, 79, 79, 79, 80, 80, 80, 81, 82, 83,
+ 84, 84, 84, 85, 85, 86, 86, 86, 86, 87,
+ 87, 87, 87, 87, 87, 88, 88, 89, 89, 90,
+ 90, 90, 91, 91, 91, 91, 91, 91, 92, 92,
+ 93, 93, 93, 94, 94, 95, 95, 95, 96, 96,
+ 96, 96, 96, 97, 97, 97, 97, 97, 98, 98,
+ 98, 99, 99, 99, 99
};
- /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
+/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
static const yytype_int8 yyr2[] =
{
- 0, 2, 2, 1, 2, 2, 1, 1, 2, 2,
- 2, 3, 3, 3, 3, 2, 3, 3, 2, 3,
+ 0, 2, 2, 1, 1, 2, 2, 1, 1, 2,
+ 2, 2, 3, 3, 3, 3, 2, 3, 3, 2,
+ 3, 3, 2, 3, 3, 2, 3, 3, 2, 3,
3, 2, 3, 3, 2, 3, 3, 2, 3, 3,
2, 3, 3, 2, 3, 3, 2, 3, 3, 2,
- 3, 3, 2, 3, 3, 2, 3, 3, 2, 3,
- 3, 2, 2, 1, 1, 1, 1, 2, 1, 2,
- 1, 1, 2, 1, 1, 1, 1, 5, 5, 1,
- 1, 1, 1, 1, 1, 1, 6, 6, 7, 7,
- 10, 10, 9, 9, 7, 7, 5, 5, 6, 6,
- 7, 7, 10, 10, 9, 9, 6, 7, 6, 5,
- 6, 3, 5, 1, 2, 3, 2, 3, 3, 4,
- 2, 5, 7, 6, 3, 1, 3, 4, 6, 5,
- 1, 2, 4, 4, 5, 5, 2, 3, 2, 3,
- 2, 3, 1, 3, 2, 1, 2, 3, 3, 3,
- 4, 4, 4, 4, 4, 1, 1, 1, 1, 1,
- 1, 0, 2, 1, 2, 2, 4, 4, 3, 3,
- 1, 1, 2, 2, 2, 2, 4, 4, 1, 1,
- 2, 2, 3
+ 3, 3, 2, 2, 1, 1, 1, 1, 2, 1,
+ 2, 1, 1, 2, 1, 1, 1, 1, 5, 5,
+ 1, 1, 1, 1, 1, 1, 1, 6, 6, 7,
+ 7, 10, 10, 9, 9, 7, 7, 5, 5, 6,
+ 6, 7, 7, 10, 10, 9, 9, 6, 7, 6,
+ 5, 6, 3, 5, 1, 2, 3, 3, 3, 2,
+ 3, 3, 4, 2, 5, 7, 6, 3, 1, 3,
+ 4, 6, 5, 1, 2, 4, 4, 5, 5, 2,
+ 3, 2, 3, 2, 3, 1, 3, 2, 2, 3,
+ 3, 3, 4, 4, 4, 4, 4, 1, 1, 1,
+ 1, 1, 1, 0, 2, 1, 2, 2, 4, 4,
+ 3, 3, 1, 1, 2, 2, 2, 2, 4, 4,
+ 1, 1, 2, 2, 3
};
@@ -1451,6 +1487,7 @@ enum { YYENOMEM = -2 };
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
#define YYERROR goto yyerrorlab
+#define YYNOMEM goto yyexhaustedlab
#define YYRECOVERING() (!!yyerrstatus)
@@ -1491,10 +1528,7 @@ do { \
YYFPRINTF Args; \
} while (0)
-/* This macro is provided for backward compatibility. */
-# ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+
# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
@@ -1518,15 +1552,11 @@ yy_symbol_value_print (FILE *yyo,
yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
FILE *yyoutput = yyo;
- YYUSE (yyoutput);
+ YY_USE (yyoutput);
if (!yyvaluep)
return;
-# ifdef YYPRINT
- if (yykind < YYNTOKENS)
- YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
-# endif
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- YYUSE (yykind);
+ YY_USE (yykind);
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
@@ -1640,18 +1670,18 @@ static void
yydestruct (const char *yymsg,
yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
{
- YYUSE (yyvaluep);
+ YY_USE (yyvaluep);
if (!yymsg)
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- YYUSE (yykind);
+ YY_USE (yykind);
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
-/* The lookahead symbol. */
+/* Lookahead token kind. */
int yychar;
/* The semantic value of the lookahead symbol. */
@@ -1669,34 +1699,30 @@ int yynerrs;
int
yyparse (void)
{
- yy_state_fast_t yystate;
+ yy_state_fast_t yystate = 0;
/* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
-
- /* The stacks and their tools:
- 'yyss': related to states.
- 'yyvs': related to semantic values.
+ int yyerrstatus = 0;
- Refer to the stacks through separate pointers, to allow yyoverflow
+ /* Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
/* Their size. */
- YYPTRDIFF_T yystacksize;
+ YYPTRDIFF_T yystacksize = YYINITDEPTH;
- /* The state stack. */
+ /* The state stack: array, bottom, top. */
yy_state_t yyssa[YYINITDEPTH];
- yy_state_t *yyss;
- yy_state_t *yyssp;
+ yy_state_t *yyss = yyssa;
+ yy_state_t *yyssp = yyss;
- /* The semantic value stack. */
+ /* The semantic value stack: array, bottom, top. */
YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs;
- YYSTYPE *yyvsp;
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp = yyvs;
int yyn;
/* The return value of yyparse. */
int yyresult;
- /* Lookahead token as an internal (translated) token number. */
+ /* Lookahead symbol kind. */
yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
/* The variables used to return semantic value and location from the
action routines. */
@@ -1710,18 +1736,10 @@ yyparse (void)
Keep to zero when no symbol should be popped. */
int yylen = 0;
- yynerrs = 0;
- yystate = 0;
- yyerrstatus = 0;
-
- yystacksize = YYINITDEPTH;
- yyssp = yyss = yyssa;
- yyvsp = yyvs = yyvsa;
-
-
YYDPRINTF ((stderr, "Starting parse\n"));
yychar = YYEMPTY; /* Cause a token to be read. */
+
goto yysetstate;
@@ -1747,7 +1765,7 @@ yysetstate:
if (yyss + yystacksize - 1 <= yyssp)
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
- goto yyexhaustedlab;
+ YYNOMEM;
#else
{
/* Get the current used size of the three stacks, in elements. */
@@ -1775,7 +1793,7 @@ yysetstate:
# else /* defined YYSTACK_RELOCATE */
/* Extend the stack our own way. */
if (YYMAXDEPTH <= yystacksize)
- goto yyexhaustedlab;
+ YYNOMEM;
yystacksize *= 2;
if (YYMAXDEPTH < yystacksize)
yystacksize = YYMAXDEPTH;
@@ -1786,7 +1804,7 @@ yysetstate:
YY_CAST (union yyalloc *,
YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
if (! yyptr)
- goto yyexhaustedlab;
+ YYNOMEM;
YYSTACK_RELOCATE (yyss_alloc, yyss);
YYSTACK_RELOCATE (yyvs_alloc, yyvs);
# undef YYSTACK_RELOCATE
@@ -1808,6 +1826,7 @@ yysetstate:
}
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
+
if (yystate == YYFINAL)
YYACCEPT;
@@ -1919,8 +1938,8 @@ yyreduce:
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
- case 2:
-#line 382 "/Users/chet/src/bash/src/parse.y"
+ case 2: /* inputunit: simple_list simple_list_terminator */
+#line 396 "/usr/local/src/chet/src/bash/src/parse.y"
{
/* Case of regular command. Discard the error
safety net,and return the command just parsed. */
@@ -1931,11 +1950,23 @@ yyreduce:
parser_state |= PST_EOFTOKEN;
YYACCEPT;
}
-#line 1935 "y.tab.c"
+#line 1954 "y.tab.c"
+ break;
+
+ case 3: /* inputunit: comsub */
+#line 407 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ /* This is special; look at the production and how
+ parse_comsub sets token_to_read */
+ global_command = (yyvsp[0].command);
+ eof_encountered = 0;
+ YYACCEPT;
+ }
+#line 1966 "y.tab.c"
break;
- case 3:
-#line 393 "/Users/chet/src/bash/src/parse.y"
+ case 4: /* inputunit: '\n' */
+#line 415 "/usr/local/src/chet/src/bash/src/parse.y"
{
/* Case of regular command, but not a very
interesting one. Return a NULL command. */
@@ -1944,11 +1975,11 @@ yyreduce:
parser_state |= PST_EOFTOKEN;
YYACCEPT;
}
-#line 1948 "y.tab.c"
+#line 1979 "y.tab.c"
break;
- case 4:
-#line 402 "/Users/chet/src/bash/src/parse.y"
+ case 5: /* inputunit: error '\n' */
+#line 424 "/usr/local/src/chet/src/bash/src/parse.y"
{
/* Error during parsing. Return NULL command. */
global_command = (COMMAND *)NULL;
@@ -1963,11 +1994,11 @@ yyreduce:
YYABORT;
}
}
-#line 1967 "y.tab.c"
+#line 1998 "y.tab.c"
break;
- case 5:
-#line 417 "/Users/chet/src/bash/src/parse.y"
+ case 6: /* inputunit: error yacc_EOF */
+#line 439 "/usr/local/src/chet/src/bash/src/parse.y"
{
/* EOF after an error. Do ignoreeof or not. Really
only interesting in non-interactive shells */
@@ -1984,11 +2015,11 @@ yyreduce:
YYABORT;
}
}
-#line 1988 "y.tab.c"
+#line 2019 "y.tab.c"
break;
- case 6:
-#line 434 "/Users/chet/src/bash/src/parse.y"
+ case 7: /* inputunit: yacc_EOF */
+#line 456 "/usr/local/src/chet/src/bash/src/parse.y"
{
/* Case of EOF seen by itself. Do ignoreeof or
not. */
@@ -1996,495 +2027,495 @@ yyreduce:
handle_eof_input_unit ();
YYACCEPT;
}
-#line 2000 "y.tab.c"
+#line 2031 "y.tab.c"
break;
- case 7:
-#line 444 "/Users/chet/src/bash/src/parse.y"
+ case 8: /* word_list: WORD */
+#line 466 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 2006 "y.tab.c"
+#line 2037 "y.tab.c"
break;
- case 8:
-#line 446 "/Users/chet/src/bash/src/parse.y"
+ case 9: /* word_list: word_list WORD */
+#line 468 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
-#line 2012 "y.tab.c"
+#line 2043 "y.tab.c"
break;
- case 9:
-#line 450 "/Users/chet/src/bash/src/parse.y"
+ case 10: /* redirection: '>' WORD */
+#line 472 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
}
-#line 2022 "y.tab.c"
+#line 2053 "y.tab.c"
break;
- case 10:
-#line 456 "/Users/chet/src/bash/src/parse.y"
+ case 11: /* redirection: '<' WORD */
+#line 478 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
}
-#line 2032 "y.tab.c"
+#line 2063 "y.tab.c"
break;
- case 11:
-#line 462 "/Users/chet/src/bash/src/parse.y"
+ case 12: /* redirection: NUMBER '>' WORD */
+#line 484 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
}
-#line 2042 "y.tab.c"
+#line 2073 "y.tab.c"
break;
- case 12:
-#line 468 "/Users/chet/src/bash/src/parse.y"
+ case 13: /* redirection: NUMBER '<' WORD */
+#line 490 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
}
-#line 2052 "y.tab.c"
+#line 2083 "y.tab.c"
break;
- case 13:
-#line 474 "/Users/chet/src/bash/src/parse.y"
+ case 14: /* redirection: REDIR_WORD '>' WORD */
+#line 496 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
}
-#line 2062 "y.tab.c"
+#line 2093 "y.tab.c"
break;
- case 14:
-#line 480 "/Users/chet/src/bash/src/parse.y"
+ case 15: /* redirection: REDIR_WORD '<' WORD */
+#line 502 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
}
-#line 2072 "y.tab.c"
+#line 2103 "y.tab.c"
break;
- case 15:
-#line 486 "/Users/chet/src/bash/src/parse.y"
+ case 16: /* redirection: GREATER_GREATER WORD */
+#line 508 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
}
-#line 2082 "y.tab.c"
+#line 2113 "y.tab.c"
break;
- case 16:
-#line 492 "/Users/chet/src/bash/src/parse.y"
+ case 17: /* redirection: NUMBER GREATER_GREATER WORD */
+#line 514 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
}
-#line 2092 "y.tab.c"
+#line 2123 "y.tab.c"
break;
- case 17:
-#line 498 "/Users/chet/src/bash/src/parse.y"
+ case 18: /* redirection: REDIR_WORD GREATER_GREATER WORD */
+#line 520 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
}
-#line 2102 "y.tab.c"
+#line 2133 "y.tab.c"
break;
- case 18:
-#line 504 "/Users/chet/src/bash/src/parse.y"
+ case 19: /* redirection: GREATER_BAR WORD */
+#line 526 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
}
-#line 2112 "y.tab.c"
+#line 2143 "y.tab.c"
break;
- case 19:
-#line 510 "/Users/chet/src/bash/src/parse.y"
+ case 20: /* redirection: NUMBER GREATER_BAR WORD */
+#line 532 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
}
-#line 2122 "y.tab.c"
+#line 2153 "y.tab.c"
break;
- case 20:
-#line 516 "/Users/chet/src/bash/src/parse.y"
+ case 21: /* redirection: REDIR_WORD GREATER_BAR WORD */
+#line 538 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
}
-#line 2132 "y.tab.c"
+#line 2163 "y.tab.c"
break;
- case 21:
-#line 522 "/Users/chet/src/bash/src/parse.y"
+ case 22: /* redirection: LESS_GREATER WORD */
+#line 544 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
}
-#line 2142 "y.tab.c"
+#line 2173 "y.tab.c"
break;
- case 22:
-#line 528 "/Users/chet/src/bash/src/parse.y"
+ case 23: /* redirection: NUMBER LESS_GREATER WORD */
+#line 550 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
}
-#line 2152 "y.tab.c"
+#line 2183 "y.tab.c"
break;
- case 23:
-#line 534 "/Users/chet/src/bash/src/parse.y"
+ case 24: /* redirection: REDIR_WORD LESS_GREATER WORD */
+#line 556 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
}
-#line 2162 "y.tab.c"
+#line 2193 "y.tab.c"
break;
- case 24:
-#line 540 "/Users/chet/src/bash/src/parse.y"
+ case 25: /* redirection: LESS_LESS WORD */
+#line 562 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
push_heredoc ((yyval.redirect));
}
-#line 2173 "y.tab.c"
+#line 2204 "y.tab.c"
break;
- case 25:
-#line 547 "/Users/chet/src/bash/src/parse.y"
+ case 26: /* redirection: NUMBER LESS_LESS WORD */
+#line 569 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
push_heredoc ((yyval.redirect));
}
-#line 2184 "y.tab.c"
+#line 2215 "y.tab.c"
break;
- case 26:
-#line 554 "/Users/chet/src/bash/src/parse.y"
+ case 27: /* redirection: REDIR_WORD LESS_LESS WORD */
+#line 576 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
push_heredoc ((yyval.redirect));
}
-#line 2195 "y.tab.c"
+#line 2226 "y.tab.c"
break;
- case 27:
-#line 561 "/Users/chet/src/bash/src/parse.y"
+ case 28: /* redirection: LESS_LESS_MINUS WORD */
+#line 583 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
push_heredoc ((yyval.redirect));
}
-#line 2206 "y.tab.c"
+#line 2237 "y.tab.c"
break;
- case 28:
-#line 568 "/Users/chet/src/bash/src/parse.y"
+ case 29: /* redirection: NUMBER LESS_LESS_MINUS WORD */
+#line 590 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
push_heredoc ((yyval.redirect));
}
-#line 2217 "y.tab.c"
+#line 2248 "y.tab.c"
break;
- case 29:
-#line 575 "/Users/chet/src/bash/src/parse.y"
+ case 30: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD */
+#line 597 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
push_heredoc ((yyval.redirect));
}
-#line 2228 "y.tab.c"
+#line 2259 "y.tab.c"
break;
- case 30:
-#line 582 "/Users/chet/src/bash/src/parse.y"
+ case 31: /* redirection: LESS_LESS_LESS WORD */
+#line 604 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
}
-#line 2238 "y.tab.c"
+#line 2269 "y.tab.c"
break;
- case 31:
-#line 588 "/Users/chet/src/bash/src/parse.y"
+ case 32: /* redirection: NUMBER LESS_LESS_LESS WORD */
+#line 610 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
}
-#line 2248 "y.tab.c"
+#line 2279 "y.tab.c"
break;
- case 32:
-#line 594 "/Users/chet/src/bash/src/parse.y"
+ case 33: /* redirection: REDIR_WORD LESS_LESS_LESS WORD */
+#line 616 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
}
-#line 2258 "y.tab.c"
+#line 2289 "y.tab.c"
break;
- case 33:
-#line 600 "/Users/chet/src/bash/src/parse.y"
+ case 34: /* redirection: LESS_AND NUMBER */
+#line 622 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
}
-#line 2268 "y.tab.c"
+#line 2299 "y.tab.c"
break;
- case 34:
-#line 606 "/Users/chet/src/bash/src/parse.y"
+ case 35: /* redirection: NUMBER LESS_AND NUMBER */
+#line 628 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
}
-#line 2278 "y.tab.c"
+#line 2309 "y.tab.c"
break;
- case 35:
-#line 612 "/Users/chet/src/bash/src/parse.y"
+ case 36: /* redirection: REDIR_WORD LESS_AND NUMBER */
+#line 634 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
}
-#line 2288 "y.tab.c"
+#line 2319 "y.tab.c"
break;
- case 36:
-#line 618 "/Users/chet/src/bash/src/parse.y"
+ case 37: /* redirection: GREATER_AND NUMBER */
+#line 640 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
}
-#line 2298 "y.tab.c"
+#line 2329 "y.tab.c"
break;
- case 37:
-#line 624 "/Users/chet/src/bash/src/parse.y"
+ case 38: /* redirection: NUMBER GREATER_AND NUMBER */
+#line 646 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
}
-#line 2308 "y.tab.c"
+#line 2339 "y.tab.c"
break;
- case 38:
-#line 630 "/Users/chet/src/bash/src/parse.y"
+ case 39: /* redirection: REDIR_WORD GREATER_AND NUMBER */
+#line 652 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
}
-#line 2318 "y.tab.c"
+#line 2349 "y.tab.c"
break;
- case 39:
-#line 636 "/Users/chet/src/bash/src/parse.y"
+ case 40: /* redirection: LESS_AND WORD */
+#line 658 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
}
-#line 2328 "y.tab.c"
+#line 2359 "y.tab.c"
break;
- case 40:
-#line 642 "/Users/chet/src/bash/src/parse.y"
+ case 41: /* redirection: NUMBER LESS_AND WORD */
+#line 664 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
}
-#line 2338 "y.tab.c"
+#line 2369 "y.tab.c"
break;
- case 41:
-#line 648 "/Users/chet/src/bash/src/parse.y"
+ case 42: /* redirection: REDIR_WORD LESS_AND WORD */
+#line 670 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
}
-#line 2348 "y.tab.c"
+#line 2379 "y.tab.c"
break;
- case 42:
-#line 654 "/Users/chet/src/bash/src/parse.y"
+ case 43: /* redirection: GREATER_AND WORD */
+#line 676 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
}
-#line 2358 "y.tab.c"
+#line 2389 "y.tab.c"
break;
- case 43:
-#line 660 "/Users/chet/src/bash/src/parse.y"
+ case 44: /* redirection: NUMBER GREATER_AND WORD */
+#line 682 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
}
-#line 2368 "y.tab.c"
+#line 2399 "y.tab.c"
break;
- case 44:
-#line 666 "/Users/chet/src/bash/src/parse.y"
+ case 45: /* redirection: REDIR_WORD GREATER_AND WORD */
+#line 688 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
}
-#line 2378 "y.tab.c"
+#line 2409 "y.tab.c"
break;
- case 45:
-#line 672 "/Users/chet/src/bash/src/parse.y"
+ case 46: /* redirection: GREATER_AND '-' */
+#line 694 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
-#line 2388 "y.tab.c"
+#line 2419 "y.tab.c"
break;
- case 46:
-#line 678 "/Users/chet/src/bash/src/parse.y"
+ case 47: /* redirection: NUMBER GREATER_AND '-' */
+#line 700 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
-#line 2398 "y.tab.c"
+#line 2429 "y.tab.c"
break;
- case 47:
-#line 684 "/Users/chet/src/bash/src/parse.y"
+ case 48: /* redirection: REDIR_WORD GREATER_AND '-' */
+#line 706 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
}
-#line 2408 "y.tab.c"
+#line 2439 "y.tab.c"
break;
- case 48:
-#line 690 "/Users/chet/src/bash/src/parse.y"
+ case 49: /* redirection: LESS_AND '-' */
+#line 712 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 0;
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
-#line 2418 "y.tab.c"
+#line 2449 "y.tab.c"
break;
- case 49:
-#line 696 "/Users/chet/src/bash/src/parse.y"
+ case 50: /* redirection: NUMBER LESS_AND '-' */
+#line 718 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = (yyvsp[-2].number);
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
-#line 2428 "y.tab.c"
+#line 2459 "y.tab.c"
break;
- case 50:
-#line 702 "/Users/chet/src/bash/src/parse.y"
+ case 51: /* redirection: REDIR_WORD LESS_AND '-' */
+#line 724 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.filename = (yyvsp[-2].word);
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
}
-#line 2438 "y.tab.c"
+#line 2469 "y.tab.c"
break;
- case 51:
-#line 708 "/Users/chet/src/bash/src/parse.y"
+ case 52: /* redirection: AND_GREATER WORD */
+#line 730 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
}
-#line 2448 "y.tab.c"
+#line 2479 "y.tab.c"
break;
- case 52:
-#line 714 "/Users/chet/src/bash/src/parse.y"
+ case 53: /* redirection: AND_GREATER_GREATER WORD */
+#line 736 "/usr/local/src/chet/src/bash/src/parse.y"
{
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
}
-#line 2458 "y.tab.c"
+#line 2489 "y.tab.c"
break;
- case 53:
-#line 722 "/Users/chet/src/bash/src/parse.y"
+ case 54: /* simple_command_element: WORD */
+#line 744 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2464 "y.tab.c"
+#line 2495 "y.tab.c"
break;
- case 54:
-#line 724 "/Users/chet/src/bash/src/parse.y"
+ case 55: /* simple_command_element: ASSIGNMENT_WORD */
+#line 746 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2470 "y.tab.c"
+#line 2501 "y.tab.c"
break;
- case 55:
-#line 726 "/Users/chet/src/bash/src/parse.y"
+ case 56: /* simple_command_element: redirection */
+#line 748 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
-#line 2476 "y.tab.c"
+#line 2507 "y.tab.c"
break;
- case 56:
-#line 730 "/Users/chet/src/bash/src/parse.y"
+ case 57: /* redirection_list: redirection */
+#line 752 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.redirect) = (yyvsp[0].redirect);
}
-#line 2484 "y.tab.c"
+#line 2515 "y.tab.c"
break;
- case 57:
-#line 734 "/Users/chet/src/bash/src/parse.y"
+ case 58: /* redirection_list: redirection_list redirection */
+#line 756 "/usr/local/src/chet/src/bash/src/parse.y"
{
register REDIRECT *t;
@@ -2493,35 +2524,35 @@ yyreduce:
t->next = (yyvsp[0].redirect);
(yyval.redirect) = (yyvsp[-1].redirect);
}
-#line 2497 "y.tab.c"
+#line 2528 "y.tab.c"
break;
- case 58:
-#line 745 "/Users/chet/src/bash/src/parse.y"
+ case 59: /* simple_command: simple_command_element */
+#line 767 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
-#line 2503 "y.tab.c"
+#line 2534 "y.tab.c"
break;
- case 59:
-#line 747 "/Users/chet/src/bash/src/parse.y"
+ case 60: /* simple_command: simple_command simple_command_element */
+#line 769 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
-#line 2509 "y.tab.c"
+#line 2540 "y.tab.c"
break;
- case 60:
-#line 751 "/Users/chet/src/bash/src/parse.y"
+ case 61: /* command: simple_command */
+#line 773 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
-#line 2515 "y.tab.c"
+#line 2546 "y.tab.c"
break;
- case 61:
-#line 753 "/Users/chet/src/bash/src/parse.y"
+ case 62: /* command: shell_command */
+#line 775 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2521 "y.tab.c"
+#line 2552 "y.tab.c"
break;
- case 62:
-#line 755 "/Users/chet/src/bash/src/parse.y"
+ case 63: /* command: shell_command redirection_list */
+#line 777 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
@@ -2537,330 +2568,330 @@ yyreduce:
tc->redirects = (yyvsp[0].redirect);
(yyval.command) = (yyvsp[-1].command);
}
-#line 2541 "y.tab.c"
+#line 2572 "y.tab.c"
break;
- case 63:
-#line 771 "/Users/chet/src/bash/src/parse.y"
+ case 64: /* command: function_def */
+#line 793 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2547 "y.tab.c"
+#line 2578 "y.tab.c"
break;
- case 64:
-#line 773 "/Users/chet/src/bash/src/parse.y"
+ case 65: /* command: coproc */
+#line 795 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2553 "y.tab.c"
+#line 2584 "y.tab.c"
break;
- case 65:
-#line 777 "/Users/chet/src/bash/src/parse.y"
+ case 66: /* shell_command: for_command */
+#line 799 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2559 "y.tab.c"
+#line 2590 "y.tab.c"
break;
- case 66:
-#line 779 "/Users/chet/src/bash/src/parse.y"
+ case 67: /* shell_command: case_command */
+#line 801 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2565 "y.tab.c"
+#line 2596 "y.tab.c"
break;
- case 67:
-#line 781 "/Users/chet/src/bash/src/parse.y"
+ case 68: /* shell_command: WHILE compound_list DO compound_list DONE */
+#line 803 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2571 "y.tab.c"
+#line 2602 "y.tab.c"
break;
- case 68:
-#line 783 "/Users/chet/src/bash/src/parse.y"
+ case 69: /* shell_command: UNTIL compound_list DO compound_list DONE */
+#line 805 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2577 "y.tab.c"
+#line 2608 "y.tab.c"
break;
- case 69:
-#line 785 "/Users/chet/src/bash/src/parse.y"
+ case 70: /* shell_command: select_command */
+#line 807 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2583 "y.tab.c"
+#line 2614 "y.tab.c"
break;
- case 70:
-#line 787 "/Users/chet/src/bash/src/parse.y"
+ case 71: /* shell_command: if_command */
+#line 809 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2589 "y.tab.c"
+#line 2620 "y.tab.c"
break;
- case 71:
-#line 789 "/Users/chet/src/bash/src/parse.y"
+ case 72: /* shell_command: subshell */
+#line 811 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2595 "y.tab.c"
+#line 2626 "y.tab.c"
break;
- case 72:
-#line 791 "/Users/chet/src/bash/src/parse.y"
+ case 73: /* shell_command: group_command */
+#line 813 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2601 "y.tab.c"
+#line 2632 "y.tab.c"
break;
- case 73:
-#line 793 "/Users/chet/src/bash/src/parse.y"
+ case 74: /* shell_command: arith_command */
+#line 815 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2607 "y.tab.c"
+#line 2638 "y.tab.c"
break;
- case 74:
-#line 795 "/Users/chet/src/bash/src/parse.y"
+ case 75: /* shell_command: cond_command */
+#line 817 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2613 "y.tab.c"
+#line 2644 "y.tab.c"
break;
- case 75:
-#line 797 "/Users/chet/src/bash/src/parse.y"
+ case 76: /* shell_command: arith_for_command */
+#line 819 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2619 "y.tab.c"
+#line 2650 "y.tab.c"
break;
- case 76:
-#line 801 "/Users/chet/src/bash/src/parse.y"
+ case 77: /* for_command: FOR WORD newline_list DO compound_list DONE */
+#line 823 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2628 "y.tab.c"
+#line 2659 "y.tab.c"
break;
- case 77:
-#line 806 "/Users/chet/src/bash/src/parse.y"
+ case 78: /* for_command: FOR WORD newline_list '{' compound_list '}' */
+#line 828 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2637 "y.tab.c"
+#line 2668 "y.tab.c"
break;
- case 78:
-#line 811 "/Users/chet/src/bash/src/parse.y"
+ case 79: /* for_command: FOR WORD ';' newline_list DO compound_list DONE */
+#line 833 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2646 "y.tab.c"
+#line 2677 "y.tab.c"
break;
- case 79:
-#line 816 "/Users/chet/src/bash/src/parse.y"
+ case 80: /* for_command: FOR WORD ';' newline_list '{' compound_list '}' */
+#line 838 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2655 "y.tab.c"
+#line 2686 "y.tab.c"
break;
- case 80:
-#line 821 "/Users/chet/src/bash/src/parse.y"
+ case 81: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
+#line 843 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2664 "y.tab.c"
+#line 2695 "y.tab.c"
break;
- case 81:
-#line 826 "/Users/chet/src/bash/src/parse.y"
+ case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
+#line 848 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2673 "y.tab.c"
+#line 2704 "y.tab.c"
break;
- case 82:
-#line 831 "/Users/chet/src/bash/src/parse.y"
+ case 83: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE */
+#line 853 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2682 "y.tab.c"
+#line 2713 "y.tab.c"
break;
- case 83:
-#line 836 "/Users/chet/src/bash/src/parse.y"
+ case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
+#line 858 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2691 "y.tab.c"
+#line 2722 "y.tab.c"
break;
- case 84:
-#line 843 "/Users/chet/src/bash/src/parse.y"
+ case 85: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE */
+#line 865 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
if ((yyval.command) == 0) YYERROR;
if (word_top > 0) word_top--;
}
-#line 2701 "y.tab.c"
+#line 2732 "y.tab.c"
break;
- case 85:
-#line 849 "/Users/chet/src/bash/src/parse.y"
+ case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}' */
+#line 871 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
if ((yyval.command) == 0) YYERROR;
if (word_top > 0) word_top--;
}
-#line 2711 "y.tab.c"
+#line 2742 "y.tab.c"
break;
- case 86:
-#line 855 "/Users/chet/src/bash/src/parse.y"
+ case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE */
+#line 877 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
if ((yyval.command) == 0) YYERROR;
if (word_top > 0) word_top--;
}
-#line 2721 "y.tab.c"
+#line 2752 "y.tab.c"
break;
- case 87:
-#line 861 "/Users/chet/src/bash/src/parse.y"
+ case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}' */
+#line 883 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
if ((yyval.command) == 0) YYERROR;
if (word_top > 0) word_top--;
}
-#line 2731 "y.tab.c"
+#line 2762 "y.tab.c"
break;
- case 88:
-#line 869 "/Users/chet/src/bash/src/parse.y"
+ case 89: /* select_command: SELECT WORD newline_list DO compound_list DONE */
+#line 891 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2740 "y.tab.c"
+#line 2771 "y.tab.c"
break;
- case 89:
-#line 874 "/Users/chet/src/bash/src/parse.y"
+ case 90: /* select_command: SELECT WORD newline_list '{' compound_list '}' */
+#line 896 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2749 "y.tab.c"
+#line 2780 "y.tab.c"
break;
- case 90:
-#line 879 "/Users/chet/src/bash/src/parse.y"
+ case 91: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE */
+#line 901 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2758 "y.tab.c"
+#line 2789 "y.tab.c"
break;
- case 91:
-#line 884 "/Users/chet/src/bash/src/parse.y"
+ case 92: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}' */
+#line 906 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2767 "y.tab.c"
+#line 2798 "y.tab.c"
break;
- case 92:
-#line 889 "/Users/chet/src/bash/src/parse.y"
+ case 93: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE */
+#line 911 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2776 "y.tab.c"
+#line 2807 "y.tab.c"
break;
- case 93:
-#line 894 "/Users/chet/src/bash/src/parse.y"
+ case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}' */
+#line 916 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2785 "y.tab.c"
+#line 2816 "y.tab.c"
break;
- case 94:
-#line 899 "/Users/chet/src/bash/src/parse.y"
+ case 95: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE */
+#line 921 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2794 "y.tab.c"
+#line 2825 "y.tab.c"
break;
- case 95:
-#line 904 "/Users/chet/src/bash/src/parse.y"
+ case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}' */
+#line 926 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2803 "y.tab.c"
+#line 2834 "y.tab.c"
break;
- case 96:
-#line 911 "/Users/chet/src/bash/src/parse.y"
+ case 97: /* case_command: CASE WORD newline_list IN newline_list ESAC */
+#line 933 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2812 "y.tab.c"
+#line 2843 "y.tab.c"
break;
- case 97:
-#line 916 "/Users/chet/src/bash/src/parse.y"
+ case 98: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC */
+#line 938 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2821 "y.tab.c"
+#line 2852 "y.tab.c"
break;
- case 98:
-#line 921 "/Users/chet/src/bash/src/parse.y"
+ case 99: /* case_command: CASE WORD newline_list IN case_clause ESAC */
+#line 943 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2830 "y.tab.c"
+#line 2861 "y.tab.c"
break;
- case 99:
-#line 928 "/Users/chet/src/bash/src/parse.y"
+ case 100: /* function_def: WORD '(' ')' newline_list function_body */
+#line 950 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2836 "y.tab.c"
+#line 2867 "y.tab.c"
break;
- case 100:
-#line 930 "/Users/chet/src/bash/src/parse.y"
+ case 101: /* function_def: FUNCTION WORD '(' ')' newline_list function_body */
+#line 952 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2842 "y.tab.c"
+#line 2873 "y.tab.c"
break;
- case 101:
-#line 932 "/Users/chet/src/bash/src/parse.y"
+ case 102: /* function_def: FUNCTION WORD function_body */
+#line 954 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2848 "y.tab.c"
+#line 2879 "y.tab.c"
break;
- case 102:
-#line 934 "/Users/chet/src/bash/src/parse.y"
+ case 103: /* function_def: FUNCTION WORD '\n' newline_list function_body */
+#line 956 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2854 "y.tab.c"
+#line 2885 "y.tab.c"
break;
- case 103:
-#line 938 "/Users/chet/src/bash/src/parse.y"
+ case 104: /* function_body: shell_command */
+#line 960 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 2860 "y.tab.c"
+#line 2891 "y.tab.c"
break;
- case 104:
-#line 940 "/Users/chet/src/bash/src/parse.y"
+ case 105: /* function_body: shell_command redirection_list */
+#line 962 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
@@ -2889,29 +2920,45 @@ yyreduce:
tc->redirects = (yyvsp[0].redirect);
(yyval.command) = (yyvsp[-1].command);
}
-#line 2893 "y.tab.c"
+#line 2924 "y.tab.c"
break;
- case 105:
-#line 971 "/Users/chet/src/bash/src/parse.y"
+ case 106: /* subshell: '(' compound_list ')' */
+#line 993 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_subshell_command ((yyvsp[-1].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL;
}
-#line 2902 "y.tab.c"
+#line 2933 "y.tab.c"
+ break;
+
+ case 107: /* comsub: DOLPAREN compound_list ')' */
+#line 1000 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (yyvsp[-1].command);
+ }
+#line 2941 "y.tab.c"
+ break;
+
+ case 108: /* comsub: DOLPAREN newline_list ')' */
+#line 1004 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ (yyval.command) = (COMMAND *)NULL;
+ }
+#line 2949 "y.tab.c"
break;
- case 106:
-#line 978 "/Users/chet/src/bash/src/parse.y"
+ case 109: /* coproc: COPROC shell_command */
+#line 1010 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2911 "y.tab.c"
+#line 2958 "y.tab.c"
break;
- case 107:
-#line 983 "/Users/chet/src/bash/src/parse.y"
+ case 110: /* coproc: COPROC shell_command redirection_list */
+#line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
@@ -2928,20 +2975,20 @@ yyreduce:
(yyval.command) = make_coproc_command ("COPROC", (yyvsp[-1].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2932 "y.tab.c"
+#line 2979 "y.tab.c"
break;
- case 108:
-#line 1000 "/Users/chet/src/bash/src/parse.y"
+ case 111: /* coproc: COPROC WORD shell_command */
+#line 1032 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2941 "y.tab.c"
+#line 2988 "y.tab.c"
break;
- case 109:
-#line 1005 "/Users/chet/src/bash/src/parse.y"
+ case 112: /* coproc: COPROC WORD shell_command redirection_list */
+#line 1037 "/usr/local/src/chet/src/bash/src/parse.y"
{
COMMAND *tc;
@@ -2958,355 +3005,366 @@ yyreduce:
(yyval.command) = make_coproc_command ((yyvsp[-2].word)->word, (yyvsp[-1].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2962 "y.tab.c"
+#line 3009 "y.tab.c"
break;
- case 110:
-#line 1022 "/Users/chet/src/bash/src/parse.y"
+ case 113: /* coproc: COPROC simple_command */
+#line 1054 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2971 "y.tab.c"
+#line 3018 "y.tab.c"
break;
- case 111:
-#line 1029 "/Users/chet/src/bash/src/parse.y"
+ case 114: /* if_command: IF compound_list THEN compound_list FI */
+#line 1061 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
-#line 2977 "y.tab.c"
+#line 3024 "y.tab.c"
break;
- case 112:
-#line 1031 "/Users/chet/src/bash/src/parse.y"
+ case 115: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI */
+#line 1063 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2983 "y.tab.c"
+#line 3030 "y.tab.c"
break;
- case 113:
-#line 1033 "/Users/chet/src/bash/src/parse.y"
+ case 116: /* if_command: IF compound_list THEN compound_list elif_clause FI */
+#line 1065 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
-#line 2989 "y.tab.c"
+#line 3036 "y.tab.c"
break;
- case 114:
-#line 1038 "/Users/chet/src/bash/src/parse.y"
+ case 117: /* group_command: '{' compound_list '}' */
+#line 1070 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_group_command ((yyvsp[-1].command)); }
-#line 2995 "y.tab.c"
+#line 3042 "y.tab.c"
break;
- case 115:
-#line 1042 "/Users/chet/src/bash/src/parse.y"
+ case 118: /* arith_command: ARITH_CMD */
+#line 1074 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
-#line 3001 "y.tab.c"
+#line 3048 "y.tab.c"
break;
- case 116:
-#line 1046 "/Users/chet/src/bash/src/parse.y"
+ case 119: /* cond_command: COND_START COND_CMD COND_END */
+#line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[-1].command); }
-#line 3007 "y.tab.c"
+#line 3054 "y.tab.c"
break;
- case 117:
-#line 1050 "/Users/chet/src/bash/src/parse.y"
+ case 120: /* elif_clause: ELIF compound_list THEN compound_list */
+#line 1082 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
-#line 3013 "y.tab.c"
+#line 3060 "y.tab.c"
break;
- case 118:
-#line 1052 "/Users/chet/src/bash/src/parse.y"
+ case 121: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list */
+#line 1084 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
-#line 3019 "y.tab.c"
+#line 3066 "y.tab.c"
break;
- case 119:
-#line 1054 "/Users/chet/src/bash/src/parse.y"
+ case 122: /* elif_clause: ELIF compound_list THEN compound_list elif_clause */
+#line 1086 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
-#line 3025 "y.tab.c"
+#line 3072 "y.tab.c"
break;
- case 121:
-#line 1059 "/Users/chet/src/bash/src/parse.y"
+ case 124: /* case_clause: case_clause_sequence pattern_list */
+#line 1091 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
-#line 3031 "y.tab.c"
+#line 3078 "y.tab.c"
break;
- case 122:
-#line 1063 "/Users/chet/src/bash/src/parse.y"
+ case 125: /* pattern_list: newline_list pattern ')' compound_list */
+#line 1095 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 3037 "y.tab.c"
+#line 3084 "y.tab.c"
break;
- case 123:
-#line 1065 "/Users/chet/src/bash/src/parse.y"
+ case 126: /* pattern_list: newline_list pattern ')' newline_list */
+#line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 3043 "y.tab.c"
+#line 3090 "y.tab.c"
break;
- case 124:
-#line 1067 "/Users/chet/src/bash/src/parse.y"
+ case 127: /* pattern_list: newline_list '(' pattern ')' compound_list */
+#line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 3049 "y.tab.c"
+#line 3096 "y.tab.c"
break;
- case 125:
-#line 1069 "/Users/chet/src/bash/src/parse.y"
+ case 128: /* pattern_list: newline_list '(' pattern ')' newline_list */
+#line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 3055 "y.tab.c"
+#line 3102 "y.tab.c"
break;
- case 126:
-#line 1073 "/Users/chet/src/bash/src/parse.y"
+ case 129: /* case_clause_sequence: pattern_list SEMI_SEMI */
+#line 1105 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3061 "y.tab.c"
+#line 3108 "y.tab.c"
break;
- case 127:
-#line 1075 "/Users/chet/src/bash/src/parse.y"
+ case 130: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI */
+#line 1107 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3067 "y.tab.c"
+#line 3114 "y.tab.c"
break;
- case 128:
-#line 1077 "/Users/chet/src/bash/src/parse.y"
+ case 131: /* case_clause_sequence: pattern_list SEMI_AND */
+#line 1109 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3073 "y.tab.c"
+#line 3120 "y.tab.c"
break;
- case 129:
-#line 1079 "/Users/chet/src/bash/src/parse.y"
+ case 132: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND */
+#line 1111 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3079 "y.tab.c"
+#line 3126 "y.tab.c"
break;
- case 130:
-#line 1081 "/Users/chet/src/bash/src/parse.y"
+ case 133: /* case_clause_sequence: pattern_list SEMI_SEMI_AND */
+#line 1113 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3085 "y.tab.c"
+#line 3132 "y.tab.c"
break;
- case 131:
-#line 1083 "/Users/chet/src/bash/src/parse.y"
+ case 134: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND */
+#line 1115 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3091 "y.tab.c"
+#line 3138 "y.tab.c"
break;
- case 132:
-#line 1087 "/Users/chet/src/bash/src/parse.y"
+ case 135: /* pattern: WORD */
+#line 1119 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 3097 "y.tab.c"
+#line 3144 "y.tab.c"
break;
- case 133:
-#line 1089 "/Users/chet/src/bash/src/parse.y"
+ case 136: /* pattern: pattern '|' WORD */
+#line 1121 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
-#line 3103 "y.tab.c"
+#line 3150 "y.tab.c"
break;
- case 134:
-#line 1098 "/Users/chet/src/bash/src/parse.y"
+ case 137: /* compound_list: newline_list list0 */
+#line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[0].command);
- if (need_here_doc)
+ if (need_here_doc && last_read_token == '\n')
gather_here_documents ();
}
-#line 3113 "y.tab.c"
+#line 3160 "y.tab.c"
break;
- case 136:
-#line 1107 "/Users/chet/src/bash/src/parse.y"
+ case 138: /* compound_list: newline_list list1 */
+#line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[0].command);
}
-#line 3121 "y.tab.c"
+#line 3168 "y.tab.c"
break;
- case 138:
-#line 1114 "/Users/chet/src/bash/src/parse.y"
+ case 140: /* list0: list1 '&' newline_list */
+#line 1143 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-2].command)->type == cm_connection)
(yyval.command) = connect_async_list ((yyvsp[-2].command), (COMMAND *)NULL, '&');
else
(yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
}
-#line 3132 "y.tab.c"
+#line 3179 "y.tab.c"
break;
- case 140:
-#line 1125 "/Users/chet/src/bash/src/parse.y"
+ case 142: /* list1: list1 AND_AND newline_list list1 */
+#line 1154 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3138 "y.tab.c"
+#line 3185 "y.tab.c"
break;
- case 141:
-#line 1127 "/Users/chet/src/bash/src/parse.y"
+ case 143: /* list1: list1 OR_OR newline_list list1 */
+#line 1156 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3144 "y.tab.c"
+#line 3191 "y.tab.c"
break;
- case 142:
-#line 1129 "/Users/chet/src/bash/src/parse.y"
+ case 144: /* list1: list1 '&' newline_list list1 */
+#line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-3].command)->type == cm_connection)
(yyval.command) = connect_async_list ((yyvsp[-3].command), (yyvsp[0].command), '&');
else
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
}
-#line 3155 "y.tab.c"
+#line 3202 "y.tab.c"
break;
- case 143:
-#line 1136 "/Users/chet/src/bash/src/parse.y"
+ case 145: /* list1: list1 ';' newline_list list1 */
+#line 1165 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-#line 3161 "y.tab.c"
+#line 3208 "y.tab.c"
break;
- case 144:
-#line 1138 "/Users/chet/src/bash/src/parse.y"
- { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-#line 3167 "y.tab.c"
+ case 146: /* list1: list1 '\n' newline_list list1 */
+#line 1167 "/usr/local/src/chet/src/bash/src/parse.y"
+ {
+ if (parser_state & PST_CMDSUBST)
+ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '\n');
+ else
+ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
+ }
+#line 3219 "y.tab.c"
break;
- case 145:
-#line 1140 "/Users/chet/src/bash/src/parse.y"
+ case 147: /* list1: pipeline_command */
+#line 1174 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 3173 "y.tab.c"
+#line 3225 "y.tab.c"
break;
- case 148:
-#line 1148 "/Users/chet/src/bash/src/parse.y"
+ case 150: /* list_terminator: '\n' */
+#line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = '\n'; }
-#line 3179 "y.tab.c"
+#line 3231 "y.tab.c"
break;
- case 149:
-#line 1150 "/Users/chet/src/bash/src/parse.y"
+ case 151: /* list_terminator: ';' */
+#line 1184 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = ';'; }
-#line 3185 "y.tab.c"
+#line 3237 "y.tab.c"
break;
- case 150:
-#line 1152 "/Users/chet/src/bash/src/parse.y"
+ case 152: /* list_terminator: yacc_EOF */
+#line 1186 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = yacc_EOF; }
-#line 3191 "y.tab.c"
+#line 3243 "y.tab.c"
break;
- case 153:
-#line 1166 "/Users/chet/src/bash/src/parse.y"
+ case 155: /* simple_list: simple_list1 */
+#line 1200 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[0].command);
if (need_here_doc)
- gather_here_documents ();
+ gather_here_documents (); /* XXX */
if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token)
{
+INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 -> simple_list"));
global_command = (yyvsp[0].command);
eof_encountered = 0;
- rewind_input_string ();
+ if (bash_input.type == st_string)
+ rewind_input_string ();
YYACCEPT;
}
}
-#line 3208 "y.tab.c"
+#line 3262 "y.tab.c"
break;
- case 154:
-#line 1179 "/Users/chet/src/bash/src/parse.y"
+ case 156: /* simple_list: simple_list1 '&' */
+#line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-1].command)->type == cm_connection)
(yyval.command) = connect_async_list ((yyvsp[-1].command), (COMMAND *)NULL, '&');
else
(yyval.command) = command_connect ((yyvsp[-1].command), (COMMAND *)NULL, '&');
if (need_here_doc)
- gather_here_documents ();
+ gather_here_documents (); /* XXX */
if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token)
{
+INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 '&' -> simple_list"));
global_command = (yyvsp[-1].command);
eof_encountered = 0;
- rewind_input_string ();
+ if (bash_input.type == st_string)
+ rewind_input_string ();
YYACCEPT;
}
}
-#line 3228 "y.tab.c"
+#line 3284 "y.tab.c"
break;
- case 155:
-#line 1195 "/Users/chet/src/bash/src/parse.y"
+ case 157: /* simple_list: simple_list1 ';' */
+#line 1233 "/usr/local/src/chet/src/bash/src/parse.y"
{
(yyval.command) = (yyvsp[-1].command);
if (need_here_doc)
- gather_here_documents ();
+ gather_here_documents (); /* XXX */
if ((parser_state & PST_CMDSUBST) && current_token == shell_eof_token)
{
+INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 ';' -> simple_list"));
global_command = (yyvsp[-1].command);
eof_encountered = 0;
- rewind_input_string ();
+ if (bash_input.type == st_string)
+ rewind_input_string ();
YYACCEPT;
}
}
-#line 3245 "y.tab.c"
+#line 3303 "y.tab.c"
break;
- case 156:
-#line 1210 "/Users/chet/src/bash/src/parse.y"
+ case 158: /* simple_list1: simple_list1 AND_AND newline_list simple_list1 */
+#line 1250 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3251 "y.tab.c"
+#line 3309 "y.tab.c"
break;
- case 157:
-#line 1212 "/Users/chet/src/bash/src/parse.y"
+ case 159: /* simple_list1: simple_list1 OR_OR newline_list simple_list1 */
+#line 1252 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3257 "y.tab.c"
+#line 3315 "y.tab.c"
break;
- case 158:
-#line 1214 "/Users/chet/src/bash/src/parse.y"
+ case 160: /* simple_list1: simple_list1 '&' simple_list1 */
+#line 1254 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[-2].command)->type == cm_connection)
(yyval.command) = connect_async_list ((yyvsp[-2].command), (yyvsp[0].command), '&');
else
(yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
}
-#line 3268 "y.tab.c"
+#line 3326 "y.tab.c"
break;
- case 159:
-#line 1221 "/Users/chet/src/bash/src/parse.y"
+ case 161: /* simple_list1: simple_list1 ';' simple_list1 */
+#line 1261 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
-#line 3274 "y.tab.c"
+#line 3332 "y.tab.c"
break;
- case 160:
-#line 1224 "/Users/chet/src/bash/src/parse.y"
+ case 162: /* simple_list1: pipeline_command */
+#line 1264 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 3280 "y.tab.c"
+#line 3338 "y.tab.c"
break;
- case 161:
-#line 1228 "/Users/chet/src/bash/src/parse.y"
+ case 163: /* pipeline_command: pipeline */
+#line 1268 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 3286 "y.tab.c"
+#line 3344 "y.tab.c"
break;
- case 162:
-#line 1230 "/Users/chet/src/bash/src/parse.y"
+ case 164: /* pipeline_command: BANG pipeline_command */
+#line 1270 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[0].command))
(yyvsp[0].command)->flags ^= CMD_INVERT_RETURN; /* toggle */
(yyval.command) = (yyvsp[0].command);
}
-#line 3296 "y.tab.c"
+#line 3354 "y.tab.c"
break;
- case 163:
-#line 1236 "/Users/chet/src/bash/src/parse.y"
+ case 165: /* pipeline_command: timespec pipeline_command */
+#line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
{
if ((yyvsp[0].command))
(yyvsp[0].command)->flags |= (yyvsp[-1].number);
(yyval.command) = (yyvsp[0].command);
}
-#line 3306 "y.tab.c"
+#line 3364 "y.tab.c"
break;
- case 164:
-#line 1242 "/Users/chet/src/bash/src/parse.y"
+ case 166: /* pipeline_command: timespec list_terminator */
+#line 1282 "/usr/local/src/chet/src/bash/src/parse.y"
{
ELEMENT x;
@@ -3326,11 +3384,11 @@ yyreduce:
token_to_read = ';';
parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
}
-#line 3330 "y.tab.c"
+#line 3388 "y.tab.c"
break;
- case 165:
-#line 1262 "/Users/chet/src/bash/src/parse.y"
+ case 167: /* pipeline_command: BANG list_terminator */
+#line 1302 "/usr/local/src/chet/src/bash/src/parse.y"
{
ELEMENT x;
@@ -3351,17 +3409,17 @@ yyreduce:
token_to_read = ';';
parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
}
-#line 3355 "y.tab.c"
+#line 3413 "y.tab.c"
break;
- case 166:
-#line 1285 "/Users/chet/src/bash/src/parse.y"
+ case 168: /* pipeline: pipeline '|' newline_list pipeline */
+#line 1325 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
-#line 3361 "y.tab.c"
+#line 3419 "y.tab.c"
break;
- case 167:
-#line 1287 "/Users/chet/src/bash/src/parse.y"
+ case 169: /* pipeline: pipeline BAR_AND newline_list pipeline */
+#line 1327 "/usr/local/src/chet/src/bash/src/parse.y"
{
/* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
COMMAND *tc;
@@ -3384,41 +3442,41 @@ yyreduce:
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
}
-#line 3388 "y.tab.c"
+#line 3446 "y.tab.c"
break;
- case 168:
-#line 1310 "/Users/chet/src/bash/src/parse.y"
+ case 170: /* pipeline: command */
+#line 1350 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.command) = (yyvsp[0].command); }
-#line 3394 "y.tab.c"
+#line 3452 "y.tab.c"
break;
- case 169:
-#line 1314 "/Users/chet/src/bash/src/parse.y"
+ case 171: /* timespec: TIME */
+#line 1354 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE; }
-#line 3400 "y.tab.c"
+#line 3458 "y.tab.c"
break;
- case 170:
-#line 1316 "/Users/chet/src/bash/src/parse.y"
+ case 172: /* timespec: TIME TIMEOPT */
+#line 1356 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3406 "y.tab.c"
+#line 3464 "y.tab.c"
break;
- case 171:
-#line 1318 "/Users/chet/src/bash/src/parse.y"
+ case 173: /* timespec: TIME TIMEIGN */
+#line 1358 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3412 "y.tab.c"
+#line 3470 "y.tab.c"
break;
- case 172:
-#line 1320 "/Users/chet/src/bash/src/parse.y"
+ case 174: /* timespec: TIME TIMEOPT TIMEIGN */
+#line 1360 "/usr/local/src/chet/src/bash/src/parse.y"
{ (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3418 "y.tab.c"
+#line 3476 "y.tab.c"
break;
-#line 3422 "y.tab.c"
+#line 3480 "y.tab.c"
default: break;
}
@@ -3500,6 +3558,7 @@ yyerrorlab:
label yyerrorlab therefore never appears in user code. */
if (0)
YYERROR;
+ ++yynerrs;
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
@@ -3560,7 +3619,7 @@ yyerrlab1:
`-------------------------------------*/
yyacceptlab:
yyresult = 0;
- goto yyreturn;
+ goto yyreturnlab;
/*-----------------------------------.
@@ -3568,24 +3627,22 @@ yyacceptlab:
`-----------------------------------*/
yyabortlab:
yyresult = 1;
- goto yyreturn;
+ goto yyreturnlab;
-#if !defined yyoverflow
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here. |
-`-------------------------------------------------*/
+/*-----------------------------------------------------------.
+| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
+`-----------------------------------------------------------*/
yyexhaustedlab:
yyerror (YY_("memory exhausted"));
yyresult = 2;
- /* Fall through. */
-#endif
+ goto yyreturnlab;
-/*-----------------------------------------------------.
-| yyreturn -- parsing is finished, return the result. |
-`-----------------------------------------------------*/
-yyreturn:
+/*----------------------------------------------------------.
+| yyreturnlab -- parsing is finished, clean up and return. |
+`----------------------------------------------------------*/
+yyreturnlab:
if (yychar != YYEMPTY)
{
/* Make sure we have latest lookahead translation. See comments at
@@ -3612,7 +3669,7 @@ yyreturn:
return yyresult;
}
-#line 1322 "/Users/chet/src/bash/src/parse.y"
+#line 1362 "/usr/local/src/chet/src/bash/src/parse.y"
/* Initial size to allocate for tokens, and the
@@ -3908,7 +3965,7 @@ with_input_from_string (string, name)
That is the true input location. Rewind bash_input.location.string by
that number of characters, so it points to the last character actually
consumed by the parser. */
-static void
+void
rewind_input_string ()
{
int xchars;
@@ -3920,7 +3977,7 @@ rewind_input_string ()
xchars++;
/* XXX - how to reflect bash_input.location.string back to string passed to
- parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how
+ parse_and_execute or xparse_dolparen? xparse_dolparen needs to know how
far into the string we parsed. parse_and_execute knows where bash_input.
location.string is, and how far from orig_string that is -- that's the
number of characters the command consumed. */
@@ -4117,8 +4174,6 @@ restore_token_state (ts)
* everything between a `;;' and the next `)' or `esac'
*/
-#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
-
#define END_OF_ALIAS 0
/*
@@ -4142,7 +4197,7 @@ typedef struct string_saver {
#if defined (ALIAS)
alias_t *expander; /* alias that caused this line to be pushed. */
#endif
- size_t saved_line_size, saved_line_index;
+ size_t saved_line_size, saved_line_index, saved_line_len;
int saved_line_terminator;
int flags;
} STRING_SAVER;
@@ -4168,6 +4223,7 @@ push_string (s, expand, ap)
temp->expand_alias = expand;
temp->saved_line = shell_input_line;
temp->saved_line_size = shell_input_line_size;
+ temp->saved_line_len = shell_input_line_len;
temp->saved_line_index = shell_input_line_index;
temp->saved_line_terminator = shell_input_line_terminator;
temp->flags = 0;
@@ -4185,7 +4241,7 @@ push_string (s, expand, ap)
#endif
shell_input_line = s;
- shell_input_line_size = STRLEN (s);
+ shell_input_line_size = shell_input_line_len = STRLEN (s);
shell_input_line_index = 0;
shell_input_line_terminator = '\0';
#if 0
@@ -4210,12 +4266,15 @@ pop_string ()
shell_input_line = pushed_string_list->saved_line;
shell_input_line_index = pushed_string_list->saved_line_index;
shell_input_line_size = pushed_string_list->saved_line_size;
+ shell_input_line_len = pushed_string_list->saved_line_len;
shell_input_line_terminator = pushed_string_list->saved_line_terminator;
+#if defined (ALIAS)
if (pushed_string_list->expand_alias)
parser_state |= PST_ALEXPNEXT;
else
parser_state &= ~PST_ALEXPNEXT;
+#endif
t = pushed_string_list;
pushed_string_list = pushed_string_list->next;
@@ -4249,8 +4308,6 @@ free_string_list ()
pushed_string_list = (STRING_SAVER *)NULL;
}
-#endif /* ALIAS || DPAREN_ARITHMETIC */
-
void
free_pushed_string_input ()
{
@@ -4340,12 +4397,7 @@ read_a_line (remove_quoted_newline)
/* Ignore null bytes in input. */
if (c == 0)
- {
-#if 0
- internal_warning ("read_a_line: ignored null byte in input");
-#endif
- continue;
- }
+ continue;
/* If there is no more input, then we return NULL. */
if (c == EOF)
@@ -4419,8 +4471,8 @@ read_secondary_line (remove_quoted_newline)
int n, c;
prompt_string_pointer = &ps2_prompt;
- if (SHOULD_PROMPT())
- prompt_again ();
+ if (SHOULD_PROMPT ())
+ prompt_again (0);
ret = read_a_line (remove_quoted_newline);
#if defined (HISTORY)
if (ret && remember_on_history && (parser_state & PST_HEREDOC))
@@ -4656,9 +4708,6 @@ shell_getc (remove_quoted_newline)
if (c == '\0')
{
-#if 0
- internal_warning ("shell_getc: ignored null byte in input");
-#endif
/* If we get EOS while parsing a string, treat it as EOF so we
don't just keep looping. Happens very rarely */
if (bash_input.type == st_string)
@@ -4805,7 +4854,7 @@ shell_getc (remove_quoted_newline)
shell_input_line_size = 0;
prompt_string_pointer = &current_prompt_string;
if (SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
goto restart_read;
}
@@ -4827,21 +4876,12 @@ shell_getc (remove_quoted_newline)
shell_input_line[shell_input_line_len] = '\n';
shell_input_line[shell_input_line_len + 1] = '\0';
-#if 0
- set_line_mbstate (); /* XXX - this is wasteful */
-#else
-# if defined (HANDLE_MULTIBYTE)
+#if defined (HANDLE_MULTIBYTE)
/* This is kind of an abstraction violation, but there's no need to
go through the entire shell_input_line again with a call to
set_line_mbstate(). */
- if (shell_input_line_len + 2 > shell_input_line_propsize)
- {
- shell_input_line_propsize = shell_input_line_len + 2;
- shell_input_line_property = (char *)xrealloc (shell_input_line_property,
- shell_input_line_propsize);
- }
+ EXTEND_SHELL_INPUT_LINE_PROPERTY();
shell_input_line_property[shell_input_line_len] = 1;
-# endif
#endif
}
}
@@ -4894,12 +4934,29 @@ next_alias_char:
(current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
{
parser_state |= PST_ENDALIAS;
+ /* We need to do this to make sure last_shell_getc_is_singlebyte returns
+ true, since we are returning a single-byte space. */
+ if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0)
+ {
+#if 0
+ EXTEND_SHELL_INPUT_LINE_PROPERTY();
+ shell_input_line_property[shell_input_line_len++] = 1;
+ /* extend shell_input_line to accommodate the shell_ungetc that
+ read_token_word() will perform, since we're extending the index */
+ RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, 2, shell_input_line_size, 16);
+ shell_input_line[++shell_input_line_index] = '\0'; /* XXX */
+#else
+ shell_input_line_property[shell_input_line_index - 1] = 1;
+#endif
+ }
return ' '; /* END_ALIAS */
}
#endif
pop_alias:
- /* This case works for PSH_DPAREN as well */
+#endif /* ALIAS || DPAREN_ARITHMETIC */
+ /* This case works for PSH_DPAREN as well as the shell_ungets() case that uses
+ push_string */
if (uc == 0 && pushed_string_list && pushed_string_list->flags != PSH_SOURCE)
{
parser_state &= ~PST_ENDALIAS;
@@ -4908,12 +4965,11 @@ pop_alias:
if (uc)
shell_input_line_index++;
}
-#endif /* ALIAS || DPAREN_ARITHMETIC */
if MBTEST(uc == '\\' && remove_quoted_newline && shell_input_line[shell_input_line_index] == '\n')
{
if (SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
line_number++;
/* What do we do here if we're expanding an alias whose definition
@@ -4981,6 +5037,60 @@ shell_ungetc (c)
eol_ungetc_lookahead = c;
}
+/* Push S back into shell_input_line; updating shell_input_line_index */
+void
+shell_ungets (s)
+ char *s;
+{
+ size_t slen, chars_left;
+
+ slen = strlen (s);
+
+ if (shell_input_line[shell_input_line_index] == '\0')
+ {
+ /* Easy, just overwrite shell_input_line. This is preferred because it
+ saves on set_line_mbstate () and other overhead like push_string */
+ if (shell_input_line_size <= slen)
+ RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, slen + 1, shell_input_line_size, 64);
+ strcpy (shell_input_line, s);
+ shell_input_line_index = 0;
+ shell_input_line_len = slen;
+ shell_input_line_terminator = 0;
+ }
+ else if (shell_input_line_index >= slen)
+ {
+ /* Just as easy, just back up shell_input_line_index, but it means we
+ will re-process some characters in set_line_mbstate(). Need to
+ watch pushing back newlines here. */
+ while (slen > 0)
+ shell_input_line[--shell_input_line_index] = s[--slen];
+ }
+ else if (s[slen - 1] == '\n')
+ {
+ push_string (savestring (s), 0, (alias_t *)NULL);
+ /* push_string does set_line_mbstate () */
+ return;
+ }
+ else
+ {
+ /* Harder case: pushing back input string that's longer than what we've
+ consumed from shell_input_line so far. */
+ INTERNAL_DEBUG (("shell_ungets: not at end of shell_input_line"));
+
+ chars_left = shell_input_line_len - shell_input_line_index;
+ if (shell_input_line_size <= (slen + chars_left))
+ RESIZE_MALLOCED_BUFFER (shell_input_line, shell_input_line_index, chars_left + slen + 1, shell_input_line_size, 64);
+ memmove (shell_input_line + slen, shell_input_line + shell_input_line_index, shell_input_line_len - shell_input_line_index);
+ strcpy (shell_input_line, s);
+ shell_input_line_index = 0;
+ shell_input_line_len = strlen (shell_input_line); /* chars_left + slen? */
+ }
+
+#if defined (HANDLE_MULTIBYTE)
+ set_line_mbstate (); /* XXX */
+#endif
+}
+
char *
parser_remaining_input ()
{
@@ -5054,7 +5164,7 @@ push_token (x)
static char *token = (char *)NULL;
/* Current size of the token buffer. */
-static int token_buffer_size;
+static size_t token_buffer_size;
/* Command to read_token () explaining what we want it to do. */
#define READ 0
@@ -5082,7 +5192,7 @@ yylex ()
/* Avoid printing a prompt if we're not going to read anything, e.g.
after resetting the parser with read_token (RESET). */
if (token_to_read == 0 && SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
}
two_tokens_ago = token_before_that;
@@ -5092,11 +5202,16 @@ yylex ()
if ((parser_state & PST_EOFTOKEN) && current_token == shell_eof_token)
{
- current_token = yacc_EOF;
- if (bash_input.type == st_string)
- rewind_input_string ();
+ /* placeholder for any special handling. */
+ return (current_token);
}
- parser_state &= ~PST_EOFTOKEN; /* ??? */
+
+ if (current_token < 0)
+#if defined (YYERRCODE) && !defined (YYUNDEF)
+ current_token = YYERRCODE;
+#else
+ current_token = YYerror;
+#endif
return (current_token);
}
@@ -5187,9 +5302,12 @@ static int open_brace_count;
break; \
if ((parser_state & PST_CASEPAT) && last_read_token == '|' && word_token_alist[i].token == ESAC) \
break; /* Posix grammar rule 4 */ \
- if (word_token_alist[i].token == ESAC) \
+ if ((parser_state & PST_CASEPAT) && last_read_token == '(' && word_token_alist[i].token == ESAC) /*)*/ \
+ break; /* phantom Posix grammar rule 4 */ \
+ if (word_token_alist[i].token == ESAC) { \
parser_state &= ~(PST_CASEPAT|PST_CASESTMT); \
- else if (word_token_alist[i].token == CASE) \
+ esacs_needed_count--; \
+ } else if (word_token_alist[i].token == CASE) \
parser_state |= PST_CASESTMT; \
else if (word_token_alist[i].token == COND_END) \
parser_state &= ~(PST_CONDCMD|PST_CONDEXPR); \
@@ -5249,8 +5367,12 @@ alias_expand_token (tokstr)
char *expanded;
alias_t *ap;
+#if 0
if (((parser_state & PST_ALEXPNEXT) || command_token_position (last_read_token)) &&
(parser_state & PST_CASEPAT) == 0)
+#else
+ if ((parser_state & PST_ALEXPNEXT) || assignment_acceptable (last_read_token))
+#endif
{
ap = find_alias (tokstr);
@@ -5492,7 +5614,7 @@ reset_parser ()
#if defined (EXTENDED_GLOB)
/* Reset to global value of extended glob */
- if (parser_state & PST_EXTPAT)
+ if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
extended_glob = global_extglob;
#endif
@@ -5517,6 +5639,11 @@ reset_parser ()
eol_ungetc_lookahead = 0;
+ /* added post-bash-5.1 */
+ need_here_doc = 0;
+ redir_stack[0] = 0;
+ esacs_needed_count = expecting_in_token = 0;
+
current_token = '\n'; /* XXX */
last_read_token = '\n';
token_to_read = '\n';
@@ -5594,9 +5721,7 @@ read_token (command)
we are eval'ing a string that is an incomplete command), return EOF */
if (character == '\0' && bash_input.type == st_string && expanding_alias() == 0)
{
-#if defined (DEBUG)
-itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.string);
-#endif
+ INTERNAL_DEBUG (("shell_getc: bash_input.location.string = `%s'", bash_input.location.string));
EOF_Reached = 1;
return (yacc_EOF);
}
@@ -5611,7 +5736,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri
character = '\n'; /* this will take the next if statement and return. */
}
- if (character == '\n')
+ if MBTEST(character == '\n')
{
/* If we're about to return an unquoted newline, we can go and collect
the text of any pending here document. */
@@ -5631,7 +5756,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri
goto tokword;
/* Shell meta-characters. */
- if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0))
+ if MBTEST(shellmeta (character))
{
#if defined (ALIAS)
/* Turn off alias tokenization iff this character sequence would
@@ -5652,7 +5777,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri
else
peek_char = shell_getc (1);
- if (character == peek_char)
+ if MBTEST(character == peek_char)
{
switch (character)
{
@@ -5811,6 +5936,9 @@ tokword:
#define LEX_QUOTEDDOC 0x0400 /* here doc with quoted delim */
#define LEX_INWORD 0x0800
#define LEX_GTLT 0x1000
+#define LEX_CKESAC 0x2000 /* check esac after in -- for later */
+#define LEX_CASEWD 0x4000 /* word after case */
+#define LEX_PATLIST 0x8000 /* case statement pattern list */
#define COMSUB_META(ch) ((ch) == ';' || (ch) == '&' || (ch) == '|')
@@ -5878,8 +6006,8 @@ parse_matched_pair (qc, open, close, lenp, flags)
}
/* Possible reprompting. */
- if (ch == '\n' && SHOULD_PROMPT ())
- prompt_again ();
+ if MBTEST(ch == '\n' && SHOULD_PROMPT ())
+ prompt_again (0);
/* Don't bother counting parens or doing anything else if in a comment
or part of a case statement */
@@ -5889,7 +6017,7 @@ parse_matched_pair (qc, open, close, lenp, flags)
RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
ret[retind++] = ch;
- if (ch == '\n')
+ if MBTEST(ch == '\n')
tflags &= ~LEX_INCOMMENT;
continue;
@@ -5904,7 +6032,8 @@ parse_matched_pair (qc, open, close, lenp, flags)
if (tflags & LEX_PASSNEXT) /* last char was backslash */
{
tflags &= ~LEX_PASSNEXT;
- if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
+ /* XXX - PST_NOEXPAND? */
+ if MBTEST(qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
{
if (retind > 0)
retind--; /* swallow previously-added backslash */
@@ -6013,9 +6142,10 @@ parse_matched_pair (qc, open, close, lenp, flags)
pop_delimiter (dstack);
CHECK_NESTRET_ERROR ();
- if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0))
+ if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0 || dolbrace_state == DOLBRACE_QUOTE || dolbrace_state == DOLBRACE_QUOTE2))
{
/* Translate $'...' here. */
+ /* PST_NOEXPAND */
ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen);
free (nestret);
@@ -6024,12 +6154,22 @@ parse_matched_pair (qc, open, close, lenp, flags)
make sure we single-quote the results of the ansi
expansion because quote removal should remove them later */
/* FLAG POSIX INTERP 221 */
- if ((shell_compatibility_level > 42) && (rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2) && (flags & P_DOLBRACE))
+ if ((shell_compatibility_level > 42) && (rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2 || dolbrace_state == DOLBRACE_QUOTE) && (flags & P_DOLBRACE))
{
nestret = sh_single_quote (ttrans);
free (ttrans);
nestlen = strlen (nestret);
}
+#if 0 /* TAG:bash-5.3 */
+ /* This single-quotes PARAM in ${PARAM OP WORD} when PARAM
+ contains a $'...' even when extended_quote is set. */
+ else if ((rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_PARAM) && (flags & P_DOLBRACE))
+ {
+ nestret = sh_single_quote (ttrans);
+ free (ttrans);
+ nestlen = strlen (nestret);
+ }
+#endif
else if ((rflags & P_DQUOTE) == 0)
{
nestret = sh_single_quote (ttrans);
@@ -6038,22 +6178,41 @@ parse_matched_pair (qc, open, close, lenp, flags)
}
else
{
+ /* Should we quote CTLESC here? */
nestret = ttrans;
nestlen = ttranslen;
}
retind -= 2; /* back up before the $' */
}
+#if defined (TRANSLATABLE_STRINGS)
else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0))
{
/* Locale expand $"..." here. */
- ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
+ /* PST_NOEXPAND */
+ ttrans = locale_expand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
free (nestret);
- nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
+ /* If we're supposed to single-quote translated strings,
+ check whether the translated result is different from
+ the original and single-quote the string if it is. */
+ if (singlequote_translations &&
+ ((nestlen - 1) != ttranslen || STREQN (nestret, ttrans, ttranslen) == 0))
+ {
+ if ((rflags & P_DQUOTE) == 0)
+ nestret = sh_single_quote (ttrans);
+ else if ((rflags & P_DQUOTE) && (dolbrace_state == DOLBRACE_QUOTE2) && (flags & P_DOLBRACE))
+ nestret = sh_single_quote (ttrans);
+ else
+ /* single quotes aren't special, use backslash instead */
+ nestret = sh_backslash_quote_for_double_quotes (ttrans, 0);
+ }
+ else
+ nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
free (ttrans);
- nestlen = ttranslen + 2;
+ nestlen = strlen (nestret);
retind -= 2; /* back up before the $" */
}
+#endif /* TRANSLATABLE_STRINGS */
APPEND_NESTRET ();
FREE (nestret);
@@ -6155,11 +6314,26 @@ dump_tflags (flags)
f &= ~LEX_CKCASE;
fprintf (stderr, "LEX_CKCASE%s", f ? "|" : "");
}
+ if (f & LEX_CKESAC)
+ {
+ f &= ~LEX_CKESAC;
+ fprintf (stderr, "LEX_CKESAC%s", f ? "|" : "");
+ }
if (f & LEX_INCASE)
{
f &= ~LEX_INCASE;
fprintf (stderr, "LEX_INCASE%s", f ? "|" : "");
}
+ if (f & LEX_CASEWD)
+ {
+ f &= ~LEX_CASEWD;
+ fprintf (stderr, "LEX_CASEWD%s", f ? "|" : "");
+ }
+ if (f & LEX_PATLIST)
+ {
+ f &= ~LEX_PATLIST;
+ fprintf (stderr, "LEX_PATLIST%s", f ? "|" : "");
+ }
if (f & LEX_INHEREDOC)
{
f &= ~LEX_INHEREDOC;
@@ -6191,554 +6365,172 @@ dump_tflags (flags)
}
#endif
-/* Parse a $(...) command substitution. This is messier than I'd like, and
- reproduces a lot more of the token-reading code than I'd like. */
+/* Parse a $(...) command substitution. This reads input from the current
+ input stream. */
static char *
parse_comsub (qc, open, close, lenp, flags)
int qc; /* `"' if this construct is within double quotes */
int open, close;
int *lenp, flags;
{
- int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind;
- int nestlen, ttranslen, start_lineno, orig_histexp;
- char *ret, *nestret, *ttrans, *heredelim;
- int retind, retsize, rflags, hdlen;
+ int peekc, r;
+ int start_lineno, local_extglob, was_extpat;
+ char *ret, *tcmd;
+ int retlen;
+ sh_parser_state_t ps;
+ STRING_SAVER *saved_strings;
+ COMMAND *saved_global, *parsed_command;
/* Posix interp 217 says arithmetic expressions have precedence, so
assume $(( introduces arithmetic expansion and parse accordingly. */
- peekc = shell_getc (0);
- shell_ungetc (peekc);
- if (peekc == '(')
- return (parse_matched_pair (qc, open, close, lenp, 0));
+ if (open == '(') /*)*/
+ {
+ peekc = shell_getc (1);
+ shell_ungetc (peekc);
+ if (peekc == '(') /*)*/
+ return (parse_matched_pair (qc, open, close, lenp, 0));
+ }
/*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/
- count = 1;
- tflags = LEX_RESWDOK;
-#if defined (BANG_HISTORY)
- orig_histexp = history_expansion_inhibited;
-#endif
-
- if ((flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0)
- tflags |= LEX_CKCASE;
- if ((tflags & LEX_CKCASE) && (interactive == 0 || interactive_comments))
- tflags |= LEX_CKCOMMENT;
-
- /* RFLAGS is the set of flags we want to pass to recursive calls. */
- rflags = (flags & P_DQUOTE);
-
- ret = (char *)xmalloc (retsize = 64);
- retind = 0;
+ /*debug_parser(1);*/
start_lineno = line_number;
- lex_rwlen = lex_wlen = 0;
- heredelim = 0;
- lex_firstind = -1;
+ save_parser_state (&ps);
- while (count)
+ was_extpat = (parser_state & PST_EXTPAT);
+
+ /* State flags we don't want to persist into command substitutions. */
+ parser_state &= ~(PST_REGEXP|PST_EXTPAT|PST_CONDCMD|PST_CONDEXPR|PST_COMPASSIGN);
+ /* Could do PST_CASESTMT too, but that also affects history. Setting
+ expecting_in_token below should take care of the parsing requirements.
+ Unsetting PST_REDIRLIST isn't strictly necessary because of how we set
+ token_to_read below, but we do it anyway. */
+ parser_state &= ~(PST_CASEPAT|PST_ALEXPNEXT|PST_SUBSHELL|PST_REDIRLIST);
+ /* State flags we want to set for this run through the parser. */
+ parser_state |= PST_CMDSUBST|PST_EOFTOKEN|PST_NOEXPAND;
+
+ /* leave pushed_string_list alone, since we might need to consume characters
+ from it to satisfy this command substitution (in some perverse case). */
+ shell_eof_token = close;
+
+ saved_global = global_command; /* might not be necessary */
+ global_command = (COMMAND *)NULL;
+
+ /* These are reset by reset_parser() */
+ need_here_doc = 0;
+ esacs_needed_count = expecting_in_token = 0;
+
+ /* We want to expand aliases on this pass if we're in posix mode, since the
+ standard says you have to take aliases into account when looking for the
+ terminating right paren. Otherwise, we defer until execution time for
+ backwards compatibility. */
+ if (expand_aliases)
+ expand_aliases = posixly_correct != 0;
+#if defined (EXTENDED_GLOB)
+ /* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
+ conditional command and have already set global_extglob appropriately. */
+ if (shell_compatibility_level <= 51 && was_extpat == 0)
{
-comsub_readchar:
- ch = shell_getc (qc != '\'' && (tflags & (LEX_INCOMMENT|LEX_PASSNEXT|LEX_QUOTEDDOC)) == 0);
-
- if (ch == EOF)
- {
-eof_error:
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = orig_histexp;
-#endif
- free (ret);
- FREE (heredelim);
- parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
- EOF_Reached = 1; /* XXX */
- return (&matched_pair_error);
- }
-
- /* If we hit the end of a line and are reading the contents of a here
- document, and it's not the same line that the document starts on,
- check for this line being the here doc delimiter. Otherwise, if
- we're in a here document, mark the next character as the beginning
- of a line. */
- if (ch == '\n')
- {
- if ((tflags & LEX_HEREDELIM) && heredelim)
- {
- tflags &= ~LEX_HEREDELIM;
- tflags |= LEX_INHEREDOC;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = 1;
-#endif
- lex_firstind = retind + 1;
- }
- else if (tflags & LEX_INHEREDOC)
- {
- int tind;
- tind = lex_firstind;
- while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t')
- tind++;
- if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
- {
- tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC);
-/*itrace("parse_comsub:%d: found here doc end `%s'", line_number, ret + tind);*/
- free (heredelim);
- heredelim = 0;
- lex_firstind = -1;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = orig_histexp;
+ local_extglob = global_extglob = extended_glob;
+ extended_glob = 1;
+ }
#endif
- }
- else
- lex_firstind = retind + 1;
- }
- }
-
- /* Possible reprompting. */
- if (ch == '\n' && SHOULD_PROMPT ())
- prompt_again ();
- /* XXX -- we currently allow here doc to be delimited by ending right
- paren in default mode and posix mode. To change posix mode, change
- the #if 1 to #if 0 below */
- if ((tflags & LEX_INHEREDOC) && ch == close && count == 1)
- {
- int tind;
-/*itrace("parse_comsub:%d: in here doc, ch == close, retind - firstind = %d hdlen = %d retind = %d", line_number, retind-lex_firstind, hdlen, retind);*/
- tind = lex_firstind;
- while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t')
- tind++;
-#if 1
- if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
-#else
- /* Posix-mode shells require the newline after the here-document
- delimiter. */
- if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen) &&
- posixly_correct == 0)
-#endif
- {
- tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC);
-/*itrace("parse_comsub:%d: found here doc end `%*s'", line_number, hdlen, ret + tind);*/
- free (heredelim);
- heredelim = 0;
- lex_firstind = -1;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = orig_histexp;
-#endif
- }
- }
+ current_token = '\n'; /* XXX */
+ token_to_read = DOLPAREN; /* let's trick the parser */
- /* Don't bother counting parens or doing anything else if in a comment or
- here document (not exactly right for here-docs -- if we want to allow
- recursive calls to parse_comsub to have their own here documents,
- change the LEX_INHEREDOC to LEX_QUOTEDDOC here and uncomment the next
- clause below. Note that to make this work completely, we need to make
- additional changes to allow xparse_dolparen to work right when the
- command substitution is parsed, because read_secondary_line doesn't know
- to recursively parse through command substitutions embedded in here-
- documents */
- if (tflags & (LEX_INCOMMENT|LEX_INHEREDOC))
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
+ r = yyparse ();
- if ((tflags & LEX_INCOMMENT) && ch == '\n')
- {
-/*itrace("parse_comsub:%d: lex_incomment -> 0 ch = `%c'", line_number, ch);*/
- tflags &= ~LEX_INCOMMENT;
- }
+ if (need_here_doc > 0)
+ {
+ internal_warning ("command substitution: %d unterminated here-document%s", need_here_doc, (need_here_doc == 1) ? "" : "s");
+ gather_here_documents (); /* XXX check compatibility level? */
+ }
- continue;
- }
-#if 0
- /* If we're going to recursively parse a command substitution inside a
- here-document, make sure we call parse_comsub recursively below. See
- above for additional caveats. */
- if ((tflags & LEX_INHEREDOC) && ((tflags & LEX_WASDOL) == 0 || ch != '(')) /*)*/
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- if MBTEST(ch == '$')
- tflags |= LEX_WASDOL;
- else
- tflags &= ~LEX_WASDOL;
- }
+#if defined (EXTENDED_GLOB)
+ if (shell_compatibility_level <= 51 && was_extpat == 0)
+ extended_glob = local_extglob;
#endif
- if (tflags & LEX_PASSNEXT) /* last char was backslash */
- {
-/*itrace("parse_comsub:%d: lex_passnext -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/
- tflags &= ~LEX_PASSNEXT;
- if (qc != '\'' && ch == '\n') /* double-quoted \<newline> disappears. */
- {
- if (retind > 0)
- retind--; /* swallow previously-added backslash */
- continue;
- }
+ parsed_command = global_command;
- RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
- if MBTEST(ch == CTLESC)
- ret[retind++] = CTLESC;
- ret[retind++] = ch;
- continue;
- }
+ if (EOF_Reached)
+ {
+ shell_eof_token = ps.eof_token;
+ expand_aliases = ps.expand_aliases;
- /* If this is a shell break character, we are not in a word. If not,
- we either start or continue a word. */
- if MBTEST(shellbreak (ch))
- {
- tflags &= ~LEX_INWORD;
-/*itrace("parse_comsub:%d: lex_inword -> 0 ch = `%c' (%d)", line_number, ch, __LINE__);*/
- }
+ /* yyparse() has already called yyerror() and reset_parser() */
+ return (&matched_pair_error);
+ }
+ else if (r != 0)
+ {
+ /* parser_error (start_lineno, _("could not parse command substitution")); */
+ /* Non-interactive shells exit on parse error in a command substitution. */
+ if (last_command_exit_value == 0)
+ last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (last_command_exit_value);
+ if (interactive_shell == 0)
+ jump_to_top_level (FORCE_EOF); /* This is like reader_loop() */
else
{
- if (tflags & LEX_INWORD)
- {
- lex_wlen++;
-/*itrace("parse_comsub:%d: lex_inword == 1 ch = `%c' lex_wlen = %d (%d)", line_number, ch, lex_wlen, __LINE__);*/
- }
- else
- {
-/*itrace("parse_comsub:%d: lex_inword -> 1 ch = `%c' (%d)", line_number, ch, __LINE__);*/
- tflags |= LEX_INWORD;
- lex_wlen = 0;
- if (tflags & LEX_RESWDOK)
- lex_rwlen = 0;
- }
- }
-
- /* Skip whitespace */
- if MBTEST(shellblank (ch) && (tflags & LEX_HEREDELIM) == 0 && lex_rwlen == 0)
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- continue;
- }
-
- /* Either we are looking for the start of the here-doc delimiter
- (lex_firstind == -1) or we are reading one (lex_firstind >= 0).
- If this character is a shell break character and we are reading
- the delimiter, save it and note that we are now reading a here
- document. If we've found the start of the delimiter, note it by
- setting lex_firstind. Backslashes can quote shell metacharacters
- in here-doc delimiters. */
- if (tflags & LEX_HEREDELIM)
- {
- if (lex_firstind == -1 && shellbreak (ch) == 0)
- lex_firstind = retind;
-#if 0
- else if (heredelim && (tflags & LEX_PASSNEXT) == 0 && ch == '\n')
- {
- tflags |= LEX_INHEREDOC;
- tflags &= ~LEX_HEREDELIM;
- lex_firstind = retind + 1;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = 1;
-#endif
- }
-#endif
- else if (lex_firstind >= 0 && (tflags & LEX_PASSNEXT) == 0 && shellbreak (ch))
- {
- if (heredelim == 0)
- {
- nestret = substring (ret, lex_firstind, retind);
- heredelim = string_quote_removal (nestret, 0);
- hdlen = STRLEN(heredelim);
-/*itrace("parse_comsub:%d: found here doc delimiter `%s' (%d)", line_number, heredelim, hdlen);*/
- if (STREQ (heredelim, nestret) == 0)
- tflags |= LEX_QUOTEDDOC;
- free (nestret);
- }
- if (ch == '\n')
- {
- tflags |= LEX_INHEREDOC;
- tflags &= ~LEX_HEREDELIM;
- lex_firstind = retind + 1;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = 1;
-#endif
- }
- else
- lex_firstind = -1;
- }
- }
-
- /* Meta-characters that can introduce a reserved word. Not perfect yet. */
- if MBTEST((tflags & LEX_RESWDOK) == 0 && (tflags & LEX_CKCASE) && (tflags & LEX_INCOMMENT) == 0 && (shellmeta(ch) || ch == '\n'))
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- peekc = shell_getc (1);
- if (ch == peekc && (ch == '&' || ch == '|' || ch == ';')) /* two-character tokens */
- {
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = peekc;
-/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/
- tflags |= LEX_RESWDOK;
- lex_rwlen = 0;
- continue;
- }
- else if (ch == '\n' || COMSUB_META(ch))
- {
- shell_ungetc (peekc);
-/*itrace("parse_comsub:%d: set lex_reswordok = 1, ch = `%c'", line_number, ch);*/
- tflags |= LEX_RESWDOK;
- lex_rwlen = 0;
- continue;
- }
- else if (ch == EOF)
- goto eof_error;
- else
- {
- /* `unget' the character we just added and fall through */
- retind--;
- shell_ungetc (peekc);
- }
- }
-
- /* If we can read a reserved word, try to read one. */
- if (tflags & LEX_RESWDOK)
- {
- if MBTEST(islower ((unsigned char)ch))
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- lex_rwlen++;
- continue;
- }
- else if MBTEST(lex_rwlen == 4 && shellbreak (ch))
- {
- if (STREQN (ret + retind - 4, "case", 4))
- {
- tflags |= LEX_INCASE;
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: found `case', lex_incase -> 1 lex_reswdok -> 0", line_number);*/
- }
- else if (STREQN (ret + retind - 4, "esac", 4))
- {
- tflags &= ~LEX_INCASE;
-/*itrace("parse_comsub:%d: found `esac', lex_incase -> 0 lex_reswdok -> 1", line_number);*/
- tflags |= LEX_RESWDOK;
- lex_rwlen = 0;
- }
- else if (STREQN (ret + retind - 4, "done", 4) ||
- STREQN (ret + retind - 4, "then", 4) ||
- STREQN (ret + retind - 4, "else", 4) ||
- STREQN (ret + retind - 4, "elif", 4) ||
- STREQN (ret + retind - 4, "time", 4))
- {
- /* these are four-character reserved words that can be
- followed by a reserved word; anything else turns off
- the reserved-word-ok flag */
-/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 1", line_number, ret+retind-4);*/
- tflags |= LEX_RESWDOK;
- lex_rwlen = 0;
- }
- else if (shellmeta (ch) == 0)
- {
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: found `%.4s', lex_reswdok -> 0", line_number, ret+retind-4);*/
- }
- else /* can't be in a reserved word any more */
- lex_rwlen = 0;
- }
- else if MBTEST((tflags & LEX_CKCOMMENT) && ch == '#' && (lex_rwlen == 0 || ((tflags & LEX_INWORD) && lex_wlen == 0)))
- ; /* don't modify LEX_RESWDOK if we're starting a comment */
- /* Allow `do' followed by space, tab, or newline to preserve the
- RESWDOK flag, but reset the reserved word length counter so we
- can read another one. */
- else if MBTEST(((tflags & LEX_INCASE) == 0) &&
- (isblank((unsigned char)ch) || ch == '\n') &&
- lex_rwlen == 2 &&
- STREQN (ret + retind - 2, "do", 2))
- {
-/*itrace("parse_comsub:%d: lex_incase == 0 found `%c', found \"do\"", line_number, ch);*/
- lex_rwlen = 0;
- }
- else if MBTEST((tflags & LEX_INCASE) && ch != '\n')
- /* If we can read a reserved word and we're in case, we're at the
- point where we can read a new pattern list or an esac. We
- handle the esac case above. If we read a newline, we want to
- leave LEX_RESWDOK alone. If we read anything else, we want to
- turn off LEX_RESWDOK, since we're going to read a pattern list. */
- {
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: lex_incase == 1 found `%c', lex_reswordok -> 0", line_number, ch);*/
- }
- else if MBTEST(shellbreak (ch) == 0)
- {
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/
- }
-#if 0
- /* If we find a space or tab but have read something and it's not
- `do', turn off the reserved-word-ok flag */
- else if MBTEST(isblank ((unsigned char)ch) && lex_rwlen > 0)
- {
- tflags &= ~LEX_RESWDOK;
-/*itrace("parse_comsub:%d: found `%c', lex_reswordok -> 0", line_number, ch);*/
- }
-#endif
- }
-
- /* Might be the start of a here-doc delimiter */
- if MBTEST((tflags & LEX_INCOMMENT) == 0 && (tflags & LEX_CKCASE) && ch == '<')
- {
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
- peekc = shell_getc (1);
- if (peekc == EOF)
- goto eof_error;
- if (peekc == ch)
- {
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = peekc;
- peekc = shell_getc (1);
- if (peekc == EOF)
- goto eof_error;
- if (peekc == '-')
- {
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = peekc;
- tflags |= LEX_STRIPDOC;
- }
- else
- shell_ungetc (peekc);
- if (peekc != '<')
- {
- tflags |= LEX_HEREDELIM;
- lex_firstind = -1;
- }
- continue;
- }
- else
- {
- shell_ungetc (peekc); /* not a here-doc, start over */
- continue;
- }
- }
- else if MBTEST((tflags & LEX_CKCOMMENT) && (tflags & LEX_INCOMMENT) == 0 && ch == '#' && (((tflags & LEX_RESWDOK) && lex_rwlen == 0) || ((tflags & LEX_INWORD) && lex_wlen == 0)))
- {
-/*itrace("parse_comsub:%d: lex_incomment -> 1 (%d)", line_number, __LINE__);*/
- tflags |= LEX_INCOMMENT;
- }
+ shell_eof_token = ps.eof_token;
+ expand_aliases = ps.expand_aliases;
- if MBTEST(ch == CTLESC || ch == CTLNUL) /* special shell escapes */
- {
- RESIZE_MALLOCED_BUFFER (ret, retind, 2, retsize, 64);
- ret[retind++] = CTLESC;
- ret[retind++] = ch;
- continue;
- }
-#if 0
- else if MBTEST((tflags & LEX_INCASE) && ch == close && close == ')')
- tflags &= ~LEX_INCASE; /* XXX */
-#endif
- else if MBTEST(ch == close && (tflags & LEX_INCASE) == 0) /* ending delimiter */
- {
- count--;
-/*itrace("parse_comsub:%d: found close: count = %d", line_number, count);*/
+ jump_to_top_level (DISCARD); /* XXX - return (&matched_pair_error)? */
}
- else if MBTEST(((flags & P_FIRSTCLOSE) == 0) && (tflags & LEX_INCASE) == 0 && ch == open) /* nested begin */
- {
- count++;
-/*itrace("parse_comsub:%d: found open: count = %d", line_number, count);*/
- }
-
- /* Add this character. */
- RESIZE_MALLOCED_BUFFER (ret, retind, 1, retsize, 64);
- ret[retind++] = ch;
-
- /* If we just read the ending character, don't bother continuing. */
- if (count == 0)
- break;
-
- if MBTEST(ch == '\\') /* backslashes */
- tflags |= LEX_PASSNEXT;
+ }
- if MBTEST(shellquote (ch))
- {
- /* '', ``, or "" inside $(...). */
- push_delimiter (dstack, ch);
- if MBTEST((tflags & LEX_WASDOL) && ch == '\'') /* $'...' inside group */
- nestret = parse_matched_pair (ch, ch, ch, &nestlen, P_ALLOWESC|rflags);
- else
- nestret = parse_matched_pair (ch, ch, ch, &nestlen, rflags);
- pop_delimiter (dstack);
- CHECK_NESTRET_ERROR ();
+ if (current_token != shell_eof_token)
+ {
+INTERNAL_DEBUG(("current_token (%d) != shell_eof_token (%c)", current_token, shell_eof_token));
+ token_to_read = current_token;
- if MBTEST((tflags & LEX_WASDOL) && ch == '\'' && (extended_quote || (rflags & P_DQUOTE) == 0))
- {
- /* Translate $'...' here. */
- ttrans = ansiexpand (nestret, 0, nestlen - 1, &ttranslen);
- free (nestret);
+ /* If we get here we can check eof_encountered and if it's 1 but the
+ previous EOF_Reached test didn't succeed, we can assume that the shell
+ is interactive and ignoreeof is set. We might want to restore the
+ parser state in this case. */
+ shell_eof_token = ps.eof_token;
+ expand_aliases = ps.expand_aliases;
- if ((rflags & P_DQUOTE) == 0)
- {
- nestret = sh_single_quote (ttrans);
- free (ttrans);
- nestlen = strlen (nestret);
- }
- else
- {
- nestret = ttrans;
- nestlen = ttranslen;
- }
- retind -= 2; /* back up before the $' */
- }
- else if MBTEST((tflags & LEX_WASDOL) && ch == '"' && (extended_quote || (rflags & P_DQUOTE) == 0))
- {
- /* Locale expand $"..." here. */
- ttrans = localeexpand (nestret, 0, nestlen - 1, start_lineno, &ttranslen);
- free (nestret);
-
- nestret = sh_mkdoublequoted (ttrans, ttranslen, 0);
- free (ttrans);
- nestlen = ttranslen + 2;
- retind -= 2; /* back up before the $" */
- }
-
- APPEND_NESTRET ();
- FREE (nestret);
- }
- else if MBTEST((tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */
- /* check for $(), $[], or ${} inside command substitution. */
- {
- if ((tflags & LEX_INCASE) == 0 && open == ch) /* undo previous increment */
- count--;
- if (ch == '(') /* ) */
- nestret = parse_comsub (0, '(', ')', &nestlen, (rflags|P_COMMAND) & ~P_DQUOTE);
- else if (ch == '{') /* } */
- nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
- else if (ch == '[') /* ] */
- nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags);
+ return (&matched_pair_error);
+ }
- CHECK_NESTRET_ERROR ();
- APPEND_NESTRET ();
+ /* We don't want to restore the old pushed string list, since we might have
+ used it to consume additional input from an alias while parsing this
+ command substitution. */
+ saved_strings = pushed_string_list;
+ restore_parser_state (&ps);
+ pushed_string_list = saved_strings;
- FREE (nestret);
- }
- if MBTEST(ch == '$' && (tflags & LEX_WASDOL) == 0)
- tflags |= LEX_WASDOL;
- else
- tflags &= ~LEX_WASDOL;
+ tcmd = print_comsub (parsed_command); /* returns static memory */
+ retlen = strlen (tcmd);
+ if (tcmd[0] == '(') /* ) need a space to prevent arithmetic expansion */
+ retlen++;
+ ret = xmalloc (retlen + 2);
+ if (tcmd[0] == '(') /* ) */
+ {
+ ret[0] = ' ';
+ strcpy (ret + 1, tcmd);
}
+ else
+ strcpy (ret, tcmd);
+ ret[retlen++] = ')';
+ ret[retlen] = '\0';
+
+ dispose_command (parsed_command);
+ global_command = saved_global;
-#if defined (BANG_HISTORY)
- history_expansion_inhibited = orig_histexp;
-#endif
- FREE (heredelim);
- ret[retind] = '\0';
if (lenp)
- *lenp = retind;
+ *lenp = retlen;
+
/*itrace("parse_comsub:%d: returning `%s'", line_number, ret);*/
return ret;
}
-/* Recursively call the parser to parse a $(...) command substitution. */
+/* Recursively call the parser to parse a $(...) command substitution. This is
+ called by the word expansion code and so does not have to reset as much
+ parser state before calling yyparse(). */
char *
xparse_dolparen (base, string, indp, flags)
char *base;
@@ -6748,11 +6540,8 @@ xparse_dolparen (base, string, indp, flags)
{
sh_parser_state_t ps;
sh_input_line_state_t ls;
- int orig_ind, nc, sflags, orig_eof_token, start_lineno;
+ int orig_ind, nc, sflags, start_lineno;
char *ret, *ep, *ostring;
-#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
- STRING_SAVER *saved_pushed_strings;
-#endif
/*debug_parser(1);*/
orig_ind = *indp;
@@ -6770,41 +6559,48 @@ xparse_dolparen (base, string, indp, flags)
}
/*itrace("xparse_dolparen: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/
+
sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
if (flags & SX_NOLONGJMP)
sflags |= SEVAL_NOLONGJMP;
+
save_parser_state (&ps);
save_input_line_state (&ls);
- orig_eof_token = shell_eof_token;
+
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
- saved_pushed_strings = pushed_string_list; /* separate parsing context */
pushed_string_list = (STRING_SAVER *)NULL;
#endif
-
/*(*/
parser_state |= PST_CMDSUBST|PST_EOFTOKEN; /* allow instant ')' */ /*(*/
shell_eof_token = ')';
+ if (flags & SX_COMPLETE)
+ parser_state |= PST_NOERROR;
+
+ /* Don't expand aliases on this pass at all. Either parse_comsub() does it
+ at parse time, in which case this string already has aliases expanded,
+ or command_substitute() does it in the child process executing the
+ command substitution and we want to defer it completely until then. The
+ old value will be restored by restore_parser_state(). */
+ expand_aliases = 0;
+#if defined (EXTENDED_GLOB)
+ global_extglob = extended_glob; /* for reset_parser() */
+#endif
- /* Should we save and restore the bison/yacc lookahead token (yychar) here?
- Or only if it's not YYEMPTY? */
+ token_to_read = DOLPAREN; /* let's trick the parser */
- nc = parse_string (string, "command substitution", sflags, &ep);
+ nc = parse_string (string, "command substitution", sflags, (COMMAND **)NULL, &ep);
+ /* Should we save and restore the bison/yacc lookahead token (yychar) here?
+ Or only if it's not YYEMPTY? */
if (current_token == shell_eof_token)
yyclearin; /* might want to clear lookahead token unconditionally */
- reset_parser ();
+ reset_parser (); /* resets extended_glob too */
/* reset_parser() clears shell_input_line and associated variables, including
parser_state, so we want to reset things, then restore what we need. */
restore_input_line_state (&ls);
-
- shell_eof_token = orig_eof_token;
restore_parser_state (&ps);
-#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
- pushed_string_list = saved_pushed_strings;
-#endif
-
token_to_read = 0;
/* If parse_string returns < 0, we need to jump to top level with the
@@ -6815,17 +6611,18 @@ xparse_dolparen (base, string, indp, flags)
clear_shell_input_line (); /* XXX */
if (bash_input.type != st_string) /* paranoia */
parser_state &= ~(PST_CMDSUBST|PST_EOFTOKEN);
- jump_to_top_level (-nc); /* XXX */
+ if ((flags & SX_NOLONGJMP) == 0)
+ jump_to_top_level (-nc); /* XXX */
}
- /* Need to find how many characters parse_and_execute consumed, update
+ /* Need to find how many characters parse_string() consumed, update
*indp, if flags != 0, copy the portion of the string parsed into RET
and return it. If flags & 1 (SX_NOALLOC) we can return NULL. */
/*(*/
if (ep[-1] != ')')
{
-#if DEBUG
+#if 0
if (ep[-1] != '\n')
itrace("xparse_dolparen:%d: ep[-1] != RPAREN (%d), ep = `%s'", line_number, ep[-1], ep);
#endif
@@ -6837,17 +6634,18 @@ xparse_dolparen (base, string, indp, flags)
*indp = ep - base - 1;
/*((*/
-#if DEBUG
+#if 0
if (base[*indp] != ')')
itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base);
if (*indp < orig_ind)
itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring);
#endif
- if (base[*indp] != ')')
+ if (base[*indp] != ')' && (flags & SX_NOLONGJMP) == 0)
{
/*(*/
- parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')');
+ if ((flags & SX_NOERROR) == 0)
+ parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')');
jump_to_top_level (DISCARD);
}
@@ -6865,6 +6663,74 @@ xparse_dolparen (base, string, indp, flags)
return ret;
}
+/* Recursively call the parser to parse the string from a $(...) command
+ substitution to a COMMAND *. This is called from command_substitute() and
+ has the same parser state constraints as xparse_dolparen(). */
+COMMAND *
+parse_string_to_command (string, flags)
+ char *string;
+ int flags;
+{
+ sh_parser_state_t ps;
+ sh_input_line_state_t ls;
+ int nc, sflags;
+ size_t slen;
+ char *ret, *ep;
+ COMMAND *cmd;
+
+ if (*string == 0)
+ return (COMMAND *)NULL;
+
+ ep = string;
+ slen = STRLEN (string);
+
+/*itrace("parse_string_to_command: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/
+
+ sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
+ if (flags & SX_NOLONGJMP)
+ sflags |= SEVAL_NOLONGJMP;
+
+ save_parser_state (&ps);
+ save_input_line_state (&ls);
+
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+ pushed_string_list = (STRING_SAVER *)NULL;
+#endif
+ if (flags & SX_COMPLETE)
+ parser_state |= PST_NOERROR;
+
+ expand_aliases = 0;
+
+ cmd = 0;
+ nc = parse_string (string, "command substitution", sflags, &cmd, &ep);
+
+ reset_parser ();
+ /* reset_parser() clears shell_input_line and associated variables, including
+ parser_state, so we want to reset things, then restore what we need. */
+ restore_input_line_state (&ls);
+ restore_parser_state (&ps);
+
+ /* If parse_string returns < 0, we need to jump to top level with the
+ negative of the return value. We abandon the rest of this input line
+ first */
+ if (nc < 0)
+ {
+ clear_shell_input_line (); /* XXX */
+ if ((flags & SX_NOLONGJMP) == 0)
+ jump_to_top_level (-nc); /* XXX */
+ }
+
+ /* Need to check how many characters parse_string() consumed, make sure it's
+ the entire string. */
+ if (nc < slen)
+ {
+ dispose_command (cmd);
+ return (COMMAND *)NULL;
+ }
+
+ return cmd;
+}
+
#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND)
/* Parse a double-paren construct. It can be either an arithmetic
command, an arithmetic `for' command, or a nested subshell. Returns
@@ -6881,7 +6747,9 @@ parse_dparen (c)
#if defined (ARITH_FOR_COMMAND)
if (last_read_token == FOR)
{
- arith_for_lineno = line_number;
+ if (word_top < MAX_CASE_NEST)
+ word_top++;
+ arith_for_lineno = word_lineno[word_top] = line_number;
cmdtyp = parse_arith_cmd (&wval, 0);
if (cmdtyp == 1)
{
@@ -6905,7 +6773,7 @@ parse_dparen (c)
{
wd = alloc_word_desc ();
wd->word = wval;
- wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_DQUOTE;
+ wd->flags = W_QUOTED|W_NOSPLIT|W_NOGLOB|W_NOTILDE|W_NOPROCSUB;
yylval.word_list = make_word_list (wd, (WORD_LIST *)NULL);
return (ARITH_CMD);
}
@@ -7040,7 +6908,7 @@ cond_skip_newlines ()
while ((cond_token = read_token (READ)) == '\n')
{
if (SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
}
return (cond_token);
}
@@ -7053,7 +6921,7 @@ cond_term ()
{
WORD_DESC *op;
COND_COM *term, *tleft, *tright;
- int tok, lineno;
+ int tok, lineno, local_extglob;
char *etext;
/* Read a token. It can be a left paren, a `!', a unary operator, or a
@@ -7122,6 +6990,7 @@ cond_term ()
tleft = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL);
/* binop */
+ /* tok = cond_skip_newlines (); ? */
tok = read_token (READ);
if (tok == WORD && test_binop (yylval.word->word))
{
@@ -7166,11 +7035,12 @@ cond_term ()
}
/* rhs */
+ local_extglob = extended_glob;
if (parser_state & PST_EXTPAT)
extended_glob = 1;
tok = read_token (READ);
if (parser_state & PST_EXTPAT)
- extended_glob = global_extglob;
+ extended_glob = local_extglob;
parser_state &= ~(PST_REGEXP|PST_EXTPAT);
if (tok == WORD)
@@ -7326,11 +7196,18 @@ read_token_word (character)
double-quotes, quote some things inside of double-quotes. */
if MBTEST(character == '\\')
{
+ if (parser_state & PST_NOEXPAND)
+ {
+ pass_next_character++;
+ quoted = 1;
+ goto got_character;
+ }
+
peek_char = shell_getc (0);
/* Backslash-newline is ignored in all cases except
when quoted with single quotes. */
- if (peek_char == '\n')
+ if MBTEST(peek_char == '\n')
{
character = '\n';
goto next_character;
@@ -7340,7 +7217,7 @@ read_token_word (character)
shell_ungetc (peek_char);
/* If the next character is to be quoted, note it now. */
- if (cd == 0 || cd == '`' ||
+ if MBTEST(cd == 0 || cd == '`' ||
(cd == '"' && peek_char >= 0 && (sh_syntaxtab[peek_char] & CBSDQUOTE)))
pass_next_character++;
@@ -7425,7 +7302,7 @@ read_token_word (character)
/* If the delimiter character is not single quote, parse some of
the shell expansions that must be read as a single word. */
- if (shellexp (character))
+ if MBTEST(shellexp (character))
{
peek_char = shell_getc (1);
/* $(...), <(...), >(...), $((...)), ${...}, and $[...] constructs */
@@ -7462,7 +7339,11 @@ read_token_word (character)
goto next_character;
}
/* This handles $'...' and $"..." new-style quoted strings. */
+#if defined (TRANSLATABLE_STRINGS)
else if MBTEST(character == '$' && (peek_char == '\'' || peek_char == '"'))
+#else
+ else if MBTEST(character == '$' && peek_char == '\'')
+#endif
{
int first_line;
@@ -7476,6 +7357,7 @@ read_token_word (character)
return -1;
if (peek_char == '\'')
{
+ /* PST_NOEXPAND */
ttrans = ansiexpand (ttok, 0, ttoklen - 1, &ttranslen);
free (ttok);
@@ -7487,18 +7369,27 @@ read_token_word (character)
ttranslen = strlen (ttok);
ttrans = ttok;
}
+#if defined (TRANSLATABLE_STRINGS)
else
{
+ /* PST_NOEXPAND */
/* Try to locale-expand the converted string. */
- ttrans = localeexpand (ttok, 0, ttoklen - 1, first_line, &ttranslen);
+ ttrans = locale_expand (ttok, 0, ttoklen - 1, first_line, &ttranslen);
free (ttok);
- /* Add the double quotes back */
- ttok = sh_mkdoublequoted (ttrans, ttranslen, 0);
+ /* Add the double quotes back (or single quotes if the user
+ has set that option). */
+ if (singlequote_translations &&
+ ((ttoklen - 1) != ttranslen || STREQN (ttok, ttrans, ttranslen) == 0))
+ ttok = sh_single_quote (ttrans);
+ else
+ ttok = sh_mkdoublequoted (ttrans, ttranslen, 0);
+
free (ttrans);
- ttranslen += 2;
ttrans = ttok;
+ ttranslen = strlen (ttrans);
}
+#endif /* TRANSLATABLE_STRINGS */
RESIZE_MALLOCED_BUFFER (token, token_index, ttranslen + 1,
token_buffer_size,
@@ -7591,7 +7482,7 @@ read_token_word (character)
}
got_character:
- if (character == CTLESC || character == CTLNUL)
+ if MBTEST(character == CTLESC || character == CTLNUL)
{
RESIZE_MALLOCED_BUFFER (token, token_index, 2, token_buffer_size,
TOKEN_DEFAULT_GROW_SIZE);
@@ -7609,7 +7500,7 @@ got_escaped_character:
next_character:
if (character == '\n' && SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
/* We want to remove quoted newlines (that is, a \<newline> pair)
unless we are within single quotes or pass_next_character is
@@ -7705,7 +7596,7 @@ got_token:
yylval.word = the_word;
/* should we check that quoted == 0 as well? */
- if (token[0] == '{' && token[token_index-1] == '}' &&
+ if MBTEST(token[0] == '{' && token[token_index-1] == '}' &&
(character == '<' || character == '>'))
{
/* can use token; already copied to the_word */
@@ -7767,8 +7658,10 @@ reserved_word_acceptable (toksym)
case '{':
case '}': /* XXX */
case AND_AND:
+ case ARITH_CMD:
case BANG:
case BAR_AND:
+ case COND_END:
case DO:
case DONE:
case ELIF:
@@ -7788,6 +7681,7 @@ reserved_word_acceptable (toksym)
case UNTIL:
case WHILE:
case 0:
+ case DOLPAREN:
return 1;
default:
#if defined (COPROCESS_SUPPORT)
@@ -7947,8 +7841,11 @@ history_delimiting_chars (line)
return (" ");
}
+ /* Assume that by this point we are reading lines in a multi-line command.
+ If we have multiple consecutive blank lines we want to return only one
+ semicolon. */
if (line_isblank (line))
- return ("");
+ return (current_command_line_count > 1 && last_read_token == '\n' && token_before_that != '\n') ? "; " : "";
return ("; ");
}
@@ -7957,7 +7854,8 @@ history_delimiting_chars (line)
/* Issue a prompt, or prepare to issue a prompt when the next character
is read. */
static void
-prompt_again ()
+prompt_again (force)
+ int force;
{
char *temp_prompt;
@@ -8087,7 +7985,7 @@ decode_prompt_string (string)
int last_exit_value, last_comsub_pid;
#if defined (PROMPT_STRING_DECODE)
size_t result_size;
- int result_index;
+ size_t result_index;
int c, n, i;
char *temp, *t_host, octal_string[4];
struct tm *tm;
@@ -8224,7 +8122,7 @@ decode_prompt_string (string)
/* Make sure that expand_prompt_string is called with a
second argument of Q_DOUBLE_QUOTES if we use this
function here. */
- temp = sh_backslash_quote_for_double_quotes (timebuf);
+ temp = sh_backslash_quote_for_double_quotes (timebuf, 0);
else
temp = savestring (timebuf);
goto add_string;
@@ -8240,9 +8138,14 @@ decode_prompt_string (string)
temp = base_pathname (shell_name);
/* Try to quote anything the user can set in the file system */
if (promptvars || posixly_correct)
- temp = sh_backslash_quote_for_double_quotes (temp);
+ {
+ char *t;
+ t = sh_strvis (temp);
+ temp = sh_backslash_quote_for_double_quotes (t, 0);
+ free (t);
+ }
else
- temp = savestring (temp);
+ temp = sh_strvis (temp);
goto add_string;
case 'v':
@@ -8317,9 +8220,14 @@ decode_prompt_string (string)
/* Make sure that expand_prompt_string is called with a
second argument of Q_DOUBLE_QUOTES if we use this
function here. */
- temp = sh_backslash_quote_for_double_quotes (t_string);
+ {
+ char *t;
+ t = sh_strvis (t_string);
+ temp = sh_backslash_quote_for_double_quotes (t, 0);
+ free (t);
+ }
else
- temp = savestring (t_string);
+ temp = sh_strvis (t_string);
goto add_string;
}
@@ -8339,7 +8247,7 @@ decode_prompt_string (string)
/* Make sure that expand_prompt_string is called with a
second argument of Q_DOUBLE_QUOTES if we use this
function here. */
- temp = sh_backslash_quote_for_double_quotes (t_host);
+ temp = sh_backslash_quote_for_double_quotes (t_host, 0);
else
temp = savestring (t_host);
free (t_host);
@@ -8494,7 +8402,8 @@ int
yyerror (msg)
const char *msg;
{
- report_syntax_error ((char *)NULL);
+ if ((parser_state & PST_NOERROR) == 0)
+ report_syntax_error ((char *)NULL);
reset_parser ();
return (0);
}
@@ -8656,8 +8565,14 @@ report_syntax_error (message)
}
else
{
- msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error");
- parser_error (line_number, "%s", msg);
+ if (EOF_Reached && shell_eof_token && current_token != shell_eof_token)
+ parser_error (line_number, _("unexpected EOF while looking for matching `%c'"), shell_eof_token);
+ else
+ {
+ msg = EOF_Reached ? _("syntax error: unexpected end of file") : _("syntax error");
+ parser_error (line_number, "%s", msg);
+ }
+
/* When the shell is interactive, this file uses EOF_Reached
only for error reporting. Other mechanisms are used to
decide whether or not to exit. */
@@ -8726,7 +8641,7 @@ handle_eof_input_unit ()
last_read_token = current_token = '\n';
/* Reset the prompt string to be $PS1. */
prompt_string_pointer = (char **)NULL;
- prompt_again ();
+ prompt_again (0);
return;
}
}
@@ -8765,31 +8680,26 @@ parse_string_to_word_list (s, flags, whom)
const char *whom;
{
WORD_LIST *wl;
- int tok, orig_current_token, orig_line_number, orig_input_terminator;
- int orig_line_count;
- int old_echo_input, old_expand_aliases, ea;
-#if defined (HISTORY)
- int old_remember_on_history, old_history_expansion_inhibited;
-#endif
+ int tok, orig_current_token, orig_line_number;
+ int orig_parser_state;
+ sh_parser_state_t ps;
+ int ea;
+
+ orig_line_number = line_number;
+ save_parser_state (&ps);
#if defined (HISTORY)
- old_remember_on_history = remember_on_history;
-# if defined (BANG_HISTORY)
- old_history_expansion_inhibited = history_expansion_inhibited;
-# endif
bash_history_disable ();
#endif
- orig_line_number = line_number;
- orig_line_count = current_command_line_count;
- orig_input_terminator = shell_input_line_terminator;
- old_echo_input = echo_input_at_read;
- old_expand_aliases = expand_aliases;
-
push_stream (1);
if (ea = expanding_alias ())
parser_save_alias ();
- last_read_token = WORD; /* WORD to allow reserved words here */
+
+ /* WORD to avoid parsing reserved words as themselves and just parse them as
+ WORDs. */
+ last_read_token = WORD;
+
current_command_line_count = 0;
echo_input_at_read = expand_aliases = 0;
@@ -8797,7 +8707,13 @@ parse_string_to_word_list (s, flags, whom)
wl = (WORD_LIST *)NULL;
if (flags & 1)
- parser_state |= PST_COMPASSIGN|PST_REPARSE;
+ {
+ orig_parser_state = parser_state; /* XXX - not needed? */
+ /* State flags we don't want to persist into compound assignments. */
+ parser_state &= ~PST_NOEXPAND; /* parse_comsub sentinel */
+ /* State flags we want to set for this run through the tokenizer. */
+ parser_state |= PST_COMPASSIGN|PST_REPARSE;
+ }
while ((tok = read_token (READ)) != yacc_EOF)
{
@@ -8826,21 +8742,10 @@ parse_string_to_word_list (s, flags, whom)
if (ea)
parser_restore_alias ();
-#if defined (HISTORY)
- remember_on_history = old_remember_on_history;
-# if defined (BANG_HISTORY)
- history_expansion_inhibited = old_history_expansion_inhibited;
-# endif /* BANG_HISTORY */
-#endif /* HISTORY */
-
- echo_input_at_read = old_echo_input;
- expand_aliases = old_expand_aliases;
-
- current_command_line_count = orig_line_count;
- shell_input_line_terminator = orig_input_terminator;
+ restore_parser_state (&ps);
if (flags & 1)
- parser_state &= ~(PST_COMPASSIGN|PST_REPARSE);
+ parser_state = orig_parser_state; /* XXX - not needed? */
if (wl == &parse_string_error)
{
@@ -8859,30 +8764,37 @@ parse_compound_assignment (retlenp)
int *retlenp;
{
WORD_LIST *wl, *rl;
- int tok, orig_line_number, orig_token_size, orig_last_token, assignok;
- char *saved_token, *ret;
+ int tok, orig_line_number, assignok;
+ sh_parser_state_t ps;
+ char *ret;
- saved_token = token;
- orig_token_size = token_buffer_size;
orig_line_number = line_number;
- orig_last_token = last_read_token;
+ save_parser_state (&ps);
- last_read_token = WORD; /* WORD to allow reserved words here */
+ /* WORD to avoid parsing reserved words as themselves and just parse them as
+ WORDs. Plus it means we won't be in a command position and so alias
+ expansion won't happen. */
+ last_read_token = WORD;
token = (char *)NULL;
token_buffer_size = 0;
+ wl = (WORD_LIST *)NULL; /* ( */
assignok = parser_state&PST_ASSIGNOK; /* XXX */
- wl = (WORD_LIST *)NULL; /* ( */
+ /* State flags we don't want to persist into compound assignments. */
+ parser_state &= ~(PST_NOEXPAND|PST_CONDCMD|PST_CONDEXPR|PST_REGEXP|PST_EXTPAT);
+ /* State flags we want to set for this run through the tokenizer. */
parser_state |= PST_COMPASSIGN;
+ esacs_needed_count = expecting_in_token = 0;
+
while ((tok = read_token (READ)) != ')')
{
if (tok == '\n') /* Allow newlines in compound assignments */
{
if (SHOULD_PROMPT ())
- prompt_again ();
+ prompt_again (0);
continue;
}
if (tok != WORD && tok != ASSIGNMENT_WORD)
@@ -8900,11 +8812,7 @@ parse_compound_assignment (retlenp)
wl = make_word_list (yylval.word, wl);
}
- FREE (token);
- token = saved_token;
- token_buffer_size = orig_token_size;
-
- parser_state &= ~PST_COMPASSIGN;
+ restore_parser_state (&ps);
if (wl == &parse_string_error)
{
@@ -8916,8 +8824,6 @@ parse_compound_assignment (retlenp)
jump_to_top_level (DISCARD);
}
- last_read_token = orig_last_token; /* XXX - was WORD? */
-
if (wl)
{
rl = REVERSE_LIST (wl, WORD_LIST *);
@@ -8956,6 +8862,7 @@ save_parser_state (ps)
ps->input_line_terminator = shell_input_line_terminator;
ps->eof_encountered = eof_encountered;
+ ps->eol_lookahead = eol_ungetc_lookahead;
ps->prompt_string_pointer = prompt_string_pointer;
@@ -8981,11 +8888,19 @@ save_parser_state (ps)
ps->need_here_doc = need_here_doc;
ps->here_doc_first_line = here_doc_first_line;
+ ps->esacs_needed = esacs_needed_count;
+ ps->expecting_in = expecting_in_token;
+
if (need_here_doc == 0)
ps->redir_stack[0] = 0;
else
memcpy (ps->redir_stack, redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX);
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+ ps->pushed_strings = pushed_string_list;
+#endif
+
+ ps->eof_token = shell_eof_token;
ps->token = token;
ps->token_buffer_size = token_buffer_size;
/* Force reallocation on next call to read_token_word */
@@ -9013,6 +8928,7 @@ restore_parser_state (ps)
shell_input_line_terminator = ps->input_line_terminator;
eof_encountered = ps->eof_encountered;
+ eol_ungetc_lookahead = ps->eol_lookahead;
prompt_string_pointer = ps->prompt_string_pointer;
@@ -9038,6 +8954,9 @@ restore_parser_state (ps)
need_here_doc = ps->need_here_doc;
here_doc_first_line = ps->here_doc_first_line;
+ esacs_needed_count = ps->esacs_needed;
+ expecting_in_token = ps->expecting_in;
+
#if 0
for (i = 0; i < HEREDOC_MAX; i++)
redir_stack[i] = ps->redir_stack[i];
@@ -9048,9 +8967,14 @@ restore_parser_state (ps)
memcpy (redir_stack, ps->redir_stack, sizeof (redir_stack[0]) * HEREDOC_MAX);
#endif
+#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
+ pushed_string_list = (STRING_SAVER *)ps->pushed_strings;
+#endif
+
FREE (token);
token = ps->token;
token_buffer_size = ps->token_buffer_size;
+ shell_eof_token = ps->eof_token;
}
sh_input_line_state_t *
diff --git a/y.tab.h b/y.tab.h
index 41bdea08..3f301077 100644
--- a/y.tab.h
+++ b/y.tab.h
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.6.4. */
+/* A Bison parser, made by GNU Bison 3.8.2. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
@@ -100,11 +100,13 @@ extern int yydebug;
LESS_GREATER = 301, /* LESS_GREATER */
GREATER_BAR = 302, /* GREATER_BAR */
BAR_AND = 303, /* BAR_AND */
- yacc_EOF = 304 /* yacc_EOF */
+ DOLPAREN = 304, /* DOLPAREN */
+ yacc_EOF = 305 /* yacc_EOF */
};
typedef enum yytokentype yytoken_kind_t;
#endif
/* Token kinds. */
+#define YYEMPTY -2
#define YYEOF 0
#define YYerror 256
#define YYUNDEF 257
@@ -154,13 +156,14 @@ extern int yydebug;
#define LESS_GREATER 301
#define GREATER_BAR 302
#define BAR_AND 303
-#define yacc_EOF 304
+#define DOLPAREN 304
+#define yacc_EOF 305
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 328 "/Users/chet/src/bash/src/parse.y"
+#line 338 "/usr/local/src/chet/src/bash/src/parse.y"
WORD_DESC *word; /* the word that we read. */
int number; /* the number that we read. */
@@ -170,7 +173,7 @@ union YYSTYPE
ELEMENT element;
PATTERN_LIST *pattern;
-#line 174 "y.tab.h"
+#line 177 "y.tab.h"
};
typedef union YYSTYPE YYSTYPE;
@@ -181,6 +184,8 @@ typedef union YYSTYPE YYSTYPE;
extern YYSTYPE yylval;
+
int yyparse (void);
+
#endif /* !YY_YY_Y_TAB_H_INCLUDED */